@interf/compiler 0.22.2 → 0.33.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 (575) hide show
  1. package/README.md +175 -234
  2. package/dist/bin-mcp.d.ts +2 -0
  3. package/dist/bin-mcp.js +63 -0
  4. package/dist/bin-runtime.d.ts +2 -0
  5. package/dist/bin-runtime.js +111 -0
  6. package/dist/cli/commands/agents.js +4 -4
  7. package/dist/cli/commands/auth.d.ts +20 -0
  8. package/dist/cli/commands/auth.js +161 -0
  9. package/dist/cli/commands/benchmark.d.ts +10 -0
  10. package/dist/cli/commands/benchmark.js +88 -0
  11. package/dist/cli/commands/build-plan.js +95 -103
  12. package/dist/cli/commands/build.d.ts +1 -1
  13. package/dist/cli/commands/build.js +16 -15
  14. package/dist/cli/commands/doctor.js +3 -3
  15. package/dist/cli/commands/graphs.d.ts +2 -0
  16. package/dist/cli/commands/graphs.js +199 -0
  17. package/dist/cli/commands/login.js +4 -6
  18. package/dist/cli/commands/logout.js +1 -1
  19. package/dist/cli/commands/mcp.d.ts +3 -2
  20. package/dist/cli/commands/mcp.js +721 -204
  21. package/dist/cli/commands/project.d.ts +2 -0
  22. package/dist/cli/commands/project.js +202 -0
  23. package/dist/cli/commands/reset.d.ts +1 -1
  24. package/dist/cli/commands/reset.js +10 -10
  25. package/dist/cli/commands/runs.js +52 -26
  26. package/dist/cli/commands/runtime.d.ts +24 -0
  27. package/dist/cli/commands/runtime.js +373 -0
  28. package/dist/cli/commands/status.d.ts +1 -0
  29. package/dist/cli/commands/status.js +33 -22
  30. package/dist/cli/commands/traces.d.ts +2 -0
  31. package/dist/cli/commands/traces.js +125 -0
  32. package/dist/cli/commands/wizard.js +155 -150
  33. package/dist/cli/index.d.ts +7 -4
  34. package/dist/cli/index.js +13 -7
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +2 -2
  37. package/dist/packages/build-plans/authoring/brief.d.ts +517 -0
  38. package/dist/packages/build-plans/authoring/brief.js +89 -0
  39. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +10 -10
  40. package/dist/packages/build-plans/authoring/build-plan-authoring.js +66 -26
  41. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +1 -1
  42. package/dist/packages/build-plans/authoring/build-plan-edit-session.js +8 -2
  43. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
  44. package/dist/packages/build-plans/authoring/build-plan-improvement.js +39 -42
  45. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
  46. package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
  47. package/dist/packages/build-plans/build-plan-resolution.js +3 -3
  48. package/dist/packages/build-plans/index.d.ts +1 -1
  49. package/dist/packages/build-plans/index.js +1 -1
  50. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -12
  51. package/dist/packages/build-plans/package/build-plan-definitions.js +40 -39
  52. package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
  53. package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
  54. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
  55. package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
  56. package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +4 -4
  57. package/dist/packages/build-plans/package/build-plan-stage-runner.js +22 -11
  58. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +5 -6
  59. package/dist/packages/build-plans/package/builtin-build-plan.js +7 -8
  60. package/dist/packages/build-plans/package/context-interface.d.ts +11 -9
  61. package/dist/packages/build-plans/package/context-interface.js +14 -33
  62. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
  63. package/dist/packages/build-plans/package/interf-build-plan-package.js +56 -52
  64. package/dist/packages/build-plans/package/local-build-plans.d.ts +12 -10
  65. package/dist/packages/build-plans/package/local-build-plans.js +56 -31
  66. package/dist/packages/build-plans/package/user-build-plans.js +1 -1
  67. package/dist/packages/contracts/index.d.ts +4 -2
  68. package/dist/packages/contracts/index.js +2 -1
  69. package/dist/packages/contracts/lib/project-paths.d.ts +137 -0
  70. package/dist/packages/contracts/lib/project-paths.js +211 -0
  71. package/dist/packages/contracts/lib/project-schema.d.ts +160 -0
  72. package/dist/packages/contracts/lib/project-schema.js +113 -0
  73. package/dist/packages/contracts/lib/schema.d.ts +739 -80
  74. package/dist/packages/contracts/lib/schema.js +410 -75
  75. package/dist/packages/contracts/utils/parse.js +67 -0
  76. package/dist/packages/projects/index.d.ts +6 -0
  77. package/dist/packages/{project → projects}/index.js +0 -3
  78. package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
  79. package/dist/packages/{project → projects}/interf-detect.js +56 -50
  80. package/dist/packages/projects/interf.d.ts +2 -0
  81. package/dist/packages/projects/interf.js +1 -0
  82. package/dist/packages/projects/lib/schema.d.ts +79 -0
  83. package/dist/packages/projects/lib/schema.js +89 -0
  84. package/dist/packages/projects/source-config.d.ts +58 -0
  85. package/dist/packages/projects/source-config.js +352 -0
  86. package/dist/packages/projects/source-folders.d.ts +11 -0
  87. package/dist/packages/{project → projects}/source-folders.js +26 -26
  88. package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
  89. package/dist/packages/{engine → runtime}/action-planner.js +20 -22
  90. package/dist/packages/runtime/action-values.d.ts +1 -0
  91. package/dist/packages/runtime/action-values.js +1 -0
  92. package/dist/packages/runtime/actions/errors.d.ts +2 -0
  93. package/dist/packages/runtime/actions/errors.js +12 -0
  94. package/dist/packages/runtime/actions/fields.d.ts +82 -0
  95. package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
  96. package/dist/packages/runtime/actions/form-builders.js +619 -0
  97. package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
  98. package/dist/packages/runtime/actions/form-validators.js +128 -0
  99. package/dist/packages/runtime/actions/helpers.d.ts +11 -0
  100. package/dist/packages/runtime/actions/helpers.js +80 -0
  101. package/dist/packages/runtime/actions/index.d.ts +8 -0
  102. package/dist/packages/runtime/actions/index.js +11 -0
  103. package/dist/packages/runtime/actions/registry.d.ts +64 -0
  104. package/dist/packages/runtime/actions/registry.js +62 -0
  105. package/dist/packages/runtime/actions/requests.d.ts +45 -0
  106. package/dist/packages/runtime/actions/requests.js +158 -0
  107. package/dist/packages/runtime/actions/schemas.d.ts +154 -0
  108. package/dist/packages/runtime/actions/schemas.js +36 -0
  109. package/dist/packages/runtime/agent-handoff.d.ts +11 -0
  110. package/dist/packages/runtime/agent-handoff.js +101 -0
  111. package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
  112. package/dist/packages/{engine → runtime}/agents/index.js +1 -2
  113. package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
  114. package/dist/packages/runtime/agents/lib/args.js +24 -0
  115. package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
  116. package/dist/packages/runtime/agents/lib/constants.js +13 -0
  117. package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
  118. package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
  119. package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
  120. package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
  121. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +8 -14
  122. package/dist/packages/{engine → runtime}/agents/lib/execution.js +14 -4
  123. package/dist/packages/{engine → runtime}/agents/lib/preflight.js +15 -13
  124. package/dist/packages/{engine → runtime}/agents/lib/render.js +4 -4
  125. package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
  126. package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
  127. package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
  128. package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
  129. package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
  130. package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
  131. package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
  132. package/dist/packages/runtime/agents/lib/shell-templates.js +452 -0
  133. package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
  134. package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
  135. package/dist/packages/runtime/agents/lib/shells.d.ts +63 -0
  136. package/dist/packages/runtime/agents/lib/shells.js +383 -0
  137. package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
  138. package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
  139. package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
  140. package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
  141. package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
  142. package/dist/packages/runtime/agents/providers/codex.js +64 -0
  143. package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
  144. package/dist/packages/runtime/agents/providers/cursor.js +24 -0
  145. package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
  146. package/dist/packages/runtime/agents/providers/index.js +31 -0
  147. package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
  148. package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
  149. package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
  150. package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
  151. package/dist/packages/{engine → runtime}/agents/role-executors.js +7 -6
  152. package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
  153. package/dist/packages/runtime/auth/account-context.d.ts +52 -0
  154. package/dist/packages/runtime/auth/account-context.js +68 -0
  155. package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
  156. package/dist/packages/runtime/auth/auth-flow.js +189 -0
  157. package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
  158. package/dist/packages/runtime/auth/jwt-validator.js +86 -0
  159. package/dist/packages/runtime/auth/keychain.d.ts +35 -0
  160. package/dist/packages/runtime/auth/keychain.js +85 -0
  161. package/dist/packages/runtime/auth/session-store.d.ts +38 -0
  162. package/dist/packages/runtime/auth/session-store.js +88 -0
  163. package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
  164. package/dist/packages/runtime/auth/workos-client.js +87 -0
  165. package/dist/packages/runtime/benchmark-question-draft.d.ts +20 -0
  166. package/dist/packages/runtime/benchmark-question-draft.js +124 -0
  167. package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
  168. package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
  169. package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +5 -5
  170. package/dist/packages/{engine → runtime}/build/artifact-status.js +25 -23
  171. package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
  172. package/dist/packages/runtime/build/atomic-fs.js +95 -0
  173. package/dist/packages/runtime/build/billing-events.d.ts +78 -0
  174. package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
  175. package/dist/packages/runtime/build/build-evidence.d.ts +15 -0
  176. package/dist/packages/runtime/build/build-evidence.js +173 -0
  177. package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
  178. package/dist/packages/runtime/build/build-pipeline.js +304 -0
  179. package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
  180. package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
  181. package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
  182. package/dist/packages/runtime/build/build-plan-runs.js +31 -0
  183. package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
  184. package/dist/packages/{engine → runtime}/build/build-stage-plan.js +28 -29
  185. package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
  186. package/dist/packages/runtime/build/build-stage-runner.js +165 -0
  187. package/dist/packages/{engine → runtime}/build/build-target.d.ts +4 -4
  188. package/dist/packages/runtime/build/build-target.js +16 -0
  189. package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
  190. package/dist/packages/runtime/build/check-evaluator.js +575 -0
  191. package/dist/packages/runtime/build/context-graph-paths.d.ts +51 -0
  192. package/dist/packages/runtime/build/context-graph-paths.js +133 -0
  193. package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
  194. package/dist/packages/runtime/build/context-graph-schema.js +39 -0
  195. package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
  196. package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
  197. package/dist/packages/{engine → runtime}/build/index.d.ts +5 -3
  198. package/dist/packages/{engine → runtime}/build/index.js +5 -3
  199. package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +221 -88
  200. package/dist/packages/{engine → runtime}/build/lib/schema.js +61 -41
  201. package/dist/packages/runtime/build/reset.d.ts +2 -0
  202. package/dist/packages/runtime/build/reset.js +62 -0
  203. package/dist/packages/{engine → runtime}/build/runtime-contracts.js +5 -5
  204. package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
  205. package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
  206. package/dist/packages/{engine → runtime}/build/runtime-paths.js +6 -6
  207. package/dist/packages/{engine → runtime}/build/runtime-prompt.js +7 -6
  208. package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
  209. package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
  210. package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
  211. package/dist/packages/runtime/build/runtime-runs.js +265 -0
  212. package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +6 -6
  213. package/dist/packages/runtime/build/runtime-types.js +1 -0
  214. package/dist/packages/runtime/build/runtime.d.ts +6 -0
  215. package/dist/packages/runtime/build/runtime.js +5 -0
  216. package/dist/packages/runtime/build/source-files.d.ts +58 -0
  217. package/dist/packages/runtime/build/source-files.js +184 -0
  218. package/dist/packages/runtime/build/source-inventory.d.ts +27 -0
  219. package/dist/packages/runtime/build/source-inventory.js +273 -0
  220. package/dist/packages/runtime/build/source-manifest.d.ts +52 -0
  221. package/dist/packages/runtime/build/source-manifest.js +192 -0
  222. package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
  223. package/dist/packages/runtime/build/stage-evidence.js +317 -0
  224. package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
  225. package/dist/packages/runtime/build/stage-reuse.js +142 -0
  226. package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
  227. package/dist/packages/runtime/build/state-artifacts.js +14 -0
  228. package/dist/packages/runtime/build/state-health.d.ts +4 -0
  229. package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
  230. package/dist/packages/runtime/build/state-io.d.ts +12 -0
  231. package/dist/packages/runtime/build/state-io.js +119 -0
  232. package/dist/packages/{engine → runtime}/build/state-paths.d.ts +3 -1
  233. package/dist/packages/runtime/build/state-paths.js +22 -0
  234. package/dist/packages/runtime/build/state-view.d.ts +5 -0
  235. package/dist/packages/{engine → runtime}/build/state-view.js +60 -33
  236. package/dist/packages/runtime/build/state.d.ts +7 -0
  237. package/dist/packages/runtime/build/state.js +12 -0
  238. package/dist/packages/runtime/build/traces.d.ts +30 -0
  239. package/dist/packages/runtime/build/traces.js +133 -0
  240. package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
  241. package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +48 -35
  242. package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
  243. package/dist/packages/{engine → runtime}/build/validate.js +26 -26
  244. package/dist/packages/{engine → runtime}/client.d.ts +15 -15
  245. package/dist/packages/{engine → runtime}/client.js +41 -24
  246. package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
  247. package/dist/packages/{engine → runtime}/connection-config.js +9 -8
  248. package/dist/packages/runtime/context-checks.d.ts +10 -0
  249. package/dist/packages/runtime/context-checks.js +114 -0
  250. package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
  251. package/dist/packages/runtime/context-graph-scaffold.js +134 -0
  252. package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
  253. package/dist/packages/runtime/entitlement-guard.js +70 -0
  254. package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
  255. package/dist/packages/{engine → runtime}/execution/index.js +1 -1
  256. package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +270 -192
  257. package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
  258. package/dist/packages/runtime/index.d.ts +29 -0
  259. package/dist/packages/runtime/index.js +21 -0
  260. package/dist/packages/runtime/instance-paths.d.ts +30 -0
  261. package/dist/packages/runtime/instance-paths.js +29 -0
  262. package/dist/packages/{engine → runtime}/native-run-handlers.d.ts +4 -4
  263. package/dist/packages/{engine → runtime}/native-run-handlers.js +184 -152
  264. package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
  265. package/dist/packages/runtime/plan-artifact-contract.js +42 -0
  266. package/dist/packages/runtime/project-entries.d.ts +11 -0
  267. package/dist/packages/runtime/project-entries.js +49 -0
  268. package/dist/packages/runtime/project-source-state.d.ts +26 -0
  269. package/dist/packages/runtime/project-source-state.js +53 -0
  270. package/dist/packages/runtime/project-store.d.ts +85 -0
  271. package/dist/packages/runtime/project-store.js +168 -0
  272. package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
  273. package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
  274. package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
  275. package/dist/packages/{engine → runtime}/run-observability.js +166 -84
  276. package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
  277. package/dist/packages/runtime/runtime-action-proposals.js +542 -0
  278. package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
  279. package/dist/packages/runtime/runtime-build-plans.js +131 -0
  280. package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
  281. package/dist/packages/runtime/runtime-build-runs.js +562 -0
  282. package/dist/packages/runtime/runtime-caches.d.ts +91 -0
  283. package/dist/packages/{engine → runtime}/runtime-caches.js +77 -49
  284. package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
  285. package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
  286. package/dist/packages/runtime/runtime-executor.d.ts +22 -0
  287. package/dist/packages/runtime/runtime-executor.js +131 -0
  288. package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
  289. package/dist/packages/runtime/runtime-jobs.js +463 -0
  290. package/dist/packages/runtime/runtime-observability.d.ts +11 -0
  291. package/dist/packages/runtime/runtime-observability.js +39 -0
  292. package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
  293. package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
  294. package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
  295. package/dist/packages/runtime/runtime-project-mutations.js +64 -0
  296. package/dist/packages/runtime/runtime-project-reads.d.ts +15 -0
  297. package/dist/packages/runtime/runtime-project-reads.js +381 -0
  298. package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
  299. package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
  300. package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +21 -16
  301. package/dist/packages/{engine → runtime}/runtime-resource-builders.js +48 -38
  302. package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
  303. package/dist/packages/runtime/runtime-verify-runs.js +295 -0
  304. package/dist/packages/runtime/runtime.d.ts +1165 -0
  305. package/dist/packages/runtime/runtime.js +417 -0
  306. package/dist/packages/runtime/schemas/actions.d.ts +1182 -0
  307. package/dist/packages/runtime/schemas/actions.js +117 -0
  308. package/dist/packages/runtime/schemas/agents.d.ts +76 -0
  309. package/dist/packages/runtime/schemas/agents.js +41 -0
  310. package/dist/packages/runtime/schemas/build-plans.d.ts +959 -0
  311. package/dist/packages/runtime/schemas/build-plans.js +107 -0
  312. package/dist/packages/runtime/schemas/files.d.ts +567 -0
  313. package/dist/packages/runtime/schemas/files.js +51 -0
  314. package/dist/packages/runtime/schemas/index.d.ts +8 -0
  315. package/dist/packages/runtime/schemas/index.js +12 -0
  316. package/dist/packages/runtime/schemas/instance.d.ts +141 -0
  317. package/dist/packages/runtime/schemas/instance.js +143 -0
  318. package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
  319. package/dist/packages/runtime/schemas/jobs.js +103 -0
  320. package/dist/packages/runtime/schemas/projects.d.ts +339 -0
  321. package/dist/packages/runtime/schemas/projects.js +136 -0
  322. package/dist/packages/runtime/schemas/runs.d.ts +2676 -0
  323. package/dist/packages/runtime/schemas/runs.js +98 -0
  324. package/dist/packages/runtime/service/index.d.ts +3 -0
  325. package/dist/packages/runtime/service/index.js +3 -0
  326. package/dist/packages/runtime/service/openapi.d.ts +7 -0
  327. package/dist/packages/runtime/service/openapi.js +117 -0
  328. package/dist/packages/runtime/service/operations.d.ts +1490 -0
  329. package/dist/packages/runtime/service/operations.js +245 -0
  330. package/dist/packages/runtime/service/routes.d.ts +106 -0
  331. package/dist/packages/runtime/service/routes.js +120 -0
  332. package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
  333. package/dist/packages/runtime/service/server-api-files.js +85 -0
  334. package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
  335. package/dist/packages/runtime/service/server-app-boot.js +46 -0
  336. package/dist/packages/runtime/service/server-guards.d.ts +63 -0
  337. package/dist/packages/runtime/service/server-guards.js +181 -0
  338. package/dist/packages/runtime/service/server-helpers.d.ts +27 -0
  339. package/dist/packages/runtime/service/server-helpers.js +89 -0
  340. package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
  341. package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
  342. package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
  343. package/dist/packages/runtime/service/server-routes-action-proposals.js +43 -0
  344. package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
  345. package/dist/packages/runtime/service/server-routes-agents.js +198 -0
  346. package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
  347. package/dist/packages/runtime/service/server-routes-auth.js +138 -0
  348. package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
  349. package/dist/packages/runtime/service/server-routes-build-plans.js +83 -0
  350. package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
  351. package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
  352. package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
  353. package/dist/packages/runtime/service/server-routes-events.js +99 -0
  354. package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
  355. package/dist/packages/runtime/service/server-routes-project-context.js +192 -0
  356. package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
  357. package/dist/packages/runtime/service/server-routes-project-jobs.js +130 -0
  358. package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
  359. package/dist/packages/runtime/service/server-routes-project-runs.js +85 -0
  360. package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
  361. package/dist/packages/runtime/service/server-routes-projects.js +92 -0
  362. package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
  363. package/dist/packages/runtime/service/server-routes-runs.js +112 -0
  364. package/dist/packages/runtime/service/server.d.ts +37 -0
  365. package/dist/packages/runtime/service/server.js +300 -0
  366. package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
  367. package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
  368. package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
  369. package/dist/packages/runtime/verify/benchmark-run.js +303 -0
  370. package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
  371. package/dist/packages/{engine → runtime}/verify/index.js +1 -1
  372. package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
  373. package/dist/packages/{engine → runtime}/verify/lib/schema.js +26 -18
  374. package/dist/packages/{engine → runtime}/verify/verify-execution.js +11 -11
  375. package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +4 -4
  376. package/dist/packages/runtime/verify/verify-paths.js +61 -0
  377. package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
  378. package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
  379. package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
  380. package/dist/packages/{engine → runtime}/verify/verify-specs.js +5 -3
  381. package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
  382. package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
  383. package/dist/packages/runtime/verify/verify-types.js +1 -0
  384. package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
  385. package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
  386. package/dist/packages/runtime/wire-schemas.d.ts +18 -0
  387. package/dist/packages/runtime/wire-schemas.js +27 -0
  388. package/package.json +39 -31
  389. package/public-repo/CONTRIBUTING.md +7 -16
  390. package/public-repo/README.md +175 -234
  391. package/public-repo/SECURITY.md +3 -4
  392. package/public-repo/build-plans/interf-default/README.md +19 -14
  393. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +18 -11
  394. package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +12 -5
  395. package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +16 -4
  396. package/public-repo/build-plans/interf-default/build-plan.json +34 -28
  397. package/public-repo/build-plans/interf-default/build-plan.schema.json +54 -32
  398. package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
  399. package/public-repo/build-plans/interf-default/use/query/SKILL.md +17 -11
  400. package/public-repo/openapi/local-service.openapi.json +6803 -0
  401. package/public-repo/skills/interf/SKILL.md +460 -179
  402. package/dist/cli/commands/prep.d.ts +0 -2
  403. package/dist/cli/commands/prep.js +0 -240
  404. package/dist/cli/commands/test.d.ts +0 -10
  405. package/dist/cli/commands/test.js +0 -85
  406. package/dist/cli/commands/web.d.ts +0 -2
  407. package/dist/cli/commands/web.js +0 -286
  408. package/dist/interf-ui/404.html +0 -1
  409. package/dist/interf-ui/__next.__PAGE__.txt +0 -10
  410. package/dist/interf-ui/__next._full.txt +0 -20
  411. package/dist/interf-ui/__next._head.txt +0 -5
  412. package/dist/interf-ui/__next._index.txt +0 -5
  413. package/dist/interf-ui/__next._tree.txt +0 -5
  414. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
  415. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
  416. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
  417. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
  418. package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
  419. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
  420. package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
  421. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
  422. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
  423. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
  424. package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
  425. package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
  426. package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
  427. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
  428. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
  429. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
  430. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
  431. package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
  432. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
  433. package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
  434. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
  435. package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
  436. package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  437. package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  438. package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
  439. package/dist/interf-ui/_not-found/__next._full.txt +0 -15
  440. package/dist/interf-ui/_not-found/__next._head.txt +0 -5
  441. package/dist/interf-ui/_not-found/__next._index.txt +0 -5
  442. package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
  443. package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
  444. package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
  445. package/dist/interf-ui/_not-found.html +0 -1
  446. package/dist/interf-ui/_not-found.txt +0 -15
  447. package/dist/interf-ui/index.html +0 -1
  448. package/dist/interf-ui/index.txt +0 -20
  449. package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
  450. package/dist/packages/contracts/lib/preparation-paths.js +0 -177
  451. package/dist/packages/engine/action-definitions.d.ts +0 -407
  452. package/dist/packages/engine/action-definitions.js +0 -1158
  453. package/dist/packages/engine/action-values.d.ts +0 -1
  454. package/dist/packages/engine/action-values.js +0 -1
  455. package/dist/packages/engine/agents/lib/args.d.ts +0 -4
  456. package/dist/packages/engine/agents/lib/args.js +0 -52
  457. package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
  458. package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
  459. package/dist/packages/engine/agents/lib/constants.js +0 -28
  460. package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
  461. package/dist/packages/engine/agents/lib/schema.js +0 -7
  462. package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
  463. package/dist/packages/engine/agents/lib/shells.js +0 -1052
  464. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
  465. package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
  466. package/dist/packages/engine/build/billing-events.d.ts +0 -89
  467. package/dist/packages/engine/build/build-pipeline.js +0 -175
  468. package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
  469. package/dist/packages/engine/build/build-plan-runs.js +0 -31
  470. package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
  471. package/dist/packages/engine/build/build-stage-runner.js +0 -94
  472. package/dist/packages/engine/build/build-target.js +0 -16
  473. package/dist/packages/engine/build/check-evaluator.js +0 -298
  474. package/dist/packages/engine/build/reset.d.ts +0 -2
  475. package/dist/packages/engine/build/reset.js +0 -74
  476. package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
  477. package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
  478. package/dist/packages/engine/build/runtime-runs.js +0 -224
  479. package/dist/packages/engine/build/runtime.d.ts +0 -5
  480. package/dist/packages/engine/build/runtime.js +0 -4
  481. package/dist/packages/engine/build/source-files.d.ts +0 -46
  482. package/dist/packages/engine/build/source-files.js +0 -149
  483. package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
  484. package/dist/packages/engine/build/state-artifacts.js +0 -14
  485. package/dist/packages/engine/build/state-health.d.ts +0 -4
  486. package/dist/packages/engine/build/state-io.d.ts +0 -11
  487. package/dist/packages/engine/build/state-io.js +0 -82
  488. package/dist/packages/engine/build/state-paths.js +0 -16
  489. package/dist/packages/engine/build/state-view.d.ts +0 -5
  490. package/dist/packages/engine/build/state.d.ts +0 -7
  491. package/dist/packages/engine/build/state.js +0 -12
  492. package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
  493. package/dist/packages/engine/build/validate-helpers.js +0 -41
  494. package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
  495. package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
  496. package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
  497. package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
  498. package/dist/packages/engine/cloud-seams.d.ts +0 -115
  499. package/dist/packages/engine/cloud-seams.js +0 -84
  500. package/dist/packages/engine/index.d.ts +0 -22
  501. package/dist/packages/engine/index.js +0 -15
  502. package/dist/packages/engine/instance-paths.d.ts +0 -106
  503. package/dist/packages/engine/instance-paths.js +0 -171
  504. package/dist/packages/engine/lib/schema.d.ts +0 -6304
  505. package/dist/packages/engine/lib/schema.js +0 -730
  506. package/dist/packages/engine/preparation-store.d.ts +0 -105
  507. package/dist/packages/engine/preparation-store.js +0 -213
  508. package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
  509. package/dist/packages/engine/readiness-check-draft.js +0 -111
  510. package/dist/packages/engine/requested-artifacts.d.ts +0 -5
  511. package/dist/packages/engine/routes.d.ts +0 -85
  512. package/dist/packages/engine/routes.js +0 -99
  513. package/dist/packages/engine/runtime-caches.d.ts +0 -76
  514. package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
  515. package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
  516. package/dist/packages/engine/runtime.d.ts +0 -371
  517. package/dist/packages/engine/runtime.js +0 -2463
  518. package/dist/packages/engine/server.d.ts +0 -58
  519. package/dist/packages/engine/server.js +0 -1399
  520. package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
  521. package/dist/packages/engine/verify/readiness-check-run.js +0 -265
  522. package/dist/packages/engine/verify/verify-paths.js +0 -61
  523. package/dist/packages/engine/verify/verify-sandbox.js +0 -88
  524. package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
  525. package/dist/packages/engine/wire-schemas.d.ts +0 -547
  526. package/dist/packages/engine/wire-schemas.js +0 -59
  527. package/dist/packages/project/index.d.ts +0 -9
  528. package/dist/packages/project/interf-bootstrap.d.ts +0 -1
  529. package/dist/packages/project/interf-bootstrap.js +0 -1
  530. package/dist/packages/project/interf-scaffold.d.ts +0 -3
  531. package/dist/packages/project/interf-scaffold.js +0 -136
  532. package/dist/packages/project/interf.d.ts +0 -4
  533. package/dist/packages/project/interf.js +0 -3
  534. package/dist/packages/project/lib/schema.d.ts +0 -328
  535. package/dist/packages/project/lib/schema.js +0 -136
  536. package/dist/packages/project/preparation-entries.d.ts +0 -11
  537. package/dist/packages/project/preparation-entries.js +0 -49
  538. package/dist/packages/project/source-config.d.ts +0 -46
  539. package/dist/packages/project/source-config.js +0 -394
  540. package/dist/packages/project/source-folders.d.ts +0 -11
  541. package/public-repo/plugins/README.md +0 -9
  542. package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
  543. package/public-repo/plugins/interf/.mcp.json +0 -12
  544. package/public-repo/plugins/interf/README.md +0 -32
  545. package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
  546. /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
  547. /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
  548. /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
  549. /package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +0 -0
  550. /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
  551. /package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +0 -0
  552. /package/dist/packages/{engine → runtime}/agents/lib/executors.js +0 -0
  553. /package/dist/packages/{engine → runtime}/agents/lib/logs.d.ts +0 -0
  554. /package/dist/packages/{engine → runtime}/agents/lib/logs.js +0 -0
  555. /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
  556. /package/dist/packages/{engine → runtime}/agents/lib/render.d.ts +0 -0
  557. /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
  558. /package/dist/packages/{engine → runtime}/agents/lib/status.js +0 -0
  559. /package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +0 -0
  560. /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
  561. /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
  562. /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
  563. /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
  564. /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
  565. /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
  566. /package/dist/packages/{engine → runtime}/build/runtime-paths.d.ts +0 -0
  567. /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
  568. /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
  569. /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
  570. /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
  571. /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
  572. /package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +0 -0
  573. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
  574. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
  575. /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
@@ -0,0 +1,317 @@
1
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
2
+ import { dirname, join, relative } from "node:path";
3
+ import { StageEvidenceSchema, } from "../../contracts/lib/schema.js";
4
+ import { buildPlanPackagePathForContextGraph, contextGraphRuntimeLogsRoot, } from "./context-graph-paths.js";
5
+ import { findBuildPlanContextArtifact, readBuildPlanContextFile, } from "./context-graph-schema.js";
6
+ import { StageEvidenceReconciliationSchema, } from "./lib/schema.js";
7
+ import { loadBuildStageInputs } from "./source-manifest.js";
8
+ import { loadExecutionStageLedger, updateExecutionStageLedger, } from "./runtime-runs.js";
9
+ function normalizeRelativePath(path) {
10
+ return path.replaceAll("\\", "/").replace(/^\.?\//, "").replace(/\/+$/g, "");
11
+ }
12
+ function relativePathEqualsOrWithin(basePath, candidatePath) {
13
+ const base = normalizeRelativePath(basePath);
14
+ const candidate = normalizeRelativePath(candidatePath);
15
+ if (base.length === 0 || candidate.length === 0)
16
+ return false;
17
+ return candidate === base || candidate.startsWith(`${base}/`);
18
+ }
19
+ export function supportsStageEvidenceHarness(stage) {
20
+ return stage.contractType === "build-file-evidence";
21
+ }
22
+ export function shellStageEvidencePath(executionPath) {
23
+ return join(executionPath, "runtime", "stage-evidence.json");
24
+ }
25
+ export function shellStageHarnessPath(executionPath) {
26
+ return join(executionPath, "runtime", "stage.md");
27
+ }
28
+ export function writeStageHarnessProjection(options) {
29
+ if (!supportsStageEvidenceHarness({ contractType: options.contract.contract_type }))
30
+ return;
31
+ const runtimeRoot = join(options.executionPath, "runtime");
32
+ mkdirSync(runtimeRoot, { recursive: true });
33
+ const evidencePath = shellStageEvidencePath(options.executionPath);
34
+ if (!existsSync(evidencePath)) {
35
+ const starterEvidence = {
36
+ kind: "interf-stage-evidence",
37
+ version: 1,
38
+ run_id: options.contract.run_id,
39
+ stage: options.contract.stage,
40
+ counts: [],
41
+ items: [],
42
+ edges: [],
43
+ };
44
+ writeFileSync(evidencePath, `${JSON.stringify(starterEvidence, null, 2)}\n`);
45
+ }
46
+ writeFileSync(shellStageHarnessPath(options.executionPath), renderStageHarnessMarkdown(options.contract));
47
+ }
48
+ function renderStageHarnessMarkdown(contract) {
49
+ return [
50
+ "---",
51
+ "kind: interf-stage-harness",
52
+ "version: 1",
53
+ `run_id: ${contract.run_id}`,
54
+ `project_id: ${contract.target_name}`,
55
+ `build_plan: ${contract.build_plan.id}`,
56
+ `stage: ${contract.stage}`,
57
+ "contract_path: runtime/stage-contract.json",
58
+ "paths_path: runtime/paths.json",
59
+ "source_manifest_path: runtime/source-manifest.json",
60
+ "stage_inputs_path: runtime/stage-inputs.json",
61
+ "evidence_output_path: runtime/stage-evidence.json",
62
+ "---",
63
+ "",
64
+ "# Stage Harness",
65
+ "",
66
+ "Read the JSON contract first. This markdown file is a generated projection for the current stage only.",
67
+ "",
68
+ "## Evidence",
69
+ "",
70
+ "Write `runtime/stage-evidence.json` before you emit DONE.",
71
+ "Each evidence item must reference real assigned Source paths or declared output paths.",
72
+ "Agent status lines and self-reported completion do not count as accepted evidence.",
73
+ "",
74
+ "Minimum shape:",
75
+ "",
76
+ "```json",
77
+ JSON.stringify({
78
+ kind: "interf-stage-evidence",
79
+ version: 1,
80
+ run_id: contract.run_id,
81
+ stage: contract.stage,
82
+ counts: [
83
+ {
84
+ key: "files_processed",
85
+ label: "Files processed",
86
+ value: 0,
87
+ total: contract.counts.source_total ?? 0,
88
+ unit: "files",
89
+ source: "stage",
90
+ stage_id: contract.stage,
91
+ primary: true,
92
+ },
93
+ ],
94
+ items: [],
95
+ edges: [],
96
+ }, null, 2),
97
+ "```",
98
+ "",
99
+ ].join("\n");
100
+ }
101
+ export function reconcileStageEvidence(options) {
102
+ if (!supportsStageEvidenceHarness(options.stage))
103
+ return null;
104
+ const run = loadExecutionStageLedger(options.contextGraphPath);
105
+ if (!run)
106
+ return null;
107
+ const evidenceFilePath = shellStageEvidencePath(options.shellRoot);
108
+ const persistedEvidencePath = persistRawStageEvidence({
109
+ contextGraphPath: options.contextGraphPath,
110
+ evidenceFilePath,
111
+ run,
112
+ });
113
+ let parsed;
114
+ try {
115
+ parsed = StageEvidenceSchema.parse(JSON.parse(readFileSync(evidenceFilePath, "utf8")));
116
+ }
117
+ catch (error) {
118
+ const reconciliation = makeReconciliation({
119
+ evidencePath: persistedEvidencePath,
120
+ rejected: [{
121
+ kind: "file",
122
+ id: "stage-evidence-json",
123
+ reason: `Invalid stage evidence JSON: ${error instanceof Error ? error.message : String(error)}`,
124
+ }],
125
+ });
126
+ updateExecutionStageLedger(options.contextGraphPath, {
127
+ evidence_path: persistedEvidencePath ?? undefined,
128
+ evidence: reconciliation,
129
+ });
130
+ return reconciliation;
131
+ }
132
+ const reconciliation = reconcileParsedStageEvidence({
133
+ contextGraphPath: options.contextGraphPath,
134
+ evidence: parsed,
135
+ evidencePath: persistedEvidencePath,
136
+ run,
137
+ stage: options.stage,
138
+ });
139
+ updateExecutionStageLedger(options.contextGraphPath, {
140
+ evidence_path: persistedEvidencePath ?? undefined,
141
+ evidence: reconciliation,
142
+ });
143
+ return reconciliation;
144
+ }
145
+ export function stageEvidenceAcceptanceFailure(reconciliation) {
146
+ if (!reconciliation) {
147
+ return "Stage evidence was not reconciled.";
148
+ }
149
+ if (reconciliation.rejected.length > 0) {
150
+ const first = reconciliation.rejected[0];
151
+ return `Stage evidence was rejected: ${first.id}: ${first.reason}`;
152
+ }
153
+ const acceptedItems = reconciliation.accepted.items;
154
+ if (acceptedItems.length === 0) {
155
+ return "Stage evidence needs at least one accepted source/output evidence item.";
156
+ }
157
+ const hasAcceptedRef = acceptedItems.some((item) => item.source_refs.length > 0 || item.output_refs.length > 0);
158
+ if (!hasAcceptedRef) {
159
+ return "Stage evidence items need accepted source or output refs.";
160
+ }
161
+ return null;
162
+ }
163
+ function persistRawStageEvidence(options) {
164
+ if (!existsSync(options.evidenceFilePath))
165
+ return null;
166
+ const targetPath = join(contextGraphRuntimeLogsRoot(options.contextGraphPath), `${options.run.run_id}.stage-evidence.json`);
167
+ mkdirSync(dirname(targetPath), { recursive: true });
168
+ copyFileSync(options.evidenceFilePath, targetPath);
169
+ return relative(options.contextGraphPath, targetPath).replaceAll("\\", "/");
170
+ }
171
+ function reconcileParsedStageEvidence(options) {
172
+ const rejected = [];
173
+ if (options.evidence.run_id !== options.run.run_id) {
174
+ rejected.push({
175
+ kind: "file",
176
+ id: "run-id",
177
+ reason: `Evidence run_id "${options.evidence.run_id}" does not match active run "${options.run.run_id}".`,
178
+ });
179
+ }
180
+ if (options.evidence.stage !== options.stage.id || options.evidence.stage !== options.run.stage) {
181
+ rejected.push({
182
+ kind: "file",
183
+ id: "stage",
184
+ reason: `Evidence stage "${options.evidence.stage}" does not match active stage "${options.run.stage}".`,
185
+ });
186
+ }
187
+ if (rejected.length > 0) {
188
+ return makeReconciliation({ evidencePath: options.evidencePath, rejected });
189
+ }
190
+ const stageInputs = loadBuildStageInputs(options.contextGraphPath, options.stage.id);
191
+ const allowedSourcePaths = new Set((stageInputs?.inputs ?? []).map((input) => input.path));
192
+ const allowedSourceIds = new Set((stageInputs?.inputs ?? []).map((input) => input.source_file_id));
193
+ const acceptedItems = [];
194
+ for (const item of options.evidence.items) {
195
+ const reason = invalidItemReason({
196
+ contextGraphPath: options.contextGraphPath,
197
+ item,
198
+ allowedSourceIds,
199
+ allowedSourcePaths,
200
+ stage: options.stage,
201
+ });
202
+ if (reason) {
203
+ rejected.push({ kind: "item", id: item.id, reason });
204
+ }
205
+ else {
206
+ acceptedItems.push(item);
207
+ }
208
+ }
209
+ const acceptedSourceRefCount = new Set(acceptedItems.flatMap((item) => item.source_refs.map((ref) => ref.path))).size;
210
+ const acceptedCounts = [];
211
+ for (const count of options.evidence.counts) {
212
+ const reason = invalidCountReason({
213
+ count,
214
+ acceptedItems,
215
+ acceptedSourceRefCount,
216
+ stage: options.stage,
217
+ });
218
+ if (reason) {
219
+ rejected.push({ kind: "count", id: count.key, reason });
220
+ }
221
+ else {
222
+ acceptedCounts.push(count);
223
+ }
224
+ }
225
+ const acceptedItemIds = new Set(acceptedItems.map((item) => item.id));
226
+ const acceptedEdges = [];
227
+ for (const edge of options.evidence.edges) {
228
+ if (edge.stage_id !== options.stage.id) {
229
+ rejected.push({ kind: "edge", id: `${edge.from}:${edge.to}`, reason: "Edge stage does not match the active stage." });
230
+ }
231
+ else if (!acceptedItemIds.has(edge.from) || !acceptedItemIds.has(edge.to)) {
232
+ rejected.push({ kind: "edge", id: `${edge.from}:${edge.to}`, reason: "Edge endpoints must both be accepted evidence items." });
233
+ }
234
+ else {
235
+ acceptedEdges.push(edge);
236
+ }
237
+ }
238
+ return makeReconciliation({
239
+ evidencePath: options.evidencePath,
240
+ accepted: {
241
+ counts: acceptedCounts,
242
+ items: acceptedItems,
243
+ edges: acceptedEdges,
244
+ },
245
+ rejected,
246
+ warnings: options.evidence.warnings ?? [],
247
+ });
248
+ }
249
+ function invalidItemReason(options) {
250
+ if (options.item.stage_id !== options.stage.id)
251
+ return "Item stage does not match the active stage.";
252
+ if (options.item.source_refs.length === 0 && options.item.output_refs.length === 0) {
253
+ return "Evidence items need at least one source or output ref.";
254
+ }
255
+ for (const sourceRef of options.item.source_refs) {
256
+ if (!options.allowedSourcePaths.has(sourceRef.path)) {
257
+ return `Source ref "${sourceRef.path}" is not assigned to this stage.`;
258
+ }
259
+ if (sourceRef.source_file_id && !options.allowedSourceIds.has(sourceRef.source_file_id)) {
260
+ return `Source file id "${sourceRef.source_file_id}" is not assigned to this stage.`;
261
+ }
262
+ }
263
+ for (const outputRef of options.item.output_refs) {
264
+ const reason = invalidOutputRefReason(options.contextGraphPath, outputRef, options.stage);
265
+ if (reason)
266
+ return reason;
267
+ }
268
+ return null;
269
+ }
270
+ function invalidOutputRefReason(contextGraphPath, outputRef, stage) {
271
+ if (!stage.writes.includes(outputRef.artifact_id)) {
272
+ return `Output ref artifact "${outputRef.artifact_id}" is not declared as a stage write.`;
273
+ }
274
+ const schema = readBuildPlanContextFile(buildPlanPackagePathForContextGraph(contextGraphPath));
275
+ const artifact = schema ? findBuildPlanContextArtifact(schema, outputRef.artifact_id) : null;
276
+ if (!artifact)
277
+ return `Output ref artifact "${outputRef.artifact_id}" is not in the Build Plan schema.`;
278
+ if (!relativePathEqualsOrWithin(artifact.path, outputRef.path)) {
279
+ return `Output ref path "${outputRef.path}" is outside artifact "${artifact.id}".`;
280
+ }
281
+ if (!existsSync(join(contextGraphPath, outputRef.path))) {
282
+ return `Output ref path "${outputRef.path}" does not exist in the Context Graph.`;
283
+ }
284
+ return null;
285
+ }
286
+ function invalidCountReason(options) {
287
+ if (options.count.source === "engine")
288
+ return "Stage evidence cannot claim engine-owned counts.";
289
+ if (options.count.stage_id && options.count.stage_id !== options.stage.id) {
290
+ return "Count stage does not match the active stage.";
291
+ }
292
+ if (options.count.artifact_id && !options.stage.writes.includes(options.count.artifact_id)) {
293
+ return `Count artifact "${options.count.artifact_id}" is not declared as a stage write.`;
294
+ }
295
+ if (options.count.key === "files_processed" && options.count.value > options.acceptedSourceRefCount) {
296
+ return "files_processed cannot exceed accepted source refs.";
297
+ }
298
+ if (options.count.value > 0 && options.acceptedItems.length === 0) {
299
+ return "Positive stage counts need at least one accepted evidence item.";
300
+ }
301
+ return null;
302
+ }
303
+ function makeReconciliation(options) {
304
+ return StageEvidenceReconciliationSchema.parse({
305
+ kind: "interf-stage-evidence-reconciliation",
306
+ version: 1,
307
+ generated_at: new Date().toISOString(),
308
+ evidence_path: options.evidencePath,
309
+ accepted: options.accepted ?? {
310
+ counts: [],
311
+ items: [],
312
+ edges: [],
313
+ },
314
+ rejected: options.rejected ?? [],
315
+ warnings: options.warnings ?? [],
316
+ });
317
+ }
@@ -0,0 +1,11 @@
1
+ import type { BuildStageExecutionDefinition } from "./build-target.js";
2
+ export declare function computeStageFingerprint(contextGraphPath: string, stageDefinition: BuildStageExecutionDefinition): string | null;
3
+ export interface StageReuseDecision {
4
+ reuse: boolean;
5
+ fingerprint: string | null;
6
+ summary: string;
7
+ }
8
+ export declare function stageReuseDecision(options: {
9
+ contextGraphPath: string;
10
+ stageDefinition: BuildStageExecutionDefinition;
11
+ }): StageReuseDecision;
@@ -0,0 +1,142 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { join, relative } from "node:path";
4
+ import { buildPlanPackagePathForContextGraph, } from "./context-graph-paths.js";
5
+ import { buildBuildStageExecutionPlan } from "./build-stage-plan.js";
6
+ import { loadState } from "./state.js";
7
+ import { loadBuildStageInputs, loadContextGraphSourceManifest } from "./source-manifest.js";
8
+ import { validateBuildStage } from "./validate.js";
9
+ import { StageFingerprintSchema } from "./lib/schema.js";
10
+ import { listFilesRecursive } from "../../contracts/utils/filesystem.js";
11
+ import { readExecutionStageLedgerHistory } from "../runtime-persistence.js";
12
+ import { stageEvidenceAcceptanceFailure, supportsStageEvidenceHarness, } from "./stage-evidence.js";
13
+ function stableValue(value) {
14
+ if (Array.isArray(value))
15
+ return value.map(stableValue);
16
+ if (!value || typeof value !== "object")
17
+ return value;
18
+ return Object.fromEntries(Object.entries(value)
19
+ .sort(([left], [right]) => left.localeCompare(right))
20
+ .map(([key, entry]) => [key, stableValue(entry)]));
21
+ }
22
+ function stableJson(value) {
23
+ return JSON.stringify(stableValue(value));
24
+ }
25
+ function sha256(value) {
26
+ return createHash("sha256").update(value).digest("hex");
27
+ }
28
+ function fileHash(path) {
29
+ if (!existsSync(path))
30
+ return null;
31
+ return sha256(readFileSync(path));
32
+ }
33
+ function latestStageRun(runs, runId, stageId) {
34
+ if (!runId)
35
+ return null;
36
+ return runs
37
+ .filter((run) => run.run_id === runId && run.stage === stageId)
38
+ .sort((left, right) => left.updated_at.localeCompare(right.updated_at))
39
+ .at(-1) ?? null;
40
+ }
41
+ function buildPlanPackageHash(contextGraphPath) {
42
+ const root = buildPlanPackagePathForContextGraph(contextGraphPath);
43
+ const files = listFilesRecursive(root)
44
+ .map((path) => ({
45
+ path,
46
+ relativePath: relative(root, path).replaceAll("\\", "/"),
47
+ }))
48
+ .sort((left, right) => left.relativePath.localeCompare(right.relativePath));
49
+ return sha256(stableJson(files.map((file) => ({
50
+ path: file.relativePath,
51
+ hash: fileHash(file.path),
52
+ }))));
53
+ }
54
+ export function computeStageFingerprint(contextGraphPath, stageDefinition) {
55
+ const stageInputs = loadBuildStageInputs(contextGraphPath, stageDefinition.id);
56
+ if (!stageInputs)
57
+ return null;
58
+ if (stageInputs.version !== 3 || !stageInputs.source_manifest_id)
59
+ return null;
60
+ const sourceManifest = loadContextGraphSourceManifest(contextGraphPath);
61
+ if (!sourceManifest || sourceManifest.manifest_id !== stageInputs.source_manifest_id)
62
+ return null;
63
+ const plan = buildBuildStageExecutionPlan(contextGraphPath, stageDefinition);
64
+ const stageSkillPath = join(buildPlanPackagePathForContextGraph(contextGraphPath), "build", "stages", stageDefinition.skillDir, "SKILL.md");
65
+ const payload = {
66
+ build_plan: {
67
+ id: plan.context.buildPlanId,
68
+ package_hash: buildPlanPackageHash(contextGraphPath),
69
+ },
70
+ source_manifest: {
71
+ manifest_id: sourceManifest.manifest_id,
72
+ generated_at: sourceManifest.generated_at,
73
+ source_total: sourceManifest.source_total,
74
+ },
75
+ source_slice: stageInputs.inputs
76
+ .map((input) => ({
77
+ source_file_id: input.source_file_id,
78
+ path: input.path,
79
+ locator: input.locator,
80
+ kind: input.kind,
81
+ size_bytes: input.size_bytes,
82
+ page_count: input.page_count,
83
+ inspectable_units: input.inspectable_units,
84
+ content_hash: input.content_hash,
85
+ }))
86
+ .sort((left, right) => `${left.source_file_id}:${left.path}`.localeCompare(`${right.source_file_id}:${right.path}`)),
87
+ stage: {
88
+ id: stageDefinition.id,
89
+ skill_dir: stageDefinition.skillDir,
90
+ skill_hash: fileHash(stageSkillPath),
91
+ },
92
+ contract: {
93
+ stage: stageDefinition.id,
94
+ contract_type: stageDefinition.contractType,
95
+ counts: plan.contract.counts,
96
+ artifacts: {
97
+ reads: [...plan.contract.artifacts.reads].sort((left, right) => left.localeCompare(right)),
98
+ writes: [...plan.contract.artifacts.writes].sort((left, right) => left.localeCompare(right)),
99
+ write_contracts: [...plan.contract.artifacts.write_contracts]
100
+ .map((contract) => ({
101
+ artifact_id: contract.artifact_id,
102
+ path: contract.path,
103
+ checks: contract.checks,
104
+ }))
105
+ .sort((left, right) => `${left.artifact_id}:${left.path}`.localeCompare(`${right.artifact_id}:${right.path}`)),
106
+ },
107
+ },
108
+ };
109
+ return StageFingerprintSchema.parse(sha256(stableJson(payload)));
110
+ }
111
+ export function stageReuseDecision(options) {
112
+ const fingerprint = computeStageFingerprint(options.contextGraphPath, options.stageDefinition);
113
+ if (!fingerprint) {
114
+ return { reuse: false, fingerprint, summary: "missing stage fingerprint input" };
115
+ }
116
+ const state = loadState(options.contextGraphPath);
117
+ const record = state?.stages?.[options.stageDefinition.id];
118
+ if (!record || record.status !== "succeeded") {
119
+ return { reuse: false, fingerprint, summary: "stage has not succeeded yet" };
120
+ }
121
+ if (record.fingerprint !== fingerprint) {
122
+ return { reuse: false, fingerprint, summary: "stage fingerprint changed" };
123
+ }
124
+ if (supportsStageEvidenceHarness(options.stageDefinition)) {
125
+ const acceptedEvidenceRun = latestStageRun(readExecutionStageLedgerHistory(options.contextGraphPath), record.run_id, options.stageDefinition.id);
126
+ if (acceptedEvidenceRun?.status !== "succeeded") {
127
+ return { reuse: false, fingerprint, summary: "stage evidence run has not succeeded" };
128
+ }
129
+ const evidenceFailure = stageEvidenceAcceptanceFailure(acceptedEvidenceRun?.evidence ?? null);
130
+ if (evidenceFailure) {
131
+ return { reuse: false, fingerprint, summary: evidenceFailure };
132
+ }
133
+ }
134
+ const validation = validateBuildStage(options.contextGraphPath, options.stageDefinition.id);
135
+ if (!validation.required) {
136
+ return { reuse: false, fingerprint, summary: "stage is not required yet" };
137
+ }
138
+ if (!validation.ok) {
139
+ return { reuse: false, fingerprint, summary: validation.summary };
140
+ }
141
+ return { reuse: true, fingerprint, summary: "reused (verified, unchanged)" };
142
+ }
@@ -0,0 +1,9 @@
1
+ import { type ContextGraphHealth, type ContextGraphViewSpec, type SourceFiles, type SourceState } from "./lib/schema.js";
2
+ export declare function refreshContextGraphArtifacts(dirPath: string, options?: {
3
+ ensureViewSpec?: boolean;
4
+ }): {
5
+ health: ContextGraphHealth;
6
+ viewSpec?: ContextGraphViewSpec;
7
+ sourceFiles: SourceFiles;
8
+ sourceState: SourceState;
9
+ };
@@ -0,0 +1,14 @@
1
+ import { saveContextGraphHealth, } from "./state-io.js";
2
+ import { computeContextGraphHealth, } from "./state-health.js";
3
+ import { ensureContextGraphSourceFiles, ensureContextGraphSourceState, ensureContextGraphViewSpec, } from "./state-view.js";
4
+ export function refreshContextGraphArtifacts(dirPath, options) {
5
+ const health = computeContextGraphHealth(dirPath);
6
+ saveContextGraphHealth(dirPath, health);
7
+ const sourceFiles = ensureContextGraphSourceFiles(dirPath);
8
+ const sourceState = ensureContextGraphSourceState(dirPath, sourceFiles);
9
+ let viewSpec;
10
+ if (options?.ensureViewSpec) {
11
+ viewSpec = ensureContextGraphViewSpec(dirPath);
12
+ }
13
+ return { health, viewSpec, sourceFiles, sourceState };
14
+ }
@@ -0,0 +1,4 @@
1
+ import { type ContextGraphHealth, type BuildStage, type RuntimeStatus } from "./lib/schema.js";
2
+ export declare function computeContextGraphHealth(dirPath: string): ContextGraphHealth;
3
+ export declare function resolveContextGraphStatus(..._args: unknown[]): RuntimeStatus;
4
+ export declare function resolveBuildStage(...args: unknown[]): BuildStage;
@@ -1,22 +1,21 @@
1
1
  import { basename } from "node:path";
2
- import { readInterfConfig, resolveSourceFolderPath, } from "../../project/interf-detect.js";
3
- import { discoverSourceFiles } from "./discovery.js";
4
- import { loadRuntimeRun } from "./runtime.js";
2
+ import { readInterfConfig, } from "../../projects/interf-detect.js";
3
+ import { loadExecutionStageLedger } from "./runtime.js";
5
4
  import { loadState } from "./state-io.js";
6
- import { validateVerifiableContextSetup, validateBuildStage, validateVerifiableContext, } from "./validate.js";
7
- import { listBuildPlanContextArtifacts, readBuildPlanContextFile } from "./verifiable-context-schema.js";
8
- import { buildPlanPackagePathForVerifiableContext } from "./verifiable-context-paths.js";
5
+ import { loadContextGraphSourceManifest } from "./source-manifest.js";
6
+ import { validateContextGraph, } from "./validate.js";
7
+ import { listBuildPlanContextArtifacts, readBuildPlanContextFile } from "./context-graph-schema.js";
8
+ import { buildPlanPackagePathForContextGraph } from "./context-graph-paths.js";
9
9
  import { getActiveBuildPlan, resolveRequiredBuildPlanFromConfig } from "../../build-plans/package/build-plan-definitions.js";
10
10
  import { countBuildArtifactsAtPath } from "./artifact-counts.js";
11
- export function computeVerifiableContextHealth(dirPath) {
11
+ export function computeContextGraphHealth(dirPath) {
12
12
  const now = new Date().toISOString();
13
13
  const config = readInterfConfig(dirPath);
14
14
  const targetName = config?.name ?? basename(dirPath);
15
- const sourcePath = config ? resolveSourceFolderPath(dirPath, config) : dirPath;
16
- const sourceTotal = config ? discoverSourceFiles(sourcePath, dirPath).totalCount : 0;
15
+ const sourceTotal = loadContextGraphSourceManifest(dirPath)?.source_total ?? 0;
17
16
  const state = loadState(dirPath);
18
- const validation = validateVerifiableContextSetup(dirPath);
19
- const activeRun = loadRuntimeRun(dirPath);
17
+ const buildPlanValidation = validateContextGraph(dirPath);
18
+ const activeRun = loadExecutionStageLedger(dirPath);
20
19
  const buildPlanId = config
21
20
  ? resolveRequiredBuildPlanFromConfig(config, `.interf/interf.json for ${dirPath}`)
22
21
  : null;
@@ -29,14 +28,10 @@ export function computeVerifiableContextHealth(dirPath) {
29
28
  buildPlan = null;
30
29
  }
31
30
  }
32
- const stageResults = buildPlan?.stages.map((stage) => ({
33
- stage,
34
- validation: validateBuildStage(dirPath, stage.id),
35
- })) ?? [];
36
- const completedStages = stageResults.filter((entry) => entry.validation.ok).length;
37
- const firstFailed = stageResults.find((entry) => !entry.validation.ok) ?? null;
38
- const buildPlanValidation = validateVerifiableContext(dirPath);
39
- const schema = readBuildPlanContextFile(buildPlanPackagePathForVerifiableContext(dirPath));
31
+ const completedStages = buildPlanValidation.counts.completed_stages ?? 0;
32
+ const firstFailedStage = Object.entries(buildPlanValidation.stage_results)
33
+ .find(([, ok]) => !ok)?.[0] ?? null;
34
+ const schema = readBuildPlanContextFile(buildPlanPackagePathForContextGraph(dirPath));
40
35
  const artifactMetrics = Object.fromEntries((schema ? listBuildPlanContextArtifacts(schema) : []).map((artifact) => [
41
36
  `artifact_${artifact.id}`,
42
37
  countBuildArtifactsAtPath(dirPath, artifact.path, artifact.kind),
@@ -45,7 +40,7 @@ export function computeVerifiableContextHealth(dirPath) {
45
40
  let stage = "idle";
46
41
  let summary = "Idle — no source files have been built yet.";
47
42
  const errors = buildPlanValidation.errors.length;
48
- if (!validation.config_present || !validation.config_valid || !validation.config_type_match || !validation.build_plan_valid || !validation.schema_valid) {
43
+ if (!buildPlanValidation.checks.config_present || !buildPlanValidation.checks.config_valid || !buildPlanValidation.checks.config_type_match || !buildPlanValidation.checks.build_plan_valid || !buildPlanValidation.checks.schema_valid) {
49
44
  status = "failed";
50
45
  stage = "failed";
51
46
  summary = buildPlanValidation.summary;
@@ -72,20 +67,20 @@ export function computeVerifiableContextHealth(dirPath) {
72
67
  }
73
68
  else {
74
69
  status = "stale";
75
- stage = firstFailed?.stage.id ?? "built";
76
- summary = firstFailed?.validation.summary ?? buildPlanValidation.summary;
70
+ stage = firstFailedStage ?? buildPlanValidation.stage;
71
+ summary = buildPlanValidation.summary;
77
72
  }
78
73
  const checks = {
79
- ...validation,
74
+ ...buildPlanValidation.checks,
80
75
  ...(buildPlan
81
76
  ? Object.fromEntries(buildPlan.stages.map((buildPlanStage) => [
82
77
  `stage_${buildPlanStage.id}_ok`,
83
- stageResults.find((entry) => entry.stage.id === buildPlanStage.id)?.validation.ok ?? false,
78
+ buildPlanValidation.stage_results[buildPlanStage.id] ?? false,
84
79
  ]))
85
80
  : {}),
86
81
  };
87
82
  return {
88
- kind: "verifiable-context-health",
83
+ kind: "context-graph-health",
89
84
  version: 2,
90
85
  generated_at: now,
91
86
  target_name: targetName,
@@ -103,7 +98,7 @@ export function computeVerifiableContextHealth(dirPath) {
103
98
  checks,
104
99
  };
105
100
  }
106
- export function resolveVerifiableContextStatus(..._args) {
101
+ export function resolveContextGraphStatus(..._args) {
107
102
  const state = _args[_args.length - 1];
108
103
  if (state?.error_count && state.error_count > 0)
109
104
  return "failed";
@@ -0,0 +1,12 @@
1
+ import { type ContextGraphHealth, type ContextGraphState, type ContextGraphViewSpec, type SourceFiles, type SourceManifest, type SourceState } from "./lib/schema.js";
2
+ export declare function loadState<T>(dirPath: string): T | null;
3
+ export declare function saveState<T>(dirPath: string, state: T): void;
4
+ export declare function loadContextGraphHealth(dirPath: string): ContextGraphHealth | null;
5
+ export declare function saveContextGraphHealth(dirPath: string, health: ContextGraphHealth): void;
6
+ export declare function loadContextGraphViewSpec(dirPath: string): ContextGraphViewSpec | null;
7
+ export declare function saveContextGraphViewSpec(dirPath: string, viewSpec: ContextGraphViewSpec): void;
8
+ export declare function loadContextGraphSourceManifest(dirPath: string): SourceManifest | null;
9
+ export declare function loadContextGraphSourceFiles(dirPath: string): SourceFiles | null;
10
+ export declare function loadContextGraphSourceState(dirPath: string): SourceState | null;
11
+ export declare function saveEmptyExecutionInventory(dirPath: string): void;
12
+ export declare function initContextGraphState(): ContextGraphState;