@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
package/bun.lock CHANGED
@@ -38,7 +38,6 @@
38
38
  "playwright": "1.58.2",
39
39
  "postgres": "3.4.8",
40
40
  "quickjs-emscripten": "0.32.0",
41
- "re2js": "2.8.3",
42
41
  "rrule": "2.8.1",
43
42
  "semver": "7.8.0",
44
43
  "stemmer": "2.0.1",
@@ -55,7 +54,6 @@
55
54
  "@types/node": "25.5.0",
56
55
  "@types/semver": "7.5.8",
57
56
  "@types/uuid": "10.0.0",
58
- "@typescript/native-preview": "7.0.0-dev.20260624.1",
59
57
  "ajv": "8.18.0",
60
58
  "drizzle-kit": "0.31.10",
61
59
  "eslint": "10.0.3",
@@ -456,22 +454,6 @@
456
454
 
457
455
  "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.57.0", "", { "dependencies": { "@typescript-eslint/types": "8.57.0", "eslint-visitor-keys": "^5.0.0" } }, "sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg=="],
458
456
 
459
- "@typescript/native-preview": ["@typescript/native-preview@7.0.0-dev.20260624.1", "", { "optionalDependencies": { "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260624.1", "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260624.1", "@typescript/native-preview-linux-arm": "7.0.0-dev.20260624.1", "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260624.1", "@typescript/native-preview-linux-x64": "7.0.0-dev.20260624.1", "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260624.1", "@typescript/native-preview-win32-x64": "7.0.0-dev.20260624.1" }, "bin": { "tsgo": "bin/tsgo.js" } }, "sha512-ogwfNo1xuAutOF8RbTCo3Ut0q/65u2ucOeHizi6O14q+3vnelNS+u8qVC2QWXubMcwtuN5E9cbfPslvGC4kdwA=="],
460
-
461
- "@typescript/native-preview-darwin-arm64": ["@typescript/native-preview-darwin-arm64@7.0.0-dev.20260624.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-g8CqDkYCHTCYdhBHXs5cMraBurOS+KrcMFxE0SsaKZoI6Tnp+le1aWvxUBbzNKJYyThHJqb/1mLopzEJxJCuKA=="],
462
-
463
- "@typescript/native-preview-darwin-x64": ["@typescript/native-preview-darwin-x64@7.0.0-dev.20260624.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-P00JVvSV90eioYDuINAKmOSA8yhFTWLq6RvS5lrCfUuDlcgr2kSOgZAfFHIksHBVz6ZXpAXpa0dHPmc5SJ3Ymw=="],
464
-
465
- "@typescript/native-preview-linux-arm": ["@typescript/native-preview-linux-arm@7.0.0-dev.20260624.1", "", { "os": "linux", "cpu": "arm" }, "sha512-eWHELvfQMkVRjafMd+3ATgM9p9yAergJaM4AOY8AekCNWnHFwUrp/ohh+ryyMUIqque5jjb/kuTiOiGj728I2Q=="],
466
-
467
- "@typescript/native-preview-linux-arm64": ["@typescript/native-preview-linux-arm64@7.0.0-dev.20260624.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-cppM2yTZ/Gd1hOXy8NEJcUBxJ0O0zl9CU3OU1ZWZ/OHWWX/ukEzCCr94SUwJhjIWOylBCpIYkrvYoTwxNa94XQ=="],
468
-
469
- "@typescript/native-preview-linux-x64": ["@typescript/native-preview-linux-x64@7.0.0-dev.20260624.1", "", { "os": "linux", "cpu": "x64" }, "sha512-FaB8rS+rKYz4nDrEsHsF3b4cn7eCKCYroMJReA375OuQ6PHcmCNQ6QlVetA0dfFBxTTgejmoKyfw9xgAA5P4Yw=="],
470
-
471
- "@typescript/native-preview-win32-arm64": ["@typescript/native-preview-win32-arm64@7.0.0-dev.20260624.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-BgkqbCmSHDb5UxqWaFlFFJ/DHNT3lEUO4W8627ap6+QthJZuXk2imiHAX3PgYXC6en9fLLyR6jjcseAa4CCshg=="],
472
-
473
- "@typescript/native-preview-win32-x64": ["@typescript/native-preview-win32-x64@7.0.0-dev.20260624.1", "", { "os": "win32", "cpu": "x64" }, "sha512-WaZ+ue63NgB2j/lqjirfevh/TqcsCxSqnKhGGiRnlxHyYIBcoq+x7KngyEnyGIaywJE1PcFeXA+2EMSIPlSEiQ=="],
474
-
475
457
  "@vellumai/ces-client": ["@vellumai/ces-client@file:../packages/ces-client", { "dependencies": { "@vellumai/service-contracts": "file:../service-contracts" }, "devDependencies": { "@types/bun": "1.2.4", "typescript": "5.7.3" } }],
