@interf/compiler 0.22.2 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/README.md +119 -282
  2. package/dist/bin-mcp.d.ts +2 -0
  3. package/dist/bin-mcp.js +63 -0
  4. package/dist/bin-runtime.d.ts +2 -0
  5. package/dist/bin-runtime.js +111 -0
  6. package/dist/cli/commands/agents.js +4 -35
  7. package/dist/cli/commands/auth.d.ts +20 -0
  8. package/dist/cli/commands/auth.js +161 -0
  9. package/dist/cli/commands/benchmark.d.ts +9 -0
  10. package/dist/cli/commands/benchmark.js +58 -0
  11. package/dist/cli/commands/build-plan.js +107 -139
  12. package/dist/cli/commands/build.d.ts +3 -4
  13. package/dist/cli/commands/build.js +16 -45
  14. package/dist/cli/commands/doctor.js +3 -3
  15. package/dist/cli/commands/graphs.d.ts +2 -0
  16. package/dist/cli/commands/graphs.js +344 -0
  17. package/dist/cli/commands/login.js +4 -6
  18. package/dist/cli/commands/logout.js +1 -1
  19. package/dist/cli/commands/mcp.d.ts +4 -2
  20. package/dist/cli/commands/mcp.js +846 -232
  21. package/dist/cli/commands/project.d.ts +2 -0
  22. package/dist/cli/commands/project.js +176 -0
  23. package/dist/cli/commands/reset.d.ts +3 -4
  24. package/dist/cli/commands/reset.js +10 -31
  25. package/dist/cli/commands/runs.js +136 -57
  26. package/dist/cli/commands/runtime.d.ts +24 -0
  27. package/dist/cli/commands/runtime.js +373 -0
  28. package/dist/cli/commands/status.d.ts +1 -0
  29. package/dist/cli/commands/status.js +35 -45
  30. package/dist/cli/commands/traces.d.ts +2 -0
  31. package/dist/cli/commands/traces.js +97 -0
  32. package/dist/cli/commands/wizard.js +171 -178
  33. package/dist/cli/index.d.ts +7 -4
  34. package/dist/cli/index.js +13 -7
  35. package/dist/cli/lib/http-client.d.ts +39 -0
  36. package/dist/cli/lib/http-client.js +73 -0
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.js +2 -2
  39. package/dist/packages/build-plans/authoring/brief.d.ts +538 -0
  40. package/dist/packages/build-plans/authoring/brief.js +89 -0
  41. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +52 -11
  42. package/dist/packages/build-plans/authoring/build-plan-authoring.js +493 -46
  43. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +10 -1
  44. package/dist/packages/build-plans/authoring/build-plan-edit-session.js +27 -4
  45. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
  46. package/dist/packages/build-plans/authoring/build-plan-improvement.js +97 -46
  47. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.d.ts +1 -0
  48. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
  49. package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
  50. package/dist/packages/build-plans/build-plan-resolution.js +3 -3
  51. package/dist/packages/build-plans/index.d.ts +1 -1
  52. package/dist/packages/build-plans/index.js +1 -1
  53. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -13
  54. package/dist/packages/build-plans/package/build-plan-definitions.js +45 -42
  55. package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
  56. package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
  57. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
  58. package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
  59. package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +5 -4
  60. package/dist/packages/build-plans/package/build-plan-stage-runner.js +23 -11
  61. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +7 -8
  62. package/dist/packages/build-plans/package/builtin-build-plan.js +10 -11
  63. package/dist/packages/build-plans/package/context-interface.d.ts +14 -9
  64. package/dist/packages/build-plans/package/context-interface.js +14 -33
  65. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
  66. package/dist/packages/build-plans/package/interf-build-plan-package.js +68 -64
  67. package/dist/packages/build-plans/package/local-build-plans.d.ts +21 -14
  68. package/dist/packages/build-plans/package/local-build-plans.js +105 -55
  69. package/dist/packages/build-plans/package/user-build-plans.js +1 -1
  70. package/dist/packages/contracts/index.d.ts +5 -2
  71. package/dist/packages/contracts/index.js +3 -1
  72. package/dist/packages/contracts/lib/context-graph-layer.d.ts +161 -0
  73. package/dist/packages/contracts/lib/context-graph-layer.js +216 -0
  74. package/dist/packages/contracts/lib/project-paths.d.ts +144 -0
  75. package/dist/packages/contracts/lib/project-paths.js +220 -0
  76. package/dist/packages/contracts/lib/project-schema.d.ts +423 -0
  77. package/dist/packages/contracts/lib/project-schema.js +138 -0
  78. package/dist/packages/contracts/lib/schema.d.ts +1273 -81
  79. package/dist/packages/contracts/lib/schema.js +675 -79
  80. package/dist/packages/contracts/utils/filesystem.d.ts +1 -0
  81. package/dist/packages/contracts/utils/filesystem.js +29 -1
  82. package/dist/packages/contracts/utils/parse.js +67 -0
  83. package/dist/packages/projects/index.d.ts +6 -0
  84. package/dist/packages/{project → projects}/index.js +0 -3
  85. package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
  86. package/dist/packages/{project → projects}/interf-detect.js +56 -50
  87. package/dist/packages/projects/interf.d.ts +2 -0
  88. package/dist/packages/projects/interf.js +1 -0
  89. package/dist/packages/projects/lib/schema.d.ts +77 -0
  90. package/dist/packages/projects/lib/schema.js +91 -0
  91. package/dist/packages/projects/source-config.d.ts +53 -0
  92. package/dist/packages/projects/source-config.js +339 -0
  93. package/dist/packages/projects/source-folders.d.ts +11 -0
  94. package/dist/packages/{project → projects}/source-folders.js +26 -26
  95. package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
  96. package/dist/packages/{engine → runtime}/action-planner.js +20 -22
  97. package/dist/packages/runtime/action-values.d.ts +1 -0
  98. package/dist/packages/runtime/action-values.js +1 -0
  99. package/dist/packages/runtime/actions/errors.d.ts +2 -0
  100. package/dist/packages/runtime/actions/errors.js +12 -0
  101. package/dist/packages/runtime/actions/fields.d.ts +86 -0
  102. package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
  103. package/dist/packages/runtime/actions/form-builders.js +667 -0
  104. package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
  105. package/dist/packages/runtime/actions/form-validators.js +134 -0
  106. package/dist/packages/runtime/actions/helpers.d.ts +11 -0
  107. package/dist/packages/runtime/actions/helpers.js +80 -0
  108. package/dist/packages/runtime/actions/index.d.ts +8 -0
  109. package/dist/packages/runtime/actions/index.js +11 -0
  110. package/dist/packages/runtime/actions/registry.d.ts +64 -0
  111. package/dist/packages/runtime/actions/registry.js +62 -0
  112. package/dist/packages/runtime/actions/requests.d.ts +45 -0
  113. package/dist/packages/runtime/actions/requests.js +164 -0
  114. package/dist/packages/runtime/actions/schemas.d.ts +161 -0
  115. package/dist/packages/runtime/actions/schemas.js +37 -0
  116. package/dist/packages/runtime/agent-handoff.d.ts +11 -0
  117. package/dist/packages/runtime/agent-handoff.js +102 -0
  118. package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
  119. package/dist/packages/{engine → runtime}/agents/index.js +1 -2
  120. package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
  121. package/dist/packages/runtime/agents/lib/args.js +24 -0
  122. package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
  123. package/dist/packages/runtime/agents/lib/constants.js +13 -0
  124. package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
  125. package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
  126. package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
  127. package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
  128. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +14 -0
  129. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +31 -14
  130. package/dist/packages/{engine → runtime}/agents/lib/execution.js +22 -6
  131. package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +1 -0
  132. package/dist/packages/{engine → runtime}/agents/lib/executors.js +11 -2
  133. package/dist/packages/runtime/agents/lib/logs.d.ts +12 -0
  134. package/dist/packages/runtime/agents/lib/logs.js +41 -0
  135. package/dist/packages/{engine → runtime}/agents/lib/preflight.js +19 -14
  136. package/dist/packages/runtime/agents/lib/render.d.ts +26 -0
  137. package/dist/packages/{engine → runtime}/agents/lib/render.js +48 -22
  138. package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
  139. package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
  140. package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
  141. package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
  142. package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
  143. package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
  144. package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
  145. package/dist/packages/runtime/agents/lib/shell-templates.js +494 -0
  146. package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
  147. package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
  148. package/dist/packages/runtime/agents/lib/shells.d.ts +92 -0
  149. package/dist/packages/runtime/agents/lib/shells.js +509 -0
  150. package/dist/packages/runtime/agents/lib/source-context-scan.d.ts +10 -0
  151. package/dist/packages/runtime/agents/lib/source-context-scan.js +388 -0
  152. package/dist/packages/{engine → runtime}/agents/lib/status.js +1 -14
  153. package/dist/packages/runtime/agents/lib/string-utils.d.ts +16 -0
  154. package/dist/packages/runtime/agents/lib/string-utils.js +36 -0
  155. package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +1 -0
  156. package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
  157. package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
  158. package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
  159. package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
  160. package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
  161. package/dist/packages/runtime/agents/providers/codex.js +66 -0
  162. package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
  163. package/dist/packages/runtime/agents/providers/cursor.js +24 -0
  164. package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
  165. package/dist/packages/runtime/agents/providers/index.js +31 -0
  166. package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
  167. package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
  168. package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
  169. package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
  170. package/dist/packages/{engine → runtime}/agents/role-executors.js +9 -7
  171. package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
  172. package/dist/packages/runtime/auth/account-context.d.ts +52 -0
  173. package/dist/packages/runtime/auth/account-context.js +68 -0
  174. package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
  175. package/dist/packages/runtime/auth/auth-flow.js +189 -0
  176. package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
  177. package/dist/packages/runtime/auth/jwt-validator.js +86 -0
  178. package/dist/packages/runtime/auth/keychain.d.ts +35 -0
  179. package/dist/packages/runtime/auth/keychain.js +85 -0
  180. package/dist/packages/runtime/auth/session-store.d.ts +38 -0
  181. package/dist/packages/runtime/auth/session-store.js +96 -0
  182. package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
  183. package/dist/packages/runtime/auth/workos-client.js +87 -0
  184. package/dist/packages/runtime/benchmark-question-draft.d.ts +23 -0
  185. package/dist/packages/runtime/benchmark-question-draft.js +153 -0
  186. package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
  187. package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
  188. package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +6 -6
  189. package/dist/packages/{engine → runtime}/build/artifact-status.js +26 -24
  190. package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
  191. package/dist/packages/runtime/build/atomic-fs.js +95 -0
  192. package/dist/packages/runtime/build/billing-events.d.ts +78 -0
  193. package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
  194. package/dist/packages/runtime/build/build-evidence.d.ts +16 -0
  195. package/dist/packages/runtime/build/build-evidence.js +179 -0
  196. package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
  197. package/dist/packages/runtime/build/build-pipeline.js +388 -0
  198. package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
  199. package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
  200. package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
  201. package/dist/packages/runtime/build/build-plan-runs.js +31 -0
  202. package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
  203. package/dist/packages/runtime/build/build-stage-plan.js +101 -0
  204. package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
  205. package/dist/packages/runtime/build/build-stage-runner.js +302 -0
  206. package/dist/packages/{engine → runtime}/build/build-target.d.ts +7 -4
  207. package/dist/packages/runtime/build/build-target.js +40 -0
  208. package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
  209. package/dist/packages/runtime/build/check-evaluator.js +1226 -0
  210. package/dist/packages/runtime/build/context-graph-paths.d.ts +64 -0
  211. package/dist/packages/runtime/build/context-graph-paths.js +160 -0
  212. package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
  213. package/dist/packages/runtime/build/context-graph-schema.js +39 -0
  214. package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
  215. package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
  216. package/dist/packages/{engine → runtime}/build/index.d.ts +7 -5
  217. package/dist/packages/{engine → runtime}/build/index.js +7 -5
  218. package/dist/packages/runtime/build/inspect-map.d.ts +10 -0
  219. package/dist/packages/runtime/build/inspect-map.js +270 -0
  220. package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +449 -123
  221. package/dist/packages/runtime/build/lib/schema.js +494 -0
  222. package/dist/packages/runtime/build/native-entrypoint.d.ts +2 -0
  223. package/dist/packages/runtime/build/native-entrypoint.js +286 -0
  224. package/dist/packages/runtime/build/reset.d.ts +2 -0
  225. package/dist/packages/runtime/build/reset.js +62 -0
  226. package/dist/packages/{engine → runtime}/build/runtime-contracts.js +13 -7
  227. package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
  228. package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
  229. package/dist/packages/runtime/build/runtime-log-paths.d.ts +3 -0
  230. package/dist/packages/runtime/build/runtime-log-paths.js +16 -0
  231. package/dist/packages/{engine → runtime}/build/runtime-prompt.js +12 -9
  232. package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
  233. package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
  234. package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
  235. package/dist/packages/runtime/build/runtime-runs.js +318 -0
  236. package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +9 -6
  237. package/dist/packages/runtime/build/runtime-types.js +1 -0
  238. package/dist/packages/runtime/build/runtime.d.ts +8 -0
  239. package/dist/packages/runtime/build/runtime.js +7 -0
  240. package/dist/packages/runtime/build/source-files.d.ts +58 -0
  241. package/dist/packages/runtime/build/source-files.js +193 -0
  242. package/dist/packages/runtime/build/source-inventory.d.ts +28 -0
  243. package/dist/packages/runtime/build/source-inventory.js +512 -0
  244. package/dist/packages/runtime/build/source-manifest.d.ts +63 -0
  245. package/dist/packages/runtime/build/source-manifest.js +220 -0
  246. package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
  247. package/dist/packages/runtime/build/stage-evidence.js +386 -0
  248. package/dist/packages/runtime/build/stage-manifest.d.ts +45 -0
  249. package/dist/packages/runtime/build/stage-manifest.js +1125 -0
  250. package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
  251. package/dist/packages/runtime/build/stage-reuse.js +154 -0
  252. package/dist/packages/runtime/build/stage-session.d.ts +81 -0
  253. package/dist/packages/runtime/build/stage-session.js +308 -0
  254. package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
  255. package/dist/packages/runtime/build/state-artifacts.js +14 -0
  256. package/dist/packages/runtime/build/state-health.d.ts +4 -0
  257. package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
  258. package/dist/packages/runtime/build/state-io.d.ts +12 -0
  259. package/dist/packages/runtime/build/state-io.js +118 -0
  260. package/dist/packages/runtime/build/state-view.d.ts +5 -0
  261. package/dist/packages/runtime/build/state-view.js +121 -0
  262. package/dist/packages/runtime/build/state.d.ts +7 -0
  263. package/dist/packages/runtime/build/state.js +12 -0
  264. package/dist/packages/runtime/build/summary-coverage-index.d.ts +21 -0
  265. package/dist/packages/runtime/build/summary-coverage-index.js +189 -0
  266. package/dist/packages/runtime/build/traces.d.ts +30 -0
  267. package/dist/packages/runtime/build/traces.js +133 -0
  268. package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
  269. package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +49 -36
  270. package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
  271. package/dist/packages/{engine → runtime}/build/validate.js +26 -26
  272. package/dist/packages/{engine → runtime}/client.d.ts +18 -18
  273. package/dist/packages/{engine → runtime}/client.js +48 -36
  274. package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
  275. package/dist/packages/{engine → runtime}/connection-config.js +9 -8
  276. package/dist/packages/runtime/context-checks.d.ts +10 -0
  277. package/dist/packages/runtime/context-checks.js +127 -0
  278. package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
  279. package/dist/packages/runtime/context-graph-scaffold.js +135 -0
  280. package/dist/packages/runtime/context-graph-semantic-graph.d.ts +9 -0
  281. package/dist/packages/runtime/context-graph-semantic-graph.js +416 -0
  282. package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
  283. package/dist/packages/runtime/entitlement-guard.js +70 -0
  284. package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
  285. package/dist/packages/{engine → runtime}/execution/index.js +1 -1
  286. package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +272 -191
  287. package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
  288. package/dist/packages/runtime/index.d.ts +29 -0
  289. package/dist/packages/runtime/index.js +21 -0
  290. package/dist/packages/runtime/instance-paths.d.ts +30 -0
  291. package/dist/packages/runtime/instance-paths.js +29 -0
  292. package/dist/packages/runtime/native-run-handlers.d.ts +63 -0
  293. package/dist/packages/{engine → runtime}/native-run-handlers.js +217 -166
  294. package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
  295. package/dist/packages/runtime/plan-artifact-contract.js +42 -0
  296. package/dist/packages/runtime/project-entries.d.ts +11 -0
  297. package/dist/packages/runtime/project-entries.js +49 -0
  298. package/dist/packages/runtime/project-source-state.d.ts +26 -0
  299. package/dist/packages/runtime/project-source-state.js +56 -0
  300. package/dist/packages/runtime/project-store.d.ts +90 -0
  301. package/dist/packages/runtime/project-store.js +195 -0
  302. package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
  303. package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
  304. package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
  305. package/dist/packages/{engine → runtime}/run-observability.js +174 -87
  306. package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
  307. package/dist/packages/runtime/runtime-action-proposals.js +542 -0
  308. package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
  309. package/dist/packages/runtime/runtime-build-plans.js +175 -0
  310. package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
  311. package/dist/packages/runtime/runtime-build-runs.js +555 -0
  312. package/dist/packages/runtime/runtime-caches.d.ts +117 -0
  313. package/dist/packages/runtime/runtime-caches.js +266 -0
  314. package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
  315. package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
  316. package/dist/packages/runtime/runtime-executor.d.ts +22 -0
  317. package/dist/packages/runtime/runtime-executor.js +131 -0
  318. package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
  319. package/dist/packages/runtime/runtime-jobs.js +463 -0
  320. package/dist/packages/runtime/runtime-observability.d.ts +11 -0
  321. package/dist/packages/runtime/runtime-observability.js +39 -0
  322. package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
  323. package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
  324. package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
  325. package/dist/packages/runtime/runtime-project-mutations.js +65 -0
  326. package/dist/packages/runtime/runtime-project-reads.d.ts +18 -0
  327. package/dist/packages/runtime/runtime-project-reads.js +574 -0
  328. package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
  329. package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
  330. package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +23 -16
  331. package/dist/packages/{engine → runtime}/runtime-resource-builders.js +58 -46
  332. package/dist/packages/runtime/runtime-status.d.ts +14 -0
  333. package/dist/packages/runtime/runtime-status.js +15 -0
  334. package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
  335. package/dist/packages/runtime/runtime-verify-runs.js +296 -0
  336. package/dist/packages/runtime/runtime.d.ts +1582 -0
  337. package/dist/packages/runtime/runtime.js +431 -0
  338. package/dist/packages/runtime/schemas/actions.d.ts +1206 -0
  339. package/dist/packages/runtime/schemas/actions.js +117 -0
  340. package/dist/packages/runtime/schemas/agents.d.ts +104 -0
  341. package/dist/packages/runtime/schemas/agents.js +74 -0
  342. package/dist/packages/runtime/schemas/build-plans.d.ts +1132 -0
  343. package/dist/packages/runtime/schemas/build-plans.js +141 -0
  344. package/dist/packages/runtime/schemas/context-graphs.d.ts +1522 -0
  345. package/dist/packages/runtime/schemas/context-graphs.js +110 -0
  346. package/dist/packages/runtime/schemas/files.d.ts +227 -0
  347. package/dist/packages/runtime/schemas/files.js +28 -0
  348. package/dist/packages/runtime/schemas/index.d.ts +9 -0
  349. package/dist/packages/runtime/schemas/index.js +13 -0
  350. package/dist/packages/runtime/schemas/instance.d.ts +141 -0
  351. package/dist/packages/runtime/schemas/instance.js +143 -0
  352. package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
  353. package/dist/packages/runtime/schemas/jobs.js +107 -0
  354. package/dist/packages/runtime/schemas/projects.d.ts +366 -0
  355. package/dist/packages/runtime/schemas/projects.js +160 -0
  356. package/dist/packages/runtime/schemas/runs.d.ts +3445 -0
  357. package/dist/packages/runtime/schemas/runs.js +115 -0
  358. package/dist/packages/runtime/service/index.d.ts +3 -0
  359. package/dist/packages/runtime/service/index.js +3 -0
  360. package/dist/packages/runtime/service/openapi.d.ts +7 -0
  361. package/dist/packages/runtime/service/openapi.js +118 -0
  362. package/dist/packages/runtime/service/operations.d.ts +3011 -0
  363. package/dist/packages/runtime/service/operations.js +375 -0
  364. package/dist/packages/runtime/service/routes.d.ts +114 -0
  365. package/dist/packages/runtime/service/routes.js +128 -0
  366. package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
  367. package/dist/packages/runtime/service/server-api-files.js +85 -0
  368. package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
  369. package/dist/packages/runtime/service/server-app-boot.js +46 -0
  370. package/dist/packages/runtime/service/server-guards.d.ts +63 -0
  371. package/dist/packages/runtime/service/server-guards.js +181 -0
  372. package/dist/packages/runtime/service/server-helpers.d.ts +38 -0
  373. package/dist/packages/runtime/service/server-helpers.js +108 -0
  374. package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
  375. package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
  376. package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
  377. package/dist/packages/runtime/service/server-routes-action-proposals.js +45 -0
  378. package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
  379. package/dist/packages/runtime/service/server-routes-agents.js +132 -0
  380. package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
  381. package/dist/packages/runtime/service/server-routes-auth.js +138 -0
  382. package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
  383. package/dist/packages/runtime/service/server-routes-build-plans.js +86 -0
  384. package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
  385. package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
  386. package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
  387. package/dist/packages/runtime/service/server-routes-events.js +99 -0
  388. package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
  389. package/dist/packages/runtime/service/server-routes-project-context.js +287 -0
  390. package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
  391. package/dist/packages/runtime/service/server-routes-project-jobs.js +137 -0
  392. package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
  393. package/dist/packages/runtime/service/server-routes-project-runs.js +88 -0
  394. package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
  395. package/dist/packages/runtime/service/server-routes-projects.js +96 -0
  396. package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
  397. package/dist/packages/runtime/service/server-routes-runs.js +119 -0
  398. package/dist/packages/runtime/service/server.d.ts +37 -0
  399. package/dist/packages/runtime/service/server.js +300 -0
  400. package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
  401. package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
  402. package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
  403. package/dist/packages/runtime/verify/benchmark-run.js +303 -0
  404. package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
  405. package/dist/packages/{engine → runtime}/verify/index.js +1 -1
  406. package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
  407. package/dist/packages/{engine → runtime}/verify/lib/schema.js +38 -18
  408. package/dist/packages/runtime/verify/test-file-guard.d.ts +2 -0
  409. package/dist/packages/runtime/verify/test-file-guard.js +29 -0
  410. package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +7 -0
  411. package/dist/packages/{engine → runtime}/verify/verify-execution.js +119 -45
  412. package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +5 -4
  413. package/dist/packages/runtime/verify/verify-paths.js +65 -0
  414. package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
  415. package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
  416. package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
  417. package/dist/packages/runtime/verify/verify-specs.js +126 -0
  418. package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
  419. package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
  420. package/dist/packages/runtime/verify/verify-types.js +1 -0
  421. package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
  422. package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
  423. package/dist/packages/runtime/wire-schemas.d.ts +18 -0
  424. package/dist/packages/runtime/wire-schemas.js +27 -0
  425. package/package.json +32 -30
  426. package/public-repo/CONTRIBUTING.md +16 -18
  427. package/public-repo/README.md +119 -282
  428. package/public-repo/SECURITY.md +3 -4
  429. package/public-repo/build-plans/interf-default/README.md +24 -16
  430. package/public-repo/build-plans/interf-default/build/stages/entrypoint/SKILL.md +74 -0
  431. package/public-repo/build-plans/interf-default/build/stages/knowledge/SKILL.md +95 -0
  432. package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +49 -4
  433. package/public-repo/build-plans/interf-default/build-plan.json +49 -39
  434. package/public-repo/build-plans/interf-default/build-plan.schema.json +59 -33
  435. package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
  436. package/public-repo/build-plans/interf-default/use/query/SKILL.md +18 -11
  437. package/public-repo/openapi/local-service.openapi.json +14227 -0
  438. package/public-repo/skills/interf/SKILL.md +508 -187
  439. package/dist/cli/commands/prep.d.ts +0 -2
  440. package/dist/cli/commands/prep.js +0 -240
  441. package/dist/cli/commands/test.d.ts +0 -10
  442. package/dist/cli/commands/test.js +0 -85
  443. package/dist/cli/commands/web.d.ts +0 -2
  444. package/dist/cli/commands/web.js +0 -286
  445. package/dist/interf-ui/404.html +0 -1
  446. package/dist/interf-ui/__next.__PAGE__.txt +0 -10
  447. package/dist/interf-ui/__next._full.txt +0 -20
  448. package/dist/interf-ui/__next._head.txt +0 -5
  449. package/dist/interf-ui/__next._index.txt +0 -5
  450. package/dist/interf-ui/__next._tree.txt +0 -5
  451. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
  452. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
  453. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
  454. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
  455. package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
  456. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
  457. package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
  458. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
  459. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
  460. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
  461. package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
  462. package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
  463. package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
  464. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
  465. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
  466. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
  467. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
  468. package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
  469. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
  470. package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
  471. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
  472. package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
  473. package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  474. package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  475. package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
  476. package/dist/interf-ui/_not-found/__next._full.txt +0 -15
  477. package/dist/interf-ui/_not-found/__next._head.txt +0 -5
  478. package/dist/interf-ui/_not-found/__next._index.txt +0 -5
  479. package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
  480. package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
  481. package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
  482. package/dist/interf-ui/_not-found.html +0 -1
  483. package/dist/interf-ui/_not-found.txt +0 -15
  484. package/dist/interf-ui/index.html +0 -1
  485. package/dist/interf-ui/index.txt +0 -20
  486. package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
  487. package/dist/packages/contracts/lib/preparation-paths.js +0 -177
  488. package/dist/packages/engine/action-definitions.d.ts +0 -407
  489. package/dist/packages/engine/action-definitions.js +0 -1158
  490. package/dist/packages/engine/action-values.d.ts +0 -1
  491. package/dist/packages/engine/action-values.js +0 -1
  492. package/dist/packages/engine/agents/lib/args.d.ts +0 -4
  493. package/dist/packages/engine/agents/lib/args.js +0 -52
  494. package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
  495. package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
  496. package/dist/packages/engine/agents/lib/constants.js +0 -28
  497. package/dist/packages/engine/agents/lib/logs.d.ts +0 -2
  498. package/dist/packages/engine/agents/lib/logs.js +0 -17
  499. package/dist/packages/engine/agents/lib/render.d.ts +0 -8
  500. package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
  501. package/dist/packages/engine/agents/lib/schema.js +0 -7
  502. package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
  503. package/dist/packages/engine/agents/lib/shells.js +0 -1052
  504. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
  505. package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
  506. package/dist/packages/engine/build/billing-events.d.ts +0 -89
  507. package/dist/packages/engine/build/build-pipeline.js +0 -175
  508. package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
  509. package/dist/packages/engine/build/build-plan-runs.js +0 -31
  510. package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
  511. package/dist/packages/engine/build/build-stage-plan.js +0 -100
  512. package/dist/packages/engine/build/build-stage-runner.js +0 -94
  513. package/dist/packages/engine/build/build-target.js +0 -16
  514. package/dist/packages/engine/build/check-evaluator.js +0 -298
  515. package/dist/packages/engine/build/lib/schema.js +0 -316
  516. package/dist/packages/engine/build/reset.d.ts +0 -2
  517. package/dist/packages/engine/build/reset.js +0 -74
  518. package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
  519. package/dist/packages/engine/build/runtime-paths.d.ts +0 -8
  520. package/dist/packages/engine/build/runtime-paths.js +0 -26
  521. package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
  522. package/dist/packages/engine/build/runtime-runs.js +0 -224
  523. package/dist/packages/engine/build/runtime.d.ts +0 -5
  524. package/dist/packages/engine/build/runtime.js +0 -4
  525. package/dist/packages/engine/build/source-files.d.ts +0 -46
  526. package/dist/packages/engine/build/source-files.js +0 -149
  527. package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
  528. package/dist/packages/engine/build/state-artifacts.js +0 -14
  529. package/dist/packages/engine/build/state-health.d.ts +0 -4
  530. package/dist/packages/engine/build/state-io.d.ts +0 -11
  531. package/dist/packages/engine/build/state-io.js +0 -82
  532. package/dist/packages/engine/build/state-paths.d.ts +0 -5
  533. package/dist/packages/engine/build/state-paths.js +0 -16
  534. package/dist/packages/engine/build/state-view.d.ts +0 -5
  535. package/dist/packages/engine/build/state-view.js +0 -94
  536. package/dist/packages/engine/build/state.d.ts +0 -7
  537. package/dist/packages/engine/build/state.js +0 -12
  538. package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
  539. package/dist/packages/engine/build/validate-helpers.js +0 -41
  540. package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
  541. package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
  542. package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
  543. package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
  544. package/dist/packages/engine/cloud-seams.d.ts +0 -115
  545. package/dist/packages/engine/cloud-seams.js +0 -84
  546. package/dist/packages/engine/index.d.ts +0 -22
  547. package/dist/packages/engine/index.js +0 -15
  548. package/dist/packages/engine/instance-paths.d.ts +0 -106
  549. package/dist/packages/engine/instance-paths.js +0 -171
  550. package/dist/packages/engine/lib/schema.d.ts +0 -6304
  551. package/dist/packages/engine/lib/schema.js +0 -730
  552. package/dist/packages/engine/native-run-handlers.d.ts +0 -25
  553. package/dist/packages/engine/preparation-store.d.ts +0 -105
  554. package/dist/packages/engine/preparation-store.js +0 -213
  555. package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
  556. package/dist/packages/engine/readiness-check-draft.js +0 -111
  557. package/dist/packages/engine/requested-artifacts.d.ts +0 -5
  558. package/dist/packages/engine/routes.d.ts +0 -85
  559. package/dist/packages/engine/routes.js +0 -99
  560. package/dist/packages/engine/runtime-caches.d.ts +0 -76
  561. package/dist/packages/engine/runtime-caches.js +0 -191
  562. package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
  563. package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
  564. package/dist/packages/engine/runtime.d.ts +0 -371
  565. package/dist/packages/engine/runtime.js +0 -2463
  566. package/dist/packages/engine/server.d.ts +0 -58
  567. package/dist/packages/engine/server.js +0 -1399
  568. package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
  569. package/dist/packages/engine/verify/readiness-check-run.js +0 -265
  570. package/dist/packages/engine/verify/verify-paths.js +0 -61
  571. package/dist/packages/engine/verify/verify-sandbox.js +0 -88
  572. package/dist/packages/engine/verify/verify-specs.js +0 -114
  573. package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
  574. package/dist/packages/engine/wire-schemas.d.ts +0 -547
  575. package/dist/packages/engine/wire-schemas.js +0 -59
  576. package/dist/packages/project/index.d.ts +0 -9
  577. package/dist/packages/project/interf-bootstrap.d.ts +0 -1
  578. package/dist/packages/project/interf-bootstrap.js +0 -1
  579. package/dist/packages/project/interf-scaffold.d.ts +0 -3
  580. package/dist/packages/project/interf-scaffold.js +0 -136
  581. package/dist/packages/project/interf.d.ts +0 -4
  582. package/dist/packages/project/interf.js +0 -3
  583. package/dist/packages/project/lib/schema.d.ts +0 -328
  584. package/dist/packages/project/lib/schema.js +0 -136
  585. package/dist/packages/project/preparation-entries.d.ts +0 -11
  586. package/dist/packages/project/preparation-entries.js +0 -49
  587. package/dist/packages/project/source-config.d.ts +0 -46
  588. package/dist/packages/project/source-config.js +0 -394
  589. package/dist/packages/project/source-folders.d.ts +0 -11
  590. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +0 -27
  591. package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +0 -21
  592. package/public-repo/plugins/README.md +0 -9
  593. package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
  594. package/public-repo/plugins/interf/.mcp.json +0 -12
  595. package/public-repo/plugins/interf/README.md +0 -32
  596. package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
  597. /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
  598. /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
  599. /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
  600. /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
  601. /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
  602. /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
  603. /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
  604. /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
  605. /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
  606. /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
  607. /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
  608. /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
  609. /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
  610. /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
  611. /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
  612. /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
  613. /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
  614. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
  615. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
  616. /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
