@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,250 @@
1
+ // Surface types, UI surface lifecycle messages.
2
+
3
+ // === Surface type definitions ===
4
+
5
+ export type SurfaceType = 'card' | 'form' | 'list' | 'table' | 'confirmation' | 'dynamic_page' | 'file_upload' | 'browser_view' | 'document_preview';
6
+
7
+ export const INTERACTIVE_SURFACE_TYPES: SurfaceType[] = ['form', 'confirmation', 'dynamic_page', 'file_upload'];
8
+
9
+ export interface SurfaceAction {
10
+ id: string;
11
+ label: string;
12
+ style?: 'primary' | 'secondary' | 'destructive';
13
+ }
14
+
15
+ export interface CardSurfaceData {
16
+ title: string;
17
+ subtitle?: string;
18
+ body: string;
19
+ metadata?: Array<{ label: string; value: string }>;
20
+ /** Optional template name for specialized rendering (e.g. "weather_forecast"). */
21
+ template?: string;
22
+ /** Arbitrary data consumed by the template renderer. Shape depends on template. */
23
+ templateData?: Record<string, unknown>;
24
+ }
25
+
26
+ export interface FormField {
27
+ id: string;
28
+ type: 'text' | 'textarea' | 'select' | 'toggle' | 'number' | 'password';
29
+ label: string;
30
+ placeholder?: string;
31
+ required?: boolean;
32
+ defaultValue?: string | number | boolean;
33
+ options?: Array<{ label: string; value: string }>;
34
+ }
35
+
36
+ export interface FormPage {
37
+ id: string;
38
+ title: string;
39
+ description?: string;
40
+ fields: FormField[];
41
+ }
42
+
43
+ export interface FormSurfaceData {
44
+ description?: string;
45
+ fields: FormField[];
46
+ submitLabel?: string;
47
+ pages?: FormPage[];
48
+ pageLabels?: { next?: string; back?: string; submit?: string };
49
+ }
50
+
51
+ export interface ListItem {
52
+ id: string;
53
+ title: string;
54
+ subtitle?: string;
55
+ icon?: string;
56
+ selected?: boolean;
57
+ }
58
+
59
+ export interface ListSurfaceData {
60
+ items: ListItem[];
61
+ selectionMode: 'single' | 'multiple' | 'none';
62
+ }
63
+
64
+ export interface ConfirmationSurfaceData {
65
+ message: string;
66
+ detail?: string;
67
+ confirmLabel?: string;
68
+ cancelLabel?: string;
69
+ destructive?: boolean;
70
+ }
71
+
72
+ export interface DynamicPagePreview {
73
+ title: string;
74
+ subtitle?: string;
75
+ description?: string;
76
+ icon?: string;
77
+ metrics?: Array<{ label: string; value: string }>;
78
+ }
79
+
80
+ export interface DynamicPageSurfaceData {
81
+ html: string;
82
+ width?: number;
83
+ height?: number;
84
+ appId?: string;
85
+ appType?: string;
86
+ reloadGeneration?: number;
87
+ status?: string;
88
+ preview?: DynamicPagePreview;
89
+ }
90
+
91
+ export interface FileUploadSurfaceData {
92
+ prompt: string;
93
+ acceptedTypes?: string[];
94
+ maxFiles?: number;
95
+ maxSizeBytes?: number;
96
+ }
97
+
98
+ export interface TableColumn {
99
+ id: string;
100
+ label: string;
101
+ width?: number;
102
+ }
103
+
104
+ export interface TableRow {
105
+ id: string;
106
+ cells: Record<string, string>;
107
+ selectable?: boolean;
108
+ selected?: boolean;
109
+ }
110
+
111
+ export interface TableSurfaceData {
112
+ columns: TableColumn[];
113
+ rows: TableRow[];
114
+ selectionMode?: 'none' | 'single' | 'multiple';
115
+ caption?: string;
116
+ }
117
+
118
+ export interface BrowserViewSurfaceData {
119
+ sessionId: string;
120
+ currentUrl: string;
121
+ status: 'navigating' | 'idle' | 'interacting';
122
+ frame?: string; // base64 JPEG
123
+ actionText?: string; // "Clicking 'Submit' button"
124
+ highlights?: Array<{ x: number; y: number; w: number; h: number; label: string }>;
125
+ pages?: Array<{ id: string; title: string; url: string; active: boolean }>;
126
+ }
127
+
128
+ export interface DocumentPreviewSurfaceData {
129
+ title: string;
130
+ surfaceId: string; // the doc's real surfaceId, for focusing the panel
131
+ subtitle?: string;
132
+ }
133
+
134
+ export type SurfaceData = CardSurfaceData | FormSurfaceData | ListSurfaceData | TableSurfaceData | ConfirmationSurfaceData | DynamicPageSurfaceData | FileUploadSurfaceData | BrowserViewSurfaceData | DocumentPreviewSurfaceData;
135
+
136
+ // === Client → Server ===
137
+
138
+ export interface UiSurfaceAction {
139
+ type: 'ui_surface_action';
140
+ sessionId: string;
141
+ surfaceId: string;
142
+ actionId: string;
143
+ data?: Record<string, unknown>;
144
+ }
145
+
146
+ export interface UiSurfaceUndoRequest {
147
+ type: 'ui_surface_undo';
148
+ sessionId: string;
149
+ surfaceId: string;
150
+ }
151
+
152
+ // === Server → Client ===
153
+
154
+ /** Common fields shared by all UiSurfaceShow variants. */
155
+ interface UiSurfaceShowBase {
156
+ type: 'ui_surface_show';
157
+ sessionId: string;
158
+ surfaceId: string;
159
+ title?: string;
160
+ actions?: SurfaceAction[];
161
+ display?: 'inline' | 'panel';
162
+ /** The message ID that this surface belongs to (for history loading). */
163
+ messageId?: string;
164
+ }
165
+
166
+ export interface UiSurfaceShowCard extends UiSurfaceShowBase {
167
+ surfaceType: 'card';
168
+ data: CardSurfaceData;
169
+ }
170
+
171
+ export interface UiSurfaceShowForm extends UiSurfaceShowBase {
172
+ surfaceType: 'form';
173
+ data: FormSurfaceData;
174
+ }
175
+
176
+ export interface UiSurfaceShowList extends UiSurfaceShowBase {
177
+ surfaceType: 'list';
178
+ data: ListSurfaceData;
179
+ }
180
+
181
+ export interface UiSurfaceShowConfirmation extends UiSurfaceShowBase {
182
+ surfaceType: 'confirmation';
183
+ data: ConfirmationSurfaceData;
184
+ }
185
+
186
+ export interface UiSurfaceShowDynamicPage extends UiSurfaceShowBase {
187
+ surfaceType: 'dynamic_page';
188
+ data: DynamicPageSurfaceData;
189
+ }
190
+
191
+ export interface UiSurfaceShowTable extends UiSurfaceShowBase {
192
+ surfaceType: 'table';
193
+ data: TableSurfaceData;
194
+ }
195
+
196
+ export interface UiSurfaceShowFileUpload extends UiSurfaceShowBase {
197
+ surfaceType: 'file_upload';
198
+ data: FileUploadSurfaceData;
199
+ }
200
+
201
+ export interface UiSurfaceShowBrowserView extends UiSurfaceShowBase {
202
+ surfaceType: 'browser_view';
203
+ data: BrowserViewSurfaceData;
204
+ }
205
+
206
+ export interface UiSurfaceShowDocumentPreview extends UiSurfaceShowBase {
207
+ surfaceType: 'document_preview';
208
+ data: DocumentPreviewSurfaceData;
209
+ }
210
+
211
+ export type UiSurfaceShow =
212
+ | UiSurfaceShowCard
213
+ | UiSurfaceShowForm
214
+ | UiSurfaceShowList
215
+ | UiSurfaceShowTable
216
+ | UiSurfaceShowConfirmation
217
+ | UiSurfaceShowDynamicPage
218
+ | UiSurfaceShowFileUpload
219
+ | UiSurfaceShowBrowserView
220
+ | UiSurfaceShowDocumentPreview;
221
+
222
+ export interface UiSurfaceUpdate {
223
+ type: 'ui_surface_update';
224
+ sessionId: string;
225
+ surfaceId: string;
226
+ data: Partial<SurfaceData>;
227
+ }
228
+
229
+ export interface UiSurfaceDismiss {
230
+ type: 'ui_surface_dismiss';
231
+ sessionId: string;
232
+ surfaceId: string;
233
+ }
234
+
235
+ export interface UiSurfaceComplete {
236
+ type: 'ui_surface_complete';
237
+ sessionId: string;
238
+ surfaceId: string;
239
+ summary: string;
240
+ submittedData?: Record<string, unknown>;
241
+ }
242
+
243
+ export interface UiSurfaceUndoResult {
244
+ type: 'ui_surface_undo_result';
245
+ sessionId: string;
246
+ surfaceId: string;
247
+ success: boolean;
248
+ /** Number of remaining undo entries after this undo. */
249
+ remainingUndos: number;
250
+ }
@@ -0,0 +1,60 @@
1
+ // Trust rule and starter bundle types.
2
+
3
+ // === Client → Server ===
4
+
5
+ export interface AddTrustRule {
6
+ type: 'add_trust_rule';
7
+ toolName: string;
8
+ pattern: string;
9
+ scope: string;
10
+ decision: 'allow' | 'deny' | 'ask';
11
+ /** When true, the rule also covers high-risk invocations. */
12
+ allowHighRisk?: boolean;
13
+ /** Execution target override for this rule. */
14
+ executionTarget?: 'host' | 'sandbox';
15
+ }
16
+
17
+ export interface TrustRulesList {
18
+ type: 'trust_rules_list';
19
+ }
20
+
21
+ export interface RemoveTrustRule {
22
+ type: 'remove_trust_rule';
23
+ id: string;
24
+ }
25
+
26
+ export interface UpdateTrustRule {
27
+ type: 'update_trust_rule';
28
+ id: string;
29
+ tool?: string;
30
+ pattern?: string;
31
+ scope?: string;
32
+ decision?: 'allow' | 'deny' | 'ask';
33
+ priority?: number;
34
+ }
35
+
36
+ export interface AcceptStarterBundle {
37
+ type: 'accept_starter_bundle';
38
+ }
39
+
40
+ // === Server → Client ===
41
+
42
+ export interface TrustRulesListResponse {
43
+ type: 'trust_rules_list_response';
44
+ rules: Array<{
45
+ id: string;
46
+ tool: string;
47
+ pattern: string;
48
+ scope: string;
49
+ decision: 'allow' | 'deny' | 'ask';
50
+ priority: number;
51
+ createdAt: number;
52
+ }>;
53
+ }
54
+
55
+ export interface AcceptStarterBundleResponse {
56
+ type: 'accept_starter_bundle_response';
57
+ accepted: boolean;
58
+ rulesAdded: number;
59
+ alreadyAccepted: boolean;
60
+ }
@@ -0,0 +1,225 @@
1
+ // Work item (task queue) types.
2
+
3
+ // === Client → Server ===
4
+
5
+ export interface WorkItemsListRequest {
6
+ type: 'work_items_list';
7
+ status?: string; // optional filter
8
+ }
9
+
10
+ export interface WorkItemGetRequest {
11
+ type: 'work_item_get';
12
+ id: string;
13
+ }
14
+
15
+ export interface WorkItemUpdateRequest {
16
+ type: 'work_item_update';
17
+ id: string;
18
+ title?: string;
19
+ notes?: string;
20
+ status?: string;
21
+ priorityTier?: number;
22
+ sortIndex?: number;
23
+ }
24
+
25
+ export interface WorkItemCompleteRequest {
26
+ type: 'work_item_complete';
27
+ id: string;
28
+ }
29
+
30
+ export interface WorkItemDeleteRequest {
31
+ type: 'work_item_delete';
32
+ id: string;
33
+ }
34
+
35
+ export interface WorkItemRunTaskRequest {
36
+ type: 'work_item_run_task';
37
+ id: string;
38
+ }
39
+
40
+ export interface WorkItemOutputRequest {
41
+ type: 'work_item_output';
42
+ id: string;
43
+ }
44
+
45
+ export interface WorkItemPreflightRequest {
46
+ type: 'work_item_preflight';
47
+ id: string; // work item ID
48
+ }
49
+
50
+ export interface WorkItemApprovePermissionsRequest {
51
+ type: 'work_item_approve_permissions';
52
+ id: string;
53
+ approvedTools: string[]; // tools the user approved
54
+ }
55
+
56
+ export interface WorkItemCancelRequest {
57
+ type: 'work_item_cancel';
58
+ id: string;
59
+ }
60
+
61
+ // === Server → Client ===
62
+
63
+ export interface WorkItemsListResponse {
64
+ type: 'work_items_list_response';
65
+ items: Array<{
66
+ id: string;
67
+ taskId: string;
68
+ title: string;
69
+ notes: string | null;
70
+ status: string;
71
+ priorityTier: number;
72
+ sortIndex: number | null;
73
+ lastRunId: string | null;
74
+ lastRunConversationId: string | null;
75
+ lastRunStatus: string | null;
76
+ sourceType: string | null;
77
+ sourceId: string | null;
78
+ createdAt: number;
79
+ updatedAt: number;
80
+ }>;
81
+ }
82
+
83
+ export interface WorkItemGetResponse {
84
+ type: 'work_item_get_response';
85
+ item: {
86
+ id: string;
87
+ taskId: string;
88
+ title: string;
89
+ notes: string | null;
90
+ status: string;
91
+ priorityTier: number;
92
+ sortIndex: number | null;
93
+ lastRunId: string | null;
94
+ lastRunConversationId: string | null;
95
+ lastRunStatus: string | null;
96
+ sourceType: string | null;
97
+ sourceId: string | null;
98
+ createdAt: number;
99
+ updatedAt: number;
100
+ } | null;
101
+ }
102
+
103
+ export interface WorkItemUpdateResponse {
104
+ type: 'work_item_update_response';
105
+ item: {
106
+ id: string;
107
+ taskId: string;
108
+ title: string;
109
+ notes: string | null;
110
+ status: string;
111
+ priorityTier: number;
112
+ sortIndex: number | null;
113
+ lastRunId: string | null;
114
+ lastRunConversationId: string | null;
115
+ lastRunStatus: string | null;
116
+ sourceType: string | null;
117
+ sourceId: string | null;
118
+ createdAt: number;
119
+ updatedAt: number;
120
+ } | null;
121
+ }
122
+
123
+ export interface WorkItemDeleteResponse {
124
+ type: 'work_item_delete_response';
125
+ id: string;
126
+ success: boolean;
127
+ }
128
+
129
+ export type WorkItemRunTaskErrorCode = 'not_found' | 'already_running' | 'invalid_status' | 'no_task' | 'permission_required';
130
+
131
+ export interface WorkItemRunTaskResponse {
132
+ type: 'work_item_run_task_response';
133
+ id: string;
134
+ lastRunId: string;
135
+ success: boolean;
136
+ error?: string;
137
+ /** Structured error code so the client can deterministically re-enable buttons or show contextual UI. */
138
+ errorCode?: WorkItemRunTaskErrorCode;
139
+ }
140
+
141
+ export interface WorkItemOutputResponse {
142
+ type: 'work_item_output_response';
143
+ id: string;
144
+ success: boolean;
145
+ error?: string;
146
+ output?: {
147
+ title: string;
148
+ status: string;
149
+ runId: string | null;
150
+ conversationId: string | null;
151
+ completedAt: number | null;
152
+ summary: string;
153
+ highlights: string[];
154
+ };
155
+ }
156
+
157
+ export interface WorkItemPreflightResponse {
158
+ type: 'work_item_preflight_response';
159
+ id: string;
160
+ success: boolean;
161
+ error?: string;
162
+ permissions?: {
163
+ tool: string;
164
+ description: string;
165
+ riskLevel: 'low' | 'medium' | 'high';
166
+ currentDecision: 'allow' | 'deny' | 'prompt';
167
+ }[];
168
+ }
169
+
170
+ export interface WorkItemApprovePermissionsResponse {
171
+ type: 'work_item_approve_permissions_response';
172
+ id: string;
173
+ success: boolean;
174
+ error?: string;
175
+ }
176
+
177
+ export interface WorkItemCancelResponse {
178
+ type: 'work_item_cancel_response';
179
+ id: string;
180
+ success: boolean;
181
+ error?: string;
182
+ }
183
+
184
+ /** Server push — tells the client to open/focus the tasks window. */
185
+ export interface OpenTasksWindow {
186
+ type: 'open_tasks_window';
187
+ }
188
+
189
+ /** Server push — lightweight invalidation signal: the task queue has been mutated, refetch your list. */
190
+ export interface TasksChanged {
191
+ type: 'tasks_changed';
192
+ }
193
+
194
+ /** Server push — broadcast when a work item status changes (e.g. running -> awaiting_review). */
195
+ export interface WorkItemStatusChanged {
196
+ type: 'work_item_status_changed';
197
+ item: {
198
+ id: string;
199
+ taskId: string;
200
+ title: string;
201
+ status: string;
202
+ lastRunId: string | null;
203
+ lastRunConversationId: string | null;
204
+ lastRunStatus: string | null;
205
+ updatedAt: number;
206
+ };
207
+ }
208
+
209
+ /** Server push — broadcast when a task run creates a conversation, so the client can show it as a chat thread. */
210
+ export interface TaskRunThreadCreated {
211
+ type: 'task_run_thread_created';
212
+ conversationId: string;
213
+ workItemId: string;
214
+ title: string;
215
+ }
216
+
217
+ /** Server push — broadcast when a guardian action request creates a thread for the mac channel. */
218
+ export interface GuardianRequestThreadCreated {
219
+ type: 'guardian_request_thread_created';
220
+ conversationId: string;
221
+ requestId: string;
222
+ callSessionId: string;
223
+ title: string;
224
+ questionText: string;
225
+ }
@@ -0,0 +1,113 @@
1
+ // Workspace file, identity, and tool permission types.
2
+
3
+ // === Client → Server ===
4
+
5
+ export interface WorkspaceFilesListRequest {
6
+ type: 'workspace_files_list';
7
+ }
8
+
9
+ export interface WorkspaceFileReadRequest {
10
+ type: 'workspace_file_read';
11
+ /** Relative path within the workspace directory (e.g. "IDENTITY.md"). */
12
+ path: string;
13
+ }
14
+
15
+ export interface IdentityGetRequest {
16
+ type: 'identity_get';
17
+ }
18
+
19
+ export interface ToolPermissionSimulateRequest {
20
+ type: 'tool_permission_simulate';
21
+ /** Tool name to simulate (e.g. 'bash', 'file_write'). */
22
+ toolName: string;
23
+ /** Tool input record to simulate. */
24
+ input: Record<string, unknown>;
25
+ /** Working directory context; defaults to daemon cwd when omitted. */
26
+ workingDir?: string;
27
+ /** Whether the simulated context is interactive (default true). */
28
+ isInteractive?: boolean;
29
+ /** When true, side-effect tools that would normally be auto-allowed get promoted to prompt. */
30
+ forcePromptSideEffects?: boolean;
31
+ }
32
+
33
+ export interface ToolNamesListRequest {
34
+ type: 'tool_names_list';
35
+ }
36
+
37
+ // === Server → Client ===
38
+
39
+ export interface WorkspaceFilesListResponse {
40
+ type: 'workspace_files_list_response';
41
+ files: Array<{
42
+ /** Relative path within the workspace (e.g. "IDENTITY.md", "skills/my-skill"). */
43
+ path: string;
44
+ /** Display name (e.g. "IDENTITY.md"). */
45
+ name: string;
46
+ /** Whether the file/directory exists. */
47
+ exists: boolean;
48
+ }>;
49
+ }
50
+
51
+ export interface WorkspaceFileReadResponse {
52
+ type: 'workspace_file_read_response';
53
+ path: string;
54
+ content: string | null;
55
+ error?: string;
56
+ }
57
+
58
+ export interface IdentityGetResponse {
59
+ type: 'identity_get_response';
60
+ /** Whether an IDENTITY.md file was found. When false, all fields are empty defaults. Optional for backwards compat with older daemons. */
61
+ found?: boolean;
62
+ name: string;
63
+ role: string;
64
+ personality: string;
65
+ emoji: string;
66
+ home: string;
67
+ version?: string;
68
+ assistantId?: string;
69
+ createdAt?: string;
70
+ originSystem?: string;
71
+ }
72
+
73
+ export interface ToolPermissionSimulateResponse {
74
+ type: 'tool_permission_simulate_response';
75
+ success: boolean;
76
+ /** The simulated permission decision. */
77
+ decision?: 'allow' | 'deny' | 'prompt';
78
+ /** Risk level of the simulated tool invocation. */
79
+ riskLevel?: string;
80
+ /** Human-readable reason for the decision. */
81
+ reason?: string;
82
+ /** When decision is 'prompt', the data needed to render a ToolConfirmationBubble. */
83
+ promptPayload?: {
84
+ allowlistOptions: Array<{ label: string; description: string; pattern: string }>;
85
+ scopeOptions: Array<{ label: string; scope: string }>;
86
+ persistentDecisionsAllowed: boolean;
87
+ };
88
+ /** Resolved execution target for the tool. */
89
+ executionTarget?: 'host' | 'sandbox';
90
+ /** ID of the trust rule that matched (if any). */
91
+ matchedRuleId?: string;
92
+ /** Error message when success is false. */
93
+ error?: string;
94
+ }
95
+
96
+ export interface ToolInputSchema {
97
+ type: 'object';
98
+ properties?: Record<string, {
99
+ type?: string;
100
+ description?: string;
101
+ enum?: string[];
102
+ [key: string]: unknown;
103
+ }>;
104
+ required?: string[];
105
+ }
106
+
107
+ export interface ToolNamesListResponse {
108
+ type: 'tool_names_list_response';
109
+ /** Sorted list of all registered tool names. */
110
+ names: string[];
111
+ /** Input schemas keyed by tool name. */
112
+ schemas?: Record<string, ToolInputSchema>;
113
+ }