@interf/compiler 0.22.2 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/README.md +175 -234
  2. package/dist/bin-mcp.d.ts +2 -0
  3. package/dist/bin-mcp.js +63 -0
  4. package/dist/bin-runtime.d.ts +2 -0
  5. package/dist/bin-runtime.js +111 -0
  6. package/dist/cli/commands/agents.js +4 -4
  7. package/dist/cli/commands/auth.d.ts +20 -0
  8. package/dist/cli/commands/auth.js +161 -0
  9. package/dist/cli/commands/benchmark.d.ts +10 -0
  10. package/dist/cli/commands/benchmark.js +88 -0
  11. package/dist/cli/commands/build-plan.js +95 -103
  12. package/dist/cli/commands/build.d.ts +1 -1
  13. package/dist/cli/commands/build.js +16 -15
  14. package/dist/cli/commands/doctor.js +3 -3
  15. package/dist/cli/commands/graphs.d.ts +2 -0
  16. package/dist/cli/commands/graphs.js +199 -0
  17. package/dist/cli/commands/login.js +4 -6
  18. package/dist/cli/commands/logout.js +1 -1
  19. package/dist/cli/commands/mcp.d.ts +3 -2
  20. package/dist/cli/commands/mcp.js +721 -204
  21. package/dist/cli/commands/project.d.ts +2 -0
  22. package/dist/cli/commands/project.js +202 -0
  23. package/dist/cli/commands/reset.d.ts +1 -1
  24. package/dist/cli/commands/reset.js +10 -10
  25. package/dist/cli/commands/runs.js +52 -26
  26. package/dist/cli/commands/runtime.d.ts +24 -0
  27. package/dist/cli/commands/runtime.js +373 -0
  28. package/dist/cli/commands/status.d.ts +1 -0
  29. package/dist/cli/commands/status.js +33 -22
  30. package/dist/cli/commands/traces.d.ts +2 -0
  31. package/dist/cli/commands/traces.js +125 -0
  32. package/dist/cli/commands/wizard.js +155 -150
  33. package/dist/cli/index.d.ts +7 -4
  34. package/dist/cli/index.js +13 -7
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +2 -2
  37. package/dist/packages/build-plans/authoring/brief.d.ts +517 -0
  38. package/dist/packages/build-plans/authoring/brief.js +89 -0
  39. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +10 -10
  40. package/dist/packages/build-plans/authoring/build-plan-authoring.js +66 -26
  41. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +1 -1
  42. package/dist/packages/build-plans/authoring/build-plan-edit-session.js +8 -2
  43. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
  44. package/dist/packages/build-plans/authoring/build-plan-improvement.js +39 -42
  45. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
  46. package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
  47. package/dist/packages/build-plans/build-plan-resolution.js +3 -3
  48. package/dist/packages/build-plans/index.d.ts +1 -1
  49. package/dist/packages/build-plans/index.js +1 -1
  50. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -12
  51. package/dist/packages/build-plans/package/build-plan-definitions.js +40 -39
  52. package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
  53. package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
  54. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
  55. package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
  56. package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +4 -4
  57. package/dist/packages/build-plans/package/build-plan-stage-runner.js +22 -11
  58. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +5 -6
  59. package/dist/packages/build-plans/package/builtin-build-plan.js +7 -8
  60. package/dist/packages/build-plans/package/context-interface.d.ts +11 -9
  61. package/dist/packages/build-plans/package/context-interface.js +14 -33
  62. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
  63. package/dist/packages/build-plans/package/interf-build-plan-package.js +56 -52
  64. package/dist/packages/build-plans/package/local-build-plans.d.ts +12 -10
  65. package/dist/packages/build-plans/package/local-build-plans.js +56 -31
  66. package/dist/packages/build-plans/package/user-build-plans.js +1 -1
  67. package/dist/packages/contracts/index.d.ts +4 -2
  68. package/dist/packages/contracts/index.js +2 -1
  69. package/dist/packages/contracts/lib/project-paths.d.ts +137 -0
  70. package/dist/packages/contracts/lib/project-paths.js +211 -0
  71. package/dist/packages/contracts/lib/project-schema.d.ts +160 -0
  72. package/dist/packages/contracts/lib/project-schema.js +113 -0
  73. package/dist/packages/contracts/lib/schema.d.ts +739 -80
  74. package/dist/packages/contracts/lib/schema.js +410 -75
  75. package/dist/packages/contracts/utils/parse.js +67 -0
  76. package/dist/packages/projects/index.d.ts +6 -0
  77. package/dist/packages/{project → projects}/index.js +0 -3
  78. package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
  79. package/dist/packages/{project → projects}/interf-detect.js +56 -50
  80. package/dist/packages/projects/interf.d.ts +2 -0
  81. package/dist/packages/projects/interf.js +1 -0
  82. package/dist/packages/projects/lib/schema.d.ts +79 -0
  83. package/dist/packages/projects/lib/schema.js +89 -0
  84. package/dist/packages/projects/source-config.d.ts +58 -0
  85. package/dist/packages/projects/source-config.js +352 -0
  86. package/dist/packages/projects/source-folders.d.ts +11 -0
  87. package/dist/packages/{project → projects}/source-folders.js +26 -26
  88. package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
  89. package/dist/packages/{engine → runtime}/action-planner.js +20 -22
  90. package/dist/packages/runtime/action-values.d.ts +1 -0
  91. package/dist/packages/runtime/action-values.js +1 -0
  92. package/dist/packages/runtime/actions/errors.d.ts +2 -0
  93. package/dist/packages/runtime/actions/errors.js +12 -0
  94. package/dist/packages/runtime/actions/fields.d.ts +82 -0
  95. package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
  96. package/dist/packages/runtime/actions/form-builders.js +619 -0
  97. package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
  98. package/dist/packages/runtime/actions/form-validators.js +128 -0
  99. package/dist/packages/runtime/actions/helpers.d.ts +11 -0
  100. package/dist/packages/runtime/actions/helpers.js +80 -0
  101. package/dist/packages/runtime/actions/index.d.ts +8 -0
  102. package/dist/packages/runtime/actions/index.js +11 -0
  103. package/dist/packages/runtime/actions/registry.d.ts +64 -0
  104. package/dist/packages/runtime/actions/registry.js +62 -0
  105. package/dist/packages/runtime/actions/requests.d.ts +45 -0
  106. package/dist/packages/runtime/actions/requests.js +158 -0
  107. package/dist/packages/runtime/actions/schemas.d.ts +154 -0
  108. package/dist/packages/runtime/actions/schemas.js +36 -0
  109. package/dist/packages/runtime/agent-handoff.d.ts +11 -0
  110. package/dist/packages/runtime/agent-handoff.js +101 -0
  111. package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
  112. package/dist/packages/{engine → runtime}/agents/index.js +1 -2
  113. package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
  114. package/dist/packages/runtime/agents/lib/args.js +24 -0
  115. package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
  116. package/dist/packages/runtime/agents/lib/constants.js +13 -0
  117. package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
  118. package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
  119. package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
  120. package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
  121. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +8 -14
  122. package/dist/packages/{engine → runtime}/agents/lib/execution.js +14 -4
  123. package/dist/packages/{engine → runtime}/agents/lib/preflight.js +15 -13
  124. package/dist/packages/{engine → runtime}/agents/lib/render.js +4 -4
  125. package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
  126. package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
  127. package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
  128. package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
  129. package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
  130. package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
  131. package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
  132. package/dist/packages/runtime/agents/lib/shell-templates.js +452 -0
  133. package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
  134. package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
  135. package/dist/packages/runtime/agents/lib/shells.d.ts +63 -0
  136. package/dist/packages/runtime/agents/lib/shells.js +383 -0
  137. package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
  138. package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
  139. package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
  140. package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
  141. package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
  142. package/dist/packages/runtime/agents/providers/codex.js +64 -0
  143. package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
  144. package/dist/packages/runtime/agents/providers/cursor.js +24 -0
  145. package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
  146. package/dist/packages/runtime/agents/providers/index.js +31 -0
  147. package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
  148. package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
  149. package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
  150. package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
  151. package/dist/packages/{engine → runtime}/agents/role-executors.js +7 -6
  152. package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
  153. package/dist/packages/runtime/auth/account-context.d.ts +52 -0
  154. package/dist/packages/runtime/auth/account-context.js +68 -0
  155. package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
  156. package/dist/packages/runtime/auth/auth-flow.js +189 -0
  157. package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
  158. package/dist/packages/runtime/auth/jwt-validator.js +86 -0
  159. package/dist/packages/runtime/auth/keychain.d.ts +35 -0
  160. package/dist/packages/runtime/auth/keychain.js +85 -0
  161. package/dist/packages/runtime/auth/session-store.d.ts +38 -0
  162. package/dist/packages/runtime/auth/session-store.js +88 -0
  163. package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
  164. package/dist/packages/runtime/auth/workos-client.js +87 -0
  165. package/dist/packages/runtime/benchmark-question-draft.d.ts +20 -0
  166. package/dist/packages/runtime/benchmark-question-draft.js +124 -0
  167. package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
  168. package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
  169. package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +5 -5
  170. package/dist/packages/{engine → runtime}/build/artifact-status.js +25 -23
  171. package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
  172. package/dist/packages/runtime/build/atomic-fs.js +95 -0
  173. package/dist/packages/runtime/build/billing-events.d.ts +78 -0
  174. package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
  175. package/dist/packages/runtime/build/build-evidence.d.ts +15 -0
  176. package/dist/packages/runtime/build/build-evidence.js +173 -0
  177. package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
  178. package/dist/packages/runtime/build/build-pipeline.js +304 -0
  179. package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
  180. package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
  181. package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
  182. package/dist/packages/runtime/build/build-plan-runs.js +31 -0
  183. package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
  184. package/dist/packages/{engine → runtime}/build/build-stage-plan.js +28 -29
  185. package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
  186. package/dist/packages/runtime/build/build-stage-runner.js +165 -0
  187. package/dist/packages/{engine → runtime}/build/build-target.d.ts +4 -4
  188. package/dist/packages/runtime/build/build-target.js +16 -0
  189. package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
  190. package/dist/packages/runtime/build/check-evaluator.js +575 -0
  191. package/dist/packages/runtime/build/context-graph-paths.d.ts +51 -0
  192. package/dist/packages/runtime/build/context-graph-paths.js +133 -0
  193. package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
  194. package/dist/packages/runtime/build/context-graph-schema.js +39 -0
  195. package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
  196. package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
  197. package/dist/packages/{engine → runtime}/build/index.d.ts +5 -3
  198. package/dist/packages/{engine → runtime}/build/index.js +5 -3
  199. package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +221 -88
  200. package/dist/packages/{engine → runtime}/build/lib/schema.js +61 -41
  201. package/dist/packages/runtime/build/reset.d.ts +2 -0
  202. package/dist/packages/runtime/build/reset.js +62 -0
  203. package/dist/packages/{engine → runtime}/build/runtime-contracts.js +5 -5
  204. package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
  205. package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
  206. package/dist/packages/{engine → runtime}/build/runtime-paths.js +6 -6
  207. package/dist/packages/{engine → runtime}/build/runtime-prompt.js +7 -6
  208. package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
  209. package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
  210. package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
  211. package/dist/packages/runtime/build/runtime-runs.js +265 -0
  212. package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +6 -6
  213. package/dist/packages/runtime/build/runtime-types.js +1 -0
  214. package/dist/packages/runtime/build/runtime.d.ts +6 -0
  215. package/dist/packages/runtime/build/runtime.js +5 -0
  216. package/dist/packages/runtime/build/source-files.d.ts +58 -0
  217. package/dist/packages/runtime/build/source-files.js +184 -0
  218. package/dist/packages/runtime/build/source-inventory.d.ts +27 -0
  219. package/dist/packages/runtime/build/source-inventory.js +273 -0
  220. package/dist/packages/runtime/build/source-manifest.d.ts +52 -0
  221. package/dist/packages/runtime/build/source-manifest.js +192 -0
  222. package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
  223. package/dist/packages/runtime/build/stage-evidence.js +317 -0
  224. package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
  225. package/dist/packages/runtime/build/stage-reuse.js +142 -0
  226. package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
  227. package/dist/packages/runtime/build/state-artifacts.js +14 -0
  228. package/dist/packages/runtime/build/state-health.d.ts +4 -0
  229. package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
  230. package/dist/packages/runtime/build/state-io.d.ts +12 -0
  231. package/dist/packages/runtime/build/state-io.js +119 -0
  232. package/dist/packages/{engine → runtime}/build/state-paths.d.ts +3 -1
  233. package/dist/packages/runtime/build/state-paths.js +22 -0
  234. package/dist/packages/runtime/build/state-view.d.ts +5 -0
  235. package/dist/packages/{engine → runtime}/build/state-view.js +60 -33
  236. package/dist/packages/runtime/build/state.d.ts +7 -0
  237. package/dist/packages/runtime/build/state.js +12 -0
  238. package/dist/packages/runtime/build/traces.d.ts +30 -0
  239. package/dist/packages/runtime/build/traces.js +133 -0
  240. package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
  241. package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +48 -35
  242. package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
  243. package/dist/packages/{engine → runtime}/build/validate.js +26 -26
  244. package/dist/packages/{engine → runtime}/client.d.ts +15 -15
  245. package/dist/packages/{engine → runtime}/client.js +41 -24
  246. package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
  247. package/dist/packages/{engine → runtime}/connection-config.js +9 -8
  248. package/dist/packages/runtime/context-checks.d.ts +10 -0
  249. package/dist/packages/runtime/context-checks.js +114 -0
  250. package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
  251. package/dist/packages/runtime/context-graph-scaffold.js +134 -0
  252. package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
  253. package/dist/packages/runtime/entitlement-guard.js +70 -0
  254. package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
  255. package/dist/packages/{engine → runtime}/execution/index.js +1 -1
  256. package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +270 -192
  257. package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
  258. package/dist/packages/runtime/index.d.ts +29 -0
  259. package/dist/packages/runtime/index.js +21 -0
  260. package/dist/packages/runtime/instance-paths.d.ts +30 -0
  261. package/dist/packages/runtime/instance-paths.js +29 -0
  262. package/dist/packages/{engine → runtime}/native-run-handlers.d.ts +4 -4
  263. package/dist/packages/{engine → runtime}/native-run-handlers.js +184 -152
  264. package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
  265. package/dist/packages/runtime/plan-artifact-contract.js +42 -0
  266. package/dist/packages/runtime/project-entries.d.ts +11 -0
  267. package/dist/packages/runtime/project-entries.js +49 -0
  268. package/dist/packages/runtime/project-source-state.d.ts +26 -0
  269. package/dist/packages/runtime/project-source-state.js +53 -0
  270. package/dist/packages/runtime/project-store.d.ts +85 -0
  271. package/dist/packages/runtime/project-store.js +168 -0
  272. package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
  273. package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
  274. package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
  275. package/dist/packages/{engine → runtime}/run-observability.js +166 -84
  276. package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
  277. package/dist/packages/runtime/runtime-action-proposals.js +542 -0
  278. package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
  279. package/dist/packages/runtime/runtime-build-plans.js +131 -0
  280. package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
  281. package/dist/packages/runtime/runtime-build-runs.js +562 -0
  282. package/dist/packages/runtime/runtime-caches.d.ts +91 -0
  283. package/dist/packages/{engine → runtime}/runtime-caches.js +77 -49
  284. package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
  285. package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
  286. package/dist/packages/runtime/runtime-executor.d.ts +22 -0
  287. package/dist/packages/runtime/runtime-executor.js +131 -0
  288. package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
  289. package/dist/packages/runtime/runtime-jobs.js +463 -0
  290. package/dist/packages/runtime/runtime-observability.d.ts +11 -0
  291. package/dist/packages/runtime/runtime-observability.js +39 -0
  292. package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
  293. package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
  294. package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
  295. package/dist/packages/runtime/runtime-project-mutations.js +64 -0
  296. package/dist/packages/runtime/runtime-project-reads.d.ts +15 -0
  297. package/dist/packages/runtime/runtime-project-reads.js +381 -0
  298. package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
  299. package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
  300. package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +21 -16
  301. package/dist/packages/{engine → runtime}/runtime-resource-builders.js +48 -38
  302. package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
  303. package/dist/packages/runtime/runtime-verify-runs.js +295 -0
  304. package/dist/packages/runtime/runtime.d.ts +1165 -0
  305. package/dist/packages/runtime/runtime.js +417 -0
  306. package/dist/packages/runtime/schemas/actions.d.ts +1182 -0
  307. package/dist/packages/runtime/schemas/actions.js +117 -0
  308. package/dist/packages/runtime/schemas/agents.d.ts +76 -0
  309. package/dist/packages/runtime/schemas/agents.js +41 -0
  310. package/dist/packages/runtime/schemas/build-plans.d.ts +959 -0
  311. package/dist/packages/runtime/schemas/build-plans.js +107 -0
  312. package/dist/packages/runtime/schemas/files.d.ts +567 -0
  313. package/dist/packages/runtime/schemas/files.js +51 -0
  314. package/dist/packages/runtime/schemas/index.d.ts +8 -0
  315. package/dist/packages/runtime/schemas/index.js +12 -0
  316. package/dist/packages/runtime/schemas/instance.d.ts +141 -0
  317. package/dist/packages/runtime/schemas/instance.js +143 -0
  318. package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
  319. package/dist/packages/runtime/schemas/jobs.js +103 -0
  320. package/dist/packages/runtime/schemas/projects.d.ts +339 -0
  321. package/dist/packages/runtime/schemas/projects.js +136 -0
  322. package/dist/packages/runtime/schemas/runs.d.ts +2676 -0
  323. package/dist/packages/runtime/schemas/runs.js +98 -0
  324. package/dist/packages/runtime/service/index.d.ts +3 -0
  325. package/dist/packages/runtime/service/index.js +3 -0
  326. package/dist/packages/runtime/service/openapi.d.ts +7 -0
  327. package/dist/packages/runtime/service/openapi.js +117 -0
  328. package/dist/packages/runtime/service/operations.d.ts +1490 -0
  329. package/dist/packages/runtime/service/operations.js +245 -0
  330. package/dist/packages/runtime/service/routes.d.ts +106 -0
  331. package/dist/packages/runtime/service/routes.js +120 -0
  332. package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
  333. package/dist/packages/runtime/service/server-api-files.js +85 -0
  334. package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
  335. package/dist/packages/runtime/service/server-app-boot.js +46 -0
  336. package/dist/packages/runtime/service/server-guards.d.ts +63 -0
  337. package/dist/packages/runtime/service/server-guards.js +181 -0
  338. package/dist/packages/runtime/service/server-helpers.d.ts +27 -0
  339. package/dist/packages/runtime/service/server-helpers.js +89 -0
  340. package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
  341. package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
  342. package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
  343. package/dist/packages/runtime/service/server-routes-action-proposals.js +43 -0
  344. package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
  345. package/dist/packages/runtime/service/server-routes-agents.js +198 -0
  346. package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
  347. package/dist/packages/runtime/service/server-routes-auth.js +138 -0
  348. package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
  349. package/dist/packages/runtime/service/server-routes-build-plans.js +83 -0
  350. package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
  351. package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
  352. package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
  353. package/dist/packages/runtime/service/server-routes-events.js +99 -0
  354. package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
  355. package/dist/packages/runtime/service/server-routes-project-context.js +192 -0
  356. package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
  357. package/dist/packages/runtime/service/server-routes-project-jobs.js +130 -0
  358. package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
  359. package/dist/packages/runtime/service/server-routes-project-runs.js +85 -0
  360. package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
  361. package/dist/packages/runtime/service/server-routes-projects.js +92 -0
  362. package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
  363. package/dist/packages/runtime/service/server-routes-runs.js +112 -0
  364. package/dist/packages/runtime/service/server.d.ts +37 -0
  365. package/dist/packages/runtime/service/server.js +300 -0
  366. package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
  367. package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
  368. package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
  369. package/dist/packages/runtime/verify/benchmark-run.js +303 -0
  370. package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
  371. package/dist/packages/{engine → runtime}/verify/index.js +1 -1
  372. package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
  373. package/dist/packages/{engine → runtime}/verify/lib/schema.js +26 -18
  374. package/dist/packages/{engine → runtime}/verify/verify-execution.js +11 -11
  375. package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +4 -4
  376. package/dist/packages/runtime/verify/verify-paths.js +61 -0
  377. package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
  378. package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
  379. package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
  380. package/dist/packages/{engine → runtime}/verify/verify-specs.js +5 -3
  381. package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
  382. package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
  383. package/dist/packages/runtime/verify/verify-types.js +1 -0
  384. package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
  385. package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
  386. package/dist/packages/runtime/wire-schemas.d.ts +18 -0
  387. package/dist/packages/runtime/wire-schemas.js +27 -0
  388. package/package.json +39 -31
  389. package/public-repo/CONTRIBUTING.md +7 -16
  390. package/public-repo/README.md +175 -234
  391. package/public-repo/SECURITY.md +3 -4
  392. package/public-repo/build-plans/interf-default/README.md +19 -14
  393. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +18 -11
  394. package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +12 -5
  395. package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +16 -4
  396. package/public-repo/build-plans/interf-default/build-plan.json +34 -28
  397. package/public-repo/build-plans/interf-default/build-plan.schema.json +54 -32
  398. package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
  399. package/public-repo/build-plans/interf-default/use/query/SKILL.md +17 -11
  400. package/public-repo/openapi/local-service.openapi.json +6803 -0
  401. package/public-repo/skills/interf/SKILL.md +460 -179
  402. package/dist/cli/commands/prep.d.ts +0 -2
  403. package/dist/cli/commands/prep.js +0 -240
  404. package/dist/cli/commands/test.d.ts +0 -10
  405. package/dist/cli/commands/test.js +0 -85
  406. package/dist/cli/commands/web.d.ts +0 -2
  407. package/dist/cli/commands/web.js +0 -286
  408. package/dist/interf-ui/404.html +0 -1
  409. package/dist/interf-ui/__next.__PAGE__.txt +0 -10
  410. package/dist/interf-ui/__next._full.txt +0 -20
  411. package/dist/interf-ui/__next._head.txt +0 -5
  412. package/dist/interf-ui/__next._index.txt +0 -5
  413. package/dist/interf-ui/__next._tree.txt +0 -5
  414. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
  415. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
  416. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
  417. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
  418. package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
  419. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
  420. package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
  421. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
  422. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
  423. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
  424. package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
  425. package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
  426. package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
  427. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
  428. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
  429. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
  430. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
  431. package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
  432. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
  433. package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
  434. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
  435. package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
  436. package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  437. package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  438. package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
  439. package/dist/interf-ui/_not-found/__next._full.txt +0 -15
  440. package/dist/interf-ui/_not-found/__next._head.txt +0 -5
  441. package/dist/interf-ui/_not-found/__next._index.txt +0 -5
  442. package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
  443. package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
  444. package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
  445. package/dist/interf-ui/_not-found.html +0 -1
  446. package/dist/interf-ui/_not-found.txt +0 -15
  447. package/dist/interf-ui/index.html +0 -1
  448. package/dist/interf-ui/index.txt +0 -20
  449. package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
  450. package/dist/packages/contracts/lib/preparation-paths.js +0 -177
  451. package/dist/packages/engine/action-definitions.d.ts +0 -407
  452. package/dist/packages/engine/action-definitions.js +0 -1158
  453. package/dist/packages/engine/action-values.d.ts +0 -1
  454. package/dist/packages/engine/action-values.js +0 -1
  455. package/dist/packages/engine/agents/lib/args.d.ts +0 -4
  456. package/dist/packages/engine/agents/lib/args.js +0 -52
  457. package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
  458. package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
  459. package/dist/packages/engine/agents/lib/constants.js +0 -28
  460. package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
  461. package/dist/packages/engine/agents/lib/schema.js +0 -7
  462. package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
  463. package/dist/packages/engine/agents/lib/shells.js +0 -1052
  464. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
  465. package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
  466. package/dist/packages/engine/build/billing-events.d.ts +0 -89
  467. package/dist/packages/engine/build/build-pipeline.js +0 -175
  468. package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
  469. package/dist/packages/engine/build/build-plan-runs.js +0 -31
  470. package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
  471. package/dist/packages/engine/build/build-stage-runner.js +0 -94
  472. package/dist/packages/engine/build/build-target.js +0 -16
  473. package/dist/packages/engine/build/check-evaluator.js +0 -298
  474. package/dist/packages/engine/build/reset.d.ts +0 -2
  475. package/dist/packages/engine/build/reset.js +0 -74
  476. package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
  477. package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
  478. package/dist/packages/engine/build/runtime-runs.js +0 -224
  479. package/dist/packages/engine/build/runtime.d.ts +0 -5
  480. package/dist/packages/engine/build/runtime.js +0 -4
  481. package/dist/packages/engine/build/source-files.d.ts +0 -46
  482. package/dist/packages/engine/build/source-files.js +0 -149
  483. package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
  484. package/dist/packages/engine/build/state-artifacts.js +0 -14
  485. package/dist/packages/engine/build/state-health.d.ts +0 -4
  486. package/dist/packages/engine/build/state-io.d.ts +0 -11
  487. package/dist/packages/engine/build/state-io.js +0 -82
  488. package/dist/packages/engine/build/state-paths.js +0 -16
  489. package/dist/packages/engine/build/state-view.d.ts +0 -5
  490. package/dist/packages/engine/build/state.d.ts +0 -7
  491. package/dist/packages/engine/build/state.js +0 -12
  492. package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
  493. package/dist/packages/engine/build/validate-helpers.js +0 -41
  494. package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
  495. package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
  496. package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
  497. package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
  498. package/dist/packages/engine/cloud-seams.d.ts +0 -115
  499. package/dist/packages/engine/cloud-seams.js +0 -84
  500. package/dist/packages/engine/index.d.ts +0 -22
  501. package/dist/packages/engine/index.js +0 -15
  502. package/dist/packages/engine/instance-paths.d.ts +0 -106
  503. package/dist/packages/engine/instance-paths.js +0 -171
  504. package/dist/packages/engine/lib/schema.d.ts +0 -6304
  505. package/dist/packages/engine/lib/schema.js +0 -730
  506. package/dist/packages/engine/preparation-store.d.ts +0 -105
  507. package/dist/packages/engine/preparation-store.js +0 -213
  508. package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
  509. package/dist/packages/engine/readiness-check-draft.js +0 -111
  510. package/dist/packages/engine/requested-artifacts.d.ts +0 -5
  511. package/dist/packages/engine/routes.d.ts +0 -85
  512. package/dist/packages/engine/routes.js +0 -99
  513. package/dist/packages/engine/runtime-caches.d.ts +0 -76
  514. package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
  515. package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
  516. package/dist/packages/engine/runtime.d.ts +0 -371
  517. package/dist/packages/engine/runtime.js +0 -2463
  518. package/dist/packages/engine/server.d.ts +0 -58
  519. package/dist/packages/engine/server.js +0 -1399
  520. package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
  521. package/dist/packages/engine/verify/readiness-check-run.js +0 -265
  522. package/dist/packages/engine/verify/verify-paths.js +0 -61
  523. package/dist/packages/engine/verify/verify-sandbox.js +0 -88
  524. package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
  525. package/dist/packages/engine/wire-schemas.d.ts +0 -547
  526. package/dist/packages/engine/wire-schemas.js +0 -59
  527. package/dist/packages/project/index.d.ts +0 -9
  528. package/dist/packages/project/interf-bootstrap.d.ts +0 -1
  529. package/dist/packages/project/interf-bootstrap.js +0 -1
  530. package/dist/packages/project/interf-scaffold.d.ts +0 -3
  531. package/dist/packages/project/interf-scaffold.js +0 -136
  532. package/dist/packages/project/interf.d.ts +0 -4
  533. package/dist/packages/project/interf.js +0 -3
  534. package/dist/packages/project/lib/schema.d.ts +0 -328
  535. package/dist/packages/project/lib/schema.js +0 -136
  536. package/dist/packages/project/preparation-entries.d.ts +0 -11
  537. package/dist/packages/project/preparation-entries.js +0 -49
  538. package/dist/packages/project/source-config.d.ts +0 -46
  539. package/dist/packages/project/source-config.js +0 -394
  540. package/dist/packages/project/source-folders.d.ts +0 -11
  541. package/public-repo/plugins/README.md +0 -9
  542. package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
  543. package/public-repo/plugins/interf/.mcp.json +0 -12
  544. package/public-repo/plugins/interf/README.md +0 -32
  545. package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
  546. /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
  547. /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
  548. /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
  549. /package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +0 -0
  550. /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
  551. /package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +0 -0
  552. /package/dist/packages/{engine → runtime}/agents/lib/executors.js +0 -0
  553. /package/dist/packages/{engine → runtime}/agents/lib/logs.d.ts +0 -0
  554. /package/dist/packages/{engine → runtime}/agents/lib/logs.js +0 -0
  555. /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
  556. /package/dist/packages/{engine → runtime}/agents/lib/render.d.ts +0 -0
  557. /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
  558. /package/dist/packages/{engine → runtime}/agents/lib/status.js +0 -0
  559. /package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +0 -0
  560. /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
  561. /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
  562. /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
  563. /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
  564. /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
  565. /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
  566. /package/dist/packages/{engine → runtime}/build/runtime-paths.d.ts +0 -0
  567. /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
  568. /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
  569. /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
  570. /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
  571. /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
  572. /package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +0 -0
  573. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
  574. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
  575. /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
