@interf/compiler 0.5.1 → 0.6.3

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 (353) hide show
  1. package/README.md +160 -201
  2. package/builtin-workflows/interf/README.md +22 -10
  3. package/builtin-workflows/interf/compile/stages/shape/SKILL.md +8 -5
  4. package/builtin-workflows/interf/compile/stages/structure/SKILL.md +3 -0
  5. package/builtin-workflows/interf/compile/stages/summarize/SKILL.md +18 -2
  6. package/builtin-workflows/interf/improve/SKILL.md +4 -4
  7. package/builtin-workflows/interf/use/query/SKILL.md +1 -1
  8. package/builtin-workflows/interf/workflow.json +19 -5
  9. package/builtin-workflows/interf/{compiled.schema.json → workflow.schema.json} +10 -3
  10. package/dist/bin.js +2 -28
  11. package/dist/{commands → cli/commands}/check-draft.d.ts +2 -2
  12. package/dist/{commands → cli/commands}/check-draft.js +13 -13
  13. package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
  14. package/dist/{commands → cli/commands}/compile-controller.js +39 -44
  15. package/dist/cli/commands/compile.d.ts +33 -0
  16. package/dist/{commands → cli/commands}/compile.js +107 -33
  17. package/dist/{commands → cli/commands}/compiled-flow.d.ts +3 -4
  18. package/dist/{commands → cli/commands}/compiled-flow.js +9 -14
  19. package/dist/{commands → cli/commands}/create-workflow-wizard.d.ts +20 -2
  20. package/dist/cli/commands/create-workflow-wizard.js +288 -0
  21. package/dist/{commands → cli/commands}/create.d.ts +2 -2
  22. package/dist/cli/commands/create.js +166 -0
  23. package/dist/cli/commands/dataset-selection.d.ts +6 -0
  24. package/dist/cli/commands/dataset-selection.js +11 -0
  25. package/dist/{commands → cli/commands}/default.js +5 -5
  26. package/dist/{commands → cli/commands}/doctor.js +12 -13
  27. package/dist/{commands → cli/commands}/executor-flow.d.ts +2 -2
  28. package/dist/{commands → cli/commands}/executor-flow.js +17 -17
  29. package/dist/cli/commands/init.d.ts +11 -0
  30. package/dist/{commands → cli/commands}/init.js +202 -109
  31. package/dist/{commands → cli/commands}/list.js +9 -6
  32. package/dist/{commands → cli/commands}/reset.js +5 -5
  33. package/dist/{commands → cli/commands}/source-config-wizard.d.ts +10 -5
  34. package/dist/{commands → cli/commands}/source-config-wizard.js +202 -95
  35. package/dist/{commands → cli/commands}/status.js +20 -11
  36. package/dist/{commands → cli/commands}/test-flow.d.ts +13 -4
  37. package/dist/{commands → cli/commands}/test-flow.js +30 -26
  38. package/dist/cli/commands/test.d.ts +14 -0
  39. package/dist/{commands → cli/commands}/test.js +48 -40
  40. package/dist/{commands → cli/commands}/verify.js +4 -4
  41. package/dist/cli/index.d.ts +21 -0
  42. package/dist/cli/index.js +33 -0
  43. package/dist/index.d.ts +22 -11
  44. package/dist/index.js +15 -6
  45. package/dist/lib/agent-args.d.ts +1 -3
  46. package/dist/lib/agent-args.js +1 -42
  47. package/dist/lib/agent-constants.d.ts +1 -5
  48. package/dist/lib/agent-constants.js +1 -28
  49. package/dist/lib/agent-detection.d.ts +1 -7
  50. package/dist/lib/agent-detection.js +1 -65
  51. package/dist/lib/agent-execution.d.ts +1 -2
  52. package/dist/lib/agent-execution.js +1 -242
  53. package/dist/lib/agent-logs.d.ts +1 -2
  54. package/dist/lib/agent-logs.js +1 -17
  55. package/dist/lib/agent-preflight.d.ts +1 -7
  56. package/dist/lib/agent-preflight.js +1 -76
  57. package/dist/lib/agent-render.d.ts +1 -8
  58. package/dist/lib/agent-render.js +1 -218
  59. package/dist/lib/agent-shells.d.ts +1 -44
  60. package/dist/lib/agent-shells.js +1 -847
  61. package/dist/lib/agent-status.d.ts +1 -3
  62. package/dist/lib/agent-status.js +1 -58
  63. package/dist/lib/agent-types.d.ts +1 -30
  64. package/dist/lib/agent-types.js +1 -1
  65. package/dist/lib/agents.d.ts +1 -6
  66. package/dist/lib/agents.js +1 -5
  67. package/dist/lib/builtin-compiled-workflow.d.ts +1 -129
  68. package/dist/lib/builtin-compiled-workflow.js +1 -153
  69. package/dist/lib/compiled-compile.d.ts +1 -52
  70. package/dist/lib/compiled-compile.js +1 -274
  71. package/dist/lib/compiled-paths.d.ts +1 -39
  72. package/dist/lib/compiled-paths.js +3 -103
  73. package/dist/lib/compiled-raw.d.ts +1 -49
  74. package/dist/lib/compiled-raw.js +3 -102
  75. package/dist/lib/compiled-reset.d.ts +1 -1
  76. package/dist/lib/compiled-reset.js +3 -44
  77. package/dist/lib/compiled-schema.d.ts +1 -27
  78. package/dist/lib/compiled-schema.js +1 -110
  79. package/dist/lib/discovery.d.ts +1 -1
  80. package/dist/lib/discovery.js +2 -2
  81. package/dist/lib/execution-profile.d.ts +1 -17
  82. package/dist/lib/execution-profile.js +1 -84
  83. package/dist/lib/executors.d.ts +1 -32
  84. package/dist/lib/executors.js +1 -43
  85. package/dist/lib/interf-bootstrap.d.ts +1 -3
  86. package/dist/lib/interf-bootstrap.js +3 -18
  87. package/dist/lib/interf-detect.d.ts +1 -33
  88. package/dist/lib/interf-detect.js +3 -176
  89. package/dist/lib/interf-scaffold.d.ts +1 -2
  90. package/dist/lib/interf-scaffold.js +3 -121
  91. package/dist/lib/interf-workflow-package.d.ts +1 -20
  92. package/dist/lib/interf-workflow-package.js +1 -276
  93. package/dist/lib/interf.d.ts +1 -5
  94. package/dist/lib/interf.js +3 -4
  95. package/dist/lib/local-workflows.d.ts +1 -53
  96. package/dist/lib/local-workflows.js +1 -399
  97. package/dist/lib/package-root.d.ts +1 -0
  98. package/dist/lib/package-root.js +1 -0
  99. package/dist/lib/project-paths.d.ts +1 -11
  100. package/dist/lib/project-paths.js +3 -32
  101. package/dist/lib/runtime-acceptance.d.ts +1 -9
  102. package/dist/lib/runtime-acceptance.js +1 -257
  103. package/dist/lib/runtime-contracts.d.ts +1 -2
  104. package/dist/lib/runtime-contracts.js +1 -47
  105. package/dist/lib/runtime-inventory.d.ts +1 -7
  106. package/dist/lib/runtime-inventory.js +1 -29
  107. package/dist/lib/runtime-paths.d.ts +1 -7
  108. package/dist/lib/runtime-paths.js +1 -23
  109. package/dist/lib/runtime-prompt.d.ts +1 -2
  110. package/dist/lib/runtime-prompt.js +1 -46
  111. package/dist/lib/runtime-reconcile.d.ts +1 -2
  112. package/dist/lib/runtime-reconcile.js +1 -156
  113. package/dist/lib/runtime-runs.d.ts +1 -11
  114. package/dist/lib/runtime-runs.js +1 -250
  115. package/dist/lib/runtime-types.d.ts +1 -43
  116. package/dist/lib/runtime-types.js +1 -1
  117. package/dist/lib/runtime.d.ts +1 -6
  118. package/dist/lib/runtime.js +1 -5
  119. package/dist/lib/schema.d.ts +4 -1016
  120. package/dist/lib/schema.js +6 -539
  121. package/dist/lib/source-config.d.ts +1 -39
  122. package/dist/lib/source-config.js +3 -293
  123. package/dist/lib/state-artifacts.d.ts +1 -8
  124. package/dist/lib/state-artifacts.js +1 -13
  125. package/dist/lib/state-health.d.ts +1 -4
  126. package/dist/lib/state-health.js +1 -132
  127. package/dist/lib/state-io.d.ts +1 -10
  128. package/dist/lib/state-io.js +1 -76
  129. package/dist/lib/state-paths.d.ts +1 -4
  130. package/dist/lib/state-paths.js +1 -13
  131. package/dist/lib/state-view.d.ts +1 -4
  132. package/dist/lib/state-view.js +1 -103
  133. package/dist/lib/state.d.ts +1 -6
  134. package/dist/lib/state.js +1 -5
  135. package/dist/lib/test-execution.d.ts +1 -14
  136. package/dist/lib/test-execution.js +3 -525
  137. package/dist/lib/test-matrices.d.ts +1 -90
  138. package/dist/lib/test-matrices.js +3 -96
  139. package/dist/lib/test-paths.d.ts +1 -12
  140. package/dist/lib/test-paths.js +3 -59
  141. package/dist/lib/test-profile-presets.d.ts +1 -57
  142. package/dist/lib/test-profile-presets.js +3 -50
  143. package/dist/lib/test-sandbox.d.ts +1 -11
  144. package/dist/lib/test-sandbox.js +3 -105
  145. package/dist/lib/test-specs.d.ts +1 -7
  146. package/dist/lib/test-specs.js +3 -114
  147. package/dist/lib/test-targets.d.ts +1 -5
  148. package/dist/lib/test-targets.js +3 -38
  149. package/dist/lib/test-types.d.ts +1 -17
  150. package/dist/lib/test-types.js +3 -1
  151. package/dist/lib/test.d.ts +1 -4
  152. package/dist/lib/test.js +3 -3
  153. package/dist/lib/validate-compiled.d.ts +1 -27
  154. package/dist/lib/validate-compiled.js +1 -238
  155. package/dist/lib/validate-helpers.d.ts +1 -12
  156. package/dist/lib/validate-helpers.js +1 -41
  157. package/dist/lib/validate.d.ts +1 -19
  158. package/dist/lib/validate.js +1 -256
  159. package/dist/lib/workflow-authoring.d.ts +1 -0
  160. package/dist/lib/workflow-authoring.js +1 -0
  161. package/dist/lib/workflow-definitions.d.ts +1 -68
  162. package/dist/lib/workflow-definitions.js +1 -206
  163. package/dist/lib/workflow-edit-session.d.ts +1 -0
  164. package/dist/lib/workflow-edit-session.js +1 -0
  165. package/dist/lib/workflow-edit-utils.d.ts +1 -0
  166. package/dist/lib/workflow-edit-utils.js +1 -0
  167. package/dist/lib/workflow-helpers.d.ts +1 -38
  168. package/dist/lib/workflow-helpers.js +1 -167
  169. package/dist/lib/workflow-improvement.d.ts +1 -22
  170. package/dist/lib/workflow-improvement.js +1 -396
  171. package/dist/lib/workflow-primitives.d.ts +1 -2
  172. package/dist/lib/workflow-primitives.js +1 -5
  173. package/dist/lib/workflow-review-paths.d.ts +1 -10
  174. package/dist/lib/workflow-review-paths.js +1 -27
  175. package/dist/lib/workflow-stage-policy.d.ts +1 -0
  176. package/dist/lib/workflow-stage-policy.js +1 -0
  177. package/dist/lib/workflow-stage-runner.d.ts +1 -41
  178. package/dist/lib/workflow-stage-runner.js +1 -109
  179. package/dist/lib/workflows.d.ts +1 -15
  180. package/dist/lib/workflows.js +1 -31
  181. package/dist/packages/agents/index.d.ts +17 -0
  182. package/dist/packages/agents/index.js +15 -0
  183. package/dist/packages/agents/lib/agents.d.ts +6 -0
  184. package/dist/packages/agents/lib/agents.js +5 -0
  185. package/dist/packages/agents/lib/args.d.ts +4 -0
  186. package/dist/packages/agents/lib/args.js +52 -0
  187. package/dist/packages/agents/lib/constants.d.ts +5 -0
  188. package/dist/packages/agents/lib/constants.js +28 -0
  189. package/dist/packages/agents/lib/detection.d.ts +7 -0
  190. package/dist/packages/agents/lib/detection.js +65 -0
  191. package/dist/packages/agents/lib/execution-profile.d.ts +17 -0
  192. package/dist/packages/agents/lib/execution-profile.js +84 -0
  193. package/dist/packages/agents/lib/execution.d.ts +2 -0
  194. package/dist/packages/agents/lib/execution.js +243 -0
  195. package/dist/packages/agents/lib/executors.d.ts +32 -0
  196. package/dist/packages/agents/lib/executors.js +45 -0
  197. package/dist/packages/agents/lib/logs.d.ts +2 -0
  198. package/dist/packages/agents/lib/logs.js +17 -0
  199. package/dist/packages/agents/lib/preflight.d.ts +7 -0
  200. package/dist/packages/agents/lib/preflight.js +77 -0
  201. package/dist/packages/agents/lib/render.d.ts +8 -0
  202. package/dist/packages/agents/lib/render.js +218 -0
  203. package/dist/packages/agents/lib/schema.d.ts +8 -0
  204. package/dist/packages/agents/lib/schema.js +7 -0
  205. package/dist/packages/agents/lib/shells.d.ts +69 -0
  206. package/dist/packages/agents/lib/shells.js +1021 -0
  207. package/dist/packages/agents/lib/status.d.ts +3 -0
  208. package/dist/packages/agents/lib/status.js +58 -0
  209. package/dist/packages/agents/lib/types.d.ts +30 -0
  210. package/dist/packages/agents/lib/types.js +1 -0
  211. package/dist/{lib → packages/agents/lib}/user-config.d.ts +1 -0
  212. package/dist/{lib → packages/agents/lib}/user-config.js +3 -2
  213. package/dist/packages/compiler/compiled-compile.d.ts +48 -0
  214. package/dist/packages/compiler/compiled-compile.js +256 -0
  215. package/dist/packages/compiler/compiled-schema.d.ts +31 -0
  216. package/dist/packages/compiler/compiled-schema.js +141 -0
  217. package/dist/packages/compiler/index.d.ts +24 -0
  218. package/dist/packages/compiler/index.js +23 -0
  219. package/dist/packages/compiler/lib/schema.d.ts +684 -0
  220. package/dist/packages/compiler/lib/schema.js +361 -0
  221. package/dist/packages/compiler/runtime-acceptance.d.ts +9 -0
  222. package/dist/packages/compiler/runtime-acceptance.js +269 -0
  223. package/dist/packages/compiler/runtime-contracts.d.ts +2 -0
  224. package/dist/packages/compiler/runtime-contracts.js +48 -0
  225. package/dist/packages/compiler/runtime-inventory.d.ts +7 -0
  226. package/dist/packages/compiler/runtime-inventory.js +29 -0
  227. package/dist/packages/compiler/runtime-paths.d.ts +8 -0
  228. package/dist/packages/compiler/runtime-paths.js +26 -0
  229. package/dist/packages/compiler/runtime-prompt.d.ts +2 -0
  230. package/dist/packages/compiler/runtime-prompt.js +48 -0
  231. package/dist/packages/compiler/runtime-reconcile.d.ts +2 -0
  232. package/dist/packages/compiler/runtime-reconcile.js +193 -0
  233. package/dist/packages/compiler/runtime-runs.d.ts +11 -0
  234. package/dist/packages/compiler/runtime-runs.js +262 -0
  235. package/dist/packages/compiler/runtime-types.d.ts +43 -0
  236. package/dist/packages/compiler/runtime-types.js +1 -0
  237. package/dist/packages/compiler/runtime.d.ts +6 -0
  238. package/dist/packages/compiler/runtime.js +5 -0
  239. package/dist/packages/compiler/state-artifacts.d.ts +8 -0
  240. package/dist/packages/compiler/state-artifacts.js +13 -0
  241. package/dist/packages/compiler/state-health.d.ts +4 -0
  242. package/dist/packages/compiler/state-health.js +132 -0
  243. package/dist/packages/compiler/state-io.d.ts +10 -0
  244. package/dist/packages/compiler/state-io.js +76 -0
  245. package/dist/packages/compiler/state-paths.d.ts +4 -0
  246. package/dist/packages/compiler/state-paths.js +13 -0
  247. package/dist/packages/compiler/state-view.d.ts +4 -0
  248. package/dist/packages/compiler/state-view.js +103 -0
  249. package/dist/packages/compiler/state.d.ts +7 -0
  250. package/dist/packages/compiler/state.js +12 -0
  251. package/dist/packages/compiler/validate-compiled.d.ts +27 -0
  252. package/dist/packages/compiler/validate-compiled.js +241 -0
  253. package/dist/packages/compiler/validate-helpers.d.ts +12 -0
  254. package/dist/packages/compiler/validate-helpers.js +41 -0
  255. package/dist/packages/compiler/validate.d.ts +21 -0
  256. package/dist/packages/compiler/validate.js +249 -0
  257. package/dist/packages/compiler/workflow-primitives.d.ts +2 -0
  258. package/dist/packages/compiler/workflow-primitives.js +5 -0
  259. package/dist/packages/compiler/workflows.d.ts +15 -0
  260. package/dist/packages/compiler/workflows.js +31 -0
  261. package/dist/packages/project-model/compiled-paths.d.ts +40 -0
  262. package/dist/packages/project-model/compiled-paths.js +106 -0
  263. package/dist/packages/project-model/compiled-raw.d.ts +49 -0
  264. package/dist/packages/project-model/compiled-raw.js +102 -0
  265. package/dist/packages/project-model/compiled-reset.d.ts +2 -0
  266. package/dist/packages/project-model/compiled-reset.js +72 -0
  267. package/dist/packages/project-model/index.d.ts +11 -0
  268. package/dist/packages/project-model/index.js +10 -0
  269. package/dist/packages/project-model/interf-bootstrap.d.ts +3 -0
  270. package/dist/packages/project-model/interf-bootstrap.js +18 -0
  271. package/dist/packages/project-model/interf-detect.d.ts +33 -0
  272. package/dist/packages/project-model/interf-detect.js +176 -0
  273. package/dist/packages/project-model/interf-scaffold.d.ts +2 -0
  274. package/dist/packages/project-model/interf-scaffold.js +124 -0
  275. package/dist/packages/project-model/interf.d.ts +5 -0
  276. package/dist/packages/project-model/interf.js +4 -0
  277. package/dist/packages/project-model/lib/schema.d.ts +125 -0
  278. package/dist/packages/project-model/lib/schema.js +62 -0
  279. package/dist/packages/project-model/project-paths.d.ts +11 -0
  280. package/dist/packages/project-model/project-paths.js +32 -0
  281. package/dist/packages/project-model/source-config.d.ts +38 -0
  282. package/dist/packages/project-model/source-config.js +297 -0
  283. package/dist/packages/testing/index.d.ts +13 -0
  284. package/dist/packages/testing/index.js +10 -0
  285. package/dist/packages/testing/lib/schema.d.ts +261 -0
  286. package/dist/packages/testing/lib/schema.js +119 -0
  287. package/dist/packages/testing/test-execution.d.ts +14 -0
  288. package/dist/packages/testing/test-execution.js +525 -0
  289. package/dist/packages/testing/test-matrices.d.ts +90 -0
  290. package/dist/packages/testing/test-matrices.js +96 -0
  291. package/dist/packages/testing/test-paths.d.ts +12 -0
  292. package/dist/packages/testing/test-paths.js +59 -0
  293. package/dist/packages/testing/test-profile-presets.d.ts +57 -0
  294. package/dist/packages/testing/test-profile-presets.js +50 -0
  295. package/dist/packages/testing/test-sandbox.d.ts +11 -0
  296. package/dist/packages/testing/test-sandbox.js +105 -0
  297. package/dist/packages/testing/test-specs.d.ts +7 -0
  298. package/dist/packages/testing/test-specs.js +114 -0
  299. package/dist/packages/testing/test-targets.d.ts +5 -0
  300. package/dist/packages/testing/test-targets.js +38 -0
  301. package/dist/packages/testing/test-types.d.ts +16 -0
  302. package/dist/packages/testing/test-types.js +1 -0
  303. package/dist/packages/testing/test.d.ts +4 -0
  304. package/dist/packages/testing/test.js +3 -0
  305. package/dist/packages/workflow-authoring/index.d.ts +4 -0
  306. package/dist/packages/workflow-authoring/index.js +4 -0
  307. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.d.ts +10 -0
  308. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.js +39 -0
  309. package/dist/packages/workflow-authoring/workflow-authoring.d.ts +26 -0
  310. package/dist/packages/workflow-authoring/workflow-authoring.js +120 -0
  311. package/dist/packages/workflow-authoring/workflow-edit-session.d.ts +16 -0
  312. package/dist/packages/workflow-authoring/workflow-edit-session.js +57 -0
  313. package/dist/packages/workflow-authoring/workflow-improvement.d.ts +23 -0
  314. package/dist/packages/workflow-authoring/workflow-improvement.js +209 -0
  315. package/dist/packages/workflow-package/builtin-compiled-workflow.d.ts +38 -0
  316. package/dist/packages/workflow-package/builtin-compiled-workflow.js +94 -0
  317. package/dist/packages/workflow-package/index.d.ts +9 -0
  318. package/dist/packages/workflow-package/index.js +9 -0
  319. package/dist/packages/workflow-package/interf-workflow-package.d.ts +25 -0
  320. package/dist/packages/workflow-package/interf-workflow-package.js +342 -0
  321. package/dist/{lib/config.d.ts → packages/workflow-package/lib/package-root.d.ts} +0 -1
  322. package/dist/packages/workflow-package/lib/package-root.js +6 -0
  323. package/dist/packages/workflow-package/local-workflows.d.ts +54 -0
  324. package/dist/packages/workflow-package/local-workflows.js +422 -0
  325. package/dist/packages/workflow-package/workflow-definitions.d.ts +78 -0
  326. package/dist/packages/workflow-package/workflow-definitions.js +203 -0
  327. package/dist/packages/workflow-package/workflow-helpers.d.ts +38 -0
  328. package/dist/packages/workflow-package/workflow-helpers.js +167 -0
  329. package/dist/packages/workflow-package/workflow-review-paths.d.ts +10 -0
  330. package/dist/packages/workflow-package/workflow-review-paths.js +27 -0
  331. package/dist/packages/workflow-package/workflow-stage-policy.d.ts +5 -0
  332. package/dist/packages/workflow-package/workflow-stage-policy.js +31 -0
  333. package/dist/packages/workflow-package/workflow-stage-runner.d.ts +41 -0
  334. package/dist/packages/workflow-package/workflow-stage-runner.js +109 -0
  335. package/package.json +44 -21
  336. package/dist/commands/compile.d.ts +0 -15
  337. package/dist/commands/create-workflow-wizard.js +0 -125
  338. package/dist/commands/create.js +0 -162
  339. package/dist/commands/init.d.ts +0 -3
  340. package/dist/commands/test.d.ts +0 -9
  341. package/dist/lib/compiled-home.d.ts +0 -5
  342. package/dist/lib/compiled-home.js +0 -32
  343. package/dist/lib/config.js +0 -9
  344. package/dist/lib/obsidian.d.ts +0 -1
  345. package/dist/lib/obsidian.js +0 -15
  346. package/dist/lib/summarize-plan.d.ts +0 -17
  347. package/dist/lib/summarize-plan.js +0 -120
  348. /package/dist/{commands → cli/commands}/default.d.ts +0 -0
  349. /package/dist/{commands → cli/commands}/doctor.d.ts +0 -0
  350. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  351. /package/dist/{commands → cli/commands}/reset.d.ts +0 -0
  352. /package/dist/{commands → cli/commands}/status.d.ts +0 -0
  353. /package/dist/{commands → cli/commands}/verify.d.ts +0 -0
