@vellumai/assistant 0.4.42 → 0.4.44

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 (867) hide show
  1. package/.env.example +1 -6
  2. package/.prettierignore +3 -0
  3. package/ARCHITECTURE.md +140 -403
  4. package/Dockerfile +0 -1
  5. package/README.md +81 -92
  6. package/bun.lock +8 -2
  7. package/docs/architecture/integrations.md +81 -104
  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 -3
  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-asset.test.ts +1 -1
  33. package/src/__tests__/bundled-skill-retrieval-guard.test.ts +2 -9
  34. package/src/__tests__/call-controller.test.ts +4 -8
  35. package/src/__tests__/call-conversation-messages.test.ts +1 -1
  36. package/src/__tests__/call-domain.test.ts +250 -8
  37. package/src/__tests__/call-pointer-message-composer.test.ts +14 -14
  38. package/src/__tests__/call-pointer-messages.test.ts +7 -11
  39. package/src/__tests__/call-recovery.test.ts +47 -0
  40. package/src/__tests__/call-routes-http.test.ts +13 -0
  41. package/src/__tests__/call-start-guardian-guard.test.ts +1 -1
  42. package/src/__tests__/callback-handoff-copy.test.ts +5 -5
  43. package/src/__tests__/canonical-guardian-store.test.ts +3 -3
  44. package/src/__tests__/channel-approval-routes.test.ts +101 -134
  45. package/src/__tests__/channel-approval.test.ts +0 -201
  46. package/src/__tests__/channel-approvals.test.ts +2 -2
  47. package/src/__tests__/channel-delivery-store.test.ts +16 -24
  48. package/src/__tests__/channel-guardian.test.ts +641 -740
  49. package/src/__tests__/channel-invite-transport.test.ts +1 -2
  50. package/src/__tests__/channel-policy.test.ts +9 -12
  51. package/src/__tests__/channel-readiness-service.test.ts +156 -45
  52. package/src/__tests__/channel-reply-delivery.test.ts +3 -3
  53. package/src/__tests__/channel-retry-sweep.test.ts +7 -7
  54. package/src/__tests__/checker.test.ts +41 -35
  55. package/src/__tests__/chrome-cdp.test.ts +57 -17
  56. package/src/__tests__/cli-help-reference-sync.test.ts +26 -0
  57. package/src/__tests__/compaction.benchmark.test.ts +25 -5
  58. package/src/__tests__/computer-use-session-lifecycle.test.ts +1 -1
  59. package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
  60. package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +1 -1
  61. package/src/__tests__/config-loader-backfill.test.ts +310 -0
  62. package/src/__tests__/config-watcher.test.ts +1 -5
  63. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +3 -5
  64. package/src/__tests__/connection-policy.test.ts +3 -62
  65. package/src/__tests__/contacts-tools.test.ts +0 -2
  66. package/src/__tests__/context-memory-e2e.test.ts +11 -7
  67. package/src/__tests__/context-overflow-policy.test.ts +2 -2
  68. package/src/__tests__/context-window-manager.test.ts +220 -61
  69. package/src/__tests__/conversation-attention-store.test.ts +178 -2
  70. package/src/__tests__/conversation-attention-telegram.test.ts +8 -11
  71. package/src/__tests__/conversation-pairing.test.ts +14 -14
  72. package/src/__tests__/conversation-routes-guardian-reply.test.ts +7 -7
  73. package/src/__tests__/conversation-store.test.ts +2 -2
  74. package/src/__tests__/conversation-unread-route.test.ts +155 -0
  75. package/src/__tests__/credential-metadata-store.test.ts +0 -2
  76. package/src/__tests__/credential-security-invariants.test.ts +10 -16
  77. package/src/__tests__/credentials-cli.test.ts +49 -5
  78. package/src/__tests__/daemon-assistant-events.test.ts +4 -22
  79. package/src/__tests__/db-migration-rollback.test.ts +2 -2
  80. package/src/__tests__/deterministic-verification-control-plane.test.ts +19 -19
  81. package/src/__tests__/dictation-mode-detection.test.ts +1 -1
  82. package/src/__tests__/dynamic-page-surface.test.ts +2 -2
  83. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +2 -6
  84. package/src/__tests__/email-cli.test.ts +12 -12
  85. package/src/__tests__/email-service-config-fallback.test.ts +1 -1
  86. package/src/__tests__/emit-signal-routing-intent.test.ts +3 -18
  87. package/src/__tests__/error-handler-friendly-messages.test.ts +46 -0
  88. package/src/__tests__/event-bus.test.ts +0 -1
  89. package/src/__tests__/followup-tools.test.ts +0 -2
  90. package/src/__tests__/gateway-client-managed-outbound.test.ts +6 -6
  91. package/src/__tests__/gateway-only-enforcement.test.ts +13 -77
  92. package/src/__tests__/gateway-only-guard.test.ts +5 -0
  93. package/src/__tests__/guardian-action-conversation-turn.test.ts +3 -3
  94. package/src/__tests__/guardian-action-followup-executor.test.ts +29 -94
  95. package/src/__tests__/guardian-action-followup-store.test.ts +2 -12
  96. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +48 -194
  97. package/src/__tests__/guardian-action-late-reply.test.ts +12 -12
  98. package/src/__tests__/guardian-action-store.test.ts +2 -2
  99. package/src/__tests__/guardian-action-sweep.test.ts +5 -5
  100. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +1 -3
  101. package/src/__tests__/guardian-dispatch.test.ts +5 -46
  102. package/src/__tests__/guardian-grant-minting.test.ts +5 -44
  103. package/src/__tests__/guardian-outbound-http.test.ts +95 -114
  104. package/src/__tests__/guardian-question-mode.test.ts +1 -4
  105. package/src/__tests__/guardian-routing-invariants.test.ts +5 -13
  106. package/src/__tests__/guardian-routing-state.test.ts +3 -3
  107. package/src/__tests__/guardian-verification-voice-binding.test.ts +64 -7
  108. package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +2 -2
  109. package/src/__tests__/handle-user-message-secret-resume.test.ts +3 -5
  110. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +16 -34
  111. package/src/__tests__/headless-browser-interactions.test.ts +1 -1
  112. package/src/__tests__/headless-browser-navigate.test.ts +1 -1
  113. package/src/__tests__/headless-browser-read-tools.test.ts +1 -1
  114. package/src/__tests__/headless-browser-snapshot.test.ts +1 -1
  115. package/src/__tests__/heartbeat-service.test.ts +1 -1
  116. package/src/__tests__/host-shell-tool.test.ts +3 -12
  117. package/src/__tests__/inbound-invite-redemption.test.ts +2 -2
  118. package/src/__tests__/ingress-url-consistency.test.ts +0 -64
  119. package/src/__tests__/integration-status.test.ts +8 -8
  120. package/src/__tests__/intent-routing.test.ts +9 -13
  121. package/src/__tests__/invite-redemption-service.test.ts +4 -4
  122. package/src/__tests__/invite-routes-http.test.ts +10 -10
  123. package/src/__tests__/llm-usage-store.test.ts +45 -9
  124. package/src/__tests__/local-gateway-health.test.ts +209 -0
  125. package/src/__tests__/managed-avatar-client.test.ts +23 -12
  126. package/src/__tests__/managed-skill-lifecycle.test.ts +1 -2
  127. package/src/__tests__/managed-store.test.ts +29 -12
  128. package/src/__tests__/managed-twitter-guardrails.test.ts +357 -0
  129. package/src/__tests__/mcp-cli.test.ts +1 -1
  130. package/src/__tests__/mcp-health-check.test.ts +1 -1
  131. package/src/__tests__/media-generate-image.test.ts +1 -1
  132. package/src/__tests__/media-reuse-story.e2e.test.ts +1 -4
  133. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +9 -6
  134. package/src/__tests__/memory-regressions.test.ts +1 -166
  135. package/src/__tests__/messaging-send-tool.test.ts +8 -4
  136. package/src/__tests__/migration-export-http.test.ts +2 -2
  137. package/src/__tests__/migration-transport.test.ts +44 -0
  138. package/src/__tests__/non-member-access-request.test.ts +49 -36
  139. package/src/__tests__/notification-broadcaster.test.ts +15 -15
  140. package/src/__tests__/notification-decision-fallback.test.ts +2 -2
  141. package/src/__tests__/notification-decision-strategy.test.ts +4 -4
  142. package/src/__tests__/notification-deep-link.test.ts +3 -3
  143. package/src/__tests__/notification-guardian-path.test.ts +6 -44
  144. package/src/__tests__/notification-routing-intent.test.ts +11 -7
  145. package/src/__tests__/oauth-cli.test.ts +1 -1
  146. package/src/__tests__/onboarding-starter-tasks.test.ts +2 -6
  147. package/src/__tests__/onboarding-template-contract.test.ts +2 -12
  148. package/src/__tests__/platform.test.ts +168 -5
  149. package/src/__tests__/playbook-execution.test.ts +0 -2
  150. package/src/__tests__/playbook-tools.test.ts +0 -2
  151. package/src/__tests__/pricing.test.ts +125 -0
  152. package/src/__tests__/provider-error-scenarios.test.ts +9 -3
  153. package/src/__tests__/provider-fail-open-selection.test.ts +12 -2
  154. package/src/__tests__/recording-handler.test.ts +46 -80
  155. package/src/__tests__/recording-state-machine.test.ts +112 -183
  156. package/src/__tests__/registry.test.ts +1 -1
  157. package/src/__tests__/relay-server.test.ts +69 -71
  158. package/src/__tests__/reminder-store.test.ts +3 -3
  159. package/src/__tests__/request-file-tool.test.ts +2 -2
  160. package/src/__tests__/ride-shotgun-handler.test.ts +2 -33
  161. package/src/__tests__/runtime-attachment-metadata.test.ts +3 -3
  162. package/src/__tests__/runtime-events-sse-parity.test.ts +1 -1
  163. package/src/__tests__/scaffold-managed-skill-tool.test.ts +4 -4
  164. package/src/__tests__/schedule-store.test.ts +13 -4
  165. package/src/__tests__/schedule-tools.test.ts +0 -2
  166. package/src/__tests__/scheduler-recurrence.test.ts +3 -4
  167. package/src/__tests__/scoped-approval-grants.test.ts +3 -5
  168. package/src/__tests__/scoped-grant-security-matrix.test.ts +6 -8
  169. package/src/__tests__/secret-prompt-log-hygiene.test.ts +1 -1
  170. package/src/__tests__/secret-response-routing.test.ts +1 -1
  171. package/src/__tests__/send-endpoint-busy.test.ts +1 -4
  172. package/src/__tests__/sequence-store.test.ts +0 -2
  173. package/src/__tests__/server-history-render.test.ts +2 -199
  174. package/src/__tests__/session-abort-tool-results.test.ts +9 -3
  175. package/src/__tests__/session-agent-loop.test.ts +107 -3
  176. package/src/__tests__/session-confirmation-signals.test.ts +17 -49
  177. package/src/__tests__/session-conflict-gate.test.ts +9 -3
  178. package/src/__tests__/session-init.benchmark.test.ts +22 -13
  179. package/src/__tests__/session-load-history-repair.test.ts +6 -3
  180. package/src/__tests__/session-pre-run-repair.test.ts +9 -3
  181. package/src/__tests__/session-profile-injection.test.ts +9 -3
  182. package/src/__tests__/session-provider-retry-repair.test.ts +10 -4
  183. package/src/__tests__/session-queue.test.ts +10 -4
  184. package/src/__tests__/session-runtime-assembly.test.ts +28 -18
  185. package/src/__tests__/session-skill-tools.test.ts +2 -3
  186. package/src/__tests__/session-slash-known.test.ts +11 -4
  187. package/src/__tests__/session-slash-queue.test.ts +11 -4
  188. package/src/__tests__/session-slash-unknown.test.ts +12 -4
  189. package/src/__tests__/session-surfaces-deselection.test.ts +2 -2
  190. package/src/__tests__/session-surfaces-task-progress.test.ts +3 -3
  191. package/src/__tests__/session-tool-setup-app-refresh.test.ts +1 -1
  192. package/src/__tests__/session-tool-setup-memory-scope.test.ts +1 -1
  193. package/src/__tests__/session-tool-setup-side-effect-flag.test.ts +1 -1
  194. package/src/__tests__/session-usage.test.ts +180 -0
  195. package/src/__tests__/session-workspace-cache-state.test.ts +8 -2
  196. package/src/__tests__/session-workspace-injection.test.ts +8 -2
  197. package/src/__tests__/session-workspace-tool-tracking.test.ts +8 -2
  198. package/src/__tests__/skill-feature-flags-integration.test.ts +5 -11
  199. package/src/__tests__/skill-feature-flags.test.ts +1 -0
  200. package/src/__tests__/skill-include-graph.test.ts +1 -0
  201. package/src/__tests__/skill-load-feature-flag.test.ts +3 -9
  202. package/src/__tests__/skill-load-tool.test.ts +90 -12
  203. package/src/__tests__/skill-projection-feature-flag.test.ts +14 -15
  204. package/src/__tests__/skills-uninstall.test.ts +131 -0
  205. package/src/__tests__/skills.test.ts +32 -16
  206. package/src/__tests__/slack-block-formatting.test.ts +1 -1
  207. package/src/__tests__/slack-channel-config.test.ts +71 -12
  208. package/src/__tests__/slack-inbound-verification.test.ts +7 -7
  209. package/src/__tests__/slack-share-routes.test.ts +1 -1
  210. package/src/__tests__/slack-skill.test.ts +2 -2
  211. package/src/__tests__/slash-commands-catalog.test.ts +1 -0
  212. package/src/__tests__/slash-commands-resolver.test.ts +1 -0
  213. package/src/__tests__/starter-task-flow.test.ts +10 -20
  214. package/src/__tests__/subagent-manager-notify.test.ts +1 -1
  215. package/src/__tests__/subagent-tools.test.ts +2 -2
  216. package/src/__tests__/system-prompt.test.ts +7 -12
  217. package/src/__tests__/task-compiler.test.ts +0 -2
  218. package/src/__tests__/task-management-tools.test.ts +0 -2
  219. package/src/__tests__/task-runner.test.ts +0 -2
  220. package/src/__tests__/task-scheduler.test.ts +2 -2
  221. package/src/__tests__/telegram-bot-username-resolution.test.ts +46 -44
  222. package/src/__tests__/terminal-tools.test.ts +1 -11
  223. package/src/__tests__/thread-seed-composer.test.ts +3 -1
  224. package/src/__tests__/tool-approval-handler.test.ts +5 -7
  225. package/src/__tests__/tool-executor.test.ts +2 -2
  226. package/src/__tests__/tool-grant-request-escalation.test.ts +3 -5
  227. package/src/__tests__/tool-notification-listener.test.ts +1 -1
  228. package/src/__tests__/tool-profiling-listener.test.ts +1 -1
  229. package/src/__tests__/tool-trace-listener.test.ts +1 -2
  230. package/src/__tests__/trace-emitter.test.ts +1 -1
  231. package/src/__tests__/trust-context-guards.test.ts +1 -1
  232. package/src/__tests__/trust-store.test.ts +48 -399
  233. package/src/__tests__/trusted-contact-approval-notifier.test.ts +6 -8
  234. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +5 -7
  235. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +6 -6
  236. package/src/__tests__/trusted-contact-multichannel.test.ts +54 -47
  237. package/src/__tests__/trusted-contact-verification.test.ts +12 -12
  238. package/src/__tests__/twilio-config.test.ts +11 -2
  239. package/src/__tests__/twilio-provider.test.ts +6 -4
  240. package/src/__tests__/twilio-routes.test.ts +408 -86
  241. package/src/__tests__/twitter-platform-proxy-client.test.ts +475 -0
  242. package/src/__tests__/update-bulletin-format.test.ts +1 -1
  243. package/src/__tests__/update-bulletin-state.test.ts +1 -1
  244. package/src/__tests__/update-bulletin.test.ts +4 -8
  245. package/src/__tests__/update-template-contract.test.ts +1 -1
  246. package/src/__tests__/usage-cache-backfill-migration.test.ts +406 -0
  247. package/src/__tests__/usage-routes.test.ts +23 -5
  248. package/src/__tests__/user-reference.test.ts +1 -1
  249. package/src/__tests__/{guardian-control-plane-policy.test.ts → verification-control-plane-policy.test.ts} +142 -170
  250. package/src/__tests__/{guardian-verification-intent-routing.test.ts → verification-session-intent-routing.test.ts} +16 -16
  251. package/src/__tests__/view-image-tool.test.ts +0 -2
  252. package/src/__tests__/voice-ingress-preflight.test.ts +36 -0
  253. package/src/__tests__/voice-invite-redemption.test.ts +18 -18
  254. package/src/__tests__/voice-scoped-grant-consumer.test.ts +7 -7
  255. package/src/__tests__/voice-session-bridge.test.ts +14 -16
  256. package/src/__tests__/workspace-policy.test.ts +1 -1
  257. package/src/approvals/AGENTS.md +4 -4
  258. package/src/approvals/approval-primitive.ts +2 -2
  259. package/src/approvals/guardian-decision-primitive.ts +1 -1
  260. package/src/approvals/guardian-request-resolvers.ts +3 -4
  261. package/src/bundler/app-bundler.ts +29 -217
  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} +14 -54
  290. package/src/{amazon → cli/commands/amazon}/request-extractor.ts +39 -3
  291. package/src/cli/commands/amazon/session.ts +108 -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} +15 -17
  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/cli/commands/twitter/__tests__/cli-read-routing.test.ts +345 -0
  316. package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +252 -0
  317. package/src/{__tests__/twitter-oauth-client.test.ts → cli/commands/twitter/__tests__/oauth-client.test.ts} +2 -48
  318. package/src/cli/commands/twitter/index.ts +420 -0
  319. package/src/{twitter → cli/commands/twitter}/oauth-client.ts +1 -35
  320. package/src/cli/commands/twitter/router.ts +351 -0
  321. package/src/cli/commands/twitter/types.ts +30 -0
  322. package/src/cli/db.ts +1 -0
  323. package/src/cli/http-client.ts +87 -0
  324. package/src/cli/logger.ts +6 -0
  325. package/src/cli/main-screen.tsx +4 -3
  326. package/src/cli/output.ts +19 -0
  327. package/src/cli/program.ts +29 -27
  328. package/src/cli/reference.ts +27 -37
  329. package/src/cli.ts +452 -240
  330. package/src/config/assistant-feature-flags.ts +3 -15
  331. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +3 -6
  332. package/src/config/bundled-skills/agentmail/SKILL.md +4 -4
  333. package/src/config/bundled-skills/amazon/SKILL.md +15 -6
  334. package/src/config/bundled-skills/api-mapping/SKILL.md +4 -4
  335. package/src/config/bundled-skills/app-builder/SKILL.md +4 -9
  336. package/src/config/bundled-skills/app-builder/TOOLS.json +0 -4
  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 +23 -77
  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 -12
  348. package/src/config/bundled-skills/doordash/__tests__/doordash-session.test.ts +1 -90
  349. package/src/config/bundled-skills/doordash/doordash-cli.ts +132 -109
  350. package/src/config/bundled-skills/doordash/lib/session.ts +22 -19
  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 +73 -144
  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 +8 -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 +196 -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 +151 -105
  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 +155 -55
  452. package/src/daemon/{ipc-contract.ts → message-protocol.ts} +49 -49
  453. package/src/daemon/{ipc-contract → message-types}/apps.ts +0 -25
  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 +30 -20
  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 +7 -1
  460. package/src/daemon/{ipc-contract → message-types}/shared.ts +0 -8
  461. package/src/daemon/{ipc-contract → message-types}/surfaces.ts +2 -0
  462. package/src/daemon/{ipc-contract → message-types}/workspace.ts +2 -2
  463. package/src/daemon/providers-setup.ts +0 -5
  464. package/src/daemon/recording-executor.ts +0 -7
  465. package/src/daemon/ride-shotgun-handler.ts +42 -14
  466. package/src/daemon/seed-files.ts +3 -27
  467. package/src/daemon/server.ts +134 -524
  468. package/src/daemon/session-agent-loop-handlers.ts +46 -9
  469. package/src/daemon/session-agent-loop.ts +86 -24
  470. package/src/daemon/session-attachments.ts +1 -1
  471. package/src/daemon/session-error.ts +1 -1
  472. package/src/daemon/session-history.ts +20 -15
  473. package/src/daemon/session-lifecycle.ts +9 -7
  474. package/src/daemon/session-memory.ts +15 -1
  475. package/src/daemon/session-messaging.ts +10 -6
  476. package/src/daemon/session-notifiers.ts +10 -8
  477. package/src/daemon/session-process.ts +34 -25
  478. package/src/daemon/session-queue-manager.ts +1 -1
  479. package/src/daemon/session-runtime-assembly.ts +6 -32
  480. package/src/daemon/session-surfaces.ts +187 -35
  481. package/src/daemon/session-tool-setup.ts +1 -1
  482. package/src/daemon/session-usage.ts +119 -18
  483. package/src/daemon/session.ts +11 -33
  484. package/src/daemon/tool-side-effects.ts +6 -5
  485. package/src/daemon/trace-emitter.ts +1 -1
  486. package/src/daemon/{guardian-verification-intent.ts → verification-session-intent.ts} +16 -16
  487. package/src/daemon/watch-handler.ts +2 -5
  488. package/src/email/service.ts +8 -8
  489. package/src/events/domain-events.ts +0 -1
  490. package/src/events/tool-notification-listener.ts +1 -1
  491. package/src/followups/followup-store.ts +1 -2
  492. package/src/followups/types.ts +0 -6
  493. package/src/heartbeat/heartbeat-service.ts +1 -1
  494. package/src/inbound/platform-callback-registration.ts +1 -1
  495. package/src/inbound/public-ingress-urls.ts +0 -8
  496. package/src/index.ts +12 -0
  497. package/src/mcp/client.ts +1 -1
  498. package/src/mcp/manager.ts +1 -1
  499. package/src/memory/app-store.ts +1 -60
  500. package/src/memory/{guardian-verification.ts → channel-verification-sessions.ts} +110 -93
  501. package/src/memory/conversation-attention-store.ts +154 -0
  502. package/src/memory/conversation-bootstrap.ts +1 -1
  503. package/src/memory/conversation-crud.ts +53 -1
  504. package/src/memory/conversation-display-order-migration.ts +2 -3
  505. package/src/memory/conversation-queries.ts +1 -29
  506. package/src/memory/conversation-title-service.ts +26 -21
  507. package/src/memory/db-connection.ts +1 -8
  508. package/src/memory/db-init.ts +20 -0
  509. package/src/memory/delivery-crud.ts +4 -34
  510. package/src/memory/external-conversation-store.ts +1 -1
  511. package/src/memory/format-recall.ts +47 -0
  512. package/src/memory/guardian-action-store.ts +4 -5
  513. package/src/memory/guardian-rate-limits.ts +0 -3
  514. package/src/memory/invite-store.ts +1 -1
  515. package/src/memory/job-handlers/backfill.ts +9 -2
  516. package/src/memory/job-handlers/extraction.ts +2 -7
  517. package/src/memory/job-handlers/summarization.ts +1 -1
  518. package/src/memory/llm-usage-store.ts +11 -0
  519. package/src/memory/migrations/114-notifications.ts +12 -40
  520. package/src/memory/migrations/140-backfill-usage-cache-accounting.ts +357 -0
  521. package/src/memory/migrations/141-rename-verification-table.ts +55 -0
  522. package/src/memory/migrations/142-rename-verification-session-id-column.ts +32 -0
  523. package/src/memory/migrations/143-rename-guardian-verification-values.ts +48 -0
  524. package/src/memory/migrations/144-rename-voice-to-phone.ts +147 -0
  525. package/src/memory/migrations/index.ts +5 -0
  526. package/src/memory/migrations/registry.ts +30 -0
  527. package/src/memory/qdrant-circuit-breaker.ts +5 -0
  528. package/src/memory/retriever.test.ts +707 -0
  529. package/src/memory/retriever.ts +120 -116
  530. package/src/memory/schema/calls.ts +3 -7
  531. package/src/memory/schema/guardian.ts +2 -2
  532. package/src/memory/schema/infrastructure.ts +0 -8
  533. package/src/memory/search/lexical.ts +4 -1
  534. package/src/memory/search/query-expansion.test.ts +70 -0
  535. package/src/memory/search/query-expansion.ts +118 -0
  536. package/src/memory/search/types.ts +18 -17
  537. package/src/messaging/providers/telegram-bot/adapter.ts +1 -1
  538. package/src/messaging/providers/whatsapp/adapter.ts +1 -4
  539. package/src/messaging/registry.ts +0 -1
  540. package/src/notifications/README.md +13 -22
  541. package/src/notifications/adapters/macos.ts +1 -1
  542. package/src/notifications/conversation-pairing.ts +2 -2
  543. package/src/notifications/copy-composer.ts +2 -2
  544. package/src/notifications/decision-engine.ts +1 -10
  545. package/src/notifications/destination-resolver.ts +2 -3
  546. package/src/notifications/emit-signal.ts +2 -8
  547. package/src/notifications/guardian-question-mode.ts +5 -8
  548. package/src/notifications/signal.ts +1 -2
  549. package/src/notifications/types.ts +1 -1
  550. package/src/oauth/token-persistence.ts +25 -1
  551. package/src/permissions/checker.ts +4 -29
  552. package/src/permissions/defaults.ts +9 -9
  553. package/src/permissions/prompter.ts +1 -1
  554. package/src/permissions/secret-prompter.ts +1 -1
  555. package/src/permissions/shell-identity.ts +1 -1
  556. package/src/permissions/trust-store.ts +13 -76
  557. package/src/permissions/workspace-policy.ts +1 -1
  558. package/src/{config → prompts}/computer-use-prompt.ts +1 -1
  559. package/src/{config → prompts}/system-prompt.ts +44 -26
  560. package/src/{config → prompts}/templates/BOOTSTRAP.md +0 -3
  561. package/src/providers/registry.ts +2 -4
  562. package/src/runtime/AGENTS.md +6 -8
  563. package/src/runtime/access-request-helper.ts +36 -55
  564. package/src/runtime/actor-trust-resolver.ts +1 -24
  565. package/src/runtime/approval-message-composer.ts +6 -2
  566. package/src/runtime/assistant-event.ts +1 -1
  567. package/src/runtime/auth/__tests__/guard-tests.test.ts +1 -0
  568. package/src/runtime/auth/__tests__/ipc-auth-context.test.ts +1 -1
  569. package/src/runtime/auth/__tests__/scopes.test.ts +2 -1
  570. package/src/runtime/auth/__tests__/subject.test.ts +32 -0
  571. package/src/runtime/auth/route-policy.ts +137 -25
  572. package/src/runtime/auth/scopes.ts +1 -0
  573. package/src/runtime/auth/subject.ts +9 -0
  574. package/src/runtime/auth/token-service.ts +12 -1
  575. package/src/runtime/auth/types.ts +1 -1
  576. package/src/runtime/channel-approval-types.ts +1 -1
  577. package/src/runtime/channel-approvals.ts +1 -1
  578. package/src/runtime/channel-invite-transport.ts +0 -2
  579. package/src/runtime/channel-invite-transports/slack.ts +5 -19
  580. package/src/runtime/channel-invite-transports/telegram.ts +17 -34
  581. package/src/runtime/channel-invite-transports/voice.ts +1 -1
  582. package/src/runtime/channel-readiness-service.ts +24 -159
  583. package/src/runtime/channel-readiness-types.ts +5 -1
  584. package/src/runtime/channel-reply-delivery.ts +43 -3
  585. package/src/runtime/channel-retry-sweep.ts +14 -22
  586. package/src/runtime/{channel-guardian-service.ts → channel-verification-service.ts} +50 -53
  587. package/src/runtime/confirmation-request-guardian-bridge.ts +2 -3
  588. package/src/runtime/gateway-client.ts +12 -15
  589. package/src/runtime/guardian-action-followup-executor.ts +8 -73
  590. package/src/runtime/guardian-action-grant-minter.ts +45 -61
  591. package/src/runtime/guardian-action-message-composer.ts +4 -4
  592. package/src/runtime/guardian-reply-router.ts +3 -3
  593. package/src/runtime/http-server.ts +133 -24
  594. package/src/runtime/http-types.ts +44 -1
  595. package/src/runtime/invite-instruction-generator.ts +1 -3
  596. package/src/runtime/invite-redemption-service.ts +5 -5
  597. package/src/runtime/invite-service.ts +7 -7
  598. package/src/runtime/local-actor-identity.ts +28 -2
  599. package/src/runtime/local-gateway-health.ts +275 -0
  600. package/src/runtime/middleware/error-handler.ts +14 -1
  601. package/src/runtime/middleware/twilio-validation.ts +3 -3
  602. package/src/runtime/migrations/migration-transport.ts +18 -3
  603. package/src/runtime/migrations/rebind-secrets-screen.ts +2 -2
  604. package/src/runtime/nl-approval-parser.ts +2 -3
  605. package/src/runtime/routes/access-request-decision.ts +2 -2
  606. package/src/runtime/routes/app-management-routes.ts +918 -0
  607. package/src/runtime/routes/approval-routes.ts +76 -7
  608. package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +38 -203
  609. package/src/runtime/routes/brain-graph/brain-graph.html +1845 -0
  610. package/src/runtime/routes/brain-graph-routes.ts +4 -42
  611. package/src/runtime/routes/channel-delivery-routes.ts +5 -4
  612. package/src/runtime/routes/channel-route-shared.ts +1 -3
  613. package/src/runtime/routes/channel-routes.ts +1 -4
  614. package/src/runtime/routes/channel-verification-routes.ts +257 -0
  615. package/src/runtime/routes/computer-use-routes.ts +595 -0
  616. package/src/runtime/routes/contact-routes.ts +1 -317
  617. package/src/runtime/routes/conversation-attention-routes.ts +6 -5
  618. package/src/runtime/routes/conversation-routes.ts +20 -24
  619. package/src/runtime/routes/debug-routes.ts +1 -1
  620. package/src/runtime/routes/diagnostics-routes.ts +890 -0
  621. package/src/runtime/routes/documents-routes.ts +227 -0
  622. package/src/runtime/routes/guardian-approval-interception.ts +25 -48
  623. package/src/runtime/routes/guardian-bootstrap-routes.ts +3 -3
  624. package/src/runtime/routes/guardian-expiry-sweep.ts +2 -2
  625. package/src/runtime/routes/guardian-refresh-routes.ts +11 -6
  626. package/src/runtime/routes/inbound-conversation.ts +3 -10
  627. package/src/runtime/routes/inbound-message-handler.ts +7 -6
  628. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +22 -22
  629. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +44 -0
  630. package/src/runtime/routes/inbound-stages/background-dispatch.ts +140 -22
  631. package/src/runtime/routes/inbound-stages/bootstrap-intercept.ts +4 -4
  632. package/src/runtime/routes/inbound-stages/edit-intercept.ts +5 -5
  633. package/src/runtime/routes/inbound-stages/escalation-intercept.ts +3 -3
  634. package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +4 -4
  635. package/src/runtime/routes/inbound-stages/verification-intercept.ts +13 -14
  636. package/src/runtime/routes/integrations/slack/channel.ts +72 -0
  637. package/src/runtime/routes/{slack-share-routes.ts → integrations/slack/share.ts} +9 -9
  638. package/src/runtime/routes/integrations/telegram.ts +111 -0
  639. package/src/runtime/routes/integrations/twilio.ts +451 -0
  640. package/src/runtime/routes/invite-routes.ts +2 -2
  641. package/src/runtime/routes/pairing-routes.ts +1 -1
  642. package/src/runtime/routes/recording-routes.ts +332 -0
  643. package/src/{daemon/handlers/config-scheduling.ts → runtime/routes/schedule-routes.ts} +91 -106
  644. package/src/runtime/routes/session-management-routes.ts +167 -0
  645. package/src/runtime/routes/session-query-routes.ts +204 -0
  646. package/src/runtime/routes/settings-routes.ts +887 -0
  647. package/src/runtime/routes/skills-routes.ts +266 -0
  648. package/src/runtime/routes/subagents-routes.ts +246 -0
  649. package/src/runtime/routes/surface-action-routes.ts +100 -10
  650. package/src/runtime/routes/surface-content-routes.ts +1 -1
  651. package/src/runtime/routes/work-items-routes.ts +809 -0
  652. package/src/runtime/routes/workspace-routes.test.ts +778 -0
  653. package/src/runtime/routes/workspace-routes.ts +410 -0
  654. package/src/runtime/routes/workspace-utils.ts +88 -0
  655. package/src/runtime/telegram-streaming-delivery.test.ts +597 -0
  656. package/src/runtime/telegram-streaming-delivery.ts +380 -0
  657. package/src/runtime/tool-grant-request-helper.ts +1 -2
  658. package/src/runtime/trust-context-resolver.ts +0 -1
  659. package/src/runtime/{guardian-outbound-actions.ts → verification-outbound-actions.ts} +23 -188
  660. package/src/runtime/verification-rate-limiter.ts +2 -2
  661. package/src/runtime/{guardian-verification-templates.ts → verification-templates.ts} +2 -28
  662. package/src/schedule/integration-status.ts +2 -2
  663. package/src/schedule/schedule-store.ts +7 -9
  664. package/src/sequence/engine.ts +1 -1
  665. package/src/skills/active-skill-tools.ts +0 -8
  666. package/src/skills/clawhub.ts +1 -10
  667. package/src/skills/managed-store.ts +14 -4
  668. package/src/skills/slash-commands.ts +1 -1
  669. package/src/subagent/manager.ts +1 -1
  670. package/src/subagent/types.ts +1 -1
  671. package/src/tasks/SPEC.md +10 -10
  672. package/src/tasks/task-scheduler.ts +1 -1
  673. package/src/telegram/bot-username.ts +13 -0
  674. package/src/tools/AGENTS.md +38 -0
  675. package/src/tools/apps/executors.ts +0 -6
  676. package/src/tools/assets/materialize.ts +1 -1
  677. package/src/tools/assets/search.ts +1 -1
  678. package/src/tools/browser/browser-execution.ts +2 -2
  679. package/src/tools/browser/browser-manager.ts +88 -11
  680. package/src/tools/browser/browser-screencast.ts +1 -1
  681. package/src/tools/browser/headless-browser.ts +0 -17
  682. package/src/tools/browser/jit-auth.ts +1 -1
  683. package/src/tools/browser/recording-store.ts +19 -1
  684. package/src/tools/browser/runtime-check.ts +4 -2
  685. package/src/tools/calls/call-start.ts +3 -3
  686. package/src/tools/credentials/metadata-store.ts +0 -13
  687. package/src/tools/credentials/vault.ts +7 -31
  688. package/src/tools/document/editor-template.ts +10 -8
  689. package/src/tools/followups/followup_create.ts +0 -8
  690. package/src/tools/mcp/mcp-tool-factory.ts +1 -1
  691. package/src/tools/memory/definitions.ts +32 -10
  692. package/src/tools/memory/handlers.test.ts +573 -0
  693. package/src/tools/memory/handlers.ts +222 -65
  694. package/src/tools/memory/register.ts +53 -24
  695. package/src/tools/network/script-proxy/session-manager.ts +1 -12
  696. package/src/tools/schedule/update.ts +0 -8
  697. package/src/tools/skills/load.ts +3 -3
  698. package/src/tools/subagent/read.ts +1 -1
  699. package/src/tools/system/voice-config.ts +2 -14
  700. package/src/tools/terminal/safe-env.ts +5 -18
  701. package/src/tools/tool-approval-handler.ts +4 -4
  702. package/src/tools/tool-manifest.ts +4 -2
  703. package/src/tools/types.ts +1 -1
  704. package/src/tools/{guardian-control-plane-policy.ts → verification-control-plane-policy.ts} +37 -39
  705. package/src/twitter/platform-proxy-client.ts +408 -0
  706. package/src/usage/types.ts +21 -0
  707. package/src/util/canonicalize-identity.ts +2 -6
  708. package/src/util/errors.ts +12 -0
  709. package/src/util/platform.ts +93 -86
  710. package/src/util/pricing.ts +180 -43
  711. package/src/work-items/work-item-runner.ts +1 -1
  712. package/scripts/ipc/check-contract-inventory.ts +0 -107
  713. package/scripts/ipc/check-swift-decoder-drift.ts +0 -184
  714. package/scripts/ipc/generate-swift.ts +0 -528
  715. package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +0 -3043
  716. package/src/__tests__/app-migration.test.ts +0 -148
  717. package/src/__tests__/config-loader-migration.test.ts +0 -85
  718. package/src/__tests__/daemon-lifecycle.test.ts +0 -715
  719. package/src/__tests__/daemon-server-session-init.test.ts +0 -864
  720. package/src/__tests__/guardian-actions-endpoint.test.ts +0 -1452
  721. package/src/__tests__/handlers-add-trust-rule-metadata.test.ts +0 -228
  722. package/src/__tests__/handlers-cu-observation-blob.test.ts +0 -397
  723. package/src/__tests__/handlers-ipc-blob-probe.test.ts +0 -218
  724. package/src/__tests__/handlers-slack-config.test.ts +0 -140
  725. package/src/__tests__/handlers-telegram-config.test.ts +0 -1317
  726. package/src/__tests__/handlers-twitter-config.test.ts +0 -1145
  727. package/src/__tests__/home-base-bootstrap.test.ts +0 -86
  728. package/src/__tests__/ingress-reconcile.test.ts +0 -606
  729. package/src/__tests__/integrations-cli.test.ts +0 -232
  730. package/src/__tests__/ipc-blob-store.test.ts +0 -329
  731. package/src/__tests__/ipc-contract-inventory.test.ts +0 -69
  732. package/src/__tests__/ipc-contract.test.ts +0 -76
  733. package/src/__tests__/ipc-protocol.test.ts +0 -120
  734. package/src/__tests__/ipc-roundtrip.benchmark.test.ts +0 -250
  735. package/src/__tests__/ipc-snapshot.test.ts +0 -2197
  736. package/src/__tests__/ipc-validate.test.ts +0 -471
  737. package/src/__tests__/migration-cli-flows.test.ts +0 -186
  738. package/src/__tests__/migration-ordering.test.ts +0 -267
  739. package/src/__tests__/oauth-connect-handler.test.ts +0 -361
  740. package/src/__tests__/platform-move-helper.test.ts +0 -108
  741. package/src/__tests__/platform-socket-path.test.ts +0 -52
  742. package/src/__tests__/platform-workspace-migration.test.ts +0 -1051
  743. package/src/__tests__/prebuilt-home-base-seed.test.ts +0 -79
  744. package/src/__tests__/recording-intent-handler.test.ts +0 -1155
  745. package/src/__tests__/script-proxy-profile-template-fallback.test.ts +0 -127
  746. package/src/__tests__/sms-messaging-provider.test.ts +0 -156
  747. package/src/__tests__/tool-permission-simulate-handler.test.ts +0 -367
  748. package/src/__tests__/twitter-auth-handler.test.ts +0 -561
  749. package/src/__tests__/twitter-cli-error-shaping.test.ts +0 -224
  750. package/src/__tests__/twitter-cli-routing.test.ts +0 -286
  751. package/src/__tests__/work-item-output.test.ts +0 -150
  752. package/src/amazon/session.ts +0 -58
  753. package/src/cli/channels.ts +0 -51
  754. package/src/cli/influencer.ts +0 -319
  755. package/src/cli/integrations.ts +0 -372
  756. package/src/cli/ipc-client.ts +0 -88
  757. package/src/cli/twitter.ts +0 -1111
  758. package/src/config/bundled-skills/configure-settings/SKILL.md +0 -86
  759. package/src/config/bundled-skills/doordash/lib/shared/ipc.ts +0 -32
  760. package/src/config/bundled-skills/sms-setup/SKILL.md +0 -210
  761. package/src/config/core-schema.ts +0 -434
  762. package/src/config/memory-schema.ts +0 -617
  763. package/src/daemon/auth-manager.ts +0 -106
  764. package/src/daemon/handlers/apps.ts +0 -783
  765. package/src/daemon/handlers/avatar.ts +0 -73
  766. package/src/daemon/handlers/browser.ts +0 -3
  767. package/src/daemon/handlers/computer-use.ts +0 -231
  768. package/src/daemon/handlers/config-dispatch.ts +0 -29
  769. package/src/daemon/handlers/config-heartbeat.ts +0 -299
  770. package/src/daemon/handlers/config-inbox.ts +0 -457
  771. package/src/daemon/handlers/config-integrations.ts +0 -409
  772. package/src/daemon/handlers/config-platform.ts +0 -77
  773. package/src/daemon/handlers/config-slack.ts +0 -41
  774. package/src/daemon/handlers/config-tools.ts +0 -226
  775. package/src/daemon/handlers/config-trust.ts +0 -135
  776. package/src/daemon/handlers/config.ts +0 -64
  777. package/src/daemon/handlers/contacts.ts +0 -193
  778. package/src/daemon/handlers/diagnostics.ts +0 -382
  779. package/src/daemon/handlers/documents.ts +0 -188
  780. package/src/daemon/handlers/guardian-actions.ts +0 -82
  781. package/src/daemon/handlers/home-base.ts +0 -82
  782. package/src/daemon/handlers/index.ts +0 -222
  783. package/src/daemon/handlers/misc.ts +0 -1139
  784. package/src/daemon/handlers/navigate-settings.ts +0 -29
  785. package/src/daemon/handlers/oauth-connect.ts +0 -202
  786. package/src/daemon/handlers/open-bundle-handler.ts +0 -88
  787. package/src/daemon/handlers/publish.ts +0 -176
  788. package/src/daemon/handlers/signing.ts +0 -56
  789. package/src/daemon/handlers/subagents.ts +0 -286
  790. package/src/daemon/handlers/twitter-auth.ts +0 -220
  791. package/src/daemon/handlers/work-items.ts +0 -796
  792. package/src/daemon/handlers/workspace-files.ts +0 -84
  793. package/src/daemon/handlers.ts +0 -16
  794. package/src/daemon/ipc-blob-store.ts +0 -246
  795. package/src/daemon/ipc-contract-inventory.json +0 -348
  796. package/src/daemon/ipc-contract-inventory.ts +0 -202
  797. package/src/daemon/ipc-handler.ts +0 -120
  798. package/src/daemon/ipc-protocol.ts +0 -85
  799. package/src/daemon/ipc-validate.ts +0 -254
  800. package/src/home-base/app-link-store.ts +0 -78
  801. package/src/home-base/bootstrap.ts +0 -74
  802. package/src/home-base/prebuilt/brain-graph.html +0 -1483
  803. package/src/home-base/prebuilt/index.html +0 -702
  804. package/src/home-base/prebuilt/seed-metadata.json +0 -21
  805. package/src/home-base/prebuilt/seed.ts +0 -122
  806. package/src/home-base/prebuilt-home-base-updater.ts +0 -36
  807. package/src/memory/app-migration.ts +0 -114
  808. package/src/memory/channel-delivery-store.ts +0 -40
  809. package/src/memory/channel-guardian-store.ts +0 -83
  810. package/src/memory/conversation-store.ts +0 -102
  811. package/src/memory/schema-migration.ts +0 -38
  812. package/src/messaging/providers/sms/adapter.ts +0 -232
  813. package/src/messaging/providers/sms/client.ts +0 -93
  814. package/src/messaging/providers/sms/types.ts +0 -7
  815. package/src/migrations/config-merge.ts +0 -62
  816. package/src/migrations/data-layout.ts +0 -89
  817. package/src/migrations/data-merge.ts +0 -44
  818. package/src/migrations/hooks-merge.ts +0 -118
  819. package/src/migrations/index.ts +0 -6
  820. package/src/migrations/log.ts +0 -28
  821. package/src/migrations/skills-merge.ts +0 -44
  822. package/src/migrations/workspace-layout.ts +0 -94
  823. package/src/notifications/adapters/sms.ts +0 -94
  824. package/src/runtime/channel-approval-parser.ts +0 -123
  825. package/src/runtime/channel-invite-transports/sms.ts +0 -53
  826. package/src/runtime/routes/approval-strategies/guardian-legacy-fallback-strategy.ts +0 -82
  827. package/src/runtime/routes/integration-routes.ts +0 -381
  828. package/src/runtime/routes/twilio-routes.ts +0 -1251
  829. package/src/twitter/client.ts +0 -979
  830. package/src/twitter/router.ts +0 -131
  831. package/src/twitter/session.ts +0 -54
  832. package/src/util/cookie-session.ts +0 -114
  833. package/src/watcher/providers/slack.ts +0 -282
  834. /package/src/{amazon → cli/commands/amazon}/cart.ts +0 -0
  835. /package/src/{amazon → cli/commands/amazon}/checkout.ts +0 -0
  836. /package/src/{amazon → cli/commands/amazon}/product-details.ts +0 -0
  837. /package/src/{amazon → cli/commands/amazon}/search.ts +0 -0
  838. /package/src/config/{calls-schema.ts → schemas/calls.ts} +0 -0
  839. /package/src/config/{elevenlabs-schema.ts → schemas/elevenlabs.ts} +0 -0
  840. /package/src/config/{mcp-schema.ts → schemas/mcp.ts} +0 -0
  841. /package/src/config/{notifications-schema.ts → schemas/notifications.ts} +0 -0
  842. /package/src/config/{sandbox-schema.ts → schemas/sandbox.ts} +0 -0
  843. /package/src/config/{skills-schema.ts → schemas/skills.ts} +0 -0
  844. /package/src/daemon/{ipc-contract → message-types}/browser.ts +0 -0
  845. /package/src/daemon/{ipc-contract → message-types}/contacts.ts +0 -0
  846. /package/src/daemon/{ipc-contract → message-types}/documents.ts +0 -0
  847. /package/src/daemon/{ipc-contract → message-types}/guardian-actions.ts +0 -0
  848. /package/src/daemon/{ipc-contract → message-types}/inbox.ts +0 -0
  849. /package/src/daemon/{ipc-contract → message-types}/messages.ts +0 -0
  850. /package/src/daemon/{ipc-contract → message-types}/pairing.ts +0 -0
  851. /package/src/daemon/{ipc-contract → message-types}/schedules.ts +0 -0
  852. /package/src/daemon/{ipc-contract → message-types}/settings.ts +0 -0
  853. /package/src/daemon/{ipc-contract → message-types}/skills.ts +0 -0
  854. /package/src/daemon/{ipc-contract → message-types}/subagents.ts +0 -0
  855. /package/src/daemon/{ipc-contract → message-types}/trust.ts +0 -0
  856. /package/src/daemon/{ipc-contract → message-types}/work-items.ts +0 -0
  857. /package/src/{cli/email-guardrails.ts → email/guardrails.ts} +0 -0
  858. /package/src/{config → prompts}/__tests__/build-cli-reference-section.test.ts +0 -0
  859. /package/src/{config → prompts}/templates/IDENTITY.md +0 -0
  860. /package/src/{config → prompts}/templates/SOUL.md +0 -0
  861. /package/src/{config → prompts}/templates/UPDATES.md +0 -0
  862. /package/src/{config → prompts}/templates/USER.md +0 -0
  863. /package/src/{config → prompts}/update-bulletin-format.ts +0 -0
  864. /package/src/{config → prompts}/update-bulletin-state.ts +0 -0
  865. /package/src/{config → prompts}/update-bulletin-template-path.ts +0 -0
  866. /package/src/{config → prompts}/update-bulletin.ts +0 -0
  867. /package/src/{config → prompts}/user-reference.ts +0 -0