@@ -3,23 +3,33 @@ 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
- * Build Plan-declared artifact identifier. Same shape as `BuildPlanIdSchema`
15
- * but conceptually distinct — it identifies a produced thing inside
16
- * one Build Plan, while `BuildPlanIdSchema` identifies the Build Plan itself.
14
+ * The user's agent task for a Project.
15
+ *
16
+ * Project intent is the compact, durable instruction that explains what
17
+ * the Context Graph must prepare the Source for. Build Plans operationalize
18
+ * this field, but Project owns it.
19
+ */
20
+ export const ProjectIntentSchema = z.string().trim().min(1);
21
+ /**
22
+ * Legacy internal output identifier. Same shape as `BuildPlanIdSchema` but
23
+ * conceptually distinct: it identifies a requested output inside one Build
24
+ * Plan, while `BuildPlanIdSchema` identifies the Build Plan itself.
25
+ *
26
+ * The exported name remains `ArtifactIdSchema` until the ABI rename lands.
17
27
  */
18
28
  export const ArtifactIdSchema = z.string().regex(InterfIdPattern);
19
29
  export const RuntimeStageSchema = z.string().regex(InterfIdPattern);
20
30
  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"]);
31
+ export const RuntimeTargetTypeSchema = z.enum(["context-graph"]);
32
+ export const TestTargetTypeSchema = z.enum(["context-graph", "source-files"]);
23
33
  // ───────────────────────────────────────────────────────────────────────────
