@chendpoc/pi-memory 0.1.13 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +284 -216
- package/UBIQUITOUS_LANGUAGE.md +81 -0
- package/dist/adapters/embed/factory.d.ts +7 -0
- package/dist/adapters/embed/factory.d.ts.map +1 -0
- package/dist/adapters/embed/factory.js +44 -0
- package/dist/adapters/embed/factory.js.map +1 -0
- package/dist/adapters/embed/hash.d.ts +3 -0
- package/dist/adapters/embed/hash.d.ts.map +1 -0
- package/dist/adapters/embed/hash.js +26 -0
- package/dist/adapters/embed/hash.js.map +1 -0
- package/dist/adapters/embed/normalize.d.ts +3 -0
- package/dist/adapters/embed/normalize.d.ts.map +1 -0
- package/dist/adapters/embed/normalize.js +15 -0
- package/dist/adapters/embed/normalize.js.map +1 -0
- package/dist/adapters/embed/ollama.d.ts +8 -0
- package/dist/adapters/embed/ollama.d.ts.map +1 -0
- package/dist/adapters/embed/ollama.js +31 -0
- package/dist/adapters/embed/ollama.js.map +1 -0
- package/dist/adapters/embed/openai.d.ts +8 -0
- package/dist/adapters/embed/openai.d.ts.map +1 -0
- package/dist/adapters/embed/openai.js +30 -0
- package/dist/adapters/embed/openai.js.map +1 -0
- package/dist/adapters/embed/types.d.ts +9 -0
- package/dist/adapters/embed/types.d.ts.map +1 -0
- package/dist/adapters/embed/types.js.map +1 -0
- package/dist/adapters/http.d.ts +13 -0
- package/dist/adapters/http.d.ts.map +1 -0
- package/dist/adapters/http.js +31 -0
- package/dist/adapters/http.js.map +1 -0
- package/dist/adapters/index.d.ts +4 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +4 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/llm/extractText.d.ts +5 -0
- package/dist/adapters/llm/extractText.d.ts.map +1 -0
- package/dist/adapters/llm/extractText.js +7 -0
- package/dist/adapters/llm/extractText.js.map +1 -0
- package/dist/adapters/llm/factory.d.ts +11 -0
- package/dist/adapters/llm/factory.d.ts.map +1 -0
- package/dist/adapters/llm/factory.js +48 -0
- package/dist/adapters/llm/factory.js.map +1 -0
- package/dist/adapters/llm/index.d.ts +8 -0
- package/dist/adapters/llm/index.d.ts.map +1 -0
- package/dist/adapters/llm/index.js +7 -0
- package/dist/adapters/llm/index.js.map +1 -0
- package/dist/adapters/llm/modelSpec.d.ts +10 -0
- package/dist/adapters/llm/modelSpec.d.ts.map +1 -0
- package/dist/adapters/llm/modelSpec.js +21 -0
- package/dist/adapters/llm/modelSpec.js.map +1 -0
- package/dist/adapters/llm/ollama.d.ts +4 -0
- package/dist/adapters/llm/ollama.d.ts.map +1 -0
- package/dist/adapters/llm/ollama.js +32 -0
- package/dist/adapters/llm/ollama.js.map +1 -0
- package/dist/adapters/llm/openai-compat.d.ts +4 -0
- package/dist/adapters/llm/openai-compat.d.ts.map +1 -0
- package/dist/adapters/llm/openai-compat.js +36 -0
- package/dist/adapters/llm/openai-compat.js.map +1 -0
- package/dist/adapters/llm/pi-ai.d.ts +5 -0
- package/dist/adapters/llm/pi-ai.d.ts.map +1 -0
- package/dist/adapters/llm/pi-ai.js +60 -0
- package/dist/adapters/llm/pi-ai.js.map +1 -0
- package/dist/adapters/llm/standalone.d.ts +6 -0
- package/dist/adapters/llm/standalone.d.ts.map +1 -0
- package/dist/adapters/llm/standalone.js +44 -0
- package/dist/adapters/llm/standalone.js.map +1 -0
- package/dist/adapters/llm/types.d.ts +15 -0
- package/dist/adapters/llm/types.d.ts.map +1 -0
- package/dist/adapters/llm/types.js.map +1 -0
- package/dist/cli/init.d.ts +3 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +13 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/jobs.d.ts +32 -0
- package/dist/cli/jobs.d.ts.map +1 -0
- package/dist/cli/jobs.js +100 -0
- package/dist/cli/jobs.js.map +1 -0
- package/dist/cli/log.d.ts +14 -0
- package/dist/cli/log.d.ts.map +1 -0
- package/dist/cli/log.js +32 -0
- package/dist/cli/log.js.map +1 -0
- package/dist/cli/parseArgs.d.ts +35 -0
- package/dist/cli/parseArgs.d.ts.map +1 -0
- package/dist/cli/parseArgs.js +127 -0
- package/dist/cli/parseArgs.js.map +1 -0
- package/dist/cli/status.d.ts +44 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +238 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/theme.d.ts +14 -0
- package/dist/cli/theme.d.ts.map +1 -0
- package/dist/cli/theme.js +20 -0
- package/dist/cli/theme.js.map +1 -0
- package/dist/cli.js +70 -356
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +14 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/parseMemoryStatusArgs.d.ts +3 -0
- package/dist/commands/parseMemoryStatusArgs.d.ts.map +1 -0
- package/dist/commands/parseMemoryStatusArgs.js +15 -0
- package/dist/commands/parseMemoryStatusArgs.js.map +1 -0
- package/dist/commands/parseRememberArgs.d.ts +10 -0
- package/dist/commands/parseRememberArgs.d.ts.map +1 -0
- package/dist/commands/parseRememberArgs.js +46 -0
- package/dist/commands/parseRememberArgs.js.map +1 -0
- package/dist/commands/remember.d.ts +8 -0
- package/dist/commands/remember.d.ts.map +1 -0
- package/dist/commands/remember.js +30 -0
- package/dist/commands/remember.js.map +1 -0
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +81 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/types.d.ts +10 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +2 -0
- package/dist/{consolidation → commands}/types.js.map +1 -1
- package/dist/compact/index.d.ts +5 -0
- package/dist/compact/index.d.ts.map +1 -0
- package/dist/compact/index.js +5 -0
- package/dist/compact/index.js.map +1 -0
- package/dist/compact/parseMemoryExport.d.ts +6 -0
- package/dist/compact/parseMemoryExport.d.ts.map +1 -0
- package/dist/compact/parseMemoryExport.js +62 -0
- package/dist/compact/parseMemoryExport.js.map +1 -0
- package/dist/compact/register.d.ts +10 -0
- package/dist/compact/register.d.ts.map +1 -0
- package/dist/compact/register.js +47 -0
- package/dist/compact/register.js.map +1 -0
- package/dist/compact/runSummary.d.ts +6 -0
- package/dist/compact/runSummary.d.ts.map +1 -0
- package/dist/compact/runSummary.js +29 -0
- package/dist/compact/runSummary.js.map +1 -0
- package/dist/compact/subagentDelta.d.ts +6 -0
- package/dist/compact/subagentDelta.d.ts.map +1 -0
- package/dist/compact/subagentDelta.js +13 -0
- package/dist/compact/subagentDelta.js.map +1 -0
- package/dist/compact/summaryPrompt.d.ts +3 -0
- package/dist/compact/summaryPrompt.d.ts.map +1 -0
- package/dist/compact/summaryPrompt.js +41 -0
- package/dist/compact/summaryPrompt.js.map +1 -0
- package/dist/config/agentDir.d.ts +11 -0
- package/dist/config/agentDir.d.ts.map +1 -0
- package/dist/config/agentDir.js +21 -0
- package/dist/config/agentDir.js.map +1 -0
- package/dist/config/chunking.d.ts +7 -0
- package/dist/config/chunking.d.ts.map +1 -0
- package/dist/config/chunking.js +20 -0
- package/dist/config/chunking.js.map +1 -0
- package/dist/config/env.d.ts +28 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +43 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loadEnv.d.ts +10 -0
- package/dist/config/loadEnv.d.ts.map +1 -0
- package/dist/config/loadEnv.js +25 -0
- package/dist/config/loadEnv.js.map +1 -0
- package/dist/config/preflight.d.ts +8 -0
- package/dist/config/preflight.d.ts.map +1 -0
- package/dist/config/preflight.js +22 -0
- package/dist/config/preflight.js.map +1 -0
- package/dist/config/preflightBudget.d.ts +9 -0
- package/dist/config/preflightBudget.d.ts.map +1 -0
- package/dist/config/preflightBudget.js +16 -0
- package/dist/config/preflightBudget.js.map +1 -0
- package/dist/config/retrieval.d.ts +10 -0
- package/dist/config/retrieval.d.ts.map +1 -0
- package/dist/config/retrieval.js +31 -0
- package/dist/config/retrieval.js.map +1 -0
- package/dist/consolidate/entryKey.d.ts +6 -0
- package/dist/consolidate/entryKey.d.ts.map +1 -0
- package/dist/consolidate/entryKey.js +5 -0
- package/dist/consolidate/entryKey.js.map +1 -0
- package/dist/consolidate/index.d.ts +5 -0
- package/dist/consolidate/index.d.ts.map +1 -0
- package/dist/consolidate/index.js +5 -0
- package/dist/consolidate/index.js.map +1 -0
- package/dist/consolidate/mergeEntries.d.ts +4 -0
- package/dist/consolidate/mergeEntries.d.ts.map +1 -0
- package/dist/consolidate/mergeEntries.js +17 -0
- package/dist/consolidate/mergeEntries.js.map +1 -0
- package/dist/consolidate/mergePrompt.d.ts +4 -0
- package/dist/consolidate/mergePrompt.d.ts.map +1 -0
- package/dist/consolidate/mergePrompt.js +40 -0
- package/dist/consolidate/mergePrompt.js.map +1 -0
- package/dist/consolidate/mergeWithLlm.d.ts +4 -0
- package/dist/consolidate/mergeWithLlm.d.ts.map +1 -0
- package/dist/consolidate/mergeWithLlm.js +27 -0
- package/dist/consolidate/mergeWithLlm.js.map +1 -0
- package/dist/consolidate/runJob.d.ts +29 -0
- package/dist/consolidate/runJob.d.ts.map +1 -0
- package/dist/consolidate/runJob.js +48 -0
- package/dist/consolidate/runJob.js.map +1 -0
- package/dist/consolidate/scheduler.d.ts +18 -0
- package/dist/consolidate/scheduler.d.ts.map +1 -0
- package/dist/consolidate/scheduler.js +32 -0
- package/dist/consolidate/scheduler.js.map +1 -0
- package/dist/constants/chunking.d.ts +7 -0
- package/dist/constants/chunking.d.ts.map +1 -0
- package/dist/constants/chunking.js +7 -0
- package/dist/constants/chunking.js.map +1 -0
- package/dist/constants/env.d.ts +47 -0
- package/dist/constants/env.d.ts.map +1 -0
- package/dist/constants/env.js +52 -0
- package/dist/constants/env.js.map +1 -0
- package/dist/constants/index.d.ts +8 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +8 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/memory.d.ts +17 -0
- package/dist/constants/memory.d.ts.map +1 -0
- package/dist/constants/memory.js +16 -0
- package/dist/constants/memory.js.map +1 -0
- package/dist/constants/paths.d.ts +23 -0
- package/dist/constants/paths.d.ts.map +1 -0
- package/dist/constants/paths.js +23 -0
- package/dist/constants/paths.js.map +1 -0
- package/dist/constants/preflight.d.ts +17 -0
- package/dist/constants/preflight.d.ts.map +1 -0
- package/dist/constants/preflight.js +17 -0
- package/dist/constants/preflight.js.map +1 -0
- package/dist/constants/retrieval.d.ts +10 -0
- package/dist/constants/retrieval.d.ts.map +1 -0
- package/dist/constants/retrieval.js +10 -0
- package/dist/constants/retrieval.js.map +1 -0
- package/dist/constants/security.d.ts +5 -0
- package/dist/constants/security.d.ts.map +1 -0
- package/dist/constants/security.js +5 -0
- package/dist/constants/security.js.map +1 -0
- package/dist/constants/timing.d.ts +38 -0
- package/dist/constants/timing.d.ts.map +1 -0
- package/dist/constants/timing.js +38 -0
- package/dist/constants/timing.js.map +1 -0
- package/dist/index.d.ts +11 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -28
- package/dist/index.js.map +1 -1
- package/dist/init/workspace.d.ts +15 -0
- package/dist/init/workspace.d.ts.map +1 -0
- package/dist/init/workspace.js +32 -0
- package/dist/init/workspace.js.map +1 -0
- package/dist/ipc/jsonlFramer.d.ts +9 -0
- package/dist/ipc/jsonlFramer.d.ts.map +1 -0
- package/dist/ipc/jsonlFramer.js +26 -0
- package/dist/ipc/jsonlFramer.js.map +1 -0
- package/dist/pi-extension.d.ts +0 -2
- package/dist/pi-extension.d.ts.map +1 -1
- package/dist/pi-extension.js +175 -515
- package/dist/pi-extension.js.map +1 -1
- package/dist/preflight/episodic.d.ts +26 -0
- package/dist/preflight/episodic.d.ts.map +1 -0
- package/dist/preflight/episodic.js +125 -0
- package/dist/preflight/episodic.js.map +1 -0
- package/dist/preflight/intentCache.d.ts +13 -0
- package/dist/preflight/intentCache.d.ts.map +1 -0
- package/dist/preflight/intentCache.js +37 -0
- package/dist/preflight/intentCache.js.map +1 -0
- package/dist/preflight/queryCache.d.ts +15 -0
- package/dist/preflight/queryCache.d.ts.map +1 -0
- package/dist/preflight/queryCache.js +46 -0
- package/dist/preflight/queryCache.js.map +1 -0
- package/dist/preflight/queryIntent.d.ts +29 -0
- package/dist/preflight/queryIntent.d.ts.map +1 -0
- package/dist/preflight/queryIntent.js +91 -0
- package/dist/preflight/queryIntent.js.map +1 -0
- package/dist/preflight/render.d.ts +8 -33
- package/dist/preflight/render.d.ts.map +1 -1
- package/dist/preflight/render.js +29 -126
- package/dist/preflight/render.js.map +1 -1
- package/dist/preflight/session.d.ts +3 -0
- package/dist/preflight/session.d.ts.map +1 -0
- package/dist/preflight/session.js +6 -0
- package/dist/preflight/session.js.map +1 -0
- package/dist/preflight/strip.d.ts +0 -8
- package/dist/preflight/strip.d.ts.map +1 -1
- package/dist/preflight/strip.js +2 -11
- package/dist/preflight/strip.js.map +1 -1
- package/dist/shutdown/enqueue.d.ts +12 -0
- package/dist/shutdown/enqueue.d.ts.map +1 -0
- package/dist/shutdown/enqueue.js +14 -0
- package/dist/shutdown/enqueue.js.map +1 -0
- package/dist/shutdown/extractPrompt.d.ts +4 -0
- package/dist/shutdown/extractPrompt.d.ts.map +1 -0
- package/dist/shutdown/extractPrompt.js +29 -0
- package/dist/shutdown/extractPrompt.js.map +1 -0
- package/dist/shutdown/processed.d.ts +9 -0
- package/dist/shutdown/processed.d.ts.map +1 -0
- package/dist/shutdown/processed.js +28 -0
- package/dist/shutdown/processed.js.map +1 -0
- package/dist/shutdown/readQueue.d.ts +4 -0
- package/dist/shutdown/readQueue.d.ts.map +1 -0
- package/dist/shutdown/readQueue.js +26 -0
- package/dist/shutdown/readQueue.js.map +1 -0
- package/dist/shutdown/runDrainJob.d.ts +26 -0
- package/dist/shutdown/runDrainJob.d.ts.map +1 -0
- package/dist/shutdown/runDrainJob.js +143 -0
- package/dist/shutdown/runDrainJob.js.map +1 -0
- package/dist/shutdown/sessionReader.d.ts +6 -0
- package/dist/shutdown/sessionReader.d.ts.map +1 -0
- package/dist/shutdown/sessionReader.js +44 -0
- package/dist/shutdown/sessionReader.js.map +1 -0
- package/dist/sidecar/client.d.ts +17 -16
- package/dist/sidecar/client.d.ts.map +1 -1
- package/dist/sidecar/client.js +64 -100
- package/dist/sidecar/client.js.map +1 -1
- package/dist/sidecar/paths.d.ts +8 -0
- package/dist/sidecar/paths.d.ts.map +1 -0
- package/dist/sidecar/paths.js +23 -0
- package/dist/sidecar/paths.js.map +1 -0
- package/dist/sidecar/protocol.d.ts +54 -0
- package/dist/sidecar/protocol.d.ts.map +1 -0
- package/dist/sidecar/protocol.js +4 -0
- package/dist/sidecar/protocol.js.map +1 -0
- package/dist/sidecar/reindexBridge.d.ts +13 -0
- package/dist/sidecar/reindexBridge.d.ts.map +1 -0
- package/dist/sidecar/reindexBridge.js +37 -0
- package/dist/sidecar/reindexBridge.js.map +1 -0
- package/dist/sidecar/server/process.d.ts +2 -0
- package/dist/sidecar/server/process.d.ts.map +1 -0
- package/dist/sidecar/server/process.js +22 -0
- package/dist/sidecar/server/process.js.map +1 -0
- package/dist/sidecar/server/query.d.ts +8 -0
- package/dist/sidecar/server/query.d.ts.map +1 -0
- package/dist/sidecar/server/query.js +7 -0
- package/dist/sidecar/server/query.js.map +1 -0
- package/dist/sidecar/server/reindex.d.ts +8 -0
- package/dist/sidecar/server/reindex.d.ts.map +1 -0
- package/dist/sidecar/server/reindex.js +12 -0
- package/dist/sidecar/server/reindex.js.map +1 -0
- package/dist/sidecar/server/server.d.ts +11 -0
- package/dist/sidecar/server/server.d.ts.map +1 -0
- package/dist/sidecar/server/server.js +76 -0
- package/dist/sidecar/server/server.js.map +1 -0
- package/dist/sidecar/server/stats.d.ts +8 -0
- package/dist/sidecar/server/stats.d.ts.map +1 -0
- package/dist/sidecar/server/stats.js +18 -0
- package/dist/sidecar/server/stats.js.map +1 -0
- package/dist/sidecar/server/vec/embedder.d.ts +2 -0
- package/dist/sidecar/server/vec/embedder.d.ts.map +1 -0
- package/dist/sidecar/server/vec/embedder.js +2 -0
- package/dist/sidecar/server/vec/embedder.js.map +1 -0
- package/dist/sidecar/server/vec/mmr.d.ts +13 -0
- package/dist/sidecar/server/vec/mmr.d.ts.map +1 -0
- package/dist/sidecar/server/vec/mmr.js +36 -0
- package/dist/sidecar/server/vec/mmr.js.map +1 -0
- package/dist/sidecar/server/vec/store.d.ts +30 -0
- package/dist/sidecar/server/vec/store.d.ts.map +1 -0
- package/dist/sidecar/server/vec/store.js +179 -0
- package/dist/sidecar/server/vec/store.js.map +1 -0
- package/dist/sidecar/sidecarManager.d.ts +10 -0
- package/dist/sidecar/sidecarManager.d.ts.map +1 -0
- package/dist/sidecar/sidecarManager.js +111 -0
- package/dist/sidecar/sidecarManager.js.map +1 -0
- package/dist/sidecar/utils.d.ts +3 -0
- package/dist/sidecar/utils.d.ts.map +1 -0
- package/dist/sidecar/utils.js +27 -0
- package/dist/sidecar/utils.js.map +1 -0
- package/dist/sidecar/warmup.d.ts +6 -0
- package/dist/sidecar/warmup.d.ts.map +1 -0
- package/dist/sidecar/warmup.js +39 -0
- package/dist/sidecar/warmup.js.map +1 -0
- package/dist/store/backend.d.ts +12 -0
- package/dist/store/backend.d.ts.map +1 -0
- package/dist/store/backend.js +47 -0
- package/dist/store/backend.js.map +1 -0
- package/dist/store/index.d.ts +6 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +6 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/indexChunks.d.ts +9 -0
- package/dist/store/indexChunks.d.ts.map +1 -0
- package/dist/store/indexChunks.js +78 -0
- package/dist/store/indexChunks.js.map +1 -0
- package/dist/store/markdown/format.d.ts +5 -0
- package/dist/store/markdown/format.d.ts.map +1 -0
- package/dist/store/markdown/format.js +14 -0
- package/dist/store/markdown/format.js.map +1 -0
- package/dist/store/markdown/parse.d.ts +5 -0
- package/dist/store/markdown/parse.d.ts.map +1 -0
- package/dist/store/markdown/parse.js +57 -0
- package/dist/store/markdown/parse.js.map +1 -0
- package/dist/store/markdown/template.d.ts +3 -0
- package/dist/store/markdown/template.d.ts.map +1 -0
- package/dist/store/markdown/template.js +22 -0
- package/dist/store/markdown/template.js.map +1 -0
- package/dist/store/memoryStore.d.ts +69 -0
- package/dist/store/memoryStore.d.ts.map +1 -0
- package/dist/store/memoryStore.js +421 -0
- package/dist/store/memoryStore.js.map +1 -0
- package/dist/store/paths.d.ts +10 -0
- package/dist/store/paths.d.ts.map +1 -0
- package/dist/store/paths.js +19 -0
- package/dist/store/paths.js.map +1 -0
- package/dist/store/types.d.ts +38 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +3 -0
- package/dist/store/types.js.map +1 -0
- package/dist/ui/memoryStatusWidget.d.ts +20 -0
- package/dist/ui/memoryStatusWidget.d.ts.map +1 -0
- package/dist/ui/memoryStatusWidget.js +51 -0
- package/dist/ui/memoryStatusWidget.js.map +1 -0
- package/dist/utils/debugLog.d.ts +4 -0
- package/dist/utils/debugLog.d.ts.map +1 -0
- package/dist/utils/debugLog.js +14 -0
- package/dist/utils/debugLog.js.map +1 -0
- package/dist/utils/fs.d.ts +26 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +101 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/paths.d.ts +22 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +51 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/platform.d.ts +7 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +18 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/scheduler.d.ts +33 -0
- package/dist/utils/scheduler.d.ts.map +1 -0
- package/dist/utils/scheduler.js +63 -0
- package/dist/utils/scheduler.js.map +1 -0
- package/dist/utils/socket.d.ts +7 -0
- package/dist/utils/socket.d.ts.map +1 -0
- package/dist/utils/socket.js +35 -0
- package/dist/utils/socket.js.map +1 -0
- package/dist/utils/time.d.ts +22 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +42 -0
- package/dist/utils/time.js.map +1 -0
- package/doc/README-zh.md +365 -0
- package/doc/ROADMAP-zh.md +52 -0
- package/doc/ROADMAP.md +52 -0
- package/package.json +31 -10
- package/scripts/init-memory-workspace.mjs +62 -0
- package/scripts/path-utils.mjs +12 -0
- package/scripts/platform-fs.mjs +65 -0
- package/scripts/postinstall.mjs +17 -0
- package/src/adapters/embed/factory.ts +50 -0
- package/src/adapters/embed/hash.ts +29 -0
- package/src/adapters/embed/normalize.ts +13 -0
- package/src/adapters/embed/ollama.ts +49 -0
- package/src/adapters/embed/openai.ts +46 -0
- package/src/adapters/embed/types.ts +9 -0
- package/src/adapters/http.ts +42 -0
- package/src/adapters/index.ts +16 -0
- package/src/adapters/llm/extractText.ts +6 -0
- package/src/adapters/llm/factory.ts +60 -0
- package/src/adapters/llm/index.ts +7 -0
- package/src/adapters/llm/modelSpec.ts +39 -0
- package/src/adapters/llm/ollama.ts +42 -0
- package/src/adapters/llm/openai-compat.ts +46 -0
- package/src/adapters/llm/pi-ai.ts +75 -0
- package/src/adapters/llm/standalone.ts +60 -0
- package/src/adapters/llm/types.ts +16 -0
- package/src/cli/init.ts +18 -0
- package/src/cli/jobs.ts +144 -0
- package/src/cli/log.ts +46 -0
- package/src/cli/parseArgs.ts +175 -0
- package/src/cli/status.ts +323 -0
- package/src/cli/theme.ts +26 -0
- package/src/cli.ts +80 -374
- package/src/commands/index.ts +20 -0
- package/src/commands/parseMemoryStatusArgs.ts +11 -0
- package/src/commands/parseRememberArgs.ts +55 -0
- package/src/commands/remember.ts +43 -0
- package/src/commands/status.ts +112 -0
- package/src/commands/types.ts +12 -0
- package/src/compact/index.ts +4 -0
- package/src/compact/parseMemoryExport.ts +71 -0
- package/src/compact/register.ts +57 -0
- package/src/compact/runSummary.ts +42 -0
- package/src/compact/subagentDelta.ts +22 -0
- package/src/compact/summaryPrompt.ts +45 -0
- package/src/config/agentDir.ts +24 -0
- package/src/config/chunking.ts +36 -0
- package/src/config/env.ts +97 -0
- package/src/config/index.ts +7 -0
- package/src/config/loadEnv.ts +26 -0
- package/src/config/preflight.ts +34 -0
- package/src/config/preflightBudget.ts +33 -0
- package/src/config/retrieval.ts +50 -0
- package/src/consolidate/entryKey.ts +4 -0
- package/src/consolidate/index.ts +4 -0
- package/src/consolidate/mergeEntries.ts +22 -0
- package/src/consolidate/mergePrompt.ts +46 -0
- package/src/consolidate/mergeWithLlm.ts +39 -0
- package/src/consolidate/runJob.ts +81 -0
- package/src/consolidate/scheduler.ts +54 -0
- package/src/constants/chunking.ts +8 -0
- package/src/constants/env.ts +59 -0
- package/src/constants/index.ts +7 -0
- package/src/constants/memory.ts +22 -0
- package/src/constants/paths.ts +26 -0
- package/src/constants/preflight.ts +22 -0
- package/src/constants/retrieval.ts +10 -0
- package/src/constants/security.ts +5 -0
- package/src/constants/timing.ts +48 -0
- package/src/index.ts +11 -247
- package/src/init/workspace.ts +44 -0
- package/src/ipc/jsonlFramer.ts +29 -0
- package/src/pi-extension.ts +196 -605
- package/src/preflight/episodic.ts +183 -0
- package/src/preflight/intentCache.ts +44 -0
- package/src/preflight/queryCache.ts +59 -0
- package/src/preflight/queryIntent.ts +126 -0
- package/src/preflight/render.ts +34 -180
- package/src/preflight/session.ts +7 -0
- package/src/preflight/strip.ts +4 -11
- package/src/shutdown/enqueue.ts +29 -0
- package/src/shutdown/extractPrompt.ts +27 -0
- package/src/shutdown/processed.ts +45 -0
- package/src/shutdown/readQueue.ts +26 -0
- package/src/shutdown/runDrainJob.ts +202 -0
- package/src/shutdown/sessionReader.ts +61 -0
- package/src/sidecar/client.ts +98 -150
- package/src/sidecar/paths.ts +31 -0
- package/src/sidecar/protocol.ts +38 -0
- package/src/sidecar/reindexBridge.ts +52 -0
- package/src/sidecar/server/process.ts +27 -0
- package/src/sidecar/server/query.ts +16 -0
- package/src/sidecar/server/reindex.ts +21 -0
- package/src/sidecar/server/server.ts +105 -0
- package/src/sidecar/server/stats.ts +23 -0
- package/src/sidecar/server/vec/embedder.ts +1 -0
- package/src/sidecar/server/vec/mmr.ts +55 -0
- package/src/sidecar/server/vec/store.ts +232 -0
- package/src/sidecar/sidecarManager.ts +134 -0
- package/src/sidecar/utils.ts +28 -0
- package/src/sidecar/warmup.ts +50 -0
- package/src/store/backend.ts +66 -0
- package/src/store/index.ts +5 -0
- package/src/store/indexChunks.ts +89 -0
- package/src/store/markdown/format.ts +16 -0
- package/src/store/markdown/parse.ts +63 -0
- package/src/store/markdown/template.ts +24 -0
- package/src/store/memoryStore.ts +518 -0
- package/src/store/paths.ts +33 -0
- package/src/store/proper-lockfile.d.ts +3 -0
- package/src/store/types.ts +46 -0
- package/src/ui/memoryStatusWidget.ts +80 -0
- package/src/utils/debugLog.ts +22 -0
- package/src/utils/fs.ts +115 -0
- package/src/utils/index.ts +68 -0
- package/src/utils/paths.ts +67 -0
- package/src/utils/platform.ts +20 -0
- package/src/utils/scheduler.ts +98 -0
- package/src/utils/socket.ts +33 -0
- package/src/utils/time.ts +51 -0
- package/templates/MEMORY.md.example +22 -0
- package/dist/adapters/ollamaClient.d.ts +0 -11
- package/dist/adapters/ollamaClient.d.ts.map +0 -1
- package/dist/adapters/ollamaClient.js +0 -122
- package/dist/adapters/ollamaClient.js.map +0 -1
- package/dist/adapters/openaiCompatClient.d.ts +0 -11
- package/dist/adapters/openaiCompatClient.d.ts.map +0 -1
- package/dist/adapters/openaiCompatClient.js +0 -118
- package/dist/adapters/openaiCompatClient.js.map +0 -1
- package/dist/adapters/piComplete.d.ts +0 -17
- package/dist/adapters/piComplete.d.ts.map +0 -1
- package/dist/adapters/piComplete.js +0 -169
- package/dist/adapters/piComplete.js.map +0 -1
- package/dist/bundle/install.d.ts +0 -34
- package/dist/bundle/install.d.ts.map +0 -1
- package/dist/bundle/install.js +0 -183
- package/dist/bundle/install.js.map +0 -1
- package/dist/cache/memoryCaches.d.ts +0 -32
- package/dist/cache/memoryCaches.d.ts.map +0 -1
- package/dist/cache/memoryCaches.js +0 -59
- package/dist/cache/memoryCaches.js.map +0 -1
- package/dist/config.d.ts +0 -55
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -85
- package/dist/config.js.map +0 -1
- package/dist/consolidation/enqueue.d.ts +0 -33
- package/dist/consolidation/enqueue.d.ts.map +0 -1
- package/dist/consolidation/enqueue.js +0 -145
- package/dist/consolidation/enqueue.js.map +0 -1
- package/dist/consolidation/index.d.ts +0 -19
- package/dist/consolidation/index.d.ts.map +0 -1
- package/dist/consolidation/index.js +0 -15
- package/dist/consolidation/index.js.map +0 -1
- package/dist/consolidation/lock.d.ts +0 -5
- package/dist/consolidation/lock.d.ts.map +0 -1
- package/dist/consolidation/lock.js +0 -33
- package/dist/consolidation/lock.js.map +0 -1
- package/dist/consolidation/log.d.ts +0 -8
- package/dist/consolidation/log.d.ts.map +0 -1
- package/dist/consolidation/log.js +0 -32
- package/dist/consolidation/log.js.map +0 -1
- package/dist/consolidation/memoryIndex.d.ts +0 -18
- package/dist/consolidation/memoryIndex.d.ts.map +0 -1
- package/dist/consolidation/memoryIndex.js +0 -100
- package/dist/consolidation/memoryIndex.js.map +0 -1
- package/dist/consolidation/phase2/runPhase2.d.ts +0 -23
- package/dist/consolidation/phase2/runPhase2.d.ts.map +0 -1
- package/dist/consolidation/phase2/runPhase2.js +0 -196
- package/dist/consolidation/phase2/runPhase2.js.map +0 -1
- package/dist/consolidation/scheduler/launchd.d.ts +0 -5
- package/dist/consolidation/scheduler/launchd.d.ts.map +0 -1
- package/dist/consolidation/scheduler/launchd.js +0 -54
- package/dist/consolidation/scheduler/launchd.js.map +0 -1
- package/dist/consolidation/scheduler/runConsolidate.d.ts +0 -26
- package/dist/consolidation/scheduler/runConsolidate.d.ts.map +0 -1
- package/dist/consolidation/scheduler/runConsolidate.js +0 -83
- package/dist/consolidation/scheduler/runConsolidate.js.map +0 -1
- package/dist/consolidation/scheduler/setupSchedule.d.ts +0 -3
- package/dist/consolidation/scheduler/setupSchedule.d.ts.map +0 -1
- package/dist/consolidation/scheduler/setupSchedule.js +0 -79
- package/dist/consolidation/scheduler/setupSchedule.js.map +0 -1
- package/dist/consolidation/scheduler/systemd.d.ts +0 -9
- package/dist/consolidation/scheduler/systemd.d.ts.map +0 -1
- package/dist/consolidation/scheduler/systemd.js +0 -57
- package/dist/consolidation/scheduler/systemd.js.map +0 -1
- package/dist/consolidation/scheduler/types.d.ts +0 -24
- package/dist/consolidation/scheduler/types.d.ts.map +0 -1
- package/dist/consolidation/scheduler/types.js.map +0 -1
- package/dist/consolidation/scope.d.ts +0 -12
- package/dist/consolidation/scope.d.ts.map +0 -1
- package/dist/consolidation/scope.js +0 -51
- package/dist/consolidation/scope.js.map +0 -1
- package/dist/consolidation/stage1/deltaExtract.d.ts +0 -3
- package/dist/consolidation/stage1/deltaExtract.d.ts.map +0 -1
- package/dist/consolidation/stage1/deltaExtract.js +0 -19
- package/dist/consolidation/stage1/deltaExtract.js.map +0 -1
- package/dist/consolidation/stage1/drainQueue.d.ts +0 -21
- package/dist/consolidation/stage1/drainQueue.d.ts.map +0 -1
- package/dist/consolidation/stage1/drainQueue.js +0 -113
- package/dist/consolidation/stage1/drainQueue.js.map +0 -1
- package/dist/consolidation/stage1/extractSession.d.ts +0 -6
- package/dist/consolidation/stage1/extractSession.d.ts.map +0 -1
- package/dist/consolidation/stage1/extractSession.js +0 -47
- package/dist/consolidation/stage1/extractSession.js.map +0 -1
- package/dist/consolidation/stage1/store.d.ts +0 -45
- package/dist/consolidation/stage1/store.d.ts.map +0 -1
- package/dist/consolidation/stage1/store.js +0 -297
- package/dist/consolidation/stage1/store.js.map +0 -1
- package/dist/consolidation/types.d.ts +0 -49
- package/dist/consolidation/types.d.ts.map +0 -1
- package/dist/errclass.d.ts +0 -7
- package/dist/errclass.d.ts.map +0 -1
- package/dist/errclass.js +0 -32
- package/dist/errclass.js.map +0 -1
- package/dist/extension.d.ts +0 -24
- package/dist/extension.d.ts.map +0 -1
- package/dist/extension.js +0 -7
- package/dist/extension.js.map +0 -1
- package/dist/fallback/index.d.ts +0 -11
- package/dist/fallback/index.d.ts.map +0 -1
- package/dist/fallback/index.js +0 -16
- package/dist/fallback/index.js.map +0 -1
- package/dist/fallback/llmRerank.d.ts +0 -19
- package/dist/fallback/llmRerank.d.ts.map +0 -1
- package/dist/fallback/llmRerank.js +0 -68
- package/dist/fallback/llmRerank.js.map +0 -1
- package/dist/fallback/memoryMd.d.ts +0 -6
- package/dist/fallback/memoryMd.d.ts.map +0 -1
- package/dist/fallback/memoryMd.js +0 -35
- package/dist/fallback/memoryMd.js.map +0 -1
- package/dist/fallback/sessionIndex.d.ts +0 -35
- package/dist/fallback/sessionIndex.d.ts.map +0 -1
- package/dist/fallback/sessionIndex.js +0 -239
- package/dist/fallback/sessionIndex.js.map +0 -1
- package/dist/fallback/sessionSearch.d.ts +0 -18
- package/dist/fallback/sessionSearch.d.ts.map +0 -1
- package/dist/fallback/sessionSearch.js +0 -234
- package/dist/fallback/sessionSearch.js.map +0 -1
- package/dist/local/graphQuery.d.ts +0 -31
- package/dist/local/graphQuery.d.ts.map +0 -1
- package/dist/local/graphQuery.js +0 -195
- package/dist/local/graphQuery.js.map +0 -1
- package/dist/paths.d.ts +0 -7
- package/dist/paths.d.ts.map +0 -1
- package/dist/paths.js +0 -26
- package/dist/paths.js.map +0 -1
- package/dist/preflight/detectIntents.d.ts +0 -102
- package/dist/preflight/detectIntents.d.ts.map +0 -1
- package/dist/preflight/detectIntents.js +0 -631
- package/dist/preflight/detectIntents.js.map +0 -1
- package/dist/preflight/hook.d.ts +0 -76
- package/dist/preflight/hook.d.ts.map +0 -1
- package/dist/preflight/hook.js +0 -122
- package/dist/preflight/hook.js.map +0 -1
- package/dist/service.d.ts +0 -72
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -257
- package/dist/service.js.map +0 -1
- package/dist/session/activeBranch.d.ts +0 -17
- package/dist/session/activeBranch.d.ts.map +0 -1
- package/dist/session/activeBranch.js +0 -251
- package/dist/session/activeBranch.js.map +0 -1
- package/dist/settings.d.ts +0 -41
- package/dist/settings.d.ts.map +0 -1
- package/dist/settings.js +0 -85
- package/dist/settings.js.map +0 -1
- package/dist/sidecar/bundle.d.ts +0 -19
- package/dist/sidecar/bundle.d.ts.map +0 -1
- package/dist/sidecar/bundle.js +0 -39
- package/dist/sidecar/bundle.js.map +0 -1
- package/dist/sidecar/process.d.ts +0 -14
- package/dist/sidecar/process.d.ts.map +0 -1
- package/dist/sidecar/process.js +0 -138
- package/dist/sidecar/process.js.map +0 -1
- package/dist/tools/memoryAppend.d.ts +0 -47
- package/dist/tools/memoryAppend.d.ts.map +0 -1
- package/dist/tools/memoryAppend.js +0 -138
- package/dist/tools/memoryAppend.js.map +0 -1
- package/dist/tools/memoryRecall.d.ts +0 -113
- package/dist/tools/memoryRecall.d.ts.map +0 -1
- package/dist/tools/memoryRecall.js +0 -351
- package/dist/tools/memoryRecall.js.map +0 -1
- package/dist/trainer/bundleBuilder.d.ts +0 -30
- package/dist/trainer/bundleBuilder.d.ts.map +0 -1
- package/dist/trainer/bundleBuilder.js +0 -106
- package/dist/trainer/bundleBuilder.js.map +0 -1
- package/dist/trainer/bundleLoader.d.ts +0 -12
- package/dist/trainer/bundleLoader.d.ts.map +0 -1
- package/dist/trainer/bundleLoader.js +0 -59
- package/dist/trainer/bundleLoader.js.map +0 -1
- package/dist/trainer/deltaMerge.d.ts +0 -38
- package/dist/trainer/deltaMerge.d.ts.map +0 -1
- package/dist/trainer/deltaMerge.js +0 -183
- package/dist/trainer/deltaMerge.js.map +0 -1
- package/dist/trainer/entityResolver.d.ts +0 -27
- package/dist/trainer/entityResolver.d.ts.map +0 -1
- package/dist/trainer/entityResolver.js +0 -92
- package/dist/trainer/entityResolver.js.map +0 -1
- package/dist/trainer/extractFacts.d.ts +0 -67
- package/dist/trainer/extractFacts.d.ts.map +0 -1
- package/dist/trainer/extractFacts.js +0 -213
- package/dist/trainer/extractFacts.js.map +0 -1
- package/dist/trainer/index.d.ts +0 -54
- package/dist/trainer/index.d.ts.map +0 -1
- package/dist/trainer/index.js +0 -82
- package/dist/trainer/index.js.map +0 -1
- package/dist/trainer/llmExtractor.d.ts +0 -16
- package/dist/trainer/llmExtractor.d.ts.map +0 -1
- package/dist/trainer/llmExtractor.js +0 -146
- package/dist/trainer/llmExtractor.js.map +0 -1
- package/dist/trainer/marker.d.ts +0 -10
- package/dist/trainer/marker.d.ts.map +0 -1
- package/dist/trainer/marker.js +0 -28
- package/dist/trainer/marker.js.map +0 -1
- package/dist/trainer/scheduler.d.ts +0 -33
- package/dist/trainer/scheduler.d.ts.map +0 -1
- package/dist/trainer/scheduler.js +0 -73
- package/dist/trainer/scheduler.js.map +0 -1
- package/dist/trainer/sessionLoader.d.ts +0 -26
- package/dist/trainer/sessionLoader.d.ts.map +0 -1
- package/dist/trainer/sessionLoader.js +0 -145
- package/dist/trainer/sessionLoader.js.map +0 -1
- package/dist/types.d.ts +0 -135
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -8
- package/dist/types.js.map +0 -1
- package/src/adapters/ollamaClient.ts +0 -179
- package/src/adapters/openaiCompatClient.ts +0 -155
- package/src/adapters/piComplete.ts +0 -233
- package/src/bundle/install.ts +0 -206
- package/src/cache/memoryCaches.ts +0 -72
- package/src/config.ts +0 -180
- package/src/consolidation/enqueue.ts +0 -205
- package/src/consolidation/index.ts +0 -90
- package/src/consolidation/lock.ts +0 -41
- package/src/consolidation/log.ts +0 -43
- package/src/consolidation/memoryIndex.ts +0 -127
- package/src/consolidation/phase2/runPhase2.ts +0 -255
- package/src/consolidation/scheduler/launchd.ts +0 -62
- package/src/consolidation/scheduler/runConsolidate.ts +0 -115
- package/src/consolidation/scheduler/setupSchedule.ts +0 -106
- package/src/consolidation/scheduler/systemd.ts +0 -78
- package/src/consolidation/scheduler/types.ts +0 -27
- package/src/consolidation/scope.ts +0 -58
- package/src/consolidation/stage1/deltaExtract.ts +0 -29
- package/src/consolidation/stage1/drainQueue.ts +0 -143
- package/src/consolidation/stage1/extractSession.ts +0 -58
- package/src/consolidation/stage1/store.ts +0 -411
- package/src/consolidation/types.ts +0 -52
- package/src/errclass.ts +0 -37
- package/src/extension.ts +0 -23
- package/src/fallback/index.ts +0 -24
- package/src/fallback/llmRerank.ts +0 -97
- package/src/fallback/memoryMd.ts +0 -36
- package/src/fallback/sessionIndex.ts +0 -290
- package/src/fallback/sessionSearch.ts +0 -261
- package/src/local/graphQuery.ts +0 -252
- package/src/paths.ts +0 -28
- package/src/preflight/detectIntents.ts +0 -660
- package/src/preflight/hook.ts +0 -213
- package/src/service.ts +0 -306
- package/src/session/activeBranch.ts +0 -294
- package/src/settings.ts +0 -161
- package/src/sidecar/bundle.ts +0 -52
- package/src/sidecar/process.ts +0 -160
- package/src/tools/memoryAppend.ts +0 -166
- package/src/tools/memoryRecall.ts +0 -388
- package/src/trainer/bundleBuilder.ts +0 -192
- package/src/trainer/bundleLoader.ts +0 -105
- package/src/trainer/deltaMerge.ts +0 -221
- package/src/trainer/entityResolver.ts +0 -140
- package/src/trainer/extractFacts.ts +0 -312
- package/src/trainer/index.ts +0 -147
- package/src/trainer/llmExtractor.ts +0 -206
- package/src/trainer/marker.ts +0 -30
- package/src/trainer/scheduler.ts +0 -107
- package/src/trainer/sessionLoader.ts +0 -176
- package/src/types.ts +0 -168
- /package/dist/{consolidation/scheduler → adapters/embed}/types.js +0 -0
- /package/dist/{consolidation → adapters/llm}/types.js +0 -0
package/README.md
CHANGED
|
@@ -1,297 +1,365 @@
|
|
|
1
1
|
# @chendpoc/pi-memory
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="README.md">English</a> |
|
|
5
|
+
<a href="doc/README-zh.md">简体中文</a>
|
|
6
|
+
</p>
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
Cross-session episodic memory for the [Pi coding agent](https://pi.dev).
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
`pi-memory` gives Pi a local, auditable memory layer across sessions. It keeps durable facts in **`MEMORY.md` as the source of truth**, derives a vector index in `memory.vec.sqlite`, and injects relevant private context through Preflight before the main model answers.
|
|
8
11
|
|
|
9
|
-
##
|
|
12
|
+
## What It Does
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
- **`memory_recall` tool** --- LLM can explicitly query the knowledge graph by entity/relationship
|
|
13
|
-
- **`memory_append` tool** --- queues explicit user memories into stage1 so Phase2 can merge them safely
|
|
14
|
-
- **Offline consolidation** --- `session_shutdown` only enqueues metadata; `pi-memory consolidate` drains queue, trains graph, and updates memory files
|
|
15
|
-
- **MEMORY.md index** --- session-level cap injection plus scoped project memory files
|
|
16
|
-
- **Local trainer** --- extracts entities, relations, and events from Pi session history (regex or LLM-powered)
|
|
17
|
-
- **FTS5 search** --- SQLite full-text index for keyword fallback
|
|
18
|
-
- **LLM rerank** --- reranks keyword search results using `deepseek-v4-flash` for relevance scoring
|
|
19
|
-
- **Session dedup** --- content-hash deduplication in both trainer and indexer
|
|
20
|
-
- **Zero config** --- works out of the box with `pi install`
|
|
14
|
+
Pi already has compaction for long sessions. That solves "this conversation is too long"; it does not solve "a new session forgot my preferences, project conventions, prior decisions, and unresolved todos."
|
|
21
15
|
|
|
22
|
-
|
|
16
|
+
`pi-memory` fills that gap:
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
durable facts -> MEMORY.md -> derived vector index -> per-turn Preflight recall
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
It provides:
|
|
23
|
+
|
|
24
|
+
- **Explicit memory** through `/remember`.
|
|
25
|
+
- **Automatic durable fact export** from Pi compaction.
|
|
26
|
+
- **Shutdown queue recovery** for short or missed sessions.
|
|
27
|
+
- **Per-turn private recall** before the main model runs.
|
|
28
|
+
- **Human-editable storage** in Markdown, with vector search as a rebuildable index.
|
|
29
|
+
- **Offline maintenance** for consolidation, dedupe, overflow handling, and queue draining.
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
|
|
33
|
+
Requirements:
|
|
34
|
+
|
|
35
|
+
- Node.js `>=24 <25`
|
|
36
|
+
- pnpm
|
|
37
|
+
- Pi extension runtime packages supplied by Pi
|
|
38
|
+
|
|
39
|
+
Install as a package in the Pi extension environment:
|
|
23
40
|
|
|
24
41
|
```bash
|
|
25
|
-
|
|
42
|
+
pnpm add @chendpoc/pi-memory
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
For local development from this repository:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pnpm install
|
|
49
|
+
pnpm build
|
|
50
|
+
pnpm typecheck
|
|
51
|
+
pnpm test
|
|
26
52
|
```
|
|
27
53
|
|
|
28
|
-
|
|
54
|
+
Enable the extension through Pi's extension loading mechanism. This package declares:
|
|
29
55
|
|
|
30
56
|
```json
|
|
31
57
|
{
|
|
32
|
-
"
|
|
58
|
+
"pi": {
|
|
59
|
+
"extensions": ["./src/pi-extension.ts"]
|
|
60
|
+
}
|
|
33
61
|
}
|
|
34
62
|
```
|
|
35
63
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## Quick Start
|
|
64
|
+
Initialize memory explicitly when needed:
|
|
39
65
|
|
|
40
66
|
```bash
|
|
41
|
-
|
|
42
|
-
|
|
67
|
+
pi-memory init
|
|
68
|
+
```
|
|
43
69
|
|
|
44
|
-
|
|
45
|
-
npx pi-memory train --full
|
|
70
|
+
Initialization never overwrites a non-empty `MEMORY.md`.
|
|
46
71
|
|
|
47
|
-
|
|
48
|
-
npx pi-memory consolidate
|
|
49
|
-
npx pi-memory setup-schedule
|
|
72
|
+
## Why Choose `pi-memory`
|
|
50
73
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
74
|
+
### Agent Before / After
|
|
75
|
+
|
|
76
|
+
| Situation | Without `pi-memory` | With `pi-memory` |
|
|
77
|
+
| --- | --- | --- |
|
|
78
|
+
| New session asks "continue the plan from last time" | Agent has to ask for context or guess from the current repo. | Preflight recalls matching `MEMORY.md` facts and injects private reference context. |
|
|
79
|
+
| User says "remember that this repo uses Vitest" | The fact may stay only in the current session summary. | `/remember` writes a `[user]` entry that consolidate must preserve. |
|
|
80
|
+
| Long session compacts | Compaction helps continue that session but does not create durable cross-session facts. | One dual-purpose compact summary keeps session context and exports durable facts. |
|
|
81
|
+
| Subagent is spawned | It may over-recall or duplicate the parent session's memory writes. | Subagents get Memory Cap only and write Compact Delta facts. |
|
|
82
|
+
| Vector sidecar is down | A hard dependency would break the turn. | Preflight silently falls back to Markdown or injects nothing; the model still runs. |
|
|
83
|
+
| Memory grows | A file can become noisy and unbounded. | 150-line `MEMORY.md` cap, `auto-*.md` overflow, consolidate merge/dedupe. |
|
|
84
|
+
|
|
85
|
+
### Key Advantages
|
|
86
|
+
|
|
87
|
+
- **Markdown Ground Truth**: `MEMORY.md` and `auto-*.md` can be opened, reviewed, edited, grepped, copied, or versioned.
|
|
88
|
+
- **Derived index, not hidden state**: `memory.vec.sqlite` can be deleted and rebuilt from Markdown.
|
|
89
|
+
- **Preflight recall**: Memory is injected before the main model answers instead of hoping the model calls a search tool.
|
|
90
|
+
- **Hot-path budget**: Default Preflight budget is **800ms**, with QueryIntent, sidecar query, and fallback all bounded.
|
|
91
|
+
- **Protected user notes**: `/remember` writes `[user]` entries that consolidate must not remove or rewrite.
|
|
92
|
+
- **Sidecar isolation**: embedding, vector scan, MMR, stats, and reindex run outside the extension process, while writes stay owned by `MemoryStore`.
|
|
93
|
+
- **Subagent policy**: root sessions get Memory Cap + Episodic Preflight; subagents get Memory Cap only by default.
|
|
94
|
+
- **Graceful fallback**: if sidecar recall is empty, timed out, or unavailable, the turn still runs.
|
|
95
|
+
|
|
96
|
+
### Comparison
|
|
54
97
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
98
|
+
`pi-memory` is not trying to be every memory system. The value is a specific Pi-native loop: Markdown ground truth, Preflight injection, sidecar retrieval, compaction export, and offline maintenance.
|
|
99
|
+
|
|
100
|
+
| System | Strength | Difference From `@chendpoc/pi-memory` |
|
|
101
|
+
| --- | --- | --- |
|
|
102
|
+
| Cursor Rules / OpenCode `AGENTS.md` | Static project instructions, predictable injection. | Mostly user-authored rules; no automatic durable fact extraction or per-turn episodic Preflight. |
|
|
103
|
+
| Claude Code Auto Memory | Agent can write local memory files. | File-based memory, but no sidecar vector recall or Pi compact/shutdown integration. |
|
|
104
|
+
| `pi-hermes-memory` | Rich Pi package with FTS5, failure memory, correction learning, security scanning. | More automated and feature-heavy; no `<private_memory>` Preflight loop or sidecar-derived vector index. |
|
|
105
|
+
| OpenClaw memory-core | Mature file + index design, dreaming, hybrid search, local embeddings. | Broader memory platform; `pi-memory` is narrower and Pi-extension focused. |
|
|
106
|
+
| Mem0 / Zep | Managed memory APIs with hybrid search, graph, temporal modeling. | Stronger retrieval infrastructure, but external service/database oriented and not Markdown-ground-truth first. |
|
|
107
|
+
| Letta | Context engineering with git-backed memory repos and sleep-time compute. | Powerful for autonomous memory management; heavier mental model than Pi's extension lifecycle. |
|
|
108
|
+
| Cognee | Knowledge engine with graph/vector/relational stores and many retrieval modes. | Better for knowledge graphs; overkill for lightweight coding-agent preferences and conventions. |
|
|
109
|
+
|
|
110
|
+
Where other systems are stronger:
|
|
111
|
+
|
|
112
|
+
- `pi-hermes-memory`: failure memory, correction detector, tool quirks, secret scanning.
|
|
113
|
+
- OpenClaw: dreaming stages, memory wiki, hybrid FTS/vector search, local embedding providers.
|
|
114
|
+
- Zep/Cognee: temporal graph reasoning and multi-hop graph retrieval.
|
|
115
|
+
- Mem0: hosted multi-tenant memory API.
|
|
116
|
+
- Letta: autonomous context repositories and sleep-time memory work.
|
|
60
117
|
|
|
61
118
|
## How It Works
|
|
62
119
|
|
|
120
|
+
### Architecture
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
Pi extension process
|
|
124
|
+
|- session_start
|
|
125
|
+
| |- initialize MEMORY.md
|
|
126
|
+
| |- start/warm sidecar
|
|
127
|
+
| |- reindex derived vector index
|
|
128
|
+
| `- preload Memory Cap
|
|
129
|
+
|
|
|
130
|
+
|- before_agent_start / context
|
|
131
|
+
| `- Preflight recall -> <private_memory> injection
|
|
132
|
+
|
|
|
133
|
+
|- /remember
|
|
134
|
+
| `- append [user] Memory Entry
|
|
135
|
+
|
|
|
136
|
+
|- session_before_compact / session_compact
|
|
137
|
+
| `- dual-purpose summary -> Memory Export ingest
|
|
138
|
+
|
|
|
139
|
+
|- session_shutdown
|
|
140
|
+
| `- append shutdown metadata only
|
|
141
|
+
|
|
|
142
|
+
`- consolidate scheduler
|
|
143
|
+
`- merge/dedupe -> rewrite Ground Truth -> reindex
|
|
144
|
+
|
|
145
|
+
Sidecar process over UDS JSONL
|
|
146
|
+
|- ping
|
|
147
|
+
|- stats
|
|
148
|
+
|- query: embed -> cosine scan -> MMR
|
|
149
|
+
`- reindex: upsert chunks into memory.vec.sqlite
|
|
63
150
|
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
MEMORY.md / project memory + graph.json + sessions.db
|
|
74
|
-
|
|
|
75
|
-
v
|
|
76
|
-
memory_recall tool / implicit preflight injection / MEMORY.md cap
|
|
151
|
+
|
|
152
|
+
### Read Path
|
|
153
|
+
|
|
154
|
+
Root session:
|
|
155
|
+
|
|
156
|
+
```text
|
|
157
|
+
Memory Cap from Ground Truth
|
|
158
|
+
+ Episodic Preflight for the current user message
|
|
159
|
+
-> merged <private_memory>
|
|
77
160
|
```
|
|
78
161
|
|
|
79
|
-
|
|
162
|
+
Subagent session:
|
|
80
163
|
|
|
81
|
-
|
|
164
|
+
```text
|
|
165
|
+
Memory Cap only
|
|
166
|
+
-> no episodic QueryIntent / sidecar query by default
|
|
167
|
+
```
|
|
82
168
|
|
|
83
|
-
|
|
84
|
-
|----------|---------|----------|
|
|
85
|
-
| 1 | **LocalGraphQuerier** (in-process) | bundle only |
|
|
86
|
-
| 2 | **FTS5 + keyword fallback** | `better-sqlite3` (optional) |
|
|
169
|
+
Fallback chain:
|
|
87
170
|
|
|
88
|
-
|
|
171
|
+
```text
|
|
172
|
+
Sidecar results
|
|
173
|
+
-> if empty/error/timeout: MEMORY.md fallback
|
|
174
|
+
-> if empty: no injection
|
|
175
|
+
```
|
|
89
176
|
|
|
90
|
-
|
|
177
|
+
### Write Paths
|
|
91
178
|
|
|
92
|
-
|
|
|
93
|
-
|
|
94
|
-
| `/
|
|
95
|
-
|
|
|
179
|
+
| Path | Trigger | LLM? | Blocking? | Purpose |
|
|
180
|
+
| --- | --- | --- | --- | --- |
|
|
181
|
+
| `/remember` | User command | No | Yes | Explicit durable note |
|
|
182
|
+
| Compaction | `session_before_compact` + `session_compact` | One summary call | Summary blocks; ingest is background | Continue current session and export durable facts |
|
|
183
|
+
| Shutdown Queue | `session_shutdown` + `pi-memory maintenance` | Only offline, when no compaction summary exists | No during shutdown | Recover facts from short or missed sessions |
|
|
184
|
+
| Consolidate | overflow >= 12, 7 days, or daily cron | Optional | Offline/background | Dedupe, merge, prune obsolete todos |
|
|
96
185
|
|
|
97
|
-
##
|
|
186
|
+
## Data And Memory Format
|
|
98
187
|
|
|
99
|
-
|
|
100
|
-
# Train a bundle from session history
|
|
101
|
-
npx pi-memory train --full # full rebuild
|
|
102
|
-
npx pi-memory train # incremental (only new sessions)
|
|
103
|
-
npx pi-memory train --extractor llm # use LLM for deeper extraction
|
|
104
|
-
npx pi-memory train --extractor llm --model deepseek/deepseek-v4-flash
|
|
105
|
-
|
|
106
|
-
# Query the knowledge graph
|
|
107
|
-
npx pi-memory query '{"mode":"direct_relation","anchor_mentions":["Alice"]}'
|
|
108
|
-
|
|
109
|
-
# Service diagnostics
|
|
110
|
-
npx pi-memory health
|
|
111
|
-
npx pi-memory status
|
|
112
|
-
npx pi-memory memory-status
|
|
113
|
-
|
|
114
|
-
# Offline consolidation
|
|
115
|
-
npx pi-memory consolidate
|
|
116
|
-
npx pi-memory consolidate --dry-run
|
|
117
|
-
npx pi-memory consolidate --phase1-only
|
|
118
|
-
npx pi-memory consolidate --phase2-only
|
|
119
|
-
|
|
120
|
-
# OS scheduler
|
|
121
|
-
npx pi-memory setup-schedule
|
|
122
|
-
npx pi-memory setup-schedule --hour 4
|
|
123
|
-
npx pi-memory setup-schedule --status
|
|
124
|
-
npx pi-memory setup-schedule --remove
|
|
125
|
-
|
|
126
|
-
# Manage bundles
|
|
127
|
-
npx pi-memory install-bundle ./path/to/bundle
|
|
128
|
-
|
|
129
|
-
# Rebuild FTS5 search index
|
|
130
|
-
npx pi-memory index
|
|
131
|
-
|
|
132
|
-
# Continuous training (watch mode)
|
|
133
|
-
npx pi-memory train --watch
|
|
134
|
-
```
|
|
188
|
+
All artifacts live under one memory agent directory.
|
|
135
189
|
|
|
136
|
-
|
|
190
|
+
Resolution order:
|
|
137
191
|
|
|
138
|
-
|
|
192
|
+
1. `--agent-dir` CLI flag
|
|
193
|
+
2. `PI_MEMORY_AGENT_DIR`
|
|
194
|
+
3. default `~/.pi/pi-memory-data`
|
|
139
195
|
|
|
140
|
-
|
|
|
141
|
-
|
|
142
|
-
|
|
|
196
|
+
| File | Role |
|
|
197
|
+
| --- | --- |
|
|
198
|
+
| `MEMORY.md` | Ground Truth file |
|
|
199
|
+
| `auto-*.md` | Overflow files after the 150-line cap |
|
|
200
|
+
| `.memory_gc` | Last consolidate timestamp |
|
|
201
|
+
| `.memory_compactions.json` | Compaction idempotency state |
|
|
202
|
+
| `.memory_shutdown_queue.jsonl` | Append-only shutdown metadata |
|
|
203
|
+
| `.memory_shutdown_processed.json` | Drain idempotency state |
|
|
204
|
+
| `memory.vec.sqlite` | Derived Vector Index |
|
|
205
|
+
| `memory.sock` | Sidecar Unix domain socket |
|
|
143
206
|
|
|
144
|
-
|
|
145
|
-
pi --memory-helper-model deepseek/deepseek-v4-flash
|
|
146
|
-
```
|
|
207
|
+
Canonical scaffold: [`templates/MEMORY.md.example`](./templates/MEMORY.md.example)
|
|
147
208
|
|
|
148
|
-
|
|
209
|
+
```markdown
|
|
210
|
+
# Memory
|
|
149
211
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
│ ├── sessions.db # FTS5 search index
|
|
158
|
-
│ ├── memories.sqlite # pending queue + stage1 outputs
|
|
159
|
-
│ ├── workspace/ # raw memories + rollout summaries
|
|
160
|
-
│ ├── projects/<hash>/ # project-scoped MEMORY.md files
|
|
161
|
-
│ ├── consolidation.log # structured consolidation logs
|
|
162
|
-
│ └── .train_marker # incremental training timestamp
|
|
163
|
-
├── agent/sessions/ # Pi session files (.jsonl)
|
|
164
|
-
└── MEMORY.md # global memory index
|
|
212
|
+
## Preferences
|
|
213
|
+
|
|
214
|
+
## Conventions
|
|
215
|
+
|
|
216
|
+
## Findings
|
|
217
|
+
|
|
218
|
+
## Todos
|
|
165
219
|
```
|
|
166
220
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
defaultMemoryConfig,
|
|
173
|
-
trainBundle,
|
|
174
|
-
LocalGraphQuerier,
|
|
175
|
-
createLLMFactExtractor,
|
|
176
|
-
createStandaloneLLMClient,
|
|
177
|
-
rerankWithLLM,
|
|
178
|
-
} from "@chendpoc/pi-memory";
|
|
179
|
-
|
|
180
|
-
// --- Query the graph directly ---
|
|
181
|
-
const querier = new LocalGraphQuerier("/Users/you/.pi/memory");
|
|
182
|
-
querier.load();
|
|
183
|
-
const result = querier.query({
|
|
184
|
-
mode: "direct_relation",
|
|
185
|
-
anchor_mentions: ["Alice"],
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
// --- Train a bundle ---
|
|
189
|
-
const result = await trainBundle({
|
|
190
|
-
sessionsDir: "~/.pi/agent/sessions",
|
|
191
|
-
bundleRoot: "~/.pi/memory",
|
|
192
|
-
full: true,
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
// --- Train with LLM extraction ---
|
|
196
|
-
const client = createStandaloneLLMClient("deepseek/deepseek-v4-flash");
|
|
197
|
-
const extractor = createLLMFactExtractor({ client, batchSize: 10 });
|
|
198
|
-
await trainBundle({ extractOpts: { llmExtractor: extractor } });
|
|
199
|
-
|
|
200
|
-
// --- Use as Pi extension ---
|
|
201
|
-
import piMemory from "@chendpoc/pi-memory/extension";
|
|
202
|
-
export default piMemory;
|
|
221
|
+
Entries are single Markdown bullets:
|
|
222
|
+
|
|
223
|
+
```markdown
|
|
224
|
+
- [user] Prefer pnpm over npm <!-- id:abc123 user ts:2026-07-04T09:00:00.000+08:00 -->
|
|
225
|
+
- Project tests use Vitest <!-- id:def456 ts:2026-07-04T09:05:00.000+08:00 -->
|
|
203
226
|
```
|
|
204
227
|
|
|
205
|
-
|
|
228
|
+
Rules:
|
|
206
229
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
| `src/service.ts` | Service lifecycle and query routing |
|
|
213
|
-
| `src/consolidation/` | Queue, stage1, Phase2, scheduler, memory index, scope |
|
|
214
|
-
| `src/trainer/` | Session loader, fact extraction, entity resolution, bundle builder |
|
|
215
|
-
| `src/fallback/` | FTS5 index, keyword search, LLM rerank |
|
|
216
|
-
| `src/preflight/` | Intent detection, private memory render/inject/strip |
|
|
217
|
-
| `src/tools/` | `memory_recall` and `memory_append` tool definitions |
|
|
230
|
+
- `/remember` writes `[user]` entries.
|
|
231
|
+
- Consolidate must not remove or rewrite `[user]` entries.
|
|
232
|
+
- `MEMORY.md` is capped at 150 lines.
|
|
233
|
+
- Overflow entries spill to `auto-*.md`, with a pointer in `MEMORY.md`.
|
|
234
|
+
- Vector chunks are derived from entries; by default long entries split beyond `PI_MEMORY_CHUNK_MAX_CHARS=512`.
|
|
218
235
|
|
|
219
|
-
##
|
|
236
|
+
## Configuration
|
|
220
237
|
|
|
221
|
-
|
|
238
|
+
Optional env file locations are loaded in this order:
|
|
222
239
|
|
|
223
|
-
1.
|
|
224
|
-
2.
|
|
225
|
-
3.
|
|
226
|
-
4.
|
|
227
|
-
5. Results are cached per agent loop to avoid redundant queries during multi-tool turns
|
|
240
|
+
1. `PI_MEMORY_ENV_FILE`
|
|
241
|
+
2. project `.env`
|
|
242
|
+
3. project `.env.local`
|
|
243
|
+
4. `~/.pi/agent/pi-memory.env`
|
|
228
244
|
|
|
229
|
-
|
|
245
|
+
Common variables:
|
|
230
246
|
|
|
231
|
-
|
|
247
|
+
| Variable | Default | Purpose |
|
|
248
|
+
| --- | --- | --- |
|
|
249
|
+
| `PI_MEMORY_AGENT_DIR` | `~/.pi/pi-memory-data` | Memory data root |
|
|
250
|
+
| `PI_MEMORY_EMBEDDER` | `hash` | `hash`, `ollama`, or `openai` |
|
|
251
|
+
| `PI_MEMORY_HELPER_MODEL` | `deepseek/deepseek-v4-flash` | Helper model spec for QueryIntent and consolidate |
|
|
252
|
+
| `PI_MEMORY_PREFLIGHT_BUDGET_MS` | `800` | Shared Preflight budget, clamped to 250-1500ms |
|
|
253
|
+
| `PI_MEMORY_INTENT_RETRIES` | `0` | Helper LLM retries after the first attempt |
|
|
254
|
+
| `PI_MEMORY_WARM_SIDECAR` | `1` | Warm sidecar at `session_start` |
|
|
255
|
+
| `PI_MEMORY_INTENT_CACHE` | `1` | Cache QueryIntent per session |
|
|
256
|
+
| `PI_MEMORY_REINDEX_DEBOUNCE_MS` | `500` | Debounce sidecar reindex after writes |
|
|
257
|
+
| `PI_MEMORY_TOP_K` | `3` | Vector recall result count |
|
|
258
|
+
| `PI_MEMORY_MMR_LAMBDA` | `0.8` | MMR relevance/diversity balance |
|
|
259
|
+
| `PI_MEMORY_MIN_RELEVANCE` | `0.4` | Minimum cosine similarity |
|
|
260
|
+
| `PI_MEMORY_CHUNK_MAX_CHARS` | `512` | Split long entries for indexing; `0` disables |
|
|
261
|
+
| `PI_MEMORY_DEBUG` | unset | `1` prints debug timing logs |
|
|
232
262
|
|
|
233
|
-
|
|
234
|
-
- `@earendil-works/pi-ai`
|
|
235
|
-
- `@earendil-works/pi-coding-agent`
|
|
236
|
-
- `typebox`
|
|
263
|
+
See [`.env.example`](./.env.example) for the full list.
|
|
237
264
|
|
|
238
|
-
|
|
265
|
+
### Embedders
|
|
239
266
|
|
|
240
|
-
|
|
267
|
+
| Embedder | Use When | Notes |
|
|
268
|
+
| --- | --- | --- |
|
|
269
|
+
| `hash` | Zero-config local development | Offline, deterministic, lower semantic quality |
|
|
270
|
+
| `ollama` | Local semantic embeddings | Uses `PI_MEMORY_OLLAMA_BASE_URL` and `PI_MEMORY_OLLAMA_EMBED_MODEL` |
|
|
271
|
+
| `openai` | Higher-quality cloud embeddings | Requires `PI_MEMORY_OPENAI_API_KEY` or `OPENAI_API_KEY` |
|
|
241
272
|
|
|
242
|
-
|
|
273
|
+
The Vector Index stores embedding provider, model, and dimension metadata. When they change, old chunks are cleared and rebuilt.
|
|
243
274
|
|
|
244
|
-
|
|
275
|
+
## Commands
|
|
276
|
+
|
|
277
|
+
Inside Pi:
|
|
278
|
+
|
|
279
|
+
```text
|
|
280
|
+
/remember [section] <content>
|
|
281
|
+
/memory-status [refresh|expand|collapse|hide]
|
|
282
|
+
```
|
|
245
283
|
|
|
246
|
-
|
|
247
|
-
2. Merge to `main` — GitHub Actions opens a **Version Packages** PR (bumps version + updates `CHANGELOG.md`)
|
|
248
|
-
3. Merge that PR, then tag and push:
|
|
284
|
+
CLI:
|
|
249
285
|
|
|
250
286
|
```bash
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
287
|
+
pi-memory init
|
|
288
|
+
pi-memory status
|
|
289
|
+
pi-memory maintenance --cron --verbose
|
|
290
|
+
pi-memory consolidate --force --verbose
|
|
291
|
+
pi-memory drain-shutdown-queue --verbose
|
|
254
292
|
```
|
|
255
293
|
|
|
256
|
-
|
|
294
|
+
`maintenance` is the recommended scheduler entrypoint:
|
|
257
295
|
|
|
258
|
-
|
|
296
|
+
```text
|
|
297
|
+
consolidate -> drain-shutdown-queue
|
|
298
|
+
```
|
|
259
299
|
|
|
260
|
-
|
|
300
|
+
Scheduler templates:
|
|
261
301
|
|
|
262
|
-
|
|
302
|
+
- [`templates/com.pi.memory.consolidate.plist.example`](./templates/com.pi.memory.consolidate.plist.example)
|
|
303
|
+
- [`templates/crontab.example`](./templates/crontab.example)
|
|
304
|
+
- [`templates/consolidate.cmd.example`](./templates/consolidate.cmd.example)
|
|
305
|
+
- [`templates/schtasks.example.txt`](./templates/schtasks.example.txt)
|
|
263
306
|
|
|
264
|
-
|
|
265
|
-
2. **Trusted Publisher** → GitHub Actions
|
|
266
|
-
3. Set exactly:
|
|
267
|
-
- Organization or user: `chendpoc`
|
|
268
|
-
- Repository: `pi-memory`
|
|
269
|
-
- Workflow filename: `tag-release.yml`
|
|
270
|
-
- Environment: *(leave blank unless you add a GitHub Environment)*
|
|
307
|
+
## Diagnostics
|
|
271
308
|
|
|
272
|
-
|
|
309
|
+
Use `/memory-status` or `pi-memory status` to inspect:
|
|
273
310
|
|
|
274
|
-
-
|
|
275
|
-
-
|
|
311
|
+
- memory agent directory
|
|
312
|
+
- `MEMORY.md` line count
|
|
313
|
+
- entry count
|
|
314
|
+
- overflow count
|
|
315
|
+
- last consolidate timestamp
|
|
316
|
+
- sidecar socket status
|
|
317
|
+
- vector index generation and chunk count
|
|
318
|
+
- configured embedder
|
|
319
|
+
- index embedder mismatch
|
|
276
320
|
|
|
277
|
-
|
|
321
|
+
Use `PI_MEMORY_DEBUG=1` to log Preflight timings:
|
|
278
322
|
|
|
279
|
-
|
|
323
|
+
```json
|
|
324
|
+
{
|
|
325
|
+
"phase": "preflight",
|
|
326
|
+
"event": "recall",
|
|
327
|
+
"intent_ms": 0,
|
|
328
|
+
"intent_skipped": true,
|
|
329
|
+
"intent_cache_hit": false,
|
|
330
|
+
"sidecar_ms": 42,
|
|
331
|
+
"cache_hit": true,
|
|
332
|
+
"total_ms": 45,
|
|
333
|
+
"fallback": false,
|
|
334
|
+
"results": 3
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
## Non-Goals
|
|
280
339
|
|
|
281
|
-
-
|
|
282
|
-
-
|
|
283
|
-
-
|
|
340
|
+
- Replacing Pi compaction.
|
|
341
|
+
- Replacing session search; use a dedicated session-search extension for old conversations.
|
|
342
|
+
- Maintaining a graph database inside this package.
|
|
343
|
+
- Making the sidecar authoritative.
|
|
344
|
+
- Storing full chat transcripts as memory.
|
|
345
|
+
- Adding multi-second reflection to every user turn.
|
|
284
346
|
|
|
285
347
|
## Development
|
|
286
348
|
|
|
287
349
|
```bash
|
|
288
|
-
pnpm install
|
|
289
|
-
pnpm build
|
|
290
|
-
pnpm test
|
|
291
350
|
pnpm typecheck
|
|
292
|
-
pnpm
|
|
351
|
+
pnpm test
|
|
352
|
+
pnpm build
|
|
293
353
|
```
|
|
294
354
|
|
|
355
|
+
The sidecar IPC test opens a Unix domain socket. If it fails with `listen EPERM` inside a restricted sandbox, run the test in a normal local shell.
|
|
356
|
+
|
|
357
|
+
## Docs
|
|
358
|
+
|
|
359
|
+
- [Chinese README](./doc/README-zh.md)
|
|
360
|
+
- [Roadmap](./doc/ROADMAP.md)
|
|
361
|
+
- [UBIQUITOUS_LANGUAGE.md](./UBIQUITOUS_LANGUAGE.md) - domain glossary
|
|
362
|
+
|
|
295
363
|
## License
|
|
296
364
|
|
|
297
365
|
MIT
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Ubiquitous Language
|
|
2
|
+
|
|
3
|
+
> pi-memory 扩展的领域术语表。实现与文档以本表 canonical 名称为准。
|
|
4
|
+
|
|
5
|
+
## Storage
|
|
6
|
+
|
|
7
|
+
| Term | Definition | Aliases to avoid |
|
|
8
|
+
| ---- | ---------- | ---------------- |
|
|
9
|
+
| **Ground Truth** | The durable cross-session fact store: `MEMORY.md` plus overflow `auto-*.md` files. | memory.db, chat backup |
|
|
10
|
+
| **Vector Index** | A derived SQLite file (`memory.vec.sqlite`) holding embeddings for episodic retrieval. | memory.db, sqlite-vec ANN |
|
|
11
|
+
| **Memory Entry** | One bullet fact in Ground Truth under Preferences, Conventions, Findings, or Todos. | note, fact, bullet |
|
|
12
|
+
| **Overflow File** | An `auto-*.md` spill file created when `MEMORY.md` exceeds the line cap. | auto file, spill |
|
|
13
|
+
|
|
14
|
+
## Read path
|
|
15
|
+
|
|
16
|
+
| Term | Definition | Aliases to avoid |
|
|
17
|
+
| ---- | ---------- | ---------------- |
|
|
18
|
+
| **Preflight** | Best-effort retrieval and injection before the main model sees each user message. | memory recall, pre-fetch |
|
|
19
|
+
| **QueryIntent** | Structured retrieval hints (what/who/where or raw_query) extracted by a helper LLM. | search intent |
|
|
20
|
+
| **Memory Cap** | Session-scoped static summary of Ground Truth injected without episodic query. | turnMemoryIndex, static cap |
|
|
21
|
+
| **Episodic Preflight** | QueryIntent → Sidecar query → optional Fallback for query-dependent recall. | full preflight |
|
|
22
|
+
| **Fallback** | Silent read of Ground Truth when Sidecar returns nothing or errors. | md fallback |
|
|
23
|
+
| **Private Memory** | The `<private_memory>` block prefixed to in-flight user messages only. | injected context |
|
|
24
|
+
|
|
25
|
+
## Write path
|
|
26
|
+
|
|
27
|
+
| Term | Definition | Aliases to avoid |
|
|
28
|
+
| ---- | ---------- | ---------------- |
|
|
29
|
+
| **Memory Export** | The cross-session facts section inside a dual-purpose compact summary. | memoryQueue, export block |
|
|
30
|
+
| **Compact Delta** | New Memory Export facts filtered against existing Ground Truth before append (subagent). | Stage1, shutdown extract |
|
|
31
|
+
| **Dual-Purpose Summary** | One LLM compact output with Session Context and Memory Export sections. | compact summary |
|
|
32
|
+
| **Consolidate** | Periodic LLM merge/dedupe of Ground Truth; not a source of new facts. | GC, merge |
|
|
33
|
+
| **Shutdown Queue** | Append-only JSONL file (`.memory_shutdown_queue.jsonl`) of session metadata on shutdown; drained by `pi-memory maintenance`. | session enqueue pipeline |
|
|
34
|
+
|
|
35
|
+
## Infrastructure
|
|
36
|
+
|
|
37
|
+
| Term | Definition | Aliases to avoid |
|
|
38
|
+
| ---- | ---------- | ---------------- |
|
|
39
|
+
| **Sidecar** | Separate Node process for embed, vector scan, MMR, and reindex over UDS. | tlm, daemon |
|
|
40
|
+
| **JSONL Framing** | One JSON object per line over UDS IPC. | NDJSON, ndjson |
|
|
41
|
+
| **Index Generation** | Monotonic counter bumped on reindex; invalidates query cache. | indexGeneration |
|
|
42
|
+
| **onSyncToSidecar** | Callback fired after Ground Truth writes to schedule debounced reindex. | onDirty |
|
|
43
|
+
| **onConsolidateCheck** | Callback fired after writes to schedule debounced consolidate evaluation. | onDirty |
|
|
44
|
+
|
|
45
|
+
## Session types
|
|
46
|
+
|
|
47
|
+
| Term | Definition | Aliases to avoid |
|
|
48
|
+
| ---- | ---------- | ---------------- |
|
|
49
|
+
| **Root Session** | A top-level Pi agent session without a parent session header. | main session |
|
|
50
|
+
| **Subagent Session** | A forked session whose header includes `parentSession` or `parent_session`. | child session, fork |
|
|
51
|
+
|
|
52
|
+
## Relationships
|
|
53
|
+
|
|
54
|
+
- **Ground Truth** is the source; the **Vector Index** is derived and may lag.
|
|
55
|
+
- **Preflight** reads **Ground Truth** via **Sidecar** first, then **Fallback**.
|
|
56
|
+
- **Root Session** runs **Episodic Preflight** plus **Memory Cap** each turn; **Subagent Session** runs **Memory Cap** only.
|
|
57
|
+
- **Memory Export** from compaction flows through **Compact Delta** for **Subagent Session**, then **appendIfAbsent**.
|
|
58
|
+
- **Shutdown Queue** records metadata only; it does not write **Ground Truth**.
|
|
59
|
+
- **Consolidate** rewrites **Ground Truth** and triggers **onSyncToSidecar**.
|
|
60
|
+
|
|
61
|
+
## Example dialogue
|
|
62
|
+
|
|
63
|
+
> **Dev:** "When a **Subagent Session** compacts, do we run **Episodic Preflight** on its turns?"
|
|
64
|
+
>
|
|
65
|
+
> **Domain expert:** "No. Subagents get **Memory Cap** at **session_start** and skip **Episodic Preflight**. New durable facts still arrive via **Memory Export**, but **Compact Delta** filters out anything already in parent **Ground Truth**."
|
|
66
|
+
>
|
|
67
|
+
> **Dev:** "What happens on **session_shutdown**?"
|
|
68
|
+
>
|
|
69
|
+
> **Domain expert:** "We append one line to the **Shutdown Queue**—session file, parent path, reason. No LLM on shutdown. **`pi-memory maintenance`** drains the queue offline (after consolidate), reusing **Compact Delta** rules for subagents."
|
|
70
|
+
>
|
|
71
|
+
> **Dev:** "If **Sidecar** is down, does **Preflight** fail?"
|
|
72
|
+
>
|
|
73
|
+
> **Domain expert:** "It **Fallback**s to **Ground Truth** or **Private Memory** stays empty. The user never sees an error."
|
|
74
|
+
|
|
75
|
+
## Flagged ambiguities
|
|
76
|
+
|
|
77
|
+
- **memory.db** was used for the vector file — canonical name is **Vector Index** file `memory.vec.sqlite`.
|
|
78
|
+
- **sqlite-vec** implied ANN search — MVP uses **better-sqlite3 + full-table cosine scan**; ANN is future work.
|
|
79
|
+
- **NDJSON / ndjson** — canonical term is **JSONL Framing** (one JSON object per line).
|
|
80
|
+
- **memoryQueue / onDirty / Stage1** — replaced by **appendFromCompaction**, **onSyncToSidecar**, and **Compact Delta**.
|
|
81
|
+
- **MVP chunking**:**1 Memory Entry = 1+ vector chunks**;超过 `PI_MEMORY_CHUNK_MAX_CHARS`(默认 512)按段落/句界拆分,`chunk_id = entry.id` 或 `entry.id#N`;embed 文本带 `[Section]` 前缀。Ground Truth 仍为 1 bullet = 1 entry。
|