@vellumai/assistant 0.4.44 → 0.4.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (681) hide show
  1. package/.prettierignore +4 -0
  2. package/ARCHITECTURE.md +34 -31
  3. package/README.md +4 -4
  4. package/bun.lock +10 -35
  5. package/docs/architecture/integrations.md +102 -197
  6. package/docs/architecture/keychain-broker.md +1 -1
  7. package/docs/architecture/memory.md +2 -2
  8. package/docs/architecture/scheduling.md +1 -1
  9. package/docs/architecture/security.md +11 -11
  10. package/docs/error-handling.md +1 -1
  11. package/docs/trusted-contact-access.md +3 -3
  12. package/drizzle/meta/0000_snapshot.json +34 -100
  13. package/drizzle/meta/_journal.json +1 -1
  14. package/drizzle.config.ts +4 -4
  15. package/package.json +3 -2
  16. package/scripts/capture-x-graphql.ts +237 -141
  17. package/scripts/generate-bundled-tool-registry.ts +223 -0
  18. package/src/__tests__/access-request-decision.test.ts +0 -1
  19. package/src/__tests__/actor-token-service.test.ts +23 -24
  20. package/src/__tests__/agent-loop.test.ts +0 -131
  21. package/src/__tests__/always-loaded-tools-guard.test.ts +71 -0
  22. package/src/__tests__/amazon-cdp-integration.test.ts +11 -9
  23. package/src/__tests__/approval-primitive.test.ts +0 -1
  24. package/src/__tests__/approval-routes-http.test.ts +11 -1
  25. package/src/__tests__/asset-materialize-tool.test.ts +0 -1
  26. package/src/__tests__/asset-search-tool.test.ts +0 -1
  27. package/src/__tests__/assistant-attachment-directive.test.ts +1 -1
  28. package/src/__tests__/assistant-events-sse-hardening.test.ts +0 -1
  29. package/src/__tests__/assistant-feature-flag-guardrails.test.ts +0 -2
  30. package/src/__tests__/assistant-feature-flags-integration.test.ts +70 -18
  31. package/src/__tests__/assistant-id-boundary-guard.test.ts +6 -6
  32. package/src/__tests__/attachments-store.test.ts +0 -1
  33. package/src/__tests__/avatar-e2e.test.ts +74 -115
  34. package/src/__tests__/avatar-router.test.ts +25 -62
  35. package/src/__tests__/browser-manager.test.ts +24 -0
  36. package/src/__tests__/browser-skill-baseline-tool-payload.test.ts +4 -3
  37. package/src/__tests__/browser-skill-endstate.test.ts +8 -11
  38. package/src/__tests__/btw-routes.test.ts +326 -0
  39. package/src/__tests__/bundled-skill-retrieval-guard.test.ts +23 -9
  40. package/src/__tests__/call-controller.test.ts +0 -1
  41. package/src/__tests__/call-conversation-messages.test.ts +0 -1
  42. package/src/__tests__/call-domain.test.ts +0 -1
  43. package/src/__tests__/call-pointer-messages.test.ts +0 -1
  44. package/src/__tests__/call-recovery.test.ts +0 -1
  45. package/src/__tests__/call-routes-http.test.ts +0 -1
  46. package/src/__tests__/call-store.test.ts +0 -1
  47. package/src/__tests__/canonical-guardian-store.test.ts +0 -1
  48. package/src/__tests__/channel-approval-routes.test.ts +1 -1
  49. package/src/__tests__/channel-approvals.test.ts +1 -1
  50. package/src/__tests__/channel-delivery-store.test.ts +0 -1
  51. package/src/__tests__/channel-guardian.test.ts +5 -7
  52. package/src/__tests__/channel-retry-sweep.test.ts +0 -1
  53. package/src/__tests__/checker.test.ts +4 -11
  54. package/src/__tests__/compaction.benchmark.test.ts +16 -14
  55. package/src/__tests__/computer-use-session-lifecycle.test.ts +10 -11
  56. package/src/__tests__/computer-use-session-working-dir.test.ts +2 -6
  57. package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +2 -5
  58. package/src/__tests__/computer-use-tools.test.ts +35 -31
  59. package/src/__tests__/config-schema.test.ts +11 -15
  60. package/src/__tests__/config-watcher.test.ts +0 -1
  61. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
  62. package/src/__tests__/conflict-store.test.ts +0 -1
  63. package/src/__tests__/connection-policy.test.ts +4 -7
  64. package/src/__tests__/contacts-tools.test.ts +0 -1
  65. package/src/__tests__/context-memory-e2e.test.ts +2 -4
  66. package/src/__tests__/context-overflow-reducer.test.ts +2 -4
  67. package/src/__tests__/context-window-manager.test.ts +147 -60
  68. package/src/__tests__/contradiction-checker.test.ts +0 -1
  69. package/src/__tests__/conversation-attention-store.test.ts +0 -1
  70. package/src/__tests__/conversation-attention-telegram.test.ts +1 -1
  71. package/src/__tests__/conversation-pairing.test.ts +2 -2
  72. package/src/__tests__/conversation-routes-guardian-reply.test.ts +25 -1
  73. package/src/__tests__/conversation-routes-slash-commands.test.ts +381 -0
  74. package/src/__tests__/conversation-store.test.ts +0 -1
  75. package/src/__tests__/conversation-unread-route.test.ts +1 -2
  76. package/src/__tests__/credential-security-invariants.test.ts +7 -8
  77. package/src/__tests__/cross-provider-web-search.test.ts +353 -0
  78. package/src/__tests__/daemon-assistant-events.test.ts +6 -7
  79. package/src/__tests__/db-schedule-syntax-migration.test.ts +15 -3
  80. package/src/__tests__/delete-managed-skill-tool.test.ts +5 -9
  81. package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -1
  82. package/src/__tests__/diagnostics-export.test.ts +189 -0
  83. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
  84. package/src/__tests__/emit-signal-routing-intent.test.ts +3 -3
  85. package/src/__tests__/entity-extractor.test.ts +0 -1
  86. package/src/__tests__/entity-search.test.ts +0 -1
  87. package/src/__tests__/ephemeral-permissions.test.ts +2 -4
  88. package/src/__tests__/file-read-tool.test.ts +86 -0
  89. package/src/__tests__/followup-tools.test.ts +0 -1
  90. package/src/__tests__/frontmatter.test.ts +77 -34
  91. package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
  92. package/src/__tests__/gateway-only-guard.test.ts +1 -1
  93. package/src/__tests__/guardian-action-conversation-turn.test.ts +0 -1
  94. package/src/__tests__/guardian-action-followup-executor.test.ts +0 -1
  95. package/src/__tests__/guardian-action-followup-store.test.ts +0 -1
  96. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +0 -1
  97. package/src/__tests__/guardian-action-late-reply.test.ts +0 -1
  98. package/src/__tests__/guardian-action-store.test.ts +0 -1
  99. package/src/__tests__/guardian-action-sweep.test.ts +0 -1
  100. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +0 -1
  101. package/src/__tests__/guardian-dispatch.test.ts +1 -2
  102. package/src/__tests__/guardian-grant-minting.test.ts +1 -1
  103. package/src/__tests__/guardian-outbound-http.test.ts +0 -1
  104. package/src/__tests__/guardian-principal-id-roundtrip.test.ts +0 -1
  105. package/src/__tests__/guardian-routing-invariants.test.ts +1 -1
  106. package/src/__tests__/guardian-routing-state.test.ts +0 -1
  107. package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -1
  108. package/src/__tests__/guardian-verify-setup-skill-regression.test.ts +3 -5
  109. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +28 -426
  110. package/src/__tests__/host-bash-proxy.test.ts +335 -0
  111. package/src/__tests__/host-file-proxy.test.ts +374 -0
  112. package/src/__tests__/host-shell-tool.test.ts +147 -1
  113. package/src/__tests__/http-user-message-parity.test.ts +361 -0
  114. package/src/__tests__/inbound-invite-redemption.test.ts +0 -1
  115. package/src/__tests__/integration-status.test.ts +3 -8
  116. package/src/__tests__/intent-routing.test.ts +7 -46
  117. package/src/__tests__/invite-redemption-service.test.ts +0 -1
  118. package/src/__tests__/invite-routes-http.test.ts +0 -1
  119. package/src/__tests__/llm-usage-store.test.ts +0 -1
  120. package/src/__tests__/managed-avatar-client.test.ts +101 -55
  121. package/src/__tests__/managed-skill-lifecycle.test.ts +9 -18
  122. package/src/__tests__/managed-store.test.ts +94 -21
  123. package/src/__tests__/media-reuse-story.e2e.test.ts +0 -1
  124. package/src/__tests__/memory-context-benchmark.benchmark.test.ts +2 -4
  125. package/src/__tests__/memory-lifecycle-e2e.test.ts +0 -1
  126. package/src/__tests__/memory-recall-quality.test.ts +0 -1
  127. package/src/__tests__/memory-regressions.experimental.test.ts +0 -1
  128. package/src/__tests__/memory-regressions.test.ts +0 -1
  129. package/src/__tests__/memory-retrieval.benchmark.test.ts +0 -1
  130. package/src/__tests__/memory-upsert-concurrency.test.ts +0 -1
  131. package/src/__tests__/messaging-send-tool.test.ts +35 -0
  132. package/src/__tests__/messaging-skill-split.test.ts +138 -0
  133. package/src/__tests__/migration-cross-version-compatibility.test.ts +0 -1
  134. package/src/__tests__/migration-export-http.test.ts +2 -3
  135. package/src/__tests__/migration-import-commit-http.test.ts +1 -2
  136. package/src/__tests__/migration-import-preflight-http.test.ts +1 -2
  137. package/src/__tests__/migration-validate-http.test.ts +1 -2
  138. package/src/__tests__/native-web-search.test.ts +475 -0
  139. package/src/__tests__/navigate-settings-tab.test.ts +84 -0
  140. package/src/__tests__/non-member-access-request.test.ts +0 -1
  141. package/src/__tests__/notification-broadcaster.test.ts +15 -15
  142. package/src/__tests__/notification-decision-strategy.test.ts +6 -6
  143. package/src/__tests__/notification-deep-link.test.ts +7 -7
  144. package/src/__tests__/notification-guardian-path.test.ts +2 -3
  145. package/src/__tests__/notification-telegram-adapter.test.ts +1 -1
  146. package/src/__tests__/notification-thread-candidates.test.ts +4 -4
  147. package/src/__tests__/onboarding-starter-tasks.test.ts +0 -1
  148. package/src/__tests__/playbook-execution.test.ts +0 -1
  149. package/src/__tests__/playbook-tools.test.ts +0 -1
  150. package/src/__tests__/profile-compiler.test.ts +0 -1
  151. package/src/__tests__/provider-managed-proxy-integration.test.ts +25 -0
  152. package/src/__tests__/qdrant-collection-migration.test.ts +223 -0
  153. package/src/__tests__/recording-handler.test.ts +30 -94
  154. package/src/__tests__/registry.test.ts +28 -35
  155. package/src/__tests__/relay-server.test.ts +0 -1
  156. package/src/__tests__/ride-shotgun-handler.test.ts +4 -20
  157. package/src/__tests__/runtime-attachment-metadata.test.ts +0 -1
  158. package/src/__tests__/runtime-events-sse-parity.test.ts +3 -4
  159. package/src/__tests__/runtime-events-sse.test.ts +0 -1
  160. package/src/__tests__/sandbox-diagnostics.test.ts +0 -1
  161. package/src/__tests__/scaffold-managed-skill-tool.test.ts +30 -28
  162. package/src/__tests__/schedule-store.test.ts +441 -1
  163. package/src/__tests__/schedule-tools.test.ts +468 -7
  164. package/src/__tests__/scheduler-recurrence.test.ts +196 -23
  165. package/src/__tests__/scoped-approval-grants.test.ts +0 -1
  166. package/src/__tests__/scoped-grant-security-matrix.test.ts +0 -1
  167. package/src/__tests__/secret-prompt-log-hygiene.test.ts +6 -3
  168. package/src/__tests__/secret-response-routing.test.ts +4 -1
  169. package/src/__tests__/send-endpoint-busy.test.ts +14 -2
  170. package/src/__tests__/send-notification-tool.test.ts +0 -7
  171. package/src/__tests__/sequence-store.test.ts +0 -1
  172. package/src/__tests__/server-history-render.test.ts +1 -2
  173. package/src/__tests__/session-abort-tool-results.test.ts +0 -1
  174. package/src/__tests__/session-agent-loop.test.ts +46 -6
  175. package/src/__tests__/session-confirmation-signals.test.ts +0 -1
  176. package/src/__tests__/session-conflict-gate.test.ts +2 -6
  177. package/src/__tests__/session-error.test.ts +5 -14
  178. package/src/__tests__/session-init.benchmark.test.ts +3 -5
  179. package/src/__tests__/session-load-history-repair.test.ts +0 -1
  180. package/src/__tests__/session-media-retry.test.ts +12 -74
  181. package/src/__tests__/session-pre-run-repair.test.ts +0 -1
  182. package/src/__tests__/session-profile-injection.test.ts +2 -6
  183. package/src/__tests__/session-provider-retry-repair.test.ts +2 -6
  184. package/src/__tests__/session-queue.test.ts +94 -139
  185. package/src/__tests__/session-skill-tools.test.ts +115 -115
  186. package/src/__tests__/session-slash-known.test.ts +0 -1
  187. package/src/__tests__/session-slash-queue.test.ts +0 -1
  188. package/src/__tests__/session-slash-unknown.test.ts +0 -1
  189. package/src/__tests__/session-surfaces-task-progress.test.ts +34 -0
  190. package/src/__tests__/session-usage.test.ts +0 -1
  191. package/src/__tests__/session-workspace-cache-state.test.ts +2 -6
  192. package/src/__tests__/session-workspace-injection.test.ts +2 -6
  193. package/src/__tests__/session-workspace-tool-tracking.test.ts +2 -6
  194. package/src/__tests__/skill-feature-flags-integration.test.ts +180 -184
  195. package/src/__tests__/skill-feature-flags.test.ts +125 -18
  196. package/src/__tests__/skill-load-feature-flag.test.ts +1 -2
  197. package/src/__tests__/skill-load-tool.test.ts +194 -2
  198. package/src/__tests__/skill-projection-feature-flag.test.ts +27 -16
  199. package/src/__tests__/skill-projection.benchmark.test.ts +15 -14
  200. package/src/__tests__/skills.test.ts +14 -53
  201. package/src/__tests__/slack-channel-config.test.ts +0 -1
  202. package/src/__tests__/slack-inbound-verification.test.ts +0 -1
  203. package/src/__tests__/slack-skill.test.ts +1 -1
  204. package/src/__tests__/subagent-tools.test.ts +2 -2
  205. package/src/__tests__/system-prompt.test.ts +4 -3
  206. package/src/__tests__/task-compiler.test.ts +0 -1
  207. package/src/__tests__/task-management-tools.test.ts +0 -1
  208. package/src/__tests__/task-memory-cleanup.test.ts +0 -1
  209. package/src/__tests__/task-runner.test.ts +0 -1
  210. package/src/__tests__/task-scheduler.test.ts +0 -1
  211. package/src/__tests__/terminal-tools.test.ts +0 -1
  212. package/src/__tests__/test-support/computer-use-skill-harness.ts +2 -4
  213. package/src/__tests__/thread-seed-composer.test.ts +5 -5
  214. package/src/__tests__/tool-approval-handler.test.ts +0 -1
  215. package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -1
  216. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +0 -1
  217. package/src/__tests__/tool-executor.test.ts +8 -86
  218. package/src/__tests__/tool-grant-request-escalation.test.ts +0 -1
  219. package/src/__tests__/tool-notification-listener.test.ts +1 -1
  220. package/src/__tests__/tool-preview-lifecycle.test.ts +416 -0
  221. package/src/__tests__/trust-store.test.ts +80 -4
  222. package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
  223. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +0 -1
  224. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +0 -1
  225. package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
  226. package/src/__tests__/trusted-contact-verification.test.ts +0 -1
  227. package/src/__tests__/twilio-provider.test.ts +0 -1
  228. package/src/__tests__/twilio-routes.test.ts +0 -1
  229. package/src/__tests__/{request-file-tool.test.ts → ui-file-upload-surface.test.ts} +11 -72
  230. package/src/__tests__/update-bulletin.test.ts +0 -1
  231. package/src/__tests__/usage-cache-backfill-migration.test.ts +0 -1
  232. package/src/__tests__/usage-routes.test.ts +0 -1
  233. package/src/__tests__/verification-control-plane-policy.test.ts +4 -4
  234. package/src/__tests__/voice-invite-redemption.test.ts +0 -1
  235. package/src/__tests__/voice-scoped-grant-consumer.test.ts +0 -1
  236. package/src/__tests__/voice-session-bridge.test.ts +9 -1
  237. package/src/__tests__/web-fetch.test.ts +57 -0
  238. package/src/__tests__/workspace-git-service.test.ts +5 -14
  239. package/src/__tests__/workspace-policy.test.ts +0 -1
  240. package/src/agent/loop.ts +22 -34
  241. package/src/bundler/bundle-signer.ts +4 -4
  242. package/src/calls/call-controller.ts +1 -1
  243. package/src/calls/relay-server.ts +1 -1
  244. package/src/calls/twilio-rest.ts +1 -1
  245. package/src/calls/voice-session-bridge.ts +3 -1
  246. package/src/cli/__tests__/notifications.test.ts +3 -4
  247. package/src/cli/commands/map.ts +2 -6
  248. package/src/cli/commands/mcp.ts +73 -15
  249. package/src/cli/commands/notifications.ts +4 -4
  250. package/src/cli/commands/sessions.ts +9 -1
  251. package/src/cli/commands/skills.ts +6 -10
  252. package/src/cli/http-client.ts +2 -3
  253. package/src/cli/main-screen.tsx +10 -10
  254. package/src/cli/program.ts +0 -4
  255. package/src/cli/reference.ts +0 -2
  256. package/src/cli.ts +15 -9
  257. package/src/config/__tests__/bundled-tool-registry-guard.test.ts +120 -0
  258. package/src/config/bundled-skills/_shared/CLI_RETRIEVAL_PATTERN.md +11 -0
  259. package/src/config/bundled-skills/app-builder/SKILL.md +6 -1
  260. package/src/config/bundled-skills/browser/SKILL.md +6 -1
  261. package/src/config/bundled-skills/chatgpt-import/SKILL.md +5 -1
  262. package/src/config/bundled-skills/claude-code/SKILL.md +5 -1
  263. package/src/config/bundled-skills/computer-use/SKILL.md +6 -1
  264. package/src/config/bundled-skills/computer-use/TOOLS.json +6 -69
  265. package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +10 -1
  266. package/src/config/bundled-skills/contacts/SKILL.md +10 -1
  267. package/src/config/bundled-skills/contacts/TOOLS.json +35 -0
  268. package/src/config/bundled-skills/{messaging → contacts}/tools/google-contacts.ts +9 -2
  269. package/src/config/bundled-skills/document/SKILL.md +4 -1
  270. package/src/config/bundled-skills/doordash/SKILL.md +8 -1
  271. package/src/config/bundled-skills/doordash/lib/shared/platform.ts +4 -1
  272. package/src/config/bundled-skills/followups/SKILL.md +4 -1
  273. package/src/config/bundled-skills/gmail/SKILL.md +180 -0
  274. package/src/config/bundled-skills/gmail/TOOLS.json +506 -0
  275. package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +149 -0
  276. package/src/config/bundled-skills/gmail/tools/gmail-attachments.ts +110 -0
  277. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-draft.ts +1 -1
  278. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-filters.ts +1 -1
  279. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-follow-up.ts +1 -1
  280. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-forward.ts +1 -1
  281. package/src/config/bundled-skills/gmail/tools/gmail-label.ts +50 -0
  282. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-outreach-scan.ts +8 -90
  283. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-send-draft.ts +1 -1
  284. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-sender-digest.ts +2 -2
  285. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-trash.ts +1 -1
  286. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-unsubscribe.ts +1 -1
  287. package/src/config/bundled-skills/{messaging → gmail}/tools/gmail-vacation.ts +1 -1
  288. package/src/config/bundled-skills/gmail/tools/shared.ts +47 -0
  289. package/src/config/bundled-skills/google-calendar/SKILL.md +5 -1
  290. package/src/config/bundled-skills/image-studio/SKILL.md +5 -1
  291. package/src/config/bundled-skills/knowledge-graph/SKILL.md +4 -1
  292. package/src/config/bundled-skills/media-processing/SKILL.md +7 -13
  293. package/src/config/bundled-skills/media-processing/TOOLS.json +0 -22
  294. package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +12 -1
  295. package/src/config/bundled-skills/messaging/SKILL.md +23 -139
  296. package/src/config/bundled-skills/messaging/TOOLS.json +33 -1215
  297. package/src/config/bundled-skills/messaging/tools/gmail-mime-helpers.ts +42 -0
  298. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +165 -2
  299. package/src/config/bundled-skills/messaging/tools/messaging-sender-digest.ts +1 -13
  300. package/src/config/bundled-skills/messaging/tools/shared.ts +81 -34
  301. package/src/config/bundled-skills/notifications/SKILL.md +5 -1
  302. package/src/config/bundled-skills/orchestration/SKILL.md +30 -0
  303. package/src/config/bundled-skills/orchestration/TOOLS.json +35 -0
  304. package/src/config/bundled-skills/{reminder/tools/reminder-create.ts → orchestration/tools/swarm-delegate.ts} +3 -3
  305. package/src/config/bundled-skills/phone-calls/SKILL.md +9 -1
  306. package/src/config/bundled-skills/playbooks/SKILL.md +4 -1
  307. package/src/config/bundled-skills/schedule/SKILL.md +70 -9
  308. package/src/config/bundled-skills/schedule/TOOLS.json +38 -6
  309. package/src/config/bundled-skills/screen-watch/SKILL.md +28 -0
  310. package/src/config/bundled-skills/screen-watch/TOOLS.json +35 -0
  311. package/src/config/bundled-skills/{reminder/tools/reminder-cancel.ts → screen-watch/tools/start-screen-watch.ts} +3 -3
  312. package/src/config/bundled-skills/sequences/SKILL.md +47 -0
  313. package/src/config/bundled-skills/sequences/TOOLS.json +340 -0
  314. package/src/config/bundled-skills/sequences/tools/sequence-update.ts +128 -0
  315. package/src/config/bundled-skills/sequences/tools/shared.ts +9 -0
  316. package/src/config/bundled-skills/settings/SKILL.md +12 -0
  317. package/src/config/bundled-skills/settings/TOOLS.json +112 -0
  318. package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +43 -0
  319. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +52 -0
  320. package/src/config/bundled-skills/{computer-use/tools/computer-use-right-click.ts → settings/tools/set-avatar.ts} +2 -6
  321. package/src/{tools/system/voice-config.ts → config/bundled-skills/settings/tools/voice-config-update.ts} +59 -96
  322. package/src/config/bundled-skills/skill-management/SKILL.md +18 -0
  323. package/src/config/bundled-skills/skill-management/TOOLS.json +90 -0
  324. package/src/config/bundled-skills/{computer-use/tools/computer-use-double-click.ts → skill-management/tools/delete-managed.ts} +2 -6
  325. package/src/config/bundled-skills/skill-management/tools/scaffold-managed.ts +12 -0
  326. package/src/config/bundled-skills/slack/SKILL.md +5 -1
  327. package/src/config/bundled-skills/subagent/SKILL.md +4 -1
  328. package/src/config/bundled-skills/tasks/SKILL.md +5 -2
  329. package/src/config/bundled-skills/transcribe/SKILL.md +4 -1
  330. package/src/config/bundled-skills/watcher/SKILL.md +4 -1
  331. package/src/config/bundled-tool-registry.ts +118 -107
  332. package/src/config/env.ts +5 -2
  333. package/src/config/feature-flag-registry.json +25 -9
  334. package/src/config/loader.ts +10 -2
  335. package/src/config/schema.ts +19 -16
  336. package/src/config/schemas/inference.ts +12 -22
  337. package/src/config/schemas/memory-storage.ts +19 -1
  338. package/src/config/schemas/platform.ts +0 -16
  339. package/src/config/skill-state.ts +11 -8
  340. package/src/config/skills.ts +83 -32
  341. package/src/context/token-estimator.ts +11 -0
  342. package/src/context/window-manager.ts +180 -151
  343. package/src/daemon/computer-use-session.ts +11 -43
  344. package/src/daemon/daemon-control.ts +4 -1
  345. package/src/daemon/handlers/config-channels.ts +5 -9
  346. package/src/daemon/handlers/config-ingress.ts +0 -4
  347. package/src/daemon/handlers/config-model.ts +7 -13
  348. package/src/daemon/handlers/config-telegram.ts +4 -8
  349. package/src/daemon/handlers/config-voice.ts +2 -5
  350. package/src/daemon/handlers/dictation.ts +2 -12
  351. package/src/daemon/handlers/identity.ts +0 -105
  352. package/src/daemon/handlers/recording.ts +3 -23
  353. package/src/daemon/handlers/session-history.ts +1 -1
  354. package/src/daemon/handlers/sessions.ts +53 -72
  355. package/src/daemon/handlers/shared.ts +7 -28
  356. package/src/daemon/handlers/skills.ts +31 -27
  357. package/src/daemon/host-bash-proxy.ts +148 -0
  358. package/src/daemon/host-file-proxy.ts +135 -0
  359. package/src/daemon/lifecycle.ts +49 -24
  360. package/src/daemon/mcp-reload-service.ts +123 -0
  361. package/src/daemon/message-protocol.ts +6 -0
  362. package/src/daemon/message-types/browser.ts +1 -1
  363. package/src/daemon/message-types/computer-use.ts +1 -4
  364. package/src/daemon/message-types/guardian-actions.ts +1 -1
  365. package/src/daemon/message-types/host-bash.ts +18 -0
  366. package/src/daemon/message-types/host-file.ts +44 -0
  367. package/src/daemon/message-types/integrations.ts +1 -67
  368. package/src/daemon/message-types/messages.ts +15 -0
  369. package/src/daemon/message-types/schedules.ts +11 -27
  370. package/src/daemon/message-types/sessions.ts +2 -1
  371. package/src/daemon/message-types/settings.ts +1 -1
  372. package/src/daemon/message-types/shared.ts +1 -1
  373. package/src/daemon/ride-shotgun-handler.ts +2 -42
  374. package/src/daemon/server.ts +43 -10
  375. package/src/daemon/session-agent-loop-handlers.ts +48 -7
  376. package/src/daemon/session-agent-loop.ts +97 -66
  377. package/src/daemon/session-attachments.ts +1 -1
  378. package/src/daemon/session-error.ts +17 -16
  379. package/src/daemon/session-lifecycle.ts +20 -1
  380. package/src/daemon/session-media-retry.ts +1 -15
  381. package/src/daemon/session-messaging.ts +14 -6
  382. package/src/daemon/session-process.ts +36 -7
  383. package/src/daemon/session-queue-manager.ts +62 -103
  384. package/src/daemon/session-runtime-assembly.ts +27 -0
  385. package/src/daemon/session-skill-tools.ts +12 -11
  386. package/src/daemon/session-slash.ts +7 -0
  387. package/src/daemon/session-surfaces.ts +19 -97
  388. package/src/daemon/session-tool-setup.ts +146 -6
  389. package/src/daemon/session.ts +77 -13
  390. package/src/errors.ts +0 -2
  391. package/src/export/formatter.ts +6 -0
  392. package/src/mcp/mcp-oauth-provider.ts +1 -3
  393. package/src/media/avatar-router.ts +20 -28
  394. package/src/media/avatar-types.ts +7 -14
  395. package/src/media/managed-avatar-client.ts +70 -34
  396. package/src/memory/conversation-title-service.ts +1 -2
  397. package/src/memory/db-init.ts +16 -0
  398. package/src/memory/embedding-backend.ts +129 -27
  399. package/src/memory/embedding-gemini.test.ts +256 -0
  400. package/src/memory/embedding-gemini.ts +47 -13
  401. package/src/memory/embedding-local.ts +14 -2
  402. package/src/memory/embedding-ollama.ts +15 -2
  403. package/src/memory/embedding-openai.ts +15 -2
  404. package/src/memory/embedding-types.test.ts +116 -0
  405. package/src/memory/embedding-types.ts +61 -0
  406. package/src/memory/fingerprint.ts +1 -1
  407. package/src/memory/indexer.ts +25 -1
  408. package/src/memory/job-handlers/embedding.test.ts +258 -0
  409. package/src/memory/job-handlers/embedding.ts +81 -1
  410. package/src/memory/job-handlers/index-maintenance.ts +35 -1
  411. package/src/memory/job-handlers/media-processing.ts +11 -1
  412. package/src/memory/job-utils.ts +21 -6
  413. package/src/memory/jobs-store.ts +5 -1
  414. package/src/memory/jobs-worker.ts +8 -0
  415. package/src/memory/message-content.ts +66 -0
  416. package/src/memory/migrations/100-core-tables.ts +1 -31
  417. package/src/memory/migrations/104-core-indexes.ts +0 -11
  418. package/src/memory/migrations/145-drop-accounts-table.ts +19 -0
  419. package/src/memory/migrations/146-schedule-oneshot-routing.ts +94 -0
  420. package/src/memory/migrations/147-migrate-reminders-to-schedules.ts +129 -0
  421. package/src/memory/migrations/148-drop-reminders-table.ts +18 -0
  422. package/src/memory/migrations/index.ts +4 -0
  423. package/src/memory/migrations/registry.ts +19 -0
  424. package/src/memory/qdrant-client.ts +158 -43
  425. package/src/memory/retriever.test.ts +0 -1
  426. package/src/memory/retriever.ts +12 -2
  427. package/src/memory/schema/infrastructure.ts +5 -29
  428. package/src/memory/search/formatting.ts +34 -9
  429. package/src/memory/search/semantic.ts +57 -2
  430. package/src/memory/search/types.ts +2 -1
  431. package/src/notifications/AGENTS.md +2 -2
  432. package/src/notifications/README.md +59 -58
  433. package/src/notifications/adapters/macos.ts +1 -1
  434. package/src/notifications/broadcaster.ts +5 -5
  435. package/src/notifications/copy-composer.ts +1 -1
  436. package/src/notifications/decision-engine.ts +2 -2
  437. package/src/notifications/destination-resolver.ts +2 -2
  438. package/src/notifications/emit-signal.ts +8 -8
  439. package/src/notifications/signal.ts +1 -1
  440. package/src/notifications/thread-seed-composer.ts +1 -1
  441. package/src/oauth/connect-orchestrator.ts +1 -1
  442. package/src/oauth/token-persistence.ts +1 -1
  443. package/src/permissions/checker.ts +12 -1
  444. package/src/permissions/defaults.ts +10 -14
  445. package/src/permissions/trust-store.ts +37 -0
  446. package/src/permissions/workspace-policy.ts +0 -1
  447. package/src/prompts/__tests__/build-cli-reference-section.test.ts +11 -0
  448. package/src/prompts/computer-use-prompt.ts +1 -1
  449. package/src/prompts/system-prompt.ts +29 -30
  450. package/src/prompts/templates/SOUL.md +1 -2
  451. package/src/prompts/templates/UPDATES.md +16 -7
  452. package/src/providers/anthropic/client.ts +87 -33
  453. package/src/providers/gemini/client.ts +6 -0
  454. package/src/providers/managed-proxy/constants.ts +5 -0
  455. package/src/providers/openai/client.ts +15 -0
  456. package/src/providers/registry.ts +2 -2
  457. package/src/providers/types.ts +24 -2
  458. package/src/runtime/AGENTS.md +18 -0
  459. package/src/runtime/assistant-event-hub.ts +2 -3
  460. package/src/runtime/assistant-event.ts +4 -4
  461. package/src/runtime/auth/__tests__/context.test.ts +5 -5
  462. package/src/runtime/auth/__tests__/credential-service.test.ts +0 -1
  463. package/src/runtime/auth/__tests__/guard-tests.test.ts +2 -2
  464. package/src/runtime/auth/__tests__/{ipc-auth-context.test.ts → local-auth-context.test.ts} +21 -21
  465. package/src/runtime/auth/__tests__/route-policy.test.ts +2 -2
  466. package/src/runtime/auth/__tests__/scopes.test.ts +7 -7
  467. package/src/runtime/auth/__tests__/subject.test.ts +8 -8
  468. package/src/runtime/auth/__tests__/token-service.test.ts +0 -1
  469. package/src/runtime/auth/route-policy.ts +8 -4
  470. package/src/runtime/auth/scopes.ts +1 -1
  471. package/src/runtime/auth/subject.ts +4 -4
  472. package/src/runtime/auth/token-service.ts +0 -23
  473. package/src/runtime/auth/types.ts +3 -3
  474. package/src/runtime/guardian-action-followup-executor.ts +1 -1
  475. package/src/runtime/guardian-action-grant-minter.ts +1 -1
  476. package/src/runtime/guardian-action-service.ts +3 -3
  477. package/src/runtime/http-server.ts +15 -2
  478. package/src/runtime/invite-service.ts +3 -3
  479. package/src/runtime/local-actor-identity.ts +17 -22
  480. package/src/runtime/pending-interactions.ts +21 -9
  481. package/src/runtime/routes/app-management-routes.ts +2 -3
  482. package/src/runtime/routes/approval-routes.ts +1 -3
  483. package/src/runtime/routes/btw-routes.ts +155 -0
  484. package/src/runtime/routes/computer-use-routes.ts +77 -31
  485. package/src/runtime/routes/conversation-routes.ts +230 -46
  486. package/src/runtime/routes/diagnostics-routes.ts +63 -29
  487. package/src/runtime/routes/documents-routes.ts +2 -2
  488. package/src/runtime/routes/global-search-routes.ts +1 -1
  489. package/src/runtime/routes/host-bash-routes.ts +83 -0
  490. package/src/runtime/routes/host-file-routes.ts +79 -0
  491. package/src/runtime/routes/integrations/slack/share.ts +1 -1
  492. package/src/runtime/routes/log-export-routes.ts +120 -0
  493. package/src/runtime/routes/mcp-routes.ts +20 -0
  494. package/src/runtime/routes/migration-routes.ts +3 -3
  495. package/src/runtime/routes/pairing-routes.ts +1 -1
  496. package/src/runtime/routes/recording-routes.ts +6 -4
  497. package/src/runtime/routes/schedule-routes.ts +31 -5
  498. package/src/runtime/routes/session-management-routes.ts +2 -6
  499. package/src/runtime/routes/session-query-routes.ts +18 -15
  500. package/src/runtime/routes/settings-routes.ts +7 -261
  501. package/src/runtime/routes/skills-routes.ts +7 -6
  502. package/src/runtime/routes/subagents-routes.ts +4 -10
  503. package/src/runtime/routes/surface-action-routes.ts +3 -14
  504. package/src/runtime/routes/surface-content-routes.ts +22 -5
  505. package/src/runtime/routes/work-items-routes.ts +21 -25
  506. package/src/runtime/routes/workspace-routes.test.ts +3 -3
  507. package/src/runtime/routes/workspace-utils.ts +1 -1
  508. package/src/runtime/telegram-streaming-delivery.ts +3 -0
  509. package/src/runtime/verification-outbound-actions.ts +2 -2
  510. package/src/schedule/integration-status.ts +0 -6
  511. package/src/schedule/schedule-store.ts +234 -43
  512. package/src/schedule/scheduler.ts +73 -74
  513. package/src/security/oauth2.ts +1 -1
  514. package/src/sequence/store.ts +12 -2
  515. package/src/skills/frontmatter.ts +19 -77
  516. package/src/skills/managed-store.ts +11 -2
  517. package/src/subagent/manager.ts +5 -3
  518. package/src/tasks/ephemeral-permissions.ts +3 -5
  519. package/src/tools/AGENTS.md +0 -1
  520. package/src/tools/browser/browser-manager.ts +17 -11
  521. package/src/tools/browser/jit-auth.ts +4 -1
  522. package/src/tools/claude-code/claude-code.ts +1 -1
  523. package/src/tools/computer-use/definitions.ts +48 -60
  524. package/src/tools/document/document-tool.ts +6 -6
  525. package/src/tools/filesystem/edit.ts +2 -1
  526. package/src/tools/filesystem/read.ts +20 -2
  527. package/src/tools/filesystem/write.ts +2 -1
  528. package/src/tools/host-filesystem/edit.ts +17 -1
  529. package/src/tools/host-filesystem/read.ts +16 -1
  530. package/src/tools/host-filesystem/write.ts +15 -1
  531. package/src/tools/host-terminal/host-shell.ts +24 -0
  532. package/src/tools/memory/definitions.ts +45 -81
  533. package/src/tools/memory/handlers.test.ts +0 -1
  534. package/src/tools/memory/handlers.ts +1 -1
  535. package/src/tools/memory/register.ts +26 -60
  536. package/src/tools/network/script-proxy/session-manager.ts +6 -8
  537. package/src/tools/network/web-fetch.ts +7 -1
  538. package/src/tools/network/web-search.ts +2 -1
  539. package/src/tools/registry.ts +23 -0
  540. package/src/tools/schedule/create.ts +113 -5
  541. package/src/tools/schedule/list.ts +57 -15
  542. package/src/tools/schedule/update.ts +73 -3
  543. package/src/tools/shared/filesystem/image-read.ts +192 -0
  544. package/src/tools/side-effects.ts +1 -7
  545. package/src/tools/skills/delete-managed.ts +27 -64
  546. package/src/tools/skills/execute.ts +54 -0
  547. package/src/tools/skills/load.ts +127 -5
  548. package/src/tools/skills/scaffold-managed.ts +93 -172
  549. package/src/tools/subagent/message.ts +0 -7
  550. package/src/tools/subagent/spawn.ts +1 -1
  551. package/src/tools/swarm/delegate.ts +0 -3
  552. package/src/tools/system/avatar-generator.ts +13 -19
  553. package/src/tools/system/request-permission.ts +2 -1
  554. package/src/tools/terminal/safe-env.ts +1 -0
  555. package/src/tools/tool-manifest.ts +41 -47
  556. package/src/tools/types.ts +6 -2
  557. package/src/tools/ui-surface/definitions.ts +0 -55
  558. package/src/util/errors.ts +0 -10
  559. package/src/workspace/git-service.ts +0 -2
  560. package/src/__tests__/account-registry.test.ts +0 -258
  561. package/src/__tests__/email-classifier.test.ts +0 -25
  562. package/src/__tests__/gmail-integration.test.ts +0 -97
  563. package/src/__tests__/handle-user-message-secret-resume.test.ts +0 -172
  564. package/src/__tests__/managed-twitter-guardrails.test.ts +0 -357
  565. package/src/__tests__/recording-intent-fallback.test.ts +0 -199
  566. package/src/__tests__/recording-intent.test.ts +0 -985
  567. package/src/__tests__/recording-state-machine.test.ts +0 -1574
  568. package/src/__tests__/reminder-store.test.ts +0 -350
  569. package/src/__tests__/reminder.test.ts +0 -337
  570. package/src/__tests__/scan-result-store.test.ts +0 -121
  571. package/src/__tests__/twitter-platform-proxy-client.test.ts +0 -475
  572. package/src/__tests__/view-image-tool.test.ts +0 -241
  573. package/src/cli/commands/amazon/cart.ts +0 -513
  574. package/src/cli/commands/amazon/checkout.ts +0 -394
  575. package/src/cli/commands/amazon/client.ts +0 -513
  576. package/src/cli/commands/amazon/index.ts +0 -885
  577. package/src/cli/commands/amazon/product-details.ts +0 -145
  578. package/src/cli/commands/amazon/request-extractor.ts +0 -187
  579. package/src/cli/commands/amazon/search.ts +0 -76
  580. package/src/cli/commands/amazon/session.ts +0 -108
  581. package/src/cli/commands/twitter/__tests__/cli-read-routing.test.ts +0 -345
  582. package/src/cli/commands/twitter/__tests__/cli-routing.test.ts +0 -252
  583. package/src/cli/commands/twitter/__tests__/oauth-client.test.ts +0 -151
  584. package/src/cli/commands/twitter/index.ts +0 -420
  585. package/src/cli/commands/twitter/oauth-client.ts +0 -60
  586. package/src/cli/commands/twitter/router.ts +0 -351
  587. package/src/cli/commands/twitter/types.ts +0 -30
  588. package/src/config/bundled-skills/agentmail/SKILL.md +0 -132
  589. package/src/config/bundled-skills/agentmail/icon.svg +0 -21
  590. package/src/config/bundled-skills/amazon/SKILL.md +0 -136
  591. package/src/config/bundled-skills/amazon/icon.svg +0 -13
  592. package/src/config/bundled-skills/api-mapping/SKILL.md +0 -78
  593. package/src/config/bundled-skills/api-mapping/icon.svg +0 -18
  594. package/src/config/bundled-skills/cli-discover/SKILL.md +0 -68
  595. package/src/config/bundled-skills/deploy-fullstack-vercel/SKILL.md +0 -179
  596. package/src/config/bundled-skills/document-writer/SKILL.md +0 -195
  597. package/src/config/bundled-skills/elevenlabs-voice/SKILL.md +0 -140
  598. package/src/config/bundled-skills/email-setup/SKILL.md +0 -68
  599. package/src/config/bundled-skills/frontend-design/SKILL.md +0 -44
  600. package/src/config/bundled-skills/frontend-design/icon.svg +0 -16
  601. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +0 -452
  602. package/src/config/bundled-skills/guardian-verify-setup/SKILL.md +0 -203
  603. package/src/config/bundled-skills/influencer/SKILL.md +0 -144
  604. package/src/config/bundled-skills/influencer/scripts/client.ts +0 -1269
  605. package/src/config/bundled-skills/influencer/scripts/influencer.ts +0 -267
  606. package/src/config/bundled-skills/macos-automation/SKILL.md +0 -65
  607. package/src/config/bundled-skills/macos-automation/icon.svg +0 -12
  608. package/src/config/bundled-skills/mcp-setup/SKILL.md +0 -75
  609. package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +0 -184
  610. package/src/config/bundled-skills/messaging/tools/gmail-archive-by-query.ts +0 -80
  611. package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +0 -29
  612. package/src/config/bundled-skills/messaging/tools/gmail-batch-archive.ts +0 -56
  613. package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +0 -34
  614. package/src/config/bundled-skills/messaging/tools/gmail-download-attachment.ts +0 -47
  615. package/src/config/bundled-skills/messaging/tools/gmail-label.ts +0 -31
  616. package/src/config/bundled-skills/messaging/tools/gmail-list-attachments.ts +0 -67
  617. package/src/config/bundled-skills/messaging/tools/gmail-send-with-attachments.ts +0 -97
  618. package/src/config/bundled-skills/messaging/tools/gmail-summarize-thread.ts +0 -87
  619. package/src/config/bundled-skills/messaging/tools/gmail-triage.ts +0 -135
  620. package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +0 -24
  621. package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +0 -201
  622. package/src/config/bundled-skills/messaging/tools/send-notification.ts +0 -1
  623. package/src/config/bundled-skills/messaging/tools/sequence-cancel.ts +0 -27
  624. package/src/config/bundled-skills/messaging/tools/sequence-pause.ts +0 -48
  625. package/src/config/bundled-skills/messaging/tools/sequence-resume.ts +0 -27
  626. package/src/config/bundled-skills/messaging/tools/sequence-update.ts +0 -56
  627. package/src/config/bundled-skills/notion/SKILL.md +0 -240
  628. package/src/config/bundled-skills/notion-oauth-setup/SKILL.md +0 -126
  629. package/src/config/bundled-skills/oauth-setup/SKILL.md +0 -143
  630. package/src/config/bundled-skills/public-ingress/SKILL.md +0 -258
  631. package/src/config/bundled-skills/reminder/SKILL.md +0 -79
  632. package/src/config/bundled-skills/reminder/TOOLS.json +0 -89
  633. package/src/config/bundled-skills/reminder/tools/reminder-list.ts +0 -12
  634. package/src/config/bundled-skills/restaurant-reservation/SKILL.md +0 -141
  635. package/src/config/bundled-skills/screen-recording/SKILL.md +0 -148
  636. package/src/config/bundled-skills/self-upgrade/SKILL.md +0 -69
  637. package/src/config/bundled-skills/skills-catalog/SKILL.md +0 -78
  638. package/src/config/bundled-skills/slack-app-setup/SKILL.md +0 -178
  639. package/src/config/bundled-skills/slack-digest-setup/SKILL.md +0 -163
  640. package/src/config/bundled-skills/slack-oauth-setup/SKILL.md +0 -157
  641. package/src/config/bundled-skills/start-the-day/SKILL.md +0 -70
  642. package/src/config/bundled-skills/start-the-day/icon.svg +0 -13
  643. package/src/config/bundled-skills/telegram-setup/SKILL.md +0 -105
  644. package/src/config/bundled-skills/time-based-actions/SKILL.md +0 -142
  645. package/src/config/bundled-skills/twilio-setup/SKILL.md +0 -232
  646. package/src/config/bundled-skills/twitter/SKILL.md +0 -206
  647. package/src/config/bundled-skills/twitter/icon.svg +0 -14
  648. package/src/config/bundled-skills/typescript-eval/SKILL.md +0 -60
  649. package/src/config/bundled-skills/vercel-token-setup/SKILL.md +0 -214
  650. package/src/config/bundled-skills/voice-setup/SKILL.md +0 -131
  651. package/src/config/bundled-skills/voice-setup/icon.svg +0 -20
  652. package/src/daemon/handlers/pairing.ts +0 -119
  653. package/src/daemon/handlers/session-user-message.ts +0 -961
  654. package/src/daemon/recording-executor.ts +0 -180
  655. package/src/daemon/recording-intent-fallback.ts +0 -162
  656. package/src/daemon/recording-intent.ts +0 -493
  657. package/src/memory/account-store.ts +0 -117
  658. package/src/messaging/activity-analyzer.ts +0 -76
  659. package/src/messaging/email-classifier.ts +0 -208
  660. package/src/messaging/index.ts +0 -2
  661. package/src/messaging/outreach-classifier.ts +0 -185
  662. package/src/messaging/thread-summarizer.ts +0 -346
  663. package/src/messaging/types.ts +0 -17
  664. package/src/tools/browser/x-auto-navigate.ts +0 -254
  665. package/src/tools/credentials/account-registry.ts +0 -144
  666. package/src/tools/filesystem/view-image.ts +0 -244
  667. package/src/tools/reminder/reminder-store.ts +0 -194
  668. package/src/tools/reminder/reminder.ts +0 -158
  669. package/src/tools/system/navigate-settings.ts +0 -74
  670. package/src/tools/system/open-system-settings.ts +0 -85
  671. package/src/tools/system/version.ts +0 -54
  672. package/src/twitter/platform-proxy-client.ts +0 -408
  673. /package/src/config/bundled-skills/{messaging → gmail}/tools/scan-result-store.ts +0 -0
  674. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-analytics.ts +0 -0
  675. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-create.ts +0 -0
  676. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-delete.ts +0 -0
  677. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enroll.ts +0 -0
  678. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-enrollment-list.ts +0 -0
  679. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-get.ts +0 -0
  680. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-import.ts +0 -0
  681. /package/src/config/bundled-skills/{messaging → sequences}/tools/sequence-list.ts +0 -0
