@interf/compiler 0.5.1 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/README.md +160 -201
  2. package/builtin-workflows/interf/README.md +22 -10
  3. package/builtin-workflows/interf/compile/stages/shape/SKILL.md +8 -5
  4. package/builtin-workflows/interf/compile/stages/structure/SKILL.md +3 -0
  5. package/builtin-workflows/interf/compile/stages/summarize/SKILL.md +18 -2
  6. package/builtin-workflows/interf/improve/SKILL.md +4 -4
  7. package/builtin-workflows/interf/use/query/SKILL.md +1 -1
  8. package/builtin-workflows/interf/workflow.json +19 -5
  9. package/builtin-workflows/interf/{compiled.schema.json → workflow.schema.json} +10 -3
  10. package/dist/bin.js +2 -28
  11. package/dist/{commands → cli/commands}/check-draft.d.ts +2 -2
  12. package/dist/{commands → cli/commands}/check-draft.js +13 -13
  13. package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
  14. package/dist/{commands → cli/commands}/compile-controller.js +39 -44
  15. package/dist/cli/commands/compile.d.ts +33 -0
  16. package/dist/{commands → cli/commands}/compile.js +107 -33
  17. package/dist/{commands → cli/commands}/compiled-flow.d.ts +3 -4
  18. package/dist/{commands → cli/commands}/compiled-flow.js +9 -14
  19. package/dist/{commands → cli/commands}/create-workflow-wizard.d.ts +20 -2
  20. package/dist/cli/commands/create-workflow-wizard.js +288 -0
  21. package/dist/{commands → cli/commands}/create.d.ts +2 -2
  22. package/dist/cli/commands/create.js +166 -0
  23. package/dist/cli/commands/dataset-selection.d.ts +6 -0
  24. package/dist/cli/commands/dataset-selection.js +11 -0
  25. package/dist/{commands → cli/commands}/default.js +5 -5
  26. package/dist/{commands → cli/commands}/doctor.js +12 -13
  27. package/dist/{commands → cli/commands}/executor-flow.d.ts +2 -2
  28. package/dist/{commands → cli/commands}/executor-flow.js +17 -17
  29. package/dist/cli/commands/init.d.ts +11 -0
  30. package/dist/{commands → cli/commands}/init.js +202 -109
  31. package/dist/{commands → cli/commands}/list.js +9 -6
  32. package/dist/{commands → cli/commands}/reset.js +5 -5
  33. package/dist/{commands → cli/commands}/source-config-wizard.d.ts +10 -5
  34. package/dist/{commands → cli/commands}/source-config-wizard.js +202 -95
  35. package/dist/{commands → cli/commands}/status.js +20 -11
  36. package/dist/{commands → cli/commands}/test-flow.d.ts +13 -4
  37. package/dist/{commands → cli/commands}/test-flow.js +30 -26
  38. package/dist/cli/commands/test.d.ts +14 -0
  39. package/dist/{commands → cli/commands}/test.js +48 -40
  40. package/dist/{commands → cli/commands}/verify.js +4 -4
  41. package/dist/cli/index.d.ts +21 -0
  42. package/dist/cli/index.js +33 -0
  43. package/dist/index.d.ts +22 -11
  44. package/dist/index.js +15 -6
  45. package/dist/lib/agent-args.d.ts +1 -3
  46. package/dist/lib/agent-args.js +1 -42
  47. package/dist/lib/agent-constants.d.ts +1 -5
  48. package/dist/lib/agent-constants.js +1 -28
  49. package/dist/lib/agent-detection.d.ts +1 -7
  50. package/dist/lib/agent-detection.js +1 -65
  51. package/dist/lib/agent-execution.d.ts +1 -2
  52. package/dist/lib/agent-execution.js +1 -242
  53. package/dist/lib/agent-logs.d.ts +1 -2
  54. package/dist/lib/agent-logs.js +1 -17
  55. package/dist/lib/agent-preflight.d.ts +1 -7
  56. package/dist/lib/agent-preflight.js +1 -76
  57. package/dist/lib/agent-render.d.ts +1 -8
  58. package/dist/lib/agent-render.js +1 -218
  59. package/dist/lib/agent-shells.d.ts +1 -44
  60. package/dist/lib/agent-shells.js +1 -847
  61. package/dist/lib/agent-status.d.ts +1 -3
  62. package/dist/lib/agent-status.js +1 -58
  63. package/dist/lib/agent-types.d.ts +1 -30
  64. package/dist/lib/agent-types.js +1 -1
  65. package/dist/lib/agents.d.ts +1 -6
  66. package/dist/lib/agents.js +1 -5
  67. package/dist/lib/builtin-compiled-workflow.d.ts +1 -129
  68. package/dist/lib/builtin-compiled-workflow.js +1 -153
  69. package/dist/lib/compiled-compile.d.ts +1 -52
  70. package/dist/lib/compiled-compile.js +1 -274
  71. package/dist/lib/compiled-paths.d.ts +1 -39
  72. package/dist/lib/compiled-paths.js +3 -103
  73. package/dist/lib/compiled-raw.d.ts +1 -49
  74. package/dist/lib/compiled-raw.js +3 -102
  75. package/dist/lib/compiled-reset.d.ts +1 -1
  76. package/dist/lib/compiled-reset.js +3 -44
  77. package/dist/lib/compiled-schema.d.ts +1 -27
  78. package/dist/lib/compiled-schema.js +1 -110
  79. package/dist/lib/discovery.d.ts +1 -1
  80. package/dist/lib/discovery.js +2 -2
  81. package/dist/lib/execution-profile.d.ts +1 -17
  82. package/dist/lib/execution-profile.js +1 -84
  83. package/dist/lib/executors.d.ts +1 -32
  84. package/dist/lib/executors.js +1 -43
  85. package/dist/lib/interf-bootstrap.d.ts +1 -3
  86. package/dist/lib/interf-bootstrap.js +3 -18
  87. package/dist/lib/interf-detect.d.ts +1 -33
  88. package/dist/lib/interf-detect.js +3 -176
  89. package/dist/lib/interf-scaffold.d.ts +1 -2
  90. package/dist/lib/interf-scaffold.js +3 -121
  91. package/dist/lib/interf-workflow-package.d.ts +1 -20
  92. package/dist/lib/interf-workflow-package.js +1 -276
  93. package/dist/lib/interf.d.ts +1 -5
  94. package/dist/lib/interf.js +3 -4
  95. package/dist/lib/local-workflows.d.ts +1 -53
  96. package/dist/lib/local-workflows.js +1 -399
  97. package/dist/lib/package-root.d.ts +1 -0
  98. package/dist/lib/package-root.js +1 -0
  99. package/dist/lib/project-paths.d.ts +1 -11
  100. package/dist/lib/project-paths.js +3 -32
  101. package/dist/lib/runtime-acceptance.d.ts +1 -9
  102. package/dist/lib/runtime-acceptance.js +1 -257
  103. package/dist/lib/runtime-contracts.d.ts +1 -2
  104. package/dist/lib/runtime-contracts.js +1 -47
  105. package/dist/lib/runtime-inventory.d.ts +1 -7
  106. package/dist/lib/runtime-inventory.js +1 -29
  107. package/dist/lib/runtime-paths.d.ts +1 -7
  108. package/dist/lib/runtime-paths.js +1 -23
  109. package/dist/lib/runtime-prompt.d.ts +1 -2
  110. package/dist/lib/runtime-prompt.js +1 -46
  111. package/dist/lib/runtime-reconcile.d.ts +1 -2
  112. package/dist/lib/runtime-reconcile.js +1 -156
  113. package/dist/lib/runtime-runs.d.ts +1 -11
  114. package/dist/lib/runtime-runs.js +1 -250
  115. package/dist/lib/runtime-types.d.ts +1 -43
  116. package/dist/lib/runtime-types.js +1 -1
  117. package/dist/lib/runtime.d.ts +1 -6
  118. package/dist/lib/runtime.js +1 -5
  119. package/dist/lib/schema.d.ts +4 -1016
  120. package/dist/lib/schema.js +6 -539
  121. package/dist/lib/source-config.d.ts +1 -39
  122. package/dist/lib/source-config.js +3 -293
  123. package/dist/lib/state-artifacts.d.ts +1 -8
  124. package/dist/lib/state-artifacts.js +1 -13
  125. package/dist/lib/state-health.d.ts +1 -4
  126. package/dist/lib/state-health.js +1 -132
  127. package/dist/lib/state-io.d.ts +1 -10
  128. package/dist/lib/state-io.js +1 -76
  129. package/dist/lib/state-paths.d.ts +1 -4
  130. package/dist/lib/state-paths.js +1 -13
  131. package/dist/lib/state-view.d.ts +1 -4
  132. package/dist/lib/state-view.js +1 -103
  133. package/dist/lib/state.d.ts +1 -6
  134. package/dist/lib/state.js +1 -5
  135. package/dist/lib/test-execution.d.ts +1 -14
  136. package/dist/lib/test-execution.js +3 -525
  137. package/dist/lib/test-matrices.d.ts +1 -90
  138. package/dist/lib/test-matrices.js +3 -96
  139. package/dist/lib/test-paths.d.ts +1 -12
  140. package/dist/lib/test-paths.js +3 -59
  141. package/dist/lib/test-profile-presets.d.ts +1 -57
  142. package/dist/lib/test-profile-presets.js +3 -50
  143. package/dist/lib/test-sandbox.d.ts +1 -11
  144. package/dist/lib/test-sandbox.js +3 -105
  145. package/dist/lib/test-specs.d.ts +1 -7
  146. package/dist/lib/test-specs.js +3 -114
  147. package/dist/lib/test-targets.d.ts +1 -5
  148. package/dist/lib/test-targets.js +3 -38
  149. package/dist/lib/test-types.d.ts +1 -17
  150. package/dist/lib/test-types.js +3 -1
  151. package/dist/lib/test.d.ts +1 -4
  152. package/dist/lib/test.js +3 -3
  153. package/dist/lib/validate-compiled.d.ts +1 -27
  154. package/dist/lib/validate-compiled.js +1 -238
  155. package/dist/lib/validate-helpers.d.ts +1 -12
  156. package/dist/lib/validate-helpers.js +1 -41
  157. package/dist/lib/validate.d.ts +1 -19
  158. package/dist/lib/validate.js +1 -256
  159. package/dist/lib/workflow-authoring.d.ts +1 -0
  160. package/dist/lib/workflow-authoring.js +1 -0
  161. package/dist/lib/workflow-definitions.d.ts +1 -68
  162. package/dist/lib/workflow-definitions.js +1 -206
  163. package/dist/lib/workflow-edit-session.d.ts +1 -0
  164. package/dist/lib/workflow-edit-session.js +1 -0
  165. package/dist/lib/workflow-edit-utils.d.ts +1 -0
  166. package/dist/lib/workflow-edit-utils.js +1 -0
  167. package/dist/lib/workflow-helpers.d.ts +1 -38
  168. package/dist/lib/workflow-helpers.js +1 -167
  169. package/dist/lib/workflow-improvement.d.ts +1 -22
  170. package/dist/lib/workflow-improvement.js +1 -396
  171. package/dist/lib/workflow-primitives.d.ts +1 -2
  172. package/dist/lib/workflow-primitives.js +1 -5
  173. package/dist/lib/workflow-review-paths.d.ts +1 -10
  174. package/dist/lib/workflow-review-paths.js +1 -27
  175. package/dist/lib/workflow-stage-policy.d.ts +1 -0
  176. package/dist/lib/workflow-stage-policy.js +1 -0
  177. package/dist/lib/workflow-stage-runner.d.ts +1 -41
  178. package/dist/lib/workflow-stage-runner.js +1 -109
  179. package/dist/lib/workflows.d.ts +1 -15
  180. package/dist/lib/workflows.js +1 -31
  181. package/dist/packages/agents/index.d.ts +17 -0
  182. package/dist/packages/agents/index.js +15 -0
  183. package/dist/packages/agents/lib/agents.d.ts +6 -0
  184. package/dist/packages/agents/lib/agents.js +5 -0
  185. package/dist/packages/agents/lib/args.d.ts +4 -0
  186. package/dist/packages/agents/lib/args.js +52 -0
  187. package/dist/packages/agents/lib/constants.d.ts +5 -0
  188. package/dist/packages/agents/lib/constants.js +28 -0
  189. package/dist/packages/agents/lib/detection.d.ts +7 -0
  190. package/dist/packages/agents/lib/detection.js +65 -0
  191. package/dist/packages/agents/lib/execution-profile.d.ts +17 -0
  192. package/dist/packages/agents/lib/execution-profile.js +84 -0
  193. package/dist/packages/agents/lib/execution.d.ts +2 -0
  194. package/dist/packages/agents/lib/execution.js +243 -0
  195. package/dist/packages/agents/lib/executors.d.ts +32 -0
  196. package/dist/packages/agents/lib/executors.js +45 -0
  197. package/dist/packages/agents/lib/logs.d.ts +2 -0
  198. package/dist/packages/agents/lib/logs.js +17 -0
  199. package/dist/packages/agents/lib/preflight.d.ts +7 -0
  200. package/dist/packages/agents/lib/preflight.js +77 -0
  201. package/dist/packages/agents/lib/render.d.ts +8 -0
  202. package/dist/packages/agents/lib/render.js +218 -0
  203. package/dist/packages/agents/lib/schema.d.ts +8 -0
  204. package/dist/packages/agents/lib/schema.js +7 -0
  205. package/dist/packages/agents/lib/shells.d.ts +69 -0
  206. package/dist/packages/agents/lib/shells.js +1021 -0
  207. package/dist/packages/agents/lib/status.d.ts +3 -0
  208. package/dist/packages/agents/lib/status.js +58 -0
  209. package/dist/packages/agents/lib/types.d.ts +30 -0
  210. package/dist/packages/agents/lib/types.js +1 -0
  211. package/dist/{lib → packages/agents/lib}/user-config.d.ts +1 -0
  212. package/dist/{lib → packages/agents/lib}/user-config.js +3 -2
  213. package/dist/packages/compiler/compiled-compile.d.ts +48 -0
  214. package/dist/packages/compiler/compiled-compile.js +256 -0
  215. package/dist/packages/compiler/compiled-schema.d.ts +31 -0
  216. package/dist/packages/compiler/compiled-schema.js +141 -0
  217. package/dist/packages/compiler/index.d.ts +24 -0
  218. package/dist/packages/compiler/index.js +23 -0
  219. package/dist/packages/compiler/lib/schema.d.ts +684 -0
  220. package/dist/packages/compiler/lib/schema.js +361 -0
  221. package/dist/packages/compiler/runtime-acceptance.d.ts +9 -0
  222. package/dist/packages/compiler/runtime-acceptance.js +269 -0
  223. package/dist/packages/compiler/runtime-contracts.d.ts +2 -0
  224. package/dist/packages/compiler/runtime-contracts.js +48 -0
  225. package/dist/packages/compiler/runtime-inventory.d.ts +7 -0
  226. package/dist/packages/compiler/runtime-inventory.js +29 -0
  227. package/dist/packages/compiler/runtime-paths.d.ts +8 -0
  228. package/dist/packages/compiler/runtime-paths.js +26 -0
  229. package/dist/packages/compiler/runtime-prompt.d.ts +2 -0
  230. package/dist/packages/compiler/runtime-prompt.js +48 -0
  231. package/dist/packages/compiler/runtime-reconcile.d.ts +2 -0
  232. package/dist/packages/compiler/runtime-reconcile.js +193 -0
  233. package/dist/packages/compiler/runtime-runs.d.ts +11 -0
  234. package/dist/packages/compiler/runtime-runs.js +262 -0
  235. package/dist/packages/compiler/runtime-types.d.ts +43 -0
  236. package/dist/packages/compiler/runtime-types.js +1 -0
  237. package/dist/packages/compiler/runtime.d.ts +6 -0
  238. package/dist/packages/compiler/runtime.js +5 -0
  239. package/dist/packages/compiler/state-artifacts.d.ts +8 -0
  240. package/dist/packages/compiler/state-artifacts.js +13 -0
  241. package/dist/packages/compiler/state-health.d.ts +4 -0
  242. package/dist/packages/compiler/state-health.js +132 -0
  243. package/dist/packages/compiler/state-io.d.ts +10 -0
  244. package/dist/packages/compiler/state-io.js +76 -0
  245. package/dist/packages/compiler/state-paths.d.ts +4 -0
  246. package/dist/packages/compiler/state-paths.js +13 -0
  247. package/dist/packages/compiler/state-view.d.ts +4 -0
  248. package/dist/packages/compiler/state-view.js +103 -0
  249. package/dist/packages/compiler/state.d.ts +7 -0
  250. package/dist/packages/compiler/state.js +12 -0
  251. package/dist/packages/compiler/validate-compiled.d.ts +27 -0
  252. package/dist/packages/compiler/validate-compiled.js +241 -0
  253. package/dist/packages/compiler/validate-helpers.d.ts +12 -0
  254. package/dist/packages/compiler/validate-helpers.js +41 -0
  255. package/dist/packages/compiler/validate.d.ts +21 -0
  256. package/dist/packages/compiler/validate.js +249 -0
  257. package/dist/packages/compiler/workflow-primitives.d.ts +2 -0
  258. package/dist/packages/compiler/workflow-primitives.js +5 -0
  259. package/dist/packages/compiler/workflows.d.ts +15 -0
  260. package/dist/packages/compiler/workflows.js +31 -0
  261. package/dist/packages/project-model/compiled-paths.d.ts +40 -0
  262. package/dist/packages/project-model/compiled-paths.js +106 -0
  263. package/dist/packages/project-model/compiled-raw.d.ts +49 -0
  264. package/dist/packages/project-model/compiled-raw.js +102 -0
  265. package/dist/packages/project-model/compiled-reset.d.ts +2 -0
  266. package/dist/packages/project-model/compiled-reset.js +72 -0
  267. package/dist/packages/project-model/index.d.ts +11 -0
  268. package/dist/packages/project-model/index.js +10 -0
  269. package/dist/packages/project-model/interf-bootstrap.d.ts +3 -0
  270. package/dist/packages/project-model/interf-bootstrap.js +18 -0
  271. package/dist/packages/project-model/interf-detect.d.ts +33 -0
  272. package/dist/packages/project-model/interf-detect.js +176 -0
  273. package/dist/packages/project-model/interf-scaffold.d.ts +2 -0
  274. package/dist/packages/project-model/interf-scaffold.js +124 -0
  275. package/dist/packages/project-model/interf.d.ts +5 -0
  276. package/dist/packages/project-model/interf.js +4 -0
  277. package/dist/packages/project-model/lib/schema.d.ts +125 -0
  278. package/dist/packages/project-model/lib/schema.js +62 -0
  279. package/dist/packages/project-model/project-paths.d.ts +11 -0
  280. package/dist/packages/project-model/project-paths.js +32 -0
  281. package/dist/packages/project-model/source-config.d.ts +38 -0
  282. package/dist/packages/project-model/source-config.js +297 -0
  283. package/dist/packages/testing/index.d.ts +13 -0
  284. package/dist/packages/testing/index.js +10 -0
  285. package/dist/packages/testing/lib/schema.d.ts +261 -0
  286. package/dist/packages/testing/lib/schema.js +119 -0
  287. package/dist/packages/testing/test-execution.d.ts +14 -0
  288. package/dist/packages/testing/test-execution.js +525 -0
  289. package/dist/packages/testing/test-matrices.d.ts +90 -0
  290. package/dist/packages/testing/test-matrices.js +96 -0
  291. package/dist/packages/testing/test-paths.d.ts +12 -0
  292. package/dist/packages/testing/test-paths.js +59 -0
  293. package/dist/packages/testing/test-profile-presets.d.ts +57 -0
  294. package/dist/packages/testing/test-profile-presets.js +50 -0
  295. package/dist/packages/testing/test-sandbox.d.ts +11 -0
  296. package/dist/packages/testing/test-sandbox.js +105 -0
  297. package/dist/packages/testing/test-specs.d.ts +7 -0
  298. package/dist/packages/testing/test-specs.js +114 -0
  299. package/dist/packages/testing/test-targets.d.ts +5 -0
  300. package/dist/packages/testing/test-targets.js +38 -0
  301. package/dist/packages/testing/test-types.d.ts +16 -0
  302. package/dist/packages/testing/test-types.js +1 -0
  303. package/dist/packages/testing/test.d.ts +4 -0
  304. package/dist/packages/testing/test.js +3 -0
  305. package/dist/packages/workflow-authoring/index.d.ts +4 -0
  306. package/dist/packages/workflow-authoring/index.js +4 -0
  307. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.d.ts +10 -0
  308. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.js +39 -0
  309. package/dist/packages/workflow-authoring/workflow-authoring.d.ts +26 -0
  310. package/dist/packages/workflow-authoring/workflow-authoring.js +120 -0
  311. package/dist/packages/workflow-authoring/workflow-edit-session.d.ts +16 -0
  312. package/dist/packages/workflow-authoring/workflow-edit-session.js +57 -0
  313. package/dist/packages/workflow-authoring/workflow-improvement.d.ts +23 -0
  314. package/dist/packages/workflow-authoring/workflow-improvement.js +209 -0
  315. package/dist/packages/workflow-package/builtin-compiled-workflow.d.ts +38 -0
  316. package/dist/packages/workflow-package/builtin-compiled-workflow.js +94 -0
  317. package/dist/packages/workflow-package/index.d.ts +9 -0
  318. package/dist/packages/workflow-package/index.js +9 -0
  319. package/dist/packages/workflow-package/interf-workflow-package.d.ts +25 -0
  320. package/dist/packages/workflow-package/interf-workflow-package.js +342 -0
  321. package/dist/{lib/config.d.ts → packages/workflow-package/lib/package-root.d.ts} +0 -1
  322. package/dist/packages/workflow-package/lib/package-root.js +6 -0
  323. package/dist/packages/workflow-package/local-workflows.d.ts +54 -0
  324. package/dist/packages/workflow-package/local-workflows.js +422 -0
  325. package/dist/packages/workflow-package/workflow-definitions.d.ts +78 -0
  326. package/dist/packages/workflow-package/workflow-definitions.js +203 -0
  327. package/dist/packages/workflow-package/workflow-helpers.d.ts +38 -0
  328. package/dist/packages/workflow-package/workflow-helpers.js +167 -0
  329. package/dist/packages/workflow-package/workflow-review-paths.d.ts +10 -0
  330. package/dist/packages/workflow-package/workflow-review-paths.js +27 -0
  331. package/dist/packages/workflow-package/workflow-stage-policy.d.ts +5 -0
  332. package/dist/packages/workflow-package/workflow-stage-policy.js +31 -0
  333. package/dist/packages/workflow-package/workflow-stage-runner.d.ts +41 -0
  334. package/dist/packages/workflow-package/workflow-stage-runner.js +109 -0
  335. package/package.json +44 -21
  336. package/dist/commands/compile.d.ts +0 -15
  337. package/dist/commands/create-workflow-wizard.js +0 -125
  338. package/dist/commands/create.js +0 -162
  339. package/dist/commands/init.d.ts +0 -3
  340. package/dist/commands/test.d.ts +0 -9
  341. package/dist/lib/compiled-home.d.ts +0 -5
  342. package/dist/lib/compiled-home.js +0 -32
  343. package/dist/lib/config.js +0 -9
  344. package/dist/lib/obsidian.d.ts +0 -1
  345. package/dist/lib/obsidian.js +0 -15
  346. package/dist/lib/summarize-plan.d.ts +0 -17
  347. package/dist/lib/summarize-plan.js +0 -120
  348. /package/dist/{commands → cli/commands}/default.d.ts +0 -0
  349. /package/dist/{commands → cli/commands}/doctor.d.ts +0 -0
  350. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  351. /package/dist/{commands → cli/commands}/reset.d.ts +0 -0
  352. /package/dist/{commands → cli/commands}/status.d.ts +0 -0
  353. /package/dist/{commands → cli/commands}/verify.d.ts +0 -0
