@interf/compiler 0.22.0 → 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 +268 -0
  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 +40 -30
  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/_qJKnA0dammQ306MG_zMq/_buildManifest.js +0 -11
  415. package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_clientMiddlewareManifest.js +0 -1
  416. package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_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
@@ -3,12 +3,12 @@ import { z } from "zod";
3
3
  // Identity primitives
4
4
  // ───────────────────────────────────────────────────────────────────────────
5
5
  export const InterfIdPattern = /^[a-z0-9][a-z0-9-]{0,79}$/;
6
- export const PreparationNamePattern = /^[a-z0-9][a-z0-9-]*$/;
7
- const RESERVED_PREPARATION_NAMES = new Set(["tests", "build-plans"]);
8
- export const PreparationNameSchema = z
6
+ export const ProjectIdPattern = /^[a-z0-9][a-z0-9-]*$/;
7
+ const RESERVED_PROJECT_IDS = new Set(["tests", "build-plans"]);
8
+ export const ProjectIdSchema = z
9
9
  .string()
10
- .regex(PreparationNamePattern, "Preparation names must use lowercase letters, numbers, and dashes only.")
11
- .refine((value) => !RESERVED_PREPARATION_NAMES.has(value), "Preparation name is reserved.");
10
+ .regex(ProjectIdPattern, "Project names must use lowercase letters, numbers, and dashes only.")
11
+ .refine((value) => !RESERVED_PROJECT_IDS.has(value), "Project name is reserved.");
12
12
  export const BuildPlanIdSchema = z.string().regex(InterfIdPattern);
