@intentic/sandbox-contract 1.247.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 (883) 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 +13 -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 +39 -4
  69. package/dist/contracts/personas.contract.d.ts.map +1 -1
  70. package/dist/contracts/personas.contract.js +10 -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 +6 -80
  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 +10 -10
  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 +464 -447
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +54 -47
  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} +2 -4
  160. package/dist/models/model-pins.d.ts.map +1 -0
  161. package/dist/models/model-pins.js +22 -0
  162. package/dist/models/model-pins.js.map +1 -0
  163. package/dist/{model-roles.d.ts → models/model-roles.d.ts} +25 -30
  164. package/dist/models/model-roles.d.ts.map +1 -0
  165. package/dist/{model-roles.js → models/model-roles.js} +30 -27
  166. package/dist/models/model-roles.js.map +1 -0
  167. package/dist/{plan-pools.d.ts → models/plan-pools.d.ts} +1 -1
  168. package/dist/models/plan-pools.d.ts.map +1 -0
  169. package/dist/models/plan-pools.js.map +1 -0
  170. package/dist/models/prompt-complexity.d.ts.map +1 -0
  171. package/dist/models/prompt-complexity.js.map +1 -0
  172. package/dist/models/provider-specs.d.ts.map +1 -0
  173. package/dist/models/provider-specs.js.map +1 -0
  174. package/dist/policy/approvals-execution.d.ts.map +1 -0
  175. package/dist/policy/approvals-execution.js.map +1 -0
  176. package/dist/{batch-runs.d.ts → policy/batch-runs.d.ts} +5 -1
  177. package/dist/policy/batch-runs.d.ts.map +1 -0
  178. package/dist/{batch-runs.js → policy/batch-runs.js} +10 -7
  179. package/dist/policy/batch-runs.js.map +1 -0
  180. package/dist/policy/capability-env.d.ts.map +1 -0
  181. package/dist/policy/capability-env.js.map +1 -0
  182. package/dist/policy/capability-secrets.d.ts.map +1 -0
  183. package/dist/policy/capability-secrets.js.map +1 -0
  184. package/dist/{card-status.d.ts → policy/card-status.d.ts} +2 -2
  185. package/dist/policy/card-status.d.ts.map +1 -0
  186. package/dist/{card-status.js → policy/card-status.js} +1 -5
  187. package/dist/policy/card-status.js.map +1 -0
  188. package/dist/{command-classes.d.ts → policy/command-classes.d.ts} +6 -2
  189. package/dist/policy/command-classes.d.ts.map +1 -0
  190. package/dist/{command-classes.js → policy/command-classes.js} +48 -11
  191. package/dist/policy/command-classes.js.map +1 -0
  192. package/dist/{command-run.d.ts → policy/command-run.d.ts} +1 -1
  193. package/dist/policy/command-run.d.ts.map +1 -0
  194. package/dist/policy/command-run.js.map +1 -0
  195. package/dist/policy/control-scopes.d.ts +16 -0
  196. package/dist/policy/control-scopes.d.ts.map +1 -0
  197. package/dist/policy/control-scopes.js +26 -0
  198. package/dist/policy/control-scopes.js.map +1 -0
  199. package/dist/policy/credential-material.d.ts.map +1 -0
  200. package/dist/policy/credential-material.js.map +1 -0
  201. package/dist/policy/needs-action.d.ts.map +1 -0
  202. package/dist/policy/needs-action.js.map +1 -0
  203. package/dist/policy/output-fields.d.ts.map +1 -0
  204. package/dist/policy/output-fields.js.map +1 -0
  205. package/dist/policy/overlay-lint.d.ts.map +1 -0
  206. package/dist/policy/overlay-lint.js.map +1 -0
  207. package/dist/policy/owner-ticket.d.ts.map +1 -0
  208. package/dist/{owner-ticket.js → policy/owner-ticket.js} +1 -1
  209. package/dist/policy/owner-ticket.js.map +1 -0
  210. package/dist/{safety-policy.d.ts → policy/safety-policy.d.ts} +6 -5
  211. package/dist/policy/safety-policy.d.ts.map +1 -0
  212. package/dist/{safety-policy.js → policy/safety-policy.js} +12 -12
  213. package/dist/policy/safety-policy.js.map +1 -0
  214. package/dist/policy/search-globs.d.ts.map +1 -0
  215. package/dist/policy/search-globs.js.map +1 -0
  216. package/dist/protocol/container-requirements.d.ts +20 -0
  217. package/dist/protocol/container-requirements.d.ts.map +1 -0
  218. package/dist/protocol/container-requirements.js +23 -0
  219. package/dist/protocol/container-requirements.js.map +1 -0
  220. package/dist/{host-protocol.d.ts → protocol/host-protocol.d.ts} +1 -0
  221. package/dist/protocol/host-protocol.d.ts.map +1 -0
  222. package/dist/{host-protocol.js → protocol/host-protocol.js} +1 -0
  223. package/dist/protocol/host-protocol.js.map +1 -0
  224. package/dist/protocol/ingress-contract.d.ts.map +1 -0
  225. package/dist/{ingress-contract.js → protocol/ingress-contract.js} +1 -1
  226. package/dist/protocol/ingress-contract.js.map +1 -0
  227. package/dist/protocol/ingress-protocol.d.ts.map +1 -0
  228. package/dist/protocol/ingress-protocol.js.map +1 -0
  229. package/dist/protocol/listener-protocol.d.ts.map +1 -0
  230. package/dist/{listener-protocol.js → protocol/listener-protocol.js} +1 -1
  231. package/dist/protocol/listener-protocol.js.map +1 -0
  232. package/dist/{peer-dial.d.ts → protocol/peer-dial.d.ts} +4 -1
  233. package/dist/protocol/peer-dial.d.ts.map +1 -0
  234. package/dist/{peer-dial.js → protocol/peer-dial.js} +51 -10
  235. package/dist/protocol/peer-dial.js.map +1 -0
  236. package/dist/protocol/peer-mcp-server.d.ts.map +1 -0
  237. package/dist/protocol/peer-mcp-server.js.map +1 -0
  238. package/dist/protocol/request-id.d.ts.map +1 -0
  239. package/dist/protocol/request-id.js.map +1 -0
  240. package/dist/protocol/routes.d.ts.map +1 -0
  241. package/dist/protocol/routes.js.map +1 -0
  242. package/dist/{runner-protocol.d.ts → protocol/runner-protocol.d.ts} +1 -0
  243. package/dist/protocol/runner-protocol.d.ts.map +1 -0
  244. package/dist/{runner-protocol.js → protocol/runner-protocol.js} +2 -1
  245. package/dist/protocol/runner-protocol.js.map +1 -0
  246. package/dist/protocol/sse.d.ts.map +1 -0
  247. package/dist/protocol/sse.js.map +1 -0
  248. package/dist/{terminal-protocol.d.ts → protocol/terminal-protocol.d.ts} +1 -3
  249. package/dist/protocol/terminal-protocol.d.ts.map +1 -0
  250. package/dist/protocol/terminal-protocol.js.map +1 -0
  251. package/dist/protocol/webext-links.d.ts.map +1 -0
  252. package/dist/protocol/webext-links.js.map +1 -0
  253. package/dist/{webext-protocol.d.ts → protocol/webext-protocol.d.ts} +1 -0
  254. package/dist/protocol/webext-protocol.d.ts.map +1 -0
  255. package/dist/{webext-protocol.js → protocol/webext-protocol.js} +1 -0
  256. package/dist/protocol/webext-protocol.js.map +1 -0
  257. package/dist/schemas/activity.d.ts +2 -0
  258. package/dist/schemas/activity.d.ts.map +1 -1
  259. package/dist/schemas/activity.js +4 -0
  260. package/dist/schemas/activity.js.map +1 -1
  261. package/dist/schemas/agent.d.ts +17 -4
  262. package/dist/schemas/agent.d.ts.map +1 -1
  263. package/dist/schemas/agent.js +21 -4
  264. package/dist/schemas/agent.js.map +1 -1
  265. package/dist/schemas/agents.d.ts +17 -4
  266. package/dist/schemas/agents.d.ts.map +1 -1
  267. package/dist/schemas/agents.js +15 -4
  268. package/dist/schemas/agents.js.map +1 -1
  269. package/dist/schemas/approvals.d.ts.map +1 -1
  270. package/dist/schemas/approvals.js.map +1 -1
  271. package/dist/schemas/automations.d.ts +54 -28
  272. package/dist/schemas/automations.d.ts.map +1 -1
  273. package/dist/schemas/automations.js +26 -8
  274. package/dist/schemas/automations.js.map +1 -1
  275. package/dist/schemas/capabilities.d.ts +0 -8
  276. package/dist/schemas/capabilities.d.ts.map +1 -1
  277. package/dist/schemas/capabilities.js +0 -4
  278. package/dist/schemas/capabilities.js.map +1 -1
  279. package/dist/schemas/ci.d.ts +10 -0
  280. package/dist/schemas/ci.d.ts.map +1 -1
  281. package/dist/schemas/ci.js +9 -1
  282. package/dist/schemas/ci.js.map +1 -1
  283. package/dist/schemas/codebase-health.d.ts.map +1 -1
  284. package/dist/schemas/codebase-health.js.map +1 -1
  285. package/dist/schemas/devices.d.ts +90 -0
  286. package/dist/schemas/devices.d.ts.map +1 -1
  287. package/dist/schemas/devices.js +10 -1
  288. package/dist/schemas/devices.js.map +1 -1
  289. package/dist/schemas/engines.d.ts.map +1 -1
  290. package/dist/schemas/engines.js.map +1 -1
  291. package/dist/schemas/environment.d.ts.map +1 -1
  292. package/dist/schemas/environment.js.map +1 -1
  293. package/dist/schemas/exit.d.ts.map +1 -1
  294. package/dist/schemas/exit.js.map +1 -1
  295. package/dist/schemas/extension-updates.d.ts.map +1 -1
  296. package/dist/schemas/extension-updates.js.map +1 -1
  297. package/dist/schemas/git-history.d.ts.map +1 -1
  298. package/dist/schemas/git-history.js.map +1 -1
  299. package/dist/schemas/git.d.ts +80 -16
  300. package/dist/schemas/git.d.ts.map +1 -1
  301. package/dist/schemas/git.js +37 -25
  302. package/dist/schemas/git.js.map +1 -1
  303. package/dist/schemas/history.d.ts.map +1 -1
  304. package/dist/schemas/history.js.map +1 -1
  305. package/dist/schemas/hosts.d.ts.map +1 -1
  306. package/dist/schemas/hosts.js.map +1 -1
  307. package/dist/schemas/inventory.d.ts.map +1 -1
  308. package/dist/schemas/inventory.js.map +1 -1
  309. package/dist/schemas/issues.d.ts +0 -1
  310. package/dist/schemas/issues.d.ts.map +1 -1
  311. package/dist/schemas/issues.js +0 -1
  312. package/dist/schemas/issues.js.map +1 -1
  313. package/dist/schemas/logs.d.ts.map +1 -1
  314. package/dist/schemas/logs.js.map +1 -1
  315. package/dist/schemas/loops.d.ts.map +1 -1
  316. package/dist/schemas/loops.js +1 -1
  317. package/dist/schemas/loops.js.map +1 -1
  318. package/dist/schemas/maintenance.d.ts.map +1 -1
  319. package/dist/schemas/maintenance.js.map +1 -1
  320. package/dist/schemas/marketplace.d.ts +0 -4
  321. package/dist/schemas/marketplace.d.ts.map +1 -1
  322. package/dist/schemas/panels.d.ts.map +1 -1
  323. package/dist/schemas/panels.js.map +1 -1
  324. package/dist/schemas/personas.d.ts +49 -4
  325. package/dist/schemas/personas.d.ts.map +1 -1
  326. package/dist/schemas/personas.js +32 -5
  327. package/dist/schemas/personas.js.map +1 -1
  328. package/dist/schemas/plan-limits.d.ts +2 -4
  329. package/dist/schemas/plan-limits.d.ts.map +1 -1
  330. package/dist/schemas/plan-limits.js +5 -8
  331. package/dist/schemas/plan-limits.js.map +1 -1
  332. package/dist/schemas/ports.d.ts.map +1 -1
  333. package/dist/schemas/ports.js.map +1 -1
  334. package/dist/schemas/provider-oauth.d.ts.map +1 -1
  335. package/dist/schemas/provider-oauth.js.map +1 -1
  336. package/dist/schemas/provider-subscriptions.d.ts +1 -1
  337. package/dist/schemas/provider-subscriptions.d.ts.map +1 -1
  338. package/dist/schemas/provider-subscriptions.js +1 -1
  339. package/dist/schemas/provider-subscriptions.js.map +1 -1
  340. package/dist/schemas/public.d.ts.map +1 -1
  341. package/dist/schemas/public.js.map +1 -1
  342. package/dist/schemas/push.d.ts.map +1 -1
  343. package/dist/schemas/push.js.map +1 -1
  344. package/dist/schemas/secrets.d.ts.map +1 -1
  345. package/dist/schemas/secrets.js.map +1 -1
  346. package/dist/schemas/settings.d.ts +7 -5
  347. package/dist/schemas/settings.d.ts.map +1 -1
  348. package/dist/schemas/settings.js +18 -8
  349. package/dist/schemas/settings.js.map +1 -1
  350. package/dist/schemas/share.d.ts.map +1 -1
  351. package/dist/schemas/share.js.map +1 -1
  352. package/dist/schemas/shared.d.ts +4 -0
  353. package/dist/schemas/shared.d.ts.map +1 -1
  354. package/dist/schemas/shared.js +3 -0
  355. package/dist/schemas/shared.js.map +1 -1
  356. package/dist/schemas/system.d.ts +6 -0
  357. package/dist/schemas/system.d.ts.map +1 -1
  358. package/dist/schemas/system.js +10 -0
  359. package/dist/schemas/system.js.map +1 -1
  360. package/dist/schemas/terminal.d.ts.map +1 -1
  361. package/dist/schemas/terminal.js.map +1 -1
  362. package/dist/schemas/usage.d.ts.map +1 -1
  363. package/dist/schemas/usage.js.map +1 -1
  364. package/dist/schemas/vpn.d.ts.map +1 -1
  365. package/dist/schemas/vpn.js.map +1 -1
  366. package/dist/schemas/webext.d.ts.map +1 -1
  367. package/dist/schemas/webext.js.map +1 -1
  368. package/dist/schemas/workflows.d.ts +66 -9
  369. package/dist/schemas/workflows.d.ts.map +1 -1
  370. package/dist/schemas/workflows.js +6 -5
  371. package/dist/schemas/workflows.js.map +1 -1
  372. package/dist/schemas/workspace-repos.d.ts.map +1 -1
  373. package/dist/schemas/workspace-repos.js.map +1 -1
  374. package/dist/schemas/workspace-search.d.ts.map +1 -1
  375. package/dist/schemas/workspace-search.js.map +1 -1
  376. package/dist/schemas/workspace-setup.d.ts.map +1 -1
  377. package/dist/schemas/workspace-setup.js.map +1 -1
  378. package/dist/schemas/workspace-tree.d.ts.map +1 -1
  379. package/dist/schemas/workspace-tree.js.map +1 -1
  380. package/dist/state/arrival.d.ts.map +1 -0
  381. package/dist/{arrival.js → state/arrival.js} +1 -1
  382. package/dist/state/arrival.js.map +1 -0
  383. package/dist/state/contract-lock.d.ts.map +1 -0
  384. package/dist/{contract-lock.js → state/contract-lock.js} +1 -1
  385. package/dist/state/contract-lock.js.map +1 -0
  386. package/dist/{definition.d.ts → state/definition.d.ts} +21 -17
  387. package/dist/state/definition.d.ts.map +1 -0
  388. package/dist/{definition.js → state/definition.js} +4 -4
  389. package/dist/state/definition.js.map +1 -0
  390. package/dist/state/history-state.d.ts.map +1 -0
  391. package/dist/{history-state.js → state/history-state.js} +1 -0
  392. package/dist/state/history-state.js.map +1 -0
  393. package/dist/state/runtime-state.d.ts.map +1 -0
  394. package/dist/state/runtime-state.js.map +1 -0
  395. package/dist/state/starter.d.ts.map +1 -0
  396. package/dist/state/starter.js.map +1 -0
  397. package/dist/state/state-portability.d.ts.map +1 -0
  398. package/dist/state/state-portability.js.map +1 -0
  399. package/dist/state/versions.d.ts.map +1 -0
  400. package/dist/state/versions.js.map +1 -0
  401. package/dist/{workspace-state.d.ts → state/workspace-state.d.ts} +8 -5
  402. package/dist/state/workspace-state.d.ts.map +1 -0
  403. package/dist/{workspace-state.js → state/workspace-state.js} +25 -1
  404. package/dist/state/workspace-state.js.map +1 -0
  405. package/dist/{documents.d.ts → text/documents.d.ts} +1 -1
  406. package/dist/text/documents.d.ts.map +1 -0
  407. package/dist/{documents.js → text/documents.js} +1 -1
  408. package/dist/text/documents.js.map +1 -0
  409. package/dist/text/embed.d.ts.map +1 -0
  410. package/dist/text/embed.js.map +1 -0
  411. package/dist/text/mentions.d.ts.map +1 -0
  412. package/dist/text/mentions.js.map +1 -0
  413. package/dist/text/model-answer.d.ts +3 -0
  414. package/dist/text/model-answer.d.ts.map +1 -0
  415. package/dist/text/model-answer.js +3 -0
  416. package/dist/text/model-answer.js.map +1 -0
  417. package/dist/text/path-refs.d.ts.map +1 -0
  418. package/dist/text/path-refs.js.map +1 -0
  419. package/dist/{shell-regions.d.ts → text/shell-regions.d.ts} +1 -1
  420. package/dist/text/shell-regions.d.ts.map +1 -0
  421. package/dist/text/shell-regions.js.map +1 -0
  422. package/dist/text/title.d.ts.map +1 -0
  423. package/dist/text/title.js.map +1 -0
  424. package/dist/{transcript-fold.d.ts → text/transcript-fold.d.ts} +2 -1
  425. package/dist/text/transcript-fold.d.ts.map +1 -0
  426. package/dist/{transcript-fold.js → text/transcript-fold.js} +2 -16
  427. package/dist/text/transcript-fold.js.map +1 -0
  428. package/dist/text/whisper.d.ts +3 -0
  429. package/dist/text/whisper.d.ts.map +1 -0
  430. package/dist/text/whisper.js +11 -0
  431. package/dist/text/whisper.js.map +1 -0
  432. package/dist/{workflow-faults.d.ts → text/workflow-faults.d.ts} +1 -1
  433. package/dist/text/workflow-faults.d.ts.map +1 -0
  434. package/dist/{workflow-faults.js → text/workflow-faults.js} +1 -1
  435. package/dist/text/workflow-faults.js.map +1 -0
  436. package/package.json +70 -70
  437. package/src/chores/chores.test.ts +4 -10
  438. package/src/chores/chores.ts +148 -392
  439. package/src/chores/digest.ts +8 -28
  440. package/src/chores/extension-update.ts +3 -8
  441. package/src/chores/fix-deps.ts +4 -18
  442. package/src/chores/index.ts +2 -2
  443. package/src/chores/probes.test.ts +7 -43
  444. package/src/chores/probes.ts +62 -167
  445. package/src/chores/prompt.ts +10 -34
  446. package/src/chores/stack.test.ts +6 -45
  447. package/src/chores/stack.ts +27 -118
  448. package/src/chores/verdict.test.ts +101 -80
  449. package/src/chores/verdict.ts +54 -99
  450. package/src/contracts/accounts.contract.ts +4 -19
  451. package/src/contracts/agent.contract.ts +7 -22
  452. package/src/contracts/agents.contract.ts +25 -71
  453. package/src/contracts/automations.contract.ts +14 -30
  454. package/src/contracts/capabilities.contract.ts +8 -35
  455. package/src/contracts/chores.contract.ts +4 -15
  456. package/src/contracts/endpoints.contract.ts +5 -22
  457. package/src/contracts/exit.contract.ts +7 -30
  458. package/src/contracts/extensions.contract.ts +8 -30
  459. package/src/contracts/git.contract.ts +25 -49
  460. package/src/contracts/host.contract.ts +9 -44
  461. package/src/contracts/intentic.contract.ts +1 -1
  462. package/src/contracts/logs.contract.ts +3 -13
  463. package/src/contracts/loops.contract.ts +9 -40
  464. package/src/contracts/personas.contract.ts +22 -30
  465. package/src/contracts/providers.contract.ts +4 -17
  466. package/src/contracts/runner.contract.ts +12 -39
  467. package/src/contracts/safety.contract.ts +5 -14
  468. package/src/contracts/secrets.contract.ts +4 -22
  469. package/src/contracts/sessions.contract.ts +1 -1
  470. package/src/contracts/settings.contract.ts +4 -10
  471. package/src/contracts/share.contract.ts +3 -9
  472. package/src/contracts/skills.contract.ts +4 -15
  473. package/src/contracts/system.contract.ts +26 -52
  474. package/src/contracts/usage.contract.ts +7 -21
  475. package/src/contracts/vpn.contract.ts +9 -16
  476. package/src/contracts/webext.contract.ts +9 -25
  477. package/src/contracts/workflows.contract.ts +34 -58
  478. package/src/contracts/workspace.contract.ts +19 -50
  479. package/src/events/agent-events.ts +345 -0
  480. package/src/events/cards.ts +286 -0
  481. package/src/{events.test.ts → events/resume.test.ts} +4 -19
  482. package/src/events/resume.ts +60 -0
  483. package/src/events/system-events.ts +139 -0
  484. package/src/events/transcript.ts +320 -0
  485. package/src/{conversation-ids.test.ts → ids/conversation-ids.test.ts} +25 -13
  486. package/src/ids/conversation-ids.ts +178 -0
  487. package/src/ids/hostnames.ts +129 -0
  488. package/src/ids/session-names.ts +29 -0
  489. package/src/ids/share-paths.ts +43 -0
  490. package/src/{tunnel-ids.test.ts → ids/tunnel-ids.test.ts} +1 -14
  491. package/src/ids/tunnel-ids.ts +29 -0
  492. package/src/index.ts +71 -88
  493. package/src/{agent-catalog.test.ts → models/agent-catalog.test.ts} +19 -93
  494. package/src/models/agent-catalog.ts +174 -0
  495. package/src/models/agent-runtimes.ts +201 -0
  496. package/src/models/capability-ledger.test.ts +84 -0
  497. package/src/{fast-tier.test.ts → models/fast-tier.test.ts} +7 -18
  498. package/src/models/fast-tier.ts +36 -0
  499. package/src/{model-order.test.ts → models/model-order.test.ts} +19 -40
  500. package/src/models/model-order.ts +163 -0
  501. package/src/models/model-pins.test.ts +87 -0
  502. package/src/models/model-pins.ts +57 -0
  503. package/src/models/model-roles.test.ts +38 -0
  504. package/src/models/model-roles.ts +180 -0
  505. package/src/{plan-pools.test.ts → models/plan-pools.test.ts} +6 -11
  506. package/src/models/plan-pools.ts +65 -0
  507. package/src/{prompt-complexity.test.ts → models/prompt-complexity.test.ts} +8 -60
  508. package/src/models/prompt-complexity.ts +215 -0
  509. package/src/{provider-specs.test.ts → models/provider-specs.test.ts} +18 -47
  510. package/src/models/provider-specs.ts +272 -0
  511. package/src/policy/approvals-execution.ts +58 -0
  512. package/src/{batch-runs.test.ts → policy/batch-runs.test.ts} +4 -20
  513. package/src/policy/batch-runs.ts +137 -0
  514. package/src/policy/capability-secrets.ts +5 -0
  515. package/src/{card-status.ts → policy/card-status.ts} +11 -26
  516. package/src/{command-classes.test.ts → policy/command-classes.test.ts} +11 -118
  517. package/src/policy/command-classes.ts +395 -0
  518. package/src/policy/command-run.ts +65 -0
  519. package/src/policy/control-scopes.ts +38 -0
  520. package/src/{credential-material.test.ts → policy/credential-material.test.ts} +4 -26
  521. package/src/policy/credential-material.ts +91 -0
  522. package/src/policy/needs-action.ts +5 -0
  523. package/src/policy/output-fields.ts +86 -0
  524. package/src/policy/overlay-lint.ts +100 -0
  525. package/src/{owner-ticket.test.ts → policy/owner-ticket.test.ts} +1 -1
  526. package/src/{owner-ticket.ts → policy/owner-ticket.ts} +9 -31
  527. package/src/policy/safety-policy.test.ts +84 -0
  528. package/src/policy/safety-policy.ts +142 -0
  529. package/src/policy/search-globs.ts +60 -0
  530. package/src/protocol/container-requirements.test.ts +72 -0
  531. package/src/protocol/container-requirements.ts +58 -0
  532. package/src/protocol/host-protocol.ts +29 -0
  533. package/src/protocol/ingress-contract.ts +103 -0
  534. package/src/{ingress-protocol.test.ts → protocol/ingress-protocol.test.ts} +25 -90
  535. package/src/protocol/ingress-protocol.ts +441 -0
  536. package/src/protocol/listener-protocol.ts +75 -0
  537. package/src/{peer-dial.test.ts → protocol/peer-dial.test.ts} +52 -1
  538. package/src/protocol/peer-dial.ts +207 -0
  539. package/src/{peer-mcp-server.ts → protocol/peer-mcp-server.ts} +16 -41
  540. package/src/protocol/request-id.ts +5 -0
  541. package/src/{routes.test.ts → protocol/routes.test.ts} +14 -22
  542. package/src/protocol/routes.ts +159 -0
  543. package/src/protocol/runner-protocol.ts +197 -0
  544. package/src/protocol/terminal-protocol.ts +13 -0
  545. package/src/protocol/webext-links.ts +50 -0
  546. package/src/protocol/webext-protocol.ts +24 -0
  547. package/src/schemas/activity.ts +22 -30
  548. package/src/schemas/agent.ts +130 -238
  549. package/src/schemas/agents.ts +165 -483
  550. package/src/schemas/approvals.ts +23 -71
  551. package/src/schemas/automations.ts +145 -249
  552. package/src/schemas/capabilities.ts +127 -414
  553. package/src/schemas/ci.ts +56 -108
  554. package/src/schemas/codebase-health.ts +7 -11
  555. package/src/schemas/devices.ts +98 -321
  556. package/src/schemas/engines.ts +16 -44
  557. package/src/schemas/environment.ts +41 -91
  558. package/src/schemas/exit.ts +24 -81
  559. package/src/schemas/extension-updates.ts +42 -87
  560. package/src/schemas/git-history.ts +30 -84
  561. package/src/schemas/git.ts +141 -256
  562. package/src/schemas/history.ts +14 -40
  563. package/src/schemas/hosts.ts +9 -15
  564. package/src/schemas/inventory.ts +8 -10
  565. package/src/schemas/issues.ts +66 -134
  566. package/src/schemas/logs.ts +15 -34
  567. package/src/schemas/loops.ts +46 -163
  568. package/src/schemas/maintenance.ts +47 -172
  569. package/src/schemas/panels.ts +20 -45
  570. package/src/schemas/personas.ts +85 -168
  571. package/src/schemas/plan-limits.ts +58 -197
  572. package/src/schemas/ports.ts +14 -32
  573. package/src/schemas/provider-oauth.ts +23 -76
  574. package/src/schemas/provider-subscriptions.ts +4 -13
  575. package/src/schemas/public.ts +4 -15
  576. package/src/schemas/push.ts +8 -36
  577. package/src/schemas/secrets.ts +20 -64
  578. package/src/schemas/settings.ts +177 -597
  579. package/src/schemas/share.ts +14 -32
  580. package/src/schemas/shared.ts +14 -13
  581. package/src/schemas/system.ts +46 -78
  582. package/src/schemas/terminal.ts +41 -120
  583. package/src/schemas/usage.ts +44 -233
  584. package/src/schemas/version-seam.test.ts +9 -26
  585. package/src/schemas/vpn.ts +27 -64
  586. package/src/schemas/webext.ts +22 -53
  587. package/src/schemas/workflows.ts +57 -183
  588. package/src/schemas/workspace-repos.ts +12 -24
  589. package/src/schemas/workspace-search.ts +17 -35
  590. package/src/schemas/workspace-setup.ts +4 -11
  591. package/src/schemas/workspace-tree.ts +32 -91
  592. package/src/state/arrival.ts +109 -0
  593. package/src/state/contract-lock.test.ts +17 -0
  594. package/src/state/contract-lock.ts +49 -0
  595. package/src/state/definition.ts +143 -0
  596. package/src/state/history-state.ts +103 -0
  597. package/src/{runtime-state.test.ts → state/runtime-state.test.ts} +3 -10
  598. package/src/state/runtime-state.ts +62 -0
  599. package/src/state/starter.ts +5 -0
  600. package/src/state/state-portability.ts +27 -0
  601. package/src/state/versions.ts +26 -0
  602. package/src/{workspace-state.test.ts → state/workspace-state.test.ts} +65 -173
  603. package/src/state/workspace-state.ts +669 -0
  604. package/src/{documents.test.ts → text/documents.test.ts} +1 -1
  605. package/src/text/documents.ts +42 -0
  606. package/src/text/embed.ts +132 -0
  607. package/src/text/mentions.ts +21 -0
  608. package/src/text/model-answer.ts +9 -0
  609. package/src/text/path-refs.ts +39 -0
  610. package/src/text/shell-regions.ts +224 -0
  611. package/src/{title.test.ts → text/title.test.ts} +13 -32
  612. package/src/text/title.ts +202 -0
  613. package/src/{transcript-fold.test.ts → text/transcript-fold.test.ts} +5 -83
  614. package/src/{transcript-fold.ts → text/transcript-fold.ts} +65 -170
  615. package/src/text/whisper.test.ts +19 -0
  616. package/src/text/whisper.ts +17 -0
  617. package/src/{workflow-faults.test.ts → text/workflow-faults.test.ts} +6 -24
  618. package/src/{workflow-faults.ts → text/workflow-faults.ts} +20 -60
  619. package/dist/agent-catalog.d.ts.map +0 -1
  620. package/dist/agent-catalog.js.map +0 -1
  621. package/dist/agent-runtimes.d.ts.map +0 -1
  622. package/dist/agent-runtimes.js.map +0 -1
  623. package/dist/approvals-execution.d.ts.map +0 -1
  624. package/dist/approvals-execution.js.map +0 -1
  625. package/dist/arrival.d.ts.map +0 -1
  626. package/dist/arrival.js.map +0 -1
  627. package/dist/batch-runs.d.ts.map +0 -1
  628. package/dist/batch-runs.js.map +0 -1
  629. package/dist/capability-env.d.ts.map +0 -1
  630. package/dist/capability-env.js.map +0 -1
  631. package/dist/capability-secrets.d.ts.map +0 -1
  632. package/dist/capability-secrets.js.map +0 -1
  633. package/dist/card-status.d.ts.map +0 -1
  634. package/dist/card-status.js.map +0 -1
  635. package/dist/command-classes.d.ts.map +0 -1
  636. package/dist/command-classes.js.map +0 -1
  637. package/dist/command-run.d.ts.map +0 -1
  638. package/dist/command-run.js.map +0 -1
  639. package/dist/contract-lock.d.ts.map +0 -1
  640. package/dist/contract-lock.js.map +0 -1
  641. package/dist/conversation-ids.d.ts +0 -4
  642. package/dist/conversation-ids.d.ts.map +0 -1
  643. package/dist/conversation-ids.js.map +0 -1
  644. package/dist/credential-material.d.ts.map +0 -1
  645. package/dist/credential-material.js.map +0 -1
  646. package/dist/definition.d.ts.map +0 -1
  647. package/dist/definition.js.map +0 -1
  648. package/dist/documents.d.ts.map +0 -1
  649. package/dist/documents.js.map +0 -1
  650. package/dist/embed.d.ts.map +0 -1
  651. package/dist/embed.js.map +0 -1
  652. package/dist/events.d.ts +0 -4336
  653. package/dist/events.d.ts.map +0 -1
  654. package/dist/events.js +0 -725
  655. package/dist/events.js.map +0 -1
  656. package/dist/fast-tier.d.ts.map +0 -1
  657. package/dist/fast-tier.js.map +0 -1
  658. package/dist/history-state.d.ts.map +0 -1
  659. package/dist/history-state.js.map +0 -1
  660. package/dist/host-protocol.d.ts.map +0 -1
  661. package/dist/host-protocol.js.map +0 -1
  662. package/dist/hostnames.d.ts.map +0 -1
  663. package/dist/hostnames.js.map +0 -1
  664. package/dist/ingress-contract.d.ts.map +0 -1
  665. package/dist/ingress-contract.js.map +0 -1
  666. package/dist/ingress-protocol.d.ts.map +0 -1
  667. package/dist/ingress-protocol.js.map +0 -1
  668. package/dist/listener-protocol.d.ts.map +0 -1
  669. package/dist/listener-protocol.js.map +0 -1
  670. package/dist/mentions.d.ts.map +0 -1
  671. package/dist/mentions.js.map +0 -1
  672. package/dist/model-order.d.ts.map +0 -1
  673. package/dist/model-order.js.map +0 -1
  674. package/dist/model-pins.d.ts.map +0 -1
  675. package/dist/model-pins.js +0 -45
  676. package/dist/model-pins.js.map +0 -1
  677. package/dist/model-roles.d.ts.map +0 -1
  678. package/dist/model-roles.js.map +0 -1
  679. package/dist/needs-action.d.ts.map +0 -1
  680. package/dist/needs-action.js.map +0 -1
  681. package/dist/output-fields.d.ts.map +0 -1
  682. package/dist/output-fields.js.map +0 -1
  683. package/dist/overlay-lint.d.ts.map +0 -1
  684. package/dist/overlay-lint.js.map +0 -1
  685. package/dist/owner-ticket.d.ts.map +0 -1
  686. package/dist/owner-ticket.js.map +0 -1
  687. package/dist/path-refs.d.ts.map +0 -1
  688. package/dist/path-refs.js.map +0 -1
  689. package/dist/peer-dial.d.ts.map +0 -1
  690. package/dist/peer-dial.js.map +0 -1
  691. package/dist/peer-mcp-server.d.ts.map +0 -1
  692. package/dist/peer-mcp-server.js.map +0 -1
  693. package/dist/plan-pools.d.ts.map +0 -1
  694. package/dist/plan-pools.js.map +0 -1
  695. package/dist/prompt-complexity.d.ts.map +0 -1
  696. package/dist/prompt-complexity.js.map +0 -1
  697. package/dist/provider-specs.d.ts.map +0 -1
  698. package/dist/provider-specs.js.map +0 -1
  699. package/dist/request-id.d.ts.map +0 -1
  700. package/dist/request-id.js.map +0 -1
  701. package/dist/routes.d.ts.map +0 -1
  702. package/dist/routes.js.map +0 -1
  703. package/dist/runner-protocol.d.ts.map +0 -1
  704. package/dist/runner-protocol.js.map +0 -1
  705. package/dist/runtime-state.d.ts.map +0 -1
  706. package/dist/runtime-state.js.map +0 -1
  707. package/dist/safety-policy.d.ts.map +0 -1
  708. package/dist/safety-policy.js.map +0 -1
  709. package/dist/schemas/context.d.ts +0 -30
  710. package/dist/schemas/context.d.ts.map +0 -1
  711. package/dist/schemas/context.js +0 -34
  712. package/dist/schemas/context.js.map +0 -1
  713. package/dist/search-globs.d.ts.map +0 -1
  714. package/dist/search-globs.js.map +0 -1
  715. package/dist/session-names.d.ts.map +0 -1
  716. package/dist/session-names.js.map +0 -1
  717. package/dist/share-paths.d.ts.map +0 -1
  718. package/dist/share-paths.js.map +0 -1
  719. package/dist/shell-regions.d.ts.map +0 -1
  720. package/dist/shell-regions.js.map +0 -1
  721. package/dist/sse.d.ts.map +0 -1
  722. package/dist/sse.js.map +0 -1
  723. package/dist/starter.d.ts.map +0 -1
  724. package/dist/starter.js.map +0 -1
  725. package/dist/state-portability.d.ts.map +0 -1
  726. package/dist/state-portability.js.map +0 -1
  727. package/dist/terminal-protocol.d.ts.map +0 -1
  728. package/dist/terminal-protocol.js.map +0 -1
  729. package/dist/title.d.ts.map +0 -1
  730. package/dist/title.js.map +0 -1
  731. package/dist/transcript-fold.d.ts.map +0 -1
  732. package/dist/transcript-fold.js.map +0 -1
  733. package/dist/tunnel-ids.d.ts.map +0 -1
  734. package/dist/tunnel-ids.js.map +0 -1
  735. package/dist/versions.d.ts.map +0 -1
  736. package/dist/versions.js.map +0 -1
  737. package/dist/webext-links.d.ts.map +0 -1
  738. package/dist/webext-links.js.map +0 -1
  739. package/dist/webext-protocol.d.ts.map +0 -1
  740. package/dist/webext-protocol.js.map +0 -1
  741. package/dist/workflow-faults.d.ts.map +0 -1
  742. package/dist/workflow-faults.js.map +0 -1
  743. package/dist/workspace-state.d.ts.map +0 -1
  744. package/dist/workspace-state.js.map +0 -1
  745. package/src/agent-catalog.ts +0 -316
  746. package/src/agent-runtimes.ts +0 -419
  747. package/src/approvals-execution.ts +0 -96
  748. package/src/arrival.ts +0 -160
  749. package/src/batch-runs.ts +0 -188
  750. package/src/capability-ledger.test.ts +0 -140
  751. package/src/capability-secrets.ts +0 -20
  752. package/src/command-classes.ts +0 -617
  753. package/src/command-run.ts +0 -78
  754. package/src/contract-lock.test.ts +0 -23
  755. package/src/contract-lock.ts +0 -66
  756. package/src/conversation-ids.ts +0 -207
  757. package/src/credential-material.ts +0 -181
  758. package/src/definition.ts +0 -207
  759. package/src/documents.ts +0 -67
  760. package/src/embed.ts +0 -164
  761. package/src/events.ts +0 -1870
  762. package/src/fast-tier.ts +0 -72
  763. package/src/history-state.ts +0 -174
  764. package/src/host-protocol.ts +0 -36
  765. package/src/hostnames.ts +0 -180
  766. package/src/ingress-contract.ts +0 -157
  767. package/src/ingress-protocol.ts +0 -625
  768. package/src/listener-protocol.ts +0 -96
  769. package/src/mentions.ts +0 -25
  770. package/src/model-order.ts +0 -262
  771. package/src/model-pins.test.ts +0 -202
  772. package/src/model-pins.ts +0 -183
  773. package/src/model-roles.ts +0 -224
  774. package/src/needs-action.ts +0 -14
  775. package/src/output-fields.ts +0 -111
  776. package/src/overlay-lint.ts +0 -116
  777. package/src/path-refs.ts +0 -59
  778. package/src/peer-dial.ts +0 -163
  779. package/src/plan-pools.ts +0 -92
  780. package/src/prompt-complexity.ts +0 -334
  781. package/src/provider-specs.ts +0 -432
  782. package/src/request-id.ts +0 -41
  783. package/src/routes.ts +0 -219
  784. package/src/runner-protocol.ts +0 -239
  785. package/src/runtime-state.ts +0 -140
  786. package/src/safety-policy.test.ts +0 -88
  787. package/src/safety-policy.ts +0 -258
  788. package/src/schemas/context.ts +0 -87
  789. package/src/search-globs.ts +0 -76
  790. package/src/session-names.ts +0 -44
  791. package/src/share-paths.ts +0 -68
  792. package/src/shell-regions.ts +0 -289
  793. package/src/starter.ts +0 -13
  794. package/src/state-portability.ts +0 -56
  795. package/src/terminal-protocol.ts +0 -16
  796. package/src/title.ts +0 -267
  797. package/src/tunnel-ids.ts +0 -57
  798. package/src/versions.ts +0 -48
  799. package/src/webext-links.ts +0 -90
  800. package/src/webext-protocol.ts +0 -27
  801. package/src/workspace-state.ts +0 -1096
  802. /package/dist/{hostnames.d.ts → ids/hostnames.d.ts} +0 -0
  803. /package/dist/{hostnames.js → ids/hostnames.js} +0 -0
  804. /package/dist/{session-names.d.ts → ids/session-names.d.ts} +0 -0
  805. /package/dist/{session-names.js → ids/session-names.js} +0 -0
  806. /package/dist/{share-paths.d.ts → ids/share-paths.d.ts} +0 -0
  807. /package/dist/{share-paths.js → ids/share-paths.js} +0 -0
  808. /package/dist/{agent-catalog.js → models/agent-catalog.js} +0 -0
  809. /package/dist/{agent-runtimes.d.ts → models/agent-runtimes.d.ts} +0 -0
  810. /package/dist/{agent-runtimes.js → models/agent-runtimes.js} +0 -0
  811. /package/dist/{fast-tier.js → models/fast-tier.js} +0 -0
  812. /package/dist/{model-order.d.ts → models/model-order.d.ts} +0 -0
  813. /package/dist/{model-order.js → models/model-order.js} +0 -0
  814. /package/dist/{plan-pools.js → models/plan-pools.js} +0 -0
  815. /package/dist/{prompt-complexity.d.ts → models/prompt-complexity.d.ts} +0 -0
  816. /package/dist/{prompt-complexity.js → models/prompt-complexity.js} +0 -0
  817. /package/dist/{provider-specs.d.ts → models/provider-specs.d.ts} +0 -0
  818. /package/dist/{provider-specs.js → models/provider-specs.js} +0 -0
  819. /package/dist/{approvals-execution.d.ts → policy/approvals-execution.d.ts} +0 -0
  820. /package/dist/{approvals-execution.js → policy/approvals-execution.js} +0 -0
  821. /package/dist/{capability-env.d.ts → policy/capability-env.d.ts} +0 -0
  822. /package/dist/{capability-env.js → policy/capability-env.js} +0 -0
  823. /package/dist/{capability-secrets.d.ts → policy/capability-secrets.d.ts} +0 -0
  824. /package/dist/{capability-secrets.js → policy/capability-secrets.js} +0 -0
  825. /package/dist/{command-run.js → policy/command-run.js} +0 -0
  826. /package/dist/{credential-material.d.ts → policy/credential-material.d.ts} +0 -0
  827. /package/dist/{credential-material.js → policy/credential-material.js} +0 -0
  828. /package/dist/{needs-action.d.ts → policy/needs-action.d.ts} +0 -0
  829. /package/dist/{needs-action.js → policy/needs-action.js} +0 -0
  830. /package/dist/{output-fields.d.ts → policy/output-fields.d.ts} +0 -0
  831. /package/dist/{output-fields.js → policy/output-fields.js} +0 -0
  832. /package/dist/{overlay-lint.d.ts → policy/overlay-lint.d.ts} +0 -0
  833. /package/dist/{overlay-lint.js → policy/overlay-lint.js} +0 -0
  834. /package/dist/{owner-ticket.d.ts → policy/owner-ticket.d.ts} +0 -0
  835. /package/dist/{search-globs.d.ts → policy/search-globs.d.ts} +0 -0
  836. /package/dist/{search-globs.js → policy/search-globs.js} +0 -0
  837. /package/dist/{ingress-contract.d.ts → protocol/ingress-contract.d.ts} +0 -0
  838. /package/dist/{ingress-protocol.d.ts → protocol/ingress-protocol.d.ts} +0 -0
  839. /package/dist/{ingress-protocol.js → protocol/ingress-protocol.js} +0 -0
  840. /package/dist/{listener-protocol.d.ts → protocol/listener-protocol.d.ts} +0 -0
  841. /package/dist/{peer-mcp-server.d.ts → protocol/peer-mcp-server.d.ts} +0 -0
  842. /package/dist/{peer-mcp-server.js → protocol/peer-mcp-server.js} +0 -0
  843. /package/dist/{request-id.d.ts → protocol/request-id.d.ts} +0 -0
  844. /package/dist/{request-id.js → protocol/request-id.js} +0 -0
  845. /package/dist/{routes.d.ts → protocol/routes.d.ts} +0 -0
  846. /package/dist/{routes.js → protocol/routes.js} +0 -0
  847. /package/dist/{sse.d.ts → protocol/sse.d.ts} +0 -0
  848. /package/dist/{sse.js → protocol/sse.js} +0 -0
  849. /package/dist/{terminal-protocol.js → protocol/terminal-protocol.js} +0 -0
  850. /package/dist/{webext-links.d.ts → protocol/webext-links.d.ts} +0 -0
  851. /package/dist/{webext-links.js → protocol/webext-links.js} +0 -0
  852. /package/dist/{arrival.d.ts → state/arrival.d.ts} +0 -0
  853. /package/dist/{contract-lock.d.ts → state/contract-lock.d.ts} +0 -0
  854. /package/dist/{history-state.d.ts → state/history-state.d.ts} +0 -0
  855. /package/dist/{runtime-state.d.ts → state/runtime-state.d.ts} +0 -0
  856. /package/dist/{runtime-state.js → state/runtime-state.js} +0 -0
  857. /package/dist/{starter.d.ts → state/starter.d.ts} +0 -0
  858. /package/dist/{starter.js → state/starter.js} +0 -0
  859. /package/dist/{state-portability.d.ts → state/state-portability.d.ts} +0 -0
  860. /package/dist/{state-portability.js → state/state-portability.js} +0 -0
  861. /package/dist/{versions.d.ts → state/versions.d.ts} +0 -0
  862. /package/dist/{versions.js → state/versions.js} +0 -0
  863. /package/dist/{embed.d.ts → text/embed.d.ts} +0 -0
  864. /package/dist/{embed.js → text/embed.js} +0 -0
  865. /package/dist/{mentions.d.ts → text/mentions.d.ts} +0 -0
  866. /package/dist/{mentions.js → text/mentions.js} +0 -0
  867. /package/dist/{path-refs.d.ts → text/path-refs.d.ts} +0 -0
  868. /package/dist/{path-refs.js → text/path-refs.js} +0 -0
  869. /package/dist/{shell-regions.js → text/shell-regions.js} +0 -0
  870. /package/dist/{title.d.ts → text/title.d.ts} +0 -0
  871. /package/dist/{title.js → text/title.js} +0 -0
  872. /package/src/{hostnames.test.ts → ids/hostnames.test.ts} +0 -0
  873. /package/src/{share-paths.test.ts → ids/share-paths.test.ts} +0 -0
  874. /package/src/{capability-env.ts → policy/capability-env.ts} +0 -0
  875. /package/src/{overlay-lint.test.ts → policy/overlay-lint.test.ts} +0 -0
  876. /package/src/{search-globs.test.ts → policy/search-globs.test.ts} +0 -0
  877. /package/src/{ingress-contract.test.ts → protocol/ingress-contract.test.ts} +0 -0
  878. /package/src/{peer-mcp-server.test.ts → protocol/peer-mcp-server.test.ts} +0 -0
  879. /package/src/{sse.ts → protocol/sse.ts} +0 -0
  880. /package/src/{versions.test.ts → state/versions.test.ts} +0 -0
  881. /package/src/{embed.test.ts → text/embed.test.ts} +0 -0
  882. /package/src/{mentions.test.ts → text/mentions.test.ts} +0 -0
  883. /package/src/{path-refs.test.ts → text/path-refs.test.ts} +0 -0
