@relayflows/sdk 2.0.29 → 2.0.31

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 (393) hide show
  1. package/dist/agent-artifacts.d.ts.map +1 -1
  2. package/dist/agent-artifacts.js +2 -9
  3. package/dist/agent-artifacts.js.map +1 -1
  4. package/dist/agent-cwd.d.ts +69 -0
  5. package/dist/agent-cwd.d.ts.map +1 -0
  6. package/dist/agent-cwd.js +140 -0
  7. package/dist/agent-cwd.js.map +1 -0
  8. package/dist/artifact-scan-policy.d.ts +35 -0
  9. package/dist/artifact-scan-policy.d.ts.map +1 -0
  10. package/dist/artifact-scan-policy.js +49 -0
  11. package/dist/artifact-scan-policy.js.map +1 -0
  12. package/dist/authored-completion-record.d.ts +35 -0
  13. package/dist/authored-completion-record.d.ts.map +1 -0
  14. package/dist/authored-completion-record.js +92 -0
  15. package/dist/authored-completion-record.js.map +1 -0
  16. package/dist/authored-completion.d.ts +99 -0
  17. package/dist/authored-completion.d.ts.map +1 -0
  18. package/dist/authored-completion.js +184 -0
  19. package/dist/authored-completion.js.map +1 -0
  20. package/dist/authored-flow-error.d.ts +13 -1
  21. package/dist/authored-flow-error.d.ts.map +1 -1
  22. package/dist/authored-flow-error.js +12 -0
  23. package/dist/authored-flow-error.js.map +1 -1
  24. package/dist/authored-flow-executor.d.ts +7 -30
  25. package/dist/authored-flow-executor.d.ts.map +1 -1
  26. package/dist/authored-flow-executor.js +64 -48
  27. package/dist/authored-flow-executor.js.map +1 -1
  28. package/dist/authored-human.d.ts.map +1 -1
  29. package/dist/authored-human.js +1 -3
  30. package/dist/authored-human.js.map +1 -1
  31. package/dist/authored-node-entry.js +4 -1
  32. package/dist/authored-node-entry.js.map +1 -1
  33. package/dist/authored-node-runner.d.ts +9 -1
  34. package/dist/authored-node-runner.d.ts.map +1 -1
  35. package/dist/authored-node-runner.js +92 -17
  36. package/dist/authored-node-runner.js.map +1 -1
  37. package/dist/authored-root.d.ts +5 -0
  38. package/dist/authored-root.d.ts.map +1 -1
  39. package/dist/authored-root.js +20 -2
  40. package/dist/authored-root.js.map +1 -1
  41. package/dist/authored-step-output.d.ts +35 -10
  42. package/dist/authored-step-output.d.ts.map +1 -1
  43. package/dist/authored-step-output.js +108 -40
  44. package/dist/authored-step-output.js.map +1 -1
  45. package/dist/authored-verdict.d.ts +28 -0
  46. package/dist/authored-verdict.d.ts.map +1 -0
  47. package/dist/authored-verdict.js +79 -0
  48. package/dist/authored-verdict.js.map +1 -0
  49. package/dist/authored-worker-step.d.ts +5 -2
  50. package/dist/authored-worker-step.d.ts.map +1 -1
  51. package/dist/authored-worker-step.js +48 -11
  52. package/dist/authored-worker-step.js.map +1 -1
  53. package/dist/bundle-extensions.d.ts.map +1 -1
  54. package/dist/bundle-extensions.js +4 -7
  55. package/dist/bundle-extensions.js.map +1 -1
  56. package/dist/bundle.d.ts.map +1 -1
  57. package/dist/bundle.js +41 -7
  58. package/dist/bundle.js.map +1 -1
  59. package/dist/canonical.d.ts.map +1 -1
  60. package/dist/canonical.js +18 -6
  61. package/dist/canonical.js.map +1 -1
  62. package/dist/cli/check-worker-surface.d.ts +27 -0
  63. package/dist/cli/check-worker-surface.d.ts.map +1 -0
  64. package/dist/cli/check-worker-surface.js +63 -0
  65. package/dist/cli/check-worker-surface.js.map +1 -0
  66. package/dist/cli/check.d.ts +19 -2
  67. package/dist/cli/check.d.ts.map +1 -1
  68. package/dist/cli/check.js +12 -4
  69. package/dist/cli/check.js.map +1 -1
  70. package/dist/cli/cloud-format.d.ts +9 -0
  71. package/dist/cli/cloud-format.d.ts.map +1 -0
  72. package/dist/cli/cloud-format.js +77 -0
  73. package/dist/cli/cloud-format.js.map +1 -0
  74. package/dist/cli/cloud-live.d.ts +39 -0
  75. package/dist/cli/cloud-live.d.ts.map +1 -0
  76. package/dist/cli/cloud-live.js +325 -0
  77. package/dist/cli/cloud-live.js.map +1 -0
  78. package/dist/cli/cloud-read.d.ts +3 -7
  79. package/dist/cli/cloud-read.d.ts.map +1 -1
  80. package/dist/cli/cloud-read.js +14 -266
  81. package/dist/cli/cloud-read.js.map +1 -1
  82. package/dist/cli/cloud-refusal.d.ts +39 -0
  83. package/dist/cli/cloud-refusal.d.ts.map +1 -0
  84. package/dist/cli/cloud-refusal.js +95 -0
  85. package/dist/cli/cloud-refusal.js.map +1 -0
  86. package/dist/cli/cloud-status-view.d.ts +7 -0
  87. package/dist/cli/cloud-status-view.d.ts.map +1 -0
  88. package/dist/cli/cloud-status-view.js +214 -0
  89. package/dist/cli/cloud-status-view.js.map +1 -0
  90. package/dist/cli/direct-run.d.ts.map +1 -1
  91. package/dist/cli/direct-run.js +16 -2
  92. package/dist/cli/direct-run.js.map +1 -1
  93. package/dist/cli/hn-monitor.d.ts +0 -13
  94. package/dist/cli/hn-monitor.d.ts.map +1 -1
  95. package/dist/cli/hn-monitor.js +2 -1
  96. package/dist/cli/hn-monitor.js.map +1 -1
  97. package/dist/cli/local-agent-remedy.d.ts +80 -0
  98. package/dist/cli/local-agent-remedy.d.ts.map +1 -0
  99. package/dist/cli/local-agent-remedy.js +116 -0
  100. package/dist/cli/local-agent-remedy.js.map +1 -0
  101. package/dist/cli/observer-session.d.ts +41 -0
  102. package/dist/cli/observer-session.d.ts.map +1 -0
  103. package/dist/cli/observer-session.js +78 -0
  104. package/dist/cli/observer-session.js.map +1 -0
  105. package/dist/cli/run.d.ts +30 -2
  106. package/dist/cli/run.d.ts.map +1 -1
  107. package/dist/cli/run.js +186 -24
  108. package/dist/cli/run.js.map +1 -1
  109. package/dist/cli/status.d.ts +9 -0
  110. package/dist/cli/status.d.ts.map +1 -1
  111. package/dist/cli/status.js +31 -2
  112. package/dist/cli/status.js.map +1 -1
  113. package/dist/cli/step-evidence.d.ts +90 -0
  114. package/dist/cli/step-evidence.d.ts.map +1 -0
  115. package/dist/cli/step-evidence.js +259 -0
  116. package/dist/cli/step-evidence.js.map +1 -0
  117. package/dist/cli/step-failure.d.ts +14 -4
  118. package/dist/cli/step-failure.d.ts.map +1 -1
  119. package/dist/cli/step-failure.js +41 -76
  120. package/dist/cli/step-failure.js.map +1 -1
  121. package/dist/cli-commands.d.ts +6 -0
  122. package/dist/cli-commands.d.ts.map +1 -1
  123. package/dist/cli-commands.js +2 -0
  124. package/dist/cli-commands.js.map +1 -1
  125. package/dist/cli.d.ts +10 -0
  126. package/dist/cli.d.ts.map +1 -1
  127. package/dist/cli.js +53 -42
  128. package/dist/cli.js.map +1 -1
  129. package/dist/cloud-read.d.ts +15 -0
  130. package/dist/cloud-read.d.ts.map +1 -1
  131. package/dist/cloud-read.js +20 -1
  132. package/dist/cloud-read.js.map +1 -1
  133. package/dist/cloud-run-record.d.ts +27 -0
  134. package/dist/cloud-run-record.d.ts.map +1 -0
  135. package/dist/cloud-run-record.js +56 -0
  136. package/dist/cloud-run-record.js.map +1 -0
  137. package/dist/cloud-run.d.ts +2 -9
  138. package/dist/cloud-run.d.ts.map +1 -1
  139. package/dist/cloud-run.js +3 -20
  140. package/dist/cloud-run.js.map +1 -1
  141. package/dist/communication/local.d.ts.map +1 -1
  142. package/dist/communication/local.js +2 -1
  143. package/dist/communication/local.js.map +1 -1
  144. package/dist/communication/worker.d.ts +1 -1
  145. package/dist/communication/worker.d.ts.map +1 -1
  146. package/dist/communication/worker.js +13 -5
  147. package/dist/communication/worker.js.map +1 -1
  148. package/dist/compile.d.ts.map +1 -1
  149. package/dist/compile.js +28 -6
  150. package/dist/compile.js.map +1 -1
  151. package/dist/direct-input.d.ts.map +1 -1
  152. package/dist/direct-input.js +21 -1
  153. package/dist/direct-input.js.map +1 -1
  154. package/dist/failure-kinds.d.ts +96 -6
  155. package/dist/failure-kinds.d.ts.map +1 -1
  156. package/dist/failure-kinds.js +29 -2
  157. package/dist/failure-kinds.js.map +1 -1
  158. package/dist/flow-extension-compat.d.ts.map +1 -1
  159. package/dist/flow-extension-compat.js +26 -8
  160. package/dist/flow-extension-compat.js.map +1 -1
  161. package/dist/flow-extension-loader.d.ts +7 -0
  162. package/dist/flow-extension-loader.d.ts.map +1 -1
  163. package/dist/flow-extension-loader.js +48 -22
  164. package/dist/flow-extension-loader.js.map +1 -1
  165. package/dist/flow-requirements.d.ts.map +1 -1
  166. package/dist/flow-requirements.js +24 -9
  167. package/dist/flow-requirements.js.map +1 -1
  168. package/dist/fs-descriptor.d.ts +17 -0
  169. package/dist/fs-descriptor.d.ts.map +1 -0
  170. package/dist/fs-descriptor.js +96 -0
  171. package/dist/fs-descriptor.js.map +1 -0
  172. package/dist/gate-contract.d.ts +7 -0
  173. package/dist/gate-contract.d.ts.map +1 -1
  174. package/dist/gate-contract.js +6 -1
  175. package/dist/gate-contract.js.map +1 -1
  176. package/dist/helper-preflight.d.ts.map +1 -1
  177. package/dist/helper-preflight.js +10 -3
  178. package/dist/helper-preflight.js.map +1 -1
  179. package/dist/helper-reference.d.ts +25 -0
  180. package/dist/helper-reference.d.ts.map +1 -0
  181. package/dist/helper-reference.js +129 -0
  182. package/dist/helper-reference.js.map +1 -0
  183. package/dist/hosted-base-snapshot.d.ts +25 -0
  184. package/dist/hosted-base-snapshot.d.ts.map +1 -0
  185. package/dist/hosted-base-snapshot.js +278 -0
  186. package/dist/hosted-base-snapshot.js.map +1 -0
  187. package/dist/hosted-extension-declarations.d.ts +10 -0
  188. package/dist/hosted-extension-declarations.d.ts.map +1 -0
  189. package/dist/hosted-extension-declarations.js +272 -0
  190. package/dist/hosted-extension-declarations.js.map +1 -0
  191. package/dist/hosted-extension-isolation.d.ts +82 -0
  192. package/dist/hosted-extension-isolation.d.ts.map +1 -0
  193. package/dist/hosted-extension-isolation.js +322 -0
  194. package/dist/hosted-extension-isolation.js.map +1 -0
  195. package/dist/hosted-extension-manifest.d.ts +9 -0
  196. package/dist/hosted-extension-manifest.d.ts.map +1 -0
  197. package/dist/hosted-extension-manifest.js +235 -0
  198. package/dist/hosted-extension-manifest.js.map +1 -0
  199. package/dist/hosted-extension-protocol.d.ts +16 -0
  200. package/dist/hosted-extension-protocol.d.ts.map +1 -0
  201. package/dist/hosted-extension-protocol.js +224 -0
  202. package/dist/hosted-extension-protocol.js.map +1 -0
  203. package/dist/hosted-extension-runtime.d.ts +30 -0
  204. package/dist/hosted-extension-runtime.d.ts.map +1 -0
  205. package/dist/hosted-extension-runtime.js +167 -0
  206. package/dist/hosted-extension-runtime.js.map +1 -0
  207. package/dist/hosted-extension-sandbox-source.d.ts +9 -0
  208. package/dist/hosted-extension-sandbox-source.d.ts.map +1 -0
  209. package/dist/hosted-extension-sandbox-source.js +95 -0
  210. package/dist/hosted-extension-sandbox-source.js.map +1 -0
  211. package/dist/hosted-extension-sandbox.d.ts +39 -0
  212. package/dist/hosted-extension-sandbox.d.ts.map +1 -0
  213. package/dist/hosted-extension-sandbox.js +418 -0
  214. package/dist/hosted-extension-sandbox.js.map +1 -0
  215. package/dist/hosted-project.d.ts +3 -0
  216. package/dist/hosted-project.d.ts.map +1 -0
  217. package/dist/hosted-project.js +19 -0
  218. package/dist/hosted-project.js.map +1 -0
  219. package/dist/hosted-promise-safety.d.ts +12 -0
  220. package/dist/hosted-promise-safety.d.ts.map +1 -0
  221. package/dist/hosted-promise-safety.js +63 -0
  222. package/dist/hosted-promise-safety.js.map +1 -0
  223. package/dist/index.d.ts +3 -1
  224. package/dist/index.d.ts.map +1 -1
  225. package/dist/index.js +2 -0
  226. package/dist/index.js.map +1 -1
  227. package/dist/intrinsic-array.d.ts +3 -0
  228. package/dist/intrinsic-array.d.ts.map +1 -0
  229. package/dist/intrinsic-array.js +14 -0
  230. package/dist/intrinsic-array.js.map +1 -0
  231. package/dist/journal-client.d.ts +3 -1
  232. package/dist/journal-client.d.ts.map +1 -1
  233. package/dist/journal-client.js +17 -2
  234. package/dist/journal-client.js.map +1 -1
  235. package/dist/journal-projection.d.ts +16 -0
  236. package/dist/journal-projection.d.ts.map +1 -0
  237. package/dist/journal-projection.js +108 -0
  238. package/dist/journal-projection.js.map +1 -0
  239. package/dist/json-value.d.ts +6 -1
  240. package/dist/json-value.d.ts.map +1 -1
  241. package/dist/json-value.js +155 -36
  242. package/dist/json-value.js.map +1 -1
  243. package/dist/llm-worker.d.ts +9 -0
  244. package/dist/llm-worker.d.ts.map +1 -1
  245. package/dist/llm-worker.js +16 -2
  246. package/dist/llm-worker.js.map +1 -1
  247. package/dist/local-agent.d.ts +1 -1
  248. package/dist/local-agent.d.ts.map +1 -1
  249. package/dist/local-agent.js +4 -3
  250. package/dist/local-agent.js.map +1 -1
  251. package/dist/named-gate-lowering.js +35 -5
  252. package/dist/named-gate-lowering.js.map +1 -1
  253. package/dist/named-gate-preflight.d.ts +27 -0
  254. package/dist/named-gate-preflight.d.ts.map +1 -0
  255. package/dist/named-gate-preflight.js +47 -0
  256. package/dist/named-gate-preflight.js.map +1 -0
  257. package/dist/named-gates.d.ts +1 -1
  258. package/dist/named-gates.d.ts.map +1 -1
  259. package/dist/named-gates.js +3 -0
  260. package/dist/named-gates.js.map +1 -1
  261. package/dist/observer-link.d.ts +7 -0
  262. package/dist/observer-link.d.ts.map +1 -1
  263. package/dist/observer-link.js +3 -1
  264. package/dist/observer-link.js.map +1 -1
  265. package/dist/plugin-store.d.ts +8 -2
  266. package/dist/plugin-store.d.ts.map +1 -1
  267. package/dist/plugin-store.js +233 -56
  268. package/dist/plugin-store.js.map +1 -1
  269. package/dist/preflight.d.ts.map +1 -1
  270. package/dist/preflight.js +7 -0
  271. package/dist/preflight.js.map +1 -1
  272. package/dist/protocol.d.ts +2 -0
  273. package/dist/protocol.d.ts.map +1 -1
  274. package/dist/redact.d.ts +42 -0
  275. package/dist/redact.d.ts.map +1 -1
  276. package/dist/redact.js +128 -0
  277. package/dist/redact.js.map +1 -1
  278. package/dist/run-projection.d.ts +83 -0
  279. package/dist/run-projection.d.ts.map +1 -0
  280. package/dist/run-projection.js +199 -0
  281. package/dist/run-projection.js.map +1 -0
  282. package/dist/semver-range.d.ts.map +1 -1
  283. package/dist/semver-range.js +27 -15
  284. package/dist/semver-range.js.map +1 -1
  285. package/dist/shell-word.d.ts +19 -0
  286. package/dist/shell-word.d.ts.map +1 -0
  287. package/dist/shell-word.js +23 -0
  288. package/dist/shell-word.js.map +1 -0
  289. package/dist/spec.d.ts +52 -3
  290. package/dist/spec.d.ts.map +1 -1
  291. package/dist/spec.js.map +1 -1
  292. package/dist/step-fields.d.ts +1 -1
  293. package/dist/step-fields.js +1 -1
  294. package/dist/step-fields.js.map +1 -1
  295. package/dist/steps-green.d.ts +27 -0
  296. package/dist/steps-green.d.ts.map +1 -0
  297. package/dist/steps-green.js +164 -0
  298. package/dist/steps-green.js.map +1 -0
  299. package/dist/validate.d.ts.map +1 -1
  300. package/dist/validate.js +39 -8
  301. package/dist/validate.js.map +1 -1
  302. package/dist/worker-lease.d.ts +8 -1
  303. package/dist/worker-lease.d.ts.map +1 -1
  304. package/dist/worker-lease.js +34 -4
  305. package/dist/worker-lease.js.map +1 -1
  306. package/dist/worker.d.ts +8 -0
  307. package/dist/worker.d.ts.map +1 -1
  308. package/dist/worker.js +17 -9
  309. package/dist/worker.js.map +1 -1
  310. package/package.json +3 -7
  311. package/src/agent-artifacts.ts +2 -10
  312. package/src/agent-cwd.ts +139 -0
  313. package/src/artifact-scan-policy.ts +51 -0
  314. package/src/authored-completion-record.ts +119 -0
  315. package/src/authored-completion.ts +203 -0
  316. package/src/authored-flow-error.ts +13 -1
  317. package/src/authored-flow-executor.ts +101 -59
  318. package/src/authored-human.ts +1 -4
  319. package/src/authored-node-entry.ts +4 -1
  320. package/src/authored-node-runner.ts +96 -22
  321. package/src/authored-root.ts +20 -2
  322. package/src/authored-step-output.ts +139 -42
  323. package/src/authored-verdict.ts +87 -0
  324. package/src/authored-worker-step.ts +60 -12
  325. package/src/bundle-extensions.ts +6 -5
  326. package/src/bundle.ts +52 -7
  327. package/src/canonical.ts +20 -6
  328. package/src/cli/check-worker-surface.ts +66 -0
  329. package/src/cli/check.ts +35 -4
  330. package/src/cli/cloud-format.ts +82 -0
  331. package/src/cli/cloud-live.ts +366 -0
  332. package/src/cli/cloud-read.ts +13 -282
  333. package/src/cli/cloud-refusal.ts +113 -0
  334. package/src/cli/cloud-status-view.ts +213 -0
  335. package/src/cli/direct-run.ts +19 -2
  336. package/src/cli/hn-monitor.ts +2 -1
  337. package/src/cli/local-agent-remedy.ts +160 -0
  338. package/src/cli/observer-session.ts +107 -0
  339. package/src/cli/run.ts +233 -28
  340. package/src/cli/status.ts +59 -3
  341. package/src/cli/step-evidence.ts +310 -0
  342. package/src/cli/step-failure.ts +57 -81
  343. package/src/cli-commands.ts +2 -0
  344. package/src/cli.ts +64 -44
  345. package/src/cloud-read.ts +25 -1
  346. package/src/cloud-run-record.ts +64 -0
  347. package/src/cloud-run.ts +5 -24
  348. package/src/communication/local.ts +2 -1
  349. package/src/communication/worker.ts +13 -5
  350. package/src/compile.ts +28 -6
  351. package/src/direct-input.ts +22 -1
  352. package/src/failure-kinds.ts +104 -2
  353. package/src/flow-extension-compat.ts +32 -7
  354. package/src/flow-extension-loader.ts +56 -21
  355. package/src/flow-requirements.ts +24 -9
  356. package/src/fs-descriptor.ts +127 -0
  357. package/src/gate-contract.ts +13 -1
  358. package/src/helper-preflight.ts +10 -3
  359. package/src/helper-reference.ts +130 -0
  360. package/src/hosted-base-snapshot.ts +351 -0
  361. package/src/hosted-extension-declarations.ts +387 -0
  362. package/src/hosted-extension-isolation.ts +457 -0
  363. package/src/hosted-extension-manifest.ts +249 -0
  364. package/src/hosted-extension-protocol.ts +262 -0
  365. package/src/hosted-extension-runtime.ts +266 -0
  366. package/src/hosted-extension-sandbox-source.ts +94 -0
  367. package/src/hosted-extension-sandbox.ts +489 -0
  368. package/src/hosted-project.ts +18 -0
  369. package/src/hosted-promise-safety.ts +68 -0
  370. package/src/index.ts +20 -0
  371. package/src/intrinsic-array.ts +14 -0
  372. package/src/journal-client.ts +19 -2
  373. package/src/journal-projection.ts +106 -0
  374. package/src/json-value.ts +184 -32
  375. package/src/llm-worker.ts +16 -2
  376. package/src/local-agent.ts +4 -2
  377. package/src/named-gate-lowering.ts +35 -5
  378. package/src/named-gate-preflight.ts +47 -0
  379. package/src/named-gates.ts +3 -0
  380. package/src/observer-link.ts +10 -1
  381. package/src/plugin-store.ts +323 -56
  382. package/src/preflight.ts +7 -0
  383. package/src/protocol.ts +2 -0
  384. package/src/redact.ts +111 -0
  385. package/src/run-projection.ts +247 -0
  386. package/src/semver-range.ts +39 -14
  387. package/src/shell-word.ts +24 -0
  388. package/src/spec.ts +54 -3
  389. package/src/step-fields.ts +1 -1
  390. package/src/steps-green.ts +168 -0
  391. package/src/validate.ts +35 -8
  392. package/src/worker-lease.ts +35 -5
  393. package/src/worker.ts +27 -11