13
13
  /**
14
14
  * Build Plan-declared artifact identifier. Same shape as `BuildPlanIdSchema`
@@ -18,8 +18,8 @@ export const BuildPlanIdSchema = z.string().regex(InterfIdPattern);
18
18
  export const ArtifactIdSchema = z.string().regex(InterfIdPattern);
19
19
  export const RuntimeStageSchema = z.string().regex(InterfIdPattern);
20
20
  export const RuntimeContractTypeSchema = z.string().regex(InterfIdPattern);
21
- export const RuntimeTargetTypeSchema = z.enum(["verifiable-context"]);
22
- export const TestTargetTypeSchema = z.enum(["verifiable-context", "source-files"]);
21
+ export const RuntimeTargetTypeSchema = z.enum(["context-graph"]);
22
+ export const TestTargetTypeSchema = z.enum(["context-graph", "source-files"]);
23
23
  // ───────────────────────────────────────────────────────────────────────────
24
24
  // Path validation
25
25
  //
@@ -57,13 +57,13 @@ export const LocatorSchema = z.object({
57
57
  value: z.string().min(1),
58
58
  }).strict();
59
59
  // ───────────────────────────────────────────────────────────────────────────
60
- // Source primitives — what the user puts in
60
+ // Source primitives — what the user puts in.
61
61
  //
62
- // `local-folder` is the only kind the local binary accepts in 0.17;
63
- // `remote-folder` is type plumbing for the future cloud variant
64
- // (rejected at the validator branch in server.ts).
62
+ // `local-folder` is the only Source kind Interf accepts. Cloud / remote
63
+ // storage kinds will be re-introduced when a real variant ships; see
64
+ // `internal/iterations/0.23-service-variant-parking-lot.md`.
65
65
  // ───────────────────────────────────────────────────────────────────────────
66
- export const SourceKindSchema = z.enum(["local-folder", "remote-folder"]);
66
+ export const SourceKindSchema = z.enum(["local-folder"]);
67
67
  export const SourceSchema = z.object({
68
68
  id: z.string().regex(InterfIdPattern),
69
69
  kind: SourceKindSchema,
@@ -73,6 +73,7 @@ export const SourceFileSchema = z.object({
73
73
  id: z.string().min(1),
74
74
  path: z.string().min(1),
75
75
  locator: z.string().min(1),
76
+ size_bytes: z.number().int().nonnegative().optional(),
76
77
  }).strict();
77
78
  export const SourceFilesSchema = z.object({
78
79
  kind: z.literal("interf-source-files"),
@@ -82,46 +83,146 @@ export const SourceFilesSchema = z.object({
82
83
  source_total: z.number().int().min(0),
83
84
  files: z.array(SourceFileSchema),
84
85
  }).strict();
85
- export const SourceSnapshotSchema = z.object({
86
- kind: z.literal("interf-source-snapshot"),
86
+ export const SourceStateSchema = z.object({
87
+ kind: z.literal("interf-source-state"),
87
88
  version: z.literal(1),
88
- snapshot_id: z.string().min(1),
89
+ graph_id: z.string().min(1),
89
90
  generated_at: z.string().min(1),
90
91
  run_id: z.string().min(1).nullable(),
91
92
  source: SourceSchema,
92
93
  source_total: z.number().int().min(0),
93
94
  files: z.array(SourceFileSchema),
94
95
  }).strict();
96
+ export const SourceInspectableUnitSchema = z.object({
97
+ kind: z.enum(["page", "slide", "sheet", "table", "image", "section"]),
98
+ index: z.number().int().min(1).optional(),
99
+ label: z.string().min(1).optional(),
100
+ }).strict();
101
+ export const SourceManifestEvidenceSchema = z.object({
102
+ kind: z.enum(["agent-observation", "connector-metadata", "user-provided"]),
103
+ summary: z.string().min(1),
104
+ }).strict();
105
+ export const SourceManifestFileKindSchema = z.enum([
106
+ "pdf",
107
+ "document",
108
+ "spreadsheet",
109
+ "presentation",
110
+ "image",
111
+ "text",
112
+ "other",
113
+ ]);
114
+ export const SourceManifestFileSchema = SourceFileSchema.extend({
115
+ path: z.string().min(1).refine(isInterfRelativePath, {
116
+ message: "Source manifest paths must be relative and cannot contain path traversal.",
117
+ }),
118
+ kind: SourceManifestFileKindSchema.default("other"),
119
+ size_bytes: z.number().int().nonnegative().optional(),
120
+ content_hash: z.string().min(1).optional(),
121
+ page_count: z.number().int().min(1).optional(),
122
+ inspectable_units: z.array(SourceInspectableUnitSchema).default([]),
123
+ confidence: z.enum(["high", "medium", "low"]).default("medium"),
124
+ evidence: z.array(SourceManifestEvidenceSchema).min(1),
125
+ }).strict();
126
+ export const SourceManifestScannerSchema = z.object({
127
+ executor: z.string().min(1),
128
+ agent_label: z.string().min(1),
129
+ attempt: z.number().int().min(1),
130
+ }).strict();
131
+ export const SourceManifestSchema = z.object({
132
+ kind: z.literal("interf-source-manifest"),
133
+ version: z.literal(1),
134
+ manifest_id: z.string().min(1),
135
+ generated_at: z.string().min(1),
136
+ run_id: z.string().min(1).nullable(),
137
+ project: ProjectIdSchema,
138
+ source: SourceSchema,
139
+ scanner: SourceManifestScannerSchema,
140
+ source_total: z.number().int().min(1),
141
+ files: z.array(SourceManifestFileSchema).min(1),
142
+ warnings: z.array(z.string().min(1)).default([]),
143
+ }).strict().superRefine((value, ctx) => {
144
+ if (value.files.length !== value.source_total) {
145
+ ctx.addIssue({
146
+ code: z.ZodIssueCode.custom,
147
+ path: ["source_total"],
148
+ message: "source_total must equal files.length.",
149
+ });
150
+ }
151
+ const ids = new Set();
152
+ const paths = new Set();
153
+ for (const [index, file] of value.files.entries()) {
154
+ if (ids.has(file.id)) {
155
+ ctx.addIssue({
156
+ code: z.ZodIssueCode.custom,
157
+ path: ["files", index, "id"],
158
+ message: `Duplicate source file id: ${file.id}.`,
159
+ });
160
+ }
161
+ ids.add(file.id);
162
+ if (paths.has(file.path)) {
163
+ ctx.addIssue({
164
+ code: z.ZodIssueCode.custom,
165
+ path: ["files", index, "path"],
166
+ message: `Duplicate source file path: ${file.path}.`,
167
+ });
168
+ }
169
+ paths.add(file.path);
170
+ }
171
+ });
172
+ export const SourceManifestAuditSchema = z.object({
173
+ kind: z.literal("interf-source-manifest-audit"),
174
+ version: z.literal(1),
175
+ run_id: z.string().min(1).nullable(),
176
+ manifest_id: z.string().min(1),
177
+ generated_at: z.string().min(1),
178
+ auditor: SourceManifestScannerSchema,
179
+ verdict: z.enum(["pass", "fail", "needs-review"]),
180
+ findings: z.array(z.string().min(1)).default([]),
181
+ }).strict();
95
182
  export const StageInputSchema = z.object({
96
183
  source_file_id: z.string().min(1),
97
184
  path: z.string().min(1),
98
185
  locator: z.string().min(1),
186
+ kind: SourceManifestFileKindSchema.default("other").optional(),
187
+ size_bytes: z.number().int().nonnegative().optional(),
188
+ page_count: z.number().int().min(1).optional(),
189
+ inspectable_units: z.array(SourceInspectableUnitSchema).default([]).optional(),
190
+ content_hash: z.string().min(1).optional(),
99
191
  }).strict();
100
192
  export const StageInputsSchema = z.object({
101
193
  kind: z.literal("interf-stage-inputs"),
102
- version: z.literal(1),
194
+ version: z.literal(3),
103
195
  generated_at: z.string().min(1),
104
196
  run_id: z.string().min(1).nullable(),
105
197
  build_plan: BuildPlanIdSchema,
106
198
  stage: RuntimeStageSchema,
107
- source_snapshot_id: z.string().min(1),
199
+ source_state_id: z.string().min(1),
200
+ source_manifest_id: z.string().min(1),
108
201
  input_total: z.number().int().min(0),
109
202
  inputs: z.array(StageInputSchema),
110
- }).strict();
203
+ }).strict().superRefine((value, ctx) => {
204
+ if (value.input_total !== value.inputs.length) {
205
+ ctx.addIssue({
206
+ code: z.ZodIssueCode.custom,
207
+ path: ["input_total"],
208
+ message: "input_total must equal inputs.length.",
209
+ });
210
+ }
211
+ });
111
212
  export const SourceBuildMaxAttemptsSchema = z.number().int().min(1).max(5);
112
213
  export const SourceBuildMaxLoopsSchema = z.number().int().min(1).max(3);
113
214
  // ───────────────────────────────────────────────────────────────────────────
114
- // Check / Proof / Ready — the locked verification vocabulary
215
+ // Check / Evidence / Ready — the locked verification vocabulary
115
216
  //
116
217
  // Three words doing three precise jobs:
117
218
  // - Check: the rule that must pass (with a `kind` and optional params)
118
- // - Proof: evidence a check ran (pass/fail + summary + details)
219
+ // - Evidence: records that a check ran (pass/fail + summary + details)
119
220
  // - Ready: aggregate verdict (`ready` or `not_ready`)
120
221
  //
121
222
  // A check has a SCOPE (where it's declared), not a different name:
122
223
  // - stage check — Build Plan-declared per stage; runs end-of-stage
123
- // - artifact check — Build Plan-declared per artifact; runs end-of-build
124
- // - user check Preparation-declared; runs on `interf test`
224
+ // - Artifact diagnostic — Build Plan-declared per artifact; runs end-of-build
225
+ // - benchmark check Project-declared Q&A / fact check; runs on `interf benchmark`
125
226
  //
126
227
  // Same `Check` primitive across all three scopes. Same `CheckKind`
127
228
  // canonical list - Build Plans, users, and engine code pick from it.
@@ -130,31 +231,127 @@ export const SourceBuildMaxLoopsSchema = z.number().int().min(1).max(3);
130
231
  * Canonical check kinds the engine knows how to evaluate.
131
232
  *
132
233
  * Adding a new kind requires an engine release (the evaluator must
133
- * implement it). Build Plans and user checks pick from this list; they
234
+ * implement it). Plans and user checks pick from this list; they
134
235
  * cannot invent custom kinds.
135
236
  *
136
237
  * file_exists — file is present and non-empty
238
+ * source_manifest_valid — source-manifest.json exists, parses, and has at least one file
137
239
  * min_file_count — directory has ≥ N files (params: { min: number })
138
240
  * min_file_count_matches_source — directory has ≥ source_total files (the "all files analyzed" check)
241
+ * source_summary_folders — summaries directory has ≥ source_total source folders, each with summary.md or manifest.md
242
+ * source_page_coverage — page summary outputs exist for every manifest page unit
139
243
  * frontmatter_valid — every markdown file has parseable YAML frontmatter
140
244
  * frontmatter_required_keys — every markdown file has these frontmatter keys (params: { keys: string[] })
245
+ * frontmatter_nonempty_keys — every markdown file has non-empty values for these frontmatter keys
246
+ * source_refs_required — every markdown file has non-empty source_refs/source_ref/source_path frontmatter
141
247
  * wikilinks_valid — every wikilink resolves
142
- * must_not_contain — file/directory does not contain forbidden phrases (params: { phrases: string[] })
143
- * must_contain — file/directory contains required phrases (params: { phrases: string[] })
144
- * qa_match — user-defined Q/A: agent answer matches expected (params: { question, expected, strictness })
248
+ * must_not_contain — file/directory does not contain forbidden phrases (params: { phrases: string[] } or { text: string })
249
+ * must_contain — file/directory contains required phrases (params: { phrases: string[] } or { text: string })
250
+ * qa_match — user-defined Q/A: agent answer matches expected (params: { expected: string, strictness?: "loose" | "strict" })
145
251
  */
