| |
| |
| |
|
|
| 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()) |
|
|
| |
| 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 }] |
| }, |
| }) |
| } |