@@ -0,0 +1,23 @@
1
+ /**
2
+ * POSIX shell quoting for the invocations diagnostics tell people to run.
3
+ *
4
+ * Dependency-free on purpose: every module that renders a command reaches for
5
+ * this, and two of them (`cli/run.ts` and `authored-human.ts`) already import
6
+ * each other's neighbours. A copy per call site is how one of them ends up
7
+ * emitting a path with a space in it unquoted.
8
+ */
9
+ /** `value` as a single word, quoted only when it would not survive a shell. */
10
+ export function shellWord(value) {
11
+ return /^[A-Za-z0-9_./=:@%+,-]+$/.test(value) ? value : shellQuote(value);
12
+ }
13
+ /**
14
+ * `value` as a single-quoted word, always.
15
+ *
16
+ * Used where the rendered argument is arbitrary author data — a flow path or a
17
+ * JSON `--input` — and the quotes are worth keeping even when unnecessary, so
18
+ * the command reads the same for `a.flow.ts` and for `my flows/a.flow.ts`.
19
+ */
20
+ export function shellQuote(value) {
21
+ return `'${value.replaceAll("'", "'\\''")}'`;
22
+ }
23
+ //# sourceMappingURL=shell-word.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-word.js","sourceRoot":"","sources":["../src/shell-word.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC"}
package/dist/spec.d.ts CHANGED
@@ -2,6 +2,12 @@ import type { JsonOutputSchema } from './output-schema.js';
2
2
  export type { JsonOutputSchema } from './output-schema.js';
