vellum 0.0.16 → 0.2.0

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 (838) hide show
  1. package/.dockerignore +27 -0
  2. package/.env.example +22 -0
  3. package/Dockerfile +99 -0
  4. package/Dockerfile.sandbox +5 -0
  5. package/README.md +150 -3
  6. package/bun.lock +1768 -0
  7. package/bunfig.toml +2 -0
  8. package/docs/skills.md +158 -0
  9. package/drizzle/0000_dizzy_maggott.sql +301 -0
  10. package/drizzle/meta/0000_snapshot.json +1999 -0
  11. package/drizzle/meta/_journal.json +13 -0
  12. package/drizzle.config.ts +7 -0
  13. package/eslint.config.mjs +17 -0
  14. package/hook-templates/debug-prompt-logger/hook.json +7 -0
  15. package/hook-templates/debug-prompt-logger/run.sh +68 -0
  16. package/knip.json +9 -0
  17. package/package.json +60 -10
  18. package/scripts/ipc/check-contract-inventory.ts +104 -0
  19. package/scripts/ipc/check-swift-decoder-drift.ts +163 -0
  20. package/scripts/ipc/generate-swift.ts +492 -0
  21. package/scripts/test-filesystem-tools.sh +48 -0
  22. package/scripts/test.sh +122 -0
  23. package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +2079 -0
  24. package/src/__tests__/account-registry.test.ts +244 -0
  25. package/src/__tests__/active-skill-tools.test.ts +378 -0
  26. package/src/__tests__/agent-loop-thinking.test.ts +81 -0
  27. package/src/__tests__/agent-loop.test.ts +1135 -0
  28. package/src/__tests__/anthropic-provider.test.ts +778 -0
  29. package/src/__tests__/app-builder-tool-scripts.test.ts +290 -0
  30. package/src/__tests__/app-bundler.test.ts +313 -0
  31. package/src/__tests__/app-executors.test.ts +613 -0
  32. package/src/__tests__/app-open-proxy.test.ts +62 -0
  33. package/src/__tests__/asset-materialize-tool.test.ts +451 -0
  34. package/src/__tests__/asset-search-tool.test.ts +476 -0
  35. package/src/__tests__/assistant-attachment-directive.test.ts +401 -0
  36. package/src/__tests__/assistant-attachments.test.ts +437 -0
  37. package/src/__tests__/assistant-event-hub.test.ts +226 -0
  38. package/src/__tests__/assistant-event.test.ts +123 -0
  39. package/src/__tests__/attachments-store.test.ts +547 -0
  40. package/src/__tests__/attachments.test.ts +134 -0
  41. package/src/__tests__/audit-log-rotation.test.ts +154 -0
  42. package/src/__tests__/browser-fill-credential.test.ts +309 -0
  43. package/src/__tests__/browser-manager.test.ts +203 -0
  44. package/src/__tests__/browser-runtime-check.test.ts +55 -0
  45. package/src/__tests__/browser-skill-baseline-tool-payload.test.ts +67 -0
  46. package/src/__tests__/browser-skill-endstate.test.ts +198 -0
  47. package/src/__tests__/bundle-scanner.test.ts +313 -0
  48. package/src/__tests__/checker.test.ts +3856 -0
  49. package/src/__tests__/clarification-resolver.test.ts +159 -0
  50. package/src/__tests__/classifier.test.ts +67 -0
  51. package/src/__tests__/claude-code-skill-regression.test.ts +127 -0
  52. package/src/__tests__/claude-code-tool-profiles.test.ts +88 -0
  53. package/src/__tests__/cli-discover.test.ts +85 -0
  54. package/src/__tests__/cli.test.ts +81 -0
  55. package/src/__tests__/clipboard.test.ts +80 -0
  56. package/src/__tests__/commit-guarantee.test.ts +335 -0
  57. package/src/__tests__/computer-use-session-compaction.test.ts +132 -0
  58. package/src/__tests__/computer-use-session-lifecycle.test.ts +293 -0
  59. package/src/__tests__/computer-use-session-working-dir.test.ts +117 -0
  60. package/src/__tests__/computer-use-skill-baseline.test.ts +74 -0
  61. package/src/__tests__/computer-use-skill-endstate.test.ts +89 -0
  62. package/src/__tests__/computer-use-skill-lifecycle-cleanup.test.ts +217 -0
  63. package/src/__tests__/computer-use-skill-manifest-regression.test.ts +107 -0
  64. package/src/__tests__/computer-use-skill-proxy-bridge.test.ts +54 -0
  65. package/src/__tests__/config-schema.test.ts +720 -0
  66. package/src/__tests__/conflict-store.test.ts +329 -0
  67. package/src/__tests__/connection-policy.test.ts +102 -0
  68. package/src/__tests__/context-memory-e2e.test.ts +434 -0
  69. package/src/__tests__/context-token-estimator.test.ts +135 -0
  70. package/src/__tests__/context-window-manager.test.ts +376 -0
  71. package/src/__tests__/contradiction-checker.test.ts +216 -0
  72. package/src/__tests__/conversation-store.test.ts +614 -0
  73. package/src/__tests__/credential-broker-browser-fill.test.ts +517 -0
  74. package/src/__tests__/credential-broker-server-use.test.ts +554 -0
  75. package/src/__tests__/credential-broker.test.ts +167 -0
  76. package/src/__tests__/credential-host-pattern-match.test.ts +104 -0
  77. package/src/__tests__/credential-metadata-store.test.ts +779 -0
  78. package/src/__tests__/credential-policy-validate.test.ts +121 -0
  79. package/src/__tests__/credential-resolve.test.ts +328 -0
  80. package/src/__tests__/credential-security-e2e.test.ts +352 -0
  81. package/src/__tests__/credential-security-invariants.test.ts +563 -0
  82. package/src/__tests__/credential-selection.test.ts +354 -0
  83. package/src/__tests__/credential-vault.test.ts +852 -0
  84. package/src/__tests__/daemon-assistant-events.test.ts +164 -0
  85. package/src/__tests__/daemon-server-session-init.test.ts +522 -0
  86. package/src/__tests__/delete-managed-skill-tool.test.ts +97 -0
  87. package/src/__tests__/diff.test.ts +121 -0
  88. package/src/__tests__/domain-normalize.test.ts +112 -0
  89. package/src/__tests__/domain-policy.test.ts +124 -0
  90. package/src/__tests__/doordash-client.test.ts +186 -0
  91. package/src/__tests__/doordash-session.test.ts +143 -0
  92. package/src/__tests__/dynamic-page-surface.test.ts +91 -0
  93. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +132 -0
  94. package/src/__tests__/edit-engine.test.ts +180 -0
  95. package/src/__tests__/email-cli.test.ts +283 -0
  96. package/src/__tests__/encrypted-store.test.ts +332 -0
  97. package/src/__tests__/entity-extractor.test.ts +190 -0
  98. package/src/__tests__/ephemeral-permissions.test.ts +312 -0
  99. package/src/__tests__/evaluate-typescript-tool.test.ts +286 -0
  100. package/src/__tests__/event-bus.test.ts +222 -0
  101. package/src/__tests__/file-edit-tool.test.ts +122 -0
  102. package/src/__tests__/file-ops-service.test.ts +330 -0
  103. package/src/__tests__/file-read-tool.test.ts +75 -0
  104. package/src/__tests__/file-write-tool.test.ts +113 -0
  105. package/src/__tests__/fixtures/credential-security-fixtures.ts +181 -0
  106. package/src/__tests__/fixtures/media-reuse-fixtures.ts +126 -0
  107. package/src/__tests__/fixtures/mock-signup-server.ts +387 -0
  108. package/src/__tests__/fixtures/proxy-fixtures.ts +147 -0
  109. package/src/__tests__/fuzzy-match-property.test.ts +216 -0
  110. package/src/__tests__/fuzzy-match.test.ts +138 -0
  111. package/src/__tests__/gemini-image-service.test.ts +261 -0
  112. package/src/__tests__/gemini-provider.test.ts +651 -0
  113. package/src/__tests__/get-weather.test.ts +318 -0
  114. package/src/__tests__/gmail-integration.test.ts +73 -0
  115. package/src/__tests__/handlers-cu-observation-blob.test.ts +351 -0
  116. package/src/__tests__/handlers-ipc-blob-probe.test.ts +190 -0
  117. package/src/__tests__/handlers-slack-config.test.ts +199 -0
  118. package/src/__tests__/handlers-task-submit-slash.test.ts +38 -0
  119. package/src/__tests__/headless-browser-interactions.test.ts +536 -0
  120. package/src/__tests__/headless-browser-navigate.test.ts +211 -0
  121. package/src/__tests__/headless-browser-read-tools.test.ts +261 -0
  122. package/src/__tests__/headless-browser-snapshot.test.ts +185 -0
  123. package/src/__tests__/history-repair-observability.test.ts +56 -0
  124. package/src/__tests__/history-repair.test.ts +510 -0
  125. package/src/__tests__/home-base-bootstrap.test.ts +77 -0
  126. package/src/__tests__/hooks-blocking.test.ts +128 -0
  127. package/src/__tests__/hooks-cli.test.ts +144 -0
  128. package/src/__tests__/hooks-config.test.ts +93 -0
  129. package/src/__tests__/hooks-discovery.test.ts +199 -0
  130. package/src/__tests__/hooks-integration.test.ts +189 -0
  131. package/src/__tests__/hooks-manager.test.ts +187 -0
  132. package/src/__tests__/hooks-runner.test.ts +178 -0
  133. package/src/__tests__/hooks-settings.test.ts +154 -0
  134. package/src/__tests__/hooks-templates.test.ts +137 -0
  135. package/src/__tests__/hooks-ts-runner.test.ts +125 -0
  136. package/src/__tests__/hooks-watch.test.ts +100 -0
  137. package/src/__tests__/host-file-edit-tool.test.ts +104 -0
  138. package/src/__tests__/host-file-read-tool.test.ts +61 -0
  139. package/src/__tests__/host-file-write-tool.test.ts +77 -0
  140. package/src/__tests__/host-shell-tool.test.ts +311 -0
  141. package/src/__tests__/intent-routing.test.ts +255 -0
  142. package/src/__tests__/ipc-blob-store.test.ts +315 -0
  143. package/src/__tests__/ipc-contract-inventory.test.ts +54 -0
  144. package/src/__tests__/ipc-contract.test.ts +74 -0
  145. package/src/__tests__/ipc-protocol.test.ts +113 -0
  146. package/src/__tests__/ipc-snapshot.test.ts +1560 -0
  147. package/src/__tests__/ipc-validate.test.ts +357 -0
  148. package/src/__tests__/key-migration.test.ts +183 -0
  149. package/src/__tests__/keychain.test.ts +258 -0
  150. package/src/__tests__/llm-usage-store.test.ts +226 -0
  151. package/src/__tests__/managed-skill-lifecycle.test.ts +257 -0
  152. package/src/__tests__/managed-store.test.ts +608 -0
  153. package/src/__tests__/media-generate-image.test.ts +238 -0
  154. package/src/__tests__/media-reuse-story.e2e.test.ts +676 -0
  155. package/src/__tests__/media-visibility-policy.test.ts +141 -0
  156. package/src/__tests__/memory-context-benchmark.test.ts +235 -0
  157. package/src/__tests__/memory-lifecycle-e2e.test.ts +481 -0
  158. package/src/__tests__/memory-query-builder.test.ts +59 -0
  159. package/src/__tests__/memory-recall-quality.test.ts +846 -0
  160. package/src/__tests__/memory-regressions.experimental.test.ts +538 -0
  161. package/src/__tests__/memory-regressions.test.ts +4238 -0
  162. package/src/__tests__/memory-retrieval-budget.test.ts +49 -0
  163. package/src/__tests__/migration-cli-flows.test.ts +169 -0
  164. package/src/__tests__/migration-ordering.test.ts +249 -0
  165. package/src/__tests__/mock-signup-server.test.ts +528 -0
  166. package/src/__tests__/onboarding-starter-tasks.test.ts +166 -0
  167. package/src/__tests__/onboarding-template-contract.test.ts +58 -0
  168. package/src/__tests__/openai-provider.test.ts +753 -0
  169. package/src/__tests__/parser.test.ts +472 -0
  170. package/src/__tests__/path-classifier.test.ts +73 -0
  171. package/src/__tests__/path-policy.test.ts +435 -0
  172. package/src/__tests__/platform-move-helper.test.ts +99 -0
  173. package/src/__tests__/platform-socket-path.test.ts +52 -0
  174. package/src/__tests__/platform-workspace-migration.test.ts +1000 -0
  175. package/src/__tests__/platform.test.ts +131 -0
  176. package/src/__tests__/prebuilt-home-base-seed.test.ts +71 -0
  177. package/src/__tests__/pricing.test.ts +256 -0
  178. package/src/__tests__/profile-compiler.test.ts +373 -0
  179. package/src/__tests__/provider-registry-ollama.test.ts +16 -0
  180. package/src/__tests__/proxy-approval-callback.test.ts +601 -0
  181. package/src/__tests__/ratelimit.test.ts +297 -0
  182. package/src/__tests__/registry.test.ts +487 -0
  183. package/src/__tests__/reminder-store.test.ts +220 -0
  184. package/src/__tests__/reminder.test.ts +263 -0
  185. package/src/__tests__/request-file-tool.test.ts +158 -0
  186. package/src/__tests__/run-orchestrator.test.ts +200 -0
  187. package/src/__tests__/runtime-attachment-metadata.test.ts +190 -0
  188. package/src/__tests__/runtime-runs-http.test.ts +451 -0
  189. package/src/__tests__/runtime-runs.test.ts +273 -0
  190. package/src/__tests__/sandbox-diagnostics.test.ts +408 -0
  191. package/src/__tests__/sandbox-host-parity.test.ts +950 -0
  192. package/src/__tests__/scaffold-managed-skill-tool.test.ts +253 -0
  193. package/src/__tests__/script-proxy-certs.test.ts +90 -0
  194. package/src/__tests__/script-proxy-connect-tunnel.test.ts +177 -0
  195. package/src/__tests__/script-proxy-decision-trace.test.ts +156 -0
  196. package/src/__tests__/script-proxy-http-forwarder.test.ts +281 -0
  197. package/src/__tests__/script-proxy-injection-runtime.test.ts +401 -0
  198. package/src/__tests__/script-proxy-mitm-handler.test.ts +407 -0
  199. package/src/__tests__/script-proxy-policy-runtime.test.ts +287 -0
  200. package/src/__tests__/script-proxy-policy.test.ts +310 -0
  201. package/src/__tests__/script-proxy-rewrite-specificity.test.ts +135 -0
  202. package/src/__tests__/script-proxy-router.test.ts +180 -0
  203. package/src/__tests__/script-proxy-session-manager.test.ts +382 -0
  204. package/src/__tests__/script-proxy-session-runtime.test.ts +113 -0
  205. package/src/__tests__/secret-allowlist.test.ts +229 -0
  206. package/src/__tests__/secret-ingress-handler.test.ts +99 -0
  207. package/src/__tests__/secret-onetime-send.test.ts +130 -0
  208. package/src/__tests__/secret-prompt-log-hygiene.test.ts +106 -0
  209. package/src/__tests__/secret-response-routing.test.ts +93 -0
  210. package/src/__tests__/secret-scanner-executor.test.ts +348 -0
  211. package/src/__tests__/secret-scanner.test.ts +857 -0
  212. package/src/__tests__/secure-keys.test.ts +323 -0
  213. package/src/__tests__/server-history-render.test.ts +430 -0
  214. package/src/__tests__/session-abort-tool-results.test.ts +240 -0
  215. package/src/__tests__/session-conflict-gate.test.ts +697 -0
  216. package/src/__tests__/session-error.test.ts +341 -0
  217. package/src/__tests__/session-evictor.test.ts +188 -0
  218. package/src/__tests__/session-load-history-repair.test.ts +222 -0
  219. package/src/__tests__/session-pre-run-repair.test.ts +213 -0
  220. package/src/__tests__/session-profile-injection.test.ts +444 -0
  221. package/src/__tests__/session-provider-retry-repair.test.ts +306 -0
  222. package/src/__tests__/session-queue.test.ts +1462 -0
  223. package/src/__tests__/session-runtime-assembly.test.ts +315 -0
  224. package/src/__tests__/session-runtime-workspace.test.ts +183 -0
  225. package/src/__tests__/session-skill-tools.test.ts +2431 -0
  226. package/src/__tests__/session-slash-known.test.ts +368 -0
  227. package/src/__tests__/session-slash-queue.test.ts +288 -0
  228. package/src/__tests__/session-slash-unknown.test.ts +271 -0
  229. package/src/__tests__/session-tool-setup-app-refresh.test.ts +473 -0
  230. package/src/__tests__/session-tool-setup-memory-scope.test.ts +140 -0
  231. package/src/__tests__/session-tool-setup-side-effect-flag.test.ts +140 -0
  232. package/src/__tests__/session-undo.test.ts +75 -0
  233. package/src/__tests__/session-workspace-cache-state.test.ts +246 -0
  234. package/src/__tests__/session-workspace-injection.test.ts +327 -0
  235. package/src/__tests__/session-workspace-tool-tracking.test.ts +240 -0
  236. package/src/__tests__/shared-filesystem-errors.test.ts +78 -0
  237. package/src/__tests__/shell-credential-ref.test.ts +187 -0
  238. package/src/__tests__/shell-parser-fuzz.test.ts +544 -0
  239. package/src/__tests__/shell-parser-property.test.ts +433 -0
  240. package/src/__tests__/shell-tool-proxy-mode.test.ts +272 -0
  241. package/src/__tests__/signup-e2e.test.ts +352 -0
  242. package/src/__tests__/size-guard.test.ts +117 -0
  243. package/src/__tests__/skill-include-graph.test.ts +303 -0
  244. package/src/__tests__/skill-load-tool.test.ts +409 -0
  245. package/src/__tests__/skill-script-runner-host.test.ts +489 -0
  246. package/src/__tests__/skill-script-runner-sandbox.test.ts +349 -0
  247. package/src/__tests__/skill-tool-factory.test.ts +252 -0
  248. package/src/__tests__/skill-tool-manifest.test.ts +658 -0
  249. package/src/__tests__/skill-version-hash.test.ts +182 -0
  250. package/src/__tests__/skills.test.ts +597 -0
  251. package/src/__tests__/slash-commands-catalog.test.ts +86 -0
  252. package/src/__tests__/slash-commands-parser.test.ts +119 -0
  253. package/src/__tests__/slash-commands-resolver.test.ts +193 -0
  254. package/src/__tests__/slash-commands-rewrite.test.ts +39 -0
  255. package/src/__tests__/starter-bundle.test.ts +136 -0
  256. package/src/__tests__/starter-task-flow.test.ts +143 -0
  257. package/src/__tests__/subagent-manager-notify.test.ts +372 -0
  258. package/src/__tests__/subagent-tools.test.ts +118 -0
  259. package/src/__tests__/subagent-types.test.ts +78 -0
  260. package/src/__tests__/swarm-orchestrator.test.ts +428 -0
  261. package/src/__tests__/swarm-plan-validator.test.ts +330 -0
  262. package/src/__tests__/swarm-recursion.test.ts +165 -0
  263. package/src/__tests__/swarm-router-planner.test.ts +208 -0
  264. package/src/__tests__/swarm-session-integration.test.ts +274 -0
  265. package/src/__tests__/swarm-tool.test.ts +145 -0
  266. package/src/__tests__/swarm-worker-backend.test.ts +129 -0
  267. package/src/__tests__/swarm-worker-runner.test.ts +272 -0
  268. package/src/__tests__/system-prompt.test.ts +461 -0
  269. package/src/__tests__/task-compiler.test.ts +283 -0
  270. package/src/__tests__/task-runner.test.ts +215 -0
  271. package/src/__tests__/task-scheduler.test.ts +216 -0
  272. package/src/__tests__/task-tools.test.ts +602 -0
  273. package/src/__tests__/terminal-sandbox-docker.test.ts +1064 -0
  274. package/src/__tests__/terminal-sandbox.integration.test.ts +178 -0
  275. package/src/__tests__/terminal-sandbox.test.ts +202 -0
  276. package/src/__tests__/test-support/browser-skill-harness.ts +90 -0
  277. package/src/__tests__/test-support/computer-use-skill-harness.ts +45 -0
  278. package/src/__tests__/tool-audit-listener.test.ts +112 -0
  279. package/src/__tests__/tool-domain-event-publisher.test.ts +251 -0
  280. package/src/__tests__/tool-executor-lifecycle-events.test.ts +516 -0
  281. package/src/__tests__/tool-executor-redaction.test.ts +289 -0
  282. package/src/__tests__/tool-executor.test.ts +1971 -0
  283. package/src/__tests__/tool-metrics-listener.test.ts +225 -0
  284. package/src/__tests__/tool-notification-listener.test.ts +49 -0
  285. package/src/__tests__/tool-policy.test.ts +54 -0
  286. package/src/__tests__/tool-profiling-listener.test.ts +268 -0
  287. package/src/__tests__/tool-result-truncation.test.ts +217 -0
  288. package/src/__tests__/tool-trace-listener.test.ts +226 -0
  289. package/src/__tests__/top-level-renderer.test.ts +121 -0
  290. package/src/__tests__/top-level-scanner.test.ts +141 -0
  291. package/src/__tests__/trace-emitter.test.ts +173 -0
  292. package/src/__tests__/trust-store.test.ts +2030 -0
  293. package/src/__tests__/turn-commit.test.ts +219 -0
  294. package/src/__tests__/url-safety.test.ts +418 -0
  295. package/src/__tests__/weather-skill-regression.test.ts +225 -0
  296. package/src/__tests__/web-fetch.test.ts +869 -0
  297. package/src/__tests__/web-search.test.ts +584 -0
  298. package/src/__tests__/workspace-git-service.test.ts +750 -0
  299. package/src/__tests__/workspace-heartbeat-service.test.ts +347 -0
  300. package/src/__tests__/workspace-lifecycle.test.ts +292 -0
  301. package/src/agent/attachments.ts +35 -0
  302. package/src/agent/loop.ts +500 -0
  303. package/src/agent/message-types.ts +17 -0
  304. package/src/autonomy/autonomy-resolver.ts +60 -0
  305. package/src/autonomy/autonomy-store.ts +122 -0
  306. package/src/autonomy/disposition-mapper.ts +31 -0
  307. package/src/autonomy/index.ts +11 -0
  308. package/src/autonomy/types.ts +39 -0
  309. package/src/bundler/app-bundler.ts +274 -0
  310. package/src/bundler/bundle-scanner.ts +535 -0
  311. package/src/bundler/bundle-signer.ts +124 -0
  312. package/src/bundler/manifest.ts +21 -0
  313. package/src/bundler/signature-verifier.ts +184 -0
  314. package/src/cli/autonomy.ts +188 -0
  315. package/src/cli/contacts.ts +149 -0
  316. package/src/cli/doordash.ts +824 -0
  317. package/src/cli/email-guardrails.ts +200 -0
  318. package/src/cli/email.ts +405 -0
  319. package/src/cli/main-screen.tsx +155 -0
  320. package/src/cli.ts +935 -0
  321. package/src/config/bundled-skills/.gitkeep +0 -0
  322. package/src/config/bundled-skills/agentmail/SKILL.md +128 -0
  323. package/src/config/bundled-skills/agentmail/icon.svg +21 -0
  324. package/src/config/bundled-skills/app-builder/SKILL.md +1348 -0
  325. package/src/config/bundled-skills/app-builder/TOOLS.json +279 -0
  326. package/src/config/bundled-skills/app-builder/icon.svg +9 -0
  327. package/src/config/bundled-skills/app-builder/tools/app-create.ts +15 -0
  328. package/src/config/bundled-skills/app-builder/tools/app-delete.ts +10 -0
  329. package/src/config/bundled-skills/app-builder/tools/app-file-edit.ts +11 -0
  330. package/src/config/bundled-skills/app-builder/tools/app-file-list.ts +10 -0
  331. package/src/config/bundled-skills/app-builder/tools/app-file-read.ts +18 -0
  332. package/src/config/bundled-skills/app-builder/tools/app-file-write.ts +11 -0
  333. package/src/config/bundled-skills/app-builder/tools/app-list.ts +10 -0
  334. package/src/config/bundled-skills/app-builder/tools/app-query.ts +10 -0
  335. package/src/config/bundled-skills/app-builder/tools/app-update.ts +20 -0
  336. package/src/config/bundled-skills/browser/SKILL.md +28 -0
  337. package/src/config/bundled-skills/browser/TOOLS.json +234 -0
  338. package/src/config/bundled-skills/browser/tools/browser-click.ts +9 -0
  339. package/src/config/bundled-skills/browser/tools/browser-close.ts +9 -0
  340. package/src/config/bundled-skills/browser/tools/browser-extract.ts +9 -0
  341. package/src/config/bundled-skills/browser/tools/browser-fill-credential.ts +9 -0
  342. package/src/config/bundled-skills/browser/tools/browser-navigate.ts +9 -0
  343. package/src/config/bundled-skills/browser/tools/browser-press-key.ts +9 -0
  344. package/src/config/bundled-skills/browser/tools/browser-screenshot.ts +9 -0
  345. package/src/config/bundled-skills/browser/tools/browser-snapshot.ts +9 -0
  346. package/src/config/bundled-skills/browser/tools/browser-type.ts +9 -0
  347. package/src/config/bundled-skills/browser/tools/browser-wait-for.ts +9 -0
  348. package/src/config/bundled-skills/claude-code/SKILL.md +50 -0
  349. package/src/config/bundled-skills/claude-code/TOOLS.json +40 -0
  350. package/src/config/bundled-skills/claude-code/tools/claude-code.ts +9 -0
  351. package/src/config/bundled-skills/computer-use/SKILL.md +17 -0
  352. package/src/config/bundled-skills/computer-use/TOOLS.json +326 -0
  353. package/src/config/bundled-skills/computer-use/tools/computer-use-click.ts +9 -0
  354. package/src/config/bundled-skills/computer-use/tools/computer-use-done.ts +9 -0
  355. package/src/config/bundled-skills/computer-use/tools/computer-use-double-click.ts +9 -0
  356. package/src/config/bundled-skills/computer-use/tools/computer-use-drag.ts +9 -0
  357. package/src/config/bundled-skills/computer-use/tools/computer-use-key.ts +9 -0
  358. package/src/config/bundled-skills/computer-use/tools/computer-use-open-app.ts +9 -0
  359. package/src/config/bundled-skills/computer-use/tools/computer-use-request-control.ts +9 -0
  360. package/src/config/bundled-skills/computer-use/tools/computer-use-respond.ts +9 -0
  361. package/src/config/bundled-skills/computer-use/tools/computer-use-right-click.ts +9 -0
  362. package/src/config/bundled-skills/computer-use/tools/computer-use-run-applescript.ts +9 -0
  363. package/src/config/bundled-skills/computer-use/tools/computer-use-scroll.ts +9 -0
  364. package/src/config/bundled-skills/computer-use/tools/computer-use-type-text.ts +9 -0
  365. package/src/config/bundled-skills/computer-use/tools/computer-use-wait.ts +9 -0
  366. package/src/config/bundled-skills/google-calendar/SKILL.md +51 -0
  367. package/src/config/bundled-skills/google-calendar/TOOLS.json +108 -0
  368. package/src/config/bundled-skills/google-calendar/calendar-client.ts +165 -0
  369. package/src/config/bundled-skills/google-calendar/tools/calendar-check-availability.ts +21 -0
  370. package/src/config/bundled-skills/google-calendar/tools/calendar-create-event.ts +42 -0
  371. package/src/config/bundled-skills/google-calendar/tools/calendar-get-event.ts +13 -0
  372. package/src/config/bundled-skills/google-calendar/tools/calendar-list-events.ts +30 -0
  373. package/src/config/bundled-skills/google-calendar/tools/calendar-rsvp.ts +41 -0
  374. package/src/config/bundled-skills/google-calendar/tools/shared.ts +18 -0
  375. package/src/config/bundled-skills/google-calendar/types.ts +97 -0
  376. package/src/config/bundled-skills/image-studio/SKILL.md +32 -0
  377. package/src/config/bundled-skills/image-studio/TOOLS.json +42 -0
  378. package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +137 -0
  379. package/src/config/bundled-skills/messaging/SKILL.md +126 -0
  380. package/src/config/bundled-skills/messaging/TOOLS.json +357 -0
  381. package/src/config/bundled-skills/messaging/tools/gmail-archive.ts +23 -0
  382. package/src/config/bundled-skills/messaging/tools/gmail-batch-archive.ts +23 -0
  383. package/src/config/bundled-skills/messaging/tools/gmail-batch-label.ts +25 -0
  384. package/src/config/bundled-skills/messaging/tools/gmail-draft.ts +26 -0
  385. package/src/config/bundled-skills/messaging/tools/gmail-label.ts +25 -0
  386. package/src/config/bundled-skills/messaging/tools/gmail-trash.ts +23 -0
  387. package/src/config/bundled-skills/messaging/tools/gmail-unsubscribe.ts +84 -0
  388. package/src/config/bundled-skills/messaging/tools/messaging-analyze-activity.ts +18 -0
  389. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +124 -0
  390. package/src/config/bundled-skills/messaging/tools/messaging-auth-test.ts +16 -0
  391. package/src/config/bundled-skills/messaging/tools/messaging-draft.ts +49 -0
  392. package/src/config/bundled-skills/messaging/tools/messaging-list-conversations.ts +21 -0
  393. package/src/config/bundled-skills/messaging/tools/messaging-mark-read.ts +25 -0
  394. package/src/config/bundled-skills/messaging/tools/messaging-read.ts +28 -0
  395. package/src/config/bundled-skills/messaging/tools/messaging-reply.ts +29 -0
  396. package/src/config/bundled-skills/messaging/tools/messaging-search.ts +22 -0
  397. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +27 -0
  398. package/src/config/bundled-skills/messaging/tools/shared.ts +71 -0
  399. package/src/config/bundled-skills/messaging/tools/slack-add-reaction.ts +25 -0
  400. package/src/config/bundled-skills/messaging/tools/slack-leave-channel.ts +23 -0
  401. package/src/config/bundled-skills/self-upgrade/SKILL.md +74 -0
  402. package/src/config/bundled-skills/start-the-day/SKILL.md +70 -0
  403. package/src/config/bundled-skills/start-the-day/icon.svg +13 -0
  404. package/src/config/bundled-skills/weather/SKILL.md +37 -0
  405. package/src/config/bundled-skills/weather/TOOLS.json +32 -0
  406. package/src/config/bundled-skills/weather/icon.svg +24 -0
  407. package/src/config/bundled-skills/weather/tools/get-weather.ts +9 -0
  408. package/src/config/computer-use-prompt.ts +97 -0
  409. package/src/config/defaults.ts +186 -0
  410. package/src/config/loader.ts +336 -0
  411. package/src/config/schema.ts +1004 -0
  412. package/src/config/skill-state.ts +95 -0
  413. package/src/config/skills.ts +972 -0
  414. package/src/config/system-prompt.ts +927 -0
  415. package/src/config/templates/BOOTSTRAP.md +70 -0
  416. package/src/config/templates/IDENTITY.md +18 -0
  417. package/src/config/templates/LOOKS.md +25 -0
  418. package/src/config/templates/SOUL.md +37 -0
  419. package/src/config/templates/USER.md +19 -0
  420. package/src/config/types.ts +32 -0
  421. package/src/config/vellum-skills/deploy-fullstack-vercel/SKILL.md +179 -0
  422. package/src/config/vellum-skills/document-writer/SKILL.md +195 -0
  423. package/src/config/vellum-skills/google-oauth-setup/SKILL.md +194 -0
  424. package/src/config/vellum-skills/slack-oauth-setup/SKILL.md +147 -0
  425. package/src/config/vellum-skills/telegram-setup/SKILL.md +105 -0
  426. package/src/contacts/contact-store.ts +410 -0
  427. package/src/contacts/index.ts +11 -0
  428. package/src/contacts/types.ts +28 -0
  429. package/src/context/token-estimator.ts +108 -0
  430. package/src/context/tool-result-truncation.ts +128 -0
  431. package/src/context/window-manager.ts +531 -0
  432. package/src/daemon/assistant-attachments.ts +679 -0
  433. package/src/daemon/classifier.ts +108 -0
  434. package/src/daemon/computer-use-session.ts +900 -0
  435. package/src/daemon/connection-policy.ts +41 -0
  436. package/src/daemon/handlers/apps.ts +446 -0
  437. package/src/daemon/handlers/computer-use.ts +181 -0
  438. package/src/daemon/handlers/config.ts +434 -0
  439. package/src/daemon/handlers/diagnostics.ts +334 -0
  440. package/src/daemon/handlers/documents.ts +184 -0
  441. package/src/daemon/handlers/home-base.ts +73 -0
  442. package/src/daemon/handlers/index.ts +355 -0
  443. package/src/daemon/handlers/misc.ts +323 -0
  444. package/src/daemon/handlers/open-bundle-handler.ts +80 -0
  445. package/src/daemon/handlers/publish.ts +182 -0
  446. package/src/daemon/handlers/sessions.ts +486 -0
  447. package/src/daemon/handlers/shared.ts +533 -0
  448. package/src/daemon/handlers/skills.ts +487 -0
  449. package/src/daemon/handlers/subagents.ts +122 -0
  450. package/src/daemon/handlers/work-items.ts +176 -0
  451. package/src/daemon/handlers.ts +17 -0
  452. package/src/daemon/history-repair.ts +214 -0
  453. package/src/daemon/ipc-blob-store.ts +231 -0
  454. package/src/daemon/ipc-contract-inventory.json +407 -0
  455. package/src/daemon/ipc-contract-inventory.ts +126 -0
  456. package/src/daemon/ipc-contract.ts +2102 -0
  457. package/src/daemon/ipc-protocol.ts +70 -0
  458. package/src/daemon/ipc-validate.ts +171 -0
  459. package/src/daemon/lifecycle.ts +503 -0
  460. package/src/daemon/main.ts +15 -0
  461. package/src/daemon/media-visibility-policy.ts +57 -0
  462. package/src/daemon/ride-shotgun-handler.ts +244 -0
  463. package/src/daemon/server.ts +1085 -0
  464. package/src/daemon/session-attachments.ts +173 -0
  465. package/src/daemon/session-conflict-gate.ts +219 -0
  466. package/src/daemon/session-dynamic-profile.ts +63 -0
  467. package/src/daemon/session-error.ts +269 -0
  468. package/src/daemon/session-evictor.ts +196 -0
  469. package/src/daemon/session-history.ts +437 -0
  470. package/src/daemon/session-memory.ts +212 -0
  471. package/src/daemon/session-process.ts +264 -0
  472. package/src/daemon/session-queue-manager.ts +81 -0
  473. package/src/daemon/session-runtime-assembly.ts +395 -0
  474. package/src/daemon/session-skill-tools.ts +237 -0
  475. package/src/daemon/session-slash.ts +302 -0
  476. package/src/daemon/session-surfaces.ts +624 -0
  477. package/src/daemon/session-tool-setup.ts +286 -0
  478. package/src/daemon/session-usage.ts +74 -0
  479. package/src/daemon/session-workspace.ts +19 -0
  480. package/src/daemon/session.ts +1651 -0
  481. package/src/daemon/trace-emitter.ts +82 -0
  482. package/src/daemon/watch-handler.ts +274 -0
  483. package/src/doordash/client.ts +905 -0
  484. package/src/doordash/queries.ts +1312 -0
  485. package/src/doordash/query-extractor.ts +93 -0
  486. package/src/doordash/session.ts +82 -0
  487. package/src/email/provider.ts +117 -0
  488. package/src/email/providers/agentmail.ts +317 -0
  489. package/src/email/providers/index.ts +58 -0
  490. package/src/email/service.ts +303 -0
  491. package/src/email/types.ts +126 -0
  492. package/src/events/bus.ts +157 -0
  493. package/src/events/domain-events.ts +83 -0
  494. package/src/events/index.ts +18 -0
  495. package/src/events/tool-audit-listener.ts +80 -0
  496. package/src/events/tool-domain-event-publisher.ts +111 -0
  497. package/src/events/tool-metrics-listener.ts +159 -0
  498. package/src/events/tool-notification-listener.ts +17 -0
  499. package/src/events/tool-profiling-listener.ts +158 -0
  500. package/src/events/tool-trace-listener.ts +75 -0
  501. package/src/export/formatter.ts +96 -0
  502. package/src/followups/followup-store.ts +166 -0
  503. package/src/followups/index.ts +10 -0
  504. package/src/followups/types.ts +23 -0
  505. package/src/gallery/default-gallery.ts +795 -0
  506. package/src/gallery/gallery-manifest.ts +24 -0
  507. package/src/home-base/app-link-store.ts +82 -0
  508. package/src/home-base/bootstrap.ts +66 -0
  509. package/src/home-base/prebuilt/index.html +662 -0
  510. package/src/home-base/prebuilt/seed-metadata.json +21 -0
  511. package/src/home-base/prebuilt/seed.ts +101 -0
  512. package/src/home-base/prebuilt-home-base-updater.ts +30 -0
  513. package/src/hooks/cli.ts +163 -0
  514. package/src/hooks/config.ts +88 -0
  515. package/src/hooks/discovery.ts +110 -0
  516. package/src/hooks/manager.ts +128 -0
  517. package/src/hooks/runner.ts +123 -0
  518. package/src/hooks/templates.ts +52 -0
  519. package/src/hooks/types.ts +72 -0
  520. package/src/index.ts +1194 -0
  521. package/src/instrument.ts +60 -0
  522. package/src/logfire.ts +99 -0
  523. package/src/media/gemini-image-service.ts +136 -0
  524. package/src/memory/account-store.ts +108 -0
  525. package/src/memory/admin.ts +211 -0
  526. package/src/memory/app-store.ts +556 -0
  527. package/src/memory/attachments-store.ts +453 -0
  528. package/src/memory/channel-delivery-store.ts +368 -0
  529. package/src/memory/checkpoints.ts +52 -0
  530. package/src/memory/clarification-resolver.ts +297 -0
  531. package/src/memory/conflict-store.ts +342 -0
  532. package/src/memory/contradiction-checker.ts +329 -0
  533. package/src/memory/conversation-key-store.ts +127 -0
  534. package/src/memory/conversation-store.ts +469 -0
  535. package/src/memory/db.ts +1105 -0
  536. package/src/memory/embedding-backend.ts +229 -0
  537. package/src/memory/embedding-gemini.ts +52 -0
  538. package/src/memory/embedding-local.ts +75 -0
  539. package/src/memory/embedding-ollama.ts +55 -0
  540. package/src/memory/embedding-openai.ts +25 -0
  541. package/src/memory/entity-extractor.ts +471 -0
  542. package/src/memory/fingerprint.ts +20 -0
  543. package/src/memory/indexer.ts +156 -0
  544. package/src/memory/items-extractor.ts +460 -0
  545. package/src/memory/job-handlers/backfill.ts +139 -0
  546. package/src/memory/job-handlers/cleanup.ts +58 -0
  547. package/src/memory/job-handlers/conflict.ts +99 -0
  548. package/src/memory/job-handlers/embedding.ts +61 -0
  549. package/src/memory/job-handlers/extraction.ts +123 -0
  550. package/src/memory/job-handlers/index-maintenance.ts +54 -0
  551. package/src/memory/job-handlers/summarization.ts +286 -0
  552. package/src/memory/job-utils.ts +170 -0
  553. package/src/memory/jobs-store.ts +400 -0
  554. package/src/memory/jobs-worker.ts +274 -0
  555. package/src/memory/llm-request-log-store.ts +45 -0
  556. package/src/memory/llm-usage-store.ts +62 -0
  557. package/src/memory/message-content.ts +54 -0
  558. package/src/memory/profile-compiler.ts +160 -0
  559. package/src/memory/published-pages-store.ts +137 -0
  560. package/src/memory/qdrant-client.ts +366 -0
  561. package/src/memory/qdrant-manager.ts +242 -0
  562. package/src/memory/query-builder.ts +45 -0
  563. package/src/memory/retrieval-budget.ts +30 -0
  564. package/src/memory/retriever.ts +653 -0
  565. package/src/memory/runs-store.ts +211 -0
  566. package/src/memory/schema.ts +529 -0
  567. package/src/memory/search/entity.ts +298 -0
  568. package/src/memory/search/formatting.ts +207 -0
  569. package/src/memory/search/lexical.ts +227 -0
  570. package/src/memory/search/ranking.ts +401 -0
  571. package/src/memory/search/semantic.ts +121 -0
  572. package/src/memory/search/types.ts +137 -0
  573. package/src/memory/segmenter.ts +68 -0
  574. package/src/memory/shared-app-links-store.ts +138 -0
  575. package/src/memory/tool-usage-store.ts +62 -0
  576. package/src/messaging/activity-analyzer.ts +76 -0
  577. package/src/messaging/draft-store.ts +88 -0
  578. package/src/messaging/index.ts +3 -0
  579. package/src/messaging/provider-types.ts +80 -0
  580. package/src/messaging/provider.ts +43 -0
  581. package/src/messaging/providers/gmail/adapter.ts +193 -0
  582. package/src/messaging/providers/gmail/client.ts +204 -0
  583. package/src/messaging/providers/gmail/types.ts +90 -0
  584. package/src/messaging/providers/slack/adapter.ts +202 -0
  585. package/src/messaging/providers/slack/client.ts +198 -0
  586. package/src/messaging/providers/slack/types.ts +119 -0
  587. package/src/messaging/registry.ts +34 -0
  588. package/src/messaging/style-analyzer.ts +158 -0
  589. package/src/messaging/thread-summarizer.ts +310 -0
  590. package/src/messaging/triage-engine.ts +321 -0
  591. package/src/messaging/types.ts +55 -0
  592. package/src/permissions/checker.ts +636 -0
  593. package/src/permissions/defaults.ts +243 -0
  594. package/src/permissions/prompter.ts +102 -0
  595. package/src/permissions/secret-prompter.ts +114 -0
  596. package/src/permissions/trust-store.ts +584 -0
  597. package/src/permissions/types.ts +62 -0
  598. package/src/playbooks/index.ts +2 -0
  599. package/src/playbooks/playbook-compiler.ts +90 -0
  600. package/src/playbooks/types.ts +55 -0
  601. package/src/providers/anthropic/client.ts +751 -0
  602. package/src/providers/failover.ts +129 -0
  603. package/src/providers/fireworks/client.ts +20 -0
  604. package/src/providers/gemini/client.ts +285 -0
  605. package/src/providers/ollama/client.ts +30 -0
  606. package/src/providers/openai/client.ts +337 -0
  607. package/src/providers/ratelimit.ts +93 -0
  608. package/src/providers/registry.ts +138 -0
  609. package/src/providers/retry.ts +106 -0
  610. package/src/providers/stream-timeout.ts +38 -0
  611. package/src/providers/types.ts +109 -0
  612. package/src/runtime/assistant-event-hub.ts +120 -0
  613. package/src/runtime/assistant-event.ts +82 -0
  614. package/src/runtime/http-server.ts +478 -0
  615. package/src/runtime/http-types.ts +68 -0
  616. package/src/runtime/routes/app-routes.ts +174 -0
  617. package/src/runtime/routes/attachment-routes.ts +134 -0
  618. package/src/runtime/routes/channel-routes.ts +342 -0
  619. package/src/runtime/routes/conversation-routes.ts +349 -0
  620. package/src/runtime/routes/run-routes.ts +223 -0
  621. package/src/runtime/routes/secret-routes.ts +76 -0
  622. package/src/runtime/run-orchestrator.ts +206 -0
  623. package/src/schedule/schedule-store.ts +452 -0
  624. package/src/schedule/scheduler.ts +168 -0
  625. package/src/security/encrypted-store.ts +238 -0
  626. package/src/security/keychain.ts +252 -0
  627. package/src/security/oauth2.ts +241 -0
  628. package/src/security/redaction.ts +89 -0
  629. package/src/security/secret-allowlist.ts +118 -0
  630. package/src/security/secret-ingress.ts +57 -0
  631. package/src/security/secret-scanner.ts +543 -0
  632. package/src/security/secure-keys.ts +180 -0
  633. package/src/security/token-manager.ts +141 -0
  634. package/src/services/published-app-updater.ts +69 -0
  635. package/src/services/vercel-deploy.ts +73 -0
  636. package/src/skills/active-skill-tools.ts +81 -0
  637. package/src/skills/clawhub.ts +414 -0
  638. package/src/skills/include-graph.ts +146 -0
  639. package/src/skills/managed-store.ts +233 -0
  640. package/src/skills/path-classifier.ts +128 -0
  641. package/src/skills/slash-commands.ts +174 -0
  642. package/src/skills/tool-manifest.ts +165 -0
  643. package/src/skills/version-hash.ts +110 -0
  644. package/src/slack/slack-webhook.ts +61 -0
  645. package/src/subagent/index.ts +19 -0
  646. package/src/subagent/manager.ts +477 -0
  647. package/src/subagent/types.ts +69 -0
  648. package/src/swarm/backend-claude-code.ts +90 -0
  649. package/src/swarm/index.ts +44 -0
  650. package/src/swarm/limits.ts +37 -0
  651. package/src/swarm/orchestrator.ts +279 -0
  652. package/src/swarm/plan-validator.ts +151 -0
  653. package/src/swarm/router-planner.ts +100 -0
  654. package/src/swarm/router-prompts.ts +36 -0
  655. package/src/swarm/synthesizer.ts +62 -0
  656. package/src/swarm/types.ts +62 -0
  657. package/src/swarm/worker-backend.ts +121 -0
  658. package/src/swarm/worker-prompts.ts +78 -0
  659. package/src/swarm/worker-runner.ts +164 -0
  660. package/src/tasks/SPEC.md +133 -0
  661. package/src/tasks/candidate-store.ts +86 -0
  662. package/src/tasks/ephemeral-permissions.ts +41 -0
  663. package/src/tasks/task-compiler.ts +198 -0
  664. package/src/tasks/task-runner.ts +85 -0
  665. package/src/tasks/task-scheduler.ts +20 -0
  666. package/src/tasks/task-store.ts +127 -0
  667. package/src/tools/apps/definitions.ts +59 -0
  668. package/src/tools/apps/executors.ts +313 -0
  669. package/src/tools/apps/open-proxy.ts +43 -0
  670. package/src/tools/apps/registry.ts +16 -0
  671. package/src/tools/assets/materialize.ts +218 -0
  672. package/src/tools/assets/search.ts +396 -0
  673. package/src/tools/browser/__tests__/auth-cache.test.ts +219 -0
  674. package/src/tools/browser/__tests__/auth-detector.test.ts +362 -0
  675. package/src/tools/browser/__tests__/jit-auth.test.ts +189 -0
  676. package/src/tools/browser/auth-cache.ts +149 -0
  677. package/src/tools/browser/auth-detector.ts +347 -0
  678. package/src/tools/browser/browser-execution.ts +979 -0
  679. package/src/tools/browser/browser-handoff.ts +79 -0
  680. package/src/tools/browser/browser-manager.ts +715 -0
  681. package/src/tools/browser/browser-screencast.ts +217 -0
  682. package/src/tools/browser/headless-browser.ts +450 -0
  683. package/src/tools/browser/jit-auth.ts +51 -0
  684. package/src/tools/browser/network-recorder.ts +348 -0
  685. package/src/tools/browser/network-recording-types.ts +49 -0
  686. package/src/tools/browser/recording-store.ts +49 -0
  687. package/src/tools/browser/runtime-check.ts +43 -0
  688. package/src/tools/claude-code/claude-code.ts +232 -0
  689. package/src/tools/computer-use/definitions.ts +443 -0
  690. package/src/tools/computer-use/registry.ts +22 -0
  691. package/src/tools/computer-use/request-computer-control.ts +53 -0
  692. package/src/tools/computer-use/skill-proxy-bridge.ts +28 -0
  693. package/src/tools/contacts/contact-merge.ts +87 -0
  694. package/src/tools/contacts/contact-search.ts +102 -0
  695. package/src/tools/contacts/contact-upsert.ts +137 -0
  696. package/src/tools/contacts/index.ts +4 -0
  697. package/src/tools/credentials/account-registry.ts +127 -0
  698. package/src/tools/credentials/broker-types.ts +107 -0
  699. package/src/tools/credentials/broker.ts +372 -0
  700. package/src/tools/credentials/domain-policy.ts +51 -0
  701. package/src/tools/credentials/host-pattern-match.ts +60 -0
  702. package/src/tools/credentials/metadata-store.ts +335 -0
  703. package/src/tools/credentials/policy-types.ts +52 -0
  704. package/src/tools/credentials/policy-validate.ts +80 -0
  705. package/src/tools/credentials/resolve.ts +122 -0
  706. package/src/tools/credentials/selection.ts +159 -0
  707. package/src/tools/credentials/tool-policy.ts +25 -0
  708. package/src/tools/credentials/vault.ts +641 -0
  709. package/src/tools/document/document-tool.ts +165 -0
  710. package/src/tools/document/editor-template.ts +237 -0
  711. package/src/tools/document/index.ts +5 -0
  712. package/src/tools/executor.ts +825 -0
  713. package/src/tools/filesystem/edit.ts +127 -0
  714. package/src/tools/filesystem/fuzzy-match.ts +202 -0
  715. package/src/tools/filesystem/read.ts +71 -0
  716. package/src/tools/filesystem/view-image.ts +199 -0
  717. package/src/tools/filesystem/write.ts +79 -0
  718. package/src/tools/followups/followup_create.ts +118 -0
  719. package/src/tools/followups/followup_list.ts +100 -0
  720. package/src/tools/followups/followup_resolve.ts +91 -0
  721. package/src/tools/followups/index.ts +3 -0
  722. package/src/tools/host-filesystem/edit.ts +125 -0
  723. package/src/tools/host-filesystem/read.ts +80 -0
  724. package/src/tools/host-filesystem/write.ts +76 -0
  725. package/src/tools/host-terminal/cli-discover.ts +179 -0
  726. package/src/tools/host-terminal/host-shell.ts +181 -0
  727. package/src/tools/memory/definitions.ts +69 -0
  728. package/src/tools/memory/handlers.ts +245 -0
  729. package/src/tools/memory/register.ts +66 -0
  730. package/src/tools/network/domain-normalize.ts +85 -0
  731. package/src/tools/network/script-proxy/certs.ts +237 -0
  732. package/src/tools/network/script-proxy/connect-tunnel.ts +82 -0
  733. package/src/tools/network/script-proxy/http-forwarder.ts +151 -0
  734. package/src/tools/network/script-proxy/index.ts +28 -0
  735. package/src/tools/network/script-proxy/logging.ts +196 -0
  736. package/src/tools/network/script-proxy/mitm-handler.ts +269 -0
  737. package/src/tools/network/script-proxy/policy.ts +152 -0
  738. package/src/tools/network/script-proxy/router.ts +60 -0
  739. package/src/tools/network/script-proxy/server.ts +136 -0
  740. package/src/tools/network/script-proxy/session-manager.ts +534 -0
  741. package/src/tools/network/script-proxy/types.ts +125 -0
  742. package/src/tools/network/url-safety.ts +227 -0
  743. package/src/tools/network/web-fetch.ts +701 -0
  744. package/src/tools/network/web-search.ts +319 -0
  745. package/src/tools/playbooks/index.ts +5 -0
  746. package/src/tools/playbooks/playbook-create.ts +140 -0
  747. package/src/tools/playbooks/playbook-delete.ts +76 -0
  748. package/src/tools/playbooks/playbook-list.ts +101 -0
  749. package/src/tools/playbooks/playbook-update.ts +159 -0
  750. package/src/tools/registry.ts +297 -0
  751. package/src/tools/reminder/reminder-store.ts +148 -0
  752. package/src/tools/reminder/reminder.ts +153 -0
  753. package/src/tools/schedule/create.ts +86 -0
  754. package/src/tools/schedule/delete.ts +54 -0
  755. package/src/tools/schedule/list.ts +88 -0
  756. package/src/tools/schedule/update.ts +97 -0
  757. package/src/tools/shared/filesystem/edit-engine.ts +56 -0
  758. package/src/tools/shared/filesystem/errors.ts +85 -0
  759. package/src/tools/shared/filesystem/file-ops-service.ts +215 -0
  760. package/src/tools/shared/filesystem/format-diff.ts +35 -0
  761. package/src/tools/shared/filesystem/path-policy.ts +125 -0
  762. package/src/tools/shared/filesystem/size-guard.ts +41 -0
  763. package/src/tools/shared/filesystem/types.ts +80 -0
  764. package/src/tools/shared/shell-output.ts +52 -0
  765. package/src/tools/skills/delete-managed.ts +60 -0
  766. package/src/tools/skills/load.ts +139 -0
  767. package/src/tools/skills/sandbox-runner.ts +279 -0
  768. package/src/tools/skills/scaffold-managed.ts +150 -0
  769. package/src/tools/skills/script-contract.ts +6 -0
  770. package/src/tools/skills/skill-script-runner.ts +86 -0
  771. package/src/tools/skills/skill-tool-factory.ts +64 -0
  772. package/src/tools/skills/vellum-catalog.ts +217 -0
  773. package/src/tools/subagent/abort.ts +62 -0
  774. package/src/tools/subagent/index.ts +5 -0
  775. package/src/tools/subagent/message.ts +72 -0
  776. package/src/tools/subagent/read.ts +98 -0
  777. package/src/tools/subagent/spawn.ts +85 -0
  778. package/src/tools/subagent/status.ts +74 -0
  779. package/src/tools/swarm/delegate.ts +182 -0
  780. package/src/tools/system/request-permission.ts +98 -0
  781. package/src/tools/tasks/index.ts +25 -0
  782. package/src/tools/tasks/task-delete.ts +69 -0
  783. package/src/tools/tasks/task-list.ts +65 -0
  784. package/src/tools/tasks/task-run.ts +125 -0
  785. package/src/tools/tasks/task-save.ts +79 -0
  786. package/src/tools/tasks/work-item-enqueue.ts +176 -0
  787. package/src/tools/tasks/work-item-list.ts +86 -0
  788. package/src/tools/terminal/backends/docker.ts +372 -0
  789. package/src/tools/terminal/backends/native.ts +188 -0
  790. package/src/tools/terminal/backends/types.ts +26 -0
  791. package/src/tools/terminal/evaluate-typescript.ts +275 -0
  792. package/src/tools/terminal/parser.ts +393 -0
  793. package/src/tools/terminal/safe-env.ts +37 -0
  794. package/src/tools/terminal/sandbox-diagnostics.ts +149 -0
  795. package/src/tools/terminal/sandbox.ts +44 -0
  796. package/src/tools/terminal/shell.ts +257 -0
  797. package/src/tools/tool-manifest.ts +250 -0
  798. package/src/tools/types.ts +177 -0
  799. package/src/tools/ui-surface/definitions.ts +232 -0
  800. package/src/tools/ui-surface/registry.ts +14 -0
  801. package/src/tools/watch/screen-watch.ts +128 -0
  802. package/src/tools/watch/watch-state.ts +119 -0
  803. package/src/tools/watcher/create.ts +110 -0
  804. package/src/tools/watcher/delete.ts +53 -0
  805. package/src/tools/watcher/digest.ts +84 -0
  806. package/src/tools/watcher/list.ts +90 -0
  807. package/src/tools/watcher/update.ts +102 -0
  808. package/src/tools/weather/service.ts +551 -0
  809. package/src/usage/actors.ts +24 -0
  810. package/src/usage/types.ts +38 -0
  811. package/src/util/clipboard.ts +33 -0
  812. package/src/util/content-id.ts +16 -0
  813. package/src/util/diff.ts +181 -0
  814. package/src/util/errors.ts +129 -0
  815. package/src/util/logger.ts +243 -0
  816. package/src/util/platform.ts +607 -0
  817. package/src/util/pricing.ts +150 -0
  818. package/src/util/spinner.ts +51 -0
  819. package/src/util/time.ts +16 -0
  820. package/src/util/xml.ts +4 -0
  821. package/src/version.ts +3 -0
  822. package/src/watcher/constants.ts +11 -0
  823. package/src/watcher/engine.ts +199 -0
  824. package/src/watcher/provider-registry.ts +15 -0
  825. package/src/watcher/provider-types.ts +48 -0
  826. package/src/watcher/providers/gmail.ts +198 -0
  827. package/src/watcher/providers/google-calendar.ts +228 -0
  828. package/src/watcher/providers/slack.ts +128 -0
  829. package/src/watcher/watcher-store.ts +418 -0
  830. package/src/work-items/work-item-store.ts +91 -0
  831. package/src/workspace/git-service.ts +620 -0
  832. package/src/workspace/heartbeat-service.ts +288 -0
  833. package/src/workspace/top-level-renderer.ts +19 -0
  834. package/src/workspace/top-level-scanner.ts +41 -0
  835. package/src/workspace/turn-commit.ts +122 -0
  836. package/tsconfig.json +21 -0
  837. package/LICENSE +0 -674
  838. package/dist/cli.js +0 -569
