@intentic/sandbox-contract 1.248.0 → 1.249.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 (877) hide show
  1. package/README.md +18 -15
  2. package/dist/chores/chores.d.ts.map +1 -1
  3. package/dist/chores/chores.js.map +1 -1
  4. package/dist/chores/digest.d.ts.map +1 -1
  5. package/dist/chores/digest.js.map +1 -1
  6. package/dist/chores/extension-update.d.ts.map +1 -1
  7. package/dist/chores/extension-update.js.map +1 -1
  8. package/dist/chores/fix-deps.d.ts.map +1 -1
  9. package/dist/chores/fix-deps.js.map +1 -1
  10. package/dist/chores/index.d.ts +2 -2
  11. package/dist/chores/index.d.ts.map +1 -1
  12. package/dist/chores/index.js +1 -1
  13. package/dist/chores/index.js.map +1 -1
  14. package/dist/chores/probes.d.ts.map +1 -1
  15. package/dist/chores/probes.js.map +1 -1
  16. package/dist/chores/prompt.d.ts.map +1 -1
  17. package/dist/chores/prompt.js.map +1 -1
  18. package/dist/chores/stack.d.ts.map +1 -1
  19. package/dist/chores/stack.js.map +1 -1
  20. package/dist/chores/verdict.d.ts +7 -1
  21. package/dist/chores/verdict.d.ts.map +1 -1
  22. package/dist/chores/verdict.js +8 -0
  23. package/dist/chores/verdict.js.map +1 -1
  24. package/dist/contracts/accounts.contract.d.ts.map +1 -1
  25. package/dist/contracts/accounts.contract.js.map +1 -1
  26. package/dist/contracts/activity.contract.d.ts +1 -0
  27. package/dist/contracts/activity.contract.d.ts.map +1 -1
  28. package/dist/contracts/agent.contract.d.ts +12 -205
  29. package/dist/contracts/agent.contract.d.ts.map +1 -1
  30. package/dist/contracts/agent.contract.js +2 -1
  31. package/dist/contracts/agent.contract.js.map +1 -1
  32. package/dist/contracts/agents.contract.d.ts +228 -54
  33. package/dist/contracts/agents.contract.d.ts.map +1 -1
  34. package/dist/contracts/agents.contract.js +11 -2
  35. package/dist/contracts/agents.contract.js.map +1 -1
  36. package/dist/contracts/automations.contract.d.ts +35 -17
  37. package/dist/contracts/automations.contract.d.ts.map +1 -1
  38. package/dist/contracts/automations.contract.js +10 -1
  39. package/dist/contracts/automations.contract.js.map +1 -1
  40. package/dist/contracts/capabilities.contract.d.ts +0 -12
  41. package/dist/contracts/capabilities.contract.d.ts.map +1 -1
  42. package/dist/contracts/capabilities.contract.js +1 -1
  43. package/dist/contracts/capabilities.contract.js.map +1 -1
  44. package/dist/contracts/chores.contract.d.ts.map +1 -1
  45. package/dist/contracts/chores.contract.js.map +1 -1
  46. package/dist/contracts/ci.contract.d.ts +9 -0
  47. package/dist/contracts/ci.contract.d.ts.map +1 -1
  48. package/dist/contracts/endpoints.contract.d.ts.map +1 -1
  49. package/dist/contracts/endpoints.contract.js.map +1 -1
  50. package/dist/contracts/exit.contract.d.ts.map +1 -1
  51. package/dist/contracts/exit.contract.js +1 -1
  52. package/dist/contracts/exit.contract.js.map +1 -1
  53. package/dist/contracts/extensions.contract.d.ts.map +1 -1
  54. package/dist/contracts/extensions.contract.js.map +1 -1
  55. package/dist/contracts/git.contract.d.ts +45 -6
  56. package/dist/contracts/git.contract.d.ts.map +1 -1
  57. package/dist/contracts/git.contract.js +9 -9
  58. package/dist/contracts/git.contract.js.map +1 -1
  59. package/dist/contracts/host.contract.d.ts +2 -0
  60. package/dist/contracts/host.contract.d.ts.map +1 -1
  61. package/dist/contracts/host.contract.js.map +1 -1
  62. package/dist/contracts/intentic.contract.js +1 -1
  63. package/dist/contracts/intentic.contract.js.map +1 -1
  64. package/dist/contracts/logs.contract.d.ts.map +1 -1
  65. package/dist/contracts/logs.contract.js.map +1 -1
  66. package/dist/contracts/loops.contract.d.ts.map +1 -1
  67. package/dist/contracts/loops.contract.js.map +1 -1
  68. package/dist/contracts/personas.contract.d.ts +1 -0
  69. package/dist/contracts/personas.contract.d.ts.map +1 -1
  70. package/dist/contracts/personas.contract.js +1 -1
  71. package/dist/contracts/personas.contract.js.map +1 -1
  72. package/dist/contracts/providers.contract.d.ts.map +1 -1
  73. package/dist/contracts/providers.contract.js.map +1 -1
  74. package/dist/contracts/runner.contract.d.ts +97 -171
  75. package/dist/contracts/runner.contract.d.ts.map +1 -1
  76. package/dist/contracts/runner.contract.js +2 -2
  77. package/dist/contracts/runner.contract.js.map +1 -1
  78. package/dist/contracts/safety.contract.d.ts.map +1 -1
  79. package/dist/contracts/safety.contract.js +1 -1
  80. package/dist/contracts/safety.contract.js.map +1 -1
  81. package/dist/contracts/secrets.contract.d.ts.map +1 -1
  82. package/dist/contracts/secrets.contract.js.map +1 -1
  83. package/dist/contracts/sessions.contract.d.ts +2 -41
  84. package/dist/contracts/sessions.contract.d.ts.map +1 -1
  85. package/dist/contracts/sessions.contract.js +1 -1
  86. package/dist/contracts/sessions.contract.js.map +1 -1
  87. package/dist/contracts/settings.contract.d.ts +8 -18
  88. package/dist/contracts/settings.contract.d.ts.map +1 -1
  89. package/dist/contracts/settings.contract.js.map +1 -1
  90. package/dist/contracts/share.contract.d.ts.map +1 -1
  91. package/dist/contracts/share.contract.js.map +1 -1
  92. package/dist/contracts/skills.contract.d.ts.map +1 -1
  93. package/dist/contracts/skills.contract.js.map +1 -1
  94. package/dist/contracts/system.contract.d.ts +49 -73
  95. package/dist/contracts/system.contract.d.ts.map +1 -1
  96. package/dist/contracts/system.contract.js +12 -2
  97. package/dist/contracts/system.contract.js.map +1 -1
  98. package/dist/contracts/usage.contract.d.ts.map +1 -1
  99. package/dist/contracts/usage.contract.js.map +1 -1
  100. package/dist/contracts/vpn.contract.d.ts.map +1 -1
  101. package/dist/contracts/vpn.contract.js +1 -1
  102. package/dist/contracts/vpn.contract.js.map +1 -1
  103. package/dist/contracts/webext.contract.d.ts.map +1 -1
  104. package/dist/contracts/webext.contract.js.map +1 -1
  105. package/dist/contracts/workflows.contract.d.ts +7 -6
  106. package/dist/contracts/workflows.contract.d.ts.map +1 -1
  107. package/dist/contracts/workflows.contract.js +12 -3
  108. package/dist/contracts/workflows.contract.js.map +1 -1
  109. package/dist/contracts/workspace.contract.d.ts.map +1 -1
  110. package/dist/contracts/workspace.contract.js.map +1 -1
  111. package/dist/events/agent-events.d.ts +1237 -0
  112. package/dist/events/agent-events.d.ts.map +1 -0
  113. package/dist/events/agent-events.js +226 -0
  114. package/dist/events/agent-events.js.map +1 -0
  115. package/dist/events/cards.d.ts +404 -0
  116. package/dist/events/cards.d.ts.map +1 -0
  117. package/dist/events/cards.js +179 -0
  118. package/dist/events/cards.js.map +1 -0
  119. package/dist/events/resume.d.ts +23 -0
  120. package/dist/events/resume.d.ts.map +1 -0
  121. package/dist/events/resume.js +31 -0
  122. package/dist/events/resume.js.map +1 -0
  123. package/dist/events/system-events.d.ts +615 -0
  124. package/dist/events/system-events.d.ts.map +1 -0
  125. package/dist/events/system-events.js +64 -0
  126. package/dist/events/system-events.js.map +1 -0
  127. package/dist/events/transcript.d.ts +1755 -0
  128. package/dist/events/transcript.d.ts.map +1 -0
  129. package/dist/events/transcript.js +205 -0
  130. package/dist/events/transcript.js.map +1 -0
  131. package/dist/ids/conversation-ids.d.ts +8 -0
  132. package/dist/ids/conversation-ids.d.ts.map +1 -0
  133. package/dist/{conversation-ids.js → ids/conversation-ids.js} +13 -0
  134. package/dist/ids/conversation-ids.js.map +1 -0
  135. package/dist/ids/hostnames.d.ts.map +1 -0
  136. package/dist/ids/hostnames.js.map +1 -0
  137. package/dist/ids/session-names.d.ts.map +1 -0
  138. package/dist/ids/session-names.js.map +1 -0
  139. package/dist/ids/share-paths.d.ts.map +1 -0
  140. package/dist/ids/share-paths.js.map +1 -0
  141. package/dist/{tunnel-ids.d.ts → ids/tunnel-ids.d.ts} +1 -0
  142. package/dist/ids/tunnel-ids.d.ts.map +1 -0
  143. package/dist/{tunnel-ids.js → ids/tunnel-ids.js} +1 -0
  144. package/dist/ids/tunnel-ids.js.map +1 -0
  145. package/dist/index.d.ts +423 -450
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +54 -46
  148. package/dist/index.js.map +1 -1
  149. package/dist/{agent-catalog.d.ts → models/agent-catalog.d.ts} +2 -2
  150. package/dist/models/agent-catalog.d.ts.map +1 -0
  151. package/dist/models/agent-catalog.js.map +1 -0
  152. package/dist/models/agent-runtimes.d.ts.map +1 -0
  153. package/dist/models/agent-runtimes.js.map +1 -0
  154. package/dist/{fast-tier.d.ts → models/fast-tier.d.ts} +1 -1
  155. package/dist/models/fast-tier.d.ts.map +1 -0
  156. package/dist/models/fast-tier.js.map +1 -0
  157. package/dist/models/model-order.d.ts.map +1 -0
  158. package/dist/models/model-order.js.map +1 -0
  159. package/dist/{model-pins.d.ts → models/model-pins.d.ts} +1 -1
  160. package/dist/models/model-pins.d.ts.map +1 -0
  161. package/dist/models/model-pins.js.map +1 -0
  162. package/dist/{model-roles.d.ts → models/model-roles.d.ts} +0 -33
  163. package/dist/models/model-roles.d.ts.map +1 -0
  164. package/dist/{model-roles.js → models/model-roles.js} +0 -35
  165. package/dist/models/model-roles.js.map +1 -0
  166. package/dist/{plan-pools.d.ts → models/plan-pools.d.ts} +1 -1
  167. package/dist/models/plan-pools.d.ts.map +1 -0
  168. package/dist/models/plan-pools.js.map +1 -0
  169. package/dist/models/prompt-complexity.d.ts.map +1 -0
  170. package/dist/models/prompt-complexity.js.map +1 -0
  171. package/dist/models/provider-specs.d.ts.map +1 -0
  172. package/dist/models/provider-specs.js.map +1 -0
  173. package/dist/policy/approvals-execution.d.ts.map +1 -0
  174. package/dist/policy/approvals-execution.js.map +1 -0
  175. package/dist/{batch-runs.d.ts → policy/batch-runs.d.ts} +5 -1
  176. package/dist/policy/batch-runs.d.ts.map +1 -0
  177. package/dist/{batch-runs.js → policy/batch-runs.js} +10 -7
  178. package/dist/policy/batch-runs.js.map +1 -0
  179. package/dist/policy/capability-env.d.ts.map +1 -0
  180. package/dist/policy/capability-env.js.map +1 -0
  181. package/dist/policy/capability-secrets.d.ts.map +1 -0
  182. package/dist/policy/capability-secrets.js.map +1 -0
  183. package/dist/{card-status.d.ts → policy/card-status.d.ts} +2 -2
  184. package/dist/policy/card-status.d.ts.map +1 -0
  185. package/dist/{card-status.js → policy/card-status.js} +1 -5
  186. package/dist/policy/card-status.js.map +1 -0
  187. package/dist/{command-classes.d.ts → policy/command-classes.d.ts} +6 -2
  188. package/dist/policy/command-classes.d.ts.map +1 -0
  189. package/dist/{command-classes.js → policy/command-classes.js} +48 -11
  190. package/dist/policy/command-classes.js.map +1 -0
  191. package/dist/{command-run.d.ts → policy/command-run.d.ts} +1 -1
  192. package/dist/policy/command-run.d.ts.map +1 -0
  193. package/dist/policy/command-run.js.map +1 -0
  194. package/dist/policy/control-scopes.d.ts +16 -0
  195. package/dist/policy/control-scopes.d.ts.map +1 -0
  196. package/dist/policy/control-scopes.js +26 -0
  197. package/dist/policy/control-scopes.js.map +1 -0
  198. package/dist/policy/credential-material.d.ts.map +1 -0
  199. package/dist/policy/credential-material.js.map +1 -0
  200. package/dist/policy/needs-action.d.ts.map +1 -0
  201. package/dist/policy/needs-action.js.map +1 -0
  202. package/dist/policy/output-fields.d.ts.map +1 -0
  203. package/dist/policy/output-fields.js.map +1 -0
  204. package/dist/policy/overlay-lint.d.ts.map +1 -0
  205. package/dist/policy/overlay-lint.js.map +1 -0
  206. package/dist/policy/owner-ticket.d.ts.map +1 -0
  207. package/dist/{owner-ticket.js → policy/owner-ticket.js} +1 -1
  208. package/dist/policy/owner-ticket.js.map +1 -0
  209. package/dist/{safety-policy.d.ts → policy/safety-policy.d.ts} +6 -5
  210. package/dist/policy/safety-policy.d.ts.map +1 -0
  211. package/dist/{safety-policy.js → policy/safety-policy.js} +12 -12
  212. package/dist/policy/safety-policy.js.map +1 -0
  213. package/dist/policy/search-globs.d.ts.map +1 -0
  214. package/dist/policy/search-globs.js.map +1 -0
  215. package/dist/protocol/container-requirements.d.ts +20 -0
  216. package/dist/protocol/container-requirements.d.ts.map +1 -0
  217. package/dist/protocol/container-requirements.js +23 -0
  218. package/dist/protocol/container-requirements.js.map +1 -0
  219. package/dist/{host-protocol.d.ts → protocol/host-protocol.d.ts} +1 -0
  220. package/dist/protocol/host-protocol.d.ts.map +1 -0
  221. package/dist/{host-protocol.js → protocol/host-protocol.js} +1 -0
  222. package/dist/protocol/host-protocol.js.map +1 -0
  223. package/dist/protocol/ingress-contract.d.ts.map +1 -0
  224. package/dist/{ingress-contract.js → protocol/ingress-contract.js} +1 -1
  225. package/dist/protocol/ingress-contract.js.map +1 -0
  226. package/dist/protocol/ingress-protocol.d.ts.map +1 -0
  227. package/dist/protocol/ingress-protocol.js.map +1 -0
  228. package/dist/protocol/listener-protocol.d.ts.map +1 -0
  229. package/dist/{listener-protocol.js → protocol/listener-protocol.js} +1 -1
  230. package/dist/protocol/listener-protocol.js.map +1 -0
  231. package/dist/{peer-dial.d.ts → protocol/peer-dial.d.ts} +4 -1
  232. package/dist/protocol/peer-dial.d.ts.map +1 -0
  233. package/dist/{peer-dial.js → protocol/peer-dial.js} +51 -10
  234. package/dist/protocol/peer-dial.js.map +1 -0
  235. package/dist/protocol/peer-mcp-server.d.ts.map +1 -0
  236. package/dist/protocol/peer-mcp-server.js.map +1 -0
  237. package/dist/protocol/request-id.d.ts.map +1 -0
  238. package/dist/protocol/request-id.js.map +1 -0
  239. package/dist/protocol/routes.d.ts.map +1 -0
  240. package/dist/protocol/routes.js.map +1 -0
  241. package/dist/{runner-protocol.d.ts → protocol/runner-protocol.d.ts} +1 -0
  242. package/dist/protocol/runner-protocol.d.ts.map +1 -0
  243. package/dist/{runner-protocol.js → protocol/runner-protocol.js} +2 -1
  244. package/dist/protocol/runner-protocol.js.map +1 -0
  245. package/dist/protocol/sse.d.ts.map +1 -0
  246. package/dist/protocol/sse.js.map +1 -0
  247. package/dist/{terminal-protocol.d.ts → protocol/terminal-protocol.d.ts} +1 -3
  248. package/dist/protocol/terminal-protocol.d.ts.map +1 -0
  249. package/dist/protocol/terminal-protocol.js.map +1 -0
  250. package/dist/protocol/webext-links.d.ts.map +1 -0
  251. package/dist/protocol/webext-links.js.map +1 -0
  252. package/dist/{webext-protocol.d.ts → protocol/webext-protocol.d.ts} +1 -0
  253. package/dist/protocol/webext-protocol.d.ts.map +1 -0
  254. package/dist/{webext-protocol.js → protocol/webext-protocol.js} +1 -0
  255. package/dist/protocol/webext-protocol.js.map +1 -0
  256. package/dist/schemas/activity.d.ts +2 -0
  257. package/dist/schemas/activity.d.ts.map +1 -1
  258. package/dist/schemas/activity.js +4 -0
  259. package/dist/schemas/activity.js.map +1 -1
  260. package/dist/schemas/agent.d.ts +16 -4
  261. package/dist/schemas/agent.d.ts.map +1 -1
  262. package/dist/schemas/agent.js +21 -4
  263. package/dist/schemas/agent.js.map +1 -1
  264. package/dist/schemas/agents.d.ts +17 -4
  265. package/dist/schemas/agents.d.ts.map +1 -1
  266. package/dist/schemas/agents.js +15 -4
  267. package/dist/schemas/agents.js.map +1 -1
  268. package/dist/schemas/approvals.d.ts.map +1 -1
  269. package/dist/schemas/approvals.js.map +1 -1
  270. package/dist/schemas/automations.d.ts +54 -28
  271. package/dist/schemas/automations.d.ts.map +1 -1
  272. package/dist/schemas/automations.js +26 -8
  273. package/dist/schemas/automations.js.map +1 -1
  274. package/dist/schemas/capabilities.d.ts +0 -8
  275. package/dist/schemas/capabilities.d.ts.map +1 -1
  276. package/dist/schemas/capabilities.js +0 -4
  277. package/dist/schemas/capabilities.js.map +1 -1
  278. package/dist/schemas/ci.d.ts +10 -0
  279. package/dist/schemas/ci.d.ts.map +1 -1
  280. package/dist/schemas/ci.js +9 -1
  281. package/dist/schemas/ci.js.map +1 -1
  282. package/dist/schemas/codebase-health.d.ts.map +1 -1
  283. package/dist/schemas/codebase-health.js.map +1 -1
  284. package/dist/schemas/devices.d.ts +90 -0
  285. package/dist/schemas/devices.d.ts.map +1 -1
  286. package/dist/schemas/devices.js +10 -1
  287. package/dist/schemas/devices.js.map +1 -1
  288. package/dist/schemas/engines.d.ts.map +1 -1
  289. package/dist/schemas/engines.js.map +1 -1
  290. package/dist/schemas/environment.d.ts.map +1 -1
  291. package/dist/schemas/environment.js.map +1 -1
  292. package/dist/schemas/exit.d.ts.map +1 -1
  293. package/dist/schemas/exit.js.map +1 -1
  294. package/dist/schemas/extension-updates.d.ts.map +1 -1
  295. package/dist/schemas/extension-updates.js.map +1 -1
  296. package/dist/schemas/git-history.d.ts.map +1 -1
  297. package/dist/schemas/git-history.js.map +1 -1
  298. package/dist/schemas/git.d.ts +80 -16
  299. package/dist/schemas/git.d.ts.map +1 -1
  300. package/dist/schemas/git.js +37 -25
  301. package/dist/schemas/git.js.map +1 -1
  302. package/dist/schemas/history.d.ts.map +1 -1
  303. package/dist/schemas/history.js.map +1 -1
  304. package/dist/schemas/hosts.d.ts.map +1 -1
  305. package/dist/schemas/hosts.js.map +1 -1
  306. package/dist/schemas/inventory.d.ts.map +1 -1
  307. package/dist/schemas/inventory.js.map +1 -1
  308. package/dist/schemas/issues.d.ts +0 -1
  309. package/dist/schemas/issues.d.ts.map +1 -1
  310. package/dist/schemas/issues.js +0 -1
  311. package/dist/schemas/issues.js.map +1 -1
  312. package/dist/schemas/logs.d.ts.map +1 -1
  313. package/dist/schemas/logs.js.map +1 -1
  314. package/dist/schemas/loops.d.ts.map +1 -1
  315. package/dist/schemas/loops.js +1 -1
  316. package/dist/schemas/loops.js.map +1 -1
  317. package/dist/schemas/maintenance.d.ts.map +1 -1
  318. package/dist/schemas/maintenance.js.map +1 -1
  319. package/dist/schemas/marketplace.d.ts +0 -4
  320. package/dist/schemas/marketplace.d.ts.map +1 -1
  321. package/dist/schemas/panels.d.ts.map +1 -1
  322. package/dist/schemas/panels.js.map +1 -1
  323. package/dist/schemas/personas.d.ts +2 -1
  324. package/dist/schemas/personas.d.ts.map +1 -1
  325. package/dist/schemas/personas.js +6 -2
  326. package/dist/schemas/personas.js.map +1 -1
  327. package/dist/schemas/plan-limits.d.ts +2 -4
  328. package/dist/schemas/plan-limits.d.ts.map +1 -1
  329. package/dist/schemas/plan-limits.js +5 -8
  330. package/dist/schemas/plan-limits.js.map +1 -1
  331. package/dist/schemas/ports.d.ts.map +1 -1
  332. package/dist/schemas/ports.js.map +1 -1
  333. package/dist/schemas/provider-oauth.d.ts.map +1 -1
  334. package/dist/schemas/provider-oauth.js.map +1 -1
  335. package/dist/schemas/provider-subscriptions.d.ts +1 -1
  336. package/dist/schemas/provider-subscriptions.d.ts.map +1 -1
  337. package/dist/schemas/provider-subscriptions.js +1 -1
  338. package/dist/schemas/provider-subscriptions.js.map +1 -1
  339. package/dist/schemas/public.d.ts.map +1 -1
  340. package/dist/schemas/public.js.map +1 -1
  341. package/dist/schemas/push.d.ts.map +1 -1
  342. package/dist/schemas/push.js.map +1 -1
  343. package/dist/schemas/secrets.d.ts.map +1 -1
  344. package/dist/schemas/secrets.js.map +1 -1
  345. package/dist/schemas/settings.d.ts +6 -9
  346. package/dist/schemas/settings.d.ts.map +1 -1
  347. package/dist/schemas/settings.js +16 -5
  348. package/dist/schemas/settings.js.map +1 -1
  349. package/dist/schemas/share.d.ts.map +1 -1
  350. package/dist/schemas/share.js.map +1 -1
  351. package/dist/schemas/shared.d.ts +4 -0
  352. package/dist/schemas/shared.d.ts.map +1 -1
  353. package/dist/schemas/shared.js +3 -0
  354. package/dist/schemas/shared.js.map +1 -1
  355. package/dist/schemas/system.d.ts +6 -0
  356. package/dist/schemas/system.d.ts.map +1 -1
  357. package/dist/schemas/system.js +10 -0
  358. package/dist/schemas/system.js.map +1 -1
  359. package/dist/schemas/terminal.d.ts.map +1 -1
  360. package/dist/schemas/terminal.js.map +1 -1
  361. package/dist/schemas/usage.d.ts.map +1 -1
  362. package/dist/schemas/usage.js.map +1 -1
  363. package/dist/schemas/vpn.d.ts.map +1 -1
  364. package/dist/schemas/vpn.js.map +1 -1
  365. package/dist/schemas/webext.d.ts.map +1 -1
  366. package/dist/schemas/webext.js.map +1 -1
  367. package/dist/schemas/workflows.d.ts +66 -9
  368. package/dist/schemas/workflows.d.ts.map +1 -1
  369. package/dist/schemas/workflows.js +6 -5
  370. package/dist/schemas/workflows.js.map +1 -1
  371. package/dist/schemas/workspace-repos.d.ts.map +1 -1
  372. package/dist/schemas/workspace-repos.js.map +1 -1
  373. package/dist/schemas/workspace-search.d.ts.map +1 -1
  374. package/dist/schemas/workspace-search.js.map +1 -1
  375. package/dist/schemas/workspace-setup.d.ts.map +1 -1
  376. package/dist/schemas/workspace-setup.js.map +1 -1
  377. package/dist/schemas/workspace-tree.d.ts.map +1 -1
  378. package/dist/schemas/workspace-tree.js.map +1 -1
  379. package/dist/state/arrival.d.ts.map +1 -0
  380. package/dist/{arrival.js → state/arrival.js} +1 -1
  381. package/dist/state/arrival.js.map +1 -0
  382. package/dist/state/contract-lock.d.ts.map +1 -0
  383. package/dist/{contract-lock.js → state/contract-lock.js} +1 -1
  384. package/dist/state/contract-lock.js.map +1 -0
  385. package/dist/{definition.d.ts → state/definition.d.ts} +21 -17
  386. package/dist/state/definition.d.ts.map +1 -0
  387. package/dist/{definition.js → state/definition.js} +4 -4
  388. package/dist/state/definition.js.map +1 -0
  389. package/dist/state/history-state.d.ts.map +1 -0
  390. package/dist/{history-state.js → state/history-state.js} +1 -0
  391. package/dist/state/history-state.js.map +1 -0
  392. package/dist/state/runtime-state.d.ts.map +1 -0
  393. package/dist/state/runtime-state.js.map +1 -0
  394. package/dist/state/starter.d.ts.map +1 -0
  395. package/dist/state/starter.js.map +1 -0
  396. package/dist/state/state-portability.d.ts.map +1 -0
  397. package/dist/state/state-portability.js.map +1 -0
  398. package/dist/state/versions.d.ts.map +1 -0
  399. package/dist/state/versions.js.map +1 -0
  400. package/dist/{workspace-state.d.ts → state/workspace-state.d.ts} +8 -0
  401. package/dist/state/workspace-state.d.ts.map +1 -0
  402. package/dist/{workspace-state.js → state/workspace-state.js} +25 -0
  403. package/dist/state/workspace-state.js.map +1 -0
  404. package/dist/{documents.d.ts → text/documents.d.ts} +1 -1
  405. package/dist/text/documents.d.ts.map +1 -0
  406. package/dist/{documents.js → text/documents.js} +1 -1
  407. package/dist/text/documents.js.map +1 -0
  408. package/dist/text/embed.d.ts.map +1 -0
  409. package/dist/text/embed.js.map +1 -0
  410. package/dist/text/mentions.d.ts.map +1 -0
  411. package/dist/text/mentions.js.map +1 -0
  412. package/dist/text/model-answer.d.ts +3 -0
  413. package/dist/text/model-answer.d.ts.map +1 -0
  414. package/dist/text/model-answer.js +3 -0
  415. package/dist/text/model-answer.js.map +1 -0
  416. package/dist/text/path-refs.d.ts.map +1 -0
  417. package/dist/text/path-refs.js.map +1 -0
  418. package/dist/{shell-regions.d.ts → text/shell-regions.d.ts} +1 -1
  419. package/dist/text/shell-regions.d.ts.map +1 -0
  420. package/dist/text/shell-regions.js.map +1 -0
  421. package/dist/text/title.d.ts.map +1 -0
  422. package/dist/text/title.js.map +1 -0
  423. package/dist/{transcript-fold.d.ts → text/transcript-fold.d.ts} +2 -1
  424. package/dist/text/transcript-fold.d.ts.map +1 -0
  425. package/dist/{transcript-fold.js → text/transcript-fold.js} +2 -16
  426. package/dist/text/transcript-fold.js.map +1 -0
  427. package/dist/text/whisper.d.ts +3 -0
  428. package/dist/text/whisper.d.ts.map +1 -0
  429. package/dist/text/whisper.js +11 -0
  430. package/dist/text/whisper.js.map +1 -0
  431. package/dist/{workflow-faults.d.ts → text/workflow-faults.d.ts} +1 -1
  432. package/dist/text/workflow-faults.d.ts.map +1 -0
  433. package/dist/{workflow-faults.js → text/workflow-faults.js} +1 -1
  434. package/dist/text/workflow-faults.js.map +1 -0
  435. package/package.json +70 -70
  436. package/src/chores/chores.test.ts +4 -10
  437. package/src/chores/chores.ts +148 -392
  438. package/src/chores/digest.ts +8 -28
  439. package/src/chores/extension-update.ts +3 -8
  440. package/src/chores/fix-deps.ts +4 -18
  441. package/src/chores/index.ts +2 -2
  442. package/src/chores/probes.test.ts +7 -43
  443. package/src/chores/probes.ts +62 -167
  444. package/src/chores/prompt.ts +10 -34
  445. package/src/chores/stack.test.ts +6 -45
  446. package/src/chores/stack.ts +27 -118
  447. package/src/chores/verdict.test.ts +101 -80
  448. package/src/chores/verdict.ts +54 -99
  449. package/src/contracts/accounts.contract.ts +4 -19
  450. package/src/contracts/agent.contract.ts +7 -22
  451. package/src/contracts/agents.contract.ts +25 -71
  452. package/src/contracts/automations.contract.ts +14 -30
  453. package/src/contracts/capabilities.contract.ts +8 -35
  454. package/src/contracts/chores.contract.ts +4 -15
  455. package/src/contracts/endpoints.contract.ts +5 -22
  456. package/src/contracts/exit.contract.ts +7 -30
  457. package/src/contracts/extensions.contract.ts +8 -30
  458. package/src/contracts/git.contract.ts +25 -49
  459. package/src/contracts/host.contract.ts +9 -44
  460. package/src/contracts/intentic.contract.ts +1 -1
  461. package/src/contracts/logs.contract.ts +3 -13
  462. package/src/contracts/loops.contract.ts +9 -40
  463. package/src/contracts/personas.contract.ts +10 -35
  464. package/src/contracts/providers.contract.ts +4 -17
  465. package/src/contracts/runner.contract.ts +12 -39
  466. package/src/contracts/safety.contract.ts +5 -14
  467. package/src/contracts/secrets.contract.ts +4 -22
  468. package/src/contracts/sessions.contract.ts +1 -1
  469. package/src/contracts/settings.contract.ts +4 -10
  470. package/src/contracts/share.contract.ts +3 -9
  471. package/src/contracts/skills.contract.ts +4 -15
  472. package/src/contracts/system.contract.ts +26 -52
  473. package/src/contracts/usage.contract.ts +7 -21
  474. package/src/contracts/vpn.contract.ts +9 -16
  475. package/src/contracts/webext.contract.ts +9 -25
  476. package/src/contracts/workflows.contract.ts +34 -58
  477. package/src/contracts/workspace.contract.ts +19 -50
  478. package/src/events/agent-events.ts +345 -0
  479. package/src/events/cards.ts +286 -0
  480. package/src/{events.test.ts → events/resume.test.ts} +4 -19
  481. package/src/events/resume.ts +60 -0
  482. package/src/events/system-events.ts +139 -0
  483. package/src/events/transcript.ts +320 -0
  484. package/src/{conversation-ids.test.ts → ids/conversation-ids.test.ts} +25 -13
  485. package/src/ids/conversation-ids.ts +178 -0
  486. package/src/ids/hostnames.ts +129 -0
  487. package/src/ids/session-names.ts +29 -0
  488. package/src/ids/share-paths.ts +43 -0
  489. package/src/{tunnel-ids.test.ts → ids/tunnel-ids.test.ts} +1 -14
  490. package/src/ids/tunnel-ids.ts +29 -0
  491. package/src/index.ts +71 -87
  492. package/src/{agent-catalog.test.ts → models/agent-catalog.test.ts} +19 -93
  493. package/src/models/agent-catalog.ts +174 -0
  494. package/src/models/agent-runtimes.ts +201 -0
  495. package/src/models/capability-ledger.test.ts +84 -0
  496. package/src/{fast-tier.test.ts → models/fast-tier.test.ts} +7 -18
  497. package/src/models/fast-tier.ts +36 -0
  498. package/src/{model-order.test.ts → models/model-order.test.ts} +19 -40
  499. package/src/models/model-order.ts +163 -0
  500. package/src/{model-pins.test.ts → models/model-pins.test.ts} +12 -46
  501. package/src/models/model-pins.ts +57 -0
  502. package/src/models/model-roles.test.ts +38 -0
  503. package/src/models/model-roles.ts +180 -0
  504. package/src/{plan-pools.test.ts → models/plan-pools.test.ts} +6 -11
  505. package/src/models/plan-pools.ts +65 -0
  506. package/src/{prompt-complexity.test.ts → models/prompt-complexity.test.ts} +8 -60
  507. package/src/models/prompt-complexity.ts +215 -0
  508. package/src/{provider-specs.test.ts → models/provider-specs.test.ts} +18 -47
  509. package/src/models/provider-specs.ts +272 -0
  510. package/src/policy/approvals-execution.ts +58 -0
  511. package/src/{batch-runs.test.ts → policy/batch-runs.test.ts} +4 -20
  512. package/src/policy/batch-runs.ts +137 -0
  513. package/src/policy/capability-secrets.ts +5 -0
  514. package/src/{card-status.ts → policy/card-status.ts} +11 -26
  515. package/src/{command-classes.test.ts → policy/command-classes.test.ts} +11 -118
  516. package/src/policy/command-classes.ts +395 -0
  517. package/src/policy/command-run.ts +65 -0
  518. package/src/policy/control-scopes.ts +38 -0
  519. package/src/{credential-material.test.ts → policy/credential-material.test.ts} +4 -26
  520. package/src/policy/credential-material.ts +91 -0
  521. package/src/policy/needs-action.ts +5 -0
  522. package/src/policy/output-fields.ts +86 -0
  523. package/src/policy/overlay-lint.ts +100 -0
  524. package/src/{owner-ticket.test.ts → policy/owner-ticket.test.ts} +1 -1
  525. package/src/{owner-ticket.ts → policy/owner-ticket.ts} +9 -31
  526. package/src/policy/safety-policy.test.ts +84 -0
  527. package/src/policy/safety-policy.ts +142 -0
  528. package/src/policy/search-globs.ts +60 -0
  529. package/src/protocol/container-requirements.test.ts +72 -0
  530. package/src/protocol/container-requirements.ts +58 -0
  531. package/src/protocol/host-protocol.ts +29 -0
  532. package/src/protocol/ingress-contract.ts +103 -0
  533. package/src/{ingress-protocol.test.ts → protocol/ingress-protocol.test.ts} +25 -90
  534. package/src/protocol/ingress-protocol.ts +441 -0
  535. package/src/protocol/listener-protocol.ts +75 -0
  536. package/src/{peer-dial.test.ts → protocol/peer-dial.test.ts} +52 -1
  537. package/src/protocol/peer-dial.ts +207 -0
  538. package/src/{peer-mcp-server.ts → protocol/peer-mcp-server.ts} +16 -41
  539. package/src/protocol/request-id.ts +5 -0
  540. package/src/{routes.test.ts → protocol/routes.test.ts} +14 -22
  541. package/src/protocol/routes.ts +159 -0
  542. package/src/protocol/runner-protocol.ts +197 -0
  543. package/src/protocol/terminal-protocol.ts +13 -0
  544. package/src/protocol/webext-links.ts +50 -0
  545. package/src/protocol/webext-protocol.ts +24 -0
  546. package/src/schemas/activity.ts +22 -30
  547. package/src/schemas/agent.ts +130 -238
  548. package/src/schemas/agents.ts +165 -483
  549. package/src/schemas/approvals.ts +23 -71
  550. package/src/schemas/automations.ts +142 -250
  551. package/src/schemas/capabilities.ts +127 -414
  552. package/src/schemas/ci.ts +56 -108
  553. package/src/schemas/codebase-health.ts +7 -11
  554. package/src/schemas/devices.ts +98 -321
  555. package/src/schemas/engines.ts +16 -44
  556. package/src/schemas/environment.ts +41 -91
  557. package/src/schemas/exit.ts +24 -81
  558. package/src/schemas/extension-updates.ts +42 -87
  559. package/src/schemas/git-history.ts +30 -84
  560. package/src/schemas/git.ts +141 -256
  561. package/src/schemas/history.ts +14 -40
  562. package/src/schemas/hosts.ts +9 -15
  563. package/src/schemas/inventory.ts +8 -10
  564. package/src/schemas/issues.ts +66 -134
  565. package/src/schemas/logs.ts +15 -34
  566. package/src/schemas/loops.ts +46 -163
  567. package/src/schemas/maintenance.ts +47 -172
  568. package/src/schemas/panels.ts +20 -45
  569. package/src/schemas/personas.ts +50 -200
  570. package/src/schemas/plan-limits.ts +58 -197
  571. package/src/schemas/ports.ts +14 -32
  572. package/src/schemas/provider-oauth.ts +23 -76
  573. package/src/schemas/provider-subscriptions.ts +4 -13
  574. package/src/schemas/public.ts +4 -15
  575. package/src/schemas/push.ts +8 -36
  576. package/src/schemas/secrets.ts +20 -64
  577. package/src/schemas/settings.ts +175 -600
  578. package/src/schemas/share.ts +14 -32
  579. package/src/schemas/shared.ts +14 -13
  580. package/src/schemas/system.ts +46 -78
  581. package/src/schemas/terminal.ts +41 -120
  582. package/src/schemas/usage.ts +44 -233
  583. package/src/schemas/version-seam.test.ts +9 -26
  584. package/src/schemas/vpn.ts +27 -64
  585. package/src/schemas/webext.ts +22 -53
  586. package/src/schemas/workflows.ts +57 -183
  587. package/src/schemas/workspace-repos.ts +12 -24
  588. package/src/schemas/workspace-search.ts +17 -35
  589. package/src/schemas/workspace-setup.ts +4 -11
  590. package/src/schemas/workspace-tree.ts +32 -91
  591. package/src/state/arrival.ts +109 -0
  592. package/src/state/contract-lock.test.ts +17 -0
  593. package/src/state/contract-lock.ts +49 -0
  594. package/src/state/definition.ts +143 -0
  595. package/src/state/history-state.ts +103 -0
  596. package/src/{runtime-state.test.ts → state/runtime-state.test.ts} +3 -10
  597. package/src/state/runtime-state.ts +62 -0
  598. package/src/state/starter.ts +5 -0
  599. package/src/state/state-portability.ts +27 -0
  600. package/src/state/versions.ts +26 -0
  601. package/src/{workspace-state.test.ts → state/workspace-state.test.ts} +65 -172
  602. package/src/state/workspace-state.ts +669 -0
  603. package/src/{documents.test.ts → text/documents.test.ts} +1 -1
  604. package/src/text/documents.ts +42 -0
  605. package/src/text/embed.ts +132 -0
  606. package/src/text/mentions.ts +21 -0
  607. package/src/text/model-answer.ts +9 -0
  608. package/src/text/path-refs.ts +39 -0
  609. package/src/text/shell-regions.ts +224 -0
  610. package/src/{title.test.ts → text/title.test.ts} +13 -32
  611. package/src/text/title.ts +202 -0
  612. package/src/{transcript-fold.test.ts → text/transcript-fold.test.ts} +5 -83
  613. package/src/{transcript-fold.ts → text/transcript-fold.ts} +65 -170
  614. package/src/text/whisper.test.ts +19 -0
  615. package/src/text/whisper.ts +17 -0
  616. package/src/{workflow-faults.test.ts → text/workflow-faults.test.ts} +6 -24
  617. package/src/{workflow-faults.ts → text/workflow-faults.ts} +20 -60
  618. package/dist/agent-catalog.d.ts.map +0 -1
  619. package/dist/agent-catalog.js.map +0 -1
  620. package/dist/agent-runtimes.d.ts.map +0 -1
  621. package/dist/agent-runtimes.js.map +0 -1
  622. package/dist/approvals-execution.d.ts.map +0 -1
  623. package/dist/approvals-execution.js.map +0 -1
  624. package/dist/arrival.d.ts.map +0 -1
  625. package/dist/arrival.js.map +0 -1
  626. package/dist/batch-runs.d.ts.map +0 -1
  627. package/dist/batch-runs.js.map +0 -1
  628. package/dist/capability-env.d.ts.map +0 -1
  629. package/dist/capability-env.js.map +0 -1
  630. package/dist/capability-secrets.d.ts.map +0 -1
  631. package/dist/capability-secrets.js.map +0 -1
  632. package/dist/card-status.d.ts.map +0 -1
  633. package/dist/card-status.js.map +0 -1
  634. package/dist/command-classes.d.ts.map +0 -1
  635. package/dist/command-classes.js.map +0 -1
  636. package/dist/command-run.d.ts.map +0 -1
  637. package/dist/command-run.js.map +0 -1
  638. package/dist/contract-lock.d.ts.map +0 -1
  639. package/dist/contract-lock.js.map +0 -1
  640. package/dist/conversation-ids.d.ts +0 -4
  641. package/dist/conversation-ids.d.ts.map +0 -1
  642. package/dist/conversation-ids.js.map +0 -1
  643. package/dist/credential-material.d.ts.map +0 -1
  644. package/dist/credential-material.js.map +0 -1
  645. package/dist/definition.d.ts.map +0 -1
  646. package/dist/definition.js.map +0 -1
  647. package/dist/documents.d.ts.map +0 -1
  648. package/dist/documents.js.map +0 -1
  649. package/dist/embed.d.ts.map +0 -1
  650. package/dist/embed.js.map +0 -1
  651. package/dist/events.d.ts +0 -4336
  652. package/dist/events.d.ts.map +0 -1
  653. package/dist/events.js +0 -725
  654. package/dist/events.js.map +0 -1
  655. package/dist/fast-tier.d.ts.map +0 -1
  656. package/dist/fast-tier.js.map +0 -1
  657. package/dist/history-state.d.ts.map +0 -1
  658. package/dist/history-state.js.map +0 -1
  659. package/dist/host-protocol.d.ts.map +0 -1
  660. package/dist/host-protocol.js.map +0 -1
  661. package/dist/hostnames.d.ts.map +0 -1
  662. package/dist/hostnames.js.map +0 -1
  663. package/dist/ingress-contract.d.ts.map +0 -1
  664. package/dist/ingress-contract.js.map +0 -1
  665. package/dist/ingress-protocol.d.ts.map +0 -1
  666. package/dist/ingress-protocol.js.map +0 -1
  667. package/dist/listener-protocol.d.ts.map +0 -1
  668. package/dist/listener-protocol.js.map +0 -1
  669. package/dist/mentions.d.ts.map +0 -1
  670. package/dist/mentions.js.map +0 -1
  671. package/dist/model-order.d.ts.map +0 -1
  672. package/dist/model-order.js.map +0 -1
  673. package/dist/model-pins.d.ts.map +0 -1
  674. package/dist/model-pins.js.map +0 -1
  675. package/dist/model-roles.d.ts.map +0 -1
  676. package/dist/model-roles.js.map +0 -1
  677. package/dist/needs-action.d.ts.map +0 -1
  678. package/dist/needs-action.js.map +0 -1
  679. package/dist/output-fields.d.ts.map +0 -1
  680. package/dist/output-fields.js.map +0 -1
  681. package/dist/overlay-lint.d.ts.map +0 -1
  682. package/dist/overlay-lint.js.map +0 -1
  683. package/dist/owner-ticket.d.ts.map +0 -1
  684. package/dist/owner-ticket.js.map +0 -1
  685. package/dist/path-refs.d.ts.map +0 -1
  686. package/dist/path-refs.js.map +0 -1
  687. package/dist/peer-dial.d.ts.map +0 -1
  688. package/dist/peer-dial.js.map +0 -1
  689. package/dist/peer-mcp-server.d.ts.map +0 -1
  690. package/dist/peer-mcp-server.js.map +0 -1
  691. package/dist/plan-pools.d.ts.map +0 -1
  692. package/dist/plan-pools.js.map +0 -1
  693. package/dist/prompt-complexity.d.ts.map +0 -1
  694. package/dist/prompt-complexity.js.map +0 -1
  695. package/dist/provider-specs.d.ts.map +0 -1
  696. package/dist/provider-specs.js.map +0 -1
  697. package/dist/request-id.d.ts.map +0 -1
  698. package/dist/request-id.js.map +0 -1
  699. package/dist/routes.d.ts.map +0 -1
  700. package/dist/routes.js.map +0 -1
  701. package/dist/runner-protocol.d.ts.map +0 -1
  702. package/dist/runner-protocol.js.map +0 -1
  703. package/dist/runtime-state.d.ts.map +0 -1
  704. package/dist/runtime-state.js.map +0 -1
  705. package/dist/safety-policy.d.ts.map +0 -1
  706. package/dist/safety-policy.js.map +0 -1
  707. package/dist/search-globs.d.ts.map +0 -1
  708. package/dist/search-globs.js.map +0 -1
  709. package/dist/session-names.d.ts.map +0 -1
  710. package/dist/session-names.js.map +0 -1
  711. package/dist/share-paths.d.ts.map +0 -1
  712. package/dist/share-paths.js.map +0 -1
  713. package/dist/shell-regions.d.ts.map +0 -1
  714. package/dist/shell-regions.js.map +0 -1
  715. package/dist/sse.d.ts.map +0 -1
  716. package/dist/sse.js.map +0 -1
  717. package/dist/starter.d.ts.map +0 -1
  718. package/dist/starter.js.map +0 -1
  719. package/dist/state-portability.d.ts.map +0 -1
  720. package/dist/state-portability.js.map +0 -1
  721. package/dist/terminal-protocol.d.ts.map +0 -1
  722. package/dist/terminal-protocol.js.map +0 -1
  723. package/dist/title.d.ts.map +0 -1
  724. package/dist/title.js.map +0 -1
  725. package/dist/transcript-fold.d.ts.map +0 -1
  726. package/dist/transcript-fold.js.map +0 -1
  727. package/dist/tunnel-ids.d.ts.map +0 -1
  728. package/dist/tunnel-ids.js.map +0 -1
  729. package/dist/versions.d.ts.map +0 -1
  730. package/dist/versions.js.map +0 -1
  731. package/dist/webext-links.d.ts.map +0 -1
  732. package/dist/webext-links.js.map +0 -1
  733. package/dist/webext-protocol.d.ts.map +0 -1
  734. package/dist/webext-protocol.js.map +0 -1
  735. package/dist/workflow-faults.d.ts.map +0 -1
  736. package/dist/workflow-faults.js.map +0 -1
  737. package/dist/workspace-state.d.ts.map +0 -1
  738. package/dist/workspace-state.js.map +0 -1
  739. package/src/agent-catalog.ts +0 -316
  740. package/src/agent-runtimes.ts +0 -419
  741. package/src/approvals-execution.ts +0 -96
  742. package/src/arrival.ts +0 -160
  743. package/src/batch-runs.ts +0 -188
  744. package/src/capability-ledger.test.ts +0 -140
  745. package/src/capability-secrets.ts +0 -20
  746. package/src/command-classes.ts +0 -617
  747. package/src/command-run.ts +0 -78
  748. package/src/contract-lock.test.ts +0 -23
  749. package/src/contract-lock.ts +0 -66
  750. package/src/conversation-ids.ts +0 -207
  751. package/src/credential-material.ts +0 -181
  752. package/src/definition.ts +0 -207
  753. package/src/documents.ts +0 -67
  754. package/src/embed.ts +0 -164
  755. package/src/events.ts +0 -1870
  756. package/src/fast-tier.ts +0 -72
  757. package/src/history-state.ts +0 -174
  758. package/src/host-protocol.ts +0 -36
  759. package/src/hostnames.ts +0 -180
  760. package/src/ingress-contract.ts +0 -157
  761. package/src/ingress-protocol.ts +0 -625
  762. package/src/listener-protocol.ts +0 -96
  763. package/src/mentions.ts +0 -25
  764. package/src/model-order.ts +0 -262
  765. package/src/model-pins.ts +0 -132
  766. package/src/model-roles.test.ts +0 -52
  767. package/src/model-roles.ts +0 -320
  768. package/src/needs-action.ts +0 -14
  769. package/src/output-fields.ts +0 -111
  770. package/src/overlay-lint.ts +0 -116
  771. package/src/path-refs.ts +0 -59
  772. package/src/peer-dial.ts +0 -163
  773. package/src/plan-pools.ts +0 -92
  774. package/src/prompt-complexity.ts +0 -334
  775. package/src/provider-specs.ts +0 -432
  776. package/src/request-id.ts +0 -41
  777. package/src/routes.ts +0 -219
  778. package/src/runner-protocol.ts +0 -239
  779. package/src/runtime-state.ts +0 -140
  780. package/src/safety-policy.test.ts +0 -88
  781. package/src/safety-policy.ts +0 -258
  782. package/src/search-globs.ts +0 -76
  783. package/src/session-names.ts +0 -44
  784. package/src/share-paths.ts +0 -68
  785. package/src/shell-regions.ts +0 -289
  786. package/src/starter.ts +0 -13
  787. package/src/state-portability.ts +0 -56
  788. package/src/terminal-protocol.ts +0 -16
  789. package/src/title.ts +0 -267
  790. package/src/tunnel-ids.ts +0 -57
  791. package/src/versions.ts +0 -48
  792. package/src/webext-links.ts +0 -90
  793. package/src/webext-protocol.ts +0 -27
  794. package/src/workspace-state.ts +0 -1090
  795. /package/dist/{hostnames.d.ts → ids/hostnames.d.ts} +0 -0
  796. /package/dist/{hostnames.js → ids/hostnames.js} +0 -0
  797. /package/dist/{session-names.d.ts → ids/session-names.d.ts} +0 -0
  798. /package/dist/{session-names.js → ids/session-names.js} +0 -0
  799. /package/dist/{share-paths.d.ts → ids/share-paths.d.ts} +0 -0
  800. /package/dist/{share-paths.js → ids/share-paths.js} +0 -0
  801. /package/dist/{agent-catalog.js → models/agent-catalog.js} +0 -0
  802. /package/dist/{agent-runtimes.d.ts → models/agent-runtimes.d.ts} +0 -0
  803. /package/dist/{agent-runtimes.js → models/agent-runtimes.js} +0 -0
  804. /package/dist/{fast-tier.js → models/fast-tier.js} +0 -0
  805. /package/dist/{model-order.d.ts → models/model-order.d.ts} +0 -0
  806. /package/dist/{model-order.js → models/model-order.js} +0 -0
  807. /package/dist/{model-pins.js → models/model-pins.js} +0 -0
  808. /package/dist/{plan-pools.js → models/plan-pools.js} +0 -0
  809. /package/dist/{prompt-complexity.d.ts → models/prompt-complexity.d.ts} +0 -0
  810. /package/dist/{prompt-complexity.js → models/prompt-complexity.js} +0 -0
  811. /package/dist/{provider-specs.d.ts → models/provider-specs.d.ts} +0 -0
  812. /package/dist/{provider-specs.js → models/provider-specs.js} +0 -0
  813. /package/dist/{approvals-execution.d.ts → policy/approvals-execution.d.ts} +0 -0
  814. /package/dist/{approvals-execution.js → policy/approvals-execution.js} +0 -0
  815. /package/dist/{capability-env.d.ts → policy/capability-env.d.ts} +0 -0
  816. /package/dist/{capability-env.js → policy/capability-env.js} +0 -0
  817. /package/dist/{capability-secrets.d.ts → policy/capability-secrets.d.ts} +0 -0
  818. /package/dist/{capability-secrets.js → policy/capability-secrets.js} +0 -0
  819. /package/dist/{command-run.js → policy/command-run.js} +0 -0
  820. /package/dist/{credential-material.d.ts → policy/credential-material.d.ts} +0 -0
  821. /package/dist/{credential-material.js → policy/credential-material.js} +0 -0
  822. /package/dist/{needs-action.d.ts → policy/needs-action.d.ts} +0 -0
  823. /package/dist/{needs-action.js → policy/needs-action.js} +0 -0
  824. /package/dist/{output-fields.d.ts → policy/output-fields.d.ts} +0 -0
  825. /package/dist/{output-fields.js → policy/output-fields.js} +0 -0
  826. /package/dist/{overlay-lint.d.ts → policy/overlay-lint.d.ts} +0 -0
  827. /package/dist/{overlay-lint.js → policy/overlay-lint.js} +0 -0
  828. /package/dist/{owner-ticket.d.ts → policy/owner-ticket.d.ts} +0 -0
  829. /package/dist/{search-globs.d.ts → policy/search-globs.d.ts} +0 -0
  830. /package/dist/{search-globs.js → policy/search-globs.js} +0 -0
  831. /package/dist/{ingress-contract.d.ts → protocol/ingress-contract.d.ts} +0 -0
  832. /package/dist/{ingress-protocol.d.ts → protocol/ingress-protocol.d.ts} +0 -0
  833. /package/dist/{ingress-protocol.js → protocol/ingress-protocol.js} +0 -0
  834. /package/dist/{listener-protocol.d.ts → protocol/listener-protocol.d.ts} +0 -0
  835. /package/dist/{peer-mcp-server.d.ts → protocol/peer-mcp-server.d.ts} +0 -0
  836. /package/dist/{peer-mcp-server.js → protocol/peer-mcp-server.js} +0 -0
  837. /package/dist/{request-id.d.ts → protocol/request-id.d.ts} +0 -0
  838. /package/dist/{request-id.js → protocol/request-id.js} +0 -0
  839. /package/dist/{routes.d.ts → protocol/routes.d.ts} +0 -0
  840. /package/dist/{routes.js → protocol/routes.js} +0 -0
  841. /package/dist/{sse.d.ts → protocol/sse.d.ts} +0 -0
  842. /package/dist/{sse.js → protocol/sse.js} +0 -0
  843. /package/dist/{terminal-protocol.js → protocol/terminal-protocol.js} +0 -0
  844. /package/dist/{webext-links.d.ts → protocol/webext-links.d.ts} +0 -0
  845. /package/dist/{webext-links.js → protocol/webext-links.js} +0 -0
  846. /package/dist/{arrival.d.ts → state/arrival.d.ts} +0 -0
  847. /package/dist/{contract-lock.d.ts → state/contract-lock.d.ts} +0 -0
  848. /package/dist/{history-state.d.ts → state/history-state.d.ts} +0 -0
  849. /package/dist/{runtime-state.d.ts → state/runtime-state.d.ts} +0 -0
  850. /package/dist/{runtime-state.js → state/runtime-state.js} +0 -0
  851. /package/dist/{starter.d.ts → state/starter.d.ts} +0 -0
  852. /package/dist/{starter.js → state/starter.js} +0 -0
  853. /package/dist/{state-portability.d.ts → state/state-portability.d.ts} +0 -0
  854. /package/dist/{state-portability.js → state/state-portability.js} +0 -0
  855. /package/dist/{versions.d.ts → state/versions.d.ts} +0 -0
  856. /package/dist/{versions.js → state/versions.js} +0 -0
  857. /package/dist/{embed.d.ts → text/embed.d.ts} +0 -0
  858. /package/dist/{embed.js → text/embed.js} +0 -0
  859. /package/dist/{mentions.d.ts → text/mentions.d.ts} +0 -0
  860. /package/dist/{mentions.js → text/mentions.js} +0 -0
  861. /package/dist/{path-refs.d.ts → text/path-refs.d.ts} +0 -0
  862. /package/dist/{path-refs.js → text/path-refs.js} +0 -0
  863. /package/dist/{shell-regions.js → text/shell-regions.js} +0 -0
  864. /package/dist/{title.d.ts → text/title.d.ts} +0 -0
  865. /package/dist/{title.js → text/title.js} +0 -0
  866. /package/src/{hostnames.test.ts → ids/hostnames.test.ts} +0 -0
  867. /package/src/{share-paths.test.ts → ids/share-paths.test.ts} +0 -0
  868. /package/src/{capability-env.ts → policy/capability-env.ts} +0 -0
  869. /package/src/{overlay-lint.test.ts → policy/overlay-lint.test.ts} +0 -0
  870. /package/src/{search-globs.test.ts → policy/search-globs.test.ts} +0 -0
  871. /package/src/{ingress-contract.test.ts → protocol/ingress-contract.test.ts} +0 -0
  872. /package/src/{peer-mcp-server.test.ts → protocol/peer-mcp-server.test.ts} +0 -0
  873. /package/src/{sse.ts → protocol/sse.ts} +0 -0
  874. /package/src/{versions.test.ts → state/versions.test.ts} +0 -0
  875. /package/src/{embed.test.ts → text/embed.test.ts} +0 -0
  876. /package/src/{mentions.test.ts → text/mentions.test.ts} +0 -0
  877. /package/src/{path-refs.test.ts → text/path-refs.test.ts} +0 -0