@@ -0,0 +1,422 @@
1
+ import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync, } from "node:fs";
2
+ import { dirname, join, relative } from "node:path";
3
+ import { z } from "zod";
4
+ import { listFilesRecursive } from "../../lib/filesystem.js";
5
+ import { warnInterf } from "../../lib/logger.js";
6
+ import { readJsonFileUnchecked, readJsonFileWithSchema } from "../../lib/parse.js";
7
+ import { isMarkdownFile } from "../../lib/util.js";
8
+ import { WORKFLOW_SCHEMA_FILE as WORKFLOW_SCHEMA_FILENAME, workflowSchemaExists, writeWorkflowSchemaDocument, workflowSchemaFilePath, readWorkflowSchemaFile, } from "../compiler/compiled-schema.js";
9
+ import { WorkflowCompilerApiSchema, RuntimeContractTypeSchema, RuntimeStageAcceptanceSchema, WorkflowPurposeSchema, WorkflowStageZoneAccessSchema, WorkflowIdPattern, } from "../compiler/lib/schema.js";
10
+ import { listBuiltinCompiledZoneSpecs, } from "./builtin-compiled-workflow.js";
11
+ import { PACKAGE_ROOT } from "./lib/package-root.js";
12
+ import { mergeStagePolicyNotesForStages } from "./workflow-stage-policy.js";
13
+ const LocalWorkflowStageDefinitionSchema = z.object({
14
+ id: z.string().regex(WorkflowIdPattern),
15
+ label: z.string().min(1),
16
+ contract_type: RuntimeContractTypeSchema,
17
+ skill_dir: z.string().regex(WorkflowIdPattern).optional(),
18
+ description: z.string().min(1).optional(),
19
+ reads: WorkflowStageZoneAccessSchema,
20
+ writes: WorkflowStageZoneAccessSchema,
21
+ acceptance: RuntimeStageAcceptanceSchema.optional(),
22
+ });
23
+ const LocalWorkflowDefinitionSchema = z.object({
24
+ id: z.string().regex(WorkflowIdPattern),
25
+ type: z.literal("compiled"),
26
+ compiler_api: WorkflowCompilerApiSchema.optional(),
27
+ purpose: WorkflowPurposeSchema.optional(),
28
+ label: z.string().min(1),
29
+ hint: z.string().min(1),
30
+ extends: z.string().regex(WorkflowIdPattern).optional(),
31
+ stages: z.array(LocalWorkflowStageDefinitionSchema).min(1).optional(),
32
+ stage_policy_notes: z.record(z.string(), z.array(z.string())).optional(),
33
+ });
34
+ function workflowRootPath(sourcePath) {
35
+ return join(sourcePath, "interf", "workflows");
36
+ }
37
+ function builtinWorkflowRootPath(workflowId) {
38
+ return join(PACKAGE_ROOT, "builtin-workflows", workflowId);
39
+ }
40
+ export function workflowDefinitionPath(sourcePath, id) {
41
+ return join(workflowRootPath(sourcePath), id);
42
+ }
43
+ function isSupportedWorkflowStarterDocPath(relativePath) {
44
+ if (relativePath === "README.md")
45
+ return true;
46
+ if (relativePath.startsWith("improve/"))
47
+ return true;
48
+ if (relativePath.startsWith("use/query/"))
49
+ return true;
50
+ if (relativePath.startsWith("compile/stages/"))
51
+ return true;
52
+ return false;
53
+ }
54
+ function collectStarterDocs(dirPath) {
55
+ return listFilesRecursive(dirPath, isMarkdownFile)
56
+ .map((filePath) => relative(dirPath, filePath).replaceAll("\\", "/"))
57
+ .filter((relativePath) => isSupportedWorkflowStarterDocPath(relativePath))
58
+ .map((relativePath) => ({
59
+ relativePath,
60
+ content: readFileSync(join(dirPath, relativePath), "utf8"),
61
+ }))
62
+ .sort((a, b) => a.relativePath.localeCompare(b.relativePath));
63
+ }
64
+ function workflowPackageCopyPaths(dirPath) {
65
+ return [
66
+ "workflow.json",
67
+ WORKFLOW_SCHEMA_FILENAME,
68
+ ...collectStarterDocs(dirPath).map((doc) => doc.relativePath),
69
+ ];
70
+ }
71
+ function copyRelativeFile(sourceRoot, targetRoot, relativePath) {
72
+ const sourcePath = join(sourceRoot, relativePath);
73
+ if (!existsSync(sourcePath))
74
+ return;
75
+ const targetPath = join(targetRoot, relativePath);
76
+ mkdirSync(dirname(targetPath), { recursive: true });
77
+ cpSync(sourcePath, targetPath, { force: true });
78
+ }
79
+ function copyWorkflowPackageFiles(sourceWorkflowPath, targetWorkflowPath) {
80
+ rmSync(targetWorkflowPath, { recursive: true, force: true });
81
+ mkdirSync(targetWorkflowPath, { recursive: true });
82
+ for (const relativePath of workflowPackageCopyPaths(sourceWorkflowPath)) {
83
+ copyRelativeFile(sourceWorkflowPath, targetWorkflowPath, relativePath);
84
+ }
85
+ }
86
+ export function loadWorkflowDefinitionFromDir(dirPath) {
87
+ const workflowPath = existsSync(join(dirPath, "workflow.json"))
88
+ ? join(dirPath, "workflow.json")
89
+ : null;
90
+ if (!workflowPath)
91
+ return null;
92
+ const definition = readJsonFileWithSchema(workflowPath, "local workflow definition", LocalWorkflowDefinitionSchema);
93
+ if (!definition)
94
+ return null;
95
+ const workflowSchema = readWorkflowSchemaFile(dirPath);
96
+ if (!workflowSchema)
97
+ return null;
98
+ if (definition.type !== "compiled") {
99
+ warnInterf(`Warning: local workflow definition at ${workflowPath} has unexpected type "${definition.type}".`);
100
+ return null;
101
+ }
102
+ return {
103
+ ...definition,
104
+ workflow_schema: workflowSchema,
105
+ starter_docs: collectStarterDocs(dirPath),
106
+ directoryPath: dirPath,
107
+ workflowPath,
108
+ workflowSchemaPath: workflowSchemaFilePath(dirPath),
109
+ };
110
+ }
111
+ export function listLocalWorkflowDefinitions(sourcePath) {
112
+ const root = workflowRootPath(sourcePath);
113
+ if (!existsSync(root))
114
+ return [];
115
+ return readdirSync(root)
116
+ .map((entry) => join(root, entry))
117
+ .filter((entryPath) => {
118
+ try {
119
+ return statSync(entryPath).isDirectory();
120
+ }
121
+ catch {
122
+ return false;
123
+ }
124
+ })
125
+ .map((entryPath) => loadWorkflowDefinitionFromDir(entryPath))
126
+ .filter((definition) => definition !== null)
127
+ .sort((a, b) => a.label.localeCompare(b.label));
128
+ }
129
+ export function loadLocalWorkflowDefinition(sourcePath, id) {
130
+ return loadWorkflowDefinitionFromDir(workflowDefinitionPath(sourcePath, id));
131
+ }
132
+ export function resolveWorkflowPackageSourcePath(sourcePath, workflowId) {
133
+ const builtinPath = builtinWorkflowRootPath(workflowId);
134
+ if (workflowId === "interf" && existsSync(join(builtinPath, "workflow.json")))
135
+ return builtinPath;
136
+ const localPath = workflowDefinitionPath(sourcePath, workflowId);
137
+ if (existsSync(join(localPath, "workflow.json")))
138
+ return localPath;
139
+ if (existsSync(join(builtinPath, "workflow.json")))
140
+ return builtinPath;
141
+ return null;
142
+ }
143
+ export function isWorkflowId(value) {
144
+ return WorkflowIdPattern.test(value);
145
+ }
146
+ function readWorkflowJsonObject(dirPath) {
147
+ const workflowPath = join(dirPath, "workflow.json");
148
+ const raw = readJsonFileUnchecked(workflowPath, "workflow package");
149
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
150
+ throw new Error(`Workflow package at ${dirPath} is missing a valid workflow.json.`);
151
+ }
152
+ return { ...raw };
153
+ }
154
+ export function patchWorkflowPackageMetadata(dirPath, options = {}) {
155
+ const workflowPath = join(dirPath, "workflow.json");
156
+ const workflowJson = readWorkflowJsonObject(dirPath);
157
+ const normalizedStages = Array.isArray(workflowJson.stages) && workflowJson.stages.length > 0
158
+ ? workflowJson.stages
159
+ : null;
160
+ if (!normalizedStages) {
161
+ throw new Error(`Cannot patch workflow package at ${dirPath}: workflow.json must declare explicit stages before it can be copied or rewritten.`);
162
+ }
163
+ const nextWorkflowJson = {
164
+ ...workflowJson,
165
+ type: "compiled",
166
+ compiler_api: workflowJson.compiler_api ?? {
167
+ kind: "compiled",
168
+ version: 1,
169
+ },
170
+ stages: normalizedStages,
171
+ ...(options.id ? { id: options.id } : {}),
172
+ ...(options.label ? { label: options.label } : {}),
173
+ ...(options.hint ? { hint: options.hint } : {}),
174
+ };
175
+ delete nextWorkflowJson.extends;
176
+ const mergedStagePolicyNotes = mergeStagePolicyNotesForStages(normalizedStages, workflowJson.stage_policy_notes, options.stagePolicyNotes);
177
+ if (mergedStagePolicyNotes) {
178
+ nextWorkflowJson.stage_policy_notes = mergedStagePolicyNotes;
179
+ }
180
+ else {
181
+ delete nextWorkflowJson.stage_policy_notes;
182
+ }
183
+ writeFileSync(workflowPath, JSON.stringify(nextWorkflowJson, null, 2) + "\n");
184
+ const schemaLabel = `${String(nextWorkflowJson.label ?? workflowJson.label ?? options.id ?? "Workflow")} workflow schema`;
185
+ const existingSchema = readWorkflowSchemaFile(dirPath);
186
+ if (!existingSchema) {
187
+ throw new Error(`Cannot patch workflow package at ${dirPath}: missing ${WORKFLOW_SCHEMA_FILENAME}. Restore or reseed the package instead of regenerating a schema from workflow.json.`);
188
+ }
189
+ writeWorkflowSchemaDocument(dirPath, {
190
+ ...existingSchema,
191
+ label: schemaLabel,
192
+ });
193
+ }
194
+ function collectWorkflowPackageStructureIssues(dirPath, stages) {
195
+ const issues = [];
196
+ const workflowPath = join(dirPath, "workflow.json");
197
+ if (!existsSync(workflowPath))
198
+ issues.push("missing workflow.json");
199
+ if (!workflowSchemaExists(dirPath))
200
+ issues.push("missing workflow.schema.json");
201
+ if (!existsSync(join(dirPath, "README.md")))
202
+ issues.push("missing README.md");
203
+ if (!existsSync(join(dirPath, "improve", "SKILL.md")))
204
+ issues.push("missing improve/SKILL.md");
205
+ if (!existsSync(join(dirPath, "use", "query", "SKILL.md")))
206
+ issues.push("missing use/query/SKILL.md");
207
+ if (!stages)
208
+ return issues;
209
+ for (const stage of stages) {
210
+ const skillDir = typeof stage.skill_dir === "string" && stage.skill_dir.trim().length > 0
211
+ ? stage.skill_dir
212
+ : stage.id;
213
+ if (!existsSync(join(dirPath, "compile", "stages", skillDir, "SKILL.md"))) {
214
+ issues.push(`missing compile/stages/${skillDir}/SKILL.md`);
215
+ }
216
+ }
217
+ return issues;
218
+ }
219
+ function collectWorkflowStageSkillIssues(dirPath, stages) {
220
+ if (!stages)
221
+ return [];
222
+ const issues = [];
223
+ for (const stage of stages) {
224
+ const skillDir = typeof stage.skill_dir === "string" && stage.skill_dir.trim().length > 0
225
+ ? stage.skill_dir
226
+ : stage.id;
227
+ if (!existsSync(join(dirPath, "compile", "stages", skillDir, "SKILL.md"))) {
228
+ issues.push(`missing compile/stages/${skillDir}/SKILL.md`);
229
+ }
230
+ }
231
+ return issues;
232
+ }
233
+ export function describeWorkflowPackagePortability(dirPath) {
234
+ const issues = collectWorkflowPackageStructureIssues(dirPath, null);
235
+ if (issues.length > 0)
236
+ return issues;
237
+ let workflowJson;
238
+ try {
239
+ workflowJson = readWorkflowJsonObject(dirPath);
240
+ }
241
+ catch (error) {
242
+ issues.push(error instanceof Error ? error.message : String(error));
243
+ return issues;
244
+ }
245
+ const parsed = LocalWorkflowDefinitionSchema.safeParse(workflowJson);
246
+ if (!parsed.success) {
247
+ issues.push(...parsed.error.issues.map((issue) => issue.path.length > 0
248
+ ? `workflow.json ${issue.path.join(".")}: ${issue.message}`
249
+ : `workflow.json: ${issue.message}`));
250
+ return issues;
251
+ }
252
+ if (typeof parsed.data.extends === "string" && parsed.data.extends.trim().length > 0) {
253
+ issues.push("workflow.json uses legacy extends; portable workflow packages must be materialized standalone");
254
+ }
255
+ if (!parsed.data.stages || parsed.data.stages.length === 0) {
256
+ issues.push("workflow.json must declare explicit stages for a portable workflow package");
257
+ return issues;
258
+ }
259
+ return [
260
+ ...issues,
261
+ ...collectWorkflowStageSkillIssues(dirPath, parsed.data.stages ?? null),
262
+ ];
263
+ }
264
+ export function isPortableWorkflowPackage(dirPath) {
265
+ return describeWorkflowPackagePortability(dirPath).length === 0;
266
+ }
267
+ export function copyWorkflowPackageDirectory(sourceWorkflowPath, targetWorkflowPath) {
268
+ const portabilityIssues = describeWorkflowPackagePortability(sourceWorkflowPath);
269
+ if (portabilityIssues.length > 0) {
270
+ throw new Error(`Workflow package at ${sourceWorkflowPath} is not directly copyable: ${portabilityIssues.join("; ")}.`);
271
+ }
272
+ mkdirSync(dirname(targetWorkflowPath), { recursive: true });
273
+ copyWorkflowPackageFiles(sourceWorkflowPath, targetWorkflowPath);
274
+ }
275
+ export function validateWorkflowPackage(dirPath) {
276
+ const workflowPath = join(dirPath, "workflow.json");
277
+ if (!existsSync(workflowPath)) {
278
+ return {
279
+ ok: false,
280
+ summary: `No workflow.json found at ${dirPath}`,
281
+ errors: ["Missing workflow.json"],
282
+ counts: {},
283
+ };
284
+ }
285
+ const raw = readJsonFileUnchecked(workflowPath, "workflow package");
286
+ if (!raw) {
287
+ return {
288
+ ok: false,
289
+ summary: `Failed to parse workflow.json at ${workflowPath}`,
290
+ errors: ["Invalid JSON in workflow.json"],
291
+ counts: {},
292
+ };
293
+ }
294
+ const parsed = LocalWorkflowDefinitionSchema.safeParse(raw);
295
+ if (!parsed.success) {
296
+ const issues = parsed.error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`);
297
+ return {
298
+ ok: false,
299
+ summary: `workflow.json failed validation: ${issues.length} issue(s)`,
300
+ errors: issues,
301
+ counts: {},
302
+ };
303
+ }
304
+ const def = parsed.data;
305
+ const errors = [];
306
+ if (typeof def.extends === "string" && def.extends.trim().length > 0) {
307
+ errors.push("workflow.json uses legacy extends. Portable workflow packages must be materialized as standalone packages.");
308
+ }
309
+ if (!def.stages || def.stages.length === 0) {
310
+ errors.push("workflow.json must declare explicit stages. Legacy inherited packages are not portable.");
311
+ }
312
+ if (def.stage_policy_notes && def.stages) {
313
+ const stageIds = new Set(def.stages.map((stage) => stage.id));
314
+ for (const stageId of Object.keys(def.stage_policy_notes)) {
315
+ if (!stageIds.has(stageId)) {
316
+ errors.push(`workflow.json stage_policy_notes references unknown stage "${stageId}".`);
317
+ }
318
+ }
319
+ }
320
+ for (const issue of collectWorkflowPackageStructureIssues(dirPath, def.stages ?? null)) {
321
+ const formatted = issue.startsWith("missing ")
322
+ ? `Missing ${issue.slice("missing ".length)}.`
323
+ : issue;
324
+ errors.push(formatted);
325
+ }
326
+ const workflowSchema = readWorkflowSchemaFile(dirPath);
327
+ if (!workflowSchema) {
328
+ errors.push("workflow.schema.json is missing or invalid.");
329
+ }
330
+ if (workflowSchema) {
331
+ const stages = def.stages ?? [];
332
+ const stageIds = new Set(stages.map((stage) => stage.id));
333
+ const seenPaths = new Map();
334
+ const seenZoneIds = new Set();
335
+ const zoneById = new Map(workflowSchema.zones.map((zone) => [zone.id, zone]));
336
+ const normalizedParts = (value) => value.replaceAll("\\", "/").split("/").filter(Boolean);
337
+ const hasOverlappingPath = (value, other) => {
338
+ const a = normalizedParts(value);
339
+ const b = normalizedParts(other);
340
+ const shorter = a.length <= b.length ? a : b;
341
+ const longer = a.length <= b.length ? b : a;
342
+ return shorter.every((part, index) => longer[index] === part);
343
+ };
344
+ for (const zone of workflowSchema.zones) {
345
+ if (seenZoneIds.has(zone.id)) {
346
+ errors.push(`workflow.schema.json repeats zone id "${zone.id}".`);
347
+ }
348
+ seenZoneIds.add(zone.id);
349
+ const existingPathOwner = seenPaths.get(zone.path);
350
+ if (existingPathOwner) {
351
+ errors.push(`workflow.schema.json repeats zone path "${zone.path}".`);
352
+ }
353
+ for (const [existingPath, existingZoneId] of seenPaths.entries()) {
354
+ if (existingPath === zone.path)
355
+ continue;
356
+ if (hasOverlappingPath(zone.path, existingPath)) {
357
+ errors.push(`workflow.schema.json zones "${zone.id}" and "${existingZoneId}" overlap on path "${zone.path}" / "${existingPath}".`);
358
+ }
359
+ }
360
+ seenPaths.set(zone.path, zone.id);
361
+ if ((zone.role === "input" || zone.role === "runtime") && zone.owned_by.length > 0) {
362
+ errors.push(`workflow.schema.json zone "${zone.id}" cannot declare owners because its role is "${zone.role}".`);
363
+ }
364
+ for (const owner of zone.owned_by) {
365
+ if (!stageIds.has(owner)) {
366
+ errors.push(`workflow.schema.json references unknown stage "${owner}" for zone "${zone.path}".`);
367
+ }
368
+ }
369
+ }
370
+ for (const stage of stages) {
371
+ for (const zoneId of stage.reads) {
372
+ if (!zoneById.has(zoneId)) {
373
+ errors.push(`Stage "${stage.id}" reads unknown zone "${zoneId}".`);
374
+ }
375
+ }
376
+ for (const zoneId of stage.writes) {
377
+ const zone = zoneById.get(zoneId);
378
+ if (!zone) {
379
+ errors.push(`Stage "${stage.id}" writes unknown zone "${zoneId}".`);
380
+ continue;
381
+ }
382
+ if (zone.role === "input" || zone.role === "runtime") {
383
+ errors.push(`Stage "${stage.id}" writes zone "${zoneId}" but zones with role "${zone.role}" are engine-owned inputs, not writable stage outputs.`);
384
+ }
385
+ if (!zone.owned_by.includes(stage.id)) {
386
+ errors.push(`Stage "${stage.id}" writes zone "${zoneId}" but that zone is not owned by the stage in workflow.schema.json.`);
387
+ }
388
+ }
389
+ }
390
+ for (const requiredZone of listBuiltinCompiledZoneSpecs().filter((zone) => zone.id === "raw" || zone.id === "runtime")) {
391
+ const match = zoneById.get(requiredZone.id);
392
+ if (!match) {
393
+ errors.push(`workflow.schema.json is missing required zone "${requiredZone.id}".`);
394
+ continue;
395
+ }
396
+ if (match.kind !== requiredZone.kind) {
397
+ errors.push(`workflow.schema.json zone "${requiredZone.id}" should be kind "${requiredZone.kind}".`);
398
+ }
399
+ if (match.role !== requiredZone.role) {
400
+ errors.push(`workflow.schema.json zone "${requiredZone.id}" should have role "${requiredZone.role}".`);
401
+ }
402
+ }
403
+ }
404
+ const stageDirs = existsSync(join(dirPath, "compile", "stages"))
405
+ ? listFilesRecursive(join(dirPath, "compile", "stages"), (filePath) => basename(filePath) === "SKILL.md")
406
+ : [];
407
+ const counts = {
408
+ starter_docs: collectStarterDocs(dirPath).length,
409
+ compile_stage_docs: stageDirs.length,
410
+ compiled_zones: workflowSchema?.zones.length ?? 0,
411
+ workflow_zones: workflowSchema?.zones.length ?? 0,
412
+ };
413
+ return {
414
+ ok: errors.length === 0,
415
+ summary: errors.length === 0 ? "Workflow package is valid." : `Workflow package has ${errors.length} issue(s).`,
416
+ errors,
417
+ counts,
418
+ };
419
+ }
420
+ function basename(filePath) {
421
+ return filePath.split(/[\\/]/).pop() ?? filePath;
422
+ }
@@ -0,0 +1,78 @@
1
+ import type { RuntimeContractType, RuntimeStageAcceptance, WorkflowCompilerApi, WorkflowCompiledSchema, WorkflowId, WorkflowZoneId } from "../compiler/lib/schema.js";
2
+ export interface WorkflowStarterDoc {
3
+ relativePath: string;
4
+ content: string;
5
+ }
6
+ export interface WorkflowStageDefinition {
7
+ id: string;
8
+ label: string;
9
+ description: string;
10
+ contractType: RuntimeContractType;
11
+ skillDir: string;
12
+ reads: WorkflowZoneId[];
13
+ writes: WorkflowZoneId[];
14
+ acceptance?: RuntimeStageAcceptance;
15
+ }
16
+ export interface WorkflowDefinition<TId extends string> {
17
+ id: TId;
18
+ compilerApi?: WorkflowCompilerApi;
19
+ purpose?: {
20
+ label: string;
21
+ taskHint: string;
22
+ };
23
+ label: string;
24
+ hint: string;
25
+ recommended?: boolean;
26
+ schema?: WorkflowCompiledSchema;
27
+ stages: WorkflowStageDefinition[];
28
+ stagePolicyNotes?: Record<string, string[]>;
29
+ starterDocs?: WorkflowStarterDoc[];
30
+ scope?: "builtin" | "local";
31
+ }
32
+ export type CompiledWorkflowId = string;
33
+ export declare function standaloneWorkflowDefinitionFromLocalPackage(local: {
34
+ id: string;
35
+ compiler_api?: WorkflowCompilerApi;
36
+ purpose?: {
37
+ label: string;
38
+ task_hint: string;
39
+ };
40
+ label: string;
41
+ hint: string;
42
+ stages?: Array<{
43
+ id: string;
44
+ label: string;
45
+ description?: string;
46
+ contract_type: RuntimeContractType;
47
+ skill_dir?: string;
48
+ reads: WorkflowZoneId[];
49
+ writes: WorkflowZoneId[];
50
+ acceptance?: RuntimeStageAcceptance;
51
+ }>;
52
+ stage_policy_notes?: Record<string, string[]>;
53
+ workflow_schema?: WorkflowCompiledSchema;
54
+ starter_docs: WorkflowStarterDoc[];
55
+ }): WorkflowDefinition<string>;
56
+ export declare function listCompiledWorkflowChoices(sourcePath?: string): WorkflowDefinition<string>[];
57
+ export declare function getCompiledWorkflow(workflowId: CompiledWorkflowId, options?: {
58
+ sourcePath?: string;
59
+ }): WorkflowDefinition<string>;
60
+ export declare function getActiveCompiledWorkflow(compiledPath: string, fallbackWorkflowId: CompiledWorkflowId): WorkflowDefinition<string>;
61
+ export declare function resolveCompiledWorkflowId(value: unknown): CompiledWorkflowId | null;
62
+ export declare function resolveCompiledWorkflowFromConfig(config: unknown): CompiledWorkflowId | null;
63
+ export declare function resolveRequiredCompiledWorkflowFromConfig(config: unknown, label?: string): CompiledWorkflowId;
64
+ export declare function formatCompiledWorkflowStageStep(workflowId: CompiledWorkflowId, stage: string, options?: {
65
+ sourcePath?: string;
66
+ }): string;
67
+ export declare function getWorkflowStageDefinition(workflowId: WorkflowId, stage: string, sourcePath?: string): WorkflowStageDefinition | null;
68
+ export declare function getWorkflowStagePosition(workflowId: WorkflowId, stage: string, sourcePath?: string): {
69
+ stageIndex: number;
70
+ stageTotal: number;
71
+ stages: string[];
72
+ } | null;
73
+ export declare function getWorkflowStages(workflowId: WorkflowId, sourcePath?: string): string[];
74
+ export declare function getActiveCompiledStages(compiledPath: string, fallbackWorkflowId: WorkflowId): string[];
75
+ export declare function getWorkflowStagePolicyNotes(workflowId: WorkflowId, stage: string, sourcePath?: string): string[];
76
+ export declare function getActiveCompiledStagePolicyNotes(compiledPath: string, fallbackWorkflowId: WorkflowId, stage: string): string[];
77
+ export declare function resolveActiveCompiledStageAcceptance(compiledPath: string, fallbackWorkflowId: WorkflowId, stage: string): WorkflowStageDefinition["acceptance"] | undefined;
78
+ export declare function formatActiveCompiledWorkflowStageStep(compiledPath: string, fallbackWorkflowId: CompiledWorkflowId, stage: string): string;