@@ -11,6 +11,7 @@ import {
11
11
  deleteMcpOAuthCredentials,
12
12
  McpOAuthProvider,
13
13
  } from "../../mcp/mcp-oauth-provider.js";
14
+ import { httpSend } from "../http-client.js";
14
15
  import { log } from "../logger.js";
15
16
 
16
17
  export const HEALTH_CHECK_TIMEOUT_MS = 10_000;
@@ -66,8 +67,8 @@ server uses one of three transport types:
66
67
  sse Remote server using Server-Sent Events
67
68
  streamable-http Remote server using Streamable HTTP transport
68
69
 
69
- Changes to MCP server configuration require an assistant restart to take effect
70
- (vellum sleep && vellum wake).
70
+ After changing MCP server configuration, run 'vellum mcp reload' to apply
71
+ changes without restarting the assistant.
71
72
 
72
73
  Examples:
73
74
  $ assistant mcp list
@@ -244,6 +245,69 @@ Examples:
244
245
  process.exit(0);
245
246
  });
246
247
 
248
+ mcp
249
+ .command("reload")
250
+ .description("Reload MCP server connections in the running assistant")
251
+ .addHelpText(
252
+ "after",
253
+ `
254
+ Sends a message to the running assistant to disconnect and reconnect all MCP
255
+ servers using the current configuration from disk. Active sessions pick up
256
+ new tools on their next turn automatically. The assistant must be running.
257
+
258
+ Examples:
259
+ $ vellum mcp reload
260
+ $ vellum mcp reload # after editing config.json to add a new server
261
+ $ vellum mcp reload # after running "vellum mcp auth <server>"`,
262
+ )
263
+ .action(async () => {
264
+ log.info("Sending reload request to assistant...");
265
+ try {
266
+ const res = await httpSend("/v1/mcp/reload", { method: "POST" });
267
+ const response = (await res.json()) as {
268
+ success: boolean;
269
+ serverCount?: number;
270
+ toolCount?: number;
271
+ servers?: {
272
+ id: string;
273
+ connected: boolean;
274
+ disabled?: boolean;
275
+ toolCount: number;
276
+ tools: string[];
277
+ }[];
278
+ error?: string;
279
+ };
280
+ if (response.success) {
281
+ log.info(
282
+ `MCP servers reloaded: ${response.serverCount} server(s), ${response.toolCount} tool(s)\n`,
283
+ );
284
+ if (response.servers && response.servers.length > 0) {
285
+ for (const server of response.servers) {
286
+ const status = server.disabled
287
+ ? "⊘ Disabled"
288
+ : server.connected
289
+ ? "\u2713 Connected"
290
+ : "\u2717 Not connected";
291
+ log.info(` ${server.id}`);
292
+ log.info(` Status: ${status}`);
293
+ log.info(
294
+ ` Tools: ${server.toolCount > 0 ? server.tools.join(", ") : "(none)"}`,
295
+ );
296
+ log.info("");
297
+ }
298
+ }
299
+ } else {
300
+ log.error(`Failed to reload: ${response.error}`);
301
+ process.exitCode = 1;
302
+ }
303
+ } catch (err) {
304
+ log.error(
305
+ `Failed to send reload request: ${err instanceof Error ? err.message : err}`,
306
+ );
307
+ process.exitCode = 1;
308
+ }
309
+ });
310
+
247
311
  mcp
