@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
@@ -2,14 +2,14 @@ import { cpSync, existsSync, mkdirSync, mkdtempSync, rmSync } from "node:fs";
2
2
  import { tmpdir } from "node:os";
3
3
  import { dirname, join } from "node:path";
4
4
  import chalk from "chalk";
5
- import { readInterfConfig } from "../lib/interf.js";
6
- import { clearCompiledRuntimeDerivedArtifacts, resetCompiledGeneratedState, } from "../lib/compiled-reset.js";
7
- import { formatActiveCompiledWorkflowStageStep, resolveRequiredCompiledWorkflowFromConfig, } from "../lib/workflow-definitions.js";
8
- import { resolveDatasetCompileMaxAttempts, resolveDatasetCompileMaxLoops, } from "../lib/source-config.js";
9
- import { runWorkflowImprovementLoop } from "../lib/workflow-improvement.js";
10
- import { stageExecutionShellsRoot, workflowPackagePathForCompiled, } from "../lib/compiled-paths.js";
11
- import { readCompiledSchemaFile } from "../lib/compiled-schema.js";
12
- import { initializeCompiledRuntimeState } from "../lib/state.js";
5
+ import { readInterfConfig } from "../../packages/project-model/interf.js";
6
+ import { clearCompiledRuntimeDerivedArtifacts, resetCompiledGeneratedState, } from "../../packages/compiler/reset.js";
7
+ import { formatActiveCompiledWorkflowStageStep, resolveRequiredCompiledWorkflowFromConfig, } from "../../packages/workflow-package/workflow-definitions.js";
8
+ import { loadCompiledDatasetConfig, resolveDatasetCompileMaxAttempts, resolveDatasetCompileMaxLoops, } from "../../packages/project-model/source-config.js";
9
+ import { runWorkflowImprovementLoop } from "../../packages/workflow-authoring/workflow-improvement.js";
10
+ import { stageExecutionShellsRoot, workflowPackagePathForCompiled, } from "../../packages/compiler/compiled-paths.js";
11
+ import { readCompiledSchemaFile } from "../../packages/compiler/compiled-schema.js";
12
+ import { initializeCompiledRuntimeState } from "../../packages/compiler/state.js";
13
13
  import { compileCompiledWithReporter } from "./compiled-flow.js";
14
14
  import { printSavedTestOutcome, questionPassRate, runSavedCompiledTest, } from "./test-flow.js";
15
15
  function printCompileFailure(compiledPath, failedStage) {
@@ -78,16 +78,16 @@ async function runWorkflowVariation(options) {
78
78
  const resetTarget = attempt > 1
79
79
  ? `attempt ${attempt}/${options.maxAttempts}`
80
80
  : options.variationLabel;
81
- console.log(chalk.dim(` Resetting generated compiled state before ${resetTarget}...`));
81
+ console.log(chalk.dim(` Resetting generated portable-context state before ${resetTarget}...`));
82
82
  resetCompiledGeneratedState(options.compiledPath, "compile");
83
83
  }
84
84
  const result = await compileCompiledWithReporter(options.executor, options.compiledPath, {
85
85
  heading: options.maxAttempts > 1
86
- ? `Building compiled dataset (${options.variationLabel}, attempt ${attempt}/${options.maxAttempts})...`
87
- : `Building compiled dataset (${options.variationLabel})...`,
86
+ ? `Building portable context (${options.variationLabel}, attempt ${attempt}/${options.maxAttempts})...`
87
+ : `Building portable context (${options.variationLabel})...`,
88
88
  successMessage: options.maxAttempts > 1
89
- ? `Compiled dataset ready for ${options.variationLabel}, attempt ${attempt}.`
90
- : `Compiled dataset ready for ${options.variationLabel}.`,
89
+ ? `Portable context ready for ${options.variationLabel}, attempt ${attempt}.`
90
+ : `Portable context ready for ${options.variationLabel}.`,
91
91
  preserveStageShells: options.preserveStageShells,
92
92
  });
93
93
  if (!result.ok) {
@@ -123,7 +123,7 @@ async function runWorkflowVariation(options) {
123
123
  bestOutcome,
124
124
  bestSnapshotPath,
125
125
  bestAttempt,
126
- fatalError: "Could not run the saved compiled-dataset test after compile.",
126
+ fatalError: "Could not run the saved portable-context comparison after compile.",
127
127
  };
128
128
  }
129
129
  console.log();
@@ -138,7 +138,7 @@ async function runWorkflowVariation(options) {
138
138
  }
139
139
  if (outcome.result.ok) {
140
140
  console.log();
141
- console.log(chalk.green(` Compiled passed on ${options.variationLabel}, attempt ${attempt}/${options.maxAttempts}.`));
141
+ console.log(chalk.green(` Compiled context passed on ${options.variationLabel}, attempt ${attempt}/${options.maxAttempts}.`));
142
142
  printStageShellReviewHint(options.compiledPath, options.preserveStageShells, "success");
143
143
  return {
144
144
  passed: true,
@@ -181,11 +181,11 @@ function summarizeWorkflowVariation(options) {
181
181
  const passedQuestions = options.result.bestOutcome?.result.passedCases ?? 0;
182
182
  const totalQuestions = options.result.bestOutcome?.result.totalCases ?? options.defaultTotalQuestions;
183
183
  const summary = options.result.passed
184
- ? `Passed ${passedQuestions}/${totalQuestions} truth checks.`
184
+ ? `Passed ${passedQuestions}/${totalQuestions} questions.`
185
185
  : options.result.bestOutcome
186
- ? `Best result: ${passedQuestions}/${totalQuestions} truth checks passed.`
186
+ ? `Best result: ${passedQuestions}/${totalQuestions} questions passed.`
187
187
  : options.result.failedStage
188
- ? `Compile failed at stage ${options.result.failedStage} before any test result.`
188
+ ? `Compile failed at stage ${options.result.failedStage} before any saved comparison result.`
189
189
  : "Workflow variation did not produce a passing result.";
190
190
  return {
191
191
  variation: options.variation,
@@ -213,16 +213,16 @@ function printStageShellReviewHint(compiledPath, preserveStageShells, result) {
213
213
  }
214
214
  }
215
215
  function printPostCompileNextStep(options) {
216
- console.log(chalk.dim(` Compiled dataset: ${options.compiledPath}`));
216
+ console.log(chalk.dim(` Portable context: ${options.compiledPath}`));
217
217
  if (options.checks === 0) {
218
- console.log(chalk.dim(" Next: run `interf` to add truth checks, then `interf test`."));
218
+ console.log(chalk.dim(" Next: run `interf` to add questions, then `interf test`."));
219
219
  return;
220
220
  }
221
221
  if (options.testedDuringCompile) {
222
- console.log(chalk.dim(" Next: inspect the compiled dataset or rerun `interf test` for a fresh comparison."));
222
+ console.log(chalk.dim(" Next: inspect the portable context, or run `interf test` if you also want a source-files-versus-portable-context comparison."));
223
223
  return;
224
224
  }
225
- console.log(chalk.dim(" Next: run `interf test` to compare the raw files and the compiled dataset."));
225
+ console.log(chalk.dim(" Next: run `interf test` to compare the source files and the portable context."));
226
226
  }
227
227
  function formatVariationQuestionSummary(summary) {
228
228
  return `${summary.passed_questions}/${summary.total_questions}`;
@@ -233,7 +233,7 @@ function printWorkflowVariationSummary(summaries) {
233
233
  console.log();
234
234
  console.log(chalk.bold(" Workflow variation summary"));
235
235
  console.log();
236
- console.log(" | Variation | Kind | Truth checks | Result |");
236
+ console.log(" | Variation | Kind | Questions | Result |");
237
237
  console.log(" | --- | --- | --- | --- |");
238
238
  for (const summary of summaries) {
239
239
  console.log(` | ${summary.variation} | ${summary.kind} | \`${formatVariationQuestionSummary(summary)}\` | ${summary.passed ? "pass" : "fail"} |`);
@@ -245,7 +245,7 @@ function printCompiledLocalWorkflowOwnership(compiledPath, bestVariation) {
245
245
  console.log();
246
246
  console.log(chalk.dim(` Best workflow variation now lives in: ${workflowPackagePathForCompiled(compiledPath)}`));
247
247
  console.log(chalk.dim(" The project-level workflow selection was not changed automatically."));
248
- console.log(chalk.dim(" Recompiling this existing compiled dataset reuses that local workflow draft."));
248
+ console.log(chalk.dim(" Recompiling this existing portable context reuses that local workflow draft."));
249
249
  }
250
250
  export async function runConfiguredCompiledCompile(options) {
251
251
  const preserveStageShells = options.preserveStageShells ?? "on-failure";
@@ -255,12 +255,12 @@ export async function runConfiguredCompiledCompile(options) {
255
255
  const loopEnabled = maxAttempts != null;
256
256
  const checks = options.compiledConfig?.checks ?? [];
257
257
  if (loopEnabled && checks.length === 0) {
258
- console.log(chalk.yellow(" Retry and self-improving modes need saved truth checks. Building once without those loops."));
258
+ console.log(chalk.yellow(" Retry and self-improving modes need saved questions. Building once without those loops."));
259
259
  }
260
260
  else if (loopEnabled) {
261
261
  if (maxAttempts > 1) {
262
262
  console.log(chalk.dim(` Retry mode: up to ${maxAttempts} compile attempts.`));
263
- console.log(chalk.dim(" Interf will rerun the same workflow variation, test the compiled dataset, and stop early if it passes."));
263
+ console.log(chalk.dim(" Interf will rerun the same workflow variation, check the portable context, and stop early if it passes."));
264
264
  }
265
265
  else {
266
266
  console.log(chalk.dim(" Compile mode: 1 attempt per workflow variation."));
@@ -295,11 +295,13 @@ export async function runConfiguredCompiledCompile(options) {
295
295
  const previousVariations = [];
296
296
  const improvementRunId = `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
297
297
  try {
298
- const compiledConfig = options.compiledConfig ?? {
299
- name: readInterfConfig(options.compiledPath)?.name ?? "compiled",
300
- path: ".",
301
- checks: [],
302
- };
298
+ const compiledConfig = options.compiledConfig
299
+ ?? loadCompiledDatasetConfig(options.compiledPath)
300
+ ?? {
301
+ name: readInterfConfig(options.compiledPath)?.name ?? "compiled",
302
+ path: "./dataset",
303
+ checks: [],
304
+ };
303
305
  const adoptVariationBest = (variation, result) => {
304
306
  if (result.bestOutcome && result.bestSnapshotPath && (!bestOutcome || testScore(result.bestOutcome) > testScore(bestOutcome))) {
305
307
  if (bestSnapshotPath) {
@@ -412,20 +414,20 @@ export async function runConfiguredCompiledCompile(options) {
412
414
  if (bestSnapshotPath && bestVariation > 0) {
413
415
  restoreCompiledBestState(bestSnapshotPath, options.compiledPath);
414
416
  console.log();
415
- console.log(chalk.dim(` Restored the best-performing compiled dataset from variation ${bestVariation}, attempt ${bestAttempt}.`));
417
+ console.log(chalk.dim(` Restored the best-performing portable context from variation ${bestVariation}, attempt ${bestAttempt}.`));
416
418
  }
417
419
  process.exitCode = 1;
418
420
  console.log();
419
421
  printWorkflowVariationSummary(previousVariations);
420
422
  printCompiledLocalWorkflowOwnership(options.compiledPath, bestVariation);
421
423
  if (maxLoops != null) {
422
- console.log(chalk.red(` Compiled did not pass after ${maxAttempts} attempt${maxAttempts === 1 ? "" : "s"} per variation and ${maxLoops} workflow-improvement loop${maxLoops === 1 ? "" : "s"}.`));
424
+ console.log(chalk.red(` Context folder did not pass after ${maxAttempts} attempt${maxAttempts === 1 ? "" : "s"} per variation and ${maxLoops} workflow-improvement loop${maxLoops === 1 ? "" : "s"}.`));
423
425
  }
424
426
  else {
425
- console.log(chalk.red(` Compiled did not pass within ${maxAttempts} attempt${maxAttempts === 1 ? "" : "s"}.`));
427
+ console.log(chalk.red(` Context folder did not pass within ${maxAttempts} attempt${maxAttempts === 1 ? "" : "s"}.`));
426
428
  }
427
429
  if (bestOutcome) {
428
- console.log(chalk.dim(` Best attempt truth-check pass rate: ${questionPassRate(bestOutcome)}%.`));
430
+ console.log(chalk.dim(` Best attempt test pass rate: ${questionPassRate(bestOutcome)}%.`));
429
431
  }
430
432
  printStageShellReviewHint(options.compiledPath, preserveStageShells, "failure");
431
433
  return false;
@@ -1,6 +1,6 @@
1
1
  import * as p from "@clack/prompts";
2
- import { detectInterf } from "../lib/interf.js";
3
- import type { SourceDatasetConfig } from "../lib/schema.js";
2
+ import { detectInterf } from "../../packages/project-model/interf.js";
3
+ import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
4
4
  import type { CommandModule } from "yargs";
5
5
  import { chooseCompiledConfigToBuild, ensureCompiledFromConfig } from "./compiled-flow.js";
6
6
  import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
@@ -1,8 +1,8 @@
1
1
  import chalk from "chalk";
2
2
  import * as p from "@clack/prompts";
3
- import { detectInterf, readInterfConfig, resolveSourceControlPath, } from "../lib/interf.js";
4
- import { sourceDatasetConfigFromInterfConfig, resolveDatasetCompileMaxAttempts, resolveDatasetCompileMaxLoops, } from "../lib/source-config.js";
5
- import { addExecutionProfileOptions, executionProfileFromArgv, } from "../lib/execution-profile.js";
3
+ import { detectInterf, readInterfConfig, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
4
+ import { loadCompiledDatasetConfig, sourceDatasetConfigFromInterfConfig, resolveDatasetCompileMaxAttempts, resolveDatasetCompileMaxLoops, } from "../../packages/project-model/source-config.js";
5
+ import { addExecutionProfileOptions, executionProfileFromArgv, } from "../../packages/agents/lib/execution-profile.js";
6
6
  import { chooseCompiledConfigToBuild, ensureCompiledFromConfig, } from "./compiled-flow.js";
7
7
  import { resolveConfiguredDatasetSelection } from "./dataset-selection.js";
8
8
  import { promptCompileLoopSelection, } from "./source-config-wizard.js";
@@ -11,10 +11,10 @@ import { runConfiguredCompiledCompile } from "./compile-controller.js";
11
11
  export { runConfiguredCompiledCompile } from "./compile-controller.js";
12
12
  export const compileCommand = {
13
13
  command: "compile",
14
- describe: "Build a compiled dataset and optionally run retry or self-improving compile loops",
14
+ describe: "Build portable context and optionally run retry or self-improving compile loops",
15
15
  builder: (yargs) => addExecutionProfileOptions(yargs).option("max-attempts", {
16
16
  type: "number",
17
- describe: "Retry compile + test for the same workflow until the dataset passes or reaches this total attempt limit",
17
+ describe: "Retry compile and test the same workflow until the dataset passes or reaches this total attempt limit",
18
18
  }).option("max-loops", {
19
19
  type: "number",
20
20
  describe: "After retries fail, let Interf edit the workflow and test new workflow variations for this dataset up to this loop limit",
@@ -78,7 +78,8 @@ export async function runCompileCommand(argv = {}, deps = {}) {
78
78
  if (detected) {
79
79
  compiledPath = detected.path;
80
80
  sourcePath = resolveSourceControlPath(detected.path);
81
- compiledConfig = sourceDatasetConfigFromInterfConfig(detected.config);
81
+ compiledConfig = loadCompiledDatasetConfig(detected.path)
82
+ ?? sourceDatasetConfigFromInterfConfig(detected.config);
82
83
  if (!skipConfirm && process.stdin.isTTY && process.stdout.isTTY) {
83
84
  const confirmed = await helpers.confirm({
84
85
  message: `Compile dataset "${detected.config.name}" now?`,
@@ -97,18 +98,18 @@ export async function runCompileCommand(argv = {}, deps = {}) {
97
98
  })
98
99
  : await helpers.chooseCompiledConfigToBuild({
99
100
  sourcePath,
100
- selectMessage: "Which dataset do you want to compile?",
101
+ selectMessage: "Which source folder setup do you want to compile?",
101
102
  });
102
103
  if (selectedCompiled === undefined)
103
104
  return null;
104
105
  if (!selectedCompiled) {
105
106
  process.exitCode = 1;
106
107
  if (requestedDatasetName) {
107
- console.log(chalk.red(` Dataset "${requestedDatasetName}" is not set up in this project.`));
108
- console.log(chalk.dim(" Run `interf list` to see the saved datasets."));
108
+ console.log(chalk.red(` Setup "${requestedDatasetName}" is not set up in this project.`));
109
+ console.log(chalk.dim(" Run `interf list` to see the saved setups."));
109
110
  }
110
111
  else {
111
- console.log(chalk.red(" No datasets are set up for this folder yet."));
112
+ console.log(chalk.red(" No saved setups are configured for this folder yet."));
112
113
  console.log(chalk.dim(" Start with `interf` or `interf init` to set up this folder."));
113
114
  }
114
115
  return null;
@@ -211,7 +212,10 @@ export async function resolveInteractiveCompileLoopOverrides(options) {
211
212
  };
212
213
  }
213
214
  const savedCompiledConfig = options.compiledConfig
214
- ?? (currentConfig ? sourceDatasetConfigFromInterfConfig(currentConfig) : null);
215
+ ?? (currentConfig
216
+ ? (loadCompiledDatasetConfig(options.compiledPath)
217
+ ?? sourceDatasetConfigFromInterfConfig(currentConfig))
218
+ : null);
215
219
  if (!savedCompiledConfig) {
216
220
  return {
217
221
  compiledConfig: options.compiledConfig,
@@ -1,7 +1,6 @@
1
- import type { SourceDatasetConfig } from "../lib/schema.js";
2
- import { type StageShellRetentionMode } from "../lib/workflows.js";
3
- import type { WorkflowExecutor } from "../lib/executors.js";
4
- import type { CompiledCompileResult } from "../lib/workflows.js";
1
+ import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
2
+ import { type StageShellRetentionMode, type CompiledCompileResult } from "../../packages/compiler/workflows.js";
3
+ import type { WorkflowExecutor } from "../../packages/agents/lib/executors.js";
5
4
  export interface SavedDatasetEntry {
6
5
  config: SourceDatasetConfig;
7
6
  path: string | null;
@@ -1,18 +1,18 @@
1
1
  import chalk from "chalk";
2
2
  import * as p from "@clack/prompts";
3
- import { listCompiledDatasetsForSourceFolder } from "../lib/interf.js";
4
- import { listSourceDatasetConfigs, loadCompiledDatasetConfig, loadSourceFolderConfig, resolveSourceDatasetPath, sourceDatasetConfigFromInterfConfig, syncCompiledInterfConfigFromSourceDatasetConfig, } from "../lib/source-config.js";
5
- import { compileCompiled, createCompiled, } from "../lib/workflows.js";
6
- import { formatWorkflowExecutionProfile } from "../lib/execution-profile.js";
3
+ import { listCompiledDatasetsForSourceFolder } from "../../packages/project-model/interf.js";
4
+ import { listSourceDatasetConfigs, loadCompiledDatasetConfig, loadSourceFolderConfig, resolveSourceDatasetPath, sourceDatasetConfigFromInterfConfig, syncCompiledInterfConfigFromSourceDatasetConfig, } from "../../packages/project-model/source-config.js";
5
+ import { compileCompiled, createCompiled, } from "../../packages/compiler/workflows.js";
6
+ import { formatWorkflowExecutionProfile } from "../../packages/agents/lib/execution-profile.js";
7
7
  function formatSavedDatasetHint(entry) {
8
8
  const config = entry.config;
9
9
  const checkCount = config.checks.length;
10
10
  const workflowHint = `workflow ${config.workflow ?? "interf"}${entry.localDraft ? " (local draft)" : ""}`;
11
11
  if (config.about)
12
- return `${config.about} · ${workflowHint}`;
12
+ return `${config.path} · ${config.about} · ${workflowHint}`;
13
13
  if (checkCount === 0)
14
- return "No saved truth checks yet";
15
- return `${checkCount} saved truth check${checkCount === 1 ? "" : "s"} · ${workflowHint}`;
14
+ return `${config.path} · No questions yet · ${workflowHint}`;
15
+ return `${config.path} · ${checkCount} question${checkCount === 1 ? "" : "s"} · ${workflowHint}`;
16
16
  }
17
17
  export function listSavedCompiledEntries(sourcePath) {
18
18
  const builtEntries = new Map();
@@ -34,11 +34,6 @@ export function listSavedCompiledEntries(sourcePath) {
34
34
  localDraft: built?.localDraft ?? false,
35
35
  });
36
36
  }
37
- for (const [name, built] of builtEntries.entries()) {
38
- if (entries.has(name))
39
- continue;
40
- entries.set(name, built);
41
- }
42
37
  return Array.from(entries.values()).sort((left, right) => left.config.name.localeCompare(right.config.name));
43
38
  }
44
39
  export function findBuiltCompiledPath(sourcePath, compiledName) {
@@ -87,7 +82,7 @@ export function ensureCompiledFromConfig(sourcePath, datasetConfig) {
87
82
  }
88
83
  export async function compileCompiledWithReporter(executor, compiledPath, options = {}) {
89
84
  console.log();
90
- console.log(chalk.bold(` ${options.heading ?? "Building compiled dataset..."}`));
85
+ console.log(chalk.bold(` ${options.heading ?? "Building portable context..."}`));
91
86
  const profileLabel = formatWorkflowExecutionProfile(executor.executionProfile);
92
87
  if (profileLabel) {
93
88
  console.log(chalk.dim(` Execution profile: ${profileLabel}`));
@@ -107,6 +102,6 @@ export async function compileCompiledWithReporter(executor, compiledPath, option
107
102
  return result;
108
103
  }
109
104
  console.log();
110
- console.log(chalk.green(` ✓ ${options.successMessage ?? "Compiled dataset ready."}`));
105
+ console.log(chalk.green(` ✓ ${options.successMessage ?? "Portable context ready."}`));
111
106
  return result;
112
107
  }
@@ -1,7 +1,7 @@
1
1
  import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
2
- import { runWorkflowAuthoringDraft } from "../lib/workflow-authoring.js";
3
- import type { SourceDatasetConfig } from "../lib/schema.js";
4
- import type { WorkflowExecutionProfile } from "../lib/executors.js";
2
+ import { runWorkflowAuthoringDraft } from "../../packages/workflow-authoring/workflow-authoring.js";
3
+ import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
4
+ import type { WorkflowExecutionProfile } from "../../packages/agents/lib/executors.js";
5
5
  export interface WorkflowWizardPrompts {
6
6
  intro(message: string): void;
7
7
  select(options: {
@@ -1,14 +1,14 @@
1
1
  import chalk from "chalk";
2
2
  import * as p from "@clack/prompts";
3
- import { statSync } from "node:fs";
4
3
  import { resolve } from "node:path";
5
- import { listCompiledWorkflowChoices, getCompiledWorkflow, } from "../lib/workflow-definitions.js";
6
- import { createLocalWorkflowPackageFromTemplate } from "../lib/interf-workflow-package.js";
7
- import { isWorkflowId, } from "../lib/local-workflows.js";
4
+ import { listCompiledWorkflowChoices, getCompiledWorkflow, } from "../../packages/workflow-package/workflow-definitions.js";
5
+ import { createLocalWorkflowPackageFromTemplate } from "../../packages/workflow-package/interf-workflow-package.js";
6
+ import { isWorkflowId, } from "../../packages/workflow-package/local-workflows.js";
8
7
  import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
9
- import { runWorkflowAuthoringDraft } from "../lib/workflow-authoring.js";
10
- import { listSourceDatasetConfigs, loadSourceFolderConfig, resolveSourceDatasetPath, } from "../lib/source-config.js";
11
- import { slugify } from "../lib/util.js";
8
+ import { runWorkflowAuthoringDraft } from "../../packages/workflow-authoring/workflow-authoring.js";
9
+ import { listSourceDatasetConfigs, loadSourceFolderConfig, resolveSourceDatasetPath, } from "../../packages/project-model/source-config.js";
10
+ import { slugify } from "../../packages/shared/naming.js";
11
+ import { DEFAULT_DATASET_PATH_PLACEHOLDER, listDatasetFolderChoices, normalizeDatasetPathForConfig, } from "./source-config-wizard.js";
12
12
  export const clackWorkflowPrompts = {
13
13
  intro: p.intro,
14
14
  select: (options) => p.select(options),
@@ -30,7 +30,49 @@ function findMatchingDatasetConfig(sourcePath, datasetPath) {
30
30
  }
31
31
  function describeSavedDataset(dataset) {
32
32
  return dataset.about
33
- ?? `${dataset.checks.length} saved truth check${dataset.checks.length === 1 ? "" : "s"} · path ${dataset.path}`;
33
+ ? `${dataset.path} · ${dataset.about}`
34
+ : `${dataset.path} · ${dataset.checks.length} test${dataset.checks.length === 1 ? "" : "s"}`;
35
+ }
36
+ async function promptWorkflowDatasetFolder(sourcePath, prompts) {
37
+ const folderChoices = listDatasetFolderChoices(sourcePath);
38
+ if (folderChoices.length > 0) {
39
+ const selected = await prompts.select({
40
+ message: "Which source folder should shape this workflow?",
41
+ options: [
42
+ ...folderChoices,
43
+ {
44
+ value: "__manual__",
45
+ label: "Enter a different path",
46
+ hint: "Use a relative path if the source folder is not listed here",
47
+ },
48
+ ],
49
+ });
50
+ if (prompts.isCancel(selected))
51
+ return selected;
52
+ if (selected !== "__manual__") {
53
+ return resolve(sourcePath, normalizeDatasetPathForConfig(sourcePath, String(selected)));
54
+ }
55
+ }
56
+ const datasetFolder = await prompts.text({
57
+ message: "Which source folder should shape this workflow?",
58
+ placeholder: DEFAULT_DATASET_PATH_PLACEHOLDER,
59
+ initialValue: folderChoices.length === 1 ? folderChoices[0]?.value : undefined,
60
+ validate: (value) => {
61
+ const trimmed = value.trim();
62
+ if (trimmed.length === 0)
63
+ return "Source folder is required";
64
+ try {
65
+ normalizeDatasetPathForConfig(sourcePath, trimmed);
66
+ return undefined;
67
+ }
68
+ catch (error) {
69
+ return error instanceof Error ? error.message : String(error);
70
+ }
71
+ },
72
+ });
73
+ if (prompts.isCancel(datasetFolder))
74
+ return datasetFolder;
75
+ return resolve(sourcePath, normalizeDatasetPathForConfig(sourcePath, String(datasetFolder)));
34
76
  }
35
77
  export function formatWorkflowLabel(workflow) {
36
78
  return {
@@ -93,8 +135,8 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
93
135
  options: [
94
136
  {
95
137
  value: "draft",
96
- label: "Draft a workflow from this dataset (Recommended)",
97
- hint: "Seed a workflow, prepare a preview, then let a local agent draft a reusable method for this task",
138
+ label: "Draft a workflow from this source folder (Recommended)",
139
+ hint: "Seed a workflow, build a preview, then let a local agent draft a reusable method for this kind of work",
98
140
  },
99
141
  {
100
142
  value: "manual",
@@ -138,7 +180,7 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
138
180
  const savedDatasets = listSourceDatasetConfigs(loadSourceFolderConfig(sourcePath));
139
181
  if (savedDatasets.length > 0) {
140
182
  const datasetChoice = await prompts.select({
141
- message: "Which dataset should shape this workflow?",
183
+ message: "Which source folder setup should shape this workflow?",
142
184
  options: [
143
185
  ...savedDatasets.map((dataset) => ({
144
186
  value: dataset.name,
@@ -163,41 +205,26 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
163
205
  }
164
206
  }
165
207
  if (!datasetPath) {
166
- const datasetFolder = await prompts.text({
167
- message: "Which dataset folder should shape this workflow?",
168
- placeholder: ".",
169
- initialValue: ".",
170
- validate: (value) => {
171
- const trimmed = value.trim();
172
- if (trimmed.length === 0)
173
- return "Dataset folder is required";
174
- const absolutePath = resolve(sourcePath, trimmed);
175
- try {
176
- const stat = statSync(absolutePath);
177
- return stat.isDirectory() ? undefined : "Dataset folder must be a directory";
178
- }
179
- catch {
180
- return "Dataset folder was not found";
181
- }
182
- },
183
- });
208
+ const datasetFolder = await promptWorkflowDatasetFolder(sourcePath, prompts);
184
209
  if (prompts.isCancel(datasetFolder))
185
210
  return datasetFolder;
186
- datasetPath = resolve(sourcePath, String(datasetFolder).trim());
211
+ if (!datasetFolder)
212
+ return null;
213
+ datasetPath = String(datasetFolder);
187
214
  matchedDataset = matchedDataset ?? findMatchingDatasetConfig(sourcePath, datasetPath);
188
215
  }
189
216
  const taskPrompt = await prompts.text({
190
- message: "What task should this workflow prepare the dataset for?",
191
- placeholder: "Example: chart reads, board-prep questions, or latest planned launch status",
192
- validate: (value) => (value.trim().length === 0 ? "Task focus is required" : undefined),
217
+ message: "What kind of work should this workflow help with?",
218
+ placeholder: "Example: chart reads, board prep, or latest planned launch status",
219
+ validate: (value) => (value.trim().length === 0 ? "Work focus is required" : undefined),
193
220
  });
194
221
  if (prompts.isCancel(taskPrompt))
195
222
  return taskPrompt;
196
223
  if (matchedDataset) {
197
- prompts.log.info(`Shaping this workflow from dataset "${matchedDataset.name}".`);
224
+ prompts.log.info(`Shaping this workflow from setup "${matchedDataset.name}".`);
198
225
  }
199
226
  if (matchedDataset?.checks.length) {
200
- prompts.log.info(`Using ${matchedDataset.checks.length} saved truth check${matchedDataset.checks.length === 1 ? "" : "s"} from dataset "${matchedDataset.name}" as authoring context.`);
227
+ prompts.log.info(`Using ${matchedDataset.checks.length} saved question${matchedDataset.checks.length === 1 ? "" : "s"} from setup "${matchedDataset.name}" as authoring context.`);
201
228
  }
202
229
  const resolveExecutor = options.resolveExecutor ?? resolveOrConfigureLocalExecutor;
203
230
  const runDraft = options.runDraft ?? runWorkflowAuthoringDraft;
@@ -213,7 +240,7 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
213
240
  (prompts.log.error ?? prompts.log.info)(error ?? "No coding agent detected.");
214
241
  return null;
215
242
  }
216
- prompts.log.info("Preparing a workflow-authoring preview from the dataset, then drafting the package.");
243
+ prompts.log.info("Preparing a workflow-authoring preview from the source folder, then drafting the package.");
217
244
  const result = await runDraft({
218
245
  sourcePath,
219
246
  datasetPath,
@@ -232,7 +259,7 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
232
259
  }
233
260
  process.exitCode = 1;
234
261
  (prompts.log.error ?? prompts.log.info)(result.status === "no-change"
235
- ? `${result.summary} Draft mode only succeeds when it produces a task-specific package change.`
262
+ ? `${result.summary} Draft mode only succeeds when it produces a work-specific package change.`
236
263
  : result.summary);
237
264
  prompts.log.info(`Workflow shell kept at: ${result.shellPath}`);
238
265
  return null;
@@ -1,5 +1,5 @@
1
1
  import type { CommandModule } from "yargs";
2
- import type { WorkflowExecutionProfile } from "../lib/executors.js";
2
+ import type { WorkflowExecutionProfile } from "../../packages/agents/lib/executors.js";
3
3
  export declare const createCommand: CommandModule;
4
4
  export declare function createCompiledWizard(options?: {
5
5
  intro?: boolean;
@@ -1,10 +1,8 @@
1
1
  import chalk from "chalk";
2
- import { basename } from "node:path";
3
2
  import * as p from "@clack/prompts";
4
- import { detectInterf, defaultCompiledNameForSource, listCompiledDatasetsForSourceFolder, resolveSourceControlPath, } from "../lib/interf.js";
5
- import { slugify } from "../lib/util.js";
6
- import { addExecutionProfileOptions, executionProfileFromArgv, } from "../lib/execution-profile.js";
7
- import { listSourceDatasetConfigs, loadSourceFolderConfig, syncCompiledInterfConfigFromSourceDatasetConfig, upsertSourceDatasetConfig, } from "../lib/source-config.js";
3
+ import { detectInterf, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
4
+ import { addExecutionProfileOptions, executionProfileFromArgv, } from "../../packages/agents/lib/execution-profile.js";
5
+ import { listSourceDatasetConfigs, loadSourceFolderConfig, syncCompiledInterfConfigFromSourceDatasetConfig, upsertSourceDatasetConfig, } from "../../packages/project-model/source-config.js";
8
6
  import { createWorkflowWizard, } from "./create-workflow-wizard.js";
9
7
  import { findBuiltCompiledPath, } from "./compiled-flow.js";
10
8
  import { DEFAULT_COMPILED_NAME, promptSingleCompiledConfig, } from "./source-config-wizard.js";
@@ -44,7 +42,7 @@ async function maybeAssignWorkflowToDataset(sourcePath, workflowId) {
44
42
  const datasets = listSourceDatasetConfigs(config);
45
43
  if (datasets.length === 0) {
46
44
  p.log.info(`Created workflow "${workflowId}".`);
47
- p.log.info(`Next: run \`interf\`, add a dataset, then assign workflow "${workflowId}" from that dataset menu.`);
45
+ p.log.info(`Next: run \`interf\`, add a setup, then assign workflow "${workflowId}" from that menu.`);
48
46
  return;
49
47
  }
50
48
  const assignNow = await p.confirm({
@@ -53,17 +51,17 @@ async function maybeAssignWorkflowToDataset(sourcePath, workflowId) {
53
51
  });
54
52
  if (p.isCancel(assignNow) || !assignNow) {
55
53
  p.log.info(`Created workflow "${workflowId}".`);
56
- p.log.info(`Next: run \`interf\`, open a dataset, and assign workflow "${workflowId}" from that dataset menu.`);
54
+ p.log.info(`Next: run \`interf\`, open a saved setup, and assign workflow "${workflowId}" from that menu.`);
57
55
  return;
58
56
  }
59
57
  let targetDataset = datasets[0] ?? null;
60
58
  if (datasets.length > 1) {
61
59
  const selected = await p.select({
62
- message: "Which dataset should use this workflow?",
60
+ message: "Which source folder setup should use this workflow?",
63
61
  options: datasets.map((dataset) => ({
64
62
  value: dataset.name,
65
63
  label: dataset.name,
66
- hint: `${dataset.path} · ${dataset.about ?? `${dataset.checks.length} saved truth check${dataset.checks.length === 1 ? "" : "s"}`}`,
64
+ hint: `${dataset.path} · ${dataset.about ?? `${dataset.checks.length} question${dataset.checks.length === 1 ? "" : "s"}`}`,
67
65
  })),
68
66
  });
69
67
  if (p.isCancel(selected))
@@ -85,7 +83,7 @@ async function maybeAssignWorkflowToDataset(sourcePath, workflowId) {
85
83
  }
86
84
  p.log.info(`Assigned workflow "${workflowId}" to dataset "${targetDataset.name}".`);
87
85
  if (builtCompiledPath) {
88
- p.log.info("The active local copy for that built dataset lives under `.interf/workflow/`.");
86
+ p.log.info("The active local workflow copy for that portable context lives under `.interf/workflow/`.");
89
87
  }
90
88
  p.log.info("Next: run `interf compile`, then `interf test`.");
91
89
  }
@@ -134,19 +132,18 @@ export async function createCompiledWizard(options = {}) {
134
132
  const detected = detectInterf(cwd);
135
133
  if (detected) {
136
134
  process.exitCode = 1;
137
- p.log.error("You are already inside a compiled dataset.");
135
+ p.log.error("You are already inside portable context.");
138
136
  return;
139
137
  }
140
- const existing = listCompiledDatasetsForSourceFolder(cwd);
141
- if (existing.length > 0) {
142
- p.log.info(`This project already has ${existing.length} compiled dataset${existing.length === 1 ? "" : "s"}. Add another only when you need a separate folder, truth checks, or focus.`);
138
+ const savedDatasets = listSourceDatasetConfigs(loadSourceFolderConfig(cwd));
139
+ if (savedDatasets.length > 0) {
140
+ p.log.info(`This project already has ${savedDatasets.length} saved setup${savedDatasets.length === 1 ? "" : "s"} in interf.json. Add another only when you need a separate folder, focus, or question set.`);
143
141
  }
144
- p.log.info("Interf works one dataset at a time. Start with the task, truth checks, and a baseline, then build a compiled dataset only when you need it.");
142
+ p.log.info("Interf works one source-folder setup at a time. Start with the work, the relevant files, and a few questions, then build portable context when you want to prepare context your agents can work from.");
145
143
  const existingConfig = loadSourceFolderConfig(cwd);
146
- const suggestedName = slugify(defaultCompiledNameForSource(cwd) || basename(cwd)) || DEFAULT_COMPILED_NAME;
147
144
  const draft = await promptSingleCompiledConfig({
148
145
  projectPath: cwd,
149
- initial: { name: suggestedName },
146
+ initial: { name: DEFAULT_COMPILED_NAME },
150
147
  introStyle: existingConfig ? "additional" : "first",
151
148
  });
152
149
  if (!draft)
@@ -158,7 +155,7 @@ export async function createCompiledWizard(options = {}) {
158
155
  const existingNames = new Set(listSourceDatasetConfigs(existingConfig).map((dataset) => dataset.name));
159
156
  if (existingNames.has(configToSave.name)) {
160
157
  process.exitCode = 1;
161
- p.log.error(`Dataset "${configToSave.name}" already exists. Use \`interf\` or \`interf init\` to edit it.`);
158
+ p.log.error(`Setup "${configToSave.name}" already exists. Use \`interf\` or \`interf init\` to edit it.`);
162
159
  return;
163
160
  }
164
161
  upsertSourceDatasetConfig(cwd, configToSave);
@@ -1,4 +1,4 @@
1
- import type { SourceDatasetConfig } from "../lib/schema.js";
1
+ import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
2
2
  export declare function resolveConfiguredDatasetSelection(options: {
3
3
  sourcePath: string;
4
4
  requestedDatasetName?: string | null;
@@ -1,11 +1,11 @@
1
1
  import chalk from "chalk";
2
- import { loadUserConfig } from "../lib/user-config.js";
2
+ import { userConfig } from "../../packages/agents/index.js";
3
3
  import { runInitCommand } from "./init.js";
4
4
  function printStaticLanding() {
5
- const config = loadUserConfig();
5
+ const config = userConfig.loadUserConfig();
6
6
  console.log();
7
7
  console.log(chalk.bold(" Interf"));
8
- console.log(chalk.dim(" Define the task, save truth checks, measure raw files first, then compile only if they are not good enough."));
8
+ console.log(chalk.dim(" Prepare context for your agents from the files you already have, then run `interf test` and use self-improving loops until more questions pass."));
9
9
  console.log();
10
10
  if (config) {
11
11
  console.log(chalk.dim(` Agent: ${config.agent}`));