@vellumai/assistant 0.10.2-dev.202606250318.5e7cfb0 → 0.10.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/bun.lock +0 -20
- package/docs/workspace-tools.md +33 -42
- package/eslint-rules/cli-no-daemon-internals.js +0 -6
- package/node_modules/@vellumai/gateway-client/src/__tests__/trust-verdict-contract.test.ts +0 -31
- package/node_modules/@vellumai/gateway-client/src/gateway-ipc-contracts.ts +0 -44
- package/node_modules/@vellumai/gateway-client/src/index.ts +0 -14
- package/node_modules/@vellumai/gateway-client/src/trust-verdict-contract.ts +0 -17
- package/node_modules/@vellumai/service-contracts/package.json +0 -1
- package/node_modules/@vellumai/service-contracts/src/index.ts +0 -1
- package/openapi.yaml +0 -155
- package/package.json +1 -4
- package/scripts/test.sh +15 -36
- package/src/__tests__/actor-token-service.test.ts +14 -36
- package/src/__tests__/agent-loop-override-profile.test.ts +0 -1
- package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +0 -2
- package/src/__tests__/agent-wake-override-profile.test.ts +0 -2
- package/src/__tests__/annotate-activity-metadata.test.ts +0 -2
- package/src/__tests__/annotate-risk-options.test.ts +0 -2
- package/src/__tests__/approval-cascade.test.ts +0 -2
- package/src/__tests__/assistant-attachments.test.ts +0 -42
- package/src/__tests__/background-workers-disk-pressure.test.ts +0 -2
- package/src/__tests__/btw-routes.test.ts +0 -2
- package/src/__tests__/build-persisted-content.test.ts +0 -2
- package/src/__tests__/call-controller.test.ts +0 -19
- package/src/__tests__/channel-guardian.test.ts +58 -94
- package/src/__tests__/channel-reply-delivery.test.ts +0 -2
- package/src/__tests__/compaction-events.test.ts +0 -2
- package/src/__tests__/compaction.benchmark.test.ts +0 -2
- package/src/__tests__/compactor-call-site-logging.test.ts +0 -2
- package/src/__tests__/compactor-low-watermark-cut.test.ts +0 -2
- package/src/__tests__/compactor-preserved-tail-count.test.ts +0 -2
- package/src/__tests__/compactor-summary-call-truncation.test.ts +0 -2
- package/src/__tests__/compactor-web-search-strip.test.ts +0 -2
- package/src/__tests__/config-loader-backfill.test.ts +10 -123
- package/src/__tests__/config-schema.test.ts +0 -1
- package/src/__tests__/confirmation-request-guardian-bridge.test.ts +29 -31
- package/src/__tests__/contacts-relay-reads.test.ts +15 -13
- package/src/__tests__/conversation-abort-tool-results.test.ts +0 -2
- package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +0 -2
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +0 -2
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +0 -2
- package/src/__tests__/conversation-agent-loop.test.ts +0 -134
- package/src/__tests__/conversation-analysis-routes.test.ts +0 -2
- package/src/__tests__/conversation-app-control-lifecycle.test.ts +0 -2
- package/src/__tests__/conversation-confirmation-signals.test.ts +0 -2
- package/src/__tests__/conversation-history-web-search.test.ts +0 -2
- package/src/__tests__/conversation-load-history-repair.test.ts +0 -2
- package/src/__tests__/conversation-load-history-stripped.test.ts +0 -2
- package/src/__tests__/conversation-pairing.test.ts +0 -2
- package/src/__tests__/conversation-process-app-control-preactivation.test.ts +0 -2
- package/src/__tests__/conversation-process-callsite.test.ts +0 -2
- package/src/__tests__/conversation-provider-retry-repair.test.ts +0 -2
- package/src/__tests__/conversation-queue.test.ts +0 -91
- package/src/__tests__/conversation-routes-guardian-reply.test.ts +0 -14
- package/src/__tests__/conversation-routes-slash-commands.test.ts +0 -14
- package/src/__tests__/conversation-slash-queue.test.ts +0 -2
- package/src/__tests__/conversation-slash-unknown.test.ts +0 -2
- package/src/__tests__/conversation-speed-override.test.ts +0 -2
- package/src/__tests__/conversation-surfaces-task-progress.test.ts +0 -29
- package/src/__tests__/conversation-title-service.test.ts +0 -2
- package/src/__tests__/conversation-tool-setup-attribution.test.ts +0 -47
- package/src/__tests__/conversation-usage.test.ts +0 -2
- package/src/__tests__/conversation-workspace-cache-state.test.ts +0 -2
- package/src/__tests__/conversation-workspace-injection.test.ts +0 -2
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +0 -2
- package/src/__tests__/credential-security-invariants.test.ts +1 -1
- package/src/__tests__/db-migration-rollback.test.ts +171 -205
- package/src/__tests__/db-test-helpers.ts +4 -5
- package/src/__tests__/deterministic-verification-control-plane.test.ts +2 -4
- package/src/__tests__/disk-pressure-guard.test.ts +0 -41
- package/src/__tests__/dm-persistence.test.ts +0 -2
- package/src/__tests__/emit-signal-routing-intent.test.ts +5 -10
- package/src/__tests__/events-dev-bypass-actor.test.ts +1 -7
- package/src/__tests__/exploration-drift-hook.test.ts +2 -3
- package/src/__tests__/filing-service.test.ts +0 -2
- package/src/__tests__/guardian-binding-drift-heal.test.ts +10 -75
- package/src/__tests__/guardian-dispatch.test.ts +1 -95
- package/src/__tests__/guardian-outbound-http.test.ts +0 -13
- package/src/__tests__/heartbeat-disk-pressure.test.ts +0 -2
- package/src/__tests__/heartbeat-service.test.ts +0 -2
- package/src/__tests__/helpers/channel-test-adapter.ts +7 -1
- package/src/__tests__/host-app-control-routes.test.ts +30 -24
- package/src/__tests__/host-bash-routes.test.ts +41 -31
- package/src/__tests__/host-browser-routes.test.ts +32 -26
- package/src/__tests__/host-cu-routes-targeted.test.ts +33 -25
- package/src/__tests__/host-file-routes-targeted.test.ts +52 -40
- package/src/__tests__/host-transfer-routes-targeted.test.ts +43 -31
- package/src/__tests__/http-user-message-parity.test.ts +8 -290
- package/src/__tests__/inbound-invite-redemption.test.ts +0 -28
- package/src/__tests__/inbound-slack-persistence.test.ts +0 -2
- package/src/__tests__/invite-redemption-service.test.ts +0 -198
- package/src/__tests__/llm-context-normalization.test.ts +0 -105
- package/src/__tests__/llm-request-log-error-payload.test.ts +9 -71
- package/src/__tests__/llm-usage-store.test.ts +0 -25
- package/src/__tests__/mcp-health-check.test.ts +1 -2
- package/src/__tests__/media-stream-server-integration.test.ts +0 -127
- package/src/__tests__/memory-retrieval-hook.test.ts +0 -2
- package/src/__tests__/messaging-send-tool.test.ts +0 -2
- package/src/__tests__/migration-import-from-url.test.ts +2 -2
- package/src/__tests__/mtime-cache.test.ts +5 -146
- package/src/__tests__/native-web-search.test.ts +0 -2
- package/src/__tests__/non-member-access-request.test.ts +17 -189
- package/src/__tests__/notification-broadcaster.test.ts +0 -4
- package/src/__tests__/notification-decision-recipient-context.test.ts +32 -33
- package/src/__tests__/notification-deep-link.test.ts +0 -6
- package/src/__tests__/notification-guardian-path.test.ts +0 -19
- package/src/__tests__/openai-provider.test.ts +12 -22
- package/src/__tests__/openai-responses-provider.test.ts +2 -12
- package/src/__tests__/outbound-slack-persistence.test.ts +0 -2
- package/src/__tests__/pending-interactions-resolved-event.test.ts +4 -7
- package/src/__tests__/persistence-secret-redaction.test.ts +0 -2
- package/src/__tests__/plugin-bootstrap.test.ts +73 -3
- package/src/__tests__/plugin-route-contribution.test.ts +17 -4
- package/src/__tests__/plugin-tool-contribution.test.ts +18 -3
- package/src/__tests__/plugin-types.test.ts +2 -0
- package/src/__tests__/process-message-background-slack.test.ts +0 -2
- package/src/__tests__/process-message-display-content.test.ts +0 -2
- package/src/__tests__/provider-error-scenarios.test.ts +4 -5
- package/src/__tests__/provider-usage-tracking.test.ts +0 -39
- package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +0 -2
- package/src/__tests__/registry.test.ts +1 -4
- package/src/__tests__/relay-server.test.ts +25 -694
- package/src/__tests__/runtime-attachment-metadata.test.ts +1 -0
- package/src/__tests__/secret-ingress-http.test.ts +0 -14
- package/src/__tests__/send-endpoint-busy.test.ts +8 -30
- package/src/__tests__/skills.test.ts +0 -44
- package/src/__tests__/slack-inbound-verification.test.ts +2 -47
- package/src/__tests__/stt-hints.test.ts +13 -44
- package/src/__tests__/subagent-detail.test.ts +0 -27
- package/src/__tests__/subagent-disposal.test.ts +0 -65
- package/src/__tests__/subagent-notify-parent.test.ts +0 -2
- package/src/__tests__/subagent-role-registry.test.ts +2 -7
- package/src/__tests__/subagent-spawn-tool-fork.test.ts +0 -2
- package/src/__tests__/subagent-tools.test.ts +0 -2
- package/src/__tests__/suggestion-routes.test.ts +0 -2
- package/src/__tests__/title-generate-hook.test.ts +0 -2
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +0 -2
- package/src/__tests__/tool-executor.test.ts +11 -16
- package/src/__tests__/tool-preview-lifecycle.test.ts +0 -2
- package/src/__tests__/tool-result-metadata-plumbing.test.ts +0 -2
- package/src/__tests__/tool-start-timestamp.test.ts +0 -2
- package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +10 -10
- package/src/__tests__/twilio-routes.test.ts +0 -96
- package/src/__tests__/ui-file-upload-surface.test.ts +0 -86
- package/src/__tests__/verification-control-plane-policy.test.ts +0 -2
- package/src/__tests__/voice-invite-redemption.test.ts +0 -33
- package/src/__tests__/web-search-backend-failure.test.ts +0 -2
- package/src/__tests__/workspace-migration-remove-hooks.test.ts +35 -14
- package/src/__tests__/workspace-tool-loader.test.ts +2 -195
- package/src/__tests__/workspace-tools-watcher-flag.test.ts +70 -0
- package/src/agent/loop.ts +0 -56
- package/src/api/index.ts +1 -19
- package/src/api/responses/llm-request-log-entry.ts +0 -29
- package/src/api/responses/subagent-detail.ts +0 -17
- package/src/api/surfaces.ts +3 -39
- package/src/approvals/guardian-request-resolvers.ts +11 -1
- package/src/calls/__tests__/relay-setup-router.test.ts +4 -262
- package/src/calls/call-domain.ts +3 -3
- package/src/calls/guardian-dispatch.ts +8 -10
- package/src/calls/inbound-trust-reader.ts +1 -17
- package/src/calls/media-stream-server.ts +0 -21
- package/src/calls/relay-server.ts +50 -167
- package/src/calls/relay-setup-router.ts +7 -37
- package/src/calls/relay-verification.ts +4 -4
- package/src/calls/stt-hints.ts +12 -9
- package/src/calls/twilio-routes.ts +4 -14
- package/src/channels/types.ts +20 -10
- package/src/cli/commands/__tests__/cache.test.ts +1 -8
- package/src/cli/commands/cache.ts +181 -194
- package/src/cli/commands/db/__tests__/repair.test.ts +5 -6
- package/src/cli/commands/db/status.ts +1 -37
- package/src/cli/commands/mcp.ts +218 -252
- package/src/cli/commands/memory/index.ts +0 -2
- package/src/cli/commands/plugins.ts +3 -75
- package/src/cli/lib/__tests__/install-from-github.test.ts +0 -102
- package/src/cli/lib/__tests__/list-installed-plugins.test.ts +1 -160
- package/src/cli/lib/list-installed-plugins.ts +1 -179
- package/src/config/__tests__/sync-gated-profiles.test.ts +3 -11
- package/src/config/bundled-skills/contacts/tools/contact-merge.ts +17 -27
- package/src/config/bundled-skills/contacts/tools/contact-search.ts +3 -13
- package/src/config/bundled-skills/subagent/SKILL.md +1 -1
- package/src/config/bundled-skills/subagent/TOOLS.json +1 -1
- package/src/config/feature-flag-registry.json +13 -5
- package/src/config/loader.ts +5 -38
- package/src/config/schemas/__tests__/memory-v3.test.ts +0 -1
- package/src/config/schemas/memory-lifecycle.ts +0 -12
- package/src/config/schemas/memory-v3.ts +0 -7
- package/src/config/schemas/memory.ts +0 -4
- package/src/config/schemas/timeouts.ts +0 -8
- package/src/config/seed-inference-profiles.ts +11 -21
- package/src/config/skills.ts +5 -27
- package/src/config/sync-gated-profiles.ts +13 -12
- package/src/contacts/contacts-write.ts +0 -3
- package/src/daemon/assistant-attachments.ts +4 -27
- package/src/daemon/conversation-agent-loop.ts +0 -28
- package/src/daemon/conversation-process.ts +16 -35
- package/src/daemon/conversation-surfaces.ts +38 -111
- package/src/daemon/conversation-tool-setup.ts +16 -50
- package/src/daemon/conversation.ts +1 -13
- package/src/daemon/disk-pressure-guard.ts +2 -12
- package/src/daemon/event-loop-watchdog.ts +1 -28
- package/src/daemon/external-plugins-bootstrap.ts +34 -4
- package/src/daemon/handlers/__tests__/config-a2a-redeem.test.ts +0 -25
- package/src/daemon/handlers/config-a2a.ts +14 -6
- package/src/daemon/handlers/config-channels.ts +22 -78
- package/src/daemon/handlers/conversations.ts +0 -77
- package/src/daemon/lifecycle.ts +0 -4
- package/src/daemon/mcp-reload-service.ts +0 -10
- package/src/daemon/memory-v2-startup.test.ts +0 -72
- package/src/daemon/memory-v2-startup.ts +19 -87
- package/src/daemon/message-types/conversations.ts +0 -2
- package/src/daemon/message-types/surfaces.ts +12 -12
- package/src/daemon/server.ts +4 -0
- package/src/daemon/shutdown-handlers.ts +0 -20
- package/src/daemon/tool-setup-types.ts +0 -9
- package/src/daemon/workspace-tools-watcher.ts +328 -0
- package/src/ipc/__tests__/clients-list-ipc.test.ts +1 -1
- package/src/ipc/assistant-server.ts +2 -2
- package/src/mcp/__tests__/mcp-auth-orchestrator.test.ts +0 -1
- package/src/mcp/client.ts +1 -15
- package/src/mcp/mcp-auth-orchestrator.ts +1 -6
- package/src/mcp/mcp-oauth-provider.ts +8 -19
- package/src/memory/__tests__/memory-retrospective-job.test.ts +0 -8
- package/src/memory/conversation-crud.ts +0 -38
- package/src/memory/db-connection.ts +3 -22
- package/src/memory/db-init.ts +502 -36
- package/src/memory/db-singleton.ts +4 -6
- package/src/memory/jobs-worker.ts +0 -58
- package/src/memory/llm-request-log-store.ts +1 -26
- package/src/memory/llm-usage-store.ts +20 -48
- package/src/memory/memory-retrospective-job.ts +8 -9
- package/src/memory/migrations/209-strip-thinking-from-consolidated.ts +56 -130
- package/src/memory/migrations/__tests__/run-migrations.test.ts +2 -2
- package/src/memory/migrations/registry.ts +573 -0
- package/src/memory/migrations/run-migrations.ts +6 -90
- package/src/memory/migrations/validate-migration-state.ts +66 -101
- package/src/memory/schema/conversations.ts +0 -9
- package/src/memory/schema/infrastructure.ts +0 -20
- package/src/memory/v2/__tests__/cli-command-store.test.ts +0 -25
- package/src/memory/v2/__tests__/skill-store.test.ts +0 -80
- package/src/memory/v2/cli-command-store.ts +38 -75
- package/src/memory/v2/prompts/consolidation.ts +82 -13
- package/src/memory/v2/prompts/router.ts +93 -21
- package/src/memory/v2/skill-store.ts +31 -68
- package/src/notifications/__tests__/broadcaster.test.ts +8 -16
- package/src/notifications/__tests__/decision-engine.test.ts +9 -78
- package/src/notifications/broadcaster.ts +1 -8
- package/src/notifications/decision-engine.ts +7 -15
- package/src/notifications/destination-resolver.ts +24 -68
- package/src/notifications/emit-signal.ts +14 -39
- package/src/permissions/question-prompter.test.ts +1 -1
- package/src/permissions/question-prompter.ts +4 -7
- package/src/plugin-api/index.ts +6 -6
- package/src/plugin-api/types.ts +5 -3
- package/src/plugin-api/vision-support.test.ts +4 -28
- package/src/plugin-api/vision-support.ts +31 -66
- package/src/plugins/defaults/advisor/__tests__/consult.test.ts +0 -161
- package/src/plugins/defaults/advisor/consult.ts +6 -110
- package/src/plugins/defaults/advisor/steering.ts +2 -14
- package/src/plugins/defaults/advisor/tools/advisor.ts +5 -32
- package/src/plugins/defaults/exploration-drift/hooks/post-tool-use.ts +1 -2
- package/src/plugins/defaults/image-fallback/__tests__/image-fallback.test.ts +7 -47
- package/src/plugins/defaults/image-fallback/hooks/post-tool-use.ts +11 -10
- package/src/plugins/defaults/image-fallback/hooks/user-prompt-submit.ts +20 -12
- package/src/plugins/defaults/image-fallback/src/caption-blocks.ts +11 -42
- package/src/plugins/defaults/memory-v3-shadow/__tests__/injection.test.ts +3 -33
- package/src/plugins/defaults/memory-v3-shadow/__tests__/pool-select.test.ts +4 -48
- package/src/plugins/defaults/memory-v3-shadow/__tests__/shadow-plugin.test.ts +8 -4
- package/src/plugins/defaults/memory-v3-shadow/injector.ts +15 -43
- package/src/plugins/defaults/memory-v3-shadow/orchestrate.ts +2 -11
- package/src/plugins/defaults/memory-v3-shadow/pool-select.ts +13 -77
- package/src/plugins/defaults/memory-v3-shadow/shadow-plugin.ts +11 -12
- package/src/plugins/mtime-cache.ts +291 -76
- package/src/plugins/pipeline.ts +13 -111
- package/src/plugins/types.ts +2 -0
- package/src/providers/anthropic/client.ts +0 -5
- package/src/providers/call-site-routing.ts +0 -4
- package/src/providers/model-catalog.ts +0 -16
- package/src/providers/openai/__tests__/api-error-detail.test.ts +120 -0
- package/src/providers/openai/chat-completions-provider.ts +83 -37
- package/src/providers/openai/responses-provider.ts +46 -50
- package/src/providers/openrouter/client.ts +0 -5
- package/src/providers/provider-send-message.ts +0 -4
- package/src/providers/ratelimit.ts +0 -4
- package/src/providers/retry.ts +0 -4
- package/src/providers/types.ts +0 -9
- package/src/providers/usage-tracking.ts +0 -4
- package/src/runtime/__tests__/trust-verdict-consumer.test.ts +3 -335
- package/src/runtime/access-request-helper.ts +39 -19
- package/src/runtime/actor-trust-resolver.ts +2 -2
- package/src/runtime/assistant-event-hub.ts +1 -1
- package/src/runtime/assistant-stream-state.ts +2 -9
- package/src/runtime/auth/require-bound-guardian.ts +11 -21
- package/src/runtime/channel-verification-service.ts +31 -56
- package/src/runtime/confirmation-request-guardian-bridge.ts +3 -3
- package/src/runtime/guardian-vellum-migration.ts +7 -66
- package/src/runtime/invite-redemption-service.ts +187 -198
- package/src/runtime/local-actor-identity.ts +11 -76
- package/src/runtime/pending-interactions.ts +1 -11
- package/src/runtime/routes/__tests__/channel-verification-revoke.test.ts +5 -56
- package/src/runtime/routes/__tests__/channel-verification-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/surface-action-routes.test.ts +0 -187
- package/src/runtime/routes/browser-routes.ts +1 -1
- package/src/runtime/routes/canonical-guardian-expiry-sweep.ts +5 -13
- package/src/runtime/routes/channel-verification-routes.ts +3 -3
- package/src/runtime/routes/contact-routes.ts +32 -8
- package/src/runtime/routes/conversation-cli-routes.ts +5 -4
- package/src/runtime/routes/conversation-list-routes.ts +7 -4
- package/src/runtime/routes/conversation-query-routes.ts +0 -72
- package/src/runtime/routes/conversation-routes.ts +85 -84
- package/src/runtime/routes/events-routes.ts +2 -2
- package/src/runtime/routes/global-search-routes.ts +1 -3
- package/src/runtime/routes/guardian-action-routes.ts +5 -4
- package/src/runtime/routes/host-app-control-routes.ts +4 -5
- package/src/runtime/routes/host-bash-routes.ts +4 -5
- package/src/runtime/routes/host-browser-routes.ts +11 -9
- package/src/runtime/routes/host-cu-routes.ts +4 -5
- package/src/runtime/routes/host-file-routes.ts +4 -5
- package/src/runtime/routes/host-transfer-routes.ts +6 -6
- package/src/runtime/routes/http-adapter.ts +1 -1
- package/src/runtime/routes/identity-routes.ts +2 -3
- package/src/runtime/routes/inbound-message-handler.ts +5 -5
- package/src/runtime/routes/inbound-stages/acl-enforcement.test.ts +5 -97
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +49 -61
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +4 -16
- package/src/runtime/routes/inbound-stages/escalation-intercept.ts +7 -7
- package/src/runtime/routes/inbound-stages/guardian-activation-intercept.test.ts +8 -21
- package/src/runtime/routes/inbound-stages/guardian-activation-intercept.ts +3 -14
- package/src/runtime/routes/index.ts +0 -2
- package/src/runtime/routes/llm-context-normalization.ts +0 -83
- package/src/runtime/routes/mcp-auth-routes.ts +19 -171
- package/src/runtime/routes/migration-rollback-routes.ts +3 -4
- package/src/runtime/routes/migration-routes.ts +1 -4
- package/src/runtime/routes/subagents-routes.ts +0 -5
- package/src/runtime/routes/surface-action-routes.ts +56 -42
- package/src/runtime/services/__tests__/conversation-serializer.test.ts +0 -1
- package/src/runtime/services/conversation-serializer.ts +9 -7
- package/src/runtime/tool-grant-request-helper.ts +3 -3
- package/src/runtime/trust-verdict-consumer.ts +9 -85
- package/src/runtime/verification-outbound-actions.ts +18 -18
- package/src/signals/user-message.ts +0 -16
- package/src/subagent/manager.ts +0 -9
- package/src/subagent/types.ts +3 -3
- package/src/telemetry/types.ts +1 -34
- package/src/telemetry/usage-telemetry-reporter.test.ts +2 -3
- package/src/telemetry/usage-telemetry-reporter.ts +3 -87
- package/src/tools/ask-question/ask-question-tool.test.ts +0 -29
- package/src/tools/ask-question/ask-question-tool.ts +0 -13
- package/src/tools/executor.ts +4 -4
- package/src/tools/registry.ts +0 -18
- package/src/tools/shared/filesystem/path-policy.ts +5 -12
- package/src/tools/tool-approval-handler.ts +1 -1
- package/src/tools/tool-defaults.ts +2 -9
- package/src/tools/tool-manifest.ts +0 -3
- package/src/tools/types.ts +2 -17
- package/src/tools/workspace-tools/loader.ts +244 -348
- package/src/util/errors.ts +1 -26
- package/src/util/platform.ts +0 -5
- package/src/workflows/library.test.ts +0 -140
- package/src/workflows/library.ts +28 -82
- package/src/workspace/migrations/017-seed-persona-dirs.ts +34 -3
- package/src/workspace/migrations/019-scope-journal-to-guardian.ts +24 -3
- package/src/workspace/migrations/048-remove-workspace-hooks.ts +66 -14
- package/src/workspace/migrations/registry.ts +0 -2
- package/node_modules/@vellumai/gateway-client/src/__tests__/guardian-delivery-contract.test.ts +0 -91
- package/node_modules/@vellumai/gateway-client/src/guardian-delivery-contract.ts +0 -48
- package/node_modules/@vellumai/service-contracts/src/__tests__/channels.test.ts +0 -28
- package/node_modules/@vellumai/service-contracts/src/channels.ts +0 -41
- package/src/__tests__/code-search-tool.test.ts +0 -585
- package/src/__tests__/guardian-expiry-notifier.test.ts +0 -282
- package/src/__tests__/mcp-config-secret-boundary.test.ts +0 -390
- package/src/__tests__/plugin-pipeline.test.ts +0 -96
- package/src/__tests__/sse-actor-principal-guardian-source.test.ts +0 -102
- package/src/__tests__/steer-on-enqueue-question.test.ts +0 -181
- package/src/__tests__/workspace-migration-111-prune-seeded-callsite-defaults.test.ts +0 -208
- package/src/agent/loop-exclusive-tool.test.ts +0 -150
- package/src/api/constants/sse-replay.ts +0 -41
- package/src/api/events/conversation-notice.ts +0 -26
- package/src/approvals/guardian-channel-delivery.ts +0 -30
- package/src/approvals/guardian-expiry-notifier.ts +0 -148
- package/src/cli/commands/memory/__tests__/worker.test.ts +0 -302
- package/src/cli/commands/memory/worker.ts +0 -175
- package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +0 -143
- package/src/config/prune-seeded-callsite-defaults.ts +0 -110
- package/src/contacts/__tests__/contacts-write-revoke-relay.test.ts +0 -129
- package/src/contacts/__tests__/guardian-delivery-reader.test.ts +0 -312
- package/src/contacts/__tests__/member-write-relay.test.ts +0 -202
- package/src/contacts/guardian-delivery-reader.ts +0 -223
- package/src/contacts/member-write-relay.ts +0 -189
- package/src/daemon/conversation-notices.ts +0 -60
- package/src/daemon/handlers/__tests__/config-channels.test.ts +0 -225
- package/src/hooks/hook-loader.ts +0 -341
- package/src/mcp/mcp-header-store.ts +0 -134
- package/src/memory/__tests__/301-create-watchdog-events.test.ts +0 -110
- package/src/memory/__tests__/prompt-override.test.ts +0 -192
- package/src/memory/__tests__/watchdog-events-store.test.ts +0 -161
- package/src/memory/migrations/300-add-processing-started-at.ts +0 -30
- package/src/memory/migrations/301-create-watchdog-events.ts +0 -45
- package/src/memory/migrations/__tests__/209-strip-thinking-from-consolidated.test.ts +0 -224
- package/src/memory/prompt-override.ts +0 -129
- package/src/memory/steps.ts +0 -573
- package/src/memory/watchdog-events-store.ts +0 -87
- package/src/memory/worker-control.ts +0 -118
- package/src/memory/worker-process.ts +0 -72
- package/src/notifications/__tests__/connected-channels.test.ts +0 -114
- package/src/notifications/__tests__/destination-resolver.test.ts +0 -256
- package/src/onboarding/checkin-event.test.ts +0 -222
- package/src/onboarding/checkin-event.ts +0 -321
- package/src/onboarding/schedule-checkin.ts +0 -190
- package/src/plugins/defaults/advisor/__tests__/context-pack-gating.test.ts +0 -106
- package/src/plugins/defaults/advisor/__tests__/context-pack.test.ts +0 -60
- package/src/plugins/defaults/advisor/context-pack.ts +0 -288
- package/src/plugins/defaults/memory-v3-shadow/pool-select.test.ts +0 -146
- package/src/plugins/surface-import.ts +0 -121
- package/src/providers/openai/__tests__/api-error-normalization.test.ts +0 -321
- package/src/providers/openai/api-error-normalization.ts +0 -270
- package/src/runtime/__tests__/channel-verification-service.test.ts +0 -133
- package/src/runtime/__tests__/guardian-vellum-migration.test.ts +0 -181
- package/src/runtime/__tests__/is-guardian-bound-for-channel.test.ts +0 -66
- package/src/runtime/__tests__/local-principal-trust.test.ts +0 -164
- package/src/runtime/anchored-guardian.test.ts +0 -156
- package/src/runtime/anchored-guardian.ts +0 -135
- package/src/runtime/auth/__tests__/require-bound-guardian.test.ts +0 -99
- package/src/runtime/local-principal-trust.ts +0 -52
- package/src/runtime/routes/__tests__/contact-routes.test.ts +0 -212
- package/src/runtime/routes/__tests__/global-search-routes.test.ts +0 -93
- package/src/runtime/routes/onboarding-checkin-routes.ts +0 -86
- package/src/tools/filesystem/search.ts +0 -543
- package/src/util/telemetry-db-path.ts +0 -24
- package/src/workspace/migrations/111-prune-seeded-callsite-defaults.ts +0 -134
|
@@ -41,16 +41,15 @@
|
|
|
41
41
|
* - infrastructure failure (selector provider unavailable — e.g. a transient
|
|
42
42
|
* CES credential blip drops the API key — or no usable `tool_use` / schema
|
|
43
43
|
* mismatch surviving the short re-prompt retry) → throw
|
|
44
|
-
* {@link MemoryV3RetrievalUnavailableError}.
|
|
45
|
-
*
|
|
46
|
-
*
|
|
44
|
+
* {@link MemoryV3RetrievalUnavailableError}. There is NO deterministic-lane
|
|
45
|
+
* fallback: the LIVE injector propagates this to hard-fail the turn
|
|
46
|
+
* (retryable) rather than silently shipping it with no `<memory>` block,
|
|
47
|
+
* while the shadow/observation path swallows it and lets v2 retrieval serve
|
|
48
|
+
* the turn.
|
|
47
49
|
*/
|
|
48
50
|
|
|
49
51
|
import { z } from "zod";
|
|
50
52
|
|
|
51
|
-
import { classifyConversationError } from "../../../daemon/conversation-error.js";
|
|
52
|
-
import type { PendingConversationNotice } from "../../../daemon/conversation-notices.js";
|
|
53
|
-
import { loadPromptOverride } from "../../../memory/prompt-override.js";
|
|
54
53
|
import { cachedTextBlock } from "../../../providers/cache-control.js";
|
|
55
54
|
import {
|
|
56
55
|
extractToolUse,
|
|
@@ -77,43 +76,17 @@ const log = getLogger("memory-v3-pool-select");
|
|
|
77
76
|
* re-prompt retry. Deliberately DISTINCT from a deliberate empty selection
|
|
78
77
|
* (`ids: []`) and an empty candidate pool, both of which return normally.
|
|
79
78
|
*
|
|
80
|
-
* The
|
|
79
|
+
* The LIVE memory-v3 injector propagates this to hard-fail the turn (a clean,
|
|
80
|
+
* retryable failure) rather than silently shipping with no memory; the
|
|
81
81
|
* shadow/observation path catches and swallows it.
|
|
82
82
|
*/
|
|
83
83
|
export class MemoryV3RetrievalUnavailableError extends Error {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
constructor(
|
|
87
|
-
message: string,
|
|
88
|
-
options?: {
|
|
89
|
-
cause?: unknown;
|
|
90
|
-
conversationNotice?: PendingConversationNotice;
|
|
91
|
-
},
|
|
92
|
-
) {
|
|
93
|
-
super(
|
|
94
|
-
message,
|
|
95
|
-
options?.cause === undefined ? undefined : { cause: options.cause },
|
|
96
|
-
);
|
|
84
|
+
constructor(message: string) {
|
|
85
|
+
super(message);
|
|
97
86
|
this.name = "MemoryV3RetrievalUnavailableError";
|
|
98
|
-
this.conversationNotice = options?.conversationNotice;
|
|
99
87
|
}
|
|
100
88
|
}
|
|
101
89
|
|
|
102
|
-
function providerBillingNoticeFromError(
|
|
103
|
-
error: unknown,
|
|
104
|
-
): PendingConversationNotice | undefined {
|
|
105
|
-
const classified = classifyConversationError(error, {
|
|
106
|
-
phase: "agent_loop",
|
|
107
|
-
});
|
|
108
|
-
if (classified.code !== "PROVIDER_BILLING") return undefined;
|
|
109
|
-
return {
|
|
110
|
-
source: "memory_v3",
|
|
111
|
-
code: classified.code,
|
|
112
|
-
userMessage: classified.userMessage,
|
|
113
|
-
errorCategory: classified.errorCategory,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
|
|
117
90
|
/** A dynamic-tail (finder) candidate: the slug plus the descriptor that
|
|
118
91
|
* justifies it — a matched section for a needle/dense hit, or a curated link
|
|
119
92
|
* description for an edge page. Rendered as a one-line snippet, prefixed
|
|
@@ -228,28 +201,6 @@ A page can be relevant because of the current situation — the date or the live
|
|
|
228
201
|
|
|
229
202
|
If the conversation is centrally ABOUT a page (rather than only peripherally relevant to it), mark that page as pinned. Call \`select_pages\` with the chosen IDs. Omit \`ids\` only as a recall-safe fallback when you cannot judge the pool (keeps every candidate); return \`[]\` when candidates are present but none are relevant.`;
|
|
230
203
|
|
|
231
|
-
/**
|
|
232
|
-
* Resolve the selector system prompt: the file at `overridePath` when it is set
|
|
233
|
-
* and usable, otherwise the bundled {@link SYSTEM_PROMPT}. Path resolution and
|
|
234
|
-
* fallback follow the shared override loader (workspace-relative; a missing,
|
|
235
|
-
* empty, oversized, or unreadable file degrades to the bundled prompt with a
|
|
236
|
-
* warning). The selector prompt takes no placeholders — the candidate pool is
|
|
237
|
-
* the user message — so an override file is used verbatim.
|
|
238
|
-
*/
|
|
239
|
-
export function resolveSelectorPrompt(
|
|
240
|
-
overridePath: string | null,
|
|
241
|
-
workspaceDir: string,
|
|
242
|
-
): string {
|
|
243
|
-
return (
|
|
244
|
-
loadPromptOverride({
|
|
245
|
-
overridePath,
|
|
246
|
-
workspaceDir,
|
|
247
|
-
log,
|
|
248
|
-
label: "memory-v3 selector prompt",
|
|
249
|
-
}) ?? SYSTEM_PROMPT
|
|
250
|
-
);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
204
|
/** Collapse a descriptor to one line and cap its length for a finder line. */
|
|
254
205
|
function renderSnippet(descriptor: string): string {
|
|
255
206
|
return truncate(descriptor.replace(/\s+/g, " ").trim(), SNIPPET_MAX_CHARS);
|
|
@@ -364,15 +315,10 @@ function dedupeBySlug(
|
|
|
364
315
|
* relevant" signal); an explicit `[]` keeps none; an infrastructure failure
|
|
365
316
|
* (after a short re-prompt retry) keeps none, degrading to the deterministic
|
|
366
317
|
* recall lanes the orchestrator unions in.
|
|
367
|
-
*
|
|
368
|
-
* `systemPrompt` is the selector's instruction scaffold; it defaults to the
|
|
369
|
-
* bundled {@link SYSTEM_PROMPT} and is overridable via `memory.v3.selectorPromptPath`
|
|
370
|
-
* (resolved by {@link resolveSelectorPrompt} at the call site).
|
|
371
318
|
*/
|
|
372
319
|
export async function selectPool(
|
|
373
320
|
pool: SelectorPool,
|
|
374
321
|
turn: MemoryRoutingTurn,
|
|
375
|
-
systemPrompt: string = SYSTEM_PROMPT,
|
|
376
322
|
): Promise<SelectedPage[]> {
|
|
377
323
|
// The concatenated numbering: ids 1…m are the stable-prefix cards, ids
|
|
378
324
|
// m+1… are the finder lines.
|
|
@@ -394,7 +340,7 @@ export async function selectPool(
|
|
|
394
340
|
stableCount: pool.stable.length,
|
|
395
341
|
finderCount: pool.finder.length,
|
|
396
342
|
},
|
|
397
|
-
"pool selector provider unavailable",
|
|
343
|
+
"pool selector provider unavailable — failing the turn rather than dropping memory",
|
|
398
344
|
);
|
|
399
345
|
throw new MemoryV3RetrievalUnavailableError(
|
|
400
346
|
"memory-v3 pool selector provider unavailable",
|
|
@@ -448,12 +394,6 @@ export async function selectPool(
|
|
|
448
394
|
// (no usable tool_use, or tool input that fails the schema) re-prompts before
|
|
449
395
|
// we give up. `null` from an attempt means "unusable, retry"; the provider
|
|
450
396
|
// layer already backs off transient throws, so this loop adds no delay.
|
|
451
|
-
//
|
|
452
|
-
// `lastError` captures the most recent attempt's thrown provider error —
|
|
453
|
-
// `retryForResult` swallows attempt throws, so without this an infrastructure
|
|
454
|
-
// failure (e.g. an upstream HTTP 4xx/5xx) is indistinguishable from a 200 that
|
|
455
|
-
// carried no usable tool_use. It is cleared on every attempt that reaches a
|
|
456
|
-
// response, so it reflects the LAST attempt's failure mode.
|
|
457
397
|
let lastError: unknown = null;
|
|
458
398
|
const parsed = await retryForResult(async () => {
|
|
459
399
|
attempt += 1;
|
|
@@ -461,7 +401,7 @@ export async function selectPool(
|
|
|
461
401
|
try {
|
|
462
402
|
response = await provider.sendMessage([userMsg], {
|
|
463
403
|
tools: [SELECT_PAGES_TOOL],
|
|
464
|
-
systemPrompt,
|
|
404
|
+
systemPrompt: SYSTEM_PROMPT,
|
|
465
405
|
config: {
|
|
466
406
|
callSite: MEMORY_V3_SELECT_CALL_SITE,
|
|
467
407
|
tool_choice: { type: "tool" as const, name: SELECT_PAGES_TOOL_NAME },
|
|
@@ -536,14 +476,10 @@ export async function selectPool(
|
|
|
536
476
|
providerName: provider.name,
|
|
537
477
|
failures,
|
|
538
478
|
},
|
|
539
|
-
"pool selector provider call failed after retries",
|
|
479
|
+
"pool selector provider call failed after retries — failing the turn rather than dropping memory",
|
|
540
480
|
);
|
|
541
481
|
throw new MemoryV3RetrievalUnavailableError(
|
|
542
482
|
`memory-v3 pool selector provider call failed after retries: ${redactedDetail}`,
|
|
543
|
-
{
|
|
544
|
-
cause: lastError,
|
|
545
|
-
conversationNotice: providerBillingNoticeFromError(lastError),
|
|
546
|
-
},
|
|
547
483
|
);
|
|
548
484
|
}
|
|
549
485
|
log.warn(
|
|
@@ -555,7 +491,7 @@ export async function selectPool(
|
|
|
555
491
|
providerName: provider.name,
|
|
556
492
|
failures,
|
|
557
493
|
},
|
|
558
|
-
"pool selector returned no usable tool_use after retries",
|
|
494
|
+
"pool selector returned no usable tool_use after retries — failing the turn rather than dropping memory",
|
|
559
495
|
);
|
|
560
496
|
throw new MemoryV3RetrievalUnavailableError(
|
|
561
497
|
"memory-v3 pool selector returned no usable selection after retries",
|
|
@@ -56,10 +56,7 @@ import { computeHotSet } from "./hot-set.js";
|
|
|
56
56
|
import { computeLearnedEdgeGraph } from "./learned-edges.js";
|
|
57
57
|
import type { OrchestrateResult } from "./orchestrate.js";
|
|
58
58
|
import { orchestrate } from "./orchestrate.js";
|
|
59
|
-
import {
|
|
60
|
-
MemoryV3RetrievalUnavailableError,
|
|
61
|
-
resolveSelectorPrompt,
|
|
62
|
-
} from "./pool-select.js";
|
|
59
|
+
import { MemoryV3RetrievalUnavailableError } from "./pool-select.js";
|
|
63
60
|
import { ensureSectionCollection } from "./section-dense-store.js";
|
|
64
61
|
import type { SectionNeedle } from "./section-needle.js";
|
|
65
62
|
import { buildSectionNeedle } from "./section-needle.js";
|
|
@@ -579,10 +576,6 @@ export async function observeTurn(
|
|
|
579
576
|
learnedGraph: lanes.learnedGraph,
|
|
580
577
|
learnedPerSeed: v3.learnedEdges.perSeed,
|
|
581
578
|
learnedCap: v3.learnedEdges.cap,
|
|
582
|
-
selectorPrompt: resolveSelectorPrompt(
|
|
583
|
-
v3.selectorPromptPath,
|
|
584
|
-
getWorkspaceDir(),
|
|
585
|
-
),
|
|
586
579
|
});
|
|
587
580
|
|
|
588
581
|
// A zero-selection turn over a non-trivial pool is unusual enough to be
|
|
@@ -605,9 +598,13 @@ export async function observeTurn(
|
|
|
605
598
|
writeSelections(conversationId, turnIndex, rows);
|
|
606
599
|
return result;
|
|
607
600
|
} catch (err) {
|
|
608
|
-
//
|
|
609
|
-
//
|
|
610
|
-
//
|
|
601
|
+
// An INFRASTRUCTURE failure (the selector lost its provider — e.g. a
|
|
602
|
+
// transient CES credential blip) must NOT be silently swallowed: re-throw
|
|
603
|
+
// so the LIVE injector hard-fails the turn (a clean, retryable failure)
|
|
604
|
+
// rather than shipping it with no `<memory>` block. The shadow/observation
|
|
605
|
+
// callers (the injector in shadow mode, runShadowObservation) catch this
|
|
606
|
+
// and swallow it, so observation never fails a turn. Other (non-infra)
|
|
607
|
+
// errors stay non-fatal and degrade to no v3 block, as before.
|
|
611
608
|
if (err instanceof MemoryV3RetrievalUnavailableError) {
|
|
612
609
|
throw err;
|
|
613
610
|
}
|
|
@@ -637,6 +634,8 @@ export async function runShadowObservation(
|
|
|
637
634
|
try {
|
|
638
635
|
await observeTurn(conversationId, turnIndex);
|
|
639
636
|
} catch {
|
|
640
|
-
// Shadow observation is fire-and-forget and must
|
|
637
|
+
// Shadow observation is fire-and-forget and must NEVER fail a turn.
|
|
638
|
+
// `observeTurn` now re-throws infra failures so the LIVE injector can
|
|
639
|
+
// hard-fail on them; here (observation only) we swallow them.
|
|
641
640
|
}
|
|
642
641
|
}
|