@vellumai/assistant 0.5.16 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +4 -0
- package/ARCHITECTURE.md +69 -16
- package/Dockerfile +2 -5
- package/bun.lock +6 -2
- package/docker-entrypoint.sh +32 -1
- package/docs/architecture/integrations.md +1 -1
- package/docs/architecture/memory.md +21 -24
- package/knip.json +2 -1
- package/openapi.yaml +1198 -83
- package/package.json +5 -1
- package/src/__tests__/actor-token-service.test.ts +68 -0
- package/src/__tests__/agent-loop.test.ts +0 -32
- package/src/__tests__/always-loaded-tools-guard.test.ts +2 -2
- package/src/__tests__/anthropic-provider.test.ts +217 -98
- package/src/__tests__/app-compiler.test.ts +120 -0
- package/src/__tests__/app-dir-path-guard.test.ts +1 -0
- package/src/__tests__/app-executors.test.ts +47 -1
- package/src/__tests__/app-source-watcher.test.ts +159 -0
- package/src/__tests__/assistant-feature-flags-integration.test.ts +2 -2
- package/src/__tests__/call-conversation-messages.test.ts +2 -6
- package/src/__tests__/call-domain.test.ts +2 -6
- package/src/__tests__/call-pointer-messages.test.ts +2 -14
- package/src/__tests__/call-recovery.test.ts +2 -6
- package/src/__tests__/call-routes-http.test.ts +2 -6
- package/src/__tests__/call-store.test.ts +2 -6
- package/src/__tests__/cancel-resolves-conversation-key.test.ts +2 -6
- package/src/__tests__/canonical-guardian-store.test.ts +2 -6
- package/src/__tests__/channel-delivery-store.test.ts +2 -6
- package/src/__tests__/channel-retry-sweep.test.ts +2 -6
- package/src/__tests__/checker.test.ts +63 -9
- package/src/__tests__/clawhub.test.ts +54 -24
- package/src/__tests__/cli-command-risk-guard.test.ts +14 -0
- package/src/__tests__/config-schema.test.ts +6 -1
- package/src/__tests__/config-set-platform-guard.test.ts +302 -0
- package/src/__tests__/confirmation-request-guardian-bridge.test.ts +2 -6
- package/src/__tests__/contacts-tools.test.ts +31 -0
- package/src/__tests__/context-overflow-reducer.test.ts +86 -0
- package/src/__tests__/context-token-estimator.test.ts +175 -10
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +13 -6
- package/src/__tests__/conversation-agent-loop.test.ts +13 -51
- package/src/__tests__/conversation-attachments.test.ts +2 -6
- package/src/__tests__/conversation-attention-store.test.ts +2 -6
- package/src/__tests__/conversation-clear-safety.test.ts +2 -6
- package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +4 -10
- package/src/__tests__/conversation-disk-view-integration.test.ts +2 -6
- package/src/__tests__/conversation-disk-view.test.ts +2 -6
- package/src/__tests__/conversation-error.test.ts +33 -2
- package/src/__tests__/conversation-fork-crud.test.ts +2 -6
- package/src/__tests__/conversation-history-web-search.test.ts +6 -1
- package/src/__tests__/conversation-load-history-repair.test.ts +5 -1
- package/src/__tests__/conversation-media-retry.test.ts +91 -0
- package/src/__tests__/conversation-runtime-assembly.test.ts +653 -832
- package/src/__tests__/conversation-runtime-workspace.test.ts +1 -93
- package/src/__tests__/conversation-starter-routes.test.ts +20 -11
- package/src/__tests__/conversation-store.test.ts +2 -6
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +17 -4
- package/src/__tests__/conversation-usage.test.ts +2 -6
- package/src/__tests__/conversation-wipe.test.ts +13 -414
- package/src/__tests__/conversation-workspace-cache-state.test.ts +6 -12
- package/src/__tests__/conversation-workspace-injection.test.ts +25 -26
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +1 -1
- package/src/__tests__/copy-composer-tc-templates.test.ts +335 -0
- package/src/__tests__/credential-execution-feature-gates.test.ts +3 -3
- package/src/__tests__/credential-execution-shell-lockdown.test.ts +2 -2
- package/src/__tests__/credential-security-e2e.test.ts +2 -0
- package/src/__tests__/date-context.test.ts +76 -210
- package/src/__tests__/db-schedule-syntax-migration.test.ts +16 -1
- package/src/__tests__/file-list-tool.test.ts +219 -0
- package/src/__tests__/first-greeting.test.ts +1 -1
- package/src/__tests__/followup-tools.test.ts +2 -6
- package/src/__tests__/graph-extraction-event-date.test.ts +186 -0
- package/src/__tests__/guardian-action-conversation-turn.test.ts +2 -6
- package/src/__tests__/guardian-action-followup-executor.test.ts +2 -6
- package/src/__tests__/guardian-action-followup-store.test.ts +2 -6
- package/src/__tests__/guardian-action-grant-mint-consume.test.ts +2 -6
- package/src/__tests__/guardian-action-late-reply.test.ts +2 -6
- package/src/__tests__/guardian-action-store.test.ts +2 -6
- package/src/__tests__/guardian-binding-drift-heal.test.ts +2 -6
- package/src/__tests__/guardian-decision-primitive-canonical.test.ts +8 -8
- package/src/__tests__/guardian-dispatch.test.ts +2 -6
- package/src/__tests__/guardian-grant-minting.test.ts +2 -14
- package/src/__tests__/guardian-principal-id-roundtrip.test.ts +2 -6
- package/src/__tests__/guardian-routing-invariants.test.ts +192 -6
- package/src/__tests__/guardian-routing-state.test.ts +2 -6
- package/src/__tests__/guardian-verification-voice-binding.test.ts +2 -6
- package/src/__tests__/heartbeat-service.test.ts +180 -3
- package/src/__tests__/identity-routes.test.ts +328 -0
- package/src/__tests__/inbound-invite-redemption.test.ts +2 -6
- package/src/__tests__/injection-block.test.ts +178 -0
- package/src/__tests__/install-meta.test.ts +506 -0
- package/src/__tests__/install-skill-routing.test.ts +293 -0
- package/src/__tests__/invite-redemption-service.test.ts +2 -6
- package/src/__tests__/invite-routes-http.test.ts +2 -6
- package/src/__tests__/jobs-store-qdrant-breaker.test.ts +17 -28
- package/src/__tests__/list-messages-attachments.test.ts +2 -6
- package/src/__tests__/list-messages-tool-merge.test.ts +300 -0
- package/src/__tests__/llm-context-normalization.test.ts +18 -18
- package/src/__tests__/llm-context-route-provider.test.ts +103 -6
- package/src/__tests__/llm-request-log-turn-query.test.ts +164 -6
- package/src/__tests__/llm-usage-store.test.ts +2 -6
- package/src/__tests__/log-export-workspace.test.ts +74 -111
- package/src/__tests__/managed-store.test.ts +38 -11
- package/src/__tests__/mcp-abort-signal.test.ts +5 -0
- package/src/__tests__/mcp-client-auth.test.ts +5 -0
- package/src/__tests__/memory-jobs-worker-backoff.test.ts +2 -8
- package/src/__tests__/memory-recall-log-store.test.ts +134 -6
- package/src/__tests__/memory-upsert-concurrency.test.ts +4 -112
- package/src/__tests__/migration-export-streaming.test.ts +304 -0
- package/src/__tests__/migration-import-commit-http.test.ts +11 -10
- package/src/__tests__/mock-fetch.ts +87 -0
- package/src/__tests__/non-member-access-request.test.ts +2 -6
- package/src/__tests__/notification-decision-recipient-context.test.ts +282 -0
- package/src/__tests__/notification-guardian-path.test.ts +2 -6
- package/src/__tests__/oauth-cli.test.ts +364 -2
- package/src/__tests__/oauth2-gateway-transport.test.ts +18 -3
- package/src/__tests__/onboarding-template-contract.test.ts +62 -14
- package/src/__tests__/outlook-attachments.test.ts +301 -0
- package/src/__tests__/outlook-automation-tools.test.ts +425 -0
- package/src/__tests__/outlook-categories.test.ts +212 -0
- package/src/__tests__/outlook-client-automation.test.ts +246 -0
- package/src/__tests__/outlook-compose-tools.test.ts +325 -0
- package/src/__tests__/outlook-declutter-tools.test.ts +585 -0
- package/src/__tests__/outlook-email-watcher.test.ts +322 -0
- package/src/__tests__/outlook-follow-up.test.ts +196 -0
- package/src/__tests__/outlook-messaging-provider.test.ts +498 -3
- package/src/__tests__/outlook-trash.test.ts +77 -0
- package/src/__tests__/outlook-unsubscribe.test.ts +250 -0
- package/src/__tests__/parser.test.ts +32 -0
- package/src/__tests__/permission-checker-host-gate.test.ts +452 -0
- package/src/__tests__/permission-controls-v2-flag.test.ts +55 -0
- package/src/__tests__/permission-mode-sse.test.ts +418 -0
- package/src/__tests__/permission-mode-store.test.ts +277 -0
- package/src/__tests__/permission-mode.test.ts +101 -0
- package/src/__tests__/platform-bash-auto-approve.test.ts +359 -0
- package/src/__tests__/platform-callback-registration.test.ts +4 -4
- package/src/__tests__/playbook-execution.test.ts +76 -80
- package/src/__tests__/playbook-tools.test.ts +5 -7
- package/src/__tests__/profiler-routes.test.ts +502 -0
- package/src/__tests__/profiler-run-store.test.ts +441 -0
- package/src/__tests__/provider-error-scenarios.test.ts +21 -0
- package/src/__tests__/proxy-approval-callback.test.ts +4 -75
- package/src/__tests__/rebuild-index-graph-nodes.test.ts +273 -0
- package/src/__tests__/registry.test.ts +3 -3
- package/src/__tests__/require-fresh-approval.test.ts +64 -2
- package/src/__tests__/runtime-events-sse-parity.test.ts +2 -6
- package/src/__tests__/runtime-events-sse.test.ts +2 -6
- package/src/__tests__/sandbox-host-parity.test.ts +5 -4
- package/src/__tests__/schedule-store.test.ts +2 -6
- package/src/__tests__/schedule-tools.test.ts +2 -6
- package/src/__tests__/scheduler-recurrence.test.ts +1 -5
- package/src/__tests__/scheduler-reuse-conversation.test.ts +368 -0
- package/src/__tests__/scoped-approval-grants.test.ts +2 -6
- package/src/__tests__/scoped-grant-security-matrix.test.ts +2 -6
- package/src/__tests__/scrub-corrupted-image-attachments.test.ts +278 -0
- package/src/__tests__/search-skills-unified.test.ts +422 -0
- package/src/__tests__/secret-onetime-send.test.ts +2 -0
- package/src/__tests__/send-endpoint-busy.test.ts +44 -9
- package/src/__tests__/sequence-store.test.ts +2 -6
- package/src/__tests__/server-history-render.test.ts +2 -6
- package/src/__tests__/set-permission-mode.test.ts +274 -0
- package/src/__tests__/skill-feature-flags-integration.test.ts +38 -31
- package/src/__tests__/skill-feature-flags.test.ts +6 -6
- package/src/__tests__/skill-load-feature-flag.test.ts +23 -11
- package/src/__tests__/skill-memory.test.ts +2 -741
- package/src/__tests__/skills-uninstall.test.ts +2 -2
- package/src/__tests__/skills.test.ts +1 -1
- package/src/__tests__/slack-inbound-verification.test.ts +2 -6
- package/src/__tests__/strip-memory-injections.test.ts +187 -0
- package/src/__tests__/subagent-detail.test.ts +84 -0
- package/src/__tests__/subagent-disposal.test.ts +308 -0
- package/src/__tests__/subagent-manager-notify.test.ts +19 -10
- package/src/__tests__/subagent-notify-parent.test.ts +390 -0
- package/src/__tests__/subagent-role-registry.test.ts +108 -0
- package/src/__tests__/subagent-tool-filtering.test.ts +71 -0
- package/src/__tests__/subagent-tools.test.ts +464 -4
- package/src/__tests__/system-prompt-ask-mode.test.ts +139 -0
- package/src/__tests__/task-compiler.test.ts +2 -6
- package/src/__tests__/task-management-tools.test.ts +2 -6
- package/src/__tests__/task-memory-cleanup.test.ts +185 -241
- package/src/__tests__/task-runner.test.ts +2 -6
- package/src/__tests__/task-scheduler.test.ts +2 -6
- package/src/__tests__/terminal-tools.test.ts +17 -27
- package/src/__tests__/test-preload.ts +7 -0
- package/src/__tests__/tool-approval-handler.test.ts +2 -6
- package/src/__tests__/tool-executor.test.ts +4 -26
- package/src/__tests__/tool-grant-request-escalation.test.ts +2 -6
- package/src/__tests__/tool-side-effects-slack-dm.test.ts +277 -0
- package/src/__tests__/top-level-renderer.test.ts +10 -13
- package/src/__tests__/trust-store.test.ts +1 -1
- package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +2 -6
- package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +118 -8
- package/src/__tests__/trusted-contact-multichannel.test.ts +2 -6
- package/src/__tests__/trusted-contact-verification.test.ts +2 -6
- package/src/__tests__/turn-boundary-resolution.test.ts +2 -6
- package/src/__tests__/usage-cache-backfill-migration.test.ts +1 -6
- package/src/__tests__/usage-routes.test.ts +2 -6
- package/src/__tests__/verification-control-plane-policy.test.ts +0 -2
- package/src/__tests__/voice-invite-redemption.test.ts +2 -6
- package/src/__tests__/voice-scoped-grant-consumer.test.ts +2 -6
- package/src/__tests__/voice-session-bridge.test.ts +2 -6
- package/src/__tests__/volume-security-guard.test.ts +2 -0
- package/src/__tests__/workspace-lifecycle.test.ts +29 -1
- package/src/__tests__/workspace-migration-009-backfill-conversation-disk-view.test.ts +2 -6
- package/src/__tests__/workspace-migration-013-repair-conversation-disk-view.test.ts +2 -6
- package/src/__tests__/workspace-migration-026-backfill-install-meta.test.ts +558 -0
- package/src/__tests__/workspace-migration-028-recover-conversations-from-disk-view.test.ts +387 -0
- package/src/__tests__/workspace-policy.test.ts +1 -1
- package/src/agent/attachments.ts +7 -2
- package/src/agent/image-optimize.ts +165 -0
- package/src/agent/loop.ts +7 -15
- package/src/approvals/guardian-request-resolvers.ts +24 -0
- package/src/avatar/traits-png-sync.ts +3 -3
- package/src/bundler/app-compiler.ts +179 -2
- package/src/bundler/package-resolver.ts +3 -5
- package/src/cli/__tests__/notifications.test.ts +1 -2
- package/src/cli/__tests__/run-assistant-command.ts +29 -0
- package/src/cli/commands/__tests__/email-download.test.ts +245 -0
- package/src/cli/commands/__tests__/email-list.test.ts +192 -0
- package/src/cli/commands/__tests__/email-register.test.ts +186 -0
- package/src/cli/commands/__tests__/email-send.test.ts +291 -0
- package/src/cli/commands/__tests__/email-status.test.ts +181 -0
- package/src/cli/commands/__tests__/email-unregister.test.ts +139 -0
- package/src/cli/commands/__tests__/routes.test.ts +562 -0
- package/src/cli/commands/avatar.ts +3 -3
- package/src/cli/commands/config.ts +26 -13
- package/src/cli/commands/conversations.ts +1 -8
- package/src/cli/commands/doctor.ts +2 -2
- package/src/cli/commands/email.ts +584 -835
- package/src/cli/commands/memory.ts +37 -84
- package/src/cli/commands/notifications.ts +7 -2
- package/src/cli/commands/oauth/__tests__/connect.test.ts +2 -2
- package/src/cli/commands/oauth/__tests__/disconnect.test.ts +2 -2
- package/src/cli/commands/oauth/__tests__/mode.test.ts +8 -1
- package/src/cli/commands/oauth/__tests__/status.test.ts +2 -2
- package/src/cli/commands/oauth/connect.ts +25 -11
- package/src/cli/commands/oauth/mode.ts +7 -0
- package/src/cli/commands/oauth/shared.ts +39 -3
- package/src/cli/commands/platform/__tests__/connect.test.ts +1 -1
- package/src/cli/commands/platform/__tests__/disconnect.test.ts +1 -1
- package/src/cli/commands/platform/__tests__/status.test.ts +5 -5
- package/src/cli/commands/platform/index.ts +16 -16
- package/src/cli/commands/routes.ts +396 -0
- package/src/cli/commands/skills.ts +218 -36
- package/src/cli/commands/trust.ts +2 -2
- package/src/cli/lib/daemon-credential-client.ts +2 -3
- package/src/cli/program.ts +2 -0
- package/src/cli.ts +1 -120
- package/src/config/bundled-skills/acp/TOOLS.json +1 -1
- package/src/config/bundled-skills/app-builder/SKILL.md +4 -1
- package/src/config/bundled-skills/contacts/SKILL.md +0 -1
- package/src/config/bundled-skills/contacts/TOOLS.json +0 -8
- package/src/config/bundled-skills/contacts/tools/contact-upsert.ts +0 -4
- package/src/config/bundled-skills/gmail/SKILL.md +4 -12
- package/src/config/bundled-skills/google-calendar/SKILL.md +1 -9
- package/src/config/bundled-skills/messaging/SKILL.md +17 -18
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +40 -33
- package/src/config/bundled-skills/outlook/SKILL.md +189 -0
- package/src/config/bundled-skills/outlook/TOOLS.json +530 -0
- package/src/config/bundled-skills/outlook/tools/outlook-attachments.ts +85 -0
- package/src/config/bundled-skills/outlook/tools/outlook-categories.ts +77 -0
- package/src/config/bundled-skills/outlook/tools/outlook-draft.ts +84 -0
- package/src/config/bundled-skills/outlook/tools/outlook-follow-up.ts +94 -0
- package/src/config/bundled-skills/outlook/tools/outlook-forward.ts +49 -0
- package/src/config/bundled-skills/outlook/tools/outlook-outreach-scan.ts +237 -0
- package/src/config/bundled-skills/outlook/tools/outlook-rules.ts +161 -0
- package/src/config/bundled-skills/outlook/tools/outlook-send-draft.ts +32 -0
- package/src/config/bundled-skills/outlook/tools/outlook-sender-digest.ts +272 -0
- package/src/config/bundled-skills/outlook/tools/outlook-trash.ts +29 -0
- package/src/config/bundled-skills/outlook/tools/outlook-unsubscribe.ts +129 -0
- package/src/config/bundled-skills/outlook/tools/outlook-vacation.ts +87 -0
- package/src/config/bundled-skills/outlook/tools/shared.ts +20 -0
- package/src/config/bundled-skills/outlook-calendar/SKILL.md +51 -0
- package/src/config/bundled-skills/outlook-calendar/TOOLS.json +221 -0
- package/src/config/bundled-skills/outlook-calendar/calendar-client.ts +252 -0
- package/src/config/bundled-skills/outlook-calendar/tools/outlook-calendar-check-availability.ts +53 -0
- package/src/config/bundled-skills/outlook-calendar/tools/outlook-calendar-create-event.ts +74 -0
- package/src/config/bundled-skills/outlook-calendar/tools/outlook-calendar-get-event.ts +18 -0
- package/src/config/bundled-skills/outlook-calendar/tools/outlook-calendar-list-events.ts +46 -0
- package/src/config/bundled-skills/outlook-calendar/tools/outlook-calendar-rsvp.ts +36 -0
- package/src/config/bundled-skills/outlook-calendar/tools/shared.ts +17 -0
- package/src/config/bundled-skills/outlook-calendar/types.ts +120 -0
- package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +47 -40
- package/src/config/bundled-skills/playbooks/tools/playbook-delete.ts +16 -29
- package/src/config/bundled-skills/playbooks/tools/playbook-list.ts +16 -18
- package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +39 -47
- package/src/config/bundled-skills/schedule/SKILL.md +22 -2
- package/src/config/bundled-skills/schedule/TOOLS.json +8 -0
- package/src/config/bundled-skills/settings/tools/avatar-get.ts +3 -13
- package/src/config/bundled-skills/settings/tools/avatar-remove.ts +2 -4
- package/src/config/bundled-skills/settings/tools/avatar-update.ts +5 -2
- package/src/config/bundled-skills/slack/SKILL.md +3 -7
- package/src/config/bundled-skills/subagent/SKILL.md +43 -3
- package/src/config/bundled-skills/subagent/TOOLS.json +29 -4
- package/src/config/bundled-tool-registry.ts +56 -4
- package/src/config/env-registry.ts +78 -8
- package/src/config/feature-flag-registry.json +38 -125
- package/src/config/schema.ts +8 -0
- package/src/config/schemas/filing.ts +51 -0
- package/src/config/schemas/heartbeat.ts +15 -12
- package/src/config/schemas/memory-lifecycle.ts +12 -0
- package/src/config/schemas/platform.ts +8 -0
- package/src/config/schemas/security.ts +14 -0
- package/src/config/schemas/timeouts.ts +1 -1
- package/src/config/skills.ts +18 -7
- package/src/context/token-estimator.ts +25 -18
- package/src/context/window-manager.ts +6 -2
- package/src/credential-execution/process-manager.ts +3 -1
- package/src/daemon/app-source-watcher.ts +93 -0
- package/src/daemon/config-watcher.ts +79 -1
- package/src/daemon/context-overflow-reducer.ts +46 -2
- package/src/daemon/conversation-agent-loop-handlers.ts +143 -82
- package/src/daemon/conversation-agent-loop.ts +236 -108
- package/src/daemon/conversation-error.ts +31 -8
- package/src/daemon/conversation-history.ts +4 -19
- package/src/daemon/conversation-lifecycle.ts +36 -9
- package/src/daemon/conversation-media-retry.ts +85 -7
- package/src/daemon/conversation-notifiers.ts +4 -1
- package/src/daemon/conversation-process.ts +13 -7
- package/src/daemon/conversation-runtime-assembly.ts +305 -306
- package/src/daemon/conversation-tool-setup.ts +44 -14
- package/src/daemon/conversation-workspace.ts +1 -2
- package/src/daemon/conversation.ts +59 -2
- package/src/daemon/daemon-control.ts +8 -2
- package/src/daemon/date-context.ts +26 -53
- package/src/daemon/first-greeting.ts +1 -1
- package/src/daemon/handlers/conversations.ts +4 -7
- package/src/daemon/handlers/shared.test.ts +143 -0
- package/src/daemon/handlers/shared.ts +85 -17
- package/src/daemon/handlers/skills.ts +416 -209
- package/src/daemon/lifecycle.ts +212 -131
- package/src/daemon/main.ts +5 -1
- package/src/daemon/message-types/conversations.ts +29 -7
- package/src/daemon/message-types/messages.ts +12 -2
- package/src/daemon/message-types/schedules.ts +1 -0
- package/src/daemon/message-types/settings.ts +6 -0
- package/src/daemon/message-types/skills.ts +97 -36
- package/src/daemon/profiler-run-store.ts +557 -0
- package/src/daemon/providers-setup.ts +5 -0
- package/src/daemon/server.ts +100 -11
- package/src/daemon/shutdown-handlers.ts +5 -0
- package/src/daemon/tool-side-effects.ts +50 -8
- package/src/export/transcript-formatter.ts +148 -0
- package/src/filing/filing-service.ts +228 -0
- package/src/heartbeat/heartbeat-service.ts +97 -7
- package/src/hooks/cli.ts +2 -2
- package/src/hooks/runner.ts +15 -38
- package/src/inbound/platform-callback-registration.ts +14 -14
- package/src/mcp/client.ts +6 -0
- package/src/mcp/mcp-oauth-provider.ts +149 -27
- package/src/memory/admin.ts +42 -75
- package/src/memory/app-store.ts +69 -0
- package/src/memory/conversation-bootstrap.ts +3 -1
- package/src/memory/conversation-crud.ts +211 -288
- package/src/memory/conversation-group-migration.ts +157 -0
- package/src/memory/conversation-queries.ts +61 -13
- package/src/memory/conversation-title-service.ts +1 -0
- package/src/memory/db-init.ts +194 -361
- package/src/memory/embed.ts +73 -0
- package/src/memory/embedding-backend.ts +8 -14
- package/src/memory/embedding-runtime-manager.ts +12 -114
- package/src/memory/fingerprint.ts +2 -2
- package/src/memory/graph/bootstrap.ts +521 -0
- package/src/memory/graph/capability-seed.ts +449 -0
- package/src/memory/graph/consolidation.ts +725 -0
- package/src/memory/graph/conversation-graph-memory.ts +659 -0
- package/src/memory/graph/decay.test.ts +208 -0
- package/src/memory/graph/decay.ts +195 -0
- package/src/memory/graph/extraction-job.ts +74 -0
- package/src/memory/graph/extraction.test.ts +936 -0
- package/src/memory/graph/extraction.ts +1297 -0
- package/src/memory/graph/graph-memory-state-store.ts +37 -0
- package/src/memory/graph/graph-search.ts +280 -0
- package/src/memory/graph/image-ref-utils.ts +29 -0
- package/src/memory/graph/injection.test.ts +513 -0
- package/src/memory/graph/injection.ts +469 -0
- package/src/memory/graph/inspect.ts +543 -0
- package/src/memory/graph/narrative.ts +267 -0
- package/src/memory/graph/pattern-scan.ts +269 -0
- package/src/memory/graph/retriever.ts +1111 -0
- package/src/memory/graph/scoring.test.ts +548 -0
- package/src/memory/graph/scoring.ts +232 -0
- package/src/memory/graph/serendipity.ts +65 -0
- package/src/memory/graph/store.test.ts +1098 -0
- package/src/memory/graph/store.ts +838 -0
- package/src/memory/graph/tool-handlers.ts +301 -0
- package/src/memory/graph/tools.ts +97 -0
- package/src/memory/graph/triggers.test.ts +487 -0
- package/src/memory/graph/triggers.ts +223 -0
- package/src/memory/graph/types.ts +295 -0
- package/src/memory/group-crud.ts +191 -0
- package/src/memory/indexer.ts +37 -19
- package/src/memory/job-handlers/cleanup.ts +32 -42
- package/src/memory/job-handlers/conversation-starters.ts +91 -53
- package/src/memory/job-handlers/embedding.ts +5 -31
- package/src/memory/job-handlers/index-maintenance.ts +23 -11
- package/src/memory/job-handlers/summarization.ts +32 -17
- package/src/memory/job-utils.ts +1 -1
- package/src/memory/jobs-store.ts +21 -31
- package/src/memory/jobs-worker.ts +180 -129
- package/src/memory/llm-request-log-store.ts +96 -12
- package/src/memory/memory-recall-log-store.ts +49 -5
- package/src/memory/message-content.ts +1 -0
- package/src/memory/migrations/202-memory-graph-tables.ts +130 -0
- package/src/memory/migrations/203-drop-memory-items-tables.ts +55 -0
- package/src/memory/migrations/204-rename-memory-graph-type-values.ts +46 -0
- package/src/memory/migrations/205-memory-graph-image-refs.ts +11 -0
- package/src/memory/migrations/206-memory-graph-node-edits.ts +19 -0
- package/src/memory/migrations/206-scrub-corrupted-image-attachments.ts +131 -0
- package/src/memory/migrations/207-conversation-graph-memory-state.ts +20 -0
- package/src/memory/migrations/208-conversations-last-message-at.ts +35 -0
- package/src/memory/migrations/209-strip-thinking-from-consolidated.ts +85 -0
- package/src/memory/migrations/210-schedule-reuse-conversation.ts +13 -0
- package/src/memory/migrations/211-memory-recall-logs-query-context.ts +21 -0
- package/src/memory/migrations/212-llm-request-logs-created-at-index.ts +19 -0
- package/src/memory/migrations/index.ts +12 -0
- package/src/memory/migrations/registry.ts +16 -0
- package/src/memory/qdrant-client.ts +44 -17
- package/src/memory/schema/conversations.ts +14 -0
- package/src/memory/schema/index.ts +1 -0
- package/src/memory/schema/infrastructure.ts +8 -1
- package/src/memory/schema/memory-core.ts +0 -51
- package/src/memory/schema/memory-graph.ts +154 -0
- package/src/memory/search/semantic.ts +47 -91
- package/src/memory/task-memory-cleanup.ts +58 -61
- package/src/messaging/providers/outlook/adapter.ts +8 -1
- package/src/messaging/providers/outlook/client.ts +299 -0
- package/src/messaging/providers/outlook/types.ts +118 -0
- package/src/notifications/adapters/macos.ts +1 -0
- package/src/notifications/copy-composer.ts +95 -0
- package/src/notifications/decision-engine.ts +35 -0
- package/src/notifications/signal.ts +16 -0
- package/src/oauth/seed-providers.ts +2 -1
- package/src/permissions/checker.ts +36 -4
- package/src/permissions/defaults.ts +4 -4
- package/src/permissions/permission-mode-store.ts +180 -0
- package/src/permissions/permission-mode.ts +31 -0
- package/src/permissions/workspace-policy.ts +10 -1
- package/src/playbooks/playbook-compiler.ts +19 -18
- package/src/playbooks/types.ts +4 -3
- package/src/prompts/system-prompt.ts +62 -36
- package/src/prompts/templates/BOOTSTRAP-REFERENCE.md +100 -0
- package/src/prompts/templates/BOOTSTRAP.md +70 -165
- package/src/prompts/templates/HEARTBEAT.md +3 -1
- package/src/prompts/templates/SOUL.md +25 -4
- package/src/prompts/templates/UPDATES.md +8 -0
- package/src/providers/anthropic/client.ts +136 -220
- package/src/providers/gemini/client.ts +1 -1
- package/src/providers/openai/client.ts +1 -1
- package/src/providers/registry.ts +1 -1
- package/src/providers/retry.ts +19 -3
- package/src/runtime/actor-trust-resolver.ts +5 -1
- package/src/runtime/auth/route-policy.ts +30 -0
- package/src/runtime/guardian-reply-router.ts +5 -1
- package/src/runtime/http-server.ts +55 -5
- package/src/runtime/http-types.ts +12 -1
- package/src/runtime/middleware/auth.ts +20 -0
- package/src/runtime/migrations/vbundle-builder.ts +389 -3
- package/src/runtime/migrations/vbundle-importer.ts +8 -6
- package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +378 -0
- package/src/runtime/routes/app-management-routes.ts +1 -11
- package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +26 -0
- package/src/runtime/routes/archive-utils.ts +29 -0
- package/src/runtime/routes/attachment-routes.test.ts +106 -0
- package/src/runtime/routes/attachment-routes.ts +106 -16
- package/src/runtime/routes/avatar-routes.ts +2 -9
- package/src/runtime/routes/brain-graph-routes.ts +21 -22
- package/src/runtime/routes/btw-routes.ts +22 -1
- package/src/runtime/routes/conversation-analysis-routes.ts +173 -0
- package/src/runtime/routes/conversation-management-routes.ts +3 -14
- package/src/runtime/routes/conversation-query-routes.ts +49 -3
- package/src/runtime/routes/conversation-routes.ts +264 -44
- package/src/runtime/routes/conversation-starter-routes.ts +2 -2
- package/src/runtime/routes/debug-routes.ts +1 -1
- package/src/runtime/routes/global-search-routes.ts +21 -19
- package/src/runtime/routes/group-routes.ts +207 -0
- package/src/runtime/routes/guardian-action-routes.ts +21 -10
- package/src/runtime/routes/guardian-bootstrap-routes.ts +23 -19
- package/src/runtime/routes/heartbeat-routes.ts +4 -10
- package/src/runtime/routes/identity-routes.ts +53 -18
- package/src/runtime/routes/inbound-message-handler.ts +19 -0
- package/src/runtime/routes/inbound-stages/guardian-activation-intercept.test.ts +292 -0
- package/src/runtime/routes/inbound-stages/guardian-activation-intercept.ts +207 -0
- package/src/runtime/routes/llm-context-normalization.ts +14 -10
- package/src/runtime/routes/log-export-routes.ts +23 -275
- package/src/runtime/routes/memory-item-routes.test.ts +170 -247
- package/src/runtime/routes/memory-item-routes.ts +341 -388
- package/src/runtime/routes/migration-routes.ts +18 -7
- package/src/runtime/routes/profiler-routes.ts +350 -0
- package/src/runtime/routes/schedule-routes.ts +28 -11
- package/src/runtime/routes/settings-routes.ts +95 -8
- package/src/runtime/routes/skills-routes.ts +103 -37
- package/src/runtime/routes/subagents-routes.ts +28 -7
- package/src/runtime/routes/user-route-dispatcher.ts +223 -0
- package/src/runtime/routes/user-routes.ts +41 -0
- package/src/runtime/routes/work-items-routes.test.ts +2 -6
- package/src/runtime/routes/workspace-routes.ts +0 -1
- package/src/schedule/schedule-store.ts +30 -0
- package/src/schedule/scheduler.ts +52 -18
- package/src/security/oauth2.ts +1 -1
- package/src/security/secure-keys.ts +4 -8
- package/src/shared/provider-env-vars.ts +19 -0
- package/src/skills/catalog-cache.ts +5 -0
- package/src/skills/catalog-install.ts +25 -16
- package/src/skills/clawhub.ts +134 -154
- package/src/skills/install-meta.ts +208 -0
- package/src/skills/managed-store.ts +29 -18
- package/src/skills/skill-memory.ts +12 -229
- package/src/skills/skillssh-registry.ts +19 -17
- package/src/subagent/index.ts +13 -3
- package/src/subagent/manager.ts +308 -29
- package/src/subagent/types.ts +68 -0
- package/src/tasks/task-runner.ts +7 -5
- package/src/telemetry/usage-telemetry-reporter.test.ts +3 -5
- package/src/tools/apps/executors.ts +29 -4
- package/src/tools/browser/runtime-check.ts +3 -1
- package/src/tools/filesystem/list.ts +93 -0
- package/src/tools/memory/register.ts +63 -46
- package/src/tools/permission-checker.ts +85 -1
- package/src/tools/registry.ts +4 -0
- package/src/tools/schedule/create.ts +3 -0
- package/src/tools/schedule/list.ts +1 -0
- package/src/tools/schedule/update.ts +6 -0
- package/src/tools/shared/filesystem/errors.ts +5 -0
- package/src/tools/shared/filesystem/file-ops-service.ts +90 -2
- package/src/tools/shared/filesystem/image-read.ts +22 -85
- package/src/tools/shared/filesystem/types.ts +17 -0
- package/src/tools/shared/shell-output.ts +31 -2
- package/src/tools/subagent/abort.ts +12 -2
- package/src/tools/subagent/message.ts +9 -2
- package/src/tools/subagent/notify-parent.ts +79 -0
- package/src/tools/subagent/read.ts +29 -8
- package/src/tools/subagent/resolve.ts +21 -0
- package/src/tools/subagent/spawn.ts +2 -0
- package/src/tools/subagent/status.ts +11 -1
- package/src/tools/system/avatar-generator.ts +3 -3
- package/src/tools/system/register.ts +23 -0
- package/src/tools/system/set-permission-mode.ts +103 -0
- package/src/tools/terminal/parser.ts +30 -5
- package/src/tools/terminal/safe-env.ts +17 -1
- package/src/tools/tool-manifest.ts +9 -3
- package/src/tools/types.ts +2 -0
- package/src/util/browser.ts +25 -10
- package/src/util/bun-runtime.ts +172 -0
- package/src/util/logger.ts +1 -1
- package/src/util/platform.ts +50 -17
- package/src/watcher/providers/outlook-calendar.ts +343 -0
- package/src/watcher/providers/outlook.ts +198 -0
- package/src/workspace/migrations/023-move-config-files-to-workspace.ts +2 -2
- package/src/workspace/migrations/024-move-runtime-files-to-workspace.ts +2 -2
- package/src/workspace/migrations/025-remove-oauth-app-setup-skills.ts +76 -0
- package/src/workspace/migrations/026-backfill-install-meta.ts +325 -0
- package/src/workspace/migrations/027-remove-orphaned-optimized-images-cache.ts +42 -0
- package/src/workspace/migrations/028-recover-conversations-from-disk-view.ts +270 -0
- package/src/workspace/migrations/029-seed-pkb.ts +84 -0
- package/src/workspace/migrations/registry.ts +10 -0
- package/src/workspace/top-level-renderer.ts +5 -9
- package/src/__tests__/cli-memory.test.ts +0 -372
- package/src/__tests__/clipboard.test.ts +0 -88
- package/src/__tests__/context-memory-e2e.test.ts +0 -415
- package/src/__tests__/journal-context.test.ts +0 -268
- package/src/__tests__/memory-context-benchmark.benchmark.test.ts +0 -297
- package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -459
- package/src/__tests__/memory-query-builder.test.ts +0 -59
- package/src/__tests__/memory-recall-quality.test.ts +0 -1046
- package/src/__tests__/memory-regressions.experimental.test.ts +0 -629
- package/src/__tests__/memory-regressions.test.ts +0 -3696
- package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -295
- package/src/cli/cli-memory.ts +0 -176
- package/src/daemon/conversation-memory.ts +0 -207
- package/src/memory/conversation-starters-cadence.ts +0 -74
- package/src/memory/items-extractor.ts +0 -860
- package/src/memory/job-handlers/batch-extraction.ts +0 -753
- package/src/memory/job-handlers/extraction.ts +0 -40
- package/src/memory/job-handlers/journal-carry-forward.test.ts +0 -355
- package/src/memory/job-handlers/journal-carry-forward.ts +0 -255
- package/src/memory/journal-memory.ts +0 -224
- package/src/memory/query-builder.ts +0 -47
- package/src/memory/query-expansion.ts +0 -83
- package/src/memory/retriever.test.ts +0 -1592
- package/src/memory/retriever.ts +0 -1331
- package/src/memory/search/formatting.test.ts +0 -140
- package/src/memory/search/formatting.ts +0 -262
- package/src/memory/search/mmr.ts +0 -139
- package/src/memory/search/ranking.ts +0 -15
- package/src/memory/search/staleness.ts +0 -40
- package/src/memory/search/tier-classifier.ts +0 -18
- package/src/memory/search/types.ts +0 -121
- package/src/prompts/journal-context.ts +0 -154
- package/src/tools/memory/definitions.ts +0 -69
- package/src/tools/memory/handlers.test.ts +0 -562
- package/src/tools/memory/handlers.ts +0 -434
- package/src/util/clipboard.ts +0 -34
package/src/memory/db-init.ts
CHANGED
|
@@ -9,8 +9,10 @@ import {
|
|
|
9
9
|
import { tmpdir } from "node:os";
|
|
10
10
|
import { dirname, join } from "node:path";
|
|
11
11
|
|
|
12
|
+
import { getLogger } from "../util/logger.js";
|
|
12
13
|
import { ensureDataDir, getDbPath } from "../util/platform.js";
|
|
13
14
|
import { getDb, getSqlite } from "./db-connection.js";
|
|
15
|
+
import { migrateToolCreatedItems } from "./graph/bootstrap.js";
|
|
14
16
|
import {
|
|
15
17
|
addCoreColumns,
|
|
16
18
|
createActorRefreshTokenRecordsTable,
|
|
@@ -56,7 +58,11 @@ import {
|
|
|
56
58
|
migrateContactsRolePrincipal,
|
|
57
59
|
migrateContactsUserFileColumn,
|
|
58
60
|
migrateConversationForkLineage,
|
|
61
|
+
migrateConversationsLastMessageAt,
|
|
59
62
|
migrateConversationsThreadTypeIndex,
|
|
63
|
+
migrateCreateConversationGraphMemoryState,
|
|
64
|
+
migrateCreateMemoryGraphNodeEdits,
|
|
65
|
+
migrateCreateMemoryGraphTables,
|
|
60
66
|
migrateCreateMemoryRecallLogs,
|
|
61
67
|
migrateCreateThreadStartersTable,
|
|
62
68
|
migrateCreateTraceEventsTable,
|
|
@@ -69,6 +75,7 @@ import {
|
|
|
69
75
|
migrateDropEntityTables,
|
|
70
76
|
migrateDropLegacyMemberGuardianTables,
|
|
71
77
|
migrateDropLoopbackPortColumn,
|
|
78
|
+
migrateDropMemoryItemsTables,
|
|
72
79
|
migrateDropMemorySegmentFts,
|
|
73
80
|
migrateDropOrphanedMediaTables,
|
|
74
81
|
migrateDropRemindersTable,
|
|
@@ -91,7 +98,10 @@ import {
|
|
|
91
98
|
migrateInviteContactId,
|
|
92
99
|
migrateLlmRequestLogMessageId,
|
|
93
100
|
migrateLlmRequestLogProvider,
|
|
101
|
+
migrateLlmRequestLogsCreatedAtIndex,
|
|
102
|
+
migrateMemoryGraphImageRefs,
|
|
94
103
|
migrateMemoryItemSupersession,
|
|
104
|
+
migrateMemoryRecallLogsQueryContext,
|
|
95
105
|
migrateMessagesConversationCreatedAtIndex,
|
|
96
106
|
migrateMessagesFtsBackfill,
|
|
97
107
|
migrateNormalizePhoneIdentities,
|
|
@@ -111,6 +121,7 @@ import {
|
|
|
111
121
|
migrateRenameGmailProviderKeyToGoogle,
|
|
112
122
|
migrateRenameGuardianVerificationValues,
|
|
113
123
|
migrateRenameInboxThreadStateTable,
|
|
124
|
+
migrateRenameMemoryGraphTypeValues,
|
|
114
125
|
migrateRenameNotificationThreadColumns,
|
|
115
126
|
migrateRenameSequenceEnrollmentsThreadIdColumn,
|
|
116
127
|
migrateRenameSequenceStepsReplyKey,
|
|
@@ -122,8 +133,11 @@ import {
|
|
|
122
133
|
migrateRenameVoiceToPhone,
|
|
123
134
|
migrateScheduleOneShotRouting,
|
|
124
135
|
migrateScheduleQuietFlag,
|
|
136
|
+
migrateScheduleReuseConversation,
|
|
125
137
|
migrateSchemaIndexesAndColumns,
|
|
138
|
+
migrateScrubCorruptedImageAttachments,
|
|
126
139
|
migrateStripIntegrationPrefixFromProviderKeys,
|
|
140
|
+
migrateStripThinkingFromConsolidated,
|
|
127
141
|
migrateUsageDashboardIndexes,
|
|
128
142
|
migrateUsageLlmCallCount,
|
|
129
143
|
migrateVoiceInviteColumns,
|
|
@@ -139,8 +153,8 @@ import {
|
|
|
139
153
|
// ---------------------------------------------------------------------------
|
|
140
154
|
|
|
141
155
|
function getTemplateDbPath(): string {
|
|
142
|
-
// Hash this file + all migration files so the template
|
|
143
|
-
// when any migration changes.
|
|
156
|
+
// Hash this file + all migration files + bootstrap migration so the template
|
|
157
|
+
// auto-invalidates when any migration changes.
|
|
144
158
|
const thisFile = new URL(import.meta.url).pathname;
|
|
145
159
|
const hash = createHash("md5");
|
|
146
160
|
hash.update(readFileSync(thisFile, "utf-8"));
|
|
@@ -150,6 +164,12 @@ function getTemplateDbPath(): string {
|
|
|
150
164
|
hash.update(readFileSync(join(migrationsDir, name), "utf-8"));
|
|
151
165
|
}
|
|
152
166
|
}
|
|
167
|
+
// Include the bootstrap migration (migrateToolCreatedItems) which also runs
|
|
168
|
+
// during initializeDb but lives outside the migrations/ directory.
|
|
169
|
+
const bootstrapFile = join(dirname(thisFile), "graph", "bootstrap.ts");
|
|
170
|
+
if (existsSync(bootstrapFile)) {
|
|
171
|
+
hash.update(readFileSync(bootstrapFile, "utf-8"));
|
|
172
|
+
}
|
|
153
173
|
return join(
|
|
154
174
|
tmpdir(),
|
|
155
175
|
`vellum-test-db-template-${hash.digest("hex").slice(0, 12)}.db`,
|
|
@@ -187,369 +207,182 @@ export function initializeDb(): void {
|
|
|
187
207
|
return;
|
|
188
208
|
}
|
|
189
209
|
|
|
210
|
+
const log = getLogger("db-init");
|
|
190
211
|
const database = getDb();
|
|
191
212
|
|
|
192
|
-
//
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
// 39. Backfill contact interaction stats from channel lastSeenAt
|
|
354
|
-
migrateBackfillContactInteractionStats(database);
|
|
355
|
-
|
|
356
|
-
// 40. Drop assistant_id columns from all 16 daemon tables
|
|
357
|
-
migrateDropAssistantIdColumns(database);
|
|
358
|
-
|
|
359
|
-
// 41. Indexes on llm_usage_events for usage dashboard time-range and breakdown queries
|
|
360
|
-
migrateUsageDashboardIndexes(database);
|
|
361
|
-
|
|
362
|
-
// 42. (skipped) migrateReorderUsageDashboardIndexes — superseded by 43 which drops
|
|
363
|
-
// all composite indexes that 42 would create, so running it is wasted work.
|
|
364
|
-
|
|
365
|
-
// 43. Drop all composite usage indexes — they don't eliminate temp B-trees for GROUP BY
|
|
366
|
-
migrateDropUsageCompositeIndexes(database);
|
|
367
|
-
|
|
368
|
-
// 44. Backfill historical Anthropic usage rows from request-log truth before dashboard reads
|
|
369
|
-
migrateBackfillUsageCacheAccounting(database);
|
|
370
|
-
|
|
371
|
-
// 45. Rename channel_guardian_verification_challenges → channel_verification_sessions
|
|
372
|
-
migrateRenameVerificationTable(database);
|
|
373
|
-
|
|
374
|
-
// 46. Rename guardian_verification_session_id → verification_session_id in call_sessions
|
|
375
|
-
migrateRenameVerificationSessionIdColumn(database);
|
|
376
|
-
|
|
377
|
-
// 47. Rename persisted guardian_verification call_mode and event_type values
|
|
378
|
-
migrateRenameGuardianVerificationValues(database);
|
|
379
|
-
|
|
380
|
-
// 48. Rename stored "voice" channel values to "phone" across all channel text columns
|
|
381
|
-
migrateRenameVoiceToPhone(database);
|
|
382
|
-
|
|
383
|
-
// 49. Drop the unused legacy accounts table after removing account_manage
|
|
384
|
-
migrateDropAccountsTable(database);
|
|
385
|
-
|
|
386
|
-
// 50. Extend cron_jobs table with one-shot and routing support
|
|
387
|
-
migrateScheduleOneShotRouting(database);
|
|
388
|
-
|
|
389
|
-
// 51. Migrate existing reminders into cron_jobs as one-shot schedules
|
|
390
|
-
migrateRemindersToSchedules(database);
|
|
391
|
-
|
|
392
|
-
// 52. Drop the legacy reminders table after data migration
|
|
393
|
-
migrateDropRemindersTable(database);
|
|
394
|
-
|
|
395
|
-
// 53. OAuth provider/app/connection tables
|
|
396
|
-
createOAuthTables(database);
|
|
397
|
-
|
|
398
|
-
// 54. Add explicit client_secret_credential_path to oauth_apps
|
|
399
|
-
migrateOAuthAppsClientSecretPath(database);
|
|
400
|
-
|
|
401
|
-
// 55. Add ping_url column to oauth_providers
|
|
402
|
-
migrateOAuthProvidersPingUrl(database);
|
|
403
|
-
|
|
404
|
-
// 56. Add supersession tracking columns and override confidence to memory_items
|
|
405
|
-
migrateMemoryItemSupersession(database);
|
|
406
|
-
|
|
407
|
-
// 56b. Drop unused entity tables (entity search replaced by hybrid search on item statements)
|
|
408
|
-
migrateDropEntityTables(database);
|
|
409
|
-
|
|
410
|
-
// 57. Drop memory_segment_fts virtual table and triggers (replaced by Qdrant hybrid search)
|
|
411
|
-
migrateDropMemorySegmentFts(database);
|
|
412
|
-
|
|
413
|
-
// 58. Drop memory_item_conflicts table (conflict resolution system removed)
|
|
414
|
-
migrateDropConflicts(database);
|
|
415
|
-
|
|
416
|
-
// 59. Add invite metadata columns to call_sessions for outbound invite call routing
|
|
417
|
-
migrateCallSessionInviteMetadata(database);
|
|
418
|
-
|
|
419
|
-
// 60. Add required contact_id to assistant_ingress_invites and clean up legacy rows
|
|
420
|
-
migrateInviteContactId(database);
|
|
421
|
-
|
|
422
|
-
// 61. Add interaction_count and last_interaction columns to contact_channels
|
|
423
|
-
migrateChannelInteractionColumns(database);
|
|
424
|
-
|
|
425
|
-
// 62. Drop interaction_count and last_interaction columns from contacts (now derived from channels)
|
|
426
|
-
migrateDropContactInteractionColumns(database);
|
|
427
|
-
|
|
428
|
-
// 63. Drop loopback_port column from oauth_providers (moved to code-side behavior registry)
|
|
429
|
-
migrateDropLoopbackPortColumn(database);
|
|
430
|
-
|
|
431
|
-
// 64. Drop orphaned media tables (CREATE TABLE removed in #16739, clean up existing databases)
|
|
432
|
-
migrateDropOrphanedMediaTables(database);
|
|
433
|
-
|
|
434
|
-
// 65. Convert guardian timestamps from ISO 8601 text to epoch ms integers
|
|
435
|
-
migrateGuardianTimestampsEpochMs(database);
|
|
436
|
-
|
|
437
|
-
// 66. Rename assistant_inbox_thread_state → assistant_inbox_conversation_state
|
|
438
|
-
migrateRenameInboxThreadStateTable(database);
|
|
439
|
-
|
|
440
|
-
// 67. Rename thread_type → conversation_type in conversations table
|
|
441
|
-
migrateRenameConversationTypeColumn(database);
|
|
442
|
-
|
|
443
|
-
// 68. Rename notification_deliveries thread columns → conversation columns
|
|
444
|
-
migrateRenameNotificationThreadColumns(database);
|
|
445
|
-
|
|
446
|
-
// 69. Rename followups.thread_id → conversation_id
|
|
447
|
-
migrateRenameFollowupsThreadIdColumn(database);
|
|
448
|
-
|
|
449
|
-
// 70. Rename sequence_enrollments.thread_id → conversation_id
|
|
450
|
-
migrateRenameSequenceEnrollmentsThreadIdColumn(database);
|
|
451
|
-
|
|
452
|
-
// 71. Rename replyToThread → replyInSameConversation in sequence steps JSON blobs
|
|
453
|
-
migrateRenameSequenceStepsReplyKey(database);
|
|
454
|
-
|
|
455
|
-
// 72. Rename integration:gmail → integration:google across OAuth tables
|
|
456
|
-
migrateRenameGmailProviderKeyToGoogle(database);
|
|
457
|
-
|
|
458
|
-
// 73. Create thread_starters table for personalized empty-thread suggestions (renamed in migration 77)
|
|
459
|
-
migrateCreateThreadStartersTable(database);
|
|
460
|
-
|
|
461
|
-
// 74. Add capability card columns to thread_starters + category relevance table
|
|
462
|
-
migrateCapabilityCardColumns(database);
|
|
463
|
-
|
|
464
|
-
// 75. Rename created_by_session_id → source_conversation_id in verification sessions and invites
|
|
465
|
-
migrateRenameCreatedBySessionIdColumns(database);
|
|
466
|
-
|
|
467
|
-
// 76. Rename source_session_id → source_context_id in notification_events
|
|
468
|
-
migrateRenameSourceSessionIdColumn(database);
|
|
469
|
-
|
|
470
|
-
// 77. Rename thread_starters → conversation_starters table and indexes
|
|
471
|
-
migrateRenameThreadStartersTable(database);
|
|
472
|
-
|
|
473
|
-
// 77b. Rename checkpoint keys from thread_starters: → conversation_starters: prefix
|
|
474
|
-
migrateRenameThreadStartersCheckpoints(database);
|
|
475
|
-
|
|
476
|
-
// 78. Lifecycle events table for app_open / hatch telemetry
|
|
477
|
-
createLifecycleEventsTable(database);
|
|
478
|
-
|
|
479
|
-
// 79. Remove deleted capability-card state while keeping conversation starter chips
|
|
480
|
-
migrateDropCapabilityCardState(database);
|
|
481
|
-
|
|
482
|
-
// 80. Trace events table for persistent trace/activity storage across sessions
|
|
483
|
-
migrateCreateTraceEventsTable(database);
|
|
484
|
-
|
|
485
|
-
// 81. Add managed_service_config_key column to oauth_providers
|
|
486
|
-
migrateOAuthProvidersManagedServiceConfigKey(database);
|
|
487
|
-
|
|
488
|
-
// 81b. Add display metadata columns to oauth_providers (display_name, description, dashboard_url, etc.)
|
|
489
|
-
migrateOAuthProvidersDisplayMetadata(database);
|
|
490
|
-
|
|
491
|
-
// 82. Add message_id column to llm_request_logs for per-message LLM context lookup
|
|
492
|
-
migrateLlmRequestLogMessageId(database);
|
|
493
|
-
|
|
494
|
-
// 82b. Add provider column to llm_request_logs for runtime provider lookup
|
|
495
|
-
migrateLlmRequestLogProvider(database);
|
|
496
|
-
|
|
497
|
-
// 83. Backfill existing inline (base64-in-DB) attachments to on-disk storage
|
|
498
|
-
migrateBackfillInlineAttachmentsToDisk(database);
|
|
499
|
-
|
|
500
|
-
// 84. Add nullable conversation fork lineage columns and parent lookup index
|
|
501
|
-
migrateConversationForkLineage(database);
|
|
502
|
-
|
|
503
|
-
// 85. Add quiet flag to schedule jobs
|
|
504
|
-
migrateScheduleQuietFlag(database);
|
|
505
|
-
|
|
506
|
-
// 86. Drop simplified-memory tables and reducer checkpoint columns
|
|
507
|
-
migrateDropSimplifiedMemory(database);
|
|
508
|
-
|
|
509
|
-
// 87. Add skip_disclosure column to call_sessions for per-call disclosure control
|
|
510
|
-
migrateCallSessionSkipDisclosure(database);
|
|
511
|
-
|
|
512
|
-
// 88. Backfill correct MIME types for audio attachments stored as application/octet-stream
|
|
513
|
-
migrateBackfillAudioAttachmentMimeTypes(database);
|
|
514
|
-
|
|
515
|
-
// 89. Add user_file column to contacts for per-user persona file mapping
|
|
516
|
-
migrateContactsUserFileColumn(database);
|
|
517
|
-
|
|
518
|
-
// 90. Add source_type and source_message_role columns to memory_items
|
|
519
|
-
migrateAddSourceTypeColumns(database);
|
|
520
|
-
|
|
521
|
-
// 91. Memory recall logs table for inspector memory tab
|
|
522
|
-
migrateCreateMemoryRecallLogs(database);
|
|
523
|
-
|
|
524
|
-
// 92. Add ping_method, ping_headers, ping_body columns to oauth_providers
|
|
525
|
-
migrateOAuthProvidersPingConfig(database);
|
|
526
|
-
|
|
527
|
-
// 93. Strip `integration:` prefix from provider_key across OAuth tables
|
|
528
|
-
migrateStripIntegrationPrefixFromProviderKeys(database);
|
|
529
|
-
|
|
530
|
-
// 94. Composite index on messages(conversation_id, created_at) for paginated history queries
|
|
531
|
-
migrateMessagesConversationCreatedAtIndex(database);
|
|
532
|
-
|
|
533
|
-
// 95. Add behavioral config columns to oauth_providers (loopback port, injection templates, setup metadata, identity verification)
|
|
534
|
-
migrateOAuthProvidersBehaviorColumns(database);
|
|
535
|
-
|
|
536
|
-
// 96. Drop the setup_skill_id column from oauth_providers (concept removed)
|
|
537
|
-
migrateDropSetupSkillIdColumn(database);
|
|
538
|
-
|
|
539
|
-
// 97. Add enrichment columns to canonical_guardian_requests for guardian approval UX
|
|
540
|
-
migrateGuardianRequestEnrichmentColumns(database);
|
|
541
|
-
|
|
542
|
-
// 98. Add llm_call_count column to llm_usage_events for accurate LLM call counting
|
|
543
|
-
migrateUsageLlmCallCount(database);
|
|
544
|
-
|
|
545
|
-
// 99. Add feature_flag column to oauth_providers for feature-flag gating
|
|
546
|
-
migrateOAuthProvidersFeatureFlag(database);
|
|
213
|
+
// Every migration step, in execution order. Each function accepts a
|
|
214
|
+
// DrizzleDb and is identified by its .name.
|
|
215
|
+
const migrationSteps = [
|
|
216
|
+
createCoreTables,
|
|
217
|
+
recoverCrashedMigrations,
|
|
218
|
+
createWatchersAndLogsTables,
|
|
219
|
+
addCoreColumns,
|
|
220
|
+
runComplexMigrations,
|
|
221
|
+
createCoreIndexes,
|
|
222
|
+
createContactsAndTriageTables,
|
|
223
|
+
createCallSessionsTables,
|
|
224
|
+
migrateCallSessionMode,
|
|
225
|
+
createFollowupsTables,
|
|
226
|
+
createTasksAndWorkItemsTables,
|
|
227
|
+
createExternalConversationBindingsTables,
|
|
228
|
+
createChannelGuardianTables,
|
|
229
|
+
migrateGuardianVerificationSessions,
|
|
230
|
+
migrateGuardianBootstrapToken,
|
|
231
|
+
migrateGuardianVerificationPurpose,
|
|
232
|
+
createMediaAssetsTables,
|
|
233
|
+
createAssistantInboxTables,
|
|
234
|
+
runLateMigrations,
|
|
235
|
+
migrateChannelInboundDeliveredSegments,
|
|
236
|
+
migrateGuardianActionFollowup,
|
|
237
|
+
migrateGuardianActionToolMetadata,
|
|
238
|
+
migrateGuardianActionSupersession,
|
|
239
|
+
migrateConversationsThreadTypeIndex,
|
|
240
|
+
migrateGuardianDeliveryConversationIndex,
|
|
241
|
+
createNotificationTables,
|
|
242
|
+
createSequenceTables,
|
|
243
|
+
createMessagesFts,
|
|
244
|
+
migrateMessagesFtsBackfill,
|
|
245
|
+
createConversationAttentionTables,
|
|
246
|
+
migrateReminderRoutingIntent,
|
|
247
|
+
migrateSchemaIndexesAndColumns,
|
|
248
|
+
migrateFkCascadeRebuilds,
|
|
249
|
+
createScopedApprovalGrantsTable,
|
|
250
|
+
migrateNotificationDeliveryThreadDecision,
|
|
251
|
+
createCanonicalGuardianTables,
|
|
252
|
+
migrateCanonicalGuardianRequesterChatId,
|
|
253
|
+
migrateCanonicalGuardianDeliveriesDestinationIndex,
|
|
254
|
+
migrateNormalizePhoneIdentities,
|
|
255
|
+
migrateVoiceInviteColumns,
|
|
256
|
+
migrateVoiceInviteDisplayMetadata,
|
|
257
|
+
migrateInviteCodeHashColumn,
|
|
258
|
+
createActorTokenRecordsTable,
|
|
259
|
+
createActorRefreshTokenRecordsTable,
|
|
260
|
+
migrateGuardianPrincipalIdColumns,
|
|
261
|
+
migrateBackfillGuardianPrincipalId,
|
|
262
|
+
migrateGuardianPrincipalIdNotNull,
|
|
263
|
+
migrateContactsRolePrincipal,
|
|
264
|
+
migrateContactChannelsAccessFields,
|
|
265
|
+
migrateContactChannelsTypeChatIdIndex,
|
|
266
|
+
migrateDropLegacyMemberGuardianTables,
|
|
267
|
+
migrateContactsAssistantId,
|
|
268
|
+
migrateAssistantContactMetadata,
|
|
269
|
+
migrateContactsNotesColumn,
|
|
270
|
+
migrateBackfillContactInteractionStats,
|
|
271
|
+
migrateDropAssistantIdColumns,
|
|
272
|
+
migrateUsageDashboardIndexes,
|
|
273
|
+
// 42. (skipped) migrateReorderUsageDashboardIndexes — superseded by 43
|
|
274
|
+
migrateDropUsageCompositeIndexes,
|
|
275
|
+
migrateBackfillUsageCacheAccounting,
|
|
276
|
+
migrateRenameVerificationTable,
|
|
277
|
+
migrateRenameVerificationSessionIdColumn,
|
|
278
|
+
migrateRenameGuardianVerificationValues,
|
|
279
|
+
migrateRenameVoiceToPhone,
|
|
280
|
+
migrateDropAccountsTable,
|
|
281
|
+
migrateScheduleOneShotRouting,
|
|
282
|
+
migrateRemindersToSchedules,
|
|
283
|
+
migrateDropRemindersTable,
|
|
284
|
+
createOAuthTables,
|
|
285
|
+
migrateOAuthAppsClientSecretPath,
|
|
286
|
+
migrateOAuthProvidersPingUrl,
|
|
287
|
+
migrateMemoryItemSupersession,
|
|
288
|
+
migrateDropEntityTables,
|
|
289
|
+
migrateDropMemorySegmentFts,
|
|
290
|
+
migrateDropConflicts,
|
|
291
|
+
migrateCallSessionInviteMetadata,
|
|
292
|
+
migrateInviteContactId,
|
|
293
|
+
migrateChannelInteractionColumns,
|
|
294
|
+
migrateDropContactInteractionColumns,
|
|
295
|
+
migrateDropLoopbackPortColumn,
|
|
296
|
+
migrateDropOrphanedMediaTables,
|
|
297
|
+
migrateGuardianTimestampsEpochMs,
|
|
298
|
+
migrateRenameInboxThreadStateTable,
|
|
299
|
+
migrateRenameConversationTypeColumn,
|
|
300
|
+
migrateRenameNotificationThreadColumns,
|
|
301
|
+
migrateRenameFollowupsThreadIdColumn,
|
|
302
|
+
migrateRenameSequenceEnrollmentsThreadIdColumn,
|
|
303
|
+
migrateRenameSequenceStepsReplyKey,
|
|
304
|
+
migrateRenameGmailProviderKeyToGoogle,
|
|
305
|
+
migrateCreateThreadStartersTable,
|
|
306
|
+
migrateCapabilityCardColumns,
|
|
307
|
+
migrateRenameCreatedBySessionIdColumns,
|
|
308
|
+
migrateRenameSourceSessionIdColumn,
|
|
309
|
+
migrateRenameThreadStartersTable,
|
|
310
|
+
migrateRenameThreadStartersCheckpoints,
|
|
311
|
+
createLifecycleEventsTable,
|
|
312
|
+
migrateDropCapabilityCardState,
|
|
313
|
+
migrateCreateTraceEventsTable,
|
|
314
|
+
migrateOAuthProvidersManagedServiceConfigKey,
|
|
315
|
+
migrateOAuthProvidersDisplayMetadata,
|
|
316
|
+
migrateLlmRequestLogMessageId,
|
|
317
|
+
migrateLlmRequestLogProvider,
|
|
318
|
+
migrateBackfillInlineAttachmentsToDisk,
|
|
319
|
+
migrateConversationForkLineage,
|
|
320
|
+
migrateScheduleQuietFlag,
|
|
321
|
+
migrateDropSimplifiedMemory,
|
|
322
|
+
migrateCallSessionSkipDisclosure,
|
|
323
|
+
migrateBackfillAudioAttachmentMimeTypes,
|
|
324
|
+
migrateContactsUserFileColumn,
|
|
325
|
+
migrateAddSourceTypeColumns,
|
|
326
|
+
migrateCreateMemoryRecallLogs,
|
|
327
|
+
migrateOAuthProvidersPingConfig,
|
|
328
|
+
migrateStripIntegrationPrefixFromProviderKeys,
|
|
329
|
+
migrateMessagesConversationCreatedAtIndex,
|
|
330
|
+
migrateOAuthProvidersBehaviorColumns,
|
|
331
|
+
migrateDropSetupSkillIdColumn,
|
|
332
|
+
migrateGuardianRequestEnrichmentColumns,
|
|
333
|
+
migrateUsageLlmCallCount,
|
|
334
|
+
migrateOAuthProvidersFeatureFlag,
|
|
335
|
+
migrateDropCallbackTransportColumn,
|
|
336
|
+
migrateCreateMemoryGraphTables,
|
|
337
|
+
// 101a. Add nullable image_refs column — must run before migrateToolCreatedItems
|
|
338
|
+
// which inserts rows into memory_graph_nodes including the image_refs column.
|
|
339
|
+
migrateMemoryGraphImageRefs,
|
|
340
|
+
// 101b. Migrate tool-created items from legacy memory_items → graph nodes.
|
|
341
|
+
// Must run before migrateDropMemoryItemsTables so data is preserved.
|
|
342
|
+
function migrateToolCreatedItemsStep() {
|
|
343
|
+
migrateToolCreatedItems();
|
|
344
|
+
},
|
|
345
|
+
migrateDropMemoryItemsTables,
|
|
346
|
+
migrateRenameMemoryGraphTypeValues,
|
|
347
|
+
migrateCreateMemoryGraphNodeEdits,
|
|
348
|
+
migrateScrubCorruptedImageAttachments,
|
|
349
|
+
migrateCreateConversationGraphMemoryState,
|
|
350
|
+
migrateConversationsLastMessageAt,
|
|
351
|
+
migrateStripThinkingFromConsolidated,
|
|
352
|
+
migrateScheduleReuseConversation,
|
|
353
|
+
migrateMemoryRecallLogsQueryContext,
|
|
354
|
+
migrateLlmRequestLogsCreatedAtIndex,
|
|
355
|
+
];
|
|
356
|
+
|
|
357
|
+
// Run each migration step, catching and logging individual failures so one
|
|
358
|
+
// broken migration doesn't prevent independent later ones from succeeding.
|
|
359
|
+
const failures: string[] = [];
|
|
360
|
+
for (const step of migrationSteps) {
|
|
361
|
+
try {
|
|
362
|
+
log.debug({ migration: step.name }, `Starting migration: ${step.name}`);
|
|
363
|
+
step(database);
|
|
364
|
+
log.debug({ migration: step.name }, `Migration succeeded: ${step.name}`);
|
|
365
|
+
} catch (err) {
|
|
366
|
+
failures.push(step.name);
|
|
367
|
+
log.error(
|
|
368
|
+
{ err, migration: step.name },
|
|
369
|
+
`Migration failed: ${step.name}`,
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
547
373
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
374
|
+
if (failures.length > 0) {
|
|
375
|
+
log.error(
|
|
376
|
+
{ failedMigrations: failures, count: failures.length },
|
|
377
|
+
`DB initialization completed with ${failures.length} failed migration(s)`,
|
|
378
|
+
);
|
|
379
|
+
}
|
|
551
380
|
|
|
552
|
-
|
|
381
|
+
try {
|
|
382
|
+
validateMigrationState(database);
|
|
383
|
+
} catch (err) {
|
|
384
|
+
log.error({ err }, "validateMigrationState failed");
|
|
385
|
+
}
|
|
553
386
|
|
|
554
387
|
if (process.env.BUN_TEST === "1") {
|
|
555
388
|
saveTemplate();
|