@vellumai/assistant 0.4.43 → 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 (713) hide show
  1. package/.prettierignore +4 -0
  2. package/ARCHITECTURE.md +46 -44
  3. package/README.md +15 -16
  4. package/bun.lock +10 -35
  5. package/docs/architecture/integrations.md +102 -215
  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 -3
  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-asset.test.ts +1 -1
  40. package/src/__tests__/bundled-skill-retrieval-guard.test.ts +23 -9
  41. package/src/__tests__/call-controller.test.ts +0 -1
  42. package/src/__tests__/call-conversation-messages.test.ts +0 -1
  43. package/src/__tests__/call-domain.test.ts +0 -1
  44. package/src/__tests__/call-pointer-messages.test.ts +0 -1
  45. package/src/__tests__/call-recovery.test.ts +0 -1
  46. package/src/__tests__/call-routes-http.test.ts +0 -1
  47. package/src/__tests__/call-store.test.ts +0 -1
  48. package/src/__tests__/canonical-guardian-store.test.ts +0 -1
  49. package/src/__tests__/channel-approval-routes.test.ts +1 -1
  50. package/src/__tests__/channel-approvals.test.ts +1 -1
  51. package/src/__tests__/channel-delivery-store.test.ts +0 -1
  52. package/src/__tests__/channel-guardian.test.ts +5 -7
  53. package/src/__tests__/channel-retry-sweep.test.ts +0 -1
  54. package/src/__tests__/checker.test.ts +32 -36
  55. package/src/__tests__/compaction.benchmark.test.ts +16 -14
  56. package/src/__tests__/computer-use-session-lifecycle.test.ts +10 -11
  57. package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
  58. package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +2 -5
  59. package/src/__tests__/computer-use-tools.test.ts +35 -31
  60. package/src/__tests__/config-schema.test.ts +11 -15
  61. package/src/__tests__/config-watcher.test.ts +0 -1
  62. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
  63. package/src/__tests__/conflict-store.test.ts +0 -1
  64. package/src/__tests__/connection-policy.test.ts +4 -7
  65. package/src/__tests__/contacts-tools.test.ts +0 -1
  66. package/src/__tests__/context-memory-e2e.test.ts +2 -4
  67. package/src/__tests__/context-overflow-reducer.test.ts +2 -4
  68. package/src/__tests__/context-window-manager.test.ts +147 -60
  69. package/src/__tests__/contradiction-checker.test.ts +0 -1
  70. package/src/__tests__/conversation-attention-store.test.ts +0 -1
  71. package/src/__tests__/conversation-attention-telegram.test.ts +1 -1
  72. package/src/__tests__/conversation-pairing.test.ts +2 -2
  73. package/src/__tests__/conversation-routes-guardian-reply.test.ts +31 -7
  74. package/src/__tests__/conversation-routes-slash-commands.test.ts +381 -0
  75. package/src/__tests__/conversation-store.test.ts +0 -1
  76. package/src/__tests__/conversation-unread-route.test.ts +1 -2
  77. package/src/__tests__/credential-security-invariants.test.ts +8 -8
  78. package/src/__tests__/cross-provider-web-search.test.ts +353 -0
  79. package/src/__tests__/daemon-assistant-events.test.ts +6 -7
  80. package/src/__tests__/db-schedule-syntax-migration.test.ts +15 -3
  81. package/src/__tests__/delete-managed-skill-tool.test.ts +5 -9
  82. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -1
  83. package/src/__tests__/diagnostics-export.test.ts +189 -0
  84. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
  85. package/src/__tests__/emit-signal-routing-intent.test.ts +3 -3
  86. package/src/__tests__/entity-extractor.test.ts +0 -1
  87. package/src/__tests__/entity-search.test.ts +0 -1
  88. package/src/__tests__/ephemeral-permissions.test.ts +2 -4
  89. package/src/__tests__/error-handler-friendly-messages.test.ts +46 -0
  90. package/src/__tests__/file-read-tool.test.ts +86 -0
  91. package/src/__tests__/followup-tools.test.ts +0 -1
  92. package/src/__tests__/frontmatter.test.ts +77 -34
  93. package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
  94. package/src/__tests__/gateway-only-guard.test.ts +1 -1
  95. package/src/__tests__/guardian-action-conversation-turn.test.ts +0 -1
  96. package/src/__tests__/guardian-action-followup-executor.test.ts +0 -1
  97. package/src/__tests__/guardian-action-followup-store.test.ts +0 -1
  98. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +0 -1
  99. package/src/__tests__/guardian-action-late-reply.test.ts +0 -1
  100. package/src/__tests__/guardian-action-store.test.ts +0 -1
  101. package/src/__tests__/guardian-action-sweep.test.ts +0 -1
  102. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +0 -1
  103. package/src/__tests__/guardian-dispatch.test.ts +1 -2
  104. package/src/__tests__/guardian-grant-minting.test.ts +1 -1
  105. package/src/__tests__/guardian-outbound-http.test.ts +0 -1
  106. package/src/__tests__/guardian-principal-id-roundtrip.test.ts +0 -1
  107. package/src/__tests__/guardian-routing-invariants.test.ts +1 -1
  108. package/src/__tests__/guardian-routing-state.test.ts +0 -1
  109. package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -1
  110. package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +3 -5
  111. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +28 -426
  112. package/src/__tests__/host-bash-proxy.test.ts +335 -0
  113. package/src/__tests__/host-file-proxy.test.ts +374 -0
  114. package/src/__tests__/host-shell-tool.test.ts +147 -1
  115. package/src/__tests__/http-user-message-parity.test.ts +361 -0
  116. package/src/__tests__/inbound-invite-redemption.test.ts +0 -1
  117. package/src/__tests__/integration-status.test.ts +3 -8
  118. package/src/__tests__/intent-routing.test.ts +7 -46
  119. package/src/__tests__/invite-redemption-service.test.ts +0 -1
  120. package/src/__tests__/invite-routes-http.test.ts +0 -1
  121. package/src/__tests__/llm-usage-store.test.ts +0 -1
  122. package/src/__tests__/managed-avatar-client.test.ts +101 -55
  123. package/src/__tests__/managed-skill-lifecycle.test.ts +9 -18
  124. package/src/__tests__/managed-store.test.ts +94 -21
  125. package/src/__tests__/media-reuse-story.e2e.test.ts +0 -1
  126. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +2 -4
  127. package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -1
  128. package/src/__tests__/memory-recall-quality.test.ts +0 -1
  129. package/src/__tests__/memory-regressions.experimental.test.ts +0 -1
  130. package/src/__tests__/memory-regressions.test.ts +0 -1
  131. package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -1
  132. package/src/__tests__/memory-upsert-concurrency.test.ts +0 -1
  133. package/src/__tests__/messaging-send-tool.test.ts +35 -0
  134. package/src/__tests__/messaging-skill-split.test.ts +138 -0
  135. package/src/__tests__/migration-cross-version-compatibility.test.ts +0 -1
  136. package/src/__tests__/migration-export-http.test.ts +2 -3
  137. package/src/__tests__/migration-import-commit-http.test.ts +1 -2
  138. package/src/__tests__/migration-import-preflight-http.test.ts +1 -2
  139. package/src/__tests__/migration-validate-http.test.ts +1 -2
  140. package/src/__tests__/native-web-search.test.ts +475 -0
  141. package/src/__tests__/navigate-settings-tab.test.ts +84 -0
  142. package/src/__tests__/non-member-access-request.test.ts +0 -1
  143. package/src/__tests__/notification-broadcaster.test.ts +15 -15
  144. package/src/__tests__/notification-decision-strategy.test.ts +6 -6
  145. package/src/__tests__/notification-deep-link.test.ts +7 -7
  146. package/src/__tests__/notification-guardian-path.test.ts +2 -3
  147. package/src/__tests__/notification-telegram-adapter.test.ts +1 -1
  148. package/src/__tests__/notification-thread-candidates.test.ts +4 -4
  149. package/src/__tests__/onboarding-starter-tasks.test.ts +0 -1
  150. package/src/__tests__/onboarding-template-contract.test.ts +0 -10
  151. package/src/__tests__/playbook-execution.test.ts +0 -1
  152. package/src/__tests__/playbook-tools.test.ts +0 -1
  153. package/src/__tests__/profile-compiler.test.ts +0 -1
  154. package/src/__tests__/provider-fail-open-selection.test.ts +12 -2
  155. package/src/__tests__/provider-managed-proxy-integration.test.ts +25 -0
  156. package/src/__tests__/qdrant-collection-migration.test.ts +223 -0
  157. package/src/__tests__/recording-handler.test.ts +30 -94
  158. package/src/__tests__/registry.test.ts +28 -35
  159. package/src/__tests__/relay-server.test.ts +0 -1
  160. package/src/__tests__/ride-shotgun-handler.test.ts +4 -20
  161. package/src/__tests__/runtime-attachment-metadata.test.ts +0 -1
  162. package/src/__tests__/runtime-events-sse-parity.test.ts +3 -4
  163. package/src/__tests__/runtime-events-sse.test.ts +0 -1
  164. package/src/__tests__/sandbox-diagnostics.test.ts +0 -1
  165. package/src/__tests__/scaffold-managed-skill-tool.test.ts +30 -28
  166. package/src/__tests__/schedule-store.test.ts +441 -1
  167. package/src/__tests__/schedule-tools.test.ts +468 -7
  168. package/src/__tests__/scheduler-recurrence.test.ts +196 -23
  169. package/src/__tests__/scoped-approval-grants.test.ts +0 -1
  170. package/src/__tests__/scoped-grant-security-matrix.test.ts +0 -1
  171. package/src/__tests__/secret-prompt-log-hygiene.test.ts +6 -3
  172. package/src/__tests__/secret-response-routing.test.ts +4 -1
  173. package/src/__tests__/send-endpoint-busy.test.ts +14 -5
  174. package/src/__tests__/send-notification-tool.test.ts +0 -7
  175. package/src/__tests__/sequence-store.test.ts +0 -1
  176. package/src/__tests__/server-history-render.test.ts +1 -2
  177. package/src/__tests__/session-abort-tool-results.test.ts +0 -1
  178. package/src/__tests__/session-agent-loop.test.ts +46 -6
  179. package/src/__tests__/session-confirmation-signals.test.ts +7 -46
  180. package/src/__tests__/session-conflict-gate.test.ts +2 -6
  181. package/src/__tests__/session-error.test.ts +5 -14
  182. package/src/__tests__/session-init.benchmark.test.ts +3 -5
  183. package/src/__tests__/session-load-history-repair.test.ts +0 -1
  184. package/src/__tests__/session-media-retry.test.ts +12 -74
  185. package/src/__tests__/session-pre-run-repair.test.ts +0 -1
  186. package/src/__tests__/session-profile-injection.test.ts +2 -6
  187. package/src/__tests__/session-provider-retry-repair.test.ts +2 -6
  188. package/src/__tests__/session-queue.test.ts +94 -139
  189. package/src/__tests__/session-skill-tools.test.ts +115 -115
  190. package/src/__tests__/session-slash-known.test.ts +0 -1
  191. package/src/__tests__/session-slash-queue.test.ts +0 -1
  192. package/src/__tests__/session-slash-unknown.test.ts +0 -1
  193. package/src/__tests__/session-surfaces-task-progress.test.ts +34 -0
  194. package/src/__tests__/session-usage.test.ts +0 -1
  195. package/src/__tests__/session-workspace-cache-state.test.ts +2 -6
  196. package/src/__tests__/session-workspace-injection.test.ts +2 -6
  197. package/src/__tests__/session-workspace-tool-tracking.test.ts +2 -6
  198. package/src/__tests__/skill-feature-flags-integration.test.ts +180 -184
  199. package/src/__tests__/skill-feature-flags.test.ts +125 -18
  200. package/src/__tests__/skill-load-feature-flag.test.ts +1 -2
  201. package/src/__tests__/skill-load-tool.test.ts +194 -2
  202. package/src/__tests__/skill-projection-feature-flag.test.ts +27 -16
  203. package/src/__tests__/skill-projection.benchmark.test.ts +15 -14
  204. package/src/__tests__/skills.test.ts +14 -53
  205. package/src/__tests__/slack-channel-config.test.ts +0 -1
  206. package/src/__tests__/slack-inbound-verification.test.ts +0 -1
  207. package/src/__tests__/slack-skill.test.ts +1 -1
  208. package/src/__tests__/starter-task-flow.test.ts +9 -19
  209. package/src/__tests__/subagent-tools.test.ts +2 -2
  210. package/src/__tests__/system-prompt.test.ts +7 -7
  211. package/src/__tests__/task-compiler.test.ts +0 -1
  212. package/src/__tests__/task-management-tools.test.ts +0 -1
  213. package/src/__tests__/task-memory-cleanup.test.ts +0 -1
  214. package/src/__tests__/task-runner.test.ts +0 -1
  215. package/src/__tests__/task-scheduler.test.ts +0 -1
  216. package/src/__tests__/terminal-tools.test.ts +0 -1
  217. package/src/__tests__/test-support/computer-use-skill-harness.ts +2 -4
  218. package/src/__tests__/thread-seed-composer.test.ts +5 -5
  219. package/src/__tests__/tool-approval-handler.test.ts +0 -1
  220. package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -1
  221. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -1
  222. package/src/__tests__/tool-executor.test.ts +8 -86
  223. package/src/__tests__/tool-grant-request-escalation.test.ts +0 -1
  224. package/src/__tests__/tool-notification-listener.test.ts +1 -1
  225. package/src/__tests__/tool-preview-lifecycle.test.ts +416 -0
  226. package/src/__tests__/trust-store.test.ts +84 -8
  227. package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
  228. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +0 -1
  229. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +0 -1
  230. package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
  231. package/src/__tests__/trusted-contact-verification.test.ts +0 -1
  232. package/src/__tests__/twilio-provider.test.ts +0 -1
  233. package/src/__tests__/twilio-routes.test.ts +0 -1
  234. package/src/__tests__/{request-file-tool.test.ts → ui-file-upload-surface.test.ts} +11 -72
  235. package/src/__tests__/update-bulletin.test.ts +0 -1
  236. package/src/__tests__/usage-cache-backfill-migration.test.ts +0 -1
  237. package/src/__tests__/usage-routes.test.ts +0 -1
  238. package/src/__tests__/verification-control-plane-policy.test.ts +4 -4
  239. package/src/__tests__/voice-invite-redemption.test.ts +0 -1
  240. package/src/__tests__/voice-scoped-grant-consumer.test.ts +0 -1
  241. package/src/__tests__/voice-session-bridge.test.ts +9 -1
  242. package/src/__tests__/web-fetch.test.ts +57 -0
  243. package/src/__tests__/workspace-git-service.test.ts +5 -14
  244. package/src/__tests__/workspace-policy.test.ts +0 -1
  245. package/src/agent/loop.ts +22 -34
  246. package/src/bundler/bundle-signer.ts +4 -4
  247. package/src/calls/call-controller.ts +1 -1
  248. package/src/calls/relay-server.ts +1 -1
  249. package/src/calls/twilio-rest.ts +1 -1
  250. package/src/calls/voice-session-bridge.ts +3 -1
  251. package/src/cli/__tests__/notifications.test.ts +3 -4
  252. package/src/cli/commands/map.ts +2 -6
  253. package/src/cli/commands/mcp.ts +73 -15
  254. package/src/cli/commands/notifications.ts +4 -4
  255. package/src/cli/commands/sessions.ts +9 -1
  256. package/src/cli/commands/skills.ts +6 -10
  257. package/src/cli/http-client.ts +2 -3
  258. package/src/cli/main-screen.tsx +10 -10
  259. package/src/cli/program.ts +0 -4
  260. package/src/cli/reference.ts +0 -2
  261. package/src/cli.ts +15 -9
  262. package/src/config/__tests__/bundled-tool-registry-guard.test.ts +120 -0
  263. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +11 -0
  264. package/src/config/bundled-skills/app-builder/SKILL.md +6 -7
  265. package/src/config/bundled-skills/app-builder/TOOLS.json +0 -4
  266. package/src/config/bundled-skills/browser/SKILL.md +6 -1
  267. package/src/config/bundled-skills/chatgpt-import/SKILL.md +5 -1
  268. package/src/config/bundled-skills/claude-code/SKILL.md +5 -1
  269. package/src/config/bundled-skills/computer-use/SKILL.md +6 -1
  270. package/src/config/bundled-skills/computer-use/TOOLS.json +6 -69
  271. package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +10 -1
  272. package/src/config/bundled-skills/contacts/SKILL.md +10 -1
  273. package/src/config/bundled-skills/contacts/TOOLS.json +35 -0
  274. package/src/config/bundled-skills/{messaging → contacts}/tools/google-contacts.ts +9 -2
  275. package/src/config/bundled-skills/document/SKILL.md +4 -1
  276. package/src/config/bundled-skills/doordash/SKILL.md +8 -2
  277. package/src/config/bundled-skills/doordash/__tests__/doordash-session.test.ts +1 -82
  278. package/src/config/bundled-skills/doordash/doordash-cli.ts +17 -28
  279. package/src/config/bundled-skills/doordash/lib/session.ts +21 -17
  280. package/src/config/bundled-skills/doordash/lib/shared/platform.ts +4 -1
  281. package/src/config/bundled-skills/followups/SKILL.md +4 -1
  282. package/src/config/bundled-skills/gmail/SKILL.md +180 -0
  283. package/src/config/bundled-skills/gmail/TOOLS.json +506 -0
  284. package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +149 -0
  285. package/src/config/bundled-skills/gmail/tools/gmail-attachments.ts +110 -0
  286. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-draft.ts +1 -1
  287. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-filters.ts +1 -1
  288. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-follow-up.ts +1 -1
  289. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-forward.ts +1 -1
  290. package/src/config/bundled-skills/gmail/tools/gmail-label.ts +50 -0
  291. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-outreach-scan.ts +8 -90
  292. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-send-draft.ts +1 -1
  293. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-sender-digest.ts +2 -2
  294. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-trash.ts +1 -1
  295. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-unsubscribe.ts +1 -1
  296. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-vacation.ts +1 -1
  297. package/src/config/bundled-skills/gmail/tools/shared.ts +47 -0
  298. package/src/config/bundled-skills/google-calendar/SKILL.md +5 -1
  299. package/src/config/bundled-skills/image-studio/SKILL.md +5 -1
  300. package/src/config/bundled-skills/knowledge-graph/SKILL.md +4 -1
  301. package/src/config/bundled-skills/media-processing/SKILL.md +7 -13
  302. package/src/config/bundled-skills/media-processing/TOOLS.json +0 -22
  303. package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +12 -1
  304. package/src/config/bundled-skills/messaging/SKILL.md +23 -139
  305. package/src/config/bundled-skills/messaging/TOOLS.json +33 -1215
  306. package/src/config/bundled-skills/messaging/tools/gmail-mime-helpers.ts +42 -0
  307. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +165 -2
  308. package/src/config/bundled-skills/messaging/tools/messaging-sender-digest.ts +1 -13
  309. package/src/config/bundled-skills/messaging/tools/shared.ts +81 -34
  310. package/src/config/bundled-skills/notifications/SKILL.md +5 -1
  311. package/src/config/bundled-skills/orchestration/SKILL.md +30 -0
  312. package/src/config/bundled-skills/orchestration/TOOLS.json +35 -0
  313. package/src/config/bundled-skills/{reminder/tools/reminder-cancel.ts → orchestration/tools/swarm-delegate.ts} +3 -3
  314. package/src/config/bundled-skills/phone-calls/SKILL.md +9 -1
  315. package/src/config/bundled-skills/playbooks/SKILL.md +4 -1
  316. package/src/config/bundled-skills/schedule/SKILL.md +70 -9
  317. package/src/config/bundled-skills/schedule/TOOLS.json +38 -6
  318. package/src/config/bundled-skills/screen-watch/SKILL.md +28 -0
  319. package/src/config/bundled-skills/screen-watch/TOOLS.json +35 -0
  320. package/src/config/bundled-skills/{reminder/tools/reminder-create.ts → screen-watch/tools/start-screen-watch.ts} +3 -3
  321. package/src/config/bundled-skills/sequences/SKILL.md +47 -0
  322. package/src/config/bundled-skills/sequences/TOOLS.json +340 -0
  323. package/src/config/bundled-skills/sequences/tools/sequence-update.ts +128 -0
  324. package/src/config/bundled-skills/sequences/tools/shared.ts +9 -0
  325. package/src/config/bundled-skills/settings/SKILL.md +12 -0
  326. package/src/config/bundled-skills/settings/TOOLS.json +112 -0
  327. package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +43 -0
  328. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +52 -0
  329. package/src/config/bundled-skills/{computer-use/tools/computer-use-right-click.ts → settings/tools/set-avatar.ts} +2 -6
  330. package/src/{tools/system/voice-config.ts → config/bundled-skills/settings/tools/voice-config-update.ts} +59 -96
  331. package/src/config/bundled-skills/skill-management/SKILL.md +18 -0
  332. package/src/config/bundled-skills/skill-management/TOOLS.json +90 -0
  333. package/src/config/bundled-skills/{computer-use/tools/computer-use-double-click.ts → skill-management/tools/delete-managed.ts} +2 -6
  334. package/src/config/bundled-skills/skill-management/tools/scaffold-managed.ts +12 -0
  335. package/src/config/bundled-skills/slack/SKILL.md +5 -1
  336. package/src/config/bundled-skills/subagent/SKILL.md +4 -1
  337. package/src/config/bundled-skills/tasks/SKILL.md +5 -2
  338. package/src/config/bundled-skills/transcribe/SKILL.md +4 -1
  339. package/src/config/bundled-skills/watcher/SKILL.md +4 -1
  340. package/src/config/bundled-tool-registry.ts +118 -107
  341. package/src/config/env.ts +5 -2
  342. package/src/config/feature-flag-registry.json +33 -9
  343. package/src/config/loader.ts +10 -2
  344. package/src/config/schema.ts +19 -16
  345. package/src/config/schemas/inference.ts +12 -22
  346. package/src/config/schemas/memory-storage.ts +19 -1
  347. package/src/config/schemas/platform.ts +0 -16
  348. package/src/config/skill-state.ts +11 -8
  349. package/src/config/skills.ts +83 -32
  350. package/src/context/token-estimator.ts +11 -0
  351. package/src/context/window-manager.ts +180 -151
  352. package/src/daemon/computer-use-session.ts +11 -43
  353. package/src/daemon/daemon-control.ts +4 -1
  354. package/src/daemon/handlers/config-channels.ts +5 -9
  355. package/src/daemon/handlers/config-ingress.ts +0 -4
  356. package/src/daemon/handlers/config-model.ts +7 -13
  357. package/src/daemon/handlers/config-telegram.ts +4 -8
  358. package/src/daemon/handlers/config-voice.ts +2 -5
  359. package/src/daemon/handlers/dictation.ts +2 -12
  360. package/src/daemon/handlers/identity.ts +0 -105
  361. package/src/daemon/handlers/recording.ts +3 -23
  362. package/src/daemon/handlers/session-history.ts +42 -10
  363. package/src/daemon/handlers/sessions.ts +53 -72
  364. package/src/daemon/handlers/shared.ts +7 -28
  365. package/src/daemon/handlers/skills.ts +31 -27
  366. package/src/daemon/host-bash-proxy.ts +148 -0
  367. package/src/daemon/host-file-proxy.ts +135 -0
  368. package/src/daemon/lifecycle.ts +53 -41
  369. package/src/daemon/mcp-reload-service.ts +123 -0
  370. package/src/daemon/message-protocol.ts +6 -0
  371. package/src/daemon/message-types/apps.ts +0 -25
  372. package/src/daemon/message-types/browser.ts +1 -1
  373. package/src/daemon/message-types/computer-use.ts +1 -4
  374. package/src/daemon/message-types/guardian-actions.ts +1 -1
  375. package/src/daemon/message-types/host-bash.ts +18 -0
  376. package/src/daemon/message-types/host-file.ts +44 -0
  377. package/src/daemon/message-types/integrations.ts +1 -73
  378. package/src/daemon/message-types/messages.ts +15 -0
  379. package/src/daemon/message-types/schedules.ts +11 -27
  380. package/src/daemon/message-types/sessions.ts +8 -2
  381. package/src/daemon/message-types/settings.ts +1 -1
  382. package/src/daemon/message-types/shared.ts +1 -1
  383. package/src/daemon/message-types/surfaces.ts +2 -0
  384. package/src/daemon/ride-shotgun-handler.ts +35 -43
  385. package/src/daemon/seed-files.ts +3 -27
  386. package/src/daemon/server.ts +45 -28
  387. package/src/daemon/session-agent-loop-handlers.ts +72 -9
  388. package/src/daemon/session-agent-loop.ts +97 -66
  389. package/src/daemon/session-attachments.ts +1 -1
  390. package/src/daemon/session-error.ts +17 -16
  391. package/src/daemon/session-lifecycle.ts +20 -1
  392. package/src/daemon/session-media-retry.ts +1 -15
  393. package/src/daemon/session-messaging.ts +14 -6
  394. package/src/daemon/session-process.ts +36 -7
  395. package/src/daemon/session-queue-manager.ts +62 -103
  396. package/src/daemon/session-runtime-assembly.ts +27 -7
  397. package/src/daemon/session-skill-tools.ts +12 -11
  398. package/src/daemon/session-slash.ts +7 -0
  399. package/src/daemon/session-surfaces.ts +192 -118
  400. package/src/daemon/session-tool-setup.ts +146 -6
  401. package/src/daemon/session.ts +75 -37
  402. package/src/errors.ts +0 -2
  403. package/src/export/formatter.ts +6 -0
  404. package/src/mcp/mcp-oauth-provider.ts +1 -3
  405. package/src/media/avatar-router.ts +20 -28
  406. package/src/media/avatar-types.ts +7 -14
  407. package/src/media/managed-avatar-client.ts +70 -34
  408. package/src/memory/app-store.ts +0 -18
  409. package/src/memory/conversation-title-service.ts +1 -2
  410. package/src/memory/db-init.ts +16 -0
  411. package/src/memory/embedding-backend.ts +129 -27
  412. package/src/memory/embedding-gemini.test.ts +256 -0
  413. package/src/memory/embedding-gemini.ts +47 -13
  414. package/src/memory/embedding-local.ts +14 -2
  415. package/src/memory/embedding-ollama.ts +15 -2
  416. package/src/memory/embedding-openai.ts +15 -2
  417. package/src/memory/embedding-types.test.ts +116 -0
  418. package/src/memory/embedding-types.ts +61 -0
  419. package/src/memory/fingerprint.ts +1 -1
  420. package/src/memory/indexer.ts +25 -1
  421. package/src/memory/job-handlers/embedding.test.ts +258 -0
  422. package/src/memory/job-handlers/embedding.ts +81 -1
  423. package/src/memory/job-handlers/index-maintenance.ts +35 -1
  424. package/src/memory/job-handlers/media-processing.ts +11 -1
  425. package/src/memory/job-utils.ts +21 -6
  426. package/src/memory/jobs-store.ts +5 -1
  427. package/src/memory/jobs-worker.ts +8 -0
  428. package/src/memory/message-content.ts +66 -0
  429. package/src/memory/migrations/100-core-tables.ts +1 -31
  430. package/src/memory/migrations/104-core-indexes.ts +0 -11
  431. package/src/memory/migrations/145-drop-accounts-table.ts +19 -0
  432. package/src/memory/migrations/146-schedule-oneshot-routing.ts +94 -0
  433. package/src/memory/migrations/147-migrate-reminders-to-schedules.ts +129 -0
  434. package/src/memory/migrations/148-drop-reminders-table.ts +18 -0
  435. package/src/memory/migrations/index.ts +4 -0
  436. package/src/memory/migrations/registry.ts +19 -0
  437. package/src/memory/qdrant-client.ts +158 -43
  438. package/src/memory/retriever.test.ts +0 -1
  439. package/src/memory/retriever.ts +12 -2
  440. package/src/memory/schema/infrastructure.ts +5 -37
  441. package/src/memory/search/formatting.ts +34 -9
  442. package/src/memory/search/semantic.ts +57 -2
  443. package/src/memory/search/types.ts +2 -1
  444. package/src/notifications/AGENTS.md +2 -2
  445. package/src/notifications/README.md +59 -58
  446. package/src/notifications/adapters/macos.ts +1 -1
  447. package/src/notifications/broadcaster.ts +5 -5
  448. package/src/notifications/copy-composer.ts +1 -1
  449. package/src/notifications/decision-engine.ts +2 -2
  450. package/src/notifications/destination-resolver.ts +2 -2
  451. package/src/notifications/emit-signal.ts +8 -8
  452. package/src/notifications/signal.ts +1 -1
  453. package/src/notifications/thread-seed-composer.ts +1 -1
  454. package/src/oauth/connect-orchestrator.ts +1 -1
  455. package/src/oauth/token-persistence.ts +1 -1
  456. package/src/permissions/checker.ts +12 -1
  457. package/src/permissions/defaults.ts +13 -17
  458. package/src/permissions/trust-store.ts +37 -0
  459. package/src/permissions/workspace-policy.ts +0 -1
  460. package/src/prompts/__tests__/build-cli-reference-section.test.ts +11 -0
  461. package/src/prompts/computer-use-prompt.ts +1 -1
  462. package/src/prompts/system-prompt.ts +33 -35
  463. package/src/prompts/templates/BOOTSTRAP.md +0 -3
  464. package/src/prompts/templates/SOUL.md +1 -2
  465. package/src/prompts/templates/UPDATES.md +16 -7
  466. package/src/providers/anthropic/client.ts +87 -33
  467. package/src/providers/gemini/client.ts +6 -0
  468. package/src/providers/managed-proxy/constants.ts +5 -0
  469. package/src/providers/openai/client.ts +15 -0
  470. package/src/providers/registry.ts +4 -6
  471. package/src/providers/types.ts +24 -2
  472. package/src/runtime/AGENTS.md +18 -0
  473. package/src/runtime/assistant-event-hub.ts +2 -3
  474. package/src/runtime/assistant-event.ts +4 -4
  475. package/src/runtime/auth/__tests__/context.test.ts +5 -5
  476. package/src/runtime/auth/__tests__/credential-service.test.ts +0 -1
  477. package/src/runtime/auth/__tests__/guard-tests.test.ts +3 -2
  478. package/src/runtime/auth/__tests__/{ipc-auth-context.test.ts → local-auth-context.test.ts} +21 -21
  479. package/src/runtime/auth/__tests__/route-policy.test.ts +2 -2
  480. package/src/runtime/auth/__tests__/scopes.test.ts +9 -8
  481. package/src/runtime/auth/__tests__/subject.test.ts +8 -8
  482. package/src/runtime/auth/__tests__/token-service.test.ts +0 -1
  483. package/src/runtime/auth/route-policy.ts +8 -8
  484. package/src/runtime/auth/scopes.ts +2 -1
  485. package/src/runtime/auth/subject.ts +4 -4
  486. package/src/runtime/auth/token-service.ts +1 -24
  487. package/src/runtime/auth/types.ts +3 -3
  488. package/src/runtime/guardian-action-followup-executor.ts +1 -1
  489. package/src/runtime/guardian-action-grant-minter.ts +1 -1
  490. package/src/runtime/guardian-action-service.ts +3 -3
  491. package/src/runtime/http-server.ts +15 -2
  492. package/src/runtime/http-types.ts +10 -0
  493. package/src/runtime/invite-service.ts +3 -3
  494. package/src/runtime/local-actor-identity.ts +17 -22
  495. package/src/runtime/middleware/error-handler.ts +14 -1
  496. package/src/runtime/pending-interactions.ts +21 -9
  497. package/src/runtime/routes/app-management-routes.ts +63 -67
  498. package/src/runtime/routes/approval-routes.ts +1 -3
  499. package/src/runtime/routes/brain-graph/brain-graph.html +1845 -0
  500. package/src/runtime/routes/brain-graph-routes.ts +4 -42
  501. package/src/runtime/routes/btw-routes.ts +155 -0
  502. package/src/runtime/routes/computer-use-routes.ts +77 -31
  503. package/src/runtime/routes/conversation-routes.ts +234 -47
  504. package/src/runtime/routes/diagnostics-routes.ts +154 -43
  505. package/src/runtime/routes/documents-routes.ts +2 -2
  506. package/src/runtime/routes/global-search-routes.ts +1 -1
  507. package/src/runtime/routes/host-bash-routes.ts +83 -0
  508. package/src/runtime/routes/host-file-routes.ts +79 -0
  509. package/src/runtime/routes/integrations/slack/share.ts +1 -1
  510. package/src/runtime/routes/log-export-routes.ts +120 -0
  511. package/src/runtime/routes/mcp-routes.ts +20 -0
  512. package/src/runtime/routes/migration-routes.ts +3 -3
  513. package/src/runtime/routes/pairing-routes.ts +1 -1
  514. package/src/runtime/routes/recording-routes.ts +6 -4
  515. package/src/runtime/routes/schedule-routes.ts +31 -5
  516. package/src/runtime/routes/session-management-routes.ts +2 -6
  517. package/src/runtime/routes/session-query-routes.ts +18 -15
  518. package/src/runtime/routes/settings-routes.ts +7 -351
  519. package/src/runtime/routes/skills-routes.ts +7 -6
  520. package/src/runtime/routes/subagents-routes.ts +4 -10
  521. package/src/runtime/routes/surface-action-routes.ts +3 -14
  522. package/src/runtime/routes/surface-content-routes.ts +22 -5
  523. package/src/runtime/routes/work-items-routes.ts +21 -25
  524. package/src/runtime/routes/workspace-routes.test.ts +3 -3
  525. package/src/runtime/routes/workspace-utils.ts +1 -1
  526. package/src/runtime/telegram-streaming-delivery.ts +3 -0
  527. package/src/runtime/verification-outbound-actions.ts +2 -2
  528. package/src/schedule/integration-status.ts +0 -6
  529. package/src/schedule/schedule-store.ts +234 -43
  530. package/src/schedule/scheduler.ts +73 -74
  531. package/src/security/oauth2.ts +1 -1
  532. package/src/sequence/store.ts +12 -2
  533. package/src/skills/frontmatter.ts +19 -77
  534. package/src/skills/managed-store.ts +11 -2
  535. package/src/subagent/manager.ts +5 -3
  536. package/src/tasks/ephemeral-permissions.ts +3 -5
  537. package/src/tools/AGENTS.md +37 -0
  538. package/src/tools/apps/executors.ts +0 -6
  539. package/src/tools/browser/browser-manager.ts +17 -11
  540. package/src/tools/browser/jit-auth.ts +4 -1
  541. package/src/tools/claude-code/claude-code.ts +1 -1
  542. package/src/tools/computer-use/definitions.ts +48 -60
  543. package/src/tools/document/document-tool.ts +6 -6
  544. package/src/tools/document/editor-template.ts +10 -8
  545. package/src/tools/filesystem/edit.ts +2 -1
  546. package/src/tools/filesystem/read.ts +20 -2
  547. package/src/tools/filesystem/write.ts +2 -1
  548. package/src/tools/host-filesystem/edit.ts +17 -1
  549. package/src/tools/host-filesystem/read.ts +16 -1
  550. package/src/tools/host-filesystem/write.ts +15 -1
  551. package/src/tools/host-terminal/host-shell.ts +24 -0
  552. package/src/tools/memory/definitions.ts +45 -81
  553. package/src/tools/memory/handlers.test.ts +0 -1
  554. package/src/tools/memory/handlers.ts +1 -1
  555. package/src/tools/memory/register.ts +26 -60
  556. package/src/tools/network/script-proxy/session-manager.ts +6 -8
  557. package/src/tools/network/web-fetch.ts +7 -1
  558. package/src/tools/network/web-search.ts +2 -1
  559. package/src/tools/registry.ts +23 -0
  560. package/src/tools/schedule/create.ts +113 -5
  561. package/src/tools/schedule/list.ts +57 -15
  562. package/src/tools/schedule/update.ts +73 -3
  563. package/src/tools/shared/filesystem/image-read.ts +192 -0
  564. package/src/tools/side-effects.ts +1 -7
  565. package/src/tools/skills/delete-managed.ts +27 -64
  566. package/src/tools/skills/execute.ts +54 -0
  567. package/src/tools/skills/load.ts +127 -5
  568. package/src/tools/skills/scaffold-managed.ts +93 -172
  569. package/src/tools/subagent/message.ts +0 -7
  570. package/src/tools/subagent/spawn.ts +1 -1
  571. package/src/tools/swarm/delegate.ts +0 -3
  572. package/src/tools/system/avatar-generator.ts +13 -19
  573. package/src/tools/system/request-permission.ts +2 -1
  574. package/src/tools/terminal/safe-env.ts +1 -0
  575. package/src/tools/tool-manifest.ts +41 -47
  576. package/src/tools/types.ts +6 -2
  577. package/src/tools/ui-surface/definitions.ts +0 -55
  578. package/src/util/errors.ts +12 -10
  579. package/src/workspace/git-service.ts +0 -2
  580. package/src/__tests__/account-registry.test.ts +0 -258
  581. package/src/__tests__/email-classifier.test.ts +0 -25
  582. package/src/__tests__/gmail-integration.test.ts +0 -97
  583. package/src/__tests__/handle-user-message-secret-resume.test.ts +0 -172
  584. package/src/__tests__/home-base-bootstrap.test.ts +0 -84
  585. package/src/__tests__/managed-twitter-guardrails.test.ts +0 -353
  586. package/src/__tests__/prebuilt-home-base-seed.test.ts +0 -79
  587. package/src/__tests__/recording-intent-fallback.test.ts +0 -199
  588. package/src/__tests__/recording-intent.test.ts +0 -985
  589. package/src/__tests__/recording-state-machine.test.ts +0 -1574
  590. package/src/__tests__/reminder-store.test.ts +0 -350
  591. package/src/__tests__/reminder.test.ts +0 -337
  592. package/src/__tests__/scan-result-store.test.ts +0 -121
  593. package/src/__tests__/twitter-platform-proxy-client.test.ts +0 -450
  594. package/src/__tests__/view-image-tool.test.ts +0 -241
  595. package/src/cli/commands/amazon/cart.ts +0 -513
  596. package/src/cli/commands/amazon/checkout.ts +0 -394
  597. package/src/cli/commands/amazon/client.ts +0 -513
  598. package/src/cli/commands/amazon/index.ts +0 -920
  599. package/src/cli/commands/amazon/product-details.ts +0 -145
  600. package/src/cli/commands/amazon/request-extractor.ts +0 -187
  601. package/src/cli/commands/amazon/search.ts +0 -76
  602. package/src/cli/commands/amazon/session.ts +0 -116
  603. package/src/cli/commands/twitter/__tests__/cli-error-shaping.test.ts +0 -265
  604. package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +0 -483
  605. package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +0 -412
  606. package/src/cli/commands/twitter/__tests__/oauth-client.test.ts +0 -197
  607. package/src/cli/commands/twitter/client.ts +0 -989
  608. package/src/cli/commands/twitter/index.ts +0 -1160
  609. package/src/cli/commands/twitter/oauth-client.ts +0 -94
  610. package/src/cli/commands/twitter/router.ts +0 -396
  611. package/src/cli/commands/twitter/session.ts +0 -121
  612. package/src/config/bundled-skills/agentmail/SKILL.md +0 -132
  613. package/src/config/bundled-skills/agentmail/icon.svg +0 -21
  614. package/src/config/bundled-skills/amazon/SKILL.md +0 -137
  615. package/src/config/bundled-skills/amazon/icon.svg +0 -13
  616. package/src/config/bundled-skills/api-mapping/SKILL.md +0 -78
  617. package/src/config/bundled-skills/api-mapping/icon.svg +0 -18
  618. package/src/config/bundled-skills/cli-discover/SKILL.md +0 -68
  619. package/src/config/bundled-skills/deploy-fullstack-vercel/SKILL.md +0 -179
  620. package/src/config/bundled-skills/document-writer/SKILL.md +0 -195
  621. package/src/config/bundled-skills/elevenlabs-voice/SKILL.md +0 -140
  622. package/src/config/bundled-skills/email-setup/SKILL.md +0 -68
  623. package/src/config/bundled-skills/frontend-design/SKILL.md +0 -44
  624. package/src/config/bundled-skills/frontend-design/icon.svg +0 -16
  625. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +0 -452
  626. package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +0 -203
  627. package/src/config/bundled-skills/influencer/SKILL.md +0 -144
  628. package/src/config/bundled-skills/influencer/scripts/client.ts +0 -1269
  629. package/src/config/bundled-skills/influencer/scripts/influencer.ts +0 -267
  630. package/src/config/bundled-skills/macos-automation/SKILL.md +0 -65
  631. package/src/config/bundled-skills/macos-automation/icon.svg +0 -12
  632. package/src/config/bundled-skills/mcp-setup/SKILL.md +0 -75
  633. package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +0 -184
  634. package/src/config/bundled-skills/messaging/tools/gmail-archive-by-query.ts +0 -80
  635. package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +0 -29
  636. package/src/config/bundled-skills/messaging/tools/gmail-batch-archive.ts +0 -56
  637. package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +0 -34
  638. package/src/config/bundled-skills/messaging/tools/gmail-download-attachment.ts +0 -47
  639. package/src/config/bundled-skills/messaging/tools/gmail-label.ts +0 -31
  640. package/src/config/bundled-skills/messaging/tools/gmail-list-attachments.ts +0 -67
  641. package/src/config/bundled-skills/messaging/tools/gmail-send-with-attachments.ts +0 -97
  642. package/src/config/bundled-skills/messaging/tools/gmail-summarize-thread.ts +0 -87
  643. package/src/config/bundled-skills/messaging/tools/gmail-triage.ts +0 -135
  644. package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +0 -24
  645. package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +0 -201
  646. package/src/config/bundled-skills/messaging/tools/send-notification.ts +0 -1
  647. package/src/config/bundled-skills/messaging/tools/sequence-cancel.ts +0 -27
  648. package/src/config/bundled-skills/messaging/tools/sequence-pause.ts +0 -48
  649. package/src/config/bundled-skills/messaging/tools/sequence-resume.ts +0 -27
  650. package/src/config/bundled-skills/messaging/tools/sequence-update.ts +0 -56
  651. package/src/config/bundled-skills/notion/SKILL.md +0 -240
  652. package/src/config/bundled-skills/notion-oauth-setup/SKILL.md +0 -126
  653. package/src/config/bundled-skills/oauth-setup/SKILL.md +0 -143
  654. package/src/config/bundled-skills/public-ingress/SKILL.md +0 -258
  655. package/src/config/bundled-skills/reminder/SKILL.md +0 -79
  656. package/src/config/bundled-skills/reminder/TOOLS.json +0 -89
  657. package/src/config/bundled-skills/reminder/tools/reminder-list.ts +0 -12
  658. package/src/config/bundled-skills/restaurant-reservation/SKILL.md +0 -141
  659. package/src/config/bundled-skills/screen-recording/SKILL.md +0 -148
  660. package/src/config/bundled-skills/self-upgrade/SKILL.md +0 -69
  661. package/src/config/bundled-skills/skills-catalog/SKILL.md +0 -78
  662. package/src/config/bundled-skills/slack-app-setup/SKILL.md +0 -178
  663. package/src/config/bundled-skills/slack-digest-setup/SKILL.md +0 -163
  664. package/src/config/bundled-skills/slack-oauth-setup/SKILL.md +0 -157
  665. package/src/config/bundled-skills/start-the-day/SKILL.md +0 -70
  666. package/src/config/bundled-skills/start-the-day/icon.svg +0 -13
  667. package/src/config/bundled-skills/telegram-setup/SKILL.md +0 -105
  668. package/src/config/bundled-skills/time-based-actions/SKILL.md +0 -142
  669. package/src/config/bundled-skills/twilio-setup/SKILL.md +0 -232
  670. package/src/config/bundled-skills/twitter/SKILL.md +0 -319
  671. package/src/config/bundled-skills/twitter/icon.svg +0 -14
  672. package/src/config/bundled-skills/typescript-eval/SKILL.md +0 -60
  673. package/src/config/bundled-skills/vercel-token-setup/SKILL.md +0 -214
  674. package/src/config/bundled-skills/voice-setup/SKILL.md +0 -131
  675. package/src/config/bundled-skills/voice-setup/icon.svg +0 -20
  676. package/src/daemon/handlers/pairing.ts +0 -119
  677. package/src/daemon/handlers/session-user-message.ts +0 -961
  678. package/src/daemon/recording-executor.ts +0 -180
  679. package/src/daemon/recording-intent-fallback.ts +0 -162
  680. package/src/daemon/recording-intent.ts +0 -493
  681. package/src/home-base/app-link-store.ts +0 -78
  682. package/src/home-base/bootstrap.ts +0 -74
  683. package/src/home-base/prebuilt/brain-graph.html +0 -1483
  684. package/src/home-base/prebuilt/index.html +0 -702
  685. package/src/home-base/prebuilt/seed-metadata.json +0 -21
  686. package/src/home-base/prebuilt/seed.ts +0 -122
  687. package/src/home-base/prebuilt-home-base-updater.ts +0 -36
  688. package/src/memory/account-store.ts +0 -117
  689. package/src/messaging/activity-analyzer.ts +0 -76
  690. package/src/messaging/email-classifier.ts +0 -208
  691. package/src/messaging/index.ts +0 -2
  692. package/src/messaging/outreach-classifier.ts +0 -185
  693. package/src/messaging/thread-summarizer.ts +0 -346
  694. package/src/messaging/types.ts +0 -17
  695. package/src/tools/browser/x-auto-navigate.ts +0 -254
  696. package/src/tools/credentials/account-registry.ts +0 -144
  697. package/src/tools/filesystem/view-image.ts +0 -244
  698. package/src/tools/reminder/reminder-store.ts +0 -194
  699. package/src/tools/reminder/reminder.ts +0 -158
  700. package/src/tools/system/navigate-settings.ts +0 -74
  701. package/src/tools/system/open-system-settings.ts +0 -85
  702. package/src/tools/system/version.ts +0 -54
  703. package/src/twitter/platform-proxy-client.ts +0 -405
  704. package/src/util/cookie-session.ts +0 -98
  705. /package/src/config/bundled-skills/{messaging → gmail}/tools/scan-result-store.ts +0 -0
  706. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-analytics.ts +0 -0
  707. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-create.ts +0 -0
  708. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-delete.ts +0 -0
  709. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enroll.ts +0 -0
  710. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enrollment-list.ts +0 -0
  711. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-get.ts +0 -0
  712. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-import.ts +0 -0
  713. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-list.ts +0 -0