@@ -0,0 +1,2102 @@
1
+ import type { GalleryManifest } from '../gallery/gallery-manifest.js';
2
+
3
+ // === Shared types ===
4
+
5
+ export type ThreadType = 'standard' | 'private';
6
+
7
+ /** Runtime normalizer — collapses unknown/legacy DB values to 'standard'. */
8
+ export function normalizeThreadType(raw: string | null | undefined): ThreadType {
9
+ return raw === 'private' ? 'private' : 'standard';
10
+ }
11
+
12
+ export interface IpcBlobRef {
13
+ id: string;
14
+ kind: 'ax_tree' | 'screenshot_jpeg';
15
+ encoding: 'utf8' | 'binary';
16
+ byteLength: number;
17
+ sha256?: string;
18
+ }
19
+
20
+ export interface UsageStats {
21
+ inputTokens: number;
22
+ outputTokens: number;
23
+ estimatedCost: number;
24
+ }
25
+
26
+ // === Client → Server messages ===
27
+
28
+ export interface UserMessage {
29
+ type: 'user_message';
30
+ sessionId: string;
31
+ content?: string;
32
+ attachments?: UserMessageAttachment[];
33
+ activeSurfaceId?: string;
34
+ /** The page currently displayed in the WebView (e.g. "settings.html"). */
35
+ currentPage?: string;
36
+ /** When true, skip the secret-ingress check. Set by the client when the user clicks "Send Anyway". */
37
+ bypassSecretCheck?: boolean;
38
+ }
39
+
40
+ export interface UserMessageAttachment {
41
+ id?: string;
42
+ filename: string;
43
+ mimeType: string;
44
+ data: string;
45
+ extractedText?: string;
46
+ /** Original file size in bytes. Present when data was omitted from history_response to reduce payload size. */
47
+ sizeBytes?: number;
48
+ }
49
+
50
+ export interface ConfirmationResponse {
51
+ type: 'confirmation_response';
52
+ requestId: string;
53
+ decision: 'allow' | 'always_allow' | 'always_allow_high_risk' | 'deny' | 'always_deny';
54
+ selectedPattern?: string;
55
+ selectedScope?: string;
56
+ }
57
+
58
+ export interface SecretResponse {
59
+ type: 'secret_response';
60
+ requestId: string;
61
+ value?: string; // undefined = user cancelled
62
+ /** How the secret should be delivered: 'store' persists to keychain (default), 'transient_send' for one-time use without persisting. */
63
+ delivery?: 'store' | 'transient_send';
64
+ }
65
+
66
+ export interface SessionListRequest {
67
+ type: 'session_list';
68
+ }
69
+
70
+ /** Lightweight session transport metadata for channel identity and natural-language guidance. */
71
+ export interface SessionTransportMetadata {
72
+ /** Logical channel identifier (e.g. "desktop", "telegram", "mobile"). */
73
+ channelId: string;
74
+ /** Optional natural-language hints for channel-specific UX behavior. */
75
+ hints?: string[];
76
+ /** Optional concise UX brief for this channel. */
77
+ uxBrief?: string;
78
+ }
79
+
80
+ export interface SessionCreateRequest {
81
+ type: 'session_create';
82
+ title?: string;
83
+ systemPromptOverride?: string;
84
+ maxResponseTokens?: number;
85
+ correlationId?: string;
86
+ transport?: SessionTransportMetadata;
87
+ threadType?: ThreadType;
88
+ /** Skill IDs to pre-activate in the new session (loaded before the first message). */
89
+ preactivatedSkillIds?: string[];
90
+ /** If provided, automatically sent as the first user message after session creation. */
91
+ initialMessage?: string;
92
+ }
93
+
94
+ export interface SessionSwitchRequest {
95
+ type: 'session_switch';
96
+ sessionId: string;
97
+ }
98
+
99
+ export interface AuthMessage {
100
+ type: 'auth';
101
+ token: string;
102
+ }
103
+
104
+ export interface PingMessage {
105
+ type: 'ping';
106
+ }
107
+
108
+ export interface CancelRequest {
109
+ type: 'cancel';
110
+ sessionId?: string;
111
+ }
112
+
113
+ export interface DeleteQueuedMessage {
114
+ type: 'delete_queued_message';
115
+ sessionId: string;
116
+ requestId: string;
117
+ }
118
+
119
+ export interface ModelGetRequest {
120
+ type: 'model_get';
121
+ }
122
+
123
+ export interface ModelSetRequest {
124
+ type: 'model_set';
125
+ model: string;
126
+ }
127
+
128
+ export interface HistoryRequest {
129
+ type: 'history_request';
130
+ sessionId: string;
131
+ }
132
+
133
+ export interface UndoRequest {
134
+ type: 'undo';
135
+ sessionId: string;
136
+ }
137
+
138
+ export interface RegenerateRequest {
139
+ type: 'regenerate';
140
+ sessionId: string;
141
+ }
142
+
143
+ export interface UsageRequest {
144
+ type: 'usage_request';
145
+ sessionId: string;
146
+ }
147
+
148
+ export interface SandboxSetRequest {
149
+ type: 'sandbox_set';
150
+ enabled: boolean;
151
+ }
152
+
153
+ export interface CuSessionCreate {
154
+ type: 'cu_session_create';
155
+ sessionId: string;
156
+ task: string;
157
+ screenWidth: number;
158
+ screenHeight: number;
159
+ attachments?: UserMessageAttachment[];
160
+ interactionType?: 'computer_use' | 'text_qa';
161
+ }
162
+
163
+ export interface CuSessionAbort {
164
+ type: 'cu_session_abort';
165
+ sessionId: string;
166
+ }
167
+
168
+ export interface CuObservation {
169
+ type: 'cu_observation';
170
+ sessionId: string;
171
+ axTree?: string;
172
+ axDiff?: string;
173
+ secondaryWindows?: string;
174
+ screenshot?: string;
175
+ /** Screenshot image width in pixels (`Px`). */
176
+ screenshotWidthPx?: number;
177
+ /** Screenshot image height in pixels (`Px`). */
178
+ screenshotHeightPx?: number;
179
+ /** Screen width in macOS points (`Pt`) used by native execution. */
180
+ screenWidthPt?: number;
181
+ /** Screen height in macOS points (`Pt`) used by native execution. */
182
+ screenHeightPt?: number;
183
+ /** Coordinate origin convention used by the observation payload. */
184
+ coordinateOrigin?: 'top_left';
185
+ /** Display ID used by screenshot capture for this observation. */
186
+ captureDisplayId?: number;
187
+ executionResult?: string;
188
+ executionError?: string;
189
+ axTreeBlob?: IpcBlobRef;
190
+ screenshotBlob?: IpcBlobRef;
191
+ }
192
+
193
+ export interface TaskSubmit {
194
+ type: 'task_submit';
195
+ task: string;
196
+ screenWidth: number;
197
+ screenHeight: number;
198
+ attachments?: UserMessageAttachment[];
199
+ source?: 'voice' | 'text';
200
+ }
201
+
202
+ export interface RideShotgunStart {
203
+ type: 'ride_shotgun_start';
204
+ durationSeconds: number;
205
+ intervalSeconds: number;
206
+ mode?: 'observe' | 'learn';
207
+ targetDomain?: string;
208
+ }
209
+
210
+ export interface RideShotgunStop {
211
+ type: 'ride_shotgun_stop';
212
+ watchId: string;
213
+ }
214
+
215
+ export interface WatchObservation {
216
+ type: 'watch_observation';
217
+ watchId: string;
218
+ sessionId: string;
219
+ ocrText: string;
220
+ appName?: string;
221
+ windowTitle?: string;
222
+ bundleIdentifier?: string;
223
+ timestamp: number;
224
+ captureIndex: number;
225
+ totalExpected: number;
226
+ }
227
+
228
+ export interface AppDataRequest {
229
+ type: 'app_data_request';
230
+ surfaceId: string;
231
+ callId: string;
232
+ method: 'query' | 'create' | 'update' | 'delete';
233
+ appId: string;
234
+ recordId?: string;
235
+ data?: Record<string, unknown>;
236
+ }
237
+
238
+ export interface SkillsListRequest {
239
+ type: 'skills_list';
240
+ }
241
+
242
+ export interface SkillDetailRequest {
243
+ type: 'skill_detail';
244
+ skillId: string;
245
+ }
246
+
247
+ export interface SkillsEnableRequest {
248
+ type: 'skills_enable';
249
+ name: string;
250
+ }
251
+
252
+ export interface SkillsDisableRequest {
253
+ type: 'skills_disable';
254
+ name: string;
255
+ }
256
+
257
+ export interface SkillsConfigureRequest {
258
+ type: 'skills_configure';
259
+ name: string;
260
+ env?: Record<string, string>;
261
+ apiKey?: string;
262
+ config?: Record<string, unknown>;
263
+ }
264
+
265
+ export interface SkillsInstallRequest {
266
+ type: 'skills_install';
267
+ slug: string;
268
+ version?: string;
269
+ }
270
+
271
+ export interface SkillsUninstallRequest {
272
+ type: 'skills_uninstall';
273
+ name: string;
274
+ }
275
+
276
+ export interface SkillsUpdateRequest {
277
+ type: 'skills_update';
278
+ name: string;
279
+ }
280
+
281
+ export interface SkillsCheckUpdatesRequest {
282
+ type: 'skills_check_updates';
283
+ }
284
+
285
+ export interface SkillsSearchRequest {
286
+ type: 'skills_search';
287
+ query: string;
288
+ }
289
+
290
+ export interface SessionsClearRequest {
291
+ type: 'sessions_clear';
292
+ }
293
+
294
+ export interface SkillsInspectRequest {
295
+ type: 'skills_inspect';
296
+ slug: string;
297
+ }
298
+
299
+ export interface SuggestionRequest {
300
+ type: 'suggestion_request';
301
+ sessionId: string;
302
+ requestId: string;
303
+ }
304
+
305
+ export interface AddTrustRule {
306
+ type: 'add_trust_rule';
307
+ toolName: string;
308
+ pattern: string;
309
+ scope: string;
310
+ decision: 'allow' | 'deny' | 'ask';
311
+ }
312
+
313
+ export interface TrustRulesList {
314
+ type: 'trust_rules_list';
315
+ }
316
+
317
+ export interface RemoveTrustRule {
318
+ type: 'remove_trust_rule';
319
+ id: string;
320
+ }
321
+
322
+ export interface UpdateTrustRule {
323
+ type: 'update_trust_rule';
324
+ id: string;
325
+ tool?: string;
326
+ pattern?: string;
327
+ scope?: string;
328
+ decision?: 'allow' | 'deny' | 'ask';
329
+ priority?: number;
330
+ }
331
+
332
+ export interface AcceptStarterBundle {
333
+ type: 'accept_starter_bundle';
334
+ }
335
+
336
+ export interface SchedulesList {
337
+ type: 'schedules_list';
338
+ }
339
+
340
+ export interface RemindersList {
341
+ type: 'reminders_list';
342
+ }
343
+
344
+ export interface ReminderCancel {
345
+ type: 'reminder_cancel';
346
+ id: string;
347
+ }
348
+
349
+ export interface ScheduleToggle {
350
+ type: 'schedule_toggle';
351
+ id: string;
352
+ enabled: boolean;
353
+ }
354
+
355
+ export interface ScheduleRemove {
356
+ type: 'schedule_remove';
357
+ id: string;
358
+ }
359
+
360
+ export interface AppsListRequest {
361
+ type: 'apps_list';
362
+ }
363
+
364
+ export interface HomeBaseGetRequest {
365
+ type: 'home_base_get';
366
+ /** If true, daemon ensures a durable Home Base link exists before responding. */
367
+ ensureLinked?: boolean;
368
+ }
369
+
370
+ export interface AppOpenRequest {
371
+ type: 'app_open_request';
372
+ appId: string;
373
+ }
374
+
375
+ export interface SharedAppsListRequest {
376
+ type: 'shared_apps_list';
377
+ }
378
+
379
+ export interface SharedAppDeleteRequest {
380
+ type: 'shared_app_delete';
381
+ uuid: string;
382
+ }
383
+
384
+ export interface ForkSharedAppRequest {
385
+ type: 'fork_shared_app';
386
+ uuid: string;
387
+ }
388
+
389
+ export interface BundleAppRequest {
390
+ type: 'bundle_app';
391
+ appId: string;
392
+ }
393
+
394
+ export interface AppUpdatePreviewRequest {
395
+ type: 'app_update_preview';
396
+ appId: string;
397
+ /** Base64-encoded PNG screenshot thumbnail. */
398
+ preview: string;
399
+ }
400
+
401
+ export interface AppUpdatePreviewResponse {
402
+ type: 'app_update_preview_response';
403
+ success: boolean;
404
+ appId: string;
405
+ }
406
+
407
+ export interface AppPreviewRequest {
408
+ type: 'app_preview_request';
409
+ appId: string;
410
+ }
411
+
412
+ export interface AppPreviewResponse {
413
+ type: 'app_preview_response';
414
+ appId: string;
415
+ preview?: string;
416
+ }
417
+
418
+ export interface OpenBundleRequest {
419
+ type: 'open_bundle';
420
+ filePath: string;
421
+ }
422
+
423
+ export interface SignBundlePayloadResponse {
424
+ type: 'sign_bundle_payload_response';
425
+ requestId: string;
426
+ signature: string;
427
+ keyId: string;
428
+ publicKey: string;
429
+ }
430
+
431
+ export interface GetSigningIdentityResponse {
432
+ type: 'get_signing_identity_response';
433
+ requestId: string;
434
+ keyId: string;
435
+ publicKey: string;
436
+ }
437
+
438
+ export interface GalleryListRequest {
439
+ type: 'gallery_list';
440
+ }
441
+
442
+ export interface GalleryInstallRequest {
443
+ type: 'gallery_install';
444
+ galleryAppId: string;
445
+ }
446
+
447
+ export interface ShareAppCloudRequest {
448
+ type: 'share_app_cloud';
449
+ appId: string;
450
+ }
451
+
452
+ export interface ShareToSlackRequest {
453
+ type: 'share_to_slack';
454
+ appId: string;
455
+ }
456
+
457
+ export interface SlackWebhookConfigRequest {
458
+ type: 'slack_webhook_config';
459
+ action: 'get' | 'set';
460
+ webhookUrl?: string;
461
+ }
462
+
463
+ export interface VercelApiConfigRequest {
464
+ type: 'vercel_api_config';
465
+ action: 'get' | 'set' | 'delete';
466
+ apiToken?: string;
467
+ }
468
+
469
+ export interface VercelApiConfigResponse {
470
+ type: 'vercel_api_config_response';
471
+ hasToken: boolean;
472
+ success: boolean;
473
+ error?: string;
474
+ }
475
+
476
+ export interface LinkOpenRequest {
477
+ type: 'link_open_request';
478
+ url: string;
479
+ metadata?: Record<string, unknown>;
480
+ }
481
+
482
+ export interface DiagnosticsExportRequest {
483
+ type: 'diagnostics_export_request';
484
+ conversationId: string;
485
+ anchorMessageId?: string; // if omitted, use latest assistant message
486
+ }
487
+
488
+ export interface EnvVarsRequest {
489
+ type: 'env_vars_request';
490
+ }
491
+
492
+ export interface IpcBlobProbe {
493
+ type: 'ipc_blob_probe';
494
+ probeId: string;
495
+ nonceSha256: string;
496
+ }
497
+
498
+ // === Surface types ===
499
+
500
+ export type SurfaceType = 'card' | 'form' | 'list' | 'table' | 'confirmation' | 'dynamic_page' | 'file_upload' | 'browser_view' | 'document_preview';
501
+
502
+ export const INTERACTIVE_SURFACE_TYPES: SurfaceType[] = ['form', 'confirmation', 'dynamic_page', 'file_upload'];
503
+
504
+ export interface SurfaceAction {
505
+ id: string;
506
+ label: string;
507
+ style?: 'primary' | 'secondary' | 'destructive';
508
+ }
509
+
510
+ export interface CardSurfaceData {
511
+ title: string;
512
+ subtitle?: string;
513
+ body: string;
514
+ metadata?: Array<{ label: string; value: string }>;
515
+ /** Optional template name for specialized rendering (e.g. "weather_forecast"). */
516
+ template?: string;
517
+ /** Arbitrary data consumed by the template renderer. Shape depends on template. */
518
+ templateData?: Record<string, unknown>;
519
+ }
520
+
521
+ export interface FormField {
522
+ id: string;
523
+ type: 'text' | 'textarea' | 'select' | 'toggle' | 'number' | 'password';
524
+ label: string;
525
+ placeholder?: string;
526
+ required?: boolean;
527
+ defaultValue?: string | number | boolean;
528
+ options?: Array<{ label: string; value: string }>;
529
+ }
530
+
531
+ export interface FormPage {
532
+ id: string;
533
+ title: string;
534
+ description?: string;
535
+ fields: FormField[];
536
+ }
537
+
538
+ export interface FormSurfaceData {
539
+ description?: string;
540
+ fields: FormField[];
541
+ submitLabel?: string;
542
+ pages?: FormPage[];
543
+ pageLabels?: { next?: string; back?: string; submit?: string };
544
+ }
545
+
546
+ export interface ListItem {
547
+ id: string;
548
+ title: string;
549
+ subtitle?: string;
550
+ icon?: string;
551
+ selected?: boolean;
552
+ }
553
+
554
+ export interface ListSurfaceData {
555
+ items: ListItem[];
556
+ selectionMode: 'single' | 'multiple' | 'none';
557
+ }
558
+
559
+ export interface ConfirmationSurfaceData {
560
+ message: string;
561
+ detail?: string;
562
+ confirmLabel?: string;
563
+ cancelLabel?: string;
564
+ destructive?: boolean;
565
+ }
566
+
567
+ export interface DynamicPagePreview {
568
+ title: string;
569
+ subtitle?: string;
570
+ description?: string;
571
+ icon?: string;
572
+ metrics?: Array<{ label: string; value: string }>;
573
+ }
574
+
575
+ export interface DynamicPageSurfaceData {
576
+ html: string;
577
+ width?: number;
578
+ height?: number;
579
+ appId?: string;
580
+ appType?: string;
581
+ reloadGeneration?: number;
582
+ status?: string;
583
+ preview?: DynamicPagePreview;
584
+ }
585
+
586
+ export interface FileUploadSurfaceData {
587
+ prompt: string;
588
+ acceptedTypes?: string[];
589
+ maxFiles?: number;
590
+ maxSizeBytes?: number;
591
+ }
592
+
593
+ export interface TableColumn {
594
+ id: string;
595
+ label: string;
596
+ width?: number;
597
+ }
598
+
599
+ export interface TableRow {
600
+ id: string;
601
+ cells: Record<string, string>;
602
+ selectable?: boolean;
603
+ selected?: boolean;
604
+ }
605
+
606
+ export interface TableSurfaceData {
607
+ columns: TableColumn[];
608
+ rows: TableRow[];
609
+ selectionMode?: 'none' | 'single' | 'multiple';
610
+ caption?: string;
611
+ }
612
+
613
+ export interface BrowserViewSurfaceData {
614
+ sessionId: string;
615
+ currentUrl: string;
616
+ status: 'navigating' | 'idle' | 'interacting';
617
+ frame?: string; // base64 JPEG
618
+ actionText?: string; // "Clicking 'Submit' button"
619
+ highlights?: Array<{ x: number; y: number; w: number; h: number; label: string }>;
620
+ pages?: Array<{ id: string; title: string; url: string; active: boolean }>;
621
+ }
622
+
623
+ export interface DocumentPreviewSurfaceData {
624
+ title: string;
625
+ surfaceId: string; // the doc's real surfaceId, for focusing the panel
626
+ subtitle?: string;
627
+ }
628
+
629
+ export type SurfaceData = CardSurfaceData | FormSurfaceData | ListSurfaceData | TableSurfaceData | ConfirmationSurfaceData | DynamicPageSurfaceData | FileUploadSurfaceData | BrowserViewSurfaceData | DocumentPreviewSurfaceData;
630
+
631
+ export interface UiSurfaceAction {
632
+ type: 'ui_surface_action';
633
+ sessionId: string;
634
+ surfaceId: string;
635
+ actionId: string;
636
+ data?: Record<string, unknown>;
637
+ }
638
+
639
+ export interface UiSurfaceUndoRequest {
640
+ type: 'ui_surface_undo';
641
+ sessionId: string;
642
+ surfaceId: string;
643
+ }
644
+
645
+ export interface PublishPageRequest {
646
+ type: 'publish_page';
647
+ html: string;
648
+ title?: string;
649
+ appId?: string;
650
+ }
651
+
652
+ export interface PublishPageResponse {
653
+ type: 'publish_page_response';
654
+ success: boolean;
655
+ publicUrl?: string;
656
+ deploymentId?: string;
657
+ error?: string;
658
+ }
659
+
660
+ export interface UnpublishPageRequest {
661
+ type: 'unpublish_page';
662
+ deploymentId: string;
663
+ }
664
+
665
+ export interface UnpublishPageResponse {
666
+ type: 'unpublish_page_response';
667
+ success: boolean;
668
+ error?: string;
669
+ }
670
+
671
+ export interface DiagnosticsExportResponse {
672
+ type: 'diagnostics_export_response';
673
+ success: boolean;
674
+ filePath?: string; // path to the zip file on success
675
+ error?: string; // error message on failure
676
+ }
677
+
678
+ export interface EnvVarsResponse {
679
+ type: 'env_vars_response';
680
+ vars: Record<string, string>;
681
+ }
682
+
683
+ export interface AppFilesChanged {
684
+ type: 'app_files_changed';
685
+ appId: string;
686
+ }
687
+
688
+ export interface BrowserFrame {
689
+ type: 'browser_frame';
690
+ sessionId: string;
691
+ surfaceId: string;
692
+ frame: string; // base64 JPEG
693
+ metadata?: { offsetTop: number; pageScaleFactor: number; scrollOffsetX: number; scrollOffsetY: number; timestamp: number };
694
+ }
695
+
696
+ export interface BrowserCDPRequest {
697
+ type: 'browser_cdp_request';
698
+ sessionId: string;
699
+ }
700
+
701
+ export interface BrowserCDPResponse {
702
+ type: 'browser_cdp_response';
703
+ sessionId: string;
704
+ success: boolean;
705
+ declined?: boolean;
706
+ }
707
+
708
+ export interface BrowserUserClick {
709
+ type: 'browser_user_click';
710
+ sessionId: string;
711
+ surfaceId: string;
712
+ x: number;
713
+ y: number;
714
+ button?: 'left' | 'right';
715
+ doubleClick?: boolean;
716
+ }
717
+
718
+ export interface BrowserUserScroll {
719
+ type: 'browser_user_scroll';
720
+ sessionId: string;
721
+ surfaceId: string;
722
+ deltaX: number;
723
+ deltaY: number;
724
+ x: number;
725
+ y: number;
726
+ }
727
+
728
+ export interface BrowserUserKeypress {
729
+ type: 'browser_user_keypress';
730
+ sessionId: string;
731
+ surfaceId: string;
732
+ key: string;
733
+ modifiers?: string[];
734
+ }
735
+
736
+ export interface BrowserInteractiveMode {
737
+ type: 'browser_interactive_mode';
738
+ sessionId: string;
739
+ surfaceId: string;
740
+ enabled: boolean;
741
+ }
742
+
743
+ export interface BrowserInteractiveModeChanged {
744
+ type: 'browser_interactive_mode_changed';
745
+ sessionId: string;
746
+ surfaceId: string;
747
+ enabled: boolean;
748
+ reason?: string;
749
+ message?: string;
750
+ }
751
+ export interface BrowserHandoffRequest {
752
+ type: 'browser_handoff_request';
753
+ sessionId: string;
754
+ surfaceId: string;
755
+ reason: 'auth' | 'checkout' | 'captcha' | 'custom';
756
+ message: string;
757
+ bringToFront?: boolean;
758
+ }
759
+
760
+ // ── Work Items (Tasks) ───────────────────────────────────────────────
761
+
762
+ export interface WorkItemsListRequest {
763
+ type: 'work_items_list';
764
+ status?: string; // optional filter
765
+ }
766
+
767
+ export interface WorkItemGetRequest {
768
+ type: 'work_item_get';
769
+ id: string;
770
+ }
771
+
772
+ export interface WorkItemCreateRequest {
773
+ type: 'work_item_create';
774
+ taskId: string;
775
+ title?: string; // defaults to task title
776
+ notes?: string;
777
+ priorityTier?: number;
778
+ sortIndex?: number;
779
+ }
780
+
781
+ export interface WorkItemUpdateRequest {
782
+ type: 'work_item_update';
783
+ id: string;
784
+ title?: string;
785
+ notes?: string;
786
+ status?: string;
787
+ priorityTier?: number;
788
+ sortIndex?: number;
789
+ }
790
+
791
+ export interface WorkItemCompleteRequest {
792
+ type: 'work_item_complete';
793
+ id: string;
794
+ }
795
+
796
+ export interface WorkItemRunTaskRequest {
797
+ type: 'work_item_run_task';
798
+ id: string;
799
+ }
800
+
801
+ export type ClientMessage =
802
+ | AuthMessage
803
+ | UserMessage
804
+ | ConfirmationResponse
805
+ | SecretResponse
806
+ | SessionListRequest
807
+ | SessionCreateRequest
808
+ | SessionSwitchRequest
809
+ | PingMessage
810
+ | CancelRequest
811
+ | DeleteQueuedMessage
812
+ | ModelGetRequest
813
+ | ModelSetRequest
814
+ | HistoryRequest
815
+ | UndoRequest
816
+ | RegenerateRequest
817
+ | UsageRequest
818
+ | SandboxSetRequest
819
+ | CuSessionCreate
820
+ | CuSessionAbort
821
+ | CuObservation
822
+ | RideShotgunStart
823
+ | RideShotgunStop
824
+ | WatchObservation
825
+ | TaskSubmit
826
+ | UiSurfaceAction
827
+ | UiSurfaceUndoRequest
828
+ | AppDataRequest
829
+ | SkillsListRequest
830
+ | SkillDetailRequest
831
+ | SkillsEnableRequest
832
+ | SkillsDisableRequest
833
+ | SkillsConfigureRequest
834
+ | SkillsInstallRequest
835
+ | SkillsUninstallRequest
836
+ | SkillsUpdateRequest
837
+ | SkillsCheckUpdatesRequest
838
+ | SkillsSearchRequest
839
+ | SkillsInspectRequest
840
+ | SuggestionRequest
841
+ | AddTrustRule
842
+ | TrustRulesList
843
+ | RemoveTrustRule
844
+ | UpdateTrustRule
845
+ | AcceptStarterBundle
846
+ | SchedulesList
847
+ | ScheduleToggle
848
+ | ScheduleRemove
849
+ | RemindersList
850
+ | ReminderCancel
851
+ | BundleAppRequest
852
+ | AppsListRequest
853
+ | HomeBaseGetRequest
854
+ | AppOpenRequest
855
+ | SharedAppsListRequest
856
+ | SharedAppDeleteRequest
857
+ | ForkSharedAppRequest
858
+ | OpenBundleRequest
859
+ | SignBundlePayloadResponse
860
+ | GetSigningIdentityResponse
861
+ | IpcBlobProbe
862
+ | LinkOpenRequest
863
+ | ShareAppCloudRequest
864
+ | ShareToSlackRequest
865
+ | SlackWebhookConfigRequest
866
+ | VercelApiConfigRequest
867
+ | SessionsClearRequest
868
+ | GalleryListRequest
869
+ | GalleryInstallRequest
870
+ | AppUpdatePreviewRequest
871
+ | AppPreviewRequest
872
+ | PublishPageRequest
873
+ | UnpublishPageRequest
874
+ | DiagnosticsExportRequest
875
+ | EnvVarsRequest
876
+ | IntegrationListRequest
877
+ | IntegrationConnectRequest
878
+ | IntegrationDisconnectRequest
879
+ | DocumentSaveRequest
880
+ | DocumentLoadRequest
881
+ | DocumentListRequest
882
+ | BrowserCDPResponse
883
+ | BrowserUserClick
884
+ | BrowserUserScroll
885
+ | BrowserUserKeypress
886
+ | BrowserInteractiveMode
887
+ | WorkItemsListRequest
888
+ | WorkItemGetRequest
889
+ | WorkItemCreateRequest
890
+ | WorkItemUpdateRequest
891
+ | WorkItemCompleteRequest
892
+ | WorkItemRunTaskRequest
893
+ | SubagentAbortRequest
894
+ | SubagentStatusRequest
895
+ | SubagentMessageRequest;
896
+
897
+ // ── Legacy integration IPC stubs ────────────────────────────────────
898
+ // The macOS Settings panel still sends these messages. Stub types keep
899
+ // the dispatch map happy until the client-side migration lands.
900
+
901
+ export interface IntegrationListRequest {
902
+ type: 'integration_list';
903
+ }
904
+
905
+ export interface IntegrationConnectRequest {
906
+ type: 'integration_connect';
907
+ integrationId: string;
908
+ }
909
+
910
+ export interface IntegrationDisconnectRequest {
911
+ type: 'integration_disconnect';
912
+ integrationId: string;
913
+ }
914
+
915
+ export interface IntegrationListResponse {
916
+ type: 'integration_list_response';
917
+ integrations: Array<{
918
+ id: string;
919
+ connected: boolean;
920
+ accountInfo?: string | null;
921
+ connectedAt?: number | null;
922
+ lastUsed?: number | null;
923
+ error?: string | null;
924
+ }>;
925
+ }
926
+
927
+ export interface IntegrationConnectResult {
928
+ type: 'integration_connect_result';
929
+ integrationId: string;
930
+ success: boolean;
931
+ accountInfo?: string | null;
932
+ error?: string | null;
933
+ setupRequired?: boolean;
934
+ setupSkillId?: string;
935
+ setupHint?: string;
936
+ }
937
+
938
+ // === Server → Client messages ===
939
+
940
+ export interface UserMessageEcho {
941
+ type: 'user_message_echo';
942
+ text: string;
943
+ sessionId?: string;
944
+ }
945
+
946
+ export interface AssistantTextDelta {
947
+ type: 'assistant_text_delta';
948
+ text: string;
949
+ sessionId?: string;
950
+ }
951
+
952
+ export interface AssistantThinkingDelta {
953
+ type: 'assistant_thinking_delta';
954
+ thinking: string;
955
+ }
956
+
957
+ export interface ToolUseStart {
958
+ type: 'tool_use_start';
959
+ toolName: string;
960
+ input: Record<string, unknown>;
961
+ sessionId?: string;
962
+ }
963
+
964
+ export interface ToolOutputChunk {
965
+ type: 'tool_output_chunk';
966
+ chunk: string;
967
+ }
968
+
969
+ export interface ToolInputDelta {
970
+ type: 'tool_input_delta';
971
+ toolName: string;
972
+ content: string;
973
+ sessionId?: string;
974
+ }
975
+
976
+ export interface ToolResult {
977
+ type: 'tool_result';
978
+ toolName: string;
979
+ result: string;
980
+ isError?: boolean;
981
+ diff?: { filePath: string; oldContent: string; newContent: string; isNewFile: boolean };
982
+ status?: string;
983
+ sessionId?: string;
984
+ /** Base64-encoded image data extracted from contentBlocks (e.g. browser_screenshot). */
985
+ imageData?: string;
986
+ }
987
+
988
+ export interface ConfirmationRequest {
989
+ type: 'confirmation_request';
990
+ requestId: string;
991
+ toolName: string;
992
+ input: Record<string, unknown>;
993
+ riskLevel: string;
994
+ executionTarget?: 'sandbox' | 'host';
995
+ allowlistOptions: Array<{ label: string; description: string; pattern: string }>;
996
+ scopeOptions: Array<{ label: string; scope: string }>;
997
+ diff?: { filePath: string; oldContent: string; newContent: string; isNewFile: boolean };
998
+ sandboxed?: boolean;
999
+ sessionId?: string;
1000
+ /** Principal kind that initiated this tool use (e.g. 'core' or 'skill'). */
1001
+ principalKind?: string;
1002
+ /** Skill ID when principalKind is 'skill'. */
1003
+ principalId?: string;
1004
+ /** Content-hash of the skill source for version tracking. */
1005
+ principalVersion?: string;
1006
+ /** When false, the client should hide "always allow" / trust-rule persistence affordances. */
1007
+ persistentDecisionsAllowed?: boolean;
1008
+ }
1009
+
1010
+ export interface SecretRequest {
1011
+ type: 'secret_request';
1012
+ requestId: string;
1013
+ service: string;
1014
+ field: string;
1015
+ label: string;
1016
+ description?: string;
1017
+ placeholder?: string;
1018
+ sessionId?: string;
1019
+ /** Intended purpose of the credential (displayed to user). */
1020
+ purpose?: string;
1021
+ /** Tools allowed to use this credential. */
1022
+ allowedTools?: string[];
1023
+ /** Domains where this credential may be used. */
1024
+ allowedDomains?: string[];
1025
+ /** Whether one-time send override is available. */
1026
+ allowOneTimeSend?: boolean;
1027
+ }
1028
+
1029
+ export interface MessageComplete {
1030
+ type: 'message_complete';
1031
+ sessionId?: string;
1032
+ attachments?: UserMessageAttachment[];
1033
+ }
1034
+
1035
+ export interface SessionInfo {
1036
+ type: 'session_info';
1037
+ sessionId: string;
1038
+ title: string;
1039
+ correlationId?: string;
1040
+ threadType?: ThreadType;
1041
+ }
1042
+
1043
+ export interface SessionListResponse {
1044
+ type: 'session_list_response';
1045
+ sessions: Array<{ id: string; title: string; updatedAt: number; threadType?: ThreadType }>;
1046
+ }
1047
+
1048
+ export interface SessionsClearResponse {
1049
+ type: 'sessions_clear_response';
1050
+ cleared: number;
1051
+ }
1052
+
1053
+ export interface ErrorMessage {
1054
+ type: 'error';
1055
+ message: string;
1056
+ /** Categorizes the error so the client can offer contextual actions (e.g. "Send Anyway" for secret_blocked). */
1057
+ category?: string;
1058
+ }
1059
+
1060
+ export interface AuthResult {
1061
+ type: 'auth_result';
1062
+ success: boolean;
1063
+ message?: string;
1064
+ }
1065
+
1066
+ export interface PongMessage {
1067
+ type: 'pong';
1068
+ }
1069
+
1070
+ export interface DaemonStatusMessage {
1071
+ type: 'daemon_status';
1072
+ httpPort?: number;
1073
+ }
1074
+
1075
+ export interface GenerationCancelled {
1076
+ type: 'generation_cancelled';
1077
+ sessionId?: string;
1078
+ }
1079
+
1080
+ export interface GenerationHandoff {
1081
+ type: 'generation_handoff';
1082
+ sessionId: string;
1083
+ requestId?: string;
1084
+ queuedCount: number;
1085
+ attachments?: UserMessageAttachment[];
1086
+ }
1087
+
1088
+ export interface ModelInfo {
1089
+ type: 'model_info';
1090
+ model: string;
1091
+ provider: string;
1092
+ configuredProviders?: string[];
1093
+ }
1094
+
1095
+ export interface HistoryResponseToolCall {
1096
+ name: string;
1097
+ input: Record<string, unknown>;
1098
+ result?: string;
1099
+ isError?: boolean;
1100
+ /** Base64-encoded image data from tool contentBlocks (e.g. browser_screenshot). */
1101
+ imageData?: string;
1102
+ }
1103
+
1104
+ export interface HistoryResponseSurface {
1105
+ surfaceId: string;
1106
+ surfaceType: string;
1107
+ title?: string;
1108
+ data: Record<string, unknown>;
1109
+ actions?: Array<{ id: string; label: string; style?: string }>;
1110
+ display?: string;
1111
+ }
1112
+
1113
+ export interface HistoryResponse {
1114
+ type: 'history_response';
1115
+ sessionId: string;
1116
+ messages: Array<{
1117
+ id?: string; // Database message ID (for matching surfaces)
1118
+ role: string;
1119
+ text: string;
1120
+ timestamp: number;
1121
+ toolCalls?: HistoryResponseToolCall[];
1122
+ /** True when tool_use blocks appeared before any text block in the original content. */
1123
+ toolCallsBeforeText?: boolean;
1124
+ attachments?: UserMessageAttachment[];
1125
+ /** Text segments split by tool-call boundaries. Preserves interleaving order. */
1126
+ textSegments?: string[];
1127
+ /** Content block ordering using "text:N", "tool:N", "surface:N" encoding. */
1128
+ contentOrder?: string[];
1129
+ /** UI surfaces (widgets) embedded in the message. */
1130
+ surfaces?: HistoryResponseSurface[];
1131
+ }>;
1132
+ }
1133
+
1134
+ export interface UndoComplete {
1135
+ type: 'undo_complete';
1136
+ removedCount: number;
1137
+ sessionId?: string;
1138
+ }
1139
+
1140
+ export interface UsageUpdate {
1141
+ type: 'usage_update';
1142
+ inputTokens: number;
1143
+ outputTokens: number;
1144
+ totalInputTokens: number;
1145
+ totalOutputTokens: number;
1146
+ estimatedCost: number;
1147
+ model: string;
1148
+ }
1149
+
1150
+ export interface UsageResponse {
1151
+ type: 'usage_response';
1152
+ totalInputTokens: number;
1153
+ totalOutputTokens: number;
1154
+ estimatedCost: number;
1155
+ model: string;
1156
+ }
1157
+
1158
+ export interface ContextCompacted {
1159
+ type: 'context_compacted';
1160
+ previousEstimatedInputTokens: number;
1161
+ estimatedInputTokens: number;
1162
+ maxInputTokens: number;
1163
+ thresholdTokens: number;
1164
+ compactedMessages: number;
1165
+ summaryCalls: number;
1166
+ summaryInputTokens: number;
1167
+ summaryOutputTokens: number;
1168
+ summaryModel: string;
1169
+ }
1170
+
1171
+ export interface SecretDetected {
1172
+ type: 'secret_detected';
1173
+ toolName: string;
1174
+ matches: Array<{ type: string; redactedValue: string }>;
1175
+ action: 'redact' | 'warn' | 'block' | 'prompt';
1176
+ }
1177
+
1178
+ export interface MemoryRecalledCandidateDebug {
1179
+ key: string;
1180
+ type: string;
1181
+ kind: string;
1182
+ finalScore: number;
1183
+ lexical: number;
1184
+ semantic: number;
1185
+ recency: number;
1186
+ }
1187
+
1188
+ export interface MemoryRecalled {
1189
+ type: 'memory_recalled';
1190
+ provider: string;
1191
+ model: string;
1192
+ lexicalHits: number;
1193
+ semanticHits: number;
1194
+ recencyHits: number;
1195
+ entityHits: number;
1196
+ relationSeedEntityCount?: number;
1197
+ relationTraversedEdgeCount?: number;
1198
+ relationNeighborEntityCount?: number;
1199
+ relationExpandedItemCount?: number;
1200
+ earlyTerminated?: boolean;
1201
+ mergedCount: number;
1202
+ selectedCount: number;
1203
+ rerankApplied: boolean;
1204
+ injectedTokens: number;
1205
+ latencyMs: number;
1206
+ topCandidates: MemoryRecalledCandidateDebug[];
1207
+ }
1208
+
1209
+ export interface MemoryStatus {
1210
+ type: 'memory_status';
1211
+ enabled: boolean;
1212
+ degraded: boolean;
1213
+ reason?: string;
1214
+ provider?: string;
1215
+ model?: string;
1216
+ conflictsPending: number;
1217
+ conflictsResolved: number;
1218
+ oldestPendingConflictAgeMs: number | null;
1219
+ cleanupResolvedJobsPending: number;
1220
+ cleanupSupersededJobsPending: number;
1221
+ cleanupResolvedJobsCompleted24h: number;
1222
+ cleanupSupersededJobsCompleted24h: number;
1223
+ }
1224
+
1225
+ export interface CuAction {
1226
+ type: 'cu_action';
1227
+ sessionId: string;
1228
+ toolName: string;
1229
+ input: Record<string, unknown>;
1230
+ reasoning?: string;
1231
+ stepNumber: number;
1232
+ }
1233
+
1234
+ export interface CuComplete {
1235
+ type: 'cu_complete';
1236
+ sessionId: string;
1237
+ summary: string;
1238
+ stepCount: number;
1239
+ isResponse?: boolean;
1240
+ }
1241
+
1242
+ export interface CuError {
1243
+ type: 'cu_error';
1244
+ sessionId: string;
1245
+ message: string;
1246
+ }
1247
+
1248
+ export type SessionErrorCode =
1249
+ | 'PROVIDER_NETWORK'
1250
+ | 'PROVIDER_RATE_LIMIT'
1251
+ | 'PROVIDER_API'
1252
+ | 'CONTEXT_TOO_LARGE'
1253
+ | 'QUEUE_FULL'
1254
+ | 'SESSION_ABORTED'
1255
+ | 'SESSION_PROCESSING_FAILED'
1256
+ | 'REGENERATE_FAILED'
1257
+ | 'UNKNOWN';
1258
+
1259
+ export interface SessionErrorMessage {
1260
+ type: 'session_error';
1261
+ sessionId: string;
1262
+ code: SessionErrorCode;
1263
+ userMessage: string;
1264
+ retryable: boolean;
1265
+ debugDetails?: string;
1266
+ }
1267
+
1268
+ export interface TaskRouted {
1269
+ type: 'task_routed';
1270
+ sessionId: string;
1271
+ interactionType: 'computer_use' | 'text_qa';
1272
+ /** The task text passed to the escalated session. */
1273
+ task?: string;
1274
+ /** Set when a text_qa session escalates to computer_use via computer_use_request_control. */
1275
+ escalatedFrom?: string;
1276
+ }
1277
+
1278
+ export interface RideShotgunResult {
1279
+ type: 'ride_shotgun_result';
1280
+ sessionId: string;
1281
+ watchId: string;
1282
+ summary: string;
1283
+ observationCount: number;
1284
+ recordingId?: string;
1285
+ recordingPath?: string;
1286
+ }
1287
+
1288
+ export interface MessageQueued {
1289
+ type: 'message_queued';
1290
+ sessionId: string;
1291
+ requestId: string;
1292
+ position: number;
1293
+ }
1294
+
1295
+ export interface MessageDequeued {
1296
+ type: 'message_dequeued';
1297
+ sessionId: string;
1298
+ requestId: string;
1299
+ }
1300
+
1301
+ export interface MessageQueuedDeleted {
1302
+ type: 'message_queued_deleted';
1303
+ sessionId: string;
1304
+ requestId: string;
1305
+ }
1306
+
1307
+ export interface AppDataResponse {
1308
+ type: 'app_data_response';
1309
+ surfaceId: string;
1310
+ callId: string;
1311
+ success: boolean;
1312
+ result?: unknown;
1313
+ error?: string;
1314
+ }
1315
+
1316
+ export interface SkillsListResponse {
1317
+ type: 'skills_list_response';
1318
+ skills: Array<{
1319
+ id: string;
1320
+ name: string;
1321
+ description: string;
1322
+ emoji?: string;
1323
+ homepage?: string;
1324
+ source: 'bundled' | 'managed' | 'workspace' | 'clawhub' | 'extra';
1325
+ state: 'enabled' | 'disabled' | 'available';
1326
+ degraded: boolean;
1327
+ missingRequirements?: { bins?: string[]; env?: string[]; permissions?: string[] };
1328
+ installedVersion?: string;
1329
+ latestVersion?: string;
1330
+ updateAvailable: boolean;
1331
+ userInvocable: boolean;
1332
+ clawhub?: { author: string; stars: number; installs: number; reports: number; publishedAt: string };
1333
+ }>;
1334
+ }
1335
+
1336
+ export interface SkillStateChanged {
1337
+ type: 'skills_state_changed';
1338
+ name: string;
1339
+ state: 'enabled' | 'disabled' | 'installed' | 'uninstalled';
1340
+ }
1341
+
1342
+ export interface SkillsOperationResponse {
1343
+ type: 'skills_operation_response';
1344
+ operation: string;
1345
+ success: boolean;
1346
+ error?: string;
1347
+ data?: unknown;
1348
+ }
1349
+
1350
+ export interface SkillDetailResponse {
1351
+ type: 'skill_detail_response';
1352
+ skillId: string;
1353
+ body: string;
1354
+ icon?: string;
1355
+ error?: string;
1356
+ }
1357
+
1358
+ export interface SkillsInspectResponse {
1359
+ type: 'skills_inspect_response';
1360
+ slug: string;
1361
+ data?: {
1362
+ skill: { slug: string; displayName: string; summary: string };
1363
+ owner?: { handle: string; displayName: string; image?: string } | null;
1364
+ stats?: { stars: number; installs: number; downloads: number; versions: number } | null;
1365
+ createdAt?: number | null;
1366
+ updatedAt?: number | null;
1367
+ latestVersion?: { version: string; changelog?: string } | null;
1368
+ files?: Array<{ path: string; size: number; contentType?: string }> | null;
1369
+ skillMdContent?: string | null;
1370
+ };
1371
+ error?: string;
1372
+ }
1373
+
1374
+ export interface SuggestionResponse {
1375
+ type: 'suggestion_response';
1376
+ requestId: string;
1377
+ suggestion: string | null;
1378
+ source: 'llm' | 'none';
1379
+ }
1380
+
1381
+ export interface TrustRulesListResponse {
1382
+ type: 'trust_rules_list_response';
1383
+ rules: Array<{
1384
+ id: string;
1385
+ tool: string;
1386
+ pattern: string;
1387
+ scope: string;
1388
+ decision: 'allow' | 'deny' | 'ask';
1389
+ priority: number;
1390
+ createdAt: number;
1391
+ }>;
1392
+ }
1393
+
1394
+ export interface AcceptStarterBundleResponse {
1395
+ type: 'accept_starter_bundle_response';
1396
+ accepted: boolean;
1397
+ rulesAdded: number;
1398
+ alreadyAccepted: boolean;
1399
+ }
1400
+
1401
+ export interface SchedulesListResponse {
1402
+ type: 'schedules_list_response';
1403
+ schedules: Array<{
1404
+ id: string;
1405
+ name: string;
1406
+ enabled: boolean;
1407
+ cronExpression: string;
1408
+ timezone: string | null;
1409
+ message: string;
1410
+ nextRunAt: number;
1411
+ lastRunAt: number | null;
1412
+ lastStatus: string | null;
1413
+ description: string;
1414
+ }>;
1415
+ }
1416
+
1417
+ export interface RemindersListResponse {
1418
+ type: 'reminders_list_response';
1419
+ reminders: Array<{
1420
+ id: string;
1421
+ label: string;
1422
+ message: string;
1423
+ fireAt: number;
1424
+ mode: string;
1425
+ status: string;
1426
+ firedAt: number | null;
1427
+ createdAt: number;
1428
+ }>;
1429
+ }
1430
+
1431
+ export interface AppsListResponse {
1432
+ type: 'apps_list_response';
1433
+ apps: Array<{
1434
+ id: string;
1435
+ name: string;
1436
+ description?: string;
1437
+ icon?: string;
1438
+ preview?: string;
1439
+ createdAt: number;
1440
+ version?: string;
1441
+ contentId?: string;
1442
+ appType?: string;
1443
+ }>;
1444
+ }
1445
+
1446
+ export interface HomeBaseGetResponse {
1447
+ type: 'home_base_get_response';
1448
+ homeBase: {
1449
+ appId: string;
1450
+ source: string;
1451
+ starterTasks: string[];
1452
+ onboardingTasks: string[];
1453
+ preview: {
1454
+ title: string;
1455
+ subtitle: string;
1456
+ description: string;
1457
+ icon: string;
1458
+ metrics: Array<{ label: string; value: string }>;
1459
+ };
1460
+ } | null;
1461
+ }
1462
+
1463
+ export interface SharedAppsListResponse {
1464
+ type: 'shared_apps_list_response';
1465
+ apps: Array<{
1466
+ uuid: string;
1467
+ name: string;
1468
+ description?: string;
1469
+ icon?: string;
1470
+ preview?: string;
1471
+ entry: string;
1472
+ trustTier: string;
1473
+ signerDisplayName?: string;
1474
+ bundleSizeBytes: number;
1475
+ installedAt: string;
1476
+ version?: string;
1477
+ contentId?: string;
1478
+ updateAvailable?: boolean;
1479
+ }>;
1480
+ }
1481
+
1482
+ export interface SharedAppDeleteResponse {
1483
+ type: 'shared_app_delete_response';
1484
+ success: boolean;
1485
+ }
1486
+
1487
+ export interface ForkSharedAppResponse {
1488
+ type: 'fork_shared_app_response';
1489
+ success: boolean;
1490
+ appId?: string;
1491
+ name?: string;
1492
+ error?: string;
1493
+ }
1494
+
1495
+ export interface BundleAppResponse {
1496
+ type: 'bundle_app_response';
1497
+ bundlePath: string;
1498
+ manifest: {
1499
+ format_version: number;
1500
+ name: string;
1501
+ description?: string;
1502
+ icon?: string;
1503
+ created_at: string;
1504
+ created_by: string;
1505
+ entry: string;
1506
+ capabilities: string[];
1507
+ version?: string;
1508
+ content_id?: string;
1509
+ };
1510
+ }
1511
+
1512
+ export interface OpenBundleResponse {
1513
+ type: 'open_bundle_response';
1514
+ manifest: {
1515
+ format_version: number;
1516
+ name: string;
1517
+ description?: string;
1518
+ icon?: string;
1519
+ created_at: string;
1520
+ created_by: string;
1521
+ entry: string;
1522
+ capabilities: string[];
1523
+ };
1524
+ scanResult: {
1525
+ passed: boolean;
1526
+ blocked: string[];
1527
+ warnings: string[];
1528
+ };
1529
+ signatureResult: {
1530
+ trustTier: 'verified' | 'signed' | 'unsigned' | 'tampered';
1531
+ signerKeyId?: string;
1532
+ signerDisplayName?: string;
1533
+ signerAccount?: string;
1534
+ };
1535
+ bundleSizeBytes: number;
1536
+ }
1537
+
1538
+ export interface SignBundlePayloadRequest {
1539
+ type: 'sign_bundle_payload';
1540
+ requestId: string;
1541
+ payload: string;
1542
+ }
1543
+
1544
+ export interface GetSigningIdentityRequest {
1545
+ type: 'get_signing_identity';
1546
+ requestId: string;
1547
+ }
1548
+
1549
+ export interface ShareAppCloudResponse {
1550
+ type: 'share_app_cloud_response';
1551
+ success: boolean;
1552
+ shareToken?: string;
1553
+ shareUrl?: string;
1554
+ error?: string;
1555
+ }
1556
+
1557
+ export interface IpcBlobProbeResult {
1558
+ type: 'ipc_blob_probe_result';
1559
+ probeId: string;
1560
+ ok: boolean;
1561
+ observedNonceSha256?: string;
1562
+ reason?: string;
1563
+ }
1564
+
1565
+ export interface GalleryListResponse {
1566
+ type: 'gallery_list_response';
1567
+ gallery: GalleryManifest;
1568
+ }
1569
+
1570
+ export interface GalleryInstallResponse {
1571
+ type: 'gallery_install_response';
1572
+ success: boolean;
1573
+ appId?: string;
1574
+ name?: string;
1575
+ error?: string;
1576
+ }
1577
+
1578
+ export interface ShareToSlackResponse {
1579
+ type: 'share_to_slack_response';
1580
+ success: boolean;
1581
+ error?: string;
1582
+ }
1583
+
1584
+ export interface SlackWebhookConfigResponse {
1585
+ type: 'slack_webhook_config_response';
1586
+ webhookUrl?: string;
1587
+ success: boolean;
1588
+ error?: string;
1589
+ }
1590
+
1591
+ export interface OpenUrl {
1592
+ type: 'open_url';
1593
+ url: string;
1594
+ title?: string;
1595
+ }
1596
+
1597
+ export interface ReminderFired {
1598
+ type: 'reminder_fired';
1599
+ reminderId: string;
1600
+ label: string;
1601
+ message: string;
1602
+ }
1603
+
1604
+ export interface ScheduleComplete {
1605
+ type: 'schedule_complete';
1606
+ scheduleId: string;
1607
+ name: string;
1608
+ }
1609
+
1610
+ export interface WatcherNotification {
1611
+ type: 'watcher_notification';
1612
+ title: string;
1613
+ body: string;
1614
+ }
1615
+
1616
+ export interface WatcherEscalation {
1617
+ type: 'watcher_escalation';
1618
+ title: string;
1619
+ body: string;
1620
+ }
1621
+
1622
+ export interface WatchStarted {
1623
+ type: 'watch_started';
1624
+ sessionId: string;
1625
+ watchId: string;
1626
+ durationSeconds: number;
1627
+ intervalSeconds: number;
1628
+ }
1629
+
1630
+ export interface WatchCompleteRequest {
1631
+ type: 'watch_complete_request';
1632
+ sessionId: string;
1633
+ watchId: string;
1634
+ }
1635
+
1636
+ export type TraceEventKind =
1637
+ | 'request_received'
1638
+ | 'request_queued'
1639
+ | 'request_dequeued'
1640
+ | 'llm_call_started'
1641
+ | 'llm_call_finished'
1642
+ | 'assistant_message'
1643
+ | 'tool_started'
1644
+ | 'tool_permission_requested'
1645
+ | 'tool_permission_decided'
1646
+ | 'tool_finished'
1647
+ | 'tool_failed'
1648
+ | 'secret_detected'
1649
+ | 'generation_handoff'
1650
+ | 'message_complete'
1651
+ | 'generation_cancelled'
1652
+ | 'request_error'
1653
+ | 'tool_profiling_summary';
1654
+
1655
+ export interface TraceEvent {
1656
+ type: 'trace_event';
1657
+ eventId: string;
1658
+ sessionId: string;
1659
+ requestId?: string;
1660
+ timestampMs: number;
1661
+ sequence: number;
1662
+ kind: TraceEventKind;
1663
+ status?: 'info' | 'success' | 'warning' | 'error';
1664
+ summary: string;
1665
+ attributes?: Record<string, string | number | boolean | null>;
1666
+ }
1667
+
1668
+ /** Common fields shared by all UiSurfaceShow variants. */
1669
+ interface UiSurfaceShowBase {
1670
+ type: 'ui_surface_show';
1671
+ sessionId: string;
1672
+ surfaceId: string;
1673
+ title?: string;
1674
+ actions?: SurfaceAction[];
1675
+ display?: 'inline' | 'panel';
1676
+ /** The message ID that this surface belongs to (for history loading). */
1677
+ messageId?: string;
1678
+ }
1679
+
1680
+ export interface UiSurfaceShowCard extends UiSurfaceShowBase {
1681
+ surfaceType: 'card';
1682
+ data: CardSurfaceData;
1683
+ }
1684
+
1685
+ export interface UiSurfaceShowForm extends UiSurfaceShowBase {
1686
+ surfaceType: 'form';
1687
+ data: FormSurfaceData;
1688
+ }
1689
+
1690
+ export interface UiSurfaceShowList extends UiSurfaceShowBase {
1691
+ surfaceType: 'list';
1692
+ data: ListSurfaceData;
1693
+ }
1694
+
1695
+ export interface UiSurfaceShowConfirmation extends UiSurfaceShowBase {
1696
+ surfaceType: 'confirmation';
1697
+ data: ConfirmationSurfaceData;
1698
+ }
1699
+
1700
+ export interface UiSurfaceShowDynamicPage extends UiSurfaceShowBase {
1701
+ surfaceType: 'dynamic_page';
1702
+ data: DynamicPageSurfaceData;
1703
+ }
1704
+
1705
+ export interface UiSurfaceShowTable extends UiSurfaceShowBase {
1706
+ surfaceType: 'table';
1707
+ data: TableSurfaceData;
1708
+ }
1709
+
1710
+ export interface UiSurfaceShowFileUpload extends UiSurfaceShowBase {
1711
+ surfaceType: 'file_upload';
1712
+ data: FileUploadSurfaceData;
1713
+ }
1714
+
1715
+ export interface UiSurfaceShowBrowserView extends UiSurfaceShowBase {
1716
+ surfaceType: 'browser_view';
1717
+ data: BrowserViewSurfaceData;
1718
+ }
1719
+
1720
+ export interface UiSurfaceShowDocumentPreview extends UiSurfaceShowBase {
1721
+ surfaceType: 'document_preview';
1722
+ data: DocumentPreviewSurfaceData;
1723
+ }
1724
+
1725
+ export type UiSurfaceShow =
1726
+ | UiSurfaceShowCard
1727
+ | UiSurfaceShowForm
1728
+ | UiSurfaceShowList
1729
+ | UiSurfaceShowTable
1730
+ | UiSurfaceShowConfirmation
1731
+ | UiSurfaceShowDynamicPage
1732
+ | UiSurfaceShowFileUpload
1733
+ | UiSurfaceShowBrowserView
1734
+ | UiSurfaceShowDocumentPreview;
1735
+
1736
+ export interface UiSurfaceUpdate {
1737
+ type: 'ui_surface_update';
1738
+ sessionId: string;
1739
+ surfaceId: string;
1740
+ data: Partial<SurfaceData>;
1741
+ }
1742
+
1743
+ export interface UiSurfaceDismiss {
1744
+ type: 'ui_surface_dismiss';
1745
+ sessionId: string;
1746
+ surfaceId: string;
1747
+ }
1748
+
1749
+ export interface UiSurfaceComplete {
1750
+ type: 'ui_surface_complete';
1751
+ sessionId: string;
1752
+ surfaceId: string;
1753
+ summary: string;
1754
+ submittedData?: Record<string, unknown>;
1755
+ }
1756
+
1757
+ export interface UiSurfaceUndoResult {
1758
+ type: 'ui_surface_undo_result';
1759
+ sessionId: string;
1760
+ surfaceId: string;
1761
+ success: boolean;
1762
+ /** Number of remaining undo entries after this undo. */
1763
+ remainingUndos: number;
1764
+ }
1765
+
1766
+ // ── Document Editor Messages ────────────────────────────────────────
1767
+
1768
+ export interface DocumentEditorShow {
1769
+ type: 'document_editor_show';
1770
+ sessionId: string;
1771
+ surfaceId: string;
1772
+ title: string;
1773
+ initialContent: string;
1774
+ }
1775
+
1776
+ export interface DocumentEditorUpdate {
1777
+ type: 'document_editor_update';
1778
+ sessionId: string;
1779
+ surfaceId: string;
1780
+ markdown: string;
1781
+ mode: string;
1782
+ }
1783
+
1784
+ export interface DocumentSaveRequest {
1785
+ type: 'document_save';
1786
+ surfaceId: string;
1787
+ conversationId: string;
1788
+ title: string;
1789
+ content: string;
1790
+ wordCount: number;
1791
+ }
1792
+
1793
+ export interface DocumentSaveResponse {
1794
+ type: 'document_save_response';
1795
+ surfaceId: string;
1796
+ success: boolean;
1797
+ error?: string;
1798
+ }
1799
+
1800
+ export interface DocumentLoadRequest {
1801
+ type: 'document_load';
1802
+ surfaceId: string;
1803
+ }
1804
+
1805
+ export interface DocumentLoadResponse {
1806
+ type: 'document_load_response';
1807
+ surfaceId: string;
1808
+ conversationId: string;
1809
+ title: string;
1810
+ content: string;
1811
+ wordCount: number;
1812
+ createdAt: number;
1813
+ updatedAt: number;
1814
+ success: boolean;
1815
+ error?: string;
1816
+ }
1817
+
1818
+ export interface DocumentListRequest {
1819
+ type: 'document_list';
1820
+ conversationId?: string;
1821
+ }
1822
+
1823
+ export interface DocumentListResponse {
1824
+ type: 'document_list_response';
1825
+ documents: Array<{
1826
+ surfaceId: string;
1827
+ conversationId: string;
1828
+ title: string;
1829
+ wordCount: number;
1830
+ createdAt: number;
1831
+ updatedAt: number;
1832
+ }>;
1833
+ }
1834
+
1835
+ // ── Work Items (Tasks) — Server Responses ───────────────────────────
1836
+
1837
+ export interface WorkItemsListResponse {
1838
+ type: 'work_items_list_response';
1839
+ items: Array<{
1840
+ id: string;
1841
+ taskId: string;
1842
+ title: string;
1843
+ notes: string | null;
1844
+ status: string;
1845
+ priorityTier: number;
1846
+ sortIndex: number | null;
1847
+ lastRunId: string | null;
1848
+ lastRunConversationId: string | null;
1849
+ lastRunStatus: string | null;
1850
+ sourceType: string | null;
1851
+ sourceId: string | null;
1852
+ createdAt: number;
1853
+ updatedAt: number;
1854
+ }>;
1855
+ }
1856
+
1857
+ export interface WorkItemGetResponse {
1858
+ type: 'work_item_get_response';
1859
+ item: {
1860
+ id: string;
1861
+ taskId: string;
1862
+ title: string;
1863
+ notes: string | null;
1864
+ status: string;
1865
+ priorityTier: number;
1866
+ sortIndex: number | null;
1867
+ lastRunId: string | null;
1868
+ lastRunConversationId: string | null;
1869
+ lastRunStatus: string | null;
1870
+ sourceType: string | null;
1871
+ sourceId: string | null;
1872
+ createdAt: number;
1873
+ updatedAt: number;
1874
+ } | null;
1875
+ }
1876
+
1877
+ export interface WorkItemCreateResponse {
1878
+ type: 'work_item_create_response';
1879
+ item: {
1880
+ id: string;
1881
+ taskId: string;
1882
+ title: string;
1883
+ notes: string | null;
1884
+ status: string;
1885
+ priorityTier: number;
1886
+ sortIndex: number | null;
1887
+ lastRunId: string | null;
1888
+ lastRunConversationId: string | null;
1889
+ lastRunStatus: string | null;
1890
+ sourceType: string | null;
1891
+ sourceId: string | null;
1892
+ createdAt: number;
1893
+ updatedAt: number;
1894
+ };
1895
+ }
1896
+
1897
+ export interface WorkItemUpdateResponse {
1898
+ type: 'work_item_update_response';
1899
+ item: {
1900
+ id: string;
1901
+ taskId: string;
1902
+ title: string;
1903
+ notes: string | null;
1904
+ status: string;
1905
+ priorityTier: number;
1906
+ sortIndex: number | null;
1907
+ lastRunId: string | null;
1908
+ lastRunConversationId: string | null;
1909
+ lastRunStatus: string | null;
1910
+ sourceType: string | null;
1911
+ sourceId: string | null;
1912
+ createdAt: number;
1913
+ updatedAt: number;
1914
+ } | null;
1915
+ }
1916
+
1917
+ export interface WorkItemRunTaskResponse {
1918
+ type: 'work_item_run_task_response';
1919
+ id: string;
1920
+ lastRunId: string;
1921
+ success: boolean;
1922
+ error?: string;
1923
+ }
1924
+
1925
+ /** Server push — tells the client to open/focus the tasks window. */
1926
+ export interface OpenTasksWindow {
1927
+ type: 'open_tasks_window';
1928
+ }
1929
+
1930
+ /** Server push — broadcast when a work item status changes (e.g. running -> awaiting_review). */
1931
+ export interface WorkItemStatusChanged {
1932
+ type: 'work_item_status_changed';
1933
+ item: {
1934
+ id: string;
1935
+ taskId: string;
1936
+ title: string;
1937
+ status: string;
1938
+ lastRunId: string | null;
1939
+ lastRunConversationId: string | null;
1940
+ lastRunStatus: string | null;
1941
+ updatedAt: number;
1942
+ };
1943
+ }
1944
+
1945
+ export type ServerMessage =
1946
+ | AuthResult
1947
+ | UserMessageEcho
1948
+ | AssistantTextDelta
1949
+ | AssistantThinkingDelta
1950
+ | ToolUseStart
1951
+ | ToolOutputChunk
1952
+ | ToolInputDelta
1953
+ | ToolResult
1954
+ | ConfirmationRequest
1955
+ | SecretRequest
1956
+ | MessageComplete
1957
+ | SessionInfo
1958
+ | SessionListResponse
1959
+ | SessionsClearResponse
1960
+ | ErrorMessage
1961
+ | PongMessage
1962
+ | DaemonStatusMessage
1963
+ | GenerationCancelled
1964
+ | GenerationHandoff
1965
+ | ModelInfo
1966
+ | HistoryResponse
1967
+ | UndoComplete
1968
+ | UsageUpdate
1969
+ | UsageResponse
1970
+ | ContextCompacted
1971
+ | SecretDetected
1972
+ | MemoryRecalled
1973
+ | MemoryStatus
1974
+ | CuAction
1975
+ | CuComplete
1976
+ | CuError
1977
+ | SessionErrorMessage
1978
+ | TaskRouted
1979
+ | RideShotgunResult
1980
+ | UiSurfaceShow
1981
+ | UiSurfaceUpdate
1982
+ | UiSurfaceDismiss
1983
+ | UiSurfaceComplete
1984
+ | UiSurfaceUndoResult
1985
+ | AppDataResponse
1986
+ | SkillsListResponse
1987
+ | SkillDetailResponse
1988
+ | SkillStateChanged
1989
+ | SkillsOperationResponse
1990
+ | SkillsInspectResponse
1991
+ | SuggestionResponse
1992
+ | MessageQueued
1993
+ | MessageDequeued
1994
+ | MessageQueuedDeleted
1995
+ | ReminderFired
1996
+ | ScheduleComplete
1997
+ | WatcherNotification
1998
+ | WatcherEscalation
1999
+ | WatchStarted
2000
+ | WatchCompleteRequest
2001
+ | TrustRulesListResponse
2002
+ | AcceptStarterBundleResponse
2003
+ | SchedulesListResponse
2004
+ | RemindersListResponse
2005
+ | BundleAppResponse
2006
+ | AppsListResponse
2007
+ | HomeBaseGetResponse
2008
+ | SharedAppsListResponse
2009
+ | SharedAppDeleteResponse
2010
+ | ForkSharedAppResponse
2011
+ | OpenBundleResponse
2012
+ | SignBundlePayloadRequest
2013
+ | GetSigningIdentityRequest
2014
+ | IpcBlobProbeResult
2015
+ | ShareAppCloudResponse
2016
+ | TraceEvent
2017
+ | GalleryListResponse
2018
+ | GalleryInstallResponse
2019
+ | ShareToSlackResponse
2020
+ | SlackWebhookConfigResponse
2021
+ | VercelApiConfigResponse
2022
+ | OpenUrl
2023
+ | AppUpdatePreviewResponse
2024
+ | AppPreviewResponse
2025
+ | PublishPageResponse
2026
+ | UnpublishPageResponse
2027
+ | DiagnosticsExportResponse
2028
+ | AppFilesChanged
2029
+ | BrowserFrame
2030
+ | EnvVarsResponse
2031
+ | IntegrationListResponse
2032
+ | IntegrationConnectResult
2033
+ | DocumentEditorShow
2034
+ | DocumentEditorUpdate
2035
+ | DocumentSaveResponse
2036
+ | DocumentLoadResponse
2037
+ | DocumentListResponse
2038
+ | BrowserCDPRequest
2039
+ | BrowserInteractiveModeChanged
2040
+ | BrowserHandoffRequest
2041
+ | WorkItemsListResponse
2042
+ | WorkItemGetResponse
2043
+ | WorkItemCreateResponse
2044
+ | WorkItemUpdateResponse
2045
+ | WorkItemRunTaskResponse
2046
+ | WorkItemStatusChanged
2047
+ | OpenTasksWindow
2048
+ | SubagentSpawned
2049
+ | SubagentStatusChanged
2050
+ | SubagentEvent;
2051
+
2052
+ // === Subagent IPC ─────────────────────────────────────────────────────
2053
+
2054
+ export interface SubagentSpawned {
2055
+ type: 'subagent_spawned';
2056
+ subagentId: string;
2057
+ parentSessionId: string;
2058
+ label: string;
2059
+ objective: string;
2060
+ }
2061
+
2062
+ export interface SubagentStatusChanged {
2063
+ type: 'subagent_status_changed';
2064
+ subagentId: string;
2065
+ status: import('../subagent/types.js').SubagentStatus;
2066
+ error?: string;
2067
+ usage?: UsageStats;
2068
+ }
2069
+
2070
+ /** Wraps any ServerMessage emitted by a subagent session for routing to the client. */
2071
+ export interface SubagentEvent {
2072
+ type: 'subagent_event';
2073
+ subagentId: string;
2074
+ event: ServerMessage;
2075
+ }
2076
+
2077
+ // === Client → Server subagent messages ───────────────────────────────
2078
+
2079
+ export interface SubagentAbortRequest {
2080
+ type: 'subagent_abort';
2081
+ subagentId: string;
2082
+ }
2083
+
2084
+ export interface SubagentStatusRequest {
2085
+ type: 'subagent_status';
2086
+ /** If omitted, returns all subagents for the session. */
2087
+ subagentId?: string;
2088
+ sessionId: string;
2089
+ }
2090
+
2091
+ export interface SubagentMessageRequest {
2092
+ type: 'subagent_message';
2093
+ subagentId: string;
2094
+ content: string;
2095
+ }
2096
+
2097
+ // === Contract schema ===
2098
+
2099
+ export interface IPCContractSchema {
2100
+ client: ClientMessage;
2101
+ server: ServerMessage;
2102
+ }