@@ -0,0 +1,463 @@
1
+ import { mkdirSync } from "node:fs";
2
+ import { asProjectDataDir, projectBuildPlanPackagePath, } from "../contracts/lib/project-paths.js";
3
+ import { createRunEventId, createRunEventTimestamp, } from "./execution/events.js";
4
+ import { byCreatedAtDesc, listJsonFiles, localJobPath, localJobsRoot, readLocalJobRunAt, writeJsonFile, } from "./runtime-persistence.js";
5
+ import { applyEventToLocalJob, } from "./runtime-event-applier.js";
6
+ import { createRunId } from "./runtime-resource-builders.js";
7
+ import { upsertProjectConfig, findProjectConfig, loadSourceFolderConfig, writeBenchmarkSpecsForProject, } from "../projects/source-config.js";
8
+ import { BuildPlanAuthoringRuntimeRequestSchema, BuildPlanAuthoringResultSchema, LocalJobEventAppendRequestSchema, LocalJobRunCreateRequestSchema, LocalJobRunResourceSchema, BenchmarkQuestionDraftRuntimeRequestSchema, BenchmarkQuestionDraftResultSchema, } from "./schemas/index.js";
9
+ import { artifactRequirementsForPlanAuthoring, requestedArtifactsForPlanAuthoring, } from "./plan-artifact-contract.js";
10
+ const INTERRUPTED_JOB_RUN_MESSAGE = "Job interrupted because the local service stopped before the job reached a terminal state.";
11
+ function isTerminalJobStatus(status) {
12
+ return status === "succeeded" || status === "failed" || status === "cancelled";
13
+ }
14
+ export function listJobs(projectDataDir) {
15
+ return byCreatedAtDesc(listJsonFiles(localJobsRoot(projectDataDir))
16
+ .map(readLocalJobRunAt)
17
+ .filter((run) => run !== null));
18
+ }
19
+ export function getJob(projectDataDir, runId) {
20
+ return listJobs(projectDataDir).find((run) => run.run_id === runId) ?? null;
21
+ }
22
+ export function getJobEvents(projectDataDir, runId) {
23
+ return getJob(projectDataDir, runId)?.events ?? null;
24
+ }
25
+ export function createJobRun(runtime, projectDataDir, requestValue) {
26
+ const request = LocalJobRunCreateRequestSchema.parse(requestValue);
27
+ const runId = createRunId("job");
28
+ const now = new Date().toISOString();
29
+ const run = LocalJobRunResourceSchema.parse({
30
+ kind: "interf-local-job-run",
31
+ version: 1,
32
+ run_id: runId,
33
+ job_type: request.job_type,
34
+ status: "running",
35
+ title: request.title,
36
+ ...(request.project !== undefined ? { project: request.project } : {}),
37
+ ...(request.build_plan !== undefined ? { build_plan: request.build_plan } : {}),
38
+ ...(request.source_path !== undefined ? { source_path: request.source_path } : {}),
39
+ ...(request.output_path !== undefined ? { output_path: request.output_path } : {}),
40
+ ...(request.agent !== undefined ? { agent: request.agent } : {}),
41
+ created_at: now,
42
+ started_at: now,
43
+ steps: request.steps.map((step) => ({
44
+ ...step,
45
+ status: "queued",
46
+ })),
47
+ events: [
48
+ {
49
+ type: "job.started",
50
+ event_id: createRunEventId("event"),
51
+ run_id: runId,
52
+ timestamp: now,
53
+ message: request.title,
54
+ },
55
+ ],
56
+ });
57
+ writeJobRun(runtime, projectDataDir, run);
58
+ return run;
59
+ }
60
+ export function appendJobRunEvent(runtime, projectDataDir, runId, requestValue) {
61
+ const request = LocalJobEventAppendRequestSchema.parse(requestValue);
62
+ const current = getJob(projectDataDir, runId);
63
+ if (!current)
64
+ return null;
65
+ if (isTerminalJobStatus(current.status))
66
+ return current;
67
+ const event = {
68
+ type: request.type,
69
+ event_id: createRunEventId("event"),
70
+ run_id: runId,
71
+ timestamp: new Date().toISOString(),
72
+ ...(request.step_id ? { step_id: request.step_id } : {}),
73
+ ...(request.message ? { message: request.message } : {}),
74
+ ...(request.artifact ? { artifact: request.artifact } : {}),
75
+ ...(request.input ? { input: request.input } : {}),
76
+ ...(request.output ? { output: request.output } : {}),
77
+ };
78
+ const next = LocalJobRunResourceSchema.parse(applyEventToLocalJob(current, event));
79
+ writeJobRun(runtime, projectDataDir, next);
80
+ return next;
81
+ }
82
+ export async function createBenchmarkQuestionDraftRun(runtime, projectDataDir, requestValue) {
83
+ const request = BenchmarkQuestionDraftRuntimeRequestSchema.parse(requestValue);
84
+ const job = createJobRun(runtime, projectDataDir, {
85
+ job_type: "benchmark-question-draft",
86
+ title: `Draft benchmark questions for ${request.project}`,
87
+ project: request.project,
88
+ source_path: request.source_folder_path,
89
+ steps: [
90
+ {
91
+ id: "read-source",
92
+ label: "Prepare Source locator",
93
+ input: {
94
+ project: request.project,
95
+ source_folder_path: request.source_folder_path,
96
+ },
97
+ },
98
+ {
99
+ id: "agent-draft",
100
+ label: "Draft benchmark questions",
101
+ input: {
102
+ intent: request.intent ?? null,
103
+ target_count: request.target_count,
104
+ },
105
+ },
106
+ {
107
+ id: "normalize-checks",
108
+ label: "Normalize saved benchmark checks",
109
+ },
110
+ ],
111
+ });
112
+ appendJobRunEvent(runtime, projectDataDir, job.run_id, {
113
+ type: "step.started",
114
+ step_id: "read-source",
115
+ message: "Preparing Source locator for benchmark drafting.",
116
+ input: {
117
+ project: request.project,
118
+ source_folder_path: request.source_folder_path,
119
+ },
120
+ });
121
+ appendJobRunEvent(runtime, projectDataDir, job.run_id, {
122
+ type: "step.completed",
123
+ step_id: "read-source",
124
+ message: "Source locator is ready for the drafting agent.",
125
+ output: {
126
+ project: request.project,
127
+ source_folder_path: request.source_folder_path,
128
+ },
129
+ });
130
+ appendJobRunEvent(runtime, projectDataDir, job.run_id, {
131
+ type: "step.started",
132
+ step_id: "agent-draft",
133
+ message: "Drafting saved benchmark questions from agent-visible Source.",
134
+ input: {
135
+ intent: request.intent ?? null,
136
+ target_count: request.target_count,
137
+ },
138
+ });
139
+ void runBenchmarkQuestionDraftInBackground(runtime, projectDataDir, request, job.run_id);
140
+ return getJob(projectDataDir, job.run_id) ?? job;
141
+ }
142
+ export async function createBuildPlanAuthoringRun(runtime, projectDataDir, requestValue, jobType = "build-plan-draft") {
143
+ const parsedRequest = BuildPlanAuthoringRuntimeRequestSchema.parse(requestValue);
144
+ const savedProject = parsedRequest.project
145
+ ? findProjectConfig(loadSourceFolderConfig(projectDataDir), parsedRequest.project)
146
+ : null;
147
+ const requestedArtifacts = requestedArtifactsForPlanAuthoring({
148
+ projectDataDir,
149
+ projectConfig: savedProject,
150
+ explicitRequestedArtifacts: parsedRequest.requested_artifacts,
151
+ });
152
+ const request = {
153
+ ...parsedRequest,
154
+ checks: parsedRequest.checks ?? parsedRequest.context_checks ?? [],
155
+ requested_artifacts: requestedArtifacts,
156
+ artifact_requirements: artifactRequirementsForPlanAuthoring({
157
+ projectDataDir,
158
+ projectConfig: savedProject,
159
+ requestedArtifacts,
160
+ explicitArtifactRequirements: parsedRequest.artifact_requirements,
161
+ }),
162
+ source_context: parsedRequest.source_context ?? null,
163
+ };
164
+ const isImprovement = jobType === "build-plan-improvement";
165
+ const job = createJobRun(runtime, projectDataDir, {
166
+ job_type: jobType,
167
+ title: isImprovement ? `Improve Build Plan ${request.build_plan_id}` : `Draft Build Plan ${request.build_plan_id}`,
168
+ project: request.project ?? null,
169
+ build_plan: request.build_plan_id,
170
+ source_path: request.source_folder_path,
171
+ output_path: projectBuildPlanPackagePath(asProjectDataDir(projectDataDir), request.build_plan_id),
172
+ steps: [
173
+ {
174
+ id: "inspect-source",
175
+ label: "Prepare Source locator",
176
+ input: {
177
+ project: request.project ?? null,
178
+ source_folder_path: request.source_folder_path,
179
+ checks: request.checks.length,
180
+ requested_artifacts: request.requested_artifacts.length,
181
+ source_context: request.source_context ? "provided" : "none",
182
+ },
183
+ },
184
+ {
185
+ id: "draft-package",
186
+ label: isImprovement ? "Improve Build Plan definition" : "Draft Build Plan definition",
187
+ input: {
188
+ build_plan_id: request.build_plan_id,
189
+ label: request.label,
190
+ intent: request.intent,
191
+ requested_artifacts: request.requested_artifacts.length,
192
+ artifact_requirements: request.artifact_requirements.length,
193
+ },
194
+ },
195
+ {
196
+ id: "validate-package",
197
+ label: "Validate Build Plan definition",
198
+ input: {
199
+ build_plan_id: request.build_plan_id,
200
+ },
201
+ },
202
+ ],
203
+ });
204
+ appendJobRunEvent(runtime, projectDataDir, job.run_id, {
205
+ type: "step.started",
206
+ step_id: "inspect-source",
207
+ message: isImprovement ? "Preparing Source locator for Build Plan improvement." : "Preparing Source locator for Build Plan drafting.",
208
+ input: {
209
+ project: request.project ?? null,
210
+ source_folder_path: request.source_folder_path,
211
+ checks: request.checks.length,
212
+ requested_artifacts: request.requested_artifacts.length,
213
+ source_context: request.source_context ? "provided" : "none",
214
+ },
215
+ });
216
+ appendJobRunEvent(runtime, projectDataDir, job.run_id, {
217
+ type: "step.completed",
218
+ step_id: "inspect-source",
219
+ message: "Source context is ready.",
220
+ output: {
221
+ source_folder_path: request.source_folder_path,
222
+ checks: request.checks.length,
223
+ requested_artifacts: request.requested_artifacts.length,
224
+ },
225
+ });
226
+ appendJobRunEvent(runtime, projectDataDir, job.run_id, {
227
+ type: "step.started",
228
+ step_id: "draft-package",
229
+ message: isImprovement ? "Improving Build Plan definition." : "Drafting Build Plan definition.",
230
+ input: {
231
+ build_plan_id: request.build_plan_id,
232
+ label: request.label,
233
+ intent: request.intent,
234
+ requested_artifacts: request.requested_artifacts.length,
235
+ artifact_requirements: request.artifact_requirements.length,
236
+ },
237
+ });
238
+ void runBuildPlanAuthoringInBackground(runtime, projectDataDir, request, job.run_id);
239
+ return getJob(projectDataDir, job.run_id) ?? job;
240
+ }
241
+ async function runBenchmarkQuestionDraftInBackground(runtime, projectDataDir, request, runId) {
242
+ runtime.beginActiveJobRun(runId);
243
+ runtime.beginActiveRun();
244
+ return runBenchmarkQuestionDraftInBackgroundInner(runtime, projectDataDir, request, runId).finally(() => {
245
+ runtime.endActiveRun();
246
+ runtime.endActiveJobRun(runId);
247
+ });
248
+ }
249
+ async function runBenchmarkQuestionDraftInBackgroundInner(runtime, projectDataDir, request, runId) {
250
+ try {
251
+ if (!runtime.handlers.createBenchmarkQuestionDraft) {
252
+ throw new Error("No benchmark-question-draft handler is configured for this local service.");
253
+ }
254
+ const result = BenchmarkQuestionDraftResultSchema.parse(await runtime.handlers.createBenchmarkQuestionDraft(request, jobRunContext(runtime, projectDataDir, runId)));
255
+ const specPaths = writeBenchmarkSpecsForProject({
256
+ projectDataDir,
257
+ projectName: request.project,
258
+ checks: result.checks,
259
+ description: request.intent ?? `Saved benchmark checks for Project ${request.project}.`,
260
+ });
261
+ appendJobRunEvent(runtime, projectDataDir, runId, {
262
+ type: "step.completed",
263
+ step_id: "agent-draft",
264
+ message: `Drafted ${result.checks.length} benchmark checks.`,
265
+ output: {
266
+ checks: result.checks,
267
+ },
268
+ });
269
+ appendJobRunEvent(runtime, projectDataDir, runId, {
270
+ type: "step.started",
271
+ step_id: "normalize-checks",
272
+ message: "Normalizing drafted benchmark questions into saved check records.",
273
+ input: {
274
+ checks: result.checks.length,
275
+ },
276
+ });
277
+ appendJobRunEvent(runtime, projectDataDir, runId, {
278
+ type: "step.completed",
279
+ step_id: "normalize-checks",
280
+ message: `${result.checks.length} benchmark checks ready for review.`,
281
+ output: {
282
+ checks: result.checks.length,
283
+ spec_paths: specPaths,
284
+ },
285
+ });
286
+ setJobRunResult(runtime, projectDataDir, runId, { ...result, spec_paths: specPaths });
287
+ appendJobRunEvent(runtime, projectDataDir, runId, {
288
+ type: "job.completed",
289
+ message: `Drafted ${result.checks.length} benchmark checks.`,
290
+ });
291
+ }
292
+ catch (error) {
293
+ const message = error instanceof Error ? error.message : String(error);
294
+ appendJobRunEvent(runtime, projectDataDir, runId, {
295
+ type: "step.failed",
296
+ step_id: "agent-draft",
297
+ message,
298
+ output: {
299
+ error: message,
300
+ },
301
+ });
302
+ appendJobRunEvent(runtime, projectDataDir, runId, {
303
+ type: "job.failed",
304
+ message,
305
+ });
306
+ }
307
+ }
308
+ async function runBuildPlanAuthoringInBackground(runtime, projectDataDir, request, runId) {
309
+ runtime.beginActiveJobRun(runId);
310
+ runtime.beginActiveRun();
311
+ return runBuildPlanAuthoringInBackgroundInner(runtime, projectDataDir, request, runId).finally(() => {
312
+ runtime.endActiveRun();
313
+ runtime.endActiveJobRun(runId);
314
+ });
315
+ }
316
+ async function runBuildPlanAuthoringInBackgroundInner(runtime, projectDataDir, request, runId) {
317
+ try {
318
+ if (!runtime.handlers.createBuildPlanAuthoringRun) {
319
+ throw new Error("No Build Plan-authoring handler is configured for this local service.");
320
+ }
321
+ const result = BuildPlanAuthoringResultSchema.parse(await runtime.handlers.createBuildPlanAuthoringRun(request, jobRunContext(runtime, projectDataDir, runId)));
322
+ setJobRunResult(runtime, projectDataDir, runId, result);
323
+ appendJobRunEvent(runtime, projectDataDir, runId, {
324
+ type: result.status === "executor-failed" ? "step.failed" : "step.completed",
325
+ step_id: "draft-package",
326
+ message: result.summary,
327
+ output: {
328
+ status: result.status,
329
+ changed: result.changed,
330
+ build_plan_path: result.build_plan_path,
331
+ shell_path: result.shell_path,
332
+ },
333
+ });
334
+ appendJobRunEvent(runtime, projectDataDir, runId, {
335
+ type: "step.started",
336
+ step_id: "validate-package",
337
+ message: "Validating Build Plan package structure and stage contract.",
338
+ input: {
339
+ build_plan_path: result.build_plan_path,
340
+ },
341
+ });
342
+ if (result.status === "updated" || result.status === "no-change") {
343
+ let selectedProject = null;
344
+ if (request.project) {
345
+ const selected = runtime.resolveProjectConfig(projectDataDir, request.project, {
346
+ build_plan: request.build_plan_id,
347
+ });
348
+ upsertProjectConfig(projectDataDir, selected);
349
+ runtime.readinessCache.invalidateProject(projectDataDir, selected.name);
350
+ runtime.buildRunCache.invalidateProject(projectDataDir, selected.name);
351
+ runtime.verifyRunCache.invalidateProject(projectDataDir, selected.name);
352
+ runtime.buildPlanListingCache.invalidate(projectDataDir);
353
+ selectedProject = selected.name;
354
+ }
355
+ appendJobRunEvent(runtime, projectDataDir, runId, {
356
+ type: "step.completed",
357
+ step_id: "validate-package",
358
+ message: selectedProject
359
+ ? `${result.summary} Selected Build Plan ${request.build_plan_id} for Project ${selectedProject}.`
360
+ : result.summary,
361
+ output: {
362
+ status: result.status,
363
+ validation: result.validation ?? null,
364
+ selected_project: selectedProject,
365
+ },
366
+ });
367
+ appendJobRunEvent(runtime, projectDataDir, runId, {
368
+ type: "job.completed",
369
+ message: selectedProject
370
+ ? `${result.summary} Selected Build Plan ${request.build_plan_id} for Project ${selectedProject}.`
371
+ : result.summary,
372
+ });
373
+ }
374
+ else {
375
+ appendJobRunEvent(runtime, projectDataDir, runId, {
376
+ type: "step.failed",
377
+ step_id: "validate-package",
378
+ message: result.summary,
379
+ output: {
380
+ status: result.status,
381
+ validation: result.validation ?? null,
382
+ },
383
+ });
384
+ appendJobRunEvent(runtime, projectDataDir, runId, {
385
+ type: "job.failed",
386
+ message: result.summary,
387
+ });
388
+ }
389
+ }
390
+ catch (error) {
391
+ const message = error instanceof Error ? error.message : String(error);
392
+ appendJobRunEvent(runtime, projectDataDir, runId, {
393
+ type: "step.failed",
394
+ step_id: "draft-package",
395
+ message,
396
+ output: {
397
+ error: message,
398
+ },
399
+ });
400
+ appendJobRunEvent(runtime, projectDataDir, runId, {
401
+ type: "job.failed",
402
+ message,
403
+ });
404
+ }
405
+ }
406
+ export function jobRunContext(runtime, projectDataDir, runId) {
407
+ return {
408
+ runId,
409
+ sourcePath: projectDataDir,
410
+ emit: (event) => {
411
+ appendJobRunEvent(runtime, projectDataDir, runId, event);
412
+ },
413
+ };
414
+ }
415
+ export function writeJobRun(runtime, projectDataDir, run) {
416
+ mkdirSync(localJobsRoot(projectDataDir), { recursive: true });
417
+ writeJsonFile(localJobPath(projectDataDir, run.run_id), LocalJobRunResourceSchema.parse(run));
418
+ if (run.project) {
419
+ // Some job runs (benchmark-question drafts) flip readiness state.
420
+ runtime.readinessCache.invalidateProject(projectDataDir, run.project);
421
+ }
422
+ }
423
+ export function setJobRunResult(runtime, projectDataDir, runId, result) {
424
+ const current = getJob(projectDataDir, runId);
425
+ if (!current)
426
+ return;
427
+ if (isTerminalJobStatus(current.status))
428
+ return;
429
+ const normalizedResult = result && typeof result === "object" && !Array.isArray(result)
430
+ ? result
431
+ : { value: result };
432
+ writeJobRun(runtime, projectDataDir, LocalJobRunResourceSchema.parse({
433
+ ...current,
434
+ result: normalizedResult,
435
+ }));
436
+ }
437
+ export function finalizeInterruptedJobRuns(runtime, projectDataDir) {
438
+ for (const run of listJobs(projectDataDir)) {
439
+ if (isTerminalJobStatus(run.status) || runtime.activeJobRuns.has(run.run_id))
440
+ continue;
441
+ const timestamp = createRunEventTimestamp();
442
+ const interruptedRun = LocalJobRunResourceSchema.parse({
443
+ ...run,
444
+ steps: run.steps.map((step) => {
445
+ if (step.status !== "running")
446
+ return step;
447
+ return {
448
+ ...step,
449
+ status: "failed",
450
+ finished_at: step.finished_at ?? timestamp,
451
+ summary: step.summary ?? INTERRUPTED_JOB_RUN_MESSAGE,
452
+ };
453
+ }),
454
+ });
455
+ writeJobRun(runtime, projectDataDir, applyEventToLocalJob(interruptedRun, {
456
+ type: "job.failed",
457
+ event_id: createRunEventId("event"),
458
+ run_id: run.run_id,
459
+ timestamp,
460
+ message: INTERRUPTED_JOB_RUN_MESSAGE,
461
+ }));
462
+ }
463
+ }
@@ -0,0 +1,11 @@
1
+ import type { RunObservabilityResource } from "./schemas/index.js";
2
+ import type { LocalServiceRuntime } from "./runtime.js";
3
+ export declare function listRunObservability(runtime: LocalServiceRuntime, projectDataDir: string): RunObservabilityResource[];
4
+ export declare function getRunObservability(runtime: LocalServiceRuntime, projectDataDir: string, runId: string): RunObservabilityResource | null;
5
+ /**
6
+ * Build Plan Activity runs: every Build Plan draft or improvement job whose
7
+ * Build Plan id matches `buildPlanId`. Surfaced through
8
+ * `GET /v1/build-plans/<id>/runs` so Build Plan detail can show the full
9
+ * audit trail of authoring + improvement work.
10
+ */
11
+ export declare function listBuildPlanRuns(runtime: LocalServiceRuntime, projectDataDir: string, buildPlanId: string): RunObservabilityResource[];
@@ -0,0 +1,39 @@
1
+ import { buildRunToObservability, jobRunToObservability, verifyRunToObservability, } from "./run-observability.js";
2
+ import { timestampKey } from "./runtime-persistence.js";
3
+ import { listBuildRuns } from "./runtime-build-runs.js";
4
+ import { listVerifyRuns } from "./runtime-verify-runs.js";
5
+ import { listJobs } from "./runtime-jobs.js";
6
+ import { getReadiness } from "./runtime-project-reads.js";
7
+ export function listRunObservability(runtime, projectDataDir) {
8
+ return [
9
+ ...listBuildRuns(runtime, projectDataDir).map((resource) => buildRunToObservability({
10
+ ...resource.run,
11
+ readiness: getReadiness(runtime, projectDataDir, resource.run.project),
12
+ })),
13
+ ...listVerifyRuns(runtime, projectDataDir)
14
+ .filter((run) => !run.parent_run_id)
15
+ .map(verifyRunToObservability),
16
+ ...listJobs(projectDataDir).map(jobRunToObservability),
17
+ ].sort((left, right) => {
18
+ const leftTime = timestampKey(left.started_at ?? left.created_at ?? left.finished_at);
19
+ const rightTime = timestampKey(right.started_at ?? right.created_at ?? right.finished_at);
20
+ return rightTime - leftTime;
21
+ });
22
+ }
23
+ export function getRunObservability(runtime, projectDataDir, runId) {
24
+ return listRunObservability(runtime, projectDataDir).find((run) => run.run_id === runId) ?? null;
25
+ }
26
+ /**
27
+ * Build Plan Activity runs: every Build Plan draft or improvement job whose
28
+ * Build Plan id matches `buildPlanId`. Surfaced through
29
+ * `GET /v1/build-plans/<id>/runs` so Build Plan detail can show the full
30
+ * audit trail of authoring + improvement work.
31
+ */
32
+ export function listBuildPlanRuns(runtime, projectDataDir, buildPlanId) {
33
+ return listRunObservability(runtime, projectDataDir).filter((run) => {
34
+ if (run.build_plan !== buildPlanId)
35
+ return false;
36
+ return (run.run_type === "build-plan-draft" ||
37
+ run.run_type === "build-plan-improvement");
38
+ });
39
+ }
@@ -1,38 +1,29 @@
1
1
  import { type BuildRun } from "./execution/lib/schema.js";
