@interf/compiler 0.3.4 → 0.4.0

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 (385) hide show
  1. package/README.md +131 -149
  2. package/builtin-workflows/interf/README.md +19 -0
  3. package/builtin-workflows/interf/compile/stages/shape/SKILL.md +28 -0
  4. package/builtin-workflows/interf/compile/stages/structure/SKILL.md +18 -0
  5. package/builtin-workflows/interf/compile/stages/summarize/SKILL.md +18 -0
  6. package/builtin-workflows/interf/improve/SKILL.md +18 -0
  7. package/builtin-workflows/interf/use/query/SKILL.md +28 -0
  8. package/builtin-workflows/interf/workflow.json +120 -0
  9. package/builtin-workflows/interf/workspace.schema.json +75 -0
  10. package/dist/bin.d.ts +0 -1
  11. package/dist/bin.js +0 -1
  12. package/dist/commands/compile-controller.d.ts +14 -0
  13. package/dist/commands/compile-controller.js +409 -0
  14. package/dist/commands/compile.d.ts +8 -9
  15. package/dist/commands/compile.js +151 -153
  16. package/dist/commands/create-workflow-wizard.d.ts +4 -2
  17. package/dist/commands/create-workflow-wizard.js +33 -31
  18. package/dist/commands/create.d.ts +0 -1
  19. package/dist/commands/create.js +15 -11
  20. package/dist/commands/default.d.ts +0 -1
  21. package/dist/commands/default.js +0 -1
  22. package/dist/commands/doctor.d.ts +0 -1
  23. package/dist/commands/doctor.js +1 -16
  24. package/dist/commands/executor-flow.d.ts +0 -1
  25. package/dist/commands/executor-flow.js +0 -1
  26. package/dist/commands/init.d.ts +0 -1
  27. package/dist/commands/init.js +71 -14
  28. package/dist/commands/list.d.ts +0 -1
  29. package/dist/commands/list.js +0 -1
  30. package/dist/commands/reset.d.ts +0 -1
  31. package/dist/commands/reset.js +0 -1
  32. package/dist/commands/source-config-wizard.d.ts +28 -7
  33. package/dist/commands/source-config-wizard.js +159 -63
  34. package/dist/commands/status.d.ts +0 -1
  35. package/dist/commands/status.js +0 -1
  36. package/dist/commands/test-flow.d.ts +20 -10
  37. package/dist/commands/test-flow.js +89 -23
  38. package/dist/commands/test.d.ts +0 -1
  39. package/dist/commands/test.js +36 -72
  40. package/dist/commands/verify.d.ts +0 -1
  41. package/dist/commands/verify.js +0 -1
  42. package/dist/commands/workspace-flow.d.ts +3 -3
  43. package/dist/commands/workspace-flow.js +30 -12
  44. package/dist/index.d.ts +5 -6
  45. package/dist/index.js +3 -4
  46. package/dist/lib/agent-args.d.ts +0 -1
  47. package/dist/lib/agent-args.js +0 -1
  48. package/dist/lib/agent-constants.d.ts +0 -1
  49. package/dist/lib/agent-constants.js +0 -1
  50. package/dist/lib/agent-detection.d.ts +0 -1
  51. package/dist/lib/agent-detection.js +0 -1
  52. package/dist/lib/agent-execution.d.ts +0 -1
  53. package/dist/lib/agent-execution.js +47 -12
  54. package/dist/lib/agent-logs.d.ts +0 -1
  55. package/dist/lib/agent-logs.js +0 -1
  56. package/dist/lib/agent-preflight.d.ts +0 -1
  57. package/dist/lib/agent-preflight.js +1 -2
  58. package/dist/lib/agent-render.d.ts +0 -1
  59. package/dist/lib/agent-render.js +0 -1
  60. package/dist/lib/agent-shells.d.ts +30 -3
  61. package/dist/lib/agent-shells.js +517 -54
  62. package/dist/lib/agent-status.d.ts +0 -1
  63. package/dist/lib/agent-status.js +0 -1
  64. package/dist/lib/agent-types.d.ts +0 -1
  65. package/dist/lib/agent-types.js +0 -1
  66. package/dist/lib/agents.d.ts +0 -9
  67. package/dist/lib/agents.js +0 -9
  68. package/dist/lib/chart-guidance.d.ts +1 -0
  69. package/dist/lib/chart-guidance.js +8 -0
  70. package/dist/lib/config.d.ts +0 -3
  71. package/dist/lib/config.js +0 -5
  72. package/dist/lib/discovery.d.ts +0 -1
  73. package/dist/lib/discovery.js +0 -1
  74. package/dist/lib/execution-profile.d.ts +0 -1
  75. package/dist/lib/execution-profile.js +0 -1
  76. package/dist/lib/executors.d.ts +0 -1
  77. package/dist/lib/executors.js +0 -1
  78. package/dist/lib/filesystem.d.ts +0 -1
  79. package/dist/lib/filesystem.js +0 -1
  80. package/dist/lib/interf-bootstrap.d.ts +0 -1
  81. package/dist/lib/interf-bootstrap.js +6 -2
  82. package/dist/lib/interf-detect.d.ts +2 -2
  83. package/dist/lib/interf-detect.js +25 -8
  84. package/dist/lib/interf-scaffold.d.ts +0 -1
  85. package/dist/lib/interf-scaffold.js +54 -21
  86. package/dist/lib/interf-workflow-package.d.ts +18 -1
  87. package/dist/lib/interf-workflow-package.js +164 -23
  88. package/dist/lib/interf.d.ts +1 -2
  89. package/dist/lib/interf.js +1 -2
  90. package/dist/lib/local-workflows.d.ts +10 -5
  91. package/dist/lib/local-workflows.js +208 -97
  92. package/dist/lib/logger.d.ts +0 -1
  93. package/dist/lib/logger.js +0 -1
  94. package/dist/lib/obsidian.d.ts +0 -1
  95. package/dist/lib/obsidian.js +0 -1
  96. package/dist/lib/parse.d.ts +0 -1
  97. package/dist/lib/parse.js +0 -1
  98. package/dist/lib/registry.d.ts +0 -1
  99. package/dist/lib/registry.js +0 -1
  100. package/dist/lib/runtime-acceptance.d.ts +0 -1
  101. package/dist/lib/runtime-acceptance.js +1 -2
  102. package/dist/lib/runtime-contracts.d.ts +0 -1
  103. package/dist/lib/runtime-contracts.js +14 -8
  104. package/dist/lib/runtime-paths.d.ts +0 -1
  105. package/dist/lib/runtime-paths.js +5 -10
  106. package/dist/lib/runtime-prompt.d.ts +0 -1
  107. package/dist/lib/runtime-prompt.js +8 -23
  108. package/dist/lib/runtime-reconcile.d.ts +0 -1
  109. package/dist/lib/runtime-reconcile.js +7 -3
  110. package/dist/lib/runtime-runs.d.ts +0 -1
  111. package/dist/lib/runtime-runs.js +4 -5
  112. package/dist/lib/runtime-types.d.ts +0 -1
  113. package/dist/lib/runtime-types.js +0 -1
  114. package/dist/lib/runtime.d.ts +0 -1
  115. package/dist/lib/runtime.js +0 -1
  116. package/dist/lib/schema.d.ts +356 -51
  117. package/dist/lib/schema.js +189 -54
  118. package/dist/lib/source-config.d.ts +17 -8
  119. package/dist/lib/source-config.js +125 -11
  120. package/dist/lib/state-artifacts.d.ts +0 -1
  121. package/dist/lib/state-artifacts.js +0 -1
  122. package/dist/lib/state-health.d.ts +0 -1
  123. package/dist/lib/state-health.js +2 -3
  124. package/dist/lib/state-io.d.ts +1 -1
  125. package/dist/lib/state-io.js +9 -10
  126. package/dist/lib/state-paths.d.ts +0 -1
  127. package/dist/lib/state-paths.js +5 -11
  128. package/dist/lib/state-view.d.ts +0 -1
  129. package/dist/lib/state-view.js +7 -8
  130. package/dist/lib/state.d.ts +0 -1
  131. package/dist/lib/state.js +0 -1
  132. package/dist/lib/summarize-plan.d.ts +0 -1
  133. package/dist/lib/summarize-plan.js +3 -3
  134. package/dist/lib/test-execution.d.ts +14 -0
  135. package/dist/lib/{benchmark-execution.js → test-execution.js} +122 -120
  136. package/dist/lib/test-matrices.d.ts +90 -0
  137. package/dist/lib/test-matrices.js +96 -0
  138. package/dist/lib/test-paths.d.ts +12 -0
  139. package/dist/lib/test-paths.js +44 -0
  140. package/dist/lib/test-profile-presets.d.ts +57 -0
  141. package/dist/lib/test-profile-presets.js +50 -0
  142. package/dist/lib/test-sandbox.d.ts +11 -0
  143. package/dist/lib/{benchmark-sandbox.js → test-sandbox.js} +18 -13
  144. package/dist/lib/test-specs.d.ts +7 -0
  145. package/dist/lib/test-specs.js +114 -0
  146. package/dist/lib/test-targets.d.ts +5 -0
  147. package/dist/lib/test-targets.js +38 -0
  148. package/dist/lib/test-types.d.ts +17 -0
  149. package/dist/lib/test-types.js +1 -0
  150. package/dist/lib/test.d.ts +4 -0
  151. package/dist/lib/test.js +3 -0
  152. package/dist/lib/user-config.d.ts +0 -1
  153. package/dist/lib/user-config.js +0 -1
  154. package/dist/lib/util.d.ts +0 -2
  155. package/dist/lib/util.js +0 -2
  156. package/dist/lib/validate-helpers.d.ts +0 -1
  157. package/dist/lib/validate-helpers.js +0 -1
  158. package/dist/lib/validate-workspace.d.ts +0 -1
  159. package/dist/lib/validate-workspace.js +34 -25
  160. package/dist/lib/validate.d.ts +0 -1
  161. package/dist/lib/validate.js +55 -9
  162. package/dist/lib/workflow-abi.d.ts +138 -0
  163. package/dist/lib/workflow-abi.js +181 -0
  164. package/dist/lib/workflow-definitions.d.ts +26 -5
  165. package/dist/lib/workflow-definitions.js +105 -168
  166. package/dist/lib/workflow-helpers.d.ts +1 -2
  167. package/dist/lib/workflow-helpers.js +32 -21
  168. package/dist/lib/workflow-improvement.d.ts +22 -0
  169. package/dist/lib/workflow-improvement.js +396 -0
  170. package/dist/lib/workflow-review-paths.d.ts +10 -0
  171. package/dist/lib/workflow-review-paths.js +27 -0
  172. package/dist/lib/workflow-stage-runner.d.ts +1 -1
  173. package/dist/lib/workflow-stage-runner.js +4 -1
  174. package/dist/lib/workflows.d.ts +1 -2
  175. package/dist/lib/workflows.js +1 -2
  176. package/dist/lib/workspace-compile.d.ts +0 -1
  177. package/dist/lib/workspace-compile.js +146 -109
  178. package/dist/lib/workspace-home.d.ts +5 -0
  179. package/dist/lib/workspace-home.js +32 -0
  180. package/dist/lib/workspace-layout.d.ts +2 -0
  181. package/dist/lib/workspace-layout.js +60 -0
  182. package/dist/lib/workspace-paths.d.ts +41 -0
  183. package/dist/lib/workspace-paths.js +107 -0
  184. package/dist/lib/workspace-raw.d.ts +20 -2
  185. package/dist/lib/workspace-raw.js +6 -8
  186. package/dist/lib/workspace-reset.d.ts +0 -1
  187. package/dist/lib/workspace-reset.js +27 -5
  188. package/dist/lib/workspace-schema.d.ts +1 -10
  189. package/dist/lib/workspace-schema.js +16 -74
  190. package/package.json +16 -15
  191. package/dist/bin.d.ts.map +0 -1
  192. package/dist/bin.js.map +0 -1
  193. package/dist/commands/compile.d.ts.map +0 -1
  194. package/dist/commands/compile.js.map +0 -1
  195. package/dist/commands/create-workflow-wizard.d.ts.map +0 -1
  196. package/dist/commands/create-workflow-wizard.js.map +0 -1
  197. package/dist/commands/create.d.ts.map +0 -1
  198. package/dist/commands/create.js.map +0 -1
  199. package/dist/commands/default.d.ts.map +0 -1
  200. package/dist/commands/default.js.map +0 -1
  201. package/dist/commands/doctor.d.ts.map +0 -1
  202. package/dist/commands/doctor.js.map +0 -1
  203. package/dist/commands/executor-flow.d.ts.map +0 -1
  204. package/dist/commands/executor-flow.js.map +0 -1
  205. package/dist/commands/init.d.ts.map +0 -1
  206. package/dist/commands/init.js.map +0 -1
  207. package/dist/commands/list.d.ts.map +0 -1
  208. package/dist/commands/list.js.map +0 -1
  209. package/dist/commands/reset.d.ts.map +0 -1
  210. package/dist/commands/reset.js.map +0 -1
  211. package/dist/commands/source-config-wizard.d.ts.map +0 -1
  212. package/dist/commands/source-config-wizard.js.map +0 -1
  213. package/dist/commands/status.d.ts.map +0 -1
  214. package/dist/commands/status.js.map +0 -1
  215. package/dist/commands/test-flow.d.ts.map +0 -1
  216. package/dist/commands/test-flow.js.map +0 -1
  217. package/dist/commands/test.d.ts.map +0 -1
  218. package/dist/commands/test.js.map +0 -1
  219. package/dist/commands/verify.d.ts.map +0 -1
  220. package/dist/commands/verify.js.map +0 -1
  221. package/dist/commands/workspace-flow.d.ts.map +0 -1
  222. package/dist/commands/workspace-flow.js.map +0 -1
  223. package/dist/index.d.ts.map +0 -1
  224. package/dist/index.js.map +0 -1
  225. package/dist/lib/agent-args.d.ts.map +0 -1
  226. package/dist/lib/agent-args.js.map +0 -1
  227. package/dist/lib/agent-constants.d.ts.map +0 -1
  228. package/dist/lib/agent-constants.js.map +0 -1
  229. package/dist/lib/agent-detection.d.ts.map +0 -1
  230. package/dist/lib/agent-detection.js.map +0 -1
  231. package/dist/lib/agent-execution.d.ts.map +0 -1
  232. package/dist/lib/agent-execution.js.map +0 -1
  233. package/dist/lib/agent-logs.d.ts.map +0 -1
  234. package/dist/lib/agent-logs.js.map +0 -1
  235. package/dist/lib/agent-preflight.d.ts.map +0 -1
  236. package/dist/lib/agent-preflight.js.map +0 -1
  237. package/dist/lib/agent-render.d.ts.map +0 -1
  238. package/dist/lib/agent-render.js.map +0 -1
  239. package/dist/lib/agent-shells.d.ts.map +0 -1
  240. package/dist/lib/agent-shells.js.map +0 -1
  241. package/dist/lib/agent-skills.d.ts +0 -21
  242. package/dist/lib/agent-skills.d.ts.map +0 -1
  243. package/dist/lib/agent-skills.js +0 -215
  244. package/dist/lib/agent-skills.js.map +0 -1
  245. package/dist/lib/agent-status.d.ts.map +0 -1
  246. package/dist/lib/agent-status.js.map +0 -1
  247. package/dist/lib/agent-types.d.ts.map +0 -1
  248. package/dist/lib/agent-types.js.map +0 -1
  249. package/dist/lib/agents.d.ts.map +0 -1
  250. package/dist/lib/agents.js.map +0 -1
  251. package/dist/lib/benchmark-execution.d.ts +0 -13
  252. package/dist/lib/benchmark-execution.d.ts.map +0 -1
  253. package/dist/lib/benchmark-execution.js.map +0 -1
  254. package/dist/lib/benchmark-paths.d.ts +0 -13
  255. package/dist/lib/benchmark-paths.d.ts.map +0 -1
  256. package/dist/lib/benchmark-paths.js +0 -44
  257. package/dist/lib/benchmark-paths.js.map +0 -1
  258. package/dist/lib/benchmark-sandbox.d.ts +0 -12
  259. package/dist/lib/benchmark-sandbox.d.ts.map +0 -1
  260. package/dist/lib/benchmark-sandbox.js.map +0 -1
  261. package/dist/lib/benchmark-specs.d.ts +0 -8
  262. package/dist/lib/benchmark-specs.d.ts.map +0 -1
  263. package/dist/lib/benchmark-specs.js +0 -115
  264. package/dist/lib/benchmark-specs.js.map +0 -1
  265. package/dist/lib/benchmark-targets.d.ts +0 -5
  266. package/dist/lib/benchmark-targets.d.ts.map +0 -1
  267. package/dist/lib/benchmark-targets.js +0 -38
  268. package/dist/lib/benchmark-targets.js.map +0 -1
  269. package/dist/lib/benchmark-types.d.ts +0 -18
  270. package/dist/lib/benchmark-types.d.ts.map +0 -1
  271. package/dist/lib/benchmark-types.js +0 -2
  272. package/dist/lib/benchmark-types.js.map +0 -1
  273. package/dist/lib/benchmark.d.ts +0 -5
  274. package/dist/lib/benchmark.d.ts.map +0 -1
  275. package/dist/lib/benchmark.js +0 -4
  276. package/dist/lib/benchmark.js.map +0 -1
  277. package/dist/lib/config.d.ts.map +0 -1
  278. package/dist/lib/config.js.map +0 -1
  279. package/dist/lib/discovery.d.ts.map +0 -1
  280. package/dist/lib/discovery.js.map +0 -1
  281. package/dist/lib/eval-packs.d.ts +0 -158
  282. package/dist/lib/eval-packs.d.ts.map +0 -1
  283. package/dist/lib/eval-packs.js +0 -149
  284. package/dist/lib/eval-packs.js.map +0 -1
  285. package/dist/lib/execution-profile.d.ts.map +0 -1
  286. package/dist/lib/execution-profile.js.map +0 -1
  287. package/dist/lib/executors.d.ts.map +0 -1
  288. package/dist/lib/executors.js.map +0 -1
  289. package/dist/lib/filesystem.d.ts.map +0 -1
  290. package/dist/lib/filesystem.js.map +0 -1
  291. package/dist/lib/interf-bootstrap.d.ts.map +0 -1
  292. package/dist/lib/interf-bootstrap.js.map +0 -1
  293. package/dist/lib/interf-detect.d.ts.map +0 -1
  294. package/dist/lib/interf-detect.js.map +0 -1
  295. package/dist/lib/interf-scaffold.d.ts.map +0 -1
  296. package/dist/lib/interf-scaffold.js.map +0 -1
  297. package/dist/lib/interf-workflow-package.d.ts.map +0 -1
  298. package/dist/lib/interf-workflow-package.js.map +0 -1
  299. package/dist/lib/interf.d.ts.map +0 -1
  300. package/dist/lib/interf.js.map +0 -1
  301. package/dist/lib/local-workflows.d.ts.map +0 -1
  302. package/dist/lib/local-workflows.js.map +0 -1
  303. package/dist/lib/logger.d.ts.map +0 -1
  304. package/dist/lib/logger.js.map +0 -1
  305. package/dist/lib/obsidian.d.ts.map +0 -1
  306. package/dist/lib/obsidian.js.map +0 -1
  307. package/dist/lib/parse.d.ts.map +0 -1
  308. package/dist/lib/parse.js.map +0 -1
  309. package/dist/lib/registry.d.ts.map +0 -1
  310. package/dist/lib/registry.js.map +0 -1
  311. package/dist/lib/runtime-acceptance.d.ts.map +0 -1
  312. package/dist/lib/runtime-acceptance.js.map +0 -1
  313. package/dist/lib/runtime-contracts.d.ts.map +0 -1
  314. package/dist/lib/runtime-contracts.js.map +0 -1
  315. package/dist/lib/runtime-paths.d.ts.map +0 -1
  316. package/dist/lib/runtime-paths.js.map +0 -1
  317. package/dist/lib/runtime-prompt.d.ts.map +0 -1
  318. package/dist/lib/runtime-prompt.js.map +0 -1
  319. package/dist/lib/runtime-reconcile.d.ts.map +0 -1
  320. package/dist/lib/runtime-reconcile.js.map +0 -1
  321. package/dist/lib/runtime-runs.d.ts.map +0 -1
  322. package/dist/lib/runtime-runs.js.map +0 -1
  323. package/dist/lib/runtime-types.d.ts.map +0 -1
  324. package/dist/lib/runtime-types.js.map +0 -1
  325. package/dist/lib/runtime.d.ts.map +0 -1
  326. package/dist/lib/runtime.js.map +0 -1
  327. package/dist/lib/schema.d.ts.map +0 -1
  328. package/dist/lib/schema.js.map +0 -1
  329. package/dist/lib/source-config.d.ts.map +0 -1
  330. package/dist/lib/source-config.js.map +0 -1
  331. package/dist/lib/state-artifacts.d.ts.map +0 -1
  332. package/dist/lib/state-artifacts.js.map +0 -1
  333. package/dist/lib/state-health.d.ts.map +0 -1
  334. package/dist/lib/state-health.js.map +0 -1
  335. package/dist/lib/state-io.d.ts.map +0 -1
  336. package/dist/lib/state-io.js.map +0 -1
  337. package/dist/lib/state-paths.d.ts.map +0 -1
  338. package/dist/lib/state-paths.js.map +0 -1
  339. package/dist/lib/state-view.d.ts.map +0 -1
  340. package/dist/lib/state-view.js.map +0 -1
  341. package/dist/lib/state.d.ts.map +0 -1
  342. package/dist/lib/state.js.map +0 -1
  343. package/dist/lib/summarize-plan.d.ts.map +0 -1
  344. package/dist/lib/summarize-plan.js.map +0 -1
  345. package/dist/lib/user-config.d.ts.map +0 -1
  346. package/dist/lib/user-config.js.map +0 -1
  347. package/dist/lib/util.d.ts.map +0 -1
  348. package/dist/lib/util.js.map +0 -1
  349. package/dist/lib/validate-helpers.d.ts.map +0 -1
  350. package/dist/lib/validate-helpers.js.map +0 -1
  351. package/dist/lib/validate-workspace.d.ts.map +0 -1
  352. package/dist/lib/validate-workspace.js.map +0 -1
  353. package/dist/lib/validate.d.ts.map +0 -1
  354. package/dist/lib/validate.js.map +0 -1
  355. package/dist/lib/workflow-definitions.d.ts.map +0 -1
  356. package/dist/lib/workflow-definitions.js.map +0 -1
  357. package/dist/lib/workflow-helpers.d.ts.map +0 -1
  358. package/dist/lib/workflow-helpers.js.map +0 -1
  359. package/dist/lib/workflow-stage-runner.d.ts.map +0 -1
  360. package/dist/lib/workflow-stage-runner.js.map +0 -1
  361. package/dist/lib/workflow-starter-docs.d.ts +0 -7
  362. package/dist/lib/workflow-starter-docs.d.ts.map +0 -1
  363. package/dist/lib/workflow-starter-docs.js +0 -3
  364. package/dist/lib/workflow-starter-docs.js.map +0 -1
  365. package/dist/lib/workflows.d.ts.map +0 -1
  366. package/dist/lib/workflows.js.map +0 -1
  367. package/dist/lib/workspace-compile.d.ts.map +0 -1
  368. package/dist/lib/workspace-compile.js.map +0 -1
  369. package/dist/lib/workspace-docs.d.ts +0 -3
  370. package/dist/lib/workspace-docs.d.ts.map +0 -1
  371. package/dist/lib/workspace-docs.js +0 -82
  372. package/dist/lib/workspace-docs.js.map +0 -1
  373. package/dist/lib/workspace-raw.d.ts.map +0 -1
  374. package/dist/lib/workspace-raw.js.map +0 -1
  375. package/dist/lib/workspace-reset.d.ts.map +0 -1
  376. package/dist/lib/workspace-reset.js.map +0 -1
  377. package/dist/lib/workspace-schema.d.ts.map +0 -1
  378. package/dist/lib/workspace-schema.js.map +0 -1
  379. package/skills/benchmark/SKILL.md +0 -122
  380. package/skills/workflow/create/SKILL.md +0 -141
  381. package/skills/workspace/shape/SKILL.md +0 -15
  382. package/skills/workspace/structure/SKILL.md +0 -15
  383. package/skills/workspace/summarize/SKILL.md +0 -15
  384. package/templates/workspace/README.md +0 -24
  385. package/templates/workspace/interfignore +0 -2
