@chendpoc/pi-memory 0.2.2 → 0.2.3
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 +4 -2
- package/dist/adapters/embed/factory.d.ts +0 -1
- package/dist/adapters/embed/factory.js +0 -1
- package/dist/adapters/embed/hash.d.ts +0 -1
- package/dist/adapters/embed/hash.js +0 -1
- package/dist/adapters/embed/normalize.d.ts +0 -1
- package/dist/adapters/embed/normalize.js +0 -1
- package/dist/adapters/embed/ollama.d.ts +0 -1
- package/dist/adapters/embed/ollama.js +0 -1
- package/dist/adapters/embed/openai.d.ts +0 -1
- package/dist/adapters/embed/openai.js +0 -1
- package/dist/adapters/embed/types.d.ts +0 -1
- package/dist/adapters/embed/types.js +0 -1
- package/dist/adapters/http.d.ts +0 -1
- package/dist/adapters/http.js +0 -1
- package/dist/adapters/index.d.ts +0 -1
- package/dist/adapters/index.js +0 -1
- package/dist/adapters/llm/extractText.d.ts +0 -1
- package/dist/adapters/llm/extractText.js +0 -1
- package/dist/adapters/llm/factory.d.ts +0 -1
- package/dist/adapters/llm/factory.js +0 -1
- package/dist/adapters/llm/index.d.ts +0 -1
- package/dist/adapters/llm/index.js +0 -1
- package/dist/adapters/llm/modelSpec.d.ts +0 -1
- package/dist/adapters/llm/modelSpec.js +0 -1
- package/dist/adapters/llm/ollama.d.ts +0 -1
- package/dist/adapters/llm/ollama.js +0 -1
- package/dist/adapters/llm/openai-compat.d.ts +0 -1
- package/dist/adapters/llm/openai-compat.js +0 -1
- package/dist/adapters/llm/pi-ai.d.ts +0 -1
- package/dist/adapters/llm/pi-ai.js +0 -1
- package/dist/adapters/llm/standalone.d.ts +0 -1
- package/dist/adapters/llm/standalone.js +0 -1
- package/dist/adapters/llm/types.d.ts +0 -1
- package/dist/adapters/llm/types.js +0 -1
- package/dist/cli/init.d.ts +0 -1
- package/dist/cli/init.js +0 -1
- package/dist/cli/jobs.d.ts +0 -1
- package/dist/cli/jobs.js +0 -1
- package/dist/cli/log.d.ts +0 -1
- package/dist/cli/log.js +0 -1
- package/dist/cli/parseArgs.d.ts +0 -1
- package/dist/cli/parseArgs.js +0 -1
- package/dist/cli/status.d.ts +0 -1
- package/dist/cli/status.js +0 -1
- package/dist/cli/theme.d.ts +0 -1
- package/dist/cli/theme.js +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -1
- package/dist/commands/index.d.ts +0 -1
- package/dist/commands/index.js +0 -1
- package/dist/commands/parseMemoryStatusArgs.d.ts +0 -1
- package/dist/commands/parseMemoryStatusArgs.js +0 -1
- package/dist/commands/parseRememberArgs.d.ts +0 -1
- package/dist/commands/parseRememberArgs.js +0 -1
- package/dist/commands/remember.d.ts +0 -1
- package/dist/commands/remember.js +0 -1
- package/dist/commands/status.d.ts +0 -1
- package/dist/commands/status.js +0 -1
- package/dist/commands/types.d.ts +0 -1
- package/dist/commands/types.js +0 -1
- package/dist/compact/index.d.ts +0 -1
- package/dist/compact/index.js +0 -1
- package/dist/compact/parseMemoryExport.d.ts +0 -1
- package/dist/compact/parseMemoryExport.js +0 -1
- package/dist/compact/register.d.ts +0 -1
- package/dist/compact/register.js +0 -1
- package/dist/compact/runSummary.d.ts +0 -1
- package/dist/compact/runSummary.js +0 -1
- package/dist/compact/subagentDelta.d.ts +0 -1
- package/dist/compact/subagentDelta.js +0 -1
- package/dist/compact/summaryPrompt.d.ts +0 -1
- package/dist/compact/summaryPrompt.js +0 -1
- package/dist/config/agentDir.d.ts +0 -1
- package/dist/config/agentDir.js +0 -1
- package/dist/config/chunking.d.ts +0 -1
- package/dist/config/chunking.js +0 -1
- package/dist/config/env.d.ts +0 -1
- package/dist/config/env.js +0 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -1
- package/dist/config/loadEnv.d.ts +0 -1
- package/dist/config/loadEnv.js +0 -1
- package/dist/config/preflight.d.ts +0 -1
- package/dist/config/preflight.js +0 -1
- package/dist/config/preflightBudget.d.ts +0 -1
- package/dist/config/preflightBudget.js +0 -1
- package/dist/config/retrieval.d.ts +0 -1
- package/dist/config/retrieval.js +0 -1
- package/dist/consolidate/entryKey.d.ts +0 -1
- package/dist/consolidate/entryKey.js +0 -1
- package/dist/consolidate/index.d.ts +0 -1
- package/dist/consolidate/index.js +0 -1
- package/dist/consolidate/mergeEntries.d.ts +0 -1
- package/dist/consolidate/mergeEntries.js +0 -1
- package/dist/consolidate/mergePrompt.d.ts +0 -1
- package/dist/consolidate/mergePrompt.js +0 -1
- package/dist/consolidate/mergeWithLlm.d.ts +0 -1
- package/dist/consolidate/mergeWithLlm.js +0 -1
- package/dist/consolidate/runJob.d.ts +0 -1
- package/dist/consolidate/runJob.js +0 -1
- package/dist/consolidate/scheduler.d.ts +0 -1
- package/dist/consolidate/scheduler.js +0 -1
- package/dist/constants/chunking.d.ts +0 -1
- package/dist/constants/chunking.js +0 -1
- package/dist/constants/env.d.ts +0 -1
- package/dist/constants/env.js +0 -1
- package/dist/constants/index.d.ts +0 -1
- package/dist/constants/index.js +0 -1
- package/dist/constants/memory.d.ts +0 -1
- package/dist/constants/memory.js +0 -1
- package/dist/constants/paths.d.ts +0 -1
- package/dist/constants/paths.js +0 -1
- package/dist/constants/preflight.d.ts +0 -1
- package/dist/constants/preflight.js +0 -1
- package/dist/constants/retrieval.d.ts +0 -1
- package/dist/constants/retrieval.js +0 -1
- package/dist/constants/security.d.ts +0 -1
- package/dist/constants/security.js +0 -1
- package/dist/constants/timing.d.ts +0 -1
- package/dist/constants/timing.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/init/workspace.d.ts +0 -1
- package/dist/init/workspace.js +0 -1
- package/dist/ipc/jsonlFramer.d.ts +0 -1
- package/dist/ipc/jsonlFramer.js +0 -1
- package/dist/pi-extension.d.ts +0 -1
- package/dist/pi-extension.js +0 -1
- package/dist/preflight/episodic.d.ts +0 -1
- package/dist/preflight/episodic.js +0 -1
- package/dist/preflight/intentCache.d.ts +0 -1
- package/dist/preflight/intentCache.js +0 -1
- package/dist/preflight/queryCache.d.ts +0 -1
- package/dist/preflight/queryCache.js +0 -1
- package/dist/preflight/queryIntent.d.ts +0 -1
- package/dist/preflight/queryIntent.js +0 -1
- package/dist/preflight/render.d.ts +0 -1
- package/dist/preflight/render.js +0 -1
- package/dist/preflight/session.d.ts +0 -1
- package/dist/preflight/session.js +0 -1
- package/dist/preflight/strip.d.ts +0 -1
- package/dist/preflight/strip.js +0 -1
- package/dist/shutdown/enqueue.d.ts +0 -1
- package/dist/shutdown/enqueue.js +0 -1
- package/dist/shutdown/extractPrompt.d.ts +0 -1
- package/dist/shutdown/extractPrompt.js +0 -1
- package/dist/shutdown/processed.d.ts +0 -1
- package/dist/shutdown/processed.js +0 -1
- package/dist/shutdown/readQueue.d.ts +0 -1
- package/dist/shutdown/readQueue.js +0 -1
- package/dist/shutdown/runDrainJob.d.ts +0 -1
- package/dist/shutdown/runDrainJob.js +0 -1
- package/dist/shutdown/sessionReader.d.ts +0 -1
- package/dist/shutdown/sessionReader.js +0 -1
- package/dist/sidecar/client.d.ts +0 -1
- package/dist/sidecar/client.js +0 -1
- package/dist/sidecar/paths.d.ts +0 -1
- package/dist/sidecar/paths.js +0 -1
- package/dist/sidecar/protocol.d.ts +0 -1
- package/dist/sidecar/protocol.js +0 -1
- package/dist/sidecar/reindexBridge.d.ts +0 -1
- package/dist/sidecar/reindexBridge.js +0 -1
- package/dist/sidecar/server/process.d.ts +0 -1
- package/dist/sidecar/server/process.js +0 -1
- package/dist/sidecar/server/query.d.ts +0 -1
- package/dist/sidecar/server/query.js +0 -1
- package/dist/sidecar/server/reindex.d.ts +0 -1
- package/dist/sidecar/server/reindex.js +0 -1
- package/dist/sidecar/server/server.d.ts +0 -1
- package/dist/sidecar/server/server.js +0 -1
- package/dist/sidecar/server/stats.d.ts +0 -1
- package/dist/sidecar/server/stats.js +0 -1
- package/dist/sidecar/server/vec/embedder.d.ts +0 -1
- package/dist/sidecar/server/vec/embedder.js +0 -1
- package/dist/sidecar/server/vec/mmr.d.ts +0 -1
- package/dist/sidecar/server/vec/mmr.js +0 -1
- package/dist/sidecar/server/vec/store.d.ts +0 -1
- package/dist/sidecar/server/vec/store.js +0 -1
- package/dist/sidecar/sidecarManager.d.ts +0 -1
- package/dist/sidecar/sidecarManager.js +0 -1
- package/dist/sidecar/utils.d.ts +0 -1
- package/dist/sidecar/utils.js +0 -1
- package/dist/sidecar/warmup.d.ts +0 -1
- package/dist/sidecar/warmup.js +0 -1
- package/dist/store/backend.d.ts +0 -1
- package/dist/store/backend.js +0 -1
- package/dist/store/index.d.ts +0 -1
- package/dist/store/index.js +0 -1
- package/dist/store/indexChunks.d.ts +0 -1
- package/dist/store/indexChunks.js +0 -1
- package/dist/store/markdown/format.d.ts +0 -1
- package/dist/store/markdown/format.js +0 -1
- package/dist/store/markdown/parse.d.ts +0 -1
- package/dist/store/markdown/parse.js +0 -1
- package/dist/store/markdown/template.d.ts +0 -1
- package/dist/store/markdown/template.js +0 -1
- package/dist/store/memoryStore.d.ts +0 -1
- package/dist/store/memoryStore.js +0 -1
- package/dist/store/paths.d.ts +0 -1
- package/dist/store/paths.js +0 -1
- package/dist/store/types.d.ts +0 -1
- package/dist/store/types.js +0 -1
- package/dist/ui/memoryStatusWidget.d.ts +0 -1
- package/dist/ui/memoryStatusWidget.js +0 -1
- package/dist/utils/debugLog.d.ts +0 -1
- package/dist/utils/debugLog.js +0 -1
- package/dist/utils/fs.d.ts +0 -1
- package/dist/utils/fs.js +0 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/paths.d.ts +0 -1
- package/dist/utils/paths.js +0 -1
- package/dist/utils/platform.d.ts +0 -1
- package/dist/utils/platform.js +0 -1
- package/dist/utils/scheduler.d.ts +0 -1
- package/dist/utils/scheduler.js +0 -1
- package/dist/utils/socket.d.ts +0 -1
- package/dist/utils/socket.js +0 -1
- package/dist/utils/time.d.ts +0 -1
- package/dist/utils/time.js +0 -1
- package/package.json +6 -11
- package/scripts/prepare.mjs +24 -0
- package/UBIQUITOUS_LANGUAGE.md +0 -81
- package/assets/pi-memory-logo.png +0 -0
- package/dist/adapters/embed/factory.d.ts.map +0 -1
- package/dist/adapters/embed/factory.js.map +0 -1
- package/dist/adapters/embed/hash.d.ts.map +0 -1
- package/dist/adapters/embed/hash.js.map +0 -1
- package/dist/adapters/embed/normalize.d.ts.map +0 -1
- package/dist/adapters/embed/normalize.js.map +0 -1
- package/dist/adapters/embed/ollama.d.ts.map +0 -1
- package/dist/adapters/embed/ollama.js.map +0 -1
- package/dist/adapters/embed/openai.d.ts.map +0 -1
- package/dist/adapters/embed/openai.js.map +0 -1
- package/dist/adapters/embed/types.d.ts.map +0 -1
- package/dist/adapters/embed/types.js.map +0 -1
- package/dist/adapters/http.d.ts.map +0 -1
- package/dist/adapters/http.js.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/llm/extractText.d.ts.map +0 -1
- package/dist/adapters/llm/extractText.js.map +0 -1
- package/dist/adapters/llm/factory.d.ts.map +0 -1
- package/dist/adapters/llm/factory.js.map +0 -1
- package/dist/adapters/llm/index.d.ts.map +0 -1
- package/dist/adapters/llm/index.js.map +0 -1
- package/dist/adapters/llm/modelSpec.d.ts.map +0 -1
- package/dist/adapters/llm/modelSpec.js.map +0 -1
- package/dist/adapters/llm/ollama.d.ts.map +0 -1
- package/dist/adapters/llm/ollama.js.map +0 -1
- package/dist/adapters/llm/openai-compat.d.ts.map +0 -1
- package/dist/adapters/llm/openai-compat.js.map +0 -1
- package/dist/adapters/llm/pi-ai.d.ts.map +0 -1
- package/dist/adapters/llm/pi-ai.js.map +0 -1
- package/dist/adapters/llm/standalone.d.ts.map +0 -1
- package/dist/adapters/llm/standalone.js.map +0 -1
- package/dist/adapters/llm/types.d.ts.map +0 -1
- package/dist/adapters/llm/types.js.map +0 -1
- package/dist/cli/init.d.ts.map +0 -1
- package/dist/cli/init.js.map +0 -1
- package/dist/cli/jobs.d.ts.map +0 -1
- package/dist/cli/jobs.js.map +0 -1
- package/dist/cli/log.d.ts.map +0 -1
- package/dist/cli/log.js.map +0 -1
- package/dist/cli/parseArgs.d.ts.map +0 -1
- package/dist/cli/parseArgs.js.map +0 -1
- package/dist/cli/status.d.ts.map +0 -1
- package/dist/cli/status.js.map +0 -1
- package/dist/cli/theme.d.ts.map +0 -1
- package/dist/cli/theme.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/index.d.ts.map +0 -1
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/parseMemoryStatusArgs.d.ts.map +0 -1
- package/dist/commands/parseMemoryStatusArgs.js.map +0 -1
- package/dist/commands/parseRememberArgs.d.ts.map +0 -1
- package/dist/commands/parseRememberArgs.js.map +0 -1
- package/dist/commands/remember.d.ts.map +0 -1
- package/dist/commands/remember.js.map +0 -1
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/types.d.ts.map +0 -1
- package/dist/commands/types.js.map +0 -1
- package/dist/compact/index.d.ts.map +0 -1
- package/dist/compact/index.js.map +0 -1
- package/dist/compact/parseMemoryExport.d.ts.map +0 -1
- package/dist/compact/parseMemoryExport.js.map +0 -1
- package/dist/compact/register.d.ts.map +0 -1
- package/dist/compact/register.js.map +0 -1
- package/dist/compact/runSummary.d.ts.map +0 -1
- package/dist/compact/runSummary.js.map +0 -1
- package/dist/compact/subagentDelta.d.ts.map +0 -1
- package/dist/compact/subagentDelta.js.map +0 -1
- package/dist/compact/summaryPrompt.d.ts.map +0 -1
- package/dist/compact/summaryPrompt.js.map +0 -1
- package/dist/config/agentDir.d.ts.map +0 -1
- package/dist/config/agentDir.js.map +0 -1
- package/dist/config/chunking.d.ts.map +0 -1
- package/dist/config/chunking.js.map +0 -1
- package/dist/config/env.d.ts.map +0 -1
- package/dist/config/env.js.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/loadEnv.d.ts.map +0 -1
- package/dist/config/loadEnv.js.map +0 -1
- package/dist/config/preflight.d.ts.map +0 -1
- package/dist/config/preflight.js.map +0 -1
- package/dist/config/preflightBudget.d.ts.map +0 -1
- package/dist/config/preflightBudget.js.map +0 -1
- package/dist/config/retrieval.d.ts.map +0 -1
- package/dist/config/retrieval.js.map +0 -1
- package/dist/consolidate/entryKey.d.ts.map +0 -1
- package/dist/consolidate/entryKey.js.map +0 -1
- package/dist/consolidate/index.d.ts.map +0 -1
- package/dist/consolidate/index.js.map +0 -1
- package/dist/consolidate/mergeEntries.d.ts.map +0 -1
- package/dist/consolidate/mergeEntries.js.map +0 -1
- package/dist/consolidate/mergePrompt.d.ts.map +0 -1
- package/dist/consolidate/mergePrompt.js.map +0 -1
- package/dist/consolidate/mergeWithLlm.d.ts.map +0 -1
- package/dist/consolidate/mergeWithLlm.js.map +0 -1
- package/dist/consolidate/runJob.d.ts.map +0 -1
- package/dist/consolidate/runJob.js.map +0 -1
- package/dist/consolidate/scheduler.d.ts.map +0 -1
- package/dist/consolidate/scheduler.js.map +0 -1
- package/dist/constants/chunking.d.ts.map +0 -1
- package/dist/constants/chunking.js.map +0 -1
- package/dist/constants/env.d.ts.map +0 -1
- package/dist/constants/env.js.map +0 -1
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js.map +0 -1
- package/dist/constants/memory.d.ts.map +0 -1
- package/dist/constants/memory.js.map +0 -1
- package/dist/constants/paths.d.ts.map +0 -1
- package/dist/constants/paths.js.map +0 -1
- package/dist/constants/preflight.d.ts.map +0 -1
- package/dist/constants/preflight.js.map +0 -1
- package/dist/constants/retrieval.d.ts.map +0 -1
- package/dist/constants/retrieval.js.map +0 -1
- package/dist/constants/security.d.ts.map +0 -1
- package/dist/constants/security.js.map +0 -1
- package/dist/constants/timing.d.ts.map +0 -1
- package/dist/constants/timing.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init/workspace.d.ts.map +0 -1
- package/dist/init/workspace.js.map +0 -1
- package/dist/ipc/jsonlFramer.d.ts.map +0 -1
- package/dist/ipc/jsonlFramer.js.map +0 -1
- package/dist/pi-extension.d.ts.map +0 -1
- package/dist/pi-extension.js.map +0 -1
- package/dist/preflight/episodic.d.ts.map +0 -1
- package/dist/preflight/episodic.js.map +0 -1
- package/dist/preflight/intentCache.d.ts.map +0 -1
- package/dist/preflight/intentCache.js.map +0 -1
- package/dist/preflight/queryCache.d.ts.map +0 -1
- package/dist/preflight/queryCache.js.map +0 -1
- package/dist/preflight/queryIntent.d.ts.map +0 -1
- package/dist/preflight/queryIntent.js.map +0 -1
- package/dist/preflight/render.d.ts.map +0 -1
- package/dist/preflight/render.js.map +0 -1
- package/dist/preflight/session.d.ts.map +0 -1
- package/dist/preflight/session.js.map +0 -1
- package/dist/preflight/strip.d.ts.map +0 -1
- package/dist/preflight/strip.js.map +0 -1
- package/dist/shutdown/enqueue.d.ts.map +0 -1
- package/dist/shutdown/enqueue.js.map +0 -1
- package/dist/shutdown/extractPrompt.d.ts.map +0 -1
- package/dist/shutdown/extractPrompt.js.map +0 -1
- package/dist/shutdown/processed.d.ts.map +0 -1
- package/dist/shutdown/processed.js.map +0 -1
- package/dist/shutdown/readQueue.d.ts.map +0 -1
- package/dist/shutdown/readQueue.js.map +0 -1
- package/dist/shutdown/runDrainJob.d.ts.map +0 -1
- package/dist/shutdown/runDrainJob.js.map +0 -1
- package/dist/shutdown/sessionReader.d.ts.map +0 -1
- package/dist/shutdown/sessionReader.js.map +0 -1
- package/dist/sidecar/client.d.ts.map +0 -1
- package/dist/sidecar/client.js.map +0 -1
- package/dist/sidecar/paths.d.ts.map +0 -1
- package/dist/sidecar/paths.js.map +0 -1
- package/dist/sidecar/protocol.d.ts.map +0 -1
- package/dist/sidecar/protocol.js.map +0 -1
- package/dist/sidecar/reindexBridge.d.ts.map +0 -1
- package/dist/sidecar/reindexBridge.js.map +0 -1
- package/dist/sidecar/server/process.d.ts.map +0 -1
- package/dist/sidecar/server/process.js.map +0 -1
- package/dist/sidecar/server/query.d.ts.map +0 -1
- package/dist/sidecar/server/query.js.map +0 -1
- package/dist/sidecar/server/reindex.d.ts.map +0 -1
- package/dist/sidecar/server/reindex.js.map +0 -1
- package/dist/sidecar/server/server.d.ts.map +0 -1
- package/dist/sidecar/server/server.js.map +0 -1
- package/dist/sidecar/server/stats.d.ts.map +0 -1
- package/dist/sidecar/server/stats.js.map +0 -1
- package/dist/sidecar/server/vec/embedder.d.ts.map +0 -1
- package/dist/sidecar/server/vec/embedder.js.map +0 -1
- package/dist/sidecar/server/vec/mmr.d.ts.map +0 -1
- package/dist/sidecar/server/vec/mmr.js.map +0 -1
- package/dist/sidecar/server/vec/store.d.ts.map +0 -1
- package/dist/sidecar/server/vec/store.js.map +0 -1
- package/dist/sidecar/sidecarManager.d.ts.map +0 -1
- package/dist/sidecar/sidecarManager.js.map +0 -1
- package/dist/sidecar/utils.d.ts.map +0 -1
- package/dist/sidecar/utils.js.map +0 -1
- package/dist/sidecar/warmup.d.ts.map +0 -1
- package/dist/sidecar/warmup.js.map +0 -1
- package/dist/store/backend.d.ts.map +0 -1
- package/dist/store/backend.js.map +0 -1
- package/dist/store/index.d.ts.map +0 -1
- package/dist/store/index.js.map +0 -1
- package/dist/store/indexChunks.d.ts.map +0 -1
- package/dist/store/indexChunks.js.map +0 -1
- package/dist/store/markdown/format.d.ts.map +0 -1
- package/dist/store/markdown/format.js.map +0 -1
- package/dist/store/markdown/parse.d.ts.map +0 -1
- package/dist/store/markdown/parse.js.map +0 -1
- package/dist/store/markdown/template.d.ts.map +0 -1
- package/dist/store/markdown/template.js.map +0 -1
- package/dist/store/memoryStore.d.ts.map +0 -1
- package/dist/store/memoryStore.js.map +0 -1
- package/dist/store/paths.d.ts.map +0 -1
- package/dist/store/paths.js.map +0 -1
- package/dist/store/types.d.ts.map +0 -1
- package/dist/store/types.js.map +0 -1
- package/dist/ui/memoryStatusWidget.d.ts.map +0 -1
- package/dist/ui/memoryStatusWidget.js.map +0 -1
- package/dist/utils/debugLog.d.ts.map +0 -1
- package/dist/utils/debugLog.js.map +0 -1
- package/dist/utils/fs.d.ts.map +0 -1
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/platform.d.ts.map +0 -1
- package/dist/utils/platform.js.map +0 -1
- package/dist/utils/scheduler.d.ts.map +0 -1
- package/dist/utils/scheduler.js.map +0 -1
- package/dist/utils/socket.d.ts.map +0 -1
- package/dist/utils/socket.js.map +0 -1
- package/dist/utils/time.d.ts.map +0 -1
- package/dist/utils/time.js.map +0 -1
- package/doc/README-zh.md +0 -394
- package/doc/ROADMAP-zh.md +0 -52
- package/doc/ROADMAP.md +0 -52
- package/src/adapters/embed/factory.ts +0 -50
- package/src/adapters/embed/hash.ts +0 -29
- package/src/adapters/embed/normalize.ts +0 -13
- package/src/adapters/embed/ollama.ts +0 -49
- package/src/adapters/embed/openai.ts +0 -46
- package/src/adapters/embed/types.ts +0 -9
- package/src/adapters/http.ts +0 -42
- package/src/adapters/index.ts +0 -16
- package/src/adapters/llm/extractText.ts +0 -6
- package/src/adapters/llm/factory.ts +0 -60
- package/src/adapters/llm/index.ts +0 -7
- package/src/adapters/llm/modelSpec.ts +0 -39
- package/src/adapters/llm/ollama.ts +0 -42
- package/src/adapters/llm/openai-compat.ts +0 -46
- package/src/adapters/llm/pi-ai.ts +0 -75
- package/src/adapters/llm/standalone.ts +0 -60
- package/src/adapters/llm/types.ts +0 -16
- package/src/cli/init.ts +0 -18
- package/src/cli/jobs.ts +0 -144
- package/src/cli/log.ts +0 -46
- package/src/cli/parseArgs.ts +0 -175
- package/src/cli/status.ts +0 -323
- package/src/cli/theme.ts +0 -26
- package/src/cli.ts +0 -105
- package/src/commands/index.ts +0 -20
- package/src/commands/parseMemoryStatusArgs.ts +0 -11
- package/src/commands/parseRememberArgs.ts +0 -55
- package/src/commands/remember.ts +0 -43
- package/src/commands/status.ts +0 -112
- package/src/commands/types.ts +0 -12
- package/src/compact/index.ts +0 -4
- package/src/compact/parseMemoryExport.ts +0 -71
- package/src/compact/register.ts +0 -57
- package/src/compact/runSummary.ts +0 -42
- package/src/compact/subagentDelta.ts +0 -22
- package/src/compact/summaryPrompt.ts +0 -45
- package/src/config/agentDir.ts +0 -24
- package/src/config/chunking.ts +0 -36
- package/src/config/env.ts +0 -97
- package/src/config/index.ts +0 -7
- package/src/config/loadEnv.ts +0 -26
- package/src/config/preflight.ts +0 -34
- package/src/config/preflightBudget.ts +0 -33
- package/src/config/retrieval.ts +0 -50
- package/src/consolidate/entryKey.ts +0 -4
- package/src/consolidate/index.ts +0 -4
- package/src/consolidate/mergeEntries.ts +0 -22
- package/src/consolidate/mergePrompt.ts +0 -46
- package/src/consolidate/mergeWithLlm.ts +0 -39
- package/src/consolidate/runJob.ts +0 -81
- package/src/consolidate/scheduler.ts +0 -54
- package/src/constants/chunking.ts +0 -8
- package/src/constants/env.ts +0 -59
- package/src/constants/index.ts +0 -7
- package/src/constants/memory.ts +0 -22
- package/src/constants/paths.ts +0 -26
- package/src/constants/preflight.ts +0 -22
- package/src/constants/retrieval.ts +0 -10
- package/src/constants/security.ts +0 -5
- package/src/constants/timing.ts +0 -48
- package/src/index.ts +0 -11
- package/src/init/workspace.ts +0 -44
- package/src/ipc/jsonlFramer.ts +0 -29
- package/src/pi-extension.ts +0 -294
- package/src/preflight/episodic.ts +0 -183
- package/src/preflight/intentCache.ts +0 -44
- package/src/preflight/queryCache.ts +0 -59
- package/src/preflight/queryIntent.ts +0 -126
- package/src/preflight/render.ts +0 -71
- package/src/preflight/session.ts +0 -7
- package/src/preflight/strip.ts +0 -43
- package/src/shutdown/enqueue.ts +0 -29
- package/src/shutdown/extractPrompt.ts +0 -27
- package/src/shutdown/processed.ts +0 -45
- package/src/shutdown/readQueue.ts +0 -26
- package/src/shutdown/runDrainJob.ts +0 -202
- package/src/shutdown/sessionReader.ts +0 -61
- package/src/sidecar/client.ts +0 -114
- package/src/sidecar/paths.ts +0 -31
- package/src/sidecar/protocol.ts +0 -38
- package/src/sidecar/reindexBridge.ts +0 -52
- package/src/sidecar/server/process.ts +0 -27
- package/src/sidecar/server/query.ts +0 -16
- package/src/sidecar/server/reindex.ts +0 -21
- package/src/sidecar/server/server.ts +0 -105
- package/src/sidecar/server/stats.ts +0 -23
- package/src/sidecar/server/vec/embedder.ts +0 -1
- package/src/sidecar/server/vec/mmr.ts +0 -55
- package/src/sidecar/server/vec/store.ts +0 -232
- package/src/sidecar/sidecarManager.ts +0 -134
- package/src/sidecar/utils.ts +0 -28
- package/src/sidecar/warmup.ts +0 -50
- package/src/store/backend.ts +0 -66
- package/src/store/index.ts +0 -5
- package/src/store/indexChunks.ts +0 -89
- package/src/store/markdown/format.ts +0 -16
- package/src/store/markdown/parse.ts +0 -63
- package/src/store/markdown/template.ts +0 -24
- package/src/store/memoryStore.ts +0 -518
- package/src/store/paths.ts +0 -33
- package/src/store/proper-lockfile.d.ts +0 -3
- package/src/store/types.ts +0 -46
- package/src/ui/memoryStatusWidget.ts +0 -80
- package/src/utils/debugLog.ts +0 -22
- package/src/utils/fs.ts +0 -115
- package/src/utils/index.ts +0 -68
- package/src/utils/paths.ts +0 -67
- package/src/utils/platform.ts +0 -20
- package/src/utils/scheduler.ts +0 -98
- package/src/utils/socket.ts +0 -33
- package/src/utils/time.ts +0 -51
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { MEMORY_SECTIONS, type MemorySection } from "../store/types.js";
|
|
2
|
-
|
|
3
|
-
const SECTION_ALIASES: Record<string, MemorySection> = {
|
|
4
|
-
preferences: "Preferences",
|
|
5
|
-
preference: "Preferences",
|
|
6
|
-
prefs: "Preferences",
|
|
7
|
-
pref: "Preferences",
|
|
8
|
-
conventions: "Conventions",
|
|
9
|
-
convention: "Conventions",
|
|
10
|
-
conv: "Conventions",
|
|
11
|
-
findings: "Findings",
|
|
12
|
-
finding: "Findings",
|
|
13
|
-
todos: "Todos",
|
|
14
|
-
todo: "Todos",
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export type ParsedRememberArgs =
|
|
18
|
-
| { section: MemorySection; content: string }
|
|
19
|
-
| { error: string };
|
|
20
|
-
|
|
21
|
-
function normalizeArgs(raw: string | string[]): string {
|
|
22
|
-
return (Array.isArray(raw) ? raw.join(" ") : raw).trim();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function matchSection(token: string): MemorySection | undefined {
|
|
26
|
-
const key = token.toLowerCase();
|
|
27
|
-
if (SECTION_ALIASES[key]) return SECTION_ALIASES[key];
|
|
28
|
-
return MEMORY_SECTIONS.find((section) => section.toLowerCase() === key);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** Parse `/remember [section]? content`. Default section: Findings. */
|
|
32
|
-
export function parseRememberArgs(raw: string | string[]): ParsedRememberArgs {
|
|
33
|
-
const text = normalizeArgs(raw);
|
|
34
|
-
if (!text) {
|
|
35
|
-
return {
|
|
36
|
-
error: "Usage: /remember [Preferences|Conventions|Findings|Todos] <content>",
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const space = text.indexOf(" ");
|
|
41
|
-
const firstToken = space === -1 ? text : text.slice(0, space);
|
|
42
|
-
const section = matchSection(firstToken);
|
|
43
|
-
|
|
44
|
-
if (section) {
|
|
45
|
-
const content = space === -1 ? "" : text.slice(space + 1).trim();
|
|
46
|
-
if (!content) {
|
|
47
|
-
return {
|
|
48
|
-
error: `Usage: /remember ${section} <content>`,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
return { section, content };
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return { section: "Findings", content: text };
|
|
55
|
-
}
|
package/src/commands/remember.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
|
|
3
|
-
import type { MemoryStore } from "../store/memoryStore.js";
|
|
4
|
-
import { parseRememberArgs } from "./parseRememberArgs.js";
|
|
5
|
-
|
|
6
|
-
export type RememberCommandDeps = {
|
|
7
|
-
getMemoryStore(): MemoryStore | null;
|
|
8
|
-
onRemembered?(): Promise<void>;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export function createRememberCommand(deps: RememberCommandDeps) {
|
|
12
|
-
return async (args: string | string[], ctx: ExtensionCommandContext): Promise<void> => {
|
|
13
|
-
const memoryStore = deps.getMemoryStore();
|
|
14
|
-
if (!memoryStore) {
|
|
15
|
-
ctx.ui.notify("pi-memory: not started", "warning");
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const parsed = parseRememberArgs(args);
|
|
20
|
-
if ("error" in parsed) {
|
|
21
|
-
ctx.ui.notify(parsed.error, "warning");
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
await memoryStore.ensureInitialized();
|
|
27
|
-
await memoryStore.appendUser({
|
|
28
|
-
id: "",
|
|
29
|
-
section: parsed.section,
|
|
30
|
-
content: parsed.content,
|
|
31
|
-
timestamp: "",
|
|
32
|
-
});
|
|
33
|
-
await deps.onRemembered?.();
|
|
34
|
-
|
|
35
|
-
ctx.ui.notify(`Saved to MEMORY.md (${parsed.section})`, "info");
|
|
36
|
-
} catch (error) {
|
|
37
|
-
ctx.ui.notify(
|
|
38
|
-
`Remember failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
39
|
-
"warning",
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
}
|
package/src/commands/status.ts
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import type { ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
formatMemoryStatusLines,
|
|
5
|
-
gatherMemoryStatus,
|
|
6
|
-
} from "../cli/status.js";
|
|
7
|
-
import { resolveMemoryAgentDir } from "../config/agentDir.js";
|
|
8
|
-
import { createMemoryStatusWidget, type MemoryStatusWidgetState } from "../ui/memoryStatusWidget.js";
|
|
9
|
-
|
|
10
|
-
import { parseMemoryStatusArgs } from "./parseMemoryStatusArgs.js";
|
|
11
|
-
|
|
12
|
-
export type MemoryStatusCommandDeps = {
|
|
13
|
-
getAgentDir(): string | null;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
let memoryStatusWidgetState: MemoryStatusWidgetState | null = null;
|
|
17
|
-
|
|
18
|
-
export function resetMemoryStatusWidgetState(): void {
|
|
19
|
-
memoryStatusWidgetState = null;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function renderMemoryStatusWidget(
|
|
23
|
-
ctx: ExtensionCommandContext,
|
|
24
|
-
state: MemoryStatusWidgetState,
|
|
25
|
-
): void {
|
|
26
|
-
ctx.ui.setWidget("pi-memory-status", (tui, theme) => createMemoryStatusWidget(tui, theme, state), {
|
|
27
|
-
placement: "aboveEditor",
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function applyMemoryStatusAction(
|
|
32
|
-
action: ReturnType<typeof parseMemoryStatusArgs>,
|
|
33
|
-
refreshed: boolean,
|
|
34
|
-
): void {
|
|
35
|
-
if (!memoryStatusWidgetState) return;
|
|
36
|
-
|
|
37
|
-
if (action === "expand") {
|
|
38
|
-
memoryStatusWidgetState.expanded = true;
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (action === "collapse") {
|
|
42
|
-
memoryStatusWidgetState.expanded = false;
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
if (action === "toggle" && !refreshed) {
|
|
46
|
-
memoryStatusWidgetState.expanded = !memoryStatusWidgetState.expanded;
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
if (action === "toggle" && refreshed) {
|
|
50
|
-
memoryStatusWidgetState.expanded = false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export function createMemoryStatusCommand(deps: MemoryStatusCommandDeps) {
|
|
55
|
-
return async (args: string | string[], ctx: ExtensionCommandContext): Promise<void> => {
|
|
56
|
-
const action = parseMemoryStatusArgs(args);
|
|
57
|
-
|
|
58
|
-
if (action === "hide") {
|
|
59
|
-
memoryStatusWidgetState = null;
|
|
60
|
-
if (ctx.hasUI) {
|
|
61
|
-
ctx.ui.setWidget("pi-memory-status", undefined);
|
|
62
|
-
}
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const agentDir = deps.getAgentDir() ?? resolveMemoryAgentDir();
|
|
67
|
-
|
|
68
|
-
const needsFetch = action === "refresh" || !memoryStatusWidgetState;
|
|
69
|
-
|
|
70
|
-
if (needsFetch) {
|
|
71
|
-
if (ctx.hasUI) {
|
|
72
|
-
ctx.ui.setWorkingMessage("Checking memory…");
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
const report = await gatherMemoryStatus(agentDir);
|
|
77
|
-
memoryStatusWidgetState = {
|
|
78
|
-
report,
|
|
79
|
-
expanded: memoryStatusWidgetState?.expanded ?? false,
|
|
80
|
-
};
|
|
81
|
-
} catch (error) {
|
|
82
|
-
ctx.ui.notify(
|
|
83
|
-
`Memory status failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
84
|
-
"warning",
|
|
85
|
-
);
|
|
86
|
-
return;
|
|
87
|
-
} finally {
|
|
88
|
-
if (ctx.hasUI) {
|
|
89
|
-
ctx.ui.setWorkingMessage();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
applyMemoryStatusAction(action, needsFetch);
|
|
95
|
-
|
|
96
|
-
if (ctx.hasUI) {
|
|
97
|
-
renderMemoryStatusWidget(ctx, memoryStatusWidgetState!);
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const lines = ["pi-memory status", ...formatMemoryStatusLines(memoryStatusWidgetState!.report)];
|
|
102
|
-
ctx.ui.notify(lines.join("\n"), "info");
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export function getMemoryStatusWidgetStateForTest(): MemoryStatusWidgetState | null {
|
|
107
|
-
return memoryStatusWidgetState;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export function setMemoryStatusWidgetStateForTest(state: MemoryStatusWidgetState | null): void {
|
|
111
|
-
memoryStatusWidgetState = state;
|
|
112
|
-
}
|
package/src/commands/types.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { MemoryStore } from "../store/memoryStore.js";
|
|
2
|
-
|
|
3
|
-
export type RememberCommandDeps = {
|
|
4
|
-
getMemoryStore(): MemoryStore | null;
|
|
5
|
-
onRemembered?(): Promise<void>;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
export type MemoryStatusCommandDeps = {
|
|
9
|
-
getAgentDir(): string | null;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export type CommandDeps = RememberCommandDeps & MemoryStatusCommandDeps;
|
package/src/compact/index.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { parseMemoryExport, hasMemoryExportSection } from "./parseMemoryExport.js";
|
|
2
|
-
export { buildCompactionSummaryPrompt, DUAL_PURPOSE_SUMMARY_TEMPLATE } from "./summaryPrompt.js";
|
|
3
|
-
export { runDualPurposeCompactionSummary } from "./runSummary.js";
|
|
4
|
-
export { registerCompactHandlers, type CompactHandlerDeps } from "./register.js";
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { parseMemoryMarkdown } from "../store/markdown/parse.js";
|
|
2
|
-
import { MEMORY_SECTIONS, type MemorySection, type StoreMemoryEntry } from "../store/types.js";
|
|
3
|
-
|
|
4
|
-
const MEMORY_EXPORT_HEADER_RE = /^##\s+Memory Export\s*$/im;
|
|
5
|
-
|
|
6
|
-
function extractMemoryExportBlock(summary: string): string {
|
|
7
|
-
const match = MEMORY_EXPORT_HEADER_RE.exec(summary);
|
|
8
|
-
if (!match) return "";
|
|
9
|
-
|
|
10
|
-
let body = summary.slice(match.index + match[0].length);
|
|
11
|
-
const nextTopLevel = body.search(/^##\s+(?!#)/m);
|
|
12
|
-
if (nextTopLevel >= 0) {
|
|
13
|
-
body = body.slice(0, nextTopLevel);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return body.trim();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/** Normalize ### Section headers to ## for shared markdown parser. */
|
|
20
|
-
function normalizeExportMarkdown(exportBody: string): string {
|
|
21
|
-
const lines = exportBody.split("\n");
|
|
22
|
-
const normalized: string[] = [];
|
|
23
|
-
|
|
24
|
-
for (const line of lines) {
|
|
25
|
-
const subsection = line.match(/^###\s+(Preferences|Conventions|Findings|Todos)\s*$/);
|
|
26
|
-
if (subsection) {
|
|
27
|
-
normalized.push(`## ${subsection[1]}`);
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
normalized.push(line);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return normalized.join("\n");
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function parseExportBullets(exportBody: string): StoreMemoryEntry[] {
|
|
37
|
-
const normalized = normalizeExportMarkdown(exportBody);
|
|
38
|
-
if (!normalized.trim()) return [];
|
|
39
|
-
|
|
40
|
-
const parsed = parseMemoryMarkdown(normalized, "memory-export");
|
|
41
|
-
return parsed.map((entry) => ({
|
|
42
|
-
id: "",
|
|
43
|
-
section: entry.section,
|
|
44
|
-
content: entry.content,
|
|
45
|
-
timestamp: "",
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/** Parse durable facts from the ## Memory Export section of a dual-purpose summary. */
|
|
50
|
-
export function parseMemoryExport(summary: string): StoreMemoryEntry[] {
|
|
51
|
-
const exportBody = extractMemoryExportBlock(summary);
|
|
52
|
-
if (!exportBody) return [];
|
|
53
|
-
|
|
54
|
-
const entries = parseExportBullets(exportBody);
|
|
55
|
-
const seen = new Set<string>();
|
|
56
|
-
|
|
57
|
-
return entries.filter((entry) => {
|
|
58
|
-
const key = `${entry.section}\0${entry.content.trim()}`;
|
|
59
|
-
if (seen.has(key)) return false;
|
|
60
|
-
seen.add(key);
|
|
61
|
-
return entry.content.trim().length > 0;
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export function hasMemoryExportSection(summary: string): boolean {
|
|
66
|
-
return MEMORY_EXPORT_HEADER_RE.test(summary);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function isKnownExportSection(name: string): name is MemorySection {
|
|
70
|
-
return (MEMORY_SECTIONS as readonly string[]).includes(name);
|
|
71
|
-
}
|
package/src/compact/register.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
|
|
3
|
-
import type { LlmClient } from "../adapters/llm/types.js";
|
|
4
|
-
import { isSubagentSession } from "../preflight/session.js";
|
|
5
|
-
import type { MemoryStore } from "../store/memoryStore.js";
|
|
6
|
-
import { runDualPurposeCompactionSummary } from "./runSummary.js";
|
|
7
|
-
|
|
8
|
-
export type CompactHandlerDeps = {
|
|
9
|
-
getMemoryStore(): MemoryStore | null;
|
|
10
|
-
getLlmClient(): LlmClient | null;
|
|
11
|
-
onCompactionIngested?(): Promise<void>;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export function registerCompactHandlers(pi: ExtensionAPI, deps: CompactHandlerDeps): void {
|
|
15
|
-
pi.on("session_before_compact", async (event, ctx) => {
|
|
16
|
-
const llm = deps.getLlmClient();
|
|
17
|
-
if (!llm) return;
|
|
18
|
-
|
|
19
|
-
const { preparation, signal } = event;
|
|
20
|
-
const workingUi = ctx.hasUI
|
|
21
|
-
? {
|
|
22
|
-
show: () => ctx.ui.setWorkingMessage("Summarizing for memory…"),
|
|
23
|
-
clear: () => ctx.ui.setWorkingMessage(),
|
|
24
|
-
}
|
|
25
|
-
: null;
|
|
26
|
-
|
|
27
|
-
try {
|
|
28
|
-
workingUi?.show();
|
|
29
|
-
const summary = await runDualPurposeCompactionSummary(preparation, llm, signal);
|
|
30
|
-
if (!summary) return;
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
compaction: {
|
|
34
|
-
summary,
|
|
35
|
-
firstKeptEntryId: preparation.firstKeptEntryId,
|
|
36
|
-
tokensBefore: preparation.tokensBefore,
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
} catch {
|
|
40
|
-
return;
|
|
41
|
-
} finally {
|
|
42
|
-
workingUi?.clear();
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
pi.on("session_compact", (event, ctx) => {
|
|
47
|
-
const store = deps.getMemoryStore();
|
|
48
|
-
if (!store) return;
|
|
49
|
-
|
|
50
|
-
store.appendFromCompaction({
|
|
51
|
-
compactionId: event.compactionEntry.id,
|
|
52
|
-
summary: event.compactionEntry.summary,
|
|
53
|
-
subagent: isSubagentSession(ctx),
|
|
54
|
-
onComplete: () => deps.onCompactionIngested?.(),
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
2
|
-
import type { SessionBeforeCompactEvent } from "@earendil-works/pi-coding-agent";
|
|
3
|
-
import { convertToLlm, serializeConversation } from "@earendil-works/pi-coding-agent";
|
|
4
|
-
|
|
5
|
-
import type { LlmClient } from "../adapters/llm/types.js";
|
|
6
|
-
import { stripPrivateMemory } from "../preflight/strip.js";
|
|
7
|
-
import { buildCompactionSummaryPrompt } from "./summaryPrompt.js";
|
|
8
|
-
|
|
9
|
-
type CompactionPreparation = SessionBeforeCompactEvent["preparation"];
|
|
10
|
-
|
|
11
|
-
function stripPrivateMemoryFromMessages(messages: AgentMessage[]): AgentMessage[] {
|
|
12
|
-
return messages.map((message) => {
|
|
13
|
-
if (message.role !== "user") return message;
|
|
14
|
-
if (typeof message.content === "string") {
|
|
15
|
-
return { ...message, content: stripPrivateMemory(message.content) };
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
...message,
|
|
19
|
-
content: message.content.map((block) =>
|
|
20
|
-
block.type === "text"
|
|
21
|
-
? { ...block, text: stripPrivateMemory(block.text) }
|
|
22
|
-
: block,
|
|
23
|
-
),
|
|
24
|
-
} as AgentMessage;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export async function runDualPurposeCompactionSummary(
|
|
29
|
-
preparation: CompactionPreparation,
|
|
30
|
-
llm: LlmClient,
|
|
31
|
-
signal?: AbortSignal,
|
|
32
|
-
): Promise<string | null> {
|
|
33
|
-
const allMessages = stripPrivateMemoryFromMessages([
|
|
34
|
-
...preparation.messagesToSummarize,
|
|
35
|
-
...preparation.turnPrefixMessages,
|
|
36
|
-
]);
|
|
37
|
-
|
|
38
|
-
const conversationText = serializeConversation(convertToLlm(allMessages));
|
|
39
|
-
const prompt = buildCompactionSummaryPrompt(conversationText, preparation.previousSummary);
|
|
40
|
-
const summary = await llm.complete(prompt, signal);
|
|
41
|
-
return summary.trim() || null;
|
|
42
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { ParsedEntry, StoreMemoryEntry } from "../store/types.js";
|
|
2
|
-
|
|
3
|
-
function entryKey(entry: { section: string; content: string }): string {
|
|
4
|
-
return `${entry.section}\0${entry.content.trim()}`;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
/** Keep only Memory Export facts not already present in MEMORY (parent/root dedup). */
|
|
8
|
-
export function filterCompactionDelta(
|
|
9
|
-
entries: StoreMemoryEntry[],
|
|
10
|
-
existing: ParsedEntry[],
|
|
11
|
-
): StoreMemoryEntry[] {
|
|
12
|
-
const known = new Set(existing.map(entryKey));
|
|
13
|
-
return entries.filter((entry) => !known.has(entryKey(entry)));
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/** Subagent clone: summary had export bullets but nothing new vs parent memory. */
|
|
17
|
-
export function shouldSkipSubagentCompactionIngest(
|
|
18
|
-
parsed: StoreMemoryEntry[],
|
|
19
|
-
delta: StoreMemoryEntry[],
|
|
20
|
-
): boolean {
|
|
21
|
-
return parsed.length > 0 && delta.length === 0;
|
|
22
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
export const DUAL_PURPOSE_SUMMARY_TEMPLATE = `## Session Context
|
|
2
|
-
<!-- Goal / Progress / Next Actions / key file changes for continuing THIS session -->
|
|
3
|
-
|
|
4
|
-
## Memory Export
|
|
5
|
-
<!-- Cross-session durable facts only; omit this entire section if nothing worth keeping -->
|
|
6
|
-
|
|
7
|
-
### Preferences
|
|
8
|
-
|
|
9
|
-
### Conventions
|
|
10
|
-
|
|
11
|
-
### Findings
|
|
12
|
-
|
|
13
|
-
### Todos
|
|
14
|
-
`;
|
|
15
|
-
|
|
16
|
-
export function buildCompactionSummaryPrompt(
|
|
17
|
-
conversationText: string,
|
|
18
|
-
previousSummary?: string,
|
|
19
|
-
): string {
|
|
20
|
-
const previousContext = previousSummary
|
|
21
|
-
? `\n\nPrevious compaction summary for context:\n${previousSummary.trim()}`
|
|
22
|
-
: "";
|
|
23
|
-
|
|
24
|
-
return `You are summarizing a coding-agent conversation for two purposes at once.
|
|
25
|
-
|
|
26
|
-
1. **Session Context** — everything needed to continue THIS session after context compaction.
|
|
27
|
-
2. **Memory Export** — only durable facts that should persist across NEW sessions (preferences, conventions, findings, todos).
|
|
28
|
-
|
|
29
|
-
Rules:
|
|
30
|
-
- Output markdown ONLY, following the exact section structure below.
|
|
31
|
-
- Session Context: goals, progress, decisions, blockers, next actions, important file paths.
|
|
32
|
-
- Memory Export: bullet lists under ### Preferences / Conventions / Findings / Todos.
|
|
33
|
-
- Each Memory Export bullet is one standalone fact (no pronouns like "we" without context).
|
|
34
|
-
- Skip Memory Export subsections that have nothing new; omit the whole Memory Export section if empty.
|
|
35
|
-
- Do NOT include <private_memory> blocks or ephemeral tool noise in Memory Export.
|
|
36
|
-
${previousContext}
|
|
37
|
-
|
|
38
|
-
Required format:
|
|
39
|
-
|
|
40
|
-
${DUAL_PURPOSE_SUMMARY_TEMPLATE}
|
|
41
|
-
|
|
42
|
-
<conversation>
|
|
43
|
-
${conversationText}
|
|
44
|
-
</conversation>`;
|
|
45
|
-
}
|
package/src/config/agentDir.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { defaultMemoryAgentDir, expandHomePath } from "../utils/paths.js";
|
|
2
|
-
import { readPiMemoryEnv } from "./env.js";
|
|
3
|
-
|
|
4
|
-
export type ResolveMemoryAgentDirOptions = {
|
|
5
|
-
env?: NodeJS.ProcessEnv;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Memory data root: `PI_MEMORY_AGENT_DIR` when set, otherwise ~/.pi/pi-memory-data.
|
|
10
|
-
* All MEMORY.md, sidecar socket, and `memory.vec.sqlite` live under this path.
|
|
11
|
-
*/
|
|
12
|
-
export function resolveMemoryAgentDir(options: ResolveMemoryAgentDirOptions = {}): string {
|
|
13
|
-
const env = options.env ?? process.env;
|
|
14
|
-
const fromEnv = readPiMemoryEnv(env).agentDir?.trim();
|
|
15
|
-
if (fromEnv) return expandHomePath(fromEnv);
|
|
16
|
-
return defaultMemoryAgentDir();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/** CLI: explicit flag, then `resolveMemoryAgentDir`. */
|
|
20
|
-
export function resolveAgentDirFromEnv(explicit?: string, env = process.env): string {
|
|
21
|
-
const fromArg = explicit?.trim();
|
|
22
|
-
if (fromArg) return expandHomePath(fromArg);
|
|
23
|
-
return resolveMemoryAgentDir({ env });
|
|
24
|
-
}
|
package/src/config/chunking.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CHUNKING_DISABLED_MAX_CHARS,
|
|
3
|
-
DEFAULT_CHUNK_MAX_CHARS,
|
|
4
|
-
MAX_CHUNK_MAX_CHARS,
|
|
5
|
-
MIN_CHUNK_MAX_CHARS,
|
|
6
|
-
} from "../constants/chunking.js";
|
|
7
|
-
import { ENV_KEYS } from "../constants/env.js";
|
|
8
|
-
|
|
9
|
-
export type ChunkingConfig = {
|
|
10
|
-
/** Max chars per chunk body; <=0 keeps one chunk per entry. */
|
|
11
|
-
maxChars: number;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
function parseOptionalInt(raw: string | undefined): number | undefined {
|
|
15
|
-
if (!raw?.trim()) return undefined;
|
|
16
|
-
const value = Number.parseInt(raw, 10);
|
|
17
|
-
return Number.isFinite(value) ? value : undefined;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function readChunkingConfig(env: NodeJS.ProcessEnv = process.env): ChunkingConfig {
|
|
21
|
-
const raw = parseOptionalInt(env[ENV_KEYS.CHUNK_MAX_CHARS]);
|
|
22
|
-
const maxChars = raw ?? DEFAULT_CHUNK_MAX_CHARS;
|
|
23
|
-
|
|
24
|
-
if (maxChars <= CHUNKING_DISABLED_MAX_CHARS) {
|
|
25
|
-
return { maxChars: CHUNKING_DISABLED_MAX_CHARS };
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return {
|
|
29
|
-
maxChars: Math.min(MAX_CHUNK_MAX_CHARS, Math.max(MIN_CHUNK_MAX_CHARS, maxChars)),
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export {
|
|
34
|
-
CHUNKING_DISABLED_MAX_CHARS,
|
|
35
|
-
DEFAULT_CHUNK_MAX_CHARS,
|
|
36
|
-
} from "../constants/chunking.js";
|
package/src/config/env.ts
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import type { EmbedderProvider } from "../constants/env.js";
|
|
2
|
-
import {
|
|
3
|
-
DEFAULT_EMBEDDER,
|
|
4
|
-
DEFAULT_EMBED_DIM_FALLBACK,
|
|
5
|
-
DEFAULT_HASH_EMBED_DIM,
|
|
6
|
-
DEFAULT_HELPER_MODEL_SPEC,
|
|
7
|
-
DEFAULT_OLLAMA_BASE_URL,
|
|
8
|
-
DEFAULT_OLLAMA_EMBED_MODEL,
|
|
9
|
-
DEFAULT_OPENAI_EMBED_MODEL,
|
|
10
|
-
ENV_KEYS,
|
|
11
|
-
FALLBACK_OPENAI_API_KEY_ENV,
|
|
12
|
-
KNOWN_EMBED_DIMS,
|
|
13
|
-
} from "../constants/env.js";
|
|
14
|
-
import {
|
|
15
|
-
DEFAULT_CONSOLIDATE_DEBOUNCE_MS,
|
|
16
|
-
DEFAULT_HTTP_TIMEOUT_MS,
|
|
17
|
-
DEFAULT_PREFLIGHT_BUDGET_MS,
|
|
18
|
-
DEFAULT_REINDEX_DEBOUNCE_MS,
|
|
19
|
-
} from "../constants/timing.js";
|
|
20
|
-
import { resolvePreflightBudget } from "./preflightBudget.js";
|
|
21
|
-
|
|
22
|
-
export type PiMemoryEnv = {
|
|
23
|
-
embedder: EmbedderProvider;
|
|
24
|
-
openaiApiKey?: string;
|
|
25
|
-
openaiEmbedModel: string;
|
|
26
|
-
ollamaBaseUrl: string;
|
|
27
|
-
ollamaEmbedModel: string;
|
|
28
|
-
ollamaLlmBaseUrl: string;
|
|
29
|
-
ollamaLlmModel?: string;
|
|
30
|
-
helperModel: string;
|
|
31
|
-
helperApiKey?: string;
|
|
32
|
-
openaiCompatBaseUrl?: string;
|
|
33
|
-
openaiCompatModel?: string;
|
|
34
|
-
openaiCompatApiKey?: string;
|
|
35
|
-
embedDimOverride?: number;
|
|
36
|
-
httpTimeoutMs: number;
|
|
37
|
-
preflightBudgetMs: number;
|
|
38
|
-
reindexDebounceMs: number;
|
|
39
|
-
consolidateDebounceMs: number;
|
|
40
|
-
agentDir?: string;
|
|
41
|
-
envFile?: string;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
function parseEmbedder(value: string | undefined): EmbedderProvider {
|
|
45
|
-
if (value === "openai" || value === "ollama" || value === "hash") return value;
|
|
46
|
-
return DEFAULT_EMBEDDER;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/** Read pi-memory env from process.env (after optional loadEnv). */
|
|
50
|
-
export function readPiMemoryEnv(env: NodeJS.ProcessEnv = process.env): PiMemoryEnv {
|
|
51
|
-
const embedDimRaw = env[ENV_KEYS.EMBED_DIM]?.trim();
|
|
52
|
-
const embedDimOverride = embedDimRaw ? Number.parseInt(embedDimRaw, 10) : undefined;
|
|
53
|
-
|
|
54
|
-
return {
|
|
55
|
-
embedder: parseEmbedder(env[ENV_KEYS.EMBEDDER]),
|
|
56
|
-
openaiApiKey: env[ENV_KEYS.OPENAI_API_KEY] ?? env[FALLBACK_OPENAI_API_KEY_ENV],
|
|
57
|
-
openaiEmbedModel: env[ENV_KEYS.OPENAI_EMBED_MODEL] ?? DEFAULT_OPENAI_EMBED_MODEL,
|
|
58
|
-
ollamaBaseUrl: env[ENV_KEYS.OLLAMA_BASE_URL] ?? DEFAULT_OLLAMA_BASE_URL,
|
|
59
|
-
ollamaEmbedModel: env[ENV_KEYS.OLLAMA_EMBED_MODEL] ?? DEFAULT_OLLAMA_EMBED_MODEL,
|
|
60
|
-
ollamaLlmBaseUrl:
|
|
61
|
-
env[ENV_KEYS.OLLAMA_LLM_BASE_URL] ?? env[ENV_KEYS.OLLAMA_BASE_URL] ?? DEFAULT_OLLAMA_BASE_URL,
|
|
62
|
-
ollamaLlmModel: env[ENV_KEYS.OLLAMA_LLM_MODEL]?.trim() || undefined,
|
|
63
|
-
helperModel: env[ENV_KEYS.HELPER_MODEL] ?? DEFAULT_HELPER_MODEL_SPEC,
|
|
64
|
-
helperApiKey: env[ENV_KEYS.HELPER_API_KEY]?.trim() || undefined,
|
|
65
|
-
openaiCompatBaseUrl: env[ENV_KEYS.OPENAI_COMPAT_BASE_URL]?.trim() || undefined,
|
|
66
|
-
openaiCompatModel: env[ENV_KEYS.OPENAI_COMPAT_MODEL]?.trim() || undefined,
|
|
67
|
-
openaiCompatApiKey: env[ENV_KEYS.OPENAI_COMPAT_API_KEY]?.trim() || undefined,
|
|
68
|
-
embedDimOverride: Number.isFinite(embedDimOverride) ? embedDimOverride : undefined,
|
|
69
|
-
httpTimeoutMs: Number.parseInt(env[ENV_KEYS.HTTP_TIMEOUT_MS] ?? String(DEFAULT_HTTP_TIMEOUT_MS), 10),
|
|
70
|
-
preflightBudgetMs: resolvePreflightBudget(
|
|
71
|
-
Number.parseInt(
|
|
72
|
-
env[ENV_KEYS.PREFLIGHT_BUDGET_MS] ??
|
|
73
|
-
env[ENV_KEYS.PREFLIGHT_TIMEOUT_MS] ??
|
|
74
|
-
String(DEFAULT_PREFLIGHT_BUDGET_MS),
|
|
75
|
-
10,
|
|
76
|
-
),
|
|
77
|
-
).totalMs,
|
|
78
|
-
reindexDebounceMs: Number.parseInt(
|
|
79
|
-
env[ENV_KEYS.REINDEX_DEBOUNCE_MS] ?? String(DEFAULT_REINDEX_DEBOUNCE_MS),
|
|
80
|
-
10,
|
|
81
|
-
),
|
|
82
|
-
consolidateDebounceMs: Number.parseInt(
|
|
83
|
-
env[ENV_KEYS.CONSOLIDATE_DEBOUNCE_MS] ?? String(DEFAULT_CONSOLIDATE_DEBOUNCE_MS),
|
|
84
|
-
10,
|
|
85
|
-
),
|
|
86
|
-
agentDir: env[ENV_KEYS.AGENT_DIR]?.trim() || undefined,
|
|
87
|
-
envFile: env[ENV_KEYS.ENV_FILE],
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export function resolveEmbedDim(model: string, override?: number): number {
|
|
92
|
-
if (override !== undefined) return override;
|
|
93
|
-
return KNOWN_EMBED_DIMS[model] ?? DEFAULT_EMBED_DIM_FALLBACK;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export type { EmbedderProvider } from "../constants/env.js";
|
|
97
|
-
export { KNOWN_EMBED_DIMS, DEFAULT_HASH_EMBED_DIM } from "../constants/env.js";
|
package/src/config/index.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { KNOWN_EMBED_DIMS, readPiMemoryEnv, resolveEmbedDim, type EmbedderProvider, type PiMemoryEnv } from "./env.js";
|
|
2
|
-
export { readRetrievalConfig, type RetrievalConfig } from "./retrieval.js";
|
|
3
|
-
export { readChunkingConfig, type ChunkingConfig } from "./chunking.js";
|
|
4
|
-
export { resolvePreflightBudget, type PreflightBudget } from "./preflightBudget.js";
|
|
5
|
-
export { readPreflightRuntimeConfig, type PreflightRuntimeConfig } from "./preflight.js";
|
|
6
|
-
export { resolveAgentDirFromEnv, resolveMemoryAgentDir, type ResolveMemoryAgentDirOptions } from "./agentDir.js";
|
|
7
|
-
export { loadEnv } from "./loadEnv.js";
|
package/src/config/loadEnv.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { config } from "dotenv";
|
|
2
|
-
|
|
3
|
-
import { defaultPiMemoryEnvFile } from "../utils/paths.js";
|
|
4
|
-
import { joinPath, pathExists } from "../utils/fs.js";
|
|
5
|
-
import { readPiMemoryEnv } from "./env.js";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Load pi-memory env into process.env (does not override existing vars).
|
|
9
|
-
*
|
|
10
|
-
* Search order:
|
|
11
|
-
* 1. PI_MEMORY_ENV_FILE (explicit override)
|
|
12
|
-
* 2. cwd `.env` / `.env.local` (project-local dev)
|
|
13
|
-
* 3. ~/.pi/agent/pi-memory.env (recommended)
|
|
14
|
-
*/
|
|
15
|
-
export function loadEnv(cwd = process.cwd()): void {
|
|
16
|
-
const paths: string[] = [];
|
|
17
|
-
const explicit = readPiMemoryEnv(process.env).envFile;
|
|
18
|
-
if (explicit) paths.push(explicit);
|
|
19
|
-
|
|
20
|
-
paths.push(joinPath(cwd, ".env"), joinPath(cwd, ".env.local"), defaultPiMemoryEnvFile());
|
|
21
|
-
|
|
22
|
-
for (const path of paths) {
|
|
23
|
-
if (!path || !pathExists(path)) continue;
|
|
24
|
-
config({ path, override: false, quiet: true });
|
|
25
|
-
}
|
|
26
|
-
}
|