mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-21 15:55:50 +00:00
45 lines
1.9 KiB
TypeScript
45 lines
1.9 KiB
TypeScript
// Manual /dream skill — runs the memory consolidation prompt interactively.
|
|
// Extracted from the KAIROS feature gate so it's available unconditionally
|
|
// whenever auto-memory is enabled.
|
|
|
|
import { getAutoMemPath, isAutoMemoryEnabled } from '../../memdir/paths.js'
|
|
import { buildConsolidationPrompt } from '../../services/autoDream/consolidationPrompt.js'
|
|
import { recordConsolidation } from '../../services/autoDream/consolidationLock.js'
|
|
import { getOriginalCwd } from '../../bootstrap/state.js'
|
|
import { getProjectDir } from '../../utils/sessionStorage.js'
|
|
import { registerBundledSkill } from '../bundledSkills.js'
|
|
|
|
const DREAM_PROMPT_PREFIX = `# Dream: Memory Consolidation (manual run)
|
|
|
|
You are performing a manual dream — a reflective pass over your memory files. Unlike the automatic background dream, this run has full tool permissions and the user is watching. Synthesize what you've learned recently into durable, well-organized memories so that future sessions can orient quickly.
|
|
|
|
`
|
|
|
|
export function registerDreamSkill(): void {
|
|
registerBundledSkill({
|
|
name: 'dream',
|
|
description:
|
|
'Manually trigger memory consolidation — review, organize, and prune your auto-memory files.',
|
|
whenToUse:
|
|
'Use when the user says /dream or wants to manually consolidate memories, organize memory files, or clean up stale entries.',
|
|
userInvocable: true,
|
|
isEnabled: () => isAutoMemoryEnabled(),
|
|
async getPromptForCommand(args) {
|
|
const memoryRoot = getAutoMemPath()
|
|
const transcriptDir = getProjectDir(getOriginalCwd())
|
|
|
|
// Stamp the consolidation lock optimistically (same as the KAIROS path).
|
|
await recordConsolidation()
|
|
|
|
const basePrompt = buildConsolidationPrompt(memoryRoot, transcriptDir, '')
|
|
let prompt = DREAM_PROMPT_PREFIX + basePrompt
|
|
|
|
if (args) {
|
|
prompt += `\n\n## Additional context from user\n\n${args}`
|
|
}
|
|
|
|
return [{ type: 'text', text: prompt }]
|
|
},
|
|
})
|
|
}
|