2
- import { type RuntimeRun } from "./build/lib/schema.js";
3
- import { type ActionProposalResource, type LocalJobRunResource, type VerifyRunResource } from "./lib/schema.js";
4
- export declare function buildRunsRoot(verifiableContextPath: string): string;
5
- export declare function buildRunPath(verifiableContextPath: string, runId: string): string;
6
- export declare function verifyRunsRoot(verifiableContextPath: string): string;
7
- export declare function verifyRunPath(verifiableContextPath: string, runId: string): string;
2
+ import { type ExecutionStageLedger } from "./build/lib/schema.js";
3
+ import { type ActionProposalResource, type LocalJobRunResource, type VerifyRunResource } from "./schemas/index.js";
4
+ export declare function projectBuildRunsRoot(projectDataDir: string): string;
5
+ export declare function projectBuildRunPath(projectDataDir: string, runId: string): string;
6
+ export declare function verifyRunsRoot(contextGraphPath: string): string;
7
+ export declare function verifyRunPath(contextGraphPath: string, runId: string): string;
8
8
  export declare function localJobsRoot(rootPath: string): string;
9
9
  export declare function localJobPath(rootPath: string, runId: string): string;
10
10
  export declare function actionProposalsRoot(rootPath: string): string;
11
11
  export declare function actionProposalPath(rootPath: string, proposalId: string): string;