@@ -3,62 +3,27 @@ import { z } from "zod";
3
3
  import { AgentHarnessSchema, AgentProviderSchema, RepoBaseSchema } from "./agent.js";
4
4
  import { entryId } from "./internal.js";
5
5
  import { LoopCheckSchema, LoopContextSchema, LoopDocumentSchema, LoopOutputSchema, LoopStateSchema } from "./loops.js";
6
- /* THE THIRD DRIVER. An automation answers "run this at 3am", a loop answers "run this until it is done", and a
7
- * workflow answers "run these, in this order, each handing its result to the next".
8
- *
9
- * IT IS A GRAPH OF LOOPS, and that is the whole implementation. A step is not a new kind of execution, it is
10
- * a Loop with a declared output and a place in a dependency graph, driven on a conversation of its own. So
11
- * every step gets the fleet card, the worktree, the transcript, the cost ledger, the Stop button, the stall
12
- * detector and the spend ceiling without a line of new code, and this file's job is only to say what the steps
13
- * are and what depends on what.
14
- *
15
- * WHY IT IS NOT "AN AUTOMATION WITH SEVERAL PROMPTS". Because the value is in the SEAM between steps: the
16
- * output of one is validated before the next is allowed to start, the reviewing step is a different session
17
- * from the implementing one, and a step that cannot converge stops the branch below it rather than feeding
18
- * garbage forward. None of that exists in a prompt that says "then do X".
19
- */
6
+ // A workflow runs steps in order, each one's output feeding the next, unlike an automation's schedule or a loop's
7
+ // until-done. Each step is a Loop with a declared output in a dependency graph, so it inherits the fleet card, worktree
8
+ // and ledger. Output is validated between steps; a failing step stops the branch below it.
20
9
 
