@vellumai/assistant 0.3.5 → 0.3.7

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 (487) hide show
  1. package/README.md +51 -0
  2. package/eslint.config.mjs +31 -0
  3. package/package.json +1 -1
  4. package/scripts/ipc/check-swift-decoder-drift.ts +4 -1
  5. package/scripts/ipc/generate-swift.ts +18 -2
  6. package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +338 -1
  7. package/src/__tests__/approval-conversation-turn.test.ts +214 -0
  8. package/src/__tests__/browser-manager.test.ts +1 -0
  9. package/src/__tests__/call-conversation-messages.test.ts +130 -0
  10. package/src/__tests__/call-orchestrator.test.ts +752 -271
  11. package/src/__tests__/call-pointer-messages.test.ts +148 -0
  12. package/src/__tests__/call-recovery.test.ts +3 -0
  13. package/src/__tests__/call-routes-http.test.ts +5 -0
  14. package/src/__tests__/call-store.test.ts +3 -0
  15. package/src/__tests__/channel-approval-routes.test.ts +1260 -85
  16. package/src/__tests__/channel-approval.test.ts +37 -0
  17. package/src/__tests__/channel-approvals.test.ts +4 -65
  18. package/src/__tests__/channel-guardian.test.ts +556 -0
  19. package/src/__tests__/channel-readiness-service.test.ts +74 -7
  20. package/src/__tests__/checker.test.ts +14 -7
  21. package/src/__tests__/clarification-resolver.test.ts +44 -24
  22. package/src/__tests__/commit-message-enrichment-service.test.ts +9 -4
  23. package/src/__tests__/computer-use-session-working-dir.test.ts +8 -0
  24. package/src/__tests__/config-schema.test.ts +12 -7
  25. package/src/__tests__/context-window-manager.test.ts +30 -2
  26. package/src/__tests__/contradiction-checker.test.ts +20 -5
  27. package/src/__tests__/credential-security-invariants.test.ts +6 -2
  28. package/src/__tests__/db-migration-rollback.test.ts +752 -0
  29. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +2 -0
  30. package/src/__tests__/fuzzy-match-property.test.ts +5 -5
  31. package/src/__tests__/guardian-action-store.test.ts +123 -0
  32. package/src/__tests__/guardian-action-sweep.test.ts +277 -0
  33. package/src/__tests__/guardian-dispatch.test.ts +389 -0
  34. package/src/__tests__/guardian-question-copy.test.ts +47 -0
  35. package/src/__tests__/handlers-telegram-config.test.ts +4 -2
  36. package/src/__tests__/handlers-twilio-config.test.ts +126 -0
  37. package/src/__tests__/intent-routing.test.ts +2 -0
  38. package/src/__tests__/ipc-snapshot.test.ts +228 -1
  39. package/src/__tests__/memory-upsert-concurrency.test.ts +828 -0
  40. package/src/__tests__/model-intents.test.ts +96 -0
  41. package/src/__tests__/no-direct-anthropic-sdk-imports.test.ts +42 -0
  42. package/src/__tests__/oauth2-gateway-transport.test.ts +130 -0
  43. package/src/__tests__/onboarding-starter-tasks.test.ts +2 -0
  44. package/src/__tests__/provider-commit-message-generator.test.ts +89 -13
  45. package/src/__tests__/provider-error-scenarios.test.ts +621 -0
  46. package/src/__tests__/provider-fail-open-selection.test.ts +119 -0
  47. package/src/__tests__/qdrant-manager.test.ts +27 -20
  48. package/src/__tests__/relay-server.test.ts +779 -40
  49. package/src/__tests__/run-orchestrator-assistant-events.test.ts +2 -0
  50. package/src/__tests__/run-orchestrator.test.ts +20 -4
  51. package/src/__tests__/runtime-runs-http.test.ts +17 -1
  52. package/src/__tests__/runtime-runs.test.ts +16 -0
  53. package/src/__tests__/schedule-store.test.ts +18 -4
  54. package/src/__tests__/scheduler-recurrence.test.ts +13 -4
  55. package/src/__tests__/session-abort-tool-results.test.ts +6 -0
  56. package/src/__tests__/session-agent-loop.test.ts +857 -0
  57. package/src/__tests__/session-conflict-gate.test.ts +6 -0
  58. package/src/__tests__/session-pre-run-repair.test.ts +6 -0
  59. package/src/__tests__/session-profile-injection.test.ts +6 -0
  60. package/src/__tests__/session-provider-retry-repair.test.ts +6 -0
  61. package/src/__tests__/session-queue.test.ts +6 -0
  62. package/src/__tests__/session-runtime-assembly.test.ts +237 -13
  63. package/src/__tests__/session-slash-known.test.ts +6 -0
  64. package/src/__tests__/session-slash-queue.test.ts +6 -0
  65. package/src/__tests__/session-slash-unknown.test.ts +6 -0
  66. package/src/__tests__/session-surfaces-task-progress.test.ts +2 -0
  67. package/src/__tests__/session-tool-setup-app-refresh.test.ts +1 -0
  68. package/src/__tests__/session-tool-setup-memory-scope.test.ts +1 -0
  69. package/src/__tests__/session-tool-setup-side-effect-flag.test.ts +1 -0
  70. package/src/__tests__/session-workspace-injection.test.ts +6 -0
  71. package/src/__tests__/session-workspace-tool-tracking.test.ts +6 -0
  72. package/src/__tests__/skills.test.ts +2 -0
  73. package/src/__tests__/sms-messaging-provider.test.ts +2 -1
  74. package/src/__tests__/starter-task-flow.test.ts +2 -0
  75. package/src/__tests__/swarm-dag-pathological.test.ts +535 -0
  76. package/src/__tests__/system-prompt.test.ts +2 -0
  77. package/src/__tests__/task-management-tools.test.ts +2 -2
  78. package/src/__tests__/task-runner.test.ts +14 -4
  79. package/src/__tests__/terminal-tools.test.ts +25 -19
  80. package/src/__tests__/tool-execution-abort-cleanup.test.ts +545 -0
  81. package/src/__tests__/tool-executor-shell-integration.test.ts +11 -11
  82. package/src/__tests__/tool-executor.test.ts +23 -24
  83. package/src/__tests__/trust-store.test.ts +3 -3
  84. package/src/__tests__/twilio-rest.test.ts +29 -0
  85. package/src/__tests__/twilio-routes-elevenlabs.test.ts +3 -0
  86. package/src/__tests__/twilio-routes-twiml.test.ts +11 -0
  87. package/src/__tests__/twilio-routes.test.ts +141 -21
  88. package/src/__tests__/user-reference.test.ts +2 -0
  89. package/src/__tests__/voice-quality.test.ts +222 -0
  90. package/src/__tests__/web-search.test.ts +45 -29
  91. package/src/agent/loop.ts +1 -1
  92. package/src/agent-heartbeat/agent-heartbeat-service.ts +2 -10
  93. package/src/amazon/client.ts +1418 -0
  94. package/src/amazon/request-extractor.ts +135 -0
  95. package/src/amazon/session.ts +109 -0
  96. package/src/autonomy/autonomy-store.ts +5 -5
  97. package/src/browser-extension-relay/client.ts +124 -0
  98. package/src/browser-extension-relay/protocol.ts +63 -0
  99. package/src/browser-extension-relay/server.ts +177 -0
  100. package/src/bundler/app-bundler.ts +3 -3
  101. package/src/bundler/bundle-signer.ts +1 -1
  102. package/src/bundler/signature-verifier.ts +1 -1
  103. package/src/calls/call-conversation-messages.ts +33 -0
  104. package/src/calls/call-domain.ts +106 -5
  105. package/src/calls/call-orchestrator.ts +252 -54
  106. package/src/calls/call-pointer-messages.ts +53 -0
  107. package/src/calls/call-recovery.ts +3 -8
  108. package/src/calls/call-store.ts +69 -87
  109. package/src/calls/elevenlabs-config.ts +3 -2
  110. package/src/calls/guardian-action-sweep.ts +105 -0
  111. package/src/calls/guardian-dispatch.ts +203 -0
  112. package/src/calls/guardian-question-copy.ts +133 -0
  113. package/src/calls/relay-server.ts +466 -8
  114. package/src/calls/speaker-identification.ts +1 -1
  115. package/src/calls/twilio-config.ts +7 -5
  116. package/src/calls/twilio-provider.ts +6 -4
  117. package/src/calls/twilio-rest.ts +40 -15
  118. package/src/calls/twilio-routes.ts +60 -45
  119. package/src/calls/types.ts +3 -1
  120. package/src/channels/types.ts +25 -0
  121. package/src/cli/amazon.ts +815 -0
  122. package/src/cli/config-commands.ts +2 -2
  123. package/src/cli/core-commands.ts +4 -3
  124. package/src/cli/influencer.ts +244 -0
  125. package/src/cli/map.ts +89 -6
  126. package/src/cli.ts +1 -1
  127. package/src/config/agent-schema.ts +171 -0
  128. package/src/config/bundled-skills/amazon/SKILL.md +127 -0
  129. package/src/config/bundled-skills/amazon/icon.svg +13 -0
  130. package/src/config/bundled-skills/api-mapping/SKILL.md +78 -0
  131. package/src/config/bundled-skills/browser/SKILL.md +1 -0
  132. package/src/config/bundled-skills/browser/TOOLS.json +17 -0
  133. package/src/config/bundled-skills/browser/tools/browser-wait-for-download.ts +25 -0
  134. package/src/config/bundled-skills/doordash/SKILL.md +51 -51
  135. package/src/config/bundled-skills/email-setup/SKILL.md +14 -5
  136. package/src/config/bundled-skills/google-oauth-setup/SKILL.md +183 -0
  137. package/src/config/bundled-skills/influencer/SKILL.md +144 -0
  138. package/src/config/bundled-skills/macos-automation/icon.svg +12 -0
  139. package/src/config/bundled-skills/media-processing/SKILL.md +72 -95
  140. package/src/config/bundled-skills/media-processing/TOOLS.json +57 -147
  141. package/src/config/bundled-skills/media-processing/__tests__/concurrency-pool.test.ts +77 -0
  142. package/src/config/bundled-skills/media-processing/__tests__/cost-tracker.test.ts +69 -0
  143. package/src/config/bundled-skills/media-processing/__tests__/preprocess.test.ts +303 -0
  144. package/src/config/bundled-skills/media-processing/services/concurrency-pool.ts +55 -0
  145. package/src/config/bundled-skills/media-processing/services/cost-tracker.ts +86 -0
  146. package/src/config/bundled-skills/media-processing/services/gemini-map.ts +339 -0
  147. package/src/config/bundled-skills/media-processing/services/preprocess.ts +551 -0
  148. package/src/config/bundled-skills/media-processing/services/processing-pipeline.ts +7 -9
  149. package/src/config/bundled-skills/media-processing/services/reduce.ts +197 -0
  150. package/src/config/bundled-skills/media-processing/tools/analyze-keyframes.ts +88 -253
  151. package/src/config/bundled-skills/media-processing/tools/extract-keyframes.ts +22 -153
  152. package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +2 -2
  153. package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +28 -51
  154. package/src/config/bundled-skills/media-processing/tools/query-media-events.ts +35 -270
  155. package/src/config/bundled-skills/messaging/SKILL.md +12 -2
  156. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +4 -7
  157. package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +2 -1
  158. package/src/config/bundled-skills/phone-calls/SKILL.md +86 -21
  159. package/src/config/bundled-skills/twitter/icon.svg +14 -0
  160. package/src/config/bundled-tool-registry.ts +310 -0
  161. package/src/config/calls-schema.ts +181 -0
  162. package/src/config/core-schema.ts +309 -0
  163. package/src/config/defaults.ts +27 -3
  164. package/src/config/env-registry.ts +169 -0
  165. package/src/config/env.ts +175 -0
  166. package/src/config/loader.ts +6 -6
  167. package/src/config/memory-schema.ts +528 -0
  168. package/src/config/sandbox-schema.ts +55 -0
  169. package/src/config/schema.ts +157 -1138
  170. package/src/config/skill-state.ts +1 -1
  171. package/src/config/skills-schema.ts +32 -0
  172. package/src/config/skills.ts +35 -24
  173. package/src/config/system-prompt.ts +107 -56
  174. package/src/config/templates/SOUL.md +1 -1
  175. package/src/config/types.ts +1 -0
  176. package/src/config/user-reference.ts +4 -9
  177. package/src/config/vellum-skills/catalog.json +0 -7
  178. package/src/config/vellum-skills/chatgpt-import/tools/chatgpt-import.ts +5 -1
  179. package/src/config/vellum-skills/slack-oauth-setup/SKILL.md +1 -0
  180. package/src/config/vellum-skills/sms-setup/SKILL.md +112 -14
  181. package/src/context/window-manager.ts +27 -7
  182. package/src/daemon/approval-generators.ts +186 -0
  183. package/src/daemon/approved-devices-store.ts +140 -0
  184. package/src/daemon/assistant-attachments.ts +1 -1
  185. package/src/daemon/classifier.ts +35 -32
  186. package/src/daemon/config-watcher.ts +1 -1
  187. package/src/daemon/daemon-control.ts +254 -0
  188. package/src/daemon/handlers/apps.ts +2 -3
  189. package/src/daemon/handlers/config-channels.ts +158 -0
  190. package/src/daemon/handlers/config-inbox.ts +540 -0
  191. package/src/daemon/handlers/config-ingress.ts +231 -0
  192. package/src/daemon/handlers/config-integrations.ts +258 -0
  193. package/src/daemon/handlers/config-model.ts +143 -0
  194. package/src/daemon/handlers/config-parental.ts +163 -0
  195. package/src/daemon/handlers/config-scheduling.ts +172 -0
  196. package/src/daemon/handlers/config-slack.ts +92 -0
  197. package/src/daemon/handlers/config-telegram.ts +301 -0
  198. package/src/daemon/handlers/config-tools.ts +177 -0
  199. package/src/daemon/handlers/config-trust.ts +104 -0
  200. package/src/daemon/handlers/config-twilio.ts +1080 -0
  201. package/src/daemon/handlers/config.ts +53 -2463
  202. package/src/daemon/handlers/diagnostics.ts +1 -1
  203. package/src/daemon/handlers/dictation.ts +4 -6
  204. package/src/daemon/handlers/documents.ts +18 -32
  205. package/src/daemon/handlers/index.ts +9 -0
  206. package/src/daemon/handlers/misc.ts +3 -5
  207. package/src/daemon/handlers/pairing.ts +98 -0
  208. package/src/daemon/handlers/sessions.ts +74 -5
  209. package/src/daemon/handlers/shared.ts +3 -1
  210. package/src/daemon/handlers/skills.ts +1 -1
  211. package/src/daemon/handlers/twitter-auth.ts +2 -0
  212. package/src/daemon/handlers/work-items.ts +2 -2
  213. package/src/daemon/handlers/workspace-files.ts +4 -3
  214. package/src/daemon/install-cli-launchers.ts +113 -0
  215. package/src/daemon/ipc-contract/apps.ts +356 -0
  216. package/src/daemon/ipc-contract/browser.ts +74 -0
  217. package/src/daemon/ipc-contract/computer-use.ts +151 -0
  218. package/src/daemon/ipc-contract/diagnostics.ts +56 -0
  219. package/src/daemon/ipc-contract/documents.ts +74 -0
  220. package/src/daemon/ipc-contract/inbox.ts +209 -0
  221. package/src/daemon/ipc-contract/integrations.ts +284 -0
  222. package/src/daemon/ipc-contract/memory.ts +48 -0
  223. package/src/daemon/ipc-contract/messages.ts +211 -0
  224. package/src/daemon/ipc-contract/pairing.ts +45 -0
  225. package/src/daemon/ipc-contract/parental-control.ts +95 -0
  226. package/src/daemon/ipc-contract/schedules.ts +97 -0
  227. package/src/daemon/ipc-contract/sessions.ts +321 -0
  228. package/src/daemon/ipc-contract/shared.ts +42 -0
  229. package/src/daemon/ipc-contract/skills.ts +120 -0
  230. package/src/daemon/ipc-contract/subagents.ts +58 -0
  231. package/src/daemon/ipc-contract/surfaces.ts +250 -0
  232. package/src/daemon/ipc-contract/trust.ts +60 -0
  233. package/src/daemon/ipc-contract/work-items.ts +225 -0
  234. package/src/daemon/ipc-contract/workspace.ts +113 -0
  235. package/src/daemon/ipc-contract-inventory.json +62 -0
  236. package/src/daemon/ipc-contract-inventory.ts +55 -29
  237. package/src/daemon/ipc-contract.ts +227 -2527
  238. package/src/daemon/ipc-protocol.ts +1 -1
  239. package/src/daemon/ipc-validate.ts +7 -0
  240. package/src/daemon/lifecycle.ts +97 -379
  241. package/src/daemon/pairing-store.ts +177 -0
  242. package/src/daemon/providers-setup.ts +43 -0
  243. package/src/daemon/ride-shotgun-handler.ts +67 -2
  244. package/src/daemon/server.ts +60 -44
  245. package/src/daemon/session-agent-loop-handlers.ts +421 -0
  246. package/src/daemon/session-agent-loop.ts +113 -275
  247. package/src/daemon/session-dynamic-profile.ts +1 -1
  248. package/src/daemon/session-history.ts +1 -1
  249. package/src/daemon/session-media-retry.ts +1 -1
  250. package/src/daemon/session-messaging.ts +37 -2
  251. package/src/daemon/session-notifiers.ts +5 -25
  252. package/src/daemon/session-process.ts +99 -59
  253. package/src/daemon/session-queue-manager.ts +98 -4
  254. package/src/daemon/session-runtime-assembly.ts +149 -15
  255. package/src/daemon/session-surfaces.ts +26 -4
  256. package/src/daemon/session-tool-setup.ts +28 -30
  257. package/src/daemon/session-workspace.ts +1 -1
  258. package/src/daemon/session.ts +24 -1
  259. package/src/daemon/shutdown-handlers.ts +122 -0
  260. package/src/daemon/trace-emitter.ts +1 -1
  261. package/src/daemon/watch-handler.ts +36 -33
  262. package/src/doordash/cart-queries.ts +787 -0
  263. package/src/doordash/client.ts +144 -127
  264. package/src/doordash/order-queries.ts +85 -0
  265. package/src/doordash/queries.ts +10 -1308
  266. package/src/doordash/search-queries.ts +203 -0
  267. package/src/doordash/session.ts +3 -2
  268. package/src/doordash/store-queries.ts +246 -0
  269. package/src/doordash/types.ts +367 -0
  270. package/src/email/providers/agentmail.ts +2 -1
  271. package/src/email/providers/index.ts +3 -2
  272. package/src/email/service.ts +3 -2
  273. package/src/errors.ts +43 -0
  274. package/src/home-base/prebuilt/seed.ts +1 -1
  275. package/src/hooks/cli.ts +6 -5
  276. package/src/hooks/config.ts +6 -8
  277. package/src/hooks/discovery.ts +6 -5
  278. package/src/hooks/manager.ts +4 -3
  279. package/src/hooks/runner.ts +2 -2
  280. package/src/hooks/templates.ts +5 -5
  281. package/src/inbound/public-ingress-urls.ts +3 -1
  282. package/src/index.ts +4 -2
  283. package/src/influencer/client.ts +1104 -0
  284. package/src/instrument.ts +4 -3
  285. package/src/logfire.ts +4 -3
  286. package/src/memory/admin.ts +25 -35
  287. package/src/memory/attachments-store.ts +4 -7
  288. package/src/memory/channel-delivery-store.ts +30 -1
  289. package/src/memory/channel-guardian-store.ts +200 -1
  290. package/src/memory/clarification-resolver.ts +37 -33
  291. package/src/memory/conflict-store.ts +67 -61
  292. package/src/memory/contradiction-checker.ts +141 -117
  293. package/src/memory/conversation-store.ts +335 -51
  294. package/src/memory/db-connection.ts +27 -4
  295. package/src/memory/db-init.ts +121 -4
  296. package/src/memory/db.ts +14 -1
  297. package/src/memory/embedding-backend.ts +27 -5
  298. package/src/memory/embedding-ollama.ts +2 -1
  299. package/src/memory/entity-extractor.ts +38 -35
  300. package/src/memory/guardian-action-store.ts +430 -0
  301. package/src/memory/inbox-escalation-projection.ts +59 -0
  302. package/src/memory/inbox-thread-store.ts +218 -0
  303. package/src/memory/ingress-invite-store.ts +338 -0
  304. package/src/memory/ingress-member-store.ts +350 -0
  305. package/src/memory/items-extractor.ts +91 -97
  306. package/src/memory/job-handlers/index-maintenance.ts +3 -3
  307. package/src/memory/job-handlers/media-processing.ts +11 -42
  308. package/src/memory/job-handlers/summarization.ts +32 -26
  309. package/src/memory/job-utils.ts +3 -10
  310. package/src/memory/jobs-store.ts +6 -9
  311. package/src/memory/jobs-worker.ts +51 -36
  312. package/src/memory/migrations/001-job-deferrals.ts +45 -0
  313. package/src/memory/migrations/002-tool-invocations-fk.ts +43 -0
  314. package/src/memory/migrations/003-memory-fts-backfill.ts +24 -0
  315. package/src/memory/migrations/004-entity-relation-dedup.ts +87 -0
  316. package/src/memory/migrations/005-fingerprint-scope-unique.ts +80 -0
  317. package/src/memory/migrations/006-scope-salted-fingerprints.ts +62 -0
  318. package/src/memory/migrations/007-assistant-id-to-self.ts +254 -0
  319. package/src/memory/migrations/008-remove-assistant-id-columns.ts +208 -0
  320. package/src/memory/migrations/009-llm-usage-events-drop-assistant-id.ts +83 -0
  321. package/src/memory/migrations/010-ext-conv-bindings-channel-chat-unique.ts +56 -0
  322. package/src/memory/migrations/011-call-sessions-provider-sid-dedup.ts +63 -0
  323. package/src/memory/migrations/012-call-sessions-add-initiated-from.ts +19 -0
  324. package/src/memory/migrations/013-guardian-action-tables.ts +68 -0
  325. package/src/memory/migrations/014-backfill-inbox-thread-state.ts +76 -0
  326. package/src/memory/migrations/015-drop-active-search-index.ts +27 -0
  327. package/src/memory/migrations/016-memory-segments-indexes.ts +11 -0
  328. package/src/memory/migrations/017-memory-items-indexes.ts +12 -0
  329. package/src/memory/migrations/018-remaining-table-indexes.ts +13 -0
  330. package/src/memory/migrations/index.ts +24 -0
  331. package/src/memory/migrations/registry.ts +79 -0
  332. package/src/memory/migrations/validate-migration-state.ts +69 -0
  333. package/src/memory/qdrant-manager.ts +49 -8
  334. package/src/memory/query-builder.ts +1 -1
  335. package/src/memory/raw-query.ts +119 -0
  336. package/src/memory/recall-cache.ts +4 -1
  337. package/src/memory/retriever.ts +163 -47
  338. package/src/memory/schema-migration.ts +25 -984
  339. package/src/memory/schema.ts +130 -7
  340. package/src/memory/search/entity.ts +10 -19
  341. package/src/memory/search/lexical.ts +81 -52
  342. package/src/memory/search/ranking.ts +21 -22
  343. package/src/memory/search/semantic.ts +157 -19
  344. package/src/memory/shared-app-links-store.ts +4 -5
  345. package/src/memory/validation.ts +19 -0
  346. package/src/messaging/draft-store.ts +5 -6
  347. package/src/messaging/providers/sms/adapter.ts +3 -6
  348. package/src/messaging/providers/telegram-bot/adapter.ts +2 -5
  349. package/src/messaging/providers/whatsapp/adapter.ts +136 -0
  350. package/src/messaging/providers/whatsapp/client.ts +67 -0
  351. package/src/messaging/style-analyzer.ts +5 -4
  352. package/src/messaging/thread-summarizer.ts +61 -69
  353. package/src/messaging/triage-engine.ts +62 -71
  354. package/src/migrations/config-merge.ts +53 -0
  355. package/src/migrations/data-layout.ts +68 -0
  356. package/src/migrations/data-merge.ts +33 -0
  357. package/src/migrations/hooks-merge.ts +90 -0
  358. package/src/migrations/index.ts +6 -0
  359. package/src/migrations/log.ts +23 -0
  360. package/src/migrations/skills-merge.ts +33 -0
  361. package/src/migrations/workspace-layout.ts +79 -0
  362. package/src/permissions/checker.ts +126 -11
  363. package/src/permissions/prompter.ts +14 -0
  364. package/src/permissions/shell-identity.ts +31 -1
  365. package/src/permissions/trust-store.ts +21 -1
  366. package/src/providers/anthropic/client.ts +4 -4
  367. package/src/providers/failover.ts +2 -2
  368. package/src/providers/model-intents.ts +70 -0
  369. package/src/providers/ollama/client.ts +2 -1
  370. package/src/providers/provider-send-message.ts +176 -0
  371. package/src/providers/registry.ts +71 -30
  372. package/src/providers/retry.ts +35 -1
  373. package/src/providers/types.ts +12 -1
  374. package/src/runtime/approval-conversation-turn.ts +97 -0
  375. package/src/runtime/approval-message-composer.ts +115 -5
  376. package/src/runtime/assistant-event-hub.ts +3 -1
  377. package/src/runtime/channel-approval-parser.ts +36 -2
  378. package/src/runtime/channel-approvals.ts +0 -21
  379. package/src/runtime/channel-guardian-service.ts +48 -7
  380. package/src/runtime/channel-readiness-service.ts +160 -34
  381. package/src/runtime/channel-readiness-types.ts +10 -4
  382. package/src/runtime/channel-retry-sweep.ts +184 -0
  383. package/src/runtime/guardian-context-resolver.ts +108 -0
  384. package/src/runtime/http-server.ts +289 -745
  385. package/src/runtime/http-types.ts +56 -3
  386. package/src/runtime/middleware/auth.ts +116 -0
  387. package/src/runtime/middleware/error-handler.ts +33 -0
  388. package/src/runtime/middleware/twilio-validation.ts +127 -0
  389. package/src/runtime/routes/app-routes.ts +1 -1
  390. package/src/runtime/routes/call-routes.ts +49 -6
  391. package/src/runtime/routes/channel-delivery-routes.ts +170 -0
  392. package/src/runtime/routes/channel-guardian-routes.ts +1191 -0
  393. package/src/runtime/routes/channel-inbound-routes.ts +1152 -0
  394. package/src/runtime/routes/channel-route-shared.ts +144 -0
  395. package/src/runtime/routes/channel-routes.ts +32 -1634
  396. package/src/runtime/routes/conversation-routes.ts +50 -7
  397. package/src/runtime/routes/events-routes.ts +2 -2
  398. package/src/runtime/routes/identity-routes.ts +126 -0
  399. package/src/runtime/routes/pairing-routes.ts +144 -0
  400. package/src/runtime/routes/run-routes.ts +15 -1
  401. package/src/runtime/run-orchestrator.ts +52 -34
  402. package/src/schedule/schedule-store.ts +36 -32
  403. package/src/schedule/scheduler.ts +3 -3
  404. package/src/security/encrypted-store.ts +5 -7
  405. package/src/security/oauth2.ts +45 -15
  406. package/src/security/parental-control-store.ts +183 -0
  407. package/src/security/secret-allowlist.ts +4 -3
  408. package/src/security/secret-scanner.ts +5 -5
  409. package/src/security/secure-keys.ts +1 -1
  410. package/src/security/token-manager.ts +3 -2
  411. package/src/services/vercel-deploy.ts +6 -2
  412. package/src/skills/tool-manifest.ts +3 -3
  413. package/src/skills/vellum-catalog-remote.ts +75 -16
  414. package/src/slack/slack-webhook.ts +2 -1
  415. package/src/swarm/orchestrator.ts +92 -1
  416. package/src/swarm/router-planner.ts +6 -9
  417. package/src/swarm/worker-prompts.ts +9 -12
  418. package/src/tasks/task-compiler.ts +19 -28
  419. package/src/tasks/task-runner.ts +1 -1
  420. package/src/tools/assets/search.ts +15 -14
  421. package/src/tools/browser/__tests__/auth-detector.test.ts +1 -0
  422. package/src/tools/browser/auto-navigate.ts +1 -0
  423. package/src/tools/browser/browser-execution.ts +13 -1
  424. package/src/tools/browser/browser-manager.ts +119 -4
  425. package/src/tools/browser/network-recorder.ts +5 -0
  426. package/src/tools/credentials/broker.ts +11 -2
  427. package/src/tools/credentials/metadata-store.ts +18 -14
  428. package/src/tools/credentials/post-connect-hooks.ts +61 -0
  429. package/src/tools/credentials/vault.ts +49 -23
  430. package/src/tools/executor.ts +80 -18
  431. package/src/tools/host-terminal/cli-discover.ts +1 -1
  432. package/src/tools/network/script-proxy/http-forwarder.ts +1 -1
  433. package/src/tools/network/script-proxy/mitm-handler.ts +1 -1
  434. package/src/tools/network/script-proxy/server.ts +1 -1
  435. package/src/tools/network/script-proxy/session-manager.ts +6 -5
  436. package/src/tools/network/web-fetch.ts +18 -2
  437. package/src/tools/network/web-search.ts +7 -3
  438. package/src/tools/reminder/reminder-store.ts +14 -15
  439. package/src/tools/schedule/create.ts +1 -0
  440. package/src/tools/schedule/list.ts +2 -1
  441. package/src/tools/shared/filesystem/file-ops-service.ts +5 -7
  442. package/src/tools/skills/skill-script-runner.ts +24 -9
  443. package/src/tools/skills/skill-tool-factory.ts +1 -0
  444. package/src/tools/tasks/work-item-enqueue.ts +2 -2
  445. package/src/tools/terminal/evaluate-typescript.ts +21 -12
  446. package/src/tools/terminal/parser.ts +50 -0
  447. package/src/tools/watcher/delete.ts +6 -0
  448. package/src/tools/weather/service.ts +1 -1
  449. package/src/twitter/client.ts +190 -24
  450. package/src/twitter/session.ts +4 -3
  451. package/src/util/clipboard.ts +1 -1
  452. package/src/util/errors.ts +65 -8
  453. package/src/util/fs.ts +40 -0
  454. package/src/util/json.ts +10 -0
  455. package/src/util/log-redact.ts +189 -0
  456. package/src/util/logger.ts +25 -18
  457. package/src/util/object.ts +3 -0
  458. package/src/util/platform.ts +72 -365
  459. package/src/util/pricing.ts +1 -1
  460. package/src/util/promise-guard.ts +1 -1
  461. package/src/util/retry.ts +19 -0
  462. package/src/util/row-mapper.ts +79 -0
  463. package/src/util/silently.ts +21 -0
  464. package/src/watcher/engine.ts +5 -1
  465. package/src/watcher/provider-types.ts +20 -0
  466. package/src/watcher/providers/github.ts +156 -0
  467. package/src/watcher/providers/gmail.ts +1 -0
  468. package/src/watcher/providers/google-calendar.ts +1 -0
  469. package/src/watcher/providers/linear.ts +460 -0
  470. package/src/watcher/providers/slack.ts +1 -0
  471. package/src/work-items/work-item-runner.ts +1 -1
  472. package/src/workspace/git-service.ts +1 -1
  473. package/src/workspace/provider-commit-message-generator.ts +51 -22
  474. package/src/__tests__/call-bridge.test.ts +0 -517
  475. package/src/__tests__/session-process-bridge.test.ts +0 -244
  476. package/src/calls/call-bridge.ts +0 -168
  477. package/src/config/bundled-skills/media-processing/services/capability-registry.ts +0 -137
  478. package/src/config/bundled-skills/media-processing/services/event-detection-service.ts +0 -280
  479. package/src/config/bundled-skills/media-processing/services/feedback-aggregation.ts +0 -144
  480. package/src/config/bundled-skills/media-processing/services/feedback-store.ts +0 -136
  481. package/src/config/bundled-skills/media-processing/services/retrieval-service.ts +0 -95
  482. package/src/config/bundled-skills/media-processing/services/timeline-service.ts +0 -267
  483. package/src/config/bundled-skills/media-processing/tools/detect-events.ts +0 -110
  484. package/src/config/bundled-skills/media-processing/tools/recalibrate.ts +0 -235
  485. package/src/config/bundled-skills/media-processing/tools/select-tracking-profile.ts +0 -142
  486. package/src/config/bundled-skills/media-processing/tools/submit-feedback.ts +0 -150
  487. package/src/config/vellum-skills/google-oauth-setup/SKILL.md +0 -199