@@ -1,25 +1,32 @@
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 { SOURCE_FOLDER_CONFIG_FILE, resolveDatasetCompileMaxAttempts, resolveDatasetCompileMaxLoops, syncCompiledInterfConfigFromSourceDatasetConfig, upsertSourceDatasetConfig, } from "../lib/source-config.js";
3
+ import { resolve } from "node:path";
4
+ import { detectInterf, readInterfConfig, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
5
+ import { SOURCE_FOLDER_CONFIG_FILE, syncCompiledInterfConfigFromSourceDatasetConfig, upsertSourceDatasetConfig, } from "../../packages/project-model/source-config.js";
5
6
  import { DEFAULT_COMPILED_NAME, describeCompileLoopSelection, promptSingleCompiledConfig, } from "./source-config-wizard.js";
6
7
  import { buildCompiledWorkflowOptions, chooseCompiledWorkflow, createWorkflowWizard, } from "./create-workflow-wizard.js";
7
- import { findBuiltCompiledPath, findSavedCompiledConfig, listSavedCompiledEntries, ensureCompiledFromConfig, } from "./compiled-flow.js";
8
- import { readSavedTestComparison } from "./test-flow.js";
9
- import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
10
- import { runConfiguredCompiledCompile } from "./compile.js";
8
+ import { findBuiltCompiledPath, findSavedCompiledConfig, listSavedCompiledEntries, } from "./compiled-flow.js";
9
+ import { readCurrentSavedTestComparison, } from "./test-flow.js";
10
+ import { runCompileCommand } from "./compile.js";
11
11
  import { runTestCommand } from "./test.js";
12
+ export function currentRunTargetStatus(rows, target) {
13
+ const outcomes = rows
14
+ .map((row) => (target === "raw" ? row.rawOutcome : row.compiledOutcome))
15
+ .filter((outcome) => Boolean(outcome));
16
+ if (outcomes.length === 0)
17
+ return "missing";
18
+ const passFlags = outcomes.map((outcome) => outcome.result.totalCases > 0 && outcome.result.passedCases === outcome.result.totalCases);
19
+ if (passFlags.every(Boolean))
20
+ return "pass";
21
+ if (passFlags.some(Boolean))
22
+ return "mixed";
23
+ return "fail";
24
+ }
12
25
  function describeSavedQuestions(dataset) {
13
26
  const count = dataset.checks.length;
14
27
  if (count === 0)
15
- return "No saved truth checks yet";
16
- return `${count} saved truth check${count === 1 ? "" : "s"}`;
17
- }
18
- function compileModeAlreadyRanSavedTests(dataset) {
19
- if (dataset.checks.length === 0)
20
- return false;
21
- return (resolveDatasetCompileMaxAttempts(dataset) != null ||
22
- resolveDatasetCompileMaxLoops(dataset) != null);
28
+ return "No checks yet";
29
+ return `${count} check${count === 1 ? "" : "s"}`;
23
30
  }
24
31
  function printDatasetSummary(options) {
25
32
  const compiledConfig = options.builtCompiledPath
@@ -27,7 +34,7 @@ function printDatasetSummary(options) {
27
34
  : null;
28
35
  const workflowLabel = `${options.dataset.workflow ?? "interf"}${compiledConfig?.workflow_origin?.local_draft === true ? " (local draft)" : ""}`;
29
36
  p.log.info(`Dataset: ${options.dataset.name}`);
30
- p.log.info(`Path: ${options.dataset.path === "." ? "project root" : options.dataset.path}`);
37
+ p.log.info(`Source folder: ${options.dataset.path}`);
31
38
  if (options.dataset.about) {
32
39
  p.log.info(`About: ${options.dataset.about}`);
33
40
  }
@@ -37,57 +44,62 @@ function printDatasetSummary(options) {
37
44
  maxLoops: options.dataset.max_loops,
38
45
  }));
39
46
  p.log.info(describeSavedQuestions(options.dataset));
40
- p.log.info(options.built ? "Compiled dataset is available." : "Compiled dataset has not been built yet.");
47
+ p.log.info(options.built ? "Compiled context is available." : "Compiled context has not been built yet.");
41
48
  if (options.latestComparison?.raw && options.latestComparison?.compiled) {
42
- p.log.info(`Latest saved comparison: files-as-is ${options.latestComparison.raw.passed_cases}/${options.latestComparison.raw.total_cases}, compiled ${options.latestComparison.compiled.passed_cases}/${options.latestComparison.compiled.total_cases}.`);
49
+ p.log.info(`Latest saved comparison: files-as-is ${options.latestComparison.raw.passed_cases}/${options.latestComparison.raw.total_cases}, compiled context ${options.latestComparison.compiled.passed_cases}/${options.latestComparison.compiled.total_cases}.`);
43
50
  }
44
51
  else if (options.latestComparison?.raw) {
45
- p.log.info(`Latest files-as-is baseline: ${options.latestComparison.raw.passed_cases}/${options.latestComparison.raw.total_cases}.`);
52
+ p.log.info(`Latest saved files-as-is run: ${options.latestComparison.raw.passed_cases}/${options.latestComparison.raw.total_cases}.`);
46
53
  }
47
54
  else if (options.latestComparison?.compiled) {
48
- p.log.info(`Latest compiled run: ${options.latestComparison.compiled.passed_cases}/${options.latestComparison.compiled.total_cases}.`);
55
+ p.log.info(`Latest compiled-context run: ${options.latestComparison.compiled.passed_cases}/${options.latestComparison.compiled.total_cases}.`);
56
+ }
57
+ else if (options.latestComparisonStale) {
58
+ p.log.info("Saved test results are stale for the current checks.");
49
59
  }
50
60
  if (options.sourcePath !== process.cwd()) {
51
- p.log.info(`Source folder: ${options.sourcePath}`);
61
+ p.log.info(`Project folder: ${options.sourcePath}`);
52
62
  }
53
63
  }
