@vellumai/assistant 0.4.41 → 0.4.43

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 (843) hide show
  1. package/.env.example +1 -6
  2. package/.prettierignore +3 -0
  3. package/ARCHITECTURE.md +131 -393
  4. package/Dockerfile +0 -1
  5. package/README.md +73 -83
  6. package/bun.lock +8 -2
  7. package/docs/architecture/integrations.md +16 -21
  8. package/docs/architecture/memory.md +1 -1
  9. package/docs/architecture/scheduling.md +63 -63
  10. package/docs/architecture/security.md +3 -3
  11. package/docs/runbook-trusted-contacts.md +11 -12
  12. package/docs/trusted-contact-access.md +39 -39
  13. package/package.json +5 -8
  14. package/src/__tests__/access-request-decision.test.ts +4 -4
  15. package/src/__tests__/active-skill-tools.test.ts +49 -34
  16. package/src/__tests__/actor-token-service.test.ts +55 -85
  17. package/src/__tests__/amazon-cdp-integration.test.ts +14 -26
  18. package/src/__tests__/app-bundler.test.ts +14 -368
  19. package/src/__tests__/app-compiler.test.ts +0 -1
  20. package/src/__tests__/app-executors.test.ts +10 -1
  21. package/src/__tests__/approval-hardcoded-copy-guard.test.ts +1 -1
  22. package/src/__tests__/approval-primitive.test.ts +2 -4
  23. package/src/__tests__/approval-routes-http.test.ts +1 -1
  24. package/src/__tests__/asset-materialize-tool.test.ts +1 -4
  25. package/src/__tests__/asset-search-tool.test.ts +1 -4
  26. package/src/__tests__/assistant-attachments.test.ts +23 -0
  27. package/src/__tests__/assistant-feature-flags-integration.test.ts +4 -8
  28. package/src/__tests__/assistant-id-boundary-guard.test.ts +5 -5
  29. package/src/__tests__/attachments-store.test.ts +1 -4
  30. package/src/__tests__/avatar-e2e.test.ts +43 -23
  31. package/src/__tests__/browser-fill-credential.test.ts +1 -1
  32. package/src/__tests__/bundled-skill-retrieval-guard.test.ts +2 -9
  33. package/src/__tests__/call-controller.test.ts +4 -8
  34. package/src/__tests__/call-conversation-messages.test.ts +1 -1
  35. package/src/__tests__/call-domain.test.ts +250 -8
  36. package/src/__tests__/call-pointer-message-composer.test.ts +14 -14
  37. package/src/__tests__/call-pointer-messages.test.ts +7 -11
  38. package/src/__tests__/call-recovery.test.ts +47 -0
  39. package/src/__tests__/call-routes-http.test.ts +13 -0
  40. package/src/__tests__/call-start-guardian-guard.test.ts +1 -1
  41. package/src/__tests__/callback-handoff-copy.test.ts +5 -5
  42. package/src/__tests__/canonical-guardian-store.test.ts +3 -3
  43. package/src/__tests__/channel-approval-routes.test.ts +101 -134
  44. package/src/__tests__/channel-approval.test.ts +0 -201
  45. package/src/__tests__/channel-approvals.test.ts +2 -2
  46. package/src/__tests__/channel-delivery-store.test.ts +16 -24
  47. package/src/__tests__/channel-guardian.test.ts +641 -740
  48. package/src/__tests__/channel-invite-transport.test.ts +1 -2
  49. package/src/__tests__/channel-policy.test.ts +9 -12
  50. package/src/__tests__/channel-readiness-service.test.ts +156 -45
  51. package/src/__tests__/channel-reply-delivery.test.ts +3 -3
  52. package/src/__tests__/channel-retry-sweep.test.ts +7 -7
  53. package/src/__tests__/checker.test.ts +10 -7
  54. package/src/__tests__/chrome-cdp.test.ts +57 -17
  55. package/src/__tests__/cli-help-reference-sync.test.ts +26 -0
  56. package/src/__tests__/compaction.benchmark.test.ts +25 -5
  57. package/src/__tests__/computer-use-session-lifecycle.test.ts +1 -1
  58. package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
  59. package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +1 -1
  60. package/src/__tests__/config-loader-backfill.test.ts +310 -0
  61. package/src/__tests__/config-watcher.test.ts +1 -5
  62. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +3 -5
  63. package/src/__tests__/connection-policy.test.ts +3 -62
  64. package/src/__tests__/contacts-tools.test.ts +0 -2
  65. package/src/__tests__/context-memory-e2e.test.ts +11 -7
  66. package/src/__tests__/context-overflow-policy.test.ts +2 -2
  67. package/src/__tests__/context-window-manager.test.ts +220 -61
  68. package/src/__tests__/conversation-attention-store.test.ts +178 -2
  69. package/src/__tests__/conversation-attention-telegram.test.ts +8 -11
  70. package/src/__tests__/conversation-pairing.test.ts +14 -14
  71. package/src/__tests__/conversation-routes-guardian-reply.test.ts +1 -1
  72. package/src/__tests__/conversation-store.test.ts +2 -2
  73. package/src/__tests__/conversation-unread-route.test.ts +155 -0
  74. package/src/__tests__/credential-metadata-store.test.ts +0 -2
  75. package/src/__tests__/credential-security-invariants.test.ts +9 -16
  76. package/src/__tests__/credentials-cli.test.ts +49 -5
  77. package/src/__tests__/daemon-assistant-events.test.ts +4 -22
  78. package/src/__tests__/db-migration-rollback.test.ts +2 -2
  79. package/src/__tests__/deterministic-verification-control-plane.test.ts +19 -19
  80. package/src/__tests__/dictation-mode-detection.test.ts +1 -1
  81. package/src/__tests__/dynamic-page-surface.test.ts +2 -2
  82. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +2 -6
  83. package/src/__tests__/email-cli.test.ts +12 -12
  84. package/src/__tests__/email-service-config-fallback.test.ts +1 -1
  85. package/src/__tests__/emit-signal-routing-intent.test.ts +3 -18
  86. package/src/__tests__/event-bus.test.ts +0 -1
  87. package/src/__tests__/followup-tools.test.ts +0 -2
  88. package/src/__tests__/gateway-client-managed-outbound.test.ts +6 -6
  89. package/src/__tests__/gateway-only-enforcement.test.ts +13 -77
  90. package/src/__tests__/gateway-only-guard.test.ts +5 -0
  91. package/src/__tests__/guardian-action-conversation-turn.test.ts +3 -3
  92. package/src/__tests__/guardian-action-followup-executor.test.ts +29 -94
  93. package/src/__tests__/guardian-action-followup-store.test.ts +2 -12
  94. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +48 -194
  95. package/src/__tests__/guardian-action-late-reply.test.ts +12 -12
  96. package/src/__tests__/guardian-action-store.test.ts +2 -2
  97. package/src/__tests__/guardian-action-sweep.test.ts +5 -5
  98. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +1 -3
  99. package/src/__tests__/guardian-dispatch.test.ts +5 -46
  100. package/src/__tests__/guardian-grant-minting.test.ts +5 -44
  101. package/src/__tests__/guardian-outbound-http.test.ts +95 -114
  102. package/src/__tests__/guardian-question-mode.test.ts +1 -4
  103. package/src/__tests__/guardian-routing-invariants.test.ts +5 -13
  104. package/src/__tests__/guardian-routing-state.test.ts +3 -3
  105. package/src/__tests__/guardian-verification-voice-binding.test.ts +64 -7
  106. package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +2 -2
  107. package/src/__tests__/handle-user-message-secret-resume.test.ts +3 -5
  108. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +16 -34
  109. package/src/__tests__/headless-browser-interactions.test.ts +1 -1
  110. package/src/__tests__/headless-browser-navigate.test.ts +1 -1
  111. package/src/__tests__/headless-browser-read-tools.test.ts +1 -1
  112. package/src/__tests__/headless-browser-snapshot.test.ts +1 -1
  113. package/src/__tests__/heartbeat-service.test.ts +1 -1
  114. package/src/__tests__/home-base-bootstrap.test.ts +0 -2
  115. package/src/__tests__/host-shell-tool.test.ts +3 -12
  116. package/src/__tests__/inbound-invite-redemption.test.ts +2 -2
  117. package/src/__tests__/ingress-url-consistency.test.ts +0 -64
  118. package/src/__tests__/integration-status.test.ts +8 -8
  119. package/src/__tests__/intent-routing.test.ts +9 -13
  120. package/src/__tests__/invite-redemption-service.test.ts +4 -4
  121. package/src/__tests__/invite-routes-http.test.ts +10 -10
  122. package/src/__tests__/llm-usage-store.test.ts +45 -9
  123. package/src/__tests__/local-gateway-health.test.ts +209 -0
  124. package/src/__tests__/managed-avatar-client.test.ts +23 -12
  125. package/src/__tests__/managed-skill-lifecycle.test.ts +1 -2
  126. package/src/__tests__/managed-store.test.ts +29 -12
  127. package/src/__tests__/managed-twitter-guardrails.test.ts +353 -0
  128. package/src/__tests__/mcp-cli.test.ts +1 -1
  129. package/src/__tests__/mcp-health-check.test.ts +1 -1
  130. package/src/__tests__/media-generate-image.test.ts +1 -1
  131. package/src/__tests__/media-reuse-story.e2e.test.ts +1 -4
  132. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +9 -6
  133. package/src/__tests__/memory-regressions.test.ts +1 -166
  134. package/src/__tests__/messaging-send-tool.test.ts +8 -4
  135. package/src/__tests__/migration-export-http.test.ts +2 -2
  136. package/src/__tests__/migration-transport.test.ts +44 -0
  137. package/src/__tests__/non-member-access-request.test.ts +49 -36
  138. package/src/__tests__/notification-broadcaster.test.ts +15 -15
  139. package/src/__tests__/notification-decision-fallback.test.ts +2 -2
  140. package/src/__tests__/notification-decision-strategy.test.ts +4 -4
  141. package/src/__tests__/notification-deep-link.test.ts +3 -3
  142. package/src/__tests__/notification-guardian-path.test.ts +6 -44
  143. package/src/__tests__/notification-routing-intent.test.ts +11 -7
  144. package/src/__tests__/oauth-cli.test.ts +1 -1
  145. package/src/__tests__/onboarding-starter-tasks.test.ts +2 -6
  146. package/src/__tests__/onboarding-template-contract.test.ts +2 -2
  147. package/src/__tests__/platform.test.ts +168 -5
  148. package/src/__tests__/playbook-execution.test.ts +0 -2
  149. package/src/__tests__/playbook-tools.test.ts +0 -2
  150. package/src/__tests__/pricing.test.ts +125 -0
  151. package/src/__tests__/provider-error-scenarios.test.ts +9 -3
  152. package/src/__tests__/recording-handler.test.ts +46 -80
  153. package/src/__tests__/recording-state-machine.test.ts +112 -183
  154. package/src/__tests__/registry.test.ts +1 -1
  155. package/src/__tests__/relay-server.test.ts +69 -71
  156. package/src/__tests__/reminder-store.test.ts +3 -3
  157. package/src/__tests__/request-file-tool.test.ts +2 -2
  158. package/src/__tests__/ride-shotgun-handler.test.ts +2 -33
  159. package/src/__tests__/runtime-attachment-metadata.test.ts +3 -3
  160. package/src/__tests__/runtime-events-sse-parity.test.ts +1 -1
  161. package/src/__tests__/scaffold-managed-skill-tool.test.ts +4 -4
  162. package/src/__tests__/schedule-store.test.ts +13 -4
  163. package/src/__tests__/schedule-tools.test.ts +0 -2
  164. package/src/__tests__/scheduler-recurrence.test.ts +3 -4
  165. package/src/__tests__/scoped-approval-grants.test.ts +3 -5
  166. package/src/__tests__/scoped-grant-security-matrix.test.ts +6 -8
  167. package/src/__tests__/secret-prompt-log-hygiene.test.ts +1 -1
  168. package/src/__tests__/secret-response-routing.test.ts +1 -1
  169. package/src/__tests__/send-endpoint-busy.test.ts +1 -1
  170. package/src/__tests__/sequence-store.test.ts +0 -2
  171. package/src/__tests__/server-history-render.test.ts +2 -199
  172. package/src/__tests__/session-abort-tool-results.test.ts +9 -3
  173. package/src/__tests__/session-agent-loop.test.ts +107 -3
  174. package/src/__tests__/session-confirmation-signals.test.ts +10 -4
  175. package/src/__tests__/session-conflict-gate.test.ts +9 -3
  176. package/src/__tests__/session-init.benchmark.test.ts +22 -13
  177. package/src/__tests__/session-load-history-repair.test.ts +6 -3
  178. package/src/__tests__/session-pre-run-repair.test.ts +9 -3
  179. package/src/__tests__/session-profile-injection.test.ts +9 -3
  180. package/src/__tests__/session-provider-retry-repair.test.ts +10 -4
  181. package/src/__tests__/session-queue.test.ts +10 -4
  182. package/src/__tests__/session-runtime-assembly.test.ts +28 -18
  183. package/src/__tests__/session-skill-tools.test.ts +2 -3
  184. package/src/__tests__/session-slash-known.test.ts +11 -4
  185. package/src/__tests__/session-slash-queue.test.ts +11 -4
  186. package/src/__tests__/session-slash-unknown.test.ts +12 -4
  187. package/src/__tests__/session-surfaces-deselection.test.ts +2 -2
  188. package/src/__tests__/session-surfaces-task-progress.test.ts +3 -3
  189. package/src/__tests__/session-tool-setup-app-refresh.test.ts +1 -1
  190. package/src/__tests__/session-tool-setup-memory-scope.test.ts +1 -1
  191. package/src/__tests__/session-tool-setup-side-effect-flag.test.ts +1 -1
  192. package/src/__tests__/session-usage.test.ts +180 -0
  193. package/src/__tests__/session-workspace-cache-state.test.ts +8 -2
  194. package/src/__tests__/session-workspace-injection.test.ts +8 -2
  195. package/src/__tests__/session-workspace-tool-tracking.test.ts +8 -2
  196. package/src/__tests__/skill-feature-flags-integration.test.ts +5 -11
  197. package/src/__tests__/skill-feature-flags.test.ts +1 -0
  198. package/src/__tests__/skill-include-graph.test.ts +1 -0
  199. package/src/__tests__/skill-load-feature-flag.test.ts +3 -9
  200. package/src/__tests__/skill-load-tool.test.ts +90 -12
  201. package/src/__tests__/skill-projection-feature-flag.test.ts +14 -15
  202. package/src/__tests__/skills-uninstall.test.ts +131 -0
  203. package/src/__tests__/skills.test.ts +32 -16
  204. package/src/__tests__/slack-block-formatting.test.ts +1 -1
  205. package/src/__tests__/slack-channel-config.test.ts +71 -12
  206. package/src/__tests__/slack-inbound-verification.test.ts +7 -7
  207. package/src/__tests__/slack-share-routes.test.ts +1 -1
  208. package/src/__tests__/slack-skill.test.ts +2 -2
  209. package/src/__tests__/slash-commands-catalog.test.ts +1 -0
  210. package/src/__tests__/slash-commands-resolver.test.ts +1 -0
  211. package/src/__tests__/starter-task-flow.test.ts +1 -1
  212. package/src/__tests__/subagent-manager-notify.test.ts +1 -1
  213. package/src/__tests__/subagent-tools.test.ts +2 -2
  214. package/src/__tests__/system-prompt.test.ts +4 -8
  215. package/src/__tests__/task-compiler.test.ts +0 -2
  216. package/src/__tests__/task-management-tools.test.ts +0 -2
  217. package/src/__tests__/task-runner.test.ts +0 -2
  218. package/src/__tests__/task-scheduler.test.ts +2 -2
  219. package/src/__tests__/telegram-bot-username-resolution.test.ts +46 -44
  220. package/src/__tests__/terminal-tools.test.ts +1 -11
  221. package/src/__tests__/thread-seed-composer.test.ts +3 -1
  222. package/src/__tests__/tool-approval-handler.test.ts +5 -7
  223. package/src/__tests__/tool-executor.test.ts +2 -2
  224. package/src/__tests__/tool-grant-request-escalation.test.ts +3 -5
  225. package/src/__tests__/tool-notification-listener.test.ts +1 -1
  226. package/src/__tests__/tool-profiling-listener.test.ts +1 -1
  227. package/src/__tests__/tool-trace-listener.test.ts +1 -2
  228. package/src/__tests__/trace-emitter.test.ts +1 -1
  229. package/src/__tests__/trust-context-guards.test.ts +1 -1
  230. package/src/__tests__/trust-store.test.ts +44 -395
  231. package/src/__tests__/trusted-contact-approval-notifier.test.ts +6 -8
  232. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +5 -7
  233. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +6 -6
  234. package/src/__tests__/trusted-contact-multichannel.test.ts +54 -47
  235. package/src/__tests__/trusted-contact-verification.test.ts +12 -12
  236. package/src/__tests__/twilio-config.test.ts +11 -2
  237. package/src/__tests__/twilio-provider.test.ts +6 -4
  238. package/src/__tests__/twilio-routes.test.ts +408 -86
  239. package/src/__tests__/twitter-platform-proxy-client.test.ts +450 -0
  240. package/src/__tests__/update-bulletin-format.test.ts +1 -1
  241. package/src/__tests__/update-bulletin-state.test.ts +1 -1
  242. package/src/__tests__/update-bulletin.test.ts +4 -8
  243. package/src/__tests__/update-template-contract.test.ts +1 -1
  244. package/src/__tests__/usage-cache-backfill-migration.test.ts +406 -0
  245. package/src/__tests__/usage-routes.test.ts +23 -5
  246. package/src/__tests__/user-reference.test.ts +1 -1
  247. package/src/__tests__/{guardian-control-plane-policy.test.ts → verification-control-plane-policy.test.ts} +142 -170
  248. package/src/__tests__/{guardian-verification-intent-routing.test.ts → verification-session-intent-routing.test.ts} +16 -16
  249. package/src/__tests__/view-image-tool.test.ts +0 -2
  250. package/src/__tests__/voice-ingress-preflight.test.ts +36 -0
  251. package/src/__tests__/voice-invite-redemption.test.ts +18 -18
  252. package/src/__tests__/voice-scoped-grant-consumer.test.ts +7 -7
  253. package/src/__tests__/voice-session-bridge.test.ts +14 -16
  254. package/src/__tests__/workspace-policy.test.ts +1 -1
  255. package/src/approvals/AGENTS.md +4 -4
  256. package/src/approvals/approval-primitive.ts +2 -2
  257. package/src/approvals/guardian-decision-primitive.ts +1 -1
  258. package/src/approvals/guardian-request-resolvers.ts +3 -4
  259. package/src/bundler/app-bundler.ts +29 -217
  260. package/src/bundler/app-compiler.ts +131 -103
  261. package/src/bundler/compiler-tools.ts +248 -0
  262. package/src/calls/active-call-lease.ts +207 -0
  263. package/src/calls/call-constants.ts +0 -7
  264. package/src/calls/call-controller.ts +1 -1
  265. package/src/calls/call-conversation-messages.ts +6 -6
  266. package/src/calls/call-domain.ts +73 -38
  267. package/src/calls/call-pointer-message-composer.ts +6 -6
  268. package/src/calls/call-pointer-messages.ts +14 -13
  269. package/src/calls/call-recovery.ts +2 -0
  270. package/src/calls/call-store.ts +21 -28
  271. package/src/calls/guardian-action-sweep.ts +6 -8
  272. package/src/calls/guardian-dispatch.ts +2 -6
  273. package/src/calls/relay-access-wait.ts +4 -4
  274. package/src/calls/relay-server.ts +69 -80
  275. package/src/calls/relay-setup-router.ts +16 -21
  276. package/src/calls/relay-verification.ts +27 -28
  277. package/src/calls/twilio-config.ts +28 -3
  278. package/src/calls/twilio-provider.ts +5 -5
  279. package/src/calls/twilio-rest.ts +26 -27
  280. package/src/calls/twilio-routes.ts +67 -54
  281. package/src/calls/types.ts +8 -8
  282. package/src/calls/voice-ingress-preflight.ts +110 -0
  283. package/src/calls/voice-session-bridge.ts +7 -7
  284. package/src/channels/config.ts +1 -10
  285. package/src/{config/channel-permission-profiles.ts → channels/permission-profiles.ts} +1 -1
  286. package/src/channels/types.ts +2 -13
  287. package/src/cli/__tests__/notifications.test.ts +1 -1
  288. package/src/{amazon → cli/commands/amazon}/client.ts +99 -42
  289. package/src/cli/{amazon.ts → commands/amazon/index.ts} +12 -17
  290. package/src/{amazon → cli/commands/amazon}/request-extractor.ts +39 -3
  291. package/src/cli/commands/amazon/session.ts +116 -0
  292. package/src/cli/{audit.ts → commands/audit.ts} +2 -4
  293. package/src/cli/{autonomy.ts → commands/autonomy.ts} +1 -3
  294. package/src/cli/commands/browser-relay.ts +520 -0
  295. package/src/cli/commands/channel-verification-sessions.ts +442 -0
  296. package/src/cli/{completions.ts → commands/completions.ts} +1 -3
  297. package/src/cli/{config.ts → commands/config.ts} +3 -5
  298. package/src/cli/{contacts.ts → commands/contacts.ts} +263 -16
  299. package/src/cli/{credentials.ts → commands/credentials.ts} +9 -10
  300. package/src/cli/{default-action.ts → commands/default-action.ts} +3 -3
  301. package/src/cli/{dev.ts → commands/dev.ts} +4 -6
  302. package/src/cli/{doctor.ts → commands/doctor.ts} +36 -60
  303. package/src/cli/{email.ts → commands/email.ts} +2 -2
  304. package/src/cli/{keys.ts → commands/keys.ts} +6 -6
  305. package/src/cli/{map.ts → commands/map.ts} +85 -93
  306. package/src/cli/{mcp.ts → commands/mcp.ts} +5 -7
  307. package/src/cli/{memory.ts → commands/memory.ts} +6 -7
  308. package/src/cli/{notifications.ts → commands/notifications.ts} +8 -10
  309. package/src/cli/{oauth.ts → commands/oauth.ts} +2 -2
  310. package/src/cli/commands/platform.ts +176 -0
  311. package/src/cli/{sequence.ts → commands/sequence.ts} +3 -3
  312. package/src/cli/{sessions.ts → commands/sessions.ts} +32 -52
  313. package/src/cli/commands/skills.ts +498 -0
  314. package/src/cli/{trust.ts → commands/trust.ts} +2 -4
  315. package/src/{__tests__/twitter-cli-error-shaping.test.ts → cli/commands/twitter/__tests__/cli-error-shaping.test.ts} +43 -2
  316. package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +483 -0
  317. package/src/{__tests__/twitter-cli-routing.test.ts → cli/commands/twitter/__tests__/cli-routing.test.ts} +130 -4
  318. package/src/{__tests__/twitter-oauth-client.test.ts → cli/commands/twitter/__tests__/oauth-client.test.ts} +2 -2
  319. package/src/{twitter → cli/commands/twitter}/client.ts +17 -7
  320. package/src/cli/{twitter.ts → commands/twitter/index.ts} +322 -273
  321. package/src/cli/commands/twitter/router.ts +396 -0
  322. package/src/cli/commands/twitter/session.ts +121 -0
  323. package/src/cli/db.ts +1 -0
  324. package/src/cli/http-client.ts +87 -0
  325. package/src/cli/logger.ts +6 -0
  326. package/src/cli/main-screen.tsx +4 -3
  327. package/src/cli/output.ts +19 -0
  328. package/src/cli/program.ts +29 -27
  329. package/src/cli/reference.ts +27 -37
  330. package/src/cli.ts +452 -240
  331. package/src/config/assistant-feature-flags.ts +3 -15
  332. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +3 -6
  333. package/src/config/bundled-skills/agentmail/SKILL.md +4 -4
  334. package/src/config/bundled-skills/amazon/SKILL.md +15 -5
  335. package/src/config/bundled-skills/api-mapping/SKILL.md +4 -4
  336. package/src/config/bundled-skills/app-builder/SKILL.md +21 -6
  337. package/src/config/bundled-skills/browser/SKILL.md +4 -5
  338. package/src/config/bundled-skills/chatgpt-import/SKILL.md +4 -4
  339. package/src/config/bundled-skills/chatgpt-import/tools/chatgpt-import.ts +1 -1
  340. package/src/config/bundled-skills/claude-code/SKILL.md +4 -4
  341. package/src/config/bundled-skills/cli-discover/SKILL.md +4 -4
  342. package/src/config/bundled-skills/computer-use/SKILL.md +4 -4
  343. package/src/config/bundled-skills/contacts/SKILL.md +87 -229
  344. package/src/config/bundled-skills/deploy-fullstack-vercel/SKILL.md +4 -4
  345. package/src/config/bundled-skills/document/SKILL.md +4 -3
  346. package/src/config/bundled-skills/document-writer/SKILL.md +4 -4
  347. package/src/config/bundled-skills/doordash/SKILL.md +4 -11
  348. package/src/config/bundled-skills/doordash/__tests__/doordash-session.test.ts +8 -16
  349. package/src/config/bundled-skills/doordash/doordash-cli.ts +120 -86
  350. package/src/config/bundled-skills/doordash/lib/session.ts +1 -2
  351. package/src/config/bundled-skills/doordash/lib/shared/platform.ts +26 -9
  352. package/src/config/bundled-skills/elevenlabs-voice/SKILL.md +140 -0
  353. package/src/config/bundled-skills/email-setup/SKILL.md +4 -4
  354. package/src/config/bundled-skills/followups/SKILL.md +4 -3
  355. package/src/config/bundled-skills/frontend-design/SKILL.md +2 -0
  356. package/src/config/bundled-skills/google-calendar/SKILL.md +4 -4
  357. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +4 -6
  358. package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +26 -41
  359. package/src/config/bundled-skills/image-studio/SKILL.md +4 -5
  360. package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +1 -1
  361. package/src/config/bundled-skills/influencer/SKILL.md +19 -19
  362. package/src/{influencer → config/bundled-skills/influencer/scripts}/client.ts +73 -56
  363. package/src/config/bundled-skills/influencer/scripts/influencer.ts +267 -0
  364. package/src/config/bundled-skills/knowledge-graph/SKILL.md +4 -2
  365. package/src/config/bundled-skills/macos-automation/SKILL.md +4 -5
  366. package/src/config/bundled-skills/mcp-setup/SKILL.md +4 -4
  367. package/src/config/bundled-skills/media-processing/SKILL.md +3 -2
  368. package/src/config/bundled-skills/messaging/SKILL.md +6 -33
  369. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +0 -5
  370. package/src/config/bundled-skills/notifications/SKILL.md +4 -4
  371. package/src/config/bundled-skills/notion/SKILL.md +4 -4
  372. package/src/config/bundled-skills/notion-oauth-setup/SKILL.md +4 -5
  373. package/src/config/bundled-skills/oauth-setup/SKILL.md +4 -5
  374. package/src/config/bundled-skills/phone-calls/SKILL.md +24 -458
  375. package/src/config/bundled-skills/phone-calls/references/CONFIG.md +83 -0
  376. package/src/config/bundled-skills/phone-calls/references/TRANSCRIPTS.md +57 -0
  377. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +67 -0
  378. package/src/config/bundled-skills/playbooks/SKILL.md +4 -3
  379. package/src/config/bundled-skills/public-ingress/SKILL.md +65 -14
  380. package/src/config/bundled-skills/reminder/SKILL.md +4 -3
  381. package/src/config/bundled-skills/restaurant-reservation/SKILL.md +4 -6
  382. package/src/config/bundled-skills/schedule/SKILL.md +4 -3
  383. package/src/config/bundled-skills/screen-recording/SKILL.md +4 -3
  384. package/src/config/bundled-skills/self-upgrade/SKILL.md +4 -4
  385. package/src/config/bundled-skills/skills-catalog/SKILL.md +4 -4
  386. package/src/config/bundled-skills/slack/SKILL.md +4 -8
  387. package/src/config/bundled-skills/slack/tools/slack-channel-permissions.ts +1 -1
  388. package/src/config/bundled-skills/slack-app-setup/SKILL.md +66 -88
  389. package/src/config/bundled-skills/slack-digest-setup/SKILL.md +4 -5
  390. package/src/config/bundled-skills/slack-oauth-setup/SKILL.md +4 -5
  391. package/src/config/bundled-skills/start-the-day/SKILL.md +4 -4
  392. package/src/config/bundled-skills/subagent/SKILL.md +4 -3
  393. package/src/config/bundled-skills/tasks/SKILL.md +4 -3
  394. package/src/config/bundled-skills/telegram-setup/SKILL.md +63 -112
  395. package/src/config/bundled-skills/time-based-actions/SKILL.md +4 -3
  396. package/src/config/bundled-skills/transcribe/SKILL.md +4 -3
  397. package/src/config/bundled-skills/twilio-setup/SKILL.md +23 -50
  398. package/src/config/bundled-skills/twitter/SKILL.md +56 -14
  399. package/src/config/bundled-skills/typescript-eval/SKILL.md +4 -4
  400. package/src/config/bundled-skills/vercel-token-setup/SKILL.md +4 -5
  401. package/src/config/bundled-skills/voice-setup/SKILL.md +19 -45
  402. package/src/config/bundled-skills/watcher/SKILL.md +4 -3
  403. package/src/config/env-registry.ts +1 -10
  404. package/src/config/feature-flag-registry.json +0 -16
  405. package/src/config/loader.ts +78 -38
  406. package/src/config/schema.ts +143 -106
  407. package/src/config/schemas/channels.ts +80 -0
  408. package/src/config/schemas/heartbeat.ts +51 -0
  409. package/src/config/schemas/inference.ts +136 -0
  410. package/src/config/schemas/ingress.ts +81 -0
  411. package/src/config/schemas/logging.ts +21 -0
  412. package/src/config/schemas/memory-lifecycle.ts +67 -0
  413. package/src/config/schemas/memory-processing.ts +215 -0
  414. package/src/config/schemas/memory-retrieval.ts +222 -0
  415. package/src/config/schemas/memory-storage.ts +83 -0
  416. package/src/config/schemas/memory.ts +58 -0
  417. package/src/config/schemas/platform.ts +64 -0
  418. package/src/config/schemas/security.ts +54 -0
  419. package/src/config/schemas/swarm.ts +50 -0
  420. package/src/config/schemas/timeouts.ts +47 -0
  421. package/src/config/{agent-schema.ts → schemas/workspace-git.ts} +0 -97
  422. package/src/config/skill-state.ts +3 -13
  423. package/src/config/skills.ts +233 -75
  424. package/src/config/types.ts +1 -20
  425. package/src/contacts/contact-store.ts +12 -49
  426. package/src/contacts/contacts-write.ts +1 -5
  427. package/src/contacts/index.ts +0 -2
  428. package/src/contacts/types.ts +0 -8
  429. package/src/context/window-manager.ts +73 -14
  430. package/src/daemon/assistant-attachments.ts +9 -0
  431. package/src/daemon/computer-use-session.ts +3 -3
  432. package/src/daemon/connection-policy.ts +6 -21
  433. package/src/daemon/context-overflow-policy.ts +1 -1
  434. package/src/daemon/daemon-control.ts +46 -54
  435. package/src/daemon/doordash-steps.ts +1 -1
  436. package/src/daemon/handlers/config-channels.ts +407 -71
  437. package/src/daemon/handlers/config-ingress.ts +17 -85
  438. package/src/daemon/handlers/config-model.ts +145 -123
  439. package/src/daemon/handlers/config-slack-channel.ts +43 -29
  440. package/src/daemon/handlers/config-telegram.ts +32 -27
  441. package/src/daemon/handlers/config-voice.ts +1 -4
  442. package/src/daemon/handlers/dictation.ts +11 -16
  443. package/src/daemon/handlers/identity.ts +5 -6
  444. package/src/daemon/handlers/pairing.ts +5 -13
  445. package/src/daemon/handlers/recording.ts +97 -199
  446. package/src/daemon/handlers/session-history.ts +110 -96
  447. package/src/daemon/handlers/session-user-message.ts +29 -57
  448. package/src/daemon/handlers/sessions.ts +240 -137
  449. package/src/daemon/handlers/shared.ts +62 -95
  450. package/src/daemon/handlers/skills.ts +492 -543
  451. package/src/daemon/lifecycle.ts +168 -55
  452. package/src/daemon/main.ts +1 -0
  453. package/src/daemon/{ipc-contract.ts → message-protocol.ts} +49 -49
  454. package/src/daemon/{ipc-contract → message-types}/computer-use.ts +0 -3
  455. package/src/daemon/{ipc-contract → message-types}/diagnostics.ts +0 -16
  456. package/src/daemon/{ipc-contract → message-types}/integrations.ts +29 -13
  457. package/src/daemon/{ipc-contract → message-types}/memory.ts +8 -0
  458. package/src/daemon/{ipc-contract → message-types}/notifications.ts +15 -1
  459. package/src/daemon/{ipc-contract → message-types}/sessions.ts +1 -0
  460. package/src/daemon/{ipc-contract → message-types}/shared.ts +0 -8
  461. package/src/daemon/{ipc-contract → message-types}/workspace.ts +2 -2
  462. package/src/daemon/providers-setup.ts +0 -5
  463. package/src/daemon/recording-executor.ts +0 -7
  464. package/src/daemon/ride-shotgun-handler.ts +9 -13
  465. package/src/daemon/server.ts +136 -510
  466. package/src/daemon/session-agent-loop-handlers.ts +22 -7
  467. package/src/daemon/session-agent-loop.ts +86 -24
  468. package/src/daemon/session-attachments.ts +1 -1
  469. package/src/daemon/session-error.ts +1 -1
  470. package/src/daemon/session-history.ts +20 -15
  471. package/src/daemon/session-lifecycle.ts +9 -7
  472. package/src/daemon/session-memory.ts +15 -1
  473. package/src/daemon/session-messaging.ts +10 -6
  474. package/src/daemon/session-notifiers.ts +10 -8
  475. package/src/daemon/session-process.ts +34 -25
  476. package/src/daemon/session-queue-manager.ts +1 -1
  477. package/src/daemon/session-runtime-assembly.ts +6 -25
  478. package/src/daemon/session-surfaces.ts +2 -2
  479. package/src/daemon/session-tool-setup.ts +1 -1
  480. package/src/daemon/session-usage.ts +119 -18
  481. package/src/daemon/session.ts +13 -9
  482. package/src/daemon/tool-side-effects.ts +6 -5
  483. package/src/daemon/trace-emitter.ts +1 -1
  484. package/src/daemon/{guardian-verification-intent.ts → verification-session-intent.ts} +16 -16
  485. package/src/daemon/watch-handler.ts +2 -5
  486. package/src/email/service.ts +8 -8
  487. package/src/events/domain-events.ts +0 -1
  488. package/src/events/tool-notification-listener.ts +1 -1
  489. package/src/followups/followup-store.ts +1 -2
  490. package/src/followups/types.ts +0 -6
  491. package/src/heartbeat/heartbeat-service.ts +1 -1
  492. package/src/inbound/platform-callback-registration.ts +1 -1
  493. package/src/inbound/public-ingress-urls.ts +0 -8
  494. package/src/index.ts +12 -0
  495. package/src/mcp/client.ts +1 -1
  496. package/src/mcp/manager.ts +1 -1
  497. package/src/memory/app-store.ts +1 -42
  498. package/src/memory/{guardian-verification.ts → channel-verification-sessions.ts} +110 -93
  499. package/src/memory/conversation-attention-store.ts +154 -0
  500. package/src/memory/conversation-bootstrap.ts +1 -1
  501. package/src/memory/conversation-crud.ts +53 -1
  502. package/src/memory/conversation-display-order-migration.ts +2 -3
  503. package/src/memory/conversation-queries.ts +1 -29
  504. package/src/memory/conversation-title-service.ts +26 -21
  505. package/src/memory/db-connection.ts +1 -8
  506. package/src/memory/db-init.ts +20 -0
  507. package/src/memory/delivery-crud.ts +4 -34
  508. package/src/memory/external-conversation-store.ts +1 -1
  509. package/src/memory/format-recall.ts +47 -0
  510. package/src/memory/guardian-action-store.ts +4 -5
  511. package/src/memory/guardian-rate-limits.ts +0 -3
  512. package/src/memory/invite-store.ts +1 -1
  513. package/src/memory/job-handlers/backfill.ts +9 -2
  514. package/src/memory/job-handlers/extraction.ts +2 -7
  515. package/src/memory/job-handlers/summarization.ts +1 -1
  516. package/src/memory/llm-usage-store.ts +11 -0
  517. package/src/memory/migrations/114-notifications.ts +12 -40
  518. package/src/memory/migrations/140-backfill-usage-cache-accounting.ts +357 -0
  519. package/src/memory/migrations/141-rename-verification-table.ts +55 -0
  520. package/src/memory/migrations/142-rename-verification-session-id-column.ts +32 -0
  521. package/src/memory/migrations/143-rename-guardian-verification-values.ts +48 -0
  522. package/src/memory/migrations/144-rename-voice-to-phone.ts +147 -0
  523. package/src/memory/migrations/index.ts +5 -0
  524. package/src/memory/migrations/registry.ts +30 -0
  525. package/src/memory/qdrant-circuit-breaker.ts +5 -0
  526. package/src/memory/retriever.test.ts +707 -0
  527. package/src/memory/retriever.ts +120 -116
  528. package/src/memory/schema/calls.ts +3 -7
  529. package/src/memory/schema/guardian.ts +2 -2
  530. package/src/memory/search/lexical.ts +4 -1
  531. package/src/memory/search/query-expansion.test.ts +70 -0
  532. package/src/memory/search/query-expansion.ts +118 -0
  533. package/src/memory/search/types.ts +18 -17
  534. package/src/messaging/providers/telegram-bot/adapter.ts +1 -1
  535. package/src/messaging/providers/whatsapp/adapter.ts +1 -4
  536. package/src/messaging/registry.ts +0 -1
  537. package/src/notifications/README.md +13 -22
  538. package/src/notifications/adapters/macos.ts +1 -1
  539. package/src/notifications/conversation-pairing.ts +2 -2
  540. package/src/notifications/copy-composer.ts +2 -2
  541. package/src/notifications/decision-engine.ts +1 -10
  542. package/src/notifications/destination-resolver.ts +2 -3
  543. package/src/notifications/emit-signal.ts +2 -8
  544. package/src/notifications/guardian-question-mode.ts +5 -8
  545. package/src/notifications/signal.ts +1 -2
  546. package/src/notifications/types.ts +1 -1
  547. package/src/oauth/token-persistence.ts +25 -1
  548. package/src/permissions/checker.ts +4 -29
  549. package/src/permissions/defaults.ts +6 -6
  550. package/src/permissions/prompter.ts +1 -1
  551. package/src/permissions/secret-prompter.ts +1 -1
  552. package/src/permissions/shell-identity.ts +1 -1
  553. package/src/permissions/trust-store.ts +13 -76
  554. package/src/permissions/workspace-policy.ts +1 -1
  555. package/src/{config → prompts}/computer-use-prompt.ts +1 -1
  556. package/src/{config → prompts}/system-prompt.ts +40 -21
  557. package/src/runtime/AGENTS.md +6 -8
  558. package/src/runtime/access-request-helper.ts +36 -55
  559. package/src/runtime/actor-trust-resolver.ts +1 -24
  560. package/src/runtime/approval-message-composer.ts +6 -2
  561. package/src/runtime/assistant-event.ts +1 -1
  562. package/src/runtime/auth/__tests__/ipc-auth-context.test.ts +1 -1
  563. package/src/runtime/auth/__tests__/subject.test.ts +32 -0
  564. package/src/runtime/auth/route-policy.ts +140 -24
  565. package/src/runtime/auth/subject.ts +9 -0
  566. package/src/runtime/auth/token-service.ts +11 -0
  567. package/src/runtime/auth/types.ts +1 -1
  568. package/src/runtime/channel-approval-types.ts +1 -1
  569. package/src/runtime/channel-approvals.ts +1 -1
  570. package/src/runtime/channel-invite-transport.ts +0 -2
  571. package/src/runtime/channel-invite-transports/slack.ts +5 -19
  572. package/src/runtime/channel-invite-transports/telegram.ts +17 -34
  573. package/src/runtime/channel-invite-transports/voice.ts +1 -1
  574. package/src/runtime/channel-readiness-service.ts +24 -159
  575. package/src/runtime/channel-readiness-types.ts +5 -1
  576. package/src/runtime/channel-reply-delivery.ts +43 -3
  577. package/src/runtime/channel-retry-sweep.ts +14 -22
  578. package/src/runtime/{channel-guardian-service.ts → channel-verification-service.ts} +50 -53
  579. package/src/runtime/confirmation-request-guardian-bridge.ts +2 -3
  580. package/src/runtime/gateway-client.ts +12 -15
  581. package/src/runtime/guardian-action-followup-executor.ts +8 -73
  582. package/src/runtime/guardian-action-grant-minter.ts +45 -61
  583. package/src/runtime/guardian-action-message-composer.ts +4 -4
  584. package/src/runtime/guardian-reply-router.ts +3 -3
  585. package/src/runtime/http-server.ts +133 -24
  586. package/src/runtime/http-types.ts +34 -1
  587. package/src/runtime/invite-instruction-generator.ts +1 -3
  588. package/src/runtime/invite-redemption-service.ts +5 -5
  589. package/src/runtime/invite-service.ts +7 -7
  590. package/src/runtime/local-actor-identity.ts +28 -2
  591. package/src/runtime/local-gateway-health.ts +275 -0
  592. package/src/runtime/middleware/twilio-validation.ts +3 -3
  593. package/src/runtime/migrations/migration-transport.ts +18 -3
  594. package/src/runtime/migrations/rebind-secrets-screen.ts +2 -2
  595. package/src/runtime/nl-approval-parser.ts +2 -3
  596. package/src/runtime/routes/access-request-decision.ts +2 -2
  597. package/src/runtime/routes/app-management-routes.ts +921 -0
  598. package/src/runtime/routes/approval-routes.ts +76 -7
  599. package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +38 -203
  600. package/src/runtime/routes/channel-delivery-routes.ts +5 -4
  601. package/src/runtime/routes/channel-route-shared.ts +1 -3
  602. package/src/runtime/routes/channel-routes.ts +1 -4
  603. package/src/runtime/routes/channel-verification-routes.ts +257 -0
  604. package/src/runtime/routes/computer-use-routes.ts +595 -0
  605. package/src/runtime/routes/contact-routes.ts +1 -317
  606. package/src/runtime/routes/conversation-attention-routes.ts +6 -5
  607. package/src/runtime/routes/conversation-routes.ts +11 -18
  608. package/src/runtime/routes/debug-routes.ts +1 -1
  609. package/src/runtime/routes/diagnostics-routes.ts +813 -0
  610. package/src/runtime/routes/documents-routes.ts +227 -0
  611. package/src/runtime/routes/guardian-approval-interception.ts +25 -48
  612. package/src/runtime/routes/guardian-bootstrap-routes.ts +3 -3
  613. package/src/runtime/routes/guardian-expiry-sweep.ts +2 -2
  614. package/src/runtime/routes/guardian-refresh-routes.ts +11 -6
  615. package/src/runtime/routes/inbound-conversation.ts +3 -10
  616. package/src/runtime/routes/inbound-message-handler.ts +7 -6
  617. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +22 -22
  618. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +44 -0
  619. package/src/runtime/routes/inbound-stages/background-dispatch.ts +140 -22
  620. package/src/runtime/routes/inbound-stages/bootstrap-intercept.ts +4 -4
  621. package/src/runtime/routes/inbound-stages/edit-intercept.ts +5 -5
  622. package/src/runtime/routes/inbound-stages/escalation-intercept.ts +3 -3
  623. package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +4 -4
  624. package/src/runtime/routes/inbound-stages/verification-intercept.ts +13 -14
  625. package/src/runtime/routes/integrations/slack/channel.ts +72 -0
  626. package/src/runtime/routes/{slack-share-routes.ts → integrations/slack/share.ts} +9 -9
  627. package/src/runtime/routes/integrations/telegram.ts +111 -0
  628. package/src/runtime/routes/integrations/twilio.ts +451 -0
  629. package/src/runtime/routes/invite-routes.ts +2 -2
  630. package/src/runtime/routes/pairing-routes.ts +1 -1
  631. package/src/runtime/routes/recording-routes.ts +332 -0
  632. package/src/{daemon/handlers/config-scheduling.ts → runtime/routes/schedule-routes.ts} +91 -106
  633. package/src/runtime/routes/session-management-routes.ts +167 -0
  634. package/src/runtime/routes/session-query-routes.ts +204 -0
  635. package/src/runtime/routes/settings-routes.ts +977 -0
  636. package/src/runtime/routes/skills-routes.ts +266 -0
  637. package/src/runtime/routes/subagents-routes.ts +246 -0
  638. package/src/runtime/routes/surface-action-routes.ts +100 -10
  639. package/src/runtime/routes/surface-content-routes.ts +1 -1
  640. package/src/runtime/routes/work-items-routes.ts +809 -0
  641. package/src/runtime/routes/workspace-routes.test.ts +778 -0
  642. package/src/runtime/routes/workspace-routes.ts +410 -0
  643. package/src/runtime/routes/workspace-utils.ts +88 -0
  644. package/src/runtime/telegram-streaming-delivery.test.ts +597 -0
  645. package/src/runtime/telegram-streaming-delivery.ts +380 -0
  646. package/src/runtime/tool-grant-request-helper.ts +1 -2
  647. package/src/runtime/trust-context-resolver.ts +0 -1
  648. package/src/runtime/{guardian-outbound-actions.ts → verification-outbound-actions.ts} +23 -188
  649. package/src/runtime/verification-rate-limiter.ts +2 -2
  650. package/src/runtime/{guardian-verification-templates.ts → verification-templates.ts} +2 -28
  651. package/src/schedule/integration-status.ts +2 -2
  652. package/src/schedule/schedule-store.ts +7 -9
  653. package/src/sequence/engine.ts +1 -1
  654. package/src/skills/active-skill-tools.ts +0 -8
  655. package/src/skills/clawhub.ts +1 -10
  656. package/src/skills/managed-store.ts +14 -4
  657. package/src/skills/slash-commands.ts +1 -1
  658. package/src/subagent/manager.ts +1 -1
  659. package/src/subagent/types.ts +1 -1
  660. package/src/tasks/SPEC.md +10 -10
  661. package/src/tasks/task-scheduler.ts +1 -1
  662. package/src/telegram/bot-username.ts +13 -0
  663. package/src/tools/assets/materialize.ts +1 -1
  664. package/src/tools/assets/search.ts +1 -1
  665. package/src/tools/browser/browser-execution.ts +2 -2
  666. package/src/tools/browser/browser-manager.ts +88 -11
  667. package/src/tools/browser/browser-screencast.ts +1 -1
  668. package/src/tools/browser/headless-browser.ts +0 -17
  669. package/src/tools/browser/jit-auth.ts +1 -1
  670. package/src/tools/browser/recording-store.ts +19 -1
  671. package/src/tools/browser/runtime-check.ts +4 -2
  672. package/src/tools/calls/call-start.ts +3 -3
  673. package/src/tools/credentials/metadata-store.ts +0 -13
  674. package/src/tools/credentials/vault.ts +7 -31
  675. package/src/tools/followups/followup_create.ts +0 -8
  676. package/src/tools/mcp/mcp-tool-factory.ts +1 -1
  677. package/src/tools/memory/definitions.ts +32 -10
  678. package/src/tools/memory/handlers.test.ts +573 -0
  679. package/src/tools/memory/handlers.ts +222 -65
  680. package/src/tools/memory/register.ts +53 -24
  681. package/src/tools/network/script-proxy/session-manager.ts +1 -12
  682. package/src/tools/schedule/update.ts +0 -8
  683. package/src/tools/skills/load.ts +3 -3
  684. package/src/tools/subagent/read.ts +1 -1
  685. package/src/tools/system/voice-config.ts +2 -14
  686. package/src/tools/terminal/safe-env.ts +5 -18
  687. package/src/tools/tool-approval-handler.ts +4 -4
  688. package/src/tools/tool-manifest.ts +4 -2
  689. package/src/tools/types.ts +1 -1
  690. package/src/tools/{guardian-control-plane-policy.ts → verification-control-plane-policy.ts} +37 -39
  691. package/src/twitter/platform-proxy-client.ts +405 -0
  692. package/src/usage/types.ts +21 -0
  693. package/src/util/canonicalize-identity.ts +2 -6
  694. package/src/util/cookie-session.ts +35 -51
  695. package/src/util/platform.ts +93 -86
  696. package/src/util/pricing.ts +180 -43
  697. package/src/work-items/work-item-runner.ts +1 -1
  698. package/scripts/ipc/check-contract-inventory.ts +0 -107
  699. package/scripts/ipc/check-swift-decoder-drift.ts +0 -184
  700. package/scripts/ipc/generate-swift.ts +0 -528
  701. package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +0 -3043
  702. package/src/__tests__/app-migration.test.ts +0 -148
  703. package/src/__tests__/config-loader-migration.test.ts +0 -85
  704. package/src/__tests__/daemon-lifecycle.test.ts +0 -715
  705. package/src/__tests__/daemon-server-session-init.test.ts +0 -864
  706. package/src/__tests__/guardian-actions-endpoint.test.ts +0 -1452
  707. package/src/__tests__/handlers-add-trust-rule-metadata.test.ts +0 -228
  708. package/src/__tests__/handlers-cu-observation-blob.test.ts +0 -397
  709. package/src/__tests__/handlers-ipc-blob-probe.test.ts +0 -218
  710. package/src/__tests__/handlers-slack-config.test.ts +0 -140
  711. package/src/__tests__/handlers-telegram-config.test.ts +0 -1317
  712. package/src/__tests__/handlers-twitter-config.test.ts +0 -1145
  713. package/src/__tests__/ingress-reconcile.test.ts +0 -606
  714. package/src/__tests__/integrations-cli.test.ts +0 -232
  715. package/src/__tests__/ipc-blob-store.test.ts +0 -329
  716. package/src/__tests__/ipc-contract-inventory.test.ts +0 -69
  717. package/src/__tests__/ipc-contract.test.ts +0 -76
  718. package/src/__tests__/ipc-protocol.test.ts +0 -120
  719. package/src/__tests__/ipc-roundtrip.benchmark.test.ts +0 -250
  720. package/src/__tests__/ipc-snapshot.test.ts +0 -2197
  721. package/src/__tests__/ipc-validate.test.ts +0 -471
  722. package/src/__tests__/migration-cli-flows.test.ts +0 -186
  723. package/src/__tests__/migration-ordering.test.ts +0 -267
  724. package/src/__tests__/oauth-connect-handler.test.ts +0 -361
  725. package/src/__tests__/platform-move-helper.test.ts +0 -108
  726. package/src/__tests__/platform-socket-path.test.ts +0 -52
  727. package/src/__tests__/platform-workspace-migration.test.ts +0 -1051
  728. package/src/__tests__/recording-intent-handler.test.ts +0 -1155
  729. package/src/__tests__/script-proxy-profile-template-fallback.test.ts +0 -127
  730. package/src/__tests__/sms-messaging-provider.test.ts +0 -156
  731. package/src/__tests__/tool-permission-simulate-handler.test.ts +0 -367
  732. package/src/__tests__/twitter-auth-handler.test.ts +0 -561
  733. package/src/__tests__/work-item-output.test.ts +0 -150
  734. package/src/amazon/session.ts +0 -58
  735. package/src/cli/channels.ts +0 -51
  736. package/src/cli/influencer.ts +0 -319
  737. package/src/cli/integrations.ts +0 -372
  738. package/src/cli/ipc-client.ts +0 -88
  739. package/src/config/bundled-skills/configure-settings/SKILL.md +0 -86
  740. package/src/config/bundled-skills/doordash/lib/shared/ipc.ts +0 -32
  741. package/src/config/bundled-skills/sms-setup/SKILL.md +0 -210
  742. package/src/config/core-schema.ts +0 -434
  743. package/src/config/memory-schema.ts +0 -617
  744. package/src/daemon/auth-manager.ts +0 -106
  745. package/src/daemon/handlers/apps.ts +0 -758
  746. package/src/daemon/handlers/avatar.ts +0 -73
  747. package/src/daemon/handlers/browser.ts +0 -3
  748. package/src/daemon/handlers/computer-use.ts +0 -231
  749. package/src/daemon/handlers/config-dispatch.ts +0 -29
  750. package/src/daemon/handlers/config-heartbeat.ts +0 -299
  751. package/src/daemon/handlers/config-inbox.ts +0 -457
  752. package/src/daemon/handlers/config-integrations.ts +0 -409
  753. package/src/daemon/handlers/config-platform.ts +0 -77
  754. package/src/daemon/handlers/config-slack.ts +0 -41
  755. package/src/daemon/handlers/config-tools.ts +0 -226
  756. package/src/daemon/handlers/config-trust.ts +0 -135
  757. package/src/daemon/handlers/config.ts +0 -64
  758. package/src/daemon/handlers/contacts.ts +0 -193
  759. package/src/daemon/handlers/diagnostics.ts +0 -382
  760. package/src/daemon/handlers/documents.ts +0 -188
  761. package/src/daemon/handlers/guardian-actions.ts +0 -82
  762. package/src/daemon/handlers/home-base.ts +0 -82
  763. package/src/daemon/handlers/index.ts +0 -222
  764. package/src/daemon/handlers/misc.ts +0 -1139
  765. package/src/daemon/handlers/navigate-settings.ts +0 -29
  766. package/src/daemon/handlers/oauth-connect.ts +0 -202
  767. package/src/daemon/handlers/open-bundle-handler.ts +0 -88
  768. package/src/daemon/handlers/publish.ts +0 -176
  769. package/src/daemon/handlers/signing.ts +0 -56
  770. package/src/daemon/handlers/subagents.ts +0 -286
  771. package/src/daemon/handlers/twitter-auth.ts +0 -220
  772. package/src/daemon/handlers/work-items.ts +0 -796
  773. package/src/daemon/handlers/workspace-files.ts +0 -84
  774. package/src/daemon/handlers.ts +0 -16
  775. package/src/daemon/ipc-blob-store.ts +0 -246
  776. package/src/daemon/ipc-contract-inventory.json +0 -348
  777. package/src/daemon/ipc-contract-inventory.ts +0 -202
  778. package/src/daemon/ipc-handler.ts +0 -120
  779. package/src/daemon/ipc-protocol.ts +0 -85
  780. package/src/daemon/ipc-validate.ts +0 -254
  781. package/src/memory/app-migration.ts +0 -114
  782. package/src/memory/channel-delivery-store.ts +0 -40
  783. package/src/memory/channel-guardian-store.ts +0 -83
  784. package/src/memory/conversation-store.ts +0 -102
  785. package/src/memory/schema-migration.ts +0 -38
  786. package/src/messaging/providers/sms/adapter.ts +0 -232
  787. package/src/messaging/providers/sms/client.ts +0 -93
  788. package/src/messaging/providers/sms/types.ts +0 -7
  789. package/src/migrations/config-merge.ts +0 -62
  790. package/src/migrations/data-layout.ts +0 -89
  791. package/src/migrations/data-merge.ts +0 -44
  792. package/src/migrations/hooks-merge.ts +0 -118
  793. package/src/migrations/index.ts +0 -6
  794. package/src/migrations/log.ts +0 -28
  795. package/src/migrations/skills-merge.ts +0 -44
  796. package/src/migrations/workspace-layout.ts +0 -94
  797. package/src/notifications/adapters/sms.ts +0 -94
  798. package/src/runtime/channel-approval-parser.ts +0 -123
  799. package/src/runtime/channel-invite-transports/sms.ts +0 -53
  800. package/src/runtime/routes/approval-strategies/guardian-legacy-fallback-strategy.ts +0 -82
  801. package/src/runtime/routes/integration-routes.ts +0 -381
  802. package/src/runtime/routes/twilio-routes.ts +0 -1251
  803. package/src/twitter/router.ts +0 -131
  804. package/src/twitter/session.ts +0 -54
  805. package/src/watcher/providers/slack.ts +0 -282
  806. /package/src/{amazon → cli/commands/amazon}/cart.ts +0 -0
  807. /package/src/{amazon → cli/commands/amazon}/checkout.ts +0 -0
  808. /package/src/{amazon → cli/commands/amazon}/product-details.ts +0 -0
  809. /package/src/{amazon → cli/commands/amazon}/search.ts +0 -0
  810. /package/src/{twitter → cli/commands/twitter}/oauth-client.ts +0 -0
  811. /package/src/config/{calls-schema.ts → schemas/calls.ts} +0 -0
  812. /package/src/config/{elevenlabs-schema.ts → schemas/elevenlabs.ts} +0 -0
  813. /package/src/config/{mcp-schema.ts → schemas/mcp.ts} +0 -0
  814. /package/src/config/{notifications-schema.ts → schemas/notifications.ts} +0 -0
  815. /package/src/config/{sandbox-schema.ts → schemas/sandbox.ts} +0 -0
  816. /package/src/config/{skills-schema.ts → schemas/skills.ts} +0 -0
  817. /package/src/daemon/{ipc-contract → message-types}/apps.ts +0 -0
  818. /package/src/daemon/{ipc-contract → message-types}/browser.ts +0 -0
  819. /package/src/daemon/{ipc-contract → message-types}/contacts.ts +0 -0
  820. /package/src/daemon/{ipc-contract → message-types}/documents.ts +0 -0
  821. /package/src/daemon/{ipc-contract → message-types}/guardian-actions.ts +0 -0
  822. /package/src/daemon/{ipc-contract → message-types}/inbox.ts +0 -0
  823. /package/src/daemon/{ipc-contract → message-types}/messages.ts +0 -0
  824. /package/src/daemon/{ipc-contract → message-types}/pairing.ts +0 -0
  825. /package/src/daemon/{ipc-contract → message-types}/schedules.ts +0 -0
  826. /package/src/daemon/{ipc-contract → message-types}/settings.ts +0 -0
  827. /package/src/daemon/{ipc-contract → message-types}/skills.ts +0 -0
  828. /package/src/daemon/{ipc-contract → message-types}/subagents.ts +0 -0
  829. /package/src/daemon/{ipc-contract → message-types}/surfaces.ts +0 -0
  830. /package/src/daemon/{ipc-contract → message-types}/trust.ts +0 -0
  831. /package/src/daemon/{ipc-contract → message-types}/work-items.ts +0 -0
  832. /package/src/{cli/email-guardrails.ts → email/guardrails.ts} +0 -0
  833. /package/src/{config → prompts}/__tests__/build-cli-reference-section.test.ts +0 -0
  834. /package/src/{config → prompts}/templates/BOOTSTRAP.md +0 -0
  835. /package/src/{config → prompts}/templates/IDENTITY.md +0 -0
  836. /package/src/{config → prompts}/templates/SOUL.md +0 -0
  837. /package/src/{config → prompts}/templates/UPDATES.md +0 -0
  838. /package/src/{config → prompts}/templates/USER.md +0 -0
  839. /package/src/{config → prompts}/update-bulletin-format.ts +0 -0
  840. /package/src/{config → prompts}/update-bulletin-state.ts +0 -0
  841. /package/src/{config → prompts}/update-bulletin-template-path.ts +0 -0
  842. /package/src/{config → prompts}/update-bulletin.ts +0 -0
  843. /package/src/{config → prompts}/user-reference.ts +0 -0