476
458
 
477
459
  "@vellumai/credential-storage": ["@vellumai/credential-storage@file:../packages/credential-storage", { "devDependencies": { "@types/bun": "1.3.10", "typescript": "5.9.3" } }],
@@ -1058,8 +1040,6 @@
1058
1040
 
1059
1041
  "rc": ["rc@1.2.8", "", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="],
1060
1042
 
1061
- "re2js": ["re2js@2.8.3", "", {}, "sha512-lUKeXVwMqU302DM/WaOm33XF2hhzjGUZ8CbLg4zSAMpW2PPkJ2+is25AROevNiw+DytFmKU5gsQ92cB1Kxy+fA=="],
1062
-
1063
1043
  "readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="],
1064
1044
 
1065
1045
  "real-require": ["real-require@0.2.0", "", {}, "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg=="],
@@ -5,9 +5,9 @@ add a brand-new one) by dropping a single file under their
5
5
  `<workspaceDir>/tools/` directory. The override survives assistant restarts,
6
6
  takes effect during the same startup phase as core tool initialization,
7
7
  and is recoverable: removing the file restores the original core behavior.
8
- Overrides are reconciled from disk on every conversation read, so edits
9
- under `tools/` take effect on the next conversation with no restart and no
10
- filesystem watcher.
8
+ When the `workspace-tools-watcher` feature flag is enabled, overrides are
9
+ also hot-reloaded by a filesystem watcher (no restart required after the
10
+ initial boot).
11
11
 
12
12
  This page explains the file convention, lifecycle position, and the
13
13
  "single canonical source per name" invariant the design is built around.
@@ -100,8 +100,8 @@ Workspace tools are the highest-priority origin in the tool registry:
100
100
 
101
101
  - **Same name as a core tool** → the original core tool is moved into an
102
102
  internal stash (`getCoreToolOverride(name)`) and the workspace tool takes
103
- its place. Removing the workspace file restores the original on the next
104
- reconcile — workspace tools are not destructive to the core baseline.
103
+ its place. Removing the workspace file causes the watcher to restore
104
+ the original — workspace tools are not destructive to the core baseline.
105
105
  - **Brand-new name** → registers as a net-new entry. No stash.
106
106
  - **`<name>.removed` sentinel for a core tool** → the core tool is
107
107
  stripped (stashed in the same map as override-style stashing) and no
@@ -128,44 +128,35 @@ on the incoming tool.
128
128
 
129
129
  ```
130
130
  initializeTools() # core tools register
131
- → loadWorkspaceTools() # initial workspace tool reconcile
131
+ → loadWorkspaceTools() # initial workspace tool scan
132
132
  → MCP tool registration
133
133
  → loadUserPlugins()
134
134
  → bootstrapPlugins()
135
135
 
136
- # on every conversation turn (createResolveToolsCallback):
137
- resolveTools(history)
138
- loadWorkspaceTools() # reconcile registry against disk (fire-and-forget)
139
- → getWorkspaceToolDefinitions() # re-read workspace tools from the registry
140
- → getMcpToolDefinitions() # re-read MCP tools (same pattern)
136
+ # after providers-setup completes:
137
+ DaemonServer.start()
138
+ WorkspaceToolsWatcher.getInstance().start() # hot register/unregister via fs.watch
141
139
  ```
142
140
 
143
141
  Workspace tools register _after_ core tools and _before_ every other