@@ -1,200 +1,121 @@
1
- import { RiskLevel } from "../../permissions/types.js";
2
- import type { ToolDefinition } from "../../providers/types.js";
3
1
  import { createManagedSkill } from "../../skills/managed-store.js";
4
- import { registerTool } from "../registry.js";
5
- import type { Tool, ToolContext, ToolExecutionResult } from "../types.js";
2
+ import type { ToolContext, ToolExecutionResult } from "../types.js";
6
3
 
7
4
  /** Strip embedded newlines/carriage returns to prevent YAML frontmatter injection. */
8
5
  function sanitizeFrontmatterValue(value: string): string {
9
6
  return value.replace(/[\r\n]+/g, " ").trim();
10
7
  }
11
8
 
12
- export class ScaffoldManagedSkillTool implements Tool {
13
- name = "scaffold_managed_skill";
14
- description =
15
- "Create or update a managed skill in ~/.vellum/workspace/skills. The skill becomes available for skill_load immediately.";
16
- category = "skills";
17
- defaultRiskLevel = RiskLevel.High;
18
-
19
- getDefinition(): ToolDefinition {
9
+ /**
10
+ * Core execution logic for scaffold_managed_skill.
11
+ * Exported so bundled-skill executors and tests can call it directly.
12
+ */
13
+ export async function executeScaffoldManagedSkill(
14
+ input: Record<string, unknown>,
15
+ _context: ToolContext,
16
+ ): Promise<ToolExecutionResult> {
17
+ const skillId = input.skill_id;
18
+ if (typeof skillId !== "string" || !skillId.trim()) {
20
19
  return {
21
- name: this.name,
22
- description: this.description,
23
- input_schema: {
24
- type: "object",
25
- properties: {
26
- skill_id: {
27
- type: "string",
28
- description:
29
- 'Unique identifier for the skill (lowercase slug, e.g. "my-skill").',
30
- },
31
- name: {
32
- type: "string",
33
- description: "Human-readable name for the skill.",
34
- },
35
- description: {
36
- type: "string",
37
- description: "Short description of what the skill does.",
38
- },
39
- body_markdown: {
40
- type: "string",
41
- description:
42
- "The full skill body in markdown — instructions, prompts, templates, etc.",
43
- },
44
- emoji: {
45
- type: "string",
46
- description: "Optional emoji icon for the skill.",
47
- },
48
- user_invocable: {
49
- type: "boolean",
50
- description:
51
- "Whether users can invoke this skill directly (default: true).",
52
- },
53
- disable_model_invocation: {
54
- type: "boolean",
55
- description:
56
- "Whether to prevent the model from auto-invoking this skill (default: false).",
57
- },
58
- overwrite: {
59
- type: "boolean",
60
- description:
61
- "Whether to overwrite an existing skill with the same ID (default: false).",
62
- },
63
- add_to_index: {
64
- type: "boolean",
65
- description:
66
- "Whether to add the skill to SKILLS.md index (default: true).",
67
- },
68
- includes: {
69
- type: "array",
70
- items: { type: "string" },
71
- description:
72
- "Optional list of child skill IDs that this skill includes (metadata only, no auto-activation).",
73
- },
74
- reason: {
75
- type: "string",
76
- description:
77
- "Brief non-technical explanation of what you are creating and why, shown to the user as a status update. Use simple language a non-technical person would understand.",
78
- },
79
- },
80
- required: ["skill_id", "name", "description", "body_markdown"],
81
- },
20
+ content: "Error: skill_id is required and must be a non-empty string",
21
+ isError: true,
82
22
  };
83
23
  }
84
24
 
85
- async execute(
86
- input: Record<string, unknown>,
87
- _context: ToolContext,
88
- ): Promise<ToolExecutionResult> {
89
- const skillId = input.skill_id;
90
- if (typeof skillId !== "string" || !skillId.trim()) {
91
- return {
92
- content: "Error: skill_id is required and must be a non-empty string",
93
- isError: true,
94
- };
95
- }
25
+ const name = input.name;
26
+ if (typeof name !== "string" || !name.trim()) {
27
+ return {
28
+ content: "Error: name is required and must be a non-empty string",
29
+ isError: true,
30
+ };
31
+ }
96
32
 
97
- const name = input.name;
98
- if (typeof name !== "string" || !name.trim()) {
99
- return {
100
- content: "Error: name is required and must be a non-empty string",
101
- isError: true,
102
- };
103
- }
33
+ const description = input.description;
34
+ if (typeof description !== "string" || !description.trim()) {
35
+ return {
36
+ content: "Error: description is required and must be a non-empty string",
37
+ isError: true,
38
+ };
39
+ }
104
40
 
105
- const description = input.description;
106
- if (typeof description !== "string" || !description.trim()) {
107
- return {
108
- content:
109
- "Error: description is required and must be a non-empty string",
110
- isError: true,
111
- };
112
- }
41
+ const bodyMarkdown = input.body_markdown;
42
+ if (typeof bodyMarkdown !== "string" || !bodyMarkdown.trim()) {
43
+ return {
44
+ content:
45
+ "Error: body_markdown is required and must be a non-empty string",
46
+ isError: true,
47
+ };
48
+ }
113
49
 
114
- const bodyMarkdown = input.body_markdown;
115
- if (typeof bodyMarkdown !== "string" || !bodyMarkdown.trim()) {
50
+ // Validate and normalize includes
51
+ let includes: string[] | undefined;
52
+ if (input.includes !== undefined) {
53
+ if (!Array.isArray(input.includes)) {
116
54
  return {
117
- content:
118
- "Error: body_markdown is required and must be a non-empty string",
55
+ content: "Error: includes must be an array of strings",
119
56
  isError: true,
120
57
  };
121
58
  }
122
-
123
- // Validate and normalize includes
124
- let includes: string[] | undefined;
125
- if (input.includes !== undefined) {
126
- if (!Array.isArray(input.includes)) {
59
+ for (const item of input.includes) {
60
+ if (typeof item !== "string") {
127
61
  return {
128
- content: "Error: includes must be an array of strings",
62
+ content: "Error: each element in includes must be a non-empty string",
129
63
  isError: true,
130
64
  };
131
65
  }
132
- for (const item of input.includes) {
133
- if (typeof item !== "string") {
134
- return {
135
- content:
136
- "Error: each element in includes must be a non-empty string",
137
- isError: true,
138
- };
139
- }
140
- if (!item.trim()) {
141
- return {
142
- content:
143
- "Error: each element in includes must be a non-empty string",
144
- isError: true,
145
- };
146
- }
147
- }
148
- const normalized: string[] = [];
149
- const seen = new Set<string>();
150
- for (const item of input.includes as string[]) {
151
- const trimmed = item.trim();
152
- if (seen.has(trimmed)) continue;
153
- seen.add(trimmed);
154
- normalized.push(trimmed);
155
- }
156
- if (normalized.length > 0) {
157
- includes = normalized;
66
+ if (!item.trim()) {
67
+ return {
68
+ content: "Error: each element in includes must be a non-empty string",
69
+ isError: true,
70
+ };
158
71
  }
159
72
  }
160
-
161
- const result = createManagedSkill({
162
- id: skillId.trim(),
163
- name: sanitizeFrontmatterValue(name),
164
- description: sanitizeFrontmatterValue(description),
165
- bodyMarkdown: bodyMarkdown,
166
- emoji:
167
- typeof input.emoji === "string"
168
- ? sanitizeFrontmatterValue(input.emoji)
169
- : undefined,
170
- userInvocable:
171
- typeof input.user_invocable === "boolean"
172
- ? input.user_invocable
173
- : undefined,
174
- disableModelInvocation:
175
- typeof input.disable_model_invocation === "boolean"
176
- ? input.disable_model_invocation
177
- : undefined,
178
- overwrite: input.overwrite === true,
179
- addToIndex: input.add_to_index !== false,
180
- includes,
181
- });
182
-
183
- if (!result.created) {
184
- return { content: `Error: ${result.error}`, isError: true };
73
+ const normalized: string[] = [];
74
+ const seen = new Set<string>();
75
+ for (const item of input.includes as string[]) {
76
+ const trimmed = item.trim();
77
+ if (seen.has(trimmed)) continue;
78
+ seen.add(trimmed);
79
+ normalized.push(trimmed);
80
+ }
81
+ if (normalized.length > 0) {
82
+ includes = normalized;
185
83
  }
84
+ }
186
85
 
187
- return {
188
- content: JSON.stringify({
189
- created: true,
190
- skill_id: skillId.trim(),
191
- path: result.path,
192
- index_updated: result.indexUpdated,
193
- }),
194
- isError: false,
195
- };
86
+ const result = createManagedSkill({
87
+ id: skillId.trim(),
88
+ name: sanitizeFrontmatterValue(name),
89
+ description: sanitizeFrontmatterValue(description),
90
+ bodyMarkdown: bodyMarkdown,
91
+ emoji:
92
+ typeof input.emoji === "string"
93
+ ? sanitizeFrontmatterValue(input.emoji)
94
+ : undefined,
95
+ userInvocable:
96
+ typeof input.user_invocable === "boolean"
97
+ ? input.user_invocable
98
+ : undefined,
99
+ disableModelInvocation:
100
+ typeof input.disable_model_invocation === "boolean"
101
+ ? input.disable_model_invocation
102
+ : undefined,
103
+ overwrite: input.overwrite === true,
104
+ addToIndex: input.add_to_index !== false,
105
+ includes,
106
+ });
107
+
108
+ if (!result.created) {
109
+ return { content: `Error: ${result.error}`, isError: true };
196
110
  }
197
- }
198
111
 
199
- export const scaffoldManagedSkillTool: Tool = new ScaffoldManagedSkillTool();
200
- registerTool(scaffoldManagedSkillTool);
112
+ return {
113
+ content: JSON.stringify({
114
+ created: true,
115
+ skill_id: skillId.trim(),
116
+ path: result.path,
117
+ index_updated: result.indexUpdated,
118
+ }),
119
+ isError: false,
120
+ };
121
+ }
@@ -28,13 +28,6 @@ export async function executeSubagentMessage(
28
28
 
29
29
  const result = await manager.sendMessage(subagentId, content);
30
30
 
31
- if (result === "queue_full") {
32
- return {
33
- content: `Subagent "${subagentId}" message queue is full. Please wait for current messages to be processed.`,
34
- isError: true,
35
- };
36
- }
37
-
38
31
  if (result === "empty") {
39
32
  return {
40
33
  content: "Message content is empty or whitespace-only.",
@@ -23,7 +23,7 @@ export async function executeSubagentSpawn(
23
23
  | undefined;
24
24
  if (!sendToClient) {
25
25
  return {
26
- content: "No IPC client connected — cannot spawn subagent.",
26
+ content: "No client connected — cannot spawn subagent.",
27
27
  isError: true,
28
28
  };
29
29
  }
@@ -8,7 +8,6 @@ import { executeSwarm } from "../../swarm/orchestrator.js";
8
8
  import { generatePlan } from "../../swarm/router-planner.js";
9
9
  import { getLogger } from "../../util/logger.js";
10
10
  import { truncate } from "../../util/truncate.js";
11
- import { registerTool } from "../registry.js";
12
11
  import type { Tool, ToolContext, ToolExecutionResult } from "../types.js";
13
12
 
14
13
  const log = getLogger("swarm-delegate");
@@ -205,8 +204,6 @@ export const swarmDelegateTool: Tool = {
205
204
  },
206
205
  };
207
206
 
208
- registerTool(swarmDelegateTool);
209
-
210
207
  /** Clear all active sessions — only for testing. */
211
208
  export function _resetSwarmActive(): void {
212
209
  activeSessions.clear();
@@ -109,39 +109,33 @@ export const setAvatarTool: Tool = {
109
109
  };
110
110
  } catch (error) {
111
111
  if (error instanceof ManagedAvatarError) {
112
+ log.error(
113
+ {
114
+ error: error.message,
115
+ statusCode: error.statusCode,
116
+ code: error.code,
117
+ },
118
+ "Avatar generation failed (managed)",
119
+ );
112
120
  if (error.statusCode === 429) {
113
- log.warn(
114
- { correlationId: error.correlationId },
115
- "Avatar generation rate limited",
116
- );
117
121
  return {
118
122
  content:
119
- "Avatar generation is rate limited. Please wait and try again.",
123
+ "Avatar generation is currently rate limited. Please try again in a moment.",
120
124
  isError: true,
121
125
  };
122
126
  }
123
- if (error.statusCode === 503) {
124
- log.warn(
125
- { correlationId: error.correlationId },
126
- "Avatar generation service unavailable",
127
- );
127
+ if (error.statusCode >= 500) {
128
128
  return {
129
- content: "Avatar generation service is temporarily unavailable.",
129
+ content:
130
+ "Avatar generation is temporarily unavailable. Please try again later.",
130
131
  isError: true,
131
132
  };
132
133
  }
133
- const detail =
134
- error.message || "Avatar generation failed. Please try again.";
135
- log.error(
136
- { error: detail, correlationId: error.correlationId },
137
- "Managed avatar generation failed",
138
- );
139
134
  return {
140
- content: `Avatar generation failed: ${detail}`,
135
+ content: `Avatar generation failed: ${error.message}`,
141
136
  isError: true,
142
137
  };
143
138
  }
144
-
145
139
  const message = mapGeminiError(error);
146
140
  log.error({ error: message }, "Avatar generation failed");
147
141
  return {
@@ -110,4 +110,5 @@ class RequestSystemPermissionTool implements Tool {
110
110
  }
111
111
  }
112
112
 
113
- registerTool(new RequestSystemPermissionTool());
113
+ export const requestSystemPermissionTool = new RequestSystemPermissionTool();
114
+ registerTool(requestSystemPermissionTool);
@@ -27,6 +27,7 @@ const SAFE_ENV_VARS = [
27
27
  "SSH_AGENT_PID",
28
28
  "GPG_TTY",
29
29
  "GNUPGHOME",
30
+ "VELLUM_DEV",
30
31
  ] as const;
31
32
 
32
33
  export function buildSanitizedEnv(): Record<string, string> {
@@ -6,24 +6,28 @@
6
6
  * so adding/removing tools only requires editing this manifest.
7
7
  */
8
8
 
9
- import { accountManageTool } from "./credentials/account-registry.js";
9
+ import { assetMaterializeTool } from "./assets/materialize.js";
10
+ import { assetSearchTool } from "./assets/search.js";
10
11
  import { credentialStoreTool } from "./credentials/vault.js";
11
- import {
12
- memoryDeleteTool,
13
- memoryRecallTool,
14
- memorySaveTool,
15
- memoryUpdateTool,
16
- } from "./memory/register.js";
12
+ import { fileEditTool } from "./filesystem/edit.js";
13
+ import { fileReadTool } from "./filesystem/read.js";
14
+ import { fileWriteTool } from "./filesystem/write.js";
15
+ import { memoryManageTool, memoryRecallTool } from "./memory/register.js";
16
+ import { webFetchTool } from "./network/web-fetch.js";
17
+ import { webSearchTool } from "./network/web-search.js";
17
18
  import type { LazyToolDescriptor } from "./registry.js";
18
- import { setAvatarTool } from "./system/avatar-generator.js";
19
- import { navigateSettingsTabTool } from "./system/navigate-settings.js";
20
- import { openSystemSettingsTool } from "./system/open-system-settings.js";
21
- import { voiceConfigUpdateTool } from "./system/voice-config.js";
19
+ import { skillExecuteTool } from "./skills/execute.js";
20
+ import { skillLoadTool } from "./skills/load.js";
21
+ import { requestSystemPermissionTool } from "./system/request-permission.js";
22
+ import { shellTool } from "./terminal/shell.js";
22
23
  import type { Tool } from "./types.js";
23
- import { screenWatchTool } from "./watch/screen-watch.js";
24
24
 
25
25
  // ── Eager side-effect modules ───────────────────────────────────────
26
- // These static imports trigger top-level `registerTool()` side effects.
26
+ // These static imports trigger top-level `registerTool()` side effects on
27
+ // first evaluation. The named imports above serve double duty: they give us
28
+ // module-level references to each tool instance so that initializeTools()
29
+ // can explicitly re-register them after a test registry reset (ESM caching
30
+ // prevents side effects from re-running on subsequent imports).
27
31
  //
28
32
  // IMPORTANT: These MUST be static imports (not dynamic `await import()`).
29
33
  // When the daemon is compiled with `bun --compile`, dynamic imports with
@@ -31,21 +35,6 @@ import { screenWatchTool } from "./watch/screen-watch.js";
31
35
  // filesystem root rather than the module's own directory, causing
32
36
  // "Cannot find module './filesystem/read.js'" crashes in production builds.
33
37
  // Static imports are resolved at bundle time and are always safe.
34
- import "./assets/materialize.js";
35
- import "./assets/search.js";
36
- import "./filesystem/edit.js";
37
- import "./filesystem/read.js";
38
- import "./filesystem/view-image.js";
39
- import "./filesystem/write.js";
40
- import "./network/web-fetch.js";
41
- import "./network/web-search.js";
42
- import "./skills/delete-managed.js";
43
- import "./skills/load.js";
44
- import "./skills/scaffold-managed.js";
45
- import "./swarm/delegate.js";
46
- import "./system/request-permission.js";
47
- import "./system/version.js";
48
- import "./terminal/shell.js";
49
38
 
50
39
  // loadEagerModules is a no-op now that all eager registrations happen via
51
40
  // static imports above. Kept for API compatibility with registry.ts callers.
@@ -64,39 +53,44 @@ export const eagerModuleToolNames: string[] = [
64
53
  "file_edit",
65
54
  "web_search",
66
55
  "web_fetch",
56
+ "skill_execute",
67
57
  "skill_load",
68
- "scaffold_managed_skill",
69
- "delete_managed_skill",
70
58
  "request_system_permission",
71
59
  "asset_search",
72
60
  "asset_materialize",
73
- "swarm_delegate",
74
- "view_image",
75
- "version",
76
61
  ];
77
62
 
78
63
  // ── Explicit tool instances ─────────────────────────────────────────
79
- // Tools exported as instances — registered by initializeTools() without
80
- // relying on import side effects.
64
+ // Tools registered by initializeTools() via explicit instance references.
65
+ // This includes both previously-eager tools (referenced here so they survive
66
+ // a test registry reset) and tools that have always been explicit.
81
67
 
82
68
  export const explicitTools: Tool[] = [
83
- memorySaveTool,
84
- memoryUpdateTool,
85
- memoryDeleteTool,
69
+ // Previously-eager tools — kept here so initializeTools() can re-register
70
+ // them after __resetRegistryForTesting() clears the registry (ESM caching
71
+ // prevents their side-effect registrations from re-running).
72
+ shellTool,
73
+ fileReadTool,
74
+ fileWriteTool,
75
+ fileEditTool,
76
+ webFetchTool,
77
+ webSearchTool,
78
+ skillExecuteTool,
79
+ skillLoadTool,
80
+ requestSystemPermissionTool,
81
+ assetSearchTool,
82
+ assetMaterializeTool,
83
+ // Always-explicit tools
84
+ memoryManageTool,
86
85
  memoryRecallTool,
87
86
  credentialStoreTool,
88
- accountManageTool,
89
- screenWatchTool,
90
- voiceConfigUpdateTool,
91
- setAvatarTool,
92
- openSystemSettingsTool,
93
- navigateSettingsTabTool,
94
87
  ];
95
88
 
96
89
  // ── Lazy tool descriptors ───────────────────────────────────────────
97
90
  // Tools that defer module loading until first invocation.
98
- // bash and swarm_delegate were previously lazy but are now eagerly registered
99
- // via side-effect imports above, preserving their full definitions (including
100
- // the `reason` field on bash) and fixing bun --compile module-not-found crashes.
91
+ // bash was previously lazy but is now eagerly registered via side-effect
92
+ // imports above, preserving its full definition (including the `reason` field)
93
+ // and fixing bun --compile module-not-found crashes.
94
+ // swarm_delegate has been moved to the orchestration bundled skill.
101
95
 
102
96
  export const lazyTools: LazyToolDescriptor[] = [];
@@ -136,9 +136,9 @@ export interface ToolContext {
136
136
  allowedTools?: string[];
137
137
  allowedDomains?: string[];
138
138
  }) => Promise<SecretPromptResult>;
139
- /** Optional callback to send a message to the connected IPC client (e.g. open_url). */
139
+ /** Optional callback to send a message to the connected client (e.g. open_url). */
140
140
  sendToClient?: (msg: { type: string; [key: string]: unknown }) => void;
141
- /** True when an interactive IPC client is connected (not just a no-op callback). */
141
+ /** True when an interactive client is connected (not just a no-op callback). */
142
142
  isInteractive?: boolean;
143
143
  /** Memory scope ID from the session's memory policy, so memory tools can target the correct scope. */
144
144
  memoryScopeId?: string;
@@ -169,6 +169,10 @@ export interface ToolContext {
169
169
  channelPermissionChannelId?: string;
170
170
  /** The tool_use block ID from the LLM response, used to correlate confirmation prompts with specific tool invocations. */
171
171
  toolUseId?: string;
172
+ /** Optional proxy for delegating host_bash execution to a connected client (managed/cloud-hosted mode). */
173
+ hostBashProxy?: import("../daemon/host-bash-proxy.js").HostBashProxy;
174
+ /** Optional proxy for delegating host_file_read/write/edit execution to a connected client (managed/cloud-hosted mode). */
175
+ hostFileProxy?: import("../daemon/host-file-proxy.js").HostFileProxy;
172
176
  }
173
177
 
174
178
  export interface DiffInfo {
@@ -218,63 +218,8 @@ export const uiDismissTool: Tool = {
218
218
  execute: proxyExecute,
219
219
  };
220
220
 
221
- // ---------------------------------------------------------------------------
222
- // request_file
223
- // ---------------------------------------------------------------------------
224
-
225
- export const requestFileTool: Tool = {
226
- name: "request_file",
227
- description:
228
- "Request a file or image from the user. Shows a file upload dialog where the user can drag-and-drop or browse for files. " +
229
- "Use this when you need the user to share a file (image, document, PDF, etc.) to continue the conversation. " +
230
- "The result contains the uploaded file data including base64 content and MIME type.",
231
- category: "ui-surface",
232
- defaultRiskLevel: RiskLevel.Low,
233
- executionMode: "proxy",
234
-
235
- getDefinition(): ToolDefinition {
236
- return {
237
- name: this.name,
238
- description: this.description,
239
- input_schema: {
240
- type: "object",
241
- properties: {
242
- prompt: {
243
- type: "string",
244
- description:
245
- 'What to ask the user for, e.g. "Please share the design file you\'d like me to review"',
246
- },
247
- accepted_types: {
248
- type: "array",
249
- items: { type: "string" },
250
- description:
251
- 'MIME type filters, e.g. ["image/*", "application/pdf"]. If omitted, all supported file types are accepted.',
252
- },
253
- max_files: {
254
- type: "number",
255
- description: "Maximum number of files to accept. Defaults to 1.",
256
- },
257
- reason: {
258
- type: "string",
259
- description:
260
- "Brief non-technical explanation of what you are requesting and why, shown to the user as a status update. Use simple language a non-technical person would understand.",
261
- },
262
- },
263
- required: ["prompt"],
264
- },
265
- };
266
- },
267
-
268
- execute: proxyExecute,
269
- };
270
-
271
- // ---------------------------------------------------------------------------
272
- // All tools exported as array for convenience
273
- // ---------------------------------------------------------------------------
274
-
275
221
  export const allUiSurfaceTools: Tool[] = [
276
222
  uiShowTool,
277
223
  uiUpdateTool,
278
224
  uiDismissTool,
279
- requestFileTool,
280
225
  ];
@@ -14,9 +14,6 @@ export enum ErrorCode {
14
14
  // Daemon errors
15
15
  DAEMON_ERROR = "DAEMON_ERROR",
16
16
 
17
- // IPC/socket errors
18
- IPC_ERROR = "IPC_ERROR",
19
-
20
17
  // Platform-specific errors (clipboard, unsupported OS features)
21
18
  PLATFORM_ERROR = "PLATFORM_ERROR",
22
19
 
@@ -151,17 +148,22 @@ export class ConfigError extends AssistantError {
151
148
  }
152
149
  }
153
150
 
154
- export class DaemonError extends AssistantError {
155
- constructor(message: string, options?: { cause?: unknown }) {
156
- super(message, ErrorCode.DAEMON_ERROR, options);
157
- this.name = "DaemonError";
151
+ export class ProviderNotConfiguredError extends ConfigError {
152
+ constructor(
153
+ public readonly requestedProvider: string,
154
+ public readonly registeredProviders: string[],
155
+ ) {
156
+ super(
157
+ `No providers available. Requested: "${requestedProvider}". Registered: ${registeredProviders.join(", ") || "none"}`,
158
+ );
159
+ this.name = "ProviderNotConfiguredError";
158
160
  }
159
161
  }
160
162
 
161
- export class IpcError extends AssistantError {
163
+ export class DaemonError extends AssistantError {
162
164
  constructor(message: string, options?: { cause?: unknown }) {
163
- super(message, ErrorCode.IPC_ERROR, options);
164
- this.name = "IpcError";
165
+ super(message, ErrorCode.DAEMON_ERROR, options);
166
+ this.name = "DaemonError";
165
167
  }
166
168
  }
167
169