3
3
  /** The three rungs of the ladder (RFC §1; AGENTS.md rule 7). */
4
4
  export type StepType = 'deterministic' | 'llm' | 'agent';
5
+ /**
6
+ * A deterministic step's exit-code policy. `'fail'` is the kernel's implicit
7
+ * gate; `'record'` completes the step with its exit code journaled so a later
8
+ * step can read the outcome instead of re-running the command.
9
+ */
10
+ export type OnNonZero = 'fail' | 'record';
5
11
  /** Project-owned MCP connections. env contains names, never secret values. */
6
12
  export type McpServerConfig = {
7
13
  command: string;
@@ -76,9 +82,23 @@ export interface ArtifactExistsGate {
76
82
  /** Working-directory-relative POSIX path, as the worker journals it. */
77
83
  path: string;
78
84
  }
85
+ /**
86
+ * Asserts that every named step recorded a zero exit code, reading the
87
+ * journaled outcome instead of re-running the command. This is the read side
88
+ * of `onNonZero: 'record'`: red work is allowed to exist, and this gate is
89
+ * where a flow declares that it stops being allowed.
90
+ *
91
+ * Deterministic hosts only — a worker step has no recorded exit code to read —
92
+ * and the ids it names must be deterministic steps that precede it.
93
+ */
94
+ export interface StepsGreenGate {
95
+ type: 'steps_green';
96
+ /** Earlier deterministic step ids whose recorded exit codes must all be zero. */
97
+ ids: string[];
98
+ }
79
99
  export type NamedDataGate = ReferencesInputGate | SubprocessGate | WordCountBoundsGate | RegexMatchGate | ArtifactExistsGate;
80
100
  export type OutputVerificationSpec = OutputContainsGate | JsonSchemaGate | NamedDataGate;
81
- export type VerificationSpec = ExitCodeGate | OutputVerificationSpec;
101
+ export type VerificationSpec = ExitCodeGate | StepsGreenGate | OutputVerificationSpec;
82
102
  /**
83
103
  * Agent-step recovery modes (RFC Appendix A rule 4). Default is `reset`.
84
104
  * These recovery modes apply to agent steps; deterministic steps retry their commands.
@@ -196,6 +216,15 @@ export interface DeterministicStepSpec extends BaseStepSpec {
196
216
  timeoutMs?: number;
197
217
  /** Per-invocation deterministic lease in milliseconds (maximum 15 minutes). */
198
218
  lease_ms?: number;
219
+ /**
220
+ * What a nonzero exit means. `'fail'` (the default) is the implicit
221
+ * `exit_code == 0` gate. `'record'` journals the exit code and output tails
222
+ * as the step's outcome, completes the step red, and lets dependents run —
223
+ * the repair-before-failure shape, without discarding the exit code the way
224
+ * `<command> || true` does. Declared content and schema gates, timeouts and
225
+ * worker errors keep their existing fatal semantics.
226
+ */
227
+ onNonZero?: OnNonZero;
199
228
  /** Omit to get the implicit `exit_code` gate. */
200
229
  verification?: VerificationSpec;
201
230
  }