24
34
  // Path validation
25
35
  //
@@ -57,13 +67,17 @@ export const LocatorSchema = z.object({
57
67
  value: z.string().min(1),
58
68
  }).strict();
59
69
  // ───────────────────────────────────────────────────────────────────────────
60
- // Source primitives — what the user puts in
70
+ // Source primitives — what the user puts in.
61
71
  //
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).
72
+ // `local-folder` is the only Source kind Interf accepts. Cloud / remote
73
+ // storage kinds will be re-introduced when a real variant ships; see
74
+ // `internal/iterations/0.23-service-variant-parking-lot.md`.
65
75
  // ───────────────────────────────────────────────────────────────────────────
66
- export const SourceKindSchema = z.enum(["local-folder", "remote-folder"]);
76
+ export const SourceKindSchema = z.enum(["local-folder"]);
77
+ export const SourceBindingSchema = z.object({
78
+ kind: SourceKindSchema,
79
+ locator: z.string().min(1),
80
+ }).strict();
67
81
  export const SourceSchema = z.object({
68
82
  id: z.string().regex(InterfIdPattern),
69
83
  kind: SourceKindSchema,
@@ -73,6 +87,7 @@ export const SourceFileSchema = z.object({
73
87
  id: z.string().min(1),
74
88
  path: z.string().min(1),
75
89
  locator: z.string().min(1),
90
+ size_bytes: z.number().int().nonnegative().optional(),
76
91
  }).strict();
77
92
  export const SourceFilesSchema = z.object({
78
93
  kind: z.literal("interf-source-files"),
@@ -82,46 +97,367 @@ export const SourceFilesSchema = z.object({
82
97
  source_total: z.number().int().min(0),
83
98
  files: z.array(SourceFileSchema),
84
99
  }).strict();
85
- export const SourceSnapshotSchema = z.object({
86
- kind: z.literal("interf-source-snapshot"),
100
+ export const SourceStateSchema = z.object({
101
+ kind: z.literal("interf-source-state"),
87
102
  version: z.literal(1),
88
- snapshot_id: z.string().min(1),
103
+ graph_id: z.string().min(1),
89
104
  generated_at: z.string().min(1),
90
105
  run_id: z.string().min(1).nullable(),
91
106
  source: SourceSchema,
92
107
  source_total: z.number().int().min(0),
93
108
  files: z.array(SourceFileSchema),
94
109
  }).strict();
110
+ export const SourceInspectableUnitSchema = z.object({
111
+ kind: z.enum(["file", "page", "slide", "sheet", "table", "image", "section"]),
112
+ index: z.number().int().min(1).optional(),
113
+ label: z.string().min(1).optional(),
114
+ }).strict();
115
+ export const SourceManifestEvidenceSchema = z.object({
116
+ kind: z.enum(["agent-observation", "connector-metadata", "user-provided"]),
117
+ summary: z.string().min(1),
118
+ }).strict();
119
+ export const SourceManifestFileKindSchema = z.enum([
120
+ "pdf",
121
+ "document",
122
+ "spreadsheet",
123
+ "presentation",
124
+ "image",
125
+ "text",
126
+ "other",
127
+ ]);
128
+ export const SourceManifestFileSchema = SourceFileSchema.extend({
129
+ path: z.string().min(1).refine(isInterfRelativePath, {
130
+ message: "Source manifest paths must be relative and cannot contain path traversal.",
131
+ }),
132
+ kind: SourceManifestFileKindSchema.default("other"),
133
+ size_bytes: z.number().int().nonnegative().optional(),
134
+ content_hash: z.string().min(1).optional(),
135
+ page_count: z.number().int().min(1).optional(),
136
+ inspectable_units: z.array(SourceInspectableUnitSchema).default([]),
137
+ confidence: z.enum(["high", "medium", "low"]).default("medium"),
138
+ evidence: z.array(SourceManifestEvidenceSchema).min(1),
139
+ }).strict();
140
+ export const SourceManifestScannerSchema = z.object({
141
+ executor: z.string().min(1),
142
+ agent_label: z.string().min(1),
143
+ attempt: z.number().int().min(1),
144
+ }).strict();
145
+ export const SourceManifestSchema = z.object({
146
+ kind: z.literal("interf-source-manifest"),
147
+ version: z.literal(1),
148
+ manifest_id: z.string().min(1),
149
+ generated_at: z.string().min(1),
150
+ run_id: z.string().min(1).nullable(),
151
+ project: ProjectIdSchema,
152
+ source: SourceSchema,
153
+ scanner: SourceManifestScannerSchema,
154
+ source_total: z.number().int().min(1),
155
+ files: z.array(SourceManifestFileSchema).min(1),
156
+ warnings: z.array(z.string().min(1)).default([]),
157
+ }).strict().superRefine((value, ctx) => {
158
+ if (value.files.length !== value.source_total) {
159
+ ctx.addIssue({
160
+ code: z.ZodIssueCode.custom,
161
+ path: ["source_total"],
162
+ message: "source_total must equal files.length.",
163
+ });
164
+ }
165
+ const ids = new Set();
166
+ const paths = new Set();
167
+ for (const [index, file] of value.files.entries()) {
168
+ if (ids.has(file.id)) {
169
+ ctx.addIssue({
170
+ code: z.ZodIssueCode.custom,
171
+ path: ["files", index, "id"],
172
+ message: `Duplicate source file id: ${file.id}.`,
173
+ });
174
+ }
175
+ ids.add(file.id);
176
+ if (paths.has(file.path)) {
177
+ ctx.addIssue({
178
+ code: z.ZodIssueCode.custom,
179
+ path: ["files", index, "path"],
180
+ message: `Duplicate source file path: ${file.path}.`,
181
+ });
182
+ }
183
+ paths.add(file.path);
184
+ }
185
+ });
186
+ export const SourceManifestAuditSchema = z.object({
187
+ kind: z.literal("interf-source-manifest-audit"),
188
+ version: z.literal(1),
189
+ run_id: z.string().min(1).nullable(),
190
+ manifest_id: z.string().min(1),
191
+ generated_at: z.string().min(1),
192
+ auditor: SourceManifestScannerSchema,
193
+ verdict: z.enum(["pass", "fail", "needs-review"]),
194
+ findings: z.array(z.string().min(1)).default([]),
195
+ }).strict();
95
196
  export const StageInputSchema = z.object({
96
197
  source_file_id: z.string().min(1),
97
198
  path: z.string().min(1),
98
199
  locator: z.string().min(1),
200
+ kind: SourceManifestFileKindSchema.default("other").optional(),
201
+ size_bytes: z.number().int().nonnegative().optional(),
202
+ page_count: z.number().int().min(1).optional(),
203
+ inspectable_units: z.array(SourceInspectableUnitSchema).default([]).optional(),
204
+ content_hash: z.string().min(1).optional(),
99
205
  }).strict();
100
206
  export const StageInputsSchema = z.object({
101
207
  kind: z.literal("interf-stage-inputs"),
102
- version: z.literal(1),
208
+ version: z.literal(3),
103
209
  generated_at: z.string().min(1),
104
210
  run_id: z.string().min(1).nullable(),
105
211
  build_plan: BuildPlanIdSchema,
106
212
  stage: RuntimeStageSchema,
107
- source_snapshot_id: z.string().min(1),
213
+ source_state_id: z.string().min(1),
214
+ source_manifest_id: z.string().min(1),
108
215
  input_total: z.number().int().min(0),
109
216
  inputs: z.array(StageInputSchema),
110
- }).strict();
217
+ }).strict().superRefine((value, ctx) => {
218
+ if (value.input_total !== value.inputs.length) {
219
+ ctx.addIssue({
220
+ code: z.ZodIssueCode.custom,
221
+ path: ["input_total"],
222
+ message: "input_total must equal inputs.length.",
223
+ });
224
+ }
225
+ });
111
226
  export const SourceBuildMaxAttemptsSchema = z.number().int().min(1).max(5);
112
227
  export const SourceBuildMaxLoopsSchema = z.number().int().min(1).max(3);
113
228
  // ───────────────────────────────────────────────────────────────────────────
114
- // Check / Proof / Ready the locked verification vocabulary
229
+ // Context Graph manifestscanonical coverage/runtime proof
230
+ // ───────────────────────────────────────────────────────────────────────────
231
+ export const ResourceRoleSchema = z.enum([
232
+ "source",
233
+ "summary",
234
+ "knowledge",
235
+ "entrypoint",
236
+ "diagnostic",
237
+ "other",
238
+ ]);
239
+ export const MetricKeySchema = z.string().regex(/^[a-z][a-z0-9_.:-]*$/);
240
+ export const ResourceRefSchema = z.object({
241
+ id: z.string().min(1),
242
+ role: ResourceRoleSchema,
243
+ kind: z.string().min(1),
244
+ label: z.string().min(1),
245
+ path: z.string().min(1).refine(isInterfRelativePath, {
246
+ message: "Resource paths must stay inside their root (no `..`, no absolute paths).",
247
+ }).optional(),
248
+ locator: z.string().min(1).optional(),
249
+ stage_id: RuntimeStageSchema.optional(),
250
+ source_refs: z.array(z.string().min(1)).default([]),
251
+ links: z.array(z.string().min(1)).default([]),
252
+ required: z.boolean().default(false),
253
+ metadata: z.record(z.string(), z.unknown()).optional(),
254
+ }).strict();
255
+ // metadata.guarantee groups a metric under one honest guarantee: "coverage" (every Source file read), "traceability" (every claim/summary/knowledge node linked). Verification (qa_match) is a separate fallible Check scope, never a coverage/traceability metric and never gates readiness.
256
+ export const MetricCountSchema = z.object({
257
+ key: MetricKeySchema,
258
+ label: z.string().min(1),
259
+ value: z.number().int().min(0),
260
+ total: z.number().int().min(0).optional(),
261
+ unit: z.string().min(1).optional(),
262
+ primary: z.boolean().default(false),
263
+ issue_state: z.enum(["pass", "missing", "review", "fail"]).optional(),
264
+ detail: z.string().min(1).optional(),
265
+ metadata: z.record(z.string(), z.unknown()).optional(),
266
+ }).strict().superRefine((value, ctx) => {
267
+ if (typeof value.total === "number" && value.value > value.total) {
268
+ ctx.addIssue({
269
+ code: z.ZodIssueCode.custom,
270
+ path: ["value"],
271
+ message: "Metric value cannot exceed total.",
272
+ });
273
+ }
274
+ });
275
+ export const ReviewedInputDecisionSchema = z.enum([
276
+ "used",
277
+ "reviewed",
278
+ "missing",
279
+ "blocked",
280
+ "not-relevant",
281
+ ]);
282
+ export const ReviewedInputSchema = z.object({
283
+ resource_id: z.string().min(1),
284
+ decision: ReviewedInputDecisionSchema,
285
+ reason: z.string().min(1).optional(),
286
+ output_resource_ids: z.array(z.string().min(1)).default([]),
287
+ source_refs: z.array(z.string().min(1)).default([]),
288
+ metadata: z.record(z.string(), z.unknown()).optional(),
289
+ }).strict();
290
+ export const MissingInputSchema = z.object({
291
+ resource_id: z.string().min(1),
292
+ status: z.enum(["missing", "blocked", "not-relevant"]),
293
+ reason: z.string().min(1),
294
+ }).strict();
295
+ /**
296
+ * Stage runtime-file contracts: the `expected-inputs.json` and
297
+ * `reviewed-inputs.json` files a stage shell reads and writes. Defined once
298
+ * here so the build engine (stage-manifest writer, native entrypoint reader)
299
+ * and any future client validate against one shape instead of a hand-rolled
300
+ * parallel `interface`.
301
+ */
302
+ export const ExpectedInputsFileSchema = z.object({
303
+ kind: z.literal("interf-stage-expected-inputs"),
304
+ version: z.literal(1),
305
+ generated_at: z.string().min(1),
306
+ stage_id: z.string().min(1),
307
+ expected: z.array(ResourceRefSchema),
308
+ }).strict();
309
+ export const ReviewedInputsFileSchema = z.object({
310
+ kind: z.literal("interf-stage-reviewed-inputs"),
311
+ version: z.literal(1),
312
+ generated_at: z.string().min(1),
313
+ stage_id: z.string().min(1),
314
+ reviewed: z.array(ReviewedInputSchema),
315
+ }).strict();
316
+ export const StageManifestSchema = z.object({
317
+ kind: z.literal("interf-stage-manifest"),
318
+ version: z.literal(1),
319
+ generated_at: z.string().min(1),
320
+ project: ProjectIdSchema,
321
+ run_id: z.string().min(1).nullable(),
322
+ build_plan: BuildPlanIdSchema,
323
+ stage_id: RuntimeStageSchema,
324
+ stage_label: z.string().min(1),
325
+ role: ResourceRoleSchema,
326
+ summary: z.string().min(1),
327
+ input_manifests: z.array(ResourceRefSchema).default([]),
328
+ expected: z.array(ResourceRefSchema).default([]),
329
+ reviewed: z.array(ReviewedInputSchema).default([]),
330
+ referenced: z.array(ResourceRefSchema).default([]),
331
+ missing: z.array(MissingInputSchema).default([]),
332
+ produced: z.array(ResourceRefSchema).default([]),
333
+ metrics: z.array(MetricCountSchema).default([]),
334
+ }).strict().superRefine((value, ctx) => {
335
+ for (const field of ["input_manifests", "expected", "referenced", "produced"]) {
336
+ const seen = new Set();
337
+ for (const [index, resource] of value[field].entries()) {
338
+ if (seen.has(resource.id)) {
339
+ ctx.addIssue({
340
+ code: z.ZodIssueCode.custom,
341
+ path: [field, index, "id"],
342
+ message: `Duplicate resource id: ${resource.id}.`,
343
+ });
344
+ }
345
+ seen.add(resource.id);
346
+ }
347
+ }
348
+ const expectedIds = new Set(value.expected.map((resource) => resource.id));
349
+ const producedIds = new Set(value.produced.map((resource) => resource.id));
350
+ const reviewedIds = new Set(value.reviewed.map((review) => review.resource_id));
351
+ const missingIds = new Set(value.missing.map((entry) => entry.resource_id));
352
+ for (const [index, review] of value.reviewed.entries()) {
353
+ if (!expectedIds.has(review.resource_id)) {
354
+ ctx.addIssue({
355
+ code: z.ZodIssueCode.custom,
356
+ path: ["reviewed", index, "resource_id"],
357
+ message: `Reviewed input "${review.resource_id}" is not in expected inputs.`,
358
+ });
359
+ }
360
+ for (const [outputIndex, outputId] of review.output_resource_ids.entries()) {
361
+ if (!producedIds.has(outputId)) {
362
+ ctx.addIssue({
363
+ code: z.ZodIssueCode.custom,
364
+ path: ["reviewed", index, "output_resource_ids", outputIndex],
365
+ message: `Reviewed input references unknown produced output "${outputId}".`,
366
+ });
367
+ }
368
+ }
369
+ }
370
+ for (const [index, entry] of value.missing.entries()) {
371
+ if (!expectedIds.has(entry.resource_id)) {
372
+ ctx.addIssue({
373
+ code: z.ZodIssueCode.custom,
374
+ path: ["missing", index, "resource_id"],
375
+ message: `Missing input "${entry.resource_id}" is not in expected inputs.`,
376
+ });
377
+ }
378
+ }
379
+ for (const [index, resource] of value.expected.entries()) {
380
+ if (resource.required !== true)
381
+ continue;
382
+ if (!reviewedIds.has(resource.id) && !missingIds.has(resource.id)) {
383
+ ctx.addIssue({
384
+ code: z.ZodIssueCode.custom,
385
+ path: ["expected", index, "id"],
386
+ message: `Required expected input "${resource.id}" must be reviewed or marked missing.`,
387
+ });
388
+ }
389
+ }
390
+ });
391
+ export const GraphManifestStageSummarySchema = z.object({
392
+ stage_id: RuntimeStageSchema,
393
+ stage_label: z.string().min(1),
394
+ role: ResourceRoleSchema,
395
+ manifest_path: z.string().min(1).refine(isInterfRelativePath, {
396
+ message: "Stage manifest paths must stay inside the Context Graph root.",
397
+ }),
398
+ summary: z.string().min(1),
399
+ produced_total: z.number().int().min(0),
400
+ missing_required_total: z.number().int().min(0),
401
+ metrics: z.array(MetricCountSchema).default([]),
402
+ }).strict();
403
+ export const GraphReadinessRollupSchema = z.object({
404
+ status: z.enum(["ready", "not-ready"]),
405
+ ready: z.boolean(),
406
+ summary: z.string().min(1),
407
+ context_graph_path: z.string().min(1).nullable().optional(),
408
+ missing_required_total: z.number().int().min(0),
409
+ missing: z.array(MissingInputSchema).default([]),
410
+ }).strict();
411
+ export const GraphOutputCountsSchema = z.object({
412
+ nodes: z.number().int().min(0),
413
+ edges: z.number().int().min(0),
414
+ notes: z.number().int().min(0),
415
+ links: z.number().int().min(0),
416
+ source_refs: z.number().int().min(0),
417
+ claims: z.number().int().min(0).optional(),
418
+ entities: z.number().int().min(0).optional(),
419
+ }).strict();
420
+ export const GraphManifestSchema = z.object({
421
+ kind: z.literal("interf-graph-manifest"),
422
+ version: z.literal(1),
423
+ generated_at: z.string().min(1),
424
+ project: ProjectIdSchema,
425
+ graph_id: z.string().min(1),
426
+ run_id: z.string().min(1).nullable(),
427
+ build_plan: BuildPlanIdSchema,
428
+ intent: ProjectIntentSchema.nullable(),
429
+ graph_path: z.string().min(1),
430
+ primary_metrics: z.array(MetricCountSchema).default([]),
431
+ stages: z.array(GraphManifestStageSummarySchema).default([]),
432
+ entrypoints: z.array(ResourceRefSchema).default([]),
433
+ resources: z.array(ResourceRefSchema).default([]),
434
+ graph_outputs: GraphOutputCountsSchema,
435
+ readiness: GraphReadinessRollupSchema,
436
+ }).strict().superRefine((value, ctx) => {
437
+ const resourceIds = new Set();
438
+ for (const [index, resource] of value.resources.entries()) {
439
+ if (resourceIds.has(resource.id)) {
440
+ ctx.addIssue({
441
+ code: z.ZodIssueCode.custom,
442
+ path: ["resources", index, "id"],
443
+ message: `Duplicate graph resource id: ${resource.id}.`,
444
+ });
445
+ }
446
+ resourceIds.add(resource.id);
447
+ }
448
+ });
449
+ // ───────────────────────────────────────────────────────────────────────────
450
+ // Check / Diagnostics / Ready — legacy verification primitives
115
451
  //
116
452
  // Three words doing three precise jobs:
117
453
  // - Check: the rule that must pass (with a `kind` and optional params)
118
- // - Proof: evidence a check ran (pass/fail + summary + details)
454
+ // - Diagnostics: records that a check ran (pass/fail + summary + details)
119
455
  // - Ready: aggregate verdict (`ready` or `not_ready`)
120
456
  //
121
457
  // A check has a SCOPE (where it's declared), not a different name:
122
458
  // - 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`
459
+ // - Output diagnostic — Build Plan-declared per requested output; runs end-of-build
460
+ // - benchmark check Project-declared Q&A / fact check; runs on `interf benchmark`
125
461
  //
126
462
  // Same `Check` primitive across all three scopes. Same `CheckKind`
127
463
  // canonical list - Build Plans, users, and engine code pick from it.
@@ -130,31 +466,153 @@ export const SourceBuildMaxLoopsSchema = z.number().int().min(1).max(3);
130
466
  * Canonical check kinds the engine knows how to evaluate.
131
467
  *
132
468
  * Adding a new kind requires an engine release (the evaluator must
133
- * implement it). Build Plans and user checks pick from this list; they
469
+ * implement it). Plans and user checks pick from this list; they
134
470
  * cannot invent custom kinds.
135
471
  *
136
472
  * file_exists — file is present and non-empty
473
+ * source_manifest_valid — source-manifest.json exists, parses, and has at least one file
137
474
  * min_file_count — directory has ≥ N files (params: { min: number })
138
475
  * min_file_count_matches_source — directory has ≥ source_total files (the "all files analyzed" check)
476
+ * source_summary_folders — summaries directory has ≥ source_total source folders, each with summary.md or manifest.md
477
+ * source_page_coverage — page summary outputs exist for every manifest page unit
139
478
  * frontmatter_valid — every markdown file has parseable YAML frontmatter
140
479
  * frontmatter_required_keys — every markdown file has these frontmatter keys (params: { keys: string[] })
480
+ * frontmatter_nonempty_keys — every markdown file has non-empty values for these frontmatter keys
481
+ * source_refs_required — every markdown file has non-empty source_refs/source_ref/source_path frontmatter
482
+ * summary_backlinks_present — every summary cited by a note's source_refs is also wikilinked from that layer (no orphaned summaries)
483
+ * knowledge_web_connectivity — every knowledge note links at least one OTHER knowledge note (no disconnected islands in the knowledge web)
484
+ * graph_notes_connected — every markdown note across the WHOLE Context Graph (summaries, knowledge, artifacts, home) is link-connected to at least one other note (no free-floating island anywhere, including uncited summaries)
141
485
  * 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 })
486
+ * must_not_contain — file/directory does not contain forbidden phrases (params: { phrases: string[] } or { text: string })
487
+ * must_contain — file/directory contains required phrases (params: { phrases: string[] } or { text: string })
488
+ * qa_match — user-defined Q/A: agent answer matches expected (params: { expected: string, strictness?: "loose" | "strict" })
145
489
  */
146
490
  export const CHECK_KINDS = [
147
491
  "file_exists",
492
+ "source_manifest_valid",
148
493
  "min_file_count",
149
494
  "min_file_count_matches_source",
495
+ "source_summary_folders",
496
+ "source_page_coverage",
150
497
  "frontmatter_valid",
151
498
  "frontmatter_required_keys",
499
+ "frontmatter_nonempty_keys",
500
+ "source_refs_required",
501
+ "summary_backlinks_present",
502
+ "knowledge_web_connectivity",
503
+ "graph_notes_connected",
152
504
  "wikilinks_valid",
153
505
  "must_not_contain",
154
506
  "must_contain",
155
507
  "qa_match",
156
508
  ];
157
509
  export const CheckKindSchema = z.enum(CHECK_KINDS);
510
+ export const CHECK_PARAM_CONTRACTS = {
511
+ file_exists: {
512
+ params: {},
513
+ examples: [{}],
514
+ },
515
+ source_manifest_valid: {
516
+ params: {
517
+ path: "optional manifest path; defaults to .interf/runtime/source-manifest.json",
518
+ },
519
+ examples: [{}],
520
+ },
521
+ min_file_count: {
522
+ params: {
523
+ min: "optional number; defaults to 1",
524
+ },
525
+ examples: [{ min: 26 }],
526
+ },
527
+ min_file_count_matches_source: {
528
+ params: {
529
+ match: "optional count key string; defaults to source_total",
530
+ },
531
+ examples: [{ match: "source_total" }],
532
+ },
533
+ source_summary_folders: {
534
+ params: {
535
+ match: "optional count key string; defaults to source_total",
536
+ summary_file: "optional filename string; defaults to summary.md",
537
+ manifest_file: "optional filename string; defaults to manifest.md",
538
+ },
539
+ examples: [{ match: "source_total" }],
540
+ },
541
+ source_page_coverage: {
542
+ params: {
543
+ pages_dir: "optional directory name inside each source summary folder; defaults to pages",
544
+ summary_file: "optional filename string; defaults to summary.md",
545
+ },
546
+ examples: [{ pages_dir: "pages" }],
547
+ },
548
+ frontmatter_valid: {
549
+ params: {},
550
+ examples: [{}],
551
+ },
552
+ frontmatter_required_keys: {
553
+ params: {
554
+ keys: "required string[]",
555
+ },
556
+ examples: [{ keys: ["page", "title", "summary"] }],
557
+ },
558
+ frontmatter_nonempty_keys: {
559
+ params: {
560
+ keys: "required string[]",
561
+ },
562
+ examples: [{ keys: ["source_refs", "verification_state"] }],
563
+ },
564
+ source_refs_required: {
565
+ params: {
566
+ keys: "optional string[]; defaults to source_refs, source_ref, source_path",
567
+ },
568
+ examples: [{ keys: ["source_refs"] }],
569
+ },
570
+ summary_backlinks_present: {
571
+ params: {
572
+ summaries_dir: "optional summaries directory name; defaults to summaries",
573
+ summary_file: "optional summary filename; defaults to summary.md",
574
+ manifest_file: "optional manifest filename; defaults to manifest.md",
575
+ },
576
+ examples: [{}, { summaries_dir: "summaries" }],
577
+ },
578
+ knowledge_web_connectivity: {
579
+ params: {
580
+ knowledge_dir: "optional knowledge directory; defaults to the artifact's own target path. May only narrow the scan to a path inside that target layer.",
581
+ },
582
+ examples: [{}, { knowledge_dir: "knowledge" }],
583
+ },
584
+ graph_notes_connected: {
585
+ params: {
586
+ graph_root: "optional graph-root-relative directory to scan; defaults to the Context Graph root (every note in every layer). Use to narrow the floor to one layer (e.g. summaries) when a Build Plan splits the connectivity floor across outputs.",
587
+ },
588
+ examples: [{}, { graph_root: "summaries" }],
589
+ },
590
+ wikilinks_valid: {
591
+ params: {},
592
+ examples: [{}],
593
+ },
594
+ must_not_contain: {
595
+ params: {
596
+ phrases: "preferred string[] of forbidden phrases",
597
+ text: "optional string shorthand for one forbidden phrase",
598
+ },
599
+ examples: [{ phrases: ["TODO", "Not yet built."] }, { text: "TODO" }],
600
+ },
601
+ must_contain: {
602
+ params: {
603
+ phrases: "preferred string[] of required phrases",
604
+ text: "optional string shorthand for one required phrase",
605
+ },
606
+ examples: [{ phrases: ["Bristol", "Central London"] }, { text: "Bristol" }],
607
+ },
608
+ qa_match: {
609
+ params: {
610
+ expected: "required expected answer string",
611
+ strictness: "optional string; loose or strict; defaults to loose",
612
+ },
613
+ examples: [{ expected: "Acme Corp", strictness: "loose" }],
614
+ },
615
+ };
158
616
  /**
159
617
  * One check declaration. Reusable across stage/artifact/user scopes.
160
618
  *
@@ -164,7 +622,7 @@ export const CheckKindSchema = z.enum(CHECK_KINDS);
164
622
  * rule-specific config (typed at the engine evaluator).
165
623
  *
166
624
  * `required: true` (default) → a failed check fails the parent
167
- * (stage/artifact/preparation). `required: false` → soft check, fails
625
+ * (stage/artifact/Project). `required: false` → soft check, fails
168
626
  * warn but don't block the `ready` verdict.
169
627
  */
170
628
  export const CheckSchema = z.object({
@@ -179,7 +637,7 @@ export const CheckSchema = z.object({
179
637
  * short one-line label for the UI; `details` carries rule-specific
180
638
  * structured data (e.g., file count, missing keys, broken link list).
181
639
  */
182
- export const ProofSchema = z.object({
640
+ export const CheckResultSchema = z.object({
183
641
  check_id: z.string().regex(InterfIdPattern),
184
642
  kind: CheckKindSchema,
185
643
  passed: z.boolean(),
@@ -188,9 +646,36 @@ export const ProofSchema = z.object({
188
646
  details: z.record(z.string(), z.unknown()).optional(),
189
647
  evaluated_at: z.string().min(1),
190
648
  }).strict();
649
+ export const ContextCheckStatusSchema = z.enum([
650
+ "pending",
651
+ "running",
652
+ "passed",
653
+ "failed",
654
+ "skipped",
655
+ ]);
656
+ /**
657
+ * Legacy Build Plan check declaration. Current product surfaces should prefer
658
+ * concrete coverage metrics, Stage Manifests, and Graph Manifest readiness.
659
+ * Deterministic output diagnostics remain nested under requested outputs and
660
+ * use `CheckSchema`.
661
+ */
662
+ export const ContextCheckDeclarationSchema = z.object({
663
+ id: z.string().regex(InterfIdPattern),
664
+ label: z.string().min(1),
665
+ description: z.string().min(1).optional(),
666
+ backed_by_artifact_ids: z.array(ArtifactIdSchema).default([]),
667
+ required: z.boolean().default(true),
668
+ evidence_expectation: z.string().min(1).optional(),
669
+ }).strict();
670
+ export const ContextCheckProjectionSchema = ContextCheckDeclarationSchema.extend({
671
+ status: ContextCheckStatusSchema.optional(),
672
+ evidence: z.string().min(1).optional(),
673
+ issue: z.string().min(1).optional(),
674
+ }).strict();
675
+ export const ContextCheckSchema = ContextCheckProjectionSchema;
191
676
  /**
192
677
  * Per-thing readiness verdict. Used for an artifact, a stage, or a
193
- * preparation. Aggregate verdict over its required checks.
678
+ * Project. Aggregate verdict over its required checks.
194
679
  */
195
680
  export const ReadyVerdictSchema = z.enum(["ready", "not_ready", "failed", "skipped"]);
196
681
  /**
@@ -201,6 +686,9 @@ export const ReadyVerdictSchema = z.enum(["ready", "not_ready", "failed", "skipp
201
686
  */
202
687
  export const STANDARD_EVIDENCE_FRONTMATTER_KEYS = [
203
688
  "source",
689
+ "source_file_id",
690
+ "source_path",
691
+ "source_locator",
204
692
  "source_kind",
205
693
  "evidence_tier",
206
694
  "truth_mode",
@@ -210,33 +698,31 @@ export const STANDARD_EVIDENCE_FRONTMATTER_KEYS = [
210
698
  // Artifact — a produced thing the user can see and verify
211
699
  //
212
700
  // 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
701
+ // distinction — if it's named, it's an Artifact. The runtime reserves
214
702
  // `.interf/runtime/` as its own namespace by convention; those paths
215
703
  // are not artifacts.
216
704
  // ───────────────────────────────────────────────────────────────────────────
217
705
  /**
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.
706
+ * Where an Artifact materializes. `path` is always relative to the
707
+ * Context Graph root, and `artifact_kind` tells consumers whether the
708
+ * target materializes as a file or directory. The `kind: "path"`
709
+ * discriminator is retained on the wire so a future shape variant can be
710
+ * added as a discriminated union without renaming existing data.
223
711
  */
224
712
  export const ArtifactPathShapeSchema = z.object({
225
713
  kind: z.literal("path"),
226
714
  path: z.string().min(1).refine(isInterfRelativePath, {
227
- message: "Artifact paths must stay inside the verifiable-context root (no `..`, no absolute paths).",
715
+ message: "Artifact paths must stay inside the Context Graph root (no `..`, no absolute paths).",
228
716
  }),
229
717
  artifact_kind: z.enum(["file", "directory"]),
230
718
  }).strict();
231
- export const ArtifactShapeSchema = z.discriminatedUnion("kind", [
232
- ArtifactPathShapeSchema,
233
- ]);
719
+ export const ArtifactShapeSchema = ArtifactPathShapeSchema;
234
720
  /**
235
- * Build Plan-declared Artifact — a produced thing.
721
+ * Legacy internal requested-output schema.
236
722
  *
237
723
  * `checks[]` is the locked vocabulary: an array of `Check` (with
238
724
  * `kind` from `CHECK_KINDS`). The runtime evaluates them via the
239
- * shared check evaluator and produces `Proof[]` on each Build run.
725
+ * shared check evaluator and produces `CheckResult[]` on each Build.
240
726
  */
241
727
  export const ArtifactSchema = z.object({
242
728
  id: ArtifactIdSchema,
@@ -246,8 +732,8 @@ export const ArtifactSchema = z.object({
246
732
  built_by_stages: z.array(z.string().regex(InterfIdPattern)).default([]),
247
733
  }).strict();
248
734
  /**
249
- * Per-Artifact runtime status. Lives on Build run resources and on
250
- * preparation resources. `proofs[]` carries the structured evidence
735
+ * Per-Artifact runtime status. Lives on Build resources and on
736
+ * Project resources. `check_results[]` carries the structured evidence
251
737
  * emitted by the shared check evaluator.
252
738
  */
253
739
  export const ArtifactStatusValueSchema = ReadyVerdictSchema;
@@ -255,14 +741,121 @@ export const ArtifactStatusSchema = z.object({
255
741
  artifact_id: ArtifactIdSchema,
256
742
  status: ReadyVerdictSchema,
257
743
  built_by_stages: z.array(z.string().regex(InterfIdPattern)).default([]),
258
- proofs: z.array(ProofSchema).default([]),
744
+ check_results: z.array(CheckResultSchema).default([]),
259
745
  summary: z.string().min(1).optional(),
260
746
  }).strict();
261
747
  // ───────────────────────────────────────────────────────────────────────────
262
- // Readiness preparation-level aggregate verdict
748
+ // Supplemental graph diagnostics
263
749
  //
264
- // Rolls up artifact statuses + user-check results + engine-level gates
265
- // (is the prep configured, has a Build run, etc.) into a single
750
+ // Diagnostic rows are secondary review records for a Build. They deliberately
751
+ // keep the surface small:
752
+ // assertion label + metric + evidence link/ref + optional issue state
753
+ //
754
+ // Denominators are engine-owned (Source inventory or declared Build Plan
755
+ // expectations). Observed values come from Build runs: stage records,
756
+ // accepted Outputs, validators, and traces. Benchmarks remain separate.
757
+ // ───────────────────────────────────────────────────────────────────────────
758
+ export const BuildEvidenceIssueStateSchema = z.enum([
759
+ "pass",
760
+ "missing",
761
+ "review",
762
+ "fail",
763
+ ]);
764
+ export const BuildEvidenceMetricSchema = z.object({
765
+ observed: z.number().int().min(0),
766
+ total: z.number().int().min(0).optional(),
767
+ unit: z.string().min(1).optional(),
768
+ }).strict();
769
+ export const BuildEvidenceRefSchema = z.object({
770
+ kind: z.enum([
771
+ "source-inventory",
772
+ "stage-record",
773
+ "output",
774
+ "validator",
775
+ "trace",
776
+ "stage-evidence",
777
+ ]),
778
+ label: z.string().min(1),
779
+ ref: z.string().min(1).optional(),
780
+ path: z.string().min(1).optional(),
781
+ run_id: z.string().min(1).optional(),
782
+ stage_id: z.string().regex(InterfIdPattern).optional(),
783
+ artifact_id: ArtifactIdSchema.optional(),
784
+ }).strict();
785
+ export const BuildCheckRowSchema = z.object({
786
+ id: z.string().regex(InterfIdPattern),
787
+ assertion: z.string().min(1),
788
+ metric: BuildEvidenceMetricSchema,
789
+ evidence: BuildEvidenceRefSchema,
790
+ issue_state: BuildEvidenceIssueStateSchema.optional(),
791
+ issue: z.string().min(1).optional(),
792
+ }).strict();
793
+ export const BuildEvidenceResourceSchema = z.object({
794
+ kind: z.literal("interf-build-evidence"),
795
+ version: z.literal(1),
796
+ generated_at: z.string().min(1),
797
+ project_id: z.string().min(1),
798
+ build_run_id: z.string().min(1).nullable(),
799
+ ready: z.boolean(),
800
+ summary: z.string().min(1),
801
+ rows: z.array(BuildCheckRowSchema).default([]),
802
+ }).strict();
803
+ export const EvidenceCountKeySchema = MetricKeySchema;
804
+ export const StageEvidenceSourceRefSchema = z.object({
805
+ path: z.string().min(1),
806
+ source_file_id: z.string().min(1).optional(),
807
+ locator: z.string().min(1).optional(),
808
+ }).strict();
809
+ export const StageEvidenceOutputRefSchema = z.object({
810
+ artifact_id: ArtifactIdSchema,
811
+ path: z.string().min(1).refine(isInterfRelativePath, {
812
+ message: "Output refs must stay inside the Context Graph root.",
813
+ }),
814
+ }).strict();
815
+ export const StageEvidenceCountSchema = z.object({
816
+ key: EvidenceCountKeySchema,
817
+ label: z.string().min(1),
818
+ value: z.number().int().min(0),
819
+ total: z.number().int().min(0).optional(),
820
+ unit: z.string().min(1).optional(),
821
+ source: z.enum(["engine", "stage"]),
822
+ stage_id: z.string().regex(InterfIdPattern).optional(),
823
+ artifact_id: ArtifactIdSchema.optional(),
824
+ primary: z.boolean().optional(),
825
+ expected: z.boolean().optional(),
826
+ }).strict();
827
+ export const StageEvidenceItemSchema = z.object({
828
+ id: z.string().regex(InterfIdPattern),
829
+ kind: EvidenceCountKeySchema,
830
+ label: z.string().min(1),
831
+ summary: z.string().min(1).optional(),
832
+ source_refs: z.array(StageEvidenceSourceRefSchema).default([]),
833
+ output_refs: z.array(StageEvidenceOutputRefSchema).default([]),
834
+ stage_id: z.string().regex(InterfIdPattern),
835
+ artifact_id: ArtifactIdSchema.optional(),
836
+ metadata: z.record(z.string(), z.unknown()).optional(),
837
+ }).strict();
838
+ export const StageEvidenceEdgeSchema = z.object({
839
+ from: z.string().regex(InterfIdPattern),
840
+ to: z.string().regex(InterfIdPattern),
841
+ relation: EvidenceCountKeySchema,
842
+ stage_id: z.string().regex(InterfIdPattern),
843
+ }).strict();
844
+ export const StageEvidenceSchema = z.object({
845
+ kind: z.literal("interf-stage-evidence"),
846
+ version: z.literal(1),
847
+ run_id: z.string().min(1),
848
+ stage: z.string().regex(InterfIdPattern),
849
+ counts: z.array(StageEvidenceCountSchema).default([]),
850
+ items: z.array(StageEvidenceItemSchema).default([]),
851
+ edges: z.array(StageEvidenceEdgeSchema).default([]),
852
+ warnings: z.array(z.string().min(1)).optional(),
853
+ }).strict();
854
+ // ───────────────────────────────────────────────────────────────────────────
855
+ // Readiness — project-level aggregate verdict
856
+ //
857
+ // Rolls up output diagnostics, benchmark results, and engine-level gates
858
+ // (is the project configured, has a Build, etc.) into a single
266
859
  // `ready` / `not_ready` answer for the ICP.
267
860
  // ───────────────────────────────────────────────────────────────────────────
268
861
  export const ReadinessStatusSchema = z.enum([
@@ -277,18 +870,19 @@ export const ReadinessStatusSchema = z.enum([
277
870
  "failed",
278
871
  ]);
279
872
  export const ReadinessGateSchema = z.enum([
280
- "preparation-config",
281
- "verifiable-context",
873
+ "project-config",
874
+ "context-graph",
282
875
  "build-run",
283
- "artifact-checks",
284
- "readiness-checks",
285
- "checks-current",
876
+ "artifact-diagnostics",
877
+ "context-checks",
878
+ "benchmarks",
879
+ "benchmarks-current",
286
880
  ]);
287
881
  /**
288
882
  * 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.
883
+ * high-level layer (is config valid? is the Context Graph built? did
884
+ * the latest Build succeed?). Gate failures are aggregated alongside
885
+ * output diagnostic failures into the overall `Readiness` verdict.
292
886
  */
293
887
  export const GateStatusSchema = z.object({
294
888
  gate: ReadinessGateSchema,
@@ -309,40 +903,28 @@ export const VerifyTargetResultSchema = z.object({
309
903
  run_path: z.string().min(1).nullable().optional(),
310
904
  }).strict();
311
905
  /**
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`.
906
+ * Project-level readiness verdict.
317
907
  */
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({
908
+ export const ReadinessSchema = z.object({
327
909
  kind: z.literal("interf-readiness-state"),
328
910
  version: z.literal(1),
329
911
  generated_at: z.string().min(1),
330
- preparation: z.string().min(1),
912
+ project: z.string().min(1),
331
913
  status: ReadinessStatusSchema,
332
914
  ready: z.boolean(),
333
915
  summary: z.string().min(1),
334
- verifiable_context_path: z.string().min(1).nullable(),
916
+ context_graph_path: z.string().min(1).nullable(),
335
917
  latest_build_run_id: z.string().min(1).nullable().optional(),
336
- latest_test_run_id: z.string().min(1).nullable().optional(),
918
+ latest_benchmark_run_id: z.string().min(1).nullable().optional(),
337
919
  build: GateStatusSchema.nullable(),
338
920
  check_results: z.object({
339
921
  configured: z.number().int().min(0),
340
922
  fingerprint: z.string().min(1).nullable(),
341
923
  source_files: VerifyTargetResultSchema.nullable(),
342
- verifiable_context: VerifyTargetResultSchema.nullable(),
924
+ context_graph: VerifyTargetResultSchema.nullable(),
343
925
  }).strict(),
344
926
  checks: z.array(GateStatusSchema).default([]),
345
- }).strict());
927
+ }).strict();
346
928
  // ───────────────────────────────────────────────────────────────────────────
347
929
  // User-defined verification (Q/A pairs) — the "user check" scope
348
930
  // ───────────────────────────────────────────────────────────────────────────
@@ -377,7 +959,7 @@ export const RuntimeExecutorInfoSchema = z.object({
377
959
  timeout_ms: z.number().nullable().optional(),
378
960
  });
379
961
  // ───────────────────────────────────────────────────────────────────────────
380
- // Connected agents + roles (0.15)
962
+ // Execution agents + roles
381
963
  // ───────────────────────────────────────────────────────────────────────────
382
964
  /**
383
965
  * The 5 canonical roles a Build Plan stage can declare. Build Plans MAY declare
@@ -391,7 +973,7 @@ export const CANONICAL_ROLES = [
391
973
  "general",
392
974
  ];
393
975
  /**
394
- * Open-ended role identifier. Build Plans invent role names freely; the
976
+ * Open-ended role identifier. Plans invent role names freely; the
395
977
  * role-router maps unknown names to `general` at run time.
396
978
  */
397
979
  export const RoleSchema = z.string().min(1);
@@ -399,16 +981,30 @@ export const RoleSchema = z.string().min(1);
399
981
  * One agent in the registry. `available` is a runtime-only flag — true
400
982
  * if the command's first token resolves on PATH. Stripped before
401
983
  * persistence.
984
+ *
985
+ * `prefs` carries the merged-at-runtime per-agent preferences (env vars,
986
+ * model, effort). It is filled in at load time by looking up the
987
+ * registry's `agent_prefs` map by name. The persisted shape never carries
988
+ * `prefs` — it lives in `agent_prefs` on disk so built-in agents (which
989
+ * are detected, not persisted) can also receive preferences.
402
990
  */
991
+ export const AgentPrefsSchema = z.object({
992
+ env_vars: z.record(z.string().min(1), z.string()).optional(),
993
+ model: z.string().min(1).nullable().optional(),
994
+ effort: z.string().min(1).nullable().optional(),
995
+ }).strict();
403
996
  export const AgentRecordSchema = z.object({
404
997
  name: z.string().min(1),
405
998
  display_name: z.string().min(1),
406
999
  command: z.string().min(1),
407
1000
  source: z.enum(["builtin", "user"]),
408
1001
  available: z.boolean().optional(),
1002
+ prefs: AgentPrefsSchema.optional(),
409
1003
  }).strict();
410
1004
  export const RoleMapSchema = z.record(RoleSchema, z.string().min(1));
1005
+ export const AgentPrefsMapSchema = z.record(z.string().min(1), AgentPrefsSchema);
411
1006
  export const AgentsRegistrySchema = z.object({
412
1007
  agents: z.array(AgentRecordSchema).default([]),
413
1008
  role_map: RoleMapSchema.default({}),
1009
+ agent_prefs: AgentPrefsMapSchema.default({}),
414
1010
  }).strict();