21
- // A step id: short and slug-shaped because it is spliced into the derived conversation id (`wf-<run>-<step>`),
22
- // which is itself a branch name and a directory name. The regex is the injection guard, the length cap is what
23
- // keeps the derived id inside ConversationIdSchema's 64.
10
+ // Slug spliced into `wf-<run>-<step>` (branch/dir name); regex guards injection, length keeps the id under 64.
24
11
  const StepIdSchema = z
25
12
  .string()
26
13
  .min(1)
27
14
  .max(24)
28
15
  .regex(/^[a-z0-9][a-z0-9-]*$/);
29
- /* HOW A STEP MEETS ITS PREDECESSOR, the fork the whole feature turns on, and the one the user has to choose
30
- * because neither answer is right twice in a row.
31
- *
32
- * `fresh` opens a NEW conversation: its own fleet card, its own session, its own worktree when the run is
33
- * isolated. What it knows about the step before it is exactly what that step declared as output. This is the
34
- * only honest way to run a review, an audit or a second opinion, a session that spent nine turns arguing for
35
- * an approach is the worst available judge of whether that approach worked, and the fix is not a better prompt,
36
- * it is a different session.
37
- *
38
- * `continue` sends the next prompt into the SAME conversation. The model keeps everything it learned, the
39
- * prefix stays cached, and, when the run is isolated, the work stays in one worktree on one branch, which is
40
- * the only way a chain like implement → test → document can build on itself at all. Requires exactly one
41
- * predecessor: two upstream sessions cannot both be continued into one.
42
- */
16
+ // How a step meets its predecessor: fresh opens a new conversation, knowing only the predecessor's declared output;
17
+ // continue carries the same conversation forward, and requires exactly one predecessor.
43
18
  export const WorkflowHandoffSchema = z.enum(["fresh", "continue"]);
