@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
|
@@ -21,8 +21,8 @@ mock.module("../background-wake/publisher.js", () => ({
|
|
|
21
21
|
}));
|
|
22
22
|
|
|
23
23
|
import { SYNC_TAGS } from "../daemon/message-types/sync.js";
|
|
24
|
-
import { getDb } from "../
|
|
25
|
-
import { initializeDb } from "../
|
|
24
|
+
import { getDb } from "../persistence/db-connection.js";
|
|
25
|
+
import { initializeDb } from "../persistence/db-init.js";
|
|
26
26
|
import type { AssistantEvent } from "../runtime/assistant-event.js";
|
|
27
27
|
import { assistantEventHub } from "../runtime/assistant-event-hub.js";
|
|
28
28
|
import {
|
|
@@ -100,7 +100,7 @@ describe("schedule sync invalidation", () => {
|
|
|
100
100
|
});
|
|
101
101
|
|
|
102
102
|
try {
|
|
103
|
-
const job = createSchedule({
|
|
103
|
+
const job = await createSchedule({
|
|
104
104
|
name: "Sync test",
|
|
105
105
|
cronExpression: "* * * * *",
|
|
106
106
|
message: "sync me",
|
|
@@ -108,31 +108,31 @@ describe("schedule sync invalidation", () => {
|
|
|
108
108
|
});
|
|
109
109
|
await expectScheduleSyncEvent(received);
|
|
110
110
|
|
|
111
|
-
updateSchedule(job.id, { name: "Updated sync test" });
|
|
111
|
+
await updateSchedule(job.id, { name: "Updated sync test" });
|
|
112
112
|
await expectScheduleSyncEvent(received);
|
|
113
113
|
|
|
114
114
|
getRawDb().run("UPDATE cron_jobs SET next_run_at = ? WHERE id = ?", [
|
|
115
115
|
Date.now() - 1000,
|
|
116
116
|
job.id,
|
|
117
117
|
]);
|
|
118
|
-
expect(claimDueSchedules(Date.now())).toHaveLength(1);
|
|
118
|
+
expect(await claimDueSchedules(Date.now())).toHaveLength(1);
|
|
119
119
|
await expectScheduleSyncEvent(received);
|
|
120
120
|
|
|
121
|
-
const runId = createScheduleRun(job.id, "conv-123");
|
|
122
|
-
completeScheduleRun(runId, { status: "ok" });
|
|
121
|
+
const runId = await createScheduleRun(job.id, "conv-123");
|
|
122
|
+
await completeScheduleRun(runId, { status: "ok" });
|
|
123
123
|
await expectScheduleSyncEvent(received);
|
|
124
124
|
|
|
125
|
-
const oneShot = createSchedule({
|
|
125
|
+
const oneShot = await createSchedule({
|
|
126
126
|
name: "One-shot sync test",
|
|
127
127
|
message: "cancel me",
|
|
128
128
|
nextRunAt: Date.now() + 60_000,
|
|
129
129
|
});
|
|
130
130
|
await expectScheduleSyncEvent(received);
|
|
131
131
|
|
|
132
|
-
expect(cancelSchedule(oneShot.id)).toBe(true);
|
|
132
|
+
expect(await cancelSchedule(oneShot.id)).toBe(true);
|
|
133
133
|
await expectScheduleSyncEvent(received);
|
|
134
134
|
|
|
135
|
-
expect(deleteSchedule(job.id)).toBe(true);
|
|
135
|
+
expect(await deleteSchedule(job.id)).toBe(true);
|
|
136
136
|
await expectScheduleSyncEvent(received);
|
|
137
137
|
} finally {
|
|
138
138
|
subscription.dispose();
|
|
@@ -149,8 +149,8 @@ describe("createSchedule (cron)", () => {
|
|
|
149
149
|
db.run("DELETE FROM cron_jobs");
|
|
150
150
|
});
|
|
151
151
|
|
|
152
|
-
test("creates a cron schedule using only cronExpression", () => {
|
|
153
|
-
const job = createSchedule({
|
|
152
|
+
test("creates a cron schedule using only cronExpression", async () => {
|
|
153
|
+
const job = await createSchedule({
|
|
154
154
|
name: "Morning ping",
|
|
155
155
|
cronExpression: "0 9 * * *",
|
|
156
156
|
message: "good morning",
|
|
@@ -165,8 +165,8 @@ describe("createSchedule (cron)", () => {
|
|
|
165
165
|
expect(job.enabled).toBe(true);
|
|
166
166
|
});
|
|
167
167
|
|
|
168
|
-
test("persisted cron schedule is retrievable with new fields", () => {
|
|
169
|
-
const job = createSchedule({
|
|
168
|
+
test("persisted cron schedule is retrievable with new fields", async () => {
|
|
169
|
+
const job = await createSchedule({
|
|
170
170
|
name: "Hourly",
|
|
171
171
|
description: "Check the hourly status report",
|
|
172
172
|
cronExpression: "0 * * * *",
|
|
@@ -182,8 +182,8 @@ describe("createSchedule (cron)", () => {
|
|
|
182
182
|
expect(retrieved!.description).toBe("Check the hourly status report");
|
|
183
183
|
});
|
|
184
184
|
|
|
185
|
-
test("normalizes schedule descriptions on create and update", () => {
|
|
186
|
-
const job = createSchedule({
|
|
185
|
+
test("normalizes schedule descriptions on create and update", async () => {
|
|
186
|
+
const job = await createSchedule({
|
|
187
187
|
name: "Description normalization",
|
|
188
188
|
description: " Daily executive summary ",
|
|
189
189
|
cronExpression: "0 8 * * *",
|
|
@@ -198,7 +198,7 @@ describe("createSchedule (cron)", () => {
|
|
|
198
198
|
.get(job.id) as { description: string };
|
|
199
199
|
expect(raw.description).toBe("Daily executive summary");
|
|
200
200
|
|
|
201
|
-
const updated = updateSchedule(job.id, {
|
|
201
|
+
const updated = await updateSchedule(job.id, {
|
|
202
202
|
description: " Updated summary prompt ",
|
|
203
203
|
});
|
|
204
204
|
expect(updated).not.toBeNull();
|
|
@@ -207,8 +207,8 @@ describe("createSchedule (cron)", () => {
|
|
|
207
207
|
expect(listSchedules()[0].description).toBe("Updated summary prompt");
|
|
208
208
|
});
|
|
209
209
|
|
|
210
|
-
test("defaults source conversation metadata to null", () => {
|
|
211
|
-
const job = createSchedule({
|
|
210
|
+
test("defaults source conversation metadata to null", async () => {
|
|
211
|
+
const job = await createSchedule({
|
|
212
212
|
name: "No source conversation",
|
|
213
213
|
cronExpression: "0 9 * * *",
|
|
214
214
|
message: "daily check",
|
|
@@ -224,8 +224,8 @@ describe("createSchedule (cron)", () => {
|
|
|
224
224
|
expect(raw.created_from_conversation_id).toBeNull();
|
|
225
225
|
});
|
|
226
226
|
|
|
227
|
-
test("persists source conversation metadata through create, list, and update", () => {
|
|
228
|
-
const job = createSchedule({
|
|
227
|
+
test("persists source conversation metadata through create, list, and update", async () => {
|
|
228
|
+
const job = await createSchedule({
|
|
229
229
|
name: "With source conversation",
|
|
230
230
|
cronExpression: "0 9 * * *",
|
|
231
231
|
message: "daily check",
|
|
@@ -237,19 +237,19 @@ describe("createSchedule (cron)", () => {
|
|
|
237
237
|
expect(getSchedule(job.id)!.createdFromConversationId).toBe("conv-source");
|
|
238
238
|
expect(listSchedules()[0].createdFromConversationId).toBe("conv-source");
|
|
239
239
|
|
|
240
|
-
const updated = updateSchedule(job.id, {
|
|
240
|
+
const updated = await updateSchedule(job.id, {
|
|
241
241
|
createdFromConversationId: "conv-updated",
|
|
242
242
|
});
|
|
243
243
|
expect(updated!.createdFromConversationId).toBe("conv-updated");
|
|
244
244
|
|
|
245
|
-
const cleared = updateSchedule(job.id, {
|
|
245
|
+
const cleared = await updateSchedule(job.id, {
|
|
246
246
|
createdFromConversationId: null,
|
|
247
247
|
});
|
|
248
248
|
expect(cleared!.createdFromConversationId).toBeNull();
|
|
249
249
|
});
|
|
250
250
|
|
|
251
|
-
test("stores schedule_syntax in the DB row", () => {
|
|
252
|
-
const job = createSchedule({
|
|
251
|
+
test("stores schedule_syntax in the DB row", async () => {
|
|
252
|
+
const job = await createSchedule({
|
|
253
253
|
name: "Syntax check",
|
|
254
254
|
cronExpression: "*/5 * * * *",
|
|
255
255
|
message: "test",
|
|
@@ -263,15 +263,15 @@ describe("createSchedule (cron)", () => {
|
|
|
263
263
|
expect(raw!.schedule_syntax).toBe("cron");
|
|
264
264
|
});
|
|
265
265
|
|
|
266
|
-
test("rejects invalid cron expression", () => {
|
|
267
|
-
expect(
|
|
266
|
+
test("rejects invalid cron expression", async () => {
|
|
267
|
+
await expect(
|
|
268
268
|
createSchedule({
|
|
269
269
|
name: "Bad cron",
|
|
270
270
|
cronExpression: "not-a-cron",
|
|
271
271
|
message: "fail",
|
|
272
272
|
syntax: "cron",
|
|
273
273
|
}),
|
|
274
|
-
).toThrow();
|
|
274
|
+
).rejects.toThrow();
|
|
275
275
|
});
|
|
276
276
|
});
|
|
277
277
|
|
|
@@ -284,9 +284,9 @@ describe("createSchedule (RRULE)", () => {
|
|
|
284
284
|
db.run("DELETE FROM cron_jobs");
|
|
285
285
|
});
|
|
286
286
|
|
|
287
|
-
test("creates an RRULE schedule with syntax + expression", () => {
|
|
287
|
+
test("creates an RRULE schedule with syntax + expression", async () => {
|
|
288
288
|
const rrule = "DTSTART:20260101T090000Z\nRRULE:FREQ=DAILY;INTERVAL=1";
|
|
289
|
-
const job = createSchedule({
|
|
289
|
+
const job = await createSchedule({
|
|
290
290
|
name: "Daily RRULE",
|
|
291
291
|
cronExpression: rrule,
|
|
292
292
|
message: "rrule test",
|
|
@@ -300,9 +300,9 @@ describe("createSchedule (RRULE)", () => {
|
|
|
300
300
|
expect(job.nextRunAt).toBeGreaterThan(0);
|
|
301
301
|
});
|
|
302
302
|
|
|
303
|
-
test("stores rrule syntax in DB", () => {
|
|
303
|
+
test("stores rrule syntax in DB", async () => {
|
|
304
304
|
const rrule = "DTSTART:20260101T090000Z\nRRULE:FREQ=WEEKLY;BYDAY=MO";
|
|
305
|
-
const job = createSchedule({
|
|
305
|
+
const job = await createSchedule({
|
|
306
306
|
name: "Weekly RRULE",
|
|
307
307
|
cronExpression: rrule,
|
|
308
308
|
message: "weekly",
|
|
@@ -323,8 +323,8 @@ describe("createSchedule (RRULE)", () => {
|
|
|
323
323
|
expect(raw!.cron_expression).toBe(rrule);
|
|
324
324
|
});
|
|
325
325
|
|
|
326
|
-
test("rejects RRULE without DTSTART", () => {
|
|
327
|
-
expect(
|
|
326
|
+
test("rejects RRULE without DTSTART", async () => {
|
|
327
|
+
await expect(
|
|
328
328
|
createSchedule({
|
|
329
329
|
name: "No dtstart",
|
|
330
330
|
cronExpression: "RRULE:FREQ=DAILY",
|
|
@@ -332,7 +332,7 @@ describe("createSchedule (RRULE)", () => {
|
|
|
332
332
|
syntax: "rrule",
|
|
333
333
|
expression: "RRULE:FREQ=DAILY",
|
|
334
334
|
}),
|
|
335
|
-
).toThrow();
|
|
335
|
+
).rejects.toThrow();
|
|
336
336
|
});
|
|
337
337
|
});
|
|
338
338
|
|
|
@@ -345,14 +345,14 @@ describe("createSchedule (RRULE set)", () => {
|
|
|
345
345
|
db.run("DELETE FROM cron_jobs");
|
|
346
346
|
});
|
|
347
347
|
|
|
348
|
-
test("creates schedule with RRULE + EXDATE set expression", () => {
|
|
348
|
+
test("creates schedule with RRULE + EXDATE set expression", async () => {
|
|
349
349
|
const expression = [
|
|
350
350
|
"DTSTART:20250101T090000Z",
|
|
351
351
|
"RRULE:FREQ=DAILY;INTERVAL=1",
|
|
352
352
|
"EXDATE:20250102T090000Z",
|
|
353
353
|
].join("\n");
|
|
354
354
|
|
|
355
|
-
const job = createSchedule({
|
|
355
|
+
const job = await createSchedule({
|
|
356
356
|
name: "Daily with exclusion",
|
|
357
357
|
cronExpression: expression,
|
|
358
358
|
message: "set test",
|
|
@@ -365,14 +365,14 @@ describe("createSchedule (RRULE set)", () => {
|
|
|
365
365
|
expect(job.nextRunAt).toBeGreaterThan(0);
|
|
366
366
|
});
|
|
367
367
|
|
|
368
|
-
test("creates schedule with RRULE + RDATE set expression", () => {
|
|
368
|
+
test("creates schedule with RRULE + RDATE set expression", async () => {
|
|
369
369
|
const expression = [
|
|
370
370
|
"DTSTART:20250101T090000Z",
|
|
371
371
|
"RRULE:FREQ=WEEKLY;BYDAY=MO",
|
|
372
372
|
"RDATE:20250115T090000Z",
|
|
373
373
|
].join("\n");
|
|
374
374
|
|
|
375
|
-
const job = createSchedule({
|
|
375
|
+
const job = await createSchedule({
|
|
376
376
|
name: "Weekly with extra dates",
|
|
377
377
|
cronExpression: expression,
|
|
378
378
|
message: "rdate test",
|
|
@@ -384,7 +384,7 @@ describe("createSchedule (RRULE set)", () => {
|
|
|
384
384
|
expect(job.expression).toContain("RDATE");
|
|
385
385
|
});
|
|
386
386
|
|
|
387
|
-
test("preserves full set expression text in DB without collapsing", () => {
|
|
387
|
+
test("preserves full set expression text in DB without collapsing", async () => {
|
|
388
388
|
const expression = [
|
|
389
389
|
"DTSTART:20250101T090000Z",
|
|
390
390
|
"RRULE:FREQ=DAILY;INTERVAL=1",
|
|
@@ -392,7 +392,7 @@ describe("createSchedule (RRULE set)", () => {
|
|
|
392
392
|
"EXDATE:20250103T090000Z",
|
|
393
393
|
].join("\n");
|
|
394
394
|
|
|
395
|
-
const job = createSchedule({
|
|
395
|
+
const job = await createSchedule({
|
|
396
396
|
name: "Multi-EXDATE",
|
|
397
397
|
cronExpression: expression,
|
|
398
398
|
message: "preserve test",
|
|
@@ -408,14 +408,14 @@ describe("createSchedule (RRULE set)", () => {
|
|
|
408
408
|
expect(raw.cron_expression).toContain("EXDATE:20250103T090000Z");
|
|
409
409
|
});
|
|
410
410
|
|
|
411
|
-
test("retrieved set schedule matches what was stored", () => {
|
|
411
|
+
test("retrieved set schedule matches what was stored", async () => {
|
|
412
412
|
const expression = [
|
|
413
413
|
"DTSTART:20250101T090000Z",
|
|
414
414
|
"RRULE:FREQ=DAILY;INTERVAL=1",
|
|
415
415
|
"EXDATE:20250105T090000Z",
|
|
416
416
|
].join("\n");
|
|
417
417
|
|
|
418
|
-
const job = createSchedule({
|
|
418
|
+
const job = await createSchedule({
|
|
419
419
|
name: "Retrieve set",
|
|
420
420
|
cronExpression: expression,
|
|
421
421
|
message: "retrieve test",
|
|
@@ -440,7 +440,7 @@ describe("claimDueSchedules (RRULE set)", () => {
|
|
|
440
440
|
db.run("DELETE FROM cron_jobs");
|
|
441
441
|
});
|
|
442
442
|
|
|
443
|
-
test("claims RRULE set schedule and correctly advances nextRunAt past exclusions", () => {
|
|
443
|
+
test("claims RRULE set schedule and correctly advances nextRunAt past exclusions", async () => {
|
|
444
444
|
// Use a recent DTSTART (1 hour ago) so rrule doesn't iterate through hundreds of
|
|
445
445
|
// thousands of occurrences when computing the next run.
|
|
446
446
|
const pastDate = new Date(Date.now() - 3_600_000);
|
|
@@ -463,7 +463,7 @@ describe("claimDueSchedules (RRULE set)", () => {
|
|
|
463
463
|
`EXDATE:${exDs}`,
|
|
464
464
|
].join("\n");
|
|
465
465
|
|
|
466
|
-
const job = createSchedule({
|
|
466
|
+
const job = await createSchedule({
|
|
467
467
|
name: "Claim set test",
|
|
468
468
|
cronExpression: expression,
|
|
469
469
|
message: "claim set",
|
|
@@ -478,7 +478,7 @@ describe("claimDueSchedules (RRULE set)", () => {
|
|
|
478
478
|
]);
|
|
479
479
|
|
|
480
480
|
const now = Date.now();
|
|
481
|
-
const claimed = claimDueSchedules(now);
|
|
481
|
+
const claimed = await claimDueSchedules(now);
|
|
482
482
|
expect(claimed.length).toBe(1);
|
|
483
483
|
expect(claimed[0].syntax).toBe("rrule");
|
|
484
484
|
// nextRunAt should advance to a future time
|
|
@@ -495,15 +495,17 @@ describe("updateSchedule", () => {
|
|
|
495
495
|
db.run("DELETE FROM cron_jobs");
|
|
496
496
|
});
|
|
497
497
|
|
|
498
|
-
test("updating cronExpression (legacy path) still works", () => {
|
|
499
|
-
const job = createSchedule({
|
|
498
|
+
test("updating cronExpression (legacy path) still works", async () => {
|
|
499
|
+
const job = await createSchedule({
|
|
500
500
|
name: "Update test",
|
|
501
501
|
cronExpression: "0 9 * * *",
|
|
502
502
|
message: "update me",
|
|
503
503
|
syntax: "cron",
|
|
504
504
|
});
|
|
505
505
|
|
|
506
|
-
const updated = updateSchedule(job.id, {
|
|
506
|
+
const updated = await updateSchedule(job.id, {
|
|
507
|
+
cronExpression: "0 10 * * *",
|
|
508
|
+
});
|
|
507
509
|
expect(updated).not.toBeNull();
|
|
508
510
|
expect(updated!.cronExpression).toBe("0 10 * * *");
|
|
509
511
|
expect(updated!.expression).toBe("0 10 * * *");
|
|
@@ -512,8 +514,8 @@ describe("updateSchedule", () => {
|
|
|
512
514
|
expect(updated!.nextRunAt).not.toBe(job.nextRunAt);
|
|
513
515
|
});
|
|
514
516
|
|
|
515
|
-
test("updating syntax + expression switches to RRULE", () => {
|
|
516
|
-
const job = createSchedule({
|
|
517
|
+
test("updating syntax + expression switches to RRULE", async () => {
|
|
518
|
+
const job = await createSchedule({
|
|
517
519
|
name: "Switch to RRULE",
|
|
518
520
|
cronExpression: "0 9 * * *",
|
|
519
521
|
message: "switching",
|
|
@@ -521,7 +523,7 @@ describe("updateSchedule", () => {
|
|
|
521
523
|
});
|
|
522
524
|
|
|
523
525
|
const rrule = "DTSTART:20260101T090000Z\nRRULE:FREQ=DAILY;INTERVAL=2";
|
|
524
|
-
const updated = updateSchedule(job.id, {
|
|
526
|
+
const updated = await updateSchedule(job.id, {
|
|
525
527
|
syntax: "rrule",
|
|
526
528
|
expression: rrule,
|
|
527
529
|
});
|
|
@@ -539,8 +541,8 @@ describe("updateSchedule", () => {
|
|
|
539
541
|
expect(raw!.schedule_syntax).toBe("rrule");
|
|
540
542
|
});
|
|
541
543
|
|
|
542
|
-
test("updating to RRULE set expression preserves full text", () => {
|
|
543
|
-
const job = createSchedule({
|
|
544
|
+
test("updating to RRULE set expression preserves full text", async () => {
|
|
545
|
+
const job = await createSchedule({
|
|
544
546
|
name: "Update to set",
|
|
545
547
|
cronExpression: "0 9 * * *",
|
|
546
548
|
message: "update to set",
|
|
@@ -553,7 +555,7 @@ describe("updateSchedule", () => {
|
|
|
553
555
|
"EXDATE:20250102T090000Z",
|
|
554
556
|
].join("\n");
|
|
555
557
|
|
|
556
|
-
const updated = updateSchedule(job.id, {
|
|
558
|
+
const updated = await updateSchedule(job.id, {
|
|
557
559
|
syntax: "rrule",
|
|
558
560
|
expression: setExpr,
|
|
559
561
|
});
|
|
@@ -565,20 +567,20 @@ describe("updateSchedule", () => {
|
|
|
565
567
|
expect(updated!.nextRunAt).toBeGreaterThan(0);
|
|
566
568
|
});
|
|
567
569
|
|
|
568
|
-
test("rejects invalid expression on update", () => {
|
|
569
|
-
const job = createSchedule({
|
|
570
|
+
test("rejects invalid expression on update", async () => {
|
|
571
|
+
const job = await createSchedule({
|
|
570
572
|
name: "Reject bad update",
|
|
571
573
|
cronExpression: "0 9 * * *",
|
|
572
574
|
message: "nope",
|
|
573
575
|
syntax: "cron",
|
|
574
576
|
});
|
|
575
577
|
|
|
576
|
-
expect(
|
|
578
|
+
await expect(
|
|
577
579
|
updateSchedule(job.id, {
|
|
578
580
|
syntax: "rrule",
|
|
579
581
|
expression: "RRULE:FREQ=DAILY",
|
|
580
582
|
}),
|
|
581
|
-
).toThrow();
|
|
583
|
+
).rejects.toThrow();
|
|
582
584
|
});
|
|
583
585
|
});
|
|
584
586
|
|
|
@@ -591,8 +593,8 @@ describe("claimDueSchedules", () => {
|
|
|
591
593
|
db.run("DELETE FROM cron_jobs");
|
|
592
594
|
});
|
|
593
595
|
|
|
594
|
-
test("claims due cron schedules and advances nextRunAt", () => {
|
|
595
|
-
const job = createSchedule({
|
|
596
|
+
test("claims due cron schedules and advances nextRunAt", async () => {
|
|
597
|
+
const job = await createSchedule({
|
|
596
598
|
name: "Claim cron",
|
|
597
599
|
cronExpression: "* * * * *",
|
|
598
600
|
message: "cron claim test",
|
|
@@ -605,14 +607,14 @@ describe("claimDueSchedules", () => {
|
|
|
605
607
|
job.id,
|
|
606
608
|
]);
|
|
607
609
|
|
|
608
|
-
const claimed = claimDueSchedules(Date.now());
|
|
610
|
+
const claimed = await claimDueSchedules(Date.now());
|
|
609
611
|
expect(claimed.length).toBe(1);
|
|
610
612
|
expect(claimed[0].id).toBe(job.id);
|
|
611
613
|
expect(claimed[0].syntax).toBe("cron");
|
|
612
614
|
expect(claimed[0].nextRunAt).toBeGreaterThan(Date.now() - 1000);
|
|
613
615
|
});
|
|
614
616
|
|
|
615
|
-
test("claims due RRULE schedules and advances nextRunAt", () => {
|
|
617
|
+
test("claims due RRULE schedules and advances nextRunAt", async () => {
|
|
616
618
|
// Use a recent DTSTART (1 hour ago) so rrule doesn't iterate through
|
|
617
619
|
// hundreds of thousands of occurrences when computing the next run.
|
|
618
620
|
const pastDate = new Date(Date.now() - 3_600_000);
|
|
@@ -623,7 +625,7 @@ describe("claimDueSchedules", () => {
|
|
|
623
625
|
pastDate.getUTCMinutes(),
|
|
624
626
|
)}${pad(pastDate.getUTCSeconds())}Z`;
|
|
625
627
|
const rrule = `DTSTART:${ds}\nRRULE:FREQ=MINUTELY;INTERVAL=1`;
|
|
626
|
-
const job = createSchedule({
|
|
628
|
+
const job = await createSchedule({
|
|
627
629
|
name: "Claim RRULE",
|
|
628
630
|
cronExpression: rrule,
|
|
629
631
|
message: "rrule claim test",
|
|
@@ -639,7 +641,7 @@ describe("claimDueSchedules", () => {
|
|
|
639
641
|
]);
|
|
640
642
|
|
|
641
643
|
const now = Date.now();
|
|
642
|
-
const claimed = claimDueSchedules(now);
|
|
644
|
+
const claimed = await claimDueSchedules(now);
|
|
643
645
|
expect(claimed.length).toBe(1);
|
|
644
646
|
expect(claimed[0].id).toBe(job.id);
|
|
645
647
|
expect(claimed[0].syntax).toBe("rrule");
|
|
@@ -647,19 +649,19 @@ describe("claimDueSchedules", () => {
|
|
|
647
649
|
expect(claimed[0].nextRunAt).toBeGreaterThanOrEqual(now);
|
|
648
650
|
});
|
|
649
651
|
|
|
650
|
-
test("does not claim schedules that are not yet due", () => {
|
|
651
|
-
createSchedule({
|
|
652
|
+
test("does not claim schedules that are not yet due", async () => {
|
|
653
|
+
await createSchedule({
|
|
652
654
|
name: "Not due yet",
|
|
653
655
|
cronExpression: "0 9 * * *",
|
|
654
656
|
message: "future schedule",
|
|
655
657
|
syntax: "cron",
|
|
656
658
|
});
|
|
657
659
|
|
|
658
|
-
const claimed = claimDueSchedules(0); // timestamp 0 means nothing is due
|
|
660
|
+
const claimed = await claimDueSchedules(0); // timestamp 0 means nothing is due
|
|
659
661
|
expect(claimed.length).toBe(0);
|
|
660
662
|
});
|
|
661
663
|
|
|
662
|
-
test("claims exhausted RRULE schedule and disables it", () => {
|
|
664
|
+
test("claims exhausted RRULE schedule and disables it", async () => {
|
|
663
665
|
// COUNT=1 with a past DTSTART means the single occurrence has already
|
|
664
666
|
// passed, so computeNextRunAt returns null — triggering the exhaustion path.
|
|
665
667
|
// We insert directly via SQL because createSchedule validates that at least
|
|
@@ -690,7 +692,7 @@ describe("claimDueSchedules", () => {
|
|
|
690
692
|
],
|
|
691
693
|
);
|
|
692
694
|
|
|
693
|
-
const claimed = claimDueSchedules(Date.now());
|
|
695
|
+
const claimed = await claimDueSchedules(Date.now());
|
|
694
696
|
expect(claimed.length).toBe(1);
|
|
695
697
|
expect(claimed[0].id).toBe(id);
|
|
696
698
|
expect(claimed[0].enabled).toBe(false);
|
|
@@ -701,12 +703,12 @@ describe("claimDueSchedules", () => {
|
|
|
701
703
|
expect(persisted!.enabled).toBe(false);
|
|
702
704
|
|
|
703
705
|
// A subsequent claim should not pick it up
|
|
704
|
-
const again = claimDueSchedules(Date.now());
|
|
706
|
+
const again = await claimDueSchedules(Date.now());
|
|
705
707
|
expect(again.length).toBe(0);
|
|
706
708
|
});
|
|
707
709
|
|
|
708
|
-
test("optimistic lock prevents double-claiming", () => {
|
|
709
|
-
const job = createSchedule({
|
|
710
|
+
test("optimistic lock prevents double-claiming", async () => {
|
|
711
|
+
const job = await createSchedule({
|
|
710
712
|
name: "Double claim",
|
|
711
713
|
cronExpression: "* * * * *",
|
|
712
714
|
message: "no double",
|
|
@@ -718,11 +720,11 @@ describe("claimDueSchedules", () => {
|
|
|
718
720
|
job.id,
|
|
719
721
|
]);
|
|
720
722
|
|
|
721
|
-
const first = claimDueSchedules(Date.now());
|
|
723
|
+
const first = await claimDueSchedules(Date.now());
|
|
722
724
|
expect(first.length).toBe(1);
|
|
723
725
|
|
|
724
726
|
// Second claim should find nothing since nextRunAt was advanced
|
|
725
|
-
const second = claimDueSchedules(Date.now() - 500);
|
|
727
|
+
const second = await claimDueSchedules(Date.now() - 500);
|
|
726
728
|
expect(second.length).toBe(0);
|
|
727
729
|
});
|
|
728
730
|
});
|
|
@@ -736,9 +738,9 @@ describe("createSchedule (one-shot)", () => {
|
|
|
736
738
|
db.run("DELETE FROM cron_jobs");
|
|
737
739
|
});
|
|
738
740
|
|
|
739
|
-
test("creates a one-shot schedule with no expression", () => {
|
|
741
|
+
test("creates a one-shot schedule with no expression", async () => {
|
|
740
742
|
const fireAt = Date.now() + 60_000;
|
|
741
|
-
const job = createSchedule({
|
|
743
|
+
const job = await createSchedule({
|
|
742
744
|
name: "Remind me",
|
|
743
745
|
message: "take out the trash",
|
|
744
746
|
nextRunAt: fireAt,
|
|
@@ -754,10 +756,10 @@ describe("createSchedule (one-shot)", () => {
|
|
|
754
756
|
expect(job.routingHints).toEqual({});
|
|
755
757
|
});
|
|
756
758
|
|
|
757
|
-
test("creates a one-shot schedule with notify mode and routing", () => {
|
|
759
|
+
test("creates a one-shot schedule with notify mode and routing", async () => {
|
|
758
760
|
const fireAt = Date.now() + 60_000;
|
|
759
761
|
const hints = { preferredChannel: "slack", threadId: "abc123" };
|
|
760
|
-
const job = createSchedule({
|
|
762
|
+
const job = await createSchedule({
|
|
761
763
|
name: "Notify me",
|
|
762
764
|
message: "meeting in 5",
|
|
763
765
|
nextRunAt: fireAt,
|
|
@@ -773,19 +775,19 @@ describe("createSchedule (one-shot)", () => {
|
|
|
773
775
|
expect(job.status).toBe("active");
|
|
774
776
|
});
|
|
775
777
|
|
|
776
|
-
test("rejects one-shot schedule without nextRunAt", () => {
|
|
777
|
-
expect(
|
|
778
|
+
test("rejects one-shot schedule without nextRunAt", async () => {
|
|
779
|
+
await expect(
|
|
778
780
|
createSchedule({
|
|
779
781
|
name: "Bad one-shot",
|
|
780
782
|
message: "no time",
|
|
781
783
|
}),
|
|
782
|
-
).toThrow("One-shot schedules (no expression) require nextRunAt");
|
|
784
|
+
).rejects.toThrow("One-shot schedules (no expression) require nextRunAt");
|
|
783
785
|
});
|
|
784
786
|
|
|
785
|
-
test("one-shot schedule persists and round-trips correctly", () => {
|
|
787
|
+
test("one-shot schedule persists and round-trips correctly", async () => {
|
|
786
788
|
const fireAt = Date.now() + 120_000;
|
|
787
789
|
const hints = { channel: "telegram" };
|
|
788
|
-
const job = createSchedule({
|
|
790
|
+
const job = await createSchedule({
|
|
789
791
|
name: "Persist test",
|
|
790
792
|
message: "round trip",
|
|
791
793
|
nextRunAt: fireAt,
|
|
@@ -815,48 +817,48 @@ describe("claimDueSchedules (one-shot)", () => {
|
|
|
815
817
|
db.run("DELETE FROM cron_jobs");
|
|
816
818
|
});
|
|
817
819
|
|
|
818
|
-
test("claims one-shot schedules whose nextRunAt <= now", () => {
|
|
819
|
-
const job = createSchedule({
|
|
820
|
+
test("claims one-shot schedules whose nextRunAt <= now", async () => {
|
|
821
|
+
const job = await createSchedule({
|
|
820
822
|
name: "Due one-shot",
|
|
821
823
|
message: "fire now",
|
|
822
824
|
nextRunAt: Date.now() - 1000,
|
|
823
825
|
});
|
|
824
826
|
|
|
825
|
-
const claimed = claimDueSchedules(Date.now());
|
|
827
|
+
const claimed = await claimDueSchedules(Date.now());
|
|
826
828
|
expect(claimed.length).toBe(1);
|
|
827
829
|
expect(claimed[0].id).toBe(job.id);
|
|
828
830
|
expect(claimed[0].expression).toBeNull();
|
|
829
831
|
expect(claimed[0].status).toBe("firing");
|
|
830
832
|
});
|
|
831
833
|
|
|
832
|
-
test("does not claim one-shot schedules that are not yet due", () => {
|
|
833
|
-
createSchedule({
|
|
834
|
+
test("does not claim one-shot schedules that are not yet due", async () => {
|
|
835
|
+
await createSchedule({
|
|
834
836
|
name: "Future one-shot",
|
|
835
837
|
message: "not yet",
|
|
836
838
|
nextRunAt: Date.now() + 60_000,
|
|
837
839
|
});
|
|
838
840
|
|
|
839
|
-
const claimed = claimDueSchedules(Date.now());
|
|
841
|
+
const claimed = await claimDueSchedules(Date.now());
|
|
840
842
|
expect(claimed.length).toBe(0);
|
|
841
843
|
});
|
|
842
844
|
|
|
843
|
-
test("does not double-claim one-shot schedules", () => {
|
|
844
|
-
createSchedule({
|
|
845
|
+
test("does not double-claim one-shot schedules", async () => {
|
|
846
|
+
await createSchedule({
|
|
845
847
|
name: "Once only",
|
|
846
848
|
message: "no double",
|
|
847
849
|
nextRunAt: Date.now() - 1000,
|
|
848
850
|
});
|
|
849
851
|
|
|
850
|
-
const first = claimDueSchedules(Date.now());
|
|
852
|
+
const first = await claimDueSchedules(Date.now());
|
|
851
853
|
expect(first.length).toBe(1);
|
|
852
854
|
|
|
853
855
|
// Second claim should find nothing since status is now 'firing'
|
|
854
|
-
const second = claimDueSchedules(Date.now());
|
|
856
|
+
const second = await claimDueSchedules(Date.now());
|
|
855
857
|
expect(second.length).toBe(0);
|
|
856
858
|
});
|
|
857
859
|
|
|
858
|
-
test("claims both recurring and one-shot schedules in the same tick", () => {
|
|
859
|
-
const recurring = createSchedule({
|
|
860
|
+
test("claims both recurring and one-shot schedules in the same tick", async () => {
|
|
861
|
+
const recurring = await createSchedule({
|
|
860
862
|
name: "Recurring",
|
|
861
863
|
cronExpression: "* * * * *",
|
|
862
864
|
message: "recurring",
|
|
@@ -867,13 +869,13 @@ describe("claimDueSchedules (one-shot)", () => {
|
|
|
867
869
|
recurring.id,
|
|
868
870
|
]);
|
|
869
871
|
|
|
870
|
-
createSchedule({
|
|
872
|
+
await createSchedule({
|
|
871
873
|
name: "One-shot",
|
|
872
874
|
message: "one-shot",
|
|
873
875
|
nextRunAt: Date.now() - 1000,
|
|
874
876
|
});
|
|
875
877
|
|
|
876
|
-
const claimed = claimDueSchedules(Date.now());
|
|
878
|
+
const claimed = await claimDueSchedules(Date.now());
|
|
877
879
|
expect(claimed.length).toBe(2);
|
|
878
880
|
const expressions = claimed.map((c) => c.expression);
|
|
879
881
|
expect(expressions).toContain(null); // one-shot
|
|
@@ -890,31 +892,31 @@ describe("completeOneShot", () => {
|
|
|
890
892
|
db.run("DELETE FROM cron_jobs");
|
|
891
893
|
});
|
|
892
894
|
|
|
893
|
-
test("transitions firing -> fired", () => {
|
|
894
|
-
const job = createSchedule({
|
|
895
|
+
test("transitions firing -> fired", async () => {
|
|
896
|
+
const job = await createSchedule({
|
|
895
897
|
name: "Complete me",
|
|
896
898
|
message: "done",
|
|
897
899
|
nextRunAt: Date.now() - 1000,
|
|
898
900
|
});
|
|
899
901
|
|
|
900
902
|
// Claim first to get to 'firing' state
|
|
901
|
-
claimDueSchedules(Date.now());
|
|
903
|
+
await claimDueSchedules(Date.now());
|
|
902
904
|
|
|
903
|
-
completeOneShot(job.id);
|
|
905
|
+
await completeOneShot(job.id);
|
|
904
906
|
|
|
905
907
|
const retrieved = getSchedule(job.id);
|
|
906
908
|
expect(retrieved!.status).toBe("fired");
|
|
907
909
|
expect(retrieved!.enabled).toBe(false);
|
|
908
910
|
});
|
|
909
911
|
|
|
910
|
-
test("does not transition if not in firing state", () => {
|
|
911
|
-
const job = createSchedule({
|
|
912
|
+
test("does not transition if not in firing state", async () => {
|
|
913
|
+
const job = await createSchedule({
|
|
912
914
|
name: "Not firing",
|
|
913
915
|
message: "still active",
|
|
914
916
|
nextRunAt: Date.now() + 60_000,
|
|
915
917
|
});
|
|
916
918
|
|
|
917
|
-
completeOneShot(job.id);
|
|
919
|
+
await completeOneShot(job.id);
|
|
918
920
|
|
|
919
921
|
const retrieved = getSchedule(job.id);
|
|
920
922
|
expect(retrieved!.status).toBe("active"); // unchanged
|
|
@@ -929,35 +931,35 @@ describe("failOneShot", () => {
|
|
|
929
931
|
db.run("DELETE FROM cron_jobs");
|
|
930
932
|
});
|
|
931
933
|
|
|
932
|
-
test("transitions firing -> active for retry", () => {
|
|
933
|
-
const job = createSchedule({
|
|
934
|
+
test("transitions firing -> active for retry", async () => {
|
|
935
|
+
const job = await createSchedule({
|
|
934
936
|
name: "Fail me",
|
|
935
937
|
message: "retry",
|
|
936
938
|
nextRunAt: Date.now() - 1000,
|
|
937
939
|
});
|
|
938
940
|
|
|
939
941
|
// Claim to get to 'firing'
|
|
940
|
-
claimDueSchedules(Date.now());
|
|
942
|
+
await claimDueSchedules(Date.now());
|
|
941
943
|
|
|
942
|
-
failOneShot(job.id);
|
|
944
|
+
await failOneShot(job.id);
|
|
943
945
|
|
|
944
946
|
const retrieved = getSchedule(job.id);
|
|
945
947
|
expect(retrieved!.status).toBe("active");
|
|
946
948
|
expect(retrieved!.enabled).toBe(true); // still enabled for retry
|
|
947
949
|
});
|
|
948
950
|
|
|
949
|
-
test("can be re-claimed after failing", () => {
|
|
950
|
-
const job = createSchedule({
|
|
951
|
+
test("can be re-claimed after failing", async () => {
|
|
952
|
+
const job = await createSchedule({
|
|
951
953
|
name: "Retry",
|
|
952
954
|
message: "try again",
|
|
953
955
|
nextRunAt: Date.now() - 1000,
|
|
954
956
|
});
|
|
955
957
|
|
|
956
|
-
claimDueSchedules(Date.now());
|
|
957
|
-
failOneShot(job.id);
|
|
958
|
+
await claimDueSchedules(Date.now());
|
|
959
|
+
await failOneShot(job.id);
|
|
958
960
|
|
|
959
961
|
// Should be claimable again
|
|
960
|
-
const claimed = claimDueSchedules(Date.now());
|
|
962
|
+
const claimed = await claimDueSchedules(Date.now());
|
|
961
963
|
expect(claimed.length).toBe(1);
|
|
962
964
|
expect(claimed[0].id).toBe(job.id);
|
|
963
965
|
});
|
|
@@ -970,14 +972,14 @@ describe("cancelSchedule", () => {
|
|
|
970
972
|
db.run("DELETE FROM cron_jobs");
|
|
971
973
|
});
|
|
972
974
|
|
|
973
|
-
test("cancels an active one-shot schedule", () => {
|
|
974
|
-
const job = createSchedule({
|
|
975
|
+
test("cancels an active one-shot schedule", async () => {
|
|
976
|
+
const job = await createSchedule({
|
|
975
977
|
name: "Cancel me",
|
|
976
978
|
message: "never fire",
|
|
977
979
|
nextRunAt: Date.now() + 60_000,
|
|
978
980
|
});
|
|
979
981
|
|
|
980
|
-
const result = cancelSchedule(job.id);
|
|
982
|
+
const result = await cancelSchedule(job.id);
|
|
981
983
|
expect(result).toBe(true);
|
|
982
984
|
|
|
983
985
|
const retrieved = getSchedule(job.id);
|
|
@@ -985,31 +987,31 @@ describe("cancelSchedule", () => {
|
|
|
985
987
|
expect(retrieved!.enabled).toBe(false);
|
|
986
988
|
});
|
|
987
989
|
|
|
988
|
-
test("returns false for non-active schedule", () => {
|
|
989
|
-
const job = createSchedule({
|
|
990
|
+
test("returns false for non-active schedule", async () => {
|
|
991
|
+
const job = await createSchedule({
|
|
990
992
|
name: "Already done",
|
|
991
993
|
message: "completed",
|
|
992
994
|
nextRunAt: Date.now() - 1000,
|
|
993
995
|
});
|
|
994
996
|
|
|
995
997
|
// Claim and complete it
|
|
996
|
-
claimDueSchedules(Date.now());
|
|
997
|
-
completeOneShot(job.id);
|
|
998
|
+
await claimDueSchedules(Date.now());
|
|
999
|
+
await completeOneShot(job.id);
|
|
998
1000
|
|
|
999
|
-
const result = cancelSchedule(job.id);
|
|
1001
|
+
const result = await cancelSchedule(job.id);
|
|
1000
1002
|
expect(result).toBe(false);
|
|
1001
1003
|
});
|
|
1002
1004
|
|
|
1003
|
-
test("cancelled schedule is not claimable", () => {
|
|
1004
|
-
const job = createSchedule({
|
|
1005
|
+
test("cancelled schedule is not claimable", async () => {
|
|
1006
|
+
const job = await createSchedule({
|
|
1005
1007
|
name: "Cancelled",
|
|
1006
1008
|
message: "should not fire",
|
|
1007
1009
|
nextRunAt: Date.now() - 1000,
|
|
1008
1010
|
});
|
|
1009
1011
|
|
|
1010
|
-
cancelSchedule(job.id);
|
|
1012
|
+
await cancelSchedule(job.id);
|
|
1011
1013
|
|
|
1012
|
-
const claimed = claimDueSchedules(Date.now());
|
|
1014
|
+
const claimed = await claimDueSchedules(Date.now());
|
|
1013
1015
|
expect(claimed.length).toBe(0);
|
|
1014
1016
|
});
|
|
1015
1017
|
});
|
|
@@ -1023,8 +1025,8 @@ describe("routing and mode fields", () => {
|
|
|
1023
1025
|
db.run("DELETE FROM cron_jobs");
|
|
1024
1026
|
});
|
|
1025
1027
|
|
|
1026
|
-
test("recurring schedule defaults to execute mode and all_channels", () => {
|
|
1027
|
-
const job = createSchedule({
|
|
1028
|
+
test("recurring schedule defaults to execute mode and all_channels", async () => {
|
|
1029
|
+
const job = await createSchedule({
|
|
1028
1030
|
name: "Defaults",
|
|
1029
1031
|
cronExpression: "0 9 * * *",
|
|
1030
1032
|
message: "check defaults",
|
|
@@ -1037,9 +1039,9 @@ describe("routing and mode fields", () => {
|
|
|
1037
1039
|
expect(job.status).toBe("active");
|
|
1038
1040
|
});
|
|
1039
1041
|
|
|
1040
|
-
test("routing hints round-trip through create/read", () => {
|
|
1042
|
+
test("routing hints round-trip through create/read", async () => {
|
|
1041
1043
|
const hints = { channels: ["slack", "discord"], priority: 1 };
|
|
1042
|
-
const job = createSchedule({
|
|
1044
|
+
const job = await createSchedule({
|
|
1043
1045
|
name: "Routed",
|
|
1044
1046
|
cronExpression: "0 9 * * *",
|
|
1045
1047
|
message: "routed msg",
|
|
@@ -1055,9 +1057,9 @@ describe("routing and mode fields", () => {
|
|
|
1055
1057
|
expect(retrieved!.mode).toBe("notify");
|
|
1056
1058
|
});
|
|
1057
1059
|
|
|
1058
|
-
test("routing hints round-trip through DB raw query", () => {
|
|
1060
|
+
test("routing hints round-trip through DB raw query", async () => {
|
|
1059
1061
|
const hints = { target: "telegram" };
|
|
1060
|
-
const job = createSchedule({
|
|
1062
|
+
const job = await createSchedule({
|
|
1061
1063
|
name: "Raw round-trip",
|
|
1062
1064
|
message: "check raw",
|
|
1063
1065
|
nextRunAt: Date.now() + 60_000,
|
|
@@ -1082,15 +1084,15 @@ describe("routing and mode fields", () => {
|
|
|
1082
1084
|
expect(raw!.status).toBe("active");
|
|
1083
1085
|
});
|
|
1084
1086
|
|
|
1085
|
-
test("updateSchedule updates mode and routing fields", () => {
|
|
1086
|
-
const job = createSchedule({
|
|
1087
|
+
test("updateSchedule updates mode and routing fields", async () => {
|
|
1088
|
+
const job = await createSchedule({
|
|
1087
1089
|
name: "Update routing",
|
|
1088
1090
|
cronExpression: "0 9 * * *",
|
|
1089
1091
|
message: "update routing",
|
|
1090
1092
|
syntax: "cron",
|
|
1091
1093
|
});
|
|
1092
1094
|
|
|
1093
|
-
const updated = updateSchedule(job.id, {
|
|
1095
|
+
const updated = await updateSchedule(job.id, {
|
|
1094
1096
|
mode: "notify",
|
|
1095
1097
|
routingIntent: "single_channel",
|
|
1096
1098
|
routingHints: { channel: "telegram" },
|
|
@@ -1112,9 +1114,9 @@ describe("script timeout override", () => {
|
|
|
1112
1114
|
db.run("DELETE FROM cron_jobs");
|
|
1113
1115
|
});
|
|
1114
1116
|
|
|
1115
|
-
test("defaults timeoutMs to null when not provided", () => {
|
|
1117
|
+
test("defaults timeoutMs to null when not provided", async () => {
|
|
1116
1118
|
// GIVEN a schedule created without a timeout override
|
|
1117
|
-
const job = createSchedule({
|
|
1119
|
+
const job = await createSchedule({
|
|
1118
1120
|
name: "No timeout",
|
|
1119
1121
|
cronExpression: "0 9 * * *",
|
|
1120
1122
|
message: "no timeout",
|
|
@@ -1126,9 +1128,9 @@ describe("script timeout override", () => {
|
|
|
1126
1128
|
expect(getSchedule(job.id)!.timeoutMs).toBeNull();
|
|
1127
1129
|
});
|
|
1128
1130
|
|
|
1129
|
-
test("persists a timeoutMs override through create/read", () => {
|
|
1131
|
+
test("persists a timeoutMs override through create/read", async () => {
|
|
1130
1132
|
// GIVEN a script schedule created with a custom timeout
|
|
1131
|
-
const job = createSchedule({
|
|
1133
|
+
const job = await createSchedule({
|
|
1132
1134
|
name: "Slow script",
|
|
1133
1135
|
cronExpression: "0 9 * * *",
|
|
1134
1136
|
message: "",
|
|
@@ -1143,9 +1145,9 @@ describe("script timeout override", () => {
|
|
|
1143
1145
|
expect(getSchedule(job.id)!.timeoutMs).toBe(120_000);
|
|
1144
1146
|
});
|
|
1145
1147
|
|
|
1146
|
-
test("updateSchedule sets and clears the timeout override", () => {
|
|
1148
|
+
test("updateSchedule sets and clears the timeout override", async () => {
|
|
1147
1149
|
// GIVEN a schedule with a custom timeout
|
|
1148
|
-
const job = createSchedule({
|
|
1150
|
+
const job = await createSchedule({
|
|
1149
1151
|
name: "Adjust timeout",
|
|
1150
1152
|
cronExpression: "0 9 * * *",
|
|
1151
1153
|
message: "",
|
|
@@ -1156,13 +1158,13 @@ describe("script timeout override", () => {
|
|
|
1156
1158
|
});
|
|
1157
1159
|
|
|
1158
1160
|
// WHEN the timeout is changed
|
|
1159
|
-
const updated = updateSchedule(job.id, { timeoutMs: 5_000 });
|
|
1161
|
+
const updated = await updateSchedule(job.id, { timeoutMs: 5_000 });
|
|
1160
1162
|
|
|
1161
1163
|
// THEN the new value is stored
|
|
1162
1164
|
expect(updated!.timeoutMs).toBe(5_000);
|
|
1163
1165
|
|
|
1164
1166
|
// AND WHEN the timeout is cleared back to the default
|
|
1165
|
-
const cleared = updateSchedule(job.id, { timeoutMs: null });
|
|
1167
|
+
const cleared = await updateSchedule(job.id, { timeoutMs: null });
|
|
1166
1168
|
|
|
1167
1169
|
// THEN it reverts to null
|
|
1168
1170
|
expect(cleared!.timeoutMs).toBeNull();
|
|
@@ -1185,8 +1187,8 @@ describe("capability manifest", () => {
|
|
|
1185
1187
|
persona: false,
|
|
1186
1188
|
};
|
|
1187
1189
|
|
|
1188
|
-
test("persists a capability manifest through create/read", () => {
|
|
1189
|
-
const job = createSchedule({
|
|
1190
|
+
test("persists a capability manifest through create/read", async () => {
|
|
1191
|
+
const job = await createSchedule({
|
|
1190
1192
|
name: "Capable schedule",
|
|
1191
1193
|
cronExpression: "0 9 * * *",
|
|
1192
1194
|
message: "do scoped work",
|
|
@@ -1198,8 +1200,8 @@ describe("capability manifest", () => {
|
|
|
1198
1200
|
expect(getSchedule(job.id)!.capabilities).toEqual(manifest);
|
|
1199
1201
|
});
|
|
1200
1202
|
|
|
1201
|
-
test("defaults capabilities to null when not provided", () => {
|
|
1202
|
-
const job = createSchedule({
|
|
1203
|
+
test("defaults capabilities to null when not provided", async () => {
|
|
1204
|
+
const job = await createSchedule({
|
|
1203
1205
|
name: "No manifest",
|
|
1204
1206
|
cronExpression: "0 9 * * *",
|
|
1205
1207
|
message: "unconstrained",
|
|
@@ -1210,8 +1212,8 @@ describe("capability manifest", () => {
|
|
|
1210
1212
|
expect(getSchedule(job.id)!.capabilities).toBeNull();
|
|
1211
1213
|
});
|
|
1212
1214
|
|
|
1213
|
-
test("updateSchedule sets and clears the capability manifest", () => {
|
|
1214
|
-
const job = createSchedule({
|
|
1215
|
+
test("updateSchedule sets and clears the capability manifest", async () => {
|
|
1216
|
+
const job = await createSchedule({
|
|
1215
1217
|
name: "Update manifest",
|
|
1216
1218
|
cronExpression: "0 9 * * *",
|
|
1217
1219
|
message: "update manifest",
|
|
@@ -1220,11 +1222,11 @@ describe("capability manifest", () => {
|
|
|
1220
1222
|
|
|
1221
1223
|
expect(job.capabilities).toBeNull();
|
|
1222
1224
|
|
|
1223
|
-
const updated = updateSchedule(job.id, { capabilities: manifest });
|
|
1225
|
+
const updated = await updateSchedule(job.id, { capabilities: manifest });
|
|
1224
1226
|
expect(updated!.capabilities).toEqual(manifest);
|
|
1225
1227
|
expect(getSchedule(job.id)!.capabilities).toEqual(manifest);
|
|
1226
1228
|
|
|
1227
|
-
const cleared = updateSchedule(job.id, { capabilities: null });
|
|
1229
|
+
const cleared = await updateSchedule(job.id, { capabilities: null });
|
|
1228
1230
|
expect(cleared!.capabilities).toBeNull();
|
|
1229
1231
|
expect(getSchedule(job.id)!.capabilities).toBeNull();
|
|
1230
1232
|
});
|
|
@@ -1239,14 +1241,14 @@ describe("listSchedules filters", () => {
|
|
|
1239
1241
|
db.run("DELETE FROM cron_jobs");
|
|
1240
1242
|
});
|
|
1241
1243
|
|
|
1242
|
-
test("oneShotOnly filter returns only one-shot schedules", () => {
|
|
1243
|
-
createSchedule({
|
|
1244
|
+
test("oneShotOnly filter returns only one-shot schedules", async () => {
|
|
1245
|
+
await createSchedule({
|
|
1244
1246
|
name: "Recurring",
|
|
1245
1247
|
cronExpression: "0 9 * * *",
|
|
1246
1248
|
message: "recurring",
|
|
1247
1249
|
syntax: "cron",
|
|
1248
1250
|
});
|
|
1249
|
-
createSchedule({
|
|
1251
|
+
await createSchedule({
|
|
1250
1252
|
name: "One-shot",
|
|
1251
1253
|
message: "one-shot",
|
|
1252
1254
|
nextRunAt: Date.now() + 60_000,
|
|
@@ -1258,14 +1260,14 @@ describe("listSchedules filters", () => {
|
|
|
1258
1260
|
expect(oneShots[0].expression).toBeNull();
|
|
1259
1261
|
});
|
|
1260
1262
|
|
|
1261
|
-
test("recurringOnly filter returns only recurring schedules", () => {
|
|
1262
|
-
createSchedule({
|
|
1263
|
+
test("recurringOnly filter returns only recurring schedules", async () => {
|
|
1264
|
+
await createSchedule({
|
|
1263
1265
|
name: "Recurring",
|
|
1264
1266
|
cronExpression: "0 9 * * *",
|
|
1265
1267
|
message: "recurring",
|
|
1266
1268
|
syntax: "cron",
|
|
1267
1269
|
});
|
|
1268
|
-
createSchedule({
|
|
1270
|
+
await createSchedule({
|
|
1269
1271
|
name: "One-shot",
|
|
1270
1272
|
message: "one-shot",
|
|
1271
1273
|
nextRunAt: Date.now() + 60_000,
|
|
@@ -1287,8 +1289,8 @@ describe("createSchedule (wake mode)", () => {
|
|
|
1287
1289
|
db.run("DELETE FROM cron_jobs");
|
|
1288
1290
|
});
|
|
1289
1291
|
|
|
1290
|
-
test("creates a wake schedule with wakeConversationId", () => {
|
|
1291
|
-
const job = createSchedule({
|
|
1292
|
+
test("creates a wake schedule with wakeConversationId", async () => {
|
|
1293
|
+
const job = await createSchedule({
|
|
1292
1294
|
name: "Wake conv",
|
|
1293
1295
|
message: "resume conversation",
|
|
1294
1296
|
nextRunAt: Date.now() + 60_000,
|
|
@@ -1305,15 +1307,15 @@ describe("createSchedule (wake mode)", () => {
|
|
|
1305
1307
|
expect(retrieved!.wakeConversationId).toBe("conv-123");
|
|
1306
1308
|
});
|
|
1307
1309
|
|
|
1308
|
-
test("throws when creating wake schedule without wakeConversationId", () => {
|
|
1309
|
-
expect(
|
|
1310
|
+
test("throws when creating wake schedule without wakeConversationId", async () => {
|
|
1311
|
+
await expect(
|
|
1310
1312
|
createSchedule({
|
|
1311
1313
|
name: "Bad wake",
|
|
1312
1314
|
message: "no conv id",
|
|
1313
1315
|
nextRunAt: Date.now() + 60_000,
|
|
1314
1316
|
mode: "wake",
|
|
1315
1317
|
}),
|
|
1316
|
-
).toThrow("Wake schedules require wakeConversationId");
|
|
1318
|
+
).rejects.toThrow("Wake schedules require wakeConversationId");
|
|
1317
1319
|
});
|
|
1318
1320
|
});
|
|
1319
1321
|
|
|
@@ -1326,14 +1328,14 @@ describe("listSchedules new filters", () => {
|
|
|
1326
1328
|
db.run("DELETE FROM cron_jobs");
|
|
1327
1329
|
});
|
|
1328
1330
|
|
|
1329
|
-
test("mode filter returns only schedules with matching mode", () => {
|
|
1330
|
-
createSchedule({
|
|
1331
|
+
test("mode filter returns only schedules with matching mode", async () => {
|
|
1332
|
+
await createSchedule({
|
|
1331
1333
|
name: "Execute schedule",
|
|
1332
1334
|
message: "execute",
|
|
1333
1335
|
nextRunAt: Date.now() + 60_000,
|
|
1334
1336
|
mode: "execute",
|
|
1335
1337
|
});
|
|
1336
|
-
createSchedule({
|
|
1338
|
+
await createSchedule({
|
|
1337
1339
|
name: "Wake schedule",
|
|
1338
1340
|
message: "wake",
|
|
1339
1341
|
nextRunAt: Date.now() + 60_000,
|
|
@@ -1347,14 +1349,14 @@ describe("listSchedules new filters", () => {
|
|
|
1347
1349
|
expect(wakeOnly[0].mode).toBe("wake");
|
|
1348
1350
|
});
|
|
1349
1351
|
|
|
1350
|
-
test("createdBy filter returns only schedules with matching creator", () => {
|
|
1351
|
-
createSchedule({
|
|
1352
|
+
test("createdBy filter returns only schedules with matching creator", async () => {
|
|
1353
|
+
await createSchedule({
|
|
1352
1354
|
name: "Agent schedule",
|
|
1353
1355
|
message: "by agent",
|
|
1354
1356
|
nextRunAt: Date.now() + 60_000,
|
|
1355
1357
|
createdBy: "agent",
|
|
1356
1358
|
});
|
|
1357
|
-
createSchedule({
|
|
1359
|
+
await createSchedule({
|
|
1358
1360
|
name: "Defer schedule",
|
|
1359
1361
|
message: "by defer",
|
|
1360
1362
|
nextRunAt: Date.now() + 60_000,
|
|
@@ -1367,22 +1369,22 @@ describe("listSchedules new filters", () => {
|
|
|
1367
1369
|
expect(deferOnly[0].createdBy).toBe("defer");
|
|
1368
1370
|
});
|
|
1369
1371
|
|
|
1370
|
-
test("conversationId filter returns only wakes targeting that conversation", () => {
|
|
1371
|
-
createSchedule({
|
|
1372
|
+
test("conversationId filter returns only wakes targeting that conversation", async () => {
|
|
1373
|
+
await createSchedule({
|
|
1372
1374
|
name: "Wake for conv-123",
|
|
1373
1375
|
message: "wake conv-123",
|
|
1374
1376
|
nextRunAt: Date.now() + 60_000,
|
|
1375
1377
|
mode: "wake",
|
|
1376
1378
|
wakeConversationId: "conv-123",
|
|
1377
1379
|
});
|
|
1378
|
-
createSchedule({
|
|
1380
|
+
await createSchedule({
|
|
1379
1381
|
name: "Wake for conv-456",
|
|
1380
1382
|
message: "wake conv-456",
|
|
1381
1383
|
nextRunAt: Date.now() + 60_000,
|
|
1382
1384
|
mode: "wake",
|
|
1383
1385
|
wakeConversationId: "conv-456",
|
|
1384
1386
|
});
|
|
1385
|
-
createSchedule({
|
|
1387
|
+
await createSchedule({
|
|
1386
1388
|
name: "Regular schedule",
|
|
1387
1389
|
message: "no wake",
|
|
1388
1390
|
nextRunAt: Date.now() + 60_000,
|