248
312
  .command("add <name>")
249
313
  .description("Add an MCP server configuration")
@@ -358,9 +422,7 @@ Examples:
358
422
 
359
423
  saveRawConfig(raw);
360
424
  log.info(`Added MCP server "${name}" (${opts.transportType})`);
361
- log.info(
362
- "Restart the assistant for changes to take effect: vellum sleep && vellum wake",
363
- );
425
+ log.info("Run 'vellum mcp reload' to apply changes.");
364
426
  },
365
427
  );
366
428
 
@@ -382,8 +444,8 @@ OAuth flow. If the server already has valid cached tokens, the command succeeds
382
444
  immediately without opening a browser. Tokens are cached locally for future use
383
445
  by the assistant.
384
446
 
385
- After successful authentication, restart the assistant for changes to take effect
386
- (vellum sleep && vellum wake).
447
+ After successful authentication, run 'vellum mcp reload' to apply changes
448
+ without restarting the assistant.
387
449
 
388
450
  Examples:
389
451
  $ assistant mcp auth my-server
@@ -541,9 +603,7 @@ Examples:
541
603
  provider.stopCallbackServer();
542
604
 
543
605
  log.info(`Authentication successful for "${name}".`);
544
- log.info(
545
- "Restart the assistant for changes to take effect: vellum sleep && vellum wake",
546
- );
606
+ log.info("Run 'vellum mcp reload' to apply changes.");
547
607
  process.exit(0);