@@ -193,7 +193,7 @@ describe("tool manifest", () => {
193
193
 
194
194
  test("explicit tools list includes memory, credential, and watch tools", () => {
195
195
  const names = explicitTools.map((t) => t.name);
196
- expect(names).toContain("memory_search");
196
+ expect(names).toContain("memory_recall");
197
197
  expect(names).toContain("memory_save");
198
198
  expect(names).toContain("memory_update");
199
199
  expect(names).toContain("credential_store");
@@ -68,8 +68,8 @@ mock.module("../daemon/identity-helpers.js", () => ({
68
68
 
69
69
  let mockUserReference = "my human";
70
70
  // eslint-disable-next-line @typescript-eslint/no-require-imports
71
- const realUserReference = require("../config/user-reference.js");
72
- mock.module("../config/user-reference.js", () => ({
71
+ const realUserReference = require("../prompts/user-reference.js");
72
+ mock.module("../prompts/user-reference.js", () => ({
73
73
  ...realUserReference,
74
74
  resolveUserReference: () => mockUserReference,
75
75
  resolveUserPronouns: () => null,
@@ -199,17 +199,17 @@ import {
199
199
  resolveCanonicalGuardianRequest,
200
200
  } from "../memory/canonical-guardian-store.js";
201
201
  import {
202
- createChallenge,
202
+ createInboundSession,
203
203
  createVerificationSession,
204
- } from "../memory/channel-guardian-store.js";
205
- import { addMessage, getMessages } from "../memory/conversation-store.js";
204
+ } from "../memory/channel-verification-sessions.js";
205
+ import { addMessage, getMessages } from "../memory/conversation-crud.js";
206
206
  import { getDb, initializeDb, resetDb, resetTestTables } from "../memory/db.js";
207
207
  import { createInvite } from "../memory/invite-store.js";
208
208
  import { conversations } from "../memory/schema.js";
209
209
  import {
210
210
  createOutboundSession,
211
211
  getGuardianBinding,
212
- } from "../runtime/channel-guardian-service.js";
212
+ } from "../runtime/channel-verification-service.js";
213
213
  import { generateVoiceCode, hashVoiceCode } from "../util/voice-code.js";
214
214
 
215
215
  initializeDb();
@@ -280,7 +280,7 @@ function resetTables() {
280
280
  "messages",
281
281
  "conversations",
282
282
  "assistant_ingress_invites",
283
- "channel_guardian_verification_challenges",
283
+ "channel_verification_sessions",
284
284
  "channel_guardian_rate_limits",
285
285
  "canonical_guardian_requests",
286
286
  "canonical_guardian_deliveries",
@@ -292,7 +292,7 @@ function resetTables() {
292
292
 
293
293
  function addTrustedVoiceContact(phoneNumber: string): void {
294
294
  upsertContactChannel({
295
- sourceChannel: "voice",
295
+ sourceChannel: "phone",
296
296
  externalUserId: phoneNumber,
297
297
  externalChatId: phoneNumber,
298
298
  status: "active",
@@ -305,7 +305,7 @@ function createVoiceVerificationSession(
305
305
  sessionId?: string,
306
306
  ): string {
307
307
  const { secret } = createOutboundSession({
308
- channel: "voice",
308
+ channel: "phone",
309
309
  expectedExternalUserId: expectedPhoneE164,
310
310
  expectedChatId: expectedPhoneE164,
311
311
  expectedPhoneE164,
@@ -317,9 +317,9 @@ function createVoiceVerificationSession(
317
317
  function createPendingVoiceGuardianChallenge(
318
318
  secret: string = "123456",
319
319
  ): string {
320
- createChallenge({
320
+ createInboundSession({
321
321
  id: randomUUID(),
322
- channel: "voice",
322
+ channel: "phone",
323
323
  challengeHash: createHash("sha256").update(secret).digest("hex"),
324
324
  expiresAt: Date.now() + 10 * 60 * 1000,
325
325
  });
@@ -383,10 +383,10 @@ describe("relay-server", () => {
383
383
  "user",
384
384
  JSON.stringify([{ type: "text", text: content }]),
385
385
  {
386
- userMessageChannel: "voice",
387
- assistantMessageChannel: "voice",
388
- userMessageInterface: "voice",
389
- assistantMessageInterface: "voice",
386
+ userMessageChannel: "phone",
387
+ assistantMessageChannel: "phone",
388
+ userMessageInterface: "phone",
389
+ assistantMessageInterface: "phone",
390
390
  },
391
391
  );
392
392
  return message.id;
@@ -434,10 +434,10 @@ describe("relay-server", () => {
434
434
  "assistant",
435
435
  JSON.stringify([{ type: "text", text: fullText }]),
436
436
  {
437
- userMessageChannel: "voice",
438
- assistantMessageChannel: "voice",
439
- userMessageInterface: "voice",
440
- assistantMessageInterface: "voice",
437
+ userMessageChannel: "phone",
438
+ assistantMessageChannel: "phone",
439
+ userMessageInterface: "phone",
440
+ assistantMessageInterface: "phone",
441
441
  },
442
442
  );
443
443
  }
@@ -1355,7 +1355,7 @@ describe("relay-server", () => {
1355
1355
  );
1356
1356
 
1357
1357
  // Should be in verification-pending state
1358
- expect(relay.isGuardianVerificationActive()).toBe(true);
1358
+ expect(relay.isVerificationSessionActive()).toBe(true);
1359
1359
  expect(relay.getConnectionState()).toBe("verification_pending");
1360
1360
 
1361
1361
  // Verify TTS prompt was sent asking for code
@@ -1374,11 +1374,11 @@ describe("relay-server", () => {
1374
1374
  await new Promise((resolve) => setTimeout(resolve, 10));
1375
1375
 
1376
1376
  // Verification should have succeeded
1377
- expect(relay.isGuardianVerificationActive()).toBe(false);
1377
+ expect(relay.isVerificationSessionActive()).toBe(false);
1378
1378
  expect(relay.getConnectionState()).toBe("connected");
1379
1379
 
1380
1380
  // Guardian binding should have been created
1381
- const binding = getGuardianBinding("self", "voice");
1381
+ const binding = getGuardianBinding("self", "phone");
1382
1382
  expect(binding).not.toBeNull();
1383
1383
 
1384
1384
  // Orchestrator greeting should have fired
@@ -1392,13 +1392,11 @@ describe("relay-server", () => {
1392
1392
  // Verify events recorded
1393
1393
  const guardianEvents = getCallEvents(session.id);
1394
1394
  expect(
1395
- guardianEvents.some(
1396
- (e) => e.eventType === "guardian_voice_verification_started",
1397
- ),
1395
+ guardianEvents.some((e) => e.eventType === "voice_verification_started"),
1398
1396
  ).toBe(true);
1399
1397
  expect(
1400
1398
  guardianEvents.some(
1401
- (e) => e.eventType === "guardian_voice_verification_succeeded",
1399
+ (e) => e.eventType === "voice_verification_succeeded",
1402
1400
  ),
1403
1401
  ).toBe(true);
1404
1402
 
@@ -1431,7 +1429,7 @@ describe("relay-server", () => {
1431
1429
  }),
1432
1430
  );
1433
1431
 
1434
- expect(relay.isGuardianVerificationActive()).toBe(true);
1432
+ expect(relay.isVerificationSessionActive()).toBe(true);
1435
1433
 
1436
1434
  // Speak the code as individual digit characters
1437
1435
  const spokenCode = secret.split("").join(" ");
@@ -1447,11 +1445,11 @@ describe("relay-server", () => {
1447
1445
  await new Promise((resolve) => setTimeout(resolve, 10));
1448
1446
 
1449
1447
  // Verification should have succeeded
1450
- expect(relay.isGuardianVerificationActive()).toBe(false);
1448
+ expect(relay.isVerificationSessionActive()).toBe(false);
1451
1449
  expect(relay.getConnectionState()).toBe("connected");
1452
1450
 
1453
1451
  // Binding created
1454
- const binding = getGuardianBinding("self", "voice");
1452
+ const binding = getGuardianBinding("self", "phone");
1455
1453
  expect(binding).not.toBeNull();
1456
1454
 
1457
1455
  // Greeting should have started
@@ -1475,7 +1473,7 @@ describe("relay-server", () => {
1475
1473
  });
1476
1474
 
1477
1475
  createGuardianBinding({
1478
- channel: "voice",
1476
+ channel: "phone",
1479
1477
  guardianExternalUserId: "+15550001111",
1480
1478
  guardianDeliveryChatId: "+15550001111",
1481
1479
  guardianPrincipalId: "+15550001111",
@@ -1506,7 +1504,7 @@ describe("relay-server", () => {
1506
1504
  };
1507
1505
  }
1508
1506
  )?.trustContext;
1509
- expect(runtimeContext?.sourceChannel).toBe("voice");
1507
+ expect(runtimeContext?.sourceChannel).toBe("phone");
1510
1508
  expect(runtimeContext?.trustClass).toBe("guardian");
1511
1509
  expect(runtimeContext?.guardianExternalUserId).toBe("+15550001111");
1512
1510
 
@@ -1523,7 +1521,7 @@ describe("relay-server", () => {
1523
1521
  });
1524
1522
 
1525
1523
  createGuardianBinding({
1526
- channel: "voice",
1524
+ channel: "phone",
1527
1525
  guardianExternalUserId: "+15550009999",
1528
1526
  guardianDeliveryChatId: "+15550009999",
1529
1527
  guardianPrincipalId: "+15550009999",
@@ -1556,7 +1554,7 @@ describe("relay-server", () => {
1556
1554
  };
1557
1555
  }
1558
1556
  )?.trustContext;
1559
- expect(runtimeContext?.sourceChannel).toBe("voice");
1557
+ expect(runtimeContext?.sourceChannel).toBe("phone");
1560
1558
  expect(runtimeContext?.trustClass).toBe("trusted_contact");
1561
1559
  expect(runtimeContext?.guardianExternalUserId).toBe("+15550009999");
1562
1560
  expect(runtimeContext?.requesterExternalUserId).toBe("+15550002222");
@@ -1576,7 +1574,7 @@ describe("relay-server", () => {
1576
1574
  });
1577
1575
 
1578
1576
  createGuardianBinding({
1579
- channel: "voice",
1577
+ channel: "phone",
1580
1578
  guardianExternalUserId: "+15550001111",
1581
1579
  guardianDeliveryChatId: "+15550001111",
1582
1580
  guardianPrincipalId: "+15550001111",
@@ -1607,7 +1605,7 @@ describe("relay-server", () => {
1607
1605
  };
1608
1606
  }
1609
1607
  )?.trustContext;
1610
- expect(runtimeContext?.sourceChannel).toBe("voice");
1608
+ expect(runtimeContext?.sourceChannel).toBe("phone");
1611
1609
  expect(runtimeContext?.trustClass).toBe("guardian");
1612
1610
  expect(runtimeContext?.guardianExternalUserId).toBe("+15550001111");
1613
1611
 
@@ -1659,7 +1657,7 @@ describe("relay-server", () => {
1659
1657
  };
1660
1658
  }
1661
1659
  )?.trustContext;
1662
- expect(runtimeContext?.sourceChannel).toBe("voice");
1660
+ expect(runtimeContext?.sourceChannel).toBe("phone");
1663
1661
  expect(runtimeContext?.trustClass).toBe("unknown");
1664
1662
 
1665
1663
  relay.destroy();
@@ -1715,7 +1713,7 @@ describe("relay-server", () => {
1715
1713
  };
1716
1714
  }
1717
1715
  )?.trustContext;
1718
- expect(postVerify?.sourceChannel).toBe("voice");
1716
+ expect(postVerify?.sourceChannel).toBe("phone");
1719
1717
  expect(postVerify?.trustClass).toBe("guardian");
1720
1718
  expect(postVerify?.guardianExternalUserId).toBe(session.fromNumber);
1721
1719
 
@@ -1744,7 +1742,7 @@ describe("relay-server", () => {
1744
1742
  }),
1745
1743
  );
1746
1744
 
1747
- expect(relay.isGuardianVerificationActive()).toBe(true);
1745
+ expect(relay.isVerificationSessionActive()).toBe(true);
1748
1746
 
1749
1747
  // Enter a wrong code via DTMF
1750
1748
  for (const digit of "000000") {
@@ -1752,7 +1750,7 @@ describe("relay-server", () => {
1752
1750
  }
1753
1751
 
1754
1752
  // Should still be in verification-pending state (retry allowed)
1755
- expect(relay.isGuardianVerificationActive()).toBe(true);
1753
+ expect(relay.isVerificationSessionActive()).toBe(true);
1756
1754
  expect(relay.getConnectionState()).toBe("verification_pending");
1757
1755
 
1758
1756
  // Should have sent a retry prompt
@@ -1788,7 +1786,7 @@ describe("relay-server", () => {
1788
1786
  }),
1789
1787
  );
1790
1788
 
1791
- expect(relay.isGuardianVerificationActive()).toBe(true);
1789
+ expect(relay.isVerificationSessionActive()).toBe(true);
1792
1790
 
1793
1791
  // Enter wrong codes 3 times (max attempts = 3)
1794
1792
  for (let attempt = 0; attempt < 3; attempt++) {
@@ -1816,7 +1814,7 @@ describe("relay-server", () => {
1816
1814
  // Verify events
1817
1815
  const events = getCallEvents(session.id);
1818
1816
  expect(
1819
- events.some((e) => e.eventType === "guardian_voice_verification_failed"),
1817
+ events.some((e) => e.eventType === "voice_verification_failed"),
1820
1818
  ).toBe(true);
1821
1819
 
1822
1820
  // Let the delayed endSession callback flush
@@ -1862,7 +1860,7 @@ describe("relay-server", () => {
1862
1860
  await new Promise((resolve) => setTimeout(resolve, 10));
1863
1861
 
1864
1862
  // Should NOT be in guardian verification state
1865
- expect(relay.isGuardianVerificationActive()).toBe(false);
1863
+ expect(relay.isVerificationSessionActive()).toBe(false);
1866
1864
  expect(relay.getConnectionState()).toBe("connected");
1867
1865
 
1868
1866
  // Should have started normal greeting
@@ -1898,7 +1896,7 @@ describe("relay-server", () => {
1898
1896
  }),
1899
1897
  );
1900
1898
 
1901
- expect(relay.isGuardianVerificationActive()).toBe(true);
1899
+ expect(relay.isVerificationSessionActive()).toBe(true);
1902
1900
 
1903
1901
  // Speak only 3 digits
1904
1902
  await relay.handleMessage(
@@ -1911,7 +1909,7 @@ describe("relay-server", () => {
1911
1909
  );
1912
1910
 
1913
1911
  // Should still be in verification state
1914
- expect(relay.isGuardianVerificationActive()).toBe(true);
1912
+ expect(relay.isVerificationSessionActive()).toBe(true);
1915
1913
 
1916
1914
  // Should have prompted for more digits
1917
1915
  const textMessages = ws.sentMessages
@@ -1937,8 +1935,8 @@ describe("relay-server", () => {
1937
1935
  provider: "twilio",
1938
1936
  fromNumber: "+15551111111",
1939
1937
  toNumber: "+15559999999",
1940
- callMode: "guardian_verification",
1941
- guardianVerificationSessionId: "gv-session-ptr-success",
1938
+ callMode: "verification",
1939
+ verificationSessionId: "gv-session-ptr-success",
1942
1940
  initiatedFromConversationId: "conv-gv-pointer-success-origin",
1943
1941
  });
1944
1942
 
@@ -1956,12 +1954,12 @@ describe("relay-server", () => {
1956
1954
  from: "+15551111111",
1957
1955
  to: "+15559999999",
1958
1956
  customParameters: {
1959
- guardianVerificationSessionId: "gv-session-ptr-success",
1957
+ verificationSessionId: "gv-session-ptr-success",
1960
1958
  },
1961
1959
  }),
1962
1960
  );
1963
1961
 
1964
- expect(relay.isGuardianVerificationActive()).toBe(true);
1962
+ expect(relay.isVerificationSessionActive()).toBe(true);
1965
1963
 
1966
1964
  // Enter the correct code via DTMF
1967
1965
  for (const digit of secret) {
@@ -1969,7 +1967,7 @@ describe("relay-server", () => {
1969
1967
  }
1970
1968
 
1971
1969
  // Verification should have succeeded
1972
- expect(relay.isGuardianVerificationActive()).toBe(false);
1970
+ expect(relay.isVerificationSessionActive()).toBe(false);
1973
1971
 
1974
1972
  // Origin conversation should have a pointer message
1975
1973
  const originText = getLatestAssistantText("conv-gv-pointer-success-origin");
@@ -1992,8 +1990,8 @@ describe("relay-server", () => {
1992
1990
  provider: "twilio",
1993
1991
  fromNumber: "+15551111111",
1994
1992
  toNumber: "+15559999999",
1995
- callMode: "guardian_verification",
1996
- guardianVerificationSessionId: "gv-session-ptr-fail",
1993
+ callMode: "verification",
1994
+ verificationSessionId: "gv-session-ptr-fail",
1997
1995
  initiatedFromConversationId: "conv-gv-pointer-fail-origin",
1998
1996
  });
1999
1997
 
@@ -2008,12 +2006,12 @@ describe("relay-server", () => {
2008
2006
  from: "+15551111111",
2009
2007
  to: "+15559999999",
2010
2008
  customParameters: {
2011
- guardianVerificationSessionId: "gv-session-ptr-fail",
2009
+ verificationSessionId: "gv-session-ptr-fail",
2012
2010
  },
2013
2011
  }),
2014
2012
  );
2015
2013
 
2016
- expect(relay.isGuardianVerificationActive()).toBe(true);
2014
+ expect(relay.isVerificationSessionActive()).toBe(true);
2017
2015
 
2018
2016
  // Enter wrong codes 3 times (max attempts = 3)
2019
2017
  for (let attempt = 0; attempt < 3; attempt++) {
@@ -2055,7 +2053,7 @@ describe("relay-server", () => {
2055
2053
  const code = generateVoiceCode(6);
2056
2054
  const codeHash = hashVoiceCode(code);
2057
2055
  createInvite({
2058
- sourceChannel: "voice",
2056
+ sourceChannel: "phone",
2059
2057
  maxUses: 1,
2060
2058
  expectedExternalUserId: "+15558887777",
2061
2059
  voiceCodeHash: codeHash,
@@ -2128,7 +2126,7 @@ describe("relay-server", () => {
2128
2126
  const code = generateVoiceCode(6);
2129
2127
  const codeHash = hashVoiceCode(code);
2130
2128
  createInvite({
2131
- sourceChannel: "voice",
2129
+ sourceChannel: "phone",
2132
2130
  maxUses: 1,
2133
2131
  expectedExternalUserId: "+15558886666",
2134
2132
  voiceCodeHash: codeHash,
@@ -2453,7 +2451,7 @@ describe("relay-server", () => {
2453
2451
 
2454
2452
  // Create a blocked member
2455
2453
  upsertContactChannel({
2456
- sourceChannel: "voice",
2454
+ sourceChannel: "phone",
2457
2455
  externalUserId: "+15558881111",
2458
2456
  externalChatId: "+15558881111",
2459
2457
  status: "blocked",
@@ -2529,7 +2527,7 @@ describe("relay-server", () => {
2529
2527
  const pending = listCanonicalGuardianRequests({
2530
2528
  status: "pending",
2531
2529
  requesterExternalUserId: "+15557770001",
2532
- sourceChannel: "voice",
2530
+ sourceChannel: "phone",
2533
2531
  kind: "access_request",
2534
2532
  });
2535
2533
  expect(pending.length).toBe(1);
@@ -2577,7 +2575,7 @@ describe("relay-server", () => {
2577
2575
  const pending = listCanonicalGuardianRequests({
2578
2576
  status: "pending",
2579
2577
  requesterExternalUserId: "+15557770002",
2580
- sourceChannel: "voice",
2578
+ sourceChannel: "phone",
2581
2579
  kind: "access_request",
2582
2580
  });
2583
2581
  expect(pending.length).toBe(1);
@@ -2664,7 +2662,7 @@ describe("relay-server", () => {
2664
2662
  const pending = listCanonicalGuardianRequests({
2665
2663
  status: "pending",
2666
2664
  requesterExternalUserId: "+15557770003",
2667
- sourceChannel: "voice",
2665
+ sourceChannel: "phone",
2668
2666
  kind: "access_request",
2669
2667
  });
2670
2668
  expect(pending.length).toBe(1);
@@ -2928,7 +2926,7 @@ describe("relay-server", () => {
2928
2926
  const pending = listCanonicalGuardianRequests({
2929
2927
  status: "pending",
2930
2928
  requesterExternalUserId: "+15557770011",
2931
- sourceChannel: "voice",
2929
+ sourceChannel: "phone",
2932
2930
  kind: "access_request",
2933
2931
  });
2934
2932
  expect(pending.length).toBe(1);
@@ -3876,13 +3874,13 @@ describe("relay-server", () => {
3876
3874
  });
3877
3875
 
3878
3876
  // Create a trusted-contact verification challenge with status 'pending'
3879
- // so getPendingChallenge finds it during inbound setup, and
3880
- // verificationPurpose 'trusted_contact' so validateAndConsumeChallenge
3877
+ // so getPendingSession finds it during inbound setup, and
3878
+ // verificationPurpose 'trusted_contact' so validateAndConsumeVerification
3881
3879
  // returns the correct verificationType.
3882
3880
  const tcSecret = "654321";
3883
3881
  createVerificationSession({
3884
3882
  id: randomUUID(),
3885
- channel: "voice",
3883
+ channel: "phone",
3886
3884
  challengeHash: createHash("sha256").update(tcSecret).digest("hex"),
3887
3885
  expiresAt: Date.now() + 10 * 60 * 1000,
3888
3886
  status: "pending",
@@ -3906,7 +3904,7 @@ describe("relay-server", () => {
3906
3904
  );
3907
3905
 
3908
3906
  // Should be in verification-pending state
3909
- expect(relay.isGuardianVerificationActive()).toBe(true);
3907
+ expect(relay.isVerificationSessionActive()).toBe(true);
3910
3908
  expect(relay.getConnectionState()).toBe("verification_pending");
3911
3909
 
3912
3910
  // Enter the correct code via DTMF
@@ -3917,7 +3915,7 @@ describe("relay-server", () => {
3917
3915
  await new Promise((resolve) => setTimeout(resolve, 10));
3918
3916
 
3919
3917
  // Verification should have succeeded — call remains connected
3920
- expect(relay.isGuardianVerificationActive()).toBe(false);
3918
+ expect(relay.isVerificationSessionActive()).toBe(false);
3921
3919
  expect(relay.getConnectionState()).toBe("connected");
3922
3920
 
3923
3921
  // Deterministic handoff copy should have been sent (not a fresh greeting)
@@ -3975,7 +3973,7 @@ describe("relay-server", () => {
3975
3973
  }),
3976
3974
  );
3977
3975
 
3978
- expect(relay.isGuardianVerificationActive()).toBe(true);
3976
+ expect(relay.isVerificationSessionActive()).toBe(true);
3979
3977
 
3980
3978
  // Enter the correct code
3981
3979
  for (const digit of secret) {
@@ -3985,11 +3983,11 @@ describe("relay-server", () => {
3985
3983
  await new Promise((resolve) => setTimeout(resolve, 10));
3986
3984
 
3987
3985
  // Should have transitioned to connected with normal greeting (not handoff copy)
3988
- expect(relay.isGuardianVerificationActive()).toBe(false);
3986
+ expect(relay.isVerificationSessionActive()).toBe(false);
3989
3987
  expect(relay.getConnectionState()).toBe("connected");
3990
3988
 
3991
3989
  // Guardian binding should have been created
3992
- const binding = getGuardianBinding("self", "voice");
3990
+ const binding = getGuardianBinding("self", "phone");
3993
3991
  expect(binding).not.toBeNull();
3994
3992
 
3995
3993
  // Normal greeting should fire (from mockSendMessage), not the handoff copy
@@ -4015,7 +4013,7 @@ describe("relay-server", () => {
4015
4013
  const code = generateVoiceCode(6);
4016
4014
  const codeHash = hashVoiceCode(code);
4017
4015
  createInvite({
4018
- sourceChannel: "voice",
4016
+ sourceChannel: "phone",
4019
4017
  maxUses: 1,
4020
4018
  expectedExternalUserId: "+15557776666",
4021
4019
  voiceCodeHash: codeHash,
@@ -4089,7 +4087,7 @@ describe("relay-server", () => {
4089
4087
 
4090
4088
  // Create a guardian binding with a different displayName
4091
4089
  createGuardianBinding({
4092
- channel: "voice",
4090
+ channel: "phone",
4093
4091
  guardianExternalUserId: "+15559990001",
4094
4092
  guardianDeliveryChatId: "+15559990001",
4095
4093
  guardianPrincipalId: "+15559990001",
@@ -4134,7 +4132,7 @@ describe("relay-server", () => {
4134
4132
 
4135
4133
  // Create a guardian binding with a displayName
4136
4134
  createGuardianBinding({
4137
- channel: "voice",
4135
+ channel: "phone",
4138
4136
  guardianExternalUserId: "+15559990002",
4139
4137
  guardianDeliveryChatId: "+15559990002",
4140
4138
  guardianPrincipalId: "+15559990002",
@@ -66,15 +66,15 @@ describe("reminder-store", () => {
66
66
  fireAt: Date.now() + 60_000,
67
67
  mode: "notify",
68
68
  routingIntent: "all_channels",
69
- routingHints: { preferred: ["telegram", "sms"] },
69
+ routingHints: { preferred: ["telegram", "slack"] },
70
70
  });
71
71
 
72
72
  expect(r.routingIntent).toBe("all_channels");
73
- expect(r.routingHints).toEqual({ preferred: ["telegram", "sms"] });
73
+ expect(r.routingHints).toEqual({ preferred: ["telegram", "slack"] });
74
74
 
75
75
  const fetched = getReminder(r.id);
76
76
  expect(fetched!.routingIntent).toBe("all_channels");
77
- expect(fetched!.routingHints).toEqual({ preferred: ["telegram", "sms"] });
77
+ expect(fetched!.routingHints).toEqual({ preferred: ["telegram", "slack"] });
78
78
  });
79
79
 
80
80
  test("insertReminder defaults routingIntent to all_channels when omitted", () => {
@@ -3,8 +3,8 @@ import { describe, expect, test } from "bun:test";
3
3
  import type {
4
4
  FileUploadSurfaceData,
5
5
  UiSurfaceShowFileUpload,
6
- } from "../daemon/ipc-protocol.js";
7
- import { INTERACTIVE_SURFACE_TYPES } from "../daemon/ipc-protocol.js";
6
+ } from "../daemon/message-protocol.js";
7
+ import { INTERACTIVE_SURFACE_TYPES } from "../daemon/message-protocol.js";
8
8
  import {
9
9
  requestFileTool,
10
10
  uiShowTool,