@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
@@ -121,7 +121,7 @@
121
121
  },
122
122
  {
123
123
  "name": "messaging_send",
124
- "description": "Compose a message. For Gmail, creates a draft for review; for other platforms, sends directly. High-risk action. Include a confidence score (0-1).",
124
+ "description": "Send a message, reply to a thread, or create a draft. On Gmail, always creates a draft for review. Supports replies (via thread_id), attachments (via attachment_paths, Gmail only), and all messaging platforms.",
125
125
  "category": "messaging",
126
126
  "risk": "high",
127
127
  "input_schema": {
@@ -133,7 +133,7 @@
133
133
  },
134
134
  "conversation_id": {
135
135
  "type": "string",
136
- "description": "Channel ID, email address, or conversation ID to send to"
136
+ "description": "Conversation/channel ID. For Gmail new messages, use the recipient email address."
137
137
  },
138
138
  "text": {
139
139
  "type": "string",
@@ -147,43 +147,16 @@
147
147
  "type": "string",
148
148
  "description": "Message-ID header for replies (Gmail only)"
149
149
  },
150
- "confidence": {
151
- "type": "number",
152
- "description": "Confidence score (0-1) for this action"
153
- },
154
- "reason": {
155
- "type": "string",
156
- "description": "Brief non-technical explanation of why this tool is being called"
157
- }
158
- },
159
- "required": ["conversation_id", "text", "confidence"]
160
- },
161
- "executor": "tools/messaging-send.ts",
162
- "execution_target": "host"
163
- },
164
- {
165
- "name": "messaging_reply",
166
- "description": "Reply in a thread. For Gmail, creates a threaded draft with reply-all recipients; for other platforms, sends directly. Include a confidence score (0-1).",
167
- "category": "messaging",
168
- "risk": "medium",
169
- "input_schema": {
170
- "type": "object",
171
- "properties": {
172
- "platform": {
173
- "type": "string",
174
- "description": "Platform (e.g. \"slack\", \"gmail\"). Auto-detected if only one is connected."
175
- },
176
- "conversation_id": {
177
- "type": "string",
178
- "description": "Channel ID or conversation ID"
150
+ "attachment_paths": {
151
+ "type": "array",
152
+ "items": {
153
+ "type": "string"
154
+ },
155
+ "description": "Absolute file paths of attachments to include (Gmail only)"
179
156
  },
180
157
  "thread_id": {
181
158
  "type": "string",
182
- "description": "Thread ID to reply to"
183
- },
184
- "text": {
185
- "type": "string",
186
- "description": "Reply text"
159
+ "description": "Thread ID for replies. When provided, the message is sent as a reply within the thread. On Gmail, auto-extracts reply-all recipients and threading headers."
187
160
  },
188
161
  "confidence": {
189
162
  "type": "number",
@@ -194,9 +167,9 @@
194
167
  "description": "Brief non-technical explanation of why this tool is being called"
195
168
  }
196
169
  },
197
- "required": ["conversation_id", "thread_id", "text", "confidence"]
170
+ "required": ["conversation_id", "text", "confidence"]
198
171
  },
199
- "executor": "tools/messaging-reply.ts",
172
+ "executor": "tools/messaging-send.ts",
200
173
  "execution_target": "host"
201
174
  },
202
175
  {
@@ -229,27 +202,6 @@
229
202
  "executor": "tools/messaging-mark-read.ts",
230
203
  "execution_target": "host"
231
204
  },
232
- {
233
- "name": "messaging_analyze_activity",
234
- "description": "Analyze channel or conversation activity levels. Groups conversations as high/medium/low/dead activity.",
235
- "category": "messaging",
236
- "risk": "low",
237
- "input_schema": {
238
- "type": "object",
239
- "properties": {
240
- "platform": {
241
- "type": "string",
242
- "description": "Platform (e.g. \"slack\", \"gmail\"). Auto-detected if only one is connected."
243
- },
244
- "reason": {
245
- "type": "string",
246
- "description": "Brief non-technical explanation of why this tool is being called"
247
- }
248
- }
249
- },
250
- "executor": "tools/messaging-analyze-activity.ts",
251
- "execution_target": "host"
252
- },
253
205
  {
254
206
  "name": "messaging_analyze_style",
255
207
  "description": "Analyze sent messages to extract personal writing style patterns. Saves style characteristics to memory for personalized drafting. Run once to enable style-aware message composition.",
@@ -327,217 +279,57 @@
327
279
  "execution_target": "host"
328
280
  },
329
281
  {
330
- "name": "gmail_archive",
331
- "description": "Archive a Gmail message (remove from inbox). Include a confidence score (0-1).",
332
- "category": "messaging",
333
- "risk": "medium",
334
- "input_schema": {
335
- "type": "object",
336
- "properties": {
337
- "message_id": {
338
- "type": "string",
339
- "description": "Gmail message ID to archive"
340
- },
341
- "confidence": {
342
- "type": "number",
343
- "description": "Confidence score (0-1) for this action"
344
- },
345
- "reason": {
346
- "type": "string",
347
- "description": "Brief non-technical explanation of why this tool is being called"
348
- }
349
- },
350
- "required": ["message_id", "confidence"]
351
- },
352
- "executor": "tools/gmail-archive.ts",
353
- "execution_target": "host"
354
- },
355
- {
356
- "name": "gmail_batch_archive",
357
- "description": "Archive multiple Gmail messages at once. Prefer scan_id + sender_ids (from a prior scan) over raw message_ids. Include a confidence score (0-1).",
282
+ "name": "messaging_sender_digest",
283
+ "description": "Scan connected email platform and group messages by sender to identify high-volume senders (e.g. newsletters). Works with any email provider that supports sender digest. Returns top senders sorted by message count with metadata for bulk cleanup.",
358
284
  "category": "messaging",
359
- "risk": "medium",
285
+ "risk": "low",
360
286
  "input_schema": {
361
287
  "type": "object",
362
288
  "properties": {
363
- "scan_id": {
289
+ "platform": {
364
290
  "type": "string",
365
- "description": "Scan result ID from a prior gmail_sender_digest or gmail_outreach_scan call"
366
- },
367
- "sender_ids": {
368
- "type": "array",
369
- "items": {
370
- "type": "string"
371
- },
372
- "description": "Sender IDs to archive (used with scan_id to resolve message IDs server-side)"
373
- },
374
- "message_ids": {
375
- "type": "array",
376
- "items": {
377
- "type": "string"
378
- },
379
- "description": "Gmail message IDs to archive (fallback \u2014 prefer scan_id + sender_ids)"
380
- },
381
- "confidence": {
382
- "type": "number",
383
- "description": "Confidence score (0-1) for this action"
291
+ "description": "Platform (e.g. \"gmail\"). Auto-detected if only one is connected."
384
292
  },
385
- "reason": {
386
- "type": "string",
387
- "description": "Brief non-technical explanation of why this tool is being called"
388
- }
389
- },
390
- "required": ["confidence"]
391
- },
392
- "executor": "tools/gmail-batch-archive.ts",
393
- "execution_target": "host"
394
- },
395
- {
396
- "name": "gmail_archive_by_query",
397
- "description": "Archive ALL Gmail messages matching a search query. Paginates through all results and archives in bulk. Ideal for high-volume senders where message IDs are not pre-collected. Include a confidence score (0-1).",
398
- "category": "messaging",
399
- "risk": "medium",
400
- "input_schema": {
401
- "type": "object",
402
- "properties": {
403
293
  "query": {
404
294
  "type": "string",
405
- "description": "Gmail search query (e.g. \"from:marketing@example.com category:promotions newer_than:90d\")"
295
+ "description": "Search query (default 'category:promotions newer_than:90d')"
406
296
  },
407
- "confidence": {
297
+ "max_messages": {
408
298
  "type": "number",
409
- "description": "Confidence score (0-1) for this action"
410
- },
411
- "reason": {
412
- "type": "string",
413
- "description": "Brief non-technical explanation of why this tool is being called"
414
- }
415
- },
416
- "required": ["query", "confidence"]
417
- },
418
- "executor": "tools/gmail-archive-by-query.ts",
419
- "execution_target": "host"
420
- },
421
- {
422
- "name": "gmail_label",
423
- "description": "Add or remove labels on a Gmail message. Include a confidence score (0-1).",
424
- "category": "messaging",
425
- "risk": "medium",
426
- "input_schema": {
427
- "type": "object",
428
- "properties": {
429
- "message_id": {
430
- "type": "string",
431
- "description": "Gmail message ID"
432
- },
433
- "add_label_ids": {
434
- "type": "array",
435
- "items": {
436
- "type": "string"
437
- },
438
- "description": "Label IDs to add"
439
- },
440
- "remove_label_ids": {
441
- "type": "array",
442
- "items": {
443
- "type": "string"
444
- },
445
- "description": "Label IDs to remove"
299
+ "description": "Maximum messages to scan (default 5000, cap 5000)"
446
300
  },
447
- "confidence": {
301
+ "max_senders": {
448
302
  "type": "number",
449
- "description": "Confidence score (0-1) for this action"
303
+ "description": "Maximum senders to return (default 30)"
450
304
  },
451
- "reason": {
305
+ "page_token": {
452
306
  "type": "string",
453
- "description": "Brief non-technical explanation of why this tool is being called"
454
- }
455
- },
456
- "required": ["message_id", "confidence"]
457
- },
458
- "executor": "tools/gmail-label.ts",
459
- "execution_target": "host"
460
- },
461
- {
462
- "name": "gmail_batch_label",
463
- "description": "Add or remove labels on multiple Gmail messages. Include a confidence score (0-1).",
464
- "category": "messaging",
465
- "risk": "medium",
466
- "input_schema": {
467
- "type": "object",
468
- "properties": {
469
- "message_ids": {
470
- "type": "array",
471
- "items": {
472
- "type": "string"
473
- },
474
- "description": "Gmail message IDs"
475
- },
476
- "add_label_ids": {
477
- "type": "array",
478
- "items": {
479
- "type": "string"
480
- },
481
- "description": "Label IDs to add"
482
- },
483
- "remove_label_ids": {
484
- "type": "array",
485
- "items": {
486
- "type": "string"
487
- },
488
- "description": "Label IDs to remove"
489
- },
490
- "confidence": {
491
- "type": "number",
492
- "description": "Confidence score (0-1) for this action"
307
+ "description": "Resume token from a previous scan (rarely needed \u2014 scans now cover up to 5,000 messages in a single call)"
493
308
  },
494
309
  "reason": {
495
310
  "type": "string",
496
311
  "description": "Brief non-technical explanation of why this tool is being called"
497
312
  }
498
- },
499
- "required": ["message_ids", "confidence"]
313
+ }
500
314
  },
501
- "executor": "tools/gmail-batch-label.ts",
315
+ "executor": "tools/messaging-sender-digest.ts",
502
316
  "execution_target": "host"
503
317
  },
504
318
  {
505
- "name": "gmail_trash",
506
- "description": "Move a Gmail message to trash. Include a confidence score (0-1).",
319
+ "name": "messaging_archive_by_sender",
320
+ "description": "Archive all messages matching a search query on the connected email platform. Paginates through all results and archives in bulk. Works with any email provider that supports archive by query. Include a confidence score (0-1).",
507
321
  "category": "messaging",
508
322
  "risk": "medium",
509
323
  "input_schema": {
510
324
  "type": "object",
511
325
  "properties": {
512
- "message_id": {
326
+ "platform": {
513
327
  "type": "string",
514
- "description": "Gmail message ID to trash"
515
- },
516
- "confidence": {
517
- "type": "number",
518
- "description": "Confidence score (0-1) for this action"
328
+ "description": "Platform (e.g. \"gmail\"). Auto-detected if only one is connected."
519
329
  },
520
- "reason": {
521
- "type": "string",
522
- "description": "Brief non-technical explanation of why this tool is being called"
523
- }
524
- },
525
- "required": ["message_id", "confidence"]
526
- },
527
- "executor": "tools/gmail-trash.ts",
528
- "execution_target": "host"
529
- },
530
- {
531
- "name": "gmail_unsubscribe",
532
- "description": "Unsubscribe from a mailing list by following the List-Unsubscribe header. Include a confidence score (0-1).",
533
- "category": "messaging",
534
- "risk": "medium",
535
- "input_schema": {
536
- "type": "object",
537
- "properties": {
538
- "message_id": {
330
+ "query": {
539
331
  "type": "string",
540
- "description": "A Gmail message ID from the mailing list to unsubscribe from"
332
+ "description": "Search query (e.g. \"from:marketing@example.com category:promotions newer_than:90d\")"
541
333
  },
542
334
  "confidence": {
543
335
  "type": "number",
@@ -548,983 +340,9 @@
548
340
  "description": "Brief non-technical explanation of why this tool is being called"
549
341
  }
550
342
  },
551
- "required": ["message_id", "confidence"]
552
- },
553
- "executor": "tools/gmail-unsubscribe.ts",
554
- "execution_target": "host"
555
- },
556
- {
557
- "name": "gmail_draft",
558
- "description": "Create a draft email in Gmail. The draft will appear in Gmail Drafts for user review.",
559
- "category": "messaging",
560
- "risk": "low",
561
- "input_schema": {
562
- "type": "object",
563
- "properties": {
564
- "to": {
565
- "type": "string",
566
- "description": "Recipient email address"
567
- },
568
- "subject": {
569
- "type": "string",
570
- "description": "Email subject line"
571
- },
572
- "body": {
573
- "type": "string",
574
- "description": "Email body (plain text)"
575
- },
576
- "in_reply_to": {
577
- "type": "string",
578
- "description": "RFC 822 Message-ID header value (e.g. `<CABx...@mail.gmail.com>`), NOT the Gmail message ID. Look up the original message's Message-ID header."
579
- },
580
- "cc": {
581
- "type": "string",
582
- "description": "CC recipients (comma-separated email addresses)"
583
- },
584
- "bcc": {
585
- "type": "string",
586
- "description": "BCC recipients (comma-separated email addresses)"
587
- },
588
- "reason": {
589
- "type": "string",
590
- "description": "Brief non-technical explanation of why this tool is being called"
591
- }
592
- },
593
- "required": ["to", "subject", "body"]
343
+ "required": ["query", "confidence"]
594
344
  },
595
- "executor": "tools/gmail-draft.ts",
596
- "execution_target": "host"
597
- },
598
- {
599
- "name": "gmail_send_draft",
600
- "description": "Send an existing Gmail draft. Only use when the user has reviewed and explicitly approved sending.",
601
- "category": "messaging",
602
- "risk": "high",
603
- "input_schema": {
604
- "type": "object",
605
- "properties": {
606
- "draft_id": {
607
- "type": "string",
608
- "description": "Gmail draft ID to send"
609
- },
610
- "confidence": {
611
- "type": "number",
612
- "description": "Confidence score (0-1) for this action"
613
- },
614
- "reason": {
615
- "type": "string",
616
- "description": "Brief non-technical explanation of why this tool is being called"
617
- }
618
- },
619
- "required": ["draft_id", "confidence"]
620
- },
621
- "executor": "tools/gmail-send-draft.ts",
622
- "execution_target": "host"
623
- },
624
- {
625
- "name": "gmail_list_attachments",
626
- "description": "List attachments on a Gmail message with filename, MIME type, size, and attachment ID.",
627
- "category": "messaging",
628
- "risk": "low",
629
- "input_schema": {
630
- "type": "object",
631
- "properties": {
632
- "message_id": {
633
- "type": "string",
634
- "description": "Gmail message ID to list attachments for"
635
- },
636
- "reason": {
637
- "type": "string",
638
- "description": "Brief non-technical explanation of why this tool is being called"
639
- }
640
- },
641
- "required": ["message_id"]
642
- },
643
- "executor": "tools/gmail-list-attachments.ts",
644
- "execution_target": "host"
645
- },
646
- {
647
- "name": "gmail_download_attachment",
648
- "description": "Download a Gmail attachment to the working directory.",
649
- "category": "messaging",
650
- "risk": "low",
651
- "input_schema": {
652
- "type": "object",
653
- "properties": {
654
- "message_id": {
655
- "type": "string",
656
- "description": "Gmail message ID"
657
- },
658
- "attachment_id": {
659
- "type": "string",
660
- "description": "Attachment ID from gmail_list_attachments"
661
- },
662
- "filename": {
663
- "type": "string",
664
- "description": "Filename to save as"
665
- },
666
- "reason": {
667
- "type": "string",
668
- "description": "Brief non-technical explanation of why this tool is being called"
669
- }
670
- },
671
- "required": ["message_id", "attachment_id", "filename"]
672
- },
673
- "executor": "tools/gmail-download-attachment.ts",
674
- "execution_target": "host"
675
- },
676
- {
677
- "name": "gmail_send_with_attachments",
678
- "description": "Create a Gmail draft with file attachments for review. Include a confidence score (0-1).",
679
- "category": "messaging",
680
- "risk": "high",
681
- "input_schema": {
682
- "type": "object",
683
- "properties": {
684
- "to": {
685
- "type": "string",
686
- "description": "Recipient email address"
687
- },
688
- "subject": {
689
- "type": "string",
690
- "description": "Email subject line"
691
- },
692
- "body": {
693
- "type": "string",
694
- "description": "Email body (plain text)"
695
- },
696
- "attachment_paths": {
697
- "type": "array",
698
- "items": {
699
- "type": "string"
700
- },
701
- "description": "Absolute file paths of attachments to include"
702
- },
703
- "in_reply_to": {
704
- "type": "string",
705
- "description": "Message-ID header for replies"
706
- },
707
- "thread_id": {
708
- "type": "string",
709
- "description": "Thread ID to continue an existing thread"
710
- },
711
- "confidence": {
712
- "type": "number",
713
- "description": "Confidence score (0-1) for this action"
714
- },
715
- "reason": {
716
- "type": "string",
717
- "description": "Brief non-technical explanation of why this tool is being called"
718
- }
719
- },
720
- "required": ["to", "subject", "body", "attachment_paths", "confidence"]
721
- },
722
- "executor": "tools/gmail-send-with-attachments.ts",
723
- "execution_target": "host"
724
- },
725
- {
726
- "name": "gmail_forward",
727
- "description": "Create a draft forwarding a Gmail message to another recipient, preserving attachments. Include a confidence score (0-1).",
728
- "category": "messaging",
729
- "risk": "high",
730
- "input_schema": {
731
- "type": "object",
732
- "properties": {
733
- "message_id": {
734
- "type": "string",
735
- "description": "Gmail message ID to forward"
736
- },
737
- "to": {
738
- "type": "string",
739
- "description": "Recipient email address"
740
- },
741
- "text": {
742
- "type": "string",
743
- "description": "Optional text to prepend to the forwarded message"
744
- },
745
- "confidence": {
746
- "type": "number",
747
- "description": "Confidence score (0-1) for this action"
748
- },
749
- "reason": {
750
- "type": "string",
751
- "description": "Brief non-technical explanation of why this tool is being called"
752
- }
753
- },
754
- "required": ["message_id", "to", "confidence"]
755
- },
756
- "executor": "tools/gmail-forward.ts",
757
- "execution_target": "host"
758
- },
759
- {
760
- "name": "gmail_summarize_thread",
761
- "description": "Summarize a Gmail thread using LLM analysis. Returns participants, key decisions, open questions, and sentiment.",
762
- "category": "messaging",
763
- "risk": "low",
764
- "input_schema": {
765
- "type": "object",
766
- "properties": {
767
- "thread_id": {
768
- "type": "string",
769
- "description": "Gmail thread ID to summarize"
770
- },
771
- "reason": {
772
- "type": "string",
773
- "description": "Brief non-technical explanation of why this tool is being called"
774
- }
775
- },
776
- "required": ["thread_id"]
777
- },
778
- "executor": "tools/gmail-summarize-thread.ts",
779
- "execution_target": "host"
780
- },
781
- {
782
- "name": "gmail_follow_up",
783
- "description": "Track, list, or untrack Gmail messages for follow-up using a dedicated label. Include a confidence score (0-1).",
784
- "category": "messaging",
785
- "risk": "medium",
786
- "input_schema": {
787
- "type": "object",
788
- "properties": {
789
- "action": {
790
- "type": "string",
791
- "enum": ["track", "list", "untrack"],
792
- "description": "Follow-up action"
793
- },
794
- "message_id": {
795
- "type": "string",
796
- "description": "Gmail message ID (required for track/untrack)"
797
- },
798
- "confidence": {
799
- "type": "number",
800
- "description": "Confidence score (0-1) for this action"
801
- },
802
- "reason": {
803
- "type": "string",
804
- "description": "Brief non-technical explanation of why this tool is being called"
805
- }
806
- },
807
- "required": ["action", "confidence"]
808
- },
809
- "executor": "tools/gmail-follow-up.ts",
810
- "execution_target": "host"
811
- },
812
- {
813
- "name": "gmail_triage",
814
- "description": "LLM-powered inbox triage: classify unread emails by urgency and type, optionally auto-apply actions. Include a confidence score (0-1).",
815
- "category": "messaging",
816
- "risk": "medium",
817
- "input_schema": {
818
- "type": "object",
819
- "properties": {
820
- "max_results": {
821
- "type": "number",
822
- "description": "Maximum emails to triage (default 20)"
823
- },
824
- "auto_apply": {
825
- "type": "boolean",
826
- "description": "Auto-archive can_archive and label needs_reply as Follow-up (default false)"
827
- },
828
- "query": {
829
- "type": "string",
830
- "description": "Gmail search query (default 'is:unread in:inbox')"
831
- },
832
- "confidence": {
833
- "type": "number",
834
- "description": "Confidence score (0-1) for this action"
835
- },
836
- "reason": {
837
- "type": "string",
838
- "description": "Brief non-technical explanation of why this tool is being called"
839
- }
840
- },
841
- "required": ["confidence"]
842
- },
843
- "executor": "tools/gmail-triage.ts",
844
- "execution_target": "host"
845
- },
846
- {
847
- "name": "gmail_filters",
848
- "description": "List, create, or delete Gmail filters for inbox automation. Include a confidence score (0-1).",
849
- "category": "messaging",
850
- "risk": "medium",
851
- "input_schema": {
852
- "type": "object",
853
- "properties": {
854
- "action": {
855
- "type": "string",
856
- "enum": ["list", "create", "delete"],
857
- "description": "Filter action"
858
- },
859
- "from": {
860
- "type": "string",
861
- "description": "Filter criteria: sender (for create)"
862
- },
863
- "to": {
864
- "type": "string",
865
- "description": "Filter criteria: recipient (for create)"
866
- },
867
- "subject": {
868
- "type": "string",
869
- "description": "Filter criteria: subject contains (for create)"
870
- },
871
- "query": {
872
- "type": "string",
873
- "description": "Filter criteria: Gmail query (for create)"
874
- },
875
- "has_attachment": {
876
- "type": "boolean",
877
- "description": "Filter criteria: has attachment (for create)"
878
- },
879
- "add_label_ids": {
880
- "type": "array",
881
- "items": {
882
- "type": "string"
883
- },
884
- "description": "Filter action: label IDs to add (for create)"
885
- },
886
- "remove_label_ids": {
887
- "type": "array",
888
- "items": {
889
- "type": "string"
890
- },
891
- "description": "Filter action: label IDs to remove (for create)"
892
- },
893
- "forward": {
894
- "type": "string",
895
- "description": "Filter action: forward to email (for create)"
896
- },
897
- "filter_id": {
898
- "type": "string",
899
- "description": "Filter ID (for delete)"
900
- },
901
- "confidence": {
902
- "type": "number",
903
- "description": "Confidence score (0-1) for this action"
904
- },
905
- "reason": {
906
- "type": "string",
907
- "description": "Brief non-technical explanation of why this tool is being called"
908
- }
909
- },
910
- "required": ["action", "confidence"]
911
- },
912
- "executor": "tools/gmail-filters.ts",
913
- "execution_target": "host"
914
- },
915
- {
916
- "name": "gmail_vacation",
917
- "description": "Get, enable, or disable Gmail vacation auto-responder. Include a confidence score (0-1).",
918
- "category": "messaging",
919
- "risk": "medium",
920
- "input_schema": {
921
- "type": "object",
922
- "properties": {
923
- "action": {
924
- "type": "string",
925
- "enum": ["get", "enable", "disable"],
926
- "description": "Vacation action"
927
- },
928
- "message": {
929
- "type": "string",
930
- "description": "Auto-reply message body (required for enable)"
931
- },
932
- "subject": {
933
- "type": "string",
934
- "description": "Auto-reply subject (default 'Out of Office')"
935
- },
936
- "start_time": {
937
- "type": "number",
938
- "description": "Start time in epoch milliseconds"
939
- },
940
- "end_time": {
941
- "type": "number",
942
- "description": "End time in epoch milliseconds"
943
- },
944
- "restrict_to_contacts": {
945
- "type": "boolean",
946
- "description": "Only auto-reply to contacts (default false)"
947
- },
948
- "restrict_to_domain": {
949
- "type": "boolean",
950
- "description": "Only auto-reply to same domain (default false)"
951
- },
952
- "confidence": {
953
- "type": "number",
954
- "description": "Confidence score (0-1) for this action"
955
- },
956
- "reason": {
957
- "type": "string",
958
- "description": "Brief non-technical explanation of why this tool is being called"
959
- }
960
- },
961
- "required": ["action", "confidence"]
962
- },
963
- "executor": "tools/gmail-vacation.ts",
964
- "execution_target": "host"
965
- },
966
- {
967
- "name": "gmail_sender_digest",
968
- "description": "Scan Gmail and group messages by sender to identify high-volume senders (e.g. newsletters). Returns top senders sorted by message count with metadata for bulk cleanup.",
969
- "category": "messaging",
970
- "risk": "low",
971
- "input_schema": {
972
- "type": "object",
973
- "properties": {
974
- "query": {
975
- "type": "string",
976
- "description": "Gmail search query (default 'category:promotions newer_than:90d')"
977
- },
978
- "max_messages": {
979
- "type": "number",
980
- "description": "Maximum messages to scan (default 5000, cap 10000)"
981
- },
982
- "max_senders": {
983
- "type": "number",
984
- "description": "Maximum senders to return (default 50)"
985
- },
986
- "page_token": {
987
- "type": "string",
988
- "description": "Resume token from a previous scan (rarely needed \u2014 scans now cover up to 10,000 messages in a single call)"
989
- },
990
- "reason": {
991
- "type": "string",
992
- "description": "Brief non-technical explanation of why this tool is being called"
993
- }
994
- }
995
- },
996
- "executor": "tools/gmail-sender-digest.ts",
997
- "execution_target": "host"
998
- },
999
- {
1000
- "name": "messaging_sender_digest",
1001
- "description": "Scan connected email platform and group messages by sender to identify high-volume senders (e.g. newsletters). Works with any email provider that supports sender digest. Returns top senders sorted by message count with metadata for bulk cleanup.",
1002
- "category": "messaging",
1003
- "risk": "low",
1004
- "input_schema": {
1005
- "type": "object",
1006
- "properties": {
1007
- "platform": {
1008
- "type": "string",
1009
- "description": "Platform (e.g. \"gmail\"). Auto-detected if only one is connected."
1010
- },
1011
- "query": {
1012
- "type": "string",
1013
- "description": "Search query (default 'category:promotions newer_than:90d')"
1014
- },
1015
- "max_messages": {
1016
- "type": "number",
1017
- "description": "Maximum messages to scan (default 5000, cap 5000)"
1018
- },
1019
- "max_senders": {
1020
- "type": "number",
1021
- "description": "Maximum senders to return (default 30)"
1022
- },
1023
- "page_token": {
1024
- "type": "string",
1025
- "description": "Resume token from a previous scan (rarely needed \u2014 scans now cover up to 5,000 messages in a single call)"
1026
- },
1027
- "reason": {
1028
- "type": "string",
1029
- "description": "Brief non-technical explanation of why this tool is being called"
1030
- }
1031
- }
1032
- },
1033
- "executor": "tools/messaging-sender-digest.ts",
1034
- "execution_target": "host"
1035
- },
1036
- {
1037
- "name": "messaging_archive_by_sender",
1038
- "description": "Archive all messages matching a search query on the connected email platform. Paginates through all results and archives in bulk. Works with any email provider that supports archive by query. Include a confidence score (0-1).",
1039
- "category": "messaging",
1040
- "risk": "medium",
1041
- "input_schema": {
1042
- "type": "object",
1043
- "properties": {
1044
- "platform": {
1045
- "type": "string",
1046
- "description": "Platform (e.g. \"gmail\"). Auto-detected if only one is connected."
1047
- },
1048
- "query": {
1049
- "type": "string",
1050
- "description": "Search query (e.g. \"from:marketing@example.com category:promotions newer_than:90d\")"
1051
- },
1052
- "confidence": {
1053
- "type": "number",
1054
- "description": "Confidence score (0-1) for this action"
1055
- },
1056
- "reason": {
1057
- "type": "string",
1058
- "description": "Brief non-technical explanation of why this tool is being called"
1059
- }
1060
- },
1061
- "required": ["query", "confidence"]
1062
- },
1063
- "executor": "tools/messaging-archive-by-sender.ts",
1064
- "execution_target": "host"
1065
- },
1066
- {
1067
- "name": "gmail_outreach_scan",
1068
- "description": "Scan Gmail for cold outreach emails (sales, recruiting, marketing) using LLM classification. Returns top outreach senders with suggested cleanup actions. Read-only \u2014 use gmail_batch_archive and gmail_filters for cleanup.",
1069
- "category": "messaging",
1070
- "risk": "low",
1071
- "input_schema": {
1072
- "type": "object",
1073
- "properties": {
1074
- "max_messages": {
1075
- "type": "number",
1076
- "description": "Maximum messages to scan (default 2000, cap 5000)"
1077
- },
1078
- "max_senders": {
1079
- "type": "number",
1080
- "description": "Maximum outreach senders to return (default 30)"
1081
- },
1082
- "time_range": {
1083
- "type": "string",
1084
- "description": "Gmail time range filter (default '90d')"
1085
- },
1086
- "min_confidence": {
1087
- "type": "number",
1088
- "description": "Minimum confidence threshold 0-1 (default 0.5)"
1089
- },
1090
- "page_token": {
1091
- "type": "string",
1092
- "description": "Resume token from a previous scan (rarely needed \u2014 scans now cover up to 5,000 messages in a single call)"
1093
- },
1094
- "reason": {
1095
- "type": "string",
1096
- "description": "Brief non-technical explanation of why this tool is being called"
1097
- }
1098
- }
1099
- },
1100
- "executor": "tools/gmail-outreach-scan.ts",
1101
- "execution_target": "host"
1102
- },
1103
- {
1104
- "name": "google_contacts",
1105
- "description": "List or search Google Contacts. Requires contacts.readonly scope (re-authorization may be needed).",
1106
- "category": "messaging",
1107
- "risk": "low",
1108
- "input_schema": {
1109
- "type": "object",
1110
- "properties": {
1111
- "action": {
1112
- "type": "string",
1113
- "enum": ["list", "search"],
1114
- "description": "Contacts action"
1115
- },
1116
- "query": {
1117
- "type": "string",
1118
- "description": "Search query (for search action)"
1119
- },
1120
- "page_size": {
1121
- "type": "number",
1122
- "description": "Number of contacts to return (default 50, for list)"
1123
- },
1124
- "page_token": {
1125
- "type": "string",
1126
- "description": "Pagination token (for list)"
1127
- },
1128
- "reason": {
1129
- "type": "string",
1130
- "description": "Brief non-technical explanation of why this tool is being called"
1131
- }
1132
- },
1133
- "required": ["action"]
1134
- },
1135
- "executor": "tools/google-contacts.ts",
1136
- "execution_target": "host"
1137
- },
1138
- {
1139
- "name": "sequence_create",
1140
- "description": "Create an email sequence with multiple steps and delay intervals.",
1141
- "category": "messaging",
1142
- "risk": "low",
1143
- "input_schema": {
1144
- "type": "object",
1145
- "properties": {
1146
- "name": {
1147
- "type": "string",
1148
- "description": "Name of the sequence"
1149
- },
1150
- "channel": {
1151
- "type": "string",
1152
- "description": "Messaging channel (e.g. \"gmail\")"
1153
- },
1154
- "steps": {
1155
- "type": "array",
1156
- "items": {
1157
- "type": "object",
1158
- "properties": {
1159
- "delay_seconds": {
1160
- "type": "number",
1161
- "description": "Delay before sending this step (in seconds)"
1162
- },
1163
- "subject": {
1164
- "type": "string",
1165
- "description": "Subject line template"
1166
- },
1167
- "body_prompt": {
1168
- "type": "string",
1169
- "description": "Prompt or body text for this step"
1170
- },
1171
- "reply_to_thread": {
1172
- "type": "boolean",
1173
- "description": "Whether to reply in the existing thread (default true for step 2+)"
1174
- },
1175
- "require_approval": {
1176
- "type": "boolean",
1177
- "description": "Whether to require user approval before sending (default false)"
1178
- }
1179
- },
1180
- "required": ["body_prompt"]
1181
- },
1182
- "description": "Ordered list of sequence steps"
1183
- },
1184
- "description": {
1185
- "type": "string",
1186
- "description": "Optional description of the sequence"
1187
- },
1188
- "exit_on_reply": {
1189
- "type": "boolean",
1190
- "description": "Whether to stop the sequence when the contact replies (default true)"
1191
- },
1192
- "reason": {
1193
- "type": "string",
1194
- "description": "Brief non-technical explanation of why this tool is being called"
1195
- }
1196
- },
1197
- "required": ["name", "channel", "steps"]
1198
- },
1199
- "executor": "tools/sequence-create.ts",
1200
- "execution_target": "host"
1201
- },
1202
- {
1203
- "name": "sequence_list",
1204
- "description": "List all email sequences with their status and enrollment counts.",
1205
- "category": "messaging",
1206
- "risk": "low",
1207
- "input_schema": {
1208
- "type": "object",
1209
- "properties": {
1210
- "status": {
1211
- "type": "string",
1212
- "enum": ["active", "paused", "archived"],
1213
- "description": "Filter by sequence status"
1214
- },
1215
- "reason": {
1216
- "type": "string",
1217
- "description": "Brief non-technical explanation of why this tool is being called"
1218
- }
1219
- }
1220
- },
1221
- "executor": "tools/sequence-list.ts",
1222
- "execution_target": "host"
1223
- },
1224
- {
1225
- "name": "sequence_get",
1226
- "description": "Get detailed information about a sequence including steps, enrollment counts, and status breakdown.",
1227
- "category": "messaging",
1228
- "risk": "low",
1229
- "input_schema": {
1230
- "type": "object",
1231
- "properties": {
1232
- "id": {
1233
- "type": "string",
1234
- "description": "Sequence ID"
1235
- },
1236
- "reason": {
1237
- "type": "string",
1238
- "description": "Brief non-technical explanation of why this tool is being called"
1239
- }
1240
- },
1241
- "required": ["id"]
1242
- },
1243
- "executor": "tools/sequence-get.ts",
1244
- "execution_target": "host"
1245
- },
1246
- {
1247
- "name": "sequence_update",
1248
- "description": "Update a sequence's name, description, status, steps, or exit-on-reply setting.",
1249
- "category": "messaging",
1250
- "risk": "low",
1251
- "input_schema": {
1252
- "type": "object",
1253
- "properties": {
1254
- "id": {
1255
- "type": "string",
1256
- "description": "Sequence ID to update"
1257
- },
1258
- "name": {
1259
- "type": "string",
1260
- "description": "New name"
1261
- },
1262
- "description": {
1263
- "type": "string",
1264
- "description": "New description"
1265
- },
1266
- "status": {
1267
- "type": "string",
1268
- "enum": ["active", "paused", "archived"],
1269
- "description": "New status"
1270
- },
1271
- "exit_on_reply": {
1272
- "type": "boolean",
1273
- "description": "Whether to exit on contact reply"
1274
- },
1275
- "steps": {
1276
- "type": "array",
1277
- "items": {
1278
- "type": "object",
1279
- "properties": {
1280
- "delay_seconds": {
1281
- "type": "number",
1282
- "description": "Delay before sending this step (in seconds)"
1283
- },
1284
- "subject": {
1285
- "type": "string",
1286
- "description": "Subject line template"
1287
- },
1288
- "body_prompt": {
1289
- "type": "string",
1290
- "description": "Prompt or body text for this step"
1291
- },
1292
- "reply_to_thread": {
1293
- "type": "boolean",
1294
- "description": "Whether to reply in the existing thread"
1295
- },
1296
- "require_approval": {
1297
- "type": "boolean",
1298
- "description": "Whether to require user approval before sending"
1299
- }
1300
- },
1301
- "required": ["body_prompt"]
1302
- },
1303
- "description": "Replacement steps (replaces all existing steps)"
1304
- },
1305
- "reason": {
1306
- "type": "string",
1307
- "description": "Brief non-technical explanation of why this tool is being called"
1308
- }
1309
- },
1310
- "required": ["id"]
1311
- },
1312
- "executor": "tools/sequence-update.ts",
1313
- "execution_target": "host"
1314
- },
1315
- {
1316
- "name": "sequence_delete",
1317
- "description": "Delete a sequence and cancel all its active enrollments.",
1318
- "category": "messaging",
1319
- "risk": "medium",
1320
- "input_schema": {
1321
- "type": "object",
1322
- "properties": {
1323
- "id": {
1324
- "type": "string",
1325
- "description": "Sequence ID to delete"
1326
- },
1327
- "reason": {
1328
- "type": "string",
1329
- "description": "Brief non-technical explanation of why this tool is being called"
1330
- }
1331
- },
1332
- "required": ["id"]
1333
- },
1334
- "executor": "tools/sequence-delete.ts",
1335
- "execution_target": "host"
1336
- },
1337
- {
1338
- "name": "sequence_enroll",
1339
- "description": "Enroll one or more contacts into a sequence. Accepts comma-separated emails or an array.",
1340
- "category": "messaging",
1341
- "risk": "medium",
1342
- "input_schema": {
1343
- "type": "object",
1344
- "properties": {
1345
- "sequence_id": {
1346
- "type": "string",
1347
- "description": "Sequence ID to enroll contacts in"
1348
- },
1349
- "emails": {
1350
- "description": "Email address(es) to enroll \u2014 comma-separated string or array",
1351
- "oneOf": [
1352
- {
1353
- "type": "string"
1354
- },
1355
- {
1356
- "type": "array",
1357
- "items": {
1358
- "type": "string"
1359
- }
1360
- }
1361
- ]
1362
- },
1363
- "context": {
1364
- "type": "object",
1365
- "description": "Optional context object with personalization variables for the enrolled contacts"
1366
- },
1367
- "reason": {
1368
- "type": "string",
1369
- "description": "Brief non-technical explanation of why this tool is being called"
1370
- }
1371
- },
1372
- "required": ["sequence_id", "emails"]
1373
- },
1374
- "executor": "tools/sequence-enroll.ts",
1375
- "execution_target": "host"
1376
- },
1377
- {
1378
- "name": "sequence_enrollment_list",
1379
- "description": "List enrollments for a sequence, optionally filtered by status.",
1380
- "category": "messaging",
1381
- "risk": "low",
1382
- "input_schema": {
1383
- "type": "object",
1384
- "properties": {
1385
- "sequence_id": {
1386
- "type": "string",
1387
- "description": "Filter by sequence ID"
1388
- },
1389
- "status": {
1390
- "type": "string",
1391
- "enum": [
1392
- "active",
1393
- "paused",
1394
- "completed",
1395
- "replied",
1396
- "cancelled",
1397
- "failed"
1398
- ],
1399
- "description": "Filter by enrollment status"
1400
- },
1401
- "reason": {
1402
- "type": "string",
1403
- "description": "Brief non-technical explanation of why this tool is being called"
1404
- }
1405
- }
1406
- },
1407
- "executor": "tools/sequence-enrollment-list.ts",
1408
- "execution_target": "host"
1409
- },
1410
- {
1411
- "name": "sequence_pause",
1412
- "description": "Pause a sequence (stops processing all enrollments) or cancel a specific enrollment.",
1413
- "category": "messaging",
1414
- "risk": "medium",
1415
- "input_schema": {
1416
- "type": "object",
1417
- "properties": {
1418
- "sequence_id": {
1419
- "type": "string",
1420
- "description": "Sequence ID to pause"
1421
- },
1422
- "enrollment_id": {
1423
- "type": "string",
1424
- "description": "Specific enrollment ID to cancel (alternative to pausing whole sequence)"
1425
- },
1426
- "reason": {
1427
- "type": "string",
1428
- "description": "Brief non-technical explanation of why this tool is being called"
1429
- }
1430
- }
1431
- },
1432
- "executor": "tools/sequence-pause.ts",
1433
- "execution_target": "host"
1434
- },
1435
- {
1436
- "name": "sequence_resume",
1437
- "description": "Resume a paused sequence. Active enrollments will be processed on the next scheduler tick.",
1438
- "category": "messaging",
1439
- "risk": "low",
1440
- "input_schema": {
1441
- "type": "object",
1442
- "properties": {
1443
- "sequence_id": {
1444
- "type": "string",
1445
- "description": "Sequence ID to resume"
1446
- },
1447
- "reason": {
1448
- "type": "string",
1449
- "description": "Brief non-technical explanation of why this tool is being called"
1450
- }
1451
- },
1452
- "required": ["sequence_id"]
1453
- },
1454
- "executor": "tools/sequence-resume.ts",
1455
- "execution_target": "host"
1456
- },
1457
- {
1458
- "name": "sequence_cancel",
1459
- "description": "Cancel a specific enrollment, removing the contact from the sequence.",
1460
- "category": "messaging",
1461
- "risk": "medium",
1462
- "input_schema": {
1463
- "type": "object",
1464
- "properties": {
1465
- "enrollment_id": {
1466
- "type": "string",
1467
- "description": "Enrollment ID to cancel"
1468
- },
1469
- "reason": {
1470
- "type": "string",
1471
- "description": "Brief non-technical explanation of why this tool is being called"
1472
- }
1473
- },
1474
- "required": ["enrollment_id"]
1475
- },
1476
- "executor": "tools/sequence-cancel.ts",
1477
- "execution_target": "host"
1478
- },
1479
- {
1480
- "name": "sequence_import",
1481
- "description": "Import contacts from a CSV/TSV file and enroll them in a sequence. First call shows a preview; set auto_enroll=true to enroll.",
1482
- "category": "messaging",
1483
- "risk": "medium",
1484
- "input_schema": {
1485
- "type": "object",
1486
- "properties": {
1487
- "file_path": {
1488
- "type": "string",
1489
- "description": "Absolute path to the CSV/TSV file"
1490
- },
1491
- "sequence_id": {
1492
- "type": "string",
1493
- "description": "Sequence ID to enroll contacts in"
1494
- },
1495
- "auto_enroll": {
1496
- "type": "boolean",
1497
- "description": "Set to true to enroll contacts (default false = preview mode)"
1498
- },
1499
- "reason": {
1500
- "type": "string",
1501
- "description": "Brief non-technical explanation of why this tool is being called"
1502
- }
1503
- },
1504
- "required": ["file_path", "sequence_id"]
1505
- },
1506
- "executor": "tools/sequence-import.ts",
1507
- "execution_target": "host"
1508
- },
1509
- {
1510
- "name": "sequence_analytics",
1511
- "description": "View sequence analytics dashboard with send/reply/completion metrics, per-step funnel, and recent activity.",
1512
- "category": "messaging",
1513
- "risk": "low",
1514
- "input_schema": {
1515
- "type": "object",
1516
- "properties": {
1517
- "sequence_id": {
1518
- "type": "string",
1519
- "description": "Optional sequence ID for detailed step funnel view"
1520
- },
1521
- "reason": {
1522
- "type": "string",
1523
- "description": "Brief non-technical explanation of why this tool is being called"
1524
- }
1525
- }
1526
- },
1527
- "executor": "tools/sequence-analytics.ts",
345
+ "executor": "tools/messaging-archive-by-sender.ts",
1528
346
  "execution_target": "host"
1529
347
  }
1530
348
  ]