feat: Enhance session management with prompt tracking

- Added prompt_number to observations and session summaries for better tracking.
- Implemented prompt counter in SDK sessions to manage user prompts effectively.
- Updated database schema to include prompt tracking columns and removed unique constraints on session summaries.
- Modified hooks to utilize prompt_number in observations and summaries.
- Changed worker service to handle summarize requests instead of finalize, keeping the SDK agent active.
- Improved logging for better debugging and tracking of prompt numbers across sessions.
This commit is contained in:
Alex Newman
2025-10-17 16:23:11 -04:00
parent 372854948c
commit d4a71c994d
13 changed files with 480 additions and 265 deletions
+10 -4
View File
@@ -9,7 +9,7 @@ export interface StopInput {
/**
* Summary Hook - Stop
* Sends FINALIZE message to worker via HTTP POST
* Sends SUMMARIZE message to worker via HTTP POST (not finalize - keeps SDK agent running)
*/
export async function summaryHook(input?: StopInput): Promise<void> {
if (!input) {
@@ -19,28 +19,34 @@ export async function summaryHook(input?: StopInput): Promise<void> {
const { session_id } = input;
const db = new HooksDatabase();
const session = db.findActiveSDKSession(session_id);
db.close();
if (!session) {
db.close();
console.log(createHookResponse('Stop', true));
return;
}
if (!session.worker_port) {
db.close();
console.error('[summary-hook] No worker port for session', session.id);
console.log(createHookResponse('Stop', true));
return;
}
// Get current prompt number
const promptNumber = db.getPromptCounter(session.id);
db.close();
try {
const response = await fetch(`http://127.0.0.1:${session.worker_port}/sessions/${session.id}/finalize`, {
const response = await fetch(`http://127.0.0.1:${session.worker_port}/sessions/${session.id}/summarize`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt_number: promptNumber }),
signal: AbortSignal.timeout(2000)
});
if (!response.ok) {
console.error('[summary-hook] Failed to finalize:', await response.text());
console.error('[summary-hook] Failed to generate summary:', await response.text());
}
} catch (error: any) {
console.error('[summary-hook] Error:', error.message);