@vellumai/assistant 0.10.4-staging.1 → 0.10.4
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/ARCHITECTURE.md +13 -13
- package/bun.lock +165 -0
- package/docs/architecture/memory.md +26 -0
- package/eslint-rules/cli-no-daemon-internals.js +9 -8
- package/node_modules/@vellumai/gateway-client/src/gateway-ipc-contracts.ts +18 -0
- package/openapi.yaml +677 -15
- package/package.json +8 -1
- package/scripts/generate-openapi.ts +149 -62
- package/src/__tests__/acp-session.test.ts +2 -2
- package/src/__tests__/activation-early-marking.test.ts +4 -4
- package/src/__tests__/actor-token-service.test.ts +2 -3
- package/src/__tests__/agent-loop-compaction-events.test.ts +1 -0
- package/src/__tests__/agent-loop-compaction-strip.test.ts +2 -0
- package/src/__tests__/agent-loop-exit-reason.test.ts +4 -1
- package/src/__tests__/agent-loop-override-profile.test.ts +2 -2
- package/src/__tests__/agent-loop-regrowth-guard.test.ts +8 -0
- package/src/__tests__/agent-loop.test.ts +1 -0
- package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +3 -3
- package/src/__tests__/agent-wake-override-profile.test.ts +3 -3
- package/src/__tests__/annotate-activity-metadata.test.ts +4 -4
- package/src/__tests__/annotate-risk-options.test.ts +4 -4
- package/src/__tests__/anthropic-provider.test.ts +53 -2
- package/src/__tests__/app-builder-tool-scripts.test.ts +2 -2
- package/src/__tests__/app-bundler.test.ts +1 -1
- package/src/__tests__/app-conversation-ids-backfill.test.ts +4 -4
- package/src/__tests__/app-conversation-ids.test.ts +1 -1
- package/src/__tests__/app-dir-path-guard.test.ts +2 -2
- package/src/__tests__/app-executors.test.ts +1 -1
- package/src/__tests__/app-git-history.test.ts +2 -2
- package/src/__tests__/app-git-service.test.ts +2 -2
- package/src/__tests__/app-routes-csp.test.ts +2 -2
- package/src/__tests__/app-source-watcher.test.ts +1 -1
- package/src/__tests__/app-store-dir-names.test.ts +1 -1
- package/src/__tests__/approval-cascade.test.ts +7 -7
- package/src/__tests__/approval-interception-trust-gates.test.ts +1 -1
- package/src/__tests__/approval-primitive.test.ts +3 -3
- package/src/__tests__/approval-routes-http.test.ts +2 -2
- package/src/__tests__/assistant-event-hub-machine-name.test.ts +1 -1
- package/src/__tests__/assistant-events-sse-hardening.test.ts +2 -2
- package/src/__tests__/assistant-events-sse-shed.test.ts +2 -2
- package/src/__tests__/attachment-upload-trusted-source.test.ts +4 -2
- package/src/__tests__/attachments-store.test.ts +9 -6
- package/src/__tests__/audit-log-rotation.test.ts +6 -4
- package/src/__tests__/auth-fallback-events-store.test.ts +4 -4
- package/src/__tests__/auto-analysis-end-to-end.test.ts +13 -9
- package/src/__tests__/background-workers-disk-pressure.test.ts +12 -7
- package/src/__tests__/btw-routes.test.ts +4 -5
- package/src/__tests__/build-persisted-content.test.ts +4 -4
- package/src/__tests__/call-controller.test.ts +6 -6
- package/src/__tests__/call-conversation-messages.test.ts +4 -4
- package/src/__tests__/call-domain.test.ts +5 -5
- package/src/__tests__/call-pointer-messages.test.ts +5 -5
- package/src/__tests__/call-recovery.test.ts +3 -3
- package/src/__tests__/call-routes-http.test.ts +3 -3
- package/src/__tests__/call-store.test.ts +3 -3
- package/src/__tests__/cancel-resolves-conversation-key.test.ts +2 -2
- package/src/__tests__/canonical-guardian-store.test.ts +3 -3
- package/src/__tests__/channel-approval-routes.test.ts +9 -7
- package/src/__tests__/channel-delivery-store.test.ts +8 -8
- package/src/__tests__/channel-guardian.test.ts +24 -66
- package/src/__tests__/channel-inbound-disk-pressure.test.ts +4 -4
- package/src/__tests__/channel-reply-delivery.test.ts +2 -2
- package/src/__tests__/channel-retry-sweep.test.ts +49 -4
- package/src/__tests__/clawhub.test.ts +4 -0
- package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +2 -2
- package/src/__tests__/compaction-events.test.ts +8 -8
- package/src/__tests__/compaction-ledger-store.test.ts +4 -4
- package/src/__tests__/compaction-trail-store.test.ts +5 -5
- package/src/__tests__/compaction.benchmark.test.ts +5 -5
- package/src/__tests__/compactor-call-site-logging.test.ts +5 -5
- package/src/__tests__/compactor-image-manifest-trust.test.ts +7 -4
- package/src/__tests__/compactor-low-watermark-cut.test.ts +5 -5
- package/src/__tests__/compactor-preserved-tail-count.test.ts +4 -4
- package/src/__tests__/compactor-summary-call-truncation.test.ts +5 -5
- package/src/__tests__/compactor-web-search-strip.test.ts +4 -4
- package/src/__tests__/config-get-vision-flag.test.ts +1 -1
- package/src/__tests__/config-loader-backfill.test.ts +84 -104
- package/src/__tests__/config-set-route.test.ts +5 -2
- package/src/__tests__/config-watcher-cleanup-throttle.test.ts +3 -3
- package/src/__tests__/config-watcher-skill-reseed.test.ts +39 -112
- package/src/__tests__/config-watcher.test.ts +54 -31
- package/src/__tests__/confirmation-request-guardian-bridge.test.ts +4 -4
- package/src/__tests__/contact-store-interaction-info.test.ts +3 -3
- package/src/__tests__/contact-store-user-file.test.ts +91 -81
- package/src/__tests__/contacts-relay-reads.test.ts +21 -3
- package/src/__tests__/contacts-tools.test.ts +2 -2
- package/src/__tests__/contacts-write.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 +5 -5
- package/src/__tests__/context-search-fanout.test.ts +3 -3
- package/src/__tests__/context-search-memory-source.test.ts +9 -8
- package/src/__tests__/context-search-memory-v2-source.test.ts +9 -8
- 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-abort-tool-results.test.ts +5 -5
- package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +3 -3
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +39 -11
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +6 -6
- package/src/__tests__/conversation-agent-loop.test.ts +51 -13
- package/src/__tests__/conversation-analysis-routes.test.ts +4 -4
- package/src/__tests__/conversation-app-control-instantiation.test.ts +2 -1
- package/src/__tests__/conversation-app-control-lifecycle.test.ts +7 -7
- package/src/__tests__/conversation-attachments.test.ts +7 -4
- package/src/__tests__/conversation-attention-store.test.ts +4 -4
- package/src/__tests__/conversation-attention-telegram.test.ts +8 -5
- package/src/__tests__/conversation-clear-safety.test.ts +3 -3
- package/src/__tests__/conversation-confirmation-signals.test.ts +7 -7
- package/src/__tests__/conversation-crud-inference-profile.test.ts +3 -3
- package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +25 -25
- package/src/__tests__/conversation-directories-parse.test.ts +1 -1
- package/src/__tests__/conversation-disk-view-integration.test.ts +5 -5
- package/src/__tests__/conversation-disk-view.test.ts +6 -6
- package/src/__tests__/conversation-evictor.test.ts +32 -7
- package/src/__tests__/conversation-fork-crud.test.ts +24 -21
- package/src/__tests__/conversation-fork-retrospective.test.ts +12 -10
- package/src/__tests__/conversation-fork-route.test.ts +6 -3
- package/src/__tests__/conversation-history-web-search.test.ts +8 -8
- package/src/__tests__/conversation-inference-profile-list.test.ts +3 -3
- package/src/__tests__/conversation-inference-profile-route.test.ts +3 -3
- package/src/__tests__/conversation-init.benchmark.test.ts +1 -1
- package/src/__tests__/conversation-key-store-disk-view.test.ts +7 -4
- package/src/__tests__/conversation-lifecycle.test.ts +10 -13
- package/src/__tests__/conversation-list-source.test.ts +3 -3
- package/src/__tests__/conversation-load-history-repair.test.ts +4 -4
- package/src/__tests__/conversation-load-history-stripped.test.ts +4 -4
- package/src/__tests__/conversation-pairing.test.ts +4 -4
- package/src/__tests__/conversation-process-app-control-preactivation.test.ts +5 -5
- package/src/__tests__/conversation-process-callsite.test.ts +5 -5
- package/src/__tests__/conversation-provider-retry-repair.test.ts +5 -5
- package/src/__tests__/conversation-queue.test.ts +55 -9
- package/src/__tests__/conversation-routes-disk-view.test.ts +5 -5
- package/src/__tests__/conversation-routes-guardian-reply.test.ts +6 -6
- package/src/__tests__/conversation-routes-slash-commands.test.ts +57 -10
- package/src/__tests__/conversation-runtime-assembly.test.ts +25 -19
- package/src/__tests__/conversation-runtime-workspace.test.ts +8 -1
- package/src/__tests__/conversation-skill-tools.test.ts +155 -2
- package/src/__tests__/conversation-slash-queue.test.ts +6 -6
- package/src/__tests__/conversation-slash-unknown.test.ts +6 -6
- package/src/__tests__/conversation-speed-override.test.ts +7 -7
- package/src/__tests__/conversation-starter-routes.test.ts +2 -2
- package/src/__tests__/conversation-store.test.ts +6 -6
- package/src/__tests__/conversation-surfaces-activation-emit.test.ts +8 -5
- package/src/__tests__/conversation-surfaces-data-persist.test.ts +2 -2
- package/src/__tests__/conversation-sync-tags.test.ts +7 -4
- package/src/__tests__/conversation-title-service.test.ts +2 -3
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +1 -1
- package/src/__tests__/conversation-tool-setup-attribution.test.ts +1 -1
- package/src/__tests__/conversation-unread-route.test.ts +2 -2
- package/src/__tests__/conversation-usage.test.ts +6 -6
- package/src/__tests__/conversation-wipe.test.ts +6 -4
- package/src/__tests__/conversation-workspace-cache-state.test.ts +9 -9
- package/src/__tests__/conversation-workspace-injection.test.ts +9 -9
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +9 -9
- package/src/__tests__/conversations-import-system-filter.test.ts +5 -5
- package/src/__tests__/credential-security-invariants.test.ts +4 -4
- package/src/__tests__/db-acp-history.test.ts +4 -4
- package/src/__tests__/db-activation-state-fk-cascade.test.ts +4 -4
- package/src/__tests__/db-activation-state.test.ts +3 -3
- package/src/__tests__/db-compaction-events-migration.test.ts +3 -3
- package/src/__tests__/db-connection-isolation.test.ts +1 -1
- package/src/__tests__/db-conversation-fork-lineage-migration.test.ts +3 -3
- package/src/__tests__/db-conversation-inference-profile-migration.test.ts +6 -6
- package/src/__tests__/db-drop-contact-acl-columns-migration.test.ts +159 -0
- package/src/__tests__/db-llm-request-log-provider-migration.test.ts +3 -3
- package/src/__tests__/db-memory-graph-event-date-repair.test.ts +3 -3
- package/src/__tests__/db-migration-rollback.test.ts +48 -43
- package/src/__tests__/db-proxy-transaction.test.ts +2 -2
- package/src/__tests__/db-rename-inference-profile-snake-case-migration.test.ts +3 -3
- package/src/__tests__/db-schedule-syntax-migration.test.ts +4 -4
- package/src/__tests__/db-slack-compaction-watermark-migration.test.ts +3 -3
- package/src/__tests__/db-slack-external-content-normalization.test.ts +4 -4
- package/src/__tests__/db-test-helpers.ts +7 -0
- package/src/__tests__/delete-propagation.test.ts +4 -4
- package/src/__tests__/deterministic-verification-control-plane.test.ts +3 -3
- package/src/__tests__/device-id.test.ts +38 -1
- package/src/__tests__/dm-backfill.test.ts +3 -3
- package/src/__tests__/dm-persistence.test.ts +5 -5
- package/src/__tests__/document-conversations.test.ts +3 -3
- package/src/__tests__/document-create-dedupe.test.ts +1 -1
- package/src/__tests__/document-find-replace.test.ts +1 -1
- package/src/__tests__/document-tool-security.test.ts +1 -1
- package/src/__tests__/document-update-default-surface.test.ts +1 -1
- package/src/__tests__/drop-capability-card-state-migration.test.ts +3 -5
- package/src/__tests__/edit-propagation.test.ts +6 -6
- package/src/__tests__/embedding-managed-proxy-selection.test.ts +2 -2
- package/src/__tests__/empty-state-greeting-cache.test.ts +1 -1
- package/src/__tests__/events-client-registration.test.ts +1 -1
- package/src/__tests__/exploration-drift-hook.test.ts +7 -23
- package/src/__tests__/file-write-tool.test.ts +3 -3
- package/src/__tests__/filing-service.test.ts +6 -5
- package/src/__tests__/followup-tools.test.ts +2 -2
- 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__/guardian-action-sweep.test.ts +3 -3
- package/src/__tests__/guardian-binding-drift-heal.test.ts +6 -3
- package/src/__tests__/guardian-card-withdrawal.test.ts +3 -3
- package/src/__tests__/guardian-decision-primitive-canonical.test.ts +4 -4
- package/src/__tests__/guardian-dispatch.test.ts +14 -42
- package/src/__tests__/guardian-expiry-notifier.test.ts +4 -4
- package/src/__tests__/guardian-outbound-http.test.ts +3 -4
- package/src/__tests__/guardian-principal-id-roundtrip.test.ts +3 -3
- package/src/__tests__/guardian-routing-invariants.test.ts +3 -3
- package/src/__tests__/guardian-routing-state.test.ts +6 -4
- package/src/__tests__/guardian-verification-voice-binding.test.ts +4 -4
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +1 -1
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +3 -3
- package/src/__tests__/heartbeat-disk-pressure.test.ts +7 -13
- package/src/__tests__/heartbeat-service.test.ts +31 -19
- package/src/__tests__/helpers/channel-test-adapter.ts +22 -48
- package/src/__tests__/helpers/create-guardian-binding.ts +1 -1
- package/src/__tests__/helpers/derive-guardian-delivery.ts +66 -0
- package/src/__tests__/helpers/gateway-acl-store.ts +81 -0
- package/src/__tests__/helpers/seed-contact-channel.ts +50 -29
- package/src/__tests__/history-repair-hook.test.ts +1 -1
- package/src/__tests__/home-state-routes.test.ts +1 -1
- package/src/__tests__/http-conversation-lineage.test.ts +4 -4
- package/src/__tests__/http-user-message-parity.test.ts +8 -12
- package/src/__tests__/identity-routes.test.ts +113 -25
- package/src/__tests__/image-recovery-hook.test.ts +3 -3
- package/src/__tests__/inbound-invite-redemption.test.ts +36 -38
- package/src/__tests__/inbound-slack-persistence.test.ts +5 -5
- package/src/__tests__/inbound-trust-verdict.test.ts +5 -4
- package/src/__tests__/inference-no-mode-boot-e2e.test.ts +13 -6
- package/src/__tests__/inference-profile-reaper.test.ts +3 -3
- package/src/__tests__/inference-profile-session-handler.test.ts +3 -3
- package/src/__tests__/inference-profile-session-ipc.test.ts +3 -3
- package/src/__tests__/init-feature-flag-overrides.test.ts +1 -4
- package/src/__tests__/injection-block.test.ts +5 -2
- package/src/__tests__/injector-background-turn.test.ts +3 -5
- package/src/__tests__/injector-chain.test.ts +25 -16
- package/src/__tests__/injector-config-quarantine-notice.test.ts +3 -5
- package/src/__tests__/injector-disk-pressure.test.ts +10 -8
- package/src/__tests__/injector-document-comments.test.ts +5 -3
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +5 -2
- package/src/__tests__/injector-registry-order-guard.test.ts +132 -0
- package/src/__tests__/injector-v3-suppression.test.ts +15 -9
- package/src/__tests__/install-meta.test.ts +104 -0
- package/src/__tests__/install-skill-routing.test.ts +1 -1
- package/src/__tests__/internal-telemetry-routes.test.ts +4 -4
- package/src/__tests__/invite-redemption-service.test.ts +42 -45
- package/src/__tests__/invite-routes-http.test.ts +3 -3
- package/src/__tests__/invite-service-ipc.test.ts +3 -3
- package/src/__tests__/job-handler-registry-guard.test.ts +125 -0
- package/src/__tests__/jobs-store-qdrant-breaker.test.ts +8 -8
- package/src/__tests__/jobs-store-upsert-debounced.test.ts +7 -4
- package/src/__tests__/lifecycle-memory-v2-seed.test.ts +7 -6
- package/src/__tests__/list-messages-attachments.test.ts +7 -4
- package/src/__tests__/list-messages-client-message-id.test.ts +6 -3
- package/src/__tests__/list-messages-hidden-metadata.test.ts +5 -5
- package/src/__tests__/list-messages-page-latest.test.ts +5 -5
- package/src/__tests__/list-messages-queued.test.ts +223 -0
- package/src/__tests__/list-messages-tool-merge.test.ts +6 -3
- package/src/__tests__/llm-context-route-provider.test.ts +3 -3
- package/src/__tests__/llm-request-log-agent-loop-exit-reason.test.ts +4 -4
- package/src/__tests__/llm-request-log-call-site.test.ts +5 -5
- package/src/__tests__/llm-request-log-error-payload.test.ts +1 -1
- package/src/__tests__/llm-request-log-source-clickhouse.test.ts +2 -1
- package/src/__tests__/llm-request-log-source-factory.test.ts +3 -3
- package/src/__tests__/llm-request-log-turn-query.test.ts +9 -6
- package/src/__tests__/llm-usage-store.test.ts +137 -3
- package/src/__tests__/log-export-routes.test.ts +3 -3
- package/src/__tests__/log-export-workspace.test.ts +3 -3
- package/src/__tests__/managed-profile-guard.test.ts +1 -1
- package/src/__tests__/managed-skill-lifecycle.test.ts +3 -3
- package/src/__tests__/managed-store.test.ts +307 -0
- package/src/__tests__/mcp-config-secret-boundary.test.ts +2 -1
- package/src/__tests__/media-stream-server-integration.test.ts +1 -1
- package/src/__tests__/memory-jobs-worker-backoff.test.ts +4 -4
- package/src/__tests__/memory-jobs-worker-lanes.test.ts +11 -9
- 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 +8 -8
- package/src/__tests__/memory-upsert-concurrency.test.ts +9 -5
- package/src/__tests__/memory-v2-static-injector.test.ts +3 -3
- package/src/__tests__/messages-after-tiebreaker.test.ts +4 -4
- package/src/__tests__/messaging-send-tool.test.ts +5 -5
- package/src/__tests__/mock-gateway-ipc.ts +1 -1
- package/src/__tests__/native-web-search.test.ts +11 -11
- package/src/__tests__/non-member-access-request.test.ts +9 -7
- package/src/__tests__/notification-candidate-guardian-context.test.ts +4 -4
- package/src/__tests__/notification-deep-link.test.ts +3 -3
- package/src/__tests__/notification-guardian-path.test.ts +3 -3
- package/src/__tests__/notification-schedule-notify-dedup.test.ts +3 -3
- package/src/__tests__/oauth-provider-profiles.test.ts +1 -1
- package/src/__tests__/oauth-provider-visibility.test.ts +2 -2
- package/src/__tests__/oauth-store.test.ts +6 -6
- package/src/__tests__/outbound-slack-persistence.test.ts +8 -8
- package/src/__tests__/persist-unsendable-image-downscale.test.ts +3 -3
- package/src/__tests__/persist-unsendable-image.test.ts +3 -3
- package/src/__tests__/persist-user-message-set-processing-failure.test.ts +70 -0
- package/src/__tests__/persistence-layering-guard.test.ts +207 -0
- package/src/__tests__/persistence-secret-redaction.test.ts +6 -6
- package/src/__tests__/pkb-autoinject.test.ts +1 -1
- package/src/__tests__/platform-bash-auto-approve.test.ts +3 -3
- package/src/__tests__/playbook-execution.test.ts +4 -4
- package/src/__tests__/playbook-tools.test.ts +3 -3
- package/src/__tests__/plugin-bootstrap.test.ts +40 -3
- package/src/__tests__/plugin-config-data-migration.test.ts +263 -0
- package/src/__tests__/plugin-disabled-state.test.ts +137 -4
- package/src/__tests__/plugin-import-boundary-guard.test.ts +495 -0
- package/src/__tests__/plugin-injector-contribution.test.ts +149 -0
- package/src/__tests__/pointer-conversation-trust.test.ts +141 -0
- package/src/__tests__/post-compaction-reinjection-idempotency.test.ts +8 -1
- package/src/__tests__/process-message-background-slack.test.ts +6 -6
- package/src/__tests__/process-message-display-content.test.ts +5 -5
- package/src/__tests__/processing-flag-persist-failure.test.ts +280 -0
- package/src/__tests__/provider-usage-tracking.test.ts +3 -3
- package/src/__tests__/prune-jobs-changes-parser.test.ts +1 -1
- package/src/__tests__/prune-old-conversations-job.test.ts +5 -5
- package/src/__tests__/published-app-updater.test.ts +3 -3
- package/src/__tests__/qdrant-collection-migration.test.ts +5 -2
- package/src/__tests__/qdrant-manager.test.ts +1 -1
- package/src/__tests__/reaction-intercept-cold-cache-warm.test.ts +18 -12
- package/src/__tests__/reaction-intercept-member-verdict-warm.test.ts +4 -4
- package/src/__tests__/reaction-persistence.test.ts +13 -10
- package/src/__tests__/rebuild-index-graph-nodes.test.ts +5 -5
- package/src/__tests__/recording-handler.test.ts +2 -2
- package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +8 -8
- package/src/__tests__/relay-server.test.ts +140 -156
- package/src/__tests__/require-fresh-approval.test.ts +1 -1
- package/src/__tests__/resolve-app-id.test.ts +3 -3
- package/src/__tests__/runtime-attachment-metadata.test.ts +7 -7
- package/src/__tests__/runtime-events-sse-bilingual.test.ts +3 -3
- package/src/__tests__/runtime-events-sse-parity.test.ts +3 -3
- package/src/__tests__/runtime-events-sse-reconnect.test.ts +3 -3
- package/src/__tests__/runtime-events-sse.test.ts +3 -3
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +489 -2
- package/src/__tests__/schedule-retry.test.ts +53 -53
- package/src/__tests__/schedule-routes-workflow-validation.test.ts +47 -43
- package/src/__tests__/schedule-routes.test.ts +197 -187
- package/src/__tests__/schedule-store.test.ts +174 -172
- package/src/__tests__/schedule-tools.test.ts +2 -2
- package/src/__tests__/scheduler-disk-pressure.test.ts +3 -3
- package/src/__tests__/scheduler-recurrence.test.ts +15 -15
- package/src/__tests__/scheduler-reuse-conversation.test.ts +14 -14
- package/src/__tests__/scheduler-wake.test.ts +8 -8
- package/src/__tests__/scoped-approval-grants.test.ts +4 -4
- package/src/__tests__/scoped-grant-security-matrix.test.ts +4 -4
- package/src/__tests__/scrub-corrupted-image-attachments.test.ts +2 -2
- package/src/__tests__/search-skills-unified.test.ts +1 -1
- package/src/__tests__/secret-ingress-channel.test.ts +3 -3
- package/src/__tests__/secret-ingress-http.test.ts +6 -6
- package/src/__tests__/secret-routes-platform-proxy.test.ts +8 -7
- package/src/__tests__/send-endpoint-busy.test.ts +6 -6
- package/src/__tests__/sequence-store.test.ts +3 -3
- package/src/__tests__/server-history-render.test.ts +7 -4
- package/src/__tests__/settings-routes.test.ts +2 -2
- package/src/__tests__/skill-docs-sync-guard.test.ts +34 -0
- package/src/__tests__/skill-projection-feature-flag.test.ts +2 -1
- package/src/__tests__/skill-projection.benchmark.test.ts +2 -1
- package/src/__tests__/skill-version-hash.test.ts +32 -0
- 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__/slack-inbound-verification.test.ts +2 -2
- package/src/__tests__/slack-messaging-token-resolution.test.ts +2 -2
- package/src/__tests__/slack-reaction-canonical-approval.test.ts +4 -4
- package/src/__tests__/slack-share-routes.test.ts +1 -1
- package/src/__tests__/slim-skill-category.test.ts +34 -2
- package/src/__tests__/starter-task-flow.test.ts +1 -1
- package/src/__tests__/strip-memory-injections.test.ts +2 -2
- package/src/__tests__/subagent-call-site-routing.test.ts +2 -2
- package/src/__tests__/subagent-detail.test.ts +1 -1
- package/src/__tests__/subagent-fork-prompt-role.test.ts +1 -1
- package/src/__tests__/subagent-notify-parent.test.ts +3 -3
- package/src/__tests__/subagent-spawn-and-await.test.ts +1 -1
- package/src/__tests__/subagent-spawn-tool-fork.test.ts +3 -3
- package/src/__tests__/subagent-tool-gate-mode.test.ts +1 -1
- package/src/__tests__/subagent-tools.test.ts +2 -5
- package/src/__tests__/suggestion-routes.test.ts +4 -4
- package/src/__tests__/task-compiler.test.ts +2 -2
- package/src/__tests__/task-management-tools.test.ts +2 -2
- package/src/__tests__/task-memory-cleanup.test.ts +9 -7
- package/src/__tests__/task-progress-nudge-hook.test.ts +37 -94
- package/src/__tests__/task-scheduler.test.ts +26 -26
- package/src/__tests__/test-support/tool-invocation-seed.ts +5 -2
- package/src/__tests__/thread-backfill.test.ts +4 -4
- package/src/__tests__/title-generate-hook.test.ts +6 -6
- package/src/__tests__/tool-approval-handler.test.ts +4 -4
- package/src/__tests__/tool-audit-listener.test.ts +1 -1
- package/src/__tests__/tool-error-hook.test.ts +2 -0
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +5 -5
- package/src/__tests__/tool-executor-redaction.test.ts +11 -0
- package/src/__tests__/tool-executor.test.ts +24 -2
- package/src/__tests__/tool-grant-request-escalation.test.ts +5 -5
- package/src/__tests__/tool-preview-lifecycle.test.ts +77 -8
- package/src/__tests__/tool-result-metadata-plumbing.test.ts +4 -4
- package/src/__tests__/tool-result-truncate-hook.test.ts +2 -0
- package/src/__tests__/tool-side-effects-slack-dm.test.ts +1 -1
- package/src/__tests__/tool-start-timestamp.test.ts +65 -2
- package/src/__tests__/tools-get-route.test.ts +44 -1
- package/src/__tests__/trace-emitter.test.ts +1 -1
- package/src/__tests__/trust-context-guards.test.ts +1 -1
- package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +5 -5
- package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +11 -5
- package/src/__tests__/trusted-contact-multichannel.test.ts +9 -9
- package/src/__tests__/trusted-contact-verification.test.ts +8 -30
- package/src/__tests__/turn-boundary-resolution.test.ts +7 -4
- package/src/__tests__/turn-call-site.test.ts +29 -0
- package/src/__tests__/turn-events-store.test.ts +8 -5
- package/src/__tests__/twilio-routes.test.ts +3 -3
- package/src/__tests__/usage-cache-backfill-migration.test.ts +4 -8
- package/src/__tests__/usage-grouped-buckets.test.ts +1 -1
- package/src/__tests__/usage-routes.test.ts +61 -3
- package/src/__tests__/verification-control-plane-policy.test.ts +6 -6
- package/src/__tests__/voice-invite-redemption.test.ts +41 -45
- package/src/__tests__/voice-quality.test.ts +38 -12
- package/src/__tests__/voice-scoped-grant-consumer.test.ts +22 -14
- package/src/__tests__/voice-session-bridge.test.ts +16 -10
- package/src/__tests__/web-search-backend-failure.test.ts +4 -4
- package/src/__tests__/workspace-lifecycle.test.ts +29 -18
- package/src/__tests__/workspace-migration-009-backfill-conversation-disk-view.test.ts +4 -4
- package/src/__tests__/workspace-migration-013-repair-conversation-disk-view.test.ts +5 -5
- package/src/__tests__/workspace-migration-028-recover-conversations-from-disk-view.test.ts +3 -3
- package/src/__tests__/workspace-migration-113-swap-balanced-profile-to-glm-5p2.test.ts +241 -0
- package/src/__tests__/workspace-migration-114-swap-quality-profile-to-opus.test.ts +172 -0
- package/src/__tests__/workspace-migration-116-rename-memory-plugin-disabled-sentinel.test.ts +128 -0
- package/src/__tests__/workspace-migration-117-normalize-stale-lean-memory-v3-defaults.test.ts +221 -0
- package/src/__tests__/workspace-migration-backfill-installation-id.test.ts +1 -1
- package/src/__tests__/workspace-migration-drop-user-md.test.ts +84 -7
- package/src/a2a/__tests__/e2e-a2a-channel.test.ts +10 -6
- package/src/a2a/__tests__/task-store.test.ts +2 -2
- package/src/a2a/task-store.ts +4 -4
- package/src/acp/__tests__/client-handler.test.ts +680 -0
- package/src/acp/__tests__/helpers/acp-history-db.ts +32 -4
- package/src/acp/__tests__/session-manager-persistence.test.ts +215 -7
- package/src/acp/__tests__/session-manager-resume.test.ts +113 -2
- package/src/acp/__tests__/session-manager-startup.test.ts +3 -3
- package/src/acp/__tests__/session-manager-usage.test.ts +113 -0
- package/src/acp/client-handler.ts +140 -21
- package/src/acp/session-manager.ts +127 -4
- package/src/acp/types.ts +18 -0
- package/src/agent/loop.ts +200 -148
- package/src/api/events/acp-session-completed.ts +33 -0
- package/src/api/events/acp-session-error.ts +21 -0
- package/src/api/events/acp-session-spawned.ts +32 -0
- package/src/api/events/acp-session-update.test.ts +122 -0
- package/src/api/events/acp-session-update.ts +51 -0
- package/src/api/events/acp-session-usage.test.ts +49 -0
- package/src/api/events/acp-session-usage.ts +31 -0
- package/src/api/events/tool-use-preview-start.ts +11 -0
- package/src/api/events/tool-use-start.ts +14 -0
- package/src/api/index.ts +38 -0
- package/src/api/responses/conversation-message.ts +37 -1
- package/src/api/responses/llm-request-log-entry.ts +41 -0
- package/src/api/responses/memory-v3-selection-log.ts +5 -7
- package/src/approvals/approval-primitive.ts +1 -1
- package/src/approvals/guardian-card-withdrawal.ts +2 -2
- package/src/approvals/guardian-decision-primitive.ts +1 -1
- package/src/approvals/guardian-expiry-notifier.ts +1 -1
- package/src/approvals/guardian-request-resolvers.ts +4 -4
- package/src/approvals/scoped-approval-grants.ts +551 -0
- package/src/apps/app-store.ts +1058 -0
- package/src/apps/published-pages-store.ts +67 -0
- package/src/apps/shared-app-links-store.ts +130 -0
- package/src/background-wake/background-wake-routes.test.ts +53 -23
- package/src/background-wake/wake-intent-hooks.test.ts +18 -12
- package/src/backup/restore.ts +1 -1
- package/src/bundler/app-bundler.ts +1 -1
- package/src/calls/__tests__/relay-setup-router.test.ts +1 -1
- package/src/calls/call-controller.ts +5 -5
- package/src/calls/call-conversation-messages.ts +1 -1
- package/src/calls/call-domain.ts +5 -5
- package/src/calls/call-pointer-messages.ts +1 -1
- package/src/calls/call-store.ts +3 -3
- package/src/calls/guardian-action-sweep.ts +1 -1
- package/src/calls/guardian-dispatch.ts +5 -5
- package/src/calls/media-stream-server.ts +1 -1
- package/src/calls/relay-access-wait.ts +1 -1
- package/src/calls/relay-server.ts +3 -3
- package/src/calls/relay-setup-router.ts +1 -1
- package/src/calls/tts-call-strategy.ts +4 -3
- package/src/calls/voice-quality.ts +47 -59
- package/src/calls/voice-session-bridge.ts +2 -16
- package/src/channels/channel-verification-sessions.ts +557 -0
- package/src/cli/commands/__tests__/conversations-new.test.ts +186 -0
- package/src/cli/commands/__tests__/conversations-slack.test.ts +1 -1
- package/src/cli/commands/__tests__/conversations-wake.test.ts +147 -0
- package/src/cli/commands/__tests__/ps.test.ts +205 -0
- package/src/cli/commands/conversations.ts +90 -30
- package/src/cli/commands/db/__tests__/repair.test.ts +4 -3
- package/src/cli/commands/db/repair-step-conversation-backfill.ts +2 -2
- package/src/cli/commands/memory/__tests__/memory-v2-compare-render.test.ts +1 -1
- package/src/cli/commands/memory/__tests__/worker.test.ts +106 -307
- 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/cli/commands/memory/worker.ts +83 -160
- package/src/cli/commands/plugins.ts +147 -11
- package/src/cli/commands/ps.ts +90 -0
- package/src/cli/commands/tools-run.ts +114 -0
- package/src/cli/commands/tools.ts +19 -5
- package/src/cli/lib/__tests__/cli-colors.test.ts +30 -1
- package/src/cli/lib/__tests__/install-from-github.test.ts +168 -8
- package/src/cli/lib/__tests__/list-installed-plugins.test.ts +9 -4
- package/src/cli/lib/__tests__/parse-github-plugin-spec.test.ts +121 -0
- package/src/cli/lib/__tests__/toggle-plugin.test.ts +10 -4
- package/src/cli/lib/cli-colors.ts +6 -0
- package/src/cli/lib/diff-plugin.ts +3 -7
- package/src/cli/lib/inspect-plugin.ts +2 -4
- package/src/cli/lib/install-from-github.ts +96 -24
- package/src/cli/lib/merge-plugin-tree.ts +5 -3
- package/src/cli/lib/parse-github-plugin-spec.ts +163 -0
- package/src/cli/lib/plugin-fingerprint.ts +22 -0
- package/src/cli/lib/upgrade-plugin.ts +6 -5
- package/src/cli/program.ts +4 -7
- package/src/cli.ts +6 -3
- package/src/config/__tests__/deployment-context-defaults.test.ts +228 -0
- package/src/config/__tests__/proc-to-skills.test.ts +21 -0
- package/src/config/__tests__/sync-gated-profiles.test.ts +2 -2
- package/src/config/bundled-skills/AGENTS.md +11 -0
- package/src/config/bundled-skills/app-builder/SKILL.md +2 -0
- package/src/config/bundled-skills/app-builder/tools/app-create.ts +2 -2
- package/src/config/bundled-skills/app-builder/tools/app-delete.ts +2 -2
- package/src/config/bundled-skills/app-builder/tools/app-generate-icon.ts +2 -2
- package/src/config/bundled-skills/app-builder/tools/app-list.ts +1 -1
- package/src/config/bundled-skills/app-builder/tools/app-refresh.ts +2 -2
- package/src/config/bundled-skills/app-builder/tools/app-update.ts +2 -2
- package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +2 -2
- package/src/config/bundled-skills/media-processing/__tests__/extract-keyframes.test.ts +1 -1
- package/src/config/bundled-skills/media-processing/__tests__/preprocess-audio.test.ts +1 -1
- package/src/config/bundled-skills/media-processing/services/preprocess.ts +1 -1
- package/src/config/bundled-skills/media-processing/services/processing-pipeline.ts +1 -1
- package/src/config/bundled-skills/media-processing/services/reduce.ts +1 -1
- package/src/config/bundled-skills/media-processing/tools/analyze-keyframes.ts +1 -1
- package/src/config/bundled-skills/media-processing/tools/extract-keyframes.ts +1 -1
- package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +2 -2
- package/src/config/bundled-skills/media-processing/tools/ingest-media.ts +2 -2
- package/src/config/bundled-skills/media-processing/tools/media-status.ts +1 -1
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +5 -5
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +6 -6
- package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +8 -5
- package/src/config/bundled-skills/playbooks/tools/playbook-delete.ts +4 -1
- package/src/config/bundled-skills/playbooks/tools/playbook-list.ts +2 -2
- package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +7 -4
- package/src/config/bundled-skills/settings/tools/voice-config-update.ts +7 -7
- package/src/config/bundled-skills/skill-management/TOOLS.json +45 -0
- package/src/config/bundled-skills/skill-management/tools/find-similar.ts +12 -0
- package/src/config/bundled-tool-registry.ts +2 -0
- package/src/config/feature-flag-registry.json +8 -16
- package/src/config/llm-resolver.ts +17 -0
- package/src/config/loader.ts +38 -58
- package/src/config/memory-v3-gate.ts +16 -0
- package/src/config/schema.ts +2 -0
- package/src/config/schemas/__tests__/memory-v3.test.ts +16 -5
- package/src/config/schemas/conversations.ts +8 -0
- package/src/config/schemas/memory-lifecycle.ts +9 -0
- package/src/config/schemas/memory-v3.ts +56 -6
- package/src/config/schemas/migrations.ts +25 -0
- package/src/config/schemas/services.ts +0 -37
- package/src/config/seed-inference-profiles.ts +13 -50
- package/src/config/sync-gated-profiles.ts +6 -17
- package/src/contacts/__tests__/guardian-contact-reader.test.ts +89 -0
- package/src/contacts/__tests__/guardian-delivery-reader.test.ts +3 -14
- package/src/contacts/canonical-guardian-store.ts +891 -0
- package/src/contacts/contact-store.ts +11 -9
- package/src/contacts/guardian-contact-reader.ts +52 -0
- package/src/contacts/guardian-delivery-reader.ts +21 -23
- package/src/contacts/guardian-rate-limits.ts +191 -0
- package/src/contacts/notify-contacts-changed.ts +17 -0
- package/src/context/compactor.ts +3 -3
- package/src/context/strip-injections.ts +1 -1
- package/src/conversations/__tests__/message-consolidation.test.ts +10 -26
- package/src/conversations/job-handlers/summarization.ts +246 -0
- package/src/conversations/message-consolidation.ts +1 -1
- package/src/credential-execution/ces-runtime.ts +285 -0
- package/src/daemon/__tests__/conversation-lifecycle-auto-analyze.test.ts +25 -22
- package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +5 -4
- package/src/daemon/__tests__/daemon-readiness.test.ts +51 -0
- package/src/daemon/__tests__/daemon-skill-host.test.ts +1 -1
- package/src/daemon/__tests__/embedding-reconcile.test.ts +456 -0
- package/src/daemon/__tests__/inference-profile-notification.test.ts +9 -6
- package/src/daemon/__tests__/lifecycle-embedding-reconcile.test.ts +119 -0
- package/src/daemon/__tests__/memory-v2-startup.test.ts +86 -0
- package/src/daemon/__tests__/native-web-search-metadata.test.ts +2 -2
- package/src/daemon/__tests__/web-search-status-text.test.ts +3 -5
- package/src/daemon/app-source-watcher.ts +71 -10
- package/src/daemon/channel-ui-capability.ts +25 -0
- package/src/daemon/config-watcher.ts +71 -47
- package/src/daemon/conversation-agent-loop-handlers.ts +150 -23
- package/src/daemon/conversation-agent-loop.ts +84 -28
- package/src/daemon/conversation-attachments.ts +2 -2
- package/src/daemon/conversation-evictor.ts +42 -9
- package/src/daemon/conversation-history.ts +6 -6
- package/src/daemon/conversation-launch.ts +2 -2
- package/src/daemon/conversation-lifecycle.ts +7 -4
- package/src/daemon/conversation-messaging.ts +25 -11
- package/src/daemon/conversation-notifiers.ts +1 -1
- package/src/daemon/conversation-process.ts +17 -15
- package/src/daemon/conversation-queue-manager.ts +6 -0
- package/src/daemon/conversation-registry.ts +6 -5
- package/src/daemon/conversation-runtime-assembly.ts +37 -31
- package/src/daemon/conversation-skill-tools.ts +26 -2
- package/src/daemon/conversation-slash.ts +1 -1
- package/src/daemon/conversation-store.ts +44 -39
- package/src/daemon/conversation-surfaces.ts +4 -4
- package/src/daemon/conversation-tool-setup.ts +2 -1
- package/src/daemon/conversation-usage.ts +4 -2
- package/src/daemon/conversation-workspace.ts +2 -2
- package/src/daemon/conversation.ts +45 -17
- package/src/daemon/daemon-readiness.ts +33 -0
- package/src/daemon/daemon-skill-host.ts +1 -1
- package/src/daemon/embedding-reconcile.ts +340 -0
- package/src/daemon/event-loop-watchdog.ts +1 -1
- package/src/daemon/external-plugins-bootstrap.ts +80 -14
- package/src/daemon/handlers/__tests__/config-a2a-accept.test.ts +2 -2
- package/src/daemon/handlers/__tests__/config-a2a-complete.test.ts +3 -3
- package/src/daemon/handlers/__tests__/config-a2a-invite.test.ts +3 -3
- package/src/daemon/handlers/__tests__/config-a2a-redeem.test.ts +7 -11
- package/src/daemon/handlers/__tests__/config-a2a.test.ts +2 -2
- package/src/daemon/handlers/__tests__/config-channels.test.ts +17 -11
- package/src/daemon/handlers/config-a2a.ts +3 -3
- package/src/daemon/handlers/config-channels.ts +7 -4
- package/src/daemon/handlers/config-embeddings.ts +1 -1
- package/src/daemon/handlers/conversation-history.ts +2 -2
- package/src/daemon/handlers/conversations.ts +7 -4
- package/src/daemon/handlers/recording.ts +6 -3
- package/src/daemon/handlers/shared.ts +2 -0
- package/src/daemon/handlers/skills.ts +9 -1
- package/src/daemon/lifecycle.ts +890 -1208
- package/src/daemon/memory-v2-startup.test.ts +3 -3
- package/src/daemon/memory-v2-startup.ts +47 -12
- package/src/daemon/message-provenance.ts +1 -1
- package/src/daemon/message-types/acp.ts +27 -1
- package/src/daemon/message-types/bookmarks.ts +1 -1
- package/src/daemon/message-types/skills.ts +20 -2
- package/src/daemon/pointer-conversation-trust.ts +66 -0
- package/src/daemon/process-message.ts +24 -3
- package/src/daemon/providers-setup.ts +0 -14
- package/src/daemon/shutdown-handlers.ts +185 -165
- package/src/daemon/skill-memory-refresh.ts +1 -1
- package/src/daemon/status.ts +15 -0
- package/src/daemon/tool-setup-types.ts +17 -0
- package/src/daemon/tool-side-effects.ts +4 -4
- package/src/daemon/trace-emitter.ts +1 -1
- package/src/daemon/trust-context.ts +1 -1
- package/src/daemon/turn-call-site.ts +25 -0
- package/src/daemon/turn-latency-tracker.test.ts +137 -0
- package/src/daemon/turn-latency-tracker.ts +134 -0
- package/src/daemon/wake-conversation-ops.ts +11 -4
- package/src/documents/document-comments-store.test.ts +2 -2
- package/src/documents/document-comments-store.ts +1 -1
- package/src/documents/document-store.ts +1 -1
- package/src/events/tool-audit-listener.ts +4 -4
- package/src/events/tool-permission-telemetry-listener.ts +1 -1
- package/src/export/__tests__/transcript-formatter.test.ts +1 -1
- package/src/export/transcript-formatter.ts +1 -1
- package/src/followups/followup-store.ts +2 -2
- package/src/heartbeat/__tests__/heartbeat-run-store.test.ts +2 -2
- package/src/heartbeat/__tests__/heartbeat-service.test.ts +45 -39
- package/src/heartbeat/heartbeat-run-store.ts +3 -3
- package/src/heartbeat/heartbeat-service.ts +29 -11
- package/src/home/__tests__/relationship-state-writer.test.ts +1 -1
- package/src/home/__tests__/suggested-prompts.test.ts +1 -1
- package/src/home/conversation-starter-checkpoints.ts +64 -0
- package/src/home/feed-source-enrichment.ts +3 -3
- package/src/home/home-greeting-cache.ts +1 -1
- package/src/home/job-handlers/conversation-starters.ts +484 -0
- package/src/home/relationship-state-writer.ts +1 -1
- package/src/home/suggested-prompts.ts +1 -1
- package/src/hooks/hook-loader.ts +141 -6
- package/src/hooks/registry.ts +129 -0
- package/src/ipc/__tests__/attachment-ipc.test.ts +1 -1
- package/src/ipc/__tests__/cli-ipc.test.ts +1 -1
- package/src/ipc/__tests__/inject-local-actor-header.test.ts +33 -0
- package/src/ipc/__tests__/watcher-ipc.test.ts +1 -1
- package/src/ipc/assistant-server.ts +79 -33
- package/src/ipc/routes/__tests__/memory-v2-backfill.test.ts +3 -3
- package/src/ipc/routes/db-proxy-transaction.ts +1 -1
- package/src/ipc/routes/db-proxy.ts +4 -2
- package/src/ipc/skill-routes/__tests__/memory.test.ts +1 -1
- package/src/ipc/skill-routes/memory.ts +1 -1
- package/src/ipc/skill-routes/registries.ts +8 -10
- package/src/ipc/skill-server.ts +42 -6
- package/src/jobs/register-job-handlers.ts +74 -0
- package/src/jobs/worker.ts +91 -0
- package/src/live-voice/__tests__/live-voice-archive.test.ts +5 -5
- package/src/live-voice/live-voice-archive.ts +2 -2
- package/src/mcp/manager.ts +11 -0
- package/src/media/app-icon-generator.ts +1 -1
- package/src/media/job-handlers/media-processing.ts +126 -0
- package/src/messaging/channel-binding-metadata.ts +1 -1
- package/src/messaging/content/parse.test.ts +34 -0
- package/src/messaging/content/parse.ts +23 -0
- package/src/messaging/providers/__tests__/transport-dispatch.test.ts +1 -0
- package/src/messaging/providers/slack/binding-metadata.ts +1 -1
- package/src/messaging/providers/slack/render.test.ts +309 -0
- package/src/messaging/providers/slack/render.ts +459 -0
- package/src/messaging/providers/slack/send.test.ts +39 -0
- package/src/messaging/providers/slack/send.ts +38 -18
- package/src/messaging/providers/telegram-bot/adapter.ts +2 -2
- package/src/messaging/providers/telegram-bot/api.ts +17 -3
- package/src/messaging/providers/telegram-bot/render.test.ts +146 -0
- package/src/messaging/providers/telegram-bot/render.ts +292 -0
- package/src/messaging/providers/telegram-bot/send.test.ts +197 -0
- package/src/messaging/providers/telegram-bot/send.ts +70 -2
- package/src/messaging/providers/telegram-bot/transport.ts +10 -1
- package/src/messaging/providers/whatsapp/adapter.ts +2 -2
- package/src/messaging/providers/whatsapp/send.ts +1 -1
- package/src/notifications/__tests__/deterministic-checks.test.ts +3 -3
- package/src/notifications/__tests__/home-feed-side-effect.test.ts +1 -1
- package/src/notifications/broadcaster.ts +1 -1
- package/src/notifications/canonical-delivery-recorder.ts +1 -1
- package/src/notifications/conversation-candidates.ts +3 -3
- package/src/notifications/conversation-pairing.ts +25 -16
- package/src/notifications/decisions-store.ts +2 -2
- package/src/notifications/deliveries-store.ts +3 -3
- package/src/notifications/deterministic-checks.ts +2 -2
- package/src/notifications/emit-signal.ts +1 -1
- package/src/notifications/events-store.ts +2 -2
- package/src/notifications/home-feed-side-effect.ts +2 -2
- package/src/notifications/preferences-store.ts +2 -2
- package/src/notifications/signal.ts +1 -1
- package/src/oauth/oauth-store.ts +3 -3
- package/src/onboarding/__tests__/onboarding-events-store.test.ts +80 -0
- package/src/onboarding/checkin-event.test.ts +5 -2
- package/src/onboarding/checkin-event.ts +7 -1
- package/src/onboarding/onboarding-events-store.ts +161 -0
- package/src/permissions/checker.test.ts +319 -1
- package/src/permissions/checker.ts +52 -0
- package/src/permissions/types.ts +21 -0
- package/src/persistence/__tests__/db-init-migrations-ok.test.ts +20 -0
- package/src/persistence/__tests__/worker-control.test.ts +260 -0
- package/src/persistence/attachments-store.ts +1136 -0
- package/src/persistence/checkpoints.ts +65 -0
- package/src/persistence/compaction-ledger-store.ts +107 -0
- package/src/persistence/conversation-attention-store.ts +689 -0
- package/src/persistence/conversation-bootstrap.ts +59 -0
- package/src/persistence/conversation-crud.ts +3437 -0
- package/src/persistence/conversation-group-migration.test.ts +99 -0
- package/src/persistence/conversation-key-store.ts +274 -0
- package/src/persistence/conversation-queries.ts +768 -0
- package/src/persistence/conversation-row-batch-delete.ts +205 -0
- package/src/persistence/db-async-query.ts +329 -0
- package/src/persistence/db-connection.ts +242 -0
- package/src/persistence/db-init.ts +282 -0
- package/src/persistence/db-maintenance.ts +158 -0
- package/src/persistence/embeddings/__tests__/embedding-identity.test.ts +156 -0
- package/src/persistence/embeddings/__tests__/reconcile-decision.test.ts +95 -0
- package/src/persistence/embeddings/embed.ts +87 -0
- package/src/persistence/embeddings/embedding-backend.test.ts +355 -0
- package/src/persistence/embeddings/embedding-backend.ts +968 -0
- package/src/persistence/embeddings/embedding-billing-breaker.ts +96 -0
- package/src/persistence/embeddings/embedding-cache.ts +139 -0
- package/src/persistence/embeddings/embedding-identity.ts +88 -0
- package/src/persistence/embeddings/embedding-local.ts +587 -0
- package/src/persistence/embeddings/embedding-ollama.ts +79 -0
- package/src/persistence/embeddings/embedding-runtime-manager.ts +573 -0
- package/src/persistence/embeddings/embedding-types.ts +97 -0
- package/src/persistence/embeddings/qdrant-circuit-breaker.ts +119 -0
- package/src/persistence/embeddings/qdrant-client.test.ts +60 -0
- package/src/persistence/embeddings/qdrant-client.ts +842 -0
- package/src/persistence/embeddings/qdrant-manager.ts +450 -0
- package/src/persistence/embeddings/reconcile-decision.ts +53 -0
- package/src/persistence/embeddings/sparse-tokenize.ts +51 -0
- package/src/persistence/external-conversation-store.ts +315 -0
- package/src/persistence/fork-message-copy.ts +225 -0
- package/src/persistence/job-handlers/cleanup.ts +239 -0
- package/src/persistence/job-utils.ts +286 -0
- package/src/persistence/jobs-store.ts +813 -0
- package/src/persistence/jobs-worker.ts +833 -0
- package/src/persistence/llm-request-log-source-clickhouse.ts +525 -0
- package/src/persistence/llm-request-log-store.ts +740 -0
- package/src/persistence/llm-usage-store.ts +961 -0
- package/src/persistence/memory-lifecycle-hooks.test.ts +81 -0
- package/src/persistence/memory-lifecycle-hooks.ts +120 -0
- package/src/persistence/message-content.test.ts +35 -0
- package/src/persistence/migrations/126-backfill-guardian-principal-id.ts +300 -0
- package/src/persistence/migrations/140-backfill-usage-cache-accounting.ts +364 -0
- package/src/persistence/migrations/142-rename-verification-session-id-column.ts +55 -0
- package/src/persistence/migrations/182-oauth-providers-display-metadata.ts +22 -0
- package/src/persistence/migrations/196-strip-integration-prefix-from-provider-keys.ts +175 -0
- package/src/persistence/migrations/199-guardian-request-enrichment-columns.ts +50 -0
- package/src/persistence/migrations/202-memory-graph-tables.ts +128 -0
- package/src/persistence/migrations/203-drop-memory-items-tables.ts +53 -0
- package/src/persistence/migrations/206-scrub-corrupted-image-attachments.ts +121 -0
- package/src/persistence/migrations/209-strip-thinking-from-consolidated.ts +196 -0
- package/src/persistence/migrations/211-memory-recall-logs-query-context.ts +14 -0
- package/src/persistence/migrations/220-normalize-user-file-by-principal.ts +171 -0
- package/src/persistence/migrations/222-strip-placeholder-sentinels-from-messages.ts +179 -0
- package/src/persistence/migrations/236-tool-invocations-matched-rule-id.ts +23 -0
- package/src/persistence/migrations/243-provider-connections.ts +80 -0
- package/src/persistence/migrations/244-provider-connection-status-label.ts +29 -0
- package/src/persistence/migrations/246-backfill-provider-connection-label.ts +83 -0
- package/src/persistence/migrations/255-channel-inbound-delivery-attempts.ts +17 -0
- package/src/persistence/migrations/301-create-watchdog-events.ts +42 -0
- package/src/persistence/migrations/304-add-llm-usage-cron-run-id.ts +31 -0
- package/src/persistence/migrations/305-drop-contact-acl-columns.ts +49 -0
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +110 -0
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.ts +65 -0
- package/src/persistence/migrations/307-acp-session-history-usage-columns.test.ts +124 -0
- package/src/persistence/migrations/307-acp-session-history-usage-columns.ts +36 -0
- package/src/persistence/migrations/308-acp-session-history-token-columns.test.ts +119 -0
- package/src/persistence/migrations/308-acp-session-history-token-columns.ts +32 -0
- package/src/persistence/migrations/309-drop-redundant-indexes.ts +60 -0
- package/src/persistence/migrations/310-llm-request-log-latency-breakdown.ts +37 -0
- package/src/persistence/migrations/__tests__/209-strip-thinking-from-consolidated.test.ts +328 -0
- package/src/persistence/migrations/__tests__/222-strip-placeholder-sentinels-from-messages.test.ts +273 -0
- package/src/persistence/migrations/__tests__/244-provider-connection-status-label.test.ts +90 -0
- package/src/persistence/migrations/__tests__/246-backfill-provider-connection-label.test.ts +250 -0
- package/src/persistence/migrations/__tests__/run-migrations.test.ts +380 -0
- package/src/persistence/migrations/helpers/relocation.ts +230 -0
- package/src/persistence/migrations/validate-migration-state.ts +279 -0
- package/src/persistence/schedule-attribution-sql.ts +106 -0
- package/src/persistence/schema/acp.ts +51 -0
- package/src/persistence/schema/contacts.ts +110 -0
- package/src/persistence/schema/conversations.ts +235 -0
- package/src/persistence/schema/infrastructure.ts +389 -0
- package/src/persistence/steps.ts +1310 -0
- package/src/persistence/worker-control.ts +277 -0
- package/src/platform/sync-identity.ts +24 -0
- package/src/playbooks/playbook-compiler.ts +2 -2
- package/src/plugin-api/index.ts +5 -0
- package/src/plugin-api/types.ts +40 -15
- package/src/plugins/defaults/channel/injectors.ts +101 -0
- package/src/plugins/defaults/channel/package.json +14 -0
- package/src/plugins/defaults/compaction/compact.ts +2 -1
- package/src/plugins/defaults/compaction/context-overflow-reducer.ts +2 -1
- package/src/plugins/defaults/compaction/window-manager.ts +8 -7
- package/src/plugins/defaults/documents/injectors.ts +125 -0
- package/src/plugins/defaults/documents/package.json +14 -0
- package/src/plugins/defaults/empty-response/hooks/post-model-call.ts +6 -2
- package/src/plugins/defaults/exploration-drift/hooks/post-tool-use.ts +10 -11
- package/src/plugins/defaults/history-repair/terminal.ts +1 -1
- package/src/plugins/defaults/image-fallback/__tests__/image-fallback.test.ts +23 -9
- package/src/plugins/defaults/image-fallback/hooks/user-prompt-submit.ts +2 -3
- package/src/plugins/defaults/image-fallback/src/caption-blocks.ts +7 -14
- package/src/plugins/defaults/image-fallback/src/vision-caption.ts +12 -4
- package/src/plugins/defaults/image-recovery/recover.ts +6 -3
- package/src/plugins/defaults/index.ts +235 -43
- package/src/plugins/defaults/injection-presence.ts +80 -0
- package/src/plugins/defaults/injector-order.ts +54 -0
- package/src/plugins/defaults/max-tokens-continue/hooks/post-model-call.ts +5 -2
- package/src/plugins/defaults/memory/__tests__/301-create-watchdog-events.test.ts +110 -0
- package/src/plugins/defaults/memory/__tests__/activation-session-store.test.ts +41 -0
- package/src/plugins/defaults/memory/__tests__/bookmark-crud.test.ts +264 -0
- package/src/plugins/defaults/memory/__tests__/bookmark-schema.test.ts +181 -0
- package/src/plugins/defaults/memory/__tests__/clear-stale-processing-flags.test.ts +52 -0
- package/src/plugins/defaults/memory/__tests__/compaction-log-store-clickhouse.test.ts +432 -0
- package/src/plugins/defaults/memory/__tests__/conversation-queries.test.ts +843 -0
- package/src/plugins/defaults/memory/__tests__/conversation-row-batch-delete.test.ts +199 -0
- package/src/plugins/defaults/memory/__tests__/conversation-types.test.ts +36 -0
- package/src/plugins/defaults/memory/__tests__/db-async-query.test.ts +172 -0
- package/src/plugins/defaults/memory/__tests__/db-busy-timeout.test.ts +26 -0
- package/src/plugins/defaults/memory/__tests__/db-logs-attach.test.ts +113 -0
- package/src/plugins/defaults/memory/__tests__/db-maintenance.test.ts +238 -0
- package/src/plugins/defaults/memory/__tests__/db-memory-attach.test.ts +116 -0
- package/src/plugins/defaults/memory/__tests__/embedding-cache.test.ts +137 -0
- package/src/plugins/defaults/memory/__tests__/find-analysis-conversation.test.ts +197 -0
- package/src/plugins/defaults/memory/__tests__/find-most-recent-retrospective-for.test.ts +140 -0
- package/src/plugins/defaults/memory/__tests__/fork-message-copy.test.ts +232 -0
- package/src/plugins/defaults/memory/__tests__/jobs-store-enqueue-gate.test.ts +245 -0
- package/src/plugins/defaults/memory/__tests__/jobs-store-job-classes.test.ts +52 -0
- package/src/plugins/defaults/memory/__tests__/jobs-worker-v2-graph-trigger-embed.test.ts +115 -0
- package/src/plugins/defaults/memory/__tests__/jobs-worker-v2-schedule.test.ts +508 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-enqueue.test.ts +160 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +1565 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-startup-cleanup.test.ts +549 -0
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-state.test.ts +195 -0
- package/src/plugins/defaults/memory/__tests__/memory-v2-activation-log-store.test.ts +221 -0
- package/src/plugins/defaults/memory/__tests__/memory-v2-concept-frequency.test.ts +275 -0
- package/src/plugins/defaults/memory/__tests__/memory-v3-selections-migration.test.ts +103 -0
- package/src/plugins/defaults/memory/__tests__/prompt-override.test.ts +192 -0
- package/src/plugins/defaults/memory/__tests__/qdrant-client-sentinel.test.ts +49 -0
- package/src/plugins/defaults/memory/__tests__/table-relocation.test.ts +130 -0
- package/src/plugins/defaults/memory/activation-session-store.ts +43 -0
- package/src/plugins/defaults/memory/anisotropy.ts +443 -0
- package/src/plugins/defaults/memory/context-search/agent-protocol.ts +428 -0
- package/src/plugins/defaults/memory/context-search/agent-runner.ts +1311 -0
- package/src/plugins/defaults/memory/context-search/search.ts +297 -0
- package/src/plugins/defaults/memory/context-search/sources/conversations.ts +341 -0
- package/src/plugins/defaults/memory/context-search/sources/memory-v2.ts +600 -0
- package/src/plugins/defaults/memory/context-search/sources/memory.ts +101 -0
- package/src/plugins/defaults/memory/context-search/types.ts +48 -0
- package/src/plugins/defaults/memory/filing-service.ts +430 -0
- package/src/plugins/defaults/memory/graph/__tests__/conversation-graph-memory-registry.test.ts +119 -0
- package/src/plugins/defaults/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +663 -0
- package/src/plugins/defaults/memory/graph/__tests__/handle-remember-v2.test.ts +321 -0
- package/src/plugins/defaults/memory/graph/bootstrap.test.ts +287 -0
- package/src/plugins/defaults/memory/graph/bootstrap.ts +544 -0
- package/src/plugins/defaults/memory/graph/capability-seed.ts +454 -0
- package/src/plugins/defaults/memory/graph/consolidation.ts +712 -0
- package/src/plugins/defaults/memory/graph/conversation-graph-memory.ts +1181 -0
- package/src/plugins/defaults/memory/graph/decay.ts +195 -0
- package/src/plugins/defaults/memory/graph/extraction-job.ts +77 -0
- package/src/plugins/defaults/memory/graph/extraction.ts +1462 -0
- package/src/plugins/defaults/memory/graph/graph-memory-state-store.ts +50 -0
- package/src/plugins/defaults/memory/graph/graph-search.test.ts +132 -0
- package/src/plugins/defaults/memory/graph/graph-search.ts +294 -0
- package/src/plugins/defaults/memory/graph/image-ref-utils.ts +29 -0
- package/src/plugins/defaults/memory/graph/injection.ts +469 -0
- package/src/plugins/defaults/memory/graph/narrative.ts +267 -0
- package/src/plugins/defaults/memory/graph/pattern-scan.ts +269 -0
- package/src/plugins/defaults/memory/graph/retriever.test.ts +624 -0
- package/src/plugins/defaults/memory/graph/retriever.ts +1357 -0
- package/src/plugins/defaults/memory/graph/store.test.ts +1093 -0
- package/src/plugins/defaults/memory/graph/store.ts +923 -0
- package/src/plugins/defaults/memory/graph/tool-handlers.ts +195 -0
- package/src/plugins/defaults/memory/graph/tools.ts +95 -0
- package/src/plugins/defaults/memory/hooks/init.ts +26 -0
- package/src/plugins/defaults/memory/hooks/post-compact.ts +115 -0
- package/src/plugins/defaults/memory/hooks/shutdown.ts +14 -0
- package/src/plugins/defaults/memory/hooks/user-prompt-submit.ts +371 -0
- package/src/plugins/defaults/memory/indexer.ts +409 -0
- package/src/plugins/defaults/memory/injectors.ts +388 -0
- package/src/plugins/defaults/memory/job-handlers/backfill.ts +107 -0
- package/src/plugins/defaults/memory/job-handlers/embedding.test.ts +236 -0
- package/src/plugins/defaults/memory/job-handlers/embedding.ts +133 -0
- package/src/plugins/defaults/memory/job-handlers/index-maintenance.ts +117 -0
- package/src/plugins/defaults/memory/job-handlers.ts +203 -0
- package/src/plugins/defaults/memory/jobs/__tests__/embed-concept-page.test.ts +565 -0
- package/src/plugins/defaults/memory/jobs/embed-concept-page.ts +424 -0
- package/src/plugins/defaults/memory/jobs/embed-pkb-file.test.ts +169 -0
- package/src/plugins/defaults/memory/jobs/embed-pkb-file.ts +59 -0
- package/src/plugins/defaults/memory/memory-recall-log-store.ts +172 -0
- package/src/plugins/defaults/memory/memory-retrospective-constants.ts +60 -0
- package/src/plugins/defaults/memory/memory-retrospective-enqueue.ts +131 -0
- package/src/plugins/defaults/memory/memory-retrospective-fork-boundary.ts +94 -0
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +958 -0
- package/src/plugins/defaults/memory/memory-retrospective-startup-cleanup.ts +264 -0
- package/src/plugins/defaults/memory/memory-retrospective-state.ts +259 -0
- package/src/plugins/defaults/memory/memory-retrospective-trigger-check.ts +91 -0
- package/src/plugins/defaults/memory/memory-v2-activation-log-store.ts +216 -0
- package/src/plugins/defaults/memory/memory-v2-concept-frequency.ts +173 -0
- package/src/plugins/defaults/memory/package.json +14 -0
- package/src/plugins/defaults/memory/persistence-hooks.ts +119 -0
- package/src/plugins/defaults/memory/pkb/autoinject.ts +61 -0
- package/src/plugins/defaults/memory/pkb/context.ts +50 -0
- package/src/plugins/defaults/memory/pkb/pkb-index.test.ts +371 -0
- package/src/plugins/defaults/memory/pkb/pkb-index.ts +256 -0
- package/src/plugins/defaults/memory/pkb/pkb-reconcile.test.ts +254 -0
- package/src/plugins/defaults/memory/pkb/pkb-reconcile.ts +144 -0
- package/src/plugins/defaults/memory/pkb/pkb-search.test.ts +589 -0
- package/src/plugins/defaults/memory/pkb/pkb-search.ts +178 -0
- package/src/plugins/defaults/memory/pkb/types.ts +67 -0
- package/src/plugins/defaults/memory/rerank-local.ts +374 -0
- package/src/plugins/defaults/memory/routes/__tests__/memory-v2-routes.test.ts +165 -0
- package/src/plugins/defaults/memory/routes/__tests__/memory-v2-simulate-route.test.ts +347 -0
- package/src/plugins/defaults/memory/routes/memory-eval-routes.ts +179 -0
- package/src/plugins/defaults/memory/routes/memory-item-routes.test.ts +922 -0
- package/src/plugins/defaults/memory/routes/memory-item-routes.ts +814 -0
- package/src/plugins/defaults/memory/routes/memory-v2-routes.ts +850 -0
- package/src/plugins/defaults/memory/routes/memory-v3-routes.ts +125 -0
- package/src/plugins/defaults/memory/search/semantic.ts +241 -0
- package/src/plugins/defaults/memory/segmenter.ts +76 -0
- package/src/plugins/defaults/memory/tail-reinjection-strip.ts +65 -0
- package/src/plugins/defaults/memory/task-memory-cleanup.ts +241 -0
- package/src/plugins/defaults/memory/tools.test.ts +382 -0
- package/src/plugins/defaults/memory/tools.ts +87 -0
- package/src/plugins/defaults/memory/v2/__tests__/activation-store.test.ts +207 -0
- package/src/plugins/defaults/memory/v2/__tests__/activation.test.ts +1273 -0
- package/src/plugins/defaults/memory/v2/__tests__/backfill-jobs.test.ts +510 -0
- package/src/plugins/defaults/memory/v2/__tests__/cli-command-store.test.ts +432 -0
- package/src/plugins/defaults/memory/v2/__tests__/consolidation-job.test.ts +744 -0
- package/src/plugins/defaults/memory/v2/__tests__/consolidation-prompt-flag-gating-guard.test.ts +205 -0
- package/src/plugins/defaults/memory/v2/__tests__/frontmatter-sweep.test.ts +136 -0
- package/src/plugins/defaults/memory/v2/__tests__/harness-compare.test.ts +186 -0
- package/src/plugins/defaults/memory/v2/__tests__/harness-oracle.test.ts +257 -0
- package/src/plugins/defaults/memory/v2/__tests__/harness-replay-input.test.ts +230 -0
- package/src/plugins/defaults/memory/v2/__tests__/harness-runner.test.ts +135 -0
- package/src/plugins/defaults/memory/v2/__tests__/injection-events.test.ts +318 -0
- package/src/plugins/defaults/memory/v2/__tests__/injection.test.ts +2308 -0
- package/src/plugins/defaults/memory/v2/__tests__/migration.test.ts +940 -0
- package/src/plugins/defaults/memory/v2/__tests__/page-index.test.ts +760 -0
- package/src/plugins/defaults/memory/v2/__tests__/prompts-consolidation.test.ts +332 -0
- package/src/plugins/defaults/memory/v2/__tests__/qdrant.test.ts +974 -0
- package/src/plugins/defaults/memory/v2/__tests__/reranker.test.ts +338 -0
- package/src/plugins/defaults/memory/v2/__tests__/router.test.ts +1198 -0
- package/src/plugins/defaults/memory/v2/__tests__/sim.test.ts +704 -0
- package/src/plugins/defaults/memory/v2/__tests__/skill-content.test.ts +115 -0
- package/src/plugins/defaults/memory/v2/__tests__/skill-store.test.ts +986 -0
- package/src/plugins/defaults/memory/v2/__tests__/sparse-bm25.test.ts +292 -0
- package/src/plugins/defaults/memory/v2/__tests__/static-context.test.ts +223 -0
- package/src/plugins/defaults/memory/v2/__tests__/sweep-job.test.ts +530 -0
- package/src/plugins/defaults/memory/v2/activation-store.ts +185 -0
- package/src/plugins/defaults/memory/v2/activation.ts +560 -0
- package/src/plugins/defaults/memory/v2/backfill-jobs.ts +296 -0
- package/src/plugins/defaults/memory/v2/cli-command-store.ts +341 -0
- package/src/plugins/defaults/memory/v2/consolidation-job.ts +550 -0
- package/src/plugins/defaults/memory/v2/frontmatter-sweep.ts +98 -0
- package/src/plugins/defaults/memory/v2/harness/compare.ts +57 -0
- package/src/plugins/defaults/memory/v2/harness/oracle.ts +148 -0
- package/src/plugins/defaults/memory/v2/harness/replay-input.ts +243 -0
- package/src/plugins/defaults/memory/v2/harness/retriever.ts +74 -0
- package/src/plugins/defaults/memory/v2/harness/router-retriever.ts +43 -0
- package/src/plugins/defaults/memory/v2/injected-block-slugs.ts +79 -0
- package/src/plugins/defaults/memory/v2/injection-events.ts +101 -0
- package/src/plugins/defaults/memory/v2/injection.ts +932 -0
- package/src/plugins/defaults/memory/v2/migration.ts +774 -0
- package/src/plugins/defaults/memory/v2/page-index.ts +459 -0
- package/src/plugins/defaults/memory/v2/page-store.ts +443 -0
- package/src/plugins/defaults/memory/v2/prompts/consolidation.ts +868 -0
- package/src/plugins/defaults/memory/v2/prompts/router.ts +148 -0
- package/src/plugins/defaults/memory/v2/qdrant.ts +939 -0
- package/src/plugins/defaults/memory/v2/reranker.ts +184 -0
- package/src/plugins/defaults/memory/v2/router.ts +602 -0
- package/src/plugins/defaults/memory/v2/sim.ts +310 -0
- package/src/plugins/defaults/memory/v2/skill-content.ts +61 -0
- package/src/plugins/defaults/memory/v2/skill-store.ts +431 -0
- package/src/plugins/defaults/memory/v2/sparse-bm25.ts +245 -0
- package/src/plugins/defaults/memory/v2/static-context.ts +100 -0
- package/src/plugins/defaults/memory/v2/sweep-job.ts +323 -0
- package/src/plugins/defaults/memory/v3/__tests__/candidate-match.test.ts +316 -0
- package/src/plugins/defaults/memory/v3/__tests__/carry-integration.test.ts +1163 -0
- package/src/plugins/defaults/memory/v3/__tests__/dense.test.ts +211 -0
- package/src/plugins/defaults/memory/v3/__tests__/edge.test.ts +247 -0
- package/src/plugins/defaults/memory/v3/__tests__/injection.test.ts +685 -0
- package/src/plugins/defaults/memory/v3/__tests__/live-integration.test.ts +365 -0
- package/src/plugins/defaults/memory/v3/__tests__/maintain-job.test.ts +1012 -0
- package/src/plugins/defaults/memory/v3/__tests__/orchestrate.test.ts +977 -0
- package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +599 -0
- package/src/plugins/defaults/memory/v3/__tests__/render-injection.test.ts +128 -0
- package/src/plugins/defaults/memory/v3/__tests__/section-dense-store.test.ts +756 -0
- package/src/plugins/defaults/memory/v3/__tests__/selection-log-store.test.ts +422 -0
- package/src/plugins/defaults/memory/v3/__tests__/shadow-integration.test.ts +501 -0
- package/src/plugins/defaults/memory/v3/__tests__/shadow-plugin.test.ts +885 -0
- package/src/plugins/defaults/memory/v3/__tests__/tuning-profile.test.ts +96 -0
- package/src/plugins/defaults/memory/v3/candidate-match.ts +197 -0
- package/src/plugins/defaults/memory/v3/capabilities.ts +88 -0
- package/src/plugins/defaults/memory/v3/card.ts +160 -0
- package/src/plugins/defaults/memory/v3/dense.ts +108 -0
- package/src/plugins/defaults/memory/v3/edge.ts +252 -0
- 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/ever-injected-store.test.ts +307 -0
- package/src/plugins/defaults/memory/v3/ever-injected-store.ts +278 -0
- package/src/plugins/defaults/memory/v3/hot-set.test.ts +143 -0
- package/src/plugins/defaults/memory/v3/hot-set.ts +85 -0
- package/src/plugins/defaults/memory/v3/injector.ts +423 -0
- package/src/plugins/defaults/memory/v3/learned-edges.test.ts +169 -0
- package/src/plugins/defaults/memory/v3/learned-edges.ts +178 -0
- package/src/plugins/defaults/memory/v3/maintain-job.ts +988 -0
- package/src/plugins/defaults/memory/v3/orchestrate.ts +483 -0
- package/src/plugins/defaults/memory/v3/page-content.ts +102 -0
- package/src/plugins/defaults/memory/v3/pool-select.test.ts +147 -0
- package/src/plugins/defaults/memory/v3/pool-select.ts +586 -0
- package/src/plugins/defaults/memory/v3/prune.test.ts +760 -0
- package/src/plugins/defaults/memory/v3/prune.ts +469 -0
- package/src/plugins/defaults/memory/v3/render-injection.ts +92 -0
- package/src/plugins/defaults/memory/v3/section-dense-store.ts +471 -0
- package/src/plugins/defaults/memory/v3/section-needle.ts +215 -0
- package/src/plugins/defaults/memory/v3/selection-log-store.ts +277 -0
- package/src/plugins/defaults/memory/v3/shadow-plugin.ts +656 -0
- package/src/plugins/defaults/memory/v3/tuning-profile.ts +91 -0
- package/src/plugins/defaults/memory/v3/types.ts +130 -0
- package/src/plugins/defaults/memory/v3-eval/eval-packets.ts +731 -0
- package/src/plugins/defaults/session/injectors.ts +84 -0
- package/src/plugins/defaults/session/package.json +14 -0
- package/src/plugins/defaults/surface-completion-nudge/hooks/post-model-call.ts +6 -2
- package/src/plugins/defaults/task-progress-nudge/hooks/post-tool-use.ts +39 -45
- package/src/plugins/defaults/title-generate/hooks/stop.ts +4 -5
- package/src/plugins/defaults/title-generate/hooks/user-prompt-submit.ts +3 -3
- package/src/plugins/defaults/tool-error/hooks/post-tool-use.ts +5 -3
- package/src/plugins/defaults/turn-context/injectors.ts +52 -0
- package/src/plugins/defaults/turn-context/package.json +14 -0
- package/src/plugins/defaults/workspace/injectors.ts +295 -0
- package/src/plugins/defaults/workspace/package.json +14 -0
- package/src/plugins/injector-registry.ts +127 -0
- package/src/plugins/job-handler-registry.ts +94 -0
- package/src/plugins/mtime-cache.ts +1 -1
- package/src/plugins/pipeline.ts +1 -1
- package/src/plugins/registry.ts +37 -172
- package/src/plugins/types.ts +36 -1
- package/src/prompts/system-prompt.ts +1 -1
- package/src/providers/__tests__/connection-model-compat.test.ts +1 -1
- package/src/providers/__tests__/dispatch-connection-routing.test.ts +1 -1
- package/src/providers/__tests__/inference.test.ts +6 -6
- package/src/providers/__tests__/placeholder-sentinels.test.ts +80 -0
- package/src/providers/__tests__/retry-callsite.test.ts +31 -3
- package/src/providers/__tests__/satellite-connection-routing.test.ts +1 -1
- package/src/providers/anthropic/client.ts +23 -24
- package/src/providers/call-site-routing.ts +1 -1
- package/src/providers/connection-resolution.ts +7 -3
- package/src/providers/inference/__tests__/base-url-route-validation.test.ts +7 -8
- package/src/providers/inference/__tests__/base-url-security.test.ts +8 -8
- package/src/providers/inference/__tests__/connections-label.test.ts +5 -5
- package/src/providers/inference/__tests__/connections-openai-compatible.test.ts +4 -4
- package/src/providers/inference/backfill.ts +9 -5
- package/src/providers/inference/connections.ts +2 -2
- package/src/providers/inference/resolve-auth.ts +3 -3
- package/src/providers/model-catalog.ts +38 -0
- package/src/providers/placeholder-sentinels.ts +50 -15
- package/src/providers/provider-send-message.ts +1 -1
- package/src/providers/registry.ts +2 -0
- package/src/providers/retry.ts +16 -0
- package/src/providers/stop-reasons.ts +32 -0
- package/src/providers/usage-tracking.ts +1 -1
- package/src/runtime/__tests__/agent-wake.test.ts +100 -29
- package/src/runtime/__tests__/background-job-runner.test.ts +19 -2
- package/src/runtime/__tests__/channel-verification-service.test.ts +9 -5
- package/src/runtime/__tests__/guardian-vellum-migration.test.ts +7 -5
- package/src/runtime/__tests__/is-guardian-bound-for-channel.test.ts +3 -3
- package/src/runtime/__tests__/pre-first-message-gate.test.ts +1 -1
- package/src/runtime/access-request-helper.ts +3 -3
- package/src/runtime/agent-wake.ts +56 -11
- package/src/runtime/assistant-event-hub.ts +1 -1
- package/src/runtime/background-job-runner.ts +30 -10
- package/src/runtime/channel-reply-delivery.ts +3 -3
- package/src/runtime/channel-retry-sweep.ts +23 -3
- package/src/runtime/channel-verification-service.ts +9 -9
- package/src/runtime/confirmation-request-guardian-bridge.ts +1 -1
- package/src/runtime/finalize-event-delivery.ts +2 -2
- package/src/runtime/guardian-action-service.ts +1 -2
- package/src/runtime/guardian-reply-router.ts +1 -1
- package/src/runtime/http-server.ts +45 -1
- package/src/runtime/invite-redemption-service.ts +11 -3
- package/src/runtime/invite-service.ts +6 -4
- package/src/runtime/migrations/vbundle-streaming-importer.ts +1 -1
- package/src/runtime/pre-first-message-gate.ts +1 -1
- package/src/runtime/routes/__tests__/acp-routes.test.ts +74 -8
- package/src/runtime/routes/__tests__/backup-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/bookmark-routes.test.ts +3 -3
- package/src/runtime/routes/__tests__/channel-verification-revoke.test.ts +17 -23
- package/src/runtime/routes/__tests__/connection-routes-vs-cli-parity.test.ts +3 -3
- package/src/runtime/routes/__tests__/consolidation-routes.test.ts +5 -5
- package/src/runtime/routes/__tests__/contact-routes.test.ts +90 -9
- package/src/runtime/routes/__tests__/conversation-compaction-routes.test.ts +5 -5
- package/src/runtime/routes/__tests__/conversation-list-routes.test.ts +5 -5
- package/src/runtime/routes/__tests__/conversation-management-routes.test.ts +3 -3
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +12 -12
- package/src/runtime/routes/__tests__/conversation-surface-routes.test.ts +4 -4
- package/src/runtime/routes/__tests__/home-feed-routes.test.ts +3 -3
- package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +3 -3
- package/src/runtime/routes/__tests__/invite-relay-routes.test.ts +21 -7
- package/src/runtime/routes/__tests__/memory-worker-routes.test.ts +306 -0
- package/src/runtime/routes/__tests__/ps-routes.test.ts +114 -0
- package/src/runtime/routes/__tests__/retrospective-routes.test.ts +6 -6
- package/src/runtime/routes/__tests__/slack-channel-routes.test.ts +4 -4
- package/src/runtime/routes/__tests__/surface-action-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/surface-content-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/wake-conversation-routes.test.ts +125 -0
- package/src/runtime/routes/acp-routes-event-log.test.ts +283 -0
- package/src/runtime/routes/acp-routes-list.test.ts +24 -25
- package/src/runtime/routes/acp-routes.test.ts +4 -4
- package/src/runtime/routes/acp-routes.ts +31 -4
- package/src/runtime/routes/app-management-routes.ts +9 -9
- package/src/runtime/routes/app-routes.ts +3 -7
- package/src/runtime/routes/approval-routes.ts +2 -4
- package/src/runtime/routes/attachment-routes.ts +2 -2
- package/src/runtime/routes/audit-routes.ts +2 -3
- package/src/runtime/routes/background-wake-routes.ts +19 -5
- package/src/runtime/routes/backup-routes.ts +1 -1
- package/src/runtime/routes/bookmark-routes.ts +3 -3
- package/src/runtime/routes/brain-graph-routes.ts +2 -2
- package/src/runtime/routes/btw-routes.ts +1 -1
- package/src/runtime/routes/canonical-guardian-expiry-sweep.ts +1 -1
- package/src/runtime/routes/channel-delivery-routes.ts +1 -1
- package/src/runtime/routes/channel-readiness-routes.ts +7 -3
- package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +3 -8
- package/src/runtime/routes/consolidation-routes.ts +6 -6
- package/src/runtime/routes/contact-routes.ts +66 -15
- package/src/runtime/routes/conversation-attention-routes.ts +2 -2
- package/src/runtime/routes/conversation-cli-routes.ts +32 -7
- package/src/runtime/routes/conversation-compaction-routes.ts +4 -4
- package/src/runtime/routes/conversation-list-routes.ts +9 -9
- package/src/runtime/routes/conversation-management-routes.ts +9 -9
- package/src/runtime/routes/conversation-query-routes.ts +34 -11
- package/src/runtime/routes/conversation-routes.ts +99 -16
- package/src/runtime/routes/conversation-starter-routes.ts +11 -5
- package/src/runtime/routes/conversations-import-routes.ts +10 -6
- package/src/runtime/routes/debug-routes.ts +3 -3
- package/src/runtime/routes/defer-routes.ts +4 -4
- package/src/runtime/routes/documents-routes.ts +1 -1
- package/src/runtime/routes/empty-state-greeting-cache.ts +1 -1
- package/src/runtime/routes/events-routes.ts +4 -4
- package/src/runtime/routes/filing-routes.ts +1 -1
- package/src/runtime/routes/global-search-routes.ts +4 -4
- package/src/runtime/routes/group-routes.ts +1 -1
- package/src/runtime/routes/guardian-action-routes.ts +1 -1
- package/src/runtime/routes/heartbeat-routes.ts +2 -2
- package/src/runtime/routes/home-feed-routes.ts +10 -5
- package/src/runtime/routes/identity-routes.ts +33 -14
- package/src/runtime/routes/inbound-conversation.ts +3 -3
- package/src/runtime/routes/inbound-message-handler.ts +25 -25
- package/src/runtime/routes/inbound-stages/acl-enforcement.test.ts +8 -4
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +13 -6
- package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +5 -5
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +11 -11
- package/src/runtime/routes/inbound-stages/edit-intercept.ts +12 -12
- package/src/runtime/routes/inbound-stages/escalation-intercept.ts +2 -2
- package/src/runtime/routes/inbound-stages/guardian-reply-intercept.test.ts +1 -1
- package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +1 -1
- package/src/runtime/routes/inbound-stages/reaction-intercept.ts +8 -8
- package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +5 -2
- package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +1 -1
- package/src/runtime/routes/inbound-stages/transcribe-audio.ts +1 -1
- package/src/runtime/routes/index.ts +6 -4
- package/src/runtime/routes/inference-profile-session-handler.ts +2 -2
- package/src/runtime/routes/inference-profile-session-reaper.ts +1 -1
- package/src/runtime/routes/inference-provider-connection-routes.ts +5 -2
- package/src/runtime/routes/integrations/slack/__tests__/share.test.ts +3 -4
- package/src/runtime/routes/integrations/slack/share.ts +1 -1
- package/src/runtime/routes/internal-telemetry-routes.ts +1 -1
- package/src/runtime/routes/log-export/__tests__/workspace-allowlist-error-contract.test.ts +1 -1
- package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
- package/src/runtime/routes/log-export-routes.ts +2 -2
- package/src/runtime/routes/memory-worker-routes.ts +227 -0
- package/src/runtime/routes/migration-rollback-routes.ts +11 -12
- package/src/runtime/routes/migration-routes.ts +143 -5
- package/src/runtime/routes/notification-routes.ts +2 -2
- package/src/runtime/routes/platform-routes.ts +3 -0
- package/src/runtime/routes/playground/helpers.ts +3 -3
- package/src/runtime/routes/ps-routes.ts +37 -66
- package/src/runtime/routes/publish-routes.ts +3 -3
- package/src/runtime/routes/rename-conversation-routes.ts +1 -1
- package/src/runtime/routes/retrospective-routes.ts +5 -5
- package/src/runtime/routes/schedule-routes.ts +42 -40
- package/src/runtime/routes/secret-routes.ts +10 -9
- package/src/runtime/routes/sequence-routes.ts +1 -1
- package/src/runtime/routes/settings-routes.ts +18 -9
- package/src/runtime/routes/skills-routes.ts +11 -1
- package/src/runtime/routes/slack-channel-routes.ts +4 -4
- package/src/runtime/routes/subagents-routes.ts +2 -2
- package/src/runtime/routes/surface-conversation-resolver.ts +1 -1
- package/src/runtime/routes/task-routes.ts +18 -29
- package/src/runtime/routes/telemetry-routes.ts +1 -1
- package/src/runtime/routes/trace-event-routes.ts +1 -1
- package/src/runtime/routes/types.ts +7 -0
- package/src/runtime/routes/usage-routes.ts +2 -2
- package/src/runtime/routes/wake-conversation-routes.ts +44 -8
- package/src/runtime/routes/wipe-conversation-routes.ts +3 -3
- package/src/runtime/routes/work-items-routes.test.ts +1 -1
- package/src/runtime/routes/work-items-routes.ts +1 -1
- package/src/runtime/services/__tests__/analyze-conversation.test.ts +2 -2
- package/src/runtime/services/__tests__/auto-analysis-enqueue.test.ts +362 -0
- package/src/runtime/services/__tests__/auto-analysis-guard.test.ts +57 -0
- package/src/runtime/services/__tests__/conversation-analyze-job.test.ts +178 -0
- package/src/runtime/services/__tests__/conversation-serializer.test.ts +1 -1
- package/src/runtime/services/analyze-conversation.ts +22 -13
- package/src/runtime/services/auto-analysis-enqueue.ts +130 -0
- package/src/runtime/services/auto-analysis-guard.ts +13 -0
- package/src/runtime/services/conversation-analyze-job.ts +53 -0
- package/src/runtime/services/conversation-serializer.ts +5 -5
- package/src/runtime/tool-grant-request-helper.ts +1 -1
- package/src/schedule/retry-policy.ts +8 -8
- package/src/schedule/run-script.ts +7 -2
- package/src/schedule/schedule-recovery.ts +8 -5
- package/src/schedule/schedule-store.ts +270 -162
- package/src/schedule/schedule-usage-store.ts +2 -2
- package/src/schedule/scheduler-types.ts +6 -0
- package/src/schedule/scheduler.ts +189 -59
- package/src/security/auth-fallback-events-store.ts +94 -0
- package/src/security/redaction.ts +18 -14
- package/src/sequence/engine.ts +1 -1
- package/src/sequence/store.ts +3 -3
- package/src/services/published-app-updater.ts +2 -2
- package/src/signals/cancel.ts +1 -1
- package/src/signals/user-message.ts +2 -2
- package/src/skills/catalog-install.ts +2 -1
- package/src/skills/clawhub.ts +1 -0
- package/src/skills/install-meta.ts +44 -0
- package/src/skills/managed-store.ts +101 -3
- package/src/skills/skillssh-registry.ts +1 -0
- package/src/skills/version-hash.ts +20 -0
- package/src/subagent/manager.ts +5 -4
- package/src/tasks/task-compiler.ts +2 -2
- package/src/tasks/task-runner.ts +3 -3
- package/src/tasks/task-store.ts +2 -2
- package/src/telemetry/__tests__/watchdog-events-store.test.ts +161 -0
- package/src/telemetry/skill-loaded-events-store.test.ts +152 -0
- package/src/telemetry/skill-loaded-events-store.ts +95 -0
- package/src/telemetry/tool-executed-events-store.test.ts +219 -0
- package/src/telemetry/tool-executed-events-store.ts +102 -0
- package/src/telemetry/tool-usage-store.ts +114 -0
- package/src/telemetry/trace-event-store.ts +133 -0
- package/src/telemetry/turn-events-store.ts +173 -0
- package/src/telemetry/turn-trace-store.test.ts +736 -0
- package/src/telemetry/turn-trace-store.ts +364 -0
- package/src/telemetry/usage-telemetry-reporter.test.ts +12 -12
- package/src/telemetry/usage-telemetry-reporter.ts +46 -17
- package/src/telemetry/watchdog-events-store.ts +87 -0
- package/src/tools/__tests__/run-standalone.test.ts +19 -0
- package/src/tools/acp/spawn.test.ts +18 -7
- package/src/tools/acp/spawn.ts +1 -0
- package/src/tools/apps/executors.ts +2 -2
- package/src/tools/apps/resolve-app-id.ts +1 -1
- package/src/tools/browser/cdp-client/cdp-inspect/__tests__/discovery.test.ts +3 -3
- package/src/tools/document/document-comment-tool.test.ts +2 -2
- package/src/tools/filesystem/write.ts +5 -4
- package/src/tools/policy-context.ts +21 -0
- package/src/tools/registry.ts +31 -1
- package/src/tools/run-standalone.ts +101 -0
- package/src/tools/schedule/create.ts +2 -2
- package/src/tools/schedule/delete.ts +1 -1
- package/src/tools/schedule/update.ts +1 -1
- package/src/tools/skills/find-similar-skills.test.ts +277 -0
- package/src/tools/skills/find-similar-skills.ts +120 -0
- package/src/tools/skills/scaffold-managed.ts +123 -4
- package/src/tools/subagent/read.ts +1 -1
- package/src/tools/subagent/spawn.ts +1 -1
- package/src/tools/tool-approval-handler.ts +1 -1
- package/src/tools/tool-manifest.ts +1 -1
- package/src/tools/types.ts +11 -0
- package/src/usage/types.ts +7 -0
- package/src/util/__tests__/process-tree.test.ts +123 -0
- package/src/util/device-id.ts +52 -12
- package/src/util/platform.ts +0 -14
- package/src/util/process-tree.ts +203 -0
- package/src/util/sqlite-retry.ts +90 -0
- package/src/watcher/__tests__/telemetry.test.ts +2 -2
- package/src/watcher/telemetry.ts +2 -2
- package/src/watcher/watcher-store.ts +3 -3
- package/src/work-items/work-item-store.ts +2 -2
- package/src/workflows/engine-integration.test.ts +2 -2
- package/src/workflows/engine.test.ts +2 -2
- package/src/workflows/fanout-load.test.ts +2 -2
- package/src/workflows/journal-store.test.ts +3 -3
- package/src/workflows/journal-store.ts +1 -1
- package/src/workflows/leaf-runner.test.ts +9 -6
- package/src/workflows/leaf-runner.ts +1 -1
- package/src/workspace/heartbeat-service.ts +29 -0
- package/src/workspace/migrations/011-backfill-installation-id.ts +1 -1
- package/src/workspace/migrations/028-recover-conversations-from-disk-view.ts +5 -2
- package/src/workspace/migrations/031-drop-user-md.ts +26 -0
- package/src/workspace/migrations/041-backfill-google-gmail-settings-scope.ts +1 -1
- package/src/workspace/migrations/113-swap-balanced-profile-to-glm-5p2.ts +101 -0
- package/src/workspace/migrations/114-swap-quality-profile-to-opus.ts +83 -0
- package/src/workspace/migrations/115-drop-frontier-profile.ts +129 -0
- package/src/workspace/migrations/116-rename-memory-plugin-disabled-sentinel.ts +53 -0
- 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/rebuild-conversation-disk-view.ts +4 -4
- package/src/workspace/migrations/registry.ts +10 -0
- package/src/__tests__/config-managed-gemini-defaults.test.ts +0 -277
- package/src/__tests__/slack-block-formatting.test.ts +0 -173
- package/src/background-wake/runtime-registry.ts +0 -24
- package/src/contacts/contact-events.ts +0 -21
- package/src/daemon/__tests__/meet-host-supervisor.test.ts +0 -587
- package/src/daemon/__tests__/meet-manifest-loader.test.ts +0 -476
- package/src/daemon/meet-host-startup.ts +0 -51
- package/src/daemon/meet-host-supervisor.ts +0 -782
- package/src/daemon/meet-manifest-loader.ts +0 -396
- package/src/daemon/server.ts +0 -423
- package/src/filing/filing-service.ts +0 -429
- package/src/memory/__tests__/301-create-watchdog-events.test.ts +0 -110
- package/src/memory/__tests__/activation-session-store.test.ts +0 -41
- package/src/memory/__tests__/auto-analysis-enqueue.test.ts +0 -359
- package/src/memory/__tests__/auto-analysis-guard.test.ts +0 -57
- package/src/memory/__tests__/bookmark-crud.test.ts +0 -264
- package/src/memory/__tests__/bookmark-schema.test.ts +0 -181
- package/src/memory/__tests__/compaction-log-store-clickhouse.test.ts +0 -432
- package/src/memory/__tests__/conversation-analyze-job.test.ts +0 -178
- package/src/memory/__tests__/conversation-group-migration.test.ts +0 -99
- package/src/memory/__tests__/conversation-queries.test.ts +0 -843
- package/src/memory/__tests__/conversation-types.test.ts +0 -36
- package/src/memory/__tests__/db-async-query.test.ts +0 -165
- package/src/memory/__tests__/db-logs-attach.test.ts +0 -110
- package/src/memory/__tests__/db-maintenance.test.ts +0 -235
- package/src/memory/__tests__/db-memory-attach.test.ts +0 -113
- package/src/memory/__tests__/embedding-cache.test.ts +0 -136
- package/src/memory/__tests__/find-analysis-conversation.test.ts +0 -197
- package/src/memory/__tests__/find-most-recent-retrospective-for.test.ts +0 -140
- package/src/memory/__tests__/fork-message-copy.test.ts +0 -232
- package/src/memory/__tests__/jobs-store-enqueue-gate.test.ts +0 -241
- package/src/memory/__tests__/jobs-store-job-classes.test.ts +0 -52
- package/src/memory/__tests__/jobs-worker-v2-graph-trigger-embed.test.ts +0 -113
- package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +0 -505
- package/src/memory/__tests__/memory-retrospective-enqueue.test.ts +0 -160
- package/src/memory/__tests__/memory-retrospective-job.test.ts +0 -1443
- package/src/memory/__tests__/memory-retrospective-startup-cleanup.test.ts +0 -544
- package/src/memory/__tests__/memory-retrospective-state.test.ts +0 -195
- package/src/memory/__tests__/memory-v2-activation-log-store.test.ts +0 -221
- package/src/memory/__tests__/memory-v2-concept-frequency.test.ts +0 -275
- package/src/memory/__tests__/memory-v3-selections-migration.test.ts +0 -103
- package/src/memory/__tests__/message-content.test.ts +0 -35
- package/src/memory/__tests__/onboarding-events-store.test.ts +0 -80
- package/src/memory/__tests__/prompt-override.test.ts +0 -192
- package/src/memory/__tests__/qdrant-client-sentinel.test.ts +0 -49
- package/src/memory/__tests__/table-relocation.test.ts +0 -129
- package/src/memory/__tests__/watchdog-events-store.test.ts +0 -161
- package/src/memory/activation-session-store.ts +0 -43
- package/src/memory/anisotropy.ts +0 -443
- package/src/memory/app-store.ts +0 -1058
- package/src/memory/attachments-store.ts +0 -1136
- package/src/memory/auth-fallback-events-store.ts +0 -94
- package/src/memory/auto-analysis-enqueue.ts +0 -127
- package/src/memory/auto-analysis-guard.ts +0 -17
- package/src/memory/canonical-guardian-store.ts +0 -891
- package/src/memory/channel-verification-sessions.ts +0 -557
- package/src/memory/checkpoints.ts +0 -65
- package/src/memory/compaction-ledger-store.ts +0 -107
- package/src/memory/context-search/agent-protocol.ts +0 -428
- package/src/memory/context-search/agent-runner.ts +0 -1310
- package/src/memory/context-search/search.ts +0 -297
- package/src/memory/context-search/sources/conversations.ts +0 -341
- package/src/memory/context-search/sources/memory-v2.ts +0 -600
- package/src/memory/context-search/sources/memory.ts +0 -101
- package/src/memory/context-search/types.ts +0 -48
- package/src/memory/conversation-analyze-job.ts +0 -53
- package/src/memory/conversation-attention-store.ts +0 -689
- package/src/memory/conversation-bootstrap.ts +0 -50
- package/src/memory/conversation-crud.ts +0 -3436
- package/src/memory/conversation-key-store.ts +0 -274
- package/src/memory/conversation-queries.ts +0 -768
- package/src/memory/conversation-starter-checkpoints.ts +0 -64
- package/src/memory/db-async-query.ts +0 -298
- package/src/memory/db-connection.ts +0 -228
- package/src/memory/db-init.ts +0 -265
- package/src/memory/db-maintenance.ts +0 -154
- package/src/memory/embed.ts +0 -73
- package/src/memory/embedding-backend.test.ts +0 -204
- package/src/memory/embedding-backend.ts +0 -862
- package/src/memory/embedding-billing-breaker.ts +0 -96
- package/src/memory/embedding-cache.ts +0 -139
- package/src/memory/embedding-local.ts +0 -587
- package/src/memory/embedding-ollama.ts +0 -79
- package/src/memory/embedding-runtime-manager.ts +0 -573
- package/src/memory/embedding-types.ts +0 -90
- package/src/memory/external-conversation-store.ts +0 -315
- package/src/memory/fork-message-copy.ts +0 -170
- package/src/memory/graph/__tests__/conversation-graph-memory-registry.test.ts +0 -119
- package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +0 -655
- package/src/memory/graph/__tests__/handle-remember-v2.test.ts +0 -321
- package/src/memory/graph/bootstrap.test.ts +0 -280
- package/src/memory/graph/bootstrap.ts +0 -532
- package/src/memory/graph/capability-seed.ts +0 -451
- package/src/memory/graph/consolidation.ts +0 -712
- package/src/memory/graph/conversation-graph-memory.ts +0 -1185
- package/src/memory/graph/decay.ts +0 -195
- package/src/memory/graph/extraction-job.ts +0 -74
- package/src/memory/graph/extraction.ts +0 -1462
- package/src/memory/graph/graph-memory-state-store.ts +0 -50
- package/src/memory/graph/graph-search.test.ts +0 -129
- package/src/memory/graph/graph-search.ts +0 -292
- package/src/memory/graph/image-ref-utils.ts +0 -29
- package/src/memory/graph/injection.ts +0 -469
- package/src/memory/graph/narrative.ts +0 -267
- package/src/memory/graph/pattern-scan.ts +0 -269
- package/src/memory/graph/retriever.test.ts +0 -624
- package/src/memory/graph/retriever.ts +0 -1356
- package/src/memory/graph/store.test.ts +0 -1093
- package/src/memory/graph/store.ts +0 -923
- package/src/memory/graph/tool-handlers.ts +0 -195
- package/src/memory/graph/tools.ts +0 -95
- package/src/memory/guardian-rate-limits.ts +0 -191
- package/src/memory/indexer.ts +0 -406
- package/src/memory/job-handlers/backfill.ts +0 -104
- package/src/memory/job-handlers/cleanup.ts +0 -237
- package/src/memory/job-handlers/conversation-starters.ts +0 -481
- package/src/memory/job-handlers/embedding.test.ts +0 -234
- package/src/memory/job-handlers/embedding.ts +0 -133
- package/src/memory/job-handlers/index-maintenance.ts +0 -111
- package/src/memory/job-handlers/media-processing.ts +0 -120
- package/src/memory/job-handlers/summarization.ts +0 -240
- package/src/memory/job-utils.ts +0 -286
- package/src/memory/jobs/__tests__/embed-concept-page.test.ts +0 -559
- package/src/memory/jobs/embed-concept-page.ts +0 -417
- package/src/memory/jobs/embed-pkb-file.test.ts +0 -169
- package/src/memory/jobs/embed-pkb-file.ts +0 -59
- package/src/memory/jobs-store.ts +0 -813
- package/src/memory/jobs-worker.ts +0 -1021
- package/src/memory/llm-request-log-source-clickhouse.ts +0 -521
- package/src/memory/llm-request-log-store.ts +0 -717
- package/src/memory/llm-usage-store.ts +0 -900
- package/src/memory/memory-recall-log-store.ts +0 -172
- package/src/memory/memory-retrospective-constants.ts +0 -50
- package/src/memory/memory-retrospective-enqueue.ts +0 -125
- package/src/memory/memory-retrospective-fork-boundary.ts +0 -94
- package/src/memory/memory-retrospective-job.ts +0 -884
- package/src/memory/memory-retrospective-startup-cleanup.ts +0 -261
- package/src/memory/memory-retrospective-state.ts +0 -245
- package/src/memory/memory-retrospective-trigger-check.ts +0 -91
- package/src/memory/memory-v2-activation-log-store.ts +0 -216
- package/src/memory/memory-v2-concept-frequency.ts +0 -173
- package/src/memory/migrations/126-backfill-guardian-principal-id.ts +0 -303
- package/src/memory/migrations/140-backfill-usage-cache-accounting.ts +0 -365
- package/src/memory/migrations/142-rename-verification-session-id-column.ts +0 -55
- package/src/memory/migrations/182-oauth-providers-display-metadata.ts +0 -20
- package/src/memory/migrations/196-strip-integration-prefix-from-provider-keys.ts +0 -179
- package/src/memory/migrations/199-guardian-request-enrichment-columns.ts +0 -64
- package/src/memory/migrations/202-memory-graph-tables.ts +0 -130
- package/src/memory/migrations/203-drop-memory-items-tables.ts +0 -55
- package/src/memory/migrations/206-scrub-corrupted-image-attachments.ts +0 -124
- package/src/memory/migrations/209-strip-thinking-from-consolidated.ts +0 -174
- package/src/memory/migrations/211-memory-recall-logs-query-context.ts +0 -16
- package/src/memory/migrations/220-normalize-user-file-by-principal.ts +0 -183
- package/src/memory/migrations/222-strip-placeholder-sentinels-from-messages.ts +0 -76
- package/src/memory/migrations/236-tool-invocations-matched-rule-id.ts +0 -21
- package/src/memory/migrations/243-provider-connections.ts +0 -68
- package/src/memory/migrations/244-provider-connection-status-label.ts +0 -23
- package/src/memory/migrations/246-backfill-provider-connection-label.ts +0 -81
- package/src/memory/migrations/255-channel-inbound-delivery-attempts.ts +0 -19
- package/src/memory/migrations/301-create-watchdog-events.ts +0 -45
- package/src/memory/migrations/__tests__/209-strip-thinking-from-consolidated.test.ts +0 -297
- package/src/memory/migrations/__tests__/244-provider-connection-status-label.test.ts +0 -84
- package/src/memory/migrations/__tests__/246-backfill-provider-connection-label.test.ts +0 -192
- package/src/memory/migrations/__tests__/run-migrations.test.ts +0 -378
- package/src/memory/migrations/helpers/relocation.ts +0 -227
- package/src/memory/migrations/validate-migration-state.ts +0 -277
- package/src/memory/onboarding-events-store.ts +0 -161
- package/src/memory/pkb/autoinject.ts +0 -61
- package/src/memory/pkb/context.ts +0 -50
- package/src/memory/pkb/pkb-index.test.ts +0 -368
- package/src/memory/pkb/pkb-index.ts +0 -255
- package/src/memory/pkb/pkb-reconcile.test.ts +0 -251
- package/src/memory/pkb/pkb-reconcile.ts +0 -148
- package/src/memory/pkb/pkb-search.test.ts +0 -586
- package/src/memory/pkb/pkb-search.ts +0 -178
- package/src/memory/pkb/types.ts +0 -67
- package/src/memory/published-pages-store.ts +0 -67
- package/src/memory/qdrant-circuit-breaker.ts +0 -119
- package/src/memory/qdrant-client.test.ts +0 -60
- package/src/memory/qdrant-client.ts +0 -834
- package/src/memory/qdrant-manager.ts +0 -422
- package/src/memory/rerank-local.ts +0 -374
- package/src/memory/schedule-attribution-sql.ts +0 -104
- package/src/memory/schema/acp.ts +0 -34
- package/src/memory/schema/contacts.ts +0 -120
- package/src/memory/schema/conversations.ts +0 -236
- package/src/memory/schema/infrastructure.ts +0 -381
- package/src/memory/scoped-approval-grants.ts +0 -551
- package/src/memory/search/semantic.ts +0 -238
- package/src/memory/segmenter.ts +0 -76
- package/src/memory/shared-app-links-store.ts +0 -130
- package/src/memory/skill-loaded-events-store.test.ts +0 -152
- package/src/memory/skill-loaded-events-store.ts +0 -95
- package/src/memory/sparse-tokenize.ts +0 -49
- package/src/memory/steps.ts +0 -1296
- package/src/memory/task-memory-cleanup.ts +0 -236
- package/src/memory/tool-executed-events-store.test.ts +0 -219
- package/src/memory/tool-executed-events-store.ts +0 -102
- package/src/memory/tool-usage-store.ts +0 -113
- package/src/memory/trace-event-store.ts +0 -133
- package/src/memory/turn-events-store.ts +0 -173
- package/src/memory/turn-trace-store.test.ts +0 -736
- package/src/memory/turn-trace-store.ts +0 -364
- package/src/memory/v2/__tests__/activation-store.test.ts +0 -204
- package/src/memory/v2/__tests__/activation.test.ts +0 -1227
- package/src/memory/v2/__tests__/backfill-jobs.test.ts +0 -504
- package/src/memory/v2/__tests__/cli-command-store.test.ts +0 -429
- package/src/memory/v2/__tests__/consolidation-job.test.ts +0 -747
- package/src/memory/v2/__tests__/consolidation-prompt-flag-gating-guard.test.ts +0 -189
- package/src/memory/v2/__tests__/frontmatter-sweep.test.ts +0 -136
- package/src/memory/v2/__tests__/harness-compare.test.ts +0 -186
- package/src/memory/v2/__tests__/harness-oracle.test.ts +0 -257
- package/src/memory/v2/__tests__/harness-replay-input.test.ts +0 -230
- package/src/memory/v2/__tests__/harness-runner.test.ts +0 -135
- package/src/memory/v2/__tests__/injection-events.test.ts +0 -318
- package/src/memory/v2/__tests__/injection.test.ts +0 -2301
- package/src/memory/v2/__tests__/migration.test.ts +0 -939
- package/src/memory/v2/__tests__/page-index.test.ts +0 -760
- package/src/memory/v2/__tests__/prompts-consolidation.test.ts +0 -313
- package/src/memory/v2/__tests__/qdrant.test.ts +0 -950
- package/src/memory/v2/__tests__/reranker.test.ts +0 -338
- package/src/memory/v2/__tests__/router.test.ts +0 -1197
- package/src/memory/v2/__tests__/sim.test.ts +0 -670
- package/src/memory/v2/__tests__/skill-content.test.ts +0 -115
- package/src/memory/v2/__tests__/skill-store.test.ts +0 -983
- package/src/memory/v2/__tests__/sparse-bm25.test.ts +0 -292
- package/src/memory/v2/__tests__/static-context.test.ts +0 -223
- package/src/memory/v2/__tests__/sweep-job.test.ts +0 -526
- package/src/memory/v2/activation-store.ts +0 -185
- package/src/memory/v2/activation.ts +0 -548
- package/src/memory/v2/backfill-jobs.ts +0 -296
- package/src/memory/v2/cli-command-store.ts +0 -341
- package/src/memory/v2/consolidation-job.ts +0 -561
- package/src/memory/v2/frontmatter-sweep.ts +0 -98
- package/src/memory/v2/harness/compare.ts +0 -57
- package/src/memory/v2/harness/oracle.ts +0 -145
- package/src/memory/v2/harness/replay-input.ts +0 -240
- package/src/memory/v2/harness/retriever.ts +0 -74
- package/src/memory/v2/harness/router-retriever.ts +0 -43
- package/src/memory/v2/injected-block-slugs.ts +0 -79
- package/src/memory/v2/injection-events.ts +0 -101
- package/src/memory/v2/injection.ts +0 -932
- package/src/memory/v2/migration.ts +0 -776
- package/src/memory/v2/page-index.ts +0 -459
- package/src/memory/v2/page-store.ts +0 -443
- package/src/memory/v2/prompts/consolidation.ts +0 -857
- package/src/memory/v2/prompts/router.ts +0 -148
- package/src/memory/v2/qdrant.ts +0 -892
- package/src/memory/v2/reranker.ts +0 -184
- package/src/memory/v2/router.ts +0 -601
- package/src/memory/v2/sim.ts +0 -296
- package/src/memory/v2/skill-content.ts +0 -61
- package/src/memory/v2/skill-store.ts +0 -431
- package/src/memory/v2/sparse-bm25.ts +0 -245
- package/src/memory/v2/static-context.ts +0 -100
- package/src/memory/v2/sweep-job.ts +0 -320
- package/src/memory/v3-eval/eval-packets.ts +0 -731
- package/src/memory/watchdog-events-store.ts +0 -87
- package/src/memory/worker-control.ts +0 -204
- package/src/memory/worker-process.ts +0 -89
- package/src/plugins/defaults/memory-retrieval/hooks/post-compact.ts +0 -116
- package/src/plugins/defaults/memory-retrieval/hooks/user-prompt-submit.ts +0 -370
- package/src/plugins/defaults/memory-retrieval/injector-chain.ts +0 -41
- package/src/plugins/defaults/memory-retrieval/injectors.ts +0 -1061
- package/src/plugins/defaults/memory-retrieval/package.json +0 -14
- package/src/plugins/defaults/memory-retrieval/tail-reinjection-strip.ts +0 -64
- package/src/plugins/defaults/memory-v3-shadow/__tests__/carry-integration.test.ts +0 -1164
- package/src/plugins/defaults/memory-v3-shadow/__tests__/dense.test.ts +0 -192
- package/src/plugins/defaults/memory-v3-shadow/__tests__/edge.test.ts +0 -247
- package/src/plugins/defaults/memory-v3-shadow/__tests__/injection.test.ts +0 -717
- package/src/plugins/defaults/memory-v3-shadow/__tests__/live-integration.test.ts +0 -365
- package/src/plugins/defaults/memory-v3-shadow/__tests__/maintain-job.test.ts +0 -736
- package/src/plugins/defaults/memory-v3-shadow/__tests__/orchestrate.test.ts +0 -839
- package/src/plugins/defaults/memory-v3-shadow/__tests__/pool-select.test.ts +0 -598
- package/src/plugins/defaults/memory-v3-shadow/__tests__/render-injection.test.ts +0 -128
- package/src/plugins/defaults/memory-v3-shadow/__tests__/section-dense-store.test.ts +0 -710
- package/src/plugins/defaults/memory-v3-shadow/__tests__/selection-log-store.test.ts +0 -425
- package/src/plugins/defaults/memory-v3-shadow/__tests__/shadow-integration.test.ts +0 -493
- package/src/plugins/defaults/memory-v3-shadow/__tests__/shadow-plugin.test.ts +0 -856
- package/src/plugins/defaults/memory-v3-shadow/capabilities.ts +0 -91
- package/src/plugins/defaults/memory-v3-shadow/card.ts +0 -160
- package/src/plugins/defaults/memory-v3-shadow/dense.ts +0 -97
- package/src/plugins/defaults/memory-v3-shadow/edge.ts +0 -252
- package/src/plugins/defaults/memory-v3-shadow/ever-injected-store.test.ts +0 -305
- package/src/plugins/defaults/memory-v3-shadow/ever-injected-store.ts +0 -278
- package/src/plugins/defaults/memory-v3-shadow/hooks/post-compact.ts +0 -14
- package/src/plugins/defaults/memory-v3-shadow/hooks/user-prompt-submit.ts +0 -19
- package/src/plugins/defaults/memory-v3-shadow/hot-set.test.ts +0 -138
- package/src/plugins/defaults/memory-v3-shadow/hot-set.ts +0 -85
- package/src/plugins/defaults/memory-v3-shadow/injector.ts +0 -453
- package/src/plugins/defaults/memory-v3-shadow/learned-edges.test.ts +0 -169
- package/src/plugins/defaults/memory-v3-shadow/learned-edges.ts +0 -178
- package/src/plugins/defaults/memory-v3-shadow/maintain-job.ts +0 -794
- package/src/plugins/defaults/memory-v3-shadow/orchestrate.ts +0 -431
- package/src/plugins/defaults/memory-v3-shadow/package.json +0 -14
- package/src/plugins/defaults/memory-v3-shadow/page-content.ts +0 -102
- package/src/plugins/defaults/memory-v3-shadow/pool-select.test.ts +0 -146
- package/src/plugins/defaults/memory-v3-shadow/pool-select.ts +0 -578
- package/src/plugins/defaults/memory-v3-shadow/prune.test.ts +0 -758
- package/src/plugins/defaults/memory-v3-shadow/prune.ts +0 -471
- package/src/plugins/defaults/memory-v3-shadow/render-injection.ts +0 -92
- package/src/plugins/defaults/memory-v3-shadow/section-dense-store.ts +0 -422
- package/src/plugins/defaults/memory-v3-shadow/section-needle.ts +0 -200
- package/src/plugins/defaults/memory-v3-shadow/selection-log-store.ts +0 -281
- package/src/plugins/defaults/memory-v3-shadow/shadow-plugin.ts +0 -642
- package/src/plugins/defaults/memory-v3-shadow/types.ts +0 -127
- package/src/plugins/feature-gate.ts +0 -22
- package/src/runtime/__tests__/slack-block-formatting.test.ts +0 -510
- package/src/runtime/routes/__tests__/memory-v2-routes.test.ts +0 -165
- package/src/runtime/routes/__tests__/memory-v2-simulate-route.test.ts +0 -347
- package/src/runtime/routes/memory-eval-routes.ts +0 -179
- package/src/runtime/routes/memory-item-routes.test.ts +0 -912
- package/src/runtime/routes/memory-item-routes.ts +0 -815
- package/src/runtime/routes/memory-v2-routes.ts +0 -850
- package/src/runtime/routes/memory-v3-routes.ts +0 -122
- package/src/runtime/routes/secrets-deps.ts +0 -24
- package/src/runtime/slack-block-formatting.ts +0 -586
- package/src/tools/memory/register.test.ts +0 -382
- package/src/tools/memory/register.ts +0 -81
- /package/src/{memory → apps}/app-git-service.ts +0 -0
- /package/src/{memory → channels}/slack-thread-store.ts +0 -0
- /package/src/{memory → home}/conversation-starter-validation.ts +0 -0
- /package/src/{memory → persistence}/auto-analysis-constants.ts +0 -0
- /package/src/{memory → persistence}/bookmark-crud.ts +0 -0
- /package/src/{memory → persistence}/cleanup-schedule-state.ts +0 -0
- /package/src/{memory → persistence}/compaction-log-store-clickhouse.ts +0 -0
- /package/src/{memory → persistence}/conversation-directories.ts +0 -0
- /package/src/{memory → persistence}/conversation-disk-view.ts +0 -0
- /package/src/{memory → persistence}/conversation-display-order-migration.ts +0 -0
- /package/src/{memory → persistence}/conversation-group-migration.ts +0 -0
- /package/src/{memory → persistence}/conversation-title-service.ts +0 -0
- /package/src/{memory → persistence}/conversation-types.ts +0 -0
- /package/src/{memory → persistence}/db-singleton.ts +0 -0
- /package/src/{memory → persistence}/delivery-channels.ts +0 -0
- /package/src/{memory → persistence}/delivery-crud.ts +0 -0
- /package/src/{memory → persistence}/delivery-status.ts +0 -0
- /package/src/{memory → persistence/embeddings}/__tests__/sparse-tokenize.test.ts +0 -0
- /package/src/{memory → persistence/embeddings}/embedding-gemini.test.ts +0 -0
- /package/src/{memory → persistence/embeddings}/embedding-gemini.ts +0 -0
- /package/src/{memory → persistence/embeddings}/embedding-openai.ts +0 -0
- /package/src/{memory → persistence/embeddings}/embedding-types.test.ts +0 -0
- /package/src/{memory → persistence}/fingerprint.ts +0 -0
- /package/src/{memory → persistence}/group-crud.ts +0 -0
- /package/src/{memory → persistence}/invite-store.ts +0 -0
- /package/src/{memory → persistence}/lifecycle-events-store.ts +0 -0
- /package/src/{memory → persistence}/llm-request-log-source-local.ts +0 -0
- /package/src/{memory → persistence}/llm-request-log-source.ts +0 -0
- /package/src/{memory → persistence}/media-store.ts +0 -0
- /package/src/{memory → persistence}/message-content.ts +0 -0
- /package/src/{memory → persistence}/migrations/000-core-tables.ts +0 -0
- /package/src/{memory → persistence}/migrations/001-job-deferrals.ts +0 -0
- /package/src/{memory → persistence}/migrations/002-tool-invocations-fk.ts +0 -0
- /package/src/{memory → persistence}/migrations/003-memory-fts-backfill.ts +0 -0
- /package/src/{memory → persistence}/migrations/004-entity-relation-dedup.ts +0 -0
- /package/src/{memory → persistence}/migrations/005-fingerprint-scope-unique.ts +0 -0
- /package/src/{memory → persistence}/migrations/006-scope-salted-fingerprints.ts +0 -0
- /package/src/{memory → persistence}/migrations/007-assistant-id-to-self.ts +0 -0
- /package/src/{memory → persistence}/migrations/008-remove-assistant-id-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/009-llm-usage-events-drop-assistant-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/011-call-sessions-provider-sid-dedup.ts +0 -0
- /package/src/{memory → persistence}/migrations/012-call-sessions-add-initiated-from.ts +0 -0
- /package/src/{memory → persistence}/migrations/013-guardian-action-tables.ts +0 -0
- /package/src/{memory → persistence}/migrations/014-backfill-inbox-thread-state.ts +0 -0
- /package/src/{memory → persistence}/migrations/015-drop-active-search-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/016-memory-segments-indexes.ts +0 -0
- /package/src/{memory → persistence}/migrations/017-memory-items-indexes.ts +0 -0
- /package/src/{memory → persistence}/migrations/018-remaining-table-indexes.ts +0 -0
- /package/src/{memory → persistence}/migrations/019-notification-tables-schema-migration.ts +0 -0
- /package/src/{memory → persistence}/migrations/020-rename-macos-ios-channel-to-vellum.ts +0 -0
- /package/src/{memory → persistence}/migrations/021-conversation-status-indexes.ts +0 -0
- /package/src/{memory → persistence}/migrations/022-add-origin-interface.ts +0 -0
- /package/src/{memory → persistence}/migrations/023-memory-item-sources-indexes.ts +0 -0
- /package/src/{memory → persistence}/migrations/024-embedding-vector-blob.ts +0 -0
- /package/src/{memory → persistence}/migrations/025-messages-fts-backfill.ts +0 -0
- /package/src/{memory → persistence}/migrations/026-guardian-verification-sessions.ts +0 -0
- /package/src/{memory → persistence}/migrations/026a-embeddings-nullable-vector-json.ts +0 -0
- /package/src/{memory → persistence}/migrations/027-notification-delivery-pairing-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/027a-guardian-bootstrap-token.ts +0 -0
- /package/src/{memory → persistence}/migrations/028-call-session-mode.ts +0 -0
- /package/src/{memory → persistence}/migrations/028-notification-delivery-client-ack.ts +0 -0
- /package/src/{memory → persistence}/migrations/029-channel-inbound-delivered-segments.ts +0 -0
- /package/src/{memory → persistence}/migrations/030-guardian-action-followup.ts +0 -0
- /package/src/{memory → persistence}/migrations/030-guardian-verification-purpose.ts +0 -0
- /package/src/{memory → persistence}/migrations/031-conversations-thread-type-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/032-guardian-delivery-conversation-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/032-notification-delivery-thread-decision.ts +0 -0
- /package/src/{memory → persistence}/migrations/033-scoped-approval-grants.ts +0 -0
- /package/src/{memory → persistence}/migrations/034-guardian-action-tool-metadata.ts +0 -0
- /package/src/{memory → persistence}/migrations/035-guardian-action-supersession.ts +0 -0
- /package/src/{memory → persistence}/migrations/036-normalize-phone-identities.ts +0 -0
- /package/src/{memory → persistence}/migrations/037-voice-invite-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/040-invite-code-hash-column.ts +0 -0
- /package/src/{memory → persistence}/migrations/041-approval-prompt-ts-tracker.ts +0 -0
- /package/src/{memory → persistence}/migrations/101-watchers-and-logs.ts +0 -0
- /package/src/{memory → persistence}/migrations/102-alter-table-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/104-core-indexes.ts +0 -0
- /package/src/{memory → persistence}/migrations/105-contacts-and-triage.ts +0 -0
- /package/src/{memory → persistence}/migrations/106-call-sessions.ts +0 -0
- /package/src/{memory → persistence}/migrations/107-followups.ts +0 -0
- /package/src/{memory → persistence}/migrations/108-tasks-and-work-items.ts +0 -0
- /package/src/{memory → persistence}/migrations/109-external-conversation-bindings.ts +0 -0
- /package/src/{memory → persistence}/migrations/110-channel-guardian.ts +0 -0
- /package/src/{memory → persistence}/migrations/111-media-assets.ts +0 -0
- /package/src/{memory → persistence}/migrations/112-assistant-inbox.ts +0 -0
- /package/src/{memory → persistence}/migrations/114-notifications.ts +0 -0
- /package/src/{memory → persistence}/migrations/115-sequences.ts +0 -0
- /package/src/{memory → persistence}/migrations/116-messages-fts.ts +0 -0
- /package/src/{memory → persistence}/migrations/117-conversation-attention.ts +0 -0
- /package/src/{memory → persistence}/migrations/118-reminder-routing-intent.ts +0 -0
- /package/src/{memory → persistence}/migrations/119-schema-indexes-and-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/120-fk-cascade-rebuilds.ts +0 -0
- /package/src/{memory → persistence}/migrations/121-canonical-guardian-requests.ts +0 -0
- /package/src/{memory → persistence}/migrations/122-canonical-guardian-requester-chat-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/123-canonical-guardian-deliveries-destination-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/124-voice-invite-display-metadata.ts +0 -0
- /package/src/{memory → persistence}/migrations/125-guardian-principal-id-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/127-guardian-principal-id-not-null.ts +0 -0
- /package/src/{memory → persistence}/migrations/128-contacts-role-principal.ts +0 -0
- /package/src/{memory → persistence}/migrations/129-contact-channels-access-fields.ts +0 -0
- /package/src/{memory → persistence}/migrations/130-contact-channels-type-ext-chat-id-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/131-drop-legacy-member-guardian-tables.ts +0 -0
- /package/src/{memory → persistence}/migrations/132-contacts-assistant-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/133-assistant-contact-metadata.ts +0 -0
- /package/src/{memory → persistence}/migrations/134-contacts-notes-column.ts +0 -0
- /package/src/{memory → persistence}/migrations/135-backfill-contact-interaction-stats.ts +0 -0
- /package/src/{memory → persistence}/migrations/136-drop-assistant-id-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/137-usage-dashboard-indexes.ts +0 -0
- /package/src/{memory → persistence}/migrations/139-drop-usage-composite-indexes.ts +0 -0
- /package/src/{memory → persistence}/migrations/141-rename-verification-table.ts +0 -0
- /package/src/{memory → persistence}/migrations/143-rename-guardian-verification-values.ts +0 -0
- /package/src/{memory → persistence}/migrations/144-rename-voice-to-phone.ts +0 -0
- /package/src/{memory → persistence}/migrations/145-drop-accounts-table.ts +0 -0
- /package/src/{memory → persistence}/migrations/146-schedule-oneshot-routing.ts +0 -0
- /package/src/{memory → persistence}/migrations/147-migrate-reminders-to-schedules.ts +0 -0
- /package/src/{memory → persistence}/migrations/148-drop-reminders-table.ts +0 -0
- /package/src/{memory → persistence}/migrations/149-oauth-tables.ts +0 -0
- /package/src/{memory → persistence}/migrations/150-oauth-apps-client-secret-path.ts +0 -0
- /package/src/{memory → persistence}/migrations/151-oauth-providers-ping-url.ts +0 -0
- /package/src/{memory → persistence}/migrations/152-memory-item-supersession.ts +0 -0
- /package/src/{memory → persistence}/migrations/153-drop-entity-tables.ts +0 -0
- /package/src/{memory → persistence}/migrations/154-drop-fts.ts +0 -0
- /package/src/{memory → persistence}/migrations/155-drop-conflicts.ts +0 -0
- /package/src/{memory → persistence}/migrations/156-call-session-invite-metadata.ts +0 -0
- /package/src/{memory → persistence}/migrations/157-invite-contact-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/158-channel-interaction-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/159-drop-contact-interaction-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/160-drop-loopback-port-column.ts +0 -0
- /package/src/{memory → persistence}/migrations/161-drop-orphaned-media-tables.ts +0 -0
- /package/src/{memory → persistence}/migrations/162-guardian-timestamps-epoch-ms.ts +0 -0
- /package/src/{memory → persistence}/migrations/163-rename-notification-thread-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/164-rename-conversation-type-column.ts +0 -0
- /package/src/{memory → persistence}/migrations/165-rename-inbox-thread-state-table.ts +0 -0
- /package/src/{memory → persistence}/migrations/166-rename-followups-thread-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/167-rename-sequence-enrollments-thread-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/168-rename-sequence-steps-reply-key.ts +0 -0
- /package/src/{memory → persistence}/migrations/169-rename-gmail-provider-key-to-google.ts +0 -0
- /package/src/{memory → persistence}/migrations/170-thread-starters-table.ts +0 -0
- /package/src/{memory → persistence}/migrations/171-capability-card-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/172-rename-created-by-session-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/173-rename-source-session-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/174-rename-thread-starters-table.ts +0 -0
- /package/src/{memory → persistence}/migrations/175-create-lifecycle-events.ts +0 -0
- /package/src/{memory → persistence}/migrations/176-drop-capability-card-state.ts +0 -0
- /package/src/{memory → persistence}/migrations/177-create-trace-events-table.ts +0 -0
- /package/src/{memory → persistence}/migrations/178-oauth-providers-managed-service-config-key.ts +0 -0
- /package/src/{memory → persistence}/migrations/179-llm-request-log-message-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/180-backfill-inline-attachments-to-disk.ts +0 -0
- /package/src/{memory → persistence}/migrations/181-rename-thread-starters-checkpoints.ts +0 -0
- /package/src/{memory → persistence}/migrations/183-add-conversation-fork-lineage.ts +0 -0
- /package/src/{memory → persistence}/migrations/184-llm-request-log-provider.ts +0 -0
- /package/src/{memory → persistence}/migrations/188-schedule-quiet-flag.ts +0 -0
- /package/src/{memory → persistence}/migrations/189-drop-simplified-memory.ts +0 -0
- /package/src/{memory → persistence}/migrations/190-call-session-skip-disclosure.ts +0 -0
- /package/src/{memory → persistence}/migrations/191-backfill-audio-attachment-mime-types.ts +0 -0
- /package/src/{memory → persistence}/migrations/192-contacts-user-file-column.ts +0 -0
- /package/src/{memory → persistence}/migrations/193-add-source-type-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/194-memory-recall-logs.ts +0 -0
- /package/src/{memory → persistence}/migrations/195-oauth-providers-ping-config.ts +0 -0
- /package/src/{memory → persistence}/migrations/196-messages-conversation-created-at-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/197-oauth-providers-behavior-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/198-drop-setup-skill-id-column.ts +0 -0
- /package/src/{memory → persistence}/migrations/200-usage-llm-call-count.ts +0 -0
- /package/src/{memory → persistence}/migrations/201-oauth-providers-feature-flag.ts +0 -0
- /package/src/{memory → persistence}/migrations/202-drop-callback-transport-column.ts +0 -0
- /package/src/{memory → persistence}/migrations/204-rename-memory-graph-type-values.ts +0 -0
- /package/src/{memory → persistence}/migrations/205-memory-graph-image-refs.ts +0 -0
- /package/src/{memory → persistence}/migrations/206-memory-graph-node-edits.ts +0 -0
- /package/src/{memory → persistence}/migrations/207-conversation-graph-memory-state.ts +0 -0
- /package/src/{memory → persistence}/migrations/208-conversations-last-message-at.ts +0 -0
- /package/src/{memory → persistence}/migrations/210-schedule-reuse-conversation.ts +0 -0
- /package/src/{memory → persistence}/migrations/212-llm-request-logs-created-at-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/213-oauth-providers-scope-separator.ts +0 -0
- /package/src/{memory → persistence}/migrations/214-oauth-providers-refresh-url.ts +0 -0
- /package/src/{memory → persistence}/migrations/215-oauth-providers-revoke.ts +0 -0
- /package/src/{memory → persistence}/migrations/216-oauth-providers-token-auth-method.ts +0 -0
- /package/src/{memory → persistence}/migrations/217-conversation-host-access.ts +0 -0
- /package/src/{memory → persistence}/migrations/218-oauth-providers-logo-url.ts +0 -0
- /package/src/{memory → persistence}/migrations/219-oauth-providers-token-exchange-body-format.ts +0 -0
- /package/src/{memory → persistence}/migrations/221-conversations-archived-at.ts +0 -0
- /package/src/{memory → persistence}/migrations/223-schedule-script-column.ts +0 -0
- /package/src/{memory → persistence}/migrations/224-oauth-providers-managed-service-is-paid.ts +0 -0
- /package/src/{memory → persistence}/migrations/225-oauth-providers-available-scopes.ts +0 -0
- /package/src/{memory → persistence}/migrations/226-schedule-wake-conversation-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/227-add-conversation-inference-profile.ts +0 -0
- /package/src/{memory → persistence}/migrations/228-rename-inference-profile-snake-case.ts +0 -0
- /package/src/{memory → persistence}/migrations/229-delete-private-conversations.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/229-delete-private-conversations.ts +0 -0
- /package/src/{memory → persistence}/migrations/230-acp-session-history.ts +0 -0
- /package/src/{memory → persistence}/migrations/231-repair-memory-graph-event-dates.ts +0 -0
- /package/src/{memory → persistence}/migrations/232-activation-state.ts +0 -0
- /package/src/{memory → persistence}/migrations/233-document-conversations.ts +0 -0
- /package/src/{memory → persistence}/migrations/234-memory-v2-activation-logs.ts +0 -0
- /package/src/{memory → persistence}/migrations/235-llm-usage-attribution.ts +0 -0
- /package/src/{memory → persistence}/migrations/235-slack-compaction-watermark.ts +0 -0
- /package/src/{memory → persistence}/migrations/237-heartbeat-runs.ts +0 -0
- /package/src/{memory → persistence}/migrations/238-schedule-retry-policy.ts +0 -0
- /package/src/{memory → persistence}/migrations/239-trace-events-created-at-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/240-conversation-inference-profile-session.ts +0 -0
- /package/src/{memory → persistence}/migrations/241-activation-state-fk-cascade.ts +0 -0
- /package/src/{memory → persistence}/migrations/242-message-bookmarks.ts +0 -0
- /package/src/{memory → persistence}/migrations/245-memory-retrospective-state.ts +0 -0
- /package/src/{memory → persistence}/migrations/247-external-conversation-binding-thread-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/248-create-onboarding-events.ts +0 -0
- /package/src/{memory → persistence}/migrations/249-normalize-slack-external-content.ts +0 -0
- /package/src/{memory → persistence}/migrations/250-provider-connection-base-url-and-models.ts +0 -0
- /package/src/{memory → persistence}/migrations/251-a2a-tasks.ts +0 -0
- /package/src/{memory → persistence}/migrations/252-llm-request-log-agent-loop-exit-reason.ts +0 -0
- /package/src/{memory → persistence}/migrations/253-conversation-last-notified-profile.ts +0 -0
- /package/src/{memory → persistence}/migrations/253-document-comments.ts +0 -0
- /package/src/{memory → persistence}/migrations/254-external-conversation-binding-chat-name.ts +0 -0
- /package/src/{memory → persistence}/migrations/256-memory-v2-injection-events.ts +0 -0
- /package/src/{memory → persistence}/migrations/257-strip-base-url-non-openai-compatible.ts +0 -0
- /package/src/{memory → persistence}/migrations/258-onboarding-events-prior-assistants.ts +0 -0
- /package/src/{memory → persistence}/migrations/259-conversation-cleaned-at.ts +0 -0
- /package/src/{memory → persistence}/migrations/260-rename-cleaned-at.ts +0 -0
- /package/src/{memory → persistence}/migrations/261-llm-usage-add-raw-usage.ts +0 -0
- /package/src/{memory → persistence}/migrations/262-memory-v3-coactivation.ts +0 -0
- /package/src/{memory → persistence}/migrations/263-memory-v3-auto-edges.ts +0 -0
- /package/src/{memory → persistence}/migrations/264-llm-request-log-call-site.ts +0 -0
- /package/src/{memory → persistence}/migrations/265-drop-provider-connection-status.ts +0 -0
- /package/src/{memory → persistence}/migrations/266-messages-client-message-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/267-llm-usage-events-add-assistant-version.ts +0 -0
- /package/src/{memory → persistence}/migrations/268-add-memory-v3-selections.ts +0 -0
- /package/src/{memory → persistence}/migrations/269-schedule-script-timeout.ts +0 -0
- /package/src/{memory → persistence}/migrations/270-messages-role-created-at-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/270-schedule-description.ts +0 -0
- /package/src/{memory → persistence}/migrations/270-schedule-source-conversation.ts +0 -0
- /package/src/{memory → persistence}/migrations/271-create-auth-fallback-events.ts +0 -0
- /package/src/{memory → persistence}/migrations/272-acp-session-history-cwd.ts +0 -0
- /package/src/{memory → persistence}/migrations/273-onboarding-events-funnel-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/274-create-activation-sessions.ts +0 -0
- /package/src/{memory → persistence}/migrations/275-tool-invocations-add-skill-id.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/275-tool-invocations-add-skill-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/276-tool-invocations-created-at-id-index.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/276-tool-invocations-created-at-id-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/277-add-memory-v3-ever-injected.ts +0 -0
- /package/src/{memory → persistence}/migrations/278-tool-invocations-telemetry-columns.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/278-tool-invocations-telemetry-columns.ts +0 -0
- /package/src/{memory → persistence}/migrations/279-create-skill-loaded-events.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/279-create-skill-loaded-events.ts +0 -0
- /package/src/{memory → persistence}/migrations/280-conversations-surfaced-at.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/280-conversations-surfaced-at.ts +0 -0
- /package/src/{memory → persistence}/migrations/281-memory-retrospective-remembered-log.ts +0 -0
- /package/src/{memory → persistence}/migrations/282-schedule-inference-profile.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/282-schedule-inference-profile.ts +0 -0
- /package/src/{memory → persistence}/migrations/283-memory-v3-selections-message-id-and-sections.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/283-memory-v3-selections-message-id-and-sections.ts +0 -0
- /package/src/{memory → persistence}/migrations/284-workflow-runs.ts +0 -0
- /package/src/{memory → persistence}/migrations/285-schedule-workflow-mode.ts +0 -0
- /package/src/{memory → persistence}/migrations/286-workflow-run-trust.ts +0 -0
- /package/src/{memory → persistence}/migrations/287-conversation-origin-channel-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/288-backfill-origin-channel-from-bindings.ts +0 -0
- /package/src/{memory → persistence}/migrations/289-contact-channels-unique-ext-user.ts +0 -0
- /package/src/{memory → persistence}/migrations/290-schedule-capabilities.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/290-schedule-capabilities.ts +0 -0
- /package/src/{memory → persistence}/migrations/291-contact-channels-renormalize-addresses.ts +0 -0
- /package/src/{memory → persistence}/migrations/292-schedule-default-no-reuse-conversation.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/292-schedule-default-no-reuse-conversation.ts +0 -0
- /package/src/{memory → persistence}/migrations/293-workflow-journal-leaf-tokens.ts +0 -0
- /package/src/{memory → persistence}/migrations/294-drop-external-user-id.ts +0 -0
- /package/src/{memory → persistence}/migrations/295-drop-approval-prompt-ts-tracker.ts +0 -0
- /package/src/{memory → persistence}/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/296-rewrite-balanced-economy-profile-pins.ts +0 -0
- /package/src/{memory → persistence}/migrations/297-move-llm-request-logs-to-logs-db.ts +0 -0
- /package/src/{memory → persistence}/migrations/298-move-memory-jobs-to-memory-db.ts +0 -0
- /package/src/{memory → persistence}/migrations/299-canonical-guardian-deliveries-conversation-index.ts +0 -0
- /package/src/{memory → persistence}/migrations/300-add-processing-started-at.ts +0 -0
- /package/src/{memory → persistence}/migrations/302-create-compaction-events.ts +0 -0
- /package/src/{memory → persistence}/migrations/303-add-conversation-creation-seq.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/014-backfill-inbox-thread-state.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/131-drop-legacy-member-guardian-tables.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/136-drop-assistant-id-columns.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/234-memory-v2-activation-logs.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/245-memory-retrospective-state.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/267-llm-usage-events-add-assistant-version.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/281-memory-retrospective-remembered-log.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/289-contact-channels-unique-ext-user.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/291-contact-channels-renormalize-addresses.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/__tests__/297-move-llm-request-logs.test.ts +0 -0
- /package/src/{memory → persistence}/migrations/run-migrations.ts +0 -0
- /package/src/{memory → persistence}/migrations/schema-introspection.ts +0 -0
- /package/src/{memory → persistence}/raw-query.ts +0 -0
- /package/src/{memory → persistence}/schema/a2a.ts +0 -0
- /package/src/{memory → persistence}/schema/bookmarks.ts +0 -0
- /package/src/{memory → persistence}/schema/calls.ts +0 -0
- /package/src/{memory → persistence}/schema/guardian.ts +0 -0
- /package/src/{memory → persistence}/schema/index.ts +0 -0
- /package/src/{memory → persistence}/schema/inference.ts +0 -0
- /package/src/{memory → persistence}/schema/memory-core.ts +0 -0
- /package/src/{memory → persistence}/schema/memory-graph.ts +0 -0
- /package/src/{memory → persistence}/schema/notifications.ts +0 -0
- /package/src/{memory → persistence}/schema/oauth.ts +0 -0
- /package/src/{memory → persistence}/schema/tasks.ts +0 -0
- /package/src/{memory → persistence}/schema.ts +0 -0
- /package/src/{memory → persistence}/usage-buckets.ts +0 -0
- /package/src/{memory → persistence}/usage-grouped-buckets.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/plugins/defaults/{memory-retrieval → memory}/hooks/__tests__/user-prompt-submit.test.ts +0 -0
- /package/src/{memory → plugins/defaults/memory}/memory-marker.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__/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/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/plugins/defaults/{memory-v3-shadow → memory/v3}/__tests__/capabilities.test.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/__tests__/card.test.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/__tests__/fresh-set.test.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/__tests__/section-needle.test.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/__tests__/sections.test.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/__tests__/types.test.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/card.test.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/core-set.test.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/core-set.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/data/README.md +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/data/assignments.json +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/data/core.json +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/data/leaves/domain-a/topic-x.md +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/data/leaves/domain-a/topic-y.md +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/data/leaves/domain-b/topic-z.md +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/fresh-set.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/llm-retry.ts +0 -0
- /package/src/plugins/defaults/{memory-v3-shadow → memory/v3}/sections.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
- /package/src/plugins/defaults/{memory-retrieval → turn-context}/unified-turn-context.ts +0 -0
|
@@ -1,1061 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default runtime injector plugin — the canonical chain of injectors that
|
|
3
|
-
* drives the per-turn injection sequence consumed by
|
|
4
|
-
* `applyRuntimeInjections`.
|
|
5
|
-
*
|
|
6
|
-
* Each default injector reads its per-turn inputs directly off the
|
|
7
|
-
* {@link TurnContext}, runs its gating
|
|
8
|
-
* conditions (injection mode, feature flags, channel type, null-input
|
|
9
|
-
* short-circuits), and returns an {@link InjectionBlock} with a
|
|
10
|
-
* {@link InjectionPlacement} that yields the canonical positional
|
|
11
|
-
* semantics expected by the assembly pipeline:
|
|
12
|
-
*
|
|
13
|
-
* | name | order | placement |
|
|
14
|
-
* | ------------------------ | ----- | ----------------------- |
|
|
15
|
-
* | `disk-pressure-warning` | 5 | prepend-user-tail |
|
|
16
|
-
* | `workspace-context` | 10 | prepend-user-tail |
|
|
17
|
-
* | `unified-turn-context` | 20 | prepend-user-tail |
|
|
18
|
-
* | `config-quarantine-notice` | 25 | prepend-user-tail |
|
|
19
|
-
* | `pkb-context` | 30 | after-memory-prefix |
|
|
20
|
-
* | `pkb-reminder` | 35 | after-memory-prefix |
|
|
21
|
-
* | `memory-v2-static` | 38 | after-memory-prefix |
|
|
22
|
-
* | `now-md` | 40 | after-memory-prefix |
|
|
23
|
-
* | `active-documents` | 45 | prepend-user-tail |
|
|
24
|
-
* | `document-comments` | 46 | prepend-user-tail |
|
|
25
|
-
* | `subagent-status` | 50 | append-user-tail |
|
|
26
|
-
* | `slack-messages` | 60 | replace-run-messages |
|
|
27
|
-
* | `thread-focus` | 70 | append-user-tail |
|
|
28
|
-
*
|
|
29
|
-
* `order` matches the intended final-content ordering: lower `order` ends
|
|
30
|
-
* up closer to the top of the user message's content (for prepends), and
|
|
31
|
-
* within `after-memory-prefix` each successive splice lands at the memory
|
|
32
|
-
* boundary — so higher-`order` blocks push earlier splices away and end up
|
|
33
|
-
* closer to the memory prefix themselves. For appends, ascending `order` is
|
|
34
|
-
* the natural left-to-right append sequence. The runtime-injection applier
|
|
35
|
-
* sorts and applies blocks declaratively so this invariant holds even when
|
|
36
|
-
* injectors slot additional blocks at fractional order values.
|
|
37
|
-
*
|
|
38
|
-
* This module exports the default injectors as a plain ordered array
|
|
39
|
-
* ({@link defaultInjectors}). The chain assembler in
|
|
40
|
-
* `plugins/defaults/memory-retrieval/injector-chain.ts` sorts them by `order`
|
|
41
|
-
* (alongside the memory-v3 injector) into the single sequence
|
|
42
|
-
* `applyRuntimeInjections` walks each turn — injection is not a plugin
|
|
43
|
-
* contribution, so injectors are imported directly rather than aggregated
|
|
44
|
-
* through the registry.
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
import { existsSync, readFileSync, rmSync } from "node:fs";
|
|
48
|
-
import { resolve } from "node:path";
|
|
49
|
-
|
|
50
|
-
import { getConfig } from "../../../config/loader.js";
|
|
51
|
-
import type { InjectionMatcher } from "../../../context/strip-injections.js";
|
|
52
|
-
import { findConversationOrSubagent } from "../../../daemon/conversation-registry.js";
|
|
53
|
-
import { resolveWorkspaceTopLevelContext } from "../../../daemon/conversation-workspace.js";
|
|
54
|
-
import { readNowScratchpad } from "../../../daemon/now-scratchpad.js";
|
|
55
|
-
import { getInContextPkbPaths } from "../../../daemon/pkb-context-tracker.js";
|
|
56
|
-
import { buildPkbReminder } from "../../../daemon/pkb-reminder-builder.js";
|
|
57
|
-
import {
|
|
58
|
-
isPersonalMemoryAllowed,
|
|
59
|
-
type TrustContext,
|
|
60
|
-
} from "../../../daemon/trust-context.js";
|
|
61
|
-
import { listComments } from "../../../documents/document-comments-store.js";
|
|
62
|
-
import { getLiveGraphMemory } from "../../../memory/graph/conversation-graph-memory.js";
|
|
63
|
-
import { getPkbAutoInjectList } from "../../../memory/pkb/autoinject.js";
|
|
64
|
-
import { readPkbContext } from "../../../memory/pkb/context.js";
|
|
65
|
-
import { searchPkbFiles } from "../../../memory/pkb/pkb-search.js";
|
|
66
|
-
import { getPkbRoot, PKB_WORKSPACE_SCOPE } from "../../../memory/pkb/types.js";
|
|
67
|
-
import { readMemoryV2StaticContent } from "../../../memory/v2/static-context.js";
|
|
68
|
-
import type { Message } from "../../../providers/types.js";
|
|
69
|
-
import { getLogger } from "../../../util/logger.js";
|
|
70
|
-
import {
|
|
71
|
-
getConfigQuarantineNoticePath,
|
|
72
|
-
getSandboxWorkingDir,
|
|
73
|
-
} from "../../../util/platform.js";
|
|
74
|
-
import {
|
|
75
|
-
type InjectionBlock,
|
|
76
|
-
type Injector,
|
|
77
|
-
type TurnContext,
|
|
78
|
-
} from "../../types.js";
|
|
79
|
-
import { buildUnifiedTurnContextBlock } from "./unified-turn-context.js";
|
|
80
|
-
|
|
81
|
-
const pkbReminderLog = getLogger("pkb-reminder");
|
|
82
|
-
|
|
83
|
-
/** Minimum hybrid-search score for a PKB path to surface as an injection hint. */
|
|
84
|
-
const PKB_HINT_THRESHOLD = 0.5;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Stricter hint threshold for PKB entries under `archive/`. Archive files are
|
|
88
|
-
* date-indexed dumps of older notes — they match loosely and are rarely the
|
|
89
|
-
* most relevant read, so require a higher bar before recommending them.
|
|
90
|
-
*/
|
|
91
|
-
const PKB_HINT_ARCHIVE_THRESHOLD = 0.7;
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Fixed order values for the default injectors. Exported so tests —
|
|
95
|
-
* and any future integration code — can assert ordering without re-deriving
|
|
96
|
-
* the constants.
|
|
97
|
-
*
|
|
98
|
-
* Gaps of 10 between slots leave room for future injectors to slot in
|
|
99
|
-
* at granular positions (e.g. `25` between unified-turn-context and pkb)
|
|
100
|
-
* without renumbering the defaults.
|
|
101
|
-
*/
|
|
102
|
-
export const DEFAULT_INJECTOR_ORDER = {
|
|
103
|
-
diskPressureWarning: 5,
|
|
104
|
-
workspaceContext: 10,
|
|
105
|
-
backgroundTurn: 15,
|
|
106
|
-
unifiedTurnContext: 20,
|
|
107
|
-
configQuarantineNotice: 25,
|
|
108
|
-
pkbContext: 30,
|
|
109
|
-
pkbReminder: 35,
|
|
110
|
-
memoryV2Static: 38,
|
|
111
|
-
nowMd: 40,
|
|
112
|
-
activeDocuments: 45,
|
|
113
|
-
documentComments: 46,
|
|
114
|
-
subagentStatus: 50,
|
|
115
|
-
slackMessages: 60,
|
|
116
|
-
threadFocus: 70,
|
|
117
|
-
} as const satisfies Record<string, number>;
|
|
118
|
-
|
|
119
|
-
export const DISK_PRESSURE_WARNING_PROMPT = `<disk_pressure_warning>
|
|
120
|
-
Storage is critically low and normal work is suspended until space is freed.
|
|
121
|
-
|
|
122
|
-
Your first user-visible paragraph must warn the user that storage is critically low and normal work is suspended.
|
|
123
|
-
|
|
124
|
-
Before taking cleanup actions, call \`skill_load\` with \`skill: "system-storage-cleanup"\` and follow the cleanup skill.
|
|
125
|
-
|
|
126
|
-
Unrelated work remains blocked until disk usage drops below the critical threshold or the guardian explicitly overrides the lock. Background processes and trusted-contact messages remain blocked while this cleanup mode is active.
|
|
127
|
-
</disk_pressure_warning>`;
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* `disk-pressure-warning` injector — order 5, prepend-user-tail.
|
|
131
|
-
*
|
|
132
|
-
* Emits the storage cleanup-mode warning at the very top of the user tail when
|
|
133
|
-
* the turn is restricted to disk-pressure cleanup. Reads the cleanup-mode flag
|
|
134
|
-
* off the live `Conversation` looked up by conversation id — the agent loop
|
|
135
|
-
* sets `diskPressureCleanupModeActive` when it classifies the turn's
|
|
136
|
-
* disk-pressure policy — rather than having the loop thread it as an injection
|
|
137
|
-
* input.
|
|
138
|
-
*/
|
|
139
|
-
const diskPressureWarningInjector: Injector = {
|
|
140
|
-
name: "disk-pressure-warning",
|
|
141
|
-
order: DEFAULT_INJECTOR_ORDER.diskPressureWarning,
|
|
142
|
-
async produce(ctx: TurnContext): Promise<InjectionBlock | null> {
|
|
143
|
-
const conversation = findConversationOrSubagent(ctx.conversationId);
|
|
144
|
-
if (!conversation?.diskPressureCleanupModeActive) return null;
|
|
145
|
-
return {
|
|
146
|
-
id: "disk-pressure-warning",
|
|
147
|
-
text: DISK_PRESSURE_WARNING_PROMPT,
|
|
148
|
-
placement: "prepend-user-tail",
|
|
149
|
-
};
|
|
150
|
-
},
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* v2 read-side cutover guard. Under v2 both `pkb-context` and `pkb-reminder`
|
|
155
|
-
* silence themselves entirely — the `<knowledge_base>` content and the
|
|
156
|
-
* generic recall/remember nudge are both supplanted by the v2 static
|
|
157
|
-
* `<memory>` block. NOW.md is workspace state independent of PKB and fires
|
|
158
|
-
* unchanged.
|
|
159
|
-
*/
|
|
160
|
-
function isPkbInjectionSilencedByV2(): boolean {
|
|
161
|
-
return getConfig().memory.v2.enabled;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Matchers that mark a persisted `<workspace>` top-level injection. Uses the
|
|
166
|
-
* `{ prefix, suffix }` wrapper shape so user-authored text merely starting with
|
|
167
|
-
* `<workspace>\n` is never mistaken for an injection — matching the full-wrapper
|
|
168
|
-
* requirement the compaction strip uses for this block. The legacy
|
|
169
|
-
* `<workspace_top_level>` tag (pre-rename history) counts as present too.
|
|
170
|
-
*/
|
|
171
|
-
const WORKSPACE_BLOCK_MATCHERS: readonly InjectionMatcher[] = [
|
|
172
|
-
{ prefix: "<workspace>\n", suffix: "\n</workspace>" },
|
|
173
|
-
"<workspace_top_level>",
|
|
174
|
-
];
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* `workspace-context` injector — order 10, prepend-user-tail.
|
|
178
|
-
*
|
|
179
|
-
* Injects the workspace top-level directory context at the very top of the
|
|
180
|
-
* user tail's content so the assistant sees a workspace grounding block before
|
|
181
|
-
* any other per-turn context.
|
|
182
|
-
*
|
|
183
|
-
* Sources the dirty-guarded top-level cache itself via
|
|
184
|
-
* {@link resolveWorkspaceTopLevelContext} (keyed by conversation id) rather than
|
|
185
|
-
* having the agent loop compute and thread it. Decides inject/skip by presence
|
|
186
|
-
* detection: the block is (re)injected only when it is absent from the working
|
|
187
|
-
* messages — true on the first turn and right after compaction strips it — and
|
|
188
|
-
* skipped on normal cached turns where it already persists in history. This
|
|
189
|
-
* keeps the conversation prefix stable for Anthropic's prefix caching.
|
|
190
|
-
*
|
|
191
|
-
* Gating:
|
|
192
|
-
* - `mode === "full"` (skipped in minimal mode).
|
|
193
|
-
* - the rendered workspace context is a non-null, non-empty string.
|
|
194
|
-
* - no `<workspace>` block is already present in `runMessages`.
|
|
195
|
-
*/
|
|
196
|
-
const workspaceContextInjector: Injector = {
|
|
197
|
-
name: "workspace-context",
|
|
198
|
-
order: DEFAULT_INJECTOR_ORDER.workspaceContext,
|
|
199
|
-
async produce(
|
|
200
|
-
ctx: TurnContext,
|
|
201
|
-
runMessages?: Message[],
|
|
202
|
-
): Promise<InjectionBlock | null> {
|
|
203
|
-
const mode = ctx.mode ?? "full";
|
|
204
|
-
if (mode !== "full") return null;
|
|
205
|
-
const text = resolveWorkspaceTopLevelContext(ctx.conversationId);
|
|
206
|
-
if (!text) return null;
|
|
207
|
-
if (hasInjectedUserTextBlock(runMessages, WORKSPACE_BLOCK_MATCHERS))
|
|
208
|
-
return null;
|
|
209
|
-
return {
|
|
210
|
-
id: "workspace-context",
|
|
211
|
-
text,
|
|
212
|
-
placement: "prepend-user-tail",
|
|
213
|
-
};
|
|
214
|
-
},
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* `background-turn` injector — order 15, prepend-user-tail.
|
|
219
|
-
*
|
|
220
|
-
* Wraps the tail user message with a `<background_turn>` block that tells
|
|
221
|
-
* the assistant the guardian isn't watching and that anything noteworthy
|
|
222
|
-
* should be surfaced via the `notifications` skill. Fires only when (a) the
|
|
223
|
-
* conversation's type is "background" or "scheduled" (see
|
|
224
|
-
* `isBackgroundConversationType`) AND (b) no client is currently connected
|
|
225
|
-
* (`isNonInteractive`). The second gate is what prevents the reminder from
|
|
226
|
-
* firing on a manual follow-up the guardian sends into a background thread
|
|
227
|
-
* — at that point the guardian IS watching, so the framing doesn't apply.
|
|
228
|
-
*
|
|
229
|
-
* The inner text is read from `config.conversations.backgroundInjection`, so
|
|
230
|
-
* operators can edit the reminder without a code change. Setting it to the
|
|
231
|
-
* empty string disables the injection entirely.
|
|
232
|
-
*/
|
|
233
|
-
const backgroundTurnInjector: Injector = {
|
|
234
|
-
name: "background-turn",
|
|
235
|
-
order: DEFAULT_INJECTOR_ORDER.backgroundTurn,
|
|
236
|
-
async produce(ctx: TurnContext): Promise<InjectionBlock | null> {
|
|
237
|
-
if (!ctx.isBackgroundConversation) return null;
|
|
238
|
-
if (!ctx.isNonInteractive) return null;
|
|
239
|
-
const inner = getConfig().conversations.backgroundInjection;
|
|
240
|
-
if (!inner) return null;
|
|
241
|
-
return {
|
|
242
|
-
id: "background-turn",
|
|
243
|
-
text: `<background_turn>\n${inner}\n</background_turn>`,
|
|
244
|
-
placement: "prepend-user-tail",
|
|
245
|
-
};
|
|
246
|
-
},
|
|
247
|
-
};
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* `unified-turn-context` injector — order 20, prepend-user-tail.
|
|
251
|
-
*
|
|
252
|
-
* Injects the `<turn_context>` block that combines temporal, actor, channel,
|
|
253
|
-
* and interface context. The orchestrator resolves the block's inputs onto the
|
|
254
|
-
* per-turn {@link TurnContext}; this injector builds the text from them
|
|
255
|
-
* via `buildUnifiedTurnContextBlock`. Emits nothing when no `timestamp` is
|
|
256
|
-
* present (the inputs were not resolved for this turn).
|
|
257
|
-
*
|
|
258
|
-
* Active in both `full` and `minimal` mode — unified turn context is
|
|
259
|
-
* safety-critical grounding that must survive injection downgrade.
|
|
260
|
-
*/
|
|
261
|
-
const unifiedTurnContextInjector: Injector = {
|
|
262
|
-
name: "unified-turn-context",
|
|
263
|
-
order: DEFAULT_INJECTOR_ORDER.unifiedTurnContext,
|
|
264
|
-
async produce(ctx: TurnContext): Promise<InjectionBlock | null> {
|
|
265
|
-
const { timestamp } = ctx;
|
|
266
|
-
if (!timestamp) return null;
|
|
267
|
-
const text = buildUnifiedTurnContextBlock({
|
|
268
|
-
timestamp,
|
|
269
|
-
interfaceName: ctx.interfaceName,
|
|
270
|
-
channelName: ctx.channelName,
|
|
271
|
-
actorContext: ctx.actorContext,
|
|
272
|
-
configuredUserTimezone: ctx.configuredUserTimezone,
|
|
273
|
-
clientTimezone: ctx.clientTimezone,
|
|
274
|
-
detectedTimezone: ctx.detectedTimezone,
|
|
275
|
-
timeSinceLastMessage: ctx.timeSinceLastMessage,
|
|
276
|
-
modelProfile: ctx.modelProfile,
|
|
277
|
-
});
|
|
278
|
-
return {
|
|
279
|
-
id: "unified-turn-context",
|
|
280
|
-
text,
|
|
281
|
-
placement: "prepend-user-tail",
|
|
282
|
-
};
|
|
283
|
-
},
|
|
284
|
-
};
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* Maximum age of a config-quarantine notice before it is considered stale.
|
|
288
|
-
* After this window the sentinel is deleted and nothing is injected — the
|
|
289
|
-
* event is no longer actionable context for the agent.
|
|
290
|
-
*/
|
|
291
|
-
const CONFIG_QUARANTINE_NOTICE_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
|
|
292
|
-
|
|
293
|
-
/** Shape of the config-quarantine notice sentinel written by the config loader. */
|
|
294
|
-
interface ConfigQuarantineNotice {
|
|
295
|
-
quarantinedAt: string;
|
|
296
|
-
quarantinePath: string;
|
|
297
|
-
originalPath: string;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* Read and validate the config-quarantine notice sentinel. Returns the parsed
|
|
302
|
-
* notice when the file exists and carries the expected string fields, otherwise
|
|
303
|
-
* `null`. Best-effort: any read/parse error is swallowed and treated as absent.
|
|
304
|
-
*/
|
|
305
|
-
function readConfigQuarantineNotice(): ConfigQuarantineNotice | null {
|
|
306
|
-
const noticePath = getConfigQuarantineNoticePath();
|
|
307
|
-
if (!existsSync(noticePath)) return null;
|
|
308
|
-
try {
|
|
309
|
-
const parsed: unknown = JSON.parse(readFileSync(noticePath, "utf-8"));
|
|
310
|
-
if (parsed == null || typeof parsed !== "object") return null;
|
|
311
|
-
const { quarantinedAt, quarantinePath, originalPath } = parsed as Record<
|
|
312
|
-
string,
|
|
313
|
-
unknown
|
|
314
|
-
>;
|
|
315
|
-
if (
|
|
316
|
-
typeof quarantinedAt !== "string" ||
|
|
317
|
-
typeof quarantinePath !== "string" ||
|
|
318
|
-
typeof originalPath !== "string"
|
|
319
|
-
) {
|
|
320
|
-
return null;
|
|
321
|
-
}
|
|
322
|
-
return { quarantinedAt, quarantinePath, originalPath };
|
|
323
|
-
} catch {
|
|
324
|
-
return null;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* `config-quarantine-notice` injector — order 25, prepend-user-tail.
|
|
330
|
-
*
|
|
331
|
-
* Surfaces a recent config-quarantine event to the agent. The config loader
|
|
332
|
-
* writes a JSON sentinel ({@link getConfigQuarantineNoticePath}) when it
|
|
333
|
-
* quarantines a corrupt `config.json` and falls back to defaults. This injector
|
|
334
|
-
* reads that sentinel and, when it is younger than
|
|
335
|
-
* {@link CONFIG_QUARANTINE_NOTICE_MAX_AGE_MS}, injects a short block telling the
|
|
336
|
-
* agent the user's settings were reset and where the original is preserved, so
|
|
337
|
-
* it can explain the change if the user asks about missing settings/API keys —
|
|
338
|
-
* or mention it proactively when relevant. A stale sentinel is deleted and
|
|
339
|
-
* nothing is injected.
|
|
340
|
-
*
|
|
341
|
-
* Active in both `full` and `minimal` mode — a settings reset is grounding the
|
|
342
|
-
* agent should not lose to injection downgrade. The block is non-persisted
|
|
343
|
-
* (re-evaluated every turn) so the notice naturally stops appearing once the
|
|
344
|
-
* sentinel ages out or is removed.
|
|
345
|
-
*
|
|
346
|
-
* Guardian-only: turns driven by non-guardian actors (trusted contacts,
|
|
347
|
-
* unknown channel senders) must not see workspace file paths or be told the
|
|
348
|
-
* guardian's settings were reset — the notice is only actionable in guardian
|
|
349
|
-
* conversations.
|
|
350
|
-
*/
|
|
351
|
-
const configQuarantineNoticeInjector: Injector = {
|
|
352
|
-
name: "config-quarantine-notice",
|
|
353
|
-
order: DEFAULT_INJECTOR_ORDER.configQuarantineNotice,
|
|
354
|
-
async produce(ctx: TurnContext): Promise<InjectionBlock | null> {
|
|
355
|
-
if (ctx.trust.trustClass !== "guardian") return null;
|
|
356
|
-
|
|
357
|
-
const notice = readConfigQuarantineNotice();
|
|
358
|
-
if (!notice) return null;
|
|
359
|
-
|
|
360
|
-
const quarantinedAtMs = Date.parse(notice.quarantinedAt);
|
|
361
|
-
const ageMs = Number.isNaN(quarantinedAtMs)
|
|
362
|
-
? Number.POSITIVE_INFINITY
|
|
363
|
-
: Date.now() - quarantinedAtMs;
|
|
364
|
-
if (ageMs > CONFIG_QUARANTINE_NOTICE_MAX_AGE_MS) {
|
|
365
|
-
try {
|
|
366
|
-
rmSync(getConfigQuarantineNoticePath(), { force: true });
|
|
367
|
-
} catch {
|
|
368
|
-
// Best-effort cleanup — a failed delete just means we re-check (and
|
|
369
|
-
// re-attempt deletion) next turn.
|
|
370
|
-
}
|
|
371
|
-
return null;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
const text =
|
|
375
|
-
`<config_reset_notice>\n` +
|
|
376
|
-
`The user's config.json was unreadable and was reset to defaults at ` +
|
|
377
|
-
`${notice.quarantinedAt}. The original file was preserved at ` +
|
|
378
|
-
`${notice.quarantinePath}. Any custom settings the user had (API keys, ` +
|
|
379
|
-
`model choices, voice preferences) are still in that file but are not ` +
|
|
380
|
-
`currently active.\n\n` +
|
|
381
|
-
`If the user asks why a setting, API key, or preference is missing or ` +
|
|
382
|
-
`changed, explain this reset and point them at the preserved file to ` +
|
|
383
|
-
`recover their settings. Otherwise mention it proactively only when it ` +
|
|
384
|
-
`is clearly relevant — do not interrupt unrelated work.\n` +
|
|
385
|
-
`</config_reset_notice>`;
|
|
386
|
-
return {
|
|
387
|
-
id: "config-quarantine-notice",
|
|
388
|
-
text,
|
|
389
|
-
placement: "prepend-user-tail",
|
|
390
|
-
};
|
|
391
|
-
},
|
|
392
|
-
};
|
|
393
|
-
|
|
394
|
-
/**
|
|
395
|
-
* `pkb-context` injector — order 30, after-memory-prefix.
|
|
396
|
-
*
|
|
397
|
-
* Emits the `<knowledge_base>` block (auto-injected PKB content) as its own
|
|
398
|
-
* after-memory-prefix splice. Lower `order` than `pkb-reminder` so when both
|
|
399
|
-
* fire, the reminder splices second and lands closer to the memory prefix,
|
|
400
|
-
* yielding `[...memory, <system_reminder>, <knowledge_base>, ...user text]`.
|
|
401
|
-
*
|
|
402
|
-
* Emitting context and reminder as two separate blocks (rather than a single
|
|
403
|
-
* concatenated text) produces the two-ContentBlock shape that the rehydration
|
|
404
|
-
* path in `conversation-lifecycle.ts` recreates — keeping fresh-injection and
|
|
405
|
-
* rehydrated-history structurally identical so Anthropic's prefix cache
|
|
406
|
-
* matches across reloads.
|
|
407
|
-
*
|
|
408
|
-
* Gating:
|
|
409
|
-
* - `mode === "full"`.
|
|
410
|
-
* - The personal-memory trust gate admits the actor and the workspace has
|
|
411
|
-
* PKB content (see {@link readGatedPkbContext}).
|
|
412
|
-
* - The `<knowledge_base>` block is not already present in the turn's working
|
|
413
|
-
* messages. The big block is injected once and then persists in history, so
|
|
414
|
-
* it only needs (re)injecting on the first turn and right after compaction
|
|
415
|
-
* strips it — both of which leave the working messages without the block.
|
|
416
|
-
* Skipping when it is present keeps the conversation prefix stable for
|
|
417
|
-
* Anthropic's prefix caching and avoids a duplicate splice.
|
|
418
|
-
*/
|
|
419
|
-
const pkbContextInjector: Injector = {
|
|
420
|
-
name: "pkb-context",
|
|
421
|
-
order: DEFAULT_INJECTOR_ORDER.pkbContext,
|
|
422
|
-
async produce(
|
|
423
|
-
ctx: TurnContext,
|
|
424
|
-
runMessages?: Message[],
|
|
425
|
-
): Promise<InjectionBlock | null> {
|
|
426
|
-
const mode = ctx.mode ?? "full";
|
|
427
|
-
if (mode !== "full") return null;
|
|
428
|
-
if (isPkbInjectionSilencedByV2()) return null;
|
|
429
|
-
const content = readGatedPkbContext(ctx.trust);
|
|
430
|
-
if (!content) return null;
|
|
431
|
-
if (hasInjectedUserTextBlock(runMessages, KNOWLEDGE_BASE_BLOCK_PREFIXES))
|
|
432
|
-
return null;
|
|
433
|
-
return {
|
|
434
|
-
id: "pkb-context",
|
|
435
|
-
text: buildPkbContextBlock(content),
|
|
436
|
-
placement: "after-memory-prefix",
|
|
437
|
-
};
|
|
438
|
-
},
|
|
439
|
-
};
|
|
440
|
-
|
|
441
|
-
/**
|
|
442
|
-
* `pkb-reminder` injector — order 35, after-memory-prefix.
|
|
443
|
-
*
|
|
444
|
-
* Emits the PKB `<system_reminder>` (behavioural nudge + hybrid-search
|
|
445
|
-
* hints) as its own after-memory-prefix splice. Higher `order` than
|
|
446
|
-
* `pkb-context` so the reminder splices second and ends up immediately
|
|
447
|
-
* after the memory prefix, pushing `<knowledge_base>` one slot further
|
|
448
|
-
* down — producing a [reminder, context] ordering.
|
|
449
|
-
*
|
|
450
|
-
* Gating:
|
|
451
|
-
* - `mode === "full"`.
|
|
452
|
-
* - PKB is active for the turn (see {@link isPkbActive}).
|
|
453
|
-
*/
|
|
454
|
-
const pkbReminderInjector: Injector = {
|
|
455
|
-
name: "pkb-reminder",
|
|
456
|
-
order: DEFAULT_INJECTOR_ORDER.pkbReminder,
|
|
457
|
-
async produce(
|
|
458
|
-
ctx: TurnContext,
|
|
459
|
-
runMessages?: Message[],
|
|
460
|
-
): Promise<InjectionBlock | null> {
|
|
461
|
-
const mode = ctx.mode ?? "full";
|
|
462
|
-
if (mode !== "full") return null;
|
|
463
|
-
if (!isPkbActive(ctx.trust)) return null;
|
|
464
|
-
if (isPkbInjectionSilencedByV2()) return null;
|
|
465
|
-
const reminder = await buildPkbReminderWithHints(ctx, runMessages);
|
|
466
|
-
return {
|
|
467
|
-
id: "pkb-reminder",
|
|
468
|
-
text: reminder,
|
|
469
|
-
placement: "after-memory-prefix",
|
|
470
|
-
};
|
|
471
|
-
},
|
|
472
|
-
};
|
|
473
|
-
|
|
474
|
-
/**
|
|
475
|
-
* Read the auto-injected PKB content for the turn, gated behind the
|
|
476
|
-
* personal-memory trust gate. Returns the content string when the gate admits
|
|
477
|
-
* the actor and the workspace has PKB content, otherwise `null`. Both the gate
|
|
478
|
-
* and the content are sourced from the turn's trust context and the PKB files
|
|
479
|
-
* directly, so the memory-domain injectors source their own inputs rather than
|
|
480
|
-
* having them threaded in from the agent loop.
|
|
481
|
-
*/
|
|
482
|
-
function readGatedPkbContext(trust: TrustContext): string | null {
|
|
483
|
-
return isPersonalMemoryAllowed(trust) ? readPkbContext() : null;
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
/**
|
|
487
|
-
* Read the NOW.md scratchpad content for the turn, gated behind the
|
|
488
|
-
* personal-memory trust gate and the `scratchpadInjection` config toggle.
|
|
489
|
-
* Returns the trimmed content when both gates admit and the file is non-empty,
|
|
490
|
-
* otherwise `null`. Sourced from the trust context and the NOW.md file directly
|
|
491
|
-
* so the `now-md` injector owns its input rather than having it threaded in.
|
|
492
|
-
*/
|
|
493
|
-
function readGatedNowScratchpad(trust: TrustContext): string | null {
|
|
494
|
-
if (!isPersonalMemoryAllowed(trust)) return null;
|
|
495
|
-
if (!getConfig().memory.retrieval.scratchpadInjection.enabled) return null;
|
|
496
|
-
return readNowScratchpad();
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
/**
|
|
500
|
-
* Read the v2 static memory content for the turn, gated behind the
|
|
501
|
-
* personal-memory trust gate. Returns the content (essentials/threads/recent/
|
|
502
|
-
* buffer concatenated) when the gate admits and v2 memory is enabled,
|
|
503
|
-
* otherwise `null`. {@link readMemoryV2StaticContent} self-gates on the v2
|
|
504
|
-
* flag + config, so the `memory-v2-static` injector owns its input rather than
|
|
505
|
-
* having it threaded in from the agent loop.
|
|
506
|
-
*
|
|
507
|
-
* `excludeBuffer` is forwarded for consolidation turns, whose contract is the
|
|
508
|
-
* buffer FILE itself — see {@link readMemoryV2StaticContent}.
|
|
509
|
-
*/
|
|
510
|
-
function readGatedMemoryV2Static(
|
|
511
|
-
trust: TrustContext,
|
|
512
|
-
options: { excludeBuffer?: boolean } = {},
|
|
513
|
-
): string | null {
|
|
514
|
-
return isPersonalMemoryAllowed(trust)
|
|
515
|
-
? readMemoryV2StaticContent(options)
|
|
516
|
-
: null;
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
/**
|
|
520
|
-
* Whether PKB is active for the turn: the personal-memory trust gate admits
|
|
521
|
-
* the actor and the workspace has PKB content to surface.
|
|
522
|
-
*/
|
|
523
|
-
function isPkbActive(trust: TrustContext): boolean {
|
|
524
|
-
return readGatedPkbContext(trust) !== null;
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
/** Block prefixes that mark a persisted `<knowledge_base>` injection. */
|
|
528
|
-
const KNOWLEDGE_BASE_BLOCK_PREFIXES = [
|
|
529
|
-
"<knowledge_base>",
|
|
530
|
-
"<pkb>", // backward-compat: pre-rename history
|
|
531
|
-
] as const;
|
|
532
|
-
|
|
533
|
-
/** Block prefixes that mark a persisted NOW.md injection. */
|
|
534
|
-
const NOW_MD_BLOCK_PREFIXES = [
|
|
535
|
-
"<NOW.md Always keep this up to date",
|
|
536
|
-
"<now_scratchpad>", // backward-compat: pre-rename history
|
|
537
|
-
] as const;
|
|
538
|
-
|
|
539
|
-
/**
|
|
540
|
-
* Matchers that mark a persisted `memory-v2-static` injection. Uses the
|
|
541
|
-
* `{ prefix, suffix }` wrapper shape (not a bare prefix) so user-authored text
|
|
542
|
-
* merely starting with `<info>\n` is never mistaken for an injection — matching
|
|
543
|
-
* the full-wrapper requirement the compaction strip uses for this block.
|
|
544
|
-
*
|
|
545
|
-
* Match ONLY the `<info>…</info>` wrapper — the form the static block is always
|
|
546
|
-
* written as today (see {@link buildMemoryV2StaticBlock}). The matcher must NOT
|
|
547
|
-
* also match `<memory>…</memory>`: the v2 *dynamic* activation block uses that
|
|
548
|
-
* same wrapper and `prepareMemory` prepends it to the tail user message every
|
|
549
|
-
* turn, before this injector chain runs. Counting `<memory>` as "static block
|
|
550
|
-
* already present" made the static injector skip on essentially every turn —
|
|
551
|
-
* including the first turn and right after compaction, where the dynamic block
|
|
552
|
-
* is re-added ahead of the chain — which dropped the `<info>` block entirely.
|
|
553
|
-
*
|
|
554
|
-
* Tradeoff: a conversation whose static block was persisted under the legacy
|
|
555
|
-
* `<memory>` wrapper (pre-`<info>` switch) is no longer recognized here, so its
|
|
556
|
-
* first post-fix turn may briefly carry both the stale `<memory>` view and a
|
|
557
|
-
* fresh `<info>` block. That is rare (ancient histories only), cosmetic, and
|
|
558
|
-
* self-heals on the next compaction (which strips both wrappers).
|
|
559
|
-
*/
|
|
560
|
-
const MEMORY_V2_STATIC_BLOCK_MATCHERS: readonly InjectionMatcher[] = [
|
|
561
|
-
{ prefix: "<info>\n", suffix: "\n</info>" },
|
|
562
|
-
];
|
|
563
|
-
|
|
564
|
-
/**
|
|
565
|
-
* Whether a block matching any of the given matchers is already present in the
|
|
566
|
-
* turn's working messages — used to skip re-injection of a block the history
|
|
567
|
-
* already carries.
|
|
568
|
-
*
|
|
569
|
-
* Recognizes both the canonical standalone form (a text block that IS the
|
|
570
|
-
* wrapper) and the "flattened" form where the wrapper sits as a newline-
|
|
571
|
-
* delimited section inside a larger text block (see {@link textCarriesInjection}).
|
|
572
|
-
*
|
|
573
|
-
* Detection is intentionally BROADER than `stripUserTextBlocksByPrefix`, which
|
|
574
|
-
* stays whole-block-only: re-injection must be suppressed even when a historical
|
|
575
|
-
* user message's separate injection blocks have been collapsed into one text
|
|
576
|
-
* block, whereas the strip must never delete a block that also holds the user's
|
|
577
|
-
* own text. (A flattened block is summarized away at the next compaction, where
|
|
578
|
-
* fresh injection resumes.)
|
|
579
|
-
*/
|
|
580
|
-
function hasInjectedUserTextBlock(
|
|
581
|
-
runMessages: Message[] | undefined,
|
|
582
|
-
matchers: readonly InjectionMatcher[],
|
|
583
|
-
): boolean {
|
|
584
|
-
if (!runMessages) return false;
|
|
585
|
-
return runMessages.some(
|
|
586
|
-
(message) =>
|
|
587
|
-
message.role === "user" &&
|
|
588
|
-
message.content.some(
|
|
589
|
-
(block) =>
|
|
590
|
-
block.type === "text" &&
|
|
591
|
-
matchers.some((m) => textCarriesInjection(block.text, m)),
|
|
592
|
-
),
|
|
593
|
-
);
|
|
594
|
-
}
|
|
595
|
-
|
|
596
|
-
/**
|
|
597
|
-
* Whether `text` carries an injected block matching `matcher`, recognizing both
|
|
598
|
-
* the canonical standalone form (the text IS the wrapper) and a "flattened"
|
|
599
|
-
* form where the wrapper sits as a newline-delimited section inside a larger
|
|
600
|
-
* text block.
|
|
601
|
-
*
|
|
602
|
-
* The flattened form arises when a historical user message's separate injection
|
|
603
|
-
* content blocks get collapsed into a single text block joined with "\n" —
|
|
604
|
-
* observed when a daemon restart / plugin hot-reload rebuilt the rendered
|
|
605
|
-
* history mid-conversation. Without recognizing it, the standalone-only check
|
|
606
|
-
* returns false for the carried block and the injector re-injects a duplicate
|
|
607
|
-
* `<workspace>` / `<info>` onto the new tail.
|
|
608
|
-
*
|
|
609
|
-
* Anchoring on line boundaries ("\n" before the opening tag, and "\n" or the
|
|
610
|
-
* block edge after the closing tag) keeps the false-positive surface as narrow
|
|
611
|
-
* as the standalone check: ordinary prose would have to contain the exact
|
|
612
|
-
* wrapper as its own line-delimited section to be mistaken for an injection. The
|
|
613
|
-
* `{ prefix, suffix }` form still requires BOTH tags, so a message that opens
|
|
614
|
-
* (but never closes) an injection-like tag never suppresses injection.
|
|
615
|
-
*/
|
|
616
|
-
function textCarriesInjection(
|
|
617
|
-
text: string,
|
|
618
|
-
matcher: InjectionMatcher,
|
|
619
|
-
): boolean {
|
|
620
|
-
if (typeof matcher === "string") {
|
|
621
|
-
return text.startsWith(matcher) || text.includes(`\n${matcher}`);
|
|
622
|
-
}
|
|
623
|
-
const { prefix, suffix } = matcher;
|
|
624
|
-
const hasOpen = text.startsWith(prefix) || text.includes(`\n${prefix}`);
|
|
625
|
-
const hasClose = text.endsWith(suffix) || text.includes(`${suffix}\n`);
|
|
626
|
-
return hasOpen && hasClose;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
/**
|
|
630
|
-
* Render the PKB context block — wraps the raw content in
|
|
631
|
-
* `<knowledge_base>...</knowledge_base>` while escaping any closing tags
|
|
632
|
-
* inside the content that would break out of the XML wrapper.
|
|
633
|
-
*/
|
|
634
|
-
function buildPkbContextBlock(content: string): string {
|
|
635
|
-
const escaped = content.replace(
|
|
636
|
-
/<\/knowledge_base\s*>/gi,
|
|
637
|
-
"</knowledge_base>",
|
|
638
|
-
);
|
|
639
|
-
return `<knowledge_base>\n${escaped}\n</knowledge_base>`;
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
/**
|
|
643
|
-
* Build the PKB `<system_reminder>` text. When a dense query vector and the
|
|
644
|
-
* turn's working messages are available, run the hybrid PKB search to
|
|
645
|
-
* surface up to three relevance hints; fall back to the flat static
|
|
646
|
-
* reminder on empty results or any error.
|
|
647
|
-
*
|
|
648
|
-
* The dense/sparse query pair is read off the conversation's live graph
|
|
649
|
-
* handle ({@link getLiveGraphMemory}) — the memory-retrieval hook records it
|
|
650
|
-
* there during the turn's retrieval. In-context PKB paths are computed from
|
|
651
|
-
* the turn's working messages (`runMessages`, supplied by the injector chain)
|
|
652
|
-
* resolved against the workspace working directory, so the reminder sources
|
|
653
|
-
* its inputs itself rather than having them threaded through the agent loop.
|
|
654
|
-
*/
|
|
655
|
-
async function buildPkbReminderWithHints(
|
|
656
|
-
ctx: TurnContext,
|
|
657
|
-
runMessages?: Message[],
|
|
658
|
-
): Promise<string> {
|
|
659
|
-
let hints: string[] = [];
|
|
660
|
-
const graphMemory = getLiveGraphMemory(ctx.conversationId);
|
|
661
|
-
const queryVector = graphMemory?.pkbQueryVector;
|
|
662
|
-
if (queryVector && queryVector.length > 0 && runMessages) {
|
|
663
|
-
try {
|
|
664
|
-
const pkbRoot = getPkbRoot();
|
|
665
|
-
const results = await searchPkbFiles(
|
|
666
|
-
queryVector,
|
|
667
|
-
graphMemory?.pkbSparseVector,
|
|
668
|
-
8,
|
|
669
|
-
[PKB_WORKSPACE_SCOPE],
|
|
670
|
-
);
|
|
671
|
-
const inContext = getInContextPkbPaths(
|
|
672
|
-
{ messages: runMessages },
|
|
673
|
-
getPkbAutoInjectList(pkbRoot),
|
|
674
|
-
pkbRoot,
|
|
675
|
-
getSandboxWorkingDir(),
|
|
676
|
-
);
|
|
677
|
-
// Gate on `denseScore` (cosine, [0, 1]) so the quality bar is stable
|
|
678
|
-
// regardless of whether sparse was provided. Rank by `hybridScore`
|
|
679
|
-
// (RRF) when available — that captures the sparse signal for
|
|
680
|
-
// re-ordering eligible hits. hybridScore and denseScore live on
|
|
681
|
-
// different scales, so items with hybridScore are ordered together
|
|
682
|
-
// and placed ahead of items that only have denseScore.
|
|
683
|
-
hints = results
|
|
684
|
-
.filter((r) => {
|
|
685
|
-
const abs = resolve(pkbRoot, r.path);
|
|
686
|
-
if (inContext.has(abs)) return false;
|
|
687
|
-
const threshold = r.path.replace(/\\/g, "/").startsWith("archive/")
|
|
688
|
-
? PKB_HINT_ARCHIVE_THRESHOLD
|
|
689
|
-
: PKB_HINT_THRESHOLD;
|
|
690
|
-
return r.denseScore >= threshold;
|
|
691
|
-
})
|
|
692
|
-
.sort((a, b) => {
|
|
693
|
-
const aHasHybrid = a.hybridScore !== undefined;
|
|
694
|
-
const bHasHybrid = b.hybridScore !== undefined;
|
|
695
|
-
if (aHasHybrid && !bHasHybrid) return -1;
|
|
696
|
-
if (!aHasHybrid && bHasHybrid) return 1;
|
|
697
|
-
if (aHasHybrid && bHasHybrid) {
|
|
698
|
-
return b.hybridScore! - a.hybridScore!;
|
|
699
|
-
}
|
|
700
|
-
return b.denseScore - a.denseScore;
|
|
701
|
-
})
|
|
702
|
-
.slice(0, 3)
|
|
703
|
-
.map((r) => r.path);
|
|
704
|
-
} catch (err) {
|
|
705
|
-
pkbReminderLog.warn(
|
|
706
|
-
{ err: err instanceof Error ? err.message : String(err) },
|
|
707
|
-
"PKB hint search failed — falling back to flat reminder",
|
|
708
|
-
);
|
|
709
|
-
hints = [];
|
|
710
|
-
}
|
|
711
|
-
}
|
|
712
|
-
return buildPkbReminder(hints);
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
/**
|
|
716
|
-
* `memory-v2-static` injector — order 38, after-memory-prefix.
|
|
717
|
-
*
|
|
718
|
-
* Injects the v2 static memory block (essentials/threads/recent/buffer
|
|
719
|
-
* concatenated under markdown headings) wrapped in `<info>...</info>`
|
|
720
|
-
* onto the user message. The agent loop only forwards `memoryV2Static` on
|
|
721
|
-
* full-mode turns (first turn / post-compaction), mirroring the PKB
|
|
722
|
-
* auto-inject cadence — subsequent turns get `null` and the prior block
|
|
723
|
-
* stays cached on its original user message.
|
|
724
|
-
*
|
|
725
|
-
* Sits between `pkb-reminder` (35) and `now-md` (40). Because every
|
|
726
|
-
* after-memory-prefix splice lands at the memory-prefix boundary in
|
|
727
|
-
* ascending `order`, higher-order blocks end up closer to the memory
|
|
728
|
-
* prefix. The rendered layout is therefore `[<memory>dynamic</memory>,
|
|
729
|
-
* <info>memory-v2-static</info>, <NOW.md>, <system_reminder>,
|
|
730
|
-
* <knowledge_base>, ...user text]` when every PKB injector also fires.
|
|
731
|
-
* `countMemoryPrefixBlocks` treats the `<info>` static block as part of
|
|
732
|
-
* the memory prefix so `now-md` (40) splices after it.
|
|
733
|
-
*
|
|
734
|
-
* Gating:
|
|
735
|
-
* - `mode === "full"` (skipped in minimal mode).
|
|
736
|
-
* - The personal-memory trust gate admits the actor and v2 static memory has
|
|
737
|
-
* content (see {@link readGatedMemoryV2Static}).
|
|
738
|
-
* - The `<info>` block is not already present in the turn's working messages.
|
|
739
|
-
* Like `<knowledge_base>`, the block is injected once and then persists in
|
|
740
|
-
* history, so it only needs (re)injecting on the first turn and right after
|
|
741
|
-
* compaction strips it — both of which leave the working messages without
|
|
742
|
-
* the block. Skipping when it is present keeps the conversation prefix
|
|
743
|
-
* stable for Anthropic's prefix caching and avoids a duplicate splice.
|
|
744
|
-
*/
|
|
745
|
-
const memoryV2StaticInjector: Injector = {
|
|
746
|
-
name: "memory-v2-static",
|
|
747
|
-
order: DEFAULT_INJECTOR_ORDER.memoryV2Static,
|
|
748
|
-
async produce(
|
|
749
|
-
ctx: TurnContext,
|
|
750
|
-
runMessages?: Message[],
|
|
751
|
-
): Promise<InjectionBlock | null> {
|
|
752
|
-
const mode = ctx.mode ?? "full";
|
|
753
|
-
if (mode !== "full") return null;
|
|
754
|
-
// The consolidation agent reads and rewrites memory/buffer.md through
|
|
755
|
-
// file tools; injecting the buffer section here would duplicate the
|
|
756
|
-
// entire backlog into its context (and go stale as it edits the file).
|
|
757
|
-
const content = readGatedMemoryV2Static(ctx.trust, {
|
|
758
|
-
excludeBuffer: ctx.callSite === "memoryV2Consolidation",
|
|
759
|
-
});
|
|
760
|
-
if (!content) return null;
|
|
761
|
-
if (hasInjectedUserTextBlock(runMessages, MEMORY_V2_STATIC_BLOCK_MATCHERS))
|
|
762
|
-
return null;
|
|
763
|
-
return {
|
|
764
|
-
id: "memory-v2-static",
|
|
765
|
-
text: buildMemoryV2StaticBlock(content),
|
|
766
|
-
placement: "after-memory-prefix",
|
|
767
|
-
};
|
|
768
|
-
},
|
|
769
|
-
};
|
|
770
|
-
|
|
771
|
-
const INFO_CLOSE_TAG_RE = /<\/info\s*>/gi;
|
|
772
|
-
|
|
773
|
-
/**
|
|
774
|
-
* Wrap the static memory content in `<info>...</info>`. Escapes any
|
|
775
|
-
* closing `</info>` inside the content so authored memory files cannot
|
|
776
|
-
* accidentally break out of the wrapper. Distinct from the dynamic
|
|
777
|
-
* activation block (which uses `<memory>...</memory>`) so downstream
|
|
778
|
-
* logic can address the two differently.
|
|
779
|
-
*/
|
|
780
|
-
function buildMemoryV2StaticBlock(content: string): string {
|
|
781
|
-
const escaped = content.replace(INFO_CLOSE_TAG_RE, "</info>");
|
|
782
|
-
return `<info>\n${escaped}\n</info>`;
|
|
783
|
-
}
|
|
784
|
-
|
|
785
|
-
/**
|
|
786
|
-
* `now-md` injector — order 40, after-memory-prefix.
|
|
787
|
-
*
|
|
788
|
-
* Injects the NOW.md scratchpad content as
|
|
789
|
-
* `<NOW.md Always keep this up to date; keep under 10 lines>...` after any
|
|
790
|
-
* memory-prefix blocks.
|
|
791
|
-
*
|
|
792
|
-
* Gating:
|
|
793
|
-
* - `mode === "full"` (skipped in minimal mode).
|
|
794
|
-
* - The personal-memory trust gate admits the actor, the `scratchpadInjection`
|
|
795
|
-
* config toggle is on, and NOW.md has content (see
|
|
796
|
-
* {@link readGatedNowScratchpad}).
|
|
797
|
-
* - The NOW.md block is not already present in the turn's working messages.
|
|
798
|
-
* Like `<knowledge_base>`, the block is injected once and then persists in
|
|
799
|
-
* history, so it only needs (re)injecting on the first turn and right after
|
|
800
|
-
* compaction strips it — both of which leave the working messages without
|
|
801
|
-
* the block. Skipping when it is present keeps the conversation prefix
|
|
802
|
-
* stable for Anthropic's prefix caching and avoids a duplicate splice.
|
|
803
|
-
*/
|
|
804
|
-
const nowMdInjector: Injector = {
|
|
805
|
-
name: "now-md",
|
|
806
|
-
order: DEFAULT_INJECTOR_ORDER.nowMd,
|
|
807
|
-
async produce(
|
|
808
|
-
ctx: TurnContext,
|
|
809
|
-
runMessages?: Message[],
|
|
810
|
-
): Promise<InjectionBlock | null> {
|
|
811
|
-
const mode = ctx.mode ?? "full";
|
|
812
|
-
if (mode !== "full") return null;
|
|
813
|
-
const content = readGatedNowScratchpad(ctx.trust);
|
|
814
|
-
if (!content) return null;
|
|
815
|
-
if (hasInjectedUserTextBlock(runMessages, NOW_MD_BLOCK_PREFIXES))
|
|
816
|
-
return null;
|
|
817
|
-
const text = `<NOW.md Always keep this up to date; keep under 10 lines>\n${content}\n</NOW.md>`;
|
|
818
|
-
return {
|
|
819
|
-
id: "now-md",
|
|
820
|
-
text,
|
|
821
|
-
placement: "after-memory-prefix",
|
|
822
|
-
};
|
|
823
|
-
},
|
|
824
|
-
};
|
|
825
|
-
|
|
826
|
-
/**
|
|
827
|
-
* `active-documents` injector — order 45, prepend-user-tail.
|
|
828
|
-
*
|
|
829
|
-
* Injects an `<active_documents>` block listing open documents in the
|
|
830
|
-
* conversation so the assistant can target them with `document_update`
|
|
831
|
-
* instead of creating duplicates via `document_create`.
|
|
832
|
-
*
|
|
833
|
-
* Gating:
|
|
834
|
-
* - `mode === "full"`.
|
|
835
|
-
* - `activeDocuments` has at least one entry.
|
|
836
|
-
*/
|
|
837
|
-
const activeDocumentsInjector: Injector = {
|
|
838
|
-
name: "active-documents",
|
|
839
|
-
order: DEFAULT_INJECTOR_ORDER.activeDocuments,
|
|
840
|
-
async produce(ctx: TurnContext): Promise<InjectionBlock | null> {
|
|
841
|
-
const mode = ctx.mode ?? "full";
|
|
842
|
-
if (mode !== "full") return null;
|
|
843
|
-
const docs = ctx.activeDocuments;
|
|
844
|
-
if (!docs || docs.length === 0) return null;
|
|
845
|
-
const lines = docs.map(
|
|
846
|
-
(d) =>
|
|
847
|
-
`- surface_id: "${d.surfaceId}", title: "${d.title}", words: ${d.wordCount}`,
|
|
848
|
-
);
|
|
849
|
-
const text = `<active_documents>\nThe following documents are open in this conversation. Use document_update with the surface_id to edit them — do NOT call document_create for documents that already exist.\n${lines.join("\n")}\n</active_documents>`;
|
|
850
|
-
return {
|
|
851
|
-
id: "active-documents",
|
|
852
|
-
text,
|
|
853
|
-
placement: "prepend-user-tail",
|
|
854
|
-
};
|
|
855
|
-
},
|
|
856
|
-
};
|
|
857
|
-
|
|
858
|
-
/** Maximum open comments surfaced per document to limit context bloat. */
|
|
859
|
-
const DOCUMENT_COMMENTS_CAP = 10;
|
|
860
|
-
|
|
861
|
-
/**
|
|
862
|
-
* Escape closing `</document_comments>` inside user-controlled strings so
|
|
863
|
-
* they cannot break out of the XML wrapper — same pattern as
|
|
864
|
-
* {@link buildPkbContextBlock} and {@link buildMemoryV2StaticBlock}.
|
|
865
|
-
*/
|
|
866
|
-
function escapeDocCommentTag(s: string): string {
|
|
867
|
-
return s.replace(/<\/document_comments\s*>/gi, "</document_comments>");
|
|
868
|
-
}
|
|
869
|
-
|
|
870
|
-
/**
|
|
871
|
-
* `document-comments` injector — order 46, prepend-user-tail.
|
|
872
|
-
*
|
|
873
|
-
* Surfaces open top-level comments on active documents so the assistant
|
|
874
|
-
* knows what feedback to address. For each active document, queries the
|
|
875
|
-
* comment store for open top-level comments (capped at
|
|
876
|
-
* {@link DOCUMENT_COMMENTS_CAP} most recent per document). Inline comments
|
|
877
|
-
* include the quoted anchor text; doc-level comments are labelled as such.
|
|
878
|
-
*
|
|
879
|
-
* Gating:
|
|
880
|
-
* - `mode === "full"`.
|
|
881
|
-
* - `activeDocuments` has at least one entry.
|
|
882
|
-
* - At least one document has open comments (returns null otherwise).
|
|
883
|
-
*/
|
|
884
|
-
const documentCommentsInjector: Injector = {
|
|
885
|
-
name: "document-comments",
|
|
886
|
-
order: DEFAULT_INJECTOR_ORDER.documentComments,
|
|
887
|
-
async produce(ctx: TurnContext): Promise<InjectionBlock | null> {
|
|
888
|
-
const mode = ctx.mode ?? "full";
|
|
889
|
-
if (mode !== "full") return null;
|
|
890
|
-
const docs = ctx.activeDocuments;
|
|
891
|
-
if (!docs || docs.length === 0) return null;
|
|
892
|
-
|
|
893
|
-
const sections: string[] = [];
|
|
894
|
-
for (const doc of docs) {
|
|
895
|
-
const comments = listComments(doc.surfaceId, {
|
|
896
|
-
status: "open",
|
|
897
|
-
topLevelOnly: true,
|
|
898
|
-
}).slice(-DOCUMENT_COMMENTS_CAP);
|
|
899
|
-
if (comments.length === 0) continue;
|
|
900
|
-
|
|
901
|
-
const lines = comments.map((c) => {
|
|
902
|
-
const anchor =
|
|
903
|
-
c.anchorText != null ? escapeDocCommentTag(c.anchorText) : null;
|
|
904
|
-
const label =
|
|
905
|
-
anchor != null ? `inline, anchored to "${anchor}"` : "doc-level";
|
|
906
|
-
return `- Comment #${c.id} (${label}): "${escapeDocCommentTag(c.content)}"`;
|
|
907
|
-
});
|
|
908
|
-
sections.push(
|
|
909
|
-
`Document: "${escapeDocCommentTag(doc.title)}" (surface_id: "${doc.surfaceId}")\n${lines.join("\n")}`,
|
|
910
|
-
);
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
if (sections.length === 0) return null;
|
|
914
|
-
|
|
915
|
-
const text = `<document_comments>
|
|
916
|
-
Open comments on your documents. Address these by editing the document, then use comment_resolve to mark each resolved.
|
|
917
|
-
|
|
918
|
-
${sections.join("\n\n")}
|
|
919
|
-
</document_comments>`;
|
|
920
|
-
return {
|
|
921
|
-
id: "document-comments",
|
|
922
|
-
text,
|
|
923
|
-
placement: "prepend-user-tail",
|
|
924
|
-
};
|
|
925
|
-
},
|
|
926
|
-
};
|
|
927
|
-
|
|
928
|
-
/**
|
|
929
|
-
* `subagent-status` injector — order 50, append-user-tail.
|
|
930
|
-
*
|
|
931
|
-
* Appends a pre-built `<active_subagents>` block to the tail user message
|
|
932
|
-
* so the parent LLM has visibility into active/completed child subagents.
|
|
933
|
-
*
|
|
934
|
-
* `applyRuntimeInjections` resolves the block from the live subagent manager
|
|
935
|
-
* before the chain runs; this injector is a thin passthrough that applies
|
|
936
|
-
* gating and positioning.
|
|
937
|
-
*
|
|
938
|
-
* Gating:
|
|
939
|
-
* - `mode === "full"`.
|
|
940
|
-
* - `subagentStatusBlock` is a non-null, non-empty string.
|
|
941
|
-
*/
|
|
942
|
-
const subagentStatusInjector: Injector = {
|
|
943
|
-
name: "subagent-status",
|
|
944
|
-
order: DEFAULT_INJECTOR_ORDER.subagentStatus,
|
|
945
|
-
async produce(ctx: TurnContext): Promise<InjectionBlock | null> {
|
|
946
|
-
const mode = ctx.mode ?? "full";
|
|
947
|
-
if (mode !== "full") return null;
|
|
948
|
-
const block = ctx.subagentStatusBlock;
|
|
949
|
-
if (!block) return null;
|
|
950
|
-
return {
|
|
951
|
-
id: "subagent-status",
|
|
952
|
-
text: block,
|
|
953
|
-
placement: "append-user-tail",
|
|
954
|
-
};
|
|
955
|
-
},
|
|
956
|
-
};
|
|
957
|
-
|
|
958
|
-
/**
|
|
959
|
-
* `slack-messages` injector — order 60, replace-run-messages.
|
|
960
|
-
*
|
|
961
|
-
* Swaps the conversation's `runMessages` array with a pre-rendered
|
|
962
|
-
* chronological Slack transcript built from the persisted message rows.
|
|
963
|
-
* Applied to every Slack conversation (channels and DMs alike). The
|
|
964
|
-
* orchestrator builds the transcript via `loadSlackChronologicalContext`
|
|
965
|
-
* before the chain runs.
|
|
966
|
-
*
|
|
967
|
-
* Memory-block prepending is preserved across the replacement:
|
|
968
|
-
* `extractMemoryPrefixBlocks` is re-applied to the Slack transcript's tail
|
|
969
|
-
* user message inside `applyRuntimeInjections` when the replacement fires.
|
|
970
|
-
*
|
|
971
|
-
* Active in both `full` and `minimal` mode — Slack transcript replacement
|
|
972
|
-
* is not a high-token optional block, it's the canonical view of Slack
|
|
973
|
-
* history for the model.
|
|
974
|
-
*
|
|
975
|
-
* Gating:
|
|
976
|
-
* - `channelCapabilities.channel === "slack"`.
|
|
977
|
-
* - `slackChronologicalMessages` has at least one entry.
|
|
978
|
-
*/
|
|
979
|
-
const slackMessagesInjector: Injector = {
|
|
980
|
-
name: "slack-messages",
|
|
981
|
-
order: DEFAULT_INJECTOR_ORDER.slackMessages,
|
|
982
|
-
async produce(ctx: TurnContext): Promise<InjectionBlock | null> {
|
|
983
|
-
if (ctx.channelCapabilities?.channel !== "slack") return null;
|
|
984
|
-
const messages = ctx.slackChronologicalMessages;
|
|
985
|
-
if (!messages || messages.length === 0) return null;
|
|
986
|
-
return {
|
|
987
|
-
id: "slack-messages",
|
|
988
|
-
// `text` is informational only — `replace-run-messages` placements
|
|
989
|
-
// bypass the tail-user-message splice path. Kept non-empty so
|
|
990
|
-
// `composeInjectorChain` (text-only consumers) still counts this
|
|
991
|
-
// injector as contributing content.
|
|
992
|
-
text: "[slack-chronological-transcript]",
|
|
993
|
-
placement: "replace-run-messages",
|
|
994
|
-
messagesOverride: messages,
|
|
995
|
-
};
|
|
996
|
-
},
|
|
997
|
-
};
|
|
998
|
-
|
|
999
|
-
/**
|
|
1000
|
-
* `thread-focus` injector — order 70, append-user-tail.
|
|
1001
|
-
*
|
|
1002
|
-
* Appends a non-persisted `<active_thread>` block listing the parent +
|
|
1003
|
-
* replies of the thread the current inbound user message belongs to, so
|
|
1004
|
-
* the model can orient even when the channel-wide chronological transcript
|
|
1005
|
-
* is long and interleaved.
|
|
1006
|
-
*
|
|
1007
|
-
* The orchestrator builds the block via `loadSlackActiveThreadFocusBlock`
|
|
1008
|
-
* (which short-circuits for DMs). This injector wraps the value so the
|
|
1009
|
-
* block is applied declaratively through the chain.
|
|
1010
|
-
*
|
|
1011
|
-
* Gating:
|
|
1012
|
-
* - `mode === "full"`.
|
|
1013
|
-
* - `channelCapabilities.channel === "slack"` and `chatType === "channel"`
|
|
1014
|
-
* (non-DM Slack conversation).
|
|
1015
|
-
* - `slackActiveThreadFocusBlock` is a non-empty string.
|
|
1016
|
-
*/
|
|
1017
|
-
const threadFocusInjector: Injector = {
|
|
1018
|
-
name: "thread-focus",
|
|
1019
|
-
order: DEFAULT_INJECTOR_ORDER.threadFocus,
|
|
1020
|
-
async produce(ctx: TurnContext): Promise<InjectionBlock | null> {
|
|
1021
|
-
const mode = ctx.mode ?? "full";
|
|
1022
|
-
if (mode !== "full") return null;
|
|
1023
|
-
const caps = ctx.channelCapabilities;
|
|
1024
|
-
if (!caps || caps.channel !== "slack" || caps.chatType !== "channel") {
|
|
1025
|
-
return null;
|
|
1026
|
-
}
|
|
1027
|
-
const block = ctx.slackActiveThreadFocusBlock;
|
|
1028
|
-
if (typeof block !== "string" || block.length === 0) return null;
|
|
1029
|
-
return {
|
|
1030
|
-
id: "thread-focus",
|
|
1031
|
-
text: block,
|
|
1032
|
-
placement: "append-user-tail",
|
|
1033
|
-
};
|
|
1034
|
-
},
|
|
1035
|
-
};
|
|
1036
|
-
|
|
1037
|
-
/**
|
|
1038
|
-
* Every default injector in ascending `order`. This is the canonical
|
|
1039
|
-
* first-party injection sequence consumed by `applyRuntimeInjections` via the
|
|
1040
|
-
* assembled injector chain.
|
|
1041
|
-
*
|
|
1042
|
-
* `order` is the source of truth for sequencing (see {@link DEFAULT_INJECTOR_ORDER});
|
|
1043
|
-
* the chain assembler sorts by it, so this array's literal order is only a
|
|
1044
|
-
* readability convenience.
|
|
1045
|
-
*/
|
|
1046
|
-
export const defaultInjectors: Injector[] = [
|
|
1047
|
-
diskPressureWarningInjector,
|
|
1048
|
-
workspaceContextInjector,
|
|
1049
|
-
backgroundTurnInjector,
|
|
1050
|
-
unifiedTurnContextInjector,
|
|
1051
|
-
configQuarantineNoticeInjector,
|
|
1052
|
-
pkbContextInjector,
|
|
1053
|
-
pkbReminderInjector,
|
|
1054
|
-
memoryV2StaticInjector,
|
|
1055
|
-
nowMdInjector,
|
|
1056
|
-
activeDocumentsInjector,
|
|
1057
|
-
documentCommentsInjector,
|
|
1058
|
-
subagentStatusInjector,
|
|
1059
|
-
slackMessagesInjector,
|
|
1060
|
-
threadFocusInjector,
|
|
1061
|
-
];
|