548
608
  });
549
609
 
@@ -561,8 +621,8 @@ any stored OAuth credentials (tokens, client info, discovery metadata) for
561
621
  sse/streamable-http servers. If no OAuth credentials exist, the cleanup is
562
622
  silently skipped.
563
623
 
564
- After removal, restart the assistant for changes to take effect
565
- (vellum sleep && vellum wake).
624
+ After removal, run 'vellum mcp reload' to apply changes without restarting
625
+ the assistant.
566
626
 
567
627
  Examples:
568
628
  $ assistant mcp remove my-server
@@ -595,8 +655,6 @@ Examples:
595
655
  delete servers[name];
596
656
  saveRawConfig(raw);
597
657
  log.info(`Removed MCP server "${name}".`);
598
- log.info(
599
- "Restart the assistant for changes to take effect: vellum sleep && vellum wake",
600
- );
658
+ log.info("Run 'vellum mcp reload' to apply changes.");
601
659
  });
602
660
  }
@@ -56,7 +56,7 @@ ${buildSourceEventNamesHelpBlock()}
56
56
 
57
57
  Examples:
58
58
  $ assistant notifications send --source-channel assistant_tool --source-event-name user.send_notification --message "Build finished"
59
- $ assistant notifications send --source-channel scheduler --source-event-name reminder.fired --message "Stand-up in 5 minutes" --urgency high
59
+ $ assistant notifications send --source-channel scheduler --source-event-name schedule.notify --message "Stand-up in 5 minutes" --urgency high
60
60
  $ assistant notifications send --source-channel watcher --source-event-name watcher.notification --message "File changed" --no-requires-action --is-async-background
