@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.
Files changed (430) hide show
  1. package/bun.lock +0 -20
  2. package/docs/workspace-tools.md +33 -42
  3. package/eslint-rules/cli-no-daemon-internals.js +0 -6
  4. package/node_modules/@vellumai/gateway-client/src/__tests__/trust-verdict-contract.test.ts +0 -31
  5. package/node_modules/@vellumai/gateway-client/src/gateway-ipc-contracts.ts +0 -44
  6. package/node_modules/@vellumai/gateway-client/src/index.ts +0 -14
  7. package/node_modules/@vellumai/gateway-client/src/trust-verdict-contract.ts +0 -17
  8. package/node_modules/@vellumai/service-contracts/package.json +0 -1
  9. package/node_modules/@vellumai/service-contracts/src/index.ts +0 -1
  10. package/openapi.yaml +0 -155
  11. package/package.json +1 -4
  12. package/scripts/test.sh +15 -36
  13. package/src/__tests__/actor-token-service.test.ts +14 -36
  14. package/src/__tests__/agent-loop-override-profile.test.ts +0 -1
  15. package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +0 -2
  16. package/src/__tests__/agent-wake-override-profile.test.ts +0 -2
  17. package/src/__tests__/annotate-activity-metadata.test.ts +0 -2
  18. package/src/__tests__/annotate-risk-options.test.ts +0 -2
  19. package/src/__tests__/approval-cascade.test.ts +0 -2
  20. package/src/__tests__/assistant-attachments.test.ts +0 -42
  21. package/src/__tests__/background-workers-disk-pressure.test.ts +0 -2
  22. package/src/__tests__/btw-routes.test.ts +0 -2
  23. package/src/__tests__/build-persisted-content.test.ts +0 -2
  24. package/src/__tests__/call-controller.test.ts +0 -19
  25. package/src/__tests__/channel-guardian.test.ts +58 -94
  26. package/src/__tests__/channel-reply-delivery.test.ts +0 -2
  27. package/src/__tests__/compaction-events.test.ts +0 -2
  28. package/src/__tests__/compaction.benchmark.test.ts +0 -2
  29. package/src/__tests__/compactor-call-site-logging.test.ts +0 -2
  30. package/src/__tests__/compactor-low-watermark-cut.test.ts +0 -2
  31. package/src/__tests__/compactor-preserved-tail-count.test.ts +0 -2
  32. package/src/__tests__/compactor-summary-call-truncation.test.ts +0 -2
  33. package/src/__tests__/compactor-web-search-strip.test.ts +0 -2
  34. package/src/__tests__/config-loader-backfill.test.ts +10 -123
  35. package/src/__tests__/config-schema.test.ts +0 -1
  36. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +29 -31
  37. package/src/__tests__/contacts-relay-reads.test.ts +15 -13
  38. package/src/__tests__/conversation-abort-tool-results.test.ts +0 -2
  39. package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +0 -2
  40. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +0 -2
  41. package/src/__tests__/conversation-agent-loop-overflow.test.ts +0 -2
  42. package/src/__tests__/conversation-agent-loop.test.ts +0 -134
  43. package/src/__tests__/conversation-analysis-routes.test.ts +0 -2
  44. package/src/__tests__/conversation-app-control-lifecycle.test.ts +0 -2
  45. package/src/__tests__/conversation-confirmation-signals.test.ts +0 -2
  46. package/src/__tests__/conversation-history-web-search.test.ts +0 -2
  47. package/src/__tests__/conversation-load-history-repair.test.ts +0 -2
  48. package/src/__tests__/conversation-load-history-stripped.test.ts +0 -2
  49. package/src/__tests__/conversation-pairing.test.ts +0 -2
  50. package/src/__tests__/conversation-process-app-control-preactivation.test.ts +0 -2
  51. package/src/__tests__/conversation-process-callsite.test.ts +0 -2
  52. package/src/__tests__/conversation-provider-retry-repair.test.ts +0 -2
  53. package/src/__tests__/conversation-queue.test.ts +0 -91
  54. package/src/__tests__/conversation-routes-guardian-reply.test.ts +0 -14
  55. package/src/__tests__/conversation-routes-slash-commands.test.ts +0 -14
  56. package/src/__tests__/conversation-slash-queue.test.ts +0 -2
  57. package/src/__tests__/conversation-slash-unknown.test.ts +0 -2
  58. package/src/__tests__/conversation-speed-override.test.ts +0 -2
  59. package/src/__tests__/conversation-surfaces-task-progress.test.ts +0 -29
  60. package/src/__tests__/conversation-title-service.test.ts +0 -2
  61. package/src/__tests__/conversation-tool-setup-attribution.test.ts +0 -47
  62. package/src/__tests__/conversation-usage.test.ts +0 -2
  63. package/src/__tests__/conversation-workspace-cache-state.test.ts +0 -2
  64. package/src/__tests__/conversation-workspace-injection.test.ts +0 -2
  65. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +0 -2
  66. package/src/__tests__/credential-security-invariants.test.ts +1 -1
  67. package/src/__tests__/db-migration-rollback.test.ts +171 -205
  68. package/src/__tests__/db-test-helpers.ts +4 -5
  69. package/src/__tests__/deterministic-verification-control-plane.test.ts +2 -4
  70. package/src/__tests__/disk-pressure-guard.test.ts +0 -41
  71. package/src/__tests__/dm-persistence.test.ts +0 -2
  72. package/src/__tests__/emit-signal-routing-intent.test.ts +5 -10
  73. package/src/__tests__/events-dev-bypass-actor.test.ts +1 -7
  74. package/src/__tests__/exploration-drift-hook.test.ts +2 -3
  75. package/src/__tests__/filing-service.test.ts +0 -2
  76. package/src/__tests__/guardian-binding-drift-heal.test.ts +10 -75
  77. package/src/__tests__/guardian-dispatch.test.ts +1 -95
  78. package/src/__tests__/guardian-outbound-http.test.ts +0 -13
  79. package/src/__tests__/heartbeat-disk-pressure.test.ts +0 -2
  80. package/src/__tests__/heartbeat-service.test.ts +0 -2
  81. package/src/__tests__/helpers/channel-test-adapter.ts +7 -1
  82. package/src/__tests__/host-app-control-routes.test.ts +30 -24
  83. package/src/__tests__/host-bash-routes.test.ts +41 -31
  84. package/src/__tests__/host-browser-routes.test.ts +32 -26
  85. package/src/__tests__/host-cu-routes-targeted.test.ts +33 -25
  86. package/src/__tests__/host-file-routes-targeted.test.ts +52 -40
  87. package/src/__tests__/host-transfer-routes-targeted.test.ts +43 -31
  88. package/src/__tests__/http-user-message-parity.test.ts +8 -290
  89. package/src/__tests__/inbound-invite-redemption.test.ts +0 -28
  90. package/src/__tests__/inbound-slack-persistence.test.ts +0 -2
  91. package/src/__tests__/invite-redemption-service.test.ts +0 -198
  92. package/src/__tests__/llm-context-normalization.test.ts +0 -105
  93. package/src/__tests__/llm-request-log-error-payload.test.ts +9 -71
  94. package/src/__tests__/llm-usage-store.test.ts +0 -25
  95. package/src/__tests__/mcp-health-check.test.ts +1 -2
  96. package/src/__tests__/media-stream-server-integration.test.ts +0 -127
  97. package/src/__tests__/memory-retrieval-hook.test.ts +0 -2
  98. package/src/__tests__/messaging-send-tool.test.ts +0 -2
  99. package/src/__tests__/migration-import-from-url.test.ts +2 -2
  100. package/src/__tests__/mtime-cache.test.ts +5 -146
  101. package/src/__tests__/native-web-search.test.ts +0 -2
  102. package/src/__tests__/non-member-access-request.test.ts +17 -189
  103. package/src/__tests__/notification-broadcaster.test.ts +0 -4
  104. package/src/__tests__/notification-decision-recipient-context.test.ts +32 -33
  105. package/src/__tests__/notification-deep-link.test.ts +0 -6
  106. package/src/__tests__/notification-guardian-path.test.ts +0 -19
  107. package/src/__tests__/openai-provider.test.ts +12 -22
  108. package/src/__tests__/openai-responses-provider.test.ts +2 -12
  109. package/src/__tests__/outbound-slack-persistence.test.ts +0 -2
  110. package/src/__tests__/pending-interactions-resolved-event.test.ts +4 -7
  111. package/src/__tests__/persistence-secret-redaction.test.ts +0 -2
  112. package/src/__tests__/plugin-bootstrap.test.ts +73 -3
  113. package/src/__tests__/plugin-route-contribution.test.ts +17 -4
  114. package/src/__tests__/plugin-tool-contribution.test.ts +18 -3
  115. package/src/__tests__/plugin-types.test.ts +2 -0
  116. package/src/__tests__/process-message-background-slack.test.ts +0 -2
  117. package/src/__tests__/process-message-display-content.test.ts +0 -2
  118. package/src/__tests__/provider-error-scenarios.test.ts +4 -5
  119. package/src/__tests__/provider-usage-tracking.test.ts +0 -39
  120. package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +0 -2
  121. package/src/__tests__/registry.test.ts +1 -4
  122. package/src/__tests__/relay-server.test.ts +25 -694
  123. package/src/__tests__/runtime-attachment-metadata.test.ts +1 -0
  124. package/src/__tests__/secret-ingress-http.test.ts +0 -14
  125. package/src/__tests__/send-endpoint-busy.test.ts +8 -30
  126. package/src/__tests__/skills.test.ts +0 -44
  127. package/src/__tests__/slack-inbound-verification.test.ts +2 -47
  128. package/src/__tests__/stt-hints.test.ts +13 -44
  129. package/src/__tests__/subagent-detail.test.ts +0 -27
  130. package/src/__tests__/subagent-disposal.test.ts +0 -65
  131. package/src/__tests__/subagent-notify-parent.test.ts +0 -2
  132. package/src/__tests__/subagent-role-registry.test.ts +2 -7
  133. package/src/__tests__/subagent-spawn-tool-fork.test.ts +0 -2
  134. package/src/__tests__/subagent-tools.test.ts +0 -2
  135. package/src/__tests__/suggestion-routes.test.ts +0 -2
  136. package/src/__tests__/title-generate-hook.test.ts +0 -2
  137. package/src/__tests__/tool-executor-lifecycle-events.test.ts +0 -2
  138. package/src/__tests__/tool-executor.test.ts +11 -16
  139. package/src/__tests__/tool-preview-lifecycle.test.ts +0 -2
  140. package/src/__tests__/tool-result-metadata-plumbing.test.ts +0 -2
  141. package/src/__tests__/tool-start-timestamp.test.ts +0 -2
  142. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +10 -10
  143. package/src/__tests__/twilio-routes.test.ts +0 -96
  144. package/src/__tests__/ui-file-upload-surface.test.ts +0 -86
  145. package/src/__tests__/verification-control-plane-policy.test.ts +0 -2
  146. package/src/__tests__/voice-invite-redemption.test.ts +0 -33
  147. package/src/__tests__/web-search-backend-failure.test.ts +0 -2
  148. package/src/__tests__/workspace-migration-remove-hooks.test.ts +35 -14
  149. package/src/__tests__/workspace-tool-loader.test.ts +2 -195
  150. package/src/__tests__/workspace-tools-watcher-flag.test.ts +70 -0
  151. package/src/agent/loop.ts +0 -56
  152. package/src/api/index.ts +1 -19
  153. package/src/api/responses/llm-request-log-entry.ts +0 -29
  154. package/src/api/responses/subagent-detail.ts +0 -17
  155. package/src/api/surfaces.ts +3 -39
  156. package/src/approvals/guardian-request-resolvers.ts +11 -1
  157. package/src/calls/__tests__/relay-setup-router.test.ts +4 -262
  158. package/src/calls/call-domain.ts +3 -3
  159. package/src/calls/guardian-dispatch.ts +8 -10
  160. package/src/calls/inbound-trust-reader.ts +1 -17
  161. package/src/calls/media-stream-server.ts +0 -21
  162. package/src/calls/relay-server.ts +50 -167
  163. package/src/calls/relay-setup-router.ts +7 -37
  164. package/src/calls/relay-verification.ts +4 -4
  165. package/src/calls/stt-hints.ts +12 -9
  166. package/src/calls/twilio-routes.ts +4 -14
  167. package/src/channels/types.ts +20 -10
  168. package/src/cli/commands/__tests__/cache.test.ts +1 -8
  169. package/src/cli/commands/cache.ts +181 -194
  170. package/src/cli/commands/db/__tests__/repair.test.ts +5 -6
  171. package/src/cli/commands/db/status.ts +1 -37
  172. package/src/cli/commands/mcp.ts +218 -252
  173. package/src/cli/commands/memory/index.ts +0 -2
  174. package/src/cli/commands/plugins.ts +3 -75
  175. package/src/cli/lib/__tests__/install-from-github.test.ts +0 -102
  176. package/src/cli/lib/__tests__/list-installed-plugins.test.ts +1 -160
  177. package/src/cli/lib/list-installed-plugins.ts +1 -179
  178. package/src/config/__tests__/sync-gated-profiles.test.ts +3 -11
  179. package/src/config/bundled-skills/contacts/tools/contact-merge.ts +17 -27
  180. package/src/config/bundled-skills/contacts/tools/contact-search.ts +3 -13
  181. package/src/config/bundled-skills/subagent/SKILL.md +1 -1
  182. package/src/config/bundled-skills/subagent/TOOLS.json +1 -1
  183. package/src/config/feature-flag-registry.json +13 -5
  184. package/src/config/loader.ts +5 -38
  185. package/src/config/schemas/__tests__/memory-v3.test.ts +0 -1
  186. package/src/config/schemas/memory-lifecycle.ts +0 -12
  187. package/src/config/schemas/memory-v3.ts +0 -7
  188. package/src/config/schemas/memory.ts +0 -4
  189. package/src/config/schemas/timeouts.ts +0 -8
  190. package/src/config/seed-inference-profiles.ts +11 -21
  191. package/src/config/skills.ts +5 -27
  192. package/src/config/sync-gated-profiles.ts +13 -12
  193. package/src/contacts/contacts-write.ts +0 -3
  194. package/src/daemon/assistant-attachments.ts +4 -27
  195. package/src/daemon/conversation-agent-loop.ts +0 -28
  196. package/src/daemon/conversation-process.ts +16 -35
  197. package/src/daemon/conversation-surfaces.ts +38 -111
  198. package/src/daemon/conversation-tool-setup.ts +16 -50
  199. package/src/daemon/conversation.ts +1 -13
  200. package/src/daemon/disk-pressure-guard.ts +2 -12
  201. package/src/daemon/event-loop-watchdog.ts +1 -28
  202. package/src/daemon/external-plugins-bootstrap.ts +34 -4
  203. package/src/daemon/handlers/__tests__/config-a2a-redeem.test.ts +0 -25
  204. package/src/daemon/handlers/config-a2a.ts +14 -6
  205. package/src/daemon/handlers/config-channels.ts +22 -78
  206. package/src/daemon/handlers/conversations.ts +0 -77
  207. package/src/daemon/lifecycle.ts +0 -4
  208. package/src/daemon/mcp-reload-service.ts +0 -10
  209. package/src/daemon/memory-v2-startup.test.ts +0 -72
  210. package/src/daemon/memory-v2-startup.ts +19 -87
  211. package/src/daemon/message-types/conversations.ts +0 -2
  212. package/src/daemon/message-types/surfaces.ts +12 -12
  213. package/src/daemon/server.ts +4 -0
  214. package/src/daemon/shutdown-handlers.ts +0 -20
  215. package/src/daemon/tool-setup-types.ts +0 -9
  216. package/src/daemon/workspace-tools-watcher.ts +328 -0
  217. package/src/ipc/__tests__/clients-list-ipc.test.ts +1 -1
  218. package/src/ipc/assistant-server.ts +2 -2
  219. package/src/mcp/__tests__/mcp-auth-orchestrator.test.ts +0 -1
  220. package/src/mcp/client.ts +1 -15
  221. package/src/mcp/mcp-auth-orchestrator.ts +1 -6
  222. package/src/mcp/mcp-oauth-provider.ts +8 -19
  223. package/src/memory/__tests__/memory-retrospective-job.test.ts +0 -8
  224. package/src/memory/conversation-crud.ts +0 -38
  225. package/src/memory/db-connection.ts +3 -22
  226. package/src/memory/db-init.ts +502 -36
  227. package/src/memory/db-singleton.ts +4 -6
  228. package/src/memory/jobs-worker.ts +0 -58
  229. package/src/memory/llm-request-log-store.ts +1 -26
  230. package/src/memory/llm-usage-store.ts +20 -48
  231. package/src/memory/memory-retrospective-job.ts +8 -9
  232. package/src/memory/migrations/209-strip-thinking-from-consolidated.ts +56 -130
  233. package/src/memory/migrations/__tests__/run-migrations.test.ts +2 -2
  234. package/src/memory/migrations/registry.ts +573 -0
  235. package/src/memory/migrations/run-migrations.ts +6 -90
  236. package/src/memory/migrations/validate-migration-state.ts +66 -101
  237. package/src/memory/schema/conversations.ts +0 -9
  238. package/src/memory/schema/infrastructure.ts +0 -20
  239. package/src/memory/v2/__tests__/cli-command-store.test.ts +0 -25
  240. package/src/memory/v2/__tests__/skill-store.test.ts +0 -80
  241. package/src/memory/v2/cli-command-store.ts +38 -75
  242. package/src/memory/v2/prompts/consolidation.ts +82 -13
  243. package/src/memory/v2/prompts/router.ts +93 -21
  244. package/src/memory/v2/skill-store.ts +31 -68
  245. package/src/notifications/__tests__/broadcaster.test.ts +8 -16
  246. package/src/notifications/__tests__/decision-engine.test.ts +9 -78
  247. package/src/notifications/broadcaster.ts +1 -8
  248. package/src/notifications/decision-engine.ts +7 -15
  249. package/src/notifications/destination-resolver.ts +24 -68
  250. package/src/notifications/emit-signal.ts +14 -39
  251. package/src/permissions/question-prompter.test.ts +1 -1
  252. package/src/permissions/question-prompter.ts +4 -7
  253. package/src/plugin-api/index.ts +6 -6
  254. package/src/plugin-api/types.ts +5 -3
  255. package/src/plugin-api/vision-support.test.ts +4 -28
  256. package/src/plugin-api/vision-support.ts +31 -66
  257. package/src/plugins/defaults/advisor/__tests__/consult.test.ts +0 -161
  258. package/src/plugins/defaults/advisor/consult.ts +6 -110
  259. package/src/plugins/defaults/advisor/steering.ts +2 -14
  260. package/src/plugins/defaults/advisor/tools/advisor.ts +5 -32
  261. package/src/plugins/defaults/exploration-drift/hooks/post-tool-use.ts +1 -2
  262. package/src/plugins/defaults/image-fallback/__tests__/image-fallback.test.ts +7 -47
  263. package/src/plugins/defaults/image-fallback/hooks/post-tool-use.ts +11 -10
  264. package/src/plugins/defaults/image-fallback/hooks/user-prompt-submit.ts +20 -12
  265. package/src/plugins/defaults/image-fallback/src/caption-blocks.ts +11 -42
  266. package/src/plugins/defaults/memory-v3-shadow/__tests__/injection.test.ts +3 -33
  267. package/src/plugins/defaults/memory-v3-shadow/__tests__/pool-select.test.ts +4 -48
  268. package/src/plugins/defaults/memory-v3-shadow/__tests__/shadow-plugin.test.ts +8 -4
  269. package/src/plugins/defaults/memory-v3-shadow/injector.ts +15 -43
  270. package/src/plugins/defaults/memory-v3-shadow/orchestrate.ts +2 -11
  271. package/src/plugins/defaults/memory-v3-shadow/pool-select.ts +13 -77
  272. package/src/plugins/defaults/memory-v3-shadow/shadow-plugin.ts +11 -12
  273. package/src/plugins/mtime-cache.ts +291 -76
  274. package/src/plugins/pipeline.ts +13 -111
  275. package/src/plugins/types.ts +2 -0
  276. package/src/providers/anthropic/client.ts +0 -5
  277. package/src/providers/call-site-routing.ts +0 -4
  278. package/src/providers/model-catalog.ts +0 -16
  279. package/src/providers/openai/__tests__/api-error-detail.test.ts +120 -0
  280. package/src/providers/openai/chat-completions-provider.ts +83 -37
  281. package/src/providers/openai/responses-provider.ts +46 -50
  282. package/src/providers/openrouter/client.ts +0 -5
  283. package/src/providers/provider-send-message.ts +0 -4
  284. package/src/providers/ratelimit.ts +0 -4
  285. package/src/providers/retry.ts +0 -4
  286. package/src/providers/types.ts +0 -9
  287. package/src/providers/usage-tracking.ts +0 -4
  288. package/src/runtime/__tests__/trust-verdict-consumer.test.ts +3 -335
  289. package/src/runtime/access-request-helper.ts +39 -19
  290. package/src/runtime/actor-trust-resolver.ts +2 -2
  291. package/src/runtime/assistant-event-hub.ts +1 -1
  292. package/src/runtime/assistant-stream-state.ts +2 -9
  293. package/src/runtime/auth/require-bound-guardian.ts +11 -21
  294. package/src/runtime/channel-verification-service.ts +31 -56
  295. package/src/runtime/confirmation-request-guardian-bridge.ts +3 -3
  296. package/src/runtime/guardian-vellum-migration.ts +7 -66
  297. package/src/runtime/invite-redemption-service.ts +187 -198
  298. package/src/runtime/local-actor-identity.ts +11 -76
  299. package/src/runtime/pending-interactions.ts +1 -11
  300. package/src/runtime/routes/__tests__/channel-verification-revoke.test.ts +5 -56
  301. package/src/runtime/routes/__tests__/channel-verification-routes.test.ts +1 -1
  302. package/src/runtime/routes/__tests__/surface-action-routes.test.ts +0 -187
  303. package/src/runtime/routes/browser-routes.ts +1 -1
  304. package/src/runtime/routes/canonical-guardian-expiry-sweep.ts +5 -13
  305. package/src/runtime/routes/channel-verification-routes.ts +3 -3
  306. package/src/runtime/routes/contact-routes.ts +32 -8
  307. package/src/runtime/routes/conversation-cli-routes.ts +5 -4
  308. package/src/runtime/routes/conversation-list-routes.ts +7 -4
  309. package/src/runtime/routes/conversation-query-routes.ts +0 -72
  310. package/src/runtime/routes/conversation-routes.ts +85 -84
  311. package/src/runtime/routes/events-routes.ts +2 -2
  312. package/src/runtime/routes/global-search-routes.ts +1 -3
  313. package/src/runtime/routes/guardian-action-routes.ts +5 -4
  314. package/src/runtime/routes/host-app-control-routes.ts +4 -5
  315. package/src/runtime/routes/host-bash-routes.ts +4 -5
  316. package/src/runtime/routes/host-browser-routes.ts +11 -9
  317. package/src/runtime/routes/host-cu-routes.ts +4 -5
  318. package/src/runtime/routes/host-file-routes.ts +4 -5
  319. package/src/runtime/routes/host-transfer-routes.ts +6 -6
  320. package/src/runtime/routes/http-adapter.ts +1 -1
  321. package/src/runtime/routes/identity-routes.ts +2 -3
  322. package/src/runtime/routes/inbound-message-handler.ts +5 -5
  323. package/src/runtime/routes/inbound-stages/acl-enforcement.test.ts +5 -97
  324. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +49 -61
  325. package/src/runtime/routes/inbound-stages/background-dispatch.ts +4 -16
  326. package/src/runtime/routes/inbound-stages/escalation-intercept.ts +7 -7
  327. package/src/runtime/routes/inbound-stages/guardian-activation-intercept.test.ts +8 -21
  328. package/src/runtime/routes/inbound-stages/guardian-activation-intercept.ts +3 -14
  329. package/src/runtime/routes/index.ts +0 -2
  330. package/src/runtime/routes/llm-context-normalization.ts +0 -83
  331. package/src/runtime/routes/mcp-auth-routes.ts +19 -171
  332. package/src/runtime/routes/migration-rollback-routes.ts +3 -4
  333. package/src/runtime/routes/migration-routes.ts +1 -4
  334. package/src/runtime/routes/subagents-routes.ts +0 -5
  335. package/src/runtime/routes/surface-action-routes.ts +56 -42
  336. package/src/runtime/services/__tests__/conversation-serializer.test.ts +0 -1
  337. package/src/runtime/services/conversation-serializer.ts +9 -7
  338. package/src/runtime/tool-grant-request-helper.ts +3 -3
  339. package/src/runtime/trust-verdict-consumer.ts +9 -85
  340. package/src/runtime/verification-outbound-actions.ts +18 -18
  341. package/src/signals/user-message.ts +0 -16
  342. package/src/subagent/manager.ts +0 -9
  343. package/src/subagent/types.ts +3 -3
  344. package/src/telemetry/types.ts +1 -34
  345. package/src/telemetry/usage-telemetry-reporter.test.ts +2 -3
  346. package/src/telemetry/usage-telemetry-reporter.ts +3 -87
  347. package/src/tools/ask-question/ask-question-tool.test.ts +0 -29
  348. package/src/tools/ask-question/ask-question-tool.ts +0 -13
  349. package/src/tools/executor.ts +4 -4
  350. package/src/tools/registry.ts +0 -18
  351. package/src/tools/shared/filesystem/path-policy.ts +5 -12
  352. package/src/tools/tool-approval-handler.ts +1 -1
  353. package/src/tools/tool-defaults.ts +2 -9
  354. package/src/tools/tool-manifest.ts +0 -3
  355. package/src/tools/types.ts +2 -17
  356. package/src/tools/workspace-tools/loader.ts +244 -348
  357. package/src/util/errors.ts +1 -26
  358. package/src/util/platform.ts +0 -5
  359. package/src/workflows/library.test.ts +0 -140
  360. package/src/workflows/library.ts +28 -82
  361. package/src/workspace/migrations/017-seed-persona-dirs.ts +34 -3
  362. package/src/workspace/migrations/019-scope-journal-to-guardian.ts +24 -3
  363. package/src/workspace/migrations/048-remove-workspace-hooks.ts +66 -14
  364. package/src/workspace/migrations/registry.ts +0 -2
  365. package/node_modules/@vellumai/gateway-client/src/__tests__/guardian-delivery-contract.test.ts +0 -91
  366. package/node_modules/@vellumai/gateway-client/src/guardian-delivery-contract.ts +0 -48
  367. package/node_modules/@vellumai/service-contracts/src/__tests__/channels.test.ts +0 -28
  368. package/node_modules/@vellumai/service-contracts/src/channels.ts +0 -41
  369. package/src/__tests__/code-search-tool.test.ts +0 -585
  370. package/src/__tests__/guardian-expiry-notifier.test.ts +0 -282
  371. package/src/__tests__/mcp-config-secret-boundary.test.ts +0 -390
  372. package/src/__tests__/plugin-pipeline.test.ts +0 -96
  373. package/src/__tests__/sse-actor-principal-guardian-source.test.ts +0 -102
  374. package/src/__tests__/steer-on-enqueue-question.test.ts +0 -181
  375. package/src/__tests__/workspace-migration-111-prune-seeded-callsite-defaults.test.ts +0 -208
  376. package/src/agent/loop-exclusive-tool.test.ts +0 -150
  377. package/src/api/constants/sse-replay.ts +0 -41
  378. package/src/api/events/conversation-notice.ts +0 -26
  379. package/src/approvals/guardian-channel-delivery.ts +0 -30
  380. package/src/approvals/guardian-expiry-notifier.ts +0 -148
  381. package/src/cli/commands/memory/__tests__/worker.test.ts +0 -302
  382. package/src/cli/commands/memory/worker.ts +0 -175
  383. package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +0 -143
  384. package/src/config/prune-seeded-callsite-defaults.ts +0 -110
  385. package/src/contacts/__tests__/contacts-write-revoke-relay.test.ts +0 -129
  386. package/src/contacts/__tests__/guardian-delivery-reader.test.ts +0 -312
  387. package/src/contacts/__tests__/member-write-relay.test.ts +0 -202
  388. package/src/contacts/guardian-delivery-reader.ts +0 -223
  389. package/src/contacts/member-write-relay.ts +0 -189
  390. package/src/daemon/conversation-notices.ts +0 -60
  391. package/src/daemon/handlers/__tests__/config-channels.test.ts +0 -225
  392. package/src/hooks/hook-loader.ts +0 -341
  393. package/src/mcp/mcp-header-store.ts +0 -134
  394. package/src/memory/__tests__/301-create-watchdog-events.test.ts +0 -110
  395. package/src/memory/__tests__/prompt-override.test.ts +0 -192
  396. package/src/memory/__tests__/watchdog-events-store.test.ts +0 -161
  397. package/src/memory/migrations/300-add-processing-started-at.ts +0 -30
  398. package/src/memory/migrations/301-create-watchdog-events.ts +0 -45
  399. package/src/memory/migrations/__tests__/209-strip-thinking-from-consolidated.test.ts +0 -224
  400. package/src/memory/prompt-override.ts +0 -129
  401. package/src/memory/steps.ts +0 -573
  402. package/src/memory/watchdog-events-store.ts +0 -87
  403. package/src/memory/worker-control.ts +0 -118
  404. package/src/memory/worker-process.ts +0 -72
  405. package/src/notifications/__tests__/connected-channels.test.ts +0 -114
  406. package/src/notifications/__tests__/destination-resolver.test.ts +0 -256
  407. package/src/onboarding/checkin-event.test.ts +0 -222
  408. package/src/onboarding/checkin-event.ts +0 -321
  409. package/src/onboarding/schedule-checkin.ts +0 -190
  410. package/src/plugins/defaults/advisor/__tests__/context-pack-gating.test.ts +0 -106
  411. package/src/plugins/defaults/advisor/__tests__/context-pack.test.ts +0 -60
  412. package/src/plugins/defaults/advisor/context-pack.ts +0 -288
  413. package/src/plugins/defaults/memory-v3-shadow/pool-select.test.ts +0 -146
  414. package/src/plugins/surface-import.ts +0 -121
  415. package/src/providers/openai/__tests__/api-error-normalization.test.ts +0 -321
  416. package/src/providers/openai/api-error-normalization.ts +0 -270
  417. package/src/runtime/__tests__/channel-verification-service.test.ts +0 -133
  418. package/src/runtime/__tests__/guardian-vellum-migration.test.ts +0 -181
  419. package/src/runtime/__tests__/is-guardian-bound-for-channel.test.ts +0 -66
  420. package/src/runtime/__tests__/local-principal-trust.test.ts +0 -164
  421. package/src/runtime/anchored-guardian.test.ts +0 -156
  422. package/src/runtime/anchored-guardian.ts +0 -135
  423. package/src/runtime/auth/__tests__/require-bound-guardian.test.ts +0 -99
  424. package/src/runtime/local-principal-trust.ts +0 -52
  425. package/src/runtime/routes/__tests__/contact-routes.test.ts +0 -212
  426. package/src/runtime/routes/__tests__/global-search-routes.test.ts +0 -93
  427. package/src/runtime/routes/onboarding-checkin-routes.ts +0 -86
  428. package/src/tools/filesystem/search.ts +0 -543
  429. package/src/util/telemetry-db-path.ts +0 -24
  430. package/src/workspace/migrations/111-prune-seeded-callsite-defaults.ts +0 -134