44
19
  export type WorkflowHandoff = z.infer<typeof WorkflowHandoffSchema>;
45
- // Enough steps for a real pipeline, few enough that a workflow stays legible as one picture. A design past
46
- // this is two workflows, and reading it as one graph was never going to work.
20
+ // Enough for a real pipeline; more than this reads as two workflows, not one graph.
47
21
  const WORKFLOW_STEPS_MAX = 24;
48
22
  export const WorkflowStepSchema = z.object({
49
23
  id: StepIdSchema.describe("This step's own name, which other steps use to say they wait on it."),
50
- // What the node says on the graph. Short, the prompt is where the detail goes.
24
+ // What the node shows on the graph; keep it short, detail belongs in the prompt.
51
25
  title: z.string().min(1).max(60).describe("What to call it on screen. Short: the instruction below is where the detail goes."),
52
- /* What "done" means for this step, in the user's words. Put to the judge, and restated to the model unless
53
- * its instruction already carries it (loop-brief); it is the sentence the step is measured against.
54
- *
55
- * ABSENT ⇒ THE RUN'S OWN REQUEST IS THE GOAL, which is the ordinary case and not the exotic one. A saved
56
- * workflow is a SHAPE, "two models on one task", and for most of its steps the thing being asked for is
57
- * whatever the person typed this time. Writing a goal here as well means saying the same thing twice and
58
- * keeping the two in agreement forever; leaving it out means the step is measured against the request,
59
- * which is what anyone would have written anyway. Declare one only where the step's bar is genuinely its
60
- * own ("the suite is green") rather than the run's.
61
- */
26
+ // Absent means the step is judged against the run's own request; set only when its bar differs from that.
62
27
  goal: z
63
28
  .string()
64
29
  .min(1)
@@ -66,15 +31,7 @@ export const WorkflowStepSchema = z.object({
66
31
  .describe(
67
32
  "What done means for this step, in your words. It is what the step is judged against, and a different sentence from what it is told to do.",
68
33
  ),
69
- /* What the step is told to DO. A different sentence from the goal: "the suite is green" is the goal,
70
- * "run the tests, take the top failure, fix it" is the instruction.
71
- *
72
- * ABSENT ⇒ THE REQUEST IS HANDED OVER VERBATIM, with none of the workflow's own framing around it (see
73
- * briefForStep). That is the default because the framing is not free: every heading between the reader's
74
- * sentence and the model is a chance for the model to answer the frame instead of the question, and a step
75
- * whose whole job is "do what was asked" has nothing to add to it. A step that DOES declare a prompt is
76
- * saying it has a job of its own, review this, merge those, and gets the full brief, request included.
77
- */
34
+ // Absent hands the run's own request over verbatim; declare a prompt only when the step has a job of its own.
78
35
  prompt: z
79
36
  .string()
80
37
  .min(1)
@@ -82,8 +39,7 @@ export const WorkflowStepSchema = z.object({
82
39
  .describe(
83
40
  "What the step is told to do. The goal is the suite is green; this is run the tests, take the top failure, fix it. Leaving it out hands over the run's own request untouched, which is right for a step whose whole job is do what was asked.",
84
41
  ),
85
- // The steps that must finish before this one starts. Empty ⇒ a root, started when the run starts. The
86
- // graph must be acyclic and every id must exist; both are checked when the workflow is saved.
42
+ // Steps that must finish first; empty means a root. Must be acyclic with every id existing, checked on save.
87
43
  needs: z
88
44
  .array(StepIdSchema)
89
45
  .describe(
@@ -94,14 +50,11 @@ export const WorkflowStepSchema = z.object({
94
50
  ),
95
51
  output: LoopOutputSchema.describe("What it has to produce for the step to count."),
96
52
  checks: z.array(LoopCheckSchema).describe("What has to pass before it counts as done."),
97
- // How the step's own ITERATIONS meet each other, the Ralph question, one level down from `handoff`. A
98
- // long-running step wants `fresh` (no context rot); a short refine-this step wants `continue`.
53
+ // How the step's own iterations meet each other: a long step wants fresh each round, a short one continue.
99
54
  context: LoopContextSchema.describe(
100
55
  "How the step's own repeats meet each other. A long-running step wants to start clean each round; a short polish-this step wants to carry on.",
101
56
  ),
102
- /* Iteration/stall limits remain scheduler backstops rather than form questions. Spend is different: it is
103
- * the one resource the owner cannot recover after an unattended fan-out, and the underlying loop already
104
- * enforces it exactly. Absent remains uncapped for short, person-started work. */
57
+ // Unrecoverable after an unattended fan-out, unlike iteration or stall limits; absent means uncapped.
105
58
  maxSpendUsd: z
106
59
  .number()
107
60
  .positive()
@@ -113,11 +66,7 @@ export const WorkflowStepSchema = z.object({
113
66
  harness: AgentHarnessSchema.optional().describe("Which agentic loop runs it."),
114
67
  account: z.string().optional().describe("Which account pays for it."),
115
68
  model: z.string().optional().describe("Which model runs it."),
116
- /* Which persona the step acts as, the same field a chat turn and an automation carry (AgentTurnSchema.
117
- * actsAs), because a step IS an unattended turn under the loop machinery. Unpinned, a step keeps the
118
- * strict unattended default: full tools, no logged-in accounts. Pinning a card is how a gated release
119
- * check gets a voice, a folder scope, or the one Reddit it is allowed to post from, a decision the owner
120
- * already wrote down once, on the card. */
69
+ // Unpinned, a step defaults to every tool and no signed-in accounts; pinning grants a scope or an account.
121
70
  actsAs: entryId
122
71
  .optional()
123
72
  .describe(
@@ -125,58 +74,29 @@ export const WorkflowStepSchema = z.object({
125
74
  ),
126
75
  });
127
76
  export type WorkflowStep = z.infer<typeof WorkflowStepSchema>;
128
- /* THE GATE, how a finished run becomes a release decision, and how a machine with no identity asks for one.
129
- *
130
- * A workflow is a DESIGN; a gate is a PROMISE ABOUT ITS RESULT, and keeping the two separable is the whole
131
- * point. What a run does, how many sessions, whether they drive a browser, which repos they touch, stays the
132
- * graph's business, because the value of running a release check this way is that the check is a workflow like
133
- * any other: an acceptance sweep today, a security review or a performance budget next month, with nothing
134
- * here ever learning what any of them are.
135
- *
136
- * So a gate reads exactly one thing: a named FIELD off a named STEP's declared output (output-fields.ts). That
137
- * field already exists for precisely the reason this needs it, a declared field is the one part of a session's
138
- * answer that was VALIDATED rather than parsed back out of the prose the model was talking to a person in,
139
- * and pointing at one is the entire rule.
140
- */
77
+ // A gate is a promise about a run's result, separate from the design itself. It reads one named field off one step's
78
+ // declared output, the one part of an answer that was validated rather than parsed from prose.
141
79
  export const WorkflowGateSchema = z.object({
142
- // Which step's declared output carries the decision. Ordinarily a leaf that weighs up the steps before it;
143
- // nothing requires that, and a one-step workflow naming its only step is the common small case.
80
+ // Which step's declared output carries the decision; usually a leaf that weighs up the ones before it.
144
81
  step: StepIdSchema.describe(
145
82
  "Which step's answer carries the decision. Usually a last step that weighs up the ones before it, though nothing requires that.",
146
83
  ),
147
- // Which of that step's declared fields is read. Checked against what the step actually declares when the
148
- // workflow is saved, a gate pointed at a field nobody writes answers `blocked` on every run, forever.
84
+ // Which of that step's declared fields is read; checked against what it actually declares when saved.
149
85
  field: z
150
86
  .string()
151
87
  .min(1)
152
88
  .describe(
153
89
  "Which of that step's declared answers to read. A declared field is the one part of a step's answer that was checked rather than fished out of prose, which is the whole rule here. Checked when the workflow is saved.",
154
90
  ),
155
- /* The values of that field that mean SHIP IT. Everything else fails the gate.
156
- *
157
- * An allowlist rather than a blocklist, because the two are not symmetric under a model's vocabulary. A
158
- * step that answers "mostly-pass", "pass-with-notes" or "pass (2 minor defects)" must not ship, and the
159
- * allowlist gets that right without anyone having had to enumerate the ways a model can hedge.
160
- */
91
+ // Values meaning ship it; everything else fails. An allowlist, since a hedge like mostly-pass must not ship.
161
92
  pass: z
162
93
  .array(z.string().min(1))
163
94
  .min(1)
164
95
  .describe(
165
96
  "Which values mean ship it. Everything else fails. A list of what passes rather than what fails, because a step answering mostly-pass or pass-with-notes must not ship, and this gets that right without anybody having had to enumerate the ways a model can hedge.",
166
97
  ),
167
- // The webhook's own auth, minted on save exactly as an event automation's is. The caller is a pipeline
168
- // runner with no Google identity, so this is the only credential in the exchange.
169
- token: z
170
- .string()
171
- .optional()
172
- .describe(
173
- "The credential the calling pipeline presents. It is the only one in the exchange, because a build runner has no identity of its own here.",
174
- ),
175
- /* Runs per UTC day, across every caller. A gate is a paid endpoint reachable with no person in the loop:
176
- * one of these wired into a push-triggered pipeline is a fan-out of sessions per commit, and the
177
- * per-request deadline bounds one call's WALL CLOCK without bounding the day's SPEND. Absent ⇒
178
- * GATE_DAILY_MAX_DEFAULT, not uncapped, for the reason the Front Desk's ceiling is not optional either.
179
- */
98
+ // Token isn't here: minted on save into the secrets store, carried separately as gateToken.
99
+ // Runs per UTC day, across every caller; absent defaults to GATE_DAILY_MAX_DEFAULT, not uncapped.
180
100
  dailyMax: z
181
101
  .number()
182
102
  .int()
@@ -187,26 +107,18 @@ export const WorkflowGateSchema = z.object({
187
107
  ),
188
108
  });
189
109
  export type WorkflowGate = z.infer<typeof WorkflowGateSchema>;
190
- /* The gate's daily ceiling when its author sets none. Deliberately small next to the Front Desk's 200: a
191
- * Front Desk message is one turn, a gate run is a whole graph of sessions, and the honest comparison is cost
192
- * rather than count. Twenty is a busy day of merges and a script's first minute. */
110
+ // Small next to the Front Desk's 200: a gate run is a whole graph of sessions, not one turn.
193
111
  export const GATE_DAILY_MAX_DEFAULT = 20;
194
- /* What a gate answers a pipeline, and the three-way split matters.
195
- *
196
- * `blocked` exists for the same reason acceptance's verdict has one: "we could not reach a judgment" is not
197
- * "the product is broken". A gate that reported them the same way would go red for its own outages, and a team
198
- * that cannot tell the two apart turns the gate off, so `blocked` is meant to be the honest answer far more
199
- * often than it is the convenient one. It maps to a NEUTRAL pipeline exit, never a failed build.
200
- */
112
+ // blocked means the gate couldn't reach a judgment, not that the product is broken; conflating the two makes teams turn
113
+ // the gate off. Maps to a neutral pipeline exit, never a failed build.
201
114
  export const GateOutcomeSchema = z.enum(["pass", "fail", "blocked"]);
202
115
  export type GateOutcome = z.infer<typeof GateOutcomeSchema>;
203
- // What the gate route answers with. `value` is the field as the step actually wrote it, absent when the gate
204
- // never got one to read, which is every `blocked` that is not a disagreement about the value.
116
+ // value is the field as the step wrote it; absent means most blocked verdicts had nothing to read.
205
117
  export const GateVerdictSchema = z.object({
206
118
  outcome: GateOutcomeSchema.describe(
207
119
  "Ship it, do not, or we could not tell. That third answer exists because could not reach a judgement is not the product is broken: a gate that reported its own outages as failures is one a team switches off, so it should be the honest answer far more often than the convenient one, and it means a neutral build rather than a red one.",
208
120
  ),
209
- // One line: why. Realistically the only part of this a pipeline log will ever show.
121
+ // Why, in one line; realistically the only part of this a pipeline log will show.
210
122
  reason: z.string().describe("Why, in one line. Realistically the only part of this a build log will ever show."),
211
123
  runId: z.string().describe("The run behind the verdict, so somebody can go and read it."),
212
124
  value: z
@@ -226,22 +138,13 @@ export const WorkflowSchema = z.object({
226
138
  .describe(
227
139
  "The steps, each with what it waits on. Every one runs in its own private copy of the repos, always, because parallel steps sharing a tree collide.",
228
140
  ),
229
- // Present ⇒ this design can be run by a machine and answers a release decision. Absent ⇒ an ordinary
230
- // workflow, started by a person from the workflows page, with no public door onto it at all.
141
+ // Present means a machine can run this for a ship decision; absent means an ordinary person-started workflow.
231
142
  gate: WorkflowGateSchema.optional().describe(
232
143
  "Present means a machine can run this design and get a ship-it answer back. Absent means an ordinary workflow, started by a person, with no outside door onto it at all.",
233
144
  ),
234
- /* EVERY STEP RUNS IN ITS OWN WORKTREE, always, with no toggle, the same thing an isolated agent session
235
- * does, which is what every session in this product already is.
236
- *
237
- * It was a per-workflow choice between worktrees and the shared /work tree, and the shared side never
238
- * earned its place: parallel steps on one tree collide, a `fresh` step there sees a half-finished
239
- * predecessor's edits as if they were the workspace, and the pinned-base-to-branch comparisons that make
240
- * a fan-in READABLE (see workflow-brief) only exist on the isolated side. A setting whose other value is a
241
- * subtle trap is not a setting, it is a mistake waiting for somebody to make it.
242
- */
243
- // How many steps may run at once. Bounded because a fan-out of twelve is twelve provider sessions, twelve
244
- // worktrees and twelve times the burn rate, and because the machine this runs on is one machine.
145
+ // Every step runs in its own worktree, always, with no toggle; a shared tree lets a fresh step see a predecessor's
146
+ // half-finished edits, and breaks fan-in diffs.
147
+ // Bounded: a fan-out of N is N provider sessions, N worktrees and N times the burn rate, on one machine.
245
148
  maxParallel: z
246
149
  .number()
247
150
  .int()
@@ -252,13 +155,9 @@ export const WorkflowSchema = z.object({
252
155
  ),
253
156
  });
254
157
  export type Workflow = z.infer<typeof WorkflowSchema>;
255
- // The rules a graph has to clear before it can be saved or run, the acyclic `needs`, the once-only
256
- // continuation, are in workflow-faults.ts, because they are about the graph rather than about any field here.
257
158
 
258
- /* How one step ended. `skipped` is the one that carries information the others cannot: it means the step never
259
- * ran because something it waited for did not finish, which is why a failed workflow shows one red node and a
260
- * trail of grey ones rather than a wall of failures that all say the same thing.
261
- */
159
+ // skipped means the step never ran because something it waited on didn't finish; that's why a failed run shows one red
160
+ // node and a trail of grey ones.
262
161
  export const WorkflowStepStateSchema = z.enum(["pending", "running", "done", "failed", "skipped", "stopped"]);
263
162
  export type WorkflowStepState = z.infer<typeof WorkflowStepStateSchema>;
264
163
  export const WorkflowStepRunSchema = z.object({
@@ -266,8 +165,7 @@ export const WorkflowStepRunSchema = z.object({
266
165
  state: WorkflowStepStateSchema.describe(
267
166
  "How it went. Skipped carries what the others cannot: it never ran, because something it was waiting on did not finish. That is why a failed run shows one red step and a trail of grey ones.",
268
167
  ),
269
- // The conversation this step ran on, derived, and the door from a node on the graph to a real transcript.
270
- // Shared with the predecessor when the handoff is `continue`, which is what makes those steps one card.
168
+ // The conversation this step ran on; shared with its predecessor under continue, making them one card.
271
169
  conversationId: z
272
170
  .string()
273
171
  .describe(
@@ -277,27 +175,23 @@ export const WorkflowStepRunSchema = z.object({
277
175
  endedAt: z.number().optional().describe("When it ended, in milliseconds."),
278
176
  iterations: z.number().int().min(0).describe("How many rounds it took."),
279
177
  costUsd: z.number().optional().describe("What it cost, in dollars."),
280
- // How the step's LOOP ended, `exhausted` and `stalled` both land as a `failed` step, and the difference
281
- // between them is the difference between "give it more room" and "more room will not help".
178
+ // exhausted and stalled both surface as failed; the difference is whether more room would have helped.
282
179
  loopState: LoopStateSchema.optional().describe(
283
180
  "How its repeating ended. Out of rounds and stuck both come out as a failed step, and the difference between them is the difference between give it more room and more room will not help.",
284
181
  ),
285
182
  detail: z.string().optional().describe("What went wrong, when something did."),
286
- // What the step produced. Present once the step has written a valid document, which for a `json` output
287
- // means it matched the declared fields. This is what the steps downstream are given.
183
+ // Present once the step writes a document matching its declared shape; what downstream steps are handed.
288
184
  document: LoopDocumentSchema.optional().describe(
289
185
  "What it produced, once it has produced something that passes its own declared shape. This is what the steps after it are handed.",
290
186
  ),
291
- /* A bounded preview of the step's closing words. The complete response lives at `reportPath`, so a long-form
292
- * handoff is not silently reduced to its last few thousand characters and the ledger stays bounded. */
187
+ // Bounded preview of the closing words; the full text lives at reportPath, keeping the ledger small.
293
188
  report: z
294
189
  .string()
295
190
  .optional()
296
191
  .describe(
297
192
  "The start of its closing words. Bounded, so a long answer is not silently cut down to its last few thousand characters and the record stays a sensible size.",
298
193
  ),
299
- // Workspace-relative shared-state artifact containing the complete response. Fresh worktrees and a resumed
300
- // daemon see the same .intentic mount, so downstream steps can read it without copying it into their prompt.
194
+ // Workspace-relative path on the shared .intentic mount; steps read it without copying into a prompt.
301
195
  reportPath: z
302
196
  .string()
303
197
  .optional()
@@ -306,22 +200,16 @@ export const WorkflowStepRunSchema = z.object({
306
200
  ),
307
201
  });
308
202
  export type WorkflowStepRun = z.infer<typeof WorkflowStepRunSchema>;
309
- // `done` means every step that ran finished; a run with skipped steps is `failed`, because a graph that did not
310
- // reach its leaves did not do what it was asked whatever the survivors managed.
203
+ // done means every step that ran finished; any run with a skipped step counts as failed.
311
204
  export const WorkflowRunStateSchema = z.enum(["running", "done", "failed", "stopped", "overspent", "error"]);
312
205
  export type WorkflowRunState = z.infer<typeof WorkflowRunStateSchema>;
313
206
  export const WorkflowRunSchema = z.object({
314
207
  runId: z.string().min(1).describe("This run's id."),
315
- /* The workflow AS IT WAS WHEN THE RUN STARTED, snapshotted rather than referenced. Three things need this
316
- * and none of them tolerate a live lookup: the run view draws the graph the run actually ran (not the one
317
- * that has been edited twice since), the boot resume needs the step definitions of a workflow that may have
318
- * been deleted, and a history row for a deleted workflow is otherwise an id and nothing else. */
208
+ // Snapshot at run start, not a live reference; the run stays readable even if the design is edited or deleted.
319
209
  workflow: WorkflowSchema.describe(
320
210
  "The design as it stood when the run started, copied rather than looked up. The run has to keep showing the graph it actually ran, not the one edited twice since, and a run of a deleted workflow has to stay readable.",
321
211
  ),
322
- /* The workspace as this run began, one immutable commit per repository. Every fresh step branches from
323
- * these exact commits, even if main moves while a wide fan-out is still opening worktrees. Handoffs use the
324
- * same bases in their diff commands, so provenance works in nested repositories as well as at root. */
212
+ // One immutable commit per repo at run start; every step branches from these exact commits regardless of main.
325
213
  repos: z
326
214
  .array(RepoBaseSchema)
327
215
  .min(1)
@@ -329,17 +217,7 @@ export const WorkflowRunSchema = z.object({
329
217
  .describe(
330
218
  "The workspace as this run began, one exact commit per repository. Every step branches from these, even if the shared tree moves while a wide fan-out is still opening its copies, so the steps can be compared with each other afterwards.",
331
219
  ),
332
- /* WHAT THIS RUN WAS ASKED TO DO, the sentence the user typed when they started it, handed to every step
333
- * on top of its own prompt. Absent for a run started from the workflows page, which has no composer.
334
- *
335
- * It is what makes one saved design worth keeping: "two models, one task" is a SHAPE, and the task is
336
- * different every time. Without this the only way to point a workflow at today's job is to open the
337
- * designer and retype a step's prompt, which means the design and the request are the same document,
338
- * and editing a graph to ask a question is not something anybody does twice.
339
- *
340
- * Snapshotted on the run beside the workflow, and for the same reason: the run has to stay readable, and
341
- * "what was this one about" is the first thing anyone asks of a row in the history.
342
- */
220
+ // What the run was asked to do, handed to every step atop its own prompt; absent when there is no composer.
343
221
  request: z
344
222
  .string()
345
223
  .optional()
@@ -351,25 +229,16 @@ export const WorkflowRunSchema = z.object({
351
229
  ),
352
230
  startedAt: z.number().describe("When it began, in milliseconds."),
353
231
  endedAt: z.number().optional().describe("When it ended, in milliseconds."),
354
- // How many daemon boots have picked this run back up, the same counter, and the same reason, as a loop's.
232
+ // How many times the sandbox restarted and picked this run back up.
355
233
  resumed: z.number().int().min(0).describe("How many times the sandbox restarted under it and picked it back up."),
356
234
  detail: z.string().optional().describe("What went wrong, when something did."),
357
- // One entry per step, in the workflow's own order. Written at start with every step `pending`, so the graph
358
- // is complete from the first frame and a node's absence never has to mean two things.
235
+ // One entry per step, in the design's order; all start pending so the graph is complete from the first frame.
359
236
  steps: z
360
237
  .array(WorkflowStepRunSchema)
361
238
  .describe(
362
239
  "One entry per step, in the design's own order. Every one is written down as waiting when the run starts, so the picture is complete from the first frame and a missing step never has to mean two things.",
363
240
  ),
364
- /* When the run was ARCHIVED (ms epoch), off the board, exactly as an agent's `archivedAt` takes a card off
365
- * it, and the same promise: the run record stays readable in the history and every step's branch,
366
- * transcript and counters are untouched. Absent ⇒ live on the board.
367
- *
368
- * A RUN AND ITS STEPS ARCHIVE AS ONE, which is the whole reason this field exists rather than the record
369
- * simply being dropped. A run's steps have no card of their own, the run's row is what stands for them,
370
- * so deleting the record was releasing five loose conversations back onto the board at the moment the user
371
- * said they were finished with the job. Archiving the run archives its sessions with it and unarchiving
372
- * brings both back, so "done with this" means the same thing for a workflow as it does for an agent. */
241
+ // Off the board like an agent's archivedAt; a run and its steps archive and unarchive as one unit.
373
242
  archivedAt: z
374
243
  .number()
375
244
  .optional()
@@ -378,8 +247,15 @@ export const WorkflowRunSchema = z.object({
378
247
  ),
379
248
  });
380
249
  export type WorkflowRun = z.infer<typeof WorkflowRunSchema>;
381
- // The list row: the stored workflow plus the runs it has had, newest first.
382
- export const WorkflowSummarySchema = WorkflowSchema.extend({ runs: z.array(WorkflowRunSchema).describe("Its runs, newest first.") });
250
+ // The gate's credential; attached for a maintainer or the owner, and for nobody else.
251
+ const gateToken = z
252
+ .string()
253
+ .optional()
254
+ .describe("What a pipeline presents at /workflows/{id}/gate, when the design declares a gate. Shown to a maintainer or the owner only.");
255
+ // Save answers with the stored design plus the gate credential, the only way the designer learns the pipeline URL.
256
+ export const WorkflowSavedSchema = WorkflowSchema.extend({ gateToken });
257
+ export type WorkflowSaved = z.infer<typeof WorkflowSavedSchema>;
258
+ export const WorkflowSummarySchema = WorkflowSchema.extend({ runs: z.array(WorkflowRunSchema).describe("Its runs, newest first."), gateToken });
383
259
  export type WorkflowSummary = z.infer<typeof WorkflowSummarySchema>;
384
260
  export const WorkflowsListSchema = z.object({ workflows: z.array(WorkflowSummarySchema).describe("Every saved design with its own run history.") });
385
261
  export const WorkflowRunsListSchema = z.object({
@@ -387,9 +263,8 @@ export const WorkflowRunsListSchema = z.object({
387
263
  });
388
264
  export const WorkflowIdParamSchema = z.object({ id: z.string().describe("Which workflow.") });
389
265
  export const WorkflowRunIdParamSchema = z.object({ runId: z.string().describe("Which run.") });
390
- /* Starting a run: which design, and what to point it at. The request is optional because the workflows page
391
- * starts runs with no composer to read one from, a design whose steps already say what they want is complete
392
- * on its own, and only a design written as a shape needs today's sentence. */
266
+ // request is optional: a workflows-page run has no composer to fill it from, and a design whose steps already say what
267
+ // they want needs nothing more.
393
268
  export const WorkflowRunStartSchema = WorkflowIdParamSchema.extend({
394
269
  request: z
395
270
  .string()
@@ -400,9 +275,8 @@ export const WorkflowRunStartSchema = WorkflowIdParamSchema.extend({
400
275
  "What to point it at. Optional, because a design whose steps already say what they want is complete on its own; only one written as a shape needs today's sentence.",
401
276
  ),
402
277
  });
403
- // Creation and replacement are deliberately distinct. An id collision on create is a conflict; an update of
404
- // a missing id is not an implicit create. That makes the daemon, rather than a browser naming convention, the
405
- // authority that prevents one saved design from overwriting another.
278
+ // Create and replace are explicit and distinct: an id collision on create conflicts, and updating a missing id never
279
+ // implicitly creates one. The daemon enforces this, not a browser convention.
406
280
  export const WorkflowSaveSchema = z.object({
407
281
  workflow: WorkflowSchema.describe("The design to write."),
408
282
  create: z
@@ -15,8 +15,7 @@ export const CloneResultSchema = z.object({
15
15
  name: z.string().describe("What it ended up called."),
16
16
  path: z.string().describe("Where it landed."),
17
17
  });
18
- // Per-repo result of a workspace sync (fetch + guarded fast-forward). `status` mirrors GitSyncResult plus the
19
- // turn-orchestration outcomes skipped/error; behind/ahead/head/message are present per status (see RepoSyncOutcome).
18
+ // status mirrors GitSyncResult plus turn outcomes skipped/error; behind/ahead/head/message are present per status.
20
19
  export const RepoSyncSchema = z.object({
21
20
  repo: z.string().describe("Which repository."),
22
21
  status: z
@@ -30,9 +29,8 @@ export const RepoSyncSchema = z.object({
30
29
  message: z.string().optional().describe("What went wrong, when something did."),
31
30
  });
32
31
  export const WorkspaceSyncSchema = z.object({ repos: z.array(RepoSyncSchema).describe("One entry per repository, saying what happened to it.") });
33
- // Add one or more named app instances into an EXISTING monorepo. Each entry pairs a template key from the
34
- // source repo's templates.json manifest (e.g. "api", "web", "landing") with a user-chosen instance name
35
- // (e.g. "shop-api"); {repo} names the target monorepo.
32
+ // Adds named app instances to an existing monorepo: template is a key from the source repo's templates.json, name is
33
+ // the user's chosen instance name.
36
34
  export const AppInstanceInputSchema = z.object({
37
35
  template: z.string().min(1).describe("Which kind of app to scaffold, by its key in the template list."),
38
36
  name: z
@@ -46,17 +44,14 @@ export const AddAppsSchema = z.object({
46
44
  repo: z.string().describe("Which repository to scaffold into."),
47
45
  apps: z.array(AppInstanceInputSchema).min(1).describe("The apps to add."),
48
46
  });
49
- // Run vitest for one or more repo-relative project dirs in a named one-shot tmux panel session
50
- // (panel-<repo>--<session>), driven by the apps extension's Run-tests actions. `session` is a slug suffix
51
- // (an app/package name as `<name>__test`, or `tests` for the library section); `dirs` are repo-relative
52
- // package dirs, where "" targets the repo root.
47
+ // Runs vitest in a one-shot tmux panel session (panel-<repo>--<session>). dirs are repo-relative package dirs; ""
48
+ // targets the repo root.
53
49
  export const RunTestsSchema = z.object({
54
50
  repo: z.string().describe("Which repository."),
55
51
  session: z.string().describe("What to call the terminal this runs in, so you can find it again."),
56
52
  dirs: z.array(z.string()).min(1).describe("Which projects to test, as folders relative to the repository. Empty targets the repository root."),
57
53
  });
58
- // One addable app type the configured source repo offers (from its templates.json), listed for the operator
59
- // panel's Add-app picker: the manifest key + its label/description.
54
+ // One addable app type from the source repo's templates.json, for the Add-app picker.
60
55
  export const TemplateSummarySchema = z.object({
61
56
  key: z.string().describe("The id to name when scaffolding one."),
62
57
  label: z.string().describe("What to call it on screen."),
@@ -67,11 +62,8 @@ export const TemplatesListSchema = z.object({
67
62
  templates: z.array(TemplateSummarySchema).describe("The kinds of app the configured source repository knows how to scaffold."),
68
63
  });
69
64
  export type TemplatesList = z.infer<typeof TemplatesListSchema>;
70
- // One app instance currently in a monorepo, with its own preview dev server + live status (started/stopped
71
- // from the apps extension). `app` is the user-chosen instance name (the _apps/ dir); `kind` is what sort of
72
- // app it is, the manifest key it was scaffolded from (api/web/landing), else the framework detected from its
73
- // dependencies (astro/next/…), and absent when it was discovered purely by its `dev` script. previewUrl is
74
- // https://preview-<repo>--<app>-<sandboxId>.<zone> (absent on loopback, no zone or no connect token).
65
+ // One app instance in a monorepo, with its own dev server and status. previewUrl is
66
+ // https://preview-<repo>--<app>-<sandboxId>.<zone>, absent without a zone or connect token.
75
67
  export const RepoAppSchema = z.object({
76
68
  app: z.string().describe("The app's name, which is also its folder."),
77
69
  kind: z
@@ -83,8 +75,7 @@ export const RepoAppSchema = z.object({
83
75
  previewUrl: z.string().optional().describe("Where to open it. Absent when this sandbox has no outside address."),
84
76
  running: z.boolean().describe("Whether its dev server is up."),
85
77
  healthy: z.boolean().describe("Whether it is actually answering."),
86
- // The same two facts a repository's panel row carries (PanelSummarySchema), for the same screens: an app
87
- // installs at its monorepo's root, so `installed` is the root's node_modules.
78
+ // Same as a repo's panel row: an app installs at its monorepo's root, so this is the root's node_modules.
88
79
  installed: z
89
80
  .boolean()
90
81
  .describe("Whether its dependencies are installed, which is what decides whether a start takes seconds or an install first."),
@@ -95,8 +86,7 @@ export const RepoAppSchema = z.object({
95
86
  export type RepoApp = z.infer<typeof RepoAppSchema>;
96
87
  export const AppsListSchema = z.object({ apps: z.array(RepoAppSchema).describe("The apps in this repository.") });
97
88
  export type AppsList = z.infer<typeof AppsListSchema>;
98
- // One workspace package in a pnpm monorepo, discovered from pnpm-workspace.yaml's packages globs. `dir` is the
99
- // repo-relative package dir (e.g. "_editor/web"); `group` is its top-level dir segment (e.g. "_editor"), the
89
+ // A pnpm-workspace package, discovered from pnpm-workspace.yaml's globs. group is the top-level dir segment, the
100
90
  // dependencies view's coloring axis.
101
91
  export const WorkspacePackageSchema = z.object({
102
92
  name: z.string().describe("The name the package declares."),
@@ -106,8 +96,7 @@ export const WorkspacePackageSchema = z.object({
106
96
  export type WorkspacePackage = z.infer<typeof WorkspacePackageSchema>;
107
97
  export const WorkspaceDepTypeSchema = z.enum(["prod", "dev", "peer"]);
108
98
  export type WorkspaceDepType = z.infer<typeof WorkspaceDepTypeSchema>;
109
- // A workspace-internal dependency edge: `from` DEPENDS ON `to` (from's package.json lists to), typed by which
110
- // dependency block declared it. Pure data, layout/direction is the client's concern.
99
+ // A workspace-internal dependency edge: from depends on to, typed by which dependency block declared it.
111
100
  export const WorkspaceDepEdgeSchema = z.object({
112
101
  from: z.string().describe("The package that depends."),
113
102
  to: z.string().describe("The package it depends on."),
@@ -119,8 +108,7 @@ export const WorkspaceGraphSchema = z.object({
119
108
  edges: z.array(WorkspaceDepEdgeSchema).describe("Which of them use which. Pure data: how to lay it out is yours to decide."),
120
109
  });
121
110
  export type WorkspaceGraph = z.infer<typeof WorkspaceGraphSchema>;
122
- // Path params for the per-repo apps routes: the monorepo name (validated in the handler like PanelRepoParam)
123
- // and, for per-app preview control (start/stop), the app key (api/web/landing).
111
+ // Path params for the per-repo apps routes: repo names the monorepo, validated like PanelRepoParam.
124
112
  export const RepoAppsParamSchema = z.object({ repo: z.string().describe("Which repository.") });
125
113
  export const AppParamSchema = z.object({
126
114
  repo: z.string().describe("Which repository."),