@vellumai/assistant 0.10.3-dev.202606300531.247eff8 → 0.10.3-dev.202606300917.a9da5f8
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/eslint-rules/cli-no-daemon-internals.js +4 -3
- package/package.json +1 -1
- package/scripts/generate-openapi.ts +80 -58
- package/src/__tests__/activation-early-marking.test.ts +1 -1
- package/src/__tests__/anthropic-provider.test.ts +48 -0
- package/src/__tests__/auto-analysis-end-to-end.test.ts +1 -1
- package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +2 -2
- package/src/__tests__/context-search-agent-protocol.test.ts +2 -2
- package/src/__tests__/context-search-agent-runner.test.ts +2 -2
- package/src/__tests__/context-search-conversations-source.test.ts +2 -2
- package/src/__tests__/context-search-fanout.test.ts +3 -3
- package/src/__tests__/context-search-memory-source.test.ts +7 -6
- package/src/__tests__/context-search-memory-v2-source.test.ts +7 -7
- package/src/__tests__/context-search-types.test.ts +2 -2
- package/src/__tests__/context-search-workspace-source.test.ts +2 -2
- package/src/__tests__/conversation-agent-loop.test.ts +1 -1
- package/src/__tests__/conversation-fork-crud.test.ts +10 -10
- package/src/__tests__/conversation-fork-retrospective.test.ts +4 -4
- package/src/__tests__/conversation-runtime-assembly.test.ts +3 -3
- package/src/__tests__/conversation-surfaces-activation-emit.test.ts +4 -4
- package/src/__tests__/conversation-workspace-cache-state.test.ts +1 -1
- package/src/__tests__/conversation-workspace-injection.test.ts +1 -1
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +1 -1
- package/src/__tests__/conversations-import-system-filter.test.ts +1 -1
- package/src/__tests__/file-write-tool.test.ts +3 -3
- package/src/__tests__/get-skill-detail-audit.test.ts +1 -1
- package/src/__tests__/graph-extraction-event-date.test.ts +1 -1
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +1 -1
- package/src/__tests__/init-feature-flag-overrides.test.ts +1 -4
- package/src/__tests__/injection-block.test.ts +5 -2
- package/src/__tests__/injector-chain.test.ts +1 -1
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +2 -2
- package/src/__tests__/injector-v3-suppression.test.ts +3 -3
- package/src/__tests__/install-skill-routing.test.ts +1 -1
- package/src/__tests__/lifecycle-memory-v2-seed.test.ts +5 -5
- package/src/__tests__/list-messages-hidden-metadata.test.ts +4 -4
- package/src/__tests__/managed-skill-lifecycle.test.ts +2 -2
- package/src/__tests__/memory-jobs-worker-lanes.test.ts +2 -2
- package/src/__tests__/memory-recall-log-store.test.ts +4 -4
- package/src/__tests__/memory-retrieval-budget.test.ts +1 -1
- package/src/__tests__/memory-retrieval-hook.test.ts +2 -2
- package/src/__tests__/memory-upsert-concurrency.test.ts +1 -1
- package/src/__tests__/mock-gateway-ipc.ts +1 -1
- package/src/__tests__/outbound-slack-persistence.test.ts +1 -1
- package/src/__tests__/persistence-layering-guard.test.ts +6 -7
- package/src/__tests__/persistence-secret-redaction.test.ts +1 -1
- package/src/__tests__/pkb-autoinject.test.ts +1 -1
- package/src/__tests__/playbook-execution.test.ts +1 -1
- package/src/__tests__/plugin-config-data-migration.test.ts +14 -14
- package/src/__tests__/plugin-import-boundary-guard.test.ts +72 -36
- package/src/__tests__/processing-flag-persist-failure.test.ts +1 -1
- package/src/__tests__/rebuild-index-graph-nodes.test.ts +1 -1
- package/src/__tests__/search-skills-unified.test.ts +1 -1
- package/src/__tests__/skills-file-content-endpoint.test.ts +1 -1
- package/src/__tests__/skills-files-catalog-fallback.test.ts +1 -1
- package/src/__tests__/slim-skill-category.test.ts +1 -1
- package/src/__tests__/strip-memory-injections.test.ts +2 -2
- package/src/__tests__/task-memory-cleanup.test.ts +4 -4
- package/src/__tests__/tool-preview-lifecycle.test.ts +7 -4
- package/src/__tests__/workspace-migration-117-normalize-stale-lean-memory-v3-defaults.test.ts +221 -0
- package/src/acp/__tests__/session-manager-persistence.test.ts +3 -3
- package/src/acp/__tests__/session-manager-startup.test.ts +1 -1
- package/src/cli/commands/__tests__/conversations-new.test.ts +186 -0
- package/src/cli/commands/conversations.ts +46 -28
- package/src/cli/commands/memory/__tests__/memory-v2-compare-render.test.ts +1 -1
- package/src/cli/commands/memory/memory-retrospective.ts +32 -28
- package/src/cli/commands/memory/memory-v2-compare-render.ts +1 -1
- package/src/cli/commands/memory/memory-v2.ts +2 -2
- package/src/cli/commands/memory/memory-v3.ts +2 -2
- package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +1 -1
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +1 -1
- package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +5 -2
- package/src/config/bundled-skills/playbooks/tools/playbook-delete.ts +4 -1
- package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +4 -1
- package/src/config/bundled-skills/settings/tools/voice-config-update.ts +7 -7
- package/src/config/schemas/__tests__/memory-v3.test.ts +12 -11
- package/src/config/schemas/memory-v3.ts +54 -10
- package/src/context/strip-injections.ts +1 -1
- package/src/daemon/__tests__/conversation-lifecycle-auto-analyze.test.ts +16 -13
- package/src/daemon/__tests__/embedding-reconcile.test.ts +1 -1
- package/src/daemon/__tests__/inference-profile-notification.test.ts +7 -4
- package/src/daemon/__tests__/memory-v2-startup.test.ts +2 -2
- package/src/daemon/conversation-agent-loop-handlers.ts +3 -3
- package/src/daemon/conversation-agent-loop.ts +2 -2
- package/src/daemon/conversation-lifecycle.ts +1 -1
- package/src/daemon/conversation-runtime-assembly.ts +9 -6
- package/src/daemon/conversation-surfaces.ts +1 -1
- package/src/daemon/conversation.ts +5 -2
- package/src/daemon/embedding-reconcile.ts +4 -4
- package/src/daemon/handlers/skills.ts +1 -1
- package/src/daemon/lifecycle.ts +5 -5
- package/src/daemon/memory-v2-startup.test.ts +2 -2
- package/src/daemon/memory-v2-startup.ts +11 -10
- package/src/daemon/skill-memory-refresh.ts +1 -1
- package/src/daemon/tool-side-effects.ts +3 -3
- package/src/daemon/trust-context.ts +1 -1
- package/src/home/feed-source-enrichment.ts +3 -3
- package/src/home/job-handlers/conversation-starters.ts +15 -15
- package/src/ipc/routes/__tests__/memory-v2-backfill.test.ts +1 -1
- package/src/{memory → jobs}/worker.ts +1 -1
- package/src/permissions/checker.ts +1 -1
- package/src/persistence/attachments-store.ts +1 -1
- package/src/persistence/conversation-crud.ts +27 -27
- package/src/persistence/conversation-queries.ts +1 -1
- package/src/persistence/db-maintenance.ts +1 -1
- package/src/persistence/embeddings/embedding-backend.ts +1 -5
- package/src/{memory → persistence/embeddings}/sparse-tokenize.ts +6 -4
- package/src/persistence/group-crud.ts +1 -1
- package/src/persistence/job-handlers/cleanup.ts +4 -7
- package/src/persistence/jobs-store.ts +1 -1
- package/src/persistence/jobs-worker.ts +2 -2
- package/src/persistence/llm-usage-store.ts +1 -1
- package/src/persistence/steps.ts +1 -1
- package/src/persistence/worker-control.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/__tests__/301-create-watchdog-events.test.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/__tests__/activation-session-store.test.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/__tests__/bookmark-crud.test.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/__tests__/bookmark-schema.test.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/__tests__/clear-stale-processing-flags.test.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/__tests__/compaction-log-store-clickhouse.test.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/__tests__/conversation-queries.test.ts +7 -7
- package/src/{memory → plugins/defaults/memory}/__tests__/conversation-row-batch-delete.test.ts +7 -7
- package/src/{memory → plugins/defaults/memory}/__tests__/conversation-types.test.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/__tests__/db-async-query.test.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/__tests__/db-busy-timeout.test.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/__tests__/db-logs-attach.test.ts +7 -6
- package/src/{memory → plugins/defaults/memory}/__tests__/db-maintenance.test.ts +7 -7
- package/src/{memory → plugins/defaults/memory}/__tests__/db-memory-attach.test.ts +7 -6
- package/src/{memory → plugins/defaults/memory}/__tests__/embedding-cache.test.ts +7 -6
- package/src/{memory → plugins/defaults/memory}/__tests__/find-analysis-conversation.test.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/__tests__/find-most-recent-retrospective-for.test.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/__tests__/fork-message-copy.test.ts +8 -8
- package/src/{memory → plugins/defaults/memory}/__tests__/jobs-store-enqueue-gate.test.ts +17 -13
- package/src/{memory → plugins/defaults/memory}/__tests__/jobs-store-job-classes.test.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/__tests__/jobs-worker-v2-graph-trigger-embed.test.ts +13 -13
- package/src/{memory → plugins/defaults/memory}/__tests__/jobs-worker-v2-schedule.test.ts +11 -9
- package/src/{memory → plugins/defaults/memory}/__tests__/memory-retrospective-enqueue.test.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/__tests__/memory-retrospective-job.test.ts +9 -9
- package/src/{memory → plugins/defaults/memory}/__tests__/memory-retrospective-startup-cleanup.test.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/__tests__/memory-retrospective-state.test.ts +7 -7
- package/src/{memory → plugins/defaults/memory}/__tests__/memory-v2-activation-log-store.test.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/__tests__/memory-v2-concept-frequency.test.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/__tests__/memory-v3-selections-migration.test.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/__tests__/prompt-override.test.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/__tests__/qdrant-client-sentinel.test.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/__tests__/table-relocation.test.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/activation-session-store.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/anisotropy.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/context-search/agent-protocol.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/context-search/agent-runner.ts +4 -3
- package/src/{memory → plugins/defaults/memory}/context-search/search.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/context-search/sources/conversations.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/context-search/sources/memory-v2.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/context-search/sources/memory.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/context-search/types.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/graph/__tests__/conversation-graph-memory-registry.test.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +27 -22
- package/src/{memory → plugins/defaults/memory}/graph/__tests__/handle-remember-v2.test.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/graph/bootstrap.test.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/graph/bootstrap.ts +10 -10
- package/src/{memory → plugins/defaults/memory}/graph/capability-seed.ts +11 -11
- package/src/{memory → plugins/defaults/memory}/graph/consolidation.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/graph/conversation-graph-memory.ts +13 -17
- package/src/{memory → plugins/defaults/memory}/graph/decay.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/graph/extraction-job.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/graph/extraction.ts +13 -14
- package/src/{memory → plugins/defaults/memory}/graph/graph-memory-state-store.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/graph/graph-search.test.ts +14 -11
- package/src/{memory → plugins/defaults/memory}/graph/graph-search.ts +14 -14
- package/src/{memory → plugins/defaults/memory}/graph/image-ref-utils.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/graph/injection.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/graph/narrative.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/graph/pattern-scan.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/graph/retriever.test.ts +8 -8
- package/src/{memory → plugins/defaults/memory}/graph/retriever.ts +8 -7
- package/src/{memory → plugins/defaults/memory}/graph/store.test.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/graph/store.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/graph/tool-handlers.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/graph/tools.ts +1 -1
- package/src/plugins/defaults/memory/hooks/post-compact.ts +1 -1
- package/src/plugins/defaults/memory/hooks/user-prompt-submit.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/indexer.ts +13 -13
- package/src/plugins/defaults/memory/injectors.ts +6 -6
- package/src/{memory → plugins/defaults/memory}/job-handlers/backfill.ts +7 -7
- package/src/{memory → plugins/defaults/memory}/job-handlers/embedding.test.ts +9 -9
- package/src/{memory → plugins/defaults/memory}/job-handlers/embedding.ts +7 -7
- package/src/{memory → plugins/defaults/memory}/job-handlers/index-maintenance.ts +10 -10
- package/src/plugins/defaults/memory/job-handlers.ts +19 -19
- package/src/{memory → plugins/defaults/memory}/jobs/__tests__/embed-concept-page.test.ts +41 -37
- package/src/{memory → plugins/defaults/memory}/jobs/embed-concept-page.ts +11 -11
- package/src/{memory → plugins/defaults/memory}/jobs/embed-pkb-file.test.ts +8 -8
- package/src/{memory → plugins/defaults/memory}/jobs/embed-pkb-file.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/memory-recall-log-store.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/memory-retrospective-enqueue.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/memory-retrospective-fork-boundary.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/memory-retrospective-job.ts +14 -14
- package/src/{memory → plugins/defaults/memory}/memory-retrospective-startup-cleanup.ts +8 -5
- package/src/{memory → plugins/defaults/memory}/memory-retrospective-state.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/memory-retrospective-trigger-check.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/memory-v2-activation-log-store.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/memory-v2-concept-frequency.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/pkb/autoinject.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/pkb/context.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/pkb/pkb-index.test.ts +11 -8
- package/src/{memory → plugins/defaults/memory}/pkb/pkb-index.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/pkb/pkb-reconcile.test.ts +11 -8
- package/src/{memory → plugins/defaults/memory}/pkb/pkb-reconcile.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/pkb/pkb-search.test.ts +11 -8
- package/src/{memory → plugins/defaults/memory}/pkb/pkb-search.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/pkb/types.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/rerank-local.ts +5 -5
- package/src/{runtime → plugins/defaults/memory}/routes/__tests__/memory-v2-routes.test.ts +3 -3
- package/src/{runtime → plugins/defaults/memory}/routes/__tests__/memory-v2-simulate-route.test.ts +13 -13
- package/src/{runtime → plugins/defaults/memory}/routes/memory-eval-routes.ts +11 -11
- package/src/{runtime → plugins/defaults/memory}/routes/memory-item-routes.test.ts +19 -12
- package/src/{runtime → plugins/defaults/memory}/routes/memory-item-routes.ts +23 -24
- package/src/{runtime → plugins/defaults/memory}/routes/memory-v2-routes.ts +26 -26
- package/src/{runtime → plugins/defaults/memory}/routes/memory-v3-routes.ts +10 -7
- package/src/{memory → plugins/defaults/memory}/search/semantic.ts +6 -6
- package/src/{memory → plugins/defaults/memory}/segmenter.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/task-memory-cleanup.ts +2 -2
- package/src/plugins/defaults/memory/tools.test.ts +3 -3
- package/src/plugins/defaults/memory/tools.ts +7 -10
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/activation-store.test.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/activation.test.ts +22 -19
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/backfill-jobs.test.ts +32 -29
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/cli-command-store.test.ts +18 -15
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/consolidation-job.test.ts +7 -7
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/frontmatter-sweep.test.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/harness-compare.test.ts +6 -6
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/harness-oracle.test.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/harness-replay-input.test.ts +6 -6
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/harness-runner.test.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/injection-events.test.ts +7 -7
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/injection.test.ts +25 -21
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/migration.test.ts +9 -8
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/page-index.test.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/prompts-consolidation.test.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/qdrant.test.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/reranker.test.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/router.test.ts +5 -4
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/sim.test.ts +22 -19
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/skill-content.test.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/skill-store.test.ts +24 -21
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/sparse-bm25.test.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/static-context.test.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/v2/__tests__/sweep-job.test.ts +10 -9
- package/src/{memory → plugins/defaults/memory}/v2/activation-store.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/activation.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/backfill-jobs.ts +8 -8
- package/src/{memory → plugins/defaults/memory}/v2/cli-command-store.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/v2/consolidation-job.ts +7 -7
- package/src/{memory → plugins/defaults/memory}/v2/frontmatter-sweep.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/v2/harness/compare.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/harness/oracle.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/harness/replay-input.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/v2/harness/retriever.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/v2/harness/router-retriever.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/v2/injection-events.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/v2/injection.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/v2/migration.ts +7 -6
- package/src/{memory → plugins/defaults/memory}/v2/page-index.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/v2/page-store.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/v2/prompts/consolidation.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/prompts/router.ts +1 -1
- package/src/{memory → plugins/defaults/memory}/v2/qdrant.ts +5 -5
- package/src/{memory → plugins/defaults/memory}/v2/reranker.ts +3 -3
- package/src/{memory → plugins/defaults/memory}/v2/router.ts +8 -7
- package/src/{memory → plugins/defaults/memory}/v2/sim.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/skill-content.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/skill-store.ts +8 -8
- package/src/{memory → plugins/defaults/memory}/v2/sparse-bm25.ts +2 -2
- package/src/{memory → plugins/defaults/memory}/v2/static-context.ts +4 -4
- package/src/{memory → plugins/defaults/memory}/v2/sweep-job.ts +14 -11
- package/src/plugins/defaults/memory/v3/__tests__/candidate-match.test.ts +2 -2
- package/src/plugins/defaults/memory/v3/__tests__/carry-integration.test.ts +8 -11
- package/src/plugins/defaults/memory/v3/__tests__/edge.test.ts +1 -1
- package/src/plugins/defaults/memory/v3/__tests__/injection.test.ts +1 -1
- package/src/plugins/defaults/memory/v3/__tests__/live-integration.test.ts +7 -7
- package/src/plugins/defaults/memory/v3/__tests__/maintain-job.test.ts +1 -1
- package/src/plugins/defaults/memory/v3/__tests__/orchestrate.test.ts +72 -7
- package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +2 -1
- package/src/plugins/defaults/memory/v3/__tests__/render-injection.test.ts +1 -1
- package/src/plugins/defaults/memory/v3/__tests__/selection-log-store.test.ts +2 -0
- package/src/plugins/defaults/memory/v3/__tests__/shadow-integration.test.ts +3 -6
- package/src/plugins/defaults/memory/v3/__tests__/shadow-plugin.test.ts +51 -8
- package/src/plugins/defaults/memory/v3/__tests__/tuning-profile.test.ts +96 -0
- package/src/plugins/defaults/memory/v3/candidate-match.ts +2 -2
- package/src/plugins/defaults/memory/v3/capabilities.ts +2 -5
- package/src/plugins/defaults/memory/v3/card.ts +1 -1
- package/src/plugins/defaults/memory/v3/edge.ts +1 -1
- package/src/plugins/defaults/memory/v3/entity-lane.test.ts +124 -0
- package/src/plugins/defaults/memory/v3/entity-lane.ts +113 -0
- package/src/plugins/defaults/memory/v3/hot-set.test.ts +1 -1
- package/src/plugins/defaults/memory/v3/injector.ts +1 -4
- package/src/plugins/defaults/memory/v3/maintain-job.ts +3 -3
- package/src/plugins/defaults/memory/v3/orchestrate.ts +43 -0
- package/src/plugins/defaults/memory/v3/page-content.ts +2 -5
- package/src/plugins/defaults/memory/v3/pool-select.test.ts +2 -1
- package/src/plugins/defaults/memory/v3/pool-select.ts +1 -1
- package/src/plugins/defaults/memory/v3/prune.test.ts +2 -2
- package/src/plugins/defaults/memory/v3/prune.ts +4 -7
- package/src/plugins/defaults/memory/v3/render-injection.ts +1 -1
- package/src/plugins/defaults/memory/v3/section-needle.ts +20 -5
- package/src/plugins/defaults/memory/v3/selection-log-store.ts +1 -1
- package/src/plugins/defaults/memory/v3/shadow-plugin.ts +57 -16
- package/src/plugins/defaults/memory/v3/tuning-profile.ts +91 -0
- package/src/plugins/defaults/memory/v3/types.ts +4 -1
- package/src/{memory → plugins/defaults/memory}/v3-eval/eval-packets.ts +13 -13
- package/src/plugins/types.ts +1 -1
- package/src/prompts/system-prompt.ts +1 -1
- package/src/providers/__tests__/placeholder-sentinels.test.ts +80 -0
- package/src/providers/anthropic/client.ts +13 -17
- package/src/providers/inference/__tests__/base-url-security.test.ts +1 -1
- package/src/providers/inference/resolve-auth.ts +3 -3
- package/src/providers/placeholder-sentinels.ts +50 -15
- package/src/runtime/__tests__/agent-wake.test.ts +2 -2
- package/src/runtime/__tests__/guardian-vellum-migration.test.ts +7 -5
- package/src/runtime/routes/__tests__/acp-routes.test.ts +2 -2
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +7 -7
- package/src/runtime/routes/__tests__/home-feed-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/ps-routes.test.ts +3 -3
- package/src/runtime/routes/__tests__/retrospective-routes.test.ts +4 -4
- package/src/runtime/routes/acp-routes.test.ts +1 -1
- package/src/runtime/routes/acp-routes.ts +1 -1
- package/src/runtime/routes/consolidation-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +3 -3
- package/src/runtime/routes/conversation-routes.ts +1 -1
- package/src/runtime/routes/conversations-import-routes.ts +1 -1
- package/src/runtime/routes/global-search-routes.ts +1 -1
- package/src/runtime/routes/index.ts +4 -4
- package/src/runtime/routes/retrospective-routes.ts +4 -4
- package/src/runtime/routes/schedule-routes.ts +1 -2
- package/src/runtime/routes/task-routes.ts +18 -29
- package/src/runtime/services/__tests__/auto-analysis-enqueue.test.ts +7 -4
- package/src/runtime/services/analyze-conversation.ts +1 -1
- package/src/runtime/services/auto-analysis-enqueue.ts +1 -1
- package/src/schedule/scheduler.ts +1 -1
- package/src/skills/catalog-install.ts +1 -1
- package/src/skills/managed-store.ts +1 -1
- package/src/tasks/task-runner.ts +1 -1
- package/src/telemetry/turn-trace-store.ts +2 -2
- package/src/telemetry/usage-telemetry-reporter.test.ts +2 -2
- package/src/telemetry/usage-telemetry-reporter.ts +3 -6
- package/src/tools/acp/spawn.test.ts +2 -2
- package/src/tools/browser/cdp-client/cdp-inspect/__tests__/discovery.test.ts +3 -3
- package/src/tools/filesystem/write.ts +2 -2
- package/src/tools/skills/scaffold-managed.ts +1 -1
- package/src/util/__tests__/process-tree.test.ts +4 -4
- package/src/util/process-tree.ts +3 -3
- package/src/workflows/leaf-runner.test.ts +6 -3
- package/src/workflows/leaf-runner.ts +1 -1
- package/src/workspace/migrations/117-normalize-stale-lean-memory-v3-defaults.ts +116 -0
- package/src/workspace/migrations/__tests__/backfill-v3-leaves.test.ts +5 -2
- package/src/workspace/migrations/registry.ts +2 -0
- /package/src/{memory → persistence/embeddings}/__tests__/sparse-tokenize.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/__tests__/fixtures/memory-v2-activation-fixtures.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/__tests__/memory-retrospective-trigger-check.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/anisotropy.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/context-search/__tests__/agent-runner-redaction.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/context-search/format.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/context-search/limits.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/context-search/sources/workspace.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/graph/decay.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/graph/extraction.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/graph/injection.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/graph/scoring.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/graph/scoring.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/graph/serendipity.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/graph/triggers.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/graph/triggers.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/graph/types.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/memory-marker.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/memory-retrospective-constants.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/prompt-override.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/retrieval-budget.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/__tests__/__snapshots__/prompts-router.test.ts.snap +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/__tests__/concept-page-frontmatter-schema.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/__tests__/consolidation-prompt-flag-gating-guard.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/__tests__/edge-index.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/__tests__/harness-metrics.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/__tests__/injected-block-slugs.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/__tests__/page-store.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/__tests__/prompts-router.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/cli-command-content.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/constants.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/edge-index.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/harness/metrics.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/harness/runner.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/harness/trace.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/injected-block-slugs.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/now-text.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/prompts/sweep.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v2/types.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v3-eval/__tests__/eval-packets.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v3-eval/__tests__/eval-tally.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/v3-eval/eval-tally.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/validation.ts +0 -0
|
@@ -54,9 +54,10 @@ const ALLOWED_PREFIXES = {
|
|
|
54
54
|
"../../../util/platform",
|
|
55
55
|
// Memory retrospective — the retrospective CLI runs the fork-based
|
|
56
56
|
// retrospective in-process (no daemon, no IPC), so it imports the
|
|
57
|
-
// job handler directly. Depth-2 for
|
|
58
|
-
|
|
59
|
-
"
|
|
57
|
+
// job handler directly from the default-memory plugin. Depth-2 for
|
|
58
|
+
// commands/memory/ nesting.
|
|
59
|
+
"../../plugins/defaults/memory/memory-retrospective-job",
|
|
60
|
+
"../../../plugins/defaults/memory/memory-retrospective-job",
|
|
60
61
|
// Standalone tool execution — `tools run` executes a single tool
|
|
61
62
|
// in-process from the filesystem (no daemon, no IPC), so it imports the
|
|
62
63
|
// standalone runner directly. Depth-2 for commands/ nesting.
|
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* cd assistant && bun run generate:openapi -- --check # CI: fail if stale
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
-
import { readFileSync } from "node:fs";
|
|
19
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
20
20
|
import { readdir, readFile, writeFile } from "node:fs/promises";
|
|
21
21
|
import { join, resolve } from "node:path";
|
|
22
22
|
|
|
@@ -32,6 +32,7 @@ import { createDocument } from "zod-openapi";
|
|
|
32
32
|
|
|
33
33
|
const ROOT = resolve(import.meta.dir, "..");
|
|
34
34
|
const ROUTES_DIR = join(ROOT, "src/runtime/routes");
|
|
35
|
+
const PLUGIN_DEFAULTS_DIR = join(ROOT, "src/plugins/defaults");
|
|
35
36
|
const OUTPUT_PATH = join(ROOT, "openapi.yaml");
|
|
36
37
|
const PKG_PATH = join(ROOT, "package.json");
|
|
37
38
|
|
|
@@ -147,68 +148,89 @@ function resolveSchemaForDocument(schemaSource: unknown): ContentSchema {
|
|
|
147
148
|
// ---------------------------------------------------------------------------
|
|
148
149
|
|
|
149
150
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
151
|
+
* Directories holding `RouteDefinition` modules: the host `runtime/routes`
|
|
152
|
+
* tree plus every default plugin's `routes/` subdirectory. A default plugin
|
|
153
|
+
* that owns model-facing HTTP/IPC routes defines them under
|
|
154
|
+
* `plugins/defaults/<plugin>/routes/` and the host route aggregator registers
|
|
155
|
+
* them at runtime; the generator scans those dirs too so the spec stays
|
|
156
|
+
* complete no matter which package a route lives in. Sorted for reproducible
|
|
157
|
+
* output (see {@link collectRoutesFromModules}).
|
|
158
|
+
*/
|
|
159
|
+
async function routeModuleDirs(): Promise<string[]> {
|
|
160
|
+
const dirs = [ROUTES_DIR];
|
|
161
|
+
for (const entry of await readdir(PLUGIN_DEFAULTS_DIR, {
|
|
162
|
+
withFileTypes: true,
|
|
163
|
+
})) {
|
|
164
|
+
if (!entry.isDirectory()) continue;
|
|
165
|
+
const routesDir = join(PLUGIN_DEFAULTS_DIR, entry.name, "routes");
|
|
166
|
+
if (existsSync(routesDir)) dirs.push(routesDir);
|
|
167
|
+
}
|
|
168
|
+
return dirs.sort();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Dynamically import every route module under each {@link routeModuleDirs}
|
|
173
|
+
* entry and collect all exported `ROUTES` / `*_ROUTES` arrays. Each route
|
|
174
|
+
* module exports a `RouteDefinition[]`; new modules are picked up without
|
|
175
|
+
* manual updates.
|
|
156
176
|
*/
|
|
157
177
|
async function collectRoutesFromModules(): Promise<RouteEntry[]> {
|
|
158
178
|
const routes: RouteEntry[] = [];
|
|
159
179
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
for (const file of files) {
|
|
182
|
-
const filePath = join(ROUTES_DIR, file);
|
|
183
|
-
let mod: Record<string, unknown>;
|
|
184
|
-
try {
|
|
185
|
-
mod = (await import(filePath)) as Record<string, unknown>;
|
|
186
|
-
} catch (err) {
|
|
187
|
-
console.warn(
|
|
188
|
-
`Warning: could not import ${file}: ${err instanceof Error ? err.message : err}`,
|
|
189
|
-
);
|
|
190
|
-
continue;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// Collect every export whose name is `ROUTES` or ends in `_ROUTES`.
|
|
194
|
-
// A handful of route files (e.g. `channel-route-definitions.ts`,
|
|
195
|
-
// `contact-prompt-routes.ts`) export under domain-prefixed names like
|
|
196
|
-
// `CHANNEL_ROUTES` and `CONTACT_PROMPT_ROUTES` rather than the
|
|
197
|
-
// canonical `ROUTES`. Without this fan-out the only way those routes
|
|
198
|
-
// reached the spec was via the `index.ts` barrel — which is excluded
|
|
199
|
-
// above for reproducibility.
|
|
200
|
-
const exportNames = Object.keys(mod)
|
|
201
|
-
.filter((k) => k === "ROUTES" || k.endsWith("_ROUTES"))
|
|
180
|
+
for (const dir of await routeModuleDirs()) {
|
|
181
|
+
// Skip the `index.ts` barrel: it re-exports every other route module's
|
|
182
|
+
// ROUTES into a single combined array, so importing it would double-count
|
|
183
|
+
// every entry. The duplicate `method:endpoint` keys are deduped later by
|
|
184
|
+
// first-seen, but the surviving entry's `sourceModule` (used to derive
|
|
185
|
+
// OpenAPI `tags`) depends on `readdir` order — which is filesystem
|
|
186
|
+
// dependent and diverges between local sandbox and the CI runner, making
|
|
187
|
+
// the generator non-reproducible. Sort the file list as well so directory
|
|
188
|
+
// entry order can never affect the output.
|
|
189
|
+
const files = (await readdir(dir, { recursive: true }))
|
|
190
|
+
.filter(
|
|
191
|
+
(f) =>
|
|
192
|
+
typeof f === "string" &&
|
|
193
|
+
f.endsWith(".ts") &&
|
|
194
|
+
!f.endsWith(".test.ts") &&
|
|
195
|
+
!f.endsWith(".benchmark.test.ts") &&
|
|
196
|
+
!f.includes("node_modules") &&
|
|
197
|
+
f !== "index.ts" &&
|
|
198
|
+
!f.endsWith("/index.ts"),
|
|
199
|
+
)
|
|
202
200
|
.sort();
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
201
|
+
|
|
202
|
+
for (const file of files) {
|
|
203
|
+
const filePath = join(dir, file);
|
|
204
|
+
let mod: Record<string, unknown>;
|
|
205
|
+
try {
|
|
206
|
+
mod = (await import(filePath)) as Record<string, unknown>;
|
|
207
|
+
} catch (err) {
|
|
208
|
+
console.warn(
|
|
209
|
+
`Warning: could not import ${file}: ${err instanceof Error ? err.message : err}`,
|
|
210
|
+
);
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Collect every export whose name is `ROUTES` or ends in `_ROUTES`.
|
|
215
|
+
// A handful of route files (e.g. `channel-route-definitions.ts`,
|
|
216
|
+
// `contact-prompt-routes.ts`) export under domain-prefixed names like
|
|
217
|
+
// `CHANNEL_ROUTES` and `CONTACT_PROMPT_ROUTES` rather than the
|
|
218
|
+
// canonical `ROUTES`. Without this fan-out the only way those routes
|
|
219
|
+
// reached the spec was via the `index.ts` barrel — which is excluded
|
|
220
|
+
// above for reproducibility.
|
|
221
|
+
const exportNames = Object.keys(mod)
|
|
222
|
+
.filter((k) => k === "ROUTES" || k.endsWith("_ROUTES"))
|
|
223
|
+
.sort();
|
|
224
|
+
for (const name of exportNames) {
|
|
225
|
+
const arr = mod[name];
|
|
226
|
+
if (!Array.isArray(arr)) continue;
|
|
227
|
+
for (const raw of arr) {
|
|
228
|
+
const result = RouteEntrySchema.safeParse({
|
|
229
|
+
...(typeof raw === "object" && raw !== null ? raw : {}),
|
|
230
|
+
sourceModule: file,
|
|
231
|
+
});
|
|
232
|
+
if (result.success) routes.push(result.data);
|
|
233
|
+
}
|
|
212
234
|
}
|
|
213
235
|
}
|
|
214
236
|
}
|
|
@@ -29,7 +29,7 @@ mock.module("../util/logger.js", () => ({
|
|
|
29
29
|
|
|
30
30
|
const { applyBootstrapTemplate } = await import("../prompts/system-prompt.js");
|
|
31
31
|
const { isActivationSession } =
|
|
32
|
-
await import("../memory/activation-session-store.js");
|
|
32
|
+
await import("../plugins/defaults/memory/activation-session-store.js");
|
|
33
33
|
const { ACTIVATION_RAIL_BOOTSTRAP_TEMPLATE } =
|
|
34
34
|
await import("../telemetry/activation-funnel.js");
|
|
35
35
|
const { getDb } = await import("../persistence/db-connection.js");
|
|
@@ -2087,6 +2087,54 @@ describe("AnthropicProvider — Cache-Control Characterization", () => {
|
|
|
2087
2087
|
expect(emitted).toEqual([]);
|
|
2088
2088
|
});
|
|
2089
2089
|
|
|
2090
|
+
test("suppresses a leading-space-corrupted sentinel echo (proxy dropped the guard byte)", async () => {
|
|
2091
|
+
// OpenRouter's Anthropic-compat path returns the `\x00` guard as a leading
|
|
2092
|
+
// space; the normalized prefix check must still hold and drop it.
|
|
2093
|
+
scriptedStream = [
|
|
2094
|
+
{ kind: "blockStart" },
|
|
2095
|
+
{ kind: "text", text: " __PLACEHOLDER__[empty assistant turn]" },
|
|
2096
|
+
{ kind: "blockStop" },
|
|
2097
|
+
];
|
|
2098
|
+
const emitted: string[] = [];
|
|
2099
|
+
await provider.sendMessage([userMsg("Hi")], {
|
|
2100
|
+
onEvent: (event) => {
|
|
2101
|
+
if (event.type === "text_delta") emitted.push(event.text);
|
|
2102
|
+
},
|
|
2103
|
+
});
|
|
2104
|
+
expect(emitted).toEqual([]);
|
|
2105
|
+
});
|
|
2106
|
+
|
|
2107
|
+
test("suppresses a leading-space-corrupted sentinel split across chunks", async () => {
|
|
2108
|
+
scriptedStream = [
|
|
2109
|
+
{ kind: "blockStart" },
|
|
2110
|
+
{ kind: "text", text: " __PLACE" },
|
|
2111
|
+
{ kind: "text", text: "HOLDER__[empty assistant turn]" },
|
|
2112
|
+
{ kind: "blockStop" },
|
|
2113
|
+
];
|
|
2114
|
+
const emitted: string[] = [];
|
|
2115
|
+
await provider.sendMessage([userMsg("Hi")], {
|
|
2116
|
+
onEvent: (event) => {
|
|
2117
|
+
if (event.type === "text_delta") emitted.push(event.text);
|
|
2118
|
+
},
|
|
2119
|
+
});
|
|
2120
|
+
expect(emitted).toEqual([]);
|
|
2121
|
+
});
|
|
2122
|
+
|
|
2123
|
+
test("still streams real text that begins with whitespace", async () => {
|
|
2124
|
+
scriptedStream = [
|
|
2125
|
+
{ kind: "blockStart" },
|
|
2126
|
+
{ kind: "text", text: " hello there" },
|
|
2127
|
+
{ kind: "blockStop" },
|
|
2128
|
+
];
|
|
2129
|
+
const emitted: string[] = [];
|
|
2130
|
+
await provider.sendMessage([userMsg("Hi")], {
|
|
2131
|
+
onEvent: (event) => {
|
|
2132
|
+
if (event.type === "text_delta") emitted.push(event.text);
|
|
2133
|
+
},
|
|
2134
|
+
});
|
|
2135
|
+
expect(emitted.join("")).toBe(" hello there");
|
|
2136
|
+
});
|
|
2137
|
+
|
|
2090
2138
|
test("flushes buffered prefix when the continuation diverges from all sentinels", async () => {
|
|
2091
2139
|
// "__PLACEHOLDER__" is a prefix of the sentinels, so it stays buffered.
|
|
2092
2140
|
// Once the next chunk diverges (bracket instead of the expected opening),
|
|
@@ -130,7 +130,6 @@ mock.module("../runtime/services/analyze-conversation.js", () => ({
|
|
|
130
130
|
|
|
131
131
|
// ── Real imports ──────────────────────────────────────────────────
|
|
132
132
|
|
|
133
|
-
import { indexMessageNow } from "../memory/indexer.js";
|
|
134
133
|
import { createConversation } from "../persistence/conversation-crud.js";
|
|
135
134
|
import { getDb, getMemoryDb } from "../persistence/db-connection.js";
|
|
136
135
|
import { initializeDb } from "../persistence/db-init.js";
|
|
@@ -140,6 +139,7 @@ import {
|
|
|
140
139
|
memoryJobs,
|
|
141
140
|
messages,
|
|
142
141
|
} from "../persistence/schema/index.js";
|
|
142
|
+
import { indexMessageNow } from "../plugins/defaults/memory/indexer.js";
|
|
143
143
|
import { conversationAnalyzeJob } from "../runtime/services/conversation-analyze-job.js";
|
|
144
144
|
import { setOverridesForTesting } from "./feature-flag-test-helpers.js";
|
|
145
145
|
|
|
@@ -41,7 +41,7 @@ mock.module("../ipc/cli-client.js", () => ({
|
|
|
41
41
|
}));
|
|
42
42
|
|
|
43
43
|
let seedCallCount = 0;
|
|
44
|
-
mock.module("../memory/v2/skill-store.js", () => ({
|
|
44
|
+
mock.module("../plugins/defaults/memory/v2/skill-store.js", () => ({
|
|
45
45
|
seedV2SkillEntries: async () => {
|
|
46
46
|
seedCallCount += 1;
|
|
47
47
|
},
|
|
@@ -54,7 +54,7 @@ mock.module("../memory/v2/skill-store.js", () => ({
|
|
|
54
54
|
const { registerMemoryV2Command } =
|
|
55
55
|
await import("../cli/commands/memory/memory-v2.js");
|
|
56
56
|
const { ROUTES: memoryV2Routes, MEMORY_V2_DISABLED_CODE } =
|
|
57
|
-
await import("../
|
|
57
|
+
await import("../plugins/defaults/memory/routes/memory-v2-routes.js");
|
|
58
58
|
const { RouteError } = await import("../runtime/routes/errors.js");
|
|
59
59
|
|
|
60
60
|
// ---------------------------------------------------------------------------
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
truncateRecallEvidenceToBudget,
|
|
10
10
|
validateFinishRecallPayload,
|
|
11
11
|
validateRecallCitationIds,
|
|
12
|
-
} from "../memory/context-search/agent-protocol.js";
|
|
13
|
-
import type { RecallEvidence } from "../memory/context-search/types.js";
|
|
12
|
+
} from "../plugins/defaults/memory/context-search/agent-protocol.js";
|
|
13
|
+
import type { RecallEvidence } from "../plugins/defaults/memory/context-search/types.js";
|
|
14
14
|
|
|
15
15
|
function makeEvidence(
|
|
16
16
|
id: string,
|
|
@@ -22,13 +22,13 @@ mock.module("../providers/provider-send-message.js", () => ({
|
|
|
22
22
|
},
|
|
23
23
|
}));
|
|
24
24
|
|
|
25
|
-
import { runAgenticRecall } from "../memory/context-search/agent-runner.js";
|
|
25
|
+
import { runAgenticRecall } from "../plugins/defaults/memory/context-search/agent-runner.js";
|
|
26
26
|
import type {
|
|
27
27
|
RecallEvidence,
|
|
28
28
|
RecallSearchContext,
|
|
29
29
|
RecallSource,
|
|
30
30
|
RecallSourceAdapter,
|
|
31
|
-
} from "../memory/context-search/types.js";
|
|
31
|
+
} from "../plugins/defaults/memory/context-search/types.js";
|
|
32
32
|
|
|
33
33
|
interface SearchCall {
|
|
34
34
|
source: RecallSource;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, test } from "bun:test";
|
|
2
2
|
|
|
3
|
-
import { searchConversationSource } from "../memory/context-search/sources/conversations.js";
|
|
4
|
-
import type { RecallSearchContext } from "../memory/context-search/types.js";
|
|
5
3
|
import { writeSlackMetadata } from "../messaging/providers/slack/message-metadata.js";
|
|
6
4
|
import { getDb } from "../persistence/db-connection.js";
|
|
7
5
|
import { initializeDb } from "../persistence/db-init.js";
|
|
8
6
|
import { rawRun } from "../persistence/raw-query.js";
|
|
7
|
+
import { searchConversationSource } from "../plugins/defaults/memory/context-search/sources/conversations.js";
|
|
8
|
+
import type { RecallSearchContext } from "../plugins/defaults/memory/context-search/types.js";
|
|
9
9
|
await initializeDb();
|
|
10
10
|
|
|
11
11
|
let seedId = 0;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { describe, expect, test } from "bun:test";
|
|
2
2
|
|
|
3
3
|
import type { AssistantConfig } from "../config/schema.js";
|
|
4
|
-
import { formatDeterministicRecallAnswer } from "../memory/context-search/format.js";
|
|
5
|
-
import { runDeterministicRecallSearch } from "../memory/context-search/search.js";
|
|
4
|
+
import { formatDeterministicRecallAnswer } from "../plugins/defaults/memory/context-search/format.js";
|
|
5
|
+
import { runDeterministicRecallSearch } from "../plugins/defaults/memory/context-search/search.js";
|
|
6
6
|
import type {
|
|
7
7
|
RecallEvidence,
|
|
8
8
|
RecallSearchContext,
|
|
9
9
|
RecallSource,
|
|
10
10
|
RecallSourceAdapter,
|
|
11
|
-
} from "../memory/context-search/types.js";
|
|
11
|
+
} from "../plugins/defaults/memory/context-search/types.js";
|
|
12
12
|
|
|
13
13
|
function makeContext(): RecallSearchContext {
|
|
14
14
|
return {
|
|
@@ -5,18 +5,19 @@ import type {
|
|
|
5
5
|
RecallEvidence,
|
|
6
6
|
RecallSearchContext,
|
|
7
7
|
RecallSearchResult,
|
|
8
|
-
} from "../memory/context-search/types.js";
|
|
9
|
-
import type { MemoryNode } from "../memory/graph/types.js";
|
|
8
|
+
} from "../plugins/defaults/memory/context-search/types.js";
|
|
9
|
+
import type { MemoryNode } from "../plugins/defaults/memory/graph/types.js";
|
|
10
10
|
|
|
11
11
|
const loggerModule = import.meta.resolve("../util/logger.js");
|
|
12
12
|
const embedModule = import.meta.resolve("../persistence/embeddings/embed.js");
|
|
13
13
|
const embeddingBackendModule = import.meta
|
|
14
14
|
.resolve("../persistence/embeddings/embedding-backend.js");
|
|
15
15
|
const graphSearchModule = import.meta
|
|
16
|
-
.resolve("../memory/graph/graph-search.js");
|
|
17
|
-
const graphStoreModule = import.meta
|
|
16
|
+
.resolve("../plugins/defaults/memory/graph/graph-search.js");
|
|
17
|
+
const graphStoreModule = import.meta
|
|
18
|
+
.resolve("../plugins/defaults/memory/graph/store.js");
|
|
18
19
|
const memoryV2SourceModule = import.meta
|
|
19
|
-
.resolve("../memory/context-search/sources/memory-v2.js");
|
|
20
|
+
.resolve("../plugins/defaults/memory/context-search/sources/memory-v2.js");
|
|
20
21
|
|
|
21
22
|
const warnCalls: unknown[][] = [];
|
|
22
23
|
mock.module(loggerModule, () => ({
|
|
@@ -118,7 +119,7 @@ mock.module(memoryV2SourceModule, () => ({
|
|
|
118
119
|
}));
|
|
119
120
|
|
|
120
121
|
const { searchMemorySource } =
|
|
121
|
-
await import("../memory/context-search/sources/memory.js");
|
|
122
|
+
await import("../plugins/defaults/memory/context-search/sources/memory.js");
|
|
122
123
|
|
|
123
124
|
describe("searchMemorySource", () => {
|
|
124
125
|
beforeEach(() => {
|
|
@@ -25,9 +25,9 @@ import { dirname, join } from "node:path";
|
|
|
25
25
|
import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
|
|
26
26
|
|
|
27
27
|
import type { AssistantConfig } from "../config/schema.js";
|
|
28
|
-
import type { RecallSearchContext } from "../memory/context-search/types.js";
|
|
29
|
-
import type { EdgeIndex } from "../memory/v2/edge-index.js";
|
|
30
|
-
import type { ConceptPage } from "../memory/v2/types.js";
|
|
28
|
+
import type { RecallSearchContext } from "../plugins/defaults/memory/context-search/types.js";
|
|
29
|
+
import type { EdgeIndex } from "../plugins/defaults/memory/v2/edge-index.js";
|
|
30
|
+
import type { ConceptPage } from "../plugins/defaults/memory/v2/types.js";
|
|
31
31
|
import { makeMockLogger } from "./helpers/mock-logger.js";
|
|
32
32
|
|
|
33
33
|
mock.module("../util/logger.js", () => ({
|
|
@@ -54,7 +54,7 @@ let qdrantHits: QdrantHit[] = [];
|
|
|
54
54
|
let qdrantThrows: Error | null = null;
|
|
55
55
|
const qdrantCalls: Array<{ limit: number }> = [];
|
|
56
56
|
|
|
57
|
-
mock.module("../memory/v2/qdrant.js", () => ({
|
|
57
|
+
mock.module("../plugins/defaults/memory/v2/qdrant.js", () => ({
|
|
58
58
|
hybridQueryConceptPages: async (
|
|
59
59
|
_dense: number[],
|
|
60
60
|
_sparse: { indices: number[]; values: number[] },
|
|
@@ -71,7 +71,7 @@ let edgeIndex: EdgeIndex = {
|
|
|
71
71
|
incoming: new Map<string, Set<string>>(),
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
-
mock.module("../memory/v2/edge-index.js", () => ({
|
|
74
|
+
mock.module("../plugins/defaults/memory/v2/edge-index.js", () => ({
|
|
75
75
|
getEdgeIndex: async (): Promise<EdgeIndex> => edgeIndex,
|
|
76
76
|
invalidateEdgeIndex: () => {},
|
|
77
77
|
getReachable: () => new Set<string>(),
|
|
@@ -81,7 +81,7 @@ mock.module("../memory/v2/edge-index.js", () => ({
|
|
|
81
81
|
|
|
82
82
|
const pageStore = new Map<string, ConceptPage>();
|
|
83
83
|
|
|
84
|
-
mock.module("../memory/v2/page-store.js", () => ({
|
|
84
|
+
mock.module("../plugins/defaults/memory/v2/page-store.js", () => ({
|
|
85
85
|
getConceptsDir: (workspaceDir: string): string =>
|
|
86
86
|
join(workspaceDir, "memory", "concepts"),
|
|
87
87
|
listPages: async (): Promise<string[]> => [...pageStore.keys()],
|
|
@@ -101,7 +101,7 @@ mock.module("../memory/v2/page-store.js", () => ({
|
|
|
101
101
|
}));
|
|
102
102
|
|
|
103
103
|
const { searchMemoryV2Source } =
|
|
104
|
-
await import("../memory/context-search/sources/memory-v2.js");
|
|
104
|
+
await import("../plugins/defaults/memory/context-search/sources/memory-v2.js");
|
|
105
105
|
|
|
106
106
|
const testDirs: string[] = [];
|
|
107
107
|
|
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
RECALL_EVIDENCE_TEXT_CAP_PER_SOURCE,
|
|
10
10
|
RECALL_SOURCE_ROUNDS_BY_DEPTH,
|
|
11
11
|
RECALL_TOTAL_EVIDENCE_TEXT_CAP,
|
|
12
|
-
} from "../memory/context-search/limits.js";
|
|
12
|
+
} from "../plugins/defaults/memory/context-search/limits.js";
|
|
13
13
|
import type {
|
|
14
14
|
RecallInput,
|
|
15
15
|
RecallSource,
|
|
16
16
|
RecallSourceAdapter,
|
|
17
|
-
} from "../memory/context-search/types.js";
|
|
17
|
+
} from "../plugins/defaults/memory/context-search/types.js";
|
|
18
18
|
|
|
19
19
|
describe("normalizeRecallInput", () => {
|
|
20
20
|
test("defaults omitted sources, max results, and depth", () => {
|
|
@@ -16,8 +16,8 @@ import {
|
|
|
16
16
|
searchWorkspaceSource,
|
|
17
17
|
WORKSPACE_SOURCE_MAX_FILE_SIZE_BYTES,
|
|
18
18
|
WORKSPACE_SOURCE_MAX_SCANNED_FILES,
|
|
19
|
-
} from "../memory/context-search/sources/workspace.js";
|
|
20
|
-
import type { RecallSearchContext } from "../memory/context-search/types.js";
|
|
19
|
+
} from "../plugins/defaults/memory/context-search/sources/workspace.js";
|
|
20
|
+
import type { RecallSearchContext } from "../plugins/defaults/memory/context-search/types.js";
|
|
21
21
|
|
|
22
22
|
const testDirs: string[] = [];
|
|
23
23
|
|
|
@@ -329,7 +329,7 @@ const indexMessageNowMock = mock(async () => ({
|
|
|
329
329
|
}));
|
|
330
330
|
const projectAssistantMessageMock = mock(() => false);
|
|
331
331
|
const publishSyncInvalidationMock = mock(async () => {});
|
|
332
|
-
mock.module("../memory/indexer.js", () => ({
|
|
332
|
+
mock.module("../plugins/defaults/memory/indexer.js", () => ({
|
|
333
333
|
indexMessageNow: indexMessageNowMock,
|
|
334
334
|
}));
|
|
335
335
|
mock.module("../persistence/conversation-attention-store.js", () => ({
|
|
@@ -21,16 +21,6 @@ mock.module("../config/loader.js", () => ({
|
|
|
21
21
|
}),
|
|
22
22
|
}));
|
|
23
23
|
|
|
24
|
-
import {
|
|
25
|
-
loadGraphMemoryState,
|
|
26
|
-
saveGraphMemoryState,
|
|
27
|
-
} from "../memory/graph/graph-memory-state-store.js";
|
|
28
|
-
import {
|
|
29
|
-
bumpRetrospectiveLastRunAt,
|
|
30
|
-
getRetrospectiveState,
|
|
31
|
-
upsertRetrospectiveState,
|
|
32
|
-
} from "../memory/memory-retrospective-state.js";
|
|
33
|
-
import { hydrate as hydrateActivationState } from "../memory/v2/activation-store.js";
|
|
34
24
|
import {
|
|
35
25
|
getAttachmentsForMessage,
|
|
36
26
|
linkAttachmentToMessage,
|
|
@@ -65,6 +55,16 @@ import {
|
|
|
65
55
|
memoryRetrospectiveState,
|
|
66
56
|
toolInvocations,
|
|
67
57
|
} from "../persistence/schema/index.js";
|
|
58
|
+
import {
|
|
59
|
+
loadGraphMemoryState,
|
|
60
|
+
saveGraphMemoryState,
|
|
61
|
+
} from "../plugins/defaults/memory/graph/graph-memory-state-store.js";
|
|
62
|
+
import {
|
|
63
|
+
bumpRetrospectiveLastRunAt,
|
|
64
|
+
getRetrospectiveState,
|
|
65
|
+
upsertRetrospectiveState,
|
|
66
|
+
} from "../plugins/defaults/memory/memory-retrospective-state.js";
|
|
67
|
+
import { hydrate as hydrateActivationState } from "../plugins/defaults/memory/v2/activation-store.js";
|
|
68
68
|
import {
|
|
69
69
|
getInjected as getV3Injected,
|
|
70
70
|
markPruned as markV3Pruned,
|
|
@@ -19,10 +19,6 @@ mock.module("../config/loader.js", () => ({
|
|
|
19
19
|
}),
|
|
20
20
|
}));
|
|
21
21
|
|
|
22
|
-
import {
|
|
23
|
-
loadGraphMemoryState,
|
|
24
|
-
saveGraphMemoryState,
|
|
25
|
-
} from "../memory/graph/graph-memory-state-store.js";
|
|
26
22
|
import {
|
|
27
23
|
getAttachmentsForMessage,
|
|
28
24
|
linkAttachmentToMessage,
|
|
@@ -54,6 +50,10 @@ import {
|
|
|
54
50
|
memoryRetrospectiveState,
|
|
55
51
|
toolInvocations,
|
|
56
52
|
} from "../persistence/schema/index.js";
|
|
53
|
+
import {
|
|
54
|
+
loadGraphMemoryState,
|
|
55
|
+
saveGraphMemoryState,
|
|
56
|
+
} from "../plugins/defaults/memory/graph/graph-memory-state-store.js";
|
|
57
57
|
|
|
58
58
|
await initializeDb();
|
|
59
59
|
|
|
@@ -75,7 +75,7 @@ let pkbSearchResults: Array<{
|
|
|
75
75
|
hybridScore?: number;
|
|
76
76
|
}> = [];
|
|
77
77
|
let pkbSearchThrows: Error | null = null;
|
|
78
|
-
mock.module("../memory/pkb/pkb-search.js", () => ({
|
|
78
|
+
mock.module("../plugins/defaults/memory/pkb/pkb-search.js", () => ({
|
|
79
79
|
searchPkbFiles: async () => {
|
|
80
80
|
if (pkbSearchThrows) throw pkbSearchThrows;
|
|
81
81
|
return pkbSearchResults;
|
|
@@ -132,8 +132,6 @@ import {
|
|
|
132
132
|
import type { SurfaceData, SurfaceType } from "../daemon/message-protocol.js";
|
|
133
133
|
import { buildPkbReminder } from "../daemon/pkb-reminder-builder.js";
|
|
134
134
|
import type { TrustContext } from "../daemon/trust-context.js";
|
|
135
|
-
import { ConversationGraphMemory } from "../memory/graph/conversation-graph-memory.js";
|
|
136
|
-
import { getPkbRoot } from "../memory/pkb/types.js";
|
|
137
135
|
import {
|
|
138
136
|
type SlackMessageMetadata,
|
|
139
137
|
writeSlackMetadata,
|
|
@@ -144,7 +142,9 @@ import { getDb } from "../persistence/db-connection.js";
|
|
|
144
142
|
import { initializeDb } from "../persistence/db-init.js";
|
|
145
143
|
import { conversations, messages } from "../persistence/schema/index.js";
|
|
146
144
|
import { registerDefaultPluginInjectors } from "../plugins/defaults/index.js";
|
|
145
|
+
import { ConversationGraphMemory } from "../plugins/defaults/memory/graph/conversation-graph-memory.js";
|
|
147
146
|
import postCompact from "../plugins/defaults/memory/hooks/post-compact.js";
|
|
147
|
+
import { getPkbRoot } from "../plugins/defaults/memory/pkb/types.js";
|
|
148
148
|
import {
|
|
149
149
|
buildUnifiedTurnContextBlock,
|
|
150
150
|
type UnifiedTurnContextOptions,
|
|
@@ -35,10 +35,6 @@ const { createSurfaceMutex, handleSurfaceAction, surfaceProxyResolver } =
|
|
|
35
35
|
|
|
36
36
|
import type { SurfaceConversationContext } from "../daemon/conversation-surfaces.js";
|
|
37
37
|
import type { SurfaceType, UiSurfaceShow } from "../daemon/message-protocol.js";
|
|
38
|
-
import {
|
|
39
|
-
isActivationSession,
|
|
40
|
-
markActivationSession,
|
|
41
|
-
} from "../memory/activation-session-store.js";
|
|
42
38
|
import { queryUnreportedOnboardingEvents } from "../onboarding/onboarding-events-store.js";
|
|
43
39
|
import { getDb } from "../persistence/db-connection.js";
|
|
44
40
|
import { initializeDb } from "../persistence/db-init.js";
|
|
@@ -46,6 +42,10 @@ import {
|
|
|
46
42
|
activationSessions,
|
|
47
43
|
onboardingEvents,
|
|
48
44
|
} from "../persistence/schema/index.js";
|
|
45
|
+
import {
|
|
46
|
+
isActivationSession,
|
|
47
|
+
markActivationSession,
|
|
48
|
+
} from "../plugins/defaults/memory/activation-session-store.js";
|
|
49
49
|
|
|
50
50
|
await initializeDb();
|
|
51
51
|
|
|
@@ -135,7 +135,7 @@ mock.module("../memory/query-builder.js", () => ({
|
|
|
135
135
|
buildMemoryQuery: () => "",
|
|
136
136
|
}));
|
|
137
137
|
|
|
138
|
-
mock.module("../memory/retrieval-budget.js", () => ({
|
|
138
|
+
mock.module("../plugins/defaults/memory/retrieval-budget.js", () => ({
|
|
139
139
|
computeRecallBudget: () => 0,
|
|
140
140
|
}));
|
|
141
141
|
|
|
@@ -175,7 +175,7 @@ mock.module("../memory/retriever.js", () => ({
|
|
|
175
175
|
mock.module("../memory/query-builder.js", () => ({
|
|
176
176
|
buildMemoryQuery: () => "",
|
|
177
177
|
}));
|
|
178
|
-
mock.module("../memory/retrieval-budget.js", () => ({
|
|
178
|
+
mock.module("../plugins/defaults/memory/retrieval-budget.js", () => ({
|
|
179
179
|
computeRecallBudget: () => 0,
|
|
180
180
|
}));
|
|
181
181
|
mock.module("../plugins/defaults/compaction/window-manager.js", () => ({
|
|
@@ -172,7 +172,7 @@ mock.module("../memory/retriever.js", () => ({
|
|
|
172
172
|
mock.module("../memory/query-builder.js", () => ({
|
|
173
173
|
buildMemoryQuery: () => "",
|
|
174
174
|
}));
|
|
175
|
-
mock.module("../memory/retrieval-budget.js", () => ({
|
|
175
|
+
mock.module("../plugins/defaults/memory/retrieval-budget.js", () => ({
|
|
176
176
|
computeRecallBudget: () => 0,
|
|
177
177
|
}));
|
|
178
178
|
mock.module("../plugins/defaults/compaction/window-manager.js", () => ({
|