@@ -0,0 +1,96 @@
1
+ import { z } from "zod";
2
+ import { WorkflowIdPattern } from "./schema.js";
3
+ import { TestProfilePresetIdSchema, resolveTestProfilePreset, } from "./test-profile-presets.js";
4
+ export const TestMatrixAgentSchema = z.enum(["claude-code", "codex"]);
5
+ const TestMatrixProfileInputSchema = z.object({
6
+ id: z.string().regex(WorkflowIdPattern),
7
+ preset: TestProfilePresetIdSchema.optional(),
8
+ agent: TestMatrixAgentSchema.optional(),
9
+ model: z.string().min(1).optional(),
10
+ profile: z.string().min(1).optional(),
11
+ effort: z.string().min(1).optional(),
12
+ timeout_ms: z.number().int().positive().optional(),
13
+ }).superRefine((value, ctx) => {
14
+ if (!value.preset && !value.agent) {
15
+ ctx.addIssue({
16
+ code: z.ZodIssueCode.custom,
17
+ path: ["agent"],
18
+ message: "Test-matrix profiles need either `agent` or `preset`.",
19
+ });
20
+ }
21
+ if (value.preset) {
22
+ for (const field of ["agent", "model", "profile", "effort", "timeout_ms"]) {
23
+ if (value[field] !== undefined) {
24
+ ctx.addIssue({
25
+ code: z.ZodIssueCode.custom,
26
+ path: [field],
27
+ message: `Test profile presets own \`${field}\`; remove the inline override or stop using \`preset\`.`,
28
+ });
29
+ }
30
+ }
31
+ }
32
+ });
33
+ export const TestMatrixProfileSchema = TestMatrixProfileInputSchema.transform((value) => {
34
+ if (!value.preset) {
35
+ return {
36
+ ...value,
37
+ agent: value.agent,
38
+ };
39
+ }
40
+ const preset = resolveTestProfilePreset(value.preset);
41
+ return {
42
+ ...value,
43
+ agent: preset.agent,
44
+ model: preset.model,
45
+ profile: preset.profile,
46
+ effort: preset.effort,
47
+ timeout_ms: preset.timeout_ms,
48
+ };
49
+ });
50
+ export const TestMatrixRetryPolicySchema = z.object({
51
+ max_attempts_per_profile: z.number().int().min(1).max(5).optional(),
52
+ });
53
+ export const TestMatrixWorkspaceSchema = z.string().regex(WorkflowIdPattern);
54
+ export const TestMatrixSchema = z.object({
55
+ id: z.string().regex(WorkflowIdPattern),
56
+ name: z.string().min(1),
57
+ source_path: z.string().min(1),
58
+ compile_profiles: z.array(TestMatrixProfileSchema).min(1),
59
+ retry_policy: TestMatrixRetryPolicySchema.optional(),
60
+ workspaces: z.array(TestMatrixWorkspaceSchema).min(1),
61
+ }).superRefine((value, ctx) => {
62
+ const duplicateProfileIds = findDuplicates(value.compile_profiles.map((profile) => profile.id));
63
+ for (const id of duplicateProfileIds) {
64
+ ctx.addIssue({
65
+ code: z.ZodIssueCode.custom,
66
+ path: ["compile_profiles"],
67
+ message: `Duplicate compile profile id in test matrix: ${id}`,
68
+ });
69
+ }
70
+ const duplicateWorkspaceIds = findDuplicates(value.workspaces);
71
+ for (const id of duplicateWorkspaceIds) {
72
+ ctx.addIssue({
73
+ code: z.ZodIssueCode.custom,
74
+ path: ["workspaces"],
75
+ message: `Duplicate workspace name in test matrix: ${id}`,
76
+ });
77
+ }
78
+ });
79
+ function findDuplicates(values) {
80
+ const seen = new Set();
81
+ const duplicates = new Set();
82
+ for (const value of values) {
83
+ if (seen.has(value))
84
+ duplicates.add(value);
85
+ seen.add(value);
86
+ }
87
+ return Array.from(duplicates.values()).sort();
88
+ }
89
+ export function testMatrixProfileToExecutionProfile(profile) {
90
+ return {
91
+ model: profile.model ?? null,
92
+ profile: profile.profile ?? null,
93
+ effort: profile.effort ?? null,
94
+ timeoutMs: profile.timeout_ms ?? null,
95
+ };
96
+ }
@@ -0,0 +1,12 @@
1
+ import type { TestTargetType } from "./test-types.js";
2
+ export declare const TEST_SPEC_EXTENSIONS: Set<string>;
3
+ export declare function testSpecRootPath(sourcePath: string): string;
4
+ export declare function testSpecTypePath(sourcePath: string, type: TestTargetType): string;
5
+ export declare function targetTestRunsPath(workspacePath: string, type: TestTargetType): string;
6
+ export declare function targetTestRunGitignorePath(workspacePath: string, type: TestTargetType): string;
7
+ export declare function targetTestSandboxesPath(workspacePath: string, type: TestTargetType): string;
8
+ export declare function targetTestSandboxGitignorePath(workspacePath: string, type: TestTargetType): string;
9
+ export declare function testSpecFilePath(sourcePath: string, type: TestTargetType, id: string): string;
10
+ export declare function normalizeTestId(input: string): string;
11
+ export declare function assertTestId(id: string): void;
12
+ export declare function assertWritableTestSpecPath(filePath: string): void;
@@ -0,0 +1,44 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { targetTestRunsRootForWorkspace, targetTestSandboxesRootForWorkspace, } from "./workspace-paths.js";
4
+ const TEST_ID_PATTERN = /^[a-z0-9][a-z0-9-]{0,79}$/;
5
+ export const TEST_SPEC_EXTENSIONS = new Set([".json"]);
6
+ export function testSpecRootPath(sourcePath) {
7
+ return join(sourcePath, "interf", "tests");
8
+ }
9
+ export function testSpecTypePath(sourcePath, type) {
10
+ return join(testSpecRootPath(sourcePath), type);
11
+ }
12
+ export function targetTestRunsPath(workspacePath, type) {
13
+ return join(targetTestRunsRootForWorkspace(workspacePath), type);
14
+ }
15
+ export function targetTestRunGitignorePath(workspacePath, type) {
16
+ return join(targetTestRunsPath(workspacePath, type), ".gitignore");
17
+ }
18
+ export function targetTestSandboxesPath(workspacePath, type) {
19
+ return join(targetTestSandboxesRootForWorkspace(workspacePath), type);
20
+ }
21
+ export function targetTestSandboxGitignorePath(workspacePath, type) {
22
+ return join(targetTestSandboxesPath(workspacePath, type), ".gitignore");
23
+ }
24
+ export function testSpecFilePath(sourcePath, type, id) {
25
+ return join(testSpecTypePath(sourcePath, type), `${id}.json`);
26
+ }
27
+ export function normalizeTestId(input) {
28
+ return input
29
+ .toLowerCase()
30
+ .trim()
31
+ .replace(/[^a-z0-9]+/g, "-")
32
+ .replace(/^-+|-+$/g, "")
33
+ .slice(0, 80);
34
+ }
35
+ export function assertTestId(id) {
36
+ if (!TEST_ID_PATTERN.test(id)) {
37
+ throw new Error(`Invalid test id: ${id}`);
38
+ }
39
+ }
40
+ export function assertWritableTestSpecPath(filePath) {
41
+ if (existsSync(filePath)) {
42
+ throw new Error(`Test spec already exists: ${filePath}`);
43
+ }
44
+ }
@@ -0,0 +1,57 @@
1
+ import { z } from "zod";
2
+ declare const TestProfilePresetValueSchema: z.ZodObject<{
3
+ agent: z.ZodEnum<{
4
+ "claude-code": "claude-code";
5
+ codex: "codex";
6
+ }>;
7
+ model: z.ZodOptional<z.ZodString>;
8
+ profile: z.ZodOptional<z.ZodString>;
9
+ effort: z.ZodOptional<z.ZodString>;
10
+ timeout_ms: z.ZodOptional<z.ZodNumber>;
11
+ label: z.ZodString;
12
+ }, z.core.$strip>;
13
+ export declare const TestProfilePresetIds: readonly ["release-claude-high", "release-codex-high", "tier1-max-claude", "tier1-max-codex"];
14
+ export declare const TestProfilePresetIdSchema: z.ZodEnum<{
15
+ "release-claude-high": "release-claude-high";
16
+ "release-codex-high": "release-codex-high";
17
+ "tier1-max-claude": "tier1-max-claude";
18
+ "tier1-max-codex": "tier1-max-codex";
19
+ }>;
20
+ export declare const TestProfilePresets: {
21
+ readonly "release-claude-high": {
22
+ agent: "claude-code" | "codex";
23
+ label: string;
24
+ model?: string | undefined;
25
+ profile?: string | undefined;
26
+ effort?: string | undefined;
27
+ timeout_ms?: number | undefined;
28
+ };
29
+ readonly "release-codex-high": {
30
+ agent: "claude-code" | "codex";
31
+ label: string;
32
+ model?: string | undefined;
33
+ profile?: string | undefined;
34
+ effort?: string | undefined;
35
+ timeout_ms?: number | undefined;
36
+ };
37
+ readonly "tier1-max-claude": {
38
+ agent: "claude-code" | "codex";
39
+ label: string;
40
+ model?: string | undefined;
41
+ profile?: string | undefined;
42
+ effort?: string | undefined;
43
+ timeout_ms?: number | undefined;
44
+ };
45
+ readonly "tier1-max-codex": {
46
+ agent: "claude-code" | "codex";
47
+ label: string;
48
+ model?: string | undefined;
49
+ profile?: string | undefined;
50
+ effort?: string | undefined;
51
+ timeout_ms?: number | undefined;
52
+ };
53
+ };
54
+ export type TestProfilePresetId = z.infer<typeof TestProfilePresetIdSchema>;
55
+ export type TestProfilePresetValue = z.infer<typeof TestProfilePresetValueSchema>;
56
+ export declare function resolveTestProfilePreset(id: TestProfilePresetId): TestProfilePresetValue;
57
+ export {};
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ const TestProfilePresetAgentSchema = z.enum(["claude-code", "codex"]);
3
+ const TestProfilePresetValueSchema = z.object({
4
+ agent: TestProfilePresetAgentSchema,
5
+ model: z.string().min(1).optional(),
6
+ profile: z.string().min(1).optional(),
7
+ effort: z.string().min(1).optional(),
8
+ timeout_ms: z.number().int().positive().optional(),
9
+ label: z.string().min(1),
10
+ });
11
+ export const TestProfilePresetIds = [
12
+ "release-claude-high",
13
+ "release-codex-high",
14
+ "tier1-max-claude",
15
+ "tier1-max-codex",
16
+ ];
17
+ export const TestProfilePresetIdSchema = z.enum(TestProfilePresetIds);
18
+ export const TestProfilePresets = {
19
+ "release-claude-high": TestProfilePresetValueSchema.parse({
20
+ agent: "claude-code",
21
+ model: "claude-sonnet-4-6",
22
+ effort: "high",
23
+ timeout_ms: 480000,
24
+ label: "Claude Code (Claude Sonnet 4.6, high)",
25
+ }),
26
+ "release-codex-high": TestProfilePresetValueSchema.parse({
27
+ agent: "codex",
28
+ model: "gpt-5.4-mini",
29
+ effort: "high",
30
+ timeout_ms: 480000,
31
+ label: "Codex (GPT-5.4 Mini, high)",
32
+ }),
33
+ "tier1-max-claude": TestProfilePresetValueSchema.parse({
34
+ agent: "claude-code",
35
+ model: "claude-opus-4-6[1m]",
36
+ effort: "max",
37
+ timeout_ms: 480000,
38
+ label: "Claude Code (Claude Opus 4.6 1M, max)",
39
+ }),
40
+ "tier1-max-codex": TestProfilePresetValueSchema.parse({
41
+ agent: "codex",
42
+ model: "gpt-5.4",
43
+ effort: "xhigh",
44
+ timeout_ms: 480000,
45
+ label: "Codex (GPT-5.4, xhigh)",
46
+ }),
47
+ };
48
+ export function resolveTestProfilePreset(id) {
49
+ return TestProfilePresets[id];
50
+ }
@@ -0,0 +1,11 @@
1
+ import type { TestTargetCandidate } from "./test-types.js";
2
+ export type TestSandboxRetentionMode = "on-failure" | "always";
3
+ export interface TestSandbox {
4
+ rootPath: string;
5
+ rawPath: string;
6
+ targetPath: string;
7
+ workspacePath: string | null;
8
+ preserve(destinationPath: string): string;
9
+ cleanup(): void;
10
+ }
11
+ export declare function createTestSandbox(target: TestTargetCandidate): TestSandbox;
@@ -1,26 +1,30 @@
1
- import { cpSync, existsSync, mkdirSync, mkdtempSync, renameSync, rmSync, writeFileSync, } from "node:fs";
1
+ import { cpSync, existsSync, mkdirSync, mkdtempSync, renameSync, rmSync, } from "node:fs";
2
2
  import { tmpdir } from "node:os";
3
3
  import { dirname, join, relative, sep } from "node:path";
4
4
  import { refreshWorkspaceBootstrapGuidance } from "./interf-bootstrap.js";
5
5
  import { readInterfConfig, resolveSourceControlPath, resolveWorkspaceRawPath } from "./interf.js";
6
+ import { projectRawTestQueryShell } from "./agent-shells.js";
7
+ import { saveWorkspaceInterfConfig } from "./source-config.js";
6
8
  import { refreshWorkspaceArtifacts } from "./state.js";
7
9
  import { projectRawSnapshot } from "./workspace-raw.js";
10
+ import { testRootForWorkspace, stageExecutionShellsRoot, targetTestSandboxesRootForWorkspace, workflowImprovementLoopsRoot, workspaceQueryAcceptanceRoot, workspaceRuntimeLogsRoot, } from "./workspace-paths.js";
8
11
  function toPortableRelativePath(fromPath, toPath) {
9
12
  return relative(fromPath, toPath).split(sep).join("/");
10
13
  }
11
- function writeWorkspaceConfig(workspacePath, config) {
12
- writeFileSync(join(workspacePath, "interf.json"), `${JSON.stringify(config, null, 2)}\n`);
13
- }
14
14
  function sanitizeWorkspaceArtifacts(workspacePath) {
15
- for (const relativePath of [
16
- ".interf/logs",
17
- ".interf/query-acceptance",
15
+ for (const absolutePath of [
16
+ testRootForWorkspace(workspacePath),
17
+ targetTestSandboxesRootForWorkspace(workspacePath),
18
+ stageExecutionShellsRoot(workspacePath),
19
+ workflowImprovementLoopsRoot(workspacePath),
20
+ workspaceRuntimeLogsRoot(workspacePath),
21
+ workspaceQueryAcceptanceRoot(workspacePath),
18
22
  ]) {
19
- rmSync(join(workspacePath, relativePath), { recursive: true, force: true });
23
+ rmSync(absolutePath, { recursive: true, force: true });
20
24
  }
21
25
  }
22
- export function createBenchmarkSandbox(target) {
23
- let sandboxRoot = mkdtempSync(join(tmpdir(), "interf-benchmark-sandbox-"));
26
+ export function createTestSandbox(target) {
27
+ let sandboxRoot = mkdtempSync(join(tmpdir(), "interf-test-sandbox-"));
24
28
  let preserved = false;
25
29
  const sandboxWorkspacePath = () => (target.type === "workspace"
26
30
  ? join(sandboxRoot, "interf", "workspaces", target.name)
@@ -30,7 +34,7 @@ export function createBenchmarkSandbox(target) {
30
34
  : join(sandboxRoot, "raw"));
31
35
  const sandboxTargetPath = () => (target.type === "workspace"
32
36
  ? join(sandboxRoot, "interf", "workspaces", target.name)
33
- : join(sandboxRoot, "raw"));
37
+ : sandboxRoot);
34
38
  try {
35
39
  if (target.type === "workspace") {
36
40
  mkdirSync(dirname(sandboxTargetPath()), { recursive: true });
@@ -51,8 +55,9 @@ export function createBenchmarkSandbox(target) {
51
55
  preserveTimestamps: false,
52
56
  });
53
57
  }
54
- writeWorkspaceConfig(sandboxTargetPath(), {
58
+ saveWorkspaceInterfConfig(sandboxTargetPath(), {
55
59
  ...sandboxConfig,
60
+ checks: [],
56
61
  source: {
57
62
  path: toPortableRelativePath(sandboxTargetPath(), sandboxRawPath()),
58
63
  },
@@ -69,6 +74,7 @@ export function createBenchmarkSandbox(target) {
69
74
  prune: false,
70
75
  preserveTimestamps: false,
71
76
  });
77
+ projectRawTestQueryShell(sandboxTargetPath());
72
78
  }
73
79
  }
74
80
  catch (error) {
@@ -103,4 +109,3 @@ export function createBenchmarkSandbox(target) {
103
109
  },
104
110
  };
105
111
  }
106
- //# sourceMappingURL=benchmark-sandbox.js.map
@@ -0,0 +1,7 @@
1
+ import type { TestSpec, TestTargetType, LoadedTestSpec } from "./test-types.js";
2
+ export declare function listTestSpecs(sourcePath: string, type: TestTargetType): LoadedTestSpec[];
3
+ export declare function loadTestSpec(sourcePath: string, type: TestTargetType, id: string): LoadedTestSpec | null;
4
+ export declare function loadTestSpecFromFile(filePath: string): LoadedTestSpec | null;
5
+ export declare function writeTestSpec(sourcePath: string, spec: TestSpec & {
6
+ id?: string;
7
+ }): string;
@@ -0,0 +1,114 @@
1
+ import { existsSync, mkdirSync, readdirSync, writeFileSync, } from "node:fs";
2
+ import { basename, extname, join } from "node:path";
3
+ import { readJsonFileWithSchema } from "./parse.js";
4
+ import { TestSpecSchema } from "./schema.js";
5
+ import { TEST_SPEC_EXTENSIONS, assertTestId, assertWritableTestSpecPath, testSpecFilePath, testSpecTypePath, normalizeTestId, } from "./test-paths.js";
6
+ function readTestSpecFile(filePath) {
7
+ const extension = extname(filePath).toLowerCase();
8
+ if (!TEST_SPEC_EXTENSIONS.has(extension))
9
+ return null;
10
+ const parsed = readJsonFileWithSchema(filePath, "test spec", TestSpecSchema);
11
+ if (!parsed)
12
+ return null;
13
+ return {
14
+ ...parsed,
15
+ id: basename(filePath, extension),
16
+ filePath,
17
+ };
18
+ }
19
+ function serializeTestSpec(spec) {
20
+ return {
21
+ type: spec.type,
22
+ name: spec.name,
23
+ ...(spec.description ? { description: spec.description } : {}),
24
+ checks: spec.cases.map((testCase) => ({
25
+ id: testCase.id,
26
+ question: testCase.question,
27
+ ...(testCase.file ? { file: testCase.file } : {}),
28
+ ...(testCase.answer ? { answer: testCase.answer } : {}),
29
+ ...(testCase.strictness ? { strictness: testCase.strictness } : {}),
30
+ ...(testCase.expect ? { expect: testCase.expect } : {}),
31
+ })),
32
+ };
33
+ }
34
+ export function listTestSpecs(sourcePath, type) {
35
+ const dirPath = testSpecTypePath(sourcePath, type);
36
+ if (!existsSync(dirPath))
37
+ return [];
38
+ return readdirSync(dirPath)
39
+ .map((entry) => join(dirPath, entry))
40
+ .filter((filePath) => TEST_SPEC_EXTENSIONS.has(extname(filePath).toLowerCase()))
41
+ .map((filePath) => readTestSpecFile(filePath))
42
+ .filter((value) => value !== null)
43
+ .sort((left, right) => left.name.localeCompare(right.name) || left.id.localeCompare(right.id));
44
+ }
45
+ export function loadTestSpec(sourcePath, type, id) {
46
+ const normalizedId = normalizeTestId(id);
47
+ const filePath = join(testSpecTypePath(sourcePath, type), `${normalizedId}.json`);
48
+ if (!existsSync(filePath))
49
+ return null;
50
+ return readTestSpecFile(filePath);
51
+ }
52
+ export function loadTestSpecFromFile(filePath) {
53
+ return readTestSpecFile(filePath);
54
+ }
55
+ export function writeTestSpec(sourcePath, spec) {
56
+ const id = normalizeTestId(spec.id ?? spec.name);
57
+ assertTestId(id);
58
+ const dirPath = testSpecTypePath(sourcePath, spec.type);
59
+ mkdirSync(dirPath, { recursive: true });
60
+ const existingPath = join(dirPath, `${id}.json`);
61
+ if (existsSync(existingPath)) {
62
+ throw new Error(`Test spec already exists: ${existingPath}`);
63
+ }
64
+ const filePath = testSpecFilePath(sourcePath, spec.type, id);
65
+ assertWritableTestSpecPath(filePath);
66
+ const normalizedSpec = {
67
+ type: spec.type,
68
+ name: spec.name.trim(),
69
+ ...(spec.description && spec.description.trim().length > 0
70
+ ? { description: spec.description.trim() }
71
+ : {}),
72
+ cases: spec.cases.map((testCase) => ({
73
+ id: normalizeTestId(testCase.id),
74
+ question: testCase.question.trim(),
75
+ ...(testCase.file && testCase.file.trim().length > 0
76
+ ? { file: testCase.file.trim() }
77
+ : {}),
78
+ ...(testCase.answer && testCase.answer.trim().length > 0
79
+ ? { answer: testCase.answer.trim() }
80
+ : {}),
81
+ ...(testCase.strictness && testCase.strictness.trim().length > 0
82
+ ? { strictness: testCase.strictness.trim() }
83
+ : {}),
84
+ ...(testCase.expect
85
+ ? {
86
+ expect: {
87
+ ...(testCase.expect.must_include && testCase.expect.must_include.length > 0
88
+ ? { must_include: testCase.expect.must_include.map((value) => value.trim()).filter(Boolean) }
89
+ : {}),
90
+ ...(testCase.expect.must_include_one_of && testCase.expect.must_include_one_of.length > 0
91
+ ? {
92
+ must_include_one_of: testCase.expect.must_include_one_of
93
+ .map((group) => group.map((value) => value.trim()).filter(Boolean))
94
+ .filter((group) => group.length > 0),
95
+ }
96
+ : {}),
97
+ ...(testCase.expect.must_not_include && testCase.expect.must_not_include.length > 0
98
+ ? { must_not_include: testCase.expect.must_not_include.map((value) => value.trim()).filter(Boolean) }
99
+ : {}),
100
+ ...(typeof testCase.expect.min_words === "number"
101
+ ? { min_words: testCase.expect.min_words }
102
+ : {}),
103
+ ...(typeof testCase.expect.max_words === "number"
104
+ ? { max_words: testCase.expect.max_words }
105
+ : {}),
106
+ },
107
+ }
108
+ : {}),
109
+ })),
110
+ };
111
+ const parsed = TestSpecSchema.parse(normalizedSpec);
112
+ writeFileSync(filePath, `${JSON.stringify(serializeTestSpec(parsed), null, 2)}\n`);
113
+ return filePath;
114
+ }
@@ -0,0 +1,5 @@
1
+ import type { TestTargetCandidate } from "./test-types.js";
2
+ export declare function listWorkspaceTestTargets(sourcePath: string): TestTargetCandidate[];
3
+ export declare function createWorkspaceTestTarget(workspacePath: string, workspaceName: string, workflowId?: string): TestTargetCandidate;
4
+ export declare function createRawTestTarget(sourcePath: string): TestTargetCandidate;
5
+ export declare function listTestTargets(sourcePath: string): TestTargetCandidate[];
@@ -0,0 +1,38 @@
1
+ import { listWorkspacesForSourceFolder } from "./interf.js";
2
+ import { computeWorkspaceHealth } from "./state.js";
3
+ function summarizeTargetSortKey(target) {
4
+ return `${target.name}\u0000${target.workflow}`;
5
+ }
6
+ export function listWorkspaceTestTargets(sourcePath) {
7
+ return listWorkspacesForSourceFolder(sourcePath)
8
+ .map(({ path, config }) => createWorkspaceTestTarget(path, config.name, config.workflow ?? "interf"))
9
+ .sort((left, right) => summarizeTargetSortKey(left).localeCompare(summarizeTargetSortKey(right)));
10
+ }
11
+ export function createWorkspaceTestTarget(workspacePath, workspaceName, workflowId = "interf") {
12
+ const health = computeWorkspaceHealth(workspacePath);
13
+ return {
14
+ type: "workspace",
15
+ name: workspaceName,
16
+ path: workspacePath,
17
+ workflow: workflowId,
18
+ status: health.status,
19
+ stage: health.stage,
20
+ summary: health.summary,
21
+ eligible: health.status === "compiled",
22
+ };
23
+ }
24
+ export function createRawTestTarget(sourcePath) {
25
+ return {
26
+ type: "raw",
27
+ name: "raw",
28
+ path: sourcePath,
29
+ workflow: "raw",
30
+ status: "compiled",
31
+ stage: "raw",
32
+ summary: "Run the saved truth checks against an isolated sandbox of the raw files.",
33
+ eligible: true,
34
+ };
35
+ }
36
+ export function listTestTargets(sourcePath) {
37
+ return listWorkspaceTestTargets(sourcePath);
38
+ }
@@ -0,0 +1,17 @@
1
+ import type { TestSpec } from "./schema.js";
2
+ export type { TestCaseExpect, TestCase, TestSpec, TestCheckResult, TestCaseResult, TestTargetResult, TestTargetRun, } from "./schema.js";
3
+ export type TestTargetType = "workspace" | "raw";
4
+ export interface LoadedTestSpec extends TestSpec {
5
+ id: string;
6
+ filePath: string;
7
+ }
8
+ export interface TestTargetCandidate {
9
+ type: TestTargetType;
10
+ name: string;
11
+ path: string;
12
+ workflow: string;
13
+ status: "idle" | "running" | "compiled" | "stale" | "failed";
14
+ stage: string;
15
+ summary: string;
16
+ eligible: boolean;
17
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export type { TestCaseExpect, TestCase, TestSpec, TestCheckResult, TestCaseResult, TestTargetResult, TestTargetRun, TestTargetType, LoadedTestSpec, TestTargetCandidate, } from "./test-types.js";
2
+ export { listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, } from "./test-specs.js";
3
+ export { createRawTestTarget, createWorkspaceTestTarget, listWorkspaceTestTargets, listTestTargets, } from "./test-targets.js";
4
+ export { runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./test-execution.js";
@@ -0,0 +1,3 @@
1
+ export { listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, } from "./test-specs.js";
2
+ export { createRawTestTarget, createWorkspaceTestTarget, listWorkspaceTestTargets, listTestTargets, } from "./test-targets.js";
3
+ export { runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./test-execution.js";
@@ -3,4 +3,3 @@ export type { InterfUserConfig } from "./schema.js";
3
3
  export declare const USER_CONFIG_PATH: string;
4
4
  export declare function loadUserConfig(): InterfUserConfig | null;
5
5
  export declare function saveUserConfig(config: InterfUserConfig): void;
6
- //# sourceMappingURL=user-config.d.ts.map
@@ -13,4 +13,3 @@ export function saveUserConfig(config) {
13
13
  mkdirSync(INTERF_HOME, { recursive: true });
14
14
  writeFileSync(USER_CONFIG_PATH, JSON.stringify(config, null, 2) + "\n");
15
15
  }
16
- //# sourceMappingURL=user-config.js.map
@@ -1,4 +1,2 @@
1
- export declare const STATE_DIR = ".interf";
2
1
  export declare function slugify(input: string): string;
3
2
  export declare function isMarkdownFile(filePath: string): boolean;
4
- //# sourceMappingURL=util.d.ts.map
package/dist/lib/util.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { extname } from "node:path";
2
- export const STATE_DIR = ".interf";
3
2
  export function slugify(input) {
4
3
  return input
5
4
  .toLowerCase()
@@ -11,4 +10,3 @@ export function slugify(input) {
11
10
  export function isMarkdownFile(filePath) {
12
11
  return extname(filePath).toLowerCase() === ".md";
13
12
  }
14
- //# sourceMappingURL=util.js.map
@@ -18,4 +18,3 @@ export interface InventoryFiles {
18
18
  }
19
19
  export declare function readInventoryFiles(inventory: Record<string, unknown> | null): InventoryFiles;
20
20
  export declare function readInventoryTotal(inventory: Record<string, unknown> | null, inventoryFiles?: InventoryFiles): number;
21
- //# sourceMappingURL=validate-helpers.d.ts.map
@@ -69,4 +69,3 @@ export function readInventoryTotal(inventory, inventoryFiles) {
69
69
  return inventory.summary_total;
70
70
  return (inventoryFiles ?? readInventoryFiles(inventory)).files.length;
71
71
  }
72
- //# sourceMappingURL=validate-helpers.js.map
@@ -119,4 +119,3 @@ export declare function validateWorkspace(dirPath: string): WorkspaceValidationS
119
119
  export declare function validateWorkspaceSummarize(dirPath: string): WorkspaceSummarizeValidation;
120
120
  export declare function validateWorkspaceCompile(dirPath: string): WorkspaceCompileValidation;
121
121
  export declare function validateWorkspaceStructure(dirPath: string): WorkspaceStructureValidation;
122
- //# sourceMappingURL=validate-workspace.d.ts.map