@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,21 +1,13 @@
1
1
  import { z } from "zod";
2
2
  import { AccountUsageSchema } from "./plan-limits.js";
3
3
  import { KeyedProviderSchema } from "./provider-subscriptions.js";
4
- // Claude uses the PKCE authorize-URL + paste-back handshake (start → exchange). Codex uses OpenAI's device-code
5
- // flow (start → poll): the browser signs in at verificationUri and enters userCode; the daemon polls until done.
6
- // A sandbox can hold several accounts per provider side by side: `id` is the daemon-minted store key, `label`
7
- // the user's display name (auto-filled from the sign-in identity where the token carries one). Tokens never
8
- // ride this shape, connection status is existence in the list.
4
+ // Claude uses PKCE paste-back (start → exchange); Codex uses OpenAI's device-code flow (start → poll). A sandbox can
5
+ // hold several accounts per provider; `id` is the store key, `label` the display name. Tokens never ride this shape —
6
+ // connection is existence in the list.
9
7
 
10
8
  export const OauthAccountSchema = z.object({
11
9
  id: z.string().describe("The account's id, which is what a turn names to spend on it and what disconnecting takes."),
12
10
  label: z.string().describe("What it is called here, which somebody can change."),
13
- // WHO this account signs in as, in the provider's own words. Anthropic returns the email and the
14
- // organization alongside the tokens, so a connection can name itself instead of arriving as a second row
15
- // called "Claude". Kept BESIDE `label` rather than folded into it: the label is the user's to rename, and a
16
- // renamed account still has to be able to say whose it is. Absent when the provider tells us nothing (a
17
- // pasted API key carries no identity), which is exactly when renaming is the only answer, so every
18
- // sandbox-owned account can be renamed.
19
11
  email: z
20
12
  .string()
21
13
  .optional()
@@ -25,18 +17,11 @@ export const OauthAccountSchema = z.object({
25
17
  organization: z.string().optional().describe("Which organisation it belongs to, where the provider says."),
26
18
  scope: z.string().optional().describe("What the credential is permitted to do, in the provider's terms."),
27
19
  connectedAt: z.number().describe("When it was connected, in milliseconds."),
28
- // Set only when the account's stored credential can no longer be refreshed (revoked/expired refresh token)
29
- //, the user must reconnect. Absent ⇒ healthy or not-yet-probed; `detail` carries the reason for the UI.
30
- // Provider-agnostic; only Codex probes it today (Claude refreshes on-demand, Grok's tokens are OpenCode's).
31
20
  needsReauth: z
32
21
  .boolean()
33
22
  .optional()
34
23
  .describe("Its stored credential can no longer be renewed and somebody has to sign in again. Absent means healthy, or not checked yet."),
35
24
  detail: z.string().optional().describe("Why, in words a person can act on."),
36
- // The account's last known subscription-usage snapshot, so the picker can show what's left on each account
37
- // before the user commits a turn to one. Absent until a reading exists for it, an unmeasured account reads
38
- // as unknown, never 0%. Claude is the provider that fills it here, because its stream reports the windows;
39
- // the routed subscriptions carry the identical field on TranslatorAccount, filled by a pulled reading.
40
25
  usage: AccountUsageSchema.optional().describe(
41
26
  "How full its plan limits were when last measured, so a picker can show what is left before committing work to it. Absent until a reading exists, which reads as unknown rather than as nothing left.",
42
27
  ),
@@ -48,12 +33,7 @@ export const OauthAccountListSchema = z.object({
48
33
  .describe("The connected accounts. Tokens never travel in this shape: being in this list is what connected means."),
49
34
  });
50
35
  export type OauthAccountList = z.infer<typeof OauthAccountListSchema>;
51
- /* RE-MEASURE THIS PROVIDER'S PLAN LIMITS BEFORE ANSWERING, rather than serving whatever reading is current
52
- * enough by the daemon's own bound. Every ordinary read of the list wants that bound, it is what keeps a page
53
- * load off the upstream quota endpoint, but a person who has just changed something about the account
54
- * (a seat downgraded, a plan swapped, another device's spend) is asking precisely whether the reading they can
55
- * see is still true, and an answer from the last minute cannot tell them. Read off the query string, so the
56
- * caller says it as `?force=1`. */
36
+ // Read off the query string as `?force=1`.
57
37
  export const AccountListQuerySchema = z.object({
58
38
  force: z
59
39
  .stringbool()
@@ -64,24 +44,16 @@ export const AccountListQuerySchema = z.object({
64
44
  });
65
45
  // Address one account of a provider (disconnect, and the turn's `account`).
66
46
  export const AccountIdSchema = z.object({ id: z.string().min(1).describe("Which account.") });
67
- // Rename one account of a provider whose credential the sandbox owns. Blank ⇒ the daemon falls back to the
68
- // derived name, so clearing a label restores the sign-in identity rather than leaving a nameless row.
47
+ // Only for accounts whose credential the sandbox itself owns.
69
48
  export const AccountRenameSchema = z.object({
70
49
  id: z.string().min(1).describe("Which account."),
71
50
  label: z.string().max(80).describe("The new name. Blank restores the one derived from the sign-in, rather than leaving a nameless row."),
72
51
  });
73
- /* ONE SIGN-IN SHAPE FOR EVERY ACCOUNT THE SANDBOX ITSELF HOLDS, whatever the vendor's mechanism underneath.
74
- *
75
- * Four handshakes used to answer four shapes, and the shapes differed in where the SECRET lived during the
76
- * handshake. Anthropic's is paste-back: the browser shows a code and the user brings it here. Cursor's PKCE
77
- * verifier must never leave the process that generated it (anyone holding it can redeem the login and mint a
78
- * durable key), so the daemon runs the whole flow and the caller only watches the account list. xAI's is a
79
- * device code. Meta's and Z.ai's mint the vendor's own key, by a device poll or by a redirect that dead-ends in
80
- * the user's address bar. Every one of them is now the daemon's to hold: nothing redeemable is on this shape,
81
- * and the one thing the caller can hand back (a code off a page, or the address a redirect landed on) goes to
82
- * `complete` with the attempt's handshake. `flow` says how the attempt ENDS, which is the only thing a card
83
- * cannot infer from the fields: a device sign-in finishes upstream and the account appears on its own; a
84
- * redirect needs the landing address brought back; a paste needs the code the page showed. */
52
+ // One shape for every sign-in, whatever the vendor's mechanism; nothing redeemable rides on it, only the daemon ever
53
+ // holds a secret. `flow` says how the attempt ends, which no other field can tell you:
54
+ // device: finishes upstream; watch the account list.
55
+ // redirect: needs the landing address brought back.
56
+ // paste: needs the code the page showed.
85
57
  export const LoginFlowSchema = z.enum(["device", "redirect", "paste"]);
86
58
  export type LoginFlow = z.infer<typeof LoginFlowSchema>;
87
59
  export const LoginStartSchema = z.object({
@@ -100,32 +72,26 @@ export const LoginStartSchema = z.object({
100
72
  expiresAt: z.number().describe("When this attempt stops being answerable, in milliseconds, so a card can stop waiting instead of spinning."),
101
73
  });
102
74
  export type LoginStart = z.infer<typeof LoginStartSchema>;
103
- // The estate to sign in to, where a provider has more than one (Z.ai's international and mainland plans). Absent
104
- // takes the provider's default, which is what a provider with a single estate always sends.
75
+ // e.g. Z.ai's international vs. mainland plans.
105
76
  export const LoginRequestSchema = z.object({
106
77
  variant: z.string().min(1).optional().describe("Which estate to sign in to. Absent takes the provider's default."),
107
78
  });
108
- /* The half a person brings back, for the two flows that have one: the code the page showed (a paste), or the
109
- * whole address a redirect landed on. Not the handshake's state, unlike the translator's version below: that
110
- * one addresses a session CLIProxyAPI holds, so the state has to travel, while this handshake is held right
111
- * here and taking the caller's word for its own state would be checking a claim against itself. */
79
+ // Only the two flows needing something back (paste's code, redirect's address) supply one; no state field, unlike the
80
+ // translator's — this handshake is held right here, so the caller's own state would be checking a claim against itself.
112
81
  export const LoginCompleteSchema = z.object({
113
82
  handshake: z.string().min(1).describe("Which attempt this belongs to."),
114
83
  code: z.string().optional().describe("The code the sign-in page showed, for a paste sign-in."),
115
84
  redirectUrl: z.string().optional().describe("The address the browser was sent to, whole, for a redirect sign-in. The grant is inside it."),
116
85
  label: z.string().optional().describe("What to call the account. Blank derives one from the sign-in."),
117
86
  });
118
- // What finishing hands back: the account, where the exchange answers with one at once (a paste); absent where
119
- // the daemon still has a mint to do behind the answer and the row lands in the account list minutes later.
87
+ // Absent when the daemon still has minting to do; the row lands in the account list minutes later.
120
88
  export const LoginCompletedSchema = z.object({
121
89
  account: OauthAccountSchema.optional().describe("The account it connected, where the sign-in ends here. Absent means keep watching the account list."),
122
90
  });
123
- // Abandon a sign-in nobody completed, so the daemon stops polling the vendor for it. Ordinary tidiness rather
124
- // than a security boundary: an unanswered attempt also times out on its own (see `expiresAt`).
91
+ // Tidiness, not a security boundary: an unanswered attempt also times out on its own (`expiresAt`).
125
92
  export const LoginCancelSchema = z.object({ handshake: z.string().min(1).describe("Which attempt to stop waiting on.") });
126
- // A routed-provider subscription login start (codex/grok/kimi/gemini via CLIProxyAPI). Device flows poll to
127
- // completion after the user approves upstream; redirect flows need the browser's landing URL pasted back. The
128
- // explicit flow discriminator matters even when a provider's verification URL already embeds its optional code.
93
+ // codex/grok/kimi/gemini via CLIProxyAPI; `flow` is explicit even when a provider's URL already embeds an optional
94
+ // code.
129
95
  export const TranslatorStartSchema = z.object({
130
96
  url: z.string().describe("The page to open."),
131
97
  code: z.string().describe("The one-time code, where the provider uses one."),
@@ -136,28 +102,15 @@ export const TranslatorStartSchema = z.object({
136
102
  "Which shape this is. A device sign-in finishes by itself and you poll the account list; a redirect needs the address it landed on handed back. Said outright rather than guessed at from whether a code happens to exist.",
137
103
  ),
138
104
  });
139
- // The paste-back half of a redirect login: the URL the provider sent the browser to, carrying the grant as
140
- // ?code=&state=. `state` ties it to the handshake that issued it, the translator rejects a mismatch.
105
+ // Grant rides in the URL as `?code=&state=`.
141
106
  export const TranslatorCompleteSchema = z.object({
142
107
  provider: KeyedProviderSchema.describe("Which provider."),
143
108
  redirectUrl: z.string().min(1).describe("The address the browser was sent to, whole. The grant is inside it."),
144
109
  state: z.string().min(1).describe("The handshake this belongs to. A mismatch is refused."),
145
110
  });
146
- // A provider's model catalog, resolved daemon-side from live discovery with a persisted last-known-good list and
147
- // a seed floor (Grok via opencode.ts xaiModels, Codex via codex-models.ts, Claude via the Agent SDK's
148
- // supportedModels), never empty, so the picker is never blank. `label` is the provider's display name; `default`
149
- // is the model a fresh chat on that provider seeds (always present). Served by the one catalog route every
150
- // provider shares. `efforts` is the reasoning-effort tiers the model accepts (Claude reports them per model);
151
- // empty ⇒ the client's default tiers.
152
- //
153
- // EVERY field here is provider-reported, nothing about a model is curated in this repo, so a new release or a
154
- // renamed family flows to the UI with no code change. Providers differ in how much they publish: the Claude
155
- // Agent SDK reports a display name, a capability description, effort tiers, and capability flags, while the
156
- // Some OpenAI-compatible /v1/models endpoints report ids only, those rows render label-only, and that absence
157
- // is the honest answer rather than something to paper over with a hand-written table.
158
- //
159
- // ORDER IS MEANINGFUL: `models` arrives in the provider's own preference order, which is what the picker sorts
160
- // by, and `default` is the provider's own default. Neither is re-ranked locally.
111
+ // Resolved daemon-side (live discovery, a persisted fallback, a seed floor), never empty. Every field is
112
+ // provider-reported, nothing curated here, so an id-only provider renders label-only rather than a hand-written table.
113
+ // Order is meaningful: the provider's own preference order, never re-ranked.
161
114
  export const ModelBadgeSchema = z.enum(["reasoning", "fast"]);
162
115
  export type ModelBadge = z.infer<typeof ModelBadgeSchema>;
163
116
  export const ModelSchema = z.object({
@@ -171,14 +124,8 @@ export const ModelSchema = z.object({
171
124
  "What it is good for, in the provider's own words. Absent where the provider publishes only ids, which is the honest answer rather than something to paper over with a hand-written table.",
172
125
  ),
173
126
  badges: z.array(ModelBadgeSchema).optional().describe("What it is known for, where the provider says so."),
174
- /* HOW MUCH THE SERVER WILL ACCEPT IN ONE REQUEST, where the server says so, and the one field here that a
175
- * turn is refused against rather than merely rendered (agent/context-budget.ts).
176
- *
177
- * The SERVED window, never the weights' training length. An inference server takes its context size from a
178
- * flag and then clamps it to the memory it actually has, so a 3B model whose GGUF advertises 131k can be
179
- * serving 16k, and it is the 16k that refuses the request. Read from llama.cpp's /props and vLLM's
180
- * `max_model_len`; absent for every provider that publishes no such number, which is most of them, and
181
- * absent means unknown rather than unlimited: nothing gates on a window it was never told. */
127
+ // The served window, not the training length — memory can clamp it lower. Turns are refused against this. Absent
128
+ // means unknown, never unlimited.
182
129
  contextWindow: z.number().optional().describe("How many tokens this model will accept in one request, where the server publishes it."),
183
130
  });
184
131
  export type Model = z.infer<typeof ModelSchema>;
@@ -1,16 +1,7 @@
1
1
  import { z } from "zod";
2
- import { TRANSLATOR_PROVIDERS, type TranslatorProvider } from "../provider-specs.js";
3
- // The providers whose model can run UNDER the Claude Code harness through the bundled translator (CLIProxyAPI),
4
- // which holds their SUBSCRIPTION OAuth and re-serves it behind an Anthropic endpoint. The `claude` provider is
5
- // absent, native Anthropic OAuth serves it directly, without the translator. Codex, Grok and Gemini also have a
6
- // native runtime and so carry the harness axis; Kimi is routed-only, so its turns always use Claude Code.
7
- //
8
- // Gemini is in BOTH camps and that is not a contradiction: its native runtime (OpenCode) reaches Google through
9
- // this same translator and these same auth files. The harness axis picks the loop; the translator is the road
10
- // under either.
11
- //
12
- // DERIVED from the provider table's `auth.kind`, never listed here: this enum and the accounts schema built on
13
- // it (TranslatorAccountsSchema) and the daemon's CLIProxyAPI id map are three readings of one fact, and they
14
- // used to be three hand-kept lists that had to agree.
2
+ import { TRANSLATOR_PROVIDERS, type TranslatorProvider } from "../models/provider-specs.js";
3
+ // Providers reachable via the translator (CLIProxyAPI), which holds their subscription OAuth behind an Anthropic
4
+ // endpoint; `claude` is absent, served natively. Gemini is in both camps: its native runtime reaches Google through
5
+ // this same translator. Derived from the provider table's `auth.kind`, never listed here.
15
6
  export const KeyedProviderSchema = z.enum(TRANSLATOR_PROVIDERS);
16
7
  export type KeyedProvider = TranslatorProvider;
@@ -1,21 +1,15 @@
1
1
  // public: the workspace outbox
2
2
  import { z } from "zod";
3
- // The mirror image of the reference shelf. Files under the workspace's `public/` directory are served as static
4
- // files at public-<slot>-<sandboxId>.<zone>, with no auth in front of them, the process-free half of preview
5
- // (a panel needs a running dev server; a file needs nothing). The directory's existence is the switch: it is
6
- // absent until something is published and removed again when the last file leaves, so "publishing is off" is
7
- // the resting state rather than a flag someone has to remember to set back.
3
+ // Files under `public/` are served as static, unauthenticated files at public-<slot>-<sandboxId>.<zone> — the
4
+ // process-free half of preview. The directory's existence is the switch: absent until something is published, removed
5
+ // again when the last file leaves.
8
6
 
9
7
  export const PublicFileSchema = z.object({
10
- // Outbox-relative, forward-slash ("report.pdf", "site/index.html").
8
+ // Forward-slash, e.g. "report.pdf", "site/index.html".
11
9
  path: z.string().describe("Where it sits inside the outbox."),
12
10
  size: z.number().describe("Size in bytes."),
13
11
  modifiedAt: z.number().describe("When it last changed, in milliseconds."),
14
- // The file's public URL. Absent when the sandbox has no tunnel, or when a guard refuses this file.
15
12
  url: z.string().optional().describe("Its public address. Absent when this sandbox has no outside address, or when the file is being refused."),
16
- // Why a file sitting in the outbox is NOT served, a hidden name, a credential-shaped name, contents that
17
- // match a known token format, or sheer size. The publisher reads it here; a stranger requesting the same
18
- // file only ever gets the same 404 every other miss returns, so this list can't be probed from outside.
19
13
  blocked: z
20
14
  .string()
21
15
  .optional()
@@ -24,15 +18,11 @@ export const PublicFileSchema = z.object({
24
18
  ),
25
19
  });
26
20
  export type PublicFile = z.infer<typeof PublicFileSchema>;
27
- // `url` is the outbox root, the base every file's URL hangs off, and what the view shows as "your public
28
- // address". Absent on a loopback/no-tunnel sandbox, which has nowhere to publish to.
29
21
  export const PublicListSchema = z.object({
30
22
  url: z.string().optional().describe("Your public address, which every file's own hangs off. Absent on a sandbox with nowhere to publish to."),
31
23
  files: z.array(PublicFileSchema).describe("What the outbox holds."),
32
24
  });
33
25
  export type PublicList = z.infer<typeof PublicListSchema>;
34
- // A WORKSPACE-relative path (the space the file tree speaks) to copy into the outbox. A copy, not a move: the
35
- // repo a build output came from must not lose it because someone shared it.
36
26
  export const PublishSchema = z.object({
37
27
  path: z
38
28
  .string()
@@ -41,7 +31,6 @@ export const PublishSchema = z.object({
41
31
  "What to publish, as a workspace path. It is copied rather than moved, so a repository does not lose its build output because somebody shared it.",
42
32
  ),
43
33
  });
44
- // An OUTBOX-relative path to withdraw, the path space PublicFile.path speaks, not the workspace's.
45
34
  export const UnpublishSchema = z.object({
46
35
  path: z.string().min(1).describe("What to withdraw, as a path inside the outbox rather than a workspace path."),
47
36
  });
@@ -1,19 +1,12 @@
1
1
  // push: notifications to the owner's devices
2
2
  import { z } from "zod";
3
- // The daemon is the only tier that knows what the agent is doing, so it is the sender. A registration is
4
- // per-DEVICE and comes in two kinds, distinguished by who can be posted to directly:
5
- // webpush a browser (including the Android TWA, which IS Chrome). The endpoint is minted by that
6
- // browser's push service and the daemon sends to it directly, end-to-end encrypted.
7
- // relay a native app install (the iOS shell), whose OS push service (APNs) only accepts sends from
8
- // the app's vendor. The daemon posts plain JSON to the platform's push relay, which holds the
9
- // vendor credential and forwards. The payload transits the relay readable, the price of Apple
10
- // requiring the vendor in the loop, which is why the channel records WHERE to post (`url`)
11
- // rather than the daemon knowing any platform by name.
12
- // Channels live here and not on the platform because the daemon is on the command path: the platform would
13
- // have to be told about every turn to be useful.
3
+ // The daemon is the only tier that knows what the agent is doing, so it is the sender. A registration is per-device, in
4
+ // two kinds:
5
+ // webpush: a browser (including the Android TWA); the daemon sends to its push service directly, end-to-end encrypted.
6
+ // relay: a native app (iOS); its OS push service only accepts sends from the vendor, so the daemon posts through a
7
+ // relay, which can read the payload.
14
8
 
15
- // A browser's PushSubscription, in the exact shape `web-push` consumes, the browser produces it via
16
- // PushManager.subscribe() and the client posts it back verbatim, so the daemon never reshapes it.
9
+ // Exact shape `web-push` consumes, from `PushManager.subscribe()`; posted back verbatim.
17
10
  export const WebPushChannelSchema = z.object({
18
11
  kind: z.literal("webpush").describe("A browser, which the sandbox can reach directly and encrypt end to end."),
19
12
  endpoint: z.url().describe("Where that browser's push service accepts sends. It also identifies the device everywhere else in this group."),
@@ -25,16 +18,12 @@ export const WebPushChannelSchema = z.object({
25
18
  .describe("What the browser handed you when it subscribed. Post it back exactly as it came; nothing reshapes it."),
26
19
  });
27
20
  export type WebPushChannel = z.infer<typeof WebPushChannelSchema>;
28
- // A native install, addressed through a push relay. `secret` is the send capability the relay minted at
29
- // registration, the daemon proves it may notify this device by presenting it; the relay never learns which
30
- // sandbox is calling. `deviceId` doubles as the channel's identity (see channelId below).
31
21
  export const RelayChannelSchema = z.object({
32
22
  kind: z
33
23
  .literal("relay")
34
24
  .describe(
35
25
  "A native app, whose operating system only accepts sends from the app's publisher, so the sandbox posts through a relay instead. The message passes through that relay readable, which is the price of the publisher having to be in the loop.",
36
26
  ),
37
- // The absolute URL the daemon POSTs a send to, minted by the relay at registration, stored verbatim.
38
27
  url: z.url().describe("Where to post a send. Recorded rather than assumed, so the sandbox need not know any platform by name."),
39
28
  deviceId: z.string().min(1).describe("The device's id, which also identifies this registration everywhere else in this group."),
40
29
  secret: z.string().min(1).describe("Proof that this sandbox may notify this device. The relay never learns which sandbox is calling."),
@@ -42,16 +31,9 @@ export const RelayChannelSchema = z.object({
42
31
  export type RelayChannel = z.infer<typeof RelayChannelSchema>;
43
32
  export const PushChannelSchema = z.discriminatedUnion("kind", [WebPushChannelSchema, RelayChannelSchema]);
44
33
  export type PushChannel = z.infer<typeof PushChannelSchema>;
45
- // The one identity every push route speaks: subscribe upserts by it, unsubscribe and the config probe name
46
- // devices by it. Shape-derived so the daemon and the web app can never disagree about what identifies a row,
47
- // a browser is its push endpoint, a native install is the deviceId its relay registration minted.
34
+ // The one identity every push route uses (subscribe, unsubscribe, config); derived from the channel's own shape so the
35
+ // daemon and web app can't disagree about it.
48
36
  export const channelId = (channel: PushChannel): string => (channel.kind === "webpush" ? channel.endpoint : channel.deviceId);
49
- // What the service worker renders. `url` is the in-app route the notification opens (the click handler
50
- // focuses an existing tab there rather than spawning a new one); `tag` collapses repeats, a second
51
- // "waiting on you" for the same conversation REPLACES the first instead of stacking. Push payloads are
52
- // capped by the push services themselves (~4KB after encryption), which is why nothing here carries a
53
- // transcript or a diff, the notification is a pointer back into the workspace, not a delivery mechanism
54
- // for content.
55
37
  export const PushNotificationSchema = z.object({
56
38
  title: z.string().min(1).describe("The headline."),
57
39
  body: z
@@ -64,8 +46,6 @@ export const PushNotificationSchema = z.object({
64
46
  .string()
65
47
  .optional()
66
48
  .describe("Collapses repeats: a second notification with the same tag replaces the first instead of stacking beside it."),
67
- // Whether the notification stays on screen until dismissed. Set for the "agent is blocked on you" cases,
68
- // where a notification that auto-dismisses is a request that silently went unanswered.
69
49
  requireInteraction: z
70
50
  .boolean()
71
51
  .optional()
@@ -74,9 +54,6 @@ export const PushNotificationSchema = z.object({
74
54
  ),
75
55
  });
76
56
  export type PushNotification = z.infer<typeof PushNotificationSchema>;
77
- // The VAPID public key a browser needs to subscribe (native shells ignore it), plus whether the asking
78
- // device's channel is already known, so the settings toggle can render its true state instead of trusting
79
- // the device's permission alone (a granted permission with no daemon-side row would notify nothing).
80
57
  export const PushConfigSchema = z.object({
81
58
  publicKey: z.string().describe("The key a browser needs in order to subscribe. Native apps ignore it."),
82
59
  subscribed: z
@@ -88,8 +65,6 @@ export const PushConfigSchema = z.object({
88
65
  export const PushChannelIdSchema = z.object({
89
66
  id: z.string().min(1).describe("Which device: a browser's push address, or a native install's device id."),
90
67
  });
91
- // The optional `id` says WHICH device is asking (see channelId); without it `subscribed` could only speak
92
- // for the sandbox as a whole, which is never the question the settings toggle needs answered.
93
68
  export const PushConfigQuerySchema = z.object({
94
69
  id: z
95
70
  .string()
@@ -97,9 +72,6 @@ export const PushConfigQuerySchema = z.object({
97
72
  .optional()
98
73
  .describe("Which device is asking. Without it the answer can only speak for the sandbox as a whole, which is rarely the question."),
99
74
  });
100
- // What a test send actually achieved. `{ ok: true }` would be a lie the one place it matters most: the button
101
- // exists to prove a chain the user cannot inspect, so "the daemon accepted the request" is not the answer to
102
- // the question being asked. A count separates "your OS swallowed it" from "nothing was sent at all".
103
75
  export const PushTestSchema = z.object({
104
76
  delivered: z
105
77
  .number()
@@ -1,8 +1,7 @@
1
1
  // secrets: user-supplied env-var secrets the daemon writes to desired-state/.env
2
2
  import { z } from "zod";
3
- // The web posts a Cloudflare token / GitHub PAT / another-host SSH key straight to the sandbox daemon (never
4
- // through the platform); `apply` reloads .env each run so a new secret is picked up with NO restart. `list`
5
- // returns KEYS ONLY, the values never leave the sandbox; `reveal` is the one deliberate, owner-only exception.
3
+ // Straight to the sandbox daemon, never through the platform; `apply` reloads .env with no restart. `list` returns keys
4
+ // only; `reveal` is the one owner-only exception that returns a value.
6
5
  export const SecretSetSchema = z.object({
7
6
  key: z
8
7
  .string()
@@ -17,28 +16,8 @@ export const SecretKeysSchema = z.object({
17
16
  export const SecretKeyParamSchema = z.object({ key: z.string().describe("Which secret, by name.") });
18
17
  export const SecretRevealSchema = z.object({ value: z.string().describe("The value itself. The only place in this API one is ever returned.") });
19
18
 
20
- /* A CREDENTIAL THE AGENT MAY NOT USE UNTIL A NAMED PERSON SAYS SO, and who that person is.
21
- *
22
- * Masking already answers "can the model SEE this value" (no: it reads a `{{secret:name}}` reference), and
23
- * the answer was enough while the only question was disclosure. It is not the whole question. A reference the
24
- * model can write is a credential the model can SPEND, at whatever moment its own reasoning arrives at, and
25
- * for the small set of credentials where one wrong spend is the incident — the production database's
26
- * password, the company X account, the card-shaped connector — the owner wants the moment itself decided by a
27
- * person, not the storage of the value. That is what a gate is: not a second lock on the vault, a REQUIRED
28
- * CLICK in front of the exit.
29
- *
30
- * WHAT IT IS NOT A WALL AGAINST. A shell in this container runs as the workspace's owner and the policy file
31
- * sits beside the vault it guards; anything that can read one can read the other, and a compromised container
32
- * is out of scope here exactly as it is for the vault (SECURITY.md). The gate is a wall against the AGENT's
33
- * own judgment being the last word — a prompt-injected model can ask for a release and cannot grant itself
34
- * one — and against the ordinary accident of a turn reaching for the live credential when the staging one was
35
- * meant.
36
- *
37
- * THE APPROVERS ARE AN EXACT LIST, not a role floor, and the owner is not on it implicitly. "Only Bob may
38
- * release the production password" is the sentence people actually mean, and a floor cannot say it: a floor of
39
- * `maintainer` says "anyone senior enough", which is the thing the owner was trying to narrow. So the list is
40
- * the list, the owner adds themselves when they mean themselves, and a click from anybody else is refused
41
- * server-side with the card left standing for whoever can. */
19
+ // A wall against the agent's own judgment, not a compromised container: a shell here can read the policy same as the
20
+ // vault. Approvers are an exact list, never a role floor; the owner isn't on it unless added.
42
21
  export const CredentialGateScopeSchema = z
43
22
  .enum(["use", "conversation"])
44
23
  .describe(
@@ -46,29 +25,21 @@ export const CredentialGateScopeSchema = z
46
25
  );
47
26
  export type CredentialGateScope = z.infer<typeof CredentialGateScopeSchema>;
48
27
 
49
- // What a gate is ABOUT: one stored secret by its reference name, or one whole connected capability (a
50
- // connector's env, a browser account's profile, an MCP server) by its id. Two kinds rather than one because
51
- // they are withheld differently — a secret is refused at the exit it would resolve at, a capability is simply
52
- // never mounted for the turn — and the subject namespaces are disjoint anyway (env keys are SCREAMING_SNAKE).
28
+ // Withheld differently: a secret is refused at the exit it would resolve at, a capability is simply never mounted for
29
+ // the turn.
53
30
  export const CredentialGateKindSchema = z
54
31
  .enum(["secret", "capability"])
55
32
  .describe("Whether this gate covers one stored secret, by the name a reference carries, or one whole connected capability, by its id.");
56
33
  export type CredentialGateKind = z.infer<typeof CredentialGateKindSchema>;
57
34
 
58
- /* WHICH EXIT A RELEASE WAS ASKED FOR, so the card can say what is about to happen in the reader's terms
59
- * rather than in the daemon's. The three secret exits are the ones the use ledger already names (a shell
60
- * command, a JS run's script, a browser keystroke); `session` is a whole capability being mounted for the
61
- * turn (a signed-in browser profile, a connector's env, an MCP server), and `otp` is one derived one-time
62
- * code off a stored TOTP seed. */
63
35
  export const CredentialLaneSchema = z
64
36
  .enum(["shell", "code", "browser", "session", "otp"])
65
37
  .describe("What the credential was about to be used for: a shell command, a script, typing into a page, mounting a connected account, or one one-time code.");
66
38
  export type CredentialLane = z.infer<typeof CredentialLaneSchema>;
67
39
 
68
40
  export const CredentialGateSchema = z.object({
69
- // An env/generated KEY (`DATABASE_URL`), or a capability id (`reddit`, `komodo`). A vault name's field
70
- // half (`reddit/password`) is deliberately NOT a subject: gating one field of a connected account and not
71
- // its neighbours would be a gate with a hole in it, so the whole capability is the unit.
41
+ // Never a vault field (`reddit/password`): gating part of a capability and not the rest would be a gate with a hole
42
+ // in it.
72
43
  subject: z.string().min(1).describe("What is gated: a secret's name, or a connected capability's id."),
73
44
  kind: CredentialGateKindSchema,
74
45
  approvers: z
@@ -92,17 +63,12 @@ export const CredentialGateSubjectParamSchema = z.object({
92
63
  subject: z.string().min(1).describe("Which gate, by the secret name or capability id it covers."),
93
64
  });
94
65
 
95
- /* THE AGENT'S OWN DOOR, `secrets request <subject> --why "…"`. A gated capability is ABSENT from a turn
96
- * rather than refused inside it (its profile is not mounted, its env is not exported), so the model cannot
97
- * discover the gate by tripping over it the way a secret reference does — it would conclude the account is
98
- * disconnected and go looking for another road. This route is the road: it raises the same card the exits
99
- * raise, and a release is worded as a grant for the REST OF THE CONVERSATION, because a session-shaped
100
- * credential cannot be handed out for one use. */
66
+ // A gated capability is absent from a turn, not refused inside it, so the model can't discover the gate by tripping
67
+ // over it. A release here covers the rest of the conversation, since a session credential can't be single-use.
101
68
  export const CredentialRequestSchema = z.object({
102
69
  subject: z.string().min(1).describe("What to ask for: the secret's name, or the connected capability's id."),
103
70
  why: z.string().max(280).optional().describe("One line on what it is for. The only words on the card that are the agent's."),
104
- // Which conversation's chat the card goes up in, filled by the CLI from the turn's own environment, so
105
- // the model cannot aim a card at somebody else's conversation.
71
+ // Filled by the CLI itself, so the model cannot aim a card at somebody else's conversation.
106
72
  conversationId: z.string().optional().describe("Which conversation to raise the card in. The CLI fills this from the running turn."),
107
73
  });
108
74
 
@@ -112,27 +78,25 @@ export const CredentialGrantSchema = z.object({
112
78
  message: z.string().describe("What the grant means in practice, and what to do next."),
113
79
  });
114
80
 
115
- // One entry per secret the sandbox knows about, across every store: intent env secrets and intentic-generated
116
- // passwords (from the desired-state repo), capability credentials, and AI-provider accounts. Values never ride
117
- // this shape, `revealable` says whether `reveal` can return one (everything but provider accounts).
81
+ // Across every store: env/generated secrets, capability credentials, AI-provider accounts. Values never ride this
82
+ // shape; `revealable` says whether `reveal` can return one (everything but provider accounts).
118
83
  export const SecretInventoryEntrySchema = z.object({
119
- // Env-var key for env|generated; `<provider>:<accountId>` for provider entries; capability instance id
120
- // otherwise. Unique within the inventory, several accounts of one provider each get their own entry.
84
+ // Env-var key for env|generated; `<provider>:<accountId>` for provider; capability instance id otherwise.
121
85
  key: z.string().describe("What identifies it. Unique across the whole inventory, so several accounts of one provider each get their own entry."),
122
86
  kind: z
123
87
  .enum(["env", "generated", "capability", "provider"])
124
88
  .describe("Where it came from: you set it, the sandbox generated it, a connection needs it, or it is a model account's credential."),
125
- // Display name for provider entries: "<ProviderName> · <accountLabel>". Absent on env/generated entries.
89
+ // e.g. "<ProviderName> · <accountLabel>" for provider entries; absent on env/generated.
126
90
  label: z.string().optional().describe("A friendlier name, for entries that have one."),
127
91
  status: z.enum(["missing", "set", "connected"]).describe("Whether it exists and, for a connection, whether it is working."),
128
- // The artifact resources referencing this secret ({$secret} refs); [] for capability/provider entries.
92
+ // Resources referencing it via `{$secret}` refs.
129
93
  requiredBy: z
130
94
  .array(z.object({ resourceId: z.string().describe("Which resource."), type: z.string().describe("What kind of resource it is.") }))
131
95
  .describe("What is waiting on it. Empty for a connection's or an account's own credential."),
132
- // Human-readable provenance, e.g. "desired-state/.env", the UI's "where does this live" line.
96
+ // e.g. "desired-state/.env".
133
97
  storedAt: z.string().describe("Where it actually lives, in words."),
134
98
  revealable: z.boolean().describe("Whether its value can be shown at all. Everything except a model account's credential can be."),
135
- // Forgejo Actions replication state, present only after adopt on env|generated entries.
99
+ // Forgejo Actions only, and only after adopt, on env|generated entries.
136
100
  ci: z
137
101
  .object({
138
102
  synced: z.boolean().describe("Whether the pipeline has it."),
@@ -140,10 +104,7 @@ export const SecretInventoryEntrySchema = z.object({
140
104
  })
141
105
  .optional()
142
106
  .describe("Whether a copy has been given to the build pipeline."),
143
- /* The newest row of the use ledger that concerns this entry, when the agent last SPENT it, on which lane
144
- * (a shell command, a JS run's script, a browser field), and where it went (the head of the command or
145
- * script, or the page's host). Names and destinations only, never values. Absent while a secret has never
146
- * been used, which most never are. */
107
+ // Records only the lane and a destination (command/script head, or page host) — never values.
147
108
  lastUse: z
148
109
  .object({
149
110
  at: z.number().describe("When, in milliseconds."),
@@ -152,16 +113,11 @@ export const SecretInventoryEntrySchema = z.object({
152
113
  .string()
153
114
  .optional()
154
115
  .describe("Where it went: the start of the command or script, or the site. Names and destinations only, never values."),
155
- // Who released it, when a gate made that use somebody's decision. Absent on an ungated use, which
156
- // is nearly all of them: the ledger row records a person only where a person was actually asked.
157
116
  approvedBy: z.string().optional().describe("Who released it for that use, when it is gated. Absent when nothing had to be approved."),
158
117
  })
159
118
  .optional()
160
119
  .describe("The last time an agent actually spent this secret. Absent while it never has been, which most never are."),
161
- /* THE APPROVAL THIS ENTRY IS BEHIND, joined on from the gate policy so the row can say "needs approval
162
- * from Bob" without a second call. Absent on the overwhelming majority of entries: gating is for the few
163
- * credentials where one wrong use is the incident, and a sandbox where everything asks is a sandbox where
164
- * nobody reads the cards. */
120
+ // Joined from the gate policy, so the row can name the approver without a second call.
165
121
  gate: z
166
122
  .object({
167
123
  approvers: z.array(z.string()).describe("Who may release it, by email. Nobody else can, whatever their role."),