@vellumai/assistant 0.4.44 → 0.4.45

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 (681) hide show
  1. package/.prettierignore +4 -0
  2. package/ARCHITECTURE.md +34 -31
  3. package/README.md +4 -4
  4. package/bun.lock +10 -35
  5. package/docs/architecture/integrations.md +102 -197
  6. package/docs/architecture/keychain-broker.md +1 -1
  7. package/docs/architecture/memory.md +2 -2
  8. package/docs/architecture/scheduling.md +1 -1
  9. package/docs/architecture/security.md +11 -11
  10. package/docs/error-handling.md +1 -1
  11. package/docs/trusted-contact-access.md +3 -3
  12. package/drizzle/meta/0000_snapshot.json +34 -100
  13. package/drizzle/meta/_journal.json +1 -1
  14. package/drizzle.config.ts +4 -4
  15. package/package.json +3 -2
  16. package/scripts/capture-x-graphql.ts +237 -141
  17. package/scripts/generate-bundled-tool-registry.ts +223 -0
  18. package/src/__tests__/access-request-decision.test.ts +0 -1
  19. package/src/__tests__/actor-token-service.test.ts +23 -24
  20. package/src/__tests__/agent-loop.test.ts +0 -131
  21. package/src/__tests__/always-loaded-tools-guard.test.ts +71 -0
  22. package/src/__tests__/amazon-cdp-integration.test.ts +11 -9
  23. package/src/__tests__/approval-primitive.test.ts +0 -1
  24. package/src/__tests__/approval-routes-http.test.ts +11 -1
  25. package/src/__tests__/asset-materialize-tool.test.ts +0 -1
  26. package/src/__tests__/asset-search-tool.test.ts +0 -1
  27. package/src/__tests__/assistant-attachment-directive.test.ts +1 -1
  28. package/src/__tests__/assistant-events-sse-hardening.test.ts +0 -1
  29. package/src/__tests__/assistant-feature-flag-guardrails.test.ts +0 -2
  30. package/src/__tests__/assistant-feature-flags-integration.test.ts +70 -18
  31. package/src/__tests__/assistant-id-boundary-guard.test.ts +6 -6
  32. package/src/__tests__/attachments-store.test.ts +0 -1
  33. package/src/__tests__/avatar-e2e.test.ts +74 -115
  34. package/src/__tests__/avatar-router.test.ts +25 -62
  35. package/src/__tests__/browser-manager.test.ts +24 -0
  36. package/src/__tests__/browser-skill-baseline-tool-payload.test.ts +4 -3
  37. package/src/__tests__/browser-skill-endstate.test.ts +8 -11
  38. package/src/__tests__/btw-routes.test.ts +326 -0
  39. package/src/__tests__/bundled-skill-retrieval-guard.test.ts +23 -9
  40. package/src/__tests__/call-controller.test.ts +0 -1
  41. package/src/__tests__/call-conversation-messages.test.ts +0 -1
  42. package/src/__tests__/call-domain.test.ts +0 -1
  43. package/src/__tests__/call-pointer-messages.test.ts +0 -1
  44. package/src/__tests__/call-recovery.test.ts +0 -1
  45. package/src/__tests__/call-routes-http.test.ts +0 -1
  46. package/src/__tests__/call-store.test.ts +0 -1
  47. package/src/__tests__/canonical-guardian-store.test.ts +0 -1
  48. package/src/__tests__/channel-approval-routes.test.ts +1 -1
  49. package/src/__tests__/channel-approvals.test.ts +1 -1
  50. package/src/__tests__/channel-delivery-store.test.ts +0 -1
  51. package/src/__tests__/channel-guardian.test.ts +5 -7
  52. package/src/__tests__/channel-retry-sweep.test.ts +0 -1
  53. package/src/__tests__/checker.test.ts +4 -11
  54. package/src/__tests__/compaction.benchmark.test.ts +16 -14
  55. package/src/__tests__/computer-use-session-lifecycle.test.ts +10 -11
  56. package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
  57. package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +2 -5
  58. package/src/__tests__/computer-use-tools.test.ts +35 -31
  59. package/src/__tests__/config-schema.test.ts +11 -15
  60. package/src/__tests__/config-watcher.test.ts +0 -1
  61. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
  62. package/src/__tests__/conflict-store.test.ts +0 -1
  63. package/src/__tests__/connection-policy.test.ts +4 -7
  64. package/src/__tests__/contacts-tools.test.ts +0 -1
  65. package/src/__tests__/context-memory-e2e.test.ts +2 -4
  66. package/src/__tests__/context-overflow-reducer.test.ts +2 -4
  67. package/src/__tests__/context-window-manager.test.ts +147 -60
  68. package/src/__tests__/contradiction-checker.test.ts +0 -1
  69. package/src/__tests__/conversation-attention-store.test.ts +0 -1
  70. package/src/__tests__/conversation-attention-telegram.test.ts +1 -1
  71. package/src/__tests__/conversation-pairing.test.ts +2 -2
  72. package/src/__tests__/conversation-routes-guardian-reply.test.ts +25 -1
  73. package/src/__tests__/conversation-routes-slash-commands.test.ts +381 -0
  74. package/src/__tests__/conversation-store.test.ts +0 -1
  75. package/src/__tests__/conversation-unread-route.test.ts +1 -2
  76. package/src/__tests__/credential-security-invariants.test.ts +7 -8
  77. package/src/__tests__/cross-provider-web-search.test.ts +353 -0
  78. package/src/__tests__/daemon-assistant-events.test.ts +6 -7
  79. package/src/__tests__/db-schedule-syntax-migration.test.ts +15 -3
  80. package/src/__tests__/delete-managed-skill-tool.test.ts +5 -9
  81. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -1
  82. package/src/__tests__/diagnostics-export.test.ts +189 -0
  83. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
  84. package/src/__tests__/emit-signal-routing-intent.test.ts +3 -3
  85. package/src/__tests__/entity-extractor.test.ts +0 -1
  86. package/src/__tests__/entity-search.test.ts +0 -1
  87. package/src/__tests__/ephemeral-permissions.test.ts +2 -4
  88. package/src/__tests__/file-read-tool.test.ts +86 -0
  89. package/src/__tests__/followup-tools.test.ts +0 -1
  90. package/src/__tests__/frontmatter.test.ts +77 -34
  91. package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
  92. package/src/__tests__/gateway-only-guard.test.ts +1 -1
  93. package/src/__tests__/guardian-action-conversation-turn.test.ts +0 -1
  94. package/src/__tests__/guardian-action-followup-executor.test.ts +0 -1
  95. package/src/__tests__/guardian-action-followup-store.test.ts +0 -1
  96. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +0 -1
  97. package/src/__tests__/guardian-action-late-reply.test.ts +0 -1
  98. package/src/__tests__/guardian-action-store.test.ts +0 -1
  99. package/src/__tests__/guardian-action-sweep.test.ts +0 -1
  100. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +0 -1
  101. package/src/__tests__/guardian-dispatch.test.ts +1 -2
  102. package/src/__tests__/guardian-grant-minting.test.ts +1 -1
  103. package/src/__tests__/guardian-outbound-http.test.ts +0 -1
  104. package/src/__tests__/guardian-principal-id-roundtrip.test.ts +0 -1
  105. package/src/__tests__/guardian-routing-invariants.test.ts +1 -1
  106. package/src/__tests__/guardian-routing-state.test.ts +0 -1
  107. package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -1
  108. package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +3 -5
  109. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +28 -426
  110. package/src/__tests__/host-bash-proxy.test.ts +335 -0
  111. package/src/__tests__/host-file-proxy.test.ts +374 -0
  112. package/src/__tests__/host-shell-tool.test.ts +147 -1
  113. package/src/__tests__/http-user-message-parity.test.ts +361 -0
  114. package/src/__tests__/inbound-invite-redemption.test.ts +0 -1
  115. package/src/__tests__/integration-status.test.ts +3 -8
  116. package/src/__tests__/intent-routing.test.ts +7 -46
  117. package/src/__tests__/invite-redemption-service.test.ts +0 -1
  118. package/src/__tests__/invite-routes-http.test.ts +0 -1
  119. package/src/__tests__/llm-usage-store.test.ts +0 -1
  120. package/src/__tests__/managed-avatar-client.test.ts +101 -55
  121. package/src/__tests__/managed-skill-lifecycle.test.ts +9 -18
  122. package/src/__tests__/managed-store.test.ts +94 -21
  123. package/src/__tests__/media-reuse-story.e2e.test.ts +0 -1
  124. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +2 -4
  125. package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -1
  126. package/src/__tests__/memory-recall-quality.test.ts +0 -1
  127. package/src/__tests__/memory-regressions.experimental.test.ts +0 -1
  128. package/src/__tests__/memory-regressions.test.ts +0 -1
  129. package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -1
  130. package/src/__tests__/memory-upsert-concurrency.test.ts +0 -1
  131. package/src/__tests__/messaging-send-tool.test.ts +35 -0
  132. package/src/__tests__/messaging-skill-split.test.ts +138 -0
  133. package/src/__tests__/migration-cross-version-compatibility.test.ts +0 -1
  134. package/src/__tests__/migration-export-http.test.ts +2 -3
  135. package/src/__tests__/migration-import-commit-http.test.ts +1 -2
  136. package/src/__tests__/migration-import-preflight-http.test.ts +1 -2
  137. package/src/__tests__/migration-validate-http.test.ts +1 -2
  138. package/src/__tests__/native-web-search.test.ts +475 -0
  139. package/src/__tests__/navigate-settings-tab.test.ts +84 -0
  140. package/src/__tests__/non-member-access-request.test.ts +0 -1
  141. package/src/__tests__/notification-broadcaster.test.ts +15 -15
  142. package/src/__tests__/notification-decision-strategy.test.ts +6 -6
  143. package/src/__tests__/notification-deep-link.test.ts +7 -7
  144. package/src/__tests__/notification-guardian-path.test.ts +2 -3
  145. package/src/__tests__/notification-telegram-adapter.test.ts +1 -1
  146. package/src/__tests__/notification-thread-candidates.test.ts +4 -4
  147. package/src/__tests__/onboarding-starter-tasks.test.ts +0 -1
  148. package/src/__tests__/playbook-execution.test.ts +0 -1
  149. package/src/__tests__/playbook-tools.test.ts +0 -1
  150. package/src/__tests__/profile-compiler.test.ts +0 -1
  151. package/src/__tests__/provider-managed-proxy-integration.test.ts +25 -0
  152. package/src/__tests__/qdrant-collection-migration.test.ts +223 -0
  153. package/src/__tests__/recording-handler.test.ts +30 -94
  154. package/src/__tests__/registry.test.ts +28 -35
  155. package/src/__tests__/relay-server.test.ts +0 -1
  156. package/src/__tests__/ride-shotgun-handler.test.ts +4 -20
  157. package/src/__tests__/runtime-attachment-metadata.test.ts +0 -1
  158. package/src/__tests__/runtime-events-sse-parity.test.ts +3 -4
  159. package/src/__tests__/runtime-events-sse.test.ts +0 -1
  160. package/src/__tests__/sandbox-diagnostics.test.ts +0 -1
  161. package/src/__tests__/scaffold-managed-skill-tool.test.ts +30 -28
  162. package/src/__tests__/schedule-store.test.ts +441 -1
  163. package/src/__tests__/schedule-tools.test.ts +468 -7
  164. package/src/__tests__/scheduler-recurrence.test.ts +196 -23
  165. package/src/__tests__/scoped-approval-grants.test.ts +0 -1
  166. package/src/__tests__/scoped-grant-security-matrix.test.ts +0 -1
  167. package/src/__tests__/secret-prompt-log-hygiene.test.ts +6 -3
  168. package/src/__tests__/secret-response-routing.test.ts +4 -1
  169. package/src/__tests__/send-endpoint-busy.test.ts +14 -2
  170. package/src/__tests__/send-notification-tool.test.ts +0 -7
  171. package/src/__tests__/sequence-store.test.ts +0 -1
  172. package/src/__tests__/server-history-render.test.ts +1 -2
  173. package/src/__tests__/session-abort-tool-results.test.ts +0 -1
  174. package/src/__tests__/session-agent-loop.test.ts +46 -6
  175. package/src/__tests__/session-confirmation-signals.test.ts +0 -1
  176. package/src/__tests__/session-conflict-gate.test.ts +2 -6
  177. package/src/__tests__/session-error.test.ts +5 -14
  178. package/src/__tests__/session-init.benchmark.test.ts +3 -5
  179. package/src/__tests__/session-load-history-repair.test.ts +0 -1
  180. package/src/__tests__/session-media-retry.test.ts +12 -74
  181. package/src/__tests__/session-pre-run-repair.test.ts +0 -1
  182. package/src/__tests__/session-profile-injection.test.ts +2 -6
  183. package/src/__tests__/session-provider-retry-repair.test.ts +2 -6
  184. package/src/__tests__/session-queue.test.ts +94 -139
  185. package/src/__tests__/session-skill-tools.test.ts +115 -115
  186. package/src/__tests__/session-slash-known.test.ts +0 -1
  187. package/src/__tests__/session-slash-queue.test.ts +0 -1
  188. package/src/__tests__/session-slash-unknown.test.ts +0 -1
  189. package/src/__tests__/session-surfaces-task-progress.test.ts +34 -0
  190. package/src/__tests__/session-usage.test.ts +0 -1
  191. package/src/__tests__/session-workspace-cache-state.test.ts +2 -6
  192. package/src/__tests__/session-workspace-injection.test.ts +2 -6
  193. package/src/__tests__/session-workspace-tool-tracking.test.ts +2 -6
  194. package/src/__tests__/skill-feature-flags-integration.test.ts +180 -184
  195. package/src/__tests__/skill-feature-flags.test.ts +125 -18
  196. package/src/__tests__/skill-load-feature-flag.test.ts +1 -2
  197. package/src/__tests__/skill-load-tool.test.ts +194 -2
  198. package/src/__tests__/skill-projection-feature-flag.test.ts +27 -16
  199. package/src/__tests__/skill-projection.benchmark.test.ts +15 -14
  200. package/src/__tests__/skills.test.ts +14 -53
  201. package/src/__tests__/slack-channel-config.test.ts +0 -1
  202. package/src/__tests__/slack-inbound-verification.test.ts +0 -1
  203. package/src/__tests__/slack-skill.test.ts +1 -1
  204. package/src/__tests__/subagent-tools.test.ts +2 -2
  205. package/src/__tests__/system-prompt.test.ts +4 -3
  206. package/src/__tests__/task-compiler.test.ts +0 -1
  207. package/src/__tests__/task-management-tools.test.ts +0 -1
  208. package/src/__tests__/task-memory-cleanup.test.ts +0 -1
  209. package/src/__tests__/task-runner.test.ts +0 -1
  210. package/src/__tests__/task-scheduler.test.ts +0 -1
  211. package/src/__tests__/terminal-tools.test.ts +0 -1
  212. package/src/__tests__/test-support/computer-use-skill-harness.ts +2 -4
  213. package/src/__tests__/thread-seed-composer.test.ts +5 -5
  214. package/src/__tests__/tool-approval-handler.test.ts +0 -1
  215. package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -1
  216. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -1
  217. package/src/__tests__/tool-executor.test.ts +8 -86
  218. package/src/__tests__/tool-grant-request-escalation.test.ts +0 -1
  219. package/src/__tests__/tool-notification-listener.test.ts +1 -1
  220. package/src/__tests__/tool-preview-lifecycle.test.ts +416 -0
  221. package/src/__tests__/trust-store.test.ts +80 -4
  222. package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
  223. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +0 -1
  224. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +0 -1
  225. package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
  226. package/src/__tests__/trusted-contact-verification.test.ts +0 -1
  227. package/src/__tests__/twilio-provider.test.ts +0 -1
  228. package/src/__tests__/twilio-routes.test.ts +0 -1
  229. package/src/__tests__/{request-file-tool.test.ts → ui-file-upload-surface.test.ts} +11 -72
  230. package/src/__tests__/update-bulletin.test.ts +0 -1
  231. package/src/__tests__/usage-cache-backfill-migration.test.ts +0 -1
  232. package/src/__tests__/usage-routes.test.ts +0 -1
  233. package/src/__tests__/verification-control-plane-policy.test.ts +4 -4
  234. package/src/__tests__/voice-invite-redemption.test.ts +0 -1
  235. package/src/__tests__/voice-scoped-grant-consumer.test.ts +0 -1
  236. package/src/__tests__/voice-session-bridge.test.ts +9 -1
  237. package/src/__tests__/web-fetch.test.ts +57 -0
  238. package/src/__tests__/workspace-git-service.test.ts +5 -14
  239. package/src/__tests__/workspace-policy.test.ts +0 -1
  240. package/src/agent/loop.ts +22 -34
  241. package/src/bundler/bundle-signer.ts +4 -4
  242. package/src/calls/call-controller.ts +1 -1
  243. package/src/calls/relay-server.ts +1 -1
  244. package/src/calls/twilio-rest.ts +1 -1
  245. package/src/calls/voice-session-bridge.ts +3 -1
  246. package/src/cli/__tests__/notifications.test.ts +3 -4
  247. package/src/cli/commands/map.ts +2 -6
  248. package/src/cli/commands/mcp.ts +73 -15
  249. package/src/cli/commands/notifications.ts +4 -4
  250. package/src/cli/commands/sessions.ts +9 -1
  251. package/src/cli/commands/skills.ts +6 -10
  252. package/src/cli/http-client.ts +2 -3
  253. package/src/cli/main-screen.tsx +10 -10
  254. package/src/cli/program.ts +0 -4
  255. package/src/cli/reference.ts +0 -2
  256. package/src/cli.ts +15 -9
  257. package/src/config/__tests__/bundled-tool-registry-guard.test.ts +120 -0
  258. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +11 -0
  259. package/src/config/bundled-skills/app-builder/SKILL.md +6 -1
  260. package/src/config/bundled-skills/browser/SKILL.md +6 -1
  261. package/src/config/bundled-skills/chatgpt-import/SKILL.md +5 -1
  262. package/src/config/bundled-skills/claude-code/SKILL.md +5 -1
  263. package/src/config/bundled-skills/computer-use/SKILL.md +6 -1
  264. package/src/config/bundled-skills/computer-use/TOOLS.json +6 -69
  265. package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +10 -1
  266. package/src/config/bundled-skills/contacts/SKILL.md +10 -1
  267. package/src/config/bundled-skills/contacts/TOOLS.json +35 -0
  268. package/src/config/bundled-skills/{messaging → contacts}/tools/google-contacts.ts +9 -2
  269. package/src/config/bundled-skills/document/SKILL.md +4 -1
  270. package/src/config/bundled-skills/doordash/SKILL.md +8 -1
  271. package/src/config/bundled-skills/doordash/lib/shared/platform.ts +4 -1
  272. package/src/config/bundled-skills/followups/SKILL.md +4 -1
  273. package/src/config/bundled-skills/gmail/SKILL.md +180 -0
  274. package/src/config/bundled-skills/gmail/TOOLS.json +506 -0
  275. package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +149 -0
  276. package/src/config/bundled-skills/gmail/tools/gmail-attachments.ts +110 -0
  277. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-draft.ts +1 -1
  278. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-filters.ts +1 -1
  279. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-follow-up.ts +1 -1
  280. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-forward.ts +1 -1
  281. package/src/config/bundled-skills/gmail/tools/gmail-label.ts +50 -0
  282. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-outreach-scan.ts +8 -90
  283. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-send-draft.ts +1 -1
  284. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-sender-digest.ts +2 -2
  285. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-trash.ts +1 -1
  286. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-unsubscribe.ts +1 -1
  287. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-vacation.ts +1 -1
  288. package/src/config/bundled-skills/gmail/tools/shared.ts +47 -0
  289. package/src/config/bundled-skills/google-calendar/SKILL.md +5 -1
  290. package/src/config/bundled-skills/image-studio/SKILL.md +5 -1
  291. package/src/config/bundled-skills/knowledge-graph/SKILL.md +4 -1
  292. package/src/config/bundled-skills/media-processing/SKILL.md +7 -13
  293. package/src/config/bundled-skills/media-processing/TOOLS.json +0 -22
  294. package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +12 -1
  295. package/src/config/bundled-skills/messaging/SKILL.md +23 -139
  296. package/src/config/bundled-skills/messaging/TOOLS.json +33 -1215
  297. package/src/config/bundled-skills/messaging/tools/gmail-mime-helpers.ts +42 -0
  298. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +165 -2
  299. package/src/config/bundled-skills/messaging/tools/messaging-sender-digest.ts +1 -13
  300. package/src/config/bundled-skills/messaging/tools/shared.ts +81 -34
  301. package/src/config/bundled-skills/notifications/SKILL.md +5 -1
  302. package/src/config/bundled-skills/orchestration/SKILL.md +30 -0
  303. package/src/config/bundled-skills/orchestration/TOOLS.json +35 -0
  304. package/src/config/bundled-skills/{reminder/tools/reminder-create.ts → orchestration/tools/swarm-delegate.ts} +3 -3
  305. package/src/config/bundled-skills/phone-calls/SKILL.md +9 -1
  306. package/src/config/bundled-skills/playbooks/SKILL.md +4 -1
  307. package/src/config/bundled-skills/schedule/SKILL.md +70 -9
  308. package/src/config/bundled-skills/schedule/TOOLS.json +38 -6
  309. package/src/config/bundled-skills/screen-watch/SKILL.md +28 -0
  310. package/src/config/bundled-skills/screen-watch/TOOLS.json +35 -0
  311. package/src/config/bundled-skills/{reminder/tools/reminder-cancel.ts → screen-watch/tools/start-screen-watch.ts} +3 -3
  312. package/src/config/bundled-skills/sequences/SKILL.md +47 -0
  313. package/src/config/bundled-skills/sequences/TOOLS.json +340 -0
  314. package/src/config/bundled-skills/sequences/tools/sequence-update.ts +128 -0
  315. package/src/config/bundled-skills/sequences/tools/shared.ts +9 -0
  316. package/src/config/bundled-skills/settings/SKILL.md +12 -0
  317. package/src/config/bundled-skills/settings/TOOLS.json +112 -0
  318. package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +43 -0
  319. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +52 -0
  320. package/src/config/bundled-skills/{computer-use/tools/computer-use-right-click.ts → settings/tools/set-avatar.ts} +2 -6
  321. package/src/{tools/system/voice-config.ts → config/bundled-skills/settings/tools/voice-config-update.ts} +59 -96
  322. package/src/config/bundled-skills/skill-management/SKILL.md +18 -0
  323. package/src/config/bundled-skills/skill-management/TOOLS.json +90 -0
  324. package/src/config/bundled-skills/{computer-use/tools/computer-use-double-click.ts → skill-management/tools/delete-managed.ts} +2 -6
  325. package/src/config/bundled-skills/skill-management/tools/scaffold-managed.ts +12 -0
  326. package/src/config/bundled-skills/slack/SKILL.md +5 -1
  327. package/src/config/bundled-skills/subagent/SKILL.md +4 -1
  328. package/src/config/bundled-skills/tasks/SKILL.md +5 -2
  329. package/src/config/bundled-skills/transcribe/SKILL.md +4 -1
  330. package/src/config/bundled-skills/watcher/SKILL.md +4 -1
  331. package/src/config/bundled-tool-registry.ts +118 -107
  332. package/src/config/env.ts +5 -2
  333. package/src/config/feature-flag-registry.json +25 -9
  334. package/src/config/loader.ts +10 -2
  335. package/src/config/schema.ts +19 -16
  336. package/src/config/schemas/inference.ts +12 -22
  337. package/src/config/schemas/memory-storage.ts +19 -1
  338. package/src/config/schemas/platform.ts +0 -16
  339. package/src/config/skill-state.ts +11 -8
  340. package/src/config/skills.ts +83 -32
  341. package/src/context/token-estimator.ts +11 -0
  342. package/src/context/window-manager.ts +180 -151
  343. package/src/daemon/computer-use-session.ts +11 -43
  344. package/src/daemon/daemon-control.ts +4 -1
  345. package/src/daemon/handlers/config-channels.ts +5 -9
  346. package/src/daemon/handlers/config-ingress.ts +0 -4
  347. package/src/daemon/handlers/config-model.ts +7 -13
  348. package/src/daemon/handlers/config-telegram.ts +4 -8
  349. package/src/daemon/handlers/config-voice.ts +2 -5
  350. package/src/daemon/handlers/dictation.ts +2 -12
  351. package/src/daemon/handlers/identity.ts +0 -105
  352. package/src/daemon/handlers/recording.ts +3 -23
  353. package/src/daemon/handlers/session-history.ts +1 -1
  354. package/src/daemon/handlers/sessions.ts +53 -72
  355. package/src/daemon/handlers/shared.ts +7 -28
  356. package/src/daemon/handlers/skills.ts +31 -27
  357. package/src/daemon/host-bash-proxy.ts +148 -0
  358. package/src/daemon/host-file-proxy.ts +135 -0
  359. package/src/daemon/lifecycle.ts +49 -24
  360. package/src/daemon/mcp-reload-service.ts +123 -0
  361. package/src/daemon/message-protocol.ts +6 -0
  362. package/src/daemon/message-types/browser.ts +1 -1
  363. package/src/daemon/message-types/computer-use.ts +1 -4
  364. package/src/daemon/message-types/guardian-actions.ts +1 -1
  365. package/src/daemon/message-types/host-bash.ts +18 -0
  366. package/src/daemon/message-types/host-file.ts +44 -0
  367. package/src/daemon/message-types/integrations.ts +1 -67
  368. package/src/daemon/message-types/messages.ts +15 -0
  369. package/src/daemon/message-types/schedules.ts +11 -27
  370. package/src/daemon/message-types/sessions.ts +2 -1
  371. package/src/daemon/message-types/settings.ts +1 -1
  372. package/src/daemon/message-types/shared.ts +1 -1
  373. package/src/daemon/ride-shotgun-handler.ts +2 -42
  374. package/src/daemon/server.ts +43 -10
  375. package/src/daemon/session-agent-loop-handlers.ts +48 -7
  376. package/src/daemon/session-agent-loop.ts +97 -66
  377. package/src/daemon/session-attachments.ts +1 -1
  378. package/src/daemon/session-error.ts +17 -16
  379. package/src/daemon/session-lifecycle.ts +20 -1
  380. package/src/daemon/session-media-retry.ts +1 -15
  381. package/src/daemon/session-messaging.ts +14 -6
  382. package/src/daemon/session-process.ts +36 -7
  383. package/src/daemon/session-queue-manager.ts +62 -103
  384. package/src/daemon/session-runtime-assembly.ts +27 -0
  385. package/src/daemon/session-skill-tools.ts +12 -11
  386. package/src/daemon/session-slash.ts +7 -0
  387. package/src/daemon/session-surfaces.ts +19 -97
  388. package/src/daemon/session-tool-setup.ts +146 -6
  389. package/src/daemon/session.ts +77 -13
  390. package/src/errors.ts +0 -2
  391. package/src/export/formatter.ts +6 -0
  392. package/src/mcp/mcp-oauth-provider.ts +1 -3
  393. package/src/media/avatar-router.ts +20 -28
  394. package/src/media/avatar-types.ts +7 -14
  395. package/src/media/managed-avatar-client.ts +70 -34
  396. package/src/memory/conversation-title-service.ts +1 -2
  397. package/src/memory/db-init.ts +16 -0
  398. package/src/memory/embedding-backend.ts +129 -27
  399. package/src/memory/embedding-gemini.test.ts +256 -0
  400. package/src/memory/embedding-gemini.ts +47 -13
  401. package/src/memory/embedding-local.ts +14 -2
  402. package/src/memory/embedding-ollama.ts +15 -2
  403. package/src/memory/embedding-openai.ts +15 -2
  404. package/src/memory/embedding-types.test.ts +116 -0
  405. package/src/memory/embedding-types.ts +61 -0
  406. package/src/memory/fingerprint.ts +1 -1
  407. package/src/memory/indexer.ts +25 -1
  408. package/src/memory/job-handlers/embedding.test.ts +258 -0
  409. package/src/memory/job-handlers/embedding.ts +81 -1
  410. package/src/memory/job-handlers/index-maintenance.ts +35 -1
  411. package/src/memory/job-handlers/media-processing.ts +11 -1
  412. package/src/memory/job-utils.ts +21 -6
  413. package/src/memory/jobs-store.ts +5 -1
  414. package/src/memory/jobs-worker.ts +8 -0
  415. package/src/memory/message-content.ts +66 -0
  416. package/src/memory/migrations/100-core-tables.ts +1 -31
  417. package/src/memory/migrations/104-core-indexes.ts +0 -11
  418. package/src/memory/migrations/145-drop-accounts-table.ts +19 -0
  419. package/src/memory/migrations/146-schedule-oneshot-routing.ts +94 -0
  420. package/src/memory/migrations/147-migrate-reminders-to-schedules.ts +129 -0
  421. package/src/memory/migrations/148-drop-reminders-table.ts +18 -0
  422. package/src/memory/migrations/index.ts +4 -0
  423. package/src/memory/migrations/registry.ts +19 -0
  424. package/src/memory/qdrant-client.ts +158 -43
  425. package/src/memory/retriever.test.ts +0 -1
  426. package/src/memory/retriever.ts +12 -2
  427. package/src/memory/schema/infrastructure.ts +5 -29
  428. package/src/memory/search/formatting.ts +34 -9
  429. package/src/memory/search/semantic.ts +57 -2
  430. package/src/memory/search/types.ts +2 -1
  431. package/src/notifications/AGENTS.md +2 -2
  432. package/src/notifications/README.md +59 -58
  433. package/src/notifications/adapters/macos.ts +1 -1
  434. package/src/notifications/broadcaster.ts +5 -5
  435. package/src/notifications/copy-composer.ts +1 -1
  436. package/src/notifications/decision-engine.ts +2 -2
  437. package/src/notifications/destination-resolver.ts +2 -2
  438. package/src/notifications/emit-signal.ts +8 -8
  439. package/src/notifications/signal.ts +1 -1
  440. package/src/notifications/thread-seed-composer.ts +1 -1
  441. package/src/oauth/connect-orchestrator.ts +1 -1
  442. package/src/oauth/token-persistence.ts +1 -1
  443. package/src/permissions/checker.ts +12 -1
  444. package/src/permissions/defaults.ts +10 -14
  445. package/src/permissions/trust-store.ts +37 -0
  446. package/src/permissions/workspace-policy.ts +0 -1
  447. package/src/prompts/__tests__/build-cli-reference-section.test.ts +11 -0
  448. package/src/prompts/computer-use-prompt.ts +1 -1
  449. package/src/prompts/system-prompt.ts +29 -30
  450. package/src/prompts/templates/SOUL.md +1 -2
  451. package/src/prompts/templates/UPDATES.md +16 -7
  452. package/src/providers/anthropic/client.ts +87 -33
  453. package/src/providers/gemini/client.ts +6 -0
  454. package/src/providers/managed-proxy/constants.ts +5 -0
  455. package/src/providers/openai/client.ts +15 -0
  456. package/src/providers/registry.ts +2 -2
  457. package/src/providers/types.ts +24 -2
  458. package/src/runtime/AGENTS.md +18 -0
  459. package/src/runtime/assistant-event-hub.ts +2 -3
  460. package/src/runtime/assistant-event.ts +4 -4
  461. package/src/runtime/auth/__tests__/context.test.ts +5 -5
  462. package/src/runtime/auth/__tests__/credential-service.test.ts +0 -1
  463. package/src/runtime/auth/__tests__/guard-tests.test.ts +2 -2
  464. package/src/runtime/auth/__tests__/{ipc-auth-context.test.ts → local-auth-context.test.ts} +21 -21
  465. package/src/runtime/auth/__tests__/route-policy.test.ts +2 -2
  466. package/src/runtime/auth/__tests__/scopes.test.ts +7 -7
  467. package/src/runtime/auth/__tests__/subject.test.ts +8 -8
  468. package/src/runtime/auth/__tests__/token-service.test.ts +0 -1
  469. package/src/runtime/auth/route-policy.ts +8 -4
  470. package/src/runtime/auth/scopes.ts +1 -1
  471. package/src/runtime/auth/subject.ts +4 -4
  472. package/src/runtime/auth/token-service.ts +0 -23
  473. package/src/runtime/auth/types.ts +3 -3
  474. package/src/runtime/guardian-action-followup-executor.ts +1 -1
  475. package/src/runtime/guardian-action-grant-minter.ts +1 -1
  476. package/src/runtime/guardian-action-service.ts +3 -3
  477. package/src/runtime/http-server.ts +15 -2
  478. package/src/runtime/invite-service.ts +3 -3
  479. package/src/runtime/local-actor-identity.ts +17 -22
  480. package/src/runtime/pending-interactions.ts +21 -9
  481. package/src/runtime/routes/app-management-routes.ts +2 -3
  482. package/src/runtime/routes/approval-routes.ts +1 -3
  483. package/src/runtime/routes/btw-routes.ts +155 -0
  484. package/src/runtime/routes/computer-use-routes.ts +77 -31
  485. package/src/runtime/routes/conversation-routes.ts +230 -46
  486. package/src/runtime/routes/diagnostics-routes.ts +63 -29
  487. package/src/runtime/routes/documents-routes.ts +2 -2
  488. package/src/runtime/routes/global-search-routes.ts +1 -1
  489. package/src/runtime/routes/host-bash-routes.ts +83 -0
  490. package/src/runtime/routes/host-file-routes.ts +79 -0
  491. package/src/runtime/routes/integrations/slack/share.ts +1 -1
  492. package/src/runtime/routes/log-export-routes.ts +120 -0
  493. package/src/runtime/routes/mcp-routes.ts +20 -0
  494. package/src/runtime/routes/migration-routes.ts +3 -3
  495. package/src/runtime/routes/pairing-routes.ts +1 -1
  496. package/src/runtime/routes/recording-routes.ts +6 -4
  497. package/src/runtime/routes/schedule-routes.ts +31 -5
  498. package/src/runtime/routes/session-management-routes.ts +2 -6
  499. package/src/runtime/routes/session-query-routes.ts +18 -15
  500. package/src/runtime/routes/settings-routes.ts +7 -261
  501. package/src/runtime/routes/skills-routes.ts +7 -6
  502. package/src/runtime/routes/subagents-routes.ts +4 -10
  503. package/src/runtime/routes/surface-action-routes.ts +3 -14
  504. package/src/runtime/routes/surface-content-routes.ts +22 -5
  505. package/src/runtime/routes/work-items-routes.ts +21 -25
  506. package/src/runtime/routes/workspace-routes.test.ts +3 -3
  507. package/src/runtime/routes/workspace-utils.ts +1 -1
  508. package/src/runtime/telegram-streaming-delivery.ts +3 -0
  509. package/src/runtime/verification-outbound-actions.ts +2 -2
  510. package/src/schedule/integration-status.ts +0 -6
  511. package/src/schedule/schedule-store.ts +234 -43
  512. package/src/schedule/scheduler.ts +73 -74
  513. package/src/security/oauth2.ts +1 -1
  514. package/src/sequence/store.ts +12 -2
  515. package/src/skills/frontmatter.ts +19 -77
  516. package/src/skills/managed-store.ts +11 -2
  517. package/src/subagent/manager.ts +5 -3
  518. package/src/tasks/ephemeral-permissions.ts +3 -5
  519. package/src/tools/AGENTS.md +0 -1
  520. package/src/tools/browser/browser-manager.ts +17 -11
  521. package/src/tools/browser/jit-auth.ts +4 -1
  522. package/src/tools/claude-code/claude-code.ts +1 -1
  523. package/src/tools/computer-use/definitions.ts +48 -60
  524. package/src/tools/document/document-tool.ts +6 -6
  525. package/src/tools/filesystem/edit.ts +2 -1
  526. package/src/tools/filesystem/read.ts +20 -2
  527. package/src/tools/filesystem/write.ts +2 -1
  528. package/src/tools/host-filesystem/edit.ts +17 -1
  529. package/src/tools/host-filesystem/read.ts +16 -1
  530. package/src/tools/host-filesystem/write.ts +15 -1
  531. package/src/tools/host-terminal/host-shell.ts +24 -0
  532. package/src/tools/memory/definitions.ts +45 -81
  533. package/src/tools/memory/handlers.test.ts +0 -1
  534. package/src/tools/memory/handlers.ts +1 -1
  535. package/src/tools/memory/register.ts +26 -60
  536. package/src/tools/network/script-proxy/session-manager.ts +6 -8
  537. package/src/tools/network/web-fetch.ts +7 -1
  538. package/src/tools/network/web-search.ts +2 -1
  539. package/src/tools/registry.ts +23 -0
  540. package/src/tools/schedule/create.ts +113 -5
  541. package/src/tools/schedule/list.ts +57 -15
  542. package/src/tools/schedule/update.ts +73 -3
  543. package/src/tools/shared/filesystem/image-read.ts +192 -0
  544. package/src/tools/side-effects.ts +1 -7
  545. package/src/tools/skills/delete-managed.ts +27 -64
  546. package/src/tools/skills/execute.ts +54 -0
  547. package/src/tools/skills/load.ts +127 -5
  548. package/src/tools/skills/scaffold-managed.ts +93 -172
  549. package/src/tools/subagent/message.ts +0 -7
  550. package/src/tools/subagent/spawn.ts +1 -1
  551. package/src/tools/swarm/delegate.ts +0 -3
  552. package/src/tools/system/avatar-generator.ts +13 -19
  553. package/src/tools/system/request-permission.ts +2 -1
  554. package/src/tools/terminal/safe-env.ts +1 -0
  555. package/src/tools/tool-manifest.ts +41 -47
  556. package/src/tools/types.ts +6 -2
  557. package/src/tools/ui-surface/definitions.ts +0 -55
  558. package/src/util/errors.ts +0 -10
  559. package/src/workspace/git-service.ts +0 -2
  560. package/src/__tests__/account-registry.test.ts +0 -258
  561. package/src/__tests__/email-classifier.test.ts +0 -25
  562. package/src/__tests__/gmail-integration.test.ts +0 -97
  563. package/src/__tests__/handle-user-message-secret-resume.test.ts +0 -172
  564. package/src/__tests__/managed-twitter-guardrails.test.ts +0 -357
  565. package/src/__tests__/recording-intent-fallback.test.ts +0 -199
  566. package/src/__tests__/recording-intent.test.ts +0 -985
  567. package/src/__tests__/recording-state-machine.test.ts +0 -1574
  568. package/src/__tests__/reminder-store.test.ts +0 -350
  569. package/src/__tests__/reminder.test.ts +0 -337
  570. package/src/__tests__/scan-result-store.test.ts +0 -121
  571. package/src/__tests__/twitter-platform-proxy-client.test.ts +0 -475
  572. package/src/__tests__/view-image-tool.test.ts +0 -241
  573. package/src/cli/commands/amazon/cart.ts +0 -513
  574. package/src/cli/commands/amazon/checkout.ts +0 -394
  575. package/src/cli/commands/amazon/client.ts +0 -513
  576. package/src/cli/commands/amazon/index.ts +0 -885
  577. package/src/cli/commands/amazon/product-details.ts +0 -145
  578. package/src/cli/commands/amazon/request-extractor.ts +0 -187
  579. package/src/cli/commands/amazon/search.ts +0 -76
  580. package/src/cli/commands/amazon/session.ts +0 -108
  581. package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +0 -345
  582. package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +0 -252
  583. package/src/cli/commands/twitter/__tests__/oauth-client.test.ts +0 -151
  584. package/src/cli/commands/twitter/index.ts +0 -420
  585. package/src/cli/commands/twitter/oauth-client.ts +0 -60
  586. package/src/cli/commands/twitter/router.ts +0 -351
  587. package/src/cli/commands/twitter/types.ts +0 -30
  588. package/src/config/bundled-skills/agentmail/SKILL.md +0 -132
  589. package/src/config/bundled-skills/agentmail/icon.svg +0 -21
  590. package/src/config/bundled-skills/amazon/SKILL.md +0 -136
  591. package/src/config/bundled-skills/amazon/icon.svg +0 -13
  592. package/src/config/bundled-skills/api-mapping/SKILL.md +0 -78
  593. package/src/config/bundled-skills/api-mapping/icon.svg +0 -18
  594. package/src/config/bundled-skills/cli-discover/SKILL.md +0 -68
  595. package/src/config/bundled-skills/deploy-fullstack-vercel/SKILL.md +0 -179
  596. package/src/config/bundled-skills/document-writer/SKILL.md +0 -195
  597. package/src/config/bundled-skills/elevenlabs-voice/SKILL.md +0 -140
  598. package/src/config/bundled-skills/email-setup/SKILL.md +0 -68
  599. package/src/config/bundled-skills/frontend-design/SKILL.md +0 -44
  600. package/src/config/bundled-skills/frontend-design/icon.svg +0 -16
  601. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +0 -452
  602. package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +0 -203
  603. package/src/config/bundled-skills/influencer/SKILL.md +0 -144
  604. package/src/config/bundled-skills/influencer/scripts/client.ts +0 -1269
  605. package/src/config/bundled-skills/influencer/scripts/influencer.ts +0 -267
  606. package/src/config/bundled-skills/macos-automation/SKILL.md +0 -65
  607. package/src/config/bundled-skills/macos-automation/icon.svg +0 -12
  608. package/src/config/bundled-skills/mcp-setup/SKILL.md +0 -75
  609. package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +0 -184
  610. package/src/config/bundled-skills/messaging/tools/gmail-archive-by-query.ts +0 -80
  611. package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +0 -29
  612. package/src/config/bundled-skills/messaging/tools/gmail-batch-archive.ts +0 -56
  613. package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +0 -34
  614. package/src/config/bundled-skills/messaging/tools/gmail-download-attachment.ts +0 -47
  615. package/src/config/bundled-skills/messaging/tools/gmail-label.ts +0 -31
  616. package/src/config/bundled-skills/messaging/tools/gmail-list-attachments.ts +0 -67
  617. package/src/config/bundled-skills/messaging/tools/gmail-send-with-attachments.ts +0 -97
  618. package/src/config/bundled-skills/messaging/tools/gmail-summarize-thread.ts +0 -87
  619. package/src/config/bundled-skills/messaging/tools/gmail-triage.ts +0 -135
  620. package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +0 -24
  621. package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +0 -201
  622. package/src/config/bundled-skills/messaging/tools/send-notification.ts +0 -1
  623. package/src/config/bundled-skills/messaging/tools/sequence-cancel.ts +0 -27
  624. package/src/config/bundled-skills/messaging/tools/sequence-pause.ts +0 -48
  625. package/src/config/bundled-skills/messaging/tools/sequence-resume.ts +0 -27
  626. package/src/config/bundled-skills/messaging/tools/sequence-update.ts +0 -56
  627. package/src/config/bundled-skills/notion/SKILL.md +0 -240
  628. package/src/config/bundled-skills/notion-oauth-setup/SKILL.md +0 -126
  629. package/src/config/bundled-skills/oauth-setup/SKILL.md +0 -143
  630. package/src/config/bundled-skills/public-ingress/SKILL.md +0 -258
  631. package/src/config/bundled-skills/reminder/SKILL.md +0 -79
  632. package/src/config/bundled-skills/reminder/TOOLS.json +0 -89
  633. package/src/config/bundled-skills/reminder/tools/reminder-list.ts +0 -12
  634. package/src/config/bundled-skills/restaurant-reservation/SKILL.md +0 -141
  635. package/src/config/bundled-skills/screen-recording/SKILL.md +0 -148
  636. package/src/config/bundled-skills/self-upgrade/SKILL.md +0 -69
  637. package/src/config/bundled-skills/skills-catalog/SKILL.md +0 -78
  638. package/src/config/bundled-skills/slack-app-setup/SKILL.md +0 -178
  639. package/src/config/bundled-skills/slack-digest-setup/SKILL.md +0 -163
  640. package/src/config/bundled-skills/slack-oauth-setup/SKILL.md +0 -157
  641. package/src/config/bundled-skills/start-the-day/SKILL.md +0 -70
  642. package/src/config/bundled-skills/start-the-day/icon.svg +0 -13
  643. package/src/config/bundled-skills/telegram-setup/SKILL.md +0 -105
  644. package/src/config/bundled-skills/time-based-actions/SKILL.md +0 -142
  645. package/src/config/bundled-skills/twilio-setup/SKILL.md +0 -232
  646. package/src/config/bundled-skills/twitter/SKILL.md +0 -206
  647. package/src/config/bundled-skills/twitter/icon.svg +0 -14
  648. package/src/config/bundled-skills/typescript-eval/SKILL.md +0 -60
  649. package/src/config/bundled-skills/vercel-token-setup/SKILL.md +0 -214
  650. package/src/config/bundled-skills/voice-setup/SKILL.md +0 -131
  651. package/src/config/bundled-skills/voice-setup/icon.svg +0 -20
  652. package/src/daemon/handlers/pairing.ts +0 -119
  653. package/src/daemon/handlers/session-user-message.ts +0 -961
  654. package/src/daemon/recording-executor.ts +0 -180
  655. package/src/daemon/recording-intent-fallback.ts +0 -162
  656. package/src/daemon/recording-intent.ts +0 -493
  657. package/src/memory/account-store.ts +0 -117
  658. package/src/messaging/activity-analyzer.ts +0 -76
  659. package/src/messaging/email-classifier.ts +0 -208
  660. package/src/messaging/index.ts +0 -2
  661. package/src/messaging/outreach-classifier.ts +0 -185
  662. package/src/messaging/thread-summarizer.ts +0 -346
  663. package/src/messaging/types.ts +0 -17
  664. package/src/tools/browser/x-auto-navigate.ts +0 -254
  665. package/src/tools/credentials/account-registry.ts +0 -144
  666. package/src/tools/filesystem/view-image.ts +0 -244
  667. package/src/tools/reminder/reminder-store.ts +0 -194
  668. package/src/tools/reminder/reminder.ts +0 -158
  669. package/src/tools/system/navigate-settings.ts +0 -74
  670. package/src/tools/system/open-system-settings.ts +0 -85
  671. package/src/tools/system/version.ts +0 -54
  672. package/src/twitter/platform-proxy-client.ts +0 -408
  673. /package/src/config/bundled-skills/{messaging → gmail}/tools/scan-result-store.ts +0 -0
  674. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-analytics.ts +0 -0
  675. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-create.ts +0 -0
  676. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-delete.ts +0 -0
  677. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enroll.ts +0 -0
  678. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enrollment-list.ts +0 -0
  679. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-get.ts +0 -0
  680. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-import.ts +0 -0
  681. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-list.ts +0 -0
