@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
@@ -0,0 +1,92 @@
1
+ import type { BuildPlanImprovementContext } from "../../build/lib/schema.js";
2
+ import type { BuildPlanAuthoringArtifactRequirement, BuildPlanContextCheckDraft, RequestedArtifact, SourceContext } from "../../../build-plans/authoring/brief.js";
3
+ import { renderClaudeBootstrap, renderContextGraphQuerySkill, type NativeStageDefinition } from "./shell-templates.js";
4
+ import { syncStageExecutionShellWrites } from "./shell-projection.js";
5
+ export type { NativeStageDefinition };
6
+ export { syncStageExecutionShellWrites };
7
+ export { renderClaudeBootstrap, renderContextGraphQuerySkill };
8
+ export declare function validateStageExecutionShellInputs(options: {
9
+ contextGraphPath: string;
10
+ shellRoot: string;
11
+ stage: NativeStageDefinition;
12
+ }): {
13
+ ok: boolean;
14
+ summary: string;
15
+ };
16
+ export declare function writeNativeAgentSurface(rootPath: string, agentsContent: string, skillName: string, skillContent: string): boolean;
17
+ /**
18
+ * One data-driven shell constructor shared by every agent job (stage execution,
19
+ * Build Plan authoring, Build Plan improvement). The shared skeleton lives here
20
+ * exactly once: create the shell root, create the requested subdirectories, and
21
+ * write the native agent surface (AGENTS.md / CLAUDE.md / SKILL.md) the agent
22
+ * boots from. Job-specific projection (runtime inputs, source locators, build
23
+ * plan trees, artifact mounts) stays in each caller — `createAgentShell` only
24
+ * owns the skeleton, so a reader traces shell setup through one function instead
25
+ * of three near-identical ones.
26
+ *
27
+ * `rootPath` is resolved by the caller (the three job kinds keep their distinct
28
+ * storage roots: stage shells under the Context Graph, improvement loops under
29
+ * the loop root, authoring shells under the Project's service job storage).
30
+ */
31
+ export declare function createAgentShell(options: {
32
+ rootPath: string;
33
+ subdirs: readonly string[];
34
+ nativeSurface: {
35
+ agentsContent: string;
36
+ skillName: string;
37
+ skillContent: string;
38
+ };
39
+ }): {
40
+ rootPath: string;
41
+ };
42
+ export declare function pruneStageExecutionShells(contextGraphPath: string): void;
43
+ export declare function projectContextGraphQueryShell(contextGraphPath: string, contextGraphName: string, buildPlanId: string, options?: {
44
+ buildPlanOriginSelected?: string | null;
45
+ buildPlanLocalDraft?: boolean;
46
+ }): boolean;
47
+ export declare function projectSourceFilesTestQueryShell(rootPath: string): boolean;
48
+ export declare function createStageExecutionShell(contextGraphPath: string, contextGraphName: string, buildPlanId: string, stage: NativeStageDefinition, writeArtifacts?: readonly string[]): {
49
+ rootPath: string;
50
+ };
51
+ export declare function freezeStageExecutionShell(rootPath: string): string | null;
52
+ export declare function createBuildPlanAuthoringShell(options: {
53
+ buildPlanPath: string;
54
+ buildPlanId: string;
55
+ label: string;
56
+ referenceBuildPlanId?: string | null;
57
+ sourceFolderPath: string;
58
+ intent: string;
59
+ checks: BuildPlanContextCheckDraft[];
60
+ userPrepInstructions?: string;
61
+ requestedArtifacts?: RequestedArtifact[];
62
+ sourceContext?: SourceContext | null;
63
+ artifactRequirements?: BuildPlanAuthoringArtifactRequirement[];
64
+ shellRoot?: string;
65
+ }): {
66
+ rootPath: string;
67
+ buildPlanBeforePath: string;
68
+ buildPlanAfterPath: string;
69
+ promptLogPath: string;
70
+ eventLogPath: string;
71
+ statusLogPath: string;
72
+ reasoningLogPath: string;
73
+ };
74
+ export declare function freezeBuildPlanAuthoringShell(rootPath: string): string | null;
75
+ export declare function createBuildPlanImprovementShell(options: {
76
+ contextGraphPath: string;
77
+ contextGraphName: string;
78
+ buildPlanId: string;
79
+ runId: string;
80
+ loopIndex: number;
81
+ context: BuildPlanImprovementContext;
82
+ }): {
83
+ rootPath: string;
84
+ loopRootPath: string;
85
+ buildPlanBeforePath: string;
86
+ buildPlanAfterPath: string;
87
+ promptLogPath: string;
88
+ eventLogPath: string;
89
+ statusLogPath: string;
90
+ reasoningLogPath: string;
91
+ };
92
+ export declare function freezeBuildPlanImprovementShell(rootPath: string): string | null;
@@ -0,0 +1,509 @@
1
+ import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join, relative, resolve } from "node:path";
4
+ import { buildShellSourceState, loadBuildStageInputs, loadContextGraphSourceManifest, loadContextGraphSourceState, } from "../../build/source-manifest.js";
5
+ import { writeStageExpectedInputs, } from "../../build/stage-manifest.js";
6
+ import { resolveBuildContext, } from "../../build/build-target.js";
7
+ import { CHECK_PARAM_CONTRACTS, CHECK_KINDS, SourceManifestSchema, StageInputsSchema, } from "../../../contracts/lib/schema.js";
8
+ import { stageExecutionShellsRoot, buildPlanImprovementLoopRoot, buildPlanPackagePathForContextGraph, contextGraphInterfConfigPath, contextGraphRuntimeSourceManifestPath, contextGraphRuntimeStageExpectedInputsPath, contextGraphRuntimeRoot, } from "../../build/context-graph-paths.js";
9
+ import { writeFileAtomic, writeJsonAtomic } from "../../build/atomic-fs.js";
10
+ import { resolveBuildPlanImprovementReviewSourcePaths } from "../../../build-plans/package/build-plan-review-paths.js";
11
+ import { copyIfExists, copyResolvedTree, freezePreservedShell, writeIfChanged, writeNativeSkillCopies, } from "./shell-fs.js";
12
+ import { shellRuntimePath, } from "./shell-paths.js";
13
+ import { writeStageExecutionWorkspaceManifest, } from "./shell-workspace.js";
14
+ import { readBuildPlanImprovementDoc, readContextGraphQuerySkillSource, renderBuildPlanAuthoringAgents, renderBuildPlanAuthoringSkill, renderBuildPlanImprovementAgents, renderBuildPlanImprovementSkill, renderClaudeBootstrap, renderSourceFilesTestAgents, renderSourceFilesTestQuerySkill, renderStageExecutionAgents, renderStageExecutionSkill, renderContextGraphAgents, renderContextGraphQueryNativeSkill, renderContextGraphQuerySkill, } from "./shell-templates.js";
15
+ import { buildStageArtifactMounts, ensureBuildExecutionSurface, projectBuildPlanMetadata, projectStageArtifactMountAliases, projectContextGraphReviewArtifactsState, projectContextGraphRuntimeArtifacts, projectContextGraphSchemaArtifacts, readStageBuildPlanDoc, stageMaterializedArtifactSet, syncStageExecutionShellWrites, writeExecutionShellPathsFile, } from "./shell-projection.js";
16
+ export { syncStageExecutionShellWrites };
17
+ export { renderClaudeBootstrap, renderContextGraphQuerySkill };
18
+ function shellRelativePathInside(shellRoot, locator) {
19
+ const absolutePath = resolve(shellRoot, locator);
20
+ const relativePath = relative(shellRoot, absolutePath);
21
+ if (relativePath === "" || relativePath.startsWith("..") || resolve(relativePath) === relativePath) {
22
+ return null;
23
+ }
24
+ return absolutePath;
25
+ }
26
+ export function validateStageExecutionShellInputs(options) {
27
+ const canonicalInputs = loadBuildStageInputs(options.contextGraphPath, options.stage.id);
28
+ if (!canonicalInputs) {
29
+ return { ok: false, summary: `Missing canonical stage inputs for ${options.stage.id}.` };
30
+ }
31
+ const canonicalManifest = loadContextGraphSourceManifest(options.contextGraphPath);
32
+ if (!canonicalManifest) {
33
+ return { ok: false, summary: "Missing canonical Source Manifest for stage execution." };
34
+ }
35
+ if (canonicalInputs.version !== 3 || canonicalInputs.source_manifest_id !== canonicalManifest.manifest_id) {
36
+ return { ok: false, summary: "Canonical stage inputs are not backed by the current Source Manifest." };
37
+ }
38
+ const shellInputsPath = shellRuntimePath(options.shellRoot, "stage-inputs.json");
39
+ if (!existsSync(shellInputsPath)) {
40
+ return { ok: false, summary: "Stage shell is missing runtime/stage-inputs.json." };
41
+ }
42
+ let shellInputs;
43
+ try {
44
+ shellInputs = StageInputsSchema.parse(JSON.parse(readFileSync(shellInputsPath, "utf8")));
45
+ }
46
+ catch (error) {
47
+ return {
48
+ ok: false,
49
+ summary: `Stage shell inputs are invalid: ${error instanceof Error ? error.message : String(error)}`,
50
+ };
51
+ }
52
+ if (shellInputs.source_state_id !== canonicalInputs.source_state_id) {
53
+ return { ok: false, summary: "Stage shell inputs do not match the canonical Source state id." };
54
+ }
55
+ if (shellInputs.version !== 3 || shellInputs.source_manifest_id !== canonicalManifest.manifest_id) {
56
+ return { ok: false, summary: "Stage shell inputs do not match the canonical Source Manifest id." };
57
+ }
58
+ if (shellInputs.inputs.length !== canonicalInputs.inputs.length || shellInputs.input_total !== canonicalInputs.input_total) {
59
+ return { ok: false, summary: "Stage shell input count does not match the canonical stage input count." };
60
+ }
61
+ const shellManifestPath = shellRuntimePath(options.shellRoot, "source-manifest.json");
62
+ if (!existsSync(shellManifestPath)) {
63
+ return { ok: false, summary: "Stage shell is missing runtime/source-manifest.json." };
64
+ }
65
+ let shellManifest;
66
+ try {
67
+ shellManifest = SourceManifestSchema.parse(JSON.parse(readFileSync(shellManifestPath, "utf8")));
68
+ }
69
+ catch (error) {
70
+ return {
71
+ ok: false,
72
+ summary: `Stage shell Source Manifest is invalid: ${error instanceof Error ? error.message : String(error)}`,
73
+ };
74
+ }
75
+ if (shellManifest.manifest_id !== canonicalManifest.manifest_id) {
76
+ return { ok: false, summary: "Stage shell Source Manifest does not match the canonical manifest id." };
77
+ }
78
+ const shellInputsByKey = new Map(shellInputs.inputs.map((input) => [`${input.source_file_id}\0${input.path}`, input]));
79
+ for (const canonicalInput of canonicalInputs.inputs) {
80
+ const key = `${canonicalInput.source_file_id}\0${canonicalInput.path}`;
81
+ const shellInput = shellInputsByKey.get(key);
82
+ if (!shellInput) {
83
+ return { ok: false, summary: `Stage shell is missing source input ${canonicalInput.path}.` };
84
+ }
85
+ if (canonicalInput.content_hash && shellInput.content_hash !== canonicalInput.content_hash) {
86
+ return { ok: false, summary: `Stage shell source input ${canonicalInput.path} has a changed content hash.` };
87
+ }
88
+ if (shellInput.locator !== canonicalInput.locator) {
89
+ return { ok: false, summary: `Stage shell source input ${canonicalInput.path} has a changed locator.` };
90
+ }
91
+ }
92
+ return { ok: true, summary: "Stage shell inputs match canonical source slices." };
93
+ }
94
+ export function writeNativeAgentSurface(rootPath, agentsContent, skillName, skillContent) {
95
+ let changed = false;
96
+ changed = writeIfChanged(join(rootPath, "AGENTS.md"), `${agentsContent.trimEnd()}\n`) || changed;
97
+ changed =
98
+ writeIfChanged(join(rootPath, "CLAUDE.md"), renderClaudeBootstrap(agentsContent)) || changed;
99
+ changed = writeNativeSkillCopies(rootPath, skillName, skillContent) || changed;
100
+ return changed;
101
+ }
102
+ /**
103
+ * One data-driven shell constructor shared by every agent job (stage execution,
104
+ * Build Plan authoring, Build Plan improvement). The shared skeleton lives here
105
+ * exactly once: create the shell root, create the requested subdirectories, and
106
+ * write the native agent surface (AGENTS.md / CLAUDE.md / SKILL.md) the agent
107
+ * boots from. Job-specific projection (runtime inputs, source locators, build
108
+ * plan trees, artifact mounts) stays in each caller — `createAgentShell` only
109
+ * owns the skeleton, so a reader traces shell setup through one function instead
110
+ * of three near-identical ones.
111
+ *
112
+ * `rootPath` is resolved by the caller (the three job kinds keep their distinct
113
+ * storage roots: stage shells under the Context Graph, improvement loops under
114
+ * the loop root, authoring shells under the Project's service job storage).
115
+ */
116
+ export function createAgentShell(options) {
117
+ mkdirSync(options.rootPath, { recursive: true });
118
+ for (const subdir of options.subdirs) {
119
+ mkdirSync(join(options.rootPath, subdir), { recursive: true });
120
+ }
121
+ writeNativeAgentSurface(options.rootPath, options.nativeSurface.agentsContent, options.nativeSurface.skillName, options.nativeSurface.skillContent);
122
+ return { rootPath: options.rootPath };
123
+ }
124
+ export function pruneStageExecutionShells(contextGraphPath) {
125
+ rmSync(stageExecutionShellsRoot(contextGraphPath), { recursive: true, force: true });
126
+ }
127
+ export function projectContextGraphQueryShell(contextGraphPath, contextGraphName, buildPlanId, options) {
128
+ const agentsContent = renderContextGraphAgents(contextGraphPath, contextGraphName, buildPlanId, options);
129
+ const querySkillContent = readContextGraphQuerySkillSource(contextGraphPath);
130
+ return writeNativeAgentSurface(contextGraphPath, agentsContent, "interf-query", renderContextGraphQueryNativeSkill(querySkillContent));
131
+ }
132
+ export function projectSourceFilesTestQueryShell(rootPath) {
133
+ return writeNativeAgentSurface(rootPath, renderSourceFilesTestAgents(), "interf-query", renderSourceFilesTestQuerySkill());
134
+ }
135
+ export function createStageExecutionShell(contextGraphPath, contextGraphName, buildPlanId, stage, writeArtifacts = []) {
136
+ const schema = ensureBuildExecutionSurface(contextGraphPath);
137
+ const materializedArtifacts = stageMaterializedArtifactSet(schema, stage, writeArtifacts);
138
+ const cleanWriteArtifacts = new Set(stage.writes.filter((artifactId) => !stage.reads.includes(artifactId)));
139
+ const shellsRoot = stageExecutionShellsRoot(contextGraphPath);
140
+ const { rootPath: shellRoot } = createAgentShell({
141
+ rootPath: join(shellsRoot, `${stage.id}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`),
142
+ subdirs: ["runtime", join(".interf", "runtime"), "inputs", "outputs", "logs"],
143
+ nativeSurface: {
144
+ agentsContent: renderStageExecutionAgents(contextGraphName, buildPlanId, stage),
145
+ skillName: "interf-stage",
146
+ skillContent: renderStageExecutionSkill(stage, readStageBuildPlanDoc(contextGraphPath, stage)),
147
+ },
148
+ });
149
+ copyResolvedTree({
150
+ sourcePath: contextGraphInterfConfigPath(contextGraphPath),
151
+ targetPath: join(shellRoot, "interf.json"),
152
+ shellType: "stage-execution",
153
+ });
154
+ copyIfExists(join(contextGraphRuntimeRoot(contextGraphPath), "stage-contract.json"), shellRuntimePath(shellRoot, "stage-contract.json"), "stage-execution");
155
+ const sourceState = loadContextGraphSourceState(contextGraphPath);
156
+ const stageInputs = loadBuildStageInputs(contextGraphPath, stage.id);
157
+ const sourceManifest = loadContextGraphSourceManifest(contextGraphPath);
158
+ if (!existsSync(contextGraphRuntimeStageExpectedInputsPath(contextGraphPath, stage.id))) {
159
+ writeStageExpectedInputs({ contextGraphPath, stage });
160
+ }
161
+ const buildContext = resolveBuildContext(contextGraphPath);
162
+ writeJsonAtomic(shellRuntimePath(shellRoot, "project.json"), {
163
+ kind: "interf-stage-project-context",
164
+ version: 1,
165
+ project: buildContext.project,
166
+ build_plan: buildPlanId,
167
+ stage: stage.id,
168
+ });
169
+ if (sourceManifest) {
170
+ writeJsonAtomic(shellRuntimePath(shellRoot, "source-manifest.json"), sourceManifest);
171
+ copyIfExists(contextGraphRuntimeSourceManifestPath(contextGraphPath), join(shellRoot, ".interf", "runtime", "source-manifest.json"), "stage-execution");
172
+ }
173
+ if (sourceState && stageInputs) {
174
+ writeJsonAtomic(shellRuntimePath(shellRoot, "stage-inputs.json"), stageInputs);
175
+ writeJsonAtomic(shellRuntimePath(shellRoot, "source-state.json"), buildShellSourceState(sourceState, stageInputs));
176
+ }
177
+ copyIfExists(contextGraphRuntimeStageExpectedInputsPath(contextGraphPath, stage.id), shellRuntimePath(shellRoot, "expected-inputs.json"), "stage-execution");
178
+ writeStageSelfCheckScript(shellRoot);
179
+ projectContextGraphSchemaArtifacts(contextGraphPath, shellRoot, schema, new Set([...stage.reads, ...stage.writes]), materializedArtifacts, cleanWriteArtifacts);
180
+ projectBuildPlanMetadata(contextGraphPath, shellRoot, stage);
181
+ projectStageArtifactMountAliases(shellRoot, stage, schema);
182
+ writeExecutionShellPathsFile(shellRoot, buildPlanId, stage, buildStageArtifactMounts(contextGraphPath, shellRoot, stage, schema));
183
+ writeStageExecutionWorkspaceManifest({
184
+ contextGraphPath,
185
+ shellRoot,
186
+ buildPlanId,
187
+ stage,
188
+ });
189
+ return {
190
+ rootPath: shellRoot,
191
+ };
192
+ }
193
+ function writeStageSelfCheckScript(shellRoot) {
194
+ const checkEvaluatorModuleUrl = new URL("../../build/check-evaluator.js", import.meta.url).href;
195
+ const runtimeSchemaModuleUrl = new URL("../../build/lib/schema.js", import.meta.url).href;
196
+ const contractsSchemaModuleUrl = new URL("../../../contracts/lib/schema.js", import.meta.url).href;
197
+ const script = [
198
+ "#!/usr/bin/env node",
199
+ "import { existsSync, readFileSync } from \"node:fs\";",
200
+ "import { dirname, resolve } from \"node:path\";",
201
+ "import { fileURLToPath } from \"node:url\";",
202
+ "",
203
+ `const { evaluateChecks } = await import(${JSON.stringify(checkEvaluatorModuleUrl)});`,
204
+ `const { RuntimeStageContractSchema } = await import(${JSON.stringify(runtimeSchemaModuleUrl)});`,
205
+ `const { ResourceRefSchema, ReviewedInputSchema, SourceManifestSchema, StageEvidenceSchema, StageInputsSchema } = await import(${JSON.stringify(contractsSchemaModuleUrl)});`,
206
+ "",
207
+ "const shellRoot = resolve(dirname(fileURLToPath(import.meta.url)), \"..\");",
208
+ "const contractPath = resolve(shellRoot, \"runtime\", \"stage-contract.json\");",
209
+ "const contract = RuntimeStageContractSchema.parse(JSON.parse(readFileSync(contractPath, \"utf8\")));",
210
+ "const artifactResults = [];",
211
+ "const evidenceFailures = [];",
212
+ "const inputFailures = [];",
213
+ "const coverageFailures = [];",
214
+ "const stageInputsPath = resolve(shellRoot, \"runtime\", \"stage-inputs.json\");",
215
+ "",
216
+ "if (!existsSync(stageInputsPath)) {",
217
+ " inputFailures.push(\"runtime/stage-inputs.json was not written.\");",
218
+ "} else {",
219
+ " try {",
220
+ " const stageInputs = StageInputsSchema.parse(JSON.parse(readFileSync(stageInputsPath, \"utf8\")));",
221
+ " if (stageInputs.input_total !== stageInputs.inputs.length) {",
222
+ " inputFailures.push(`stage-inputs input_total ${stageInputs.input_total} does not match ${stageInputs.inputs.length}.`);",
223
+ " }",
224
+ " const manifestPath = resolve(shellRoot, \"runtime\", \"source-manifest.json\");",
225
+ " if (!existsSync(manifestPath)) {",
226
+ " inputFailures.push(\"runtime/source-manifest.json was not written.\");",
227
+ " } else {",
228
+ " const manifest = SourceManifestSchema.parse(JSON.parse(readFileSync(manifestPath, \"utf8\")));",
229
+ " if (stageInputs.version !== 3 || stageInputs.source_manifest_id !== manifest.manifest_id) {",
230
+ " inputFailures.push(\"stage inputs are not backed by runtime/source-manifest.json.\");",
231
+ " }",
232
+ " }",
233
+ " } catch (error) {",
234
+ " inputFailures.push(`stage inputs JSON is invalid: ${error instanceof Error ? error.message : String(error)}`);",
235
+ " }",
236
+ "}",
237
+ "",
238
+ "const expectedInputsPath = resolve(shellRoot, \"runtime\", \"expected-inputs.json\");",
239
+ "const reviewedInputsPath = resolve(shellRoot, \"runtime\", \"reviewed-inputs.json\");",
240
+ "let expectedInputs = [];",
241
+ "if (!existsSync(expectedInputsPath)) {",
242
+ " coverageFailures.push(\"runtime/expected-inputs.json was not written.\");",
243
+ "} else {",
244
+ " try {",
245
+ " const file = JSON.parse(readFileSync(expectedInputsPath, \"utf8\"));",
246
+ " if (file.kind !== \"interf-stage-expected-inputs\" || file.stage_id !== contract.stage) {",
247
+ " coverageFailures.push(`expected inputs file is not for stage ${contract.stage}.`);",
248
+ " }",
249
+ " expectedInputs = Array.isArray(file.expected)",
250
+ " ? file.expected.map((entry) => ResourceRefSchema.parse(entry))",
251
+ " : [];",
252
+ " if (!Array.isArray(file.expected)) {",
253
+ " coverageFailures.push(\"expected inputs file must contain an expected array.\");",
254
+ " }",
255
+ " } catch (error) {",
256
+ " coverageFailures.push(`expected inputs JSON is invalid: ${error instanceof Error ? error.message : String(error)}`);",
257
+ " }",
258
+ "}",
259
+ "",
260
+ "if (!existsSync(reviewedInputsPath)) {",
261
+ " coverageFailures.push(\"runtime/reviewed-inputs.json was not written.\");",
262
+ "} else {",
263
+ " try {",
264
+ " const file = JSON.parse(readFileSync(reviewedInputsPath, \"utf8\"));",
265
+ " if (file.kind !== \"interf-stage-reviewed-inputs\" || file.stage_id !== contract.stage) {",
266
+ " coverageFailures.push(`reviewed inputs file is not for stage ${contract.stage}.`);",
267
+ " }",
268
+ " const reviewed = Array.isArray(file.reviewed)",
269
+ " ? file.reviewed.map((entry) => ReviewedInputSchema.parse(entry))",
270
+ " : [];",
271
+ " if (!Array.isArray(file.reviewed)) {",
272
+ " coverageFailures.push(\"reviewed inputs file must contain a reviewed array.\");",
273
+ " }",
274
+ " const expectedIds = new Set(expectedInputs.map((entry) => entry.id));",
275
+ " const reviewedIds = new Set(reviewed.map((entry) => entry.resource_id));",
276
+ " for (const entry of reviewed) {",
277
+ " if (!expectedIds.has(entry.resource_id)) {",
278
+ " coverageFailures.push(`reviewed input ${entry.resource_id} is not in runtime/expected-inputs.json.`);",
279
+ " }",
280
+ " if ((entry.decision === \"missing\" || entry.decision === \"blocked\" || entry.decision === \"not-relevant\") && !entry.reason) {",
281
+ " coverageFailures.push(`reviewed input ${entry.resource_id} needs a reason for decision ${entry.decision}.`);",
282
+ " }",
283
+ " }",
284
+ " for (const input of expectedInputs) {",
285
+ " if (input.required !== false && !reviewedIds.has(input.id)) {",
286
+ " coverageFailures.push(`required expected input ${input.id} was not reviewed.`);",
287
+ " }",
288
+ " }",
289
+ " } catch (error) {",
290
+ " coverageFailures.push(`reviewed inputs JSON is invalid: ${error instanceof Error ? error.message : String(error)}`);",
291
+ " }",
292
+ "}",
293
+ "",
294
+ "for (const writeContract of contract.artifacts.write_contracts) {",
295
+ " const result = evaluateChecks(writeContract.checks, {",
296
+ " rootPath: shellRoot,",
297
+ " targetPath: writeContract.path,",
298
+ " counts: contract.counts,",
299
+ " });",
300
+ " artifactResults.push({",
301
+ " artifact_id: writeContract.artifact_id,",
302
+ " path: writeContract.path,",
303
+ " check_results: result.check_results,",
304
+ " failures: result.failures,",
305
+ " });",
306
+ "}",
307
+ "",
308
+ "const failures = artifactResults.flatMap((artifact) =>",
309
+ " artifact.failures.map((failure) => ({ artifact, failure })),",
310
+ ");",
311
+ "const totalChecks = artifactResults.reduce((total, artifact) => total + artifact.check_results.length, 0);",
312
+ "const passedChecks = artifactResults.reduce(",
313
+ " (total, artifact) => total + artifact.check_results.filter((check) => check.passed).length,",
314
+ " 0,",
315
+ ");",
316
+ "",
317
+ "if (contract.contract_type === \"build-file-evidence\") {",
318
+ " const evidencePath = resolve(shellRoot, \"runtime\", \"stage-evidence.json\");",
319
+ " if (!existsSync(evidencePath)) {",
320
+ " evidenceFailures.push(\"runtime/stage-evidence.json was not written.\");",
321
+ " } else {",
322
+ " try {",
323
+ " const evidence = StageEvidenceSchema.parse(JSON.parse(readFileSync(evidencePath, \"utf8\")));",
324
+ " if (evidence.run_id !== contract.run_id) {",
325
+ " evidenceFailures.push(`stage evidence run_id ${evidence.run_id} does not match ${contract.run_id}.`);",
326
+ " }",
327
+ " if (evidence.stage !== contract.stage) {",
328
+ " evidenceFailures.push(`stage evidence stage ${evidence.stage} does not match ${contract.stage}.`);",
329
+ " }",
330
+ " const evidenceItemsWithRefs = evidence.items.filter((item) => item.source_refs.length > 0 || item.output_refs.length > 0);",
331
+ " if (evidenceItemsWithRefs.length === 0) {",
332
+ " evidenceFailures.push(\"stage evidence needs at least one source/output evidence item.\");",
333
+ " }",
334
+ " const writableArtifacts = new Set([",
335
+ " ...contract.artifacts.writes,",
336
+ " ...contract.artifacts.write_contracts.map((writeContract) => writeContract.artifact_id),",
337
+ " ]);",
338
+ " for (const item of evidence.items) {",
339
+ " for (const ref of item.output_refs) {",
340
+ " if (!writableArtifacts.has(ref.artifact_id)) {",
341
+ " evidenceFailures.push(`stage evidence output artifact ${ref.artifact_id} is not a declared write.`);",
342
+ " }",
343
+ " if (!existsSync(resolve(shellRoot, ref.path))) {",
344
+ " evidenceFailures.push(`stage evidence output path ${ref.path} does not exist.`);",
345
+ " }",
346
+ " }",
347
+ " }",
348
+ " } catch (error) {",
349
+ " evidenceFailures.push(`stage evidence JSON is invalid: ${error instanceof Error ? error.message : String(error)}`);",
350
+ " }",
351
+ " }",
352
+ "}",
353
+ "",
354
+ "if (failures.length === 0 && evidenceFailures.length === 0 && inputFailures.length === 0 && coverageFailures.length === 0) {",
355
+ " console.log(`VALID: ${contract.stage} stage outputs satisfy ${passedChecks}/${totalChecks} deterministic check(s).`);",
356
+ " process.exit(0);",
357
+ "}",
358
+ "",
359
+ "console.log(`INVALID: ${failures.length + evidenceFailures.length + inputFailures.length + coverageFailures.length} required deterministic check(s) failed for stage ${contract.stage}.`);",
360
+ "for (const { artifact, failure } of failures) {",
361
+ " console.log(`- ${artifact.artifact_id} (${artifact.path}) / ${failure.check_id}: ${failure.summary}`);",
362
+ " if (failure.details) {",
363
+ " console.log(` details: ${JSON.stringify(failure.details)}`);",
364
+ " }",
365
+ "}",
366
+ "for (const failure of evidenceFailures) {",
367
+ " console.log(`- stage evidence: ${failure}`);",
368
+ "}",
369
+ "for (const failure of inputFailures) {",
370
+ " console.log(`- stage input: ${failure}`);",
371
+ "}",
372
+ "for (const failure of coverageFailures) {",
373
+ " console.log(`- stage coverage: ${failure}`);",
374
+ "}",
375
+ "process.exit(1);",
376
+ "",
377
+ ].join("\n");
378
+ writeFileAtomic(shellRuntimePath(shellRoot, "check-stage.mjs"), script);
379
+ }
380
+ export function freezeStageExecutionShell(rootPath) {
381
+ return freezePreservedShell(rootPath, "stage-execution");
382
+ }
383
+ export function createBuildPlanAuthoringShell(options) {
384
+ const { rootPath: shellRoot } = createAgentShell({
385
+ // Durable Project job storage in the launched path; ephemeral /tmp only when
386
+ // no durable root was supplied (unit tests of the draft/parse path).
387
+ rootPath: options.shellRoot ??
388
+ mkdtempSync(join(tmpdir(), `interf-build-plan-author-${options.buildPlanId}-`)),
389
+ subdirs: ["runtime", "artifacts", "logs"],
390
+ nativeSurface: {
391
+ agentsContent: renderBuildPlanAuthoringAgents({
392
+ buildPlanId: options.buildPlanId,
393
+ label: options.label,
394
+ referenceBuildPlanId: options.referenceBuildPlanId ?? null,
395
+ }),
396
+ skillName: "interf-build-plan-author",
397
+ skillContent: renderBuildPlanAuthoringSkill(),
398
+ },
399
+ });
400
+ // source_context is resolved ONCE by the caller (runBuildPlanAuthoringDraft):
401
+ // caller-supplied context wins, else the cheap contents-free Source scan,
402
+ // else null. The shell is a pure consumer here so authoring-context.json and
403
+ // the persisted authoring brief always carry the SAME value. Do not re-derive
404
+ // or re-scan it in the shell.
405
+ const sourceContext = options.sourceContext ?? null;
406
+ const context = {
407
+ kind: "interf-build-plan-authoring",
408
+ version: 1,
409
+ generated_at: new Date().toISOString(),
410
+ authoring_mode: "from-scratch",
411
+ build_plan_id: options.buildPlanId,
412
+ build_plan_label: options.label,
413
+ ...(options.referenceBuildPlanId ? { reference_build_plan_id: options.referenceBuildPlanId } : {}),
414
+ intent: options.intent,
415
+ ...(options.userPrepInstructions ? { user_prep_instructions: options.userPrepInstructions } : {}),
416
+ allowed_check_kinds: CHECK_KINDS,
417
+ check_param_contracts: CHECK_PARAM_CONTRACTS,
418
+ requested_artifacts: options.requestedArtifacts ?? [],
419
+ checks: options.checks,
420
+ artifact_requirements: options.artifactRequirements ?? [],
421
+ project: {
422
+ source_folder_path: options.sourceFolderPath,
423
+ source_context: sourceContext,
424
+ },
425
+ };
426
+ writeFileSync(join(shellRoot, "runtime", "authoring-context.json"), `${JSON.stringify(context, null, 2)}\n`);
427
+ writeFileSync(join(shellRoot, "runtime", "source-locator.json"), `${JSON.stringify({
428
+ kind: "interf-source-locator",
429
+ version: 1,
430
+ generated_at: new Date().toISOString(),
431
+ source: {
432
+ kind: "local-folder",
433
+ locator: options.sourceFolderPath,
434
+ },
435
+ note: "Interf attaches a cheap, contents-free Source scan (folder names, file counts, file kinds, sampled filenames, filename date ranges) to runtime/authoring-context.json.project.source_context. It never reads file contents. Use it to shape stages, then inspect this locator through your own Source access before locking the plan.",
436
+ }, null, 2)}\n`);
437
+ copyResolvedTree({
438
+ sourcePath: options.buildPlanPath,
439
+ targetPath: join(shellRoot, "build-plan"),
440
+ shellType: "build-plan-authoring",
441
+ });
442
+ return {
443
+ rootPath: shellRoot,
444
+ buildPlanBeforePath: join(shellRoot, "artifacts", "build-plan-before"),
445
+ buildPlanAfterPath: join(shellRoot, "artifacts", "build-plan-after"),
446
+ promptLogPath: join(shellRoot, "logs", "build-plan-author.prompt.txt"),
447
+ eventLogPath: join(shellRoot, "logs", "build-plan-author.events.ndjson"),
448
+ statusLogPath: join(shellRoot, "logs", "build-plan-author.status.log"),
449
+ // Same canonical convention as the stage path: reasoning is teed into the
450
+ // shell's runtime/ dir so it is preserved when the shell is frozen.
451
+ reasoningLogPath: join(shellRoot, "runtime", "agent-reasoning.jsonl"),
452
+ };
453
+ }
454
+ export function freezeBuildPlanAuthoringShell(rootPath) {
455
+ return freezePreservedShell(rootPath, "build-plan-authoring");
456
+ }
457
+ export function createBuildPlanImprovementShell(options) {
458
+ const schema = ensureBuildExecutionSurface(options.contextGraphPath);
459
+ const loopRootPath = buildPlanImprovementLoopRoot(options.contextGraphPath, options.runId, options.loopIndex);
460
+ const { rootPath: shellRoot } = createAgentShell({
461
+ rootPath: join(loopRootPath, "shell"),
462
+ subdirs: ["runtime", "artifacts"],
463
+ nativeSurface: {
464
+ agentsContent: renderBuildPlanImprovementAgents(options.contextGraphName, options.buildPlanId, options.loopIndex),
465
+ skillName: "interf-build-plan-improver",
466
+ skillContent: renderBuildPlanImprovementSkill(options.buildPlanId, options.loopIndex, readBuildPlanImprovementDoc(options.contextGraphPath)),
467
+ },
468
+ });
469
+ // Improvement logs live one level up in the loop root (not the shell), so the
470
+ // loop record can index them beside build-plan-before/after.
471
+ mkdirSync(join(loopRootPath, "logs"), { recursive: true });
472
+ writeFileSync(join(shellRoot, "runtime", "loop-context.json"), `${JSON.stringify(options.context, null, 2)}\n`);
473
+ projectContextGraphReviewArtifactsState(options.contextGraphPath, shellRoot, schema);
474
+ copyResolvedTree({
475
+ sourcePath: buildPlanPackagePathForContextGraph(options.contextGraphPath),
476
+ targetPath: join(shellRoot, "build-plan"),
477
+ shellType: "build-plan-improvement",
478
+ });
479
+ copyIfExists(contextGraphInterfConfigPath(options.contextGraphPath), join(shellRoot, "interf.json"), "build-plan-improvement");
480
+ projectContextGraphRuntimeArtifacts(options.contextGraphPath, shellRoot);
481
+ const reviewSources = resolveBuildPlanImprovementReviewSourcePaths(options.contextGraphPath);
482
+ if (reviewSources.executionShells) {
483
+ copyIfExists(reviewSources.executionShells, join(shellRoot, "artifacts", "execution-shells"), "build-plan-improvement");
484
+ }
485
+ if (reviewSources.benchmarkRuns) {
486
+ copyIfExists(reviewSources.benchmarkRuns, join(shellRoot, "artifacts", "benchmark-runs"), "build-plan-improvement");
487
+ }
488
+ if (reviewSources.targetTestRuns) {
489
+ copyIfExists(reviewSources.targetTestRuns, join(shellRoot, "artifacts", "test-runs"), "build-plan-improvement");
490
+ }
491
+ if (reviewSources.targetTestSandboxes) {
492
+ copyIfExists(reviewSources.targetTestSandboxes, join(shellRoot, "artifacts", "test-sandboxes"), "build-plan-improvement");
493
+ }
494
+ return {
495
+ rootPath: shellRoot,
496
+ loopRootPath,
497
+ buildPlanBeforePath: join(loopRootPath, "build-plan-before"),
498
+ buildPlanAfterPath: join(loopRootPath, "build-plan-after"),
499
+ promptLogPath: join(loopRootPath, "logs", "build-plan-improver.prompt.txt"),
500
+ eventLogPath: join(loopRootPath, "logs", "build-plan-improver.events.ndjson"),
501
+ statusLogPath: join(loopRootPath, "logs", "build-plan-improver.status.log"),
502
+ // Reasoning is teed into the shell's runtime/ dir (same convention as the
503
+ // stage path) so it is preserved when the improvement shell is frozen.
504
+ reasoningLogPath: join(shellRoot, "runtime", "agent-reasoning.jsonl"),
505
+ };
506
+ }
507
+ export function freezeBuildPlanImprovementShell(rootPath) {
508
+ return freezePreservedShell(rootPath, "build-plan-improvement");
509
+ }
@@ -0,0 +1,10 @@
1
+ import type { SourceContext } from "../../../build-plans/authoring/brief.js";
2
+ /**
3
+ * Produce a populated SourceContext for the authoring agent from a cheap,
4
+ * contents-free scan. Returns null when the Source has no readable files so
5
+ * callers can fall back to the existing null (no fabricated inventory). A
6
+ * genuine read failure on the Source root returns an explicit read-error
7
+ * SourceContext instead, so an unreadable Source never silently degrades into
8
+ * a generic plan.
9
+ */
10
+ export declare function scanSourceContext(sourceFolderPath: string): SourceContext | null;