@@ -1,10 +1,15 @@
1
1
  import { getConfig } from "../config/loader.js";
2
- import * as conversationStore from "../memory/conversation-store.js";
2
+ import { updateConversationUsage } from "../memory/conversation-crud.js";
3
3
  import { recordUsageEvent } from "../memory/llm-usage-store.js";
4
4
  import type { UsageActor } from "../usage/actors.js";
5
+ import type {
6
+ AnthropicCacheCreationTokenDetails,
7
+ PricingResult,
8
+ PricingUsage,
9
+ } from "../usage/types.js";
5
10
  import { getLogger } from "../util/logger.js";
6
- import { estimateCost, resolvePricingWithOverrides } from "../util/pricing.js";
7
- import type { ServerMessage, UsageStats } from "./ipc-protocol.js";
11
+ import { resolvePricingForUsageWithOverrides } from "../util/pricing.js";
12
+ import type { ServerMessage, UsageStats } from "./message-protocol.js";
8
13
 
9
14
  const log = getLogger("session-usage");
10
15
 
@@ -14,6 +19,81 @@ export interface UsageContext {
14
19
  usageStats: UsageStats;
15
20
  }
16
21
 
22
+ function normalizeTokenCount(value: number | null | undefined): number {
23
+ if (typeof value !== "number" || !Number.isFinite(value)) return 0;
24
+ return Math.max(value, 0);
25
+ }
26
+
27
+ function asRecord(value: unknown): Record<string, unknown> | null {
28
+ if (typeof value !== "object" || value == null) return null;
29
+ return value as Record<string, unknown>;
30
+ }
31
+
32
+ function extractAnthropicCacheCreationFromResponse(
33
+ response: unknown,
34
+ ): AnthropicCacheCreationTokenDetails | null {
35
+ const rawResponse = asRecord(response);
36
+ const usage = asRecord(rawResponse?.usage);
37
+ const cacheCreation = asRecord(usage?.cache_creation);
38
+ if (!cacheCreation) return null;
39
+
40
+ return {
41
+ ephemeral_5m_input_tokens: normalizeTokenCount(
42
+ cacheCreation.ephemeral_5m_input_tokens as number | null | undefined,
43
+ ),
44
+ ephemeral_1h_input_tokens: normalizeTokenCount(
45
+ cacheCreation.ephemeral_1h_input_tokens as number | null | undefined,
46
+ ),
47
+ };
48
+ }
49
+
50
+ function extractAnthropicCacheCreation(
51
+ rawResponse: unknown,
52
+ ): AnthropicCacheCreationTokenDetails | null {
53
+ const responses = Array.isArray(rawResponse) ? rawResponse : [rawResponse];
54
+ let foundDetails = false;
55
+ let ephemeral5mInputTokens = 0;
56
+ let ephemeral1hInputTokens = 0;
57
+
58
+ for (const response of responses) {
59
+ const details = extractAnthropicCacheCreationFromResponse(response);
60
+ if (!details) continue;
61
+ foundDetails = true;
62
+ ephemeral5mInputTokens += normalizeTokenCount(
63
+ details.ephemeral_5m_input_tokens,
64
+ );
65
+ ephemeral1hInputTokens += normalizeTokenCount(
66
+ details.ephemeral_1h_input_tokens,
67
+ );
68
+ }
69
+
70
+ if (!foundDetails) return null;
71
+
72
+ return {
73
+ ephemeral_5m_input_tokens: ephemeral5mInputTokens,
74
+ ephemeral_1h_input_tokens: ephemeral1hInputTokens,
75
+ };
76
+ }
77
+
78
+ function resolveStructuredPricing(
79
+ providerName: string,
80
+ model: string,
81
+ usage: PricingUsage,
82
+ ): PricingResult {
83
+ try {
84
+ const config = getConfig();
85
+ return resolvePricingForUsageWithOverrides(
86
+ providerName,
87
+ model,
88
+ usage,
89
+ config.pricingOverrides,
90
+ );
91
+ } catch (err) {
92
+ log.warn({ err, model, providerName }, "Failed to resolve usage pricing");
93
+ return { estimatedCostUsd: null, pricingStatus: "unpriced" };
94
+ }
95
+ }
96
+
17
97
  export function recordUsage(
18
98
  ctx: UsageContext,
19
99
  inputTokens: number,
@@ -22,20 +102,49 @@ export function recordUsage(
22
102
  onEvent: (msg: ServerMessage) => void,
23
103
  actor: UsageActor,
24
104
  requestId: string | null = null,
105
+ cacheCreationInputTokens = 0,
106
+ cacheReadInputTokens = 0,
107
+ rawResponse?: unknown,
25
108
  ): void {
26
109
  if (inputTokens <= 0 && outputTokens <= 0) return;
27
110
 
28
- const estimatedCost = estimateCost(
29
- inputTokens,
111
+ const normalizedCacheCreationInputTokens = normalizeTokenCount(
112
+ cacheCreationInputTokens,
113
+ );
114
+ const normalizedCacheReadInputTokens =
115
+ normalizeTokenCount(cacheReadInputTokens);
116
+ const directInputTokens = Math.max(
117
+ normalizeTokenCount(inputTokens) -
118
+ normalizedCacheCreationInputTokens -
119
+ normalizedCacheReadInputTokens,
120
+ 0,
121
+ );
122
+
123
+ const pricingUsage: PricingUsage = {
124
+ directInputTokens,
30
125
  outputTokens,
31
- model,
126
+ cacheCreationInputTokens: normalizedCacheCreationInputTokens,
127
+ cacheReadInputTokens: normalizedCacheReadInputTokens,
128
+ anthropicCacheCreation:
129
+ ctx.providerName === "anthropic"
130
+ ? extractAnthropicCacheCreation(rawResponse)
131
+ : null,
132
+ };
133
+ const pricing = resolveStructuredPricing(
32
134
  ctx.providerName,
135
+ model,
136
+ pricingUsage,
33
137
  );
138
+ const estimatedCost =
139
+ pricing.pricingStatus === "priced" && pricing.estimatedCostUsd != null
140
+ ? pricing.estimatedCostUsd
141
+ : 0;
142
+
34
143
  ctx.usageStats.inputTokens += inputTokens;
35
144
  ctx.usageStats.outputTokens += outputTokens;
36
145
  ctx.usageStats.estimatedCost += estimatedCost;
37
146
 
38
- conversationStore.updateConversationUsage(
147
+ updateConversationUsage(
39
148
  ctx.conversationId,
40
149
  ctx.usageStats.inputTokens,
41
150
  ctx.usageStats.outputTokens,
@@ -53,23 +162,15 @@ export function recordUsage(
53
162
 
54
163
  // Dual-write: persist per-turn usage event to the new ledger table
55
164
  try {
56
- const config = getConfig();
57
- const pricing = resolvePricingWithOverrides(
58
- ctx.providerName,
59
- model,
60
- inputTokens,
61
- outputTokens,
62
- config.pricingOverrides,
63
- );
64
165
  recordUsageEvent(
65
166
  {
66
167
  actor,
67
168
  provider: ctx.providerName,
68
169
  model,
69
- inputTokens,
170
+ inputTokens: directInputTokens,
70
171
  outputTokens,
71
- cacheCreationInputTokens: null,
72
- cacheReadInputTokens: null,
172
+ cacheCreationInputTokens: normalizedCacheCreationInputTokens,
173
+ cacheReadInputTokens: normalizedCacheReadInputTokens,
73
174
  conversationId: ctx.conversationId,
74
175
  runId: null,
75
176
  requestId,
@@ -22,7 +22,6 @@ import type {
22
22
  TurnInterfaceContext,
23
23
  } from "../channels/types.js";
24
24
  import { getConfig } from "../config/loader.js";
25
- import { buildSystemPrompt } from "../config/system-prompt.js";
26
25
  import { ContextWindowManager } from "../context/window-manager.js";
27
26
  import { EventBus } from "../events/bus.js";
28
27
  import type { AssistantDomainEvents } from "../events/domain-events.js";
@@ -39,6 +38,7 @@ import { getHookManager } from "../hooks/manager.js";
39
38
  import { PermissionPrompter } from "../permissions/prompter.js";
40
39
  import { SecretPrompter } from "../permissions/secret-prompter.js";
41
40
  import type { UserDecision } from "../permissions/types.js";
41
+ import { buildSystemPrompt } from "../prompts/system-prompt.js";
42
42
  import type { Message } from "../providers/types.js";
43
43
  import type { Provider } from "../providers/types.js";
44
44
  import type { TrustClass } from "../runtime/actor-trust-resolver.js";
@@ -46,17 +46,17 @@ import type { AuthContext } from "../runtime/auth/types.js";
46
46
  import * as approvalOverrides from "../runtime/session-approval-overrides.js";
47
47
  import { ToolExecutor } from "../tools/executor.js";
48
48
  import type { AssistantAttachmentDraft } from "./assistant-attachments.js";
49
- import type {
50
- AssistantActivityState,
51
- ConfirmationStateChanged,
52
- } from "./ipc-contract/messages.js";
53
49
  import type {
54
50
  ServerMessage,
55
51
  SurfaceData,
56
52
  SurfaceType,
57
53
  UsageStats,
58
54
  UserMessageAttachment,
59
- } from "./ipc-protocol.js";
55
+ } from "./message-protocol.js";
56
+ import type {
57
+ AssistantActivityState,
58
+ ConfirmationStateChanged,
59
+ } from "./message-types/messages.js";
60
60
  import { runAgentLoopImpl } from "./session-agent-loop.js";
61
61
  import { ConflictGate } from "./session-conflict-gate.js";
62
62
  import type { HistorySessionContext } from "./session-history.js";
@@ -213,15 +213,6 @@ export class Session {
213
213
  /** @internal */ currentTurnInterfaceContext: TurnInterfaceContext | null =
214
214
  null;
215
215
  /** @internal */ activityVersion = 0;
216
- /**
217
- * Optional callback invoked whenever a server-authoritative state signal
218
- * (confirmation_state_changed or assistant_activity_state) is emitted.
219
- *
220
- * HTTP/SSE sessions set this so the hub publisher receives these events —
221
- * without it, the signals only travel through `sendToClient`, which is a
222
- * no-op for socketless sessions.
223
- */
224
- private onStateSignal?: (msg: ServerMessage) => void;
225
216
  /** Set by the agent loop to track confirmation outcomes for persistence. */
226
217
  onConfirmationOutcome?: (
227
218
  requestId: string,
@@ -251,8 +242,8 @@ export class Session {
251
242
  this.traceEmitter = new TraceEmitter(conversationId, sendToClient);
252
243
  this.prompter = new PermissionPrompter(sendToClient);
253
244
  this.prompter.setOnStateChanged((requestId, state, source, toolUseId) => {
254
- // Route through emitConfirmationStateChanged so the onStateSignal
255
- // listener publishes to the SSE hub for HTTP/SSE consumers.
245
+ // Route through emitConfirmationStateChanged so the event reaches
246
+ // the client via sendToClient (wired to the SSE hub for HTTP sessions).
256
247
  this.emitConfirmationStateChanged({
257
248
  sessionId: this.conversationId,
258
249
  requestId,
@@ -352,11 +343,11 @@ export class Session {
352
343
  resolveTools,
353
344
  resolveSystemPromptCallback,
354
345
  );
355
- this.contextWindowManager = new ContextWindowManager(
346
+ this.contextWindowManager = new ContextWindowManager({
356
347
  provider,
357
348
  systemPrompt,
358
- config.contextWindow,
359
- );
349
+ config: config.contextWindow,
350
+ });
360
351
 
361
352
  void getHookManager().trigger("session-start", {
362
353
  sessionId: this.conversationId,
@@ -392,17 +383,6 @@ export class Session {
392
383
  return this.sendToClient;
393
384
  }
394
385
 
395
- /**
396
- * Register a callback for server-authoritative state signals
397
- * (confirmation_state_changed, assistant_activity_state).
398
- *
399
- * This enables HTTP/SSE sessions to receive these events through the
400
- * hub publisher, since `sendToClient` is a no-op for socketless sessions.
401
- */
402
- setStateSignalListener(listener: (msg: ServerMessage) => void): void {
403
- this.onStateSignal = listener;
404
- }
405
-
406
386
  setSandboxOverride(enabled: boolean | undefined): void {
407
387
  this.sandboxOverride = enabled;
408
388
  }
@@ -603,7 +583,6 @@ export class Session {
603
583
  ...params,
604
584
  } as ServerMessage;
605
585
  this.sendToClient(msg);
606
- this.onStateSignal?.(msg);
607
586
  }
608
587
 
609
588
  emitActivityState(
@@ -625,7 +604,6 @@ export class Session {
625
604
  ...(statusText ? { statusText } : {}),
626
605
  } as ServerMessage;
627
606
  this.sendToClient(msg);
628
- this.onStateSignal?.(msg);
629
607
  }
630
608
 
631
609
  setChannelCapabilities(caps: ChannelCapabilities | null): void {
@@ -17,7 +17,7 @@ import type { ToolExecutionResult } from "../tools/types.js";
17
17
  import { getLogger } from "../util/logger.js";
18
18
  import { getWorkspaceDir } from "../util/platform.js";
19
19
  import { isDoordashCommand, updateDoordashProgress } from "./doordash-steps.js";
20
- import type { ServerMessage } from "./ipc-protocol.js";
20
+ import type { ServerMessage } from "./message-protocol.js";
21
21
  import { refreshSurfacesForApp } from "./session-surfaces.js";
22
22
  import type { ToolSetupContext } from "./session-tool-setup.js";
23
23
 
@@ -214,13 +214,12 @@ registerHook(
214
214
  registerHook(
215
215
  "voice_config_update",
216
216
  (_name, input, _result, { broadcastToAllClients }) => {
217
- const setting =
218
- (input.setting as string) ??
219
- (input.activation_key ? "activation_key" : undefined);
217
+ const setting = input.setting as string | undefined;
220
218
  if (!setting) return;
221
219
 
222
220
  const SETTING_TO_KEY: Record<string, string> = {
223
221
  activation_key: "pttActivationKey",
222
+ tts_voice_id: "ttsVoiceId",
224
223
  wake_word_enabled: "wakeWordEnabled",
225
224
  wake_word_keyword: "wakeWordKeyword",
226
225
  wake_word_timeout: "wakeWordTimeoutSeconds",
@@ -230,7 +229,7 @@ registerHook(
230
229
 
231
230
  // Coerce the value to the correct type before broadcasting, matching
232
231
  // the validation logic in the tool's execute method.
233
- const raw = input.value ?? input.activation_key;
232
+ const raw = input.value;
234
233
  let coerced: string | boolean | number = raw as string;
235
234
  if (setting === "wake_word_enabled") {
236
235
  coerced = raw === true || raw === "true";
@@ -238,6 +237,8 @@ registerHook(
238
237
  coerced = typeof raw === "number" ? raw : Number(raw);
239
238
  } else if (setting === "wake_word_keyword" && typeof raw === "string") {
240
239
  coerced = raw.trim();
240
+ } else if (setting === "tts_voice_id" && typeof raw === "string") {
241
+ coerced = raw.trim();
241
242
  }
242
243
  broadcastToAllClients?.({
243
244
  type: "client_settings_update",
@@ -1,6 +1,6 @@
1
1
  import { v4 as uuid } from "uuid";
2
2
 
3
- import type { ServerMessage, TraceEventKind } from "./ipc-protocol.js";
3
+ import type { ServerMessage, TraceEventKind } from "./message-protocol.js";
4
4
 
5
5
  export type TraceEventStatus = "info" | "success" | "warning" | "error";
6
6
 
@@ -1,19 +1,19 @@
1
- // Guardian verification intent resolution for deterministic first-turn routing.
2
- // Exports `resolveGuardianVerificationIntent` as the single public entry point.
1
+ // Verification session intent resolution for deterministic first-turn routing.
2
+ // Exports `resolveVerificationSessionIntent` as the single public entry point.
3
3
  // When a direct guardian setup request is detected, the session pipeline
4
4
  // rewrites the message to force immediate entry into the guardian-verify-setup
5
5
  // skill flow, bypassing the normal agent loop's tendency to produce conceptual
6
6
  // preambles before loading the skill.
7
7
 
8
- export type GuardianVerificationIntentResult =
8
+ export type VerificationSessionIntentResult =
9
9
  | { kind: "none" }
10
10
  | {
11
11
  kind: "direct_setup";
12
12
  rewrittenContent: string;
13
- channelHint?: "voice" | "telegram" | "slack";
13
+ channelHint?: "phone" | "telegram" | "slack";
14
14
  };
15
15
 
16
- // ── Direct setup patterns ────────────────────────────────────────────────
16
+ // -- Direct setup patterns ----------------------------------------------------
17
17
  // These capture imperative requests to start guardian verification.
18
18
 
19
19
  const DIRECT_SETUP_PATTERNS: RegExp[] = [
@@ -24,12 +24,12 @@ const DIRECT_SETUP_PATTERNS: RegExp[] = [
24
24
  /\bguardian\s+verif(?:y|ication)\s*(?:setup|set\s*up)?\b/i,
25
25
  /\bset\s*up\s+guardian\s+verif(?:y|ication)\b/i,
26
26
  /\b(?:help\s+me\s+)?set\s+(?:myself\s+)?(?:up\s+)?as\s+(?:your\s+)?guardian\s+(?:for|via|by|over|on|through)\s+/i,
27
- /\bguardian\s+(?:for|via|by|over|on|through)\s+(?:sms|text|phone|voice|telegram|slack|call)\b/i,
27
+ /\bguardian\s+(?:for|via|by|over|on|through)\s+(?:text|phone|voice|telegram|slack|call)\b/i,
28
28
  /\bbecome\s+(?:your\s+|the\s+)?guardian\b/i,
29
29
  /\bregister\s+(?:me\s+)?as\s+(?:your\s+|the\s+)?guardian\b/i,
30
30
  ];
31
31
 
32
- // ── Conceptual / security question patterns ──────────────────────────────
32
+ // -- Conceptual / security question patterns ----------------------------------
33
33
  // These indicate the user is asking *about* guardian verification
34
34
  // rather than requesting to start it. Return passthrough for these.
35
35
 
@@ -44,13 +44,13 @@ const CONCEPTUAL_PATTERNS: RegExp[] = [
44
44
  /\bcan\s+(?:you\s+)?(?:tell|explain|describe)\b/i,
45
45
  ];
46
46
 
47
- // ── Channel hint extraction ──────────────────────────────────────────────
47
+ // -- Channel hint extraction --------------------------------------------------
48
48
 
49
49
  const CHANNEL_HINT_PATTERNS: Array<{
50
50
  pattern: RegExp;
51
- channel: "voice" | "telegram" | "slack";
51
+ channel: "phone" | "telegram" | "slack";
52
52
  }> = [
53
- { pattern: /\b(?:voice|call|phone\s*call|by\s+phone)\b/i, channel: "voice" },
53
+ { pattern: /\b(?:voice|call|phone\s*call|by\s+phone)\b/i, channel: "phone" },
54
54
  { pattern: /\btelegram\b/i, channel: "telegram" },
55
55
  { pattern: /\bslack\b/i, channel: "slack" },
56
56
  ];
@@ -59,7 +59,7 @@ const CHANNEL_HINT_PATTERNS: Array<{
59
59
  const FILLER_PATTERN =
60
60
  /\b(please|pls|plz|can\s+you|could\s+you|would\s+you|now|right\s+now|thanks|thank\s+you|thx|ty|for\s+me|ok(ay)?|hey|hi|hello|just|i\s+want\s+to|i'd\s+like\s+to|i\s+need\s+to|let's|let\s+me)\b/gi;
61
61
 
62
- // ── Internal helpers ─────────────────────────────────────────────────────
62
+ // -- Internal helpers ---------------------------------------------------------
63
63
 
64
64
  function isConceptualQuestion(text: string): boolean {
65
65
  const cleaned = text.replace(/^\s*(hey|hi|hello|please|pls|plz)[,\s]+/i, "");
@@ -72,17 +72,17 @@ function isDirectSetupIntent(text: string): boolean {
72
72
 
73
73
  function extractChannelHint(
74
74
  text: string,
75
- ): "voice" | "telegram" | "slack" | undefined {
75
+ ): "phone" | "telegram" | "slack" | undefined {
76
76
  for (const { pattern, channel } of CHANNEL_HINT_PATTERNS) {
77
77
  if (pattern.test(text)) return channel;
78
78
  }
79
79
  return undefined;
80
80
  }
81
81
 
82
- // ── Structured intent resolver ───────────────────────────────────────────
82
+ // -- Structured intent resolver -----------------------------------------------
83
83
 
84
84
  /**
85
- * Resolves guardian verification intent from user text.
85
+ * Resolves verification session intent from user text.
86
86
  *
87
87
  * Pipeline:
88
88
  * 1. Skip slash commands entirely
@@ -90,9 +90,9 @@ function extractChannelHint(
90
90
  * 3. Detect direct setup patterns
91
91
  * 4. On match, build a deterministic model instruction to load guardian-verify-setup
92
92
  */
93
- export function resolveGuardianVerificationIntent(
93
+ export function resolveVerificationSessionIntent(
94
94
  text: string,
95
- ): GuardianVerificationIntentResult {
95
+ ): VerificationSessionIntentResult {
96
96
  const trimmed = text.trim();
97
97
 
98
98
  // Never intercept slash commands
@@ -1,5 +1,3 @@
1
- import type * as net from "node:net";
2
-
3
1
  import {
4
2
  extractText,
5
3
  getConfiguredProvider,
@@ -16,8 +14,8 @@ import {
16
14
  watchSessions,
17
15
  } from "../tools/watch/watch-state.js";
18
16
  import { getLogger } from "../util/logger.js";
19
- import type { HandlerContext } from "./handlers.js";
20
- import type { WatchObservation } from "./ipc-protocol.js";
17
+ import type { HandlerContext } from "./handlers/shared.js";
18
+ import type { WatchObservation } from "./message-protocol.js";
21
19
 
22
20
  const log = getLogger("watch-handler");
23
21
 
@@ -30,7 +28,6 @@ export const lastSummaryBySession = new Map<string, string>();
30
28
 
31
29
  export async function handleWatchObservation(
32
30
  msg: WatchObservation,
33
- _socket: net.Socket,
34
31
  _ctx: HandlerContext,
35
32
  ): Promise<void> {
36
33
  try {
@@ -5,6 +5,13 @@
5
5
  * The CLI layer calls only this; never the provider directly.
6
6
  */
7
7
 
8
+ import {
9
+ getNestedValue,
10
+ loadRawConfig,
11
+ saveRawConfig,
12
+ setNestedValue,
13
+ } from "../config/loader.js";
14
+ import { ConfigError } from "../util/errors.js";
8
15
  import {
9
16
  addAddressRule,
10
17
  type AddressRule,
@@ -15,14 +22,7 @@ import {
15
22
  removeAddressRule,
16
23
  setDailySendCap,
17
24
  setOutboundPaused,
18
- } from "../cli/email-guardrails.js";
19
- import {
20
- getNestedValue,
21
- loadRawConfig,
22
- saveRawConfig,
23
- setNestedValue,
24
- } from "../config/loader.js";
25
- import { ConfigError } from "../util/errors.js";
25
+ } from "./guardrails.js";
26
26
  import type { EmailProvider } from "./provider.js";
27
27
  import {
28
28
  createProvider,
@@ -70,7 +70,6 @@ export interface ToolDomainEvents {
70
70
  export interface DaemonDomainEvents {
71
71
  "daemon.lifecycle.started": {
72
72
  pid: number;
73
- socketPath: string;
74
73
  startedAtMs: number;
75
74
  };
76
75
  "daemon.lifecycle.stopped": {
@@ -1,4 +1,4 @@
1
- import type { ServerMessage } from "../daemon/ipc-protocol.js";
1
+ import type { ServerMessage } from "../daemon/message-protocol.js";
2
2
  import type { EventBus, Subscription } from "./bus.js";
3
3
  import type { AssistantDomainEvents } from "./domain-events.js";
4
4
 
@@ -18,7 +18,6 @@ function parseFollowUp(row: typeof followups.$inferSelect): FollowUp {
18
18
  expectedResponseBy: row.expectedResponseBy,
19
19
  status: row.status as FollowUpStatus,
20
20
  reminderScheduleId: scheduleId,
21
- reminderCronId: scheduleId,
22
21
  createdAt: row.createdAt,
23
22
  updatedAt: row.updatedAt,
24
23
  };
@@ -40,7 +39,7 @@ export function createFollowUp(input: FollowUpCreateInput): FollowUp {
40
39
  sentAt: input.sentAt ?? now,
41
40
  expectedResponseBy: input.expectedResponseBy ?? null,
42
41
  status: "pending",
43
- reminderCronId: input.reminderScheduleId ?? input.reminderCronId ?? null,
42
+ reminderCronId: input.reminderScheduleId ?? null,
44
43
  createdAt: now,
45
44
  updatedAt: now,
46
45
  })
@@ -8,10 +8,7 @@ export interface FollowUp {
8
8
  sentAt: number;
9
9
  expectedResponseBy: number | null;
10
10
  status: FollowUpStatus;
11
- /** Canonical field — the recurrence schedule ID linked to this follow-up. */
12
11
  reminderScheduleId: string | null;
13
- /** @deprecated Use {@link reminderScheduleId}. Kept for migration compatibility. */
14
- reminderCronId: string | null;
15
12
  createdAt: number;
16
13
  updatedAt: number;
17
14
  }
@@ -22,8 +19,5 @@ export interface FollowUpCreateInput {
22
19
  contactId?: string | null;
23
20
  sentAt?: number;
24
21
  expectedResponseBy?: number | null;
25
- /** Canonical field — the recurrence schedule ID to link. */
26
22
  reminderScheduleId?: string | null;
27
- /** @deprecated Use {@link reminderScheduleId}. Kept for migration compatibility. */
28
- reminderCronId?: string | null;
29
23
  }
@@ -1,5 +1,5 @@
1
1
  import { getConfig } from "../config/loader.js";
2
- import type { HeartbeatAlert } from "../daemon/ipc-contract.js";
2
+ import type { HeartbeatAlert } from "../daemon/message-protocol.js";
3
3
  import { bootstrapConversation } from "../memory/conversation-bootstrap.js";
4
4
  import { readTextFileSync } from "../util/fs.js";
5
5
  import { getLogger } from "../util/logger.js";
@@ -52,7 +52,7 @@ interface RegisterCallbackRouteResponse {
52
52
  * @param callbackPath - The path portion after the ingress base URL
53
53
  * (e.g. "webhooks/twilio/voice"). Leading/trailing slashes are stripped
54
54
  * by the platform.
55
- * @param type - The route type identifier (e.g. "twilio_voice", "twilio_sms",
55
+ * @param type - The route type identifier (e.g. "twilio_voice",
56
56
  * "twilio_status", "oauth", "telegram").
57
57
  * @returns The platform-provided callback URL that external services should use.
58
58
  * @throws If the platform request fails.
@@ -128,14 +128,6 @@ export function getOAuthCallbackUrl(config: IngressConfig): string {
128
128
  return `${base}/webhooks/oauth/callback`;
129
129
  }
130
130
 
131
- /**
132
- * Build the Twilio SMS webhook URL.
133
- */
134
- export function getTwilioSmsWebhookUrl(config: IngressConfig): string {
135
- const base = getPublicBaseUrl(config);
136
- return `${base}/webhooks/twilio/sms`;
137
- }
138
-
139
131
  /**
140
132
  * Build the Telegram webhook URL.
141
133
  */
package/src/index.ts CHANGED
@@ -1,5 +1,17 @@
1
1
  #!/usr/bin/env bun
2
2
 
3
3
  import { buildCliProgram } from "./cli/program.js";
4
+ import { resolveInstanceDataDir } from "./util/platform.js";
5
+
6
+ // Auto-resolve BASE_DATA_DIR from the lockfile when running as a standalone CLI.
7
+ // The daemon always has BASE_DATA_DIR set by the launcher (cli/src/lib/local.ts),
8
+ // but the CLI process doesn't — so credential commands and other path-dependent
9
+ // operations would read from ~/.vellum instead of the instance-scoped directory.
10
+ if (!process.env.BASE_DATA_DIR) {
11
+ const instanceDir = resolveInstanceDataDir();
12
+ if (instanceDir) {
13
+ process.env.BASE_DATA_DIR = instanceDir;
14
+ }
15
+ }
4
16
 
5
17
  buildCliProgram().parse();
package/src/mcp/client.ts CHANGED
@@ -4,7 +4,7 @@ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
4
4
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
5
5
  import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
6
6
 
7
- import type { McpTransport } from "../config/mcp-schema.js";
7
+ import type { McpTransport } from "../config/schemas/mcp.js";
8
8
  import { getSecureKeyAsync } from "../security/secure-keys.js";
9
9
  import { getLogger } from "../util/logger.js";
10
10
  import { McpOAuthProvider } from "./mcp-oauth-provider.js";
@@ -1,4 +1,4 @@
1
- import type { McpConfig, McpServerConfig } from "../config/mcp-schema.js";
1
+ import type { McpConfig, McpServerConfig } from "../config/schemas/mcp.js";
2
2
  import { getLogger } from "../util/logger.js";
3
3
  import { McpClient, type McpToolInfo } from "./client.js";
4
4