@vellumai/assistant 0.6.0 → 0.6.2
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 +68 -15
- package/Dockerfile +2 -2
- package/bun.lock +6 -2
- package/docker-entrypoint.sh +42 -1
- package/docs/architecture/integrations.md +1 -1
- package/docs/architecture/memory.md +21 -24
- package/node_modules/@vellumai/ces-contracts/src/handles.ts +7 -9
- package/openapi.yaml +539 -4
- package/package.json +5 -1
- package/src/__tests__/anthropic-provider.test.ts +160 -95
- 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-event-hub.test.ts +30 -0
- package/src/__tests__/checker.test.ts +138 -172
- package/src/__tests__/cli-command-risk-guard.test.ts +1 -1
- package/src/__tests__/config-schema.test.ts +5 -0
- package/src/__tests__/context-overflow-approval.test.ts +5 -5
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +4 -6
- package/src/__tests__/conversation-agent-loop.test.ts +4 -51
- package/src/__tests__/conversation-analysis-routes.test.ts +169 -0
- package/src/__tests__/conversation-directories-parse.test.ts +105 -0
- package/src/__tests__/conversation-history-web-search.test.ts +1 -1
- package/src/__tests__/conversation-runtime-assembly.test.ts +653 -832
- package/src/__tests__/conversation-runtime-workspace.test.ts +1 -93
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +17 -4
- package/src/__tests__/conversation-wipe.test.ts +2 -6
- 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-approval-bridge.test.ts +0 -2
- 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__/heartbeat-service.test.ts +180 -3
- package/src/__tests__/identity-routes.test.ts +328 -0
- package/src/__tests__/init-feature-flag-overrides.test.ts +167 -0
- package/src/__tests__/injection-block.test.ts +24 -0
- package/src/__tests__/inline-command-runner.test.ts +7 -5
- package/src/__tests__/install-skill-routing.test.ts +7 -6
- package/src/__tests__/jobs-store-qdrant-breaker.test.ts +15 -14
- 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 +101 -0
- package/src/__tests__/llm-request-log-turn-query.test.ts +162 -0
- package/src/__tests__/log-export-workspace.test.ts +257 -100
- package/src/__tests__/managed-credential-catalog-cli.test.ts +12 -14
- package/src/__tests__/mcp-abort-signal.test.ts +5 -0
- package/src/__tests__/mcp-client-auth.test.ts +5 -0
- package/src/__tests__/memory-recall-log-store.test.ts +132 -0
- 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__/navigate-settings-tab.test.ts +14 -1
- package/src/__tests__/notification-broadcaster.test.ts +65 -0
- package/src/__tests__/notification-decision-recipient-context.test.ts +282 -0
- package/src/__tests__/onboarding-template-contract.test.ts +63 -14
- 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__/pkb-autoinject.test.ts +96 -0
- package/src/__tests__/platform-bash-auto-approve.test.ts +359 -0
- package/src/__tests__/profiler-routes.test.ts +502 -0
- package/src/__tests__/profiler-run-store.test.ts +441 -0
- package/src/__tests__/proxy-approval-callback.test.ts +4 -75
- package/src/__tests__/registry.test.ts +1 -1
- package/src/__tests__/require-fresh-approval.test.ts +0 -2
- package/src/__tests__/sandbox-diagnostics.test.ts +1 -32
- package/src/__tests__/sandbox-host-parity.test.ts +5 -4
- package/src/__tests__/scheduler-reuse-conversation.test.ts +368 -0
- package/src/__tests__/scrub-corrupted-image-attachments.test.ts +278 -0
- package/src/__tests__/search-skills-unified.test.ts +4 -3
- package/src/__tests__/send-endpoint-busy.test.ts +42 -3
- package/src/__tests__/set-permission-mode.test.ts +274 -0
- package/src/__tests__/skill-load-feature-flag.test.ts +12 -0
- package/src/__tests__/skill-memory.test.ts +2 -783
- 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-memory-cleanup.test.ts +12 -12
- package/src/__tests__/terminal-sandbox.test.ts +1 -1
- package/src/__tests__/terminal-tools.test.ts +16 -29
- package/src/__tests__/test-preload.ts +18 -0
- package/src/__tests__/tool-domain-event-publisher.test.ts +0 -1
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +1 -8
- package/src/__tests__/tool-executor.test.ts +4 -27
- package/src/__tests__/tool-side-effects-slack-dm.test.ts +1 -0
- package/src/__tests__/top-level-renderer.test.ts +10 -13
- package/src/__tests__/transport-hints-queue.test.ts +77 -0
- package/src/__tests__/trust-store.test.ts +4 -4
- package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +116 -2
- package/src/__tests__/workspace-migration-028-recover-conversations-from-disk-view.test.ts +387 -0
- package/src/__tests__/workspace-migration-030-seed-pkb-autoinject.test.ts +168 -0
- package/src/__tests__/workspace-policy.test.ts +2 -7
- package/src/agent/loop.ts +6 -29
- package/src/approvals/guardian-request-resolvers.ts +24 -0
- package/src/avatar/traits-png-sync.ts +3 -3
- package/src/channels/types.ts +5 -0
- package/src/cli/__tests__/run-assistant-command.ts +56 -0
- package/src/cli/__tests__/unknown-command.test.ts +33 -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/conversations.ts +1 -8
- package/src/cli/commands/default-action.ts +68 -1
- package/src/cli/commands/email.ts +584 -835
- package/src/cli/commands/memory.ts +1 -34
- package/src/cli/commands/notifications.ts +7 -2
- package/src/cli/commands/oauth/__tests__/connect.test.ts +27 -0
- package/src/cli/commands/oauth/connect.ts +25 -5
- 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 +1 -1
- package/src/cli/commands/routes.ts +396 -0
- package/src/cli/commands/skills.ts +130 -20
- package/src/cli/program.ts +11 -2
- package/src/cli.ts +1 -120
- package/src/config/assistant-feature-flags.ts +59 -55
- package/src/config/bundled-skills/app-builder/SKILL.md +91 -5
- package/src/config/bundled-skills/gmail/SKILL.md +13 -8
- package/src/config/bundled-skills/gmail/TOOLS.json +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-sender-digest.ts +2 -1
- package/src/config/bundled-skills/messaging/SKILL.md +7 -0
- 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.json +1 -1
- 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/settings/tools/navigate-settings-tab.ts +8 -3
- package/src/config/bundled-skills/slack/SKILL.md +2 -0
- package/src/config/bundled-skills/subagent/SKILL.md +43 -3
- package/src/config/bundled-skills/subagent/TOOLS.json +29 -4
- package/src/config/env-registry.ts +63 -0
- package/src/config/feature-flag-registry.json +17 -1
- 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/security.ts +14 -0
- package/src/config/schemas/services.ts +8 -0
- package/src/credential-execution/approval-bridge.ts +0 -1
- package/src/credential-execution/managed-catalog.ts +3 -7
- package/src/daemon/app-source-watcher.ts +93 -0
- package/src/daemon/config-watcher.ts +85 -3
- package/src/daemon/context-overflow-approval.ts +0 -1
- package/src/daemon/conversation-agent-loop-handlers.ts +20 -0
- package/src/daemon/conversation-agent-loop.ts +179 -65
- package/src/daemon/conversation-attachments.ts +0 -1
- package/src/daemon/conversation-history.ts +4 -19
- package/src/daemon/conversation-lifecycle.ts +8 -14
- package/src/daemon/conversation-messaging.ts +3 -0
- package/src/daemon/conversation-process.ts +30 -8
- package/src/daemon/conversation-queue-manager.ts +8 -0
- package/src/daemon/conversation-runtime-assembly.ts +359 -308
- package/src/daemon/conversation-surfaces.ts +65 -0
- package/src/daemon/conversation-tool-setup.ts +44 -17
- package/src/daemon/conversation-workspace.ts +1 -2
- package/src/daemon/conversation.ts +19 -3
- package/src/daemon/date-context.ts +26 -53
- package/src/daemon/first-greeting.ts +1 -1
- package/src/daemon/handlers/conversations.ts +5 -7
- package/src/daemon/handlers/shared.test.ts +143 -0
- package/src/daemon/handlers/shared.ts +70 -5
- package/src/daemon/handlers/skills.ts +11 -18
- package/src/daemon/lifecycle.ts +220 -158
- package/src/daemon/message-types/conversations.ts +29 -6
- package/src/daemon/message-types/messages.ts +9 -2
- package/src/daemon/message-types/notifications.ts +12 -0
- package/src/daemon/message-types/schedules.ts +1 -0
- package/src/daemon/message-types/settings.ts +18 -0
- package/src/daemon/profiler-run-store.ts +557 -0
- package/src/daemon/server.ts +87 -10
- package/src/daemon/shutdown-handlers.ts +5 -0
- package/src/daemon/tool-side-effects.ts +23 -3
- package/src/daemon/transport-hints.ts +33 -0
- package/src/export/transcript-formatter.ts +148 -0
- package/src/filing/filing-service.ts +228 -0
- package/src/heartbeat/heartbeat-service.ts +96 -7
- package/src/index.ts +1 -1
- package/src/mcp/client.ts +6 -0
- package/src/mcp/mcp-oauth-provider.ts +149 -27
- package/src/memory/admin.ts +33 -32
- package/src/memory/app-store.ts +69 -0
- package/src/memory/conversation-bootstrap.ts +1 -1
- package/src/memory/conversation-crud.ts +151 -117
- package/src/memory/conversation-directories.ts +39 -0
- package/src/memory/conversation-group-migration.ts +66 -6
- package/src/memory/conversation-queries.ts +58 -12
- package/src/memory/conversation-title-service.ts +1 -0
- package/src/memory/db-init.ts +182 -376
- package/src/memory/embedding-local.ts +1 -1
- package/src/memory/graph/bootstrap.ts +75 -66
- package/src/memory/graph/capability-seed.ts +167 -17
- package/src/memory/graph/consolidation.ts +38 -4
- package/src/memory/graph/conversation-graph-memory.ts +133 -104
- package/src/memory/graph/extraction-job.ts +9 -4
- package/src/memory/graph/extraction.ts +66 -23
- package/src/memory/graph/graph-memory-state-store.ts +37 -0
- package/src/memory/graph/graph-search.ts +29 -15
- package/src/memory/graph/injection.ts +38 -8
- package/src/memory/graph/inspect.ts +12 -3
- package/src/memory/graph/retriever.ts +365 -262
- package/src/memory/graph/store.test.ts +48 -0
- package/src/memory/graph/store.ts +150 -11
- package/src/memory/graph/tool-handlers.ts +84 -209
- package/src/memory/graph/tools.ts +8 -52
- package/src/memory/graph/types.ts +24 -0
- package/src/memory/group-crud.ts +25 -9
- package/src/memory/job-handlers/cleanup.ts +44 -1
- package/src/memory/jobs-store.ts +70 -60
- package/src/memory/jobs-worker.ts +44 -28
- package/src/memory/llm-request-log-store.ts +96 -12
- package/src/memory/memory-recall-log-store.ts +49 -5
- package/src/memory/migrations/203-drop-memory-items-tables.ts +33 -1
- 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 +8 -0
- package/src/memory/migrations/registry.ts +8 -0
- package/src/memory/schema/conversations.ts +14 -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 +15 -0
- package/src/memory/task-memory-cleanup.ts +30 -11
- package/src/messaging/provider.ts +1 -1
- package/src/notifications/broadcaster.ts +6 -0
- package/src/notifications/conversation-pairing.ts +12 -4
- package/src/notifications/copy-composer.ts +86 -0
- package/src/notifications/decision-engine.ts +35 -0
- package/src/notifications/emit-signal.ts +14 -0
- package/src/notifications/signal.ts +11 -0
- package/src/oauth/platform-connection.test.ts +2 -2
- package/src/oauth/seed-providers.ts +1 -0
- package/src/permissions/checker.ts +15 -4
- package/src/permissions/defaults.ts +7 -8
- package/src/permissions/permission-mode-store.ts +180 -0
- package/src/permissions/permission-mode.ts +31 -0
- package/src/permissions/prompter.ts +0 -2
- package/src/permissions/workspace-policy.ts +9 -0
- package/src/platform/client.ts +1 -1
- package/src/prompts/system-prompt.ts +59 -7
- package/src/prompts/templates/BOOTSTRAP-REFERENCE.md +100 -0
- package/src/prompts/templates/BOOTSTRAP.md +76 -162
- package/src/prompts/templates/HEARTBEAT.md +3 -1
- package/src/prompts/templates/SOUL.md +30 -9
- package/src/prompts/templates/UPDATES.md +8 -0
- package/src/providers/anthropic/client.ts +107 -219
- package/src/runtime/assistant-event-hub.ts +22 -0
- package/src/runtime/auth/route-policy.ts +23 -0
- package/src/runtime/auth/token-service.ts +8 -0
- package/src/runtime/http-server.ts +32 -2
- package/src/runtime/http-types.ts +12 -1
- 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/avatar-routes.ts +2 -9
- package/src/runtime/routes/btw-routes.ts +14 -1
- package/src/runtime/routes/conversation-analysis-routes.ts +185 -0
- package/src/runtime/routes/conversation-management-routes.ts +1 -14
- package/src/runtime/routes/conversation-query-routes.ts +49 -3
- package/src/runtime/routes/conversation-routes.ts +270 -44
- package/src/runtime/routes/group-routes.ts +22 -8
- package/src/runtime/routes/heartbeat-routes.ts +4 -10
- package/src/runtime/routes/identity-routes.ts +53 -18
- package/src/runtime/routes/llm-context-normalization.ts +14 -10
- package/src/runtime/routes/log-export/AGENTS.md +104 -0
- package/src/runtime/routes/log-export/__tests__/workspace-allowlist-error-contract.test.ts +103 -0
- package/src/runtime/routes/log-export/__tests__/workspace-allowlist.test.ts +716 -0
- package/src/runtime/routes/log-export/workspace-allowlist.ts +458 -0
- package/src/runtime/routes/log-export-routes.ts +41 -278
- package/src/runtime/routes/memory-item-routes.test.ts +168 -233
- 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 +27 -12
- package/src/runtime/routes/settings-routes.ts +95 -8
- 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/workspace-routes.ts +0 -1
- package/src/schedule/schedule-store.ts +30 -0
- package/src/schedule/scheduler.ts +45 -18
- package/src/skills/catalog-install.ts +10 -2
- package/src/skills/inline-command-runner.ts +12 -14
- package/src/skills/managed-store.ts +2 -2
- package/src/skills/skill-memory.ts +1 -293
- 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 +4 -4
- package/src/tools/apps/executors.ts +29 -4
- package/src/tools/filesystem/list.ts +93 -0
- package/src/tools/permission-checker.ts +78 -18
- 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/secret-detection-handler.ts +0 -1
- 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/types.ts +17 -0
- package/src/tools/shared/shell-output.ts +31 -2
- package/src/tools/skills/sandbox-runner.ts +3 -6
- 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 +16 -1
- package/src/tools/terminal/sandbox-diagnostics.ts +4 -4
- package/src/tools/terminal/sandbox.ts +4 -1
- package/src/tools/terminal/shell.ts +3 -5
- package/src/tools/tool-manifest.ts +6 -0
- package/src/tools/types.ts +2 -3
- package/src/util/logger.ts +1 -1
- package/src/util/platform.ts +50 -17
- package/src/watcher/provider-types.ts +1 -1
- 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/028-recover-conversations-from-disk-view.ts +270 -0
- package/src/workspace/migrations/029-seed-pkb.ts +85 -0
- package/src/workspace/migrations/030-seed-pkb-autoinject.ts +73 -0
- package/src/workspace/migrations/registry.ts +6 -0
- package/src/workspace/top-level-renderer.ts +5 -9
- package/src/__tests__/cli-memory.test.ts +0 -377
- package/src/__tests__/clipboard.test.ts +0 -88
- package/src/cli/cli-memory.ts +0 -179
- package/src/util/clipboard.ts +0 -34
package/src/memory/db-init.ts
CHANGED
|
@@ -9,6 +9,7 @@ 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";
|
|
14
15
|
import { migrateToolCreatedItems } from "./graph/bootstrap.js";
|
|
@@ -57,7 +58,10 @@ import {
|
|
|
57
58
|
migrateContactsRolePrincipal,
|
|
58
59
|
migrateContactsUserFileColumn,
|
|
59
60
|
migrateConversationForkLineage,
|
|
61
|
+
migrateConversationsLastMessageAt,
|
|
60
62
|
migrateConversationsThreadTypeIndex,
|
|
63
|
+
migrateCreateConversationGraphMemoryState,
|
|
64
|
+
migrateCreateMemoryGraphNodeEdits,
|
|
61
65
|
migrateCreateMemoryGraphTables,
|
|
62
66
|
migrateCreateMemoryRecallLogs,
|
|
63
67
|
migrateCreateThreadStartersTable,
|
|
@@ -94,8 +98,10 @@ import {
|
|
|
94
98
|
migrateInviteContactId,
|
|
95
99
|
migrateLlmRequestLogMessageId,
|
|
96
100
|
migrateLlmRequestLogProvider,
|
|
101
|
+
migrateLlmRequestLogsCreatedAtIndex,
|
|
97
102
|
migrateMemoryGraphImageRefs,
|
|
98
103
|
migrateMemoryItemSupersession,
|
|
104
|
+
migrateMemoryRecallLogsQueryContext,
|
|
99
105
|
migrateMessagesConversationCreatedAtIndex,
|
|
100
106
|
migrateMessagesFtsBackfill,
|
|
101
107
|
migrateNormalizePhoneIdentities,
|
|
@@ -127,8 +133,11 @@ import {
|
|
|
127
133
|
migrateRenameVoiceToPhone,
|
|
128
134
|
migrateScheduleOneShotRouting,
|
|
129
135
|
migrateScheduleQuietFlag,
|
|
136
|
+
migrateScheduleReuseConversation,
|
|
130
137
|
migrateSchemaIndexesAndColumns,
|
|
138
|
+
migrateScrubCorruptedImageAttachments,
|
|
131
139
|
migrateStripIntegrationPrefixFromProviderKeys,
|
|
140
|
+
migrateStripThinkingFromConsolidated,
|
|
132
141
|
migrateUsageDashboardIndexes,
|
|
133
142
|
migrateUsageLlmCallCount,
|
|
134
143
|
migrateVoiceInviteColumns,
|
|
@@ -163,7 +172,7 @@ function getTemplateDbPath(): string {
|
|
|
163
172
|
}
|
|
164
173
|
return join(
|
|
165
174
|
tmpdir(),
|
|
166
|
-
`vellum-test-db-template-${hash.digest("hex").slice(0, 12)}.db
|
|
175
|
+
`vellum-test-db-template-${hash.digest("hex").slice(0, 12)}.db`,
|
|
167
176
|
);
|
|
168
177
|
}
|
|
169
178
|
|
|
@@ -198,385 +207,182 @@ export function initializeDb(): void {
|
|
|
198
207
|
return;
|
|
199
208
|
}
|
|
200
209
|
|
|
210
|
+
const log = getLogger("db-init");
|
|
201
211
|
const database = getDb();
|
|
202
212
|
|
|
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
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
// 39. Backfill contact interaction stats from channel lastSeenAt
|
|
365
|
-
migrateBackfillContactInteractionStats(database);
|
|
366
|
-
|
|
367
|
-
// 40. Drop assistant_id columns from all 16 daemon tables
|
|
368
|
-
migrateDropAssistantIdColumns(database);
|
|
369
|
-
|
|
370
|
-
// 41. Indexes on llm_usage_events for usage dashboard time-range and breakdown queries
|
|
371
|
-
migrateUsageDashboardIndexes(database);
|
|
372
|
-
|
|
373
|
-
// 42. (skipped) migrateReorderUsageDashboardIndexes — superseded by 43 which drops
|
|
374
|
-
// all composite indexes that 42 would create, so running it is wasted work.
|
|
375
|
-
|
|
376
|
-
// 43. Drop all composite usage indexes — they don't eliminate temp B-trees for GROUP BY
|
|
377
|
-
migrateDropUsageCompositeIndexes(database);
|
|
378
|
-
|
|
379
|
-
// 44. Backfill historical Anthropic usage rows from request-log truth before dashboard reads
|
|
380
|
-
migrateBackfillUsageCacheAccounting(database);
|
|
381
|
-
|
|
382
|
-
// 45. Rename channel_guardian_verification_challenges → channel_verification_sessions
|
|
383
|
-
migrateRenameVerificationTable(database);
|
|
384
|
-
|
|
385
|
-
// 46. Rename guardian_verification_session_id → verification_session_id in call_sessions
|
|
386
|
-
migrateRenameVerificationSessionIdColumn(database);
|
|
387
|
-
|
|
388
|
-
// 47. Rename persisted guardian_verification call_mode and event_type values
|
|
389
|
-
migrateRenameGuardianVerificationValues(database);
|
|
390
|
-
|
|
391
|
-
// 48. Rename stored "voice" channel values to "phone" across all channel text columns
|
|
392
|
-
migrateRenameVoiceToPhone(database);
|
|
393
|
-
|
|
394
|
-
// 49. Drop the unused legacy accounts table after removing account_manage
|
|
395
|
-
migrateDropAccountsTable(database);
|
|
396
|
-
|
|
397
|
-
// 50. Extend cron_jobs table with one-shot and routing support
|
|
398
|
-
migrateScheduleOneShotRouting(database);
|
|
399
|
-
|
|
400
|
-
// 51. Migrate existing reminders into cron_jobs as one-shot schedules
|
|
401
|
-
migrateRemindersToSchedules(database);
|
|
402
|
-
|
|
403
|
-
// 52. Drop the legacy reminders table after data migration
|
|
404
|
-
migrateDropRemindersTable(database);
|
|
405
|
-
|
|
406
|
-
// 53. OAuth provider/app/connection tables
|
|
407
|
-
createOAuthTables(database);
|
|
408
|
-
|
|
409
|
-
// 54. Add explicit client_secret_credential_path to oauth_apps
|
|
410
|
-
migrateOAuthAppsClientSecretPath(database);
|
|
411
|
-
|
|
412
|
-
// 55. Add ping_url column to oauth_providers
|
|
413
|
-
migrateOAuthProvidersPingUrl(database);
|
|
414
|
-
|
|
415
|
-
// 56. Add supersession tracking columns and override confidence to memory_items
|
|
416
|
-
migrateMemoryItemSupersession(database);
|
|
417
|
-
|
|
418
|
-
// 56b. Drop unused entity tables (entity search replaced by hybrid search on item statements)
|
|
419
|
-
migrateDropEntityTables(database);
|
|
420
|
-
|
|
421
|
-
// 57. Drop memory_segment_fts virtual table and triggers (replaced by Qdrant hybrid search)
|
|
422
|
-
migrateDropMemorySegmentFts(database);
|
|
423
|
-
|
|
424
|
-
// 58. Drop memory_item_conflicts table (conflict resolution system removed)
|
|
425
|
-
migrateDropConflicts(database);
|
|
426
|
-
|
|
427
|
-
// 59. Add invite metadata columns to call_sessions for outbound invite call routing
|
|
428
|
-
migrateCallSessionInviteMetadata(database);
|
|
429
|
-
|
|
430
|
-
// 60. Add required contact_id to assistant_ingress_invites and clean up legacy rows
|
|
431
|
-
migrateInviteContactId(database);
|
|
432
|
-
|
|
433
|
-
// 61. Add interaction_count and last_interaction columns to contact_channels
|
|
434
|
-
migrateChannelInteractionColumns(database);
|
|
435
|
-
|
|
436
|
-
// 62. Drop interaction_count and last_interaction columns from contacts (now derived from channels)
|
|
437
|
-
migrateDropContactInteractionColumns(database);
|
|
438
|
-
|
|
439
|
-
// 63. Drop loopback_port column from oauth_providers (moved to code-side behavior registry)
|
|
440
|
-
migrateDropLoopbackPortColumn(database);
|
|
441
|
-
|
|
442
|
-
// 64. Drop orphaned media tables (CREATE TABLE removed in #16739, clean up existing databases)
|
|
443
|
-
migrateDropOrphanedMediaTables(database);
|
|
444
|
-
|
|
445
|
-
// 65. Convert guardian timestamps from ISO 8601 text to epoch ms integers
|
|
446
|
-
migrateGuardianTimestampsEpochMs(database);
|
|
447
|
-
|
|
448
|
-
// 66. Rename assistant_inbox_thread_state → assistant_inbox_conversation_state
|
|
449
|
-
migrateRenameInboxThreadStateTable(database);
|
|
450
|
-
|
|
451
|
-
// 67. Rename thread_type → conversation_type in conversations table
|
|
452
|
-
migrateRenameConversationTypeColumn(database);
|
|
453
|
-
|
|
454
|
-
// 68. Rename notification_deliveries thread columns → conversation columns
|
|
455
|
-
migrateRenameNotificationThreadColumns(database);
|
|
456
|
-
|
|
457
|
-
// 69. Rename followups.thread_id → conversation_id
|
|
458
|
-
migrateRenameFollowupsThreadIdColumn(database);
|
|
459
|
-
|
|
460
|
-
// 70. Rename sequence_enrollments.thread_id → conversation_id
|
|
461
|
-
migrateRenameSequenceEnrollmentsThreadIdColumn(database);
|
|
462
|
-
|
|
463
|
-
// 71. Rename replyToThread → replyInSameConversation in sequence steps JSON blobs
|
|
464
|
-
migrateRenameSequenceStepsReplyKey(database);
|
|
465
|
-
|
|
466
|
-
// 72. Rename integration:gmail → integration:google across OAuth tables
|
|
467
|
-
migrateRenameGmailProviderKeyToGoogle(database);
|
|
468
|
-
|
|
469
|
-
// 73. Create thread_starters table for personalized empty-thread suggestions (renamed in migration 77)
|
|
470
|
-
migrateCreateThreadStartersTable(database);
|
|
471
|
-
|
|
472
|
-
// 74. Add capability card columns to thread_starters + category relevance table
|
|
473
|
-
migrateCapabilityCardColumns(database);
|
|
474
|
-
|
|
475
|
-
// 75. Rename created_by_session_id → source_conversation_id in verification sessions and invites
|
|
476
|
-
migrateRenameCreatedBySessionIdColumns(database);
|
|
477
|
-
|
|
478
|
-
// 76. Rename source_session_id → source_context_id in notification_events
|
|
479
|
-
migrateRenameSourceSessionIdColumn(database);
|
|
480
|
-
|
|
481
|
-
// 77. Rename thread_starters → conversation_starters table and indexes
|
|
482
|
-
migrateRenameThreadStartersTable(database);
|
|
483
|
-
|
|
484
|
-
// 77b. Rename checkpoint keys from thread_starters: → conversation_starters: prefix
|
|
485
|
-
migrateRenameThreadStartersCheckpoints(database);
|
|
486
|
-
|
|
487
|
-
// 78. Lifecycle events table for app_open / hatch telemetry
|
|
488
|
-
createLifecycleEventsTable(database);
|
|
489
|
-
|
|
490
|
-
// 79. Remove deleted capability-card state while keeping conversation starter chips
|
|
491
|
-
migrateDropCapabilityCardState(database);
|
|
492
|
-
|
|
493
|
-
// 80. Trace events table for persistent trace/activity storage across sessions
|
|
494
|
-
migrateCreateTraceEventsTable(database);
|
|
495
|
-
|
|
496
|
-
// 81. Add managed_service_config_key column to oauth_providers
|
|
497
|
-
migrateOAuthProvidersManagedServiceConfigKey(database);
|
|
498
|
-
|
|
499
|
-
// 81b. Add display metadata columns to oauth_providers (display_name, description, dashboard_url, etc.)
|
|
500
|
-
migrateOAuthProvidersDisplayMetadata(database);
|
|
501
|
-
|
|
502
|
-
// 82. Add message_id column to llm_request_logs for per-message LLM context lookup
|
|
503
|
-
migrateLlmRequestLogMessageId(database);
|
|
504
|
-
|
|
505
|
-
// 82b. Add provider column to llm_request_logs for runtime provider lookup
|
|
506
|
-
migrateLlmRequestLogProvider(database);
|
|
507
|
-
|
|
508
|
-
// 83. Backfill existing inline (base64-in-DB) attachments to on-disk storage
|
|
509
|
-
migrateBackfillInlineAttachmentsToDisk(database);
|
|
510
|
-
|
|
511
|
-
// 84. Add nullable conversation fork lineage columns and parent lookup index
|
|
512
|
-
migrateConversationForkLineage(database);
|
|
513
|
-
|
|
514
|
-
// 85. Add quiet flag to schedule jobs
|
|
515
|
-
migrateScheduleQuietFlag(database);
|
|
516
|
-
|
|
517
|
-
// 86. Drop simplified-memory tables and reducer checkpoint columns
|
|
518
|
-
migrateDropSimplifiedMemory(database);
|
|
519
|
-
|
|
520
|
-
// 87. Add skip_disclosure column to call_sessions for per-call disclosure control
|
|
521
|
-
migrateCallSessionSkipDisclosure(database);
|
|
522
|
-
|
|
523
|
-
// 88. Backfill correct MIME types for audio attachments stored as application/octet-stream
|
|
524
|
-
migrateBackfillAudioAttachmentMimeTypes(database);
|
|
525
|
-
|
|
526
|
-
// 89. Add user_file column to contacts for per-user persona file mapping
|
|
527
|
-
migrateContactsUserFileColumn(database);
|
|
528
|
-
|
|
529
|
-
// 90. Add source_type and source_message_role columns to memory_items
|
|
530
|
-
migrateAddSourceTypeColumns(database);
|
|
531
|
-
|
|
532
|
-
// 91. Memory recall logs table for inspector memory tab
|
|
533
|
-
migrateCreateMemoryRecallLogs(database);
|
|
534
|
-
|
|
535
|
-
// 92. Add ping_method, ping_headers, ping_body columns to oauth_providers
|
|
536
|
-
migrateOAuthProvidersPingConfig(database);
|
|
537
|
-
|
|
538
|
-
// 93. Strip `integration:` prefix from provider_key across OAuth tables
|
|
539
|
-
migrateStripIntegrationPrefixFromProviderKeys(database);
|
|
540
|
-
|
|
541
|
-
// 94. Composite index on messages(conversation_id, created_at) for paginated history queries
|
|
542
|
-
migrateMessagesConversationCreatedAtIndex(database);
|
|
543
|
-
|
|
544
|
-
// 95. Add behavioral config columns to oauth_providers (loopback port, injection templates, setup metadata, identity verification)
|
|
545
|
-
migrateOAuthProvidersBehaviorColumns(database);
|
|
546
|
-
|
|
547
|
-
// 96. Drop the setup_skill_id column from oauth_providers (concept removed)
|
|
548
|
-
migrateDropSetupSkillIdColumn(database);
|
|
549
|
-
|
|
550
|
-
// 97. Add enrichment columns to canonical_guardian_requests for guardian approval UX
|
|
551
|
-
migrateGuardianRequestEnrichmentColumns(database);
|
|
552
|
-
|
|
553
|
-
// 98. Add llm_call_count column to llm_usage_events for accurate LLM call counting
|
|
554
|
-
migrateUsageLlmCallCount(database);
|
|
555
|
-
|
|
556
|
-
// 99. Add feature_flag column to oauth_providers for feature-flag gating
|
|
557
|
-
migrateOAuthProvidersFeatureFlag(database);
|
|
558
|
-
|
|
559
|
-
// 100. Drop the vestigial callback_transport column from oauth_providers
|
|
560
|
-
// (transport is now chosen per-flow via the callbackTransport option, not per-provider)
|
|
561
|
-
migrateDropCallbackTransportColumn(database);
|
|
562
|
-
|
|
563
|
-
// 101. Memory graph tables (nodes, edges, triggers)
|
|
564
|
-
migrateCreateMemoryGraphTables(database);
|
|
565
|
-
|
|
566
|
-
// 101b. Migrate tool-created items from legacy memory_items → graph nodes
|
|
567
|
-
// MUST run before migration 102 drops memory_items so data is preserved.
|
|
568
|
-
migrateToolCreatedItems();
|
|
569
|
-
|
|
570
|
-
// 102. Drop legacy memory_items and memory_item_sources tables (migrated to memory_graph_nodes)
|
|
571
|
-
migrateDropMemoryItemsTables(database);
|
|
572
|
-
|
|
573
|
-
// 103. Rename legacy memory graph node type values: style → behavioral, relationship → semantic
|
|
574
|
-
migrateRenameMemoryGraphTypeValues(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
|
+
}
|
|
575
373
|
|
|
576
|
-
|
|
577
|
-
|
|
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
|
+
}
|
|
578
380
|
|
|
579
|
-
|
|
381
|
+
try {
|
|
382
|
+
validateMigrationState(database);
|
|
383
|
+
} catch (err) {
|
|
384
|
+
log.error({ err }, "validateMigrationState failed");
|
|
385
|
+
}
|
|
580
386
|
|
|
581
387
|
if (process.env.BUN_TEST === "1") {
|
|
582
388
|
saveTemplate();
|
|
@@ -205,7 +205,7 @@ export class LocalEmbeddingBackend implements EmbeddingBackend {
|
|
|
205
205
|
);
|
|
206
206
|
|
|
207
207
|
const proc = Bun.spawn({
|
|
208
|
-
cmd: [bunPath, workerPath, this.model, modelCacheDir],
|
|
208
|
+
cmd: [bunPath, "--smol", workerPath, this.model, modelCacheDir],
|
|
209
209
|
stdin: "pipe",
|
|
210
210
|
stdout: "pipe",
|
|
211
211
|
stderr: "pipe",
|