feat: Implement Phase 1 of SDK agent architecture with hook integration

- Added CLI commands for context, new session, save observation, and summary.
- Created HooksDatabase for managing SDK sessions and observations.
- Implemented migration 004 to add new tables: sdk_sessions, observation_queue, observations, and session_summaries.
- Developed hook functions for context display, session initialization, observation queuing, and session finalization.
- Added comprehensive tests for database schema and hook functionality.
- Documented Phase 1 implementation in PHASE1-COMPLETE.md.
This commit is contained in:
Alex Newman
2025-10-15 19:06:51 -04:00
parent 917ab9740c
commit e81ea69143
12 changed files with 1294 additions and 129 deletions
+50
View File
@@ -0,0 +1,50 @@
import { HooksDatabase } from '../services/sqlite/HooksDatabase.js';
export interface StopInput {
session_id: string;
cwd: string;
[key: string]: any;
}
/**
* Summary Hook - Stop
* Signals SDK to finalize and generate summary
*/
export function summaryHook(input: StopInput): void {
try {
const { session_id } = input;
// Find active SDK session
const db = new HooksDatabase();
const session = db.findActiveSDKSession(session_id);
if (!session) {
// No active session - nothing to finalize
db.close();
console.log('{"continue": true, "suppressOutput": true}');
process.exit(0);
}
// Insert special FINALIZE message into observation queue
const sdkSessionId = session.sdk_session_id || `pending-${session.id}`;
db.queueObservation(
sdkSessionId,
'FINALIZE',
'{}',
'{}'
);
db.close();
// Output hook response
console.log('{"continue": true, "suppressOutput": true}');
process.exit(0);
} catch (error: any) {
// On error, don't block Claude Code
console.error(`[claude-mem summary error: ${error.message}]`);
console.log('{"continue": true, "suppressOutput": true}');
process.exit(0);
}
}