54
64
  async function promptDatasetAction(dataset, built, latestComparison) {
55
65
  const options = [];
56
66
  const hasSavedRawBaseline = Boolean(latestComparison?.raw);
57
- const rawAlreadyPasses = latestComparison?.raw &&
67
+ const latestRawPasses = latestComparison?.raw &&
58
68
  latestComparison.raw.passed_cases === latestComparison.raw.total_cases;
59
69
  if (dataset.checks.length > 0) {
60
70
  options.push({
61
71
  value: "test",
62
72
  label: built
63
- ? "Measure files-as-is and compiled accuracy (Recommended)"
73
+ ? "Compare files-as-is and compiled context (Recommended)"
64
74
  : hasSavedRawBaseline
65
75
  ? "Rerun the files-as-is baseline"
66
76
  : "Measure the files-as-is baseline (Recommended)",
67
77
  hint: built
68
- ? "Compare whether the compiled dataset is actually better on the saved checks"
78
+ ? "See whether the compiled context helps on the checks"
69
79
  : hasSavedRawBaseline
70
80
  ? "Refresh the saved raw baseline on the current checks"
71
- : "See whether the raw dataset is already good enough before compiling",
81
+ : "See whether the source files are already good enough before compiling",
72
82
  });
73
83
  }
74
84
  options.push({
75
85
  value: "compile",
76
- label: built ? "Rebuild the compiled dataset" : "Build the compiled dataset",
86
+ label: built ? "Rebuild the compiled context" : "Build the compiled context",
77
87
  hint: built
78
- ? "Refresh it from the current dataset files"
88
+ ? "Refresh it from the current source files"
79
89
  : dataset.checks.length > 0
80
- ? rawAlreadyPasses
81
- ? "Optional: compare a compiled dataset against the already-passing baseline"
82
- : "Compile only if the baseline is not good enough"
90
+ ? latestRawPasses
91
+ ? "Optional: build the compiled context for a side-by-side comparison with the latest saved raw run"
92
+ : hasSavedRawBaseline
93
+ ? "Some checks still fail on the source files. Build a context folder and compare it on the same checks"
94
+ : "Build a context folder and compare it on the same checks"
83
95
  : "Build it first, then measure it later",
84
96
  }, {
85
97
  value: "dataset",
86
- label: "Add another dataset",
98
+ label: "Add another setup",
87
99
  hint: "Add a separate folder, focus, or question set",
88
100
  }, {
89
101
  value: "edit",
90
- label: "Edit truth checks and settings",
102
+ label: "Edit checks and settings",
91
103
  hint: "Update checks, focus, workflow, or compile mode",
92
104
  }, {
93
105
  value: "workflow",
@@ -108,22 +120,68 @@ async function promptDatasetAction(dataset, built, latestComparison) {
108
120
  }
109
121
  function printDatasetRecommendation(dataset, built, latestComparison) {
110
122
  if (dataset.checks.length === 0) {
111
- p.log.info("Recommended first step: save a few truth checks for this dataset.");
123
+ p.log.info("Recommended first step: save a few checks for this dataset.");
112
124
  return;
113
125
  }
114
126
  if (!built) {
115
127
  if (latestComparison?.raw) {
116
- if (latestComparison.raw.passed_cases === latestComparison.raw.total_cases) {
117
- p.log.info("Files-as-is already passes the saved checks. Compile only if you want a side-by-side comparison or a stronger compiled surface.");
118
- return;
119
- }
120
- p.log.info(`Latest files-as-is baseline: ${latestComparison.raw.passed_cases}/${latestComparison.raw.total_cases}. Compile if you want to improve it.`);
128
+ p.log.info(latestComparison.raw.passed_cases === latestComparison.raw.total_cases
129
+ ? `Latest files-as-is run: ${latestComparison.raw.passed_cases}/${latestComparison.raw.total_cases}. Rerun the baseline if you want current numbers for a different agent set, or build the context folder if you want a side-by-side comparison.`
130
+ : `Latest files-as-is run: ${latestComparison.raw.passed_cases}/${latestComparison.raw.total_cases}. Some checks still fail on the source files. Build the context folder if you want Interf to prepare the task context and compare it on the same checks.`);
121
131
  return;
122
132
  }
123
133
  p.log.info("Recommended first step: measure the files-as-is baseline before compiling.");
124
134
  return;
125
135
  }
126
- p.log.info("Recommended first step: compare the files-as-is baseline and the compiled dataset.");
136
+ p.log.info("Recommended first step: compare the files-as-is baseline and the compiled context.");
137
+ }
138
+ async function promptPostBaselineAction(rows) {
139
+ const status = currentRunTargetStatus(rows, "raw");
140
+ const subject = rows.length === 1 ? "selected agent" : "selected agents";
141
+ if (status === "pass") {
142
+ p.log.info(`Files-as-is passed on all ${subject} in this run.`);
143
+ }
144
+ else if (status === "mixed") {
145
+ p.log.info(`Files-as-is was mixed across the ${subject} in this run.`);
146
+ }
147
+ else if (status === "fail") {
148
+ p.log.info(`Files-as-is did not pass on the ${subject} in this run.`);
149
+ }
150
+ const compileRecommended = status !== "pass";
151
+ const selected = await p.select({
152
+ message: "What do you want to do next?",
153
+ options: [
154
+ {
155
+ value: "compile",
156
+ label: compileRecommended
157
+ ? "Build the compiled context (Recommended)"
158
+ : "Build the compiled context",
159
+ hint: compileRecommended
160
+ ? status === "mixed"
161
+ ? "Some selected agents still failed on the raw files. Build the compiled context and compare it on the same checks"
162
+ : "Build a compiled context and compare it on the same checks"
163
+ : "Build a compiled context and compare it on the same checks",
164
+ },
165
+ {
166
+ value: "edit",
167
+ label: "Change checks and settings",
168
+ hint: "Revise the checks or setup settings before the next run",
169
+ },
170
+ {
171
+ value: "rerun",
172
+ label: "Rerun the files-as-is baseline",
173
+ hint: "Run the same checks again, including different local agents if you want",
174
+ },
175
+ {
176
+ value: "done",
177
+ label: "Stop here",
178
+ hint: "Leave the dataset as-is for now",
179
+ },
180
+ ],
181
+ });
182
+ if (p.isCancel(selected))
183
+ return null;
184
+ return selected;
127
185
  }
128
186
  async function chooseCompiledForWizard(options) {
129
187
  if (options.fixedCompiledName) {
@@ -135,7 +193,7 @@ async function chooseCompiledForWizard(options) {
135
193
  if (savedEntries.length === 1)
136
194
  return savedEntries[0]?.config ?? null;
137
195
  const selected = await p.select({
138
- message: "Which dataset do you want to work with?",
196
+ message: "Which source folder setup do you want to work with?",
139
197
  options: [
140
198
  ...savedEntries.map((entry) => ({
141
199
  value: entry.config.name,
@@ -149,7 +207,7 @@ async function chooseCompiledForWizard(options) {
149
207
  })),
150
208
  {
151
209
  value: "__new__",
152
- label: "Add another dataset",
210
+ label: "Add another setup",
153
211
  hint: "Add a separate folder, focus, or question set",
154
212
  },
155
213
  ],
@@ -162,6 +220,8 @@ async function chooseCompiledForWizard(options) {
162
220
  }
163
221
  async function promptCompiledSetup(options) {
164
222
  let workflowId = options.initial?.workflow ?? "interf";
223
+ let workflowLabel = buildCompiledWorkflowOptions(options.sourcePath)
224
+ .find((option) => option.value === workflowId)?.label ?? workflowId;
165
225
  if (options.introStyle === "edit") {
166
226
  const workflowChoice = await chooseCompiledWorkflow(options.sourcePath, {
167
227
  currentWorkflowId: workflowId,
@@ -170,14 +230,13 @@ async function promptCompiledSetup(options) {
170
230
  if (p.isCancel(workflowChoice))
171
231
  return null;
172
232
  workflowId = workflowChoice;
233
+ workflowLabel = buildCompiledWorkflowOptions(options.sourcePath)
234
+ .find((option) => option.value === workflowId)?.label ?? workflowId;
173
235
  }
174
- const workflowLabel = buildCompiledWorkflowOptions(options.sourcePath)
175
- .find((option) => option.value === workflowId)?.label ?? workflowId;
176
236
  const compiledConfig = await promptSingleCompiledConfig({
177
237
  projectPath: options.sourcePath,
178
238
  initial: options.initial,
179
239
  ...(options.fixedName ? { fixedName: options.fixedName } : {}),
180
- skipNamePrompt: !options.fixedName && options.introStyle === "first",
181
240
  introStyle: options.introStyle,
182
241
  selectedWorkflowLabel: workflowLabel,
183
242
  });
@@ -195,10 +254,10 @@ async function promptCompiledSetup(options) {
195
254
  syncCompiledInterfConfigFromSourceDatasetConfig(builtCompiledPath, compiledConfigWithWorkflow);
196
255
  }
197
256
  console.log();
198
- console.log(chalk.green(` ✓ Saved dataset setup in ${SOURCE_FOLDER_CONFIG_FILE}`));
199
- console.log(chalk.dim(` Source folder: ${options.sourcePath}`));
200
- console.log(chalk.dim(` Dataset: ${compiledConfigWithWorkflow.name}`));
201
- console.log(chalk.dim(` Path: ${compiledConfigWithWorkflow.path}`));
257
+ console.log(chalk.green(` ✓ Saved setup in ${SOURCE_FOLDER_CONFIG_FILE}`));
258
+ console.log(chalk.dim(` Project folder: ${options.sourcePath}`));
259
+ console.log(chalk.dim(` Setup: ${compiledConfigWithWorkflow.name}`));
260
+ console.log(chalk.dim(` Source folder: ${compiledConfigWithWorkflow.path}`));
202
261
  console.log(chalk.dim(` Workflow: ${workflowLabel}`));
203
262
  console.log(chalk.dim(` Compile mode: ${describeCompileLoopSelection({
204
263
  maxAttempts: compiledConfigWithWorkflow.max_attempts,
@@ -206,41 +265,29 @@ async function promptCompiledSetup(options) {
206
265
  })}`));
207
266
  return compiledConfigWithWorkflow;
208
267
  }
209
- async function compileSelectedCompiled(sourcePath, compiledConfig) {
210
- const { executor, error } = await resolveOrConfigureLocalExecutor({
211
- purpose: "compile",
212
- });
213
- if (!executor && !error) {
214
- return null;
215
- }
216
- if (!executor) {
217
- process.exitCode = 1;
218
- console.log(chalk.red(error ?? "No coding agent detected."));
219
- return null;
220
- }
221
- const compiledPath = ensureCompiledFromConfig(sourcePath, compiledConfig);
222
- const compiled = await runConfiguredCompiledCompile({
223
- executor,
224
- compiledPath,
268
+ export async function compileSelectedCompiled(sourcePath, compiledConfig, deps = {}) {
269
+ return (deps.runCompileCommand ?? runCompileCommand)({
225
270
  sourcePath,
226
- compiledConfig,
227
- maxAttemptsOverride: null,
228
- maxLoopsOverride: null,
271
+ dataset: compiledConfig.name,
272
+ datasetConfig: compiledConfig,
273
+ skipConfirm: true,
274
+ skipDatasetBanner: true,
229
275
  });
230
- if (!compiled) {
231
- return null;
232
- }
233
- return compiledPath;
234
276
  }
235
277
  async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
236
278
  const builtCompiledPath = findBuiltCompiledPath(sourcePath, compiledConfig.name);
237
- const latestComparison = readSavedTestComparison(sourcePath, compiledConfig.name);
279
+ const { comparison: latestComparison, stale: latestComparisonStale, } = readCurrentSavedTestComparison({
280
+ projectPath: sourcePath,
281
+ datasetName: compiledConfig.name,
282
+ checks: compiledConfig.checks,
283
+ });
238
284
  printDatasetSummary({
239
285
  sourcePath,
240
286
  dataset: compiledConfig,
241
287
  built: Boolean(builtCompiledPath),
242
288
  builtCompiledPath,
243
289
  latestComparison,
290
+ latestComparisonStale,
244
291
  });
245
292
  printDatasetRecommendation(compiledConfig, Boolean(builtCompiledPath), latestComparison);
246
293
  const action = await promptDatasetAction(compiledConfig, Boolean(builtCompiledPath), latestComparison);
@@ -251,7 +298,28 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
251
298
  return;
252
299
  }
253
300
  if (action === "workflow") {
254
- await createWorkflowWizard({ sourcePath });
301
+ const workflowId = await createWorkflowWizard({
302
+ sourcePath,
303
+ datasetContext: {
304
+ config: compiledConfig,
305
+ datasetPath: resolve(sourcePath, compiledConfig.path),
306
+ },
307
+ });
308
+ if (typeof workflowId === "string") {
309
+ const nextConfig = {
310
+ ...compiledConfig,
311
+ workflow: workflowId,
312
+ };
313
+ upsertSourceDatasetConfig(sourcePath, nextConfig, {
314
+ matchName: compiledConfig.name,
315
+ });
316
+ const builtCompiledPath = findBuiltCompiledPath(sourcePath, compiledConfig.name);
317
+ if (builtCompiledPath) {
318
+ syncCompiledInterfConfigFromSourceDatasetConfig(builtCompiledPath, nextConfig);
319
+ }
320
+ p.log.info(`Assigned workflow "${workflowId}" to dataset "${compiledConfig.name}".`);
321
+ p.log.info("Next: run `interf compile`, then `interf test`.");
322
+ }
255
323
  return;
256
324
  }
257
325
  if (action === "dataset") {
@@ -280,44 +348,67 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
280
348
  if (action === "test") {
281
349
  if (compiledConfig.checks.length === 0) {
282
350
  process.exitCode = 1;
283
- console.log(chalk.red(` Dataset "${compiledConfig.name}" does not have any saved truth checks yet.`));
284
- console.log(chalk.dim(" Run `interf`, edit this dataset, and add a few truth checks first."));
351
+ console.log(chalk.red(` Setup "${compiledConfig.name}" does not have any checks yet.`));
352
+ console.log(chalk.dim(" Run `interf`, edit this setup, and add a few checks first."));
285
353
  console.log(chalk.dim(" Then rerun `interf test`."));
286
354
  return;
287
355
  }
288
- const baselineRan = await runTestCommand({
289
- sourcePath,
290
- dataset: compiledConfig.name,
291
- datasetConfig: compiledConfig,
292
- ...(builtCompiledPath ? {} : { target: "raw" }),
293
- });
294
- if (!baselineRan) {
295
- return;
296
- }
297
356
  if (builtCompiledPath) {
298
- return;
299
- }
300
- const latestComparison = readSavedTestComparison(sourcePath, compiledConfig.name);
301
- if (latestComparison?.raw?.passed_cases === latestComparison?.raw?.total_cases) {
302
- const compileAnyway = await p.confirm({
303
- message: "The files-as-is baseline already passed. Compile this dataset anyway?",
304
- initialValue: false,
357
+ const baselineRan = await runTestCommand({
358
+ sourcePath,
359
+ dataset: compiledConfig.name,
360
+ datasetConfig: compiledConfig,
361
+ target: "both",
305
362
  });
306
- if (p.isCancel(compileAnyway) || !compileAnyway) {
363
+ if (!baselineRan) {
307
364
  return;
308
365
  }
366
+ return;
309
367
  }
310
- else {
311
- const compileAndCompare = await p.confirm({
312
- message: "Compile this dataset now and compare it on the same checks? (Recommended)",
313
- initialValue: true,
368
+ while (true) {
369
+ const baselineCapture = { result: null };
370
+ const baselineRan = await runTestCommand({
371
+ sourcePath,
372
+ dataset: compiledConfig.name,
373
+ datasetConfig: compiledConfig,
374
+ target: "raw",
375
+ onComplete(result) {
376
+ baselineCapture.result = result;
377
+ },
314
378
  });
315
- if (p.isCancel(compileAndCompare) || !compileAndCompare) {
379
+ const baselineResult = baselineCapture.result;
380
+ if (!baselineRan || !baselineResult) {
381
+ return;
382
+ }
383
+ const nextAction = await promptPostBaselineAction(baselineResult.rows);
384
+ if (!nextAction || nextAction === "done") {
385
+ return;
386
+ }
387
+ if (nextAction === "rerun") {
388
+ continue;
389
+ }
390
+ if (nextAction === "edit") {
391
+ const nextCompiled = await promptCompiledSetup({
392
+ sourcePath,
393
+ initial: compiledConfig,
394
+ fixedName: compiledConfig.name,
395
+ introStyle: "edit",
396
+ });
397
+ if (!nextCompiled) {
398
+ return;
399
+ }
400
+ await runCompiledActionMenu(sourcePath, nextCompiled, { justConfigured: true });
316
401
  return;
317
402
  }
403
+ break;
318
404
  }
319
- const compiledPath = await compileSelectedCompiled(sourcePath, compiledConfig);
320
- if (!compiledPath) {
405
+ const compileResult = await compileSelectedCompiled(sourcePath, compiledConfig);
406
+ if (!compileResult) {
407
+ return;
408
+ }
409
+ if (compileResult.testedDuringCompile) {
410
+ p.log.info("This compile run already tested the compiled context on the checks.");
411
+ p.log.info("Run `interf test` later if you want a fresh side-by-side comparison summary.");
321
412
  return;
322
413
  }
323
414
  await runTestCommand({
@@ -329,18 +420,20 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
329
420
  return;
330
421
  }
331
422
  if (action === "compile") {
332
- if (!await compileSelectedCompiled(sourcePath, compiledConfig))
423
+ const compileResult = await compileSelectedCompiled(sourcePath, compiledConfig);
424
+ if (!compileResult)
333
425
  return;
334
426
  if (compiledConfig.checks.length === 0)
335
427
  return;
336
- if (compileModeAlreadyRanSavedTests(compiledConfig)) {
337
- p.log.info("Saved compile mode already ran the compiled-dataset test.");
338
- return;
428
+ if (compileResult.testedDuringCompile) {
429
+ p.log.info("This compile run already tested the compiled context on the compile agent.");
339
430
  }
340
431
  const runCompiledTest = await p.confirm({
341
- message: builtCompiledPath
342
- ? "Run files-as-is and compiled on the saved checks now?"
343
- : "Compare files-as-is and compiled on the saved checks now?",
432
+ message: compileResult.testedDuringCompile
433
+ ? "Run a fresh files-as-is versus compiled-context comparison now?"
434
+ : builtCompiledPath
435
+ ? "Run files-as-is and the compiled context on the checks now?"
436
+ : "Compare files-as-is and the compiled context on the checks now?",
344
437
  initialValue: true,
345
438
  });
346
439
  if (p.isCancel(runCompiledTest) || !runCompiledTest)
@@ -356,19 +449,19 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
356
449
  }
357
450
  export const initCommand = {
358
451
  command: "init",
359
- describe: "Open the root-folder wizard for this folder",
452
+ describe: "Open the dataset wizard for this folder",
360
453
  handler: async () => {
361
454
  await runInitCommand();
362
455
  },
363
456
  };
364
457
  export async function runInitCommand() {
365
- p.intro(chalk.bold("Interf Compiler"));
366
- p.log.info("Measure how accurately your local agents answer from the dataset in this folder, then compile only if it helps.");
458
+ p.intro(chalk.bold("Interf"));
459
+ p.log.info("Interf prepares task context for your agents from the source folder you choose. Start with the task and a few checks, test the source files first, and compile a context folder when the current context is not good enough.");
367
460
  const cwd = process.cwd();
368
461
  const detected = detectInterf(cwd);
369
462
  const sourcePath = detected ? resolveSourceControlPath(detected.path) : cwd;
370
463
  if (detected) {
371
- p.log.info(`Working from the dataset control plane: ${sourcePath}`);
464
+ p.log.info(`Working from the project folder: ${sourcePath}`);
372
465
  }
373
466
  const savedEntries = listSavedCompiledEntries(sourcePath);
374
467
  if (savedEntries.length === 0) {
@@ -1,24 +1,27 @@
1
1
  import chalk from "chalk";
2
- import { detectInterf, resolveSourceControlPath, } from "../lib/interf.js";
2
+ import { detectInterf, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
3
3
  import { listSavedCompiledEntries } from "./compiled-flow.js";
4
4
  export const listCommand = {
5
5
  command: "list",
6
- describe: "List datasets in this project",
6
+ describe: "List saved setups in this project",
7
7
  handler: async () => {
8
8
  const detected = detectInterf(process.cwd());
9
9
  const sourcePath = detected ? resolveSourceControlPath(detected.path) : process.cwd();
10
10
  const datasets = listSavedCompiledEntries(sourcePath);
11
11
  if (datasets.length === 0) {
12
- console.log(chalk.dim(" Nothing found. Start with `interf`, run `interf test`, then compile a dataset when needed."));
12
+ console.log(chalk.dim(" Nothing found. Start with `interf` or `interf init` to define a setup and save checks."));
13
13
  return;
14
14
  }
15
15
  console.log();
16
- console.log(chalk.bold(" Datasets"));
16
+ console.log(chalk.bold(" Saved setups"));
17
17
  console.log();
18
18
  for (const dataset of datasets) {
19
19
  console.log(` ${dataset.config.name}`);
20
- console.log(chalk.dim(` ${dataset.path ?? "not built yet"}`));
21
- console.log(chalk.dim(` workflow: ${dataset.config.workflow ?? "interf"}`));
20
+ if (dataset.config.about) {
21
+ console.log(chalk.dim(` task: ${dataset.config.about}`));
22
+ }
23
+ console.log(chalk.dim(` ${dataset.path ? "built" : "not built yet"} · source folder: ${dataset.config.path}`));
24
+ console.log(chalk.dim(` workflow: ${dataset.config.workflow ?? "interf"}${dataset.localDraft ? " (local draft)" : ""}`));
22
25
  console.log(chalk.dim(` checks: ${dataset.config.checks.length}`));
23
26
  }
24
27
  },
@@ -1,9 +1,9 @@
1
1
  import chalk from "chalk";
2
- import { detectInterf } from "../lib/interf.js";
3
- import { resetCompiledGeneratedState } from "../lib/compiled-reset.js";
2
+ import { detectInterf } from "../../packages/project-model/interf.js";
3
+ import { resetCompiledGeneratedState } from "../../packages/project-model/compiled-reset.js";
4
4
  export const resetCommand = {
5
5
  command: "reset <scope>",
6
- describe: "Reset generated compiled state while keeping source files",
6
+ describe: "Reset generated compiled state while keeping `raw/` and the local workflow package",
7
7
  builder: (yargs) => yargs.positional("scope", {
8
8
  type: "string",
9
9
  choices: ["compile", "all"],
@@ -12,11 +12,11 @@ export const resetCommand = {
12
12
  const detected = detectInterf(process.cwd());
13
13
  if (!detected) {
14
14
  process.exitCode = 1;
15
- console.log(chalk.red("Run this from inside a compiled dataset."));
15
+ console.log(chalk.red("Run this from inside a compiled context."));
16
16
  return;
17
17
  }
18
18
  const compiledPath = detected.path;
19
19
  resetCompiledGeneratedState(compiledPath, argv.scope);
20
- console.log(chalk.green(" Compiled reset complete."));
20
+ console.log(chalk.green(" Compiled-context reset complete."));
21
21
  },
22
22
  };
@@ -1,16 +1,22 @@
1
- import type { SourceTruthCheck, SourceDatasetConfig } from "../lib/schema.js";
1
+ import { type SourceDatasetConfig, type SourceTruthCheck } from "../../packages/project-model/index.js";
2
2
  export declare const DEFAULT_COMPILED_NAME = "dataset1";
3
- export declare const DEFAULT_COMPILED_CHECK_QUESTION_PLACEHOLDER = "A question you can already verify from this dataset";
3
+ export declare const DEFAULT_COMPILED_CHECK_QUESTION_PLACEHOLDER = "A question you can already verify from this source folder";
4
4
  export declare const DEFAULT_COMPILED_CHECK_ANSWER_PLACEHOLDER = "The expected answer in plain English";
5
- export declare const DEFAULT_COMPILED_ABOUT_PLACEHOLDER = "Example: forward-demand metrics, board-prep questions, or chart reads from this dataset.";
5
+ export declare const DEFAULT_COMPILED_ABOUT_PLACEHOLDER = "Example: board-prep questions from these files, chart reads from this report, or tax review from these exports.";
6
6
  export declare const DEFAULT_DATASET_PATH_PLACEHOLDER = "./dataset1";
7
- export declare const DEFAULT_COMPILE_RETRY_ATTEMPTS = 1;
7
+ export declare const DEFAULT_COMPILE_RETRY_ATTEMPTS = 3;
8
8
  export declare const DEFAULT_SELF_IMPROVING_LOOPS = 3;
9
9
  export type CompileLoopMode = "once" | "retry" | "self-improving";
10
10
  export interface CompileLoopSelection {
11
11
  max_attempts?: number;
12
12
  max_loops?: number;
13
13
  }
14
+ export declare function normalizeDatasetPathForConfig(projectPath: string, value: string): string;
15
+ export declare function listDatasetFolderChoices(cwd?: string): Array<{
16
+ value: string;
17
+ label: string;
18
+ hint: string;
19
+ }>;
14
20
  export declare function defaultDatasetPathForPrompt(name: string, introStyle: "first" | "additional" | "edit", cwd?: string): string;
15
21
  export declare function datasetAboutPromptMessage(introStyle: "first" | "additional" | "edit"): string;
16
22
  export declare function resolveCompileLoopMode(maxAttempts?: number | null, maxLoops?: number | null): CompileLoopMode;
@@ -41,7 +47,6 @@ export declare function promptSingleCompiledConfig(options?: {
41
47
  initial?: Partial<Pick<SourceDatasetConfig, "name" | "path" | "about" | "checks" | "max_attempts" | "max_loops">>;
42
48
  fixedName?: string;
43
49
  skipAboutPrompt?: boolean;
44
- skipNamePrompt?: boolean;
45
50
  introStyle?: "first" | "additional" | "edit";
46
51
  selectedWorkflowLabel?: string;
47
52
  }): Promise<SourceDatasetConfig | null>;