@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
@@ -1,351 +0,0 @@
1
- /**
2
- * Mode router for Twitter operations.
3
- * Selects managed proxy or OAuth path based on the caller-provided integration mode.
4
- */
5
-
6
- import {
7
- getTweet as managedGetTweet,
8
- getUserByUsername as managedGetUserByUsername,
9
- getUserTweets as managedGetUserTweets,
10
- postTweet as managedPostTweet,
11
- searchRecentTweets as managedSearchRecentTweets,
12
- TwitterProxyError,
13
- } from "../../../twitter/platform-proxy-client.js";
14
- import { oauthIsAvailable, oauthPostTweet } from "./oauth-client.js";
15
- import type { PostTweetResult, TweetEntry, UserInfo } from "./types.js";
16
-
17
- export type TwitterMode = "oauth" | "managed";
18
-
19
- export interface RoutedResult<T> {
20
- result: T;
21
- pathUsed: TwitterMode;
22
- }
23
-
24
- export async function routedPostTweet(
25
- text: string,
26
- opts: {
27
- inReplyToTweetId?: string;
28
- mode: TwitterMode;
29
- oauthToken?: string;
30
- },
31
- ): Promise<RoutedResult<PostTweetResult>> {
32
- const mode = opts.mode;
33
-
34
- if (mode === "managed") {
35
- // Route through platform proxy — the platform holds the OAuth credentials
36
- try {
37
- const response = await managedPostTweet(text, {
38
- replyToId: opts.inReplyToTweetId,
39
- });
40
- const data = response.data as Record<string, unknown>;
41
- const tweetData = (data?.data ?? data) as Record<string, unknown>;
42
- const tweetId = String(tweetData.id ?? "");
43
- if (!tweetId) {
44
- throw Object.assign(
45
- new Error(
46
- "Managed post succeeded but the proxy response did not include a tweet ID",
47
- ),
48
- {
49
- pathUsed: "managed" as const,
50
- },
51
- );
52
- }
53
- return {
54
- result: {
55
- tweetId,
56
- text,
57
- url: `https://x.com/i/status/${tweetId}`,
58
- },
59
- pathUsed: "managed",
60
- };
61
- } catch (err) {
62
- if (err instanceof TwitterProxyError) {
63
- // Surface actionable error messages from the proxy
64
- throw Object.assign(new Error(err.message), {
65
- pathUsed: "managed" as const,
66
- proxyErrorCode: err.code,
67
- retryable: err.retryable,
68
- });
69
- }
70
- throw err;
71
- }
72
- }
73
-
74
- if (mode === "oauth") {
75
- // User explicitly wants OAuth
76
- if (!oauthIsAvailable(opts.oauthToken)) {
77
- throw Object.assign(
78
- new Error(
79
- "OAuth is not configured. Connect your X developer credentials to set up OAuth.",
80
- ),
81
- {
82
- pathUsed: "oauth" as const,
83
- },
84
- );
85
- }
86
- const result = await oauthPostTweet(text, {
87
- inReplyToTweetId: opts.inReplyToTweetId,
88
- oauthToken: opts.oauthToken!,
89
- });
90
- return {
91
- result: {
92
- tweetId: result.tweetId,
93
- text: result.text,
94
- url: result.url ?? `https://x.com/i/status/${result.tweetId}`,
95
- },
96
- pathUsed: "oauth",
97
- };
98
- }
99
-
100
- // Exhaustive check — should never reach here
101
- const _exhaustive: never = mode;
102
- throw new Error(`Unknown mode: ${_exhaustive}`);
103
- }
104
-
105
- // ---------------------------------------------------------------------------
106
- // Routed read operations
107
- // ---------------------------------------------------------------------------
108
-
109
- /**
110
- * Look up a user by screen name.
111
- * Managed mode uses GET /2/users/by/username/:username.
112
- */
113
- export async function routedGetUserByScreenName(
114
- screenName: string,
115
- opts: { mode: TwitterMode },
116
- ): Promise<RoutedResult<UserInfo>> {
117
- if (opts.mode === "managed") {
118
- try {
119
- const response = await managedGetUserByUsername(screenName, {
120
- "user.fields": "id,name,username",
121
- });
122
- const data = response.data as Record<string, unknown>;
123
- const userData = (data?.data ?? data) as Record<string, unknown>;
124
- if (!userData.id) {
125
- throw Object.assign(new Error(`User not found: @${screenName}`), {
126
- pathUsed: "managed" as const,
127
- });
128
- }
129
- return {
130
- result: {
131
- userId: String(userData.id),
132
- screenName: String(
133
- userData.username ?? userData.screen_name ?? screenName,
134
- ),
135
- name: String(userData.name ?? screenName),
136
- },
137
- pathUsed: "managed",
138
- };
139
- } catch (err) {
140
- if (err instanceof TwitterProxyError) {
141
- throw Object.assign(new Error(err.message), {
142
- pathUsed: "managed" as const,
143
- proxyErrorCode: err.code,
144
- retryable: err.retryable,
145
- });
146
- }
147
- throw err;
148
- }
149
- }
150
-
151
- if (opts.mode === "oauth") {
152
- throw Object.assign(
153
- new Error(
154
- "Read operations are not supported via OAuth. Use managed mode for read access.",
155
- ),
156
- { pathUsed: "oauth" as const },
157
- );
158
- }
159
-
160
- const _exhaustive: never = opts.mode;
161
- throw new Error(`Unknown mode: ${_exhaustive}`);
162
- }
163
-
164
- /**
165
- * Fetch a user's recent tweets.
166
- * Managed mode uses GET /2/users/:id/tweets.
167
- */
168
- export async function routedGetUserTweets(
169
- userId: string,
170
- count: number,
171
- opts: { mode: TwitterMode },
172
- ): Promise<RoutedResult<TweetEntry[]>> {
173
- if (opts.mode === "managed") {
174
- try {
175
- const response = await managedGetUserTweets(userId, {
176
- max_results: String(Math.min(count, 100)),
177
- "tweet.fields": "id,text,created_at,author_id",
178
- });
179
- const data = response.data as Record<string, unknown>;
180
- const tweetsArray = (data?.data ?? []) as Array<Record<string, unknown>>;
181
- const tweets: TweetEntry[] = tweetsArray.map((t) => ({
182
- tweetId: String(t.id ?? ""),
183
- text: String(t.text ?? ""),
184
- url: `https://x.com/i/status/${t.id}`,
185
- createdAt: String(t.created_at ?? ""),
186
- }));
187
- return { result: tweets, pathUsed: "managed" };
188
- } catch (err) {
189
- if (err instanceof TwitterProxyError) {
190
- throw Object.assign(new Error(err.message), {
191
- pathUsed: "managed" as const,
192
- proxyErrorCode: err.code,
193
- retryable: err.retryable,
194
- });
195
- }
196
- throw err;
197
- }
198
- }
199
-
200
- if (opts.mode === "oauth") {
201
- throw Object.assign(
202
- new Error(
203
- "Read operations are not supported via OAuth. Use managed mode for read access.",
204
- ),
205
- { pathUsed: "oauth" as const },
206
- );
207
- }
208
-
209
- const _exhaustive: never = opts.mode;
210
- throw new Error(`Unknown mode: ${_exhaustive}`);
211
- }
212
-
213
- /**
214
- * Fetch a single tweet by ID.
215
- * Managed mode uses GET /2/tweets/:id.
216
- */
217
- export async function routedGetTweetDetail(
218
- tweetId: string,
219
- opts: { mode: TwitterMode },
220
- ): Promise<RoutedResult<TweetEntry[]>> {
221
- if (opts.mode === "managed") {
222
- try {
223
- const response = await managedGetTweet(tweetId, {
224
- "tweet.fields": "id,text,created_at,author_id,conversation_id",
225
- });
226
- const data = response.data as Record<string, unknown>;
227
- const tweetData = (data?.data ?? data) as Record<string, unknown>;
228
- const primaryTweet: TweetEntry = {
229
- tweetId: String(tweetData.id ?? ""),
230
- text: String(tweetData.text ?? ""),
231
- url: `https://x.com/i/status/${tweetData.id}`,
232
- createdAt: String(tweetData.created_at ?? ""),
233
- };
234
-
235
- // If the tweet has a conversation_id, fetch the thread via search
236
- const conversationId = tweetData.conversation_id as string | undefined;
237
- if (conversationId) {
238
- try {
239
- const threadResponse = await managedSearchRecentTweets(
240
- `conversation_id:${conversationId}`,
241
- {
242
- "tweet.fields": "id,text,created_at,author_id",
243
- max_results: "100",
244
- },
245
- );
246
- const threadData = threadResponse.data as Record<string, unknown>;
247
- const threadArray = (threadData?.data ?? []) as Array<
248
- Record<string, unknown>
249
- >;
250
- const threadTweets: TweetEntry[] = threadArray.map((t) => ({
251
- tweetId: String(t.id ?? ""),
252
- text: String(t.text ?? ""),
253
- url: `https://x.com/i/status/${t.id}`,
254
- createdAt: String(t.created_at ?? ""),
255
- }));
256
- // Deduplicate: the primary tweet may already be in the search results
257
- const seen = new Set(threadTweets.map((t) => t.tweetId));
258
- if (!seen.has(primaryTweet.tweetId)) {
259
- threadTweets.unshift(primaryTweet);
260
- }
261
- return { result: threadTweets, pathUsed: "managed" };
262
- } catch {
263
- // If thread search fails, fall back to returning just the single tweet
264
- }
265
- }
266
-
267
- return { result: [primaryTweet], pathUsed: "managed" };
268
- } catch (err) {
269
- if (err instanceof TwitterProxyError) {
270
- throw Object.assign(new Error(err.message), {
271
- pathUsed: "managed" as const,
272
- proxyErrorCode: err.code,
273
- retryable: err.retryable,
274
- });
275
- }
276
- throw err;
277
- }
278
- }
279
-
280
- if (opts.mode === "oauth") {
281
- throw Object.assign(
282
- new Error(
283
- "Read operations are not supported via OAuth. Use managed mode for read access.",
284
- ),
285
- { pathUsed: "oauth" as const },
286
- );
287
- }
288
-
289
- const _exhaustive: never = opts.mode;
290
- throw new Error(`Unknown mode: ${_exhaustive}`);
291
- }
292
-
293
- /**
294
- * Search tweets.
295
- * Managed mode uses GET /2/tweets/search/recent.
296
- */
297
- export async function routedSearchTweets(
298
- query: string,
299
- product: "Top" | "Latest" | "People" | "Media",
300
- opts: { mode: TwitterMode },
301
- ): Promise<RoutedResult<TweetEntry[]>> {
302
- if (opts.mode === "managed") {
303
- if (product === "People" || product === "Media") {
304
- throw Object.assign(
305
- new Error(
306
- `Product type "${product}" is not supported in managed mode. Only "Top" and "Latest" are supported.`,
307
- ),
308
- { pathUsed: "managed" as const },
309
- );
310
- }
311
- try {
312
- const queryParams: Record<string, string> = {
313
- "tweet.fields": "id,text,created_at,author_id",
314
- };
315
- if (product === "Latest") {
316
- queryParams.sort_order = "recency";
317
- }
318
- const response = await managedSearchRecentTweets(query, queryParams);
319
- const data = response.data as Record<string, unknown>;
320
- const tweetsArray = (data?.data ?? []) as Array<Record<string, unknown>>;
321
- const tweets: TweetEntry[] = tweetsArray.map((t) => ({
322
- tweetId: String(t.id ?? ""),
323
- text: String(t.text ?? ""),
324
- url: `https://x.com/i/status/${t.id}`,
325
- createdAt: String(t.created_at ?? ""),
326
- }));
327
- return { result: tweets, pathUsed: "managed" };
328
- } catch (err) {
329
- if (err instanceof TwitterProxyError) {
330
- throw Object.assign(new Error(err.message), {
331
- pathUsed: "managed" as const,
332
- proxyErrorCode: err.code,
333
- retryable: err.retryable,
334
- });
335
- }
336
- throw err;
337
- }
338
- }
339
-
340
- if (opts.mode === "oauth") {
341
- throw Object.assign(
342
- new Error(
343
- "Read operations are not supported via OAuth. Use managed mode for read access.",
344
- ),
345
- { pathUsed: "oauth" as const },
346
- );
347
- }
348
-
349
- const _exhaustive: never = opts.mode;
350
- throw new Error(`Unknown mode: ${_exhaustive}`);
351
- }
@@ -1,30 +0,0 @@
1
- /**
2
- * Public types shared across the Twitter CLI module.
3
- * Extracted from the former browser CDP client.
4
- */
5
-
6
- export interface PostTweetResult {
7
- tweetId: string;
8
- text: string;
9
- url: string;
10
- }
11
-
12
- export interface UserInfo {
13
- userId: string;
14
- screenName: string;
15
- name: string;
16
- }
17
-
18
- export interface TweetEntry {
19
- tweetId: string;
20
- text: string;
21
- url: string;
22
- createdAt: string;
23
- }
24
-
25
- export interface NotificationEntry {
26
- id: string;
27
- message: string;
28
- timestamp: string;
29
- url?: string;
30
- }
@@ -1,132 +0,0 @@
1
- ---
2
- name: agentmail
3
- description: Run email operations through a provider-agnostic CLI wrapper
4
- compatibility: "Designed for Vellum personal assistants"
5
- metadata: {"emoji":"📬","vellum":{"display-name":"Email CLI Ops","user-invocable":true}}
6
- ---
7
-
8
- ## How to run
9
-
10
- `vellum` is your own CLI binary — it is already installed and available on the PATH.
11
- Run all commands via `bash`. Do NOT attempt to install, build, or locate the CLI — just execute it directly.
12
-
13
- Example: `bash("assistant email status --json")`
14
-
15
- Never use browser/computer-use unless user explicitly approves fallback.
16
-
17
- ## When to Use This Skill
18
-
19
- This skill manages the **assistant's own** AgentMail address (`@agentmail.to`) — not the user's personal email. Only use this skill when the user explicitly asks the assistant to send email **from the assistant's own address**, manage the assistant's inbox, or perform operations on the assistant's AgentMail account. Generic email requests ("send an email", "check my email", "draft a reply") are about the **user's Gmail** and should be handled by the Messaging skill instead.
20
-
21
- ## Rules
22
-
23
- - Always run `assistant email` commands via `bash` and parse JSON output.
24
- - Always do `assistant email status --json` preflight first.
25
- - Prefer `draft create` before any send — never bypass draft flow.
26
- - Require explicit user confirmation before `draft approve-send --confirm`.
27
- - When uncertain, draft to ops@ inbox and notify user.
28
- - Never send cold outreach without explicit user authorization.
29
-
30
- ## API Key Setup
31
-
32
- If `assistant email status --json` returns an error about a missing API key, prompt the user for their AgentMail API key using the secure credential prompt. **Never ask the user to paste the key in chat.**
33
-
34
- Use `credential_store` with:
35
- - action: `prompt`
36
- - service: `agentmail`
37
- - field: `api_key`
38
- - label: `AgentMail API Key`
39
- - description: `Get your API key from console.agentmail.to`
40
- - placeholder: `am_us_...`
41
- - allowed_tools: `["bash"]`
42
- - usage_description: `AgentMail email operations via vellum CLI`
43
-
44
- After the credential is stored, retry `assistant email status --json` to confirm it works.
45
-
46
- ## Workflow
47
-
48
- 1. **Preflight:** `assistant email status --json` (if API key error, run API Key Setup above)
49
- 2. **Quick inbox:** `assistant email inbox create --username <name>` (creates e.g. sam@agentmail.to — no custom domain needed)
50
- 3. **Custom domain setup (optional):** domain -> dns -> verify -> inboxes -> webhook
51
- 4. **Draft path:** `assistant email draft create ...` — always draft first
52
- 5. **Send path:** show draft -> user confirms -> `draft approve-send --draft-id <id> --confirm`
53
- 6. **Inbound triage:** list -> get -> summarize -> propose reply draft
54
- 7. **Guardrails:** check with `guardrails get`, use `guardrails set` to change
55
-
56
- ## Command Reference
57
-
58
- ### Provider
59
-
60
- ```
61
- assistant email provider get [--json] # Show active provider
62
- assistant email provider set <provider> [--json] # Switch provider
63
- ```
64
-
65
- ### Status
66
-
67
- ```
68
- assistant email status [--json] # Provider health + guardrails
69
- ```
70
-
71
- ### Inbox Management
72
-
73
- ```
74
- assistant email inbox create --username <name> [--domain <d>] [--display-name <n>] [--json] # Create a new inbox (e.g. --username sam)
75
- assistant email inbox list [--json] # List all inboxes
76
- ```
77
-
78
- ### Setup
79
-
80
- ```
81
- assistant email setup domain --domain <d> [--dry-run] [--json]
82
- assistant email setup dns --domain <d> [--json]
83
- assistant email setup verify --domain <d> [--json]
84
- assistant email setup inboxes --domain <d> [--json] # Creates standard hello@/support@/ops@ inboxes
85
- assistant email setup webhook --url <u> [--secret <s>] [--json]
86
- ```
87
-
88
- ### Drafts
89
-
90
- ```
91
- assistant email draft create --from <addr> --to <addr> --subject <s> --body <b> [--cc <addr>] [--in-reply-to <msg-id>] [--json]
92
- assistant email draft list [--status pending|approved|sent|rejected] [--json]
93
- assistant email draft get <draft-id> [--json]
94
- assistant email draft approve-send --draft-id <id> --confirm [--json]
95
- assistant email draft reject --draft-id <id> [--reason <text>] [--json]
96
- assistant email draft delete <draft-id> [--json]
97
- ```
98
-
99
- ### Inbound
100
-
101
- ```
102
- assistant email inbound list [--thread-id <id>] [--json]
103
- assistant email inbound get <message-id> [--json]
104
- ```
105
-
106
- ### Threads
107
-
108
- ```
109
- assistant email thread list [--json]
110
- assistant email thread get <thread-id> [--json]
111
- ```
112
-
113
- ### Guardrails
114
-
115
- ```
116
- assistant email guardrails get [--json]
117
- assistant email guardrails set --paused <true|false> --daily-cap <n> [--json]
118
- assistant email guardrails block <pattern> [--json]
119
- assistant email guardrails allow <pattern> [--json]
120
- assistant email guardrails rules [--json]
121
- assistant email guardrails unrule <rule-id> [--json]
122
- ```
123
-
124
- ## Output Format
125
-
126
- All commands output JSON (pretty-printed by default, compact with `--json`).
127
- Every response includes `ok: true|false`.
128
-
129
- Exit codes:
130
- - `0` = success (`ok: true`)
131
- - `1` = error (`ok: false, error: "..."`)
132
- - `2` = guardrail blocked (`ok: false, error: "outbound_paused|daily_cap_reached|address_blocked"`)
@@ -1,21 +0,0 @@
1
- <svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
2
- <rect width="16" height="16" fill="#0a0e27"/>
3
- <rect x="2" y="3" width="12" height="8" fill="#1e40af" stroke="#60a5fa" stroke-width="1"/>
4
- <rect x="2" y="3" width="12" height="2" fill="#3b82f6"/>
5
- <rect x="3" y="4" width="10" height="1" fill="#0a0e27"/>
6
- <rect x="3" y="5" width="5" height="1" fill="#93c5fd"/>
7
- <rect x="3" y="6" width="5" height="1" fill="#bfdbfe"/>
8
- <rect x="9" y="5" width="3" height="1" fill="#bfdbfe"/>
9
- <rect x="9" y="6" width="3" height="1" fill="#93c5fd"/>
10
- <rect x="2" y="12" width="3" height="1" fill="#059669"/>
11
- <rect x="3" y="13" width="2" height="1" fill="#10b981"/>
12
- <rect x="2" y="14" width="1" height="1" fill="#10b981"/>
13
- <rect x="3" y="14" width="1" height="1" fill="#34d399"/>
14
- <rect x="6" y="12" width="8" height="1" fill="#1f2937"/>
15
- <rect x="6" y="13" width="8" height="1" fill="#374151"/>
16
- <rect x="6" y="14" width="8" height="1" fill="#1f2937"/>
17
- <rect x="7" y="13" width="1" height="1" fill="#60a5fa"/>
18
- <rect x="9" y="13" width="1" height="1" fill="#60a5fa"/>
19
- <rect x="11" y="13" width="1" height="1" fill="#60a5fa"/>
20
- <rect x="13" y="13" width="1" height="1" fill="#60a5fa"/>
21
- </svg>
@@ -1,136 +0,0 @@
1
- ---
2
- name: amazon
3
- description: Shop on Amazon and Amazon Fresh using the built-in CLI integration
4
- compatibility: "Designed for Vellum personal assistants"
5
- metadata: {"emoji":"📦","vellum":{"display-name":"Amazon","user-invocable":true}}
6
- ---
7
-
8
- You can shop on Amazon (and Amazon Fresh for groceries) for the user using the `assistant amazon` CLI.
9
-
10
- ## CLI Setup
11
-
12
- **IMPORTANT: Always use `host_bash` (not `bash`) for all `assistant amazon` commands.** The Amazon CLI needs host access for session cookies and the `vellum` binary — neither of which are available inside the sandbox.
13
-
14
- `assistant amazon` is a built-in subcommand of the Vellum assistant CLI — it is NOT a separate tool you need to find or install. It should already be on your PATH. If `vellum` is not found, prepend `PATH="$HOME/.local/bin:$PATH"` to the command. Do NOT search for the binary, inspect wrapper scripts, or try to discover how the CLI works. Just run the commands as documented below.
15
-
16
- ## Typical Flow — Regular Amazon Shopping
17
-
18
- When the user asks you to order something from Amazon:
19
-
20
- 1. **Check session** — run `assistant amazon status --json`. If `loggedIn` is false or the session is expired, tell the user: "A Chrome window will open to the Amazon login page. Please sign in there — I'll detect your login automatically and minimize the window." Then run `assistant amazon refresh --json`. This starts a Ride Shotgun learn session that records your login and auto-stops once it detects you've signed in. The session is imported automatically. **This command blocks until login is complete — just wait for it.**
21
-
22
- 2. **Search** — run `assistant amazon search "<query>" --json` to find matching products. Present the top results with ASIN, title, price, and Prime status. If the user named a specific product, pick the best match. If ambiguous, ask.
23
-
24
- 3. **Product details** (if needed) — run `assistant amazon product <asin> --json` to get full details including price and variations. For products with variants (size, color, etc.), see the Variations section below.
25
-
26
- 4. **Add to cart** — run `assistant amazon cart add --asin <asin> [--quantity <n>] --json`. The response includes the updated cart with all items.
27
-
28
- 5. **Review cart** — run `assistant amazon cart view --json` and show the user what's in their cart with prices. Ask if they want to add anything else or proceed.
29
-
30
- 6. **Payment methods** — run `assistant amazon payment-methods --json` to see saved cards.
31
-
32
- 7. **Checkout summary** — run `assistant amazon checkout --json` to get order totals (subtotal, shipping, tax, total).
33
-
34
- 8. **Place order** — after the user explicitly confirms, run `assistant amazon order place [--payment-method-id <id>] --json`. The response contains `orderId` on success.
35
-
36
- ## Typical Flow — Amazon Fresh Groceries
37
-
38
- Amazon Fresh delivers groceries. The flow is the same as regular Amazon, with these additions:
39
-
40
- 1. **Search Fresh** — use the `--fresh` flag: `assistant amazon search "<query>" --fresh --json`
41
-
42
- 2. **Add Fresh items** — use the `--fresh` flag: `assistant amazon cart add --asin <asin> --fresh --json`
43
-
44
- 3. **Select delivery slot** — Fresh orders require a delivery window:
45
- - `assistant amazon fresh delivery-slots --json` — list available slots
46
- - `assistant amazon fresh select-slot --slot-id <id> --json` — select a slot
47
- - Do this BEFORE checkout.
48
-
49
- 4. **Checkout and order** — same as regular Amazon.
50
-
51
- ## Handling Variations
52
-
53
- Many Amazon products (clothing, electronics) have variations (size, color, style):
54
-
55
- 1. Run `assistant amazon product <asin> --json` to get the product and its `variations[]` array
56
- 2. Each variation has: `dimensionName` (e.g. "size"), `value` (e.g. "Large"), `asin` (child ASIN), `isAvailable`, `priceValue`
57
- 3. Use the child ASIN when adding to cart: `assistant amazon cart add --asin <child-asin> --json`
58
-
59
- Alternatively, run `assistant amazon variations <asin> --json` to list just the variations.
60
-
61
- ## Session Storage
62
-
63
- Session cookies are stored in the encrypted credential store under the key `amazon:session:cookies`. You can inspect the stored session with:
64
-
65
- ```bash
66
- assistant credentials inspect amazon:session:cookies
67
- ```
68
-
69
- Session capture (`assistant amazon refresh`) and session checks (`assistant amazon status`) use the credential store automatically — no manual file management is needed.
70
-
71
- ## Important Behavior
72
-
73
- - **Chrome extension relay required.** The Amazon CLI uses `assistant browser chrome relay` internally for browser automation. The Chrome extension must be connected before Amazon commands will work. If a command fails with a connection error, tell the user: "Please open Chrome, click the Vellum extension icon, and click Connect — then I'll retry."
74
- - **Always confirm before placing order.** Never call `order place` without explicit user approval. Show the cart and total first.
75
- - **Be proactive.** If the user says "order AA batteries", don't ask clarifying questions upfront — search, find the product, and suggest it. Only ask when you need a choice the user hasn't specified.
76
- - **Handle expired sessions gracefully.** If any command returns `"error": "session_expired"`, run `assistant amazon refresh --json` to re-capture the session.
77
- - **Show prices.** Always show prices when presenting products or the cart summary.
78
- - **Use `--json` flag** on all commands for reliable parsing.
79
- - **Do NOT use the browser skill.** All Amazon interaction goes through the CLI, not browser automation.
80
- - **Rate limiting.** Amazon may rate-limit rapid sequential requests. Wait 8–10 seconds between cart operations. If you get a 403 error, wait 15–20 seconds and retry.
81
- - **Always-allow tip.** At the start of an ordering flow, suggest the user enable "always allow" for `assistant amazon` commands: "Tip: You can type 'a' to always allow `assistant amazon` commands for this session so you won't be prompted each time."
82
- - **Fresh slot required.** Amazon Fresh orders require a delivery slot to be selected before checkout. If the user skips this step, remind them to run `assistant amazon fresh delivery-slots --json` and select a slot.
83
-
84
- ## Command Reference
85
-
86
- ```
87
- assistant amazon status --json # Check if logged in
88
- assistant amazon refresh --json # Capture fresh session via Ride Shotgun
89
- assistant amazon logout # Clear session
90
-
91
- assistant amazon search "<query>" [--fresh] [--limit <n>] --json
92
- assistant amazon product <asin> [--fresh] --json
93
- assistant amazon variations <asin> --json
94
-
95
- assistant amazon cart view --json
96
- assistant amazon cart add --asin <asin> [--quantity <n>] [--fresh] --json
97
- assistant amazon cart remove --cart-item-id <id> --json
98
-
99
- assistant amazon fresh delivery-slots --json
100
- assistant amazon fresh select-slot --slot-id <id> --json
101
-
102
- assistant amazon payment-methods --json
103
- assistant amazon checkout --json
104
- assistant amazon order place [--payment-method-id <id>] --json
105
- ```
106
-
107
- ## Example Interactions
108
-
109
- **User**: "Order a pack of AA batteries from Amazon"
110
-
111
- 1. `assistant amazon status --json` → logged in
112
- 2. `assistant amazon search "AA batteries" --json` → finds products
113
- 3. Show top results: "Duracell AA 20-pack ($12.99, Prime), Amazon Basics AA 48-pack ($14.49, Prime)..."
114
- 4. User picks Duracell → `assistant amazon cart add --asin B00000J1ER --json`
115
- 5. `assistant amazon cart view --json` → show cart summary
116
- 6. `assistant amazon checkout --json` → show total
117
- 7. "Your cart has 1x Duracell AA Batteries 20-pack ($12.99), total $12.99 with free Prime shipping. Ready to order?"
118
- 8. User confirms → `assistant amazon order place --json`
119
-
120
- **User**: "Order a large blue t-shirt from Amazon"
121
-
122
- 1. `assistant amazon search "blue t-shirt" --json` → finds products
123
- 2. User picks a shirt → `assistant amazon variations <parentAsin> --json` → shows Size + Color combinations
124
- 3. Find the child ASIN for Large + Blue → `assistant amazon cart add --asin <childAsin> --json`
125
-
126
- **User**: "Order milk and eggs from Amazon Fresh"
127
-
128
- 1. `assistant amazon status --json` → logged in
129
- 2. `assistant amazon search "whole milk" --fresh --json` → Fresh results
130
- 3. `assistant amazon cart add --asin <milkAsin> --fresh --json`
131
- 4. `assistant amazon search "eggs" --fresh --json` → Fresh results
132
- 5. `assistant amazon cart add --asin <eggsAsin> --fresh --json`
133
- 6. `assistant amazon fresh delivery-slots --json` → show available slots
134
- 7. User picks a slot → `assistant amazon fresh select-slot --slot-id <id> --json`
135
- 8. `assistant amazon checkout --json` → show totals
136
- 9. User confirms → `assistant amazon order place --json`
@@ -1,13 +0,0 @@
1
- <svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
2
- <rect width="16" height="16" fill="#ffffff"/>
3
- <rect x="2" y="3" width="12" height="9" fill="#FF9900" stroke="#232F3E" stroke-width="1"/>
4
- <rect x="3" y="4" width="10" height="7" fill="#FF9900"/>
5
- <rect x="4" y="5" width="2" height="2" fill="#232F3E"/>
6
- <rect x="7" y="5" width="2" height="2" fill="#232F3E"/>
7
- <rect x="10" y="5" width="2" height="2" fill="#232F3E"/>
8
- <rect x="4" y="8" width="2" height="2" fill="#232F3E"/>
9
- <rect x="7" y="8" width="2" height="2" fill="#232F3E"/>
10
- <rect x="10" y="8" width="2" height="2" fill="#232F3E"/>
11
- <path d="M 3 13 Q 8 14 13 13" stroke="#232F3E" stroke-width="1" fill="none"/>
12
- <rect x="2" y="13" width="12" height="1" fill="#232F3E"/>
13
- </svg>