@@ -0,0 +1,310 @@
1
+ /**
2
+ * Auto-generated registry of bundled skill tool scripts.
3
+ *
4
+ * In compiled Bun binaries, bundled tool scripts can't be dynamically
5
+ * imported from the filesystem because their relative imports point to
6
+ * modules that only exist inside the binary's virtual /$bunfs/ filesystem.
7
+ *
8
+ * This registry eagerly imports every bundled tool script so it becomes
9
+ * part of the compiled binary. At runtime, the skill-script-runner
10
+ * checks this map before falling back to a dynamic import.
11
+ *
12
+ * Regenerate with:
13
+ * bun run scripts/generate-bundled-tool-registry.ts
14
+ */
15
+ import type { SkillToolScript } from '../tools/skills/script-contract.js';
16
+
17
+ // ── app-builder ──────────────────────────────────────────────────────────────
18
+ import * as appCreate from './bundled-skills/app-builder/tools/app-create.js';
19
+ import * as appList from './bundled-skills/app-builder/tools/app-list.js';
20
+ import * as appQuery from './bundled-skills/app-builder/tools/app-query.js';
21
+ import * as appUpdate from './bundled-skills/app-builder/tools/app-update.js';
22
+ import * as appDelete from './bundled-skills/app-builder/tools/app-delete.js';
23
+ import * as appFileList from './bundled-skills/app-builder/tools/app-file-list.js';
24
+ import * as appFileRead from './bundled-skills/app-builder/tools/app-file-read.js';
25
+ import * as appFileEdit from './bundled-skills/app-builder/tools/app-file-edit.js';
26
+ import * as appFileWrite from './bundled-skills/app-builder/tools/app-file-write.js';
27
+
28
+ // ── browser ──────────────────────────────────────────────────────────────────
29
+ import * as browserNavigate from './bundled-skills/browser/tools/browser-navigate.js';
30
+ import * as browserSnapshot from './bundled-skills/browser/tools/browser-snapshot.js';
31
+ import * as browserScreenshot from './bundled-skills/browser/tools/browser-screenshot.js';
32
+ import * as browserClose from './bundled-skills/browser/tools/browser-close.js';
33
+ import * as browserClick from './bundled-skills/browser/tools/browser-click.js';
34
+ import * as browserType from './bundled-skills/browser/tools/browser-type.js';
35
+ import * as browserPressKey from './bundled-skills/browser/tools/browser-press-key.js';
36
+ import * as browserWaitFor from './bundled-skills/browser/tools/browser-wait-for.js';
37
+ import * as browserExtract from './bundled-skills/browser/tools/browser-extract.js';
38
+ import * as browserFillCredential from './bundled-skills/browser/tools/browser-fill-credential.js';
39
+
40
+ // ── claude-code ──────────────────────────────────────────────────────────────
41
+ import * as claudeCode from './bundled-skills/claude-code/tools/claude-code.js';
42
+
43
+ // ── computer-use ─────────────────────────────────────────────────────────────
44
+ import * as computerUseClick from './bundled-skills/computer-use/tools/computer-use-click.js';
45
+ import * as computerUseDoubleClick from './bundled-skills/computer-use/tools/computer-use-double-click.js';
46
+ import * as computerUseRightClick from './bundled-skills/computer-use/tools/computer-use-right-click.js';
47
+ import * as computerUseTypeText from './bundled-skills/computer-use/tools/computer-use-type-text.js';
48
+ import * as computerUseKey from './bundled-skills/computer-use/tools/computer-use-key.js';
49
+ import * as computerUseScroll from './bundled-skills/computer-use/tools/computer-use-scroll.js';
50
+ import * as computerUseDrag from './bundled-skills/computer-use/tools/computer-use-drag.js';
51
+ import * as computerUseWait from './bundled-skills/computer-use/tools/computer-use-wait.js';
52
+ import * as computerUseOpenApp from './bundled-skills/computer-use/tools/computer-use-open-app.js';
53
+ import * as computerUseRunApplescript from './bundled-skills/computer-use/tools/computer-use-run-applescript.js';
54
+ import * as computerUseDone from './bundled-skills/computer-use/tools/computer-use-done.js';
55
+ import * as computerUseRespond from './bundled-skills/computer-use/tools/computer-use-respond.js';
56
+
57
+ // ── contacts ─────────────────────────────────────────────────────────────────
58
+ import * as contactUpsert from './bundled-skills/contacts/tools/contact-upsert.js';
59
+ import * as contactSearch from './bundled-skills/contacts/tools/contact-search.js';
60
+ import * as contactMerge from './bundled-skills/contacts/tools/contact-merge.js';
61
+
62
+ // ── document ─────────────────────────────────────────────────────────────────
63
+ import * as documentCreate from './bundled-skills/document/tools/document-create.js';
64
+ import * as documentUpdate from './bundled-skills/document/tools/document-update.js';
65
+
66
+ // ── followups ────────────────────────────────────────────────────────────────
67
+ import * as followupCreate from './bundled-skills/followups/tools/followup-create.js';
68
+ import * as followupList from './bundled-skills/followups/tools/followup-list.js';
69
+ import * as followupResolve from './bundled-skills/followups/tools/followup-resolve.js';
70
+
71
+ // ── google-calendar ──────────────────────────────────────────────────────────
72
+ import * as calendarListEvents from './bundled-skills/google-calendar/tools/calendar-list-events.js';
73
+ import * as calendarGetEvent from './bundled-skills/google-calendar/tools/calendar-get-event.js';
74
+ import * as calendarCreateEvent from './bundled-skills/google-calendar/tools/calendar-create-event.js';
75
+ import * as calendarCheckAvailability from './bundled-skills/google-calendar/tools/calendar-check-availability.js';
76
+ import * as calendarRsvp from './bundled-skills/google-calendar/tools/calendar-rsvp.js';
77
+
78
+ // ── image-studio ─────────────────────────────────────────────────────────────
79
+ import * as mediaGenerateImage from './bundled-skills/image-studio/tools/media-generate-image.js';
80
+
81
+ // ── knowledge-graph ──────────────────────────────────────────────────────────
82
+ import * as graphQuery from './bundled-skills/knowledge-graph/tools/graph-query.js';
83
+
84
+ // ── media-processing ─────────────────────────────────────────────────────────
85
+ import * as ingestMedia from './bundled-skills/media-processing/tools/ingest-media.js';
86
+ import * as mediaStatus from './bundled-skills/media-processing/tools/media-status.js';
87
+ import * as extractKeyframes from './bundled-skills/media-processing/tools/extract-keyframes.js';
88
+ import * as analyzeKeyframes from './bundled-skills/media-processing/tools/analyze-keyframes.js';
89
+ import * as queryMediaEvents from './bundled-skills/media-processing/tools/query-media-events.js';
90
+ import * as generateClip from './bundled-skills/media-processing/tools/generate-clip.js';
91
+ import * as mediaDiagnostics from './bundled-skills/media-processing/tools/media-diagnostics.js';
92
+
93
+ // ── messaging ────────────────────────────────────────────────────────────────
94
+ import * as messagingAuthTest from './bundled-skills/messaging/tools/messaging-auth-test.js';
95
+ import * as messagingListConversations from './bundled-skills/messaging/tools/messaging-list-conversations.js';
96
+ import * as messagingRead from './bundled-skills/messaging/tools/messaging-read.js';
97
+ import * as messagingSearch from './bundled-skills/messaging/tools/messaging-search.js';
98
+ import * as messagingSend from './bundled-skills/messaging/tools/messaging-send.js';
99
+ import * as messagingReply from './bundled-skills/messaging/tools/messaging-reply.js';
100
+ import * as messagingMarkRead from './bundled-skills/messaging/tools/messaging-mark-read.js';
101
+ import * as slackAddReaction from './bundled-skills/messaging/tools/slack-add-reaction.js';
102
+ import * as slackLeaveChannel from './bundled-skills/messaging/tools/slack-leave-channel.js';
103
+ import * as messagingAnalyzeActivity from './bundled-skills/messaging/tools/messaging-analyze-activity.js';
104
+ import * as messagingAnalyzeStyle from './bundled-skills/messaging/tools/messaging-analyze-style.js';
105
+ import * as messagingDraft from './bundled-skills/messaging/tools/messaging-draft.js';
106
+ import * as gmailArchive from './bundled-skills/messaging/tools/gmail-archive.js';
107
+ import * as gmailBatchArchive from './bundled-skills/messaging/tools/gmail-batch-archive.js';
108
+ import * as gmailLabel from './bundled-skills/messaging/tools/gmail-label.js';
109
+ import * as gmailBatchLabel from './bundled-skills/messaging/tools/gmail-batch-label.js';
110
+ import * as gmailTrash from './bundled-skills/messaging/tools/gmail-trash.js';
111
+ import * as gmailUnsubscribe from './bundled-skills/messaging/tools/gmail-unsubscribe.js';
112
+ import * as gmailDraft from './bundled-skills/messaging/tools/gmail-draft.js';
113
+
114
+ // ── playbooks ────────────────────────────────────────────────────────────────
115
+ import * as playbookCreate from './bundled-skills/playbooks/tools/playbook-create.js';
116
+ import * as playbookList from './bundled-skills/playbooks/tools/playbook-list.js';
117
+ import * as playbookUpdate from './bundled-skills/playbooks/tools/playbook-update.js';
118
+ import * as playbookDelete from './bundled-skills/playbooks/tools/playbook-delete.js';
119
+
120
+ // ── reminder ─────────────────────────────────────────────────────────────────
121
+ import * as reminderCreate from './bundled-skills/reminder/tools/reminder-create.js';
122
+ import * as reminderList from './bundled-skills/reminder/tools/reminder-list.js';
123
+ import * as reminderCancel from './bundled-skills/reminder/tools/reminder-cancel.js';
124
+
125
+ // ── schedule ─────────────────────────────────────────────────────────────────
126
+ import * as scheduleCreate from './bundled-skills/schedule/tools/schedule-create.js';
127
+ import * as scheduleList from './bundled-skills/schedule/tools/schedule-list.js';
128
+ import * as scheduleUpdate from './bundled-skills/schedule/tools/schedule-update.js';
129
+ import * as scheduleDelete from './bundled-skills/schedule/tools/schedule-delete.js';
130
+
131
+ // ── subagent ─────────────────────────────────────────────────────────────────
132
+ import * as subagentSpawn from './bundled-skills/subagent/tools/subagent-spawn.js';
133
+ import * as subagentStatus from './bundled-skills/subagent/tools/subagent-status.js';
134
+ import * as subagentAbort from './bundled-skills/subagent/tools/subagent-abort.js';
135
+ import * as subagentMessage from './bundled-skills/subagent/tools/subagent-message.js';
136
+ import * as subagentRead from './bundled-skills/subagent/tools/subagent-read.js';
137
+
138
+ // ── tasks ────────────────────────────────────────────────────────────────────
139
+ import * as taskSave from './bundled-skills/tasks/tools/task-save.js';
140
+ import * as taskRun from './bundled-skills/tasks/tools/task-run.js';
141
+ import * as taskList from './bundled-skills/tasks/tools/task-list.js';
142
+ import * as taskDelete from './bundled-skills/tasks/tools/task-delete.js';
143
+ import * as taskListShow from './bundled-skills/tasks/tools/task-list-show.js';
144
+ import * as taskListAdd from './bundled-skills/tasks/tools/task-list-add.js';
145
+ import * as taskListUpdate from './bundled-skills/tasks/tools/task-list-update.js';
146
+ import * as taskListRemove from './bundled-skills/tasks/tools/task-list-remove.js';
147
+ import * as taskQueueRun from './bundled-skills/tasks/tools/task-queue-run.js';
148
+
149
+ // ── transcribe ───────────────────────────────────────────────────────────────
150
+ import * as transcribeMedia from './bundled-skills/transcribe/tools/transcribe-media.js';
151
+
152
+ // ── watcher ──────────────────────────────────────────────────────────────────
153
+ import * as watcherCreate from './bundled-skills/watcher/tools/watcher-create.js';
154
+ import * as watcherList from './bundled-skills/watcher/tools/watcher-list.js';
155
+ import * as watcherUpdate from './bundled-skills/watcher/tools/watcher-update.js';
156
+ import * as watcherDelete from './bundled-skills/watcher/tools/watcher-delete.js';
157
+ import * as watcherDigest from './bundled-skills/watcher/tools/watcher-digest.js';
158
+
159
+ // ── weather ──────────────────────────────────────────────────────────────────
160
+ import * as getWeather from './bundled-skills/weather/tools/get-weather.js';
161
+
162
+ // ─── Registry ────────────────────────────────────────────────────────────────
163
+
164
+ /** Key format: `skillDirBasename:executorPath` (e.g. `schedule:tools/schedule-list.ts`). */
165
+ export const bundledToolRegistry = new Map<string, SkillToolScript>([
166
+ // app-builder
167
+ ['app-builder:tools/app-create.ts', appCreate],
168
+ ['app-builder:tools/app-list.ts', appList],
169
+ ['app-builder:tools/app-query.ts', appQuery],
170
+ ['app-builder:tools/app-update.ts', appUpdate],
171
+ ['app-builder:tools/app-delete.ts', appDelete],
172
+ ['app-builder:tools/app-file-list.ts', appFileList],
173
+ ['app-builder:tools/app-file-read.ts', appFileRead],
174
+ ['app-builder:tools/app-file-edit.ts', appFileEdit],
175
+ ['app-builder:tools/app-file-write.ts', appFileWrite],
176
+
177
+ // browser
178
+ ['browser:tools/browser-navigate.ts', browserNavigate],
179
+ ['browser:tools/browser-snapshot.ts', browserSnapshot],
180
+ ['browser:tools/browser-screenshot.ts', browserScreenshot],
181
+ ['browser:tools/browser-close.ts', browserClose],
182
+ ['browser:tools/browser-click.ts', browserClick],
183
+ ['browser:tools/browser-type.ts', browserType],
184
+ ['browser:tools/browser-press-key.ts', browserPressKey],
185
+ ['browser:tools/browser-wait-for.ts', browserWaitFor],
186
+ ['browser:tools/browser-extract.ts', browserExtract],
187
+ ['browser:tools/browser-fill-credential.ts', browserFillCredential],
188
+
189
+ // claude-code
190
+ ['claude-code:tools/claude-code.ts', claudeCode],
191
+
192
+ // computer-use
193
+ ['computer-use:tools/computer-use-click.ts', computerUseClick],
194
+ ['computer-use:tools/computer-use-double-click.ts', computerUseDoubleClick],
195
+ ['computer-use:tools/computer-use-right-click.ts', computerUseRightClick],
196
+ ['computer-use:tools/computer-use-type-text.ts', computerUseTypeText],
197
+ ['computer-use:tools/computer-use-key.ts', computerUseKey],
198
+ ['computer-use:tools/computer-use-scroll.ts', computerUseScroll],
199
+ ['computer-use:tools/computer-use-drag.ts', computerUseDrag],
200
+ ['computer-use:tools/computer-use-wait.ts', computerUseWait],
201
+ ['computer-use:tools/computer-use-open-app.ts', computerUseOpenApp],
202
+ ['computer-use:tools/computer-use-run-applescript.ts', computerUseRunApplescript],
203
+ ['computer-use:tools/computer-use-done.ts', computerUseDone],
204
+ ['computer-use:tools/computer-use-respond.ts', computerUseRespond],
205
+
206
+ // contacts
207
+ ['contacts:tools/contact-upsert.ts', contactUpsert],
208
+ ['contacts:tools/contact-search.ts', contactSearch],
209
+ ['contacts:tools/contact-merge.ts', contactMerge],
210
+
211
+ // document
212
+ ['document:tools/document-create.ts', documentCreate],
213
+ ['document:tools/document-update.ts', documentUpdate],
214
+
215
+ // followups
216
+ ['followups:tools/followup-create.ts', followupCreate],
217
+ ['followups:tools/followup-list.ts', followupList],
218
+ ['followups:tools/followup-resolve.ts', followupResolve],
219
+
220
+ // google-calendar
221
+ ['google-calendar:tools/calendar-list-events.ts', calendarListEvents],
222
+ ['google-calendar:tools/calendar-get-event.ts', calendarGetEvent],
223
+ ['google-calendar:tools/calendar-create-event.ts', calendarCreateEvent],
224
+ ['google-calendar:tools/calendar-check-availability.ts', calendarCheckAvailability],
225
+ ['google-calendar:tools/calendar-rsvp.ts', calendarRsvp],
226
+
227
+ // image-studio
228
+ ['image-studio:tools/media-generate-image.ts', mediaGenerateImage],
229
+
230
+ // knowledge-graph
231
+ ['knowledge-graph:tools/graph-query.ts', graphQuery],
232
+
233
+ // media-processing
234
+ ['media-processing:tools/ingest-media.ts', ingestMedia],
235
+ ['media-processing:tools/media-status.ts', mediaStatus],
236
+ ['media-processing:tools/extract-keyframes.ts', extractKeyframes],
237
+ ['media-processing:tools/analyze-keyframes.ts', analyzeKeyframes],
238
+ ['media-processing:tools/query-media-events.ts', queryMediaEvents],
239
+ ['media-processing:tools/generate-clip.ts', generateClip],
240
+ ['media-processing:tools/media-diagnostics.ts', mediaDiagnostics],
241
+
242
+ // messaging
243
+ ['messaging:tools/messaging-auth-test.ts', messagingAuthTest],
244
+ ['messaging:tools/messaging-list-conversations.ts', messagingListConversations],
245
+ ['messaging:tools/messaging-read.ts', messagingRead],
246
+ ['messaging:tools/messaging-search.ts', messagingSearch],
247
+ ['messaging:tools/messaging-send.ts', messagingSend],
248
+ ['messaging:tools/messaging-reply.ts', messagingReply],
249
+ ['messaging:tools/messaging-mark-read.ts', messagingMarkRead],
250
+ ['messaging:tools/slack-add-reaction.ts', slackAddReaction],
251
+ ['messaging:tools/slack-leave-channel.ts', slackLeaveChannel],
252
+ ['messaging:tools/messaging-analyze-activity.ts', messagingAnalyzeActivity],
253
+ ['messaging:tools/messaging-analyze-style.ts', messagingAnalyzeStyle],
254
+ ['messaging:tools/messaging-draft.ts', messagingDraft],
255
+ ['messaging:tools/gmail-archive.ts', gmailArchive],
256
+ ['messaging:tools/gmail-batch-archive.ts', gmailBatchArchive],
257
+ ['messaging:tools/gmail-label.ts', gmailLabel],
258
+ ['messaging:tools/gmail-batch-label.ts', gmailBatchLabel],
259
+ ['messaging:tools/gmail-trash.ts', gmailTrash],
260
+ ['messaging:tools/gmail-unsubscribe.ts', gmailUnsubscribe],
261
+ ['messaging:tools/gmail-draft.ts', gmailDraft],
262
+
263
+ // playbooks
264
+ ['playbooks:tools/playbook-create.ts', playbookCreate],
265
+ ['playbooks:tools/playbook-list.ts', playbookList],
266
+ ['playbooks:tools/playbook-update.ts', playbookUpdate],
267
+ ['playbooks:tools/playbook-delete.ts', playbookDelete],
268
+
269
+ // reminder
270
+ ['reminder:tools/reminder-create.ts', reminderCreate],
271
+ ['reminder:tools/reminder-list.ts', reminderList],
272
+ ['reminder:tools/reminder-cancel.ts', reminderCancel],
273
+
274
+ // schedule
275
+ ['schedule:tools/schedule-create.ts', scheduleCreate],
276
+ ['schedule:tools/schedule-list.ts', scheduleList],
277
+ ['schedule:tools/schedule-update.ts', scheduleUpdate],
278
+ ['schedule:tools/schedule-delete.ts', scheduleDelete],
279
+
280
+ // subagent
281
+ ['subagent:tools/subagent-spawn.ts', subagentSpawn],
282
+ ['subagent:tools/subagent-status.ts', subagentStatus],
283
+ ['subagent:tools/subagent-abort.ts', subagentAbort],
284
+ ['subagent:tools/subagent-message.ts', subagentMessage],
285
+ ['subagent:tools/subagent-read.ts', subagentRead],
286
+
287
+ // tasks
288
+ ['tasks:tools/task-save.ts', taskSave],
289
+ ['tasks:tools/task-run.ts', taskRun],
290
+ ['tasks:tools/task-list.ts', taskList],
291
+ ['tasks:tools/task-delete.ts', taskDelete],
292
+ ['tasks:tools/task-list-show.ts', taskListShow],
293
+ ['tasks:tools/task-list-add.ts', taskListAdd],
294
+ ['tasks:tools/task-list-update.ts', taskListUpdate],
295
+ ['tasks:tools/task-list-remove.ts', taskListRemove],
296
+ ['tasks:tools/task-queue-run.ts', taskQueueRun],
297
+
298
+ // transcribe
299
+ ['transcribe:tools/transcribe-media.ts', transcribeMedia],
300
+
301
+ // watcher
302
+ ['watcher:tools/watcher-create.ts', watcherCreate],
303
+ ['watcher:tools/watcher-list.ts', watcherList],
304
+ ['watcher:tools/watcher-update.ts', watcherUpdate],
305
+ ['watcher:tools/watcher-delete.ts', watcherDelete],
306
+ ['watcher:tools/watcher-digest.ts', watcherDigest],
307
+
308
+ // weather
309
+ ['weather:tools/get-weather.ts', getWeather],
310
+ ]);
@@ -0,0 +1,181 @@
1
+ import { z } from 'zod';
2
+
3
+ const VALID_CALL_PROVIDERS = ['twilio'] as const;
4
+ const VALID_CALL_VOICE_MODES = ['twilio_standard', 'twilio_elevenlabs_tts', 'elevenlabs_agent'] as const;
5
+ export const VALID_CALLER_IDENTITY_MODES = ['assistant_number', 'user_number'] as const;
6
+ const VALID_CALL_TRANSCRIPTION_PROVIDERS = ['Deepgram', 'Google'] as const;
7
+
8
+ export const CallsDisclosureConfigSchema = z.object({
9
+ enabled: z
10
+ .boolean({ error: 'calls.disclosure.enabled must be a boolean' })
11
+ .default(true),
12
+ text: z
13
+ .string({ error: 'calls.disclosure.text must be a string' })
14
+ .default('At the very beginning of the call, introduce yourself as an assistant calling on behalf of the person you represent. Do not say "AI assistant".'),
15
+ });
16
+
17
+ export const CallsSafetyConfigSchema = z.object({
18
+ denyCategories: z
19
+ .array(z.string({ error: 'calls.safety.denyCategories values must be strings' }))
20
+ .default([]),
21
+ });
22
+
23
+ export const CallsElevenLabsConfigSchema = z.object({
24
+ voiceId: z
25
+ .string({ error: 'calls.voice.elevenlabs.voiceId must be a string' })
26
+ .default(''),
27
+ voiceModelId: z
28
+ .string({ error: 'calls.voice.elevenlabs.voiceModelId must be a string' })
29
+ .default(''),
30
+ speed: z
31
+ .number({ error: 'calls.voice.elevenlabs.speed must be a number' })
32
+ .min(0.7, 'calls.voice.elevenlabs.speed must be >= 0.7')
33
+ .max(1.2, 'calls.voice.elevenlabs.speed must be <= 1.2')
34
+ .default(1.0),
35
+ stability: z
36
+ .number({ error: 'calls.voice.elevenlabs.stability must be a number' })
37
+ .min(0, 'calls.voice.elevenlabs.stability must be >= 0')
38
+ .max(1, 'calls.voice.elevenlabs.stability must be <= 1')
39
+ .default(0.5),
40
+ similarityBoost: z
41
+ .number({ error: 'calls.voice.elevenlabs.similarityBoost must be a number' })
42
+ .min(0, 'calls.voice.elevenlabs.similarityBoost must be >= 0')
43
+ .max(1, 'calls.voice.elevenlabs.similarityBoost must be <= 1')
44
+ .default(0.75),
45
+ useSpeakerBoost: z
46
+ .boolean({ error: 'calls.voice.elevenlabs.useSpeakerBoost must be a boolean' })
47
+ .default(true),
48
+ agentId: z
49
+ .string({ error: 'calls.voice.elevenlabs.agentId must be a string' })
50
+ .default(''),
51
+ apiBaseUrl: z
52
+ .string({ error: 'calls.voice.elevenlabs.apiBaseUrl must be a string' })
53
+ .default('https://api.elevenlabs.io'),
54
+ registerCallTimeoutMs: z
55
+ .number({ error: 'calls.voice.elevenlabs.registerCallTimeoutMs must be a number' })
56
+ .int('calls.voice.elevenlabs.registerCallTimeoutMs must be an integer')
57
+ .min(1000, 'calls.voice.elevenlabs.registerCallTimeoutMs must be >= 1000')
58
+ .max(15000, 'calls.voice.elevenlabs.registerCallTimeoutMs must be <= 15000')
59
+ .default(5000),
60
+ });
61
+
62
+ export const CallsVoiceConfigSchema = z.object({
63
+ mode: z
64
+ .enum(VALID_CALL_VOICE_MODES, {
65
+ error: `calls.voice.mode must be one of: ${VALID_CALL_VOICE_MODES.join(', ')}`,
66
+ })
67
+ .default('twilio_standard'),
68
+ language: z
69
+ .string({ error: 'calls.voice.language must be a string' })
70
+ .default('en-US'),
71
+ transcriptionProvider: z
72
+ .enum(VALID_CALL_TRANSCRIPTION_PROVIDERS, {
73
+ error: `calls.voice.transcriptionProvider must be one of: ${VALID_CALL_TRANSCRIPTION_PROVIDERS.join(', ')}`,
74
+ })
75
+ .default('Deepgram'),
76
+ fallbackToStandardOnError: z
77
+ .boolean({ error: 'calls.voice.fallbackToStandardOnError must be a boolean' })
78
+ .default(true),
79
+ elevenlabs: CallsElevenLabsConfigSchema.default({
80
+ voiceId: '',
81
+ voiceModelId: '',
82
+ speed: 1.0,
83
+ stability: 0.5,
84
+ similarityBoost: 0.75,
85
+ useSpeakerBoost: true,
86
+ agentId: '',
87
+ apiBaseUrl: 'https://api.elevenlabs.io',
88
+ registerCallTimeoutMs: 5000,
89
+ }),
90
+ });
91
+
92
+ export const CallerIdentityConfigSchema = z.object({
93
+ allowPerCallOverride: z
94
+ .boolean({ error: 'calls.callerIdentity.allowPerCallOverride must be a boolean' })
95
+ .default(true),
96
+ userNumber: z
97
+ .string({ error: 'calls.callerIdentity.userNumber must be a string' })
98
+ .optional(),
99
+ });
100
+
101
+ export const CallsVerificationConfigSchema = z.object({
102
+ enabled: z
103
+ .boolean({ error: 'calls.verification.enabled must be a boolean' })
104
+ .default(false),
105
+ maxAttempts: z
106
+ .number({ error: 'calls.verification.maxAttempts must be a number' })
107
+ .int('calls.verification.maxAttempts must be an integer')
108
+ .positive('calls.verification.maxAttempts must be a positive integer')
109
+ .default(3),
110
+ codeLength: z
111
+ .number({ error: 'calls.verification.codeLength must be a number' })
112
+ .int('calls.verification.codeLength must be an integer')
113
+ .positive('calls.verification.codeLength must be a positive integer')
114
+ .default(6),
115
+ });
116
+
117
+ export const CallsConfigSchema = z.object({
118
+ enabled: z
119
+ .boolean({ error: 'calls.enabled must be a boolean' })
120
+ .default(true),
121
+ provider: z
122
+ .enum(VALID_CALL_PROVIDERS, {
123
+ error: `calls.provider must be one of: ${VALID_CALL_PROVIDERS.join(', ')}`,
124
+ })
125
+ .default('twilio'),
126
+ maxDurationSeconds: z
127
+ .number({ error: 'calls.maxDurationSeconds must be a number' })
128
+ .int('calls.maxDurationSeconds must be an integer')
129
+ .positive('calls.maxDurationSeconds must be a positive integer')
130
+ .max(2_147_483, 'calls.maxDurationSeconds must be at most 2147483 (setTimeout-safe limit)')
131
+ .default(3600),
132
+ userConsultTimeoutSeconds: z
133
+ .number({ error: 'calls.userConsultTimeoutSeconds must be a number' })
134
+ .int('calls.userConsultTimeoutSeconds must be an integer')
135
+ .positive('calls.userConsultTimeoutSeconds must be a positive integer')
136
+ .max(2_147_483, 'calls.userConsultTimeoutSeconds must be at most 2147483 (setTimeout-safe limit)')
137
+ .default(120),
138
+ disclosure: CallsDisclosureConfigSchema.default({
139
+ enabled: true,
140
+ text: 'At the very beginning of the call, introduce yourself as an assistant calling on behalf of the person you represent. Do not say "AI assistant".',
141
+ }),
142
+ safety: CallsSafetyConfigSchema.default({
143
+ denyCategories: [],
144
+ }),
145
+ voice: CallsVoiceConfigSchema.default({
146
+ mode: 'twilio_standard',
147
+ language: 'en-US',
148
+ transcriptionProvider: 'Deepgram',
149
+ fallbackToStandardOnError: true,
150
+ elevenlabs: {
151
+ voiceId: '',
152
+ voiceModelId: '',
153
+ speed: 1.0,
154
+ stability: 0.5,
155
+ similarityBoost: 0.75,
156
+ useSpeakerBoost: true,
157
+ agentId: '',
158
+ apiBaseUrl: 'https://api.elevenlabs.io',
159
+ registerCallTimeoutMs: 5000,
160
+ },
161
+ }),
162
+ model: z
163
+ .string({ error: 'calls.model must be a string' })
164
+ .optional(),
165
+ callerIdentity: CallerIdentityConfigSchema.default({
166
+ allowPerCallOverride: true,
167
+ }),
168
+ verification: CallsVerificationConfigSchema.default({
169
+ enabled: false,
170
+ maxAttempts: 3,
171
+ codeLength: 6,
172
+ }),
173
+ });
174
+
175
+ export type CallsConfig = z.infer<typeof CallsConfigSchema>;
176
+ export type CallsDisclosureConfig = z.infer<typeof CallsDisclosureConfigSchema>;
177
+ export type CallsSafetyConfig = z.infer<typeof CallsSafetyConfigSchema>;
178
+ export type CallsVoiceConfig = z.infer<typeof CallsVoiceConfigSchema>;
179
+ export type CallsElevenLabsConfig = z.infer<typeof CallsElevenLabsConfigSchema>;
180
+ export type CallerIdentityConfig = z.infer<typeof CallerIdentityConfigSchema>;
181
+ export type CallsVerificationConfig = z.infer<typeof CallsVerificationConfigSchema>;