@interf/compiler 0.6.1 → 0.6.4

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 (391) hide show
  1. package/README.md +106 -80
  2. package/builtin-workflows/interf/README.md +5 -5
  3. package/builtin-workflows/interf/compile/stages/shape/SKILL.md +4 -4
  4. package/builtin-workflows/interf/improve/SKILL.md +2 -2
  5. package/builtin-workflows/interf/use/query/SKILL.md +1 -1
  6. package/builtin-workflows/interf/workflow.json +6 -6
  7. package/builtin-workflows/interf/workflow.schema.json +1 -1
  8. package/dist/bin.js +2 -28
  9. package/dist/{commands → cli/commands}/check-draft.d.ts +2 -2
  10. package/dist/{commands → cli/commands}/check-draft.js +16 -16
  11. package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
  12. package/dist/{commands → cli/commands}/compile-controller.js +37 -35
  13. package/dist/{commands → cli/commands}/compile.d.ts +2 -2
  14. package/dist/{commands → cli/commands}/compile.js +15 -11
  15. package/dist/{commands → cli/commands}/compiled-flow.d.ts +3 -4
  16. package/dist/{commands → cli/commands}/compiled-flow.js +9 -14
  17. package/dist/{commands → cli/commands}/create-workflow-wizard.d.ts +3 -3
  18. package/dist/{commands → cli/commands}/create-workflow-wizard.js +64 -37
  19. package/dist/{commands → cli/commands}/create.d.ts +1 -1
  20. package/dist/{commands → cli/commands}/create.js +15 -18
  21. package/dist/{commands → cli/commands}/dataset-selection.d.ts +1 -1
  22. package/dist/{commands → cli/commands}/default.js +3 -3
  23. package/dist/{commands → cli/commands}/doctor.js +5 -6
  24. package/dist/{commands → cli/commands}/executor-flow.d.ts +1 -1
  25. package/dist/{commands → cli/commands}/executor-flow.js +13 -16
  26. package/dist/{commands → cli/commands}/init.d.ts +4 -1
  27. package/dist/{commands → cli/commands}/init.js +162 -77
  28. package/dist/{commands → cli/commands}/list.js +6 -6
  29. package/dist/{commands → cli/commands}/reset.js +4 -4
  30. package/dist/{commands → cli/commands}/source-config-wizard.d.ts +9 -4
  31. package/dist/{commands → cli/commands}/source-config-wizard.js +168 -94
  32. package/dist/{commands → cli/commands}/status.js +20 -11
  33. package/dist/{commands → cli/commands}/test-flow.d.ts +13 -4
  34. package/dist/{commands → cli/commands}/test-flow.js +52 -48
  35. package/dist/cli/commands/test.d.ts +14 -0
  36. package/dist/{commands → cli/commands}/test.js +40 -24
  37. package/dist/{commands → cli/commands}/verify.js +4 -4
  38. package/dist/cli/index.d.ts +21 -0
  39. package/dist/cli/index.js +33 -0
  40. package/dist/index.d.ts +22 -11
  41. package/dist/index.js +15 -6
  42. package/dist/lib/agent-args.d.ts +1 -4
  43. package/dist/lib/agent-args.js +1 -52
  44. package/dist/lib/agent-constants.d.ts +1 -5
  45. package/dist/lib/agent-constants.js +1 -28
  46. package/dist/lib/agent-detection.d.ts +1 -7
  47. package/dist/lib/agent-detection.js +1 -65
  48. package/dist/lib/agent-execution.d.ts +1 -2
  49. package/dist/lib/agent-execution.js +1 -243
  50. package/dist/lib/agent-logs.d.ts +1 -2
  51. package/dist/lib/agent-logs.js +1 -17
  52. package/dist/lib/agent-preflight.d.ts +1 -7
  53. package/dist/lib/agent-preflight.js +1 -77
  54. package/dist/lib/agent-render.d.ts +1 -8
  55. package/dist/lib/agent-render.js +1 -218
  56. package/dist/lib/agent-shells.d.ts +1 -69
  57. package/dist/lib/agent-shells.js +1 -1021
  58. package/dist/lib/agent-status.d.ts +1 -3
  59. package/dist/lib/agent-status.js +1 -58
  60. package/dist/lib/agent-types.d.ts +1 -30
  61. package/dist/lib/agent-types.js +1 -1
  62. package/dist/lib/agents.d.ts +1 -6
  63. package/dist/lib/agents.js +1 -5
  64. package/dist/lib/builtin-compiled-workflow.d.ts +1 -38
  65. package/dist/lib/builtin-compiled-workflow.js +1 -94
  66. package/dist/lib/chart-guidance.d.ts +1 -1
  67. package/dist/lib/chart-guidance.js +1 -8
  68. package/dist/lib/compiled-compile.d.ts +1 -48
  69. package/dist/lib/compiled-compile.js +1 -255
  70. package/dist/lib/compiled-paths.d.ts +1 -40
  71. package/dist/lib/compiled-paths.js +3 -106
  72. package/dist/lib/compiled-raw.d.ts +1 -49
  73. package/dist/lib/compiled-raw.js +3 -102
  74. package/dist/lib/compiled-reset.d.ts +1 -2
  75. package/dist/lib/compiled-reset.js +3 -72
  76. package/dist/lib/compiled-schema.d.ts +1 -31
  77. package/dist/lib/compiled-schema.js +1 -141
  78. package/dist/lib/discovery.d.ts +1 -7
  79. package/dist/lib/discovery.js +1 -84
  80. package/dist/lib/execution-profile.d.ts +1 -17
  81. package/dist/lib/execution-profile.js +1 -84
  82. package/dist/lib/executors.d.ts +1 -32
  83. package/dist/lib/executors.js +1 -43
  84. package/dist/lib/filesystem.d.ts +1 -2
  85. package/dist/lib/filesystem.js +1 -55
  86. package/dist/lib/interf-bootstrap.d.ts +1 -3
  87. package/dist/lib/interf-bootstrap.js +3 -18
  88. package/dist/lib/interf-detect.d.ts +1 -33
  89. package/dist/lib/interf-detect.js +3 -176
  90. package/dist/lib/interf-scaffold.d.ts +1 -2
  91. package/dist/lib/interf-scaffold.js +3 -114
  92. package/dist/lib/interf-workflow-package.d.ts +1 -25
  93. package/dist/lib/interf-workflow-package.js +1 -342
  94. package/dist/lib/interf.d.ts +1 -5
  95. package/dist/lib/interf.js +3 -4
  96. package/dist/lib/local-workflows.d.ts +1 -54
  97. package/dist/lib/local-workflows.js +1 -422
  98. package/dist/lib/logger.d.ts +1 -3
  99. package/dist/lib/logger.js +1 -10
  100. package/dist/lib/package-root.d.ts +1 -0
  101. package/dist/lib/package-root.js +1 -0
  102. package/dist/lib/parse.d.ts +1 -8
  103. package/dist/lib/parse.js +1 -145
  104. package/dist/lib/project-paths.d.ts +1 -11
  105. package/dist/lib/project-paths.js +3 -32
  106. package/dist/lib/runtime-acceptance.d.ts +1 -9
  107. package/dist/lib/runtime-acceptance.js +1 -269
  108. package/dist/lib/runtime-contracts.d.ts +1 -2
  109. package/dist/lib/runtime-contracts.js +1 -48
  110. package/dist/lib/runtime-inventory.d.ts +1 -7
  111. package/dist/lib/runtime-inventory.js +1 -29
  112. package/dist/lib/runtime-paths.d.ts +1 -8
  113. package/dist/lib/runtime-paths.js +1 -26
  114. package/dist/lib/runtime-prompt.d.ts +1 -2
  115. package/dist/lib/runtime-prompt.js +1 -48
  116. package/dist/lib/runtime-reconcile.d.ts +1 -2
  117. package/dist/lib/runtime-reconcile.js +1 -193
  118. package/dist/lib/runtime-runs.d.ts +1 -11
  119. package/dist/lib/runtime-runs.js +1 -262
  120. package/dist/lib/runtime-types.d.ts +1 -43
  121. package/dist/lib/runtime-types.js +1 -1
  122. package/dist/lib/runtime.d.ts +1 -6
  123. package/dist/lib/runtime.js +1 -5
  124. package/dist/lib/schema.d.ts +4 -1073
  125. package/dist/lib/schema.js +6 -542
  126. package/dist/lib/source-config.d.ts +1 -39
  127. package/dist/lib/source-config.js +3 -293
  128. package/dist/lib/state-artifacts.d.ts +1 -8
  129. package/dist/lib/state-artifacts.js +1 -13
  130. package/dist/lib/state-health.d.ts +1 -4
  131. package/dist/lib/state-health.js +1 -132
  132. package/dist/lib/state-io.d.ts +1 -10
  133. package/dist/lib/state-io.js +1 -76
  134. package/dist/lib/state-paths.d.ts +1 -4
  135. package/dist/lib/state-paths.js +1 -13
  136. package/dist/lib/state-view.d.ts +1 -4
  137. package/dist/lib/state-view.js +1 -103
  138. package/dist/lib/state.d.ts +1 -7
  139. package/dist/lib/state.js +1 -12
  140. package/dist/lib/test-execution.d.ts +1 -14
  141. package/dist/lib/test-execution.js +3 -525
  142. package/dist/lib/test-matrices.d.ts +1 -90
  143. package/dist/lib/test-matrices.js +3 -96
  144. package/dist/lib/test-paths.d.ts +1 -12
  145. package/dist/lib/test-paths.js +3 -59
  146. package/dist/lib/test-profile-presets.d.ts +1 -57
  147. package/dist/lib/test-profile-presets.js +3 -50
  148. package/dist/lib/test-sandbox.d.ts +1 -11
  149. package/dist/lib/test-sandbox.js +3 -105
  150. package/dist/lib/test-specs.d.ts +1 -7
  151. package/dist/lib/test-specs.js +3 -114
  152. package/dist/lib/test-targets.d.ts +1 -5
  153. package/dist/lib/test-targets.js +3 -38
  154. package/dist/lib/test-types.d.ts +1 -17
  155. package/dist/lib/test-types.js +3 -1
  156. package/dist/lib/test.d.ts +1 -4
  157. package/dist/lib/test.js +3 -3
  158. package/dist/lib/util.d.ts +1 -4
  159. package/dist/lib/util.js +1 -25
  160. package/dist/lib/validate-compiled.d.ts +1 -27
  161. package/dist/lib/validate-compiled.js +1 -241
  162. package/dist/lib/validate-helpers.d.ts +1 -12
  163. package/dist/lib/validate-helpers.js +1 -41
  164. package/dist/lib/validate.d.ts +1 -21
  165. package/dist/lib/validate.js +1 -249
  166. package/dist/lib/workflow-authoring.d.ts +1 -26
  167. package/dist/lib/workflow-authoring.js +1 -119
  168. package/dist/lib/workflow-definitions.d.ts +1 -78
  169. package/dist/lib/workflow-definitions.js +1 -203
  170. package/dist/lib/workflow-edit-session.d.ts +1 -16
  171. package/dist/lib/workflow-edit-session.js +1 -57
  172. package/dist/lib/workflow-edit-utils.d.ts +1 -10
  173. package/dist/lib/workflow-edit-utils.js +1 -39
  174. package/dist/lib/workflow-helpers.d.ts +1 -38
  175. package/dist/lib/workflow-helpers.js +1 -167
  176. package/dist/lib/workflow-improvement.d.ts +1 -22
  177. package/dist/lib/workflow-improvement.js +1 -209
  178. package/dist/lib/workflow-primitives.d.ts +1 -2
  179. package/dist/lib/workflow-primitives.js +1 -5
  180. package/dist/lib/workflow-review-paths.d.ts +1 -10
  181. package/dist/lib/workflow-review-paths.js +1 -27
  182. package/dist/lib/workflow-stage-policy.d.ts +1 -5
  183. package/dist/lib/workflow-stage-policy.js +1 -31
  184. package/dist/lib/workflow-stage-runner.d.ts +1 -41
  185. package/dist/lib/workflow-stage-runner.js +1 -109
  186. package/dist/lib/workflows.d.ts +1 -15
  187. package/dist/lib/workflows.js +1 -31
  188. package/dist/packages/agents/index.d.ts +18 -0
  189. package/dist/packages/agents/index.js +16 -0
  190. package/dist/packages/agents/lib/agents.d.ts +6 -0
  191. package/dist/packages/agents/lib/agents.js +5 -0
  192. package/dist/packages/agents/lib/args.d.ts +4 -0
  193. package/dist/packages/agents/lib/args.js +52 -0
  194. package/dist/packages/agents/lib/chart-guidance.d.ts +1 -0
  195. package/dist/packages/agents/lib/chart-guidance.js +8 -0
  196. package/dist/packages/agents/lib/compiled-bootstrap.d.ts +3 -0
  197. package/dist/packages/agents/lib/compiled-bootstrap.js +18 -0
  198. package/dist/packages/agents/lib/constants.d.ts +5 -0
  199. package/dist/packages/agents/lib/constants.js +28 -0
  200. package/dist/packages/agents/lib/detection.d.ts +7 -0
  201. package/dist/packages/agents/lib/detection.js +65 -0
  202. package/dist/packages/agents/lib/execution-profile.d.ts +17 -0
  203. package/dist/packages/agents/lib/execution-profile.js +84 -0
  204. package/dist/packages/agents/lib/execution.d.ts +2 -0
  205. package/dist/packages/agents/lib/execution.js +243 -0
  206. package/dist/packages/agents/lib/executors.d.ts +32 -0
  207. package/dist/packages/agents/lib/executors.js +45 -0
  208. package/dist/packages/agents/lib/logs.d.ts +2 -0
  209. package/dist/packages/agents/lib/logs.js +17 -0
  210. package/dist/packages/agents/lib/preflight.d.ts +7 -0
  211. package/dist/packages/agents/lib/preflight.js +77 -0
  212. package/dist/packages/agents/lib/render.d.ts +8 -0
  213. package/dist/packages/agents/lib/render.js +218 -0
  214. package/dist/packages/agents/lib/schema.d.ts +8 -0
  215. package/dist/packages/agents/lib/schema.js +7 -0
  216. package/dist/packages/agents/lib/shells.d.ts +71 -0
  217. package/dist/packages/agents/lib/shells.js +1023 -0
  218. package/dist/packages/agents/lib/status.d.ts +3 -0
  219. package/dist/packages/agents/lib/status.js +58 -0
  220. package/dist/packages/agents/lib/types.d.ts +30 -0
  221. package/dist/packages/agents/lib/types.js +1 -0
  222. package/dist/{lib → packages/agents/lib}/user-config.d.ts +1 -0
  223. package/dist/{lib → packages/agents/lib}/user-config.js +3 -2
  224. package/dist/packages/compiler/compiled-compile.d.ts +4 -0
  225. package/dist/packages/compiler/compiled-compile.js +4 -0
  226. package/dist/packages/compiler/compiled-paths.d.ts +40 -0
  227. package/dist/packages/compiler/compiled-paths.js +106 -0
  228. package/dist/packages/compiler/compiled-pipeline.d.ts +39 -0
  229. package/dist/packages/compiler/compiled-pipeline.js +134 -0
  230. package/dist/packages/compiler/compiled-schema.d.ts +31 -0
  231. package/dist/packages/compiler/compiled-schema.js +141 -0
  232. package/dist/packages/compiler/compiled-stage-plan.d.ts +15 -0
  233. package/dist/packages/compiler/compiled-stage-plan.js +79 -0
  234. package/dist/packages/compiler/compiled-stage-runner.d.ts +10 -0
  235. package/dist/packages/compiler/compiled-stage-runner.js +46 -0
  236. package/dist/packages/compiler/compiled-target.d.ts +11 -0
  237. package/dist/packages/compiler/compiled-target.js +16 -0
  238. package/dist/packages/compiler/discovery.d.ts +7 -0
  239. package/dist/packages/compiler/discovery.js +80 -0
  240. package/dist/packages/compiler/index.d.ts +24 -0
  241. package/dist/packages/compiler/index.js +23 -0
  242. package/dist/packages/compiler/lib/schema.d.ts +684 -0
  243. package/dist/packages/compiler/lib/schema.js +363 -0
  244. package/dist/packages/compiler/raw-snapshot.d.ts +49 -0
  245. package/dist/packages/compiler/raw-snapshot.js +102 -0
  246. package/dist/packages/compiler/reset.d.ts +2 -0
  247. package/dist/packages/compiler/reset.js +72 -0
  248. package/dist/packages/compiler/runtime-acceptance.d.ts +9 -0
  249. package/dist/packages/compiler/runtime-acceptance.js +269 -0
  250. package/dist/packages/compiler/runtime-contracts.d.ts +2 -0
  251. package/dist/packages/compiler/runtime-contracts.js +48 -0
  252. package/dist/packages/compiler/runtime-inventory.d.ts +7 -0
  253. package/dist/packages/compiler/runtime-inventory.js +29 -0
  254. package/dist/packages/compiler/runtime-paths.d.ts +8 -0
  255. package/dist/packages/compiler/runtime-paths.js +26 -0
  256. package/dist/packages/compiler/runtime-prompt.d.ts +2 -0
  257. package/dist/packages/compiler/runtime-prompt.js +48 -0
  258. package/dist/packages/compiler/runtime-reconcile.d.ts +2 -0
  259. package/dist/packages/compiler/runtime-reconcile.js +193 -0
  260. package/dist/packages/compiler/runtime-runs.d.ts +11 -0
  261. package/dist/packages/compiler/runtime-runs.js +262 -0
  262. package/dist/packages/compiler/runtime-types.d.ts +43 -0
  263. package/dist/packages/compiler/runtime-types.js +1 -0
  264. package/dist/packages/compiler/runtime.d.ts +6 -0
  265. package/dist/packages/compiler/runtime.js +5 -0
  266. package/dist/packages/compiler/state-artifacts.d.ts +8 -0
  267. package/dist/packages/compiler/state-artifacts.js +13 -0
  268. package/dist/packages/compiler/state-health.d.ts +4 -0
  269. package/dist/packages/compiler/state-health.js +132 -0
  270. package/dist/packages/compiler/state-io.d.ts +10 -0
  271. package/dist/packages/compiler/state-io.js +76 -0
  272. package/dist/packages/compiler/state-paths.d.ts +4 -0
  273. package/dist/packages/compiler/state-paths.js +13 -0
  274. package/dist/packages/compiler/state-view.d.ts +4 -0
  275. package/dist/packages/compiler/state-view.js +103 -0
  276. package/dist/packages/compiler/state.d.ts +7 -0
  277. package/dist/packages/compiler/state.js +12 -0
  278. package/dist/packages/compiler/validate-compiled.d.ts +27 -0
  279. package/dist/packages/compiler/validate-compiled.js +241 -0
  280. package/dist/packages/compiler/validate-helpers.d.ts +12 -0
  281. package/dist/packages/compiler/validate-helpers.js +41 -0
  282. package/dist/packages/compiler/validate.d.ts +21 -0
  283. package/dist/packages/compiler/validate.js +249 -0
  284. package/dist/packages/compiler/workflow-primitives.d.ts +2 -0
  285. package/dist/packages/compiler/workflow-primitives.js +5 -0
  286. package/dist/packages/compiler/workflows.d.ts +15 -0
  287. package/dist/packages/compiler/workflows.js +31 -0
  288. package/dist/packages/project-model/compiled-paths.d.ts +1 -0
  289. package/dist/packages/project-model/compiled-paths.js +1 -0
  290. package/dist/packages/project-model/compiled-raw.d.ts +1 -0
  291. package/dist/packages/project-model/compiled-raw.js +1 -0
  292. package/dist/packages/project-model/compiled-reset.d.ts +1 -0
  293. package/dist/packages/project-model/compiled-reset.js +1 -0
  294. package/dist/packages/project-model/index.d.ts +11 -0
  295. package/dist/packages/project-model/index.js +10 -0
  296. package/dist/packages/project-model/interf-bootstrap.d.ts +1 -0
  297. package/dist/packages/project-model/interf-bootstrap.js +1 -0
  298. package/dist/packages/project-model/interf-detect.d.ts +33 -0
  299. package/dist/packages/project-model/interf-detect.js +176 -0
  300. package/dist/packages/project-model/interf-scaffold.d.ts +2 -0
  301. package/dist/packages/project-model/interf-scaffold.js +124 -0
  302. package/dist/packages/project-model/interf.d.ts +5 -0
  303. package/dist/packages/project-model/interf.js +4 -0
  304. package/dist/packages/project-model/lib/schema.d.ts +125 -0
  305. package/dist/packages/project-model/lib/schema.js +62 -0
  306. package/dist/packages/project-model/project-paths.d.ts +11 -0
  307. package/dist/packages/project-model/project-paths.js +32 -0
  308. package/dist/packages/project-model/source-config.d.ts +38 -0
  309. package/dist/packages/project-model/source-config.js +298 -0
  310. package/dist/packages/shared/file-types.d.ts +1 -0
  311. package/dist/packages/shared/file-types.js +4 -0
  312. package/dist/packages/shared/filesystem.d.ts +2 -0
  313. package/dist/packages/shared/filesystem.js +55 -0
  314. package/dist/packages/shared/index.d.ts +7 -0
  315. package/dist/packages/shared/index.js +7 -0
  316. package/dist/packages/shared/logger.d.ts +3 -0
  317. package/dist/packages/shared/logger.js +10 -0
  318. package/dist/packages/shared/naming.d.ts +1 -0
  319. package/dist/packages/shared/naming.js +8 -0
  320. package/dist/packages/shared/parse.d.ts +8 -0
  321. package/dist/packages/shared/parse.js +145 -0
  322. package/dist/packages/shared/path-guards.d.ts +2 -0
  323. package/dist/packages/shared/path-guards.js +14 -0
  324. package/dist/packages/shared/util.d.ts +3 -0
  325. package/dist/packages/shared/util.js +3 -0
  326. package/dist/packages/testing/index.d.ts +13 -0
  327. package/dist/packages/testing/index.js +10 -0
  328. package/dist/packages/testing/lib/schema.d.ts +261 -0
  329. package/dist/packages/testing/lib/schema.js +119 -0
  330. package/dist/packages/testing/test-execution.d.ts +14 -0
  331. package/dist/packages/testing/test-execution.js +525 -0
  332. package/dist/packages/testing/test-matrices.d.ts +90 -0
  333. package/dist/packages/testing/test-matrices.js +96 -0
  334. package/dist/packages/testing/test-paths.d.ts +12 -0
  335. package/dist/packages/testing/test-paths.js +59 -0
  336. package/dist/packages/testing/test-profile-presets.d.ts +57 -0
  337. package/dist/packages/testing/test-profile-presets.js +50 -0
  338. package/dist/packages/testing/test-sandbox.d.ts +11 -0
  339. package/dist/packages/testing/test-sandbox.js +105 -0
  340. package/dist/packages/testing/test-specs.d.ts +7 -0
  341. package/dist/packages/testing/test-specs.js +114 -0
  342. package/dist/packages/testing/test-targets.d.ts +5 -0
  343. package/dist/packages/testing/test-targets.js +38 -0
  344. package/dist/packages/testing/test-types.d.ts +16 -0
  345. package/dist/packages/testing/test-types.js +1 -0
  346. package/dist/packages/testing/test.d.ts +4 -0
  347. package/dist/packages/testing/test.js +3 -0
  348. package/dist/packages/workflow-authoring/index.d.ts +4 -0
  349. package/dist/packages/workflow-authoring/index.js +4 -0
  350. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.d.ts +10 -0
  351. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.js +39 -0
  352. package/dist/packages/workflow-authoring/workflow-authoring.d.ts +26 -0
  353. package/dist/packages/workflow-authoring/workflow-authoring.js +121 -0
  354. package/dist/packages/workflow-authoring/workflow-edit-session.d.ts +16 -0
  355. package/dist/packages/workflow-authoring/workflow-edit-session.js +57 -0
  356. package/dist/packages/workflow-authoring/workflow-improvement.d.ts +23 -0
  357. package/dist/packages/workflow-authoring/workflow-improvement.js +210 -0
  358. package/dist/packages/workflow-package/builtin-compiled-workflow.d.ts +38 -0
  359. package/dist/packages/workflow-package/builtin-compiled-workflow.js +94 -0
  360. package/dist/packages/workflow-package/context-interface.d.ts +96 -0
  361. package/dist/packages/workflow-package/context-interface.js +146 -0
  362. package/dist/packages/workflow-package/index.d.ts +11 -0
  363. package/dist/packages/workflow-package/index.js +11 -0
  364. package/dist/packages/workflow-package/interf-workflow-package.d.ts +25 -0
  365. package/dist/packages/workflow-package/interf-workflow-package.js +389 -0
  366. package/dist/{lib/config.d.ts → packages/workflow-package/lib/package-root.d.ts} +0 -1
  367. package/dist/packages/workflow-package/lib/package-root.js +6 -0
  368. package/dist/packages/workflow-package/local-workflows.d.ts +57 -0
  369. package/dist/packages/workflow-package/local-workflows.js +424 -0
  370. package/dist/packages/workflow-package/workflow-definitions.d.ts +82 -0
  371. package/dist/packages/workflow-package/workflow-definitions.js +210 -0
  372. package/dist/packages/workflow-package/workflow-helpers.d.ts +38 -0
  373. package/dist/packages/workflow-package/workflow-helpers.js +167 -0
  374. package/dist/packages/workflow-package/workflow-review-paths.d.ts +10 -0
  375. package/dist/packages/workflow-package/workflow-review-paths.js +27 -0
  376. package/dist/packages/workflow-package/workflow-stage-policy.d.ts +5 -0
  377. package/dist/packages/workflow-package/workflow-stage-policy.js +31 -0
  378. package/dist/packages/workflow-package/workflow-stage-runner.d.ts +41 -0
  379. package/dist/packages/workflow-package/workflow-stage-runner.js +109 -0
  380. package/package.json +43 -19
  381. package/dist/commands/test.d.ts +0 -3
  382. package/dist/lib/compiled-home.d.ts +0 -5
  383. package/dist/lib/compiled-home.js +0 -32
  384. package/dist/lib/config.js +0 -9
  385. /package/dist/{commands → cli/commands}/dataset-selection.js +0 -0
  386. /package/dist/{commands → cli/commands}/default.d.ts +0 -0
  387. /package/dist/{commands → cli/commands}/doctor.d.ts +0 -0
  388. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  389. /package/dist/{commands → cli/commands}/reset.d.ts +0 -0
  390. /package/dist/{commands → cli/commands}/status.d.ts +0 -0
  391. /package/dist/{commands → cli/commands}/verify.d.ts +0 -0