146
252
  export const CHECK_KINDS = [
147
253
  "file_exists",
254
+ "source_manifest_valid",
148
255
  "min_file_count",
149
256
  "min_file_count_matches_source",
257
+ "source_summary_folders",
258
+ "source_page_coverage",
150
259
  "frontmatter_valid",
151
260
  "frontmatter_required_keys",
261
+ "frontmatter_nonempty_keys",
262
+ "source_refs_required",
152
263
  "wikilinks_valid",
153
264
  "must_not_contain",
154
265
  "must_contain",
155
266
  "qa_match",
156
267
  ];
157
268
  export const CheckKindSchema = z.enum(CHECK_KINDS);
269
+ export const CHECK_PARAM_CONTRACTS = {
270
+ file_exists: {
271
+ params: {},
272
+ examples: [{}],
273
+ },
274
+ source_manifest_valid: {
275
+ params: {
276
+ path: "optional manifest path; defaults to .interf/runtime/source-manifest.json",
277
+ },
278
+ examples: [{}],
279
+ },
280
+ min_file_count: {
281
+ params: {
282
+ min: "optional number; defaults to 1",
283
+ },
284
+ examples: [{ min: 26 }],
285
+ },
286
+ min_file_count_matches_source: {
287
+ params: {
288
+ match: "optional count key string; defaults to source_total",
289
+ },
290
+ examples: [{ match: "source_total" }],
291
+ },
292
+ source_summary_folders: {
293
+ params: {
294
+ match: "optional count key string; defaults to source_total",
295
+ summary_file: "optional filename string; defaults to summary.md",
296
+ manifest_file: "optional filename string; defaults to manifest.md",
297
+ },
298
+ examples: [{ match: "source_total" }],
299
+ },
300
+ source_page_coverage: {
301
+ params: {
302
+ pages_dir: "optional directory name inside each source summary folder; defaults to pages",
303
+ summary_file: "optional filename string; defaults to summary.md",
304
+ },
305
+ examples: [{ pages_dir: "pages" }],
306
+ },
307
+ frontmatter_valid: {
308
+ params: {},
309
+ examples: [{}],
310
+ },
311
+ frontmatter_required_keys: {
312
+ params: {
313
+ keys: "required string[]",
314
+ },
315
+ examples: [{ keys: ["page", "title", "summary"] }],
316
+ },
317
+ frontmatter_nonempty_keys: {
318
+ params: {
319
+ keys: "required string[]",
320
+ },
321
+ examples: [{ keys: ["source_refs", "verification_state"] }],
322
+ },
323
+ source_refs_required: {
324
+ params: {
325
+ keys: "optional string[]; defaults to source_refs, source_ref, source_path",
326
+ },
327
+ examples: [{ keys: ["source_refs"] }],
328
+ },
329
+ wikilinks_valid: {
330
+ params: {},
331
+ examples: [{}],
332
+ },
333
+ must_not_contain: {
334
+ params: {
335
+ phrases: "preferred string[] of forbidden phrases",
336
+ text: "optional string shorthand for one forbidden phrase",
337
+ },
338
+ examples: [{ phrases: ["TODO", "Not yet built."] }, { text: "TODO" }],
339
+ },
340
+ must_contain: {
341
+ params: {
342
+ phrases: "preferred string[] of required phrases",
343
+ text: "optional string shorthand for one required phrase",
344
+ },
345
+ examples: [{ phrases: ["Bristol", "Central London"] }, { text: "Bristol" }],
346
+ },
347
+ qa_match: {
348
+ params: {
349
+ expected: "required expected answer string",
350
+ strictness: "optional string; loose or strict; defaults to loose",
351
+ },
352
+ examples: [{ expected: "Acme Corp", strictness: "loose" }],
353
+ },
354
+ };
158
355
  /**
159
356
  * One check declaration. Reusable across stage/artifact/user scopes.
160
357
  *
@@ -164,7 +361,7 @@ export const CheckKindSchema = z.enum(CHECK_KINDS);
164
361
  * rule-specific config (typed at the engine evaluator).
165
362
  *
166
363
  * `required: true` (default) → a failed check fails the parent
167
- * (stage/artifact/preparation). `required: false` → soft check, fails
364
+ * (stage/artifact/Project). `required: false` → soft check, fails
168
365
  * warn but don't block the `ready` verdict.
169
366
  */