@@ -242,7 +271,17 @@ export interface AgentStepSpec extends BaseStepSpec {
242
271
  surfaces?: AgentSurfaces;
243
272
  recoveryMode?: RecoveryMode;
244
273
  permissions?: PermissionsSpec;
245
- /** Working directory for the CLI subprocess; defaults to the flow-runner's cwd. */
274
+ /**
275
+ * Directory the declared CLI is spawned in, as a path relative to the run
276
+ * root — the flow-runner's working directory, which is also where the CLI
277
+ * runs when this is absent. Absolute paths, `.`, `..` and empty components
278
+ * are refused lexically by `flows check` and by the kernel; the worker that
279
+ * spawns the CLI additionally requires the symlink-free directory to exist
280
+ * inside the symlink-free run root. A declaration, not a sandbox: nothing
281
+ * stops a CLI from writing outside it. Not supported with
282
+ * `transport: 'relay'`, where the agent runs on a host this process cannot
283
+ * resolve. See docs/SURFACE.md.
284
+ */
246
285
  cwd?: string;
247
286
  /**
248
287
  * Dispatch transport (flows#385). `'direct'` (default) spawns the CLI as
@@ -411,6 +450,12 @@ export interface KernelDeterministicStep extends KernelStepCommon {
411
450
  command: string;
412
451
  timeout_ms?: number;
413
452
  lease_ms?: number;
453
+ /**
454
+ * Omitted for the default `'fail'`, exactly as the kernel skips serializing
455
+ * it: a step that does not declare the policy keeps the canonical bytes —
456
+ * and therefore the step hash — it had before this field existed.
457
+ */
458
+ on_non_zero?: OnNonZero;
414
459
  }