@@ -149,8 +149,6 @@ mock.module("../security/secret-allowlist.js", () => ({
149
149
  }));
150
150
 
151
151
  mock.module("../memory/conversation-crud.js", () => ({
152
- setConversationProcessingStartedAt: () => {},
153
- isConversationProcessing: () => false,
154
152
  setConversationOriginChannelIfUnset: () => {},
155
153
  setConversationOriginInterfaceIfUnset: () => {},
156
154
  updateConversationContextWindow: () => {},
@@ -2913,92 +2911,3 @@ describe("MessageQueue byte budget", () => {
2913
2911
  ).toBe(false);
2914
2912
  });
2915
2913
  });
2916
-
2917
- describe("subagent notification user_message_echo suppression", () => {
2918
- beforeEach(() => {
2919
- pendingRuns = [];
2920
- capturedAddMessages.length = 0;
2921
- });
2922
-
2923
- test("drained subagent-notification message persists and wakes the agent but emits no user_message_echo", async () => {
2924
- const conversation = makeConversation();
2925
- await conversation.loadFromDb();
2926
-
2927
- const events1: ServerMessage[] = [];
2928
- const eventsNotif: ServerMessage[] = [];
2929
-
2930
- // Occupy the conversation so the injected notification queues.
2931
- const p1 = conversation.processMessage({
2932
- content: "msg-1",
2933
- attachments: [],
2934
- onEvent: (e) => events1.push(e),
2935
- requestId: "req-1",
2936
- });
2937
- await waitForPendingRun(1);
2938
- expect(conversation.isProcessing()).toBe(true);
2939
-
2940
- // A daemon-injected subagent completion notification carries
2941
- // `subagentNotification` metadata.
2942
- conversation.enqueueMessage({
2943
- content: '[Subagent "research" completed]',
2944
- onEvent: (e) => eventsNotif.push(e),
2945
- requestId: "req-notif",
2946
- metadata: {
2947
- subagentNotification: {
2948
- subagentId: "sub-1",
2949
- label: "research",
2950
- status: "completed",
2951
- },
2952
- },
2953
- });
2954
-
2955
- // Resolving the first run drains the queued notification.
2956
- await resolveRun(0);
2957
- await p1;
2958
- await waitForPendingRun(2);
2959
-
2960
- // It is still persisted (so the orchestrator LLM sees it in the transcript)
2961
- // and still wakes the agent (a run was created for the drained message)...
2962
- expect(
2963
- capturedAddMessages.some((m) => m.content.includes("Subagent")),
2964
- ).toBe(true);
2965
- expect(pendingRuns.length).toBe(2);
2966
- // ...but no user_message_echo is broadcast, so the client never renders it
2967
- // as a live user bubble.
2968
- expect(eventsNotif.some((e) => e.type === "user_message_echo")).toBe(false);
2969
-
2970
- await resolveRun(1);
2971
- await new Promise((r) => setTimeout(r, 10));
2972
- });
2973
-
2974
- test("drained ordinary message still emits user_message_echo", async () => {
2975
- const conversation = makeConversation();
2976
- await conversation.loadFromDb();
2977
-
2978
- const events1: ServerMessage[] = [];
2979
- const eventsNormal: ServerMessage[] = [];
2980
-
2981
- const p1 = conversation.processMessage({
2982
- content: "msg-1",
2983
- attachments: [],
2984
- onEvent: (e) => events1.push(e),
2985
- requestId: "req-1",
2986
- });
2987
- await waitForPendingRun(1);
2988
-
2989
- conversation.enqueueMessage({
2990
- content: "ordinary message",
2991
- onEvent: (e) => eventsNormal.push(e),
2992
- requestId: "req-normal",
2993
- });
2994
-
2995
- await resolveRun(0);
2996
- await p1;
2997
- await waitForPendingRun(2);
2998
-
2999
- expect(eventsNormal.some((e) => e.type === "user_message_echo")).toBe(true);
3000
-
3001
- await resolveRun(1);
3002
- await new Promise((r) => setTimeout(r, 10));
3003
- });
3004
- });
@@ -77,8 +77,6 @@ mock.module("../runtime/confirmation-request-guardian-bridge.js", () => ({
77
77
  }));
