@interf/compiler 0.6.1 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/README.md +106 -80
  2. package/builtin-workflows/interf/README.md +5 -5
  3. package/builtin-workflows/interf/compile/stages/shape/SKILL.md +4 -4
  4. package/builtin-workflows/interf/improve/SKILL.md +2 -2
  5. package/builtin-workflows/interf/use/query/SKILL.md +1 -1
  6. package/builtin-workflows/interf/workflow.json +6 -6
  7. package/builtin-workflows/interf/workflow.schema.json +1 -1
  8. package/dist/bin.js +2 -28
  9. package/dist/{commands → cli/commands}/check-draft.d.ts +2 -2
  10. package/dist/{commands → cli/commands}/check-draft.js +16 -16
  11. package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
  12. package/dist/{commands → cli/commands}/compile-controller.js +37 -35
  13. package/dist/{commands → cli/commands}/compile.d.ts +2 -2
  14. package/dist/{commands → cli/commands}/compile.js +15 -11
  15. package/dist/{commands → cli/commands}/compiled-flow.d.ts +3 -4
  16. package/dist/{commands → cli/commands}/compiled-flow.js +9 -14
  17. package/dist/{commands → cli/commands}/create-workflow-wizard.d.ts +3 -3
  18. package/dist/{commands → cli/commands}/create-workflow-wizard.js +64 -37
  19. package/dist/{commands → cli/commands}/create.d.ts +1 -1
  20. package/dist/{commands → cli/commands}/create.js +15 -18
  21. package/dist/{commands → cli/commands}/dataset-selection.d.ts +1 -1
  22. package/dist/{commands → cli/commands}/default.js +3 -3
  23. package/dist/{commands → cli/commands}/doctor.js +5 -6
  24. package/dist/{commands → cli/commands}/executor-flow.d.ts +1 -1
  25. package/dist/{commands → cli/commands}/executor-flow.js +13 -16
  26. package/dist/{commands → cli/commands}/init.d.ts +4 -1
  27. package/dist/{commands → cli/commands}/init.js +162 -77
  28. package/dist/{commands → cli/commands}/list.js +6 -6
  29. package/dist/{commands → cli/commands}/reset.js +4 -4
  30. package/dist/{commands → cli/commands}/source-config-wizard.d.ts +9 -4
  31. package/dist/{commands → cli/commands}/source-config-wizard.js +168 -94
  32. package/dist/{commands → cli/commands}/status.js +20 -11
  33. package/dist/{commands → cli/commands}/test-flow.d.ts +13 -4
  34. package/dist/{commands → cli/commands}/test-flow.js +52 -48
  35. package/dist/cli/commands/test.d.ts +14 -0
  36. package/dist/{commands → cli/commands}/test.js +40 -24
  37. package/dist/{commands → cli/commands}/verify.js +4 -4
  38. package/dist/cli/index.d.ts +21 -0
  39. package/dist/cli/index.js +33 -0
  40. package/dist/index.d.ts +22 -11
  41. package/dist/index.js +15 -6
  42. package/dist/lib/agent-args.d.ts +1 -4
  43. package/dist/lib/agent-args.js +1 -52
  44. package/dist/lib/agent-constants.d.ts +1 -5
  45. package/dist/lib/agent-constants.js +1 -28
  46. package/dist/lib/agent-detection.d.ts +1 -7
  47. package/dist/lib/agent-detection.js +1 -65
  48. package/dist/lib/agent-execution.d.ts +1 -2
  49. package/dist/lib/agent-execution.js +1 -243
  50. package/dist/lib/agent-logs.d.ts +1 -2
  51. package/dist/lib/agent-logs.js +1 -17
  52. package/dist/lib/agent-preflight.d.ts +1 -7
  53. package/dist/lib/agent-preflight.js +1 -77
  54. package/dist/lib/agent-render.d.ts +1 -8
  55. package/dist/lib/agent-render.js +1 -218
  56. package/dist/lib/agent-shells.d.ts +1 -69
  57. package/dist/lib/agent-shells.js +1 -1021
  58. package/dist/lib/agent-status.d.ts +1 -3
  59. package/dist/lib/agent-status.js +1 -58
  60. package/dist/lib/agent-types.d.ts +1 -30
  61. package/dist/lib/agent-types.js +1 -1
  62. package/dist/lib/agents.d.ts +1 -6
  63. package/dist/lib/agents.js +1 -5
  64. package/dist/lib/builtin-compiled-workflow.d.ts +1 -38
  65. package/dist/lib/builtin-compiled-workflow.js +1 -94
  66. package/dist/lib/chart-guidance.d.ts +1 -1
  67. package/dist/lib/chart-guidance.js +1 -8
  68. package/dist/lib/compiled-compile.d.ts +1 -48
  69. package/dist/lib/compiled-compile.js +1 -255
  70. package/dist/lib/compiled-paths.d.ts +1 -40
  71. package/dist/lib/compiled-paths.js +3 -106
  72. package/dist/lib/compiled-raw.d.ts +1 -49
  73. package/dist/lib/compiled-raw.js +3 -102
  74. package/dist/lib/compiled-reset.d.ts +1 -2
  75. package/dist/lib/compiled-reset.js +3 -72
  76. package/dist/lib/compiled-schema.d.ts +1 -31
  77. package/dist/lib/compiled-schema.js +1 -141
  78. package/dist/lib/discovery.d.ts +1 -7
  79. package/dist/lib/discovery.js +1 -84
  80. package/dist/lib/execution-profile.d.ts +1 -17
  81. package/dist/lib/execution-profile.js +1 -84
  82. package/dist/lib/executors.d.ts +1 -32
  83. package/dist/lib/executors.js +1 -43
  84. package/dist/lib/filesystem.d.ts +1 -2
  85. package/dist/lib/filesystem.js +1 -55
  86. package/dist/lib/interf-bootstrap.d.ts +1 -3
  87. package/dist/lib/interf-bootstrap.js +3 -18
  88. package/dist/lib/interf-detect.d.ts +1 -33
  89. package/dist/lib/interf-detect.js +3 -176
  90. package/dist/lib/interf-scaffold.d.ts +1 -2
  91. package/dist/lib/interf-scaffold.js +3 -114
  92. package/dist/lib/interf-workflow-package.d.ts +1 -25
  93. package/dist/lib/interf-workflow-package.js +1 -342
  94. package/dist/lib/interf.d.ts +1 -5
  95. package/dist/lib/interf.js +3 -4
  96. package/dist/lib/local-workflows.d.ts +1 -54
  97. package/dist/lib/local-workflows.js +1 -422
  98. package/dist/lib/logger.d.ts +1 -3
  99. package/dist/lib/logger.js +1 -10
  100. package/dist/lib/package-root.d.ts +1 -0
  101. package/dist/lib/package-root.js +1 -0
  102. package/dist/lib/parse.d.ts +1 -8
  103. package/dist/lib/parse.js +1 -145
  104. package/dist/lib/project-paths.d.ts +1 -11
  105. package/dist/lib/project-paths.js +3 -32
  106. package/dist/lib/runtime-acceptance.d.ts +1 -9
  107. package/dist/lib/runtime-acceptance.js +1 -269
  108. package/dist/lib/runtime-contracts.d.ts +1 -2
  109. package/dist/lib/runtime-contracts.js +1 -48
  110. package/dist/lib/runtime-inventory.d.ts +1 -7
  111. package/dist/lib/runtime-inventory.js +1 -29
  112. package/dist/lib/runtime-paths.d.ts +1 -8
  113. package/dist/lib/runtime-paths.js +1 -26
  114. package/dist/lib/runtime-prompt.d.ts +1 -2
  115. package/dist/lib/runtime-prompt.js +1 -48
  116. package/dist/lib/runtime-reconcile.d.ts +1 -2
  117. package/dist/lib/runtime-reconcile.js +1 -193
  118. package/dist/lib/runtime-runs.d.ts +1 -11
  119. package/dist/lib/runtime-runs.js +1 -262
  120. package/dist/lib/runtime-types.d.ts +1 -43
  121. package/dist/lib/runtime-types.js +1 -1
  122. package/dist/lib/runtime.d.ts +1 -6
  123. package/dist/lib/runtime.js +1 -5
  124. package/dist/lib/schema.d.ts +4 -1073
  125. package/dist/lib/schema.js +6 -542
  126. package/dist/lib/source-config.d.ts +1 -39
  127. package/dist/lib/source-config.js +3 -293
  128. package/dist/lib/state-artifacts.d.ts +1 -8
  129. package/dist/lib/state-artifacts.js +1 -13
  130. package/dist/lib/state-health.d.ts +1 -4
  131. package/dist/lib/state-health.js +1 -132
  132. package/dist/lib/state-io.d.ts +1 -10
  133. package/dist/lib/state-io.js +1 -76
  134. package/dist/lib/state-paths.d.ts +1 -4
  135. package/dist/lib/state-paths.js +1 -13
  136. package/dist/lib/state-view.d.ts +1 -4
  137. package/dist/lib/state-view.js +1 -103
  138. package/dist/lib/state.d.ts +1 -7
  139. package/dist/lib/state.js +1 -12
  140. package/dist/lib/test-execution.d.ts +1 -14
  141. package/dist/lib/test-execution.js +3 -525
  142. package/dist/lib/test-matrices.d.ts +1 -90
  143. package/dist/lib/test-matrices.js +3 -96
  144. package/dist/lib/test-paths.d.ts +1 -12
  145. package/dist/lib/test-paths.js +3 -59
  146. package/dist/lib/test-profile-presets.d.ts +1 -57
  147. package/dist/lib/test-profile-presets.js +3 -50
  148. package/dist/lib/test-sandbox.d.ts +1 -11
  149. package/dist/lib/test-sandbox.js +3 -105
  150. package/dist/lib/test-specs.d.ts +1 -7
  151. package/dist/lib/test-specs.js +3 -114
  152. package/dist/lib/test-targets.d.ts +1 -5
  153. package/dist/lib/test-targets.js +3 -38
  154. package/dist/lib/test-types.d.ts +1 -17
  155. package/dist/lib/test-types.js +3 -1
  156. package/dist/lib/test.d.ts +1 -4
  157. package/dist/lib/test.js +3 -3
  158. package/dist/lib/util.d.ts +1 -4
  159. package/dist/lib/util.js +1 -25
  160. package/dist/lib/validate-compiled.d.ts +1 -27
  161. package/dist/lib/validate-compiled.js +1 -241
  162. package/dist/lib/validate-helpers.d.ts +1 -12
  163. package/dist/lib/validate-helpers.js +1 -41
  164. package/dist/lib/validate.d.ts +1 -21
  165. package/dist/lib/validate.js +1 -249
  166. package/dist/lib/workflow-authoring.d.ts +1 -26
  167. package/dist/lib/workflow-authoring.js +1 -119
  168. package/dist/lib/workflow-definitions.d.ts +1 -78
  169. package/dist/lib/workflow-definitions.js +1 -203
  170. package/dist/lib/workflow-edit-session.d.ts +1 -16
  171. package/dist/lib/workflow-edit-session.js +1 -57
  172. package/dist/lib/workflow-edit-utils.d.ts +1 -10
  173. package/dist/lib/workflow-edit-utils.js +1 -39
  174. package/dist/lib/workflow-helpers.d.ts +1 -38
  175. package/dist/lib/workflow-helpers.js +1 -167
  176. package/dist/lib/workflow-improvement.d.ts +1 -22
  177. package/dist/lib/workflow-improvement.js +1 -209
  178. package/dist/lib/workflow-primitives.d.ts +1 -2
  179. package/dist/lib/workflow-primitives.js +1 -5
  180. package/dist/lib/workflow-review-paths.d.ts +1 -10
  181. package/dist/lib/workflow-review-paths.js +1 -27
  182. package/dist/lib/workflow-stage-policy.d.ts +1 -5
  183. package/dist/lib/workflow-stage-policy.js +1 -31
  184. package/dist/lib/workflow-stage-runner.d.ts +1 -41
  185. package/dist/lib/workflow-stage-runner.js +1 -109
  186. package/dist/lib/workflows.d.ts +1 -15
  187. package/dist/lib/workflows.js +1 -31
  188. package/dist/packages/agents/index.d.ts +18 -0
  189. package/dist/packages/agents/index.js +16 -0
  190. package/dist/packages/agents/lib/agents.d.ts +6 -0
  191. package/dist/packages/agents/lib/agents.js +5 -0
  192. package/dist/packages/agents/lib/args.d.ts +4 -0
  193. package/dist/packages/agents/lib/args.js +52 -0
  194. package/dist/packages/agents/lib/chart-guidance.d.ts +1 -0
  195. package/dist/packages/agents/lib/chart-guidance.js +8 -0
  196. package/dist/packages/agents/lib/compiled-bootstrap.d.ts +3 -0
  197. package/dist/packages/agents/lib/compiled-bootstrap.js +18 -0
  198. package/dist/packages/agents/lib/constants.d.ts +5 -0
  199. package/dist/packages/agents/lib/constants.js +28 -0
  200. package/dist/packages/agents/lib/detection.d.ts +7 -0
  201. package/dist/packages/agents/lib/detection.js +65 -0
  202. package/dist/packages/agents/lib/execution-profile.d.ts +17 -0
  203. package/dist/packages/agents/lib/execution-profile.js +84 -0
  204. package/dist/packages/agents/lib/execution.d.ts +2 -0
  205. package/dist/packages/agents/lib/execution.js +243 -0
  206. package/dist/packages/agents/lib/executors.d.ts +32 -0
  207. package/dist/packages/agents/lib/executors.js +45 -0
  208. package/dist/packages/agents/lib/logs.d.ts +2 -0
  209. package/dist/packages/agents/lib/logs.js +17 -0
  210. package/dist/packages/agents/lib/preflight.d.ts +7 -0
  211. package/dist/packages/agents/lib/preflight.js +77 -0
  212. package/dist/packages/agents/lib/render.d.ts +8 -0
  213. package/dist/packages/agents/lib/render.js +218 -0
  214. package/dist/packages/agents/lib/schema.d.ts +8 -0
  215. package/dist/packages/agents/lib/schema.js +7 -0
  216. package/dist/packages/agents/lib/shells.d.ts +71 -0
  217. package/dist/packages/agents/lib/shells.js +1023 -0
  218. package/dist/packages/agents/lib/status.d.ts +3 -0
  219. package/dist/packages/agents/lib/status.js +58 -0
  220. package/dist/packages/agents/lib/types.d.ts +30 -0
  221. package/dist/packages/agents/lib/types.js +1 -0
  222. package/dist/{lib → packages/agents/lib}/user-config.d.ts +1 -0
  223. package/dist/{lib → packages/agents/lib}/user-config.js +3 -2
  224. package/dist/packages/compiler/compiled-compile.d.ts +4 -0
  225. package/dist/packages/compiler/compiled-compile.js +4 -0
  226. package/dist/packages/compiler/compiled-paths.d.ts +40 -0
  227. package/dist/packages/compiler/compiled-paths.js +106 -0
  228. package/dist/packages/compiler/compiled-pipeline.d.ts +39 -0
  229. package/dist/packages/compiler/compiled-pipeline.js +134 -0
  230. package/dist/packages/compiler/compiled-schema.d.ts +31 -0
  231. package/dist/packages/compiler/compiled-schema.js +141 -0
  232. package/dist/packages/compiler/compiled-stage-plan.d.ts +15 -0
  233. package/dist/packages/compiler/compiled-stage-plan.js +79 -0
  234. package/dist/packages/compiler/compiled-stage-runner.d.ts +10 -0
  235. package/dist/packages/compiler/compiled-stage-runner.js +46 -0
  236. package/dist/packages/compiler/compiled-target.d.ts +11 -0
  237. package/dist/packages/compiler/compiled-target.js +16 -0
  238. package/dist/packages/compiler/discovery.d.ts +7 -0
  239. package/dist/packages/compiler/discovery.js +80 -0
  240. package/dist/packages/compiler/index.d.ts +24 -0
  241. package/dist/packages/compiler/index.js +23 -0
  242. package/dist/packages/compiler/lib/schema.d.ts +684 -0
  243. package/dist/packages/compiler/lib/schema.js +363 -0
  244. package/dist/packages/compiler/raw-snapshot.d.ts +49 -0
  245. package/dist/packages/compiler/raw-snapshot.js +102 -0
  246. package/dist/packages/compiler/reset.d.ts +2 -0
  247. package/dist/packages/compiler/reset.js +72 -0
  248. package/dist/packages/compiler/runtime-acceptance.d.ts +9 -0
  249. package/dist/packages/compiler/runtime-acceptance.js +269 -0
  250. package/dist/packages/compiler/runtime-contracts.d.ts +2 -0
  251. package/dist/packages/compiler/runtime-contracts.js +48 -0
  252. package/dist/packages/compiler/runtime-inventory.d.ts +7 -0
  253. package/dist/packages/compiler/runtime-inventory.js +29 -0
  254. package/dist/packages/compiler/runtime-paths.d.ts +8 -0
  255. package/dist/packages/compiler/runtime-paths.js +26 -0
  256. package/dist/packages/compiler/runtime-prompt.d.ts +2 -0
  257. package/dist/packages/compiler/runtime-prompt.js +48 -0
  258. package/dist/packages/compiler/runtime-reconcile.d.ts +2 -0
  259. package/dist/packages/compiler/runtime-reconcile.js +193 -0
  260. package/dist/packages/compiler/runtime-runs.d.ts +11 -0
  261. package/dist/packages/compiler/runtime-runs.js +262 -0
  262. package/dist/packages/compiler/runtime-types.d.ts +43 -0
  263. package/dist/packages/compiler/runtime-types.js +1 -0
  264. package/dist/packages/compiler/runtime.d.ts +6 -0
  265. package/dist/packages/compiler/runtime.js +5 -0
  266. package/dist/packages/compiler/state-artifacts.d.ts +8 -0
  267. package/dist/packages/compiler/state-artifacts.js +13 -0
  268. package/dist/packages/compiler/state-health.d.ts +4 -0
  269. package/dist/packages/compiler/state-health.js +132 -0
  270. package/dist/packages/compiler/state-io.d.ts +10 -0
  271. package/dist/packages/compiler/state-io.js +76 -0
  272. package/dist/packages/compiler/state-paths.d.ts +4 -0
  273. package/dist/packages/compiler/state-paths.js +13 -0
  274. package/dist/packages/compiler/state-view.d.ts +4 -0
  275. package/dist/packages/compiler/state-view.js +103 -0
  276. package/dist/packages/compiler/state.d.ts +7 -0
  277. package/dist/packages/compiler/state.js +12 -0
  278. package/dist/packages/compiler/validate-compiled.d.ts +27 -0
  279. package/dist/packages/compiler/validate-compiled.js +241 -0
  280. package/dist/packages/compiler/validate-helpers.d.ts +12 -0
  281. package/dist/packages/compiler/validate-helpers.js +41 -0
  282. package/dist/packages/compiler/validate.d.ts +21 -0
  283. package/dist/packages/compiler/validate.js +249 -0
  284. package/dist/packages/compiler/workflow-primitives.d.ts +2 -0
  285. package/dist/packages/compiler/workflow-primitives.js +5 -0
  286. package/dist/packages/compiler/workflows.d.ts +15 -0
  287. package/dist/packages/compiler/workflows.js +31 -0
  288. package/dist/packages/project-model/compiled-paths.d.ts +1 -0
  289. package/dist/packages/project-model/compiled-paths.js +1 -0
  290. package/dist/packages/project-model/compiled-raw.d.ts +1 -0
  291. package/dist/packages/project-model/compiled-raw.js +1 -0
  292. package/dist/packages/project-model/compiled-reset.d.ts +1 -0
  293. package/dist/packages/project-model/compiled-reset.js +1 -0
  294. package/dist/packages/project-model/index.d.ts +11 -0
  295. package/dist/packages/project-model/index.js +10 -0
  296. package/dist/packages/project-model/interf-bootstrap.d.ts +1 -0
  297. package/dist/packages/project-model/interf-bootstrap.js +1 -0
  298. package/dist/packages/project-model/interf-detect.d.ts +33 -0
  299. package/dist/packages/project-model/interf-detect.js +176 -0
  300. package/dist/packages/project-model/interf-scaffold.d.ts +2 -0
  301. package/dist/packages/project-model/interf-scaffold.js +124 -0
  302. package/dist/packages/project-model/interf.d.ts +5 -0
  303. package/dist/packages/project-model/interf.js +4 -0
  304. package/dist/packages/project-model/lib/schema.d.ts +125 -0
  305. package/dist/packages/project-model/lib/schema.js +62 -0
  306. package/dist/packages/project-model/project-paths.d.ts +11 -0
  307. package/dist/packages/project-model/project-paths.js +32 -0
  308. package/dist/packages/project-model/source-config.d.ts +38 -0
  309. package/dist/packages/project-model/source-config.js +298 -0
  310. package/dist/packages/shared/file-types.d.ts +1 -0
  311. package/dist/packages/shared/file-types.js +4 -0
  312. package/dist/packages/shared/filesystem.d.ts +2 -0
  313. package/dist/packages/shared/filesystem.js +55 -0
  314. package/dist/packages/shared/index.d.ts +7 -0
  315. package/dist/packages/shared/index.js +7 -0
  316. package/dist/packages/shared/logger.d.ts +3 -0
  317. package/dist/packages/shared/logger.js +10 -0
  318. package/dist/packages/shared/naming.d.ts +1 -0
  319. package/dist/packages/shared/naming.js +8 -0
  320. package/dist/packages/shared/parse.d.ts +8 -0
  321. package/dist/packages/shared/parse.js +145 -0
  322. package/dist/packages/shared/path-guards.d.ts +2 -0
  323. package/dist/packages/shared/path-guards.js +14 -0
  324. package/dist/packages/shared/util.d.ts +3 -0
  325. package/dist/packages/shared/util.js +3 -0
  326. package/dist/packages/testing/index.d.ts +13 -0
  327. package/dist/packages/testing/index.js +10 -0
  328. package/dist/packages/testing/lib/schema.d.ts +261 -0
  329. package/dist/packages/testing/lib/schema.js +119 -0
  330. package/dist/packages/testing/test-execution.d.ts +14 -0
  331. package/dist/packages/testing/test-execution.js +525 -0
  332. package/dist/packages/testing/test-matrices.d.ts +90 -0
  333. package/dist/packages/testing/test-matrices.js +96 -0
  334. package/dist/packages/testing/test-paths.d.ts +12 -0
  335. package/dist/packages/testing/test-paths.js +59 -0
  336. package/dist/packages/testing/test-profile-presets.d.ts +57 -0
  337. package/dist/packages/testing/test-profile-presets.js +50 -0
  338. package/dist/packages/testing/test-sandbox.d.ts +11 -0
  339. package/dist/packages/testing/test-sandbox.js +105 -0
  340. package/dist/packages/testing/test-specs.d.ts +7 -0
  341. package/dist/packages/testing/test-specs.js +114 -0
  342. package/dist/packages/testing/test-targets.d.ts +5 -0
  343. package/dist/packages/testing/test-targets.js +38 -0
  344. package/dist/packages/testing/test-types.d.ts +16 -0
  345. package/dist/packages/testing/test-types.js +1 -0
  346. package/dist/packages/testing/test.d.ts +4 -0
  347. package/dist/packages/testing/test.js +3 -0
  348. package/dist/packages/workflow-authoring/index.d.ts +4 -0
  349. package/dist/packages/workflow-authoring/index.js +4 -0
  350. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.d.ts +10 -0
  351. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.js +39 -0
  352. package/dist/packages/workflow-authoring/workflow-authoring.d.ts +26 -0
  353. package/dist/packages/workflow-authoring/workflow-authoring.js +121 -0
  354. package/dist/packages/workflow-authoring/workflow-edit-session.d.ts +16 -0
  355. package/dist/packages/workflow-authoring/workflow-edit-session.js +57 -0
  356. package/dist/packages/workflow-authoring/workflow-improvement.d.ts +23 -0
  357. package/dist/packages/workflow-authoring/workflow-improvement.js +210 -0
  358. package/dist/packages/workflow-package/builtin-compiled-workflow.d.ts +38 -0
  359. package/dist/packages/workflow-package/builtin-compiled-workflow.js +94 -0
  360. package/dist/packages/workflow-package/context-interface.d.ts +96 -0
  361. package/dist/packages/workflow-package/context-interface.js +146 -0
  362. package/dist/packages/workflow-package/index.d.ts +11 -0
  363. package/dist/packages/workflow-package/index.js +11 -0
  364. package/dist/packages/workflow-package/interf-workflow-package.d.ts +25 -0
  365. package/dist/packages/workflow-package/interf-workflow-package.js +389 -0
  366. package/dist/{lib/config.d.ts → packages/workflow-package/lib/package-root.d.ts} +0 -1
  367. package/dist/packages/workflow-package/lib/package-root.js +6 -0
  368. package/dist/packages/workflow-package/local-workflows.d.ts +57 -0
  369. package/dist/packages/workflow-package/local-workflows.js +424 -0
  370. package/dist/packages/workflow-package/workflow-definitions.d.ts +82 -0
  371. package/dist/packages/workflow-package/workflow-definitions.js +210 -0
  372. package/dist/packages/workflow-package/workflow-helpers.d.ts +38 -0
  373. package/dist/packages/workflow-package/workflow-helpers.js +167 -0
  374. package/dist/packages/workflow-package/workflow-review-paths.d.ts +10 -0
  375. package/dist/packages/workflow-package/workflow-review-paths.js +27 -0
  376. package/dist/packages/workflow-package/workflow-stage-policy.d.ts +5 -0
  377. package/dist/packages/workflow-package/workflow-stage-policy.js +31 -0
  378. package/dist/packages/workflow-package/workflow-stage-runner.d.ts +41 -0
  379. package/dist/packages/workflow-package/workflow-stage-runner.js +109 -0
  380. package/package.json +43 -19
  381. package/dist/commands/test.d.ts +0 -3
  382. package/dist/lib/compiled-home.d.ts +0 -5
  383. package/dist/lib/compiled-home.js +0 -32
  384. package/dist/lib/config.js +0 -9
  385. /package/dist/{commands → cli/commands}/dataset-selection.js +0 -0
  386. /package/dist/{commands → cli/commands}/default.d.ts +0 -0
  387. /package/dist/{commands → cli/commands}/doctor.d.ts +0 -0
  388. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  389. /package/dist/{commands → cli/commands}/reset.d.ts +0 -0
  390. /package/dist/{commands → cli/commands}/status.d.ts +0 -0
  391. /package/dist/{commands → cli/commands}/verify.d.ts +0 -0