61
61
  $ assistant notifications send --source-channel assistant_tool --source-event-name user.send_notification --message "Deploy complete" --preferred-channels vellum,telegram --json`,
62
62
  );
@@ -143,7 +143,7 @@ Behavioral notes:
143
143
 
144
144
  Examples:
145
145
  $ assistant notifications send --source-channel assistant_tool --source-event-name user.send_notification --message "Task complete"
146
- $ assistant notifications send --source-channel scheduler --source-event-name reminder.fired --message "Meeting in 5 min" --urgency high --title "Reminder"
146
+ $ assistant notifications send --source-channel scheduler --source-event-name schedule.notify --message "Meeting in 5 min" --urgency high --title "Reminder"
147
147
  $ assistant notifications send --source-channel watcher --source-event-name watcher.notification --message "Detected change" --no-requires-action --is-async-background --json`,
148
148
  )
149
149
  .action(
@@ -318,8 +318,8 @@ ${buildSourceEventNamesHelpBlock()}
318
318
  Examples:
319
319
  $ assistant notifications list
320
320
  $ assistant notifications list --limit 5
321
- $ assistant notifications list --source-event-name reminder.fired
322
- $ assistant notifications list --source-event-name reminder.fired --limit 10 --json`,
321
+ $ assistant notifications list --source-event-name schedule.notify
322
+ $ assistant notifications list --source-event-name schedule.notify --limit 10 --json`,
323
323
  )