144
- extension surface during the initial reconcile so that every subsequent
145
- registration sees the workspace tool as already-owned. The initial
146
- reconcile always runs at boot, so workspace tools load from disk at every
147
- startup.
148
-
149
- There is no filesystem watcher. Instead, `loadWorkspaceTools()` is
150
- idempotent and is re-invoked by the per-turn tool resolver
151
- (`createResolveToolsCallback`), which then re-reads workspace tools from
152
- the registry the same way it re-reads MCP tools. Each reconcile re-derives
153
- the world from disk ("given what's on disk right now under `tools/`, what
154
- registry state should the assistant be in?") and applies the delta
155
- registering added files, re-importing changed files, unregistering deleted
156
- files, and restoring core tools whose `.removed` sentinel was deleted. A
157
- conversation therefore picks up on-disk edits on its next turn, with no
158
- restart and without being recreated.
159
-
160
- The reconcile is fire-and-forget and eventually consistent: an edit lands
161
- in the registry during one turn's reconcile and is read on a subsequent
162
- turn. Unchanged files are skipped via an mtime cache, so a no-op reconcile
163
- costs one `readdir` plus a `stat` per file and never re-imports. Concurrent
164
- callers coalesce onto a single in-flight reconcile so their
165
- unregister/register sequences never interleave. This is the same
166
- eventual-consistency, re-derive-from-disk approach the plugin loader's
167
- mtime cache uses, with the per-turn tool read — rather than a watcher —
168
- kicking the reconcile.
142
+ extension surface during the initial scan so that every subsequent
143
+ registration sees the workspace tool as already-owned. The initial scan
144
+ (`loadWorkspaceTools()`) always runs, so workspace tools load from disk
145
+ at every boot regardless of the flag.
146
+
147
+ The filesystem watcher is gated on the `workspace-tools-watcher` feature
148
+ flag (default off). When enabled, it runs for the lifetime of the
149
+ assistant, picking up add/change/delete events on `<workspaceDir>/tools/`
150
+ and reconciling the registry without requiring a restart. When disabled,
151
+ no watch loop is mounted and live edits to `<workspaceDir>/tools/` take
152
+ effect only on the next daemon restart. The flag is read at startup, so
153
+ toggling it takes effect on restart rather than mid-process.
154
+
155
+ The watcher debounces per filename stem and reconciles by re-deriving
156
+ the world from disk ("given what's on disk right now for `<stem>.*`,
157
+ what registry state should the assistant be in?") rather than routing
158
+ on `fs.watch`'s unreliable add/change/rename event types. This is the
159
+ same eventual-consistency pattern the plugin source watcher uses.
169
160
 
170
161
  ## Per-tool isolation
171
162
 
@@ -191,15 +182,15 @@ the whole call without partially populating the registry.
191
182
 
192
183
  ## Unregistering
193
184
 
194
- Deleting `<workspaceDir>/tools/<name>.{ts,js,json}` is picked up by the
195
- next reconcile, which calls `unregisterWorkspaceTool(name)` and restores
196
- the stashed core tool when one exists, or simply deletes the entry when
197
- the workspace tool was net-new. The change takes effect on the next
198
- conversation — no assistant restart is required.
185
+ Deleting `<workspaceDir>/tools/<name>.{ts,js,json}` triggers the file
186
+ watcher's reconcile, which calls `unregisterWorkspaceTool(name)` and
187
+ restores the stashed core tool when one exists, or simply deletes the
188
+ entry when the workspace tool was net-new. No assistant restart is
189
+ required.
199
190
 
200
191
  To strip a core tool without substituting a replacement, drop an empty
201
192
  `<workspaceDir>/tools/<name>.removed` file. Removing that sentinel
202
193
  restores the core tool on the next reconcile. The two states (override
203
194
  vs. strip) are mutually exclusive — placing both `<name>.ts` and
204
- `<name>.removed` for the same stem causes the reconcile to tear down
195
+ `<name>.removed` for the same stem causes the watcher to tear down
205
196
  both states until the conflict is resolved on disk.
@@ -51,17 +51,11 @@ const ALLOWED_PREFIXES = {
51
51
  "../../config/schema",
52
52
  "../../config/env",
53
53
  "../../util/platform",
54
- "../../../util/platform",
55
54
  // Memory retrospective — the retrospective CLI runs the fork-based
56
55
  // retrospective in-process (no daemon, no IPC), so it imports the
57
56
  // job handler directly. Depth-2 for commands/memory/ nesting.
58
57
  "../../memory/memory-retrospective-job",
59
58
  "../../../memory/memory-retrospective-job",
60
- // Memory worker control — the `memory worker` CLI spawns/probes/stops
61
- // the worker OS process directly (no daemon, no IPC), so it imports the
62
- // shared PID-file control helpers. Depth-2 for commands/memory/ nesting.
63
- "../../memory/worker-control",
64
- "../../../memory/worker-control",
65
59
  "../logger",
66
60
  "../output",
67
61
  "../../logger",
@@ -7,7 +7,6 @@ import { describe, expect, test } from "bun:test";
7
7
 
8
8
  import { SourceMetadataSchema } from "../inbound-contract.js";
9
9
  import {
10
- makeResolutionFailedVerdict,
11
10
  TrustVerdictSchema,
12
11
  type TrustVerdict,
13
12
  } from "../trust-verdict-contract.js";
@@ -44,36 +43,6 @@ describe("TrustVerdictSchema", () => {
44
43
  expect(TrustVerdictSchema.parse(minimal)).toEqual(minimal);
45
44
  });
46
45
 
47
- test("parses a verdict carrying resolutionFailed", () => {
48
- const verdict = {
49
- trustClass: "unknown",
50
- canonicalSenderId: null,
51
- resolutionFailed: true,
52
- } satisfies TrustVerdict;
53
- expect(TrustVerdictSchema.parse(verdict)).toEqual(verdict);
54
- });
55
-
56
- test("leaves resolutionFailed undefined when absent", () => {
57
- const parsed = TrustVerdictSchema.parse({
58
- trustClass: "unknown",
59
- canonicalSenderId: null,
60
- });
61
- expect(parsed.resolutionFailed).toBeUndefined();
62
- });
63
-
64
- test("makeResolutionFailedVerdict builds an unknown sentinel", () => {
65
- expect(makeResolutionFailedVerdict("+15555550100")).toEqual({
66
- trustClass: "unknown",
67
- canonicalSenderId: "+15555550100",
68
- resolutionFailed: true,
69
- });
70
- expect(makeResolutionFailedVerdict(null)).toEqual({
71
- trustClass: "unknown",
72
- canonicalSenderId: null,
73
- resolutionFailed: true,
74
- });
75
- });
76
-
77
46
  test("rejects an invalid trustClass", () => {
78
47
  expect(() =>
79
48
  TrustVerdictSchema.parse({
@@ -137,50 +137,6 @@ export type MarkChannelVerifiedIpcResponse = z.infer<
137
137
  typeof MarkChannelVerifiedIpcResponseSchema
138
138
  >;
139
139
 
140
- export const UpsertVerifiedChannelIpcParamsSchema = z.object({
141
- type: z.string().min(1),
142
- address: z.string().min(1),
143
- externalChatId: z.string().min(1),
144
- displayName: z.string().optional(),
145
- username: z.string().optional(),
146
- // Audit source for the verification. Free text (DB column is text) so the
147
- // invite-activation path can pass "invite"; do not narrow to an enum.
148
- verifiedVia: z.string().optional(),
149
- // Target contact to bind the channel to (invite redemption). When set, an
150
- // existing channel for the same (type,address) under a different contact is
151
- // reassigned to this contact, mirroring the assistant's
152
- // reassignConflictingChannels.
153
- contactId: z.string().min(1).optional(),
154
- // Relax the revoked refusal guard so a valid invite can reactivate a revoked
155
- // member. Blocked actors are refused regardless.
156
- allowRevokedReactivation: z.boolean().optional(),
157
- });
158
-
159
- export type UpsertVerifiedChannelIpcParams = z.infer<
160
- typeof UpsertVerifiedChannelIpcParamsSchema
161
- >;
162
-
163
- export const UpsertVerifiedChannelIpcResponseSchema = z.object({
164
- ok: z.boolean(),
165
- verified: z.boolean(),
166
- // Present only when verified — a blocked/revoked skip omits the channel.
167
- channel: z
168
- .object({
169
- id: z.string(),
170
- contactId: z.string(),
171
- type: z.string(),
172
- address: z.string(),
173
- status: z.string(),
174
- verifiedAt: z.number().nullable(),
175
- verifiedVia: z.string().nullable(),
176
- })
177
- .optional(),
178
- });
179
-
180
- export type UpsertVerifiedChannelIpcResponse = z.infer<
181
- typeof UpsertVerifiedChannelIpcResponseSchema
182
- >;
183
-
184
140
  export const MarkChannelRevokedIpcParamsSchema = z.object({
185
141
  contactChannelId: z.string().min(1),
186
142
  // Audit reason for the downgrade. The verification-revoke flow passes
@@ -73,7 +73,6 @@ export type { AdmissionPolicy } from "./admission-policy-contract.js";
73
73
 
74
74
  // Trust verdict contract (gateway → daemon) — Zod schemas + derived types
75
75
  export {
76
- makeResolutionFailedVerdict,
77
76
  ResolveInboundTrustRequestSchema,
78
77
  TRUST_CLASS_VALUES,
79
78
  TrustClassSchema,
@@ -85,16 +84,3 @@ export type {
85
84
  TrustClass,
86
85
  TrustVerdict,
87
86
  } from "./trust-verdict-contract.js";
88
-
89
- // Guardian delivery contract (daemon → gateway pull) — Zod schemas + derived types
90
- export {
91
- GuardianDeliverySchema,
92
- ResolveGuardianDeliveryRequestSchema,
93
- ResolveGuardianDeliveryResponseSchema,
94
- } from "./guardian-delivery-contract.js";
95
-
96
- export type {
97
- GuardianDelivery,
98
- ResolveGuardianDeliveryRequest,
99
- ResolveGuardianDeliveryResponse,
100
- } from "./guardian-delivery-contract.js";
@@ -42,11 +42,6 @@ export const TrustVerdictSchema = z.object({
42
42
  trustClass: TrustClassSchema,
43
43
  canonicalSenderId: z.string().nullable(),
44
44
 
45
- // Present+true ⇒ gateway attempted resolution but failed (DB error);
46
- // consumer treats it as "could not vouch", distinct from a real `unknown`
47
- // stranger.
48
- resolutionFailed: z.boolean().optional(),
49
-
50
45
  // Guardian binding — present only when a guardian binding matches.
51
46
  guardianExternalUserId: z.string().optional(),
52
47
  guardianDeliveryChatId: z.string().nullable().optional(),
@@ -68,18 +63,6 @@ export const TrustVerdictSchema = z.object({
68
63
 
69
64
  export type TrustVerdict = z.infer<typeof TrustVerdictSchema>;
70
65
 
71
- /**
72
- * Sentinel for a gateway resolver failure; consumers treat it as
73
- * could-not-vouch (distinct from a real `unknown` stranger). Takes the
74
- * already-canonicalized sender id so this module stays free of the gateway's
75
- * canonicalization util.
76
- */
77
- export function makeResolutionFailedVerdict(
78
- canonicalSenderId: string | null,
79
- ): TrustVerdict {
80
- return { trustClass: "unknown", canonicalSenderId, resolutionFailed: true };
81
- }
82
-
83
66
  /**
84
67
  * IPC request for `resolve_inbound_trust`. Per-actor identity keys the
85
68
  * gateway resolver needs to classify the inbound sender. The response reuses
@@ -6,7 +6,6 @@
6
6
  "type": "module",
7
7
  "exports": {
8
8
  ".": "./src/index.ts",
9
- "./channels": "./src/channels.ts",
10
9
  "./credential-rpc": "./src/credential-rpc.ts",
11
10
  "./ingress": "./src/ingress.ts",
12
11
  "./twilio-ingress": "./src/twilio-ingress.ts",
@@ -18,7 +18,6 @@
18
18
  * module so that both sides can depend on it without circular references.
19
19
  */
20
20
 
21
- export * from "./channels.js";
22
21
  export * from "./transport.js";
23
22
  export * from "./error.js";
24
23
  export * from "./handles.js";
package/openapi.yaml CHANGED
@@ -3973,8 +3973,6 @@ paths:
3973
3973
  anyOf:
3974
3974
  - type: string
3975
3975
  - type: "null"
3976
- resolutionFailed:
3977
- type: boolean
3978
3976
  guardianExternalUserId:
3979
3977
  type: string
3980
3978
  guardianDeliveryChatId:
@@ -8408,22 +8406,6 @@ paths:
8408
8406
  anyOf:
8409
8407
  - type: number
8410
8408
  - type: "null"
8411
- apiErrorCode:
8412
- anyOf:
8413
- - type: string
8414
- - type: "null"
8415
- apiErrorType:
8416
- anyOf:
8417
- - type: string
8418
- - type: "null"
8419
- apiErrorParam:
8420
- anyOf:
8421
- - type: string
8422
- - type: "null"
8423
- requestId:
8424
- anyOf:
8425
- - type: string
8426
- - type: "null"
8427
8409
  additionalProperties: false
8428
8410
  - type: "null"
8429
8411
  required:
@@ -14727,49 +14709,12 @@ paths:
14727
14709
  type: string
14728
14710
  disabled:
14729
14711
  type: boolean
14730
- headers:
14731
- type: object
14732
- propertyNames:
14733
- type: string
14734
- additionalProperties:
14735
- type: string
14736
14712
  required:
14737
14713
  - name
14738
14714
  - transportType
14739
14715
  responses:
14740
14716
  "200":
14741
14717
  description: Successful response
14742
- /v1/internal/mcp/auth/revoke:
14743
- post:
14744
- operationId: internal_mcp_auth_revoke_post
14745
- summary: Revoke MCP OAuth credentials
14746
- description: Deletes stored OAuth tokens for an MCP server and triggers a reload.
14747
- tags:
14748
- - internal
14749
- requestBody:
14750
- required: true
14751
- content:
14752
- application/json:
14753
- schema:
14754
- type: object
14755
- properties:
14756
- serverId:
14757
- type: string
14758
- required:
14759
- - serverId
14760
- responses:
14761
- "200":
14762
- description: Successful response
14763
- content:
14764
- application/json:
14765
- schema:
14766
- type: object
14767
- properties:
14768
- revoked:
14769
- type: boolean
14770
- required:
14771
- - revoked
14772
- additionalProperties: false
14773
14718
  /v1/internal/mcp/auth/start:
14774
14719
  post:
14775
14720
  operationId: internal_mcp_auth_start_post
@@ -14849,8 +14794,6 @@ paths:
14849
14794
  type: boolean
14850
14795
  defaultRiskLevel:
14851
14796
  type: string
14852
- hasOAuth:
14853
- type: boolean
14854
14797
  allowedTools:
14855
14798
  type: array
14856
14799
  items:
@@ -14865,7 +14808,6 @@ paths:
14865
14808
  - transport
14866
14809
  - enabled
14867
14810
  - defaultRiskLevel
14868
- - hasOAuth
14869
14811
  additionalProperties: false
14870
14812
  required:
14871
14813
  - servers
@@ -14994,14 +14936,6 @@ paths:
14994
14936
  items:
14995
14937
  type: string
14996
14938
  - type: "null"
14997
- headers:
14998
- anyOf:
14999
- - type: object
15000
- propertyNames:
15001
- type: string
15002
- additionalProperties:
15003
- type: string
15004
- - type: "null"
15005
14939
  required:
15006
14940
  - name
15007
14941
  responses:
@@ -15402,22 +15336,6 @@ paths:
15402
15336
  anyOf:
15403
15337
  - type: number
15404
15338
  - type: "null"
15405
- apiErrorCode:
15406
- anyOf:
15407
- - type: string
15408
- - type: "null"
15409
- apiErrorType:
15410
- anyOf:
15411
- - type: string
15412
- - type: "null"
15413
- apiErrorParam:
15414
- anyOf:
15415
- - type: string
15416
- - type: "null"
15417
- requestId:
15418
- anyOf:
15419
- - type: string
15420
- - type: "null"
15421
15339
  additionalProperties: false
15422
15340
  - type: "null"
15423
15341
  required:
@@ -17875,22 +17793,6 @@ paths:
17875
17793
  anyOf:
17876
17794
  - type: number
17877
17795
  - type: "null"
17878
- apiErrorCode:
17879
- anyOf:
17880
- - type: string
17881
- - type: "null"
17882
- apiErrorType:
17883
- anyOf:
17884
- - type: string
17885
- - type: "null"
17886
- apiErrorParam:
17887
- anyOf:
17888
- - type: string
17889
- - type: "null"
17890
- requestId:
17891
- anyOf:
17892
- - type: string
17893
- - type: "null"
17894
17796
  additionalProperties: false
17895
17797
  - type: "null"
17896
17798
  required:
@@ -19703,56 +19605,6 @@ paths:
19703
19605
  responses:
19704
19606
  "200":
19705
19607
  description: Successful response
19706
- /v1/onboarding/checkin:
19707
- post:
19708
- operationId: onboarding_checkin_post
19709
- summary: Schedule the onboarding Day 2 check-in
19710
- description:
19711
- "Find the first open 15-minute slot between 12pm and 5pm tomorrow (widening to 8am–8pm if booked) on the
19712
- user's Google Calendar and create the Day 2 Check-in event. Best-effort: returns scheduled=false when no
19713
- calendar is connected or the calendar scope wasn't granted."
19714
- tags:
19715
- - onboarding
19716
- requestBody:
19717
- required: true
19718
- content:
19719
- application/json:
19720
- schema:
19721
- type: object
19722
- properties:
19723
- userName:
19724
- type: string
19725
- assistantName:
19726
- type: string
19727
- timezone:
19728
- type: string
19729
- responses:
19730
- "200":
19731
- description: Successful response
19732
- content:
19733
- application/json:
19734
- schema:
19735
- type: object
19736
- properties:
19737
- scheduled:
19738
- type: boolean
19739
- reason:
19740
- type: string
19741
- eventId:
19742
- type: string
19743
- htmlLink:
19744
- anyOf:
19745
- - type: string
19746
- - type: "null"
19747
- start:
19748
- type: string
19749
- end:
19750
- type: string
19751
- timeZone:
19752
- type: string
19753
- required:
19754
- - scheduled
19755
- additionalProperties: false
19756
19608
  /v1/pages/{appId}:
19757
19609
  get:
19758
19610
  operationId: pages_by_appId_get
@@ -26126,13 +25978,6 @@ paths:
26126
25978
  type: boolean
26127
25979
  messageId:
26128
25980
  type: string
26129
- toolUseId:
26130
- type: string
26131
- input:
26132
- type: object
26133
- propertyNames:
26134
- type: string
26135
- additionalProperties: {}
26136
25981
  required:
26137
25982
  - type
26138
25983
  - content
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/assistant",
3
- "version": "0.10.2-dev.202606250318.5e7cfb0",
3
+ "version": "0.10.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -24,7 +24,6 @@
24
24
  "lint:circular": "bun run scripts/check-circular-deps.ts",
25
25
  "lint:unused:production": "knip --production --include exports",
26
26
  "typecheck": "bunx tsc --noEmit",
27
- "typecheck:fast": "bunx tsgo --noEmit",
28
27
  "test": "bash scripts/test.sh",
29
28
  "test:coverage": "COVERAGE=true bash scripts/test.sh",
30
29
  "test:stable": "EXCLUDE_EXPERIMENTAL=true bash scripts/test.sh",
@@ -67,7 +66,6 @@
67
66
  "playwright": "1.58.2",
68
67
  "postgres": "3.4.8",
69
68
  "quickjs-emscripten": "0.32.0",
70
- "re2js": "2.8.3",
71
69
  "rrule": "2.8.1",
72
70
  "semver": "7.8.0",
73
71
  "stemmer": "2.0.1",
@@ -107,7 +105,6 @@
107
105
  "@types/node": "25.5.0",
108
106
  "@types/semver": "7.5.8",
109
107
  "@types/uuid": "10.0.0",
110
- "@typescript/native-preview": "7.0.0-dev.20260624.1",
111
108
  "ajv": "8.18.0",
112
109
  "drizzle-kit": "0.31.10",
113
110
  "eslint": "10.0.3",