12
- export declare function readJsonFile(filePath: string): unknown | null;
13
12
  export declare function writeJsonFile(filePath: string, value: unknown): void;
14
- export declare function readJsonOrNull<T>(filePath: string, schema: {
15
- safeParse(value: unknown): {
16
- success: true;
17
- data: T;
18
- } | {
19
- success: false;
20
- };
21
- }): T | null;
22
13
  export declare function listJsonFiles(dirPath: string): string[];
23
14
  export declare function readBuildRunAt(filePath: string): BuildRun | null;
24
15
  export declare function readVerifyRunAt(filePath: string): VerifyRunResource | null;
25
16
  export declare function readLocalJobRunAt(filePath: string): LocalJobRunResource | null;
26
17
  export declare function readActionProposalAt(filePath: string): ActionProposalResource | null;
27
18
  /**
28
- * Read the per-stage runtime-run history NDJSON. Each line is a `RuntimeRun`
19
+ * Read the per-stage runtime-run history NDJSON. Each line is a `ExecutionStageLedger`
29
20
  * record; lines that fail to parse are silently skipped so the runtime can
30
21
  * tolerate a partially-written tail without crashing.
31
22
  */
32
- export declare function readRuntimeRunHistory(verifiableContextPath: string): RuntimeRun[];
23
+ export declare function readExecutionStageLedgerHistory(contextGraphPath: string): ExecutionStageLedger[];
33
24
  /**
34
25
  * Sort items newest-first using `started_at` (with a `finished_at` fallback).
35
- * Used for build/test run lists where the canonical order is by activity
26
+ * Used for Build/benchmark run lists where the canonical order is by activity
36
27
  * window, not by record-creation time.
37
28
  */