324
324
  .action(
325
325
  (
@@ -12,6 +12,7 @@ import {
12
12
  getMessages,
13
13
  } from "../../memory/conversation-crud.js";
14
14
  import { listConversations } from "../../memory/conversation-queries.js";
15
+ import { selectEmbeddingBackend } from "../../memory/embedding-backend.js";
15
16
  import { initQdrantClient } from "../../memory/qdrant-client.js";
16
17
  import { timeAgo } from "../../util/time.js";
17
18
  import { initializeDb } from "../db.js";
@@ -56,7 +57,9 @@ Examples:
56
57
  log.info("No sessions");
57
58
  } else {
58
59
  for (const s of all) {
59
- log.info(` ${s.id} ${s.title ?? "Untitled"} ${timeAgo(s.updatedAt)}`);
60
+ log.info(
61
+ ` ${s.id} ${s.title ?? "Untitled"} ${timeAgo(s.updatedAt)}`,
62
+ );
60
63
  }
61
64
  }
62
65
  });
@@ -221,12 +224,17 @@ Examples:
221
224
 
222
225
  const config = getConfig();
223
226
  const qdrantUrl = getQdrantUrlEnv() || config.memory.qdrant.url;
227
+ const embeddingSelection = selectEmbeddingBackend(config);
228
+ const embeddingModel = embeddingSelection.backend
229
+ ? `${embeddingSelection.backend.provider}:${embeddingSelection.backend.model}`
230
+ : undefined;
224
231
  const qdrant = initQdrantClient({
225
232
  url: qdrantUrl,
226
233
  collection: config.memory.qdrant.collection,
227
234
  vectorSize: config.memory.qdrant.vectorSize,
228
235
  onDisk: config.memory.qdrant.onDisk,
229
236
  quantization: config.memory.qdrant.quantization,
237
+ embeddingModel,
230
238
  });