@@ -1,41 +1,20 @@
1
1
  import { z } from "zod";
2
- import { TRANSLATOR_PROVIDERS, type TranslatorProvider } from "../provider-specs.js";
2
+ import { TRANSLATOR_PROVIDERS, type TranslatorProvider } from "../models/provider-specs.js";
3
3
  import { AgentHarnessSchema, AgentProviderSchema, EditorContextSchema } from "./agent.js";
4
- // Declared ABOVE both account shapes because both carry it: headroom is one idea in this product, not a Claude
5
- // idea that other providers imitate. A native account (OauthAccount) and a routed subscription
6
- // (TranslatorAccount) differ in who holds the credential and how the reading is taken, never in what a
7
- // reading IS, so every surface that draws a percentage reads this one type and no other.
4
+ // Headroom is one shape shared by every provider, not a Claude idea others imitate: a native account and a routed
5
+ // subscription differ in who holds the credential, never in what a reading is. Every surface that draws a percentage
6
+ // reads this one type.
8
7
 
9
- /* WHICH MODELS A POOL GATES, said by the reader that parsed it and carried on the wire, so every surface and
10
- * every picker answers "does this pool stand between me and THIS model" from one fact instead of six rules.
11
- *
12
- * A plan is not one allowance. Google meters Gemini separately from the Claude and GPT models it serves off the
13
- * same sign-in; a Claude plan carries a per-model weekly slice ("Opus", "Fable") beside its all-models pools;
14
- * ChatGPT publishes a code-review limit that no chat turn spends. Before this field the relation lived in six
15
- * places that disagreed (a static Google table, a Claude kind list, a max-over-everything ranking, a fullest-
16
- * window reset, and two client-side matchers), so a Google account with its Gemini pool spent drew a red ring
17
- * over Claude Opus, and a Claude account with its Opus slice spent was ranked "spent" for a Haiku call.
18
- *
19
- * "all" every model on this plan spends it: the 5-hour and weekly pools, Kimi's throttles.
20
- * "none" nothing a turn here runs spends it: a code-review limit, a surface-scoped pool for another
21
- * product. Still shown, never binding.
22
- * { models } a slice scoped to the models the names match. Names are matched as runs of whole words against
23
- * the model id AND its label ("opus" is in "claude-opus-4-6" and in "Claude Opus 4.6"; "gemini"
24
- * is in "gemini-3-pro"), see plan-pools.ts, because the plan names a pool by the vendor's word for
25
- * the tier and nothing else connects the two.
26
- *
27
- * Decided by the READER, never inferred later: the payload is the only place the grouping is known, and it is
28
- * the plan's to change, so the fact travels with the reading it describes. */
8
+ // Which models a pool gates, decided once by the reader that parsed it, so every picker answers from one fact instead
9
+ // of re-deriving it.
10
+ // all: every model on this plan spends it.
11
+ // none: nothing spends it; still shown, never binding.
12
+ // { models }: scoped to models matching these names (whole-word match against id and label).
29
13
  export const WindowGatesSchema = z.union([z.literal("all"), z.literal("none"), z.object({ models: z.array(z.string().min(1)).min(1) })]);