@@ -11,7 +11,6 @@ import type {
11
11
  import { MODEL_TO_PROVIDER } from "../session-slash.js";
12
12
  import {
13
13
  CONFIG_RELOAD_DEBOUNCE_MS,
14
- defineHandlers,
15
14
  type HandlerContext,
16
15
  log,
17
16
  } from "./shared.js";
@@ -42,10 +41,13 @@ export function getModelInfo(): ModelInfo {
42
41
 
43
42
  /**
44
43
  * Minimal interface for the side-effects needed by setModel / setImageGenModel.
45
- * Keeps the business logic decoupled from IPC-specific HandlerContext.
44
+ * Keeps the business logic decoupled from transport-specific HandlerContext.
46
45
  */
47
46
  export interface ModelSetContext {
48
- sessions: Map<string, { isProcessing(): boolean; dispose(): void; markStale(): void }>;
47
+ sessions: Map<
48
+ string,
49
+ { isProcessing(): boolean; dispose(): void; markStale(): void }
50
+ >;
49
51
  suppressConfigReload: boolean;
50
52
  setSuppressConfigReload(value: boolean): void;
51
53
  updateConfigFingerprint(): void;
@@ -128,10 +130,7 @@ export function setModel(modelId: string, ctx: ModelSetContext): ModelInfo {
128
130
  /**
129
131
  * Set the image generation model. Throws on failure.
130
132
  */
131
- export function setImageGenModel(
132
- modelId: string,
133
- ctx: ModelSetContext,
134
- ): void {
133
+ export function setImageGenModel(modelId: string, ctx: ModelSetContext): void {
135
134
  const raw = loadRawConfig();
136
135
  raw.imageGenModel = modelId;
137
136
 
@@ -156,7 +155,7 @@ export function setImageGenModel(
156
155
  }
157
156
 
158
157
  // ---------------------------------------------------------------------------
159
- // IPC handlers (delegate to shared logic)
158
+ // HTTP handlers (delegate to shared logic)
160
159
  // ---------------------------------------------------------------------------
161
160
 
162
161
  export function handleModelGet(ctx: HandlerContext): void {
@@ -195,8 +194,3 @@ export function handleImageGenModelSet(
195
194
  }
196
195
  }
197
196
 
198
- export const modelHandlers = defineHandlers({
199
- model_get: (_msg, ctx) => handleModelGet(ctx),
200
- model_set: handleModelSet,
201
- image_gen_model_set: handleImageGenModelSet,
202
- });
@@ -22,7 +22,7 @@ import type {
22
22
  TelegramConfigRequest,
23
23
  TelegramConfigResponse,
24
24
  } from "../message-protocol.js";
25
- import { defineHandlers, type HandlerContext, log } from "./shared.js";
25
+ import { type HandlerContext, log } from "./shared.js";
26
26
 
27
27
  const TELEGRAM_BOT_TOKEN_IN_URL_PATTERN =
28
28
  /\/bot\d{8,10}:[A-Za-z0-9_-]{30,120}\//g;
@@ -53,7 +53,7 @@ export function summarizeTelegramError(err: unknown): string {
53
53
  return redactTelegramBotTokens(parts.join(" "));
54
54
  }
55
55
 
56
- // -- Transport-agnostic result type (omits the IPC `type` discriminant) --
56
+ // -- Transport-agnostic result type (omits the `type` discriminant) --
57
57
 
58
58
  export type TelegramConfigResult = Omit<TelegramConfigResponse, "type">;
59
59
 
@@ -359,7 +359,7 @@ export async function setupTelegram(
359
359
  };
360
360
  }
361
361
 
362
- // -- IPC handler (thin wrapper over extracted functions) --
362
+ // -- Message handler (thin wrapper over extracted functions) --
363
363
 
364
364
  export async function handleTelegramConfig(
365
365
  msg: TelegramConfigRequest,
@@ -401,8 +401,4 @@ export async function handleTelegramConfig(
401
401
  error: message,
402
402
  });
403
403
  }
404
- }
405
-
406
- export const telegramHandlers = defineHandlers({
407
- telegram_config: handleTelegramConfig,
408
- });
404
+ }
@@ -1,5 +1,5 @@
1
1
  import type { VoiceConfigUpdateRequest } from "../message-types/settings.js";
2
- import { defineHandlers, type HandlerContext, log } from "./shared.js";
2
+ import { type HandlerContext, log } from "./shared.js";
3
3
 
4
4
  /**
5
5
  * Send a client_settings_update message to all connected clients.
@@ -194,7 +194,7 @@ export function normalizeActivationKey(
194
194
  }
195
195
 
196
196
  /**
197
- * Process a voice configuration update request from a session or IPC client.
197
+ * Process a voice configuration update request from a session or client.
198
198
  * Validates the activation key and broadcasts the change to all connected clients.
199
199
  */
200
200
  export function handleVoiceConfigUpdate(
@@ -214,6 +214,3 @@ export function handleVoiceConfigUpdate(
214
214
  );
215
215
  }
216
216
 
217
- export const voiceHandlers = defineHandlers({
218
- voice_config_update: handleVoiceConfigUpdate,
219
- });
@@ -13,7 +13,7 @@ import {
13
13
  expandSnippets,
14
14
  } from "../dictation-text-processing.js";
15
15
  import type { DictationRequest } from "../message-protocol.js";
16
- import { defineHandlers, type HandlerContext, log } from "./shared.js";
16
+ import { type HandlerContext, log } from "./shared.js";
17
17
 
18
18
  // Action verbs for fast heuristic fallback (used when LLM classifier is unavailable)
19
19
  const ACTION_VERBS = [
@@ -245,13 +245,7 @@ export async function handleDictationRequest(
245
245
  // Command mode: selected text present — deterministic, no classification needed
246
246
  if (msg.context.selectedText && msg.context.selectedText.trim().length > 0) {
247
247
  log.info({ mode: "command" }, "Command mode (selected text present)");
248
- await handleCommandMode(
249
- msg,
250
- ctx,
251
- profile,
252
- profileMeta,
253
- stylePrompt,
254
- );
248
+ await handleCommandMode(msg, ctx, profile, profileMeta, stylePrompt);
255
249
  return;
256
250
  }
257
251
 
@@ -477,7 +471,3 @@ async function handleCommandMode(
477
471
  });
478
472
  }
479
473
  }
480
-
481
- export const dictationHandlers = defineHandlers({
482
- dictation_request: handleDictationRequest,
483
- });
@@ -1,10 +1,3 @@
1
- import { existsSync, readFileSync, statSync } from "node:fs";
2
- import { dirname, join } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
-
5
- import { getWorkspacePromptPath, readLockfile } from "../../util/platform.js";
6
- import { defineHandlers, type HandlerContext, log } from "./shared.js";
7
-
8
1
  export interface IdentityFields {
9
2
  name: string;
10
3
  role: string;
@@ -58,101 +51,3 @@ export function parseIdentityFields(content: string): IdentityFields {
58
51
  home: fields.home ?? "",
59
52
  };
60
53
  }
61
-
62
- function handleIdentityGet(ctx: HandlerContext): void {
63
- const identityPath = getWorkspacePromptPath("IDENTITY.md");
64
-
65
- if (!existsSync(identityPath)) {
66
- ctx.send({
67
- type: "identity_get_response",
68
- found: false,
69
- name: "",
70
- role: "",
71
- personality: "",
72
- emoji: "",
73
- home: "",
74
- });
75
- return;
76
- }
77
-
78
- try {
79
- const content = readFileSync(identityPath, "utf-8");
80
- const fields = parseIdentityFields(content);
81
-
82
- // Read version from package.json
83
- let version: string | undefined;
84
- try {
85
- const pkgPath = join(
86
- dirname(fileURLToPath(import.meta.url)),
87
- "../../../package.json",
88
- );
89
- const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
90
- version = pkg.version;
91
- } catch {
92
- // ignore
93
- }
94
-
95
- // Read createdAt from IDENTITY.md file birthtime
96
- let createdAt: string | undefined;
97
- try {
98
- const stats = statSync(identityPath);
99
- createdAt = stats.birthtime.toISOString();
100
- } catch {
101
- // ignore
102
- }
103
-
104
- // Read lockfile for assistantId, cloud, and originSystem
105
- let assistantId: string | undefined;
106
- let cloud: string | undefined;
107
- let originSystem: string | undefined;
108
- try {
109
- const lockData = readLockfile();
110
- const assistants = lockData?.assistants as
111
- | Array<Record<string, unknown>>
112
- | undefined;
113
- if (assistants && assistants.length > 0) {
114
- // Use the most recently hatched assistant
115
- const sorted = [...assistants].sort((a, b) => {
116
- const dateA = new Date((a.hatchedAt as string) || 0).getTime();
117
- const dateB = new Date((b.hatchedAt as string) || 0).getTime();
118
- return dateB - dateA;
119
- });
120
- const latest = sorted[0];
121
- assistantId = latest.assistantId as string | undefined;
122
- cloud = latest.cloud as string | undefined;
123
- originSystem = cloud === "local" ? "local" : cloud;
124
- }
125
- } catch {
126
- // ignore — lockfile may not exist
127
- }
128
-
129
- ctx.send({
130
- type: "identity_get_response",
131
- found: true,
132
- name: fields.name,
133
- role: fields.role,
134
- personality: fields.personality,
135
- emoji: fields.emoji,
136
- home: fields.home,
137
- version,
138
- assistantId,
139
- createdAt,
140
- originSystem,
141
- });
142
- } catch (err) {
143
- log.error({ err }, "Failed to read identity");
144
- ctx.send({
145
- type: "identity_get_response",
146
- found: false,
147
- name: "",
148
- role: "",
149
- personality: "",
150
- emoji: "",
151
- home: "",
152
- });
153
- }
154
- }
155
-
156
- export const identityHandlers = defineHandlers({
157
- identity_get: (_msg, ctx) => handleIdentityGet(ctx),
158
- });
@@ -9,11 +9,7 @@ import {
9
9
  } from "../../memory/attachments-store.js";
10
10
  import { addMessage } from "../../memory/conversation-crud.js";
11
11
  import type { RecordingOptions, RecordingStatus } from "../message-protocol.js";
12
- import {
13
- defineHandlers,
14
- type HandlerContext,
15
- log,
16
- } from "./shared.js";
12
+ import { type HandlerContext, log } from "./shared.js";
17
13
 
18
14
  // ─── Constants ───────────────────────────────────────────────────────────────
19
15
 
@@ -501,7 +497,7 @@ export async function finalizeAndPublishRecording(params: {
501
497
  }
502
498
 
503
499
  // Restrict accepted file paths to the app's recordings directory to
504
- // prevent attachment of arbitrary files via crafted IPC messages.
500
+ // prevent attachment of arbitrary files via crafted messages.
505
501
  let resolvedPath: string;
506
502
  try {
507
503
  resolvedPath = realpathSync(filePath);
@@ -725,7 +721,7 @@ export async function finalizeAndPublishRecording(params: {
725
721
  * after recording stops, broadcasting recording lifecycle events, and
726
722
  * triggering deferred recording restarts.
727
723
  *
728
- * Shared by both the IPC handler and the HTTP POST route.
724
+ * This is the supported entry point for both HTTP routes and tests.
729
725
  */
730
726
  export async function handleRecordingStatusCore(
731
727
  msg: RecordingStatus,
@@ -1049,19 +1045,3 @@ export function __resetRecordingState(): void {
1049
1045
  finalizedRecordingIds.clear();
1050
1046
  activeRestartToken = null;
1051
1047
  }
1052
-
1053
- // ─── IPC handler wrapper ─────────────────────────────────────────────────────
1054
-
1055
- /** IPC-compatible wrapper: ignores the socket (unused) and delegates to core. */
1056
- async function handleRecordingStatusIpc(
1057
- msg: RecordingStatus,
1058
- ctx: HandlerContext,
1059
- ): Promise<void> {
1060
- return handleRecordingStatusCore(msg, ctx);
1061
- }
1062
-
1063
- // ─── Export handler group ────────────────────────────────────────────────────
1064
-
1065
- export const recordingHandlers = defineHandlers({
1066
- recording_status: handleRecordingStatusIpc,
1067
- });
@@ -402,7 +402,7 @@ export function getMessageContent(
402
402
  }
403
403
 
404
404
  // ---------------------------------------------------------------------------
405
- // IPC handlers (delegate to shared logic)
405
+ // HTTP handlers (delegate to shared logic)
406
406
  // ---------------------------------------------------------------------------
407
407
 
408
408
  export function handleConversationSearch(
@@ -34,6 +34,8 @@ import * as externalConversationStore from "../../memory/external-conversation-s
34
34
  import * as pendingInteractions from "../../runtime/pending-interactions.js";
35
35
  import { getSubagentManager } from "../../subagent/index.js";
36
36
  import { truncate } from "../../util/truncate.js";
37
+ import { HostBashProxy } from "../host-bash-proxy.js";
38
+ import { HostFileProxy } from "../host-file-proxy.js";
37
39
  import type {
38
40
  CancelRequest,
39
41
  ConfirmationResponse,
@@ -55,13 +57,6 @@ import {
55
57
  classifySessionError,
56
58
  } from "../session-error.js";
57
59
  import {
58
- handleConversationSearch,
59
- handleHistoryRequest,
60
- handleMessageContentRequest,
61
- } from "./session-history.js";
62
- import { handleUserMessage } from "./session-user-message.js";
63
- import {
64
- defineHandlers,
65
60
  type HandlerContext,
66
61
  log,
67
62
  pendingStandaloneSecrets,
@@ -85,7 +80,7 @@ function parseBindingSourceChannel(
85
80
  return null;
86
81
  }
87
82
 
88
- export function syncCanonicalStatusFromIpcConfirmationDecision(
83
+ export function syncCanonicalStatusFromConfirmationDecision(
89
84
  requestId: string,
90
85
  decision: ConfirmationResponse["decision"],
91
86
  ): void {
@@ -101,12 +96,12 @@ export function syncCanonicalStatusFromIpcConfirmationDecision(
101
96
  } catch (err) {
102
97
  log.debug(
103
98
  { err, requestId, targetStatus },
104
- "Failed to resolve canonical request from IPC confirmation response",
99
+ "Failed to resolve canonical request from local confirmation response",
105
100
  );
106
101
  }
107
102
  }
108
103
 
109
- export function makeIpcEventSender(params: {
104
+ export function makeEventSender(params: {
110
105
  ctx: HandlerContext;
111
106
  session: Session;
112
107
  conversationId: string;
@@ -149,7 +144,7 @@ export function makeIpcEventSender(params: {
149
144
  } catch (err) {
150
145
  log.debug(
151
146
  { err, requestId: event.requestId, conversationId },
152
- "Failed to create canonical request from IPC confirmation event",
147
+ "Failed to create canonical request from local confirmation event",
153
148
  );
154
149
  }
155
150
  } else if (event.type === "secret_request") {
@@ -158,6 +153,18 @@ export function makeIpcEventSender(params: {
158
153
  conversationId,
159
154
  kind: "secret",
160
155
  });
156
+ } else if (event.type === "host_bash_request") {
157
+ pendingInteractions.register(event.requestId, {
158
+ session,
159
+ conversationId,
160
+ kind: "host_bash",
161
+ });
162
+ } else if (event.type === "host_file_request") {
163
+ pendingInteractions.register(event.requestId, {
164
+ session,
165
+ conversationId,
166
+ kind: "host_file",
167
+ });
161
168
  }
162
169
 
163
170
  ctx.send(event);
@@ -182,10 +189,7 @@ export function handleConfirmationResponse(
182
189
  undefined,
183
190
  { source: "button" },
184
191
  );
185
- syncCanonicalStatusFromIpcConfirmationDecision(
186
- msg.requestId,
187
- msg.decision,
188
- );
192
+ syncCanonicalStatusFromConfirmationDecision(msg.requestId, msg.decision);
189
193
  pendingInteractions.resolve(msg.requestId);
190
194
  return;
191
195
  }
@@ -200,10 +204,7 @@ export function handleConfirmationResponse(
200
204
  msg.selectedPattern,
201
205
  msg.selectedScope,
202
206
  );
203
- syncCanonicalStatusFromIpcConfirmationDecision(
204
- msg.requestId,
205
- msg.decision,
206
- );
207
+ syncCanonicalStatusFromConfirmationDecision(msg.requestId, msg.decision);
207
208
  pendingInteractions.resolve(msg.requestId);
208
209
  return;
209
210
  }
@@ -332,7 +333,7 @@ export function handleSessionList(
332
333
  */
333
334
  export function clearAllSessions(ctx: HandlerContext): number {
334
335
  const cleared = ctx.clearAllSessions();
335
- // Also clear DB conversations. When a new IPC connection triggers
336
+ // Also clear DB conversations. When a new local connection triggers
336
337
  // sendInitialSession, it auto-creates a conversation if none exist.
337
338
  // Without this DB clear, that auto-created row survives, contradicting
338
339
  // the "clear all conversations" intent.
@@ -340,9 +341,7 @@ export function clearAllSessions(ctx: HandlerContext): number {
340
341
  return cleared;
341
342
  }
342
343
 
343
- export function handleSessionsClear(
344
- ctx: HandlerContext,
345
- ): void {
344
+ export function handleSessionsClear(ctx: HandlerContext): void {
346
345
  const cleared = clearAllSessions(ctx);
347
346
  ctx.send({ type: "sessions_clear_response", cleared });
348
347
  }
@@ -389,7 +388,7 @@ export async function handleSessionCreate(
389
388
  if (title === GENERATING_TITLE) {
390
389
  queueGenerateConversationTitle({
391
390
  conversationId: conversation.id,
392
- context: { origin: "ipc" },
391
+ context: { origin: "local" },
393
392
  userMessage: msg.initialMessage,
394
393
  onTitleUpdated: (newTitle) => {
395
394
  ctx.send({
@@ -404,13 +403,12 @@ export async function handleSessionCreate(
404
403
  const requestId = uuid();
405
404
  const transportChannel =
406
405
  parseChannelId(msg.transport?.channelId) ?? "vellum";
407
- const sendEvent = makeIpcEventSender({
406
+ const sendEvent = makeEventSender({
408
407
  ctx,
409
408
  session,
410
409
  conversationId: conversation.id,
411
410
  sourceChannel: transportChannel,
412
411
  });
413
- session.updateClient(sendEvent, false);
414
412
  session.setTurnChannelContext({
415
413
  userMessageChannel: transportChannel,
416
414
  assistantMessageChannel: transportChannel,
@@ -421,6 +419,20 @@ export async function handleSessionCreate(
421
419
  userMessageInterface: transportInterface,
422
420
  assistantMessageInterface: transportInterface,
423
421
  });
422
+ // Only create the host bash proxy for desktop client interfaces that can
423
+ // execute commands on the user's machine. Set before updateClient so
424
+ // updateClient's call to hostBashProxy.updateSender targets the new proxy.
425
+ if (transportInterface === "macos" || transportInterface === "ios") {
426
+ const proxy = new HostBashProxy(sendEvent, (requestId) => {
427
+ pendingInteractions.resolve(requestId);
428
+ });
429
+ session.setHostBashProxy(proxy);
430
+ const fileProxy = new HostFileProxy(sendEvent, (requestId) => {
431
+ pendingInteractions.resolve(requestId);
432
+ });
433
+ session.setHostFileProxy(fileProxy);
434
+ }
435
+ session.updateClient(sendEvent, false);
424
436
  session
425
437
  .processMessage(msg.initialMessage, [], sendEvent, requestId)
426
438
  .catch((err) => {
@@ -520,10 +532,7 @@ export async function handleSessionSwitch(
520
532
  /**
521
533
  * Rename a session/conversation. Returns true on success, false if not found.
522
534
  */
523
- export function renameSession(
524
- sessionId: string,
525
- name: string,
526
- ): boolean {
535
+ export function renameSession(sessionId: string, name: string): boolean {
527
536
  const conversation = getConversation(sessionId);
528
537
  if (!conversation) {
529
538
  return false;
@@ -572,10 +581,7 @@ export function cancelGeneration(
572
581
  return true;
573
582
  }
574
583
 
575
- export function handleCancel(
576
- msg: CancelRequest,
577
- ctx: HandlerContext,
578
- ): void {
584
+ export function handleCancel(msg: CancelRequest, ctx: HandlerContext): void {
579
585
  const sessionId = msg.sessionId;
580
586
  if (sessionId) {
581
587
  cancelGeneration(sessionId, ctx);
@@ -598,10 +604,7 @@ export function undoLastMessage(
598
604
  return { removedCount };
599
605
  }
600
606
 
601
- export function handleUndo(
602
- msg: UndoRequest,
603
- ctx: HandlerContext,
604
- ): void {
607
+ export function handleUndo(msg: UndoRequest, ctx: HandlerContext): void {
605
608
  const result = undoLastMessage(msg.sessionId, ctx);
606
609
  if (!result) {
607
610
  ctx.send({ type: "error", message: "No active session" });
@@ -616,7 +619,7 @@ export function handleUndo(
616
619
 
617
620
  /**
618
621
  * Regenerate the last assistant response for a session. The caller provides
619
- * a `sendEvent` callback for delivering streaming events (IPC or HTTP/SSE).
622
+ * a `sendEvent` callback for delivering streaming events via HTTP/SSE.
620
623
  * Returns null if the session is not found. Throws on regeneration errors.
621
624
  */
622
625
  export async function regenerateResponse(
@@ -667,7 +670,7 @@ export async function handleRegenerate(
667
670
  const regenerateChannel =
668
671
  parseChannelId(session.getTurnChannelContext()?.assistantMessageChannel) ??
669
672
  "vellum";
670
- const sendEvent = makeIpcEventSender({
673
+ const sendEvent = makeEventSender({
671
674
  ctx,
672
675
  session,
673
676
  conversationId: msg.sessionId,
@@ -717,8 +720,12 @@ export function handleUsageRequest(
717
720
  export function deleteQueuedMessage(
718
721
  sessionId: string,
719
722
  requestId: string,
720
- findSession: (id: string) => { removeQueuedMessage(requestId: string): boolean } | undefined,
721
- ): { removed: true } | { removed: false; reason: "session_not_found" | "message_not_found" } {
723
+ findSession: (
724
+ id: string,
725
+ ) => { removeQueuedMessage(requestId: string): boolean } | undefined,
726
+ ):
727
+ | { removed: true }
728
+ | { removed: false; reason: "session_not_found" | "message_not_found" } {
722
729
  const session = findSession(sessionId);
723
730
  if (!session) {
724
731
  log.warn(
@@ -731,25 +738,20 @@ export function deleteQueuedMessage(
731
738
  if (removed) {
732
739
  return { removed: true };
733
740
  }
734
- log.warn(
735
- { sessionId, requestId },
736
- "Queued message not found for deletion",
737
- );
741
+ log.warn({ sessionId, requestId }, "Queued message not found for deletion");
738
742
  return { removed: false, reason: "message_not_found" };
739
743
  }
740
744
 
741
745
  // ---------------------------------------------------------------------------
742
- // IPC handler (delegates to shared logic)
746
+ // HTTP handler (delegates to shared logic)
743
747
  // ---------------------------------------------------------------------------
744
748
 
745
749
  export function handleDeleteQueuedMessage(
746
750
  msg: DeleteQueuedMessage,
747
751
  ctx: HandlerContext,
748
752
  ): void {
749
- const result = deleteQueuedMessage(
750
- msg.sessionId,
751
- msg.requestId,
752
- (id) => ctx.sessions.get(id),
753
+ const result = deleteQueuedMessage(msg.sessionId, msg.requestId, (id) =>
754
+ ctx.sessions.get(id),
753
755
  );
754
756
  if (result.removed) {
755
757
  ctx.send({
@@ -775,24 +777,3 @@ export function handleReorderThreads(
775
777
  })),
776
778
  );
777
779
  }
778
-
779
- export const sessionHandlers = defineHandlers({
780
- user_message: handleUserMessage,
781
- confirmation_response: handleConfirmationResponse,
782
- secret_response: handleSecretResponse,
783
- session_list: (msg, ctx) =>
784
- handleSessionList(ctx, msg.offset ?? 0, msg.limit ?? 50),
785
- session_create: handleSessionCreate,
786
- sessions_clear: (_msg, ctx) => handleSessionsClear(ctx),
787
- session_switch: handleSessionSwitch,
788
- session_rename: handleSessionRename,
789
- cancel: handleCancel,
790
- delete_queued_message: handleDeleteQueuedMessage,
791
- history_request: handleHistoryRequest,
792
- message_content_request: handleMessageContentRequest,
793
- undo: handleUndo,
794
- regenerate: handleRegenerate,
795
- usage_request: handleUsageRequest,
796
- conversation_search: handleConversationSearch,
797
- reorder_threads: handleReorderThreads,
798
- });
@@ -13,7 +13,6 @@ import { getLogger } from "../../util/logger.js";
13
13
  import { estimateBase64Bytes } from "../assistant-attachments.js";
14
14
  import { ComputerUseSession } from "../computer-use-session.js";
15
15
  import type {
16
- ClientMessage,
17
16
  ServerMessage,
18
17
  SessionTransportMetadata,
19
18
  } from "../message-protocol.js";
@@ -41,7 +40,7 @@ export const pendingStandaloneSecrets = new Map<
41
40
  }
42
41
  >();
43
42
 
44
- // Pending IPC signing responses (bundle signing orchestration), keyed by unique requestId
43
+ // Pending signing responses (bundle signing orchestration), keyed by unique requestId
45
44
  interface PendingSigningResolve {
46
45
  resolve: (result: {
47
46
  signature: string;
@@ -132,7 +131,7 @@ export interface SessionCreateOptions {
132
131
  transport?: SessionTransportMetadata;
133
132
  assistantId?: string;
134
133
  trustContext?: TrustContext;
135
- /** Normalized auth context for the session (IPC or HTTP-derived). */
134
+ /** Normalized auth context for the session. */
136
135
  authContext?: AuthContext;
137
136
  /** Whether this turn can block on interactive approval prompts. */
138
137
  isInteractive?: boolean;
@@ -171,29 +170,6 @@ export interface HandlerContext {
171
170
  heartbeatService?: HeartbeatService;
172
171
  }
173
172
 
174
- // ─── Typed dispatch ──────────────────────────────────────────────────────────
175
-
176
- type MessageType = ClientMessage["type"];
177
- // 'auth' is handled at the transport layer (server.ts) and never reaches dispatch.
178
- export type DispatchableType = Exclude<MessageType, "auth">;
179
- type MessageOfType<T extends MessageType> = Extract<ClientMessage, { type: T }>;
180
- type MessageHandler<T extends MessageType> = (
181
- msg: MessageOfType<T>,
182
- ctx: HandlerContext,
183
- ) => void | Promise<void>;
184
- export type DispatchMap = { [T in DispatchableType]: MessageHandler<T> };
185
-
186
- /**
187
- * Type-safe handler group definition. Preserves exact key types so the
188
- * combined spread in index.ts can be checked for exhaustiveness via
189
- * `satisfies DispatchMap` instead of an unsafe `as DispatchMap` cast.
190
- */
191
- export function defineHandlers<K extends DispatchableType>(
192
- handlers: Pick<DispatchMap, K>,
193
- ): Pick<DispatchMap, K> {
194
- return handlers;
195
- }
196
-
197
173
  /**
198
174
  * Query the main display dimensions via CoreGraphics.
199
175
  * Cached after the first successful call; falls back to 1920x1080.
@@ -276,7 +252,10 @@ export function wireEscalationHandler(
276
252
  }
277
253
  ctx.cuSessions.delete(sid);
278
254
  ctx.cuObservationParseSequence.delete(sid);
279
- log.info({ sessionId: sid }, "Computer-use session cleaned up after terminal state");
255
+ log.info(
256
+ { sessionId: sid },
257
+ "Computer-use session cleaned up after terminal state",
258
+ );
280
259
  };
281
260
 
282
261
  const cuSession = new ComputerUseSession(
@@ -623,7 +602,7 @@ const SIGNING_TIMEOUT_MS = 30_000;
623
602
 
624
603
  /**
625
604
  * Create a SigningCallback that sends `sign_bundle_payload` to the Swift client
626
- * over IPC and waits for the `sign_bundle_payload_response`.
605
+ * over HTTP and waits for the `sign_bundle_payload_response`.
627
606
  */
628
607
  export function createSigningCallback(
629
608
  ctx: HandlerContext,