231
239
  const deleted = await qdrant.deleteCollection();
232
240
  if (deleted) {
@@ -373,18 +373,14 @@ Examples:
373
373
  .option("--json", "Machine-readable JSON output")
374
374
  .action(async (opts: { json?: boolean }) => {
375
375
  try {
376
- const catalog = await fetchCatalog();
377
-
378
- // In dev mode, merge in skills from the repo-local skills/ directory
376
+ // In dev mode, use the local catalog as the source of truth
377
+ // and skip the remote Platform API entirely.
379
378
  const repoSkillsDir = getRepoSkillsDir();
379
+ let catalog: CatalogSkill[];
380
380
  if (repoSkillsDir) {
381
- const localSkills = readLocalCatalog(repoSkillsDir);
382
- const remoteIds = new Set(catalog.map((s) => s.id));
383
- for (const local of localSkills) {
384
- if (!remoteIds.has(local.id)) {
385
- catalog.push(local);
386
- }
387
- }
381
+ catalog = readLocalCatalog(repoSkillsDir);
382
+ } else {
383
+ catalog = await fetchCatalog();
388
384
  }
389
385
 
390
386
  if (opts.json) {
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * HTTP client helpers for the built-in CLI.
3
3
  *
4
- * Provides authenticated HTTP communication with the daemon's HTTP server,
5
- * replacing the previous Unix socket IPC transport. Patterns are adapted
6
- * from `cli/src/lib/http-client.ts` (external CLI).
4
+ * Provides authenticated HTTP communication with the daemon's HTTP server.
5
+ * Patterns are adapted from `cli/src/lib/http-client.ts` (external CLI).
7
6
  */
8
7
 
9
8
  import { readFileSync } from "node:fs";
@@ -23,8 +23,14 @@ export function renderMainScreen(): MainScreenLayout {
23
23
  const cliRoot = dirname(cliPkgPath);
24
24
  // Dynamic require to bypass NodeNext strict module resolution for the
25
25
  // CLI package which ships raw TypeScript with bundler-style imports.
26
- const { render } = require(join(cliRoot, "src", "components", "DefaultMainScreen.tsx")) as {
27
- render: (runtimeUrl: string, assistantId: string, species: string) => number;
26
+ const { render } = require(
27
+ join(cliRoot, "src", "components", "DefaultMainScreen.tsx"),
28
+ ) as {
29
+ render: (
30
+ runtimeUrl: string,
31
+ assistantId: string,
32
+ species: string,
33
+ ) => number;
28
34
  };
29
35
 
30
36
  const height = render(httpUrl, assistantId, "vellum");
@@ -35,19 +41,13 @@ export function renderMainScreen(): MainScreenLayout {
35
41
  return { height, statusLine: statusCanvasLine, statusCol };
36
42
  }
37
43
 
38
- export function updateStatusText(
39
- layout: MainScreenLayout,
40
- text: string,
41
- ): void {
44
+ export function updateStatusText(layout: MainScreenLayout, text: string): void {
42
45
  process.stdout.write(
43
46
  `\x1b7\x1b[${layout.statusLine};${layout.statusCol}H\x1b[K${text}\x1b8`,
44
47
  );
45
48
  }
46
49
 
47
- export function updateDaemonText(
48
- layout: MainScreenLayout,
49
- text: string,
50
- ): void {
50
+ export function updateDaemonText(layout: MainScreenLayout, text: string): void {
51
51
  const daemonLine = layout.statusLine - 4;
52
52
  process.stdout.write(
53
53
  `\x1b7\x1b[${daemonLine};${layout.statusCol}H\x1b[K\x1b[35m${text}\x1b[0m\x1b8`,
@@ -3,7 +3,6 @@ import { createRequire } from "node:module";
3
3
  import { Command } from "commander";
4
4
 
5
5
  import { registerHooksCommand } from "../hooks/cli.js";
6
- import { registerAmazonCommand } from "./commands/amazon/index.js";
7
6
  import { registerAuditCommand } from "./commands/audit.js";
8
7
  import { registerAutonomyCommand } from "./commands/autonomy.js";
9
8
  import { registerBrowserRelayCommand } from "./commands/browser-relay.js";
@@ -27,7 +26,6 @@ import { registerSequenceCommand } from "./commands/sequence.js";
27
26
  import { registerSessionsCommand } from "./commands/sessions.js";
28
27
  import { registerSkillsCommand } from "./commands/skills.js";
29
28
  import { registerTrustCommand } from "./commands/trust.js";
30
- import { registerTwitterCommand } from "./commands/twitter/index.js";
31
29
 
32
30
  const require = createRequire(import.meta.url);
33
31
  const { version } = require("../../package.json") as { version: string };
@@ -52,7 +50,6 @@ export function buildCliProgram(): Command {
52
50
  registerEmailCommand(program);
53
51
  registerContactsCommand(program);
54
52
  registerChannelVerificationSessionsCommand(program);
55
- registerAmazonCommand(program);
56
53
  registerAutonomyCommand(program);
57
54
  registerCompletionsCommand(program);
58
55
  registerNotificationsCommand(program);
@@ -61,7 +58,6 @@ export function buildCliProgram(): Command {
61
58
  registerSkillsCommand(program);
62
59
  registerBrowserRelayCommand(program);
63
60
 
64
- registerTwitterCommand(program);
65
61
  registerMapCommand(program);
66
62
  registerSequenceCommand(program);
67
63
 
@@ -24,7 +24,6 @@ Commands:
24
24
  email [options] Email operations (provider-agnostic)
25
25
  contacts [options] Manage and query the contact graph
26
26
  channel-verification-sessions [options] Manage channel verification sessions
27
- amazon [options] Shop on Amazon and Amazon Fresh. Requires an active session (use "refresh" to authenticate).
28
27
  autonomy [options] View and configure autonomy tiers
29
28
  completions <shell> Generate shell completion script (e.g. assistant completions bash >> ~/.bashrc)
30
29
  notifications [options] Send and inspect notifications through the unified notification router
@@ -32,7 +31,6 @@ Commands:
32
31
  oauth [options] Manage OAuth tokens for connected integrations
33
32
  skills Browse and install skills from the Vellum catalog
34
33
  browser Browser automation, extension relay, and Chrome CDP management
35
- x|twitter [options] Post on X and manage connections. Supports managed (platform proxy) and OAuth (official API) paths.
36
34
  map [options] <domain> Auto-navigate a domain and produce a deduplicated API map. Launches Chrome with CDP, starts a Ride Shotgun learn session, then analyzes captured network traffic.
37
35
  sequence [options] Manage email sequences
38
36
  `;
package/src/cli.ts CHANGED
@@ -541,7 +541,10 @@ export async function startCli(): Promise<void> {
541
541
  }),
542
542
  });
543
543
  if (resp.ok) {
544
- const data = (await resp.json()) as { sessionId: string; title: string };
544
+ const data = (await resp.json()) as {
545
+ sessionId: string;
546
+ title: string;
547
+ };
545
548
  sessionId = data.sessionId;
546
549
  conversationKey = newKey;
547
550
  pendingSessionPick = false;
@@ -696,6 +699,10 @@ export async function startCli(): Promise<void> {
696
699
  prompt();
697
700
  break;
698
701
 
702
+ case "tool_use_preview_start":
703
+ // Early preview of tool use — ignored by CLI; full tool_use_start follows.
704
+ break;
705
+
699
706
  case "tool_use_start":
700
707
  toolStreaming = false;
701
708
  spinner.start(formatToolProgress(msg.toolName, msg.input));
@@ -991,7 +998,9 @@ export async function startCli(): Promise<void> {
991
998
  // Retry with exponential backoff (1s → 2s → 4s → … → 30s cap) until connected
992
999
  while (true) {
993
1000
  const delaySec = (reconnectDelay / 1000).toFixed(0);
994
- process.stdout.write(`\n Reconnecting to assistant in ${delaySec}s...\n`);
1001
+ process.stdout.write(
1002
+ `\n Reconnecting to assistant in ${delaySec}s...\n`,
1003
+ );
995
1004
  await new Promise((r) => setTimeout(r, reconnectDelay));
996
1005
 
997
1006
  // Increase backoff for next attempt before trying
@@ -1338,10 +1347,9 @@ export async function startCli(): Promise<void> {
1338
1347
  process.on("SIGINT", () => {
1339
1348
  spinner.stop();
1340
1349
  if (generating && sessionId) {
1341
- httpSend(
1342
- `/v1/conversations/${encodeURIComponent(sessionId)}/cancel`,
1343
- { method: "POST" },
1344
- ).catch(() => {
1350
+ httpSend(`/v1/conversations/${encodeURIComponent(sessionId)}/cancel`, {
1351
+ method: "POST",
1352
+ }).catch(() => {
1345
1353
  // Best-effort cancel
1346
1354
  });
1347
1355
  } else {
@@ -1360,8 +1368,6 @@ export async function startCli(): Promise<void> {
1360
1368
  updateStatusText(mainScreenLayout, "ready");
1361
1369
 
1362
1370
  // Show initial prompt since HTTP doesn't have the session_info flow
1363
- process.stdout.write(
1364
- `\n Type your message. Ctrl+D to detach.\n\n`,
1365
- );
1371
+ process.stdout.write(`\n Type your message. Ctrl+D to detach.\n\n`);
1366
1372
  prompt();
1367
1373
  }
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Guard test that validates bundled-tool-registry.ts stays in sync with
3
+ * TOOLS.json declarations across all bundled skills.
4
+ *
5
+ * If this test fails, run:
6
+ * cd assistant && bun run scripts/generate-bundled-tool-registry.ts
7
+ */
8
+
9
+ import { readdirSync, readFileSync } from "node:fs";
10
+ import { join } from "node:path";
11
+ import { describe, expect, test } from "bun:test";
12
+
13
+ // ---------------------------------------------------------------------------
14
+ // Helpers
15
+ // ---------------------------------------------------------------------------
16
+
17
+ const BUNDLED_SKILLS_DIR = join(import.meta.dir, "..", "bundled-skills");
18
+ const REGISTRY_PATH = join(import.meta.dir, "..", "bundled-tool-registry.ts");
19
+
20
+ interface ToolEntry {
21
+ executor: string;
22
+ [key: string]: unknown;
23
+ }
24
+
25
+ interface ToolsJson {
26
+ version: number;
27
+ tools: ToolEntry[];
28
+ }
29
+
30
+ /** Collect all expected registry keys from TOOLS.json files. */
31
+ function collectToolsJsonKeys(): Set<string> {
32
+ const keys = new Set<string>();
33
+ const entries = readdirSync(BUNDLED_SKILLS_DIR, { withFileTypes: true });
34
+
35
+ for (const entry of entries) {
36
+ if (!entry.isDirectory() || entry.name === "_shared") continue;
37
+
38
+ const toolsJsonPath = join(BUNDLED_SKILLS_DIR, entry.name, "TOOLS.json");
39
+ let raw: string;
40
+ try {
41
+ raw = readFileSync(toolsJsonPath, "utf-8");
42
+ } catch {
43
+ // No TOOLS.json — skip this skill.
44
+ continue;
45
+ }
46
+
47
+ const toolsJson: ToolsJson = JSON.parse(raw);
48
+ for (const tool of toolsJson.tools) {
49
+ keys.add(`${entry.name}:${tool.executor}`);
50
+ }
51
+ }
52
+
53
+ return keys;
54
+ }
55
+
56
+ /** Extract all registry keys from bundled-tool-registry.ts source. */
57
+ function collectRegistryKeys(): Set<string> {
58
+ const source = readFileSync(REGISTRY_PATH, "utf-8");
59
+ const keys = new Set<string>();
60
+ // Match both inline `["key", alias]` and multi-line `[\n "key",` formats.
61
+ // Registry keys always follow the pattern `skillName:tools/something.ts`.
62
+ const pattern = /"([^"]+:tools\/[^"]+\.ts)"/g;
63
+ for (const match of source.matchAll(pattern)) {
64
+ keys.add(match[1]);
65
+ }
66
+ return keys;
67
+ }
68
+
69
+ // ---------------------------------------------------------------------------
70
+ // Tests
71
+ // ---------------------------------------------------------------------------
72
+
73
+ describe("bundled-tool-registry guard", () => {
74
+ const toolsJsonKeys = collectToolsJsonKeys();
75
+ const registryKeys = collectRegistryKeys();
76
+
77
+ test("every TOOLS.json executor has a registry entry", () => {
78
+ const violations: string[] = [];
79
+
80
+ for (const key of toolsJsonKeys) {
81
+ if (!registryKeys.has(key)) {
82
+ violations.push(key);
83
+ }
84
+ }
85
+
86
+ if (violations.length > 0) {
87
+ const message = [
88
+ "TOOLS.json declares executors that are missing from bundled-tool-registry.ts.",
89
+ "",
90
+ "Violations:",
91
+ ...violations.map((v) => ` - ${v}`),
92
+ "",
93
+ "Run 'cd assistant && bun run scripts/generate-bundled-tool-registry.ts' to fix.",
94
+ ].join("\n");
95
+ expect(violations, message).toEqual([]);
96
+ }
97
+ });
98
+
99
+ test("registry has no stale entries", () => {
100
+ const violations: string[] = [];
101
+
102
+ for (const key of registryKeys) {
103
+ if (!toolsJsonKeys.has(key)) {
104
+ violations.push(key);
105
+ }
106
+ }
107
+
108
+ if (violations.length > 0) {
109
+ const message = [
110
+ "bundled-tool-registry.ts contains entries not found in any TOOLS.json.",
111
+ "",
112
+ "Violations:",
113
+ ...violations.map((v) => ` - ${v}`),
114
+ "",
115
+ "Run 'cd assistant && bun run scripts/generate-bundled-tool-registry.ts' to fix.",
116
+ ].join("\n");
117
+ expect(violations, message).toEqual([]);
118
+ }
119
+ });
120
+ });
@@ -2,6 +2,17 @@
2
2
 
3
3
  When running the `assistant` CLI, run it using the `bash` (not `host_bash`) tool.
4
4
 
5
+ For account and auth workflows, prefer documented `assistant` CLI commands over
6
+ any generic account registry:
7
+
8
+ - `assistant credentials ...` for stored secrets and credential metadata
9
+ - `assistant oauth token <service>` for OAuth-backed integrations
10
+ - `assistant mcp auth <name>` when an MCP server needs browser login
11
+ - `assistant platform status` for platform-linked deployment/auth context
12
+
13
+ If a bundled skill documents a service-specific `assistant <service>` auth or
14
+ session flow, follow that CLI exactly.
15
+
5
16
  # Outbound Network Requests
6
17
 
7
18
  When a skill needs outbound API calls with a stored credential (outside of `assistant` CLI reads), use proxied `bash`:
@@ -2,7 +2,12 @@
2
2
  name: app-builder
3
3
  description: Build interactive apps, dashboards, calculators, games, trackers, tools, landing pages, and data visualizations with HTML/CSS/JS. Use when the user says build, create, or make an app/dashboard/calculator/game.
4
4
  compatibility: "Designed for Vellum personal assistants"
5
- metadata: {"emoji":"🏗️","vellum":{"display-name":"App Builder","includes":["frontend-design"]}}
5
+ metadata:
6
+ emoji: "🏗️"
7
+ vellum:
8
+ display-name: "App Builder"
9
+ includes:
10
+ - "frontend-design"
6
11
  ---
7
12
 
8
13
  You are an expert app builder and visual designer. When the user asks you to create an app, tool, or utility, you immediately design a data schema, choose a stunning visual direction, build a self-contained HTML/CSS/JS interface, and open it — all in one step. You don't discuss or ask for permission to be creative. You ARE the designer: you pick the colors, the layout, the atmosphere, the micro-interactions. Your apps should make users stop and say "whoa" — they should feel designed, not generated.
@@ -2,7 +2,12 @@
2
2
  name: browser
3
3
  description: Navigate and interact with web pages using a headless browser
4
4
  compatibility: "Designed for Vellum personal assistants"
5
- metadata: {"emoji":"🌐","vellum":{"display-name":"Browser","user-invocable":true}}
5
+ metadata:
6
+ emoji: "🌐"
7
+ vellum:
8
+ display-name: "Browser"
9
+ user-invocable: true
10
+ feature-flag: "browser"
6
11
  ---
7
12
 
8
13
  Use this skill to browse the web. After loading this skill, the following browser tools become available:
@@ -2,7 +2,11 @@
2
2
  name: chatgpt-import
3
3
  description: Import conversation history from ChatGPT into Vellum
4
4
  compatibility: "Designed for Vellum personal assistants"
5
- metadata: {"emoji":"📥","vellum":{"display-name":"ChatGPT Import","user-invocable":true}}
5
+ metadata:
6
+ emoji: "📥"
7
+ vellum:
8
+ display-name: "ChatGPT Import"
9
+ user-invocable: true
6
10
  ---
7
11
 
8
12
  Import ChatGPT conversation history into Vellum so users can keep their conversation context and memory when switching from ChatGPT.
@@ -2,7 +2,11 @@
2
2
  name: claude-code
3
3
  description: Delegate coding tasks to Claude Code, an AI-powered coding agent
4
4
  compatibility: "Designed for Vellum personal assistants"
5
- metadata: {"emoji":"💻","vellum":{"display-name":"Claude Code","user-invocable":true}}
5
+ metadata:
6
+ emoji: "💻"
7
+ vellum:
8
+ display-name: "Claude Code"
9
+ user-invocable: true
6
10
  ---
7
11
 
8
12
  You are delegating a coding task to Claude Code, an autonomous AI coding agent. Use this skill when the user needs hands-on software engineering work done.
@@ -2,7 +2,12 @@
2
2
  name: computer-use
3
3
  description: Computer-use action tools for controlling the macOS desktop via accessibility and screen capture.
4
4
  compatibility: "Designed for Vellum personal assistants"
5
- metadata: {"emoji":"🖥️","vellum":{"display-name":"Computer Use","user-invocable":false,"disable-model-invocation":true}}
5
+ metadata:
6
+ emoji: "🖥️"
7
+ vellum:
8
+ display-name: "Computer Use"
9
+ user-invocable: false
10
+ disable-model-invocation: true
6
11
  ---
7
12
 
8
13
  This skill provides the 12 computer*use*\* action tools for controlling