@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
@@ -0,0 +1,249 @@
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 "../shared/filesystem.js";
7
+ import { readInterfConfig } from "../project-model/interf-detect.js";
8
+ import { parseJsonFrontmatter } from "../shared/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";
@@ -0,0 +1,2 @@
1
+ export declare const COMPILED_ZONE_KINDS: readonly ["directory", "file", "runtime"];
2
+ export type CompiledZoneKind = typeof COMPILED_ZONE_KINDS[number];
@@ -0,0 +1,5 @@
1
+ export const COMPILED_ZONE_KINDS = [
2
+ "directory",
3
+ "file",
4
+ "runtime",
5
+ ];
@@ -0,0 +1,15 @@
1
+ import { type InterfConfig } from "../project-model/interf-detect.js";
2
+ export type { WorkflowReporter, WorkflowStageResult, LocalSkillContractExtension } from "../workflow-package/workflow-helpers.js";
3
+ export { workflowQueryDirectory, workflowImproveDirectory, workflowCompileStageDirectory, emptyLocalSkillContractExtension, buildLocalSkillContractExtension, buildLocalSkillContractExtensionRelativeTo, mergeLocalSkillContractExtensions, buildStageInstructions, reportLine, reportBlankLine, reportValidationFailure, resolveStageAcceptance, validateStageOutcome, } from "../workflow-package/workflow-helpers.js";
4
+ export type CompiledCheck = "compiled" | "stage";
5
+ export interface DetectedInterfTarget {
6
+ path: string;
7
+ kind: "compiled";
8
+ engineType: "compiled";
9
+ config: InterfConfig;
10
+ }
11
+ export declare function detectCompiled(cwd: string): DetectedInterfTarget | null;
12
+ export declare function createCompiled(name: string, sourcePath: string, workflowId?: string, about?: string, datasetPath?: string): string;
13
+ export declare function verifyCompiledCheck(check: CompiledCheck, compiledPath: string): import("./validate-compiled.js").CompiledWorkflowValidation;
14
+ export { runCompiledSummarize, runCompiledCompile, compileCompiled, resolveCompiledContext, compiledExecutionStages, } from "./compiled-compile.js";
15
+ export type { CompiledSummarizeResult, CompiledCompileResult, CompiledStageExecutionDefinition, StageShellRetentionMode, } from "./compiled-compile.js";
@@ -0,0 +1,31 @@
1
+ import { createCompiled as createCompiledScaffold, } from "../project-model/interf-scaffold.js";
2
+ import { detectInterf } from "../project-model/interf-detect.js";
3
+ import { validateCompiledCompile, } from "./validate.js";
4
+ export { workflowQueryDirectory, workflowImproveDirectory, workflowCompileStageDirectory, emptyLocalSkillContractExtension, buildLocalSkillContractExtension, buildLocalSkillContractExtensionRelativeTo, mergeLocalSkillContractExtensions, buildStageInstructions, reportLine, reportBlankLine, reportValidationFailure, resolveStageAcceptance, validateStageOutcome, } from "../workflow-package/workflow-helpers.js";
5
+ export function detectCompiled(cwd) {
6
+ const detected = detectInterf(cwd);
7
+ if (!detected)
8
+ return null;
9
+ return {
10
+ path: detected.path,
11
+ kind: "compiled",
12
+ engineType: "compiled",
13
+ config: detected.config,
14
+ };
15
+ }
16
+ export function createCompiled(name, sourcePath, workflowId = "interf", about, datasetPath = sourcePath) {
17
+ return createCompiledScaffold(name, sourcePath, workflowId, about, datasetPath);
18
+ }
19
+ export function verifyCompiledCheck(check, compiledPath) {
20
+ switch (check) {
21
+ case "compiled":
22
+ return validateCompiledCompile(compiledPath);
23
+ case "stage":
24
+ return validateCompiledCompile(compiledPath);
25
+ default: {
26
+ const exhaustiveCheck = check;
27
+ throw new Error(`Unknown compiled check: ${exhaustiveCheck}`);
28
+ }
29
+ }
30
+ }
31
+ export { runCompiledSummarize, runCompiledCompile, compileCompiled, resolveCompiledContext, compiledExecutionStages, } from "./compiled-compile.js";
@@ -0,0 +1 @@
1
+ export * from "../compiler/compiled-paths.js";
@@ -0,0 +1 @@
1
+ export * from "../compiler/compiled-paths.js";
@@ -0,0 +1 @@
1
+ export * from "../compiler/raw-snapshot.js";
@@ -0,0 +1 @@
1
+ export * from "../compiler/raw-snapshot.js";
@@ -0,0 +1 @@
1
+ export * from "../compiler/reset.js";
@@ -0,0 +1 @@
1
+ export * from "../compiler/reset.js";
@@ -0,0 +1,11 @@
1
+ export * as schema from "./lib/schema.js";
2
+ export * as sourceConfig from "./source-config.js";
3
+ export * as interf from "./interf.js";
4
+ export * as detect from "./interf-detect.js";
5
+ export * as bootstrap from "./interf-bootstrap.js";
6
+ export * as scaffold from "./interf-scaffold.js";
7
+ export * as compiledPaths from "./compiled-paths.js";
8
+ export * as projectPaths from "./project-paths.js";
9
+ export * as compiledRaw from "./compiled-raw.js";
10
+ export * as compiledReset from "./compiled-reset.js";
11
+ export type { InterfConfig, SourceDatasetConfig, SourceFolderConfig, SourceTruthCheck, } from "./lib/schema.js";
@@ -0,0 +1,10 @@
1
+ export * as schema from "./lib/schema.js";
2
+ export * as sourceConfig from "./source-config.js";
3
+ export * as interf from "./interf.js";
4
+ export * as detect from "./interf-detect.js";
5
+ export * as bootstrap from "./interf-bootstrap.js";
6
+ export * as scaffold from "./interf-scaffold.js";
7
+ export * as compiledPaths from "./compiled-paths.js";
8
+ export * as projectPaths from "./project-paths.js";
9
+ export * as compiledRaw from "./compiled-raw.js";
10
+ export * as compiledReset from "./compiled-reset.js";
@@ -0,0 +1 @@
1
+ export { refreshCompiledBootstrapGuidance, renderClaudeBootstrap, } from "../agents/lib/compiled-bootstrap.js";
@@ -0,0 +1 @@
1
+ export { refreshCompiledBootstrapGuidance, renderClaudeBootstrap, } from "../agents/lib/compiled-bootstrap.js";
@@ -0,0 +1,33 @@
1
+ import { type InterfConfig } from "./lib/schema.js";
2
+ export type { InterfConfig } from "./lib/schema.js";
3
+ export interface ResolvedCompiled {
4
+ sourcePath: string;
5
+ compiledPath: string;
6
+ config: InterfConfig;
7
+ }
8
+ export declare const INTERF_CONTAINER_NAME = "interf";
9
+ export declare const WORKFLOW_CONTAINER_NAME = "workflows";
10
+ export declare const TEST_CONTAINER_NAME = "tests";
11
+ export declare const INTERF_CONFIG_FILE = "interf.json";
12
+ export declare const WORKFLOW_PACKAGE_DIR = "workflow";
13
+ export declare function readInterfConfig(dirPath: string): InterfConfig | null;
14
+ export declare function hasSourceFolderInput(config: InterfConfig | null | undefined): config is InterfConfig & {
15
+ source: {
16
+ path: string;
17
+ };
18
+ };
19
+ export declare function detectInterf(cwd: string): {
20
+ path: string;
21
+ config: InterfConfig;
22
+ } | null;
23
+ export declare function resolveCompiled(cwd: string): ResolvedCompiled | null;
24
+ export declare function resolveSourceFolderPath(compiledPath: string, config?: InterfConfig | null): string;
25
+ export declare function resolveSourceControlPath(compiledPath: string): string;
26
+ export declare function resolveSourceInputPath(compiledPath: string): string;
27
+ export declare function listCompiledDatasetsForSourceFolder(sourcePath: string): Array<{
28
+ path: string;
29
+ config: InterfConfig;
30
+ }>;
31
+ export declare function assertCompiledContainer(sourcePath: string): string;
32
+ export declare function assertWritableTargetDir(dirPath: string, label: string): void;
33
+ export declare function assertCompiledName(name: string, label: string): void;
@@ -0,0 +1,176 @@
1
+ import { existsSync, readdirSync, statSync, } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import { warnInterf } from "../shared/logger.js";
4
+ import { readJsonFileUnchecked } from "../shared/parse.js";
5
+ import { compiledCompiledPathForDataset, projectInterfRoot, } from "./project-paths.js";
6
+ import { resolveSourceControlPathForCompiled, compiledInterfConfigPath, } from "../compiler/compiled-paths.js";
7
+ import { InterfConfigSchema, } from "./lib/schema.js";
8
+ import { assertPathWithinRoot } from "../shared/path-guards.js";
9
+ export const INTERF_CONTAINER_NAME = "interf";
10
+ export const WORKFLOW_CONTAINER_NAME = "workflows";
11
+ export const TEST_CONTAINER_NAME = "tests";
12
+ export const INTERF_CONFIG_FILE = "interf.json";
13
+ export const WORKFLOW_PACKAGE_DIR = "workflow";
14
+ export function readInterfConfig(dirPath) {
15
+ const configPath = compiledInterfConfigPath(dirPath);
16
+ if (!existsSync(configPath))
17
+ return null;
18
+ const raw = readJsonFileUnchecked(configPath, "Interf config");
19
+ if (raw === null)
20
+ return null;
21
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
22
+ return null;
23
+ if (raw.type !== "compiled") {
24
+ return null;
25
+ }
26
+ const parsed = InterfConfigSchema.safeParse(raw);
27
+ if (!parsed.success) {
28
+ warnInterf(`Warning: failed to validate Interf config at ${configPath}: ${parsed.error.issues.map((issue) => issue.message).join("; ")}`);
29
+ return null;
30
+ }
31
+ return parsed.data;
32
+ }
33
+ export function hasSourceFolderInput(config) {
34
+ return typeof config?.source?.path === "string" && config.source.path.length > 0;
35
+ }
36
+ export function detectInterf(cwd) {
37
+ const config = readInterfConfig(cwd);
38
+ if (config)
39
+ return { path: cwd, config };
40
+ return null;
41
+ }
42
+ export function resolveCompiled(cwd) {
43
+ const detected = detectInterf(cwd);
44
+ if (!detected)
45
+ return null;
46
+ return {
47
+ sourcePath: resolveSourceControlPath(detected.path),
48
+ compiledPath: detected.path,
49
+ config: detected.config,
50
+ };
51
+ }
52
+ export function resolveSourceFolderPath(compiledPath, config = null) {
53
+ const resolvedConfig = config ?? readInterfConfig(compiledPath);
54
+ if (hasSourceFolderInput(resolvedConfig)) {
55
+ return assertPathWithinRoot(compiledPath, resolve(compiledPath, resolvedConfig.source.path), "Compiled raw source path");
56
+ }
57
+ return resolve(compiledPath, "raw");
58
+ }
59
+ export function resolveSourceControlPath(compiledPath) {
60
+ return resolveSourceControlPathForCompiled(compiledPath);
61
+ }
62
+ export function resolveSourceInputPath(compiledPath) {
63
+ const config = readInterfConfig(compiledPath);
64
+ if (typeof config?.source?.dataset_path === "string" && config.source.dataset_path.length > 0) {
65
+ const projectPath = resolveSourceControlPathForCompiled(compiledPath);
66
+ return assertPathWithinRoot(projectPath, resolve(compiledPath, config.source.dataset_path), "Dataset source path");
67
+ }
68
+ throw new Error(`Context folder is missing source.dataset_path in ${compiledInterfConfigPath(compiledPath)}.`);
69
+ }
70
+ export function listCompiledDatasetsForSourceFolder(sourcePath) {
71
+ const interfRoot = projectInterfRoot(sourcePath);
72
+ if (!existsSync(interfRoot))
73
+ return [];
74
+ try {
75
+ if (!statSync(interfRoot).isDirectory())
76
+ return [];
77
+ }
78
+ catch (error) {
79
+ warnInterf(`Warning: failed to inspect Interf container at ${interfRoot}: ${error instanceof Error ? error.message : String(error)}`);
80
+ return [];
81
+ }
82
+ return readdirSync(interfRoot)
83
+ .filter((entry) => !entry.startsWith(".") &&
84
+ entry !== WORKFLOW_CONTAINER_NAME &&
85
+ entry !== TEST_CONTAINER_NAME)
86
+ .map((entry) => compiledCompiledPathForDataset(sourcePath, entry))
87
+ .filter((compiledPath) => existsSync(compiledPath))
88
+ .map((compiledPath) => {
89
+ const config = readInterfConfig(compiledPath);
90
+ return config ? { path: compiledPath, config } : null;
91
+ })
92
+ .filter((value) => value !== null);
93
+ }
94
+ export function assertCompiledContainer(sourcePath) {
95
+ const interfRoot = projectInterfRoot(sourcePath);
96
+ if (existsSync(interfRoot)) {
97
+ const stat = statSync(interfRoot);
98
+ if (!stat.isDirectory()) {
99
+ throw new Error(`Interf container exists and is not a directory: ${interfRoot}`);
100
+ }
101
+ const unexpectedRootEntries = readdirSync(interfRoot).filter((entry) => {
102
+ if (entry.startsWith("."))
103
+ return false;
104
+ const entryPath = join(interfRoot, entry);
105
+ if (entry === WORKFLOW_CONTAINER_NAME || entry === TEST_CONTAINER_NAME) {
106
+ try {
107
+ return !statSync(entryPath).isDirectory();
108
+ }
109
+ catch (error) {
110
+ warnInterf(`Warning: failed to inspect Interf control-plane path at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
111
+ return true;
112
+ }
113
+ }
114
+ try {
115
+ if (!statSync(entryPath).isDirectory())
116
+ return true;
117
+ }
118
+ catch (error) {
119
+ warnInterf(`Warning: failed to inspect Interf entry at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
120
+ return true;
121
+ }
122
+ return false;
123
+ });
124
+ if (unexpectedRootEntries.length > 0) {
125
+ throw new Error(`Interf container contains unexpected entries: ${interfRoot}`);
126
+ }
127
+ }
128
+ const containerPath = interfRoot;
129
+ if (!existsSync(containerPath)) {
130
+ return containerPath;
131
+ }
132
+ const stat = statSync(containerPath);
133
+ if (!stat.isDirectory()) {
134
+ throw new Error(`Interf container exists and is not a directory: ${containerPath}`);
135
+ }
136
+ const unexpectedEntries = readdirSync(containerPath).filter((entry) => {
137
+ if (entry.startsWith("."))
138
+ return false;
139
+ if (entry === WORKFLOW_CONTAINER_NAME || entry === TEST_CONTAINER_NAME)
140
+ return false;
141
+ const entryPath = join(containerPath, entry);
142
+ try {
143
+ if (!statSync(entryPath).isDirectory())
144
+ return true;
145
+ }
146
+ catch (error) {
147
+ warnInterf(`Warning: failed to inspect Interf entry at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
148
+ return true;
149
+ }
150
+ const compiledPath = compiledCompiledPathForDataset(sourcePath, entry);
151
+ if (!existsSync(compiledPath)) {
152
+ return false;
153
+ }
154
+ return !readInterfConfig(compiledPath);
155
+ });
156
+ if (unexpectedEntries.length > 0) {
157
+ throw new Error(`Interf container contains invalid dataset entries: ${containerPath}`);
158
+ }
159
+ return containerPath;
160
+ }
161
+ export function assertWritableTargetDir(dirPath, label) {
162
+ if (!existsSync(dirPath))
163
+ return;
164
+ const stat = statSync(dirPath);
165
+ if (!stat.isDirectory()) {
166
+ throw new Error(`${label} target exists and is not a directory: ${dirPath}`);
167
+ }
168
+ if (readdirSync(dirPath).length > 0) {
169
+ throw new Error(`${label} target already exists and is not empty: ${dirPath}`);
170
+ }
171
+ }
172
+ export function assertCompiledName(name, label) {
173
+ if (!/^[a-z0-9][a-z0-9-]*$/.test(name)) {
174
+ throw new Error(`${label} name must be a safe slug with lowercase letters, numbers, and dashes only: ${name}`);
175
+ }
176
+ }
@@ -0,0 +1,2 @@
1
+ export declare function createCompiled(name: string, sourcePath: string, workflowId?: string, about?: string, datasetPath?: string): string;
2
+ export declare function defaultCompiledNameForSource(sourcePath: string): string;