- Added BeforeSummarizeCallback type to allow injecting context before session summarization - Added onBeforeSummarize option to PreemptiveCompactionOptions - Created compaction-context-injector module that injects summarization instructions with sections: - User Requests (As-Is) - Final Goal - Work Completed - Remaining Tasks - MUST NOT Do (Critical Constraints) - Wired up callback invocation in preemptive-compaction before calling summarize API - Exported new hook from src/hooks/index.ts 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import type { SummarizeContext } from "../preemptive-compaction"
|
|
import { injectHookMessage } from "../../features/hook-message-injector"
|
|
import { log } from "../../shared/logger"
|
|
|
|
const SUMMARIZE_CONTEXT_PROMPT = `[COMPACTION CONTEXT INJECTION]
|
|
|
|
When summarizing this session, you MUST include the following sections in your summary:
|
|
|
|
## 1. User Requests (As-Is)
|
|
- List all original user requests exactly as they were stated
|
|
- Preserve the user's exact wording and intent
|
|
|
|
## 2. Final Goal
|
|
- What the user ultimately wanted to achieve
|
|
- The end result or deliverable expected
|
|
|
|
## 3. Work Completed
|
|
- What has been done so far
|
|
- Files created/modified
|
|
- Features implemented
|
|
- Problems solved
|
|
|
|
## 4. Remaining Tasks
|
|
- What still needs to be done
|
|
- Pending items from the original request
|
|
- Follow-up tasks identified during the work
|
|
|
|
## 5. MUST NOT Do (Critical Constraints)
|
|
- Things that were explicitly forbidden
|
|
- Approaches that failed and should not be retried
|
|
- User's explicit restrictions or preferences
|
|
- Anti-patterns identified during the session
|
|
|
|
This context is critical for maintaining continuity after compaction.
|
|
`
|
|
|
|
export function createCompactionContextInjector() {
|
|
return async (ctx: SummarizeContext): Promise<void> => {
|
|
log("[compaction-context-injector] injecting context", { sessionID: ctx.sessionID })
|
|
|
|
const success = injectHookMessage(ctx.sessionID, SUMMARIZE_CONTEXT_PROMPT, {
|
|
agent: "general",
|
|
model: { providerID: ctx.providerID, modelID: ctx.modelID },
|
|
path: { cwd: ctx.directory },
|
|
})
|
|
|
|
if (success) {
|
|
log("[compaction-context-injector] context injected", { sessionID: ctx.sessionID })
|
|
} else {
|
|
log("[compaction-context-injector] injection failed", { sessionID: ctx.sessionID })
|
|
}
|
|
}
|
|
}
|