30
14
  export type WindowGates = z.infer<typeof WindowGatesSchema>;
31
15
 
32
- // One plan-limit pool. `kind` is the provider's own key ('five_hour' | 'seven_day' | 'seven_day_opus' |
33
- // 'seven_day_sonnet' | 'model:Fable' | …) rather than an enum we'd have to keep in step with the provider: an
34
- // unrecognised pool is shown under its raw key, which is far better than being silently folded into a
35
- // neighbour. `label` is the provider's OWN display name where it supplies one (the per-model buckets do), it
36
- // wins over anything we'd infer, because the model names in a plan's limits are the provider's to rename.
37
- // `resetsAt` is epoch SECONDS (matching the SDK's frame). `gates` says which models the pool stands in the way
38
- // of, see WindowGatesSchema.
16
+ // `kind` is the provider's own key (a string, not an enum): an unrecognised pool shows under its raw key rather than
17
+ // folding into a neighbour. `label` wins over anything inferred; `resetsAt` is epoch seconds.
39
18
  export const UsageWindowSchema = z.object({
40
19
  kind: z.string(),
41
20
  label: z.string().optional(),
@@ -44,36 +23,15 @@ export const UsageWindowSchema = z.object({
44
23
  gates: WindowGatesSchema,
45
24
  });
46
25
  export type UsageWindow = z.infer<typeof UsageWindowSchema>;
47
- // An account's headroom: EVERY window the provider reports, read together, plus when the reading was taken.
48
- // All of them, not the binding one, because "which pool is binding" changes between turns and a reader
49
- // comparing accounts needs the same pools on every row. How the reading is TAKEN is per provider and stops at
50
- // the daemon's readers: Claude's rides the turn's own stream, ChatGPT's, Google's and Kimi's are pulled through
51
- // CLIProxyAPI's credential-scoped management call. All of them are control requests, so none costs tokens.
52
- //
53
- // Within one window utilization only climbs, so an un-reset window stays a valid FLOOR however old it is; past
54
- // its `resetsAt` it describes a pool that no longer exists and the store drops it. `measuredAt` is epoch MS
55
- // (matching connectedAt), deliberately a different unit from the windows' seconds.
26
+ // Every window kept, not just the binding one, since which pool binds changes between turns. Utilization only climbs
27
+ // within a window, so a stale reading is still a valid floor. `measuredAt` is epoch ms — windows are seconds.
56
28
  export const AccountUsageSchema = z.object({
57
29
  windows: z.array(UsageWindowSchema),
58
30
  measuredAt: z.number(),
59
31
  });
60
32
  export type AccountUsage = z.infer<typeof AccountUsageSchema>;
61
- /* THE ONE WAY PAST A SPENT SESSION WINDOW THAT IS NOT WAITING, which Anthropic grants once a week per account.
62
- *
63
- * Every other affordance around a refused turn is about WHEN: arm the appointment, count down to the reset,
64
- * press when it opens. This one moves the clock. The provider reopens the five-hour window immediately and
65
- * charges the account one of its weekly resets; the WEEKLY allowance is untouched and still binds, so this
66
- * buys back the session pool and nothing else. Upstream's own CLI spells it `/limit-reset`.
67
- *
68
- * THE ANSWER IS THE PROVIDER'S, NEVER OURS. There is no rule here to re-derive: eligibility turns on the plan
69
- * tier, how long the account has existed, whether it is actually at the wall, whether another experiment holds
70
- * it, and whether the week's reset is already spent — all of it decided server-side and none of it visible from
71
- * a usage reading. So this shape is a transcription of what the endpoint said, and the button exists only while
72
- * it says `available`. A client must never infer availability from a 100% window.
73
- *
74
- * `reason` is the provider's own word for the refusal ("tier", "tenure", "not_at_wall", "weekly_limit",
75
- * "already_used", …) and is carried rather than translated, because the set is the provider's to extend and a
76
- * word we don't recognise is still worth showing to somebody asking why the button is not there. */
33
+ // Anthropic's once-a-week reset of the session window only; the weekly allowance is untouched. The answer is entirely
34
+ // the provider's — never infer `available` from a 100% window. `reason` is its own word, carried verbatim.
77
35
  export const LimitResetStatusSchema = z.object({
78
36
  available: z
79
37
  .boolean()
@@ -82,7 +40,7 @@ export const LimitResetStatusSchema = z.object({
82
40
  .string()
83
41
  .optional()
84
42
  .describe("Why not, in the provider's own word, when it gave one. Absent when it is available, or when the provider said nothing."),
85
- // Both epoch SECONDS, matching every other reset instant on the wire (UsageWindow.resetsAt, limitResetsAt).
43
+ // Epoch seconds, like every reset instant on this wire.
86
44
  nextAvailableAt: z
87
45
  .number()
88
46
  .optional()
@@ -90,16 +48,8 @@ export const LimitResetStatusSchema = z.object({
90
48
  weeklyResetsAt: z.number().optional().describe("When the weekly allowance itself reopens, in epoch seconds, where the provider publishes it."),
91
49
  });
92
50
  export type LimitResetStatus = z.infer<typeof LimitResetStatusSchema>;
93
- /* WHAT CLAIMING IT DID, in the provider's own vocabulary plus the two failures that are ours.
94
- *
95
- * `reset` is the only outcome that changed anything, and the caller's cue to send the held turn again. The rest
96
- * are all "nothing happened", and they are kept APART rather than folded into one failure because they are read
97
- * by somebody who just pressed a button and is owed the difference: `already_used` means come back next week,
98
- * `not_limited` means the window reopened while they were reading, `ineligible` means this account never had
99
- * it, and `unavailable`/`error` mean try again. Collapsing them would make every one of those read as a fault.
100
- *
101
- * Never throws over the wire: a claim that fails leaves the account exactly as it was, and the honest answer to
102
- * a press is a word, not a stack trace. */
51
+ // Only `reset` changed anything; the rest are all "nothing happened" but kept apart since each is owed a different next
52
+ // step (wait, retry, this account never had it). Never throws: a failed claim leaves the account as it was.
103
53
  export const LimitResetClaimSchema = z.object({
104
54
  result: z
105
55
  .enum(["reset", "already_used", "not_limited", "ineligible", "unavailable", "error"])
@@ -108,46 +58,22 @@ export const LimitResetClaimSchema = z.object({
108
58
  detail: z.string().optional().describe("What went wrong, in words, for the two outcomes that are this sandbox's fault rather than the plan's."),
109
59
  });
110
60
  export type LimitResetClaim = z.infer<typeof LimitResetClaimSchema>;
111
- /* THE LAST TIME A PROVIDER ACTUALLY REFUSED A TURN, the other half of "can I run on this", and the half no
112
- * meter can supply.
113
- *
114
- * A snapshot above is POLLED and therefore always a floor: read at turn end (Claude) or on a five-minute sweep
115
- * (the routed subscriptions), and account-wide, so every other client on the plan spends the same pools without
116
- * this sandbox hearing about it. A refusal is the opposite kind of fact, observed, exact, and timestamped by
117
- * the only event that proves the plan said no. Between them they answer a question neither can alone: a green
118
- * meter beside "refused a turn 4 minutes ago" means the reading is stale, not that the account has room.
119
- *
120
- * Keyed by PROVIDER rather than by account, because that is the resolution the daemon honestly has. A native
121
- * Claude turn knows which account served it and names it; a routed turn does not. CLIProxyAPI picks the auth
122
- * file itself and only refuses once every credential it holds is cooling down, which makes the refusal a fact
123
- * about the provider in the first place.
124
- *
125
- * `kind` is read off what the provider SAID, not off the frame code the harness filed it under, because those
126
- * two disagree: Kimi answers a spent plan with `403 You've reached your usage limit for this billing cycle`,
127
- * which the CLI prints under "Failed to authenticate" and the stream codes as a refused credential. Sending
128
- * someone to reconnect a perfectly good account is the cost of believing the code over the sentence. */
61
+ // Observed and exact, unlike a polled usage snapshot that can be stale; keyed by provider, not account, since a routed
62
+ // turn doesn't know which served it. `kind` is read off what the provider said, not the frame code.
129
63
  export const ProviderRefusalSchema = z.object({
130
- // Epoch MS, matching AccountUsage.measuredAt, the two are read side by side.
64
+ // Read side by side with `AccountUsage.measuredAt` (also ms).
131
65
  at: z.number().describe("When it refused, in milliseconds."),
132
- /* Three ways a plan says no, kept apart because WHAT ANSWERS EACH is different and a screen that conflates
133
- * them tells the user to do the wrong thing. A spent allowance is answered by a later reading with room in
134
- * it; a refused credential by the account being read at all through it; and an entitlement refusal, an
135
- * organization that has turned Claude Code off for this seat, by NOTHING either of those can produce. Its
136
- * token authenticates and its usage endpoint answers with real pools the whole time it cannot run a turn,
137
- * so filing it as `auth` let the very next quota sweep dismiss it and leave a full green ring over an
138
- * account that refused everything asked of it. Only a turn that actually runs settles this one. */
66
+ // Only a turn that actually runs settles an entitlement refusal — nothing else can.
139
67
  kind: z
140
68
  .enum(["limit", "auth", "entitlement"])
141
69
  .describe(
142
70
  "Three different noes, kept apart because what fixes each is different. A spent allowance is answered by waiting; a refused credential by signing in again; and an entitlement refusal, where somebody has switched this off for your seat, by neither of those. That last one authenticates fine and reports healthy limits the whole time it refuses everything.",
143
71
  ),
144
- // The provider's own sentence, verbatim. It is the only part that says WHICH pool or WHICH credential.
145
72
  message: z.string().describe("The provider's own words, verbatim. The only part that says which limit or which credential."),
146
- // The account that was serving, when the daemon knows it (native turns only, see above).
73
+ // Known for native turns only; a routed turn doesn't say which account served it.
147
74
  account: z.string().optional().describe("Which account was serving, where that is known."),
148
- // The model the refused turn ran, so a `limit` refusal can be read against the POOL that model spends
149
- // (UsageWindow.gates) rather than against the account's fullest pool, which on a plan that meters models
150
- // separately is routinely a different allowance from the one that said no.
75
+ // Lets a `limit` refusal be read against the pool that model spends (`UsageWindow.gates`), not the account's
76
+ // fullest pool.
151
77
  model: z.string().optional().describe("Which model the refused turn was on, where that is known."),
152
78
  });
153
79
  export type ProviderRefusal = z.infer<typeof ProviderRefusalSchema>;
@@ -159,23 +85,19 @@ export const ProviderRefusalsSchema = z.object({
159
85
  ),
160
86
  });
161
87
  export type ProviderRefusals = z.infer<typeof ProviderRefusalsSchema>;
162
- // One connected subscription in the translator. `name` is CLIProxyAPI's auth-file name, the stable store key a
163
- // disconnect addresses, and `label` the sign-in identity it reported (the account email, else the file name).
88
+ // `name` is CLIProxyAPI's auth-file name, the stable key a disconnect addresses; `label` is the reported sign-in
89
+ // identity (email, else the file name).
164
90
  export const TranslatorAccountSchema = z.object({
165
91
  name: z.string(),
166
92
  label: z.string(),
167
- // The same headroom an OauthAccount carries, on the same field, for the same reason: the account rows are
168
- // one list to the reader. Optional because a provider whose quota this sandbox cannot read (Grok),
169
- // or one that did not answer, must still render as the connected account it is, with a dot instead of a
170
- // ring.
93
+ // Same shape as `OauthAccount`'s, so account rows are one list. Absent for a provider this sandbox can't read quota
94
+ // from (Grok) — still renders, as a dot not a ring.
171
95
  usage: AccountUsageSchema.optional(),
172
- /* THE TRANSLATOR'S OWN VERDICT ON THE CREDENTIAL, the one live fact no quota read can produce. CLIProxyAPI
173
- * benches an auth file the moment upstream refuses it (a quota 429, an expired token) and routes around it
174
- * until `until`; a reading taken five minutes ago cannot know that, and a green ring over a benched file is
175
- * exactly the gap a refusal used to be the only way to see. Absent ⇒ the proxy is routing to it. */
96
+ // The one live fact a quota read can't produce: CLIProxyAPI benches an auth file the instant upstream refuses it
97
+ // (quota, expired token) and routes around it until `until`. Absent means the proxy is routing to it.
176
98
  cooling: z
177
99
  .object({
178
- // Epoch SECONDS, like every reset on this wire. Absent when the proxy named no retry instant.
100
+ // Epoch seconds, like every reset on this wire; absent when the proxy named no retry instant.
179
101
  until: z.number().optional(),
180
102
  // The proxy's own sentence, when it gave one.
181
103
  reason: z.string().optional(),
@@ -183,15 +105,8 @@ export const TranslatorAccountSchema = z.object({
183
105
  .optional(),
184
106
  });
185
107
  export type TranslatorAccount = z.infer<typeof TranslatorAccountSchema>;
186
- /* Which routed-provider subscriptions are connected in the translator, per provider, a LIST per provider, not
187
- * a flag: CLIProxyAPI holds any number of auth files per provider side by side and balances requests across
188
- * them, so connecting a second ChatGPT or Google account is more headroom, and each is disconnectable on its
189
- * own. Drives the account rows in Sandbox ▸ Agent.
190
- *
191
- * ONE KEY PER TRANSLATOR PROVIDER, built over the derived list rather than typed out, because this object and
192
- * the enum beside it (KeyedProviderSchema) are the same fact twice and the browser reads a provider's slot
193
- * without checking it exists: a provider present in the enum and missing here is `undefined.length`, at the
194
- * exact moment somebody is asking whether they can send. */
108
+ // A list per provider, not a flag: CLIProxyAPI holds several auth files per provider and balances across them. Built
109
+ // from the same derived list as `KeyedProviderSchema`, so the two can't drift apart.
195
110
  export const TranslatorAccountsSchema = z.object(
196
111
  Object.fromEntries(TRANSLATOR_PROVIDERS.map((provider) => [provider, z.array(TranslatorAccountSchema)] as const)) as Record<
197
112
  TranslatorProvider,
@@ -199,15 +114,11 @@ export const TranslatorAccountsSchema = z.object(
199
114
  >,
200
115
  );
201
116
  export type TranslatorAccounts = z.infer<typeof TranslatorAccountsSchema>;
202
- // The side-channel body that un-parks a turn waiting on the user. Every interactive card, plan approval,
203
- // clarifying questions, a per-tool permission prompt, parks on the SAME registry keyed by `requestId`, so
204
- // one route resolves all three; the `kind` says which card answered and carries its payload.
117
+ // Un-parks a turn waiting on the user; every interactive card parks on one registry keyed by `requestId`, so one route
118
+ // resolves all of them, and `kind` says which card answered.
205
119
  export const AgentReplySchema = z.discriminatedUnion("kind", [
206
- // ExitPlanMode approval. Approving carries NO posture: an approved plan executes under bypassPermissions,
207
- // set on the SDK session by the gate that raised the card. The container is the isolation boundary, so a
208
- // plan the user has read and approved is exactly the point where per-tool prompts stop earning their
209
- // interruption, landing anywhere else means approving a plan to run `git log` and then being asked whether
210
- // `git log` may run. Rejection feedback loops back into the model as the denial reason.
120
+ // Approving sets `bypassPermissions` on the SDK session; the container, not per-tool prompts, is the isolation
121
+ // boundary from here on.
211
122
  z.object({
212
123
  kind: z.literal("plan").describe("Answering a plan the agent proposed."),
213
124
  requestId: z.string().min(1).describe("Which card you are answering, from the frame that raised it."),
@@ -218,8 +129,7 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
218
129
  ),
219
130
  feedback: z.string().optional().describe("Why not, which goes back to the model as the reason."),
220
131
  }),
221
- // AskUserQuestion picks: question text → chosen option label(s) (+ any free-text "Other"). `cancelled`
222
- // is the dismissal, which tells the model to proceed on sensible defaults rather than leaving it parked.
132
+ // Keyed by question text, valued by chosen option label(s), including free-text "Other".
223
133
  z.object({
224
134
  kind: z.literal("question").describe("Answering a question the agent asked."),
225
135
  requestId: z.string().min(1).describe("Which card you are answering."),
@@ -232,9 +142,7 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
232
142
  .optional()
233
143
  .describe("Dismissing it instead, which tells the agent to carry on using sensible defaults rather than leaving it waiting."),
234
144
  }),
235
- // A per-tool permission prompt. 'once' allows this call only; 'always' allows the whole TOOL for the rest
236
- // of the session (plus the SDK's own narrower suggestions), which is what the card's label promises;
237
- // 'deny' blocks it and feeds `feedback` back as the reason.
145
+ // "always" may be narrowed further by the SDK's own suggestions.
238
146
  z.object({
239
147
  kind: z.literal("permission").describe("Answering a request to use a tool."),
240
148
  requestId: z.string().min(1).describe("Which card you are answering."),
@@ -243,11 +151,6 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
243
151
  .describe("Once allows this call alone; always allows that whole tool for the rest of the conversation; no blocks it."),
244
152
  feedback: z.string().optional().describe("Why not, which goes back to the model as the reason."),
245
153
  }),
246
- // A browser help request (the agent parked mid-sign-in on something only a person can clear, a captcha, a
247
- // password it does not hold). `helped: true` is "done, hand back": the user took control of the agent's
248
- // browser, fixed the step, and the turn continues from the page as they left it. `helped: false` is "can't
249
- // help now", the agent is told so and moves on rather than waiting forever. `note` rides back to the model
250
- // either way ("typed the password, don't touch the remember-me box").
251
154
  z.object({
252
155
  kind: z
253
156
  .literal("browser_help")
@@ -260,10 +163,6 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
260
163
  ),
261
164
  note: z.string().optional().describe("Anything the agent should know, which goes back to it either way."),
262
165
  }),
263
- // A terminal help request, the same two answers as the browser's, for a command parked at a prompt only a
264
- // person can answer. `helped: true` is "typed it, carry on"; false is "can't right now". `note` rides back
265
- // either way, and on `helped` the daemon adds what the pane SAYS to the tool result: the user answering the
266
- // prompt is exactly the moment the agent cannot see, and it would otherwise have to ask them how it went.
267
166
  z.object({
268
167
  kind: z
269
168
  .literal("terminal_help")
@@ -276,20 +175,6 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
276
175
  ),
277
176
  note: z.string().optional().describe("Anything the agent should know, which goes back to it either way."),
278
177
  }),
279
- // A premium service run's yes or no. The click is the ONLY way the spend can happen, the daemon holds the
280
- // agent's run request parked until this settles it (platform/service-offer.ts), so `approve` carries no
281
- // qualifiers: one true releases exactly one run, and anything else charges nothing.
282
- z.object({
283
- kind: z.literal("service_offer").describe("Answering a request to spend on a paid service."),
284
- requestId: z.string().min(1).describe("Which card you are answering."),
285
- approve: z
286
- .boolean()
287
- .describe("Yes releases exactly one run. Anything else charges nothing. This click is the only way the spend can happen."),
288
- }),
289
- // A missing-capability ask's yes or no. `connect: true` is "I'll set it up", it opens the card's setup
290
- // and keeps the agent's request parked while the daemon watches for the connection to come live
291
- // (capabilities/capability-offer.ts); false tells the agent to continue without it. The click decides
292
- // only the WATCHING: nothing is connected by the reply itself, the setup is the owner's own flow.
293
178
  z.object({
294
179
  kind: z.literal("capability_offer").describe("Answering a request to connect something the agent needs."),
295
180
  requestId: z.string().min(1).describe("Which card you are answering."),
@@ -299,9 +184,6 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
299
184
  "Yes keeps the agent waiting while you set it up, and it carries on the moment the connection comes alive. No tells it to continue without. The reply itself connects nothing: setting it up is still your own doing.",
300
185
  ),
301
186
  }),
302
- // A USDC payment's yes or no. The click is the ONLY way the money can move, the daemon holds the agent's
303
- // `wallet fetch` parked until this settles it (wallet/payment-offer.ts), so `approve` carries no
304
- // qualifiers: one true releases exactly one payment, and anything else spends nothing.
305
187
  z.object({
306
188
  kind: z.literal("payment_offer").describe("Answering a request to pay for something."),
307
189
  requestId: z.string().min(1).describe("Which card you are answering."),
@@ -309,16 +191,8 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
309
191
  .boolean()
310
192
  .describe("Yes releases exactly one payment. Anything else spends nothing. This click is the only way the money can move."),
311
193
  }),
312
- /* A GATED CREDENTIAL's release, and the one reply on this list whose sender is CHECKED. Every other card
313
- * here is answered by whoever holds a session, because every other card is the owner's to decide; this one
314
- * is addressed to a named list, so the daemon reads the verified identity off the request and refuses a
315
- * click from anybody else with the card left standing for whoever can answer it. The refusal covers `no`
316
- * as well: a stranger may not skip a release on the approver's behalf either, or the gate would be a
317
- * denial-of-service anybody with a session could aim at a turn.
318
- *
319
- * `approve` carries no qualifiers because the gate's own policy decides how far one yes goes: a per-use
320
- * gate releases exactly this use and the next one asks again, a conversation-scoped gate covers the rest
321
- * of the conversation. The card says which, so the click is never wider than it reads. */
194
+ // The one reply whose sender is checked: the daemon verifies identity against the card's named list and refuses
195
+ // anyone else, including a `no` — otherwise a stranger could deny-of-service the approver.
322
196
  z.object({
323
197
  kind: z.literal("credential_offer").describe("Releasing a credential the agent may only use once a named person says so."),
324
198
  requestId: z.string().min(1).describe("Which card you are answering."),
@@ -330,11 +204,8 @@ export const AgentReplySchema = z.discriminatedUnion("kind", [
330
204
  }),
331
205
  ]);
332
206
  export type AgentReply = z.infer<typeof AgentReplySchema>;
333
- // Steering: a user message delivered INTO the running turn (injected between tool calls, Claude Code style),
334
- // keyed by the conversation whose turn is in flight. NOT_FOUND when no steerable turn is running, the client
335
- // then holds the message in its queue and sends it as the next turn instead. Carries everything a turn's own
336
- // prompt can carry (files, the editor-context chip), because "add more while it works" is worth nothing if it
337
- // only takes bare text: the daemon folds the same notes into the injected message that a fresh turn gets.
207
+ // A message injected into a running turn between tool calls; NOT_FOUND when none is steerable, and the client queues it
208
+ // as the next turn instead. Carries everything a fresh prompt can (files, editor context).
338
209
  export const SteerSchema = z
339
210
  .object({
340
211
  conversationId: z.string().min(1).describe("Which running conversation to interrupt."),
@@ -350,38 +221,28 @@ export const SteerSchema = z
350
221
  .refine((steer) => steer.text.trim().length > 0 || (steer.attachments?.length ?? 0) > 0, {
351
222
  message: "text or attachments required",
352
223
  });
353
- // True cancel for the conversation's in-flight turn, aborts the agent daemon-side, unlike closing the
354
- // /agent fetch (which sends no cancel frame).
224
+ // True cancel, aborted daemon-side; unlike closing the /agent fetch, which sends no cancel frame.
355
225
  export const StopTurnSchema = z.object({ conversationId: z.string().min(1).describe("Which conversation's running turn to cancel.") });
356
- /* WHO SERVES THE RE-RUN, the one part of a held turn a press is allowed to move, and the field that exists
357
- * because leaving it out made the press useless in exactly the case it was built for.
358
- *
359
- * A spent allowance is a refusal by an ACCOUNT, and the fix a person reaches for is the account switcher in the
360
- * composer: switch to one with headroom, press Continue. Replaying the turn with everything it carried replayed
361
- * the refused account too, so the press bounced off the same limit, reported it in the same words, and the user's
362
- * only way through was to type "Continue" by hand — a send, which reads the composer's current selection, which
363
- * is the very thing the press was ignoring.
364
- *
365
- * So the press carries WHO, and the daemon keeps WHAT. Everything that makes the turn the turn (the prompt, the
366
- * attachments, the effort, the mode, the worktree, the session holding whatever it managed to do) stays on the
367
- * daemon's own copy, because a client re-deriving those from its transcript would be re-deriving them from the
368
- * STRIPPED copy it renders, which is how a re-send comes to run a different turn from the one it claims to
369
- * repeat. Routing is the exception, and it is the exception on purpose: it is not a property of the request, it
370
- * is the answer to "who pays for it", and the whole reason the user is pressing is that they have changed it. */
226
+ // The press carries WHO serves the re-run; the daemon keeps WHAT the turn is (prompt, attachments, worktree) from its
227
+ // own record, since re-deriving from a stripped client transcript would replay a different turn.
371
228
  export const ResumeRoutingSchema = z.object({
372
229
  agent: AgentProviderSchema.describe("Which provider serves the re-run."),
373
230
  harness: AgentHarnessSchema.describe("Which agentic loop runs it."),
374
231
  account: z.string().optional().describe("Which of that provider's accounts pays for it. Leave it out for the first one."),
375
- // Omitted rather than guessed: a client whose catalog hasn't loaded has no pick to send, and the turn's own
376
- // model is a better answer than a blank one.
232
+ // A client whose catalog hasn't loaded has nothing to send; the turn's own model is the better fallback.
377
233
  model: z.string().optional().describe("Which model. Leave it out to keep the one the refused turn named."),
234
+ // A session is a file the daemon keeps; a credential is an env var. That's what lets a same-provider account switch
235
+ // resume the existing session instead of opening a fresh one.
236
+ carry: z
237
+ .boolean()
238
+ .optional()
239
+ .describe(
240
+ "When the account changes, keep the provider session (the model keeps everything, and re-reads all of it once on the other account) rather than opening a fresh one seeded from the record. Ignored when the provider changes, or when nothing changes.",
241
+ ),
378
242
  });
379
243
  export type ResumeRouting = z.infer<typeof ResumeRoutingSchema>;
380
- /* RUN THE HELD TURN AGAIN: which conversation, and who serves it now.
381
- *
382
- * What comes back is an ordinary StartedTurn, and the caller then attaches to it exactly as it would to a turn
383
- * somebody else started (the resume note on the prompt is what tells an attaching window to reuse the bubble that
384
- * is already there instead of drawing the same message twice). */
244
+ // Returns an ordinary `StartedTurn`; the caller attaches to it like any turn someone else started. A resume note on the
245
+ // prompt tells an attaching window to reuse the existing bubble, not redraw it.
385
246
  export const ResumeTurnSchema = z.object({
386
247
  conversationId: z.string().min(1).describe("Which conversation's held turn to run again."),
387
248
  routing: ResumeRoutingSchema.optional().describe(
@@ -1,41 +1,28 @@
1
1
  // ports: every listening TCP socket in the sandbox + explicit port forwarding
2
2
  import { z } from "zod";
3
- // Anything run in a terminal (a turbo TUI fanning out dev servers, `python -m http.server`, an agent's ad-hoc
4
- // process) binds ports the daemon never assigned, the panel machinery can't see them. The /ports routes are
5
- // the generic complement: `list` reports the live listeners (procfs scan, on demand), `forward` makes one
6
- // reachable at port-<slot>-<sandboxId>.<zone> through the preview proxy. Forwarding is an explicit gesture,
7
- // previews are public, so nothing is exposed until the owner (or an agent acting for them) asks.
3
+ // Terminal-bound ports (a TUI, an ad-hoc process) that the panel machinery can't see; `list` scans procfs live,
4
+ // `forward` exposes one at port-<slot>-<sandboxId>.<zone> through the preview proxy. Forwarding is explicit — nothing
5
+ // is public until asked for.
8
6
 
9
7
  export const PortSummarySchema = z.object({
10
8
  port: z.number().describe("The port number."),
11
- // The loopback address the listener actually answers at inside the sandbox, a `localhost` bind can land
12
- // on ::1 only (Vite). The preview proxy and the desktop mirror (Mutagen forward) both dial this.
9
+ // Vite, for one, binds only ::1; the preview proxy and the desktop mirror both dial this address.
13
10
  host: z
14
11
  .enum(["127.0.0.1", "::1"])
15
12
  .describe("Which loopback address it actually answers on. Some tools bind only one of the two, and anything dialling it has to know which."),
16
- // Whether the proxy can actually reach the listener at `host`. False for a bind to a loopback alias like
17
- // Docker's embedded DNS (127.0.0.11), which answers only at its own address, not 127.0.0.1, such rows are
18
- // listed for transparency but the Ports view hides Preview and forwarding them is refused.
13
+ // e.g. Docker's embedded DNS at 127.0.0.11, which only answers at its own address.
19
14
  forwardable: z
20
15
  .boolean()
21
16
  .describe(
22
17
  "Whether it can be exposed at all. Some listeners answer only at their own address and nowhere else; those are listed for honesty and refused for forwarding.",
23
18
  ),
24
- // Which bucket the Ports view files it under: `workspace` = user-run (dev servers in repos, terminal
25
- // processes, published container ports), the previewable set; `system` = the sandbox's own machinery
26
- // (agent runtimes, translator, dockerd, sshd), listed for transparency but nobody previews it.
19
+ // workspace: dev servers, terminal processes, published container ports. system: agent runtimes, translator,
20
+ // dockerd, sshd.
27
21
  kind: z
28
22
  .enum(["workspace", "system"])
29
23
  .describe("Whether somebody's own work put it there, or the sandbox's own machinery did. Only the first kind is worth previewing."),
30
- /* WHAT IS ON THIS PORT, IN WORDS: resolved by the daemon (ports/port-identity.ts), because the two facts
31
- * that attribute a listener (the panel key → extension index, the workspace root) exist there and nowhere
32
- * else. `title` is what a person would call it ("Vite dev server", "Sandbox service", "Container port"),
33
- * `purpose` is the one sentence a row shows under it, and `origin` says who put it there, which is what
34
- * the reader is really asking when they ask what a port is: mine, my agent's, or the box's own.
35
- *
36
- * All three are required. A listener nothing can explain still gets a name ("Unclaimed port") and a
37
- * sentence that says so out loud, because the alternative (a raw argv, or nothing) is what made this
38
- * view unreadable, and the button beside the row publishes the port to the internet. */
24
+ // All three are required, even when nothing can explain the listener ("Unclaimed port"); resolved daemon-side,
25
+ // where the facts that attribute it actually live.
39
26
  title: z
40
27
  .string()
41
28
  .describe(
@@ -45,17 +32,13 @@ export const PortSummarySchema = z.object({
45
32
  origin: z
46
33
  .enum(["terminal", "agent", "panel", "extension", "container", "sandbox", "unknown"])
47
34
  .describe("Who put it there, which is the question somebody is really asking: mine, my agent's, or the box's own."),
48
- // The owning process, resolved from procfs; absent when no /proc/*/fd entry matched the socket's inode.
35
+ // Resolved via /proc/*/fd matching the socket's inode.
49
36
  pid: z.number().optional().describe("The process holding it. Absent when nothing could be matched to the socket."),
50
- // How the row is labeled: the process argv joined with spaces ("node /work/app/node_modules/.bin/vite"),
51
- // falling back to the kernel `comm` name when argv is empty, or a synthesized name for attributable
52
- // infrastructure the pid walk can't reach ("Docker embedded DNS"). Absent only when wholly unattributable.
37
+ // Process argv joined with spaces, falling back to the kernel `comm` name, or a synthesized name when the pid walk
38
+ // can't reach it.
53
39
  command: z.string().optional().describe("The command behind it, as it was run. Absent only when nothing could be attributed at all."),
54
- // The process working directory (how the UI attributes a port to a repo).
55
40
  cwd: z.string().optional().describe("Where it is running from, which is how a port gets attributed to a repository."),
56
- // The tmux session the listener descends from, the terminal to watch it in or stop it from. Absent when
57
- // nothing in its ancestry is a pane (a daemon-managed runtime, a published container's docker-proxy), which
58
- // is the honest "you cannot reach this from here" rather than a terminal that would open onto nothing.
41
+ // Absent for daemon-managed runtimes and published container ports, which have no pane to open.
59
42
  session: z
60
43
  .string()
61
44
  .optional()
@@ -63,7 +46,7 @@ export const PortSummarySchema = z.object({
63
46
  'The terminal it came from, to watch it in or stop it from. Absent when nothing in its ancestry is one, which is the honest "you cannot reach this from here".',
64
47
  ),
65
48
  forwarded: z.boolean().describe("Whether it is currently reachable from outside."),
66
- // https://port-<slot>-<sandboxId>.<zone>; present only while forwarded AND the sandbox has a zone + id.
49
+ // `https://port-<slot>-<sandboxId>.<zone>`.
67
50
  previewUrl: z.string().optional().describe("Where to open it. Present only while forwarded, and only on a sandbox that has an outside address."),
68
51
  });
69
52
  export type PortSummary = z.infer<typeof PortSummarySchema>;
@@ -74,7 +57,6 @@ export const PortsListSchema = z.object({
74
57
  });
75
58
  export type PortsList = z.infer<typeof PortsListSchema>;
76
59
  export const PortParamSchema = z.object({ port: z.number().int().min(1).max(65535).describe("Which port.") });
77
- // `previewUrl` is absent on a loopback/no-tunnel sandbox, the slot is mapped, but no public hostname exists.
78
60
  export const PortForwardResultSchema = z.object({
79
61
  previewUrl: z
80
62
  .string()