170
367
  export const CheckSchema = z.object({
@@ -179,7 +376,7 @@ export const CheckSchema = z.object({
179
376
  * short one-line label for the UI; `details` carries rule-specific
180
377
  * structured data (e.g., file count, missing keys, broken link list).
181
378
  */
182
- export const ProofSchema = z.object({
379
+ export const CheckResultSchema = z.object({
183
380
  check_id: z.string().regex(InterfIdPattern),
184
381
  kind: CheckKindSchema,
185
382
  passed: z.boolean(),
@@ -188,9 +385,36 @@ export const ProofSchema = z.object({
188
385
  details: z.record(z.string(), z.unknown()).optional(),
189
386
  evaluated_at: z.string().min(1),
190
387
  }).strict();
388
+ export const ContextCheckStatusSchema = z.enum([
389
+ "pending",
390
+ "running",
391
+ "passed",
392
+ "failed",
393
+ "skipped",
394
+ ]);
395
+ /**
396
+ * User-facing Build Plan check: the plain-English assertion the user
397
+ * reviews as a Context Check. Requested Artifacts back these checks.
398
+ * Deterministic Artifact diagnostics remain nested under Artifacts
399
+ * and use `CheckSchema`.
400
+ */
401
+ export const ContextCheckDeclarationSchema = z.object({
402
+ id: z.string().regex(InterfIdPattern),
403
+ label: z.string().min(1),
404
+ description: z.string().min(1).optional(),
405
+ backed_by_artifact_ids: z.array(ArtifactIdSchema).default([]),
406
+ required: z.boolean().default(true),
407
+ evidence_expectation: z.string().min(1).optional(),
408
+ }).strict();
409
+ export const ContextCheckProjectionSchema = ContextCheckDeclarationSchema.extend({
410
+ status: ContextCheckStatusSchema.optional(),
411
+ evidence: z.string().min(1).optional(),
412
+ issue: z.string().min(1).optional(),
413
+ }).strict();
414
+ export const ContextCheckSchema = ContextCheckProjectionSchema;
191
415
  /**
192
416
  * Per-thing readiness verdict. Used for an artifact, a stage, or a
193
- * preparation. Aggregate verdict over its required checks.
417
+ * Project. Aggregate verdict over its required checks.
194
418
  */
195
419
  export const ReadyVerdictSchema = z.enum(["ready", "not_ready", "failed", "skipped"]);
196
420
  /**
@@ -201,6 +425,9 @@ export const ReadyVerdictSchema = z.enum(["ready", "not_ready", "failed", "skipp
201
425
  */
202
426
  export const STANDARD_EVIDENCE_FRONTMATTER_KEYS = [
203
427
  "source",
428
+ "source_file_id",
429
+ "source_path",
430
+ "source_locator",
204
431
  "source_kind",
205
432
  "evidence_tier",
206
433
  "truth_mode",
@@ -210,33 +437,31 @@ export const STANDARD_EVIDENCE_FRONTMATTER_KEYS = [
210
437
  // Artifact — a produced thing the user can see and verify
211
438
  //
212
439
  // Every output of a Build Plan is an Artifact. No internal/working/output
213
- // distinction — if it's named, it's an Artifact. The engine reserves
440
+ // distinction — if it's named, it's an Artifact. The runtime reserves
214
441
  // `.interf/runtime/` as its own namespace by convention; those paths
215
442
  // are not artifacts.
216
443
  // ───────────────────────────────────────────────────────────────────────────
217
444
  /**
218
- * Where an Artifact materializes. Discriminated union so future kinds
219
- * (literal value, remote handle, confirmation-only) slot in without a
220
- * schema break. `path` is always relative to the verifiable-context root,
221
- * and `artifact_kind` tells consumers whether the target materializes
222
- * as a file or directory.
445
+ * Where an Artifact materializes. `path` is always relative to the
446
+ * Context Graph root, and `artifact_kind` tells consumers whether the
447
+ * target materializes as a file or directory. The `kind: "path"`
448
+ * discriminator is retained on the wire so a future shape variant can be
449
+ * added as a discriminated union without renaming existing data.
223
450
  */
224
451
  export const ArtifactPathShapeSchema = z.object({
225
452
  kind: z.literal("path"),
226
453
  path: z.string().min(1).refine(isInterfRelativePath, {
227
- message: "Artifact paths must stay inside the verifiable-context root (no `..`, no absolute paths).",
454
+ message: "Artifact paths must stay inside the Context Graph root (no `..`, no absolute paths).",
228
455
  }),
229
456
  artifact_kind: z.enum(["file", "directory"]),
230
457
  }).strict();
231
- export const ArtifactShapeSchema = z.discriminatedUnion("kind", [
232
- ArtifactPathShapeSchema,
233
- ]);
458
+ export const ArtifactShapeSchema = ArtifactPathShapeSchema;
234
459
  /**
235
460
  * Build Plan-declared Artifact — a produced thing.
236
461
  *
237
462
  * `checks[]` is the locked vocabulary: an array of `Check` (with
238
463
  * `kind` from `CHECK_KINDS`). The runtime evaluates them via the
239
- * shared check evaluator and produces `Proof[]` on each Build run.
464
+ * shared check evaluator and produces `CheckResult[]` on each Build.
240
465
  */
241
466
  export const ArtifactSchema = z.object({
242
467
  id: ArtifactIdSchema,
@@ -246,8 +471,8 @@ export const ArtifactSchema = z.object({
246
471
  built_by_stages: z.array(z.string().regex(InterfIdPattern)).default([]),
247
472
  }).strict();
248
473
  /**
249
- * Per-Artifact runtime status. Lives on Build run resources and on
250
- * preparation resources. `proofs[]` carries the structured evidence
474
+ * Per-Artifact runtime status. Lives on Build resources and on
475
+ * Project resources. `check_results[]` carries the structured evidence
251
476
  * emitted by the shared check evaluator.
252
477
  */
253
478
  export const ArtifactStatusValueSchema = ReadyVerdictSchema;
@@ -255,14 +480,121 @@ export const ArtifactStatusSchema = z.object({
255
480
  artifact_id: ArtifactIdSchema,
256
481
  status: ReadyVerdictSchema,
257
482
  built_by_stages: z.array(z.string().regex(InterfIdPattern)).default([]),
258
- proofs: z.array(ProofSchema).default([]),
483
+ check_results: z.array(CheckResultSchema).default([]),
484
+ summary: z.string().min(1).optional(),
485
+ }).strict();
486
+ // ───────────────────────────────────────────────────────────────────────────
487
+ // Build evidence — user-visible readiness rows
488
+ //
489
+ // Check rows are the app-facing review primitive for a Build. They
490
+ // deliberately keep the surface small:
491
+ // assertion label + metric + evidence link/ref + optional issue state
492
+ //
493
+ // Denominators are engine-owned (Source inventory or declared Build Plan
494
+ // expectations). Observed values come from Build runs: stage records,
495
+ // accepted Outputs, validators, and traces. Benchmarks remain separate.
496
+ // ───────────────────────────────────────────────────────────────────────────
497
+ export const BuildEvidenceIssueStateSchema = z.enum([
498
+ "pass",
499
+ "missing",
500
+ "review",
501
+ "fail",
502
+ ]);
503
+ export const BuildEvidenceMetricSchema = z.object({
504
+ observed: z.number().int().min(0),
505
+ total: z.number().int().min(0).optional(),
506
+ unit: z.string().min(1).optional(),
507
+ }).strict();
508
+ export const BuildEvidenceRefSchema = z.object({
509
+ kind: z.enum([
510
+ "source-inventory",
511
+ "stage-record",
512
+ "output",
513
+ "validator",
514
+ "trace",
515
+ "stage-evidence",
516
+ ]),
517
+ label: z.string().min(1),
518
+ ref: z.string().min(1).optional(),
519
+ path: z.string().min(1).optional(),
520
+ run_id: z.string().min(1).optional(),
521
+ stage_id: z.string().regex(InterfIdPattern).optional(),
522
+ artifact_id: ArtifactIdSchema.optional(),
523
+ }).strict();
524
+ export const BuildCheckRowSchema = z.object({
525
+ id: z.string().regex(InterfIdPattern),
526
+ assertion: z.string().min(1),
527
+ metric: BuildEvidenceMetricSchema,
528
+ evidence: BuildEvidenceRefSchema,
529
+ issue_state: BuildEvidenceIssueStateSchema.optional(),
530
+ issue: z.string().min(1).optional(),
531
+ }).strict();
532
+ export const BuildEvidenceResourceSchema = z.object({
533
+ kind: z.literal("interf-build-evidence"),
534
+ version: z.literal(1),
535
+ generated_at: z.string().min(1),
536
+ project_id: z.string().min(1),
537
+ build_run_id: z.string().min(1).nullable(),
538
+ ready: z.boolean(),
539
+ summary: z.string().min(1),
540
+ rows: z.array(BuildCheckRowSchema).default([]),
541
+ }).strict();
542
+ export const EvidenceCountKeySchema = z.string().regex(/^[a-z][a-z0-9_.:-]*$/);
543
+ export const StageEvidenceSourceRefSchema = z.object({
544
+ path: z.string().min(1),
545
+ source_file_id: z.string().min(1).optional(),
546
+ locator: z.string().min(1).optional(),
547
+ }).strict();
548
+ export const StageEvidenceOutputRefSchema = z.object({
549
+ artifact_id: ArtifactIdSchema,
550
+ path: z.string().min(1).refine(isInterfRelativePath, {
551
+ message: "Output refs must stay inside the Context Graph root.",
552
+ }),
553
+ }).strict();
554
+ export const StageEvidenceCountSchema = z.object({
555
+ key: EvidenceCountKeySchema,
556
+ label: z.string().min(1),
557
+ value: z.number().int().min(0),
558
+ total: z.number().int().min(0).optional(),
559
+ unit: z.string().min(1).optional(),
560
+ source: z.enum(["engine", "stage"]),
561
+ stage_id: z.string().regex(InterfIdPattern).optional(),
562
+ artifact_id: ArtifactIdSchema.optional(),
563
+ primary: z.boolean().optional(),
564
+ expected: z.boolean().optional(),
565
+ }).strict();
566
+ export const StageEvidenceItemSchema = z.object({
567
+ id: z.string().regex(InterfIdPattern),
568
+ kind: EvidenceCountKeySchema,
569
+ label: z.string().min(1),
259
570
  summary: z.string().min(1).optional(),
571
+ source_refs: z.array(StageEvidenceSourceRefSchema).default([]),
572
+ output_refs: z.array(StageEvidenceOutputRefSchema).default([]),
573
+ stage_id: z.string().regex(InterfIdPattern),
574
+ artifact_id: ArtifactIdSchema.optional(),
575
+ metadata: z.record(z.string(), z.unknown()).optional(),
576
+ }).strict();
577
+ export const StageEvidenceEdgeSchema = z.object({
578
+ from: z.string().regex(InterfIdPattern),
579
+ to: z.string().regex(InterfIdPattern),
580
+ relation: EvidenceCountKeySchema,
581
+ stage_id: z.string().regex(InterfIdPattern),
582
+ }).strict();
583
+ export const StageEvidenceSchema = z.object({
584
+ kind: z.literal("interf-stage-evidence"),
585
+ version: z.literal(1),
586
+ run_id: z.string().min(1),
587
+ stage: z.string().regex(InterfIdPattern),
588
+ counts: z.array(StageEvidenceCountSchema).default([]),
589
+ items: z.array(StageEvidenceItemSchema).default([]),
590
+ edges: z.array(StageEvidenceEdgeSchema).default([]),
591
+ warnings: z.array(z.string().min(1)).optional(),
260
592
  }).strict();
261
593
  // ───────────────────────────────────────────────────────────────────────────
262
- // Readiness — preparation-level aggregate verdict
594
+ // Readiness — project-level aggregate verdict
263
595
  //
264
- // Rolls up artifact statuses + user-check results + engine-level gates
265
- // (is the prep configured, has a Build run, etc.) into a single
596
+ // Rolls up Artifact diagnostics, benchmark results, and engine-level gates
597
+ // (is the project configured, has a Build, etc.) into a single
266
598
  // `ready` / `not_ready` answer for the ICP.
267
599
  // ───────────────────────────────────────────────────────────────────────────
268
600
  export const ReadinessStatusSchema = z.enum([
@@ -277,18 +609,19 @@ export const ReadinessStatusSchema = z.enum([
277
609
  "failed",
278
610
  ]);
279
611
  export const ReadinessGateSchema = z.enum([
280
- "preparation-config",
281
- "verifiable-context",
612
+ "project-config",
613
+ "context-graph",
282
614
  "build-run",
283
- "artifact-checks",
284
- "readiness-checks",
285
- "checks-current",
615
+ "artifact-diagnostics",
616
+ "context-checks",
617
+ "benchmarks",
618
+ "benchmarks-current",
286
619
  ]);
287
620
  /**
288
621
  * Per-gate status — one row in the readiness summary. A gate is a
289
- * high-level layer (is config valid? is verifiable context built? did
290
- * latest Build run succeed?). Gate failures are aggregated alongside
291
- * artifact-check failures into the overall `Readiness` verdict.
622
+ * high-level layer (is config valid? is the Context Graph built? did
623
+ * the latest Build succeed?). Gate failures are aggregated alongside
624
+ * Artifact diagnostic failures into the overall `Readiness` verdict.
292
625
  */
293
626
  export const GateStatusSchema = z.object({
294
627
  gate: ReadinessGateSchema,
@@ -309,40 +642,28 @@ export const VerifyTargetResultSchema = z.object({
309
642
  run_path: z.string().min(1).nullable().optional(),
310
643
  }).strict();
311
644
  /**
312
- * Preparation-level readiness verdict.
313
- *
314
- * Field names retain the preparation-readiness wire shape
315
- * (`latest_test_run_id`, `check_results`, `checks`). The exported type
316
- * name is `Readiness`.
645
+ * Project-level readiness verdict.
317
646
  */
318
- function mapReadinessRecord(value) {
319
- if (!value || typeof value !== "object" || Array.isArray(value))
320
- return value;
321
- const record = value;
322
- return {
323
- ...record,
324
- };
325
- }
326
- export const ReadinessSchema = z.preprocess(mapReadinessRecord, z.object({
647
+ export const ReadinessSchema = z.object({
327
648
  kind: z.literal("interf-readiness-state"),
328
649
  version: z.literal(1),
329
650
  generated_at: z.string().min(1),
330
- preparation: z.string().min(1),
651
+ project: z.string().min(1),
331
652
  status: ReadinessStatusSchema,
332
653
  ready: z.boolean(),
333
654
  summary: z.string().min(1),
334
- verifiable_context_path: z.string().min(1).nullable(),
655
+ context_graph_path: z.string().min(1).nullable(),
335
656
  latest_build_run_id: z.string().min(1).nullable().optional(),
336
- latest_test_run_id: z.string().min(1).nullable().optional(),
657
+ latest_benchmark_run_id: z.string().min(1).nullable().optional(),
337
658
  build: GateStatusSchema.nullable(),
338
659
  check_results: z.object({
339
660
  configured: z.number().int().min(0),
340
661
  fingerprint: z.string().min(1).nullable(),
341
662
  source_files: VerifyTargetResultSchema.nullable(),
342
- verifiable_context: VerifyTargetResultSchema.nullable(),
663
+ context_graph: VerifyTargetResultSchema.nullable(),
343
664
  }).strict(),
344
665
  checks: z.array(GateStatusSchema).default([]),
345
- }).strict());
666
+ }).strict();
346
667
  // ───────────────────────────────────────────────────────────────────────────
347
668
  // User-defined verification (Q/A pairs) — the "user check" scope
348
669
  // ───────────────────────────────────────────────────────────────────────────
@@ -377,7 +698,7 @@ export const RuntimeExecutorInfoSchema = z.object({
377
698
  timeout_ms: z.number().nullable().optional(),
378
699
  });
379
700
  // ───────────────────────────────────────────────────────────────────────────
380
- // Connected agents + roles (0.15)
701
+ // Execution agents + roles
381
702
  // ───────────────────────────────────────────────────────────────────────────
382
703
  /**
383
704
  * The 5 canonical roles a Build Plan stage can declare. Build Plans MAY declare
@@ -391,7 +712,7 @@ export const CANONICAL_ROLES = [
391
712
  "general",
392
713
  ];
393
714
  /**
394
- * Open-ended role identifier. Build Plans invent role names freely; the
715
+ * Open-ended role identifier. Plans invent role names freely; the
395
716
  * role-router maps unknown names to `general` at run time.
396
717
  */
397
718
  export const RoleSchema = z.string().min(1);
@@ -399,16 +720,30 @@ export const RoleSchema = z.string().min(1);
399
720
  * One agent in the registry. `available` is a runtime-only flag — true
400
721
  * if the command's first token resolves on PATH. Stripped before
401
722
  * persistence.
723
+ *
724
+ * `prefs` carries the merged-at-runtime per-agent preferences (env vars,
725
+ * model, effort). It is filled in at load time by looking up the
726
+ * registry's `agent_prefs` map by name. The persisted shape never carries
727
+ * `prefs` — it lives in `agent_prefs` on disk so built-in agents (which
728
+ * are detected, not persisted) can also receive preferences.
402
729
  */
730
+ export const AgentPrefsSchema = z.object({
731
+ env_vars: z.record(z.string().min(1), z.string()).optional(),
732
+ model: z.string().min(1).nullable().optional(),
733
+ effort: z.string().min(1).nullable().optional(),
734
+ }).strict();
403
735
  export const AgentRecordSchema = z.object({
404
736
  name: z.string().min(1),
405
737
  display_name: z.string().min(1),
406
738
  command: z.string().min(1),
407
739
  source: z.enum(["builtin", "user"]),
408
740
  available: z.boolean().optional(),
741
+ prefs: AgentPrefsSchema.optional(),
409
742
  }).strict();
410
743
  export const RoleMapSchema = z.record(RoleSchema, z.string().min(1));
744
+ export const AgentPrefsMapSchema = z.record(z.string().min(1), AgentPrefsSchema);
411
745
  export const AgentsRegistrySchema = z.object({
412
746
  agents: z.array(AgentRecordSchema).default([]),
413
747
  role_map: RoleMapSchema.default({}),
748
+ agent_prefs: AgentPrefsMapSchema.default({}),
414
749
  }).strict();