78
78
 
79
79
  mock.module("../memory/conversation-crud.js", () => ({
80
- setConversationProcessingStartedAt: () => {},
81
- isConversationProcessing: () => false,
82
80
  addMessage: (
83
81
  conversationId: string,
84
82
  role: string,
@@ -106,18 +104,6 @@ mock.module("../runtime/trust-context-resolver.js", () => ({
106
104
  }),
107
105
  }));
108
106
 
109
- mock.module("../contacts/guardian-delivery-reader.js", () => ({
110
- getGuardianDelivery: async () => [
111
- {
112
- channelType: "vellum",
113
- contactId: "guardian-contact",
114
- principalId: "test-user",
115
- address: "test-user",
116
- status: "active",
117
- },
118
- ],
119
- }));
120
-
121
107
  import type { AuthContext } from "../runtime/auth/types.js";
122
108
  import { handleSendMessage } from "../runtime/routes/conversation-routes.js";
123
109
  import { callHandler } from "./helpers/call-route-handler.js";
@@ -126,8 +126,6 @@ mock.module("../runtime/confirmation-request-guardian-bridge.js", () => ({
126
126
  }));
127
127
 
128
128
  mock.module("../memory/conversation-crud.js", () => ({
129
- setConversationProcessingStartedAt: () => {},
130
- isConversationProcessing: () => false,
131
129
  addMessage: (
132
130
  conversationId: string,
133
131
  role: string,
@@ -192,18 +190,6 @@ mock.module("../runtime/trust-context-resolver.js", () => ({
192
190
  }),
193
191
  }));
194
192
 
195
- mock.module("../contacts/guardian-delivery-reader.js", () => ({
196
- getGuardianDelivery: async () => [
197
- {
198
- channelType: "vellum",
199
- contactId: "guardian-contact",
200
- principalId: "test-user",
201
- address: "test-user",
202
- status: "active",
203
- },
204
- ],
205
- }));
206
-
207
193
  const ipcCallMock = mock(
208
194
  async (): Promise<Record<string, unknown> | undefined> => ({ ok: true }),
209
195
  );
@@ -100,8 +100,6 @@ mock.module("../security/secret-allowlist.js", () => ({
100
100
  }));
101
101
 
102
102
  mock.module("../memory/conversation-crud.js", () => ({
103
- setConversationProcessingStartedAt: () => {},
104
- isConversationProcessing: () => false,
105
103
  setConversationOriginChannelIfUnset: () => {},
106
104
  setConversationOriginInterfaceIfUnset: () => {},
107
105
  updateConversationContextWindow: () => {},
@@ -101,8 +101,6 @@ const addMessageCalls: Array<{
101
101
  }> = [];
102
102
 
103
103
  mock.module("../memory/conversation-crud.js", () => ({
104
- setConversationProcessingStartedAt: () => {},
105
- isConversationProcessing: () => false,
106
104
  setConversationOriginChannelIfUnset: () => {},
107
105
  updateConversationContextWindow: () => {},
108
106
  deleteMessageById: () => {},
@@ -119,8 +119,6 @@ mock.module("../security/secret-allowlist.js", () => ({
119
119
  }));
120
120
 
121
121
  mock.module("../memory/conversation-crud.js", () => ({
122
- setConversationProcessingStartedAt: () => {},
123
- isConversationProcessing: () => false,
124
122
  setConversationOriginChannelIfUnset: () => {},
125
123
  updateConversationContextWindow: () => {},
126
124
  deleteMessageById: () => {},
@@ -336,35 +336,6 @@ describe("task_progress surface compatibility", () => {
336
336
  });
337
337
  });
338
338
 
339
- test("ui_show file_upload normalizes a comma-joined acceptedTypes string", async () => {
340
- const sent: ServerMessage[] = [];
341
- const ctx = makeContext(sent);
342
-
343
- // The model may emit acceptedTypes as a comma-joined string; the renderer
344
- // calls `.join`/`.some` on it, so the daemon hands the client a clean array.
345
- const result = await surfaceProxyResolver(ctx, "ui_show", {
346
- surface_type: "file_upload",
347
- title: "Upload a receipt",
348
- data: {
349
- prompt: "Share the receipt",
350
- acceptedTypes: "image/*, application/pdf",
351
- },
352
- });
353
-
354
- expect(result.isError).toBe(false);
355
-
356
- const showMessage = sent.find(
357
- (msg): msg is UiSurfaceShow => msg.type === "ui_surface_show",
358
- );
359
- expect(showMessage).toBeDefined();
360
- if (!showMessage || showMessage.surfaceType !== "file_upload") return;
361
-
362
- expect(showMessage.data.acceptedTypes).toEqual([
363
- "image/*",
364
- "application/pdf",
365
- ]);
366
- });
367
-
368
339
  test("ui_show dynamic_page uses data.html when properly nested", async () => {
369
340
  const sent: ServerMessage[] = [];
370
341
  const ctx = makeContext(sent);
@@ -34,8 +34,6 @@ mock.module("../runtime/btw-sidechain.js", () => ({
34
34
  }));
35
35
 
36
36
  mock.module("../memory/conversation-crud.js", () => ({
37
- setConversationProcessingStartedAt: () => {},
38
- isConversationProcessing: () => false,
39
37
  getConversation: mockGetConversation,
40
38
  getMessages: mockGetMessages,
41
39
  updateConversationTitle: mockUpdateConversationTitle,
@@ -321,50 +321,3 @@ describe("createToolExecutor attribution threading", () => {
321
321
  expect(calls[0].context.attribution).toBeNull();
322
322
  });
323
323
  });
324
-
325
- describe("createToolExecutor isInteractive threading", () => {
326
- test("uses the resolved turn-level interactivity over live client state", async () => {
327
- // A scheduled/background turn (currentTurnIsNonInteractive=true) must read
328
- // as non-interactive even when a client is attached (hasNoClient=false), so
329
- // ask_question short-circuits instead of parking on the response backstop.
330
- const { executor, calls } = makeCapturingExecutor();
331
- const toolFn = makeToolFn(
332
- executor,
333
- makeCtx({ currentTurnIsNonInteractive: true, hasNoClient: false }),
334
- );
335
-
336
- await toolFn("file_read", { path: "/tmp/a" });
337
-
338
- expect(calls[0].context.isInteractive).toBe(false);
339
- });
340
-
341
- test("reflects an interactive turn as interactive", async () => {
342
- const { executor, calls } = makeCapturingExecutor();
343
- const toolFn = makeToolFn(
344
- executor,
345
- makeCtx({ currentTurnIsNonInteractive: false }),
346
- );
347
-
348
- await toolFn("file_read", { path: "/tmp/a" });
349
-
350
- expect(calls[0].context.isInteractive).toBe(true);
351
- });
352
-
353
- test("falls back to live client state when no turn value is set", async () => {
354
- // No in-flight turn resolution (e.g. tool execution outside runAgentLoop):
355
- // derive interactivity from whether a client is connected.
356
- const noClient = makeCapturingExecutor();
357
- await makeToolFn(
358
- noClient.executor,
359
- makeCtx({ currentTurnIsNonInteractive: undefined, hasNoClient: true }),
360
- )("file_read", { path: "/tmp/a" });
361
- expect(noClient.calls[0].context.isInteractive).toBe(false);
362
-
363
- const withClient = makeCapturingExecutor();
364
- await makeToolFn(
365
- withClient.executor,
366
- makeCtx({ currentTurnIsNonInteractive: undefined, hasNoClient: false }),
367
- )("file_read", { path: "/tmp/a" });
368
- expect(withClient.calls[0].context.isInteractive).toBe(true);
369
- });
370
- });
@@ -23,8 +23,6 @@ mock.module("../config/loader.js", () => ({
23
23
  }));
24
24
 
25
25
  mock.module("../memory/conversation-crud.js", () => ({
26
- setConversationProcessingStartedAt: () => {},
27
- isConversationProcessing: () => false,
28
26
  updateConversationUsage: (
29
27
  conversationId: string,
30
28
  inputTokens: number,
@@ -87,8 +87,6 @@ mock.module("../security/secret-allowlist.js", () => ({
87
87
  }));
88
88
 
89
89
  mock.module("../memory/conversation-crud.js", () => ({
90
- setConversationProcessingStartedAt: () => {},
91
- isConversationProcessing: () => false,
92
90
  setConversationOriginChannelIfUnset: () => {},
93
91
  setConversationHistoryStrippedAt: () => {},
94
92
  provenanceFromTrustContext: () => ({
@@ -111,8 +111,6 @@ mock.module("../security/secret-allowlist.js", () => ({
111
111
  }));
112
112
 
113
113
  mock.module("../memory/conversation-crud.js", () => ({
114
- setConversationProcessingStartedAt: () => {},
115
- isConversationProcessing: () => false,
116
114
  setConversationOriginChannelIfUnset: () => {},
117
115
  setConversationHistoryStrippedAt: () => {},
118
116
  provenanceFromTrustContext: () => ({
@@ -109,8 +109,6 @@ mock.module("../security/secret-allowlist.js", () => ({
109
109
  }));
110
110
 
111
111
  mock.module("../memory/conversation-crud.js", () => ({
112
- setConversationProcessingStartedAt: () => {},
113
- isConversationProcessing: () => false,
114
112
  setConversationOriginChannelIfUnset: () => {},
115
113
  setConversationHistoryStrippedAt: () => {},
116
114
  provenanceFromTrustContext: () => ({
@@ -182,7 +182,6 @@ describe("Invariant 2: no generic plaintext secret read API", () => {
182
182
  "daemon/handlers/config-slack-channel.ts", // Slack channel config credential management
183
183
  "providers/platform-proxy/context.ts", // managed proxy API key lookup for provider initialization
184
184
  "platform/client.ts", // platform client credential store fallback for standalone CLI auth
185
- "mcp/mcp-header-store.ts", // MCP static auth header persistence (credential store CRUD + legacy migration)
186
185
  "mcp/mcp-oauth-provider.ts", // MCP OAuth token/client/discovery persistence
187
186
  "runtime/routes/integrations/slack/token.ts", // shared Slack token resolver (bot/user token lookup for CLI use routes)
188
187
  "mcp/client.ts", // MCP client cached-token lookup
@@ -222,6 +221,7 @@ describe("Invariant 2: no generic plaintext secret read API", () => {
222
221
  "runtime/routes/sanity-routes.ts", // Sanity connect/discover routes (reads stored api_token from credential store)
223
222
  "runtime/routes/platform-routes.ts", // CLI platform connect/disconnect/status routes (CLI-migrated to IPC)
224
223
  "ipc/skill-routes/providers.ts", // host.providers.secureKeys.getProviderKey IPC route (out-of-process SkillHost companion)
224
+ "daemon/external-plugins-bootstrap.ts", // reads credentials at plugin init (manifest.requiresCredential) via the CES-mediated getSecureKeyAsync path
225
225
  "inbound/platform-callback-registration.ts", // managed credential lookup for platform base URL, assistant ID, and API key
226
226
  "tts/providers/elevenlabs-provider.ts", // ElevenLabs TTS API key lookup
227
227
  "tts/providers/deepgram-provider.ts", // Deepgram TTS API key lookup