@interf/compiler 0.6.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 (341) hide show
  1. package/README.md +94 -74
  2. package/builtin-workflows/interf/README.md +5 -5
  3. package/builtin-workflows/interf/compile/stages/shape/SKILL.md +4 -4
  4. package/builtin-workflows/interf/improve/SKILL.md +2 -2
  5. package/builtin-workflows/interf/use/query/SKILL.md +1 -1
  6. package/builtin-workflows/interf/workflow.json +6 -6
  7. package/builtin-workflows/interf/workflow.schema.json +1 -1
  8. package/dist/bin.js +2 -28
  9. package/dist/{commands → cli/commands}/check-draft.d.ts +2 -2
  10. package/dist/{commands → cli/commands}/check-draft.js +12 -12
  11. package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
  12. package/dist/{commands → cli/commands}/compile-controller.js +36 -34
  13. package/dist/{commands → cli/commands}/compile.d.ts +2 -2
  14. package/dist/{commands → cli/commands}/compile.js +15 -11
  15. package/dist/{commands → cli/commands}/compiled-flow.d.ts +3 -4
  16. package/dist/{commands → cli/commands}/compiled-flow.js +9 -14
  17. package/dist/{commands → cli/commands}/create-workflow-wizard.d.ts +3 -3
  18. package/dist/{commands → cli/commands}/create-workflow-wizard.js +61 -34
  19. package/dist/{commands → cli/commands}/create.d.ts +1 -1
  20. package/dist/{commands → cli/commands}/create.js +15 -18
  21. package/dist/{commands → cli/commands}/dataset-selection.d.ts +1 -1
  22. package/dist/{commands → cli/commands}/default.js +3 -3
  23. package/dist/{commands → cli/commands}/doctor.js +5 -6
  24. package/dist/{commands → cli/commands}/executor-flow.d.ts +1 -1
  25. package/dist/{commands → cli/commands}/executor-flow.js +13 -16
  26. package/dist/{commands → cli/commands}/init.d.ts +4 -1
  27. package/dist/{commands → cli/commands}/init.js +157 -72
  28. package/dist/{commands → cli/commands}/list.js +5 -5
  29. package/dist/{commands → cli/commands}/reset.js +4 -4
  30. package/dist/{commands → cli/commands}/source-config-wizard.d.ts +8 -3
  31. package/dist/{commands → cli/commands}/source-config-wizard.js +161 -87
  32. package/dist/{commands → cli/commands}/status.js +20 -11
  33. package/dist/{commands → cli/commands}/test-flow.d.ts +13 -4
  34. package/dist/{commands → cli/commands}/test-flow.js +30 -26
  35. package/dist/cli/commands/test.d.ts +14 -0
  36. package/dist/{commands → cli/commands}/test.js +39 -23
  37. package/dist/{commands → cli/commands}/verify.js +4 -4
  38. package/dist/cli/index.d.ts +21 -0
  39. package/dist/cli/index.js +33 -0
  40. package/dist/index.d.ts +22 -11
  41. package/dist/index.js +15 -6
  42. package/dist/lib/agent-args.d.ts +1 -4
  43. package/dist/lib/agent-args.js +1 -52
  44. package/dist/lib/agent-constants.d.ts +1 -5
  45. package/dist/lib/agent-constants.js +1 -28
  46. package/dist/lib/agent-detection.d.ts +1 -7
  47. package/dist/lib/agent-detection.js +1 -65
  48. package/dist/lib/agent-execution.d.ts +1 -2
  49. package/dist/lib/agent-execution.js +1 -243
  50. package/dist/lib/agent-logs.d.ts +1 -2
  51. package/dist/lib/agent-logs.js +1 -17
  52. package/dist/lib/agent-preflight.d.ts +1 -7
  53. package/dist/lib/agent-preflight.js +1 -77
  54. package/dist/lib/agent-render.d.ts +1 -8
  55. package/dist/lib/agent-render.js +1 -218
  56. package/dist/lib/agent-shells.d.ts +1 -69
  57. package/dist/lib/agent-shells.js +1 -1021
  58. package/dist/lib/agent-status.d.ts +1 -3
  59. package/dist/lib/agent-status.js +1 -58
  60. package/dist/lib/agent-types.d.ts +1 -30
  61. package/dist/lib/agent-types.js +1 -1
  62. package/dist/lib/agents.d.ts +1 -6
  63. package/dist/lib/agents.js +1 -5
  64. package/dist/lib/builtin-compiled-workflow.d.ts +1 -38
  65. package/dist/lib/builtin-compiled-workflow.js +1 -94
  66. package/dist/lib/compiled-compile.d.ts +1 -48
  67. package/dist/lib/compiled-compile.js +1 -255
  68. package/dist/lib/compiled-paths.d.ts +1 -40
  69. package/dist/lib/compiled-paths.js +3 -106
  70. package/dist/lib/compiled-raw.d.ts +1 -49
  71. package/dist/lib/compiled-raw.js +3 -102
  72. package/dist/lib/compiled-reset.d.ts +1 -2
  73. package/dist/lib/compiled-reset.js +3 -72
  74. package/dist/lib/compiled-schema.d.ts +1 -31
  75. package/dist/lib/compiled-schema.js +1 -141
  76. package/dist/lib/execution-profile.d.ts +1 -17
  77. package/dist/lib/execution-profile.js +1 -84
  78. package/dist/lib/executors.d.ts +1 -32
  79. package/dist/lib/executors.js +1 -43
  80. package/dist/lib/interf-bootstrap.d.ts +1 -3
  81. package/dist/lib/interf-bootstrap.js +3 -18
  82. package/dist/lib/interf-detect.d.ts +1 -33
  83. package/dist/lib/interf-detect.js +3 -176
  84. package/dist/lib/interf-scaffold.d.ts +1 -2
  85. package/dist/lib/interf-scaffold.js +3 -114
  86. package/dist/lib/interf-workflow-package.d.ts +1 -25
  87. package/dist/lib/interf-workflow-package.js +1 -342
  88. package/dist/lib/interf.d.ts +1 -5
  89. package/dist/lib/interf.js +3 -4
  90. package/dist/lib/local-workflows.d.ts +1 -54
  91. package/dist/lib/local-workflows.js +1 -422
  92. package/dist/lib/package-root.d.ts +1 -0
  93. package/dist/lib/package-root.js +1 -0
  94. package/dist/lib/project-paths.d.ts +1 -11
  95. package/dist/lib/project-paths.js +3 -32
  96. package/dist/lib/runtime-acceptance.d.ts +1 -9
  97. package/dist/lib/runtime-acceptance.js +1 -269
  98. package/dist/lib/runtime-contracts.d.ts +1 -2
  99. package/dist/lib/runtime-contracts.js +1 -48
  100. package/dist/lib/runtime-inventory.d.ts +1 -7
  101. package/dist/lib/runtime-inventory.js +1 -29
  102. package/dist/lib/runtime-paths.d.ts +1 -8
  103. package/dist/lib/runtime-paths.js +1 -26
  104. package/dist/lib/runtime-prompt.d.ts +1 -2
  105. package/dist/lib/runtime-prompt.js +1 -48
  106. package/dist/lib/runtime-reconcile.d.ts +1 -2
  107. package/dist/lib/runtime-reconcile.js +1 -193
  108. package/dist/lib/runtime-runs.d.ts +1 -11
  109. package/dist/lib/runtime-runs.js +1 -262
  110. package/dist/lib/runtime-types.d.ts +1 -43
  111. package/dist/lib/runtime-types.js +1 -1
  112. package/dist/lib/runtime.d.ts +1 -6
  113. package/dist/lib/runtime.js +1 -5
  114. package/dist/lib/schema.d.ts +4 -1073
  115. package/dist/lib/schema.js +6 -542
  116. package/dist/lib/source-config.d.ts +1 -39
  117. package/dist/lib/source-config.js +3 -293
  118. package/dist/lib/state-artifacts.d.ts +1 -8
  119. package/dist/lib/state-artifacts.js +1 -13
  120. package/dist/lib/state-health.d.ts +1 -4
  121. package/dist/lib/state-health.js +1 -132
  122. package/dist/lib/state-io.d.ts +1 -10
  123. package/dist/lib/state-io.js +1 -76
  124. package/dist/lib/state-paths.d.ts +1 -4
  125. package/dist/lib/state-paths.js +1 -13
  126. package/dist/lib/state-view.d.ts +1 -4
  127. package/dist/lib/state-view.js +1 -103
  128. package/dist/lib/state.d.ts +1 -7
  129. package/dist/lib/state.js +1 -12
  130. package/dist/lib/test-execution.d.ts +1 -14
  131. package/dist/lib/test-execution.js +3 -525
  132. package/dist/lib/test-matrices.d.ts +1 -90
  133. package/dist/lib/test-matrices.js +3 -96
  134. package/dist/lib/test-paths.d.ts +1 -12
  135. package/dist/lib/test-paths.js +3 -59
  136. package/dist/lib/test-profile-presets.d.ts +1 -57
  137. package/dist/lib/test-profile-presets.js +3 -50
  138. package/dist/lib/test-sandbox.d.ts +1 -11
  139. package/dist/lib/test-sandbox.js +3 -105
  140. package/dist/lib/test-specs.d.ts +1 -7
  141. package/dist/lib/test-specs.js +3 -114
  142. package/dist/lib/test-targets.d.ts +1 -5
  143. package/dist/lib/test-targets.js +3 -38
  144. package/dist/lib/test-types.d.ts +1 -17
  145. package/dist/lib/test-types.js +3 -1
  146. package/dist/lib/test.d.ts +1 -4
  147. package/dist/lib/test.js +3 -3
  148. package/dist/lib/validate-compiled.d.ts +1 -27
  149. package/dist/lib/validate-compiled.js +1 -241
  150. package/dist/lib/validate-helpers.d.ts +1 -12
  151. package/dist/lib/validate-helpers.js +1 -41
  152. package/dist/lib/validate.d.ts +1 -21
  153. package/dist/lib/validate.js +1 -249
  154. package/dist/lib/workflow-authoring.d.ts +1 -26
  155. package/dist/lib/workflow-authoring.js +1 -119
  156. package/dist/lib/workflow-definitions.d.ts +1 -78
  157. package/dist/lib/workflow-definitions.js +1 -203
  158. package/dist/lib/workflow-edit-session.d.ts +1 -16
  159. package/dist/lib/workflow-edit-session.js +1 -57
  160. package/dist/lib/workflow-edit-utils.d.ts +1 -10
  161. package/dist/lib/workflow-edit-utils.js +1 -39
  162. package/dist/lib/workflow-helpers.d.ts +1 -38
  163. package/dist/lib/workflow-helpers.js +1 -167
  164. package/dist/lib/workflow-improvement.d.ts +1 -22
  165. package/dist/lib/workflow-improvement.js +1 -209
  166. package/dist/lib/workflow-primitives.d.ts +1 -2
  167. package/dist/lib/workflow-primitives.js +1 -5
  168. package/dist/lib/workflow-review-paths.d.ts +1 -10
  169. package/dist/lib/workflow-review-paths.js +1 -27
  170. package/dist/lib/workflow-stage-policy.d.ts +1 -5
  171. package/dist/lib/workflow-stage-policy.js +1 -31
  172. package/dist/lib/workflow-stage-runner.d.ts +1 -41
  173. package/dist/lib/workflow-stage-runner.js +1 -109
  174. package/dist/lib/workflows.d.ts +1 -15
  175. package/dist/lib/workflows.js +1 -31
  176. package/dist/packages/agents/index.d.ts +17 -0
  177. package/dist/packages/agents/index.js +15 -0
  178. package/dist/packages/agents/lib/agents.d.ts +6 -0
  179. package/dist/packages/agents/lib/agents.js +5 -0
  180. package/dist/packages/agents/lib/args.d.ts +4 -0
  181. package/dist/packages/agents/lib/args.js +52 -0
  182. package/dist/packages/agents/lib/constants.d.ts +5 -0
  183. package/dist/packages/agents/lib/constants.js +28 -0
  184. package/dist/packages/agents/lib/detection.d.ts +7 -0
  185. package/dist/packages/agents/lib/detection.js +65 -0
  186. package/dist/packages/agents/lib/execution-profile.d.ts +17 -0
  187. package/dist/packages/agents/lib/execution-profile.js +84 -0
  188. package/dist/packages/agents/lib/execution.d.ts +2 -0
  189. package/dist/packages/agents/lib/execution.js +243 -0
  190. package/dist/packages/agents/lib/executors.d.ts +32 -0
  191. package/dist/packages/agents/lib/executors.js +45 -0
  192. package/dist/packages/agents/lib/logs.d.ts +2 -0
  193. package/dist/packages/agents/lib/logs.js +17 -0
  194. package/dist/packages/agents/lib/preflight.d.ts +7 -0
  195. package/dist/packages/agents/lib/preflight.js +77 -0
  196. package/dist/packages/agents/lib/render.d.ts +8 -0
  197. package/dist/packages/agents/lib/render.js +218 -0
  198. package/dist/packages/agents/lib/schema.d.ts +8 -0
  199. package/dist/packages/agents/lib/schema.js +7 -0
  200. package/dist/packages/agents/lib/shells.d.ts +69 -0
  201. package/dist/packages/agents/lib/shells.js +1021 -0
  202. package/dist/packages/agents/lib/status.d.ts +3 -0
  203. package/dist/packages/agents/lib/status.js +58 -0
  204. package/dist/packages/agents/lib/types.d.ts +30 -0
  205. package/dist/packages/agents/lib/types.js +1 -0
  206. package/dist/{lib → packages/agents/lib}/user-config.d.ts +1 -0
  207. package/dist/{lib → packages/agents/lib}/user-config.js +3 -2
  208. package/dist/packages/compiler/compiled-compile.d.ts +48 -0
  209. package/dist/packages/compiler/compiled-compile.js +256 -0
  210. package/dist/packages/compiler/compiled-schema.d.ts +31 -0
  211. package/dist/packages/compiler/compiled-schema.js +141 -0
  212. package/dist/packages/compiler/index.d.ts +24 -0
  213. package/dist/packages/compiler/index.js +23 -0
  214. package/dist/packages/compiler/lib/schema.d.ts +684 -0
  215. package/dist/packages/compiler/lib/schema.js +361 -0
  216. package/dist/packages/compiler/runtime-acceptance.d.ts +9 -0
  217. package/dist/packages/compiler/runtime-acceptance.js +269 -0
  218. package/dist/packages/compiler/runtime-contracts.d.ts +2 -0
  219. package/dist/packages/compiler/runtime-contracts.js +48 -0
  220. package/dist/packages/compiler/runtime-inventory.d.ts +7 -0
  221. package/dist/packages/compiler/runtime-inventory.js +29 -0
  222. package/dist/packages/compiler/runtime-paths.d.ts +8 -0
  223. package/dist/packages/compiler/runtime-paths.js +26 -0
  224. package/dist/packages/compiler/runtime-prompt.d.ts +2 -0
  225. package/dist/packages/compiler/runtime-prompt.js +48 -0
  226. package/dist/packages/compiler/runtime-reconcile.d.ts +2 -0
  227. package/dist/packages/compiler/runtime-reconcile.js +193 -0
  228. package/dist/packages/compiler/runtime-runs.d.ts +11 -0
  229. package/dist/packages/compiler/runtime-runs.js +262 -0
  230. package/dist/packages/compiler/runtime-types.d.ts +43 -0
  231. package/dist/packages/compiler/runtime-types.js +1 -0
  232. package/dist/packages/compiler/runtime.d.ts +6 -0
  233. package/dist/packages/compiler/runtime.js +5 -0
  234. package/dist/packages/compiler/state-artifacts.d.ts +8 -0
  235. package/dist/packages/compiler/state-artifacts.js +13 -0
  236. package/dist/packages/compiler/state-health.d.ts +4 -0
  237. package/dist/packages/compiler/state-health.js +132 -0
  238. package/dist/packages/compiler/state-io.d.ts +10 -0
  239. package/dist/packages/compiler/state-io.js +76 -0
  240. package/dist/packages/compiler/state-paths.d.ts +4 -0
  241. package/dist/packages/compiler/state-paths.js +13 -0
  242. package/dist/packages/compiler/state-view.d.ts +4 -0
  243. package/dist/packages/compiler/state-view.js +103 -0
  244. package/dist/packages/compiler/state.d.ts +7 -0
  245. package/dist/packages/compiler/state.js +12 -0
  246. package/dist/packages/compiler/validate-compiled.d.ts +27 -0
  247. package/dist/packages/compiler/validate-compiled.js +241 -0
  248. package/dist/packages/compiler/validate-helpers.d.ts +12 -0
  249. package/dist/packages/compiler/validate-helpers.js +41 -0
  250. package/dist/packages/compiler/validate.d.ts +21 -0
  251. package/dist/packages/compiler/validate.js +249 -0
  252. package/dist/packages/compiler/workflow-primitives.d.ts +2 -0
  253. package/dist/packages/compiler/workflow-primitives.js +5 -0
  254. package/dist/packages/compiler/workflows.d.ts +15 -0
  255. package/dist/packages/compiler/workflows.js +31 -0
  256. package/dist/packages/project-model/compiled-paths.d.ts +40 -0
  257. package/dist/packages/project-model/compiled-paths.js +106 -0
  258. package/dist/packages/project-model/compiled-raw.d.ts +49 -0
  259. package/dist/packages/project-model/compiled-raw.js +102 -0
  260. package/dist/packages/project-model/compiled-reset.d.ts +2 -0
  261. package/dist/packages/project-model/compiled-reset.js +72 -0
  262. package/dist/packages/project-model/index.d.ts +11 -0
  263. package/dist/packages/project-model/index.js +10 -0
  264. package/dist/packages/project-model/interf-bootstrap.d.ts +3 -0
  265. package/dist/packages/project-model/interf-bootstrap.js +18 -0
  266. package/dist/packages/project-model/interf-detect.d.ts +33 -0
  267. package/dist/packages/project-model/interf-detect.js +176 -0
  268. package/dist/packages/project-model/interf-scaffold.d.ts +2 -0
  269. package/dist/packages/project-model/interf-scaffold.js +124 -0
  270. package/dist/packages/project-model/interf.d.ts +5 -0
  271. package/dist/packages/project-model/interf.js +4 -0
  272. package/dist/packages/project-model/lib/schema.d.ts +125 -0
  273. package/dist/packages/project-model/lib/schema.js +62 -0
  274. package/dist/packages/project-model/project-paths.d.ts +11 -0
  275. package/dist/packages/project-model/project-paths.js +32 -0
  276. package/dist/packages/project-model/source-config.d.ts +38 -0
  277. package/dist/packages/project-model/source-config.js +297 -0
  278. package/dist/packages/testing/index.d.ts +13 -0
  279. package/dist/packages/testing/index.js +10 -0
  280. package/dist/packages/testing/lib/schema.d.ts +261 -0
  281. package/dist/packages/testing/lib/schema.js +119 -0
  282. package/dist/packages/testing/test-execution.d.ts +14 -0
  283. package/dist/packages/testing/test-execution.js +525 -0
  284. package/dist/packages/testing/test-matrices.d.ts +90 -0
  285. package/dist/packages/testing/test-matrices.js +96 -0
  286. package/dist/packages/testing/test-paths.d.ts +12 -0
  287. package/dist/packages/testing/test-paths.js +59 -0
  288. package/dist/packages/testing/test-profile-presets.d.ts +57 -0
  289. package/dist/packages/testing/test-profile-presets.js +50 -0
  290. package/dist/packages/testing/test-sandbox.d.ts +11 -0
  291. package/dist/packages/testing/test-sandbox.js +105 -0
  292. package/dist/packages/testing/test-specs.d.ts +7 -0
  293. package/dist/packages/testing/test-specs.js +114 -0
  294. package/dist/packages/testing/test-targets.d.ts +5 -0
  295. package/dist/packages/testing/test-targets.js +38 -0
  296. package/dist/packages/testing/test-types.d.ts +16 -0
  297. package/dist/packages/testing/test-types.js +1 -0
  298. package/dist/packages/testing/test.d.ts +4 -0
  299. package/dist/packages/testing/test.js +3 -0
  300. package/dist/packages/workflow-authoring/index.d.ts +4 -0
  301. package/dist/packages/workflow-authoring/index.js +4 -0
  302. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.d.ts +10 -0
  303. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.js +39 -0
  304. package/dist/packages/workflow-authoring/workflow-authoring.d.ts +26 -0
  305. package/dist/packages/workflow-authoring/workflow-authoring.js +120 -0
  306. package/dist/packages/workflow-authoring/workflow-edit-session.d.ts +16 -0
  307. package/dist/packages/workflow-authoring/workflow-edit-session.js +57 -0
  308. package/dist/packages/workflow-authoring/workflow-improvement.d.ts +23 -0
  309. package/dist/packages/workflow-authoring/workflow-improvement.js +209 -0
  310. package/dist/packages/workflow-package/builtin-compiled-workflow.d.ts +38 -0
  311. package/dist/packages/workflow-package/builtin-compiled-workflow.js +94 -0
  312. package/dist/packages/workflow-package/index.d.ts +9 -0
  313. package/dist/packages/workflow-package/index.js +9 -0
  314. package/dist/packages/workflow-package/interf-workflow-package.d.ts +25 -0
  315. package/dist/packages/workflow-package/interf-workflow-package.js +342 -0
  316. package/dist/{lib/config.d.ts → packages/workflow-package/lib/package-root.d.ts} +0 -1
  317. package/dist/packages/workflow-package/lib/package-root.js +6 -0
  318. package/dist/packages/workflow-package/local-workflows.d.ts +54 -0
  319. package/dist/packages/workflow-package/local-workflows.js +422 -0
  320. package/dist/packages/workflow-package/workflow-definitions.d.ts +78 -0
  321. package/dist/packages/workflow-package/workflow-definitions.js +203 -0
  322. package/dist/packages/workflow-package/workflow-helpers.d.ts +38 -0
  323. package/dist/packages/workflow-package/workflow-helpers.js +167 -0
  324. package/dist/packages/workflow-package/workflow-review-paths.d.ts +10 -0
  325. package/dist/packages/workflow-package/workflow-review-paths.js +27 -0
  326. package/dist/packages/workflow-package/workflow-stage-policy.d.ts +5 -0
  327. package/dist/packages/workflow-package/workflow-stage-policy.js +31 -0
  328. package/dist/packages/workflow-package/workflow-stage-runner.d.ts +41 -0
  329. package/dist/packages/workflow-package/workflow-stage-runner.js +109 -0
  330. package/package.json +43 -19
  331. package/dist/commands/test.d.ts +0 -3
  332. package/dist/lib/compiled-home.d.ts +0 -5
  333. package/dist/lib/compiled-home.js +0 -32
  334. package/dist/lib/config.js +0 -9
  335. /package/dist/{commands → cli/commands}/dataset-selection.js +0 -0
  336. /package/dist/{commands → cli/commands}/default.d.ts +0 -0
  337. /package/dist/{commands → cli/commands}/doctor.d.ts +0 -0
  338. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  339. /package/dist/{commands → cli/commands}/reset.d.ts +0 -0
  340. /package/dist/{commands → cli/commands}/status.d.ts +0 -0
  341. /package/dist/{commands → cli/commands}/verify.d.ts +0 -0
@@ -0,0 +1,241 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { discoverSourceFiles } from "../../lib/discovery.js";
4
+ import { WORKFLOW_SCHEMA_FILE, compiledZoneAbsolutePath, findCompiledSchemaZone, readCompiledSchemaFile, workflowSchemaExists, } from "./compiled-schema.js";
5
+ import { resolveSourceFolderPath } from "../project-model/interf-detect.js";
6
+ import { compiledInterfConfigPath, workflowPackagePathForCompiled } from "../project-model/compiled-paths.js";
7
+ import { readCompiledConfig } from "./validate.js";
8
+ import { loadState } from "./state.js";
9
+ import { validateResolvedStageAcceptance, stageRecordFromState } from "./runtime-acceptance.js";
10
+ import { getActiveCompiledWorkflow, resolveRequiredCompiledWorkflowFromConfig, } from "../workflow-package/workflow-definitions.js";
11
+ import { listFilesRecursive } from "../../lib/filesystem.js";
12
+ function workflowSchemaPresent(dirPath) {
13
+ return workflowSchemaExists(join(dirPath, ".interf", "workflow"));
14
+ }
15
+ function countZoneArtifacts(compiledPath, zonePath, kind) {
16
+ const absolutePath = compiledZoneAbsolutePath(compiledPath, { path: zonePath });
17
+ if (!existsSync(absolutePath))
18
+ return 0;
19
+ if (kind === "file")
20
+ return 1;
21
+ return listFilesRecursive(absolutePath).length;
22
+ }
23
+ function readWorkflowContext(dirPath) {
24
+ const config = readCompiledConfig(dirPath);
25
+ const workflowId = config.valid
26
+ ? resolveRequiredCompiledWorkflowFromConfig(config.value, `.interf/interf.json for ${dirPath}`)
27
+ : null;
28
+ let workflow = null;
29
+ if (workflowId) {
30
+ try {
31
+ workflow = getActiveCompiledWorkflow(dirPath, workflowId);
32
+ }
33
+ catch {
34
+ workflow = null;
35
+ }
36
+ }
37
+ const schema = readCompiledSchemaFile(workflowPackagePathForCompiled(dirPath));
38
+ const state = loadState(dirPath);
39
+ const sourceTotal = config.valid
40
+ ? discoverSourceFiles(resolveSourceFolderPath(dirPath, config.value), dirPath).totalCount
41
+ : 0;
42
+ return {
43
+ config,
44
+ workflow,
45
+ schema,
46
+ state,
47
+ sourceTotal,
48
+ workflowId,
49
+ };
50
+ }
51
+ function stageRequired(sourceTotal, writeCounts, stageRecordPresent) {
52
+ return sourceTotal > 0 || writeCounts > 0 || stageRecordPresent;
53
+ }
54
+ function zoneWriteCount(compiledPath, schema, stage) {
55
+ const zoneCounts = {};
56
+ let total = 0;
57
+ for (const zoneId of stage.writes) {
58
+ const zone = findCompiledSchemaZone(schema, zoneId);
59
+ if (!zone)
60
+ continue;
61
+ const count = countZoneArtifacts(compiledPath, zone.path, zone.kind);
62
+ zoneCounts[zoneId] = count;
63
+ total += count;
64
+ }
65
+ return { total, zoneCounts };
66
+ }
67
+ function mergeValidationCounts(sourceTotal, stageRecord, zoneCounts) {
68
+ const merged = {
69
+ source_total: sourceTotal,
70
+ ...zoneCounts,
71
+ };
72
+ const stageCounts = stageRecord?.counts;
73
+ if (stageCounts && typeof stageCounts === "object" && !Array.isArray(stageCounts)) {
74
+ for (const [key, value] of Object.entries(stageCounts)) {
75
+ if (typeof value === "number" && Number.isFinite(value)) {
76
+ merged[key] = value;
77
+ }
78
+ }
79
+ }
80
+ return merged;
81
+ }
82
+ export function validateCompiled(dirPath) {
83
+ const context = readWorkflowContext(dirPath);
84
+ return {
85
+ config_present: context.config.present,
86
+ config_valid: context.config.valid,
87
+ config_type_match: context.config.typeMatch(),
88
+ workflow_present: existsSync(join(dirPath, ".interf", "workflow", "workflow.json")),
89
+ workflow_valid: context.workflow !== null,
90
+ schema_present: workflowSchemaPresent(dirPath),
91
+ schema_valid: context.schema !== null,
92
+ };
93
+ }
94
+ export function validateCompiledStage(dirPath, stageId) {
95
+ const context = readWorkflowContext(dirPath);
96
+ const checks = {
97
+ config_present: context.config.present,
98
+ config_valid: context.config.valid,
99
+ config_type_match: context.config.typeMatch(),
100
+ workflow_present: existsSync(join(dirPath, ".interf", "workflow", "workflow.json")),
101
+ workflow_valid: context.workflow !== null,
102
+ schema_present: workflowSchemaPresent(dirPath),
103
+ schema_valid: context.schema !== null,
104
+ };
105
+ const errors = [];
106
+ if (!checks.config_present)
107
+ errors.push(`Missing ${compiledInterfConfigPath(dirPath)}.`);
108
+ else if (!checks.config_valid)
109
+ errors.push(`Could not parse ${compiledInterfConfigPath(dirPath)}.`);
110
+ else if (!checks.config_type_match)
111
+ errors.push("Config is not a compiled context.");
112
+ if (!checks.workflow_present)
113
+ errors.push("Missing .interf/workflow/workflow.json.");
114
+ else if (!checks.workflow_valid)
115
+ errors.push("Could not load the active workflow package.");
116
+ if (!checks.schema_present)
117
+ errors.push(`Missing .interf/workflow/${WORKFLOW_SCHEMA_FILE}.`);
118
+ else if (!checks.schema_valid)
119
+ errors.push(`Could not parse .interf/workflow/${WORKFLOW_SCHEMA_FILE}.`);
120
+ const workflowStage = context.workflow?.stages.find((stage) => stage.id === stageId) ?? null;
121
+ checks.stage_present = workflowStage !== null;
122
+ if (!checks.stage_present) {
123
+ errors.push(`Workflow does not declare stage "${stageId}".`);
124
+ }
125
+ const stageRecord = stageRecordFromState(context.state, stageId);
126
+ checks.stage_record_present = stageRecord !== null;
127
+ checks.stage_finished = Boolean(stageRecord?.finished_at);
128
+ checks.stage_succeeded = stageRecord?.status === "succeeded";
129
+ const writeCounts = workflowStage && context.schema
130
+ ? zoneWriteCount(dirPath, context.schema, workflowStage)
131
+ : { total: 0, zoneCounts: {} };
132
+ const acceptanceCounts = mergeValidationCounts(context.sourceTotal, stageRecord, writeCounts.zoneCounts);
133
+ const required = stageRequired(context.sourceTotal, writeCounts.total, checks.stage_record_present);
134
+ let acceptanceErrors = [];
135
+ if (workflowStage && context.schema) {
136
+ const acceptanceValidation = validateResolvedStageAcceptance(dirPath, {
137
+ stageId,
138
+ acceptance: workflowStage.acceptance,
139
+ counts: acceptanceCounts,
140
+ });
141
+ checks.acceptance_ok = acceptanceValidation.ok;
142
+ acceptanceErrors = acceptanceValidation.failures;
143
+ }
144
+ else {
145
+ checks.acceptance_ok = false;
146
+ }
147
+ if (required && checks.stage_record_present && !checks.stage_finished) {
148
+ errors.push(`Stage "${stageId}" has no finished_at proof in runtime state.`);
149
+ }
150
+ if (required && checks.stage_record_present && !checks.stage_succeeded) {
151
+ errors.push(`Stage "${stageId}" is not marked succeeded in runtime state.`);
152
+ }
153
+ if (required) {
154
+ errors.push(...acceptanceErrors);
155
+ }
156
+ const ok = required ? errors.length === 0 : errors.length === 0;
157
+ const summary = !required
158
+ ? `Stage "${stageId}" is not required yet.`
159
+ : ok
160
+ ? `Stage "${stageId}" verified.`
161
+ : `Stage "${stageId}" failed — ${errors[0] ?? "acceptance not satisfied."}`;
162
+ return {
163
+ ok,
164
+ required,
165
+ stage: stageId,
166
+ summary,
167
+ counts: {
168
+ ...acceptanceCounts,
169
+ write_artifacts: writeCounts.total,
170
+ declared_write_zones: workflowStage?.writes.length ?? 0,
171
+ },
172
+ checks,
173
+ errors,
174
+ };
175
+ }
176
+ export function validateCompiledWorkflow(dirPath) {
177
+ const context = readWorkflowContext(dirPath);
178
+ const checks = {
179
+ config_present: context.config.present,
180
+ config_valid: context.config.valid,
181
+ config_type_match: context.config.typeMatch(),
182
+ workflow_present: existsSync(join(dirPath, ".interf", "workflow", "workflow.json")),
183
+ workflow_valid: context.workflow !== null,
184
+ schema_present: workflowSchemaPresent(dirPath),
185
+ schema_valid: context.schema !== null,
186
+ };
187
+ if (!context.workflow) {
188
+ const errors = ["Could not load the active workflow package."];
189
+ return {
190
+ ok: false,
191
+ required: true,
192
+ stage: "workflow",
193
+ summary: `Compiled workflow failed — ${errors[0]}`,
194
+ counts: { source_total: context.sourceTotal, stage_total: 0, completed_stages: 0 },
195
+ checks,
196
+ errors,
197
+ stage_results: {},
198
+ };
199
+ }
200
+ const stageResults = {};
201
+ const errors = [];
202
+ let completedStages = 0;
203
+ let failedStage = "compiled";
204
+ for (const stage of context.workflow.stages) {
205
+ const validation = validateCompiledStage(dirPath, stage.id);
206
+ stageResults[stage.id] = validation.ok;
207
+ if (validation.ok) {
208
+ completedStages += 1;
209
+ continue;
210
+ }
211
+ failedStage = stage.id;
212
+ errors.push(...validation.errors);
213
+ break;
214
+ }
215
+ const ok = errors.length === 0;
216
+ return {
217
+ ok,
218
+ required: context.sourceTotal > 0,
219
+ stage: failedStage,
220
+ summary: ok
221
+ ? `Compiled workflow verified — ${completedStages}/${context.workflow.stages.length} stages satisfied.`
222
+ : `Compiled workflow failed — ${errors[0] ?? "stage acceptance not satisfied."}`,
223
+ counts: {
224
+ source_total: context.sourceTotal,
225
+ stage_total: context.workflow.stages.length,
226
+ completed_stages: completedStages,
227
+ },
228
+ checks,
229
+ errors,
230
+ stage_results: stageResults,
231
+ };
232
+ }
233
+ export function validateCompiledSummarize(dirPath) {
234
+ return validateCompiledStage(dirPath, "summarize");
235
+ }
236
+ export function validateCompiledStructure(dirPath) {
237
+ return validateCompiledStage(dirPath, "structure");
238
+ }
239
+ export function validateCompiledCompile(dirPath) {
240
+ return validateCompiledWorkflow(dirPath);
241
+ }
@@ -0,0 +1,12 @@
1
+ export declare function asStringArray(value: unknown): string[];
2
+ export declare function asRejectedEntries(value: unknown): Array<{
3
+ path: string;
4
+ reason: string;
5
+ }>;
6
+ export declare function asFileEntries(value: unknown): Array<{
7
+ file: string;
8
+ }>;
9
+ export declare function isSubset(left: Set<string>, right: Set<string>): boolean;
10
+ export declare function setsEqual(left: Set<string>, right: Set<string>): boolean;
11
+ export declare function setIntersectionSize(left: Set<string>, right: Set<string>): number;
12
+ export declare function dedupeStrings(values: string[]): string[];
@@ -0,0 +1,41 @@
1
+ export function asStringArray(value) {
2
+ if (!Array.isArray(value))
3
+ return [];
4
+ return value.filter((item) => typeof item === "string");
5
+ }
6
+ export function asRejectedEntries(value) {
7
+ if (!Array.isArray(value))
8
+ return [];
9
+ return value.filter((item) => !!item &&
10
+ typeof item === "object" &&
11
+ typeof item.path === "string" &&
12
+ typeof item.reason === "string");
13
+ }
14
+ export function asFileEntries(value) {
15
+ if (!Array.isArray(value))
16
+ return [];
17
+ return value.filter((item) => !!item &&
18
+ typeof item === "object" &&
19
+ typeof item.file === "string");
20
+ }
21
+ export function isSubset(left, right) {
22
+ for (const item of left) {
23
+ if (!right.has(item))
24
+ return false;
25
+ }
26
+ return true;
27
+ }
28
+ export function setsEqual(left, right) {
29
+ return left.size === right.size && isSubset(left, right);
30
+ }
31
+ export function setIntersectionSize(left, right) {
32
+ let count = 0;
33
+ for (const item of left) {
34
+ if (right.has(item))
35
+ count += 1;
36
+ }
37
+ return count;
38
+ }
39
+ export function dedupeStrings(values) {
40
+ return Array.from(new Set(values));
41
+ }
@@ -0,0 +1,21 @@
1
+ import { readInterfConfig } from "../project-model/interf-detect.js";
2
+ export declare function readCompiledConfig(dirPath: string): {
3
+ present: boolean;
4
+ valid: boolean;
5
+ value: ReturnType<typeof readInterfConfig>;
6
+ typeMatch(): boolean;
7
+ };
8
+ export declare function validateSynthFiles(files: string[], options?: {
9
+ requiredFrontmatterKeys?: string[];
10
+ }): {
11
+ invalid_frontmatter: number;
12
+ short_abstracts: number;
13
+ };
14
+ export declare function countBrokenWikilinks(compiledRoot: string, noteIndexRoots: string[], linkScanRoots: string[]): number;
15
+ export declare function asNumber(value: unknown): number;
16
+ export declare function isOutputMarkdownFile(filePath: string): boolean;
17
+ export declare function safeReadText(filePath: string): string | null;
18
+ export declare function extractSynthAbstract(frontmatter: Record<string, unknown>, body: string): string | null;
19
+ export declare function countSynthAbstractWords(frontmatter: Record<string, unknown>, body: string): number;
20
+ export { validateCompiled, validateCompiledStage, validateCompiledWorkflow, validateCompiledSummarize, validateCompiledStructure, validateCompiledCompile, } from "./validate-compiled.js";
21
+ export type { CompiledValidationSummary, CompiledStageValidation, CompiledWorkflowValidation, } from "./validate-compiled.js";
@@ -0,0 +1,249 @@
1
+ import { existsSync, readFileSync, statSync, } from "node:fs";
2
+ import { basename, extname, join } from "node:path";
3
+ import { readCompiledSchemaFile } from "./compiled-schema.js";
4
+ import { compiledKnowledgeRootPath } from "./compiled-schema.js";
5
+ import { workflowPackagePathForCompiled } from "../project-model/compiled-paths.js";
6
+ import { listFilesRecursive } from "../../lib/filesystem.js";
7
+ import { readInterfConfig } from "../project-model/interf-detect.js";
8
+ import { parseJsonFrontmatter } from "../../lib/parse.js";
9
+ import { compiledInterfConfigPath } from "../project-model/compiled-paths.js";
10
+ const MIN_ABSTRACT_WORDS = 5;
11
+ const WIKILINK_PATTERN = /!?\[\[([^[\]]+)\]\]/g;
12
+ export function readCompiledConfig(dirPath) {
13
+ const configPath = compiledInterfConfigPath(dirPath);
14
+ const value = readInterfConfig(dirPath);
15
+ const present = existsSync(configPath);
16
+ if (!present) {
17
+ return {
18
+ present: false,
19
+ valid: false,
20
+ value: null,
21
+ typeMatch: () => false,
22
+ };
23
+ }
24
+ return {
25
+ present: true,
26
+ valid: value !== null,
27
+ value,
28
+ typeMatch() {
29
+ return value?.type === "compiled" && typeof value?.source?.path === "string";
30
+ },
31
+ };
32
+ }
33
+ export function validateSynthFiles(files, options) {
34
+ let invalidFrontmatter = 0;
35
+ let shortAbstracts = 0;
36
+ for (const filePath of files) {
37
+ const content = safeReadText(filePath);
38
+ if (content === null)
39
+ continue;
40
+ const parsed = parseJsonFrontmatter(content);
41
+ if (!parsed || !hasRequiredFrontmatterKeys(parsed.frontmatter, options?.requiredFrontmatterKeys)) {
42
+ invalidFrontmatter += 1;
43
+ continue;
44
+ }
45
+ const abstractWords = countSynthAbstractWords(parsed.frontmatter, parsed.body);
46
+ if (abstractWords < MIN_ABSTRACT_WORDS) {
47
+ shortAbstracts += 1;
48
+ }
49
+ }
50
+ return {
51
+ invalid_frontmatter: invalidFrontmatter,
52
+ short_abstracts: shortAbstracts,
53
+ };
54
+ }
55
+ export function countBrokenWikilinks(compiledRoot, noteIndexRoots, linkScanRoots) {
56
+ const zonePathById = compiledZoneDirectoryPaths(compiledRoot);
57
+ const knowledgeRelativePrefixes = compiledKnowledgeRelativePrefixes(zonePathById);
58
+ const noteIndex = new Set();
59
+ for (const filePath of dedupeFiles(noteIndexRoots)) {
60
+ for (const target of collectWikilinkTargets(filePath)) {
61
+ noteIndex.add(target.toLowerCase());
62
+ }
63
+ }
64
+ let brokenLinks = 0;
65
+ for (const filePath of dedupeFiles(linkScanRoots)) {
66
+ const content = safeReadText(filePath);
67
+ if (content === null)
68
+ continue;
69
+ const matches = content.matchAll(WIKILINK_PATTERN);
70
+ for (const match of matches) {
71
+ const rawTarget = match[1]?.trim();
72
+ if (!rawTarget)
73
+ continue;
74
+ const target = rawTarget.split("|")[0]?.split("#")[0]?.trim();
75
+ if (!target)
76
+ continue;
77
+ if (target.includes("/")) {
78
+ if (!wikilinkPathExists(compiledRoot, target, zonePathById, knowledgeRelativePrefixes)) {
79
+ brokenLinks += 1;
80
+ }
81
+ continue;
82
+ }
83
+ if (!noteIndex.has(target.toLowerCase()) &&
84
+ !noteIndex.has(noteName(target).toLowerCase()) &&
85
+ !wikilinkPathExists(compiledRoot, target, zonePathById, knowledgeRelativePrefixes) &&
86
+ !wikilinkPathExists(compiledRoot, noteName(target), zonePathById, knowledgeRelativePrefixes)) {
87
+ brokenLinks += 1;
88
+ }
89
+ }
90
+ }
91
+ return brokenLinks;
92
+ }
93
+ export function asNumber(value) {
94
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
95
+ }
96
+ export function isOutputMarkdownFile(filePath) {
97
+ return extname(filePath) === ".md" && basename(filePath) !== "AGENTS.md";
98
+ }
99
+ export function safeReadText(filePath) {
100
+ try {
101
+ return readFileSync(filePath, "utf-8");
102
+ }
103
+ catch {
104
+ return null;
105
+ }
106
+ }
107
+ function dedupeFiles(dirPaths) {
108
+ const seen = new Set();
109
+ const files = [];
110
+ for (const dirPath of dirPaths) {
111
+ if (existsSync(dirPath)) {
112
+ try {
113
+ const stat = statSync(dirPath);
114
+ if (stat.isFile()) {
115
+ if (!seen.has(dirPath) && isOutputMarkdownFile(dirPath)) {
116
+ seen.add(dirPath);
117
+ files.push(dirPath);
118
+ }
119
+ continue;
120
+ }
121
+ }
122
+ catch {
123
+ continue;
124
+ }
125
+ }
126
+ for (const filePath of listFilesRecursive(dirPath, isOutputMarkdownFile)) {
127
+ if (seen.has(filePath))
128
+ continue;
129
+ seen.add(filePath);
130
+ files.push(filePath);
131
+ }
132
+ }
133
+ return files;
134
+ }
135
+ function hasRequiredFrontmatterKeys(frontmatter, requiredKeys) {
136
+ return (requiredKeys ?? []).every((field) => field in frontmatter);
137
+ }
138
+ function extractBodyAbstract(body) {
139
+ const lines = body.split(/\r?\n/);
140
+ const abstractHeadingIndex = lines.findIndex((line) => /^#{1,2}\s+Abstract\s*$/.test(line.trim()));
141
+ if (abstractHeadingIndex < 0)
142
+ return null;
143
+ const abstractLines = [];
144
+ for (let index = abstractHeadingIndex + 1; index < lines.length; index += 1) {
145
+ const line = lines[index] ?? "";
146
+ if (/^#{1,2}\s+\S/.test(line.trim()))
147
+ break;
148
+ abstractLines.push(line);
149
+ }
150
+ const abstractText = abstractLines.join("\n").trim();
151
+ return abstractText.length > 0 ? abstractText : null;
152
+ }
153
+ export function extractSynthAbstract(frontmatter, body) {
154
+ const frontmatterAbstract = typeof frontmatter.abstract === "string" ? frontmatter.abstract.trim() : "";
155
+ if (frontmatterAbstract.length > 0) {
156
+ return frontmatterAbstract;
157
+ }
158
+ return extractBodyAbstract(body);
159
+ }
160
+ export function countSynthAbstractWords(frontmatter, body) {
161
+ const abstract = extractSynthAbstract(frontmatter, body);
162
+ if (!abstract)
163
+ return 0;
164
+ return countWords(abstract);
165
+ }
166
+ function countWords(text) {
167
+ return text
168
+ .split(/\s+/)
169
+ .map((word) => word.trim())
170
+ .filter((word) => /[A-Za-z0-9]/.test(word)).length;
171
+ }
172
+ function noteName(filePath) {
173
+ return basename(filePath, extname(filePath));
174
+ }
175
+ function wikilinkPathExists(compiledRoot, target, zonePathById, knowledgeRelativePrefixes) {
176
+ return linkPathCandidates(compiledRoot, target, zonePathById, knowledgeRelativePrefixes)
177
+ .some((candidate) => existsSync(candidate));
178
+ }
179
+ function linkPathCandidates(compiledRoot, target, zonePathById, knowledgeRelativePrefixes) {
180
+ const candidates = new Set();
181
+ addPathCandidate(candidates, join(compiledRoot, target));
182
+ const [firstSegment] = target.split("/");
183
+ if (firstSegment && knowledgeRelativePrefixes.has(firstSegment)) {
184
+ addPathCandidate(candidates, join(compiledKnowledgeRootPath(compiledRoot), target));
185
+ }
186
+ if (firstSegment) {
187
+ const normalizedPrefix = zonePathById.get(firstSegment);
188
+ if (normalizedPrefix) {
189
+ const remainder = target.slice(firstSegment.length).replace(/^\/+/, "");
190
+ addPathCandidate(candidates, join(compiledRoot, normalizedPrefix, remainder));
191
+ }
192
+ }
193
+ return Array.from(candidates);
194
+ }
195
+ function addPathCandidate(candidates, absolutePath) {
196
+ candidates.add(absolutePath);
197
+ if (!absolutePath.endsWith(".md")) {
198
+ candidates.add(`${absolutePath}.md`);
199
+ }
200
+ }
201
+ function compiledZoneDirectoryPaths(compiledRoot) {
202
+ const workflowRoot = workflowPackagePathForCompiled(compiledRoot);
203
+ const schema = readCompiledSchemaFile(workflowRoot);
204
+ if (!schema)
205
+ return new Map();
206
+ return new Map(schema.zones
207
+ .filter((zone) => zone.kind === "directory")
208
+ .map((zone) => [zone.id, zone.path]));
209
+ }
210
+ function compiledKnowledgeRelativePrefixes(zonePathById) {
211
+ const prefixes = new Set();
212
+ for (const zonePath of zonePathById.values()) {
213
+ const [root, leaf, ...rest] = zonePath.split("/");
214
+ if (root !== "knowledge" || !leaf || rest.length > 0)
215
+ continue;
216
+ prefixes.add(leaf);
217
+ }
218
+ return prefixes;
219
+ }
220
+ function collectWikilinkTargets(filePath) {
221
+ const targets = new Set();
222
+ targets.add(noteName(filePath));
223
+ const content = safeReadText(filePath);
224
+ if (content === null)
225
+ return Array.from(targets);
226
+ const parsed = parseJsonFrontmatter(content);
227
+ const frontmatter = parsed?.frontmatter;
228
+ if (!frontmatter)
229
+ return Array.from(targets);
230
+ addFrontmatterLinkTarget(targets, frontmatter.label);
231
+ addFrontmatterLinkTarget(targets, frontmatter.title);
232
+ addFrontmatterLinkTarget(targets, frontmatter.alias);
233
+ addFrontmatterLinkTarget(targets, frontmatter.aliases);
234
+ return Array.from(targets);
235
+ }
236
+ function addFrontmatterLinkTarget(targets, value) {
237
+ if (typeof value === "string") {
238
+ const trimmed = value.trim();
239
+ if (trimmed.length > 0)
240
+ targets.add(trimmed);
241
+ return;
242
+ }
243
+ if (Array.isArray(value)) {
244
+ for (const entry of value) {
245
+ addFrontmatterLinkTarget(targets, entry);
246
+ }
247
+ }
248
+ }
249
+ export { validateCompiled, validateCompiledStage, validateCompiledWorkflow, validateCompiledSummarize, validateCompiledStructure, validateCompiledCompile, } from "./validate-compiled.js";
@@ -0,0 +1,2 @@
1
+ export declare const COMPILED_ZONE_KINDS: readonly ["directory", "file", "runtime"];
2
+ export type CompiledZoneKind = typeof COMPILED_ZONE_KINDS[number];
@@ -0,0 +1,5 @@
1
+ export const COMPILED_ZONE_KINDS = [
2
+ "directory",
3
+ "file",
4
+ "runtime",
5
+ ];
@@ -0,0 +1,15 @@
1
+ import { type InterfConfig } from "../project-model/interf-detect.js";
2
+ export type { WorkflowReporter, WorkflowStageResult, LocalSkillContractExtension } from "../workflow-package/workflow-helpers.js";
3
+ export { workflowQueryDirectory, workflowImproveDirectory, workflowCompileStageDirectory, emptyLocalSkillContractExtension, buildLocalSkillContractExtension, buildLocalSkillContractExtensionRelativeTo, mergeLocalSkillContractExtensions, buildStageInstructions, reportLine, reportBlankLine, reportValidationFailure, resolveStageAcceptance, validateStageOutcome, } from "../workflow-package/workflow-helpers.js";
4
+ export type CompiledCheck = "compiled" | "stage";
5
+ export interface DetectedInterfTarget {
6
+ path: string;
7
+ kind: "compiled";
8
+ engineType: "compiled";
9
+ config: InterfConfig;
10
+ }
11
+ export declare function detectCompiled(cwd: string): DetectedInterfTarget | null;
12
+ export declare function createCompiled(name: string, sourcePath: string, workflowId?: string, about?: string, datasetPath?: string): string;
13
+ export declare function verifyCompiledCheck(check: CompiledCheck, compiledPath: string): import("./validate-compiled.js").CompiledWorkflowValidation;
14
+ export { runCompiledSummarize, runCompiledCompile, compileCompiled, resolveCompiledContext, compiledExecutionStages, } from "./compiled-compile.js";
15
+ export type { CompiledSummarizeResult, CompiledCompileResult, CompiledStageExecutionDefinition, StageShellRetentionMode, } from "./compiled-compile.js";
@@ -0,0 +1,31 @@
1
+ import { createCompiled as createCompiledScaffold, } from "../project-model/interf-scaffold.js";
2
+ import { detectInterf } from "../project-model/interf-detect.js";
3
+ import { validateCompiledCompile, } from "./validate.js";
4
+ export { workflowQueryDirectory, workflowImproveDirectory, workflowCompileStageDirectory, emptyLocalSkillContractExtension, buildLocalSkillContractExtension, buildLocalSkillContractExtensionRelativeTo, mergeLocalSkillContractExtensions, buildStageInstructions, reportLine, reportBlankLine, reportValidationFailure, resolveStageAcceptance, validateStageOutcome, } from "../workflow-package/workflow-helpers.js";
5
+ export function detectCompiled(cwd) {
6
+ const detected = detectInterf(cwd);
7
+ if (!detected)
8
+ return null;
9
+ return {
10
+ path: detected.path,
11
+ kind: "compiled",
12
+ engineType: "compiled",
13
+ config: detected.config,
14
+ };
15
+ }
16
+ export function createCompiled(name, sourcePath, workflowId = "interf", about, datasetPath = sourcePath) {
17
+ return createCompiledScaffold(name, sourcePath, workflowId, about, datasetPath);
18
+ }
19
+ export function verifyCompiledCheck(check, compiledPath) {
20
+ switch (check) {
21
+ case "compiled":
22
+ return validateCompiledCompile(compiledPath);
23
+ case "stage":
24
+ return validateCompiledCompile(compiledPath);
25
+ default: {
26
+ const exhaustiveCheck = check;
27
+ throw new Error(`Unknown compiled check: ${exhaustiveCheck}`);
28
+ }
29
+ }
30
+ }
31
+ export { runCompiledSummarize, runCompiledCompile, compileCompiled, resolveCompiledContext, compiledExecutionStages, } from "./compiled-compile.js";
@@ -0,0 +1,40 @@
1
+ export declare const COMPILED_INTERF_DIR = ".interf";
2
+ export declare const COMPILED_CONFIG_FILE = "interf.json";
3
+ export declare const COMPILED_WORKFLOW_DIR = "workflow";
4
+ export declare const COMPILED_TEST_DIR = "tests";
5
+ export declare const COMPILED_TEST_TARGETS_DIR = "targets";
6
+ export declare const COMPILED_RUNTIME_DIR = "runtime";
7
+ export declare const COMPILED_RUNTIME_STATE_FILE = "state.json";
8
+ export declare const COMPILED_RUNTIME_HEALTH_FILE = "health.json";
9
+ export declare const COMPILED_RUNTIME_VIEW_SPEC_FILE = "view-spec.json";
10
+ export declare const COMPILED_RUNTIME_RAW_SNAPSHOT_FILE = "raw-snapshot.json";
11
+ export declare const COMPILED_RUNTIME_INVENTORY_FILE = "inventory.json";
12
+ export declare const COMPILED_RUNTIME_RUN_FILE = "run.json";
13
+ export declare const COMPILED_RUNTIME_RUN_HISTORY_FILE = "run-history.jsonl";
14
+ export declare const COMPILED_RUNTIME_STAGE_CONTRACT_FILE = "stage-contract.json";
15
+ export declare function compiledRuntimeRoot(compiledPath: string): string;
16
+ export declare function compiledRuntimeFilePath(compiledPath: string, fileName: string): string;
17
+ export declare function compiledInterfRoot(compiledPath: string): string;
18
+ export declare function compiledInterfConfigPath(compiledPath: string): string;
19
+ export declare function workflowPackagePathForCompiled(compiledPath: string): string;
20
+ export declare function testRootForCompiled(compiledPath: string): string;
21
+ export declare function testTargetsRootForCompiled(compiledPath: string): string;
22
+ export declare function stageExecutionShellsRoot(compiledPath: string): string;
23
+ export declare function workflowImprovementLoopsRoot(compiledPath: string): string;
24
+ export declare function workflowImprovementRunRoot(compiledPath: string, runId: string): string;
25
+ export declare function workflowImprovementLoopRoot(compiledPath: string, runId: string, loopIndex: number): string;
26
+ export declare function targetTestRunsRootForCompiled(compiledPath: string): string;
27
+ export declare function targetTestSandboxesRootForCompiled(compiledPath: string): string;
28
+ export declare function compiledRuntimeLogsRoot(compiledPath: string): string;
29
+ export declare function compiledRuntimeArchivedStageContractPath(compiledPath: string, runId: string): string;
30
+ export declare function compiledQueryAcceptanceRoot(compiledPath: string): string;
31
+ export declare function compiledRuntimeStatePath(compiledPath: string): string;
32
+ export declare function compiledRuntimeHealthPath(compiledPath: string): string;
33
+ export declare function compiledRuntimeViewSpecPath(compiledPath: string): string;
34
+ export declare function compiledRawSnapshotMetadataPath(compiledPath: string): string;
35
+ export declare function compiledRuntimeInventoryPath(compiledPath: string): string;
36
+ export declare function compiledRuntimeRunPath(compiledPath: string): string;
37
+ export declare function compiledRuntimeRunHistoryPath(compiledPath: string): string;
38
+ export declare function compiledRuntimeStageContractPath(compiledPath: string): string;
39
+ export declare function resolveSourceControlPathForCompiled(compiledPath: string): string;
40
+ export declare function defaultControlPathForCompiled(compiledPath: string): string;