415
460
  export interface KernelLlmStep extends KernelStepCommon {
416
461
  type: 'llm';
@@ -440,7 +485,11 @@ export interface KernelAgentStep extends KernelStepCommon {
440
485
  recovery_mode: RecoveryMode;
441
486
  surfaces?: KernelAgentSurfaces;
442
487
  permissions?: KernelPermissionsSpec;
443
- /** Working directory for the CLI subprocess; kernel passes through untouched. */
488
+ /**
489
+ * Run-root-relative directory the attached worker spawns the CLI in. The
490
+ * kernel checks the shape and does no I/O: existence and containment are
491
+ * decided by the worker, on the host that shares the agent's filesystem.
492
+ */
444
493
  cwd?: string;
445
494
  /**
446
495
  * Dispatch transport (flows#385). Kernel passes through untouched;
@@ -1 +1 @@
1
- {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
package/dist/spec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,iEAAiE;AACjE,0EAA0E;AAC1E,qFAAqF;AACrF,kGAAkG;AAClG,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,yDAAyD;AAmYzD,uDAAuD;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,iEAAiE;AACjE,0EAA0E;AAC1E,qFAAqF;AACrF,kGAAkG;AAClG,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,yDAAyD;AA4azD,uDAAuD;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC"}
@@ -10,7 +10,7 @@ export declare const STEP_COMMON_FIELDS: readonly ["id", "type", "dependsOn", "i
10
10
  * per-verb boundary through a second, drifting allowlist.
11
11
  */
12
12
  export declare const STEP_FIELDS_BY_TYPE: {
13
- readonly deterministic: readonly ["command", "timeoutMs", "lease_ms"];
13
+ readonly deterministic: readonly ["command", "timeoutMs", "lease_ms", "onNonZero"];
14
14
  readonly llm: readonly ["prompt", "model", "cli", "output"];
15
15
  readonly agent: readonly ["instruction", "agent", "cli", "model", "cwd", "transport", "surfaces", "recoveryMode", "permissions", "output"];
16
16
  };
@@ -30,7 +30,7 @@ export const STEP_COMMON_FIELDS = [
30
30
  * per-verb boundary through a second, drifting allowlist.
31
31
  */
32
32
  export const STEP_FIELDS_BY_TYPE = {
33
- deterministic: ['command', 'timeoutMs', 'lease_ms'],
33
+ deterministic: ['command', 'timeoutMs', 'lease_ms', 'onNonZero'],
34
34
  llm: ['prompt', 'model', 'cli', 'output'],
35
35
  agent: ['instruction', 'agent', 'cli', 'model', 'cwd', 'transport', 'surfaces', 'recoveryMode', 'permissions', 'output'],
36
36
  };
@@ -1 +1 @@
1
- {"version":3,"file":"step-fields.js","sourceRoot":"","sources":["../src/step-fields.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS;IACT,MAAM;IACN,aAAa;IACb,KAAK;IACL,QAAQ;IACR,UAAU;IACV,OAAO;IACP,QAAQ;IACR,WAAW;IACX,OAAO;CACC,CAAC;AAEX,6CAA6C;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAU,CAAC;AAElE,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI;IACJ,MAAM;IACN,WAAW;IACX,OAAO;IACP,cAAc;IACd,eAAe;IACf,QAAQ;IACR,cAAc;CACN,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,aAAa,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;IACnD,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;IACzC,KAAK,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC;CAClE,CAAC"}
1
+ {"version":3,"file":"step-fields.js","sourceRoot":"","sources":["../src/step-fields.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS;IACT,MAAM;IACN,aAAa;IACb,KAAK;IACL,QAAQ;IACR,UAAU;IACV,OAAO;IACP,QAAQ;IACR,WAAW;IACX,OAAO;CACC,CAAC;AAEX,6CAA6C;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAU,CAAC;AAElE,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI;IACJ,MAAM;IACN,WAAW;IACX,OAAO;IACP,cAAc;IACd,eAAe;IACf,QAAQ;IACR,cAAc;CACN,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,aAAa,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC;IAChE,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;IACzC,KAAK,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC;CAClE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { StepSpec, StepsGreenGate, VerificationSpec } from './spec.js';
2
+ export declare const STEPS_GREEN_KEYS: readonly ["type", "ids"];
3
+ export declare function isStepsGreenGate(gate: VerificationSpec | undefined): gate is StepsGreenGate;
4
+ /** Shape errors for one gate, without reference to the rest of the flow. */
5
+ export declare function stepsGreenErrors(gate: Record<string, unknown>, at: string, stepType: string): string[];
6
+ /**
7
+ * Flow-level errors: the ids must resolve to earlier deterministic steps whose
8
+ * recorded outcome this gate can actually read. Refusing here is the whole
9
+ * point — a gate that silently reads nothing is the `|| true` failure mode
10
+ * this feature replaces.
11
+ */
12
+ export declare function stepsGreenReferenceErrors(steps: readonly unknown[]): string[];
13
+ /**
14
+ * Lower every `steps_green` gate into a generated deterministic gate step.
15
+ *
16
+ * The host keeps its own command and its own exit policy; the gate is a
17
+ * separate step, always fatal, that binds each named source's journaled output
18
+ * envelope and refuses any nonzero or malformed exit code. Dependents of the
19
+ * host gain a barrier on the gate, so "these steps were green" is established
20
+ * before anything downstream of the assertion runs.
21
+ *
22
+ * Runs BEFORE `lowerNamedGates`, which then adds each source's own named-gate
23
+ * barrier to the generated step and rewrites named-gate hosts to the permissive
24
+ * envelope schema this gate's bindings need.
25
+ */
26
+ export declare function lowerStepsGreenGates(steps: readonly StepSpec[]): StepSpec[];
27
+ //# sourceMappingURL=steps-green.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps-green.d.ts","sourceRoot":"","sources":["../src/steps-green.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE5E,eAAO,MAAM,gBAAgB,0BAA2B,CAAC;AAEzD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,IAAI,cAAc,CAE3F;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAetG;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,EAAE,CAqC7E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAqD3E"}
@@ -0,0 +1,164 @@
1
+ // The read side of `onNonZero: 'record'`. A `steps_green` gate names earlier
2
+ // deterministic steps and asserts every one of them recorded exit code zero.
3
+ // The verdict comes from the journal — the recorded outcome each step already
4
+ // produced — so asserting it costs nothing and cannot disagree with what ran.
5
+ import { bindingDependencies } from './input-binding.js';
6
+ export const STEPS_GREEN_KEYS = ['type', 'ids'];
7
+ export function isStepsGreenGate(gate) {
8
+ return gate?.type === 'steps_green';
9
+ }
10
+ /** Shape errors for one gate, without reference to the rest of the flow. */
11
+ export function stepsGreenErrors(gate, at, stepType) {
12
+ const errors = [];
13
+ if (stepType !== 'deterministic') {
14
+ errors.push(`${at}: gate_host_unsupported: steps_green is supported only on deterministic steps`);
15
+ }
16
+ const ids = gate['ids'];
17
+ if (!Array.isArray(ids) || ids.length === 0
18
+ || !ids.every(id => typeof id === 'string' && id.trim().length > 0)) {
19
+ errors.push(`${at}.ids: gate_ids_invalid: expected a non-empty array of step ids`);
20
+ return errors;
21
+ }
22
+ if (new Set(ids).size !== ids.length) {
23
+ errors.push(`${at}.ids: gate_ids_invalid: step ids must be unique`);
24
+ }
25
+ return errors;
26
+ }
27
+ /**
28
+ * Flow-level errors: the ids must resolve to earlier deterministic steps whose
29
+ * recorded outcome this gate can actually read. Refusing here is the whole
30
+ * point — a gate that silently reads nothing is the `|| true` failure mode
31
+ * this feature replaces.
32
+ */
33
+ export function stepsGreenReferenceErrors(steps) {
34
+ const errors = [];
35
+ const sources = new Map(steps.flatMap((step, index) => isObject(step) && typeof step['id'] === 'string' ? [[step['id'], { step, index }]] : []));
36
+ for (const [index, step] of steps.entries()) {
37
+ if (!isObject(step))
38
+ continue;
39
+ const gate = step['verification'];
40
+ if (!isObject(gate) || gate['type'] !== 'steps_green')
41
+ continue;
42
+ const ids = gate['ids'];
43
+ if (!Array.isArray(ids))
44
+ continue;
45
+ const at = `spec.steps[${index}].verification.ids`;
46
+ for (const id of ids) {
47
+ if (typeof id !== 'string')
48
+ continue;
49
+ const source = sources.get(id);
50
+ if (source === undefined) {
51
+ errors.push(`${at}: gate_source_unsupported: unknown step "${id}"`);
52
+ continue;
53
+ }
54
+ if (source.index >= index) {
55
+ errors.push(`${at}: gate_source_unsupported: source "${id}" must precede this step; forward and self references are not supported`);
56
+ continue;
57
+ }
58
+ if (source.step['type'] !== 'deterministic') {
59
+ errors.push(`${at}: gate_source_unsupported: source "${id}" is a ${String(source.step['type'])} step and records no exit code`);
60
+ continue;
61
+ }
62
+ // The gate binds the source's whole output envelope, which requires a
63
+ // declared output schema. Every source shape is reachable except this
64
+ // one: `output_contains` is the single gate the compiler cannot widen
65
+ // without dropping the author's own check.
66
+ const sourceGate = source.step['verification'];
67
+ if (isObject(sourceGate) && sourceGate['type'] === 'output_contains') {
68
+ errors.push(`${at}: gate_source_unsupported: source "${id}" declares an output_contains gate, which cannot also carry the output schema this gate reads`);
69
+ }
70
+ }
71
+ }
72
+ return errors;
73
+ }
74
+ /**
75
+ * Lower every `steps_green` gate into a generated deterministic gate step.
76
+ *
77
+ * The host keeps its own command and its own exit policy; the gate is a
78
+ * separate step, always fatal, that binds each named source's journaled output
79
+ * envelope and refuses any nonzero or malformed exit code. Dependents of the
80
+ * host gain a barrier on the gate, so "these steps were green" is established
81
+ * before anything downstream of the assertion runs.
82
+ *
83
+ * Runs BEFORE `lowerNamedGates`, which then adds each source's own named-gate
84
+ * barrier to the generated step and rewrites named-gate hosts to the permissive
85
+ * envelope schema this gate's bindings need.
86
+ */
87
+ export function lowerStepsGreenGates(steps) {
88
+ const used = new Set(steps.map(step => step.id));
89
+ const barriers = new Map();
90
+ for (const step of steps) {
91
+ // Deterministic hosts only, which `validateSpec` already enforces; the
92
+ // narrowing here is what lets the rewrite below stay type-exact.
93
+ if (step.type !== 'deterministic' || !isStepsGreenGate(step.verification))
94
+ continue;
95
+ let id = `${step.id}.green`;
96
+ while (used.has(id))
97
+ id += '.green';
98
+ used.add(id);
99
+ barriers.set(step.id, id);
100
+ }
101
+ if (barriers.size === 0)
102
+ return [...steps];
103
+ // Every source's envelope has to be bindable. A source that declares no
104
+ // gate, or the implicit exit_code gate, gets the permissive whole-output
105
+ // schema; its exit policy is untouched, so a recording source stays red.
106
+ const bound = new Set(steps.flatMap(step => isStepsGreenGate(step.verification) ? step.verification.ids : []));
107
+ const output = [];
108
+ for (const step of steps) {
109
+ const dependencies = [...new Set([...(step.dependsOn ?? []), ...bindingDependencies(step.input)])];
110
+ const dependsOn = [...new Set([...dependencies, ...dependencies.flatMap(id => barriers.get(id) ?? [])])];
111
+ let producer = dependsOn.length ? { ...step, dependsOn } : step;
112
+ if (bound.has(step.id) && producer.type === 'deterministic'
113
+ && (producer.verification === undefined || producer.verification.type === 'exit_code')) {
114
+ producer = { ...producer, verification: { type: 'json_schema', schema: true } };
115
+ }
116
+ const gate = step.verification;
117
+ if (producer.type !== 'deterministic' || !isStepsGreenGate(gate)) {
118
+ output.push(producer);
119
+ continue;
120
+ }
121
+ // The host's own gate becomes the implicit exit_code check. Its command
122
+ // still runs, and its own `onNonZero` still applies to its own exit. A
123
+ // host that is itself read by a later gate keeps the bindable envelope.
124
+ output.push({
125
+ ...producer,
126
+ verification: bound.has(step.id) ? { type: 'json_schema', schema: true } : { type: 'exit_code' },
127
+ });
128
+ const input = Object.fromEntries(gate.ids.map((id, index) => [String(index), { step: id }]));
129
+ output.push({
130
+ id: barriers.get(step.id), type: 'deterministic',
131
+ // A named source that is itself a gate host must have passed its own
132
+ // assertion too — depending on the source alone would read its command
133
+ // exit and let this barrier pass while the inner gate is still red.
134
+ dependsOn: [...new Set([step.id, ...gate.ids, ...gate.ids.flatMap(id => barriers.get(id) ?? [])])], input,
135
+ command: greenCommand(gate.ids),
136
+ verification: { type: 'exit_code' }, maxIterations: step.maxIterations ?? 1,
137
+ ...(step.requirements === undefined ? {} : { requirements: step.requirements }),
138
+ });
139
+ }
140
+ return output;
141
+ }
142
+ /**
143
+ * Compiler-owned Node command. Author-supplied ids are JSON literals and the
144
+ * recorded envelopes travel only through FLOWS_INPUT, never through shell text.
145
+ */
146
+ function greenCommand(ids) {
147
+ const script = `const input=JSON.parse(process.env.FLOWS_INPUT);
148
+ const ids=${JSON.stringify(ids)};
149
+ const red=[];
150
+ for(let i=0;i<ids.length;i++){
151
+ const envelope=input[String(i)];
152
+ if(envelope===null||typeof envelope!=='object'||Array.isArray(envelope)){red.push(ids[i]+': no recorded outcome');continue;}
153
+ const code=envelope.exit_code;
154
+ if(typeof code!=='number'||!Number.isInteger(code)){red.push(ids[i]+': recorded no integer exit_code');continue;}
155
+ if(code!==0)red.push(ids[i]+': exit code '+code);
156
+ }
157
+ if(red.length>0){process.stderr.write('steps_green: '+red.join('; ')+'\\n');process.exit(1);}
158
+ process.stdout.write('steps_green:pass');`;
159
+ return `node -e '${script.replaceAll("'", "'\\''")}'`;
160
+ }
161
+ function isObject(value) {
162
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
163
+ }
164
+ //# sourceMappingURL=steps-green.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps-green.js","sourceRoot":"","sources":["../src/steps-green.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAihBD,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAS5D"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAoCA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA0iBD,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAS5D"}
package/dist/validate.js CHANGED
@@ -5,10 +5,12 @@
5
5
  import { SPEC_SCHEMA_VERSION } from './spec.js';
6
6
  import { validateOutputDeclaration } from './output-schema.js';
7
7
  import { modelNameError } from './model-name.js';
8
+ import { agentCwdDeclarationError, agentCwdTransportError } from './agent-cwd.js';
8
9
  import { unknownKeyErrors } from './unknown-keys.js';
9
10
  import { stepDependencyErrors } from './step-dependencies.js';
10
11
  import { inputBindingErrors } from './input-binding.js';
11
12
  import { NAMED_GATE_KEYS, namedGateErrors } from './named-gates.js';
13
+ import { STEPS_GREEN_KEYS, stepsGreenErrors, stepsGreenReferenceErrors } from './steps-green.js';
12
14
  import { AGENT_DECLARATION_FIELDS, FLOW_FIELDS, STEP_COMMON_FIELDS, STEP_FIELDS_BY_TYPE, } from './step-fields.js';
13
15
  import { jsonSchemaError, snapshotJsonSchema } from './json-schema.js';
14
16
  import { snapshotJsonValue } from './json-value.js';
@@ -49,6 +51,7 @@ const BUDGET_KEYS = ['maxTokensIn', 'maxTokensOut', 'maxDollars', 'maxTokens', '
49
51
  const VERIFICATION_KEYS = {
50
52
  ...NAMED_GATE_KEYS,
51
53
  exit_code: ['type', 'expect'],
54
+ steps_green: STEPS_GREEN_KEYS,
52
55
  output_contains: ['type', 'value'],
53
56
  json_schema: ['type', 'schema'],
54
57
  };
@@ -162,6 +165,10 @@ class Validator {
162
165
  this.fail(error);
163
166
  for (const error of inputBindingErrors(steps))
164
167
  this.fail(error);
168
+ // A steps_green gate that names nothing readable is the `|| true` failure
169
+ // it replaces, so its references are refused at the flow level, not lowered.
170
+ for (const error of stepsGreenReferenceErrors(steps))
171
+ this.fail(error);
165
172
  return this.result();
166
173
  }
167
174
  validateAgents(value) {
@@ -409,13 +416,19 @@ class Validator {
409
416
  catch (error) {
410
417
  this.fail(error instanceof Error ? error.message : `${at}.schema: expected JSON-compatible data`);
411
418
  }
419
+ // Below here are the gates the COMPILER lowers; above are the three the
420
+ // kernel evaluates itself. The enumeration follows the same split.
421
+ }
422
+ else if (gate.type === 'steps_green') {
423
+ for (const error of stepsGreenErrors(v, at, stepType))
424
+ this.fail(error);
412
425
  }
413
426
  else if (Object.hasOwn(NAMED_GATE_KEYS, gate.type)) {
414
427
  for (const error of namedGateErrors(v, input, at))
415
428
  this.fail(error);
416
429
  }
417
430
  else {
418
- this.fail(`${at}.type: unknown_gate_kind: expected exit_code | output_contains | json_schema | references_input | subprocess_gate | word_count_bounds | regex_match | artifact_exists`);
431
+ this.fail(`${at}.type: unknown_gate_kind: expected exit_code | output_contains | json_schema | steps_green | references_input | subprocess_gate | word_count_bounds | regex_match | artifact_exists`);
419
432
  }
420
433
  }
421
434
  validateDeterministic(st, at) {
@@ -428,6 +441,12 @@ class Validator {
428
441
  if (st.timeoutMs !== undefined && !isPosInt(st.timeoutMs)) {
429
442
  this.fail(`${at}.timeoutMs: expected a positive integer`);
430
443
  }
444
+ // Only the two policies the kernel enum names. A third spelling would
445
+ // deserialize-fail in the kernel, so it is refused where the author can
446
+ // still read the error.
447
+ if (st.onNonZero !== undefined && st.onNonZero !== 'fail' && st.onNonZero !== 'record') {
448
+ this.fail(`${at}.onNonZero: expected fail | record`);
449
+ }
431
450
  }
432
451
  validateLlm(st, at) {
433
452
  if (!isNonEmptyString(st.prompt)) {
@@ -453,13 +472,7 @@ class Validator {
453
472
  }
454
473
  this.validateCli(st.cli, at);
455
474
  this.validateModel(st.model, at);
456
- // The kernel refuses a relative cwd at run.start; refuse it here so `flows
457
- // check` and the run agree. Not resolved against the checking directory:
458
- // that would make the compiled spec (and its hash) depend on where the
459
- // check ran. `f.agent` resolves before compiling, so it never lands here.
460
- if (st.cwd !== undefined && (!isNonEmptyString(st.cwd) || !st.cwd.startsWith('/'))) {
461
- this.fail(`${at}.cwd: expected an absolute path (got ${JSON.stringify(st.cwd)})`);
462
- }
475
+ this.validateCwd(st, at);
463
476
  if (st.surfaces !== undefined)
464
477
  this.validateSurfaces(st.surfaces, `${at}.surfaces`);
465
478
  if (st.permissions !== undefined)
@@ -470,6 +483,24 @@ class Validator {
470
483
  this.fail(`${at}.cli: expected a non-empty string`);
471
484
  }
472
485
  }
486
+ /**
487
+ * The declaration half of `cwd`: lexical, so an author sees the refusal from
488
+ * `flows check` rather than from a dispatch. Whether the directory exists and
489
+ * lies inside the run root is the worker's question (`agent-cwd.ts`), asked on
490
+ * the host that shares the agent's filesystem.
491
+ */
492
+ validateCwd(st, at) {
493
+ if (st.cwd === undefined)
494
+ return;
495
+ const problem = agentCwdDeclarationError(st.cwd);
496
+ if (problem !== undefined) {
497
+ this.fail(`${at}.cwd: ${problem}`);
498
+ return;
499
+ }
500
+ const unsupported = agentCwdTransportError(st.cwd, st.transport);
501
+ if (unsupported !== undefined)
502
+ this.fail(`${at}.${unsupported}`);
503
+ }
473
504
  validateModel(model, at, required = false) {
474
505
  // Rejecting the empty string matters: it would reach the CLI as
475
506
  // RELAYFLOW_MODEL='', which reads as "declared, and declared as