@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
@@ -20,6 +20,8 @@ export * from "./message-types/contacts.js";
20
20
  export * from "./message-types/diagnostics.js";
21
21
  export * from "./message-types/documents.js";
22
22
  export * from "./message-types/guardian-actions.js";
23
+ export * from "./message-types/host-bash.js";
24
+ export * from "./message-types/host-file.js";
23
25
  export * from "./message-types/inbox.js";
24
26
  export * from "./message-types/integrations.js";
25
27
  export * from "./message-types/memory.js";
@@ -66,6 +68,8 @@ import type {
66
68
  _GuardianActionsClientMessages,
67
69
  _GuardianActionsServerMessages,
68
70
  } from "./message-types/guardian-actions.js";
71
+ import type { _HostBashServerMessages } from "./message-types/host-bash.js";
72
+ import type { _HostFileServerMessages } from "./message-types/host-file.js";
69
73
  import type {
70
74
  _InboxClientMessages,
71
75
  _InboxServerMessages,
@@ -175,6 +179,8 @@ export type ServerMessage =
175
179
  | _SubagentsServerMessages
176
180
  | _DocumentsServerMessages
177
181
  | _GuardianActionsServerMessages
182
+ | _HostBashServerMessages
183
+ | _HostFileServerMessages
178
184
  | _MemoryServerMessages
179
185
  | _WorkspaceServerMessages
180
186
  | _SchedulesServerMessages
@@ -1,5 +1,5 @@
1
1
  // Browser interaction types.
2
- // CDP request/response IPC was removed — Playwright's connectOverCDP is broken
2
+ // CDP request/response messaging was removed — Playwright's connectOverCDP is broken
3
3
  // under Bun's runtime. Browser is now launched directly via Playwright.
4
4
 
5
5
  // --- Domain-level union aliases (consumed by the barrel file) ---
@@ -1,9 +1,6 @@
1
1
  // Computer use, task routing, ride shotgun, and watch observation types.
2
2
 
3
- import type {
4
- CommandIntent,
5
- UserMessageAttachment,
6
- } from "./shared.js";
3
+ import type { CommandIntent, UserMessageAttachment } from "./shared.js";
7
4
 
8
5
  // === Client → Server ===
9
6
 
@@ -1,4 +1,4 @@
1
- // Guardian action decision IPC types.
1
+ // Guardian action decision message types.
2
2
  // Enables desktop clients to fetch pending guardian prompts and submit
3
3
  // button decisions deterministically (without text parsing).
4
4
 
@@ -0,0 +1,18 @@
1
+ // Host bash proxy types.
2
+ // Enables proxying shell commands to the desktop client (host machine)
3
+ // when running as a managed assistant.
4
+
5
+ // === Server → Client ===
6
+
7
+ export interface HostBashRequest {
8
+ type: "host_bash_request";
9
+ requestId: string;
10
+ sessionId: string;
11
+ command: string;
12
+ working_dir?: string;
13
+ timeout_seconds?: number;
14
+ }
15
+
16
+ // --- Domain-level union aliases (consumed by the barrel file) ---
17
+
18
+ export type _HostBashServerMessages = HostBashRequest;
@@ -0,0 +1,44 @@
1
+ // Host file proxy types.
2
+ // Enables proxying file operations to the desktop client (host machine)
3
+ // when running as a managed assistant.
4
+
5
+ // === Server → Client ===
6
+
7
+ export interface HostFileReadRequest {
8
+ type: "host_file_request";
9
+ requestId: string;
10
+ sessionId: string;
11
+ operation: "read";
12
+ path: string;
13
+ offset?: number;
14
+ limit?: number;
15
+ }
16
+
17
+ export interface HostFileWriteRequest {
18
+ type: "host_file_request";
19
+ requestId: string;
20
+ sessionId: string;
21
+ operation: "write";
22
+ path: string;
23
+ content: string;
24
+ }
25
+
26
+ export interface HostFileEditRequest {
27
+ type: "host_file_request";
28
+ requestId: string;
29
+ sessionId: string;
30
+ operation: "edit";
31
+ path: string;
32
+ old_string: string;
33
+ new_string: string;
34
+ replace_all?: boolean;
35
+ }
36
+
37
+ export type HostFileRequest =
38
+ | HostFileReadRequest
39
+ | HostFileWriteRequest
40
+ | HostFileEditRequest;
41
+
42
+ // --- Domain-level union aliases (consumed by the barrel file) ---
43
+
44
+ export type _HostFileServerMessages = HostFileRequest;
@@ -1,4 +1,4 @@
1
- // External service integrations: Slack, Telegram, Twitter, Vercel, ingress, guardian.
1
+ // External service integrations: Slack, Telegram, Vercel, ingress, guardian.
2
2
 
3
3
  import type { ChannelId } from "../../channels/types.js";
4
4
 
@@ -29,19 +29,6 @@ export interface VercelApiConfigRequest {
29
29
  apiToken?: string;
30
30
  }
31
31
 
32
- export interface TwitterIntegrationConfigRequest {
33
- type: "twitter_integration_config";
34
- action:
35
- | "get"
36
- | "set_mode"
37
- | "set_local_client"
38
- | "clear_local_client"
39
- | "disconnect";
40
- mode?: "local_byo" | "managed";
41
- clientId?: string;
42
- clientSecret?: string;
43
- }
44
-
45
32
  export interface TelegramConfigRequest {
46
33
  type: "telegram_config";
47
34
  action: "get" | "set" | "clear" | "set_commands" | "setup";
@@ -70,14 +57,6 @@ export interface ChannelVerificationSessionRequest {
70
57
  contactChannelId?: string;
71
58
  }
72
59
 
73
- export interface TwitterAuthStartRequest {
74
- type: "twitter_auth_start";
75
- }
76
-
77
- export interface TwitterAuthStatusRequest {
78
- type: "twitter_auth_status";
79
- }
80
-
81
60
  export interface IntegrationListRequest {
82
61
  type: "integration_list";
83
62
  }
@@ -137,28 +116,6 @@ export interface VercelApiConfigResponse {
137
116
  error?: string;
138
117
  }
139
118
 
140
- export interface ManagedPrerequisites {
141
- /** Whether twitter.integrationMode is set to "managed" in config. */
142
- integrationModeManaged: boolean;
143
- /** Whether the assistant API key credential exists in secure storage. */
144
- assistantApiKeyPresent: boolean;
145
- /** Whether the platform base URL is configured (platform registration resolvable). */
146
- platformAssistantIdResolvable: boolean;
147
- }
148
-
149
- export interface TwitterIntegrationConfigResponse {
150
- type: "twitter_integration_config_response";
151
- success: boolean;
152
- mode?: "local_byo" | "managed";
153
- managedAvailable: boolean;
154
- /** Detailed prerequisite status for managed Twitter availability. */
155
- managedPrerequisites?: ManagedPrerequisites;
156
- localClientConfigured: boolean;
157
- connected: boolean;
158
- accountInfo?: string;
159
- error?: string;
160
- }
161
-
162
119
  export interface TelegramConfigResponse {
163
120
  type: "telegram_config_response";
164
121
  success: boolean;
@@ -211,23 +168,6 @@ export interface ChannelVerificationSessionResponse {
211
168
  pendingBootstrap?: boolean;
212
169
  }
213
170
 
214
- export interface TwitterAuthResult {
215
- type: "twitter_auth_result";
216
- success: boolean;
217
- accountInfo?: string;
218
- /** Machine-readable error code for programmatic handling (e.g. "managed_missing_api_key", "managed_auth_via_platform"). */
219
- errorCode?: string;
220
- error?: string;
221
- }
222
-
223
- export interface TwitterAuthStatusResponse {
224
- type: "twitter_auth_status_response";
225
- connected: boolean;
226
- accountInfo?: string;
227
- mode?: "local_byo" | "managed";
228
- error?: string;
229
- }
230
-
231
171
  export interface IntegrationListResponse {
232
172
  type: "integration_list_response";
233
173
  integrations: Array<{
@@ -277,11 +217,8 @@ export type _IntegrationsClientMessages =
277
217
  | IngressConfigRequest
278
218
  | PlatformConfigRequest
279
219
  | VercelApiConfigRequest
280
- | TwitterIntegrationConfigRequest
281
220
  | TelegramConfigRequest
282
221
  | ChannelVerificationSessionRequest
283
- | TwitterAuthStartRequest
284
- | TwitterAuthStatusRequest
285
222
  | IntegrationListRequest
286
223
  | IntegrationConnectRequest
287
224
  | IntegrationDisconnectRequest
@@ -293,11 +230,8 @@ export type _IntegrationsServerMessages =
293
230
  | IngressConfigResponse
294
231
  | PlatformConfigResponse
295
232
  | VercelApiConfigResponse
296
- | TwitterIntegrationConfigResponse
297
233
  | TelegramConfigResponse
298
234
  | ChannelVerificationSessionResponse
299
- | TwitterAuthResult
300
- | TwitterAuthStatusResponse
301
235
  | IntegrationListResponse
302
236
  | IntegrationConnectResult
303
237
  | OAuthConnectResultResponse
@@ -95,11 +95,20 @@ export interface ToolOutputChunk {
95
95
  subToolId?: string;
96
96
  }
97
97
 
98
+ export interface ToolUsePreviewStart {
99
+ type: "tool_use_preview_start";
100
+ toolUseId: string;
101
+ toolName: string;
102
+ sessionId?: string;
103
+ }
104
+
98
105
  export interface ToolInputDelta {
99
106
  type: "tool_input_delta";
100
107
  toolName: string;
101
108
  content: string;
102
109
  sessionId?: string;
110
+ /** The tool_use block ID for client-side correlation. */
111
+ toolUseId?: string;
103
112
  }
104
113
 
105
114
  export interface ToolResult {
@@ -117,6 +126,8 @@ export interface ToolResult {
117
126
  sessionId?: string;
118
127
  /** Base64-encoded image data extracted from contentBlocks (e.g. browser_screenshot). */
119
128
  imageData?: string;
129
+ /** The tool_use block ID for client-side correlation. */
130
+ toolUseId?: string;
120
131
  }
121
132
 
122
133
  export interface ConfirmationRequest {
@@ -169,6 +180,8 @@ export interface MessageComplete {
169
180
  type: "message_complete";
170
181
  sessionId?: string;
171
182
  attachments?: UserMessageAttachment[];
183
+ /** Database ID of the persisted assistant message, if any. */
184
+ messageId?: string;
172
185
  }
173
186
 
174
187
  export interface ErrorMessage {
@@ -270,6 +283,7 @@ export interface AssistantActivityState {
270
283
  | "thinking_delta"
271
284
  | "first_text_delta"
272
285
  | "tool_use_start"
286
+ | "preview_start"
273
287
  | "tool_result_received"
274
288
  | "confirmation_requested"
275
289
  | "confirmation_resolved"
@@ -325,6 +339,7 @@ export type _MessagesServerMessages =
325
339
  | AssistantTextDelta
326
340
  | AssistantThinkingDelta
327
341
  | ToolUseStart
342
+ | ToolUsePreviewStart
328
343
  | ToolOutputChunk
329
344
  | ToolInputDelta
330
345
  | ToolResult
@@ -1,4 +1,4 @@
1
- // Schedule, reminder, watcher, and heartbeat types.
1
+ // Schedule, watcher, and heartbeat types.
2
2
 
3
3
  // === Client → Server ===
4
4
 
@@ -6,15 +6,6 @@ export interface SchedulesList {
6
6
  type: "schedules_list";
7
7
  }
8
8
 
9
- export interface RemindersList {
10
- type: "reminders_list";
11
- }
12
-
13
- export interface ReminderCancel {
14
- type: "reminder_cancel";
15
- id: string;
16
- }
17
-
18
9
  export interface ScheduleToggle {
19
10
  type: "schedule_toggle";
20
11
  id: string;
@@ -26,6 +17,11 @@ export interface ScheduleRemove {
26
17
  id: string;
27
18
  }
28
19
 
20
+ export interface ScheduleCancel {
21
+ type: "schedule_cancel";
22
+ id: string;
23
+ }
24
+
29
25
  export interface ScheduleRunNow {
30
26
  type: "schedule_run_now";
31
27
  id: string;
@@ -67,28 +63,18 @@ export interface SchedulesListResponse {
67
63
  name: string;
68
64
  enabled: boolean;
69
65
  syntax: string;
70
- expression: string;
71
- cronExpression: string;
66
+ expression: string | null;
67
+ cronExpression: string | null;
72
68
  timezone: string | null;
73
69
  message: string;
74
70
  nextRunAt: number;
75
71
  lastRunAt: number | null;
76
72
  lastStatus: string | null;
77
73
  description: string;
78
- }>;
79
- }
80
-
81
- export interface RemindersListResponse {
82
- type: "reminders_list_response";
83
- reminders: Array<{
84
- id: string;
85
- label: string;
86
- message: string;
87
- fireAt: number;
88
74
  mode: string;
89
75
  status: string;
90
- firedAt: number | null;
91
- createdAt: number;
76
+ routingIntent: string;
77
+ isOneShot: boolean;
92
78
  }>;
93
79
  }
94
80
 
@@ -144,9 +130,8 @@ export type _SchedulesClientMessages =
144
130
  | SchedulesList
145
131
  | ScheduleToggle
146
132
  | ScheduleRemove
133
+ | ScheduleCancel
147
134
  | ScheduleRunNow
148
- | RemindersList
149
- | ReminderCancel
150
135
  | HeartbeatConfig
151
136
  | HeartbeatRunsList
152
137
  | HeartbeatRunNow
@@ -155,7 +140,6 @@ export type _SchedulesClientMessages =
155
140
 
156
141
  export type _SchedulesServerMessages =
157
142
  | SchedulesListResponse
158
- | RemindersListResponse
159
143
  | HeartbeatAlert
160
144
  | HeartbeatConfigResponse
161
145
  | HeartbeatRunsListResponse
@@ -273,6 +273,8 @@ export interface GenerationHandoff {
273
273
  requestId?: string;
274
274
  queuedCount: number;
275
275
  attachments?: UserMessageAttachment[];
276
+ /** Database ID of the persisted assistant message, if any. */
277
+ messageId?: string;
276
278
  }
277
279
 
278
280
  export interface ModelInfo {
@@ -393,7 +395,6 @@ export type SessionErrorCode =
393
395
  | "PROVIDER_API"
394
396
  | "PROVIDER_BILLING"
395
397
  | "CONTEXT_TOO_LARGE"
396
- | "QUEUE_FULL"
397
398
  | "SESSION_ABORTED"
398
399
  | "SESSION_PROCESSING_FAILED"
399
400
  | "REGENERATE_FAILED"
@@ -2,7 +2,7 @@
2
2
 
3
3
  // === Client → Server ===
4
4
 
5
- /** Request from a session or IPC client to change the voice activation key. */
5
+ /** Request from a session or client to change the voice activation key. */
6
6
  export interface VoiceConfigUpdateRequest {
7
7
  type: "voice_config_update";
8
8
  /** The desired activation key (enum value or natural-language name). */
@@ -1,4 +1,4 @@
1
- // Shared types used across multiple IPC domains.
1
+ // Shared types used across multiple message domains.
2
2
 
3
3
  export type ThreadType = "standard" | "private";
4
4
 
@@ -9,7 +9,6 @@ import {
9
9
  import { NetworkRecorder } from "../tools/browser/network-recorder.js";
10
10
  import type { SessionRecording } from "../tools/browser/network-recording-types.js";
11
11
  import { saveRecording } from "../tools/browser/recording-store.js";
12
- import { navigateXPages } from "../tools/browser/x-auto-navigate.js";
13
12
  import type { WatchSession } from "../tools/watch/watch-state.js";
14
13
  import {
15
14
  fireWatchCompletionNotifier,
@@ -35,13 +34,7 @@ const activeCdpSessions = new Map<string, CdpSession>();
35
34
  const activeProgressIntervals = new Map<string, NodeJS.Timeout>();
36
35
 
37
36
  /** Return domain-specific URL patterns that indicate a successful login. */
38
- function getLoginSignals(targetDomain?: string): string[] {
39
- if (targetDomain === "x.com" || targetDomain === "twitter.com") {
40
- return [
41
- "/i/api/graphql/", // any authenticated GraphQL call
42
- "/1.1/account/settings", // legacy API session check
43
- ];
44
- }
37
+ function getLoginSignals(_targetDomain?: string): string[] {
45
38
  // DoorDash and general fallback
46
39
  return [
47
40
  "/graphql/postLoginQuery",
@@ -324,40 +317,7 @@ export async function handleRideShotgunStart(
324
317
  }, 5000);
325
318
  activeProgressIntervals.set(watchId, progressInterval);
326
319
 
327
- // For x.com, auto-navigate Chrome through key pages to capture the full API surface.
328
- // Skip login detection — auto-navigation will complete the session when done.
329
- if (
330
- (targetDomain === "x.com" || targetDomain === "twitter.com") &&
331
- msg.autoNavigate !== false
332
- ) {
333
- // Don't set onLoginDetected — it would kill the session after the first
334
- // GraphQL call (5s grace), before auto-navigation finishes.
335
- const abortSignal = { aborted: false };
336
- const checkInterval = setInterval(() => {
337
- if (session.status !== "active") {
338
- abortSignal.aborted = true;
339
- clearInterval(checkInterval);
340
- }
341
- }, 1000);
342
- navigateXPages({ abortSignal, cdpBaseUrl })
343
- .then((completed) => {
344
- clearInterval(checkInterval);
345
- log.info(
346
- { watchId, completedSteps: completed.length },
347
- "X auto-navigation finished",
348
- );
349
- if (session.status === "active") {
350
- completeSession(session);
351
- }
352
- })
353
- .catch((err) => {
354
- clearInterval(checkInterval);
355
- log.warn({ err, watchId }, "X auto-navigation failed");
356
- if (session.status === "active") {
357
- completeSession(session);
358
- }
359
- });
360
- } else if (msg.autoNavigate && targetDomain) {
320
+ if (msg.autoNavigate && targetDomain) {
361
321
  const navDomain = msg.navigateDomain ?? targetDomain;
362
322
  const abortSignal = { aborted: false };
363
323
  const checkInterval = setInterval(() => {
@@ -56,6 +56,8 @@ import type {
56
56
  SessionCreateOptions,
57
57
  } from "./handlers/shared.js";
58
58
  import type { SkillOperationContext } from "./handlers/skills.js";
59
+ import { HostBashProxy } from "./host-bash-proxy.js";
60
+ import { HostFileProxy } from "./host-file-proxy.js";
59
61
  import type { ServerMessage } from "./message-protocol.js";
60
62
  import {
61
63
  DEFAULT_MEMORY_POLICY,
@@ -130,8 +132,9 @@ function resolveCanonicalRequestSourceType(
130
132
 
131
133
  /**
132
134
  * Build an onEvent callback that registers pending interactions when the agent
133
- * loop emits confirmation_request or secret_request events. This ensures that
134
- * channel approval interception can look up the session by requestId.
135
+ * loop emits confirmation_request, secret_request, host_bash_request, or
136
+ * host_file_request events. This ensures that channel approval interception
137
+ * can look up the session by requestId.
135
138
  */
136
139
  function makePendingInteractionRegistrar(
137
140
  session: Session,
@@ -199,6 +202,18 @@ function makePendingInteractionRegistrar(
199
202
  conversationId,
200
203
  kind: "secret",
201
204
  });
205
+ } else if (msg.type === "host_bash_request") {
206
+ pendingInteractions.register(msg.requestId, {
207
+ session,
208
+ conversationId,
209
+ kind: "host_bash",
210
+ });
211
+ } else if (msg.type === "host_file_request") {
212
+ pendingInteractions.register(msg.requestId, {
213
+ session,
214
+ conversationId,
215
+ kind: "host_file",
216
+ });
202
217
  }
203
218
  };
204
219
  }
@@ -291,14 +306,7 @@ export class DaemonServer {
291
306
  undefined,
292
307
  metadata,
293
308
  );
294
- if (enqueueResult.rejected) {
295
- log.warn(
296
- { parentSessionId },
297
- "Parent session queue full, dropping subagent notification",
298
- );
299
- return;
300
- }
301
- if (!enqueueResult.queued) {
309
+ if (!enqueueResult.queued && !enqueueResult.rejected) {
302
310
  const messageId = await parentSession.persistUserMessage(
303
311
  message,
304
312
  [],
@@ -636,6 +644,31 @@ export class DaemonServer {
636
644
  session.setChannelCapabilities(
637
645
  resolveChannelCapabilities(sourceChannel, sourceInterface),
638
646
  );
647
+ // Only create the host bash proxy for desktop client interfaces that can
648
+ // execute commands on the user's machine. Non-desktop sessions (CLI,
649
+ // channels, headless) fall back to local execution.
650
+ // Guard: don't replace an active proxy during concurrent turn races —
651
+ // another request may have started processing between the isProcessing()
652
+ // check above and the await on ensureActorScopedHistory().
653
+ if (resolvedInterface === "macos" || resolvedInterface === "ios") {
654
+ if (!session.isProcessing() || !session.hostBashProxy) {
655
+ session.setHostBashProxy(
656
+ new HostBashProxy(session.getCurrentSender(), (requestId) => {
657
+ pendingInteractions.resolve(requestId);
658
+ }),
659
+ );
660
+ }
661
+ if (!session.isProcessing() || !session.hostFileProxy) {
662
+ session.setHostFileProxy(
663
+ new HostFileProxy(session.getCurrentSender(), (requestId) => {
664
+ pendingInteractions.resolve(requestId);
665
+ }),
666
+ );
667
+ }
668
+ } else if (!session.isProcessing()) {
669
+ session.setHostBashProxy(undefined);
670
+ session.setHostFileProxy(undefined);
671
+ }
639
672
  session.setCommandIntent(options?.commandIntent ?? null);
640
673
  session.setTurnChannelContext({
641
674
  userMessageChannel: resolvedChannel,
@@ -164,22 +164,22 @@ export function emitLlmCallStartedIfNeeded(
164
164
  );
165
165
  }
166
166
 
167
- // ── IPC Size Caps ────────────────────────────────────────────────────
167
+ // ── Client Payload Size Caps ─────────────────────────────────────────
168
168
  // The client truncates tool results anyway (2 000 chars in ChatViewModel),
169
169
  // but the full string can be megabytes (file_read, bash output). Capping
170
- // here avoids sending oversized payloads over IPC which get decoded on
171
- // the client's main thread.
170
+ // here avoids sending oversized payloads which get decoded on the
171
+ // client's main thread.
172
172
 
173
173
  const TOOL_RESULT_MAX_CHARS = 2_000;
174
174
  const TOOL_RESULT_TRUNCATION_SUFFIX = "...[truncated]";
175
175
 
176
176
  // tool_input_delta streams accumulated JSON as tools run. For non-app
177
177
  // tools the client discards it (extractCodePreview only handles app tools),
178
- // so we cap it aggressively to avoid excessive IPC traffic.
178
+ // so we cap it aggressively to avoid excessive client traffic.
179
179
  const TOOL_INPUT_DELTA_MAX_CHARS = 50_000;
180
180
  const APP_TOOL_NAMES = new Set(["app_create", "app_update"]);
181
181
 
182
- function truncateForIpc(
182
+ function truncateForClient(
183
183
  value: string,
184
184
  maxChars: number,
185
185
  suffix: string,
@@ -206,6 +206,7 @@ const TOOL_FRIENDLY_NAMES: Record<string, string> = {
206
206
  app_create: "app",
207
207
  app_update: "app",
208
208
  skill_load: "skill",
209
+ skill_execute: "skill",
209
210
  app_file_edit: "app file",
210
211
  app_file_write: "app file",
211
212
  };
@@ -304,6 +305,27 @@ export function handleToolUse(
304
305
  });
305
306
  }
306
307
 
308
+ export function handleToolUsePreviewStart(
309
+ _state: EventHandlerState,
310
+ deps: EventHandlerDeps,
311
+ event: Extract<AgentEvent, { type: "tool_use_preview_start" }>,
312
+ ): void {
313
+ deps.onEvent({
314
+ type: "tool_use_preview_start",
315
+ toolUseId: event.toolUseId,
316
+ toolName: event.toolName,
317
+ sessionId: deps.ctx.conversationId,
318
+ });
319
+ const statusText = `Preparing ${friendlyToolName(event.toolName)}...`;
320
+ deps.ctx.emitActivityState(
321
+ "tool_running",
322
+ "preview_start",
323
+ "assistant_turn",
324
+ deps.reqId,
325
+ statusText,
326
+ );
327
+ }
328
+
307
329
  export function handleToolOutputChunk(
308
330
  _state: EventHandlerState,
309
331
  deps: EventHandlerDeps,
@@ -386,7 +408,7 @@ export function handleInputJsonDelta(
386
408
  // app_create/app_update code previews; all other tools discard it.
387
409
  const content = APP_TOOL_NAMES.has(event.toolName)
388
410
  ? event.accumulatedJson
389
- : truncateForIpc(
411
+ : truncateForClient(
390
412
  event.accumulatedJson,
391
413
  TOOL_INPUT_DELTA_MAX_CHARS,
392
414
  TOOL_RESULT_TRUNCATION_SUFFIX,
@@ -396,6 +418,7 @@ export function handleInputJsonDelta(
396
418
  toolName: event.toolName,
397
419
  content,
398
420
  sessionId: deps.ctx.conversationId,
421
+ toolUseId: event.toolUseId,
399
422
  });
400
423
  }
401
424
 
@@ -410,7 +433,7 @@ export function handleToolResult(
410
433
  deps.onEvent({
411
434
  type: "tool_result",
412
435
  toolName: "",
413
- result: truncateForIpc(
436
+ result: truncateForClient(
414
437
  event.content,
415
438
  TOOL_RESULT_MAX_CHARS,
416
439
  TOOL_RESULT_TRUNCATION_SUFFIX,
@@ -420,6 +443,7 @@ export function handleToolResult(
420
443
  status: event.status,
421
444
  sessionId: deps.ctx.conversationId,
422
445
  imageData: imageBlock?.source.data,
446
+ toolUseId: event.toolUseId,
423
447
  });
424
448
  state.pendingToolResults.set(event.toolUseId, {
425
449
  content: event.content,
@@ -781,6 +805,9 @@ export async function dispatchAgentEvent(
781
805
  case "tool_use":
782
806
  handleToolUse(state, deps, event);
783
807
  break;
808
+ case "tool_use_preview_start":
809
+ handleToolUsePreviewStart(state, deps, event);
810
+ break;
784
811
  case "tool_output_chunk":
785
812
  handleToolOutputChunk(state, deps, event);
786
813
  break;
@@ -790,6 +817,20 @@ export async function dispatchAgentEvent(
790
817
  case "tool_result":
791
818
  handleToolResult(state, deps, event);
792
819
  break;
820
+ case "server_tool_start": {
821
+ const friendlyNames: Record<string, string> = {
822
+ web_search: "Searching the web",
823
+ };
824
+ const statusText = friendlyNames[event.name] ?? `Running ${event.name}`;
825
+ deps.ctx.emitActivityState(
826
+ "tool_running",
827
+ "tool_use_start",
828
+ "assistant_turn",
829
+ deps.reqId,
830
+ statusText,
831
+ );
832
+ break;
833
+ }
793
834
  case "error":
794
835
  handleError(state, deps, event);
795
836
  break;