feat(api): add API for one-shot prompt generatio, key authentication system and git commit message generation

Implement comprehensive API key management functionality including
generation, validation, and CRUD operations.

Changes:
- Add API key database schema and operations (create, validate, delete,
  toggle)
- Generating a commit message will now work properly with claude sdk and cursor cli and return a suggested commit message
- Implement crypto-based key generation with 'ck_' prefix
- Add session ID tracking in claude-sdk.js and cursor-cli.js
- Update database layer with API key validation and last_used tracking
- Support multi-user API key management with user association

This enables secure programmatic access to the agent service
This commit is contained in:
simos
2025-10-30 20:59:25 +00:00
parent 9079326ac5
commit eda89ef147
14 changed files with 2768 additions and 56 deletions

View File

@@ -35,6 +35,22 @@ function GitPanel({ selectedProject, isMobile }) {
const textareaRef = useRef(null);
const dropdownRef = useRef(null);
// Get current provider from localStorage (same as ChatInterface does)
const [provider, setProvider] = useState(() => {
return localStorage.getItem('selected-provider') || 'claude';
});
// Listen for provider changes in localStorage
useEffect(() => {
const handleStorageChange = () => {
const newProvider = localStorage.getItem('selected-provider') || 'claude';
setProvider(newProvider);
};
window.addEventListener('storage', handleStorageChange);
return () => window.removeEventListener('storage', handleStorageChange);
}, []);
useEffect(() => {
if (selectedProject) {
fetchGitStatus();
@@ -435,10 +451,11 @@ function GitPanel({ selectedProject, isMobile }) {
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
project: selectedProject.name,
files: Array.from(selectedFiles)
files: Array.from(selectedFiles),
provider: provider // Pass the current provider (claude or cursor)
})
});
const data = await response.json();
if (data.message) {
setCommitMessage(data.message);