@@ -1,249 +1 @@
1
- import { existsSync, readFileSync, statSync, } from "node:fs";
2
- import { basename, extname, join } from "node:path";
3
- import { readCompiledSchemaFile } from "./compiled-schema.js";
4
- import { compiledKnowledgeRootPath } from "./compiled-schema.js";
5
- import { workflowPackagePathForCompiled } from "./compiled-paths.js";
6
- import { listFilesRecursive } from "./filesystem.js";
7
- import { readInterfConfig } from "./interf.js";
8
- import { parseJsonFrontmatter } from "./parse.js";
9
- import { compiledInterfConfigPath } from "./compiled-paths.js";
10
- const MIN_ABSTRACT_WORDS = 5;
11
- const WIKILINK_PATTERN = /!?\[\[([^[\]]+)\]\]/g;
12
- export function readCompiledConfig(dirPath) {
13
- const configPath = compiledInterfConfigPath(dirPath);
14
- const value = readInterfConfig(dirPath);
15
- const present = existsSync(configPath);
16
- if (!present) {
17
- return {
18
- present: false,
19
- valid: false,
20
- value: null,
21
- typeMatch: () => false,
22
- };
23
- }
24
- return {
25
- present: true,
26
- valid: value !== null,
27
- value,
28
- typeMatch() {
29
- return value?.type === "compiled" && typeof value?.source?.path === "string";
30
- },
31
- };
32
- }
33
- export function validateSynthFiles(files, options) {
34
- let invalidFrontmatter = 0;
35
- let shortAbstracts = 0;
36
- for (const filePath of files) {
37
- const content = safeReadText(filePath);
38
- if (content === null)
39
- continue;
40
- const parsed = parseJsonFrontmatter(content);
41
- if (!parsed || !hasRequiredFrontmatterKeys(parsed.frontmatter, options?.requiredFrontmatterKeys)) {
42
- invalidFrontmatter += 1;
43
- continue;
44
- }
45
- const abstractWords = countSynthAbstractWords(parsed.frontmatter, parsed.body);
46
- if (abstractWords < MIN_ABSTRACT_WORDS) {
47
- shortAbstracts += 1;
48
- }
49
- }
50
- return {
51
- invalid_frontmatter: invalidFrontmatter,
52
- short_abstracts: shortAbstracts,
53
- };
54
- }
55
- export function countBrokenWikilinks(compiledRoot, noteIndexRoots, linkScanRoots) {
56
- const zonePathById = compiledZoneDirectoryPaths(compiledRoot);
57
- const knowledgeRelativePrefixes = compiledKnowledgeRelativePrefixes(zonePathById);
58
- const noteIndex = new Set();
59
- for (const filePath of dedupeFiles(noteIndexRoots)) {
60
- for (const target of collectWikilinkTargets(filePath)) {
61
- noteIndex.add(target.toLowerCase());
62
- }
63
- }
64
- let brokenLinks = 0;
65
- for (const filePath of dedupeFiles(linkScanRoots)) {
66
- const content = safeReadText(filePath);
67
- if (content === null)
68
- continue;
69
- const matches = content.matchAll(WIKILINK_PATTERN);
70
- for (const match of matches) {
71
- const rawTarget = match[1]?.trim();
72
- if (!rawTarget)
73
- continue;
74
- const target = rawTarget.split("|")[0]?.split("#")[0]?.trim();
75
- if (!target)
76
- continue;
77
- if (target.includes("/")) {
78
- if (!wikilinkPathExists(compiledRoot, target, zonePathById, knowledgeRelativePrefixes)) {
79
- brokenLinks += 1;
80
- }
81
- continue;
82
- }
83
- if (!noteIndex.has(target.toLowerCase()) &&
84
- !noteIndex.has(noteName(target).toLowerCase()) &&
85
- !wikilinkPathExists(compiledRoot, target, zonePathById, knowledgeRelativePrefixes) &&
86
- !wikilinkPathExists(compiledRoot, noteName(target), zonePathById, knowledgeRelativePrefixes)) {
87
- brokenLinks += 1;
88
- }
89
- }
90
- }
91
- return brokenLinks;
92
- }
93
- export function asNumber(value) {
94
- return typeof value === "number" && Number.isFinite(value) ? value : 0;
95
- }
96
- export function isOutputMarkdownFile(filePath) {
97
- return extname(filePath) === ".md" && basename(filePath) !== "AGENTS.md";
98
- }
99
- export function safeReadText(filePath) {
100
- try {
101
- return readFileSync(filePath, "utf-8");
102
- }
103
- catch {
104
- return null;
105
- }
106
- }
107
- function dedupeFiles(dirPaths) {
108
- const seen = new Set();
109
- const files = [];
110
- for (const dirPath of dirPaths) {
111
- if (existsSync(dirPath)) {
112
- try {
113
- const stat = statSync(dirPath);
114
- if (stat.isFile()) {
115
- if (!seen.has(dirPath) && isOutputMarkdownFile(dirPath)) {
116
- seen.add(dirPath);
117
- files.push(dirPath);
118
- }
119
- continue;
120
- }
121
- }
122
- catch {
123
- continue;
124
- }
125
- }
126
- for (const filePath of listFilesRecursive(dirPath, isOutputMarkdownFile)) {
127
- if (seen.has(filePath))
128
- continue;
129
- seen.add(filePath);
130
- files.push(filePath);
131
- }
132
- }
133
- return files;
134
- }
135
- function hasRequiredFrontmatterKeys(frontmatter, requiredKeys) {
136
- return (requiredKeys ?? []).every((field) => field in frontmatter);
137
- }
138
- function extractBodyAbstract(body) {
139
- const lines = body.split(/\r?\n/);
140
- const abstractHeadingIndex = lines.findIndex((line) => /^#{1,2}\s+Abstract\s*$/.test(line.trim()));
141
- if (abstractHeadingIndex < 0)
142
- return null;
143
- const abstractLines = [];
144
- for (let index = abstractHeadingIndex + 1; index < lines.length; index += 1) {
145
- const line = lines[index] ?? "";
146
- if (/^#{1,2}\s+\S/.test(line.trim()))
147
- break;
148
- abstractLines.push(line);
149
- }
150
- const abstractText = abstractLines.join("\n").trim();
151
- return abstractText.length > 0 ? abstractText : null;
152
- }
153
- export function extractSynthAbstract(frontmatter, body) {
154
- const frontmatterAbstract = typeof frontmatter.abstract === "string" ? frontmatter.abstract.trim() : "";
155
- if (frontmatterAbstract.length > 0) {
156
- return frontmatterAbstract;
157
- }
158
- return extractBodyAbstract(body);
159
- }
160
- export function countSynthAbstractWords(frontmatter, body) {
161
- const abstract = extractSynthAbstract(frontmatter, body);
162
- if (!abstract)
163
- return 0;
164
- return countWords(abstract);
165
- }
166
- function countWords(text) {
167
- return text
168
- .split(/\s+/)
169
- .map((word) => word.trim())
170
- .filter((word) => /[A-Za-z0-9]/.test(word)).length;
171
- }
172
- function noteName(filePath) {
173
- return basename(filePath, extname(filePath));
174
- }
175
- function wikilinkPathExists(compiledRoot, target, zonePathById, knowledgeRelativePrefixes) {
176
- return linkPathCandidates(compiledRoot, target, zonePathById, knowledgeRelativePrefixes)
177
- .some((candidate) => existsSync(candidate));
178
- }
179
- function linkPathCandidates(compiledRoot, target, zonePathById, knowledgeRelativePrefixes) {
180
- const candidates = new Set();
181
- addPathCandidate(candidates, join(compiledRoot, target));
182
- const [firstSegment] = target.split("/");
183
- if (firstSegment && knowledgeRelativePrefixes.has(firstSegment)) {
184
- addPathCandidate(candidates, join(compiledKnowledgeRootPath(compiledRoot), target));
185
- }
186
- if (firstSegment) {
187
- const normalizedPrefix = zonePathById.get(firstSegment);
188
- if (normalizedPrefix) {
189
- const remainder = target.slice(firstSegment.length).replace(/^\/+/, "");
190
- addPathCandidate(candidates, join(compiledRoot, normalizedPrefix, remainder));
191
- }
192
- }
193
- return Array.from(candidates);
194
- }
195
- function addPathCandidate(candidates, absolutePath) {
196
- candidates.add(absolutePath);
197
- if (!absolutePath.endsWith(".md")) {
198
- candidates.add(`${absolutePath}.md`);
199
- }
200
- }
201
- function compiledZoneDirectoryPaths(compiledRoot) {
202
- const workflowRoot = workflowPackagePathForCompiled(compiledRoot);
203
- const schema = readCompiledSchemaFile(workflowRoot);
204
- if (!schema)
205
- return new Map();
206
- return new Map(schema.zones
207
- .filter((zone) => zone.kind === "directory")
208
- .map((zone) => [zone.id, zone.path]));
209
- }
210
- function compiledKnowledgeRelativePrefixes(zonePathById) {
211
- const prefixes = new Set();
212
- for (const zonePath of zonePathById.values()) {
213
- const [root, leaf, ...rest] = zonePath.split("/");
214
- if (root !== "knowledge" || !leaf || rest.length > 0)
215
- continue;
216
- prefixes.add(leaf);
217
- }
218
- return prefixes;
219
- }
220
- function collectWikilinkTargets(filePath) {
221
- const targets = new Set();
222
- targets.add(noteName(filePath));
223
- const content = safeReadText(filePath);
224
- if (content === null)
225
- return Array.from(targets);
226
- const parsed = parseJsonFrontmatter(content);
227
- const frontmatter = parsed?.frontmatter;
228
- if (!frontmatter)
229
- return Array.from(targets);
230
- addFrontmatterLinkTarget(targets, frontmatter.label);
231
- addFrontmatterLinkTarget(targets, frontmatter.title);
232
- addFrontmatterLinkTarget(targets, frontmatter.alias);
233
- addFrontmatterLinkTarget(targets, frontmatter.aliases);
234
- return Array.from(targets);
235
- }
236
- function addFrontmatterLinkTarget(targets, value) {
237
- if (typeof value === "string") {
238
- const trimmed = value.trim();
239
- if (trimmed.length > 0)
240
- targets.add(trimmed);
241
- return;
242
- }
243
- if (Array.isArray(value)) {
244
- for (const entry of value) {
245
- addFrontmatterLinkTarget(targets, entry);
246
- }
247
- }
248
- }
249
- export { validateCompiled, validateCompiledStage, validateCompiledWorkflow, validateCompiledSummarize, validateCompiledStructure, validateCompiledCompile, } from "./validate-compiled.js";
1
+ export * from "../packages/compiler/validate.js";
@@ -1,26 +1 @@
1
- import type { WorkflowExecutor } from "./executors.js";
2
- import { validateWorkflowPackage } from "./local-workflows.js";
3
- import type { SourceTruthCheck } from "./schema.js";
4
- import { type WorkflowReporter } from "./workflows.js";
5
- export interface WorkflowAuthoringRunResult {
6
- status: "updated" | "no-change" | "invalid" | "executor-failed";
7
- changed: boolean;
8
- summary: string;
9
- validation: ReturnType<typeof validateWorkflowPackage> | null;
10
- workflowPath: string;
11
- shellPath: string;
12
- }
13
- export declare function runWorkflowAuthoringDraft(options: {
14
- sourcePath: string;
15
- datasetPath: string;
16
- baseWorkflowId: string;
17
- workflowId: string;
18
- label: string;
19
- hint: string;
20
- taskPrompt: string;
21
- checks?: SourceTruthCheck[];
22
- executor: WorkflowExecutor;
23
- preparePreview?: boolean;
24
- previewReporter?: WorkflowReporter | null;
25
- }): Promise<WorkflowAuthoringRunResult>;
26
- export declare function resolveWorkflowDraftPath(sourcePath: string, workflowId: string): string;
1
+ export * from "../packages/workflow-authoring/workflow-authoring.js";
@@ -1,119 +1 @@
1
- import { mkdtempSync, rmSync, } from "node:fs";
2
- import { tmpdir } from "node:os";
3
- import { join } from "node:path";
4
- import { createWorkflowAuthoringShell } from "./agent-shells.js";
5
- import { WORKFLOW_SCHEMA_FILE } from "./compiled-schema.js";
6
- import { projectRawSnapshot } from "./compiled-raw.js";
7
- import { seedLocalWorkflowPackageFromBase } from "./interf-workflow-package.js";
8
- import { validateWorkflowPackage, workflowDefinitionPath } from "./local-workflows.js";
9
- import { runWorkflowEditSession } from "./workflow-edit-session.js";
10
- import { copyDirectory } from "./workflow-edit-utils.js";
11
- import { createCompiled, compileCompiled } from "./workflows.js";
12
- function buildWorkflowAuthoringPrompt() {
13
- return [
14
- "This is an automated Interf workflow-authoring run, not an open-ended chat session.",
15
- "Execute it now.",
16
- "Read `runtime/authoring-context.json` first.",
17
- `Then read \`workflow/README.md\`, \`workflow/workflow.json\`, and \`workflow/${WORKFLOW_SCHEMA_FILE}\`.`,
18
- "Review `artifacts/source-dataset/raw/` and any `artifacts/preview-compiled/` notes before editing the package.",
19
- "Prefer direct file-reading and search tools over shell commands for routine file inspection.",
20
- "Do not use shell helpers like `cat`, `sed`, `ls`, or `find` when a native read/search tool can inspect the same files.",
21
- "Edit only files under `workflow/`.",
22
- "Keep the workflow valid for the current compiler API and workflow schema.",
23
- "Make the package materially more specific to this dataset task than the seeded base workflow. A no-op copy is not acceptable.",
24
- "Prefer explicit stage-doc, stage-policy, purpose, and zone-contract edits over vague rewrites.",
25
- "Do not introduce wikilinks unless the workflow also creates the target note by exact basename or explicit relative path.",
26
- "Respect stage boundaries: a stage may only introduce links that resolve within that stage's declared writes or already-existing read zones.",
27
- "Do not make one stage point at files or notes that are only created later by another stage.",
28
- "Prefer conservative retrieval routing over speculative note sprawl.",
29
- "Do not narrate plans or ask follow-up questions.",
30
- "Only emit user-visible updates that begin with STATUS:, DONE:, BLOCKED:, or ERROR:.",
31
- "As soon as the workflow edits are complete, stop.",
32
- ].join("\n");
33
- }
34
- async function prepareWorkflowAuthoringPreview(options) {
35
- const tempRoot = mkdtempSync(join(tmpdir(), "interf-workflow-preview-"));
36
- projectRawSnapshot({
37
- sourcePath: options.datasetPath,
38
- destinationPath: tempRoot,
39
- compiledPath: tempRoot,
40
- mode: "copy",
41
- prune: true,
42
- preserveTimestamps: true,
43
- });
44
- copyDirectory(options.workflowPath, workflowDefinitionPath(tempRoot, options.workflowId));
45
- const compiledPath = createCompiled("preview", tempRoot, options.workflowId, options.about, tempRoot);
46
- const result = await compileCompiled({
47
- executor: options.executor,
48
- compiledPath,
49
- ...(options.reporter ? { reporter: options.reporter } : {}),
50
- preserveStageShells: "on-failure",
51
- });
52
- return {
53
- tempRoot,
54
- compiledPath,
55
- compileResult: {
56
- ok: result.ok,
57
- failedStage: result.failedStage,
58
- },
59
- };
60
- }
61
- export async function runWorkflowAuthoringDraft(options) {
62
- const workflowPath = seedLocalWorkflowPackageFromBase({
63
- sourcePath: options.sourcePath,
64
- baseWorkflowId: options.baseWorkflowId,
65
- workflowId: options.workflowId,
66
- label: options.label,
67
- hint: options.hint,
68
- });
69
- let preview = null;
70
- try {
71
- if (options.preparePreview !== false) {
72
- preview = await prepareWorkflowAuthoringPreview({
73
- datasetPath: options.datasetPath,
74
- about: options.taskPrompt,
75
- workflowId: options.workflowId,
76
- workflowPath,
77
- executor: options.executor,
78
- reporter: options.previewReporter ?? null,
79
- });
80
- }
81
- const shell = createWorkflowAuthoringShell({
82
- workflowPath,
83
- workflowId: options.workflowId,
84
- label: options.label,
85
- baseWorkflowId: options.baseWorkflowId,
86
- datasetPath: options.datasetPath,
87
- taskPrompt: options.taskPrompt,
88
- checks: options.checks ?? [],
89
- preview,
90
- });
91
- if (preview) {
92
- rmSync(preview.tempRoot, { recursive: true, force: true });
93
- preview = null;
94
- }
95
- const session = await runWorkflowEditSession({
96
- executor: options.executor,
97
- workflowPath,
98
- shell,
99
- prompt: buildWorkflowAuthoringPrompt(),
100
- validate: validateWorkflowPackage,
101
- });
102
- return {
103
- status: session.status,
104
- changed: session.changed,
105
- summary: session.summary,
106
- validation: session.validation,
107
- workflowPath,
108
- shellPath: shell.rootPath,
109
- };
110
- }
111
- finally {
112
- if (preview) {
113
- rmSync(preview.tempRoot, { recursive: true, force: true });
114
- }
115
- }
116
- }
117
- export function resolveWorkflowDraftPath(sourcePath, workflowId) {
118
- return workflowDefinitionPath(sourcePath, workflowId);
119
- }
1
+ export * from "../packages/workflow-authoring/workflow-authoring.js";
@@ -1,78 +1 @@
1
- import type { RuntimeContractType, RuntimeStageAcceptance, WorkflowCompilerApi, WorkflowCompiledSchema, WorkflowId, WorkflowZoneId } from "./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;
1
+ export * from "../packages/workflow-package/workflow-definitions.js";
@@ -1,203 +1 @@
1
- import { existsSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { isWorkflowId, listLocalWorkflowDefinitions, loadLocalWorkflowDefinition, loadWorkflowDefinitionFromDir, } from "./local-workflows.js";
4
- import { PACKAGE_ROOT } from "./config.js";
5
- import { resolveSourceControlPath } from "./interf.js";
6
- import { warnInterf } from "./logger.js";
7
- import { workflowPackagePathForCompiled } from "./compiled-paths.js";
8
- import { mergeStagePolicyNotesForStages } from "./workflow-stage-policy.js";
9
- let builtinInterfWorkflowCache = null;
10
- function toWorkflowStages(stages, fallbackStages) {
11
- if (!stages || stages.length === 0)
12
- return [...fallbackStages];
13
- return stages.map((stage) => ({
14
- id: stage.id,
15
- label: stage.label,
16
- description: stage.description ?? stage.label,
17
- contractType: stage.contract_type,
18
- skillDir: stage.skill_dir ?? stage.id,
19
- reads: [...stage.reads],
20
- writes: [...stage.writes],
21
- ...(stage.acceptance ? { acceptance: stage.acceptance } : {}),
22
- }));
23
- }
24
- export function standaloneWorkflowDefinitionFromLocalPackage(local) {
25
- if (!local.stages || local.stages.length === 0) {
26
- throw new Error(`Workflow package "${local.id}" is missing explicit stages. Compiled-local and portable workflow packages must be standalone.`);
27
- }
28
- const stages = toWorkflowStages(local.stages, []);
29
- return {
30
- id: local.id,
31
- compilerApi: local.compiler_api ?? {
32
- kind: "compiled",
33
- version: 1,
34
- },
35
- ...(local.purpose
36
- ? {
37
- purpose: {
38
- label: local.purpose.label,
39
- taskHint: local.purpose.task_hint,
40
- },
41
- }
42
- : {}),
43
- label: local.label,
44
- hint: local.hint,
45
- recommended: false,
46
- ...(local.workflow_schema ? { schema: local.workflow_schema } : {}),
47
- stages,
48
- stagePolicyNotes: mergeStagePolicyNotesForStages(stages, undefined, local.stage_policy_notes),
49
- starterDocs: [...local.starter_docs],
50
- scope: "local",
51
- };
52
- }
53
- function builtinWorkflowPackagePath(workflowId) {
54
- return join(PACKAGE_ROOT, "builtin-workflows", workflowId);
55
- }
56
- function getBuiltinInterfWorkflow() {
57
- if (builtinInterfWorkflowCache)
58
- return builtinInterfWorkflowCache;
59
- const local = loadWorkflowDefinitionFromDir(builtinWorkflowPackagePath("interf"));
60
- if (!local) {
61
- throw new Error("Missing built-in Interf workflow package at builtin-workflows/interf.");
62
- }
63
- const resolved = standaloneWorkflowDefinitionFromLocalPackage(local);
64
- builtinInterfWorkflowCache = {
65
- ...resolved,
66
- id: "interf",
67
- recommended: true,
68
- scope: "builtin",
69
- };
70
- return builtinInterfWorkflowCache;
71
- }
72
- function listBuiltinCompiledWorkflows() {
73
- return [getBuiltinInterfWorkflow()];
74
- }
75
- function resolveCompiledWorkflowFromLocal(workflowId, sourcePath) {
76
- const local = loadLocalWorkflowDefinition(sourcePath, workflowId);
77
- if (!local)
78
- return null;
79
- if (local.extends) {
80
- throw new Error(`Workflow "${workflowId}" uses legacy extends. Rewrite it as a standalone package before creating or compiling a compiled dataset.`);
81
- }
82
- const resolved = standaloneWorkflowDefinitionFromLocalPackage(local);
83
- return resolved;
84
- }
85
- export function listCompiledWorkflowChoices(sourcePath) {
86
- const builtins = listBuiltinCompiledWorkflows();
87
- if (!sourcePath)
88
- return builtins;
89
- const locals = listLocalWorkflowDefinitions(sourcePath)
90
- .filter((definition) => definition.id !== "interf")
91
- .map((definition) => {
92
- try {
93
- return resolveCompiledWorkflowFromLocal(definition.id, sourcePath);
94
- }
95
- catch (error) {
96
- warnInterf(`Warning: skipping local workflow "${definition.id}" because it could not be resolved cleanly: ${error instanceof Error ? error.message : String(error)}`);
97
- return null;
98
- }
99
- })
100
- .filter((definition) => definition !== null);
101
- return [...builtins, ...locals];
102
- }
103
- export function getCompiledWorkflow(workflowId, options = {}) {
104
- const builtin = listBuiltinCompiledWorkflows().find((candidate) => candidate.id === workflowId);
105
- if (builtin)
106
- return builtin;
107
- if (options.sourcePath) {
108
- const local = resolveCompiledWorkflowFromLocal(workflowId, options.sourcePath);
109
- if (local)
110
- return local;
111
- throw new Error(`No local workflow package found for "${workflowId}" under ${join(options.sourcePath, "interf", "workflows", workflowId)}.`);
112
- }
113
- throw new Error(`Workflow "${workflowId}" is not built-in. Provide a source path so Interf can resolve a local workflow package.`);
114
- }
115
- export function getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId) {
116
- const workflowPath = workflowPackagePathForCompiled(compiledPath);
117
- if (existsSync(join(workflowPath, "workflow.json"))) {
118
- const local = loadWorkflowDefinitionFromDir(workflowPath);
119
- if (!local) {
120
- throw new Error(`Dataset-local workflow package at ${workflowPath} is missing or invalid. Interf compile runs the local package directly; recreate or reseed this compiled dataset instead of relying on source-root fallback.`);
121
- }
122
- if (local.extends) {
123
- throw new Error(`Dataset-local workflow package at ${workflowPath} still uses legacy extends. Materialize it as a standalone package before compiling this compiled dataset.`);
124
- }
125
- return standaloneWorkflowDefinitionFromLocalPackage(local);
126
- }
127
- throw new Error(`Missing local workflow package at ${workflowPath}. Interf compile runs the local package directly, so recreate or reseed this compiled dataset instead of relying on source-root workflow "${fallbackWorkflowId}" under ${resolveSourceControlPath(compiledPath)}.`);
128
- }
129
- export function resolveCompiledWorkflowId(value) {
130
- if (typeof value === "string" && isWorkflowId(value)) {
131
- return value;
132
- }
133
- return null;
134
- }
135
- export function resolveCompiledWorkflowFromConfig(config) {
136
- if (!config || typeof config !== "object")
137
- return null;
138
- const raw = config;
139
- return resolveCompiledWorkflowId(raw.workflow);
140
- }
141
- export function resolveRequiredCompiledWorkflowFromConfig(config, label = "compiled config") {
142
- const workflowId = resolveCompiledWorkflowFromConfig(config);
143
- if (!workflowId) {
144
- throw new Error(`Missing or invalid workflow in ${label}.`);
145
- }
146
- return workflowId;
147
- }
148
- export function formatCompiledWorkflowStageStep(workflowId, stage, options = {}) {
149
- return formatWorkflowStageStep(getCompiledWorkflow(workflowId, options), stage);
150
- }
151
- function resolveWorkflowDefinitionForStageMetadata(workflowId, sourcePath) {
152
- if (sourcePath &&
153
- existsSync(join(workflowPackagePathForCompiled(sourcePath), "workflow.json"))) {
154
- return getActiveCompiledWorkflow(sourcePath, workflowId);
155
- }
156
- return getCompiledWorkflow(workflowId, { sourcePath });
157
- }
158
- function formatWorkflowStageStep(workflow, stage) {
159
- const stageIndex = workflow.stages.findIndex((candidate) => candidate.id === stage);
160
- if (stageIndex === -1) {
161
- throw new Error(`Stage "${stage}" is not part of the compiled runtime.`);
162
- }
163
- const stageDefinition = workflow.stages[stageIndex];
164
- if (!stageDefinition) {
165
- throw new Error(`Stage "${stage}" is not part of the compiled runtime.`);
166
- }
167
- return `Step ${stageIndex + 1}/${workflow.stages.length} - ${stageDefinition.label}`;
168
- }
169
- export function getWorkflowStageDefinition(workflowId, stage, sourcePath) {
170
- const workflow = resolveWorkflowDefinitionForStageMetadata(workflowId, sourcePath);
171
- return workflow.stages.find((candidate) => candidate.id === stage) ?? null;
172
- }
173
- export function getWorkflowStagePosition(workflowId, stage, sourcePath) {
174
- const stages = getWorkflowStages(workflowId, sourcePath);
175
- const stageIndex = stages.findIndex((candidate) => candidate === stage);
176
- if (stageIndex === -1)
177
- return null;
178
- return {
179
- stageIndex: stageIndex + 1,
180
- stageTotal: stages.length,
181
- stages: [...stages],
182
- };
183
- }
184
- export function getWorkflowStages(workflowId, sourcePath) {
185
- return resolveWorkflowDefinitionForStageMetadata(workflowId, sourcePath).stages.map((definition) => definition.id);
186
- }
187
- export function getActiveCompiledStages(compiledPath, fallbackWorkflowId) {
188
- return getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId).stages.map((definition) => definition.id);
189
- }
190
- export function getWorkflowStagePolicyNotes(workflowId, stage, sourcePath) {
191
- const workflow = resolveWorkflowDefinitionForStageMetadata(workflowId, sourcePath);
192
- return [...(workflow.stagePolicyNotes?.[stage] ?? [])];
193
- }
194
- export function getActiveCompiledStagePolicyNotes(compiledPath, fallbackWorkflowId, stage) {
195
- const workflow = getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId);
196
- return [...(workflow.stagePolicyNotes?.[stage] ?? [])];
197
- }
198
- export function resolveActiveCompiledStageAcceptance(compiledPath, fallbackWorkflowId, stage) {
199
- return getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId).stages.find((candidate) => candidate.id === stage)?.acceptance;
200
- }
201
- export function formatActiveCompiledWorkflowStageStep(compiledPath, fallbackWorkflowId, stage) {
202
- return formatWorkflowStageStep(getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId), stage);
203
- }
1
+ export * from "../packages/workflow-package/workflow-definitions.js";