@@ -1,12 +1,12 @@
1
1
  import chalk from "chalk";
2
2
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
3
3
  import { dirname, join } from "node:path";
4
- import { createRawTestTarget, createCompiledTestTarget, runTargetTestsAuto, saveTargetTestRun, } from "../lib/test.js";
5
- import { buildTestSpecFromSourceFolderConfig, buildTestSpecFromCompiledDatasetConfig, resolveSourceDatasetPath, } from "../lib/source-config.js";
6
- import { datasetLatestTestStatePath, datasetLatestTestSummaryPath, normalizeDatasetTestRunId, datasetTestRunPath, datasetTestRunsRoot, datasetTestsRoot, } from "../lib/project-paths.js";
7
- import { testRootForCompiled } from "../lib/compiled-paths.js";
8
- import { readJsonFileWithSchema } from "../lib/parse.js";
9
- import { TestRunComparisonSchema } from "../lib/schema.js";
4
+ import { createRawTestTarget, createCompiledTestTarget, runTargetTestsAuto, saveTargetTestRun, } from "../../packages/testing/test.js";
5
+ import { buildTestSpecFromSourceFolderConfig, buildTestSpecFromCompiledDatasetConfig, fingerprintTruthChecks, resolveSourceDatasetPath, } from "../../packages/project-model/source-config.js";
6
+ import { datasetLatestTestStatePath, datasetLatestTestSummaryPath, normalizeDatasetTestRunId, datasetTestRunPath, datasetTestRunsRoot, datasetTestsRoot, } from "../../packages/project-model/project-paths.js";
7
+ import { testRootForCompiled } from "../../packages/project-model/compiled-paths.js";
8
+ import { readJsonFileWithSchema } from "../../packages/shared/parse.js";
9
+ import { TestRunComparisonSchema } from "../../packages/testing/lib/schema.js";
10
10
  import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
11
11
  import { findBuiltCompiledPath } from "./compiled-flow.js";
12
12
  export function questionPassRate(outcome) {
@@ -45,58 +45,69 @@ function loadLatestComparison(projectPath, datasetName) {
45
45
  export function readSavedTestComparison(projectPath, datasetName) {
46
46
  return loadLatestComparison(projectPath, datasetName);
47
47
  }
48
+ export function readCurrentSavedTestComparison(options) {
49
+ const latestComparison = readSavedTestComparison(options.projectPath, options.datasetName);
50
+ if (!latestComparison) {
51
+ return { comparison: null, stale: false };
52
+ }
53
+ const currentFingerprint = fingerprintTruthChecks(options.checks);
54
+ if (!latestComparison.checks_fingerprint || latestComparison.checks_fingerprint !== currentFingerprint) {
55
+ return { comparison: null, stale: true };
56
+ }
57
+ return { comparison: latestComparison, stale: false };
58
+ }
48
59
  function renderLatestSummaryMarkdown(payload) {
49
60
  const lines = [
50
- "# Latest Test Result",
61
+ "# Latest Test Results",
51
62
  "",
52
- "| Target | Truth checks |",
63
+ "| Target | Questions |",
53
64
  "| --- | --- |",
54
65
  ];
55
66
  if (payload.raw) {
56
- lines.push(`| Files as-is | \`${payload.raw.passed_cases}/${payload.raw.total_cases}\` |`);
67
+ lines.push(`| Source files | \`${payload.raw.passed_cases}/${payload.raw.total_cases}\` |`);
57
68
  }
58
69
  if (payload.compiled) {
59
- lines.push(`| Compiled dataset | \`${payload.compiled.passed_cases}/${payload.compiled.total_cases}\` |`);
70
+ lines.push(`| Portable context | \`${payload.compiled.passed_cases}/${payload.compiled.total_cases}\` |`);
60
71
  }
61
72
  lines.push("");
62
73
  if (payload.summary.raw_pass_rate != null && payload.summary.compiled_pass_rate != null) {
63
74
  const direction = (payload.summary.pass_rate_delta ?? 0) >= 0 ? "improved" : "decreased";
64
- lines.push(`Truth-check pass rate ${direction} from ${payload.summary.raw_pass_rate}% to ${payload.summary.compiled_pass_rate}%.`, "");
75
+ lines.push(`Question pass rate ${direction} from ${payload.summary.raw_pass_rate}% to ${payload.summary.compiled_pass_rate}%.`, "");
65
76
  }
66
77
  if (payload.raw) {
67
- lines.push(`- Latest files-as-is run: ${payload.raw.run_path}`);
78
+ lines.push(`- Latest source-files run: ${payload.raw.run_path}`);
68
79
  }
69
80
  if (payload.compiled) {
70
- lines.push(`- Latest compiled run: ${payload.compiled.run_path}`);
81
+ lines.push(`- Latest portable-context run: ${payload.compiled.run_path}`);
71
82
  }
72
83
  return `${lines.join("\n")}\n`;
73
84
  }
74
85
  export function printSavedTestComparisonState(payload, comparisonRunPath) {
75
86
  console.log();
76
- console.log(chalk.bold(" Latest saved test"));
87
+ console.log(chalk.bold(" Latest saved questions"));
77
88
  console.log();
78
- console.log(" | Target | Truth checks |");
89
+ console.log(" | Target | Questions |");
79
90
  console.log(" | --- | --- |");
80
91
  if (payload.raw) {
81
- console.log(` | Files as-is | \`${payload.raw.passed_cases}/${payload.raw.total_cases}\` |`);
92
+ console.log(` | Source files | \`${payload.raw.passed_cases}/${payload.raw.total_cases}\` |`);
82
93
  }
83
94
  if (payload.compiled) {
84
- console.log(` | Compiled dataset | \`${payload.compiled.passed_cases}/${payload.compiled.total_cases}\` |`);
95
+ console.log(` | Portable context | \`${payload.compiled.passed_cases}/${payload.compiled.total_cases}\` |`);
85
96
  }
86
97
  if (!payload.raw || !payload.compiled) {
87
98
  console.log();
88
99
  if (!payload.raw) {
89
- console.log(chalk.dim(" No saved files-as-is baseline yet."));
100
+ console.log(chalk.dim(" No saved source-files baseline yet."));
90
101
  }
91
102
  if (!payload.compiled) {
92
- console.log(chalk.dim(" No saved compiled-dataset run yet."));
103
+ console.log(chalk.dim(" No saved portable-context run yet."));
93
104
  }
94
105
  }
95
106
  if (payload.summary.raw_pass_rate != null && payload.summary.compiled_pass_rate != null) {
96
107
  const direction = (payload.summary.pass_rate_delta ?? 0) >= 0 ? "improved" : "decreased";
97
108
  const color = (payload.summary.pass_rate_delta ?? 0) >= 0 ? chalk.green : chalk.red;
98
109
  console.log();
99
- console.log(color(` Truth-check pass rate ${direction} from ${payload.summary.raw_pass_rate}% to ${payload.summary.compiled_pass_rate}%.`));
110
+ console.log(color(` Question pass rate ${direction} from ${payload.summary.raw_pass_rate}% to ${payload.summary.compiled_pass_rate}%.`));
100
111
  }
101
112
  if (comparisonRunPath) {
102
113
  console.log();
@@ -125,8 +136,8 @@ export function printAgentTestMatrix(rows) {
125
136
  const includeDelta = includeRaw && includeCompiled;
126
137
  const headers = [
127
138
  "Agent",
128
- ...(includeRaw ? ["Files as-is"] : []),
129
- ...(includeCompiled ? ["Compiled dataset"] : []),
139
+ ...(includeRaw ? ["Source files"] : []),
140
+ ...(includeCompiled ? ["Context folder"] : []),
130
141
  ...(includeDelta ? ["Delta"] : []),
131
142
  ];
132
143
  const body = rows.map((row) => [
@@ -150,8 +161,8 @@ export function printAgentTestFailures(rows) {
150
161
  for (const row of rows) {
151
162
  const failures = [];
152
163
  for (const [label, outcome] of [
153
- ["Files as-is", row.rawOutcome ?? null],
154
- ["Compiled dataset", row.compiledOutcome ?? null],
164
+ ["Source files", row.rawOutcome ?? null],
165
+ ["Context folder", row.compiledOutcome ?? null],
155
166
  ]) {
156
167
  if (!outcome || outcome.result.ok)
157
168
  continue;
@@ -159,7 +170,7 @@ export function printAgentTestFailures(rows) {
159
170
  if (caseResult.ok)
160
171
  continue;
161
172
  const reason = caseResult.checks.find((entry) => !entry.ok)?.detail ?? "failed";
162
- failures.push(`${label} · Truth Check ${index + 1}: ${reason}`);
173
+ failures.push(`${label} · Question ${index + 1}: ${reason}`);
163
174
  }
164
175
  }
165
176
  if (failures.length === 0)
@@ -193,11 +204,11 @@ export function printSavedTestOutcome(prefix, outcome) {
193
204
  const status = outcome.result.ok ? chalk.green("PASS") : chalk.red("FAIL");
194
205
  console.log(chalk.bold(` ${prefix}`));
195
206
  console.log();
196
- console.log(color(` ${status} ${outcome.result.passedCases}/${outcome.result.totalCases} questions`));
207
+ console.log(color(` ${status} ${outcome.result.passedCases}/${outcome.result.totalCases} tests`));
197
208
  console.log();
198
209
  for (const [index, caseResult] of outcome.result.caseResults.entries()) {
199
210
  const caseStatus = caseResult.ok ? chalk.green("PASS") : chalk.red("FAIL");
200
- console.log(` ${caseStatus} Truth Check ${index + 1}`);
211
+ console.log(` ${caseStatus} Question ${index + 1}`);
201
212
  console.log(chalk.dim(` ${caseResult.question}`));
202
213
  const failedChecks = caseResult.checks.filter((entry) => !entry.ok).slice(0, 3);
203
214
  for (const failedCheck of failedChecks) {
@@ -216,12 +227,12 @@ export function printSavedTestComparison(rawOutcome, compiledOutcome, comparison
216
227
  return;
217
228
  console.log();
218
229
  if (rawOutcome) {
219
- printSavedTestOutcome("Files as-is", rawOutcome);
230
+ printSavedTestOutcome("Source files", rawOutcome);
220
231
  }
221
232
  if (compiledOutcome) {
222
233
  if (rawOutcome)
223
234
  console.log();
224
- printSavedTestOutcome("Compiled dataset", compiledOutcome);
235
+ printSavedTestOutcome("Context folder", compiledOutcome);
225
236
  }
226
237
  if (rawOutcome && compiledOutcome) {
227
238
  const rawQuestions = questionPassRate(rawOutcome);
@@ -230,7 +241,7 @@ export function printSavedTestComparison(rawOutcome, compiledOutcome, comparison
230
241
  const color = delta >= 0 ? chalk.green : chalk.red;
231
242
  const direction = delta >= 0 ? "improved" : "decreased";
232
243
  console.log();
233
- console.log(color(` Truth-check pass rate ${direction} from ${rawQuestions}% to ${compiledQuestions}%.`));
244
+ console.log(color(` Question pass rate ${direction} from ${rawQuestions}% to ${compiledQuestions}%.`));
234
245
  }
235
246
  if (comparisonRunPath) {
236
247
  console.log();
@@ -243,13 +254,13 @@ export function printSavedTestComparisonSummary(rawOutcome, compiledOutcome, com
243
254
  console.log();
244
255
  console.log(chalk.bold(" Comparison"));
245
256
  console.log();
246
- console.log(" | Target | Truth checks |");
257
+ console.log(" | Target | Questions |");
247
258
  console.log(" | --- | --- |");
248
259
  if (rawOutcome) {
249
- console.log(` | Files as-is | \`${rawOutcome.result.passedCases}/${rawOutcome.result.totalCases}\` |`);
260
+ console.log(` | Source files | \`${rawOutcome.result.passedCases}/${rawOutcome.result.totalCases}\` |`);
250
261
  }
251
262
  if (compiledOutcome) {
252
- console.log(` | Compiled dataset | \`${compiledOutcome.result.passedCases}/${compiledOutcome.result.totalCases}\` |`);
263
+ console.log(` | Context folder | \`${compiledOutcome.result.passedCases}/${compiledOutcome.result.totalCases}\` |`);
253
264
  }
254
265
  if (rawOutcome && compiledOutcome) {
255
266
  const rawQuestions = questionPassRate(rawOutcome);
@@ -258,7 +269,7 @@ export function printSavedTestComparisonSummary(rawOutcome, compiledOutcome, com
258
269
  const color = delta >= 0 ? chalk.green : chalk.red;
259
270
  const direction = delta >= 0 ? "improved" : "decreased";
260
271
  console.log();
261
- console.log(color(` Truth-check pass rate ${direction} from ${rawQuestions}% to ${compiledQuestions}%.`));
272
+ console.log(color(` Question pass rate ${direction} from ${rawQuestions}% to ${compiledQuestions}%.`));
262
273
  }
263
274
  if (comparisonRunPath) {
264
275
  console.log();
@@ -267,19 +278,12 @@ export function printSavedTestComparisonSummary(rawOutcome, compiledOutcome, com
267
278
  }
268
279
  export function saveTestComparisonRun(options) {
269
280
  const generatedAt = new Date().toISOString();
270
- const existing = loadLatestComparison(options.sourcePath, options.compiledName);
271
- const canReuseExisting = Boolean(existing?.checks_fingerprint) &&
272
- existing?.checks_fingerprint === options.checksFingerprint;
273
281
  const rawSummary = options.rawOutcome
274
- ? summarizeSavedTestOutcome("Files as-is", options.rawOutcome)
275
- : canReuseExisting
276
- ? existing?.raw ?? null
277
- : null;
282
+ ? summarizeSavedTestOutcome("Source files", options.rawOutcome)
283
+ : null;
278
284
  const compiledSummary = options.compiledOutcome
279
- ? summarizeSavedTestOutcome("Compiled dataset", options.compiledOutcome)
280
- : canReuseExisting
281
- ? existing?.compiled ?? null
282
- : null;
285
+ ? summarizeSavedTestOutcome("Context folder", options.compiledOutcome)
286
+ : null;
283
287
  const effectiveMode = rawSummary && compiledSummary
284
288
  ? "both"
285
289
  : rawSummary
@@ -300,7 +304,7 @@ export function saveTestComparisonRun(options) {
300
304
  checks_fingerprint: options.checksFingerprint,
301
305
  dataset: {
302
306
  name: options.compiledName,
303
- compiled_path: options.compiledPath ?? (canReuseExisting ? existing?.dataset.compiled_path ?? null : null),
307
+ compiled_path: options.compiledPath,
304
308
  },
305
309
  raw: rawSummary,
306
310
  compiled: compiledSummary,
@@ -396,7 +400,7 @@ export async function runSavedCompiledTest(options) {
396
400
  const result = run.results[0];
397
401
  if (!result)
398
402
  return null;
399
- const internalRunPath = saveTargetTestRun(compiledPath, run);
403
+ const compiledRunPath = saveTargetTestRun(compiledPath, run);
400
404
  const datasetRunPath = writeDatasetTargetRun({
401
405
  projectPath: options.sourcePath,
402
406
  datasetName: options.datasetConfig.name,
@@ -407,7 +411,7 @@ export async function runSavedCompiledTest(options) {
407
411
  payload: run,
408
412
  });
409
413
  return {
410
- runPath: internalRunPath,
414
+ runPath: compiledRunPath,
411
415
  displayRunPath: datasetRunPath,
412
416
  target,
413
417
  result,
@@ -0,0 +1,14 @@
1
+ import type { CommandModule } from "yargs";
2
+ import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
3
+ import { type AgentTestMatrixRow } from "./test-flow.js";
4
+ type TestMode = "raw" | "compiled" | "both";
5
+ export interface TestCommandResult {
6
+ sourcePath: string;
7
+ datasetConfig: SourceDatasetConfig;
8
+ builtCompiledPath: string | null;
9
+ mode: TestMode;
10
+ rows: AgentTestMatrixRow[];
11
+ }
12
+ export declare const testCommand: CommandModule;
13
+ export declare function runTestCommand(argv?: Record<string, unknown>): Promise<boolean>;
14
+ export {};
@@ -1,15 +1,15 @@
1
1
  import chalk from "chalk";
2
2
  import * as p from "@clack/prompts";
3
- import { detectInterf, resolveSourceControlPath, } from "../lib/interf.js";
4
- import { fingerprintTruthChecks, sourceDatasetConfigFromInterfConfig, } from "../lib/source-config.js";
5
- import { addExecutionProfileOptions, executionProfileFromArgv, } from "../lib/execution-profile.js";
3
+ import { detectInterf, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
4
+ import { fingerprintTruthChecks, loadCompiledDatasetConfig, sourceDatasetConfigFromInterfConfig, } from "../../packages/project-model/source-config.js";
5
+ import { addExecutionProfileOptions, executionProfileFromArgv, } from "../../packages/agents/lib/execution-profile.js";
6
6
  import { chooseCompiledConfigToBuild, findBuiltCompiledPath, } from "./compiled-flow.js";
7
7
  import { resolveConfiguredDatasetSelection } from "./dataset-selection.js";
8
8
  import { printAgentTestFailures, printAgentTestMatrix, printSavedTestComparisonState, readSavedTestComparison, runSavedRawTest, runSavedCompiledTest, saveTestComparisonRun, } from "./test-flow.js";
9
9
  import { listRunAgentOptions, promptForTestAgents, resolveNamedLocalExecutor, resolveOrConfigureLocalExecutor, } from "./executor-flow.js";
10
10
  export const testCommand = {
11
11
  command: "test",
12
- describe: "Compare files as-is and a compiled dataset on saved truth checks",
12
+ describe: "Compare source files and portable context on saved questions",
13
13
  builder: (yargs) => addExecutionProfileOptions(yargs)
14
14
  .option("dataset", {
15
15
  type: "string",
@@ -17,7 +17,7 @@ export const testCommand = {
17
17
  })
18
18
  .option("target", {
19
19
  choices: ["both", "raw", "compiled"],
20
- describe: "Test files as-is, the compiled dataset, or both. Default: both when a compiled dataset exists, otherwise files as-is.",
20
+ describe: "Test source files, the portable context, or both. Default: both when portable context exists, otherwise source files.",
21
21
  })
22
22
  .option("keep-sandboxes", {
23
23
  type: "boolean",
@@ -49,18 +49,18 @@ async function promptTestMode(hasBuiltCompiled) {
49
49
  options: [
50
50
  {
51
51
  value: "both",
52
- label: "Compare files-as-is and compiled dataset (Recommended)",
53
- hint: "Measure whether compilation helps on the saved truth checks",
52
+ label: "Compare source files and portable context (Recommended)",
53
+ hint: "Measure whether the portable context helps on the saved questions",
54
54
  },
55
55
  {
56
56
  value: "raw",
57
- label: "Files-as-is only",
57
+ label: "Source files only",
58
58
  hint: "Measure the current baseline on the dataset files",
59
59
  },
60
60
  {
61
61
  value: "compiled",
62
- label: "Compiled dataset only",
63
- hint: "Measure the current compiled dataset on the saved truth checks",
62
+ label: "Portable context only",
63
+ hint: "Measure the current portable context on the saved questions",
64
64
  },
65
65
  ],
66
66
  });
@@ -190,7 +190,10 @@ export async function runTestCommand(argv = {}) {
190
190
  sourcePath,
191
191
  requestedDatasetName: targetName,
192
192
  hintedDatasetConfig,
193
- }) ?? (targetName === detected.config.name ? sourceDatasetConfigFromInterfConfig(detected.config) : null);
193
+ }) ?? (targetName === detected.config.name
194
+ ? (loadCompiledDatasetConfig(detected.path)
195
+ ?? sourceDatasetConfigFromInterfConfig(detected.config))
196
+ : null);
194
197
  })()
195
198
  : requestedDatasetName || hintedDatasetConfig
196
199
  ? resolveConfiguredDatasetSelection({
@@ -200,26 +203,26 @@ export async function runTestCommand(argv = {}) {
200
203
  })
201
204
  : await chooseCompiledConfigToBuild({
202
205
  sourcePath,
203
- selectMessage: "Which dataset do you want to test?",
206
+ selectMessage: "Which source folder setup do you want to test?",
204
207
  });
205
208
  if (selectedCompiled === undefined)
206
209
  return false;
207
210
  if (!selectedCompiled) {
208
211
  process.exitCode = 1;
209
212
  if (requestedDatasetName) {
210
- console.log(chalk.red(` Dataset "${requestedDatasetName}" is not set up in this project.`));
211
- console.log(chalk.dim(" Run `interf list` to see the saved datasets."));
213
+ console.log(chalk.red(` Setup "${requestedDatasetName}" is not set up in this project.`));
214
+ console.log(chalk.dim(" Run `interf list` to see the saved setups."));
212
215
  }
213
216
  else {
214
- console.log(chalk.red(" No datasets are set up for this folder yet."));
217
+ console.log(chalk.red(" No saved setups are configured for this folder yet."));
215
218
  console.log(chalk.dim(" Start with `interf` or `interf init`."));
216
219
  }
217
220
  return false;
218
221
  }
219
222
  if (selectedCompiled.checks.length === 0) {
220
223
  process.exitCode = 1;
221
- console.log(chalk.red(` Dataset "${selectedCompiled.name}" does not have any saved truth checks yet.`));
222
- console.log(chalk.dim(" Run `interf`, edit this dataset, and add a few truth checks first."));
224
+ console.log(chalk.red(` Setup "${selectedCompiled.name}" does not have any questions yet.`));
225
+ console.log(chalk.dim(" Run `interf`, edit this setup, and add a few questions first."));
223
226
  console.log(chalk.dim(" Then rerun `interf test`."));
224
227
  return false;
225
228
  }
@@ -237,16 +240,17 @@ export async function runTestCommand(argv = {}) {
237
240
  return false;
238
241
  if (selectedMode === "compiled" && !hasBuiltCompiled) {
239
242
  process.exitCode = 1;
240
- console.log(chalk.red(` Dataset "${selectedCompiled.name}" is not compiled yet.`));
243
+ console.log(chalk.red(` Setup "${selectedCompiled.name}" does not have portable context yet.`));
241
244
  console.log(chalk.dim(" Run `interf compile` first."));
242
245
  return false;
243
246
  }
244
247
  if (selectedMode === "both" && !hasBuiltCompiled) {
245
- console.log(chalk.dim(` Dataset "${selectedCompiled.name}" is not compiled yet. Running the files as-is only.`));
248
+ process.exitCode = 1;
249
+ console.log(chalk.red(` Setup "${selectedCompiled.name}" does not have portable context yet, so Interf cannot compare source files and the portable context.`));
250
+ console.log(chalk.dim(" Run `interf compile` first, or rerun with `--target raw`."));
251
+ return false;
246
252
  }
247
- const mode = selectedMode === "both" && !hasBuiltCompiled
248
- ? "raw"
249
- : selectedMode;
253
+ const mode = selectedMode;
250
254
  const selectedAgents = await resolveSelectedTestAgents({
251
255
  argv,
252
256
  executionProfile,
@@ -264,12 +268,22 @@ export async function runTestCommand(argv = {}) {
264
268
  })));
265
269
  if ((mode === "compiled" || mode === "both") && rows.some((row) => !row.compiledOutcome)) {
266
270
  process.exitCode = 1;
267
- console.log(chalk.red(` Dataset "${selectedCompiled.name}" is not compiled yet.`));
271
+ console.log(chalk.red(` Setup "${selectedCompiled.name}" does not have portable context yet.`));
268
272
  console.log(chalk.dim(" Run `interf compile` first."));
269
273
  return false;
270
274
  }
271
275
  printAgentTestMatrix(rows);
272
276
  printAgentTestFailures(rows);
277
+ const resultSummary = {
278
+ sourcePath,
279
+ datasetConfig: selectedCompiled,
280
+ builtCompiledPath: builtCompiledPath ?? null,
281
+ mode,
282
+ rows,
283
+ };
284
+ const onComplete = typeof argv.onComplete === "function"
285
+ ? argv.onComplete
286
+ : null;
273
287
  if (rows.length === 1) {
274
288
  const row = rows[0];
275
289
  const comparisonRunPath = saveTestComparisonRun({
@@ -291,9 +305,11 @@ export async function runTestCommand(argv = {}) {
291
305
  printSavedTestComparisonState(latestComparison, comparisonRunPath);
292
306
  }
293
307
  }
308
+ await onComplete?.(resultSummary);
294
309
  return true;
295
310
  }
296
311
  console.log();
297
- console.log(chalk.dim(" Multi-agent compare does not overwrite the dataset's saved latest result."));
312
+ console.log(chalk.dim(" Multi-agent compare does not overwrite the saved latest single-agent result."));
313
+ await onComplete?.(resultSummary);
298
314
  return true;
299
315
  }
@@ -1,7 +1,7 @@
1
1
  import chalk from "chalk";
2
- import { detectInterf } from "../lib/interf.js";
3
- import { validateCompiledCompile, validateCompiledStage, } from "../lib/validate.js";
4
- import { validateWorkflowPackage } from "../lib/local-workflows.js";
2
+ import { detectInterf } from "../../packages/project-model/interf.js";
3
+ import { validateCompiledCompile, validateCompiledStage, } from "../../packages/compiler/validate.js";
4
+ import { validateWorkflowPackage } from "../../packages/workflow-package/local-workflows.js";
5
5
  function normalizeVerifyCheck(value) {
6
6
  if (!value)
7
7
  return null;
@@ -55,7 +55,7 @@ export const verifyCommand = {
55
55
  const detected = detectInterf(process.cwd());
56
56
  if (!detected) {
57
57
  process.exitCode = 1;
58
- console.log(chalk.red("Run this from inside a compiled dataset."));
58
+ console.log(chalk.red("Run this from inside a compiled context."));
59
59
  return;
60
60
  }
61
61
  if (check === "compiled") {
@@ -0,0 +1,21 @@
1
+ import { initCommand } from "./commands/init.js";
2
+ import { createCommand } from "./commands/create.js";
3
+ import { compileCommand } from "./commands/compile.js";
4
+ import { testCommand } from "./commands/test.js";
5
+ import { doctorCommand } from "./commands/doctor.js";
6
+ import { listCommand } from "./commands/list.js";
7
+ import { statusCommand } from "./commands/status.js";
8
+ import { resetCommand } from "./commands/reset.js";
9
+ import { defaultCommand } from "./commands/default.js";
10
+ import { verifyCommand } from "./commands/verify.js";
11
+ export declare function buildCli(argv?: string[]): import("yargs").Argv<{}>;
12
+ export declare function runCli(argv?: string[]): {
13
+ [x: string]: unknown;
14
+ _: (string | number)[];
15
+ $0: string;
16
+ } | Promise<{
17
+ [x: string]: unknown;
18
+ _: (string | number)[];
19
+ $0: string;
20
+ }>;
21
+ export { initCommand, createCommand, compileCommand, testCommand, doctorCommand, listCommand, statusCommand, resetCommand, defaultCommand, verifyCommand, };
@@ -0,0 +1,33 @@
1
+ import yargs from "yargs";
2
+ import { hideBin } from "yargs/helpers";
3
+ import { initCommand } from "./commands/init.js";
4
+ import { createCommand } from "./commands/create.js";
5
+ import { compileCommand } from "./commands/compile.js";
6
+ import { testCommand } from "./commands/test.js";
7
+ import { doctorCommand } from "./commands/doctor.js";
8
+ import { listCommand } from "./commands/list.js";
9
+ import { statusCommand } from "./commands/status.js";
10
+ import { resetCommand } from "./commands/reset.js";
11
+ import { defaultCommand } from "./commands/default.js";
12
+ import { verifyCommand } from "./commands/verify.js";
13
+ export function buildCli(argv = hideBin(process.argv)) {
14
+ return yargs(argv)
15
+ .scriptName("interf")
16
+ .command(defaultCommand)
17
+ .command(initCommand)
18
+ .command(compileCommand)
19
+ .command(testCommand)
20
+ .command(createCommand)
21
+ .command(doctorCommand)
22
+ .command(listCommand)
23
+ .command(statusCommand)
24
+ .command(verifyCommand)
25
+ .command(resetCommand)
26
+ .strict()
27
+ .help()
28
+ .version();
29
+ }
30
+ export function runCli(argv = hideBin(process.argv)) {
31
+ return buildCli(argv).parse();
32
+ }
33
+ export { initCommand, createCommand, compileCommand, testCommand, doctorCommand, listCommand, statusCommand, resetCommand, defaultCommand, verifyCommand, };
package/dist/index.d.ts CHANGED
@@ -1,11 +1,22 @@
1
- export { createCompiled, compileCompiled, runCompiledSummarize, runCompiledCompile, } from "./lib/workflows.js";
2
- export { createRawTestTarget, createCompiledTestTarget, listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, listTestTargets, runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./lib/test.js";
3
- export { computeCompiledHealth, } from "./lib/state.js";
4
- export { SOURCE_FOLDER_CONFIG_FILE, loadSourceFolderConfig, buildTestSpecFromSourceFolderConfig, } from "./lib/source-config.js";
5
- export { validateCompiledSummarize, validateCompiledCompile, } from "./lib/validate.js";
6
- export { InterfConfigSchema, TestSpecSchema, SourceFolderConfigSchema, CompiledHealthSchema, } from "./lib/schema.js";
7
- export type { InterfConfig } from "./lib/interf.js";
8
- export type { TestCaseExpect, TestCase, TestSpec, TestCheckResult, TestCaseResult, TestTargetResult, TestTargetRun, LoadedTestSpec, TestTargetCandidate, } from "./lib/test.js";
9
- export type { SourceTruthCheck, SourceDatasetConfig, SourceFolderConfig, CompiledHealth, } from "./lib/schema.js";
10
- export type { CompiledStageValidation, CompiledWorkflowValidation, } from "./lib/validate.js";
11
- export type { CompiledSummarizeResult, CompiledCompileResult, } from "./lib/workflows.js";
1
+ export * as compiler from "./packages/compiler/index.js";
2
+ export * as workflowPackage from "./packages/workflow-package/index.js";
3
+ export * as workflowAuthoring from "./packages/workflow-authoring/index.js";
4
+ export * as projectModel from "./packages/project-model/index.js";
5
+ export * as agents from "./packages/agents/index.js";
6
+ export * as testing from "./packages/testing/index.js";
7
+ export { createCompiled, } from "./packages/project-model/interf.js";
8
+ export { compileCompiled, runCompiledSummarize, runCompiledCompile, } from "./packages/compiler/workflows.js";
9
+ export { createRawTestTarget, createCompiledTestTarget, listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, listTestTargets, runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./packages/testing/test.js";
10
+ export { computeCompiledHealth, } from "./packages/compiler/state.js";
11
+ export { SOURCE_FOLDER_CONFIG_FILE, loadSourceFolderConfig, buildTestSpecFromSourceFolderConfig, } from "./packages/project-model/source-config.js";
12
+ export { validateCompiledSummarize, validateCompiledCompile, } from "./packages/compiler/validate.js";
13
+ export { InterfConfigSchema, SourceFolderConfigSchema, } from "./packages/project-model/lib/schema.js";
14
+ export { TestSpecSchema, } from "./packages/testing/lib/schema.js";
15
+ export { CompiledHealthSchema, } from "./packages/compiler/lib/schema.js";
16
+ export type { InterfConfig } from "./packages/project-model/lib/schema.js";
17
+ export type { TestCase, TestSpec, TestCheckResult, TestCaseResult, TestTargetResult, TestTargetRun, LoadedTestSpec, TestTargetCandidate, } from "./packages/testing/index.js";
18
+ export type { SourceTruthCheck, SourceDatasetConfig, SourceFolderConfig, } from "./packages/project-model/lib/schema.js";
19
+ export type { TestCaseExpect, } from "./packages/testing/lib/schema.js";
20
+ export type { CompiledHealth, } from "./packages/compiler/lib/schema.js";
21
+ export type { CompiledStageValidation, CompiledWorkflowValidation, } from "./packages/compiler/validate.js";
22
+ export type { CompiledSummarizeResult, CompiledCompileResult, } from "./packages/compiler/workflows.js";
package/dist/index.js CHANGED
@@ -1,6 +1,15 @@
1
- export { createCompiled, compileCompiled, runCompiledSummarize, runCompiledCompile, } from "./lib/workflows.js";
2
- export { createRawTestTarget, createCompiledTestTarget, listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, listTestTargets, runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./lib/test.js";
3
- export { computeCompiledHealth, } from "./lib/state.js";
4
- export { SOURCE_FOLDER_CONFIG_FILE, loadSourceFolderConfig, buildTestSpecFromSourceFolderConfig, } from "./lib/source-config.js";
5
- export { validateCompiledSummarize, validateCompiledCompile, } from "./lib/validate.js";
6
- export { InterfConfigSchema, TestSpecSchema, SourceFolderConfigSchema, CompiledHealthSchema, } from "./lib/schema.js";
1
+ export * as compiler from "./packages/compiler/index.js";
2
+ export * as workflowPackage from "./packages/workflow-package/index.js";
3
+ export * as workflowAuthoring from "./packages/workflow-authoring/index.js";
4
+ export * as projectModel from "./packages/project-model/index.js";
5
+ export * as agents from "./packages/agents/index.js";
6
+ export * as testing from "./packages/testing/index.js";
7
+ export { createCompiled, } from "./packages/project-model/interf.js";
8
+ export { compileCompiled, runCompiledSummarize, runCompiledCompile, } from "./packages/compiler/workflows.js";
9
+ export { createRawTestTarget, createCompiledTestTarget, listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, listTestTargets, runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./packages/testing/test.js";
10
+ export { computeCompiledHealth, } from "./packages/compiler/state.js";
11
+ export { SOURCE_FOLDER_CONFIG_FILE, loadSourceFolderConfig, buildTestSpecFromSourceFolderConfig, } from "./packages/project-model/source-config.js";
12
+ export { validateCompiledSummarize, validateCompiledCompile, } from "./packages/compiler/validate.js";
13
+ export { InterfConfigSchema, SourceFolderConfigSchema, } from "./packages/project-model/lib/schema.js";
14
+ export { TestSpecSchema, } from "./packages/testing/lib/schema.js";
15
+ export { CompiledHealthSchema, } from "./packages/compiler/lib/schema.js";
@@ -1,4 +1 @@
1
- import type { WorkflowExecutionProfile } from "./executors.js";
2
- import type { Agent } from "./agent-types.js";
3
- export declare function buildAgentEnv(agent: Agent, baseEnv?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
4
- export declare function buildAgentArgs(agent: Agent, prompt: string, executionProfile?: WorkflowExecutionProfile): string[];
1
+ export * from "../packages/agents/lib/args.js";
@@ -1,52 +1 @@
1
- const CODEX_SANDBOX_MODE = `work${"space-write"}`;
2
- export function buildAgentEnv(agent, baseEnv = process.env) {
3
- const env = { ...baseEnv };
4
- if (agent.name === "codex") {
5
- // Codex executes Bash-tool commands inside its own sandbox. Let Codex
6
- // choose a sandbox-safe default shell instead of inheriting a host-only
7
- // login shell path such as /bin/zsh.
8
- delete env.SHELL;
9
- }
10
- return env;
11
- }
12
- export function buildAgentArgs(agent, prompt, executionProfile = {}) {
13
- if (agent.name === "claude-code") {
14
- const args = [
15
- "-p",
16
- prompt,
17
- "--output-format",
18
- "stream-json",
19
- "--verbose",
20
- "--allowedTools",
21
- "Read,Write,Edit,Bash,Grep,Glob,Agent",
22
- ];
23
- if (executionProfile.model) {
24
- args.push("--model", executionProfile.model);
25
- }
26
- if (executionProfile.effort) {
27
- args.push("--effort", executionProfile.effort);
28
- }
29
- return args;
30
- }
31
- if (agent.name === "codex") {
32
- const args = [
33
- "exec",
34
- "--json",
35
- "-s",
36
- CODEX_SANDBOX_MODE,
37
- "--skip-git-repo-check",
38
- ];
39
- if (executionProfile.model) {
40
- args.push("--model", executionProfile.model);
41
- }
42
- if (executionProfile.profile) {
43
- args.push("--profile", executionProfile.profile);
44
- }
45
- if (executionProfile.effort) {
46
- args.push("-c", `model_reasoning_effort=${JSON.stringify(executionProfile.effort)}`);
47
- }
48
- args.push(prompt);
49
- return args;
50
- }
51
- throw new Error(`Agent "${agent.displayName}" is not yet supported for automated compile runs.`);
52
- }
1
+ export * from "../packages/agents/lib/args.js";
@@ -1,5 +1 @@
1
- import type { Agent } from "./agent-types.js";
2
- export declare const SHOW_AGENT_TOOL_EVENTS: boolean;
3
- export declare const AGENTS: Agent[];
4
- export declare const CODEX_NOISE_PATTERNS: RegExp[];
5
- export declare const VISIBLE_STATUS_PREFIXES: string[];
1
+ export * from "../packages/agents/lib/constants.js";