38
29
  export declare function newestFirst<T extends {
@@ -5,40 +5,41 @@
5
5
  * no shared state. Every other runtime module composes on top of this layer
6
6
  * so the runtime coordinator stays small.
7
7
  */
8
- import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync, } from "node:fs";
9
- import { dirname, join } from "node:path";
8
+ import { existsSync, readdirSync, readFileSync, statSync, } from "node:fs";
9
+ import { join } from "node:path";
10
10
  import { BuildRunSchema, } from "./execution/lib/schema.js";
11
- import { verifiableContextRuntimeRunHistoryPath, verifiableContextRuntimeRoot, testRootForVerifiableContext, } from "./build/verifiable-context-paths.js";
12
- import { RuntimeRunSchema, } from "./build/lib/schema.js";
13
- import { asPreparationDataDir, preparationServiceActionProposalsRoot, preparationServiceJobsRoot, } from "../contracts/lib/preparation-paths.js";
14
- import { ActionProposalResourceSchema, LocalJobRunResourceSchema, VerifyRunResourceSchema, } from "./lib/schema.js";
11
+ import { contextGraphExecutionStageLedgerHistoryPath, testRootForContextGraph, } from "./build/context-graph-paths.js";
12
+ import { ExecutionStageLedgerSchema, } from "./build/lib/schema.js";
13
+ import { asProjectDataDir, projectServiceBuildRunsRoot, projectServiceActionProposalsRoot, projectServiceJobsRoot, } from "../contracts/lib/project-paths.js";
14
+ import { ActionProposalResourceSchema, LocalJobRunResourceSchema, VerifyRunResourceSchema, } from "./schemas/index.js";
15
+ import { writeJsonAtomic } from "./build/atomic-fs.js";
15
16
  // ---- Path helpers --------------------------------------------------------
16
- export function buildRunsRoot(verifiableContextPath) {
17
- return join(verifiableContextRuntimeRoot(verifiableContextPath), "build-runs");
17
+ export function projectBuildRunsRoot(projectDataDir) {
18
+ return projectServiceBuildRunsRoot(asProjectDataDir(projectDataDir));
18
19
  }
19
- export function buildRunPath(verifiableContextPath, runId) {
20
- return join(buildRunsRoot(verifiableContextPath), `${runId}.json`);
20
+ export function projectBuildRunPath(projectDataDir, runId) {
21
+ return join(projectBuildRunsRoot(projectDataDir), `${runId}.json`);
21
22
  }
22
- export function verifyRunsRoot(verifiableContextPath) {
23
- return join(testRootForVerifiableContext(verifiableContextPath), "service-runs");
23
+ export function verifyRunsRoot(contextGraphPath) {
24
+ return join(testRootForContextGraph(contextGraphPath), "service-runs");
24
25
  }
25
- export function verifyRunPath(verifiableContextPath, runId) {
26
- return join(verifyRunsRoot(verifiableContextPath), `${runId}.json`);
26
+ export function verifyRunPath(contextGraphPath, runId) {
27
+ return join(verifyRunsRoot(contextGraphPath), `${runId}.json`);
27
28
  }
28
29
  export function localJobsRoot(rootPath) {
29
- return preparationServiceJobsRoot(asPreparationDataDir(rootPath));
30
+ return projectServiceJobsRoot(asProjectDataDir(rootPath));
30
31
  }
31
32
  export function localJobPath(rootPath, runId) {
32
33
  return join(localJobsRoot(rootPath), `${runId}.json`);
33
34
  }
34
35
  export function actionProposalsRoot(rootPath) {
35
- return preparationServiceActionProposalsRoot(asPreparationDataDir(rootPath));
36
+ return projectServiceActionProposalsRoot(asProjectDataDir(rootPath));
36
37
  }
37
38
  export function actionProposalPath(rootPath, proposalId) {
38
39
  return join(actionProposalsRoot(rootPath), `${proposalId}.json`);
39
40
  }
40
41
  // ---- JSON IO -------------------------------------------------------------
41
- export function readJsonFile(filePath) {
42
+ function readJsonFile(filePath) {
42
43
  try {
43
44
  return JSON.parse(readFileSync(filePath, "utf8"));
44
45
  }
@@ -47,10 +48,9 @@ export function readJsonFile(filePath) {
47
48
  }
48
49
  }
49
50
  export function writeJsonFile(filePath, value) {
50
- mkdirSync(dirname(filePath), { recursive: true });
51
- writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`);
51
+ writeJsonAtomic(filePath, value);
52
52
  }
53
- export function readJsonOrNull(filePath, schema) {
53
+ function readJsonOrNull(filePath, schema) {
54
54
  const raw = readJsonFile(filePath);
55
55
  if (raw === null)
56
56
  return null;
@@ -85,12 +85,12 @@ export function readActionProposalAt(filePath) {
85
85
  return readJsonOrNull(filePath, ActionProposalResourceSchema);
86
86
  }
87
87
  /**
88
- * Read the per-stage runtime-run history NDJSON. Each line is a `RuntimeRun`
88
+ * Read the per-stage runtime-run history NDJSON. Each line is a `ExecutionStageLedger`
89
89
  * record; lines that fail to parse are silently skipped so the runtime can
90
90
  * tolerate a partially-written tail without crashing.
91
91
  */
92
- export function readRuntimeRunHistory(verifiableContextPath) {
93
- const historyPath = verifiableContextRuntimeRunHistoryPath(verifiableContextPath);
92
+ export function readExecutionStageLedgerHistory(contextGraphPath) {
93
+ const historyPath = contextGraphExecutionStageLedgerHistoryPath(contextGraphPath);
94
94
  if (!existsSync(historyPath))
95
95
  return [];
96
96
  try {
@@ -100,7 +100,7 @@ export function readRuntimeRunHistory(verifiableContextPath) {
100
100
  .filter((line) => line.length > 0)
101
101
  .map((line) => {
102
102
  try {
103
- return RuntimeRunSchema.safeParse(JSON.parse(line));
103
+ return ExecutionStageLedgerSchema.safeParse(JSON.parse(line));
104
104
  }
105
105
  catch {
106
106
  return { success: false };
@@ -116,7 +116,7 @@ export function readRuntimeRunHistory(verifiableContextPath) {
116
116
  // ---- Sort helpers --------------------------------------------------------
117
117
  /**
118
118
  * Sort items newest-first using `started_at` (with a `finished_at` fallback).
119
- * Used for build/test run lists where the canonical order is by activity
119
+ * Used for Build/benchmark run lists where the canonical order is by activity
120
120
  * window, not by record-creation time.
121
121
  */
122
122
  export function newestFirst(items) {