@interf/compiler 0.22.2 → 0.50.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 (616) hide show
  1. package/README.md +119 -282
  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 -35
  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 +9 -0
  10. package/dist/cli/commands/benchmark.js +58 -0
  11. package/dist/cli/commands/build-plan.js +107 -139
  12. package/dist/cli/commands/build.d.ts +3 -4
  13. package/dist/cli/commands/build.js +16 -45
  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 +344 -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 +4 -2
  20. package/dist/cli/commands/mcp.js +846 -232
  21. package/dist/cli/commands/project.d.ts +2 -0
  22. package/dist/cli/commands/project.js +176 -0
  23. package/dist/cli/commands/reset.d.ts +3 -4
  24. package/dist/cli/commands/reset.js +10 -31
  25. package/dist/cli/commands/runs.js +136 -57
  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 +35 -45
  30. package/dist/cli/commands/traces.d.ts +2 -0
  31. package/dist/cli/commands/traces.js +97 -0
  32. package/dist/cli/commands/wizard.js +171 -178
  33. package/dist/cli/index.d.ts +7 -4
  34. package/dist/cli/index.js +13 -7
  35. package/dist/cli/lib/http-client.d.ts +39 -0
  36. package/dist/cli/lib/http-client.js +73 -0
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.js +2 -2
  39. package/dist/packages/build-plans/authoring/brief.d.ts +538 -0
  40. package/dist/packages/build-plans/authoring/brief.js +89 -0
  41. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +52 -11
  42. package/dist/packages/build-plans/authoring/build-plan-authoring.js +493 -46
  43. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +10 -1
  44. package/dist/packages/build-plans/authoring/build-plan-edit-session.js +27 -4
  45. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
  46. package/dist/packages/build-plans/authoring/build-plan-improvement.js +97 -46
  47. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.d.ts +1 -0
  48. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
  49. package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
  50. package/dist/packages/build-plans/build-plan-resolution.js +3 -3
  51. package/dist/packages/build-plans/index.d.ts +1 -1
  52. package/dist/packages/build-plans/index.js +1 -1
  53. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -13
  54. package/dist/packages/build-plans/package/build-plan-definitions.js +45 -42
  55. package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
  56. package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
  57. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
  58. package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
  59. package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +5 -4
  60. package/dist/packages/build-plans/package/build-plan-stage-runner.js +23 -11
  61. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +7 -8
  62. package/dist/packages/build-plans/package/builtin-build-plan.js +10 -11
  63. package/dist/packages/build-plans/package/context-interface.d.ts +14 -9
  64. package/dist/packages/build-plans/package/context-interface.js +14 -33
  65. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
  66. package/dist/packages/build-plans/package/interf-build-plan-package.js +68 -64
  67. package/dist/packages/build-plans/package/local-build-plans.d.ts +21 -14
  68. package/dist/packages/build-plans/package/local-build-plans.js +105 -55
  69. package/dist/packages/build-plans/package/user-build-plans.js +1 -1
  70. package/dist/packages/contracts/index.d.ts +5 -2
  71. package/dist/packages/contracts/index.js +3 -1
  72. package/dist/packages/contracts/lib/context-graph-layer.d.ts +161 -0
  73. package/dist/packages/contracts/lib/context-graph-layer.js +216 -0
  74. package/dist/packages/contracts/lib/project-paths.d.ts +144 -0
  75. package/dist/packages/contracts/lib/project-paths.js +220 -0
  76. package/dist/packages/contracts/lib/project-schema.d.ts +423 -0
  77. package/dist/packages/contracts/lib/project-schema.js +138 -0
  78. package/dist/packages/contracts/lib/schema.d.ts +1273 -81
  79. package/dist/packages/contracts/lib/schema.js +675 -79
  80. package/dist/packages/contracts/utils/filesystem.d.ts +1 -0
  81. package/dist/packages/contracts/utils/filesystem.js +29 -1
  82. package/dist/packages/contracts/utils/parse.js +67 -0
  83. package/dist/packages/projects/index.d.ts +6 -0
  84. package/dist/packages/{project → projects}/index.js +0 -3
  85. package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
  86. package/dist/packages/{project → projects}/interf-detect.js +56 -50
  87. package/dist/packages/projects/interf.d.ts +2 -0
  88. package/dist/packages/projects/interf.js +1 -0
  89. package/dist/packages/projects/lib/schema.d.ts +77 -0
  90. package/dist/packages/projects/lib/schema.js +91 -0
  91. package/dist/packages/projects/source-config.d.ts +53 -0
  92. package/dist/packages/projects/source-config.js +339 -0
  93. package/dist/packages/projects/source-folders.d.ts +11 -0
  94. package/dist/packages/{project → projects}/source-folders.js +26 -26
  95. package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
  96. package/dist/packages/{engine → runtime}/action-planner.js +20 -22
  97. package/dist/packages/runtime/action-values.d.ts +1 -0
  98. package/dist/packages/runtime/action-values.js +1 -0
  99. package/dist/packages/runtime/actions/errors.d.ts +2 -0
  100. package/dist/packages/runtime/actions/errors.js +12 -0
  101. package/dist/packages/runtime/actions/fields.d.ts +86 -0
  102. package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
  103. package/dist/packages/runtime/actions/form-builders.js +667 -0
  104. package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
  105. package/dist/packages/runtime/actions/form-validators.js +134 -0
  106. package/dist/packages/runtime/actions/helpers.d.ts +11 -0
  107. package/dist/packages/runtime/actions/helpers.js +80 -0
  108. package/dist/packages/runtime/actions/index.d.ts +8 -0
  109. package/dist/packages/runtime/actions/index.js +11 -0
  110. package/dist/packages/runtime/actions/registry.d.ts +64 -0
  111. package/dist/packages/runtime/actions/registry.js +62 -0
  112. package/dist/packages/runtime/actions/requests.d.ts +45 -0
  113. package/dist/packages/runtime/actions/requests.js +164 -0
  114. package/dist/packages/runtime/actions/schemas.d.ts +161 -0
  115. package/dist/packages/runtime/actions/schemas.js +37 -0
  116. package/dist/packages/runtime/agent-handoff.d.ts +11 -0
  117. package/dist/packages/runtime/agent-handoff.js +102 -0
  118. package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
  119. package/dist/packages/{engine → runtime}/agents/index.js +1 -2
  120. package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
  121. package/dist/packages/runtime/agents/lib/args.js +24 -0
  122. package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
  123. package/dist/packages/runtime/agents/lib/constants.js +13 -0
  124. package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
  125. package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
  126. package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
  127. package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
  128. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +14 -0
  129. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +31 -14
  130. package/dist/packages/{engine → runtime}/agents/lib/execution.js +22 -6
  131. package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +1 -0
  132. package/dist/packages/{engine → runtime}/agents/lib/executors.js +11 -2
  133. package/dist/packages/runtime/agents/lib/logs.d.ts +12 -0
  134. package/dist/packages/runtime/agents/lib/logs.js +41 -0
  135. package/dist/packages/{engine → runtime}/agents/lib/preflight.js +19 -14
  136. package/dist/packages/runtime/agents/lib/render.d.ts +26 -0
  137. package/dist/packages/{engine → runtime}/agents/lib/render.js +48 -22
  138. package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
  139. package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
  140. package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
  141. package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
  142. package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
  143. package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
  144. package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
  145. package/dist/packages/runtime/agents/lib/shell-templates.js +494 -0
  146. package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
  147. package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
  148. package/dist/packages/runtime/agents/lib/shells.d.ts +92 -0
  149. package/dist/packages/runtime/agents/lib/shells.js +509 -0
  150. package/dist/packages/runtime/agents/lib/source-context-scan.d.ts +10 -0
  151. package/dist/packages/runtime/agents/lib/source-context-scan.js +388 -0
  152. package/dist/packages/{engine → runtime}/agents/lib/status.js +1 -14
  153. package/dist/packages/runtime/agents/lib/string-utils.d.ts +16 -0
  154. package/dist/packages/runtime/agents/lib/string-utils.js +36 -0
  155. package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +1 -0
  156. package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
  157. package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
  158. package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
  159. package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
  160. package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
  161. package/dist/packages/runtime/agents/providers/codex.js +66 -0
  162. package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
  163. package/dist/packages/runtime/agents/providers/cursor.js +24 -0
  164. package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
  165. package/dist/packages/runtime/agents/providers/index.js +31 -0
  166. package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
  167. package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
  168. package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
  169. package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
  170. package/dist/packages/{engine → runtime}/agents/role-executors.js +9 -7
  171. package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
  172. package/dist/packages/runtime/auth/account-context.d.ts +52 -0
  173. package/dist/packages/runtime/auth/account-context.js +68 -0
  174. package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
  175. package/dist/packages/runtime/auth/auth-flow.js +189 -0
  176. package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
  177. package/dist/packages/runtime/auth/jwt-validator.js +86 -0
  178. package/dist/packages/runtime/auth/keychain.d.ts +35 -0
  179. package/dist/packages/runtime/auth/keychain.js +85 -0
  180. package/dist/packages/runtime/auth/session-store.d.ts +38 -0
  181. package/dist/packages/runtime/auth/session-store.js +96 -0
  182. package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
  183. package/dist/packages/runtime/auth/workos-client.js +87 -0
  184. package/dist/packages/runtime/benchmark-question-draft.d.ts +23 -0
  185. package/dist/packages/runtime/benchmark-question-draft.js +153 -0
  186. package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
  187. package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
  188. package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +6 -6
  189. package/dist/packages/{engine → runtime}/build/artifact-status.js +26 -24
  190. package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
  191. package/dist/packages/runtime/build/atomic-fs.js +95 -0
  192. package/dist/packages/runtime/build/billing-events.d.ts +78 -0
  193. package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
  194. package/dist/packages/runtime/build/build-evidence.d.ts +16 -0
  195. package/dist/packages/runtime/build/build-evidence.js +179 -0
  196. package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
  197. package/dist/packages/runtime/build/build-pipeline.js +388 -0
  198. package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
  199. package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
  200. package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
  201. package/dist/packages/runtime/build/build-plan-runs.js +31 -0
  202. package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
  203. package/dist/packages/runtime/build/build-stage-plan.js +101 -0
  204. package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
  205. package/dist/packages/runtime/build/build-stage-runner.js +302 -0
  206. package/dist/packages/{engine → runtime}/build/build-target.d.ts +7 -4
  207. package/dist/packages/runtime/build/build-target.js +40 -0
  208. package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
  209. package/dist/packages/runtime/build/check-evaluator.js +1226 -0
  210. package/dist/packages/runtime/build/context-graph-paths.d.ts +64 -0
  211. package/dist/packages/runtime/build/context-graph-paths.js +160 -0
  212. package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
  213. package/dist/packages/runtime/build/context-graph-schema.js +39 -0
  214. package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
  215. package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
  216. package/dist/packages/{engine → runtime}/build/index.d.ts +7 -5
  217. package/dist/packages/{engine → runtime}/build/index.js +7 -5
  218. package/dist/packages/runtime/build/inspect-map.d.ts +10 -0
  219. package/dist/packages/runtime/build/inspect-map.js +270 -0
  220. package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +449 -123
  221. package/dist/packages/runtime/build/lib/schema.js +494 -0
  222. package/dist/packages/runtime/build/native-entrypoint.d.ts +2 -0
  223. package/dist/packages/runtime/build/native-entrypoint.js +286 -0
  224. package/dist/packages/runtime/build/reset.d.ts +2 -0
  225. package/dist/packages/runtime/build/reset.js +62 -0
  226. package/dist/packages/{engine → runtime}/build/runtime-contracts.js +13 -7
  227. package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
  228. package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
  229. package/dist/packages/runtime/build/runtime-log-paths.d.ts +3 -0
  230. package/dist/packages/runtime/build/runtime-log-paths.js +16 -0
  231. package/dist/packages/{engine → runtime}/build/runtime-prompt.js +12 -9
  232. package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
  233. package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
  234. package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
  235. package/dist/packages/runtime/build/runtime-runs.js +318 -0
  236. package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +9 -6
  237. package/dist/packages/runtime/build/runtime-types.js +1 -0
  238. package/dist/packages/runtime/build/runtime.d.ts +8 -0
  239. package/dist/packages/runtime/build/runtime.js +7 -0
  240. package/dist/packages/runtime/build/source-files.d.ts +58 -0
  241. package/dist/packages/runtime/build/source-files.js +193 -0
  242. package/dist/packages/runtime/build/source-inventory.d.ts +28 -0
  243. package/dist/packages/runtime/build/source-inventory.js +512 -0
  244. package/dist/packages/runtime/build/source-manifest.d.ts +63 -0
  245. package/dist/packages/runtime/build/source-manifest.js +220 -0
  246. package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
  247. package/dist/packages/runtime/build/stage-evidence.js +386 -0
  248. package/dist/packages/runtime/build/stage-manifest.d.ts +45 -0
  249. package/dist/packages/runtime/build/stage-manifest.js +1125 -0
  250. package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
  251. package/dist/packages/runtime/build/stage-reuse.js +154 -0
  252. package/dist/packages/runtime/build/stage-session.d.ts +81 -0
  253. package/dist/packages/runtime/build/stage-session.js +308 -0
  254. package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
  255. package/dist/packages/runtime/build/state-artifacts.js +14 -0
  256. package/dist/packages/runtime/build/state-health.d.ts +4 -0
  257. package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
  258. package/dist/packages/runtime/build/state-io.d.ts +12 -0
  259. package/dist/packages/runtime/build/state-io.js +118 -0
  260. package/dist/packages/runtime/build/state-view.d.ts +5 -0
  261. package/dist/packages/runtime/build/state-view.js +121 -0
  262. package/dist/packages/runtime/build/state.d.ts +7 -0
  263. package/dist/packages/runtime/build/state.js +12 -0
  264. package/dist/packages/runtime/build/summary-coverage-index.d.ts +21 -0
  265. package/dist/packages/runtime/build/summary-coverage-index.js +189 -0
  266. package/dist/packages/runtime/build/traces.d.ts +30 -0
  267. package/dist/packages/runtime/build/traces.js +133 -0
  268. package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
  269. package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +49 -36
  270. package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
  271. package/dist/packages/{engine → runtime}/build/validate.js +26 -26
  272. package/dist/packages/{engine → runtime}/client.d.ts +18 -18
  273. package/dist/packages/{engine → runtime}/client.js +48 -36
  274. package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
  275. package/dist/packages/{engine → runtime}/connection-config.js +9 -8
  276. package/dist/packages/runtime/context-checks.d.ts +10 -0
  277. package/dist/packages/runtime/context-checks.js +127 -0
  278. package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
  279. package/dist/packages/runtime/context-graph-scaffold.js +135 -0
  280. package/dist/packages/runtime/context-graph-semantic-graph.d.ts +9 -0
  281. package/dist/packages/runtime/context-graph-semantic-graph.js +416 -0
  282. package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
  283. package/dist/packages/runtime/entitlement-guard.js +70 -0
  284. package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
  285. package/dist/packages/{engine → runtime}/execution/index.js +1 -1
  286. package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +272 -191
  287. package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
  288. package/dist/packages/runtime/index.d.ts +29 -0
  289. package/dist/packages/runtime/index.js +21 -0
  290. package/dist/packages/runtime/instance-paths.d.ts +30 -0
  291. package/dist/packages/runtime/instance-paths.js +29 -0
  292. package/dist/packages/runtime/native-run-handlers.d.ts +63 -0
  293. package/dist/packages/{engine → runtime}/native-run-handlers.js +217 -166
  294. package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
  295. package/dist/packages/runtime/plan-artifact-contract.js +42 -0
  296. package/dist/packages/runtime/project-entries.d.ts +11 -0
  297. package/dist/packages/runtime/project-entries.js +49 -0
  298. package/dist/packages/runtime/project-source-state.d.ts +26 -0
  299. package/dist/packages/runtime/project-source-state.js +56 -0
  300. package/dist/packages/runtime/project-store.d.ts +90 -0
  301. package/dist/packages/runtime/project-store.js +195 -0
  302. package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
  303. package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
  304. package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
  305. package/dist/packages/{engine → runtime}/run-observability.js +174 -87
  306. package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
  307. package/dist/packages/runtime/runtime-action-proposals.js +542 -0
  308. package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
  309. package/dist/packages/runtime/runtime-build-plans.js +175 -0
  310. package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
  311. package/dist/packages/runtime/runtime-build-runs.js +555 -0
  312. package/dist/packages/runtime/runtime-caches.d.ts +117 -0
  313. package/dist/packages/runtime/runtime-caches.js +266 -0
  314. package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
  315. package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
  316. package/dist/packages/runtime/runtime-executor.d.ts +22 -0
  317. package/dist/packages/runtime/runtime-executor.js +131 -0
  318. package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
  319. package/dist/packages/runtime/runtime-jobs.js +463 -0
  320. package/dist/packages/runtime/runtime-observability.d.ts +11 -0
  321. package/dist/packages/runtime/runtime-observability.js +39 -0
  322. package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
  323. package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
  324. package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
  325. package/dist/packages/runtime/runtime-project-mutations.js +65 -0
  326. package/dist/packages/runtime/runtime-project-reads.d.ts +18 -0
  327. package/dist/packages/runtime/runtime-project-reads.js +574 -0
  328. package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
  329. package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
  330. package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +23 -16
  331. package/dist/packages/{engine → runtime}/runtime-resource-builders.js +58 -46
  332. package/dist/packages/runtime/runtime-status.d.ts +14 -0
  333. package/dist/packages/runtime/runtime-status.js +15 -0
  334. package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
  335. package/dist/packages/runtime/runtime-verify-runs.js +296 -0
  336. package/dist/packages/runtime/runtime.d.ts +1582 -0
  337. package/dist/packages/runtime/runtime.js +431 -0
  338. package/dist/packages/runtime/schemas/actions.d.ts +1206 -0
  339. package/dist/packages/runtime/schemas/actions.js +117 -0
  340. package/dist/packages/runtime/schemas/agents.d.ts +104 -0
  341. package/dist/packages/runtime/schemas/agents.js +74 -0
  342. package/dist/packages/runtime/schemas/build-plans.d.ts +1132 -0
  343. package/dist/packages/runtime/schemas/build-plans.js +141 -0
  344. package/dist/packages/runtime/schemas/context-graphs.d.ts +1522 -0
  345. package/dist/packages/runtime/schemas/context-graphs.js +110 -0
  346. package/dist/packages/runtime/schemas/files.d.ts +227 -0
  347. package/dist/packages/runtime/schemas/files.js +28 -0
  348. package/dist/packages/runtime/schemas/index.d.ts +9 -0
  349. package/dist/packages/runtime/schemas/index.js +13 -0
  350. package/dist/packages/runtime/schemas/instance.d.ts +141 -0
  351. package/dist/packages/runtime/schemas/instance.js +143 -0
  352. package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
  353. package/dist/packages/runtime/schemas/jobs.js +107 -0
  354. package/dist/packages/runtime/schemas/projects.d.ts +366 -0
  355. package/dist/packages/runtime/schemas/projects.js +160 -0
  356. package/dist/packages/runtime/schemas/runs.d.ts +3445 -0
  357. package/dist/packages/runtime/schemas/runs.js +115 -0
  358. package/dist/packages/runtime/service/index.d.ts +3 -0
  359. package/dist/packages/runtime/service/index.js +3 -0
  360. package/dist/packages/runtime/service/openapi.d.ts +7 -0
  361. package/dist/packages/runtime/service/openapi.js +118 -0
  362. package/dist/packages/runtime/service/operations.d.ts +3011 -0
  363. package/dist/packages/runtime/service/operations.js +375 -0
  364. package/dist/packages/runtime/service/routes.d.ts +114 -0
  365. package/dist/packages/runtime/service/routes.js +128 -0
  366. package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
  367. package/dist/packages/runtime/service/server-api-files.js +85 -0
  368. package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
  369. package/dist/packages/runtime/service/server-app-boot.js +46 -0
  370. package/dist/packages/runtime/service/server-guards.d.ts +63 -0
  371. package/dist/packages/runtime/service/server-guards.js +181 -0
  372. package/dist/packages/runtime/service/server-helpers.d.ts +38 -0
  373. package/dist/packages/runtime/service/server-helpers.js +108 -0
  374. package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
  375. package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
  376. package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
  377. package/dist/packages/runtime/service/server-routes-action-proposals.js +45 -0
  378. package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
  379. package/dist/packages/runtime/service/server-routes-agents.js +132 -0
  380. package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
  381. package/dist/packages/runtime/service/server-routes-auth.js +138 -0
  382. package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
  383. package/dist/packages/runtime/service/server-routes-build-plans.js +86 -0
  384. package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
  385. package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
  386. package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
  387. package/dist/packages/runtime/service/server-routes-events.js +99 -0
  388. package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
  389. package/dist/packages/runtime/service/server-routes-project-context.js +287 -0
  390. package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
  391. package/dist/packages/runtime/service/server-routes-project-jobs.js +137 -0
  392. package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
  393. package/dist/packages/runtime/service/server-routes-project-runs.js +88 -0
  394. package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
  395. package/dist/packages/runtime/service/server-routes-projects.js +96 -0
  396. package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
  397. package/dist/packages/runtime/service/server-routes-runs.js +119 -0
  398. package/dist/packages/runtime/service/server.d.ts +37 -0
  399. package/dist/packages/runtime/service/server.js +300 -0
  400. package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
  401. package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
  402. package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
  403. package/dist/packages/runtime/verify/benchmark-run.js +303 -0
  404. package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
  405. package/dist/packages/{engine → runtime}/verify/index.js +1 -1
  406. package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
  407. package/dist/packages/{engine → runtime}/verify/lib/schema.js +38 -18
  408. package/dist/packages/runtime/verify/test-file-guard.d.ts +2 -0
  409. package/dist/packages/runtime/verify/test-file-guard.js +29 -0
  410. package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +7 -0
  411. package/dist/packages/{engine → runtime}/verify/verify-execution.js +119 -45
  412. package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +5 -4
  413. package/dist/packages/runtime/verify/verify-paths.js +65 -0
  414. package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
  415. package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
  416. package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
  417. package/dist/packages/runtime/verify/verify-specs.js +126 -0
  418. package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
  419. package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
  420. package/dist/packages/runtime/verify/verify-types.js +1 -0
  421. package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
  422. package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
  423. package/dist/packages/runtime/wire-schemas.d.ts +18 -0
  424. package/dist/packages/runtime/wire-schemas.js +27 -0
  425. package/package.json +32 -30
  426. package/public-repo/CONTRIBUTING.md +16 -18
  427. package/public-repo/README.md +119 -282
  428. package/public-repo/SECURITY.md +3 -4
  429. package/public-repo/build-plans/interf-default/README.md +24 -16
  430. package/public-repo/build-plans/interf-default/build/stages/entrypoint/SKILL.md +74 -0
  431. package/public-repo/build-plans/interf-default/build/stages/knowledge/SKILL.md +95 -0
  432. package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +49 -4
  433. package/public-repo/build-plans/interf-default/build-plan.json +49 -39
  434. package/public-repo/build-plans/interf-default/build-plan.schema.json +59 -33
  435. package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
  436. package/public-repo/build-plans/interf-default/use/query/SKILL.md +18 -11
  437. package/public-repo/openapi/local-service.openapi.json +14227 -0
  438. package/public-repo/skills/interf/SKILL.md +508 -187
  439. package/dist/cli/commands/prep.d.ts +0 -2
  440. package/dist/cli/commands/prep.js +0 -240
  441. package/dist/cli/commands/test.d.ts +0 -10
  442. package/dist/cli/commands/test.js +0 -85
  443. package/dist/cli/commands/web.d.ts +0 -2
  444. package/dist/cli/commands/web.js +0 -286
  445. package/dist/interf-ui/404.html +0 -1
  446. package/dist/interf-ui/__next.__PAGE__.txt +0 -10
  447. package/dist/interf-ui/__next._full.txt +0 -20
  448. package/dist/interf-ui/__next._head.txt +0 -5
  449. package/dist/interf-ui/__next._index.txt +0 -5
  450. package/dist/interf-ui/__next._tree.txt +0 -5
  451. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
  452. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
  453. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
  454. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
  455. package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
  456. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
  457. package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
  458. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
  459. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
  460. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
  461. package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
  462. package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
  463. package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
  464. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
  465. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
  466. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
  467. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
  468. package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
  469. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
  470. package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
  471. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
  472. package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
  473. package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  474. package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  475. package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
  476. package/dist/interf-ui/_not-found/__next._full.txt +0 -15
  477. package/dist/interf-ui/_not-found/__next._head.txt +0 -5
  478. package/dist/interf-ui/_not-found/__next._index.txt +0 -5
  479. package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
  480. package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
  481. package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
  482. package/dist/interf-ui/_not-found.html +0 -1
  483. package/dist/interf-ui/_not-found.txt +0 -15
  484. package/dist/interf-ui/index.html +0 -1
  485. package/dist/interf-ui/index.txt +0 -20
  486. package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
  487. package/dist/packages/contracts/lib/preparation-paths.js +0 -177
  488. package/dist/packages/engine/action-definitions.d.ts +0 -407
  489. package/dist/packages/engine/action-definitions.js +0 -1158
  490. package/dist/packages/engine/action-values.d.ts +0 -1
  491. package/dist/packages/engine/action-values.js +0 -1
  492. package/dist/packages/engine/agents/lib/args.d.ts +0 -4
  493. package/dist/packages/engine/agents/lib/args.js +0 -52
  494. package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
  495. package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
  496. package/dist/packages/engine/agents/lib/constants.js +0 -28
  497. package/dist/packages/engine/agents/lib/logs.d.ts +0 -2
  498. package/dist/packages/engine/agents/lib/logs.js +0 -17
  499. package/dist/packages/engine/agents/lib/render.d.ts +0 -8
  500. package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
  501. package/dist/packages/engine/agents/lib/schema.js +0 -7
  502. package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
  503. package/dist/packages/engine/agents/lib/shells.js +0 -1052
  504. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
  505. package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
  506. package/dist/packages/engine/build/billing-events.d.ts +0 -89
  507. package/dist/packages/engine/build/build-pipeline.js +0 -175
  508. package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
  509. package/dist/packages/engine/build/build-plan-runs.js +0 -31
  510. package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
  511. package/dist/packages/engine/build/build-stage-plan.js +0 -100
  512. package/dist/packages/engine/build/build-stage-runner.js +0 -94
  513. package/dist/packages/engine/build/build-target.js +0 -16
  514. package/dist/packages/engine/build/check-evaluator.js +0 -298
  515. package/dist/packages/engine/build/lib/schema.js +0 -316
  516. package/dist/packages/engine/build/reset.d.ts +0 -2
  517. package/dist/packages/engine/build/reset.js +0 -74
  518. package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
  519. package/dist/packages/engine/build/runtime-paths.d.ts +0 -8
  520. package/dist/packages/engine/build/runtime-paths.js +0 -26
  521. package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
  522. package/dist/packages/engine/build/runtime-runs.js +0 -224
  523. package/dist/packages/engine/build/runtime.d.ts +0 -5
  524. package/dist/packages/engine/build/runtime.js +0 -4
  525. package/dist/packages/engine/build/source-files.d.ts +0 -46
  526. package/dist/packages/engine/build/source-files.js +0 -149
  527. package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
  528. package/dist/packages/engine/build/state-artifacts.js +0 -14
  529. package/dist/packages/engine/build/state-health.d.ts +0 -4
  530. package/dist/packages/engine/build/state-io.d.ts +0 -11
  531. package/dist/packages/engine/build/state-io.js +0 -82
  532. package/dist/packages/engine/build/state-paths.d.ts +0 -5
  533. package/dist/packages/engine/build/state-paths.js +0 -16
  534. package/dist/packages/engine/build/state-view.d.ts +0 -5
  535. package/dist/packages/engine/build/state-view.js +0 -94
  536. package/dist/packages/engine/build/state.d.ts +0 -7
  537. package/dist/packages/engine/build/state.js +0 -12
  538. package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
  539. package/dist/packages/engine/build/validate-helpers.js +0 -41
  540. package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
  541. package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
  542. package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
  543. package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
  544. package/dist/packages/engine/cloud-seams.d.ts +0 -115
  545. package/dist/packages/engine/cloud-seams.js +0 -84
  546. package/dist/packages/engine/index.d.ts +0 -22
  547. package/dist/packages/engine/index.js +0 -15
  548. package/dist/packages/engine/instance-paths.d.ts +0 -106
  549. package/dist/packages/engine/instance-paths.js +0 -171
  550. package/dist/packages/engine/lib/schema.d.ts +0 -6304
  551. package/dist/packages/engine/lib/schema.js +0 -730
  552. package/dist/packages/engine/native-run-handlers.d.ts +0 -25
  553. package/dist/packages/engine/preparation-store.d.ts +0 -105
  554. package/dist/packages/engine/preparation-store.js +0 -213
  555. package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
  556. package/dist/packages/engine/readiness-check-draft.js +0 -111
  557. package/dist/packages/engine/requested-artifacts.d.ts +0 -5
  558. package/dist/packages/engine/routes.d.ts +0 -85
  559. package/dist/packages/engine/routes.js +0 -99
  560. package/dist/packages/engine/runtime-caches.d.ts +0 -76
  561. package/dist/packages/engine/runtime-caches.js +0 -191
  562. package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
  563. package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
  564. package/dist/packages/engine/runtime.d.ts +0 -371
  565. package/dist/packages/engine/runtime.js +0 -2463
  566. package/dist/packages/engine/server.d.ts +0 -58
  567. package/dist/packages/engine/server.js +0 -1399
  568. package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
  569. package/dist/packages/engine/verify/readiness-check-run.js +0 -265
  570. package/dist/packages/engine/verify/verify-paths.js +0 -61
  571. package/dist/packages/engine/verify/verify-sandbox.js +0 -88
  572. package/dist/packages/engine/verify/verify-specs.js +0 -114
  573. package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
  574. package/dist/packages/engine/wire-schemas.d.ts +0 -547
  575. package/dist/packages/engine/wire-schemas.js +0 -59
  576. package/dist/packages/project/index.d.ts +0 -9
  577. package/dist/packages/project/interf-bootstrap.d.ts +0 -1
  578. package/dist/packages/project/interf-bootstrap.js +0 -1
  579. package/dist/packages/project/interf-scaffold.d.ts +0 -3
  580. package/dist/packages/project/interf-scaffold.js +0 -136
  581. package/dist/packages/project/interf.d.ts +0 -4
  582. package/dist/packages/project/interf.js +0 -3
  583. package/dist/packages/project/lib/schema.d.ts +0 -328
  584. package/dist/packages/project/lib/schema.js +0 -136
  585. package/dist/packages/project/preparation-entries.d.ts +0 -11
  586. package/dist/packages/project/preparation-entries.js +0 -49
  587. package/dist/packages/project/source-config.d.ts +0 -46
  588. package/dist/packages/project/source-config.js +0 -394
  589. package/dist/packages/project/source-folders.d.ts +0 -11
  590. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +0 -27
  591. package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +0 -21
  592. package/public-repo/plugins/README.md +0 -9
  593. package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
  594. package/public-repo/plugins/interf/.mcp.json +0 -12
  595. package/public-repo/plugins/interf/README.md +0 -32
  596. package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
  597. /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
  598. /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
  599. /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
  600. /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
  601. /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
  602. /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
  603. /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
  604. /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
  605. /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
  606. /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
  607. /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
  608. /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
  609. /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
  610. /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
  611. /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
  612. /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
  613. /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
  614. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
  615. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
  616. /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
@@ -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;
@@ -0,0 +1,118 @@
1
+ import { existsSync, readFileSync, } from "node:fs";
2
+ import { warnInterf } from "../../contracts/utils/logger.js";
3
+ import { readJsonFileUnchecked, readJsonFileWithSchema } from "../../contracts/utils/parse.js";
4
+ import { ContextGraphHealthSchema, ContextGraphStateSchema, ContextGraphViewSpecSchema, SourceFilesSchema, SourceManifestSchema, SourceStateSchema, } from "./lib/schema.js";
5
+ import { emptyExecutionInventory, } from "./runtime-inventory.js";
6
+ import { contextGraphExecutionInventoryPath, contextGraphRuntimeHealthPath, contextGraphRuntimeSourceFilesPath, contextGraphRuntimeSourceManifestPath, contextGraphRuntimeSourceStatePath, contextGraphRuntimeStatePath, contextGraphRuntimeViewSpecPath, } from "./context-graph-paths.js";
7
+ import { writeJsonAtomic } from "./atomic-fs.js";
8
+ export function loadState(dirPath) {
9
+ const path = contextGraphRuntimeStatePath(dirPath);
10
+ if (!existsSync(path))
11
+ return null;
12
+ const raw = readJsonFileUnchecked(path, "runtime state");
13
+ if (raw === null)
14
+ return null;
15
+ const parsed = ContextGraphStateSchema.safeParse(raw);
16
+ if (parsed.success) {
17
+ return parsed.data;
18
+ }
19
+ warnInterf(`Warning: failed to validate runtime state at ${path}: ${parsed.error.issues.map((issue) => issue.message).join("; ")}`);
20
+ return null;
21
+ }
22
+ export function saveState(dirPath, state) {
23
+ writeJsonAtomic(contextGraphRuntimeStatePath(dirPath), state);
24
+ }
25
+ export function loadContextGraphHealth(dirPath) {
26
+ const path = contextGraphRuntimeHealthPath(dirPath);
27
+ if (!existsSync(path))
28
+ return null;
29
+ return readJsonFileWithSchema(path, "context-graph health", ContextGraphHealthSchema);
30
+ }
31
+ export function saveContextGraphHealth(dirPath, health) {
32
+ writeJsonAtomic(contextGraphRuntimeHealthPath(dirPath), health);
33
+ }
34
+ export function loadContextGraphViewSpec(dirPath) {
35
+ const path = contextGraphRuntimeViewSpecPath(dirPath);
36
+ if (!existsSync(path))
37
+ return null;
38
+ return loadViewSpec(path, ContextGraphViewSpecSchema);
39
+ }
40
+ export function saveContextGraphViewSpec(dirPath, viewSpec) {
41
+ writeJsonAtomic(contextGraphRuntimeViewSpecPath(dirPath), viewSpec);
42
+ }
43
+ export function loadContextGraphSourceManifest(dirPath) {
44
+ const path = contextGraphRuntimeSourceManifestPath(dirPath);
45
+ if (!existsSync(path))
46
+ return null;
47
+ return readJsonFileWithSchema(path, "context-graph source manifest", SourceManifestSchema);
48
+ }
49
+ export function loadContextGraphSourceFiles(dirPath) {
50
+ const manifest = loadContextGraphSourceManifest(dirPath);
51
+ if (manifest) {
52
+ return SourceFilesSchema.parse({
53
+ kind: "interf-source-files",
54
+ version: 1,
55
+ generated_at: manifest.generated_at,
56
+ source: manifest.source,
57
+ source_total: manifest.source_total,
58
+ files: manifest.files.map((file) => ({
59
+ id: file.id,
60
+ path: file.path,
61
+ locator: file.locator,
62
+ ...(typeof file.size_bytes === "number" ? { size_bytes: file.size_bytes } : {}),
63
+ })),
64
+ });
65
+ }
66
+ const path = contextGraphRuntimeSourceFilesPath(dirPath);
67
+ if (!existsSync(path))
68
+ return null;
69
+ return readJsonFileWithSchema(path, "context-graph source files", SourceFilesSchema);
70
+ }
71
+ export function loadContextGraphSourceState(dirPath) {
72
+ const manifest = loadContextGraphSourceManifest(dirPath);
73
+ if (manifest) {
74
+ return SourceStateSchema.parse({
75
+ kind: "interf-source-state",
76
+ version: 1,
77
+ graph_id: manifest.manifest_id,
78
+ generated_at: manifest.generated_at,
79
+ run_id: manifest.run_id,
80
+ source: manifest.source,
81
+ source_total: manifest.source_total,
82
+ files: manifest.files.map((file) => ({
83
+ id: file.id,
84
+ path: file.path,
85
+ locator: file.locator,
86
+ ...(typeof file.size_bytes === "number" ? { size_bytes: file.size_bytes } : {}),
87
+ })),
88
+ });
89
+ }
90
+ const path = contextGraphRuntimeSourceStatePath(dirPath);
91
+ if (!existsSync(path))
92
+ return null;
93
+ return readJsonFileWithSchema(path, "context-graph source state", SourceStateSchema);
94
+ }
95
+ export function saveEmptyExecutionInventory(dirPath) {
96
+ writeJsonAtomic(contextGraphExecutionInventoryPath(dirPath), emptyExecutionInventory());
97
+ }
98
+ export function initContextGraphState() {
99
+ return {
100
+ version: 2,
101
+ pending: [],
102
+ stages: {},
103
+ last_add: null,
104
+ last_build: null,
105
+ warning_count: 0,
106
+ error_count: 0,
107
+ };
108
+ }
109
+ function loadViewSpec(filePath, schema) {
110
+ try {
111
+ const raw = JSON.parse(readFileSync(filePath, "utf8"));
112
+ const parsed = schema.safeParse(raw);
113
+ return parsed.success ? parsed.data ?? null : null;
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ }
@@ -0,0 +1,5 @@
1
+ import { type ContextGraphViewSpec, type SourceFiles, type SourceState } from "./lib/schema.js";
2
+ export declare function ensureContextGraphViewSpec(dirPath: string): ContextGraphViewSpec;
3
+ export declare function ensureContextGraphSourceFiles(dirPath: string): SourceFiles;
4
+ export declare function ensureContextGraphSourceState(dirPath: string, sourceFiles?: SourceFiles): SourceState;
5
+ export declare function normalizeContextGraphViewSpec(existing: ContextGraphViewSpec, defaults?: ContextGraphViewSpec): ContextGraphViewSpec;
@@ -0,0 +1,121 @@
1
+ import { basename } from "node:path";
2
+ import { readInterfConfig, resolveSourceFolderPath } from "../../projects/interf-detect.js";
3
+ import { SourceFilesSchema, SourceStateSchema, } from "./lib/schema.js";
4
+ import { loadContextGraphSourceFiles, loadContextGraphSourceState, loadContextGraphViewSpec, saveContextGraphViewSpec, } from "./state-io.js";
5
+ import { loadContextGraphSourceManifest, sourceManifestToSourceFiles, sourceManifestToSourceState, } from "./source-manifest.js";
6
+ import { buildPlanPackagePathForContextGraph } from "./context-graph-paths.js";
7
+ import { listBuildPlanContextArtifacts, readBuildPlanContextFile } from "./context-graph-schema.js";
8
+ import { getActiveBuildPlan, resolveRequiredBuildPlanFromConfig } from "../../build-plans/package/build-plan-definitions.js";
9
+ export function ensureContextGraphViewSpec(dirPath) {
10
+ const existing = loadContextGraphViewSpec(dirPath);
11
+ const now = new Date().toISOString();
12
+ const contextGraphName = readInterfConfig(dirPath)?.name ?? basename(dirPath);
13
+ const defaults = buildDefaultContextGraphViewSpec(dirPath, contextGraphName, now);
14
+ if (existing) {
15
+ const normalized = normalizeContextGraphViewSpec(existing, defaults);
16
+ if (JSON.stringify(normalized) !== JSON.stringify(existing)) {
17
+ saveContextGraphViewSpec(dirPath, normalized);
18
+ }
19
+ return normalized;
20
+ }
21
+ saveContextGraphViewSpec(dirPath, defaults);
22
+ return defaults;
23
+ }
24
+ export function ensureContextGraphSourceFiles(dirPath) {
25
+ const existing = loadContextGraphSourceFiles(dirPath);
26
+ if (existing)
27
+ return existing;
28
+ const manifest = loadContextGraphSourceManifest(dirPath);
29
+ if (manifest)
30
+ return sourceManifestToSourceFiles(manifest);
31
+ const config = readInterfConfig(dirPath);
32
+ const now = new Date().toISOString();
33
+ const sourceFiles = SourceFilesSchema.parse({
34
+ kind: "interf-source-files",
35
+ version: 1,
36
+ generated_at: now,
37
+ source: {
38
+ id: "src-unscanned",
39
+ kind: "local-folder",
40
+ locator: resolveSourceFolderPath(dirPath, config),
41
+ },
42
+ source_total: 0,
43
+ files: [],
44
+ });
45
+ return sourceFiles;
46
+ }
47
+ export function ensureContextGraphSourceState(dirPath, sourceFiles) {
48
+ const existing = loadContextGraphSourceState(dirPath);
49
+ if (existing)
50
+ return existing;
51
+ const manifest = loadContextGraphSourceManifest(dirPath);
52
+ if (manifest)
53
+ return sourceManifestToSourceState(manifest);
54
+ const resolvedSourceFiles = sourceFiles ?? ensureContextGraphSourceFiles(dirPath);
55
+ const sourceState = SourceStateSchema.parse({
56
+ kind: "interf-source-state",
57
+ version: 1,
58
+ graph_id: "source-manifest-unrecorded",
59
+ generated_at: resolvedSourceFiles.generated_at,
60
+ run_id: null,
61
+ source: resolvedSourceFiles.source,
62
+ source_total: resolvedSourceFiles.source_total,
63
+ files: resolvedSourceFiles.files,
64
+ });
65
+ return sourceState;
66
+ }
67
+ export function normalizeContextGraphViewSpec(existing, defaults) {
68
+ const resolvedDefaults = defaults ?? existing;
69
+ return {
70
+ ...resolvedDefaults,
71
+ ...existing,
72
+ cards: Array.isArray(existing.cards) && existing.cards.length > 0
73
+ ? existing.cards.map((card) => {
74
+ if (card.format !== "fraction" || card.denominator_metric)
75
+ return card;
76
+ const defaultCard = resolvedDefaults.cards.find((candidate) => candidate.id === card.id);
77
+ return {
78
+ ...card,
79
+ denominator_metric: defaultCard?.denominator_metric ?? "stage_total",
80
+ };
81
+ })
82
+ : resolvedDefaults.cards,
83
+ sections: Array.isArray(existing.sections) && existing.sections.length > 0 ? existing.sections : resolvedDefaults.sections,
84
+ document_scope: Array.isArray(existing.document_scope) && existing.document_scope.length > 0
85
+ ? existing.document_scope
86
+ : resolvedDefaults.document_scope,
87
+ };
88
+ }
89
+ function buildDefaultContextGraphViewSpec(dirPath, contextGraphName, generatedAt) {
90
+ const config = readInterfConfig(dirPath);
91
+ resolveRequiredBuildPlanFromConfig(config, `.interf/interf.json for ${dirPath}`);
92
+ const buildPlan = getActiveBuildPlan(dirPath);
93
+ const schema = readBuildPlanContextFile(buildPlanPackagePathForContextGraph(dirPath));
94
+ const schemaArtifacts = schema ? listBuildPlanContextArtifacts(schema) : [];
95
+ const outputDocumentPaths = schemaArtifacts
96
+ .map((artifact) => artifact.path);
97
+ const defaultNote = schemaArtifacts.find((artifact) => artifact.kind === "file")?.path ?? null;
98
+ return {
99
+ kind: "context-graph-view-spec",
100
+ version: 2,
101
+ generated_at: generatedAt,
102
+ target_name: contextGraphName,
103
+ health_source: ".interf/runtime/health.json",
104
+ state_source: ".interf/runtime/state.json",
105
+ default_note: defaultNote,
106
+ document_scope: outputDocumentPaths,
107
+ cards: [
108
+ { id: "source-total", label: "Source Files", metric: "source_total", format: "number" },
109
+ { id: "stage-total", label: "Stages", metric: "stage_total", format: "number" },
110
+ { id: "completed-stages", label: "Completed", metric: "completed_stages", denominator_metric: "stage_total", format: "fraction" },
111
+ ],
112
+ sections: [
113
+ { id: "status", type: "status", title: "Build Status", path: ".interf/runtime/health.json" },
114
+ { id: "cards", type: "cards", title: "Key Metrics", path: ".interf/runtime/health.json" },
115
+ ...(outputDocumentPaths.length > 0
116
+ ? [{ id: "outputs", type: "documents", title: "Requested outputs", paths: outputDocumentPaths }]
117
+ : []),
118
+ { id: "build-plan", type: "documents", title: "Build Plan Docs", paths: ["build-plan/README.md", ...buildPlan.stages.map((stage) => `build-plan/build/stages/${stage.skillDir}`)] },
119
+ ],
120
+ };
121
+ }
@@ -0,0 +1,7 @@
1
+ export type { RuntimeStatus, BuildStage, ContextGraphState, ContextGraphHealth, ViewSection, ViewCard, ContextGraphViewSpec, SourceFiles, SourceState, StageInputs, } from "./lib/schema.js";
2
+ export { contextGraphRuntimeStatePath as statePath, contextGraphRuntimeHealthPath as healthPath, contextGraphRuntimeViewSpecPath as viewSpecPath, contextGraphRuntimeSourceFilesPath as sourceFilesPath, contextGraphRuntimeSourceStatePath as sourceStatePath, } from "./context-graph-paths.js";
3
+ export { loadState, saveState, loadContextGraphHealth, saveContextGraphHealth, loadContextGraphViewSpec, loadContextGraphSourceFiles, loadContextGraphSourceState, saveContextGraphViewSpec, initContextGraphState, } from "./state-io.js";
4
+ export { refreshContextGraphArtifacts, } from "./state-artifacts.js";
5
+ export { computeContextGraphHealth, resolveContextGraphStatus, resolveBuildStage, } from "./state-health.js";
6
+ export { ensureContextGraphViewSpec, ensureContextGraphSourceFiles, ensureContextGraphSourceState, normalizeContextGraphViewSpec, } from "./state-view.js";
7
+ export declare function initializeBuildRuntimeState(dirPath: string): void;
@@ -0,0 +1,12 @@
1
+ export { contextGraphRuntimeStatePath as statePath, contextGraphRuntimeHealthPath as healthPath, contextGraphRuntimeViewSpecPath as viewSpecPath, contextGraphRuntimeSourceFilesPath as sourceFilesPath, contextGraphRuntimeSourceStatePath as sourceStatePath, } from "./context-graph-paths.js";
2
+ export { loadState, saveState, loadContextGraphHealth, saveContextGraphHealth, loadContextGraphViewSpec, loadContextGraphSourceFiles, loadContextGraphSourceState, saveContextGraphViewSpec, initContextGraphState, } from "./state-io.js";
3
+ export { refreshContextGraphArtifacts, } from "./state-artifacts.js";
4
+ export { computeContextGraphHealth, resolveContextGraphStatus, resolveBuildStage, } from "./state-health.js";
5
+ export { ensureContextGraphViewSpec, ensureContextGraphSourceFiles, ensureContextGraphSourceState, normalizeContextGraphViewSpec, } from "./state-view.js";
6
+ import { saveEmptyExecutionInventory, initContextGraphState, saveState } from "./state-io.js";
7
+ import { refreshContextGraphArtifacts } from "./state-artifacts.js";
8
+ export function initializeBuildRuntimeState(dirPath) {
9
+ saveState(dirPath, initContextGraphState());
10
+ saveEmptyExecutionInventory(dirPath);
11
+ refreshContextGraphArtifacts(dirPath, { ensureViewSpec: true });
12
+ }
@@ -0,0 +1,21 @@
1
+ /** Stable delimiters around the managed coverage block in `home.md`. */
2
+ export declare const HOME_COVERAGE_BLOCK_BEGIN = "<!-- interf:coverage-index:begin -->";
3
+ export declare const HOME_COVERAGE_BLOCK_END = "<!-- interf:coverage-index:end -->";
4
+ export interface SummaryCoverageIndexResult {
5
+ /** Number of summary notes the home coverage block wikilinks. */
6
+ summaries: number;
7
+ /** The file the navigation links were written into. */
8
+ indexPath: string;
9
+ }
10
+ /**
11
+ * Ensure `home.md` wikilinks every summary the build produced, via a managed,
12
+ * deterministic coverage block. Call this at build finalization, AFTER the stage
13
+ * agents have produced summaries, BEFORE the connectivity check runs. Guarantees
14
+ * every summary note has an inbound graph edge from the entrypoint spine
15
+ * regardless of agent behavior.
16
+ *
17
+ * Returns the count of linked summaries, or `null` when there is nothing to index
18
+ * (no `summaries/` layer). Never throws into the build: assembly is already
19
+ * complete; this is the connectivity floor laid on top.
20
+ */
21
+ export declare function ensureSummaryCoverageIndex(contextGraphPath: string): SummaryCoverageIndexResult | null;
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Deterministic NAVIGATION layer that GUARANTEES every summary note is reachable
3
+ * through the link web, independent of agent behavior.
4
+ *
5
+ * THE PROBLEM IT SOLVES
6
+ * The summarize stage produces one summary note per Source file. Knowledge and
7
+ * entrypoint stages are SUPPOSED to wikilink those summaries into the graph, but
8
+ * that relies on the stage agent doing it. When the agent skips a summary, that
9
+ * summary becomes a free-floating island: no note links it, it links no note,
10
+ * undirected degree 0. The `graph_notes_connected` readiness check then fails,
11
+ * and the rendered semantic graph shows the coverage layer as scattered dots.
12
+ *
13
+ * THE GUARANTEE
14
+ * After the stage agents run, the build calls `ensureSummaryCoverageIndex`. It
15
+ * is pure structure, deterministic, and idempotent. It writes a managed
16
+ * "Coverage index" block into `home.md` — the entrypoint spine — holding a
17
+ * `[[full/graph/path]]` wikilink to EVERY summary note the build produced,
18
+ * grouped by source folder. A full graph path resolves uniquely in the
19
+ * connectivity check's link resolver, so each summary gains a guaranteed
20
+ * INBOUND edge from `home.md`. `home.md` is itself part of the fixed skeleton
21
+ * and the graph spine, so it is never an island. Result: no summary can be a
22
+ * free-floating island, regardless of what the stage agent linked.
23
+ *
24
+ * WHY home.md (NOT a new note under summaries/)
25
+ * `home.md` is exactly what entrypoints are for: routing the reader into the
26
+ * content layers. The entrypoint SKILL already models a "Coverage" section in
27
+ * home that links every summary. Putting the index in the spine — rather than a
28
+ * new note inside `summaries/` — keeps the `summaries/` layer purely
29
+ * source-grounded summary notes (so the per-summary content contract,
30
+ * `frontmatter_required_keys` / `frontmatter_valid` / source-ref checks, still
31
+ * holds for every file there) while still guaranteeing connectivity.
32
+ *
33
+ * WHAT IT IS NOT
34
+ * This is a NAVIGATION layer: links only, exactly what `home.md` / entrypoints
35
+ * are for. It invents NO knowledge, NO claims, NO project-specific content, and
36
+ * hardcodes NOTHING about any Source. It only adds `[[wikilinks]]` from the
37
+ * entrypoint spine down to summaries the build already produced. It respects the
38
+ * fixed Context Graph skeleton: it edits only `home.md`, adds no new top-level
39
+ * folder, and creates no note inside the content layers.
40
+ *
41
+ * IDEMPOTENT / DETERMINISTIC
42
+ * Same graph in → same home block out. The block is regenerated from the current
43
+ * on-disk summary set every call (notes sorted, grouped deterministically) and is
44
+ * delimited by stable markers, so re-running REPLACES it in place rather than
45
+ * appending. Agent-authored home content outside the markers is preserved.
46
+ * Re-running on an already-finalized graph is a no-op on content.
47
+ *
48
+ * Best-effort: a failure to write must never fail a build (the stage outputs are
49
+ * already on disk). The connectivity check still runs after and is the source of
50
+ * truth on readiness.
51
+ */
52
+ import { existsSync, readFileSync } from "node:fs";
53
+ import { join, relative } from "node:path";
54
+ import { writeFileAtomic } from "./atomic-fs.js";
55
+ import { listFilesRecursive } from "../../contracts/utils/filesystem.js";
56
+ import { isOutputMarkdownFile } from "./validate.js";
57
+ import { HOME_SPINE_FILE } from "../../contracts/lib/context-graph-layer.js";
58
+ const SUMMARIES_LAYER_DIR = "summaries";
59
+ /** Stable delimiters around the managed coverage block in `home.md`. */
60
+ export const HOME_COVERAGE_BLOCK_BEGIN = "<!-- interf:coverage-index:begin -->";
61
+ export const HOME_COVERAGE_BLOCK_END = "<!-- interf:coverage-index:end -->";
62
+ /**
63
+ * Normalize a graph-relative file path to the link form the connectivity check
64
+ * resolves: forward slashes, no leading `./`, no trailing `.md`. Mirrors
65
+ * `normalizeGraphPath` in check-evaluator so the wikilinks this module emits are
66
+ * the exact tokens that check credits as web edges.
67
+ */
68
+ function toGraphPath(relativePath) {
69
+ return relativePath
70
+ .replaceAll("\\", "/")
71
+ .replace(/^\.\/+/, "")
72
+ .replace(/\.md$/i, "")
73
+ .replace(/\/+$/g, "");
74
+ }
75
+ /**
76
+ * Every summary note in the graph, as graph paths, deterministically sorted.
77
+ * Uses the same `isOutputMarkdownFile` filter the connectivity check and the
78
+ * semantic-graph builder use, so the spine links exactly the notes the check
79
+ * scores for connectivity.
80
+ */
81
+ function listSummaryNoteGraphPaths(contextGraphPath) {
82
+ const summariesDir = join(contextGraphPath, SUMMARIES_LAYER_DIR);
83
+ if (!existsSync(summariesDir))
84
+ return [];
85
+ return listFilesRecursive(summariesDir, isOutputMarkdownFile)
86
+ .map((file) => toGraphPath(relative(contextGraphPath, file)))
87
+ .sort((left, right) => left.localeCompare(right));
88
+ }
89
+ /**
90
+ * Group summary note graph paths by their source folder (the segment(s) between
91
+ * `summaries/` and the note leaf), purely for a navigable, grouped block.
92
+ * Grouping is cosmetic — connectivity is guaranteed by the per-note wikilink
93
+ * regardless of grouping — so a note directly under the layer falls into a single
94
+ * root group.
95
+ */
96
+ function groupBySourceFolder(graphPaths) {
97
+ const groups = new Map();
98
+ for (const graphPath of graphPaths) {
99
+ const withoutLayer = graphPath.replace(new RegExp(`^${SUMMARIES_LAYER_DIR}/`), "");
100
+ const lastSlash = withoutLayer.lastIndexOf("/");
101
+ const group = lastSlash >= 0 ? withoutLayer.slice(0, lastSlash) : SUMMARIES_LAYER_DIR;
102
+ const bucket = groups.get(group);
103
+ if (bucket)
104
+ bucket.push(graphPath);
105
+ else
106
+ groups.set(group, [graphPath]);
107
+ }
108
+ return groups;
109
+ }
110
+ /**
111
+ * Render the managed coverage block: a stable-delimited `## Coverage` section
112
+ * that wikilinks every summary by its full graph path, grouped by source folder.
113
+ * Deterministic for a given summary set.
114
+ */
115
+ function renderCoverageBlock(graphPaths) {
116
+ const lines = [
117
+ HOME_COVERAGE_BLOCK_BEGIN,
118
+ "## Coverage",
119
+ "",
120
+ "Every Source summary in this Context Graph, linked so the coverage layer stays",
121
+ "connected to this entrypoint. Navigation only — links, no new content.",
122
+ "",
123
+ ];
124
+ const groups = groupBySourceFolder(graphPaths);
125
+ const groupNames = [...groups.keys()].sort((left, right) => left.localeCompare(right));
126
+ for (const group of groupNames) {
127
+ lines.push(`### ${group}`, "");
128
+ for (const graphPath of groups.get(group) ?? []) {
129
+ lines.push(`- [[${graphPath}]]`);
130
+ }
131
+ lines.push("");
132
+ }
133
+ lines.push(HOME_COVERAGE_BLOCK_END);
134
+ return lines.join("\n");
135
+ }
136
+ /**
137
+ * Write or replace the managed coverage block in `home.md`. The block is
138
+ * delimited by stable markers and fully rewritten each call, so agent-authored
139
+ * spine content outside the markers is preserved and re-running is idempotent. If
140
+ * `home.md` does not exist yet, a minimal spine carrying the block is created —
141
+ * home is part of the fixed skeleton, so ensuring it exists is legitimate.
142
+ */
143
+ function writeCoverageBlockIntoHome(contextGraphPath, block) {
144
+ const homePath = join(contextGraphPath, HOME_SPINE_FILE);
145
+ if (!existsSync(homePath)) {
146
+ writeFileAtomic(homePath, `# Home\n\n${block}\n`);
147
+ return;
148
+ }
149
+ const current = readFileSync(homePath, "utf8");
150
+ const beginIndex = current.indexOf(HOME_COVERAGE_BLOCK_BEGIN);
151
+ const endIndex = current.indexOf(HOME_COVERAGE_BLOCK_END);
152
+ let next;
153
+ if (beginIndex >= 0 && endIndex > beginIndex) {
154
+ // Replace the existing managed block in place (idempotent).
155
+ const before = current.slice(0, beginIndex);
156
+ const after = current.slice(endIndex + HOME_COVERAGE_BLOCK_END.length);
157
+ next = `${before}${block}${after}`;
158
+ }
159
+ else {
160
+ // Append the managed block once, separated from existing spine content.
161
+ const trimmed = current.replace(/\s+$/g, "");
162
+ next = `${trimmed}\n\n${block}\n`;
163
+ }
164
+ if (next !== current)
165
+ writeFileAtomic(homePath, next);
166
+ }
167
+ /**
168
+ * Ensure `home.md` wikilinks every summary the build produced, via a managed,
169
+ * deterministic coverage block. Call this at build finalization, AFTER the stage
170
+ * agents have produced summaries, BEFORE the connectivity check runs. Guarantees
171
+ * every summary note has an inbound graph edge from the entrypoint spine
172
+ * regardless of agent behavior.
173
+ *
174
+ * Returns the count of linked summaries, or `null` when there is nothing to index
175
+ * (no `summaries/` layer). Never throws into the build: assembly is already
176
+ * complete; this is the connectivity floor laid on top.
177
+ */
178
+ export function ensureSummaryCoverageIndex(contextGraphPath) {
179
+ if (!existsSync(contextGraphPath))
180
+ return null;
181
+ const graphPaths = listSummaryNoteGraphPaths(contextGraphPath);
182
+ if (graphPaths.length === 0)
183
+ return null;
184
+ writeCoverageBlockIntoHome(contextGraphPath, renderCoverageBlock(graphPaths));
185
+ return {
186
+ summaries: graphPaths.length,
187
+ indexPath: HOME_SPINE_FILE,
188
+ };
189
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Traces builder — evidence rollup for humans.
3
+ *
4
+ * Traces are the visible product. "20 of 20 files processed, 847 pages
5
+ * read, 18 charts extracted, 92 entities found, 12 checks passed." Each
6
+ * trace rolls up one quantifiable piece of evidence the user can verify
7
+ * at a glance.
8
+ *
9
+ * Traces are derived (not stored): the builder walks the current
10
+ * Context Graph's artifacts + Checks / benchmark results + source file index and
11
+ * rolls them into a single Traces wire shape per request. Future
12
+ * enhancement: cache the rolled-up Traces on the Context Graph manifest
13
+ * so Context Graph bundles ship with traces attached.
14
+ */
15
+ import type { ArtifactStatus, Readiness } from "../../contracts/lib/schema.js";
16
+ import type { Traces } from "../../contracts/lib/project-schema.js";
17
+ export interface BuildTracesInput {
18
+ projectId: string;
19
+ graphId: string;
20
+ readiness: Readiness | null;
21
+ artifacts: readonly ArtifactStatus[];
22
+ sourceFileCount: number;
23
+ filesProcessed?: number;
24
+ generatedAt?: string;
25
+ }
26
+ /**
27
+ * Build a Traces wire shape from the inputs available after a Build.
28
+ * Empty/safe when the Project has no Context Graph yet.
29
+ */
30
+ export declare function buildTraces(input: BuildTracesInput): Traces;