@interf/compiler 0.22.2 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/README.md +175 -234
  2. package/dist/bin-mcp.d.ts +2 -0
  3. package/dist/bin-mcp.js +63 -0
  4. package/dist/bin-runtime.d.ts +2 -0
  5. package/dist/bin-runtime.js +111 -0
  6. package/dist/cli/commands/agents.js +4 -4
  7. package/dist/cli/commands/auth.d.ts +20 -0
  8. package/dist/cli/commands/auth.js +161 -0
  9. package/dist/cli/commands/benchmark.d.ts +10 -0
  10. package/dist/cli/commands/benchmark.js +88 -0
  11. package/dist/cli/commands/build-plan.js +95 -103
  12. package/dist/cli/commands/build.d.ts +1 -1
  13. package/dist/cli/commands/build.js +16 -15
  14. package/dist/cli/commands/doctor.js +3 -3
  15. package/dist/cli/commands/graphs.d.ts +2 -0
  16. package/dist/cli/commands/graphs.js +199 -0
  17. package/dist/cli/commands/login.js +4 -6
  18. package/dist/cli/commands/logout.js +1 -1
  19. package/dist/cli/commands/mcp.d.ts +3 -2
  20. package/dist/cli/commands/mcp.js +721 -204
  21. package/dist/cli/commands/project.d.ts +2 -0
  22. package/dist/cli/commands/project.js +202 -0
  23. package/dist/cli/commands/reset.d.ts +1 -1
  24. package/dist/cli/commands/reset.js +10 -10
  25. package/dist/cli/commands/runs.js +52 -26
  26. package/dist/cli/commands/runtime.d.ts +24 -0
  27. package/dist/cli/commands/runtime.js +373 -0
  28. package/dist/cli/commands/status.d.ts +1 -0
  29. package/dist/cli/commands/status.js +33 -22
  30. package/dist/cli/commands/traces.d.ts +2 -0
  31. package/dist/cli/commands/traces.js +125 -0
  32. package/dist/cli/commands/wizard.js +155 -150
  33. package/dist/cli/index.d.ts +7 -4
  34. package/dist/cli/index.js +13 -7
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +2 -2
  37. package/dist/packages/build-plans/authoring/brief.d.ts +517 -0
  38. package/dist/packages/build-plans/authoring/brief.js +89 -0
  39. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +10 -10
  40. package/dist/packages/build-plans/authoring/build-plan-authoring.js +66 -26
  41. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +1 -1
  42. package/dist/packages/build-plans/authoring/build-plan-edit-session.js +8 -2
  43. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
  44. package/dist/packages/build-plans/authoring/build-plan-improvement.js +39 -42
  45. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
  46. package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
  47. package/dist/packages/build-plans/build-plan-resolution.js +3 -3
  48. package/dist/packages/build-plans/index.d.ts +1 -1
  49. package/dist/packages/build-plans/index.js +1 -1
  50. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -12
  51. package/dist/packages/build-plans/package/build-plan-definitions.js +40 -39
  52. package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
  53. package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
  54. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
  55. package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
  56. package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +4 -4
  57. package/dist/packages/build-plans/package/build-plan-stage-runner.js +22 -11
  58. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +5 -6
  59. package/dist/packages/build-plans/package/builtin-build-plan.js +7 -8
  60. package/dist/packages/build-plans/package/context-interface.d.ts +11 -9
  61. package/dist/packages/build-plans/package/context-interface.js +14 -33
  62. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
  63. package/dist/packages/build-plans/package/interf-build-plan-package.js +56 -52
  64. package/dist/packages/build-plans/package/local-build-plans.d.ts +12 -10
  65. package/dist/packages/build-plans/package/local-build-plans.js +56 -31
  66. package/dist/packages/build-plans/package/user-build-plans.js +1 -1
  67. package/dist/packages/contracts/index.d.ts +4 -2
  68. package/dist/packages/contracts/index.js +2 -1
  69. package/dist/packages/contracts/lib/project-paths.d.ts +137 -0
  70. package/dist/packages/contracts/lib/project-paths.js +211 -0
  71. package/dist/packages/contracts/lib/project-schema.d.ts +160 -0
  72. package/dist/packages/contracts/lib/project-schema.js +113 -0
  73. package/dist/packages/contracts/lib/schema.d.ts +739 -80
  74. package/dist/packages/contracts/lib/schema.js +410 -75
  75. package/dist/packages/contracts/utils/parse.js +67 -0
  76. package/dist/packages/projects/index.d.ts +6 -0
  77. package/dist/packages/{project → projects}/index.js +0 -3
  78. package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
  79. package/dist/packages/{project → projects}/interf-detect.js +56 -50
  80. package/dist/packages/projects/interf.d.ts +2 -0
  81. package/dist/packages/projects/interf.js +1 -0
  82. package/dist/packages/projects/lib/schema.d.ts +79 -0
  83. package/dist/packages/projects/lib/schema.js +89 -0
  84. package/dist/packages/projects/source-config.d.ts +58 -0
  85. package/dist/packages/projects/source-config.js +352 -0
  86. package/dist/packages/projects/source-folders.d.ts +11 -0
  87. package/dist/packages/{project → projects}/source-folders.js +26 -26
  88. package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
  89. package/dist/packages/{engine → runtime}/action-planner.js +20 -22
  90. package/dist/packages/runtime/action-values.d.ts +1 -0
  91. package/dist/packages/runtime/action-values.js +1 -0
  92. package/dist/packages/runtime/actions/errors.d.ts +2 -0
  93. package/dist/packages/runtime/actions/errors.js +12 -0
  94. package/dist/packages/runtime/actions/fields.d.ts +82 -0
  95. package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
  96. package/dist/packages/runtime/actions/form-builders.js +619 -0
  97. package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
  98. package/dist/packages/runtime/actions/form-validators.js +128 -0
  99. package/dist/packages/runtime/actions/helpers.d.ts +11 -0
  100. package/dist/packages/runtime/actions/helpers.js +80 -0
  101. package/dist/packages/runtime/actions/index.d.ts +8 -0
  102. package/dist/packages/runtime/actions/index.js +11 -0
  103. package/dist/packages/runtime/actions/registry.d.ts +64 -0
  104. package/dist/packages/runtime/actions/registry.js +62 -0
  105. package/dist/packages/runtime/actions/requests.d.ts +45 -0
  106. package/dist/packages/runtime/actions/requests.js +158 -0
  107. package/dist/packages/runtime/actions/schemas.d.ts +154 -0
  108. package/dist/packages/runtime/actions/schemas.js +36 -0
  109. package/dist/packages/runtime/agent-handoff.d.ts +11 -0
  110. package/dist/packages/runtime/agent-handoff.js +101 -0
  111. package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
  112. package/dist/packages/{engine → runtime}/agents/index.js +1 -2
  113. package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
  114. package/dist/packages/runtime/agents/lib/args.js +24 -0
  115. package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
  116. package/dist/packages/runtime/agents/lib/constants.js +13 -0
  117. package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
  118. package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
  119. package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
  120. package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
  121. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +8 -14
  122. package/dist/packages/{engine → runtime}/agents/lib/execution.js +14 -4
  123. package/dist/packages/{engine → runtime}/agents/lib/preflight.js +15 -13
  124. package/dist/packages/{engine → runtime}/agents/lib/render.js +4 -4
  125. package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
  126. package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
  127. package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
  128. package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
  129. package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
  130. package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
  131. package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
  132. package/dist/packages/runtime/agents/lib/shell-templates.js +452 -0
  133. package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
  134. package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
  135. package/dist/packages/runtime/agents/lib/shells.d.ts +63 -0
  136. package/dist/packages/runtime/agents/lib/shells.js +383 -0
  137. package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
  138. package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
  139. package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
  140. package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
  141. package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
  142. package/dist/packages/runtime/agents/providers/codex.js +64 -0
  143. package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
  144. package/dist/packages/runtime/agents/providers/cursor.js +24 -0
  145. package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
  146. package/dist/packages/runtime/agents/providers/index.js +31 -0
  147. package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
  148. package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
  149. package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
  150. package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
  151. package/dist/packages/{engine → runtime}/agents/role-executors.js +7 -6
  152. package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
  153. package/dist/packages/runtime/auth/account-context.d.ts +52 -0
  154. package/dist/packages/runtime/auth/account-context.js +68 -0
  155. package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
  156. package/dist/packages/runtime/auth/auth-flow.js +189 -0
  157. package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
  158. package/dist/packages/runtime/auth/jwt-validator.js +86 -0
  159. package/dist/packages/runtime/auth/keychain.d.ts +35 -0
  160. package/dist/packages/runtime/auth/keychain.js +85 -0
  161. package/dist/packages/runtime/auth/session-store.d.ts +38 -0
  162. package/dist/packages/runtime/auth/session-store.js +88 -0
  163. package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
  164. package/dist/packages/runtime/auth/workos-client.js +87 -0
  165. package/dist/packages/runtime/benchmark-question-draft.d.ts +20 -0
  166. package/dist/packages/runtime/benchmark-question-draft.js +124 -0
  167. package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
  168. package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
  169. package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +5 -5
  170. package/dist/packages/{engine → runtime}/build/artifact-status.js +25 -23
  171. package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
  172. package/dist/packages/runtime/build/atomic-fs.js +95 -0
  173. package/dist/packages/runtime/build/billing-events.d.ts +78 -0
  174. package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
  175. package/dist/packages/runtime/build/build-evidence.d.ts +15 -0
  176. package/dist/packages/runtime/build/build-evidence.js +173 -0
  177. package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
  178. package/dist/packages/runtime/build/build-pipeline.js +304 -0
  179. package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
  180. package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
  181. package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
  182. package/dist/packages/runtime/build/build-plan-runs.js +31 -0
  183. package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
  184. package/dist/packages/{engine → runtime}/build/build-stage-plan.js +28 -29
  185. package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
  186. package/dist/packages/runtime/build/build-stage-runner.js +165 -0
  187. package/dist/packages/{engine → runtime}/build/build-target.d.ts +4 -4
  188. package/dist/packages/runtime/build/build-target.js +16 -0
  189. package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
  190. package/dist/packages/runtime/build/check-evaluator.js +575 -0
  191. package/dist/packages/runtime/build/context-graph-paths.d.ts +51 -0
  192. package/dist/packages/runtime/build/context-graph-paths.js +133 -0
  193. package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
  194. package/dist/packages/runtime/build/context-graph-schema.js +39 -0
  195. package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
  196. package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
  197. package/dist/packages/{engine → runtime}/build/index.d.ts +5 -3
  198. package/dist/packages/{engine → runtime}/build/index.js +5 -3
  199. package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +221 -88
  200. package/dist/packages/{engine → runtime}/build/lib/schema.js +61 -41
  201. package/dist/packages/runtime/build/reset.d.ts +2 -0
  202. package/dist/packages/runtime/build/reset.js +62 -0
  203. package/dist/packages/{engine → runtime}/build/runtime-contracts.js +5 -5
  204. package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
  205. package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
  206. package/dist/packages/{engine → runtime}/build/runtime-paths.js +6 -6
  207. package/dist/packages/{engine → runtime}/build/runtime-prompt.js +7 -6
  208. package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
  209. package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
  210. package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
  211. package/dist/packages/runtime/build/runtime-runs.js +265 -0
  212. package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +6 -6
  213. package/dist/packages/runtime/build/runtime-types.js +1 -0
  214. package/dist/packages/runtime/build/runtime.d.ts +6 -0
  215. package/dist/packages/runtime/build/runtime.js +5 -0
  216. package/dist/packages/runtime/build/source-files.d.ts +58 -0
  217. package/dist/packages/runtime/build/source-files.js +184 -0
  218. package/dist/packages/runtime/build/source-inventory.d.ts +27 -0
  219. package/dist/packages/runtime/build/source-inventory.js +273 -0
  220. package/dist/packages/runtime/build/source-manifest.d.ts +52 -0
  221. package/dist/packages/runtime/build/source-manifest.js +192 -0
  222. package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
  223. package/dist/packages/runtime/build/stage-evidence.js +317 -0
  224. package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
  225. package/dist/packages/runtime/build/stage-reuse.js +142 -0
  226. package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
  227. package/dist/packages/runtime/build/state-artifacts.js +14 -0
  228. package/dist/packages/runtime/build/state-health.d.ts +4 -0
  229. package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
  230. package/dist/packages/runtime/build/state-io.d.ts +12 -0
  231. package/dist/packages/runtime/build/state-io.js +119 -0
  232. package/dist/packages/{engine → runtime}/build/state-paths.d.ts +3 -1
  233. package/dist/packages/runtime/build/state-paths.js +22 -0
  234. package/dist/packages/runtime/build/state-view.d.ts +5 -0
  235. package/dist/packages/{engine → runtime}/build/state-view.js +60 -33
  236. package/dist/packages/runtime/build/state.d.ts +7 -0
  237. package/dist/packages/runtime/build/state.js +12 -0
  238. package/dist/packages/runtime/build/traces.d.ts +30 -0
  239. package/dist/packages/runtime/build/traces.js +133 -0
  240. package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
  241. package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +48 -35
  242. package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
  243. package/dist/packages/{engine → runtime}/build/validate.js +26 -26
  244. package/dist/packages/{engine → runtime}/client.d.ts +15 -15
  245. package/dist/packages/{engine → runtime}/client.js +41 -24
  246. package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
  247. package/dist/packages/{engine → runtime}/connection-config.js +9 -8
  248. package/dist/packages/runtime/context-checks.d.ts +10 -0
  249. package/dist/packages/runtime/context-checks.js +114 -0
  250. package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
  251. package/dist/packages/runtime/context-graph-scaffold.js +134 -0
  252. package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
  253. package/dist/packages/runtime/entitlement-guard.js +70 -0
  254. package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
  255. package/dist/packages/{engine → runtime}/execution/index.js +1 -1
  256. package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +270 -192
  257. package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
  258. package/dist/packages/runtime/index.d.ts +29 -0
  259. package/dist/packages/runtime/index.js +21 -0
  260. package/dist/packages/runtime/instance-paths.d.ts +30 -0
  261. package/dist/packages/runtime/instance-paths.js +29 -0
  262. package/dist/packages/{engine → runtime}/native-run-handlers.d.ts +4 -4
  263. package/dist/packages/{engine → runtime}/native-run-handlers.js +184 -152
  264. package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
  265. package/dist/packages/runtime/plan-artifact-contract.js +42 -0
  266. package/dist/packages/runtime/project-entries.d.ts +11 -0
  267. package/dist/packages/runtime/project-entries.js +49 -0
  268. package/dist/packages/runtime/project-source-state.d.ts +26 -0
  269. package/dist/packages/runtime/project-source-state.js +53 -0
  270. package/dist/packages/runtime/project-store.d.ts +85 -0
  271. package/dist/packages/runtime/project-store.js +168 -0
  272. package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
  273. package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
  274. package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
  275. package/dist/packages/{engine → runtime}/run-observability.js +166 -84
  276. package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
  277. package/dist/packages/runtime/runtime-action-proposals.js +542 -0
  278. package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
  279. package/dist/packages/runtime/runtime-build-plans.js +131 -0
  280. package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
  281. package/dist/packages/runtime/runtime-build-runs.js +562 -0
  282. package/dist/packages/runtime/runtime-caches.d.ts +91 -0
  283. package/dist/packages/{engine → runtime}/runtime-caches.js +77 -49
  284. package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
  285. package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
  286. package/dist/packages/runtime/runtime-executor.d.ts +22 -0
  287. package/dist/packages/runtime/runtime-executor.js +131 -0
  288. package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
  289. package/dist/packages/runtime/runtime-jobs.js +463 -0
  290. package/dist/packages/runtime/runtime-observability.d.ts +11 -0
  291. package/dist/packages/runtime/runtime-observability.js +39 -0
  292. package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
  293. package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
  294. package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
  295. package/dist/packages/runtime/runtime-project-mutations.js +64 -0
  296. package/dist/packages/runtime/runtime-project-reads.d.ts +15 -0
  297. package/dist/packages/runtime/runtime-project-reads.js +381 -0
  298. package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
  299. package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
  300. package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +21 -16
  301. package/dist/packages/{engine → runtime}/runtime-resource-builders.js +48 -38
  302. package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
  303. package/dist/packages/runtime/runtime-verify-runs.js +295 -0
  304. package/dist/packages/runtime/runtime.d.ts +1165 -0
  305. package/dist/packages/runtime/runtime.js +417 -0
  306. package/dist/packages/runtime/schemas/actions.d.ts +1182 -0
  307. package/dist/packages/runtime/schemas/actions.js +117 -0
  308. package/dist/packages/runtime/schemas/agents.d.ts +76 -0
  309. package/dist/packages/runtime/schemas/agents.js +41 -0
  310. package/dist/packages/runtime/schemas/build-plans.d.ts +959 -0
  311. package/dist/packages/runtime/schemas/build-plans.js +107 -0
  312. package/dist/packages/runtime/schemas/files.d.ts +567 -0
  313. package/dist/packages/runtime/schemas/files.js +51 -0
  314. package/dist/packages/runtime/schemas/index.d.ts +8 -0
  315. package/dist/packages/runtime/schemas/index.js +12 -0
  316. package/dist/packages/runtime/schemas/instance.d.ts +141 -0
  317. package/dist/packages/runtime/schemas/instance.js +143 -0
  318. package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
  319. package/dist/packages/runtime/schemas/jobs.js +103 -0
  320. package/dist/packages/runtime/schemas/projects.d.ts +339 -0
  321. package/dist/packages/runtime/schemas/projects.js +136 -0
  322. package/dist/packages/runtime/schemas/runs.d.ts +2676 -0
  323. package/dist/packages/runtime/schemas/runs.js +98 -0
  324. package/dist/packages/runtime/service/index.d.ts +3 -0
  325. package/dist/packages/runtime/service/index.js +3 -0
  326. package/dist/packages/runtime/service/openapi.d.ts +7 -0
  327. package/dist/packages/runtime/service/openapi.js +117 -0
  328. package/dist/packages/runtime/service/operations.d.ts +1490 -0
  329. package/dist/packages/runtime/service/operations.js +245 -0
  330. package/dist/packages/runtime/service/routes.d.ts +106 -0
  331. package/dist/packages/runtime/service/routes.js +120 -0
  332. package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
  333. package/dist/packages/runtime/service/server-api-files.js +85 -0
  334. package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
  335. package/dist/packages/runtime/service/server-app-boot.js +46 -0
  336. package/dist/packages/runtime/service/server-guards.d.ts +63 -0
  337. package/dist/packages/runtime/service/server-guards.js +181 -0
  338. package/dist/packages/runtime/service/server-helpers.d.ts +27 -0
  339. package/dist/packages/runtime/service/server-helpers.js +89 -0
  340. package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
  341. package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
  342. package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
  343. package/dist/packages/runtime/service/server-routes-action-proposals.js +43 -0
  344. package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
  345. package/dist/packages/runtime/service/server-routes-agents.js +198 -0
  346. package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
  347. package/dist/packages/runtime/service/server-routes-auth.js +138 -0
  348. package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
  349. package/dist/packages/runtime/service/server-routes-build-plans.js +83 -0
  350. package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
  351. package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
  352. package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
  353. package/dist/packages/runtime/service/server-routes-events.js +99 -0
  354. package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
  355. package/dist/packages/runtime/service/server-routes-project-context.js +192 -0
  356. package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
  357. package/dist/packages/runtime/service/server-routes-project-jobs.js +130 -0
  358. package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
  359. package/dist/packages/runtime/service/server-routes-project-runs.js +85 -0
  360. package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
  361. package/dist/packages/runtime/service/server-routes-projects.js +92 -0
  362. package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
  363. package/dist/packages/runtime/service/server-routes-runs.js +112 -0
  364. package/dist/packages/runtime/service/server.d.ts +37 -0
  365. package/dist/packages/runtime/service/server.js +300 -0
  366. package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
  367. package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
  368. package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
  369. package/dist/packages/runtime/verify/benchmark-run.js +303 -0
  370. package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
  371. package/dist/packages/{engine → runtime}/verify/index.js +1 -1
  372. package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
  373. package/dist/packages/{engine → runtime}/verify/lib/schema.js +26 -18
  374. package/dist/packages/{engine → runtime}/verify/verify-execution.js +11 -11
  375. package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +4 -4
  376. package/dist/packages/runtime/verify/verify-paths.js +61 -0
  377. package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
  378. package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
  379. package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
  380. package/dist/packages/{engine → runtime}/verify/verify-specs.js +5 -3
  381. package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
  382. package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
  383. package/dist/packages/runtime/verify/verify-types.js +1 -0
  384. package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
  385. package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
  386. package/dist/packages/runtime/wire-schemas.d.ts +18 -0
  387. package/dist/packages/runtime/wire-schemas.js +27 -0
  388. package/package.json +39 -31
  389. package/public-repo/CONTRIBUTING.md +7 -16
  390. package/public-repo/README.md +175 -234
  391. package/public-repo/SECURITY.md +3 -4
  392. package/public-repo/build-plans/interf-default/README.md +19 -14
  393. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +18 -11
  394. package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +12 -5
  395. package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +16 -4
  396. package/public-repo/build-plans/interf-default/build-plan.json +34 -28
  397. package/public-repo/build-plans/interf-default/build-plan.schema.json +54 -32
  398. package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
  399. package/public-repo/build-plans/interf-default/use/query/SKILL.md +17 -11
  400. package/public-repo/openapi/local-service.openapi.json +6803 -0
  401. package/public-repo/skills/interf/SKILL.md +460 -179
  402. package/dist/cli/commands/prep.d.ts +0 -2
  403. package/dist/cli/commands/prep.js +0 -240
  404. package/dist/cli/commands/test.d.ts +0 -10
  405. package/dist/cli/commands/test.js +0 -85
  406. package/dist/cli/commands/web.d.ts +0 -2
  407. package/dist/cli/commands/web.js +0 -286
  408. package/dist/interf-ui/404.html +0 -1
  409. package/dist/interf-ui/__next.__PAGE__.txt +0 -10
  410. package/dist/interf-ui/__next._full.txt +0 -20
  411. package/dist/interf-ui/__next._head.txt +0 -5
  412. package/dist/interf-ui/__next._index.txt +0 -5
  413. package/dist/interf-ui/__next._tree.txt +0 -5
  414. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
  415. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
  416. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
  417. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
  418. package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
  419. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
  420. package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
  421. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
  422. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
  423. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
  424. package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
  425. package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
  426. package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
  427. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
  428. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
  429. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
  430. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
  431. package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
  432. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
  433. package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
  434. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
  435. package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
  436. package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  437. package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  438. package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
  439. package/dist/interf-ui/_not-found/__next._full.txt +0 -15
  440. package/dist/interf-ui/_not-found/__next._head.txt +0 -5
  441. package/dist/interf-ui/_not-found/__next._index.txt +0 -5
  442. package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
  443. package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
  444. package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
  445. package/dist/interf-ui/_not-found.html +0 -1
  446. package/dist/interf-ui/_not-found.txt +0 -15
  447. package/dist/interf-ui/index.html +0 -1
  448. package/dist/interf-ui/index.txt +0 -20
  449. package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
  450. package/dist/packages/contracts/lib/preparation-paths.js +0 -177
  451. package/dist/packages/engine/action-definitions.d.ts +0 -407
  452. package/dist/packages/engine/action-definitions.js +0 -1158
  453. package/dist/packages/engine/action-values.d.ts +0 -1
  454. package/dist/packages/engine/action-values.js +0 -1
  455. package/dist/packages/engine/agents/lib/args.d.ts +0 -4
  456. package/dist/packages/engine/agents/lib/args.js +0 -52
  457. package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
  458. package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
  459. package/dist/packages/engine/agents/lib/constants.js +0 -28
  460. package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
  461. package/dist/packages/engine/agents/lib/schema.js +0 -7
  462. package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
  463. package/dist/packages/engine/agents/lib/shells.js +0 -1052
  464. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
  465. package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
  466. package/dist/packages/engine/build/billing-events.d.ts +0 -89
  467. package/dist/packages/engine/build/build-pipeline.js +0 -175
  468. package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
  469. package/dist/packages/engine/build/build-plan-runs.js +0 -31
  470. package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
  471. package/dist/packages/engine/build/build-stage-runner.js +0 -94
  472. package/dist/packages/engine/build/build-target.js +0 -16
  473. package/dist/packages/engine/build/check-evaluator.js +0 -298
  474. package/dist/packages/engine/build/reset.d.ts +0 -2
  475. package/dist/packages/engine/build/reset.js +0 -74
  476. package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
  477. package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
  478. package/dist/packages/engine/build/runtime-runs.js +0 -224
  479. package/dist/packages/engine/build/runtime.d.ts +0 -5
  480. package/dist/packages/engine/build/runtime.js +0 -4
  481. package/dist/packages/engine/build/source-files.d.ts +0 -46
  482. package/dist/packages/engine/build/source-files.js +0 -149
  483. package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
  484. package/dist/packages/engine/build/state-artifacts.js +0 -14
  485. package/dist/packages/engine/build/state-health.d.ts +0 -4
  486. package/dist/packages/engine/build/state-io.d.ts +0 -11
  487. package/dist/packages/engine/build/state-io.js +0 -82
  488. package/dist/packages/engine/build/state-paths.js +0 -16
  489. package/dist/packages/engine/build/state-view.d.ts +0 -5
  490. package/dist/packages/engine/build/state.d.ts +0 -7
  491. package/dist/packages/engine/build/state.js +0 -12
  492. package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
  493. package/dist/packages/engine/build/validate-helpers.js +0 -41
  494. package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
  495. package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
  496. package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
  497. package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
  498. package/dist/packages/engine/cloud-seams.d.ts +0 -115
  499. package/dist/packages/engine/cloud-seams.js +0 -84
  500. package/dist/packages/engine/index.d.ts +0 -22
  501. package/dist/packages/engine/index.js +0 -15
  502. package/dist/packages/engine/instance-paths.d.ts +0 -106
  503. package/dist/packages/engine/instance-paths.js +0 -171
  504. package/dist/packages/engine/lib/schema.d.ts +0 -6304
  505. package/dist/packages/engine/lib/schema.js +0 -730
  506. package/dist/packages/engine/preparation-store.d.ts +0 -105
  507. package/dist/packages/engine/preparation-store.js +0 -213
  508. package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
  509. package/dist/packages/engine/readiness-check-draft.js +0 -111
  510. package/dist/packages/engine/requested-artifacts.d.ts +0 -5
  511. package/dist/packages/engine/routes.d.ts +0 -85
  512. package/dist/packages/engine/routes.js +0 -99
  513. package/dist/packages/engine/runtime-caches.d.ts +0 -76
  514. package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
  515. package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
  516. package/dist/packages/engine/runtime.d.ts +0 -371
  517. package/dist/packages/engine/runtime.js +0 -2463
  518. package/dist/packages/engine/server.d.ts +0 -58
  519. package/dist/packages/engine/server.js +0 -1399
  520. package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
  521. package/dist/packages/engine/verify/readiness-check-run.js +0 -265
  522. package/dist/packages/engine/verify/verify-paths.js +0 -61
  523. package/dist/packages/engine/verify/verify-sandbox.js +0 -88
  524. package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
  525. package/dist/packages/engine/wire-schemas.d.ts +0 -547
  526. package/dist/packages/engine/wire-schemas.js +0 -59
  527. package/dist/packages/project/index.d.ts +0 -9
  528. package/dist/packages/project/interf-bootstrap.d.ts +0 -1
  529. package/dist/packages/project/interf-bootstrap.js +0 -1
  530. package/dist/packages/project/interf-scaffold.d.ts +0 -3
  531. package/dist/packages/project/interf-scaffold.js +0 -136
  532. package/dist/packages/project/interf.d.ts +0 -4
  533. package/dist/packages/project/interf.js +0 -3
  534. package/dist/packages/project/lib/schema.d.ts +0 -328
  535. package/dist/packages/project/lib/schema.js +0 -136
  536. package/dist/packages/project/preparation-entries.d.ts +0 -11
  537. package/dist/packages/project/preparation-entries.js +0 -49
  538. package/dist/packages/project/source-config.d.ts +0 -46
  539. package/dist/packages/project/source-config.js +0 -394
  540. package/dist/packages/project/source-folders.d.ts +0 -11
  541. package/public-repo/plugins/README.md +0 -9
  542. package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
  543. package/public-repo/plugins/interf/.mcp.json +0 -12
  544. package/public-repo/plugins/interf/README.md +0 -32
  545. package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
  546. /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
  547. /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
  548. /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
  549. /package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +0 -0
  550. /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
  551. /package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +0 -0
  552. /package/dist/packages/{engine → runtime}/agents/lib/executors.js +0 -0
  553. /package/dist/packages/{engine → runtime}/agents/lib/logs.d.ts +0 -0
  554. /package/dist/packages/{engine → runtime}/agents/lib/logs.js +0 -0
  555. /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
  556. /package/dist/packages/{engine → runtime}/agents/lib/render.d.ts +0 -0
  557. /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
  558. /package/dist/packages/{engine → runtime}/agents/lib/status.js +0 -0
  559. /package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +0 -0
  560. /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
  561. /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
  562. /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
  563. /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
  564. /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
  565. /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
  566. /package/dist/packages/{engine → runtime}/build/runtime-paths.d.ts +0 -0
  567. /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
  568. /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
  569. /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
  570. /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
  571. /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
  572. /package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +0 -0
  573. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
  574. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
  575. /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
@@ -5,10 +5,11 @@ import { listFilesRecursive } from "../../contracts/utils/filesystem.js";
5
5
  import { warnInterf } from "../../contracts/utils/logger.js";
6
6
  import { readJsonFileUnchecked, readJsonFileWithSchema } from "../../contracts/utils/parse.js";
7
7
  import { isMarkdownFile } from "../../contracts/utils/file-types.js";
8
- import { BuildPlanEngineApiSchema, BuildPlanPurposeSchema, BuildPlanStageArtifactReadAccessSchema, BuildPlanStageArtifactWriteAccessSchema, } from "../../engine/build/lib/schema.js";
8
+ import { BuildPlanRuntimeApiSchema, BuildPlanPurposeSchema, BuildPlanStageArtifactReadAccessSchema, BuildPlanStageArtifactWriteAccessSchema, } from "../../runtime/build/lib/schema.js";
9
9
  import { RuntimeContractTypeSchema, InterfIdPattern, } from "../../contracts/lib/schema.js";
10
- import { asPreparationDataDir, preparationBuildPlansRoot, } from "../../contracts/lib/preparation-paths.js";
10
+ import { asProjectDataDir, projectBuildPlansRoot, } from "../../contracts/lib/project-paths.js";
11
11
  import { CONTEXT_INTERFACE_FILE, ContextInterfaceSchema, contextInterfaceExists, contextInterfaceFilePath, listContextInterfaceArtifacts, readContextInterface, BuildPlanInputSpecSchema, writeContextInterface, } from "./context-interface.js";
12
+ import { BuildPlanAuthoringBriefSchema, } from "../authoring/brief.js";
12
13
  import { PACKAGE_ROOT } from "./lib/package-root.js";
13
14
  const LocalBuildPlanStageDefinitionSchema = z.object({
14
15
  id: z.string().regex(InterfIdPattern),
@@ -23,8 +24,9 @@ const LocalBuildPlanStageDefinitionSchema = z.object({
23
24
  const LocalBuildPlanDefinitionSchema = z.object({
24
25
  id: z.string().regex(InterfIdPattern),
25
26
  type: z.literal("build-plan"),
26
- engine_api: BuildPlanEngineApiSchema.optional(),
27
+ runtime_api: BuildPlanRuntimeApiSchema.optional(),
27
28
  purpose: BuildPlanPurposeSchema.optional(),
29
+ brief: BuildPlanAuthoringBriefSchema.optional(),
28
30
  inputs: z.array(BuildPlanInputSpecSchema).min(1).optional(),
29
31
  label: z.string().min(1),
30
32
  hint: z.string().min(1),
@@ -62,14 +64,14 @@ export function mergeStagePolicyNotesForStages(stages, baseNotes, overrideNotes)
62
64
  }
63
65
  return Object.keys(merged).length > 0 ? merged : undefined;
64
66
  }
65
- function buildPlanRootPath(prepDataDir) {
66
- return preparationBuildPlansRoot(asPreparationDataDir(prepDataDir));
67
+ function buildPlanRootPath(projectDataDir) {
68
+ return projectBuildPlansRoot(asProjectDataDir(projectDataDir));
67
69
  }
68
70
  export function builtinBuildPlanPackagePath(buildPlanId) {
69
71
  return join(PACKAGE_ROOT, "public-repo", "build-plans", buildPlanId);
70
72
  }
71
- export function buildPlanDefinitionPath(prepDataDir, id) {
72
- return join(buildPlanRootPath(prepDataDir), id);
73
+ export function buildPlanDefinitionPath(projectDataDir, id) {
74
+ return join(buildPlanRootPath(projectDataDir), id);
73
75
  }
74
76
  function isSupportedBuildPlanStarterDocPath(relativePath) {
75
77
  if (relativePath === "README.md")
@@ -139,7 +141,7 @@ export function loadBuildPlanDefinitionFromDir(dirPath) {
139
141
  buildPlanSchemaPath: contextInterfaceFilePath(dirPath),
140
142
  };
141
143
  }
142
- export function isNeutralScaffoldBuildPlanDefinition(definition) {
144
+ function isNeutralScaffoldBuildPlanDefinition(definition) {
143
145
  const hasScaffoldPurpose = definition.purpose?.label === "From-scratch Build Plan draft" ||
144
146
  Boolean(definition.purpose?.task_hint?.includes("Replace this neutral scaffold"));
145
147
  const hasScaffoldStage = Boolean(definition.stages?.some((stage) => stage.id === "prepare" &&
@@ -149,9 +151,9 @@ export function isNeutralScaffoldBuildPlanDefinition(definition) {
149
151
  artifact.description.includes("neutral authoring scaffold"));
150
152
  return hasScaffoldPurpose || hasScaffoldStage || hasScaffoldArtifact;
151
153
  }
152
- export function listLocalBuildPlanDefinitions(prepDataDir) {
154
+ export function listLocalBuildPlanDefinitions(projectDataDir) {
153
155
  const definitions = new Map();
154
- const root = buildPlanRootPath(prepDataDir);
156
+ const root = buildPlanRootPath(projectDataDir);
155
157
  if (existsSync(root)) {
156
158
  for (const entryPath of readdirSync(root).map((entry) => join(root, entry))) {
157
159
  try {
@@ -169,14 +171,14 @@ export function listLocalBuildPlanDefinitions(prepDataDir) {
169
171
  }
170
172
  return [...definitions.values()].sort((a, b) => a.label.localeCompare(b.label));
171
173
  }
172
- export function loadLocalBuildPlanDefinition(prepDataDir, id) {
173
- const definition = loadBuildPlanDefinitionFromDir(buildPlanDefinitionPath(prepDataDir, id));
174
+ export function loadLocalBuildPlanDefinition(projectDataDir, id) {
175
+ const definition = loadBuildPlanDefinitionFromDir(buildPlanDefinitionPath(projectDataDir, id));
174
176
  if (!definition || isNeutralScaffoldBuildPlanDefinition(definition))
175
177
  return null;
176
178
  return definition;
177
179
  }
178
- export function resolveBuildPlanPackageSourcePath(prepDataDir, buildPlanId) {
179
- const localPath = buildPlanDefinitionPath(prepDataDir, buildPlanId);
180
+ export function resolveBuildPlanPackageSourcePath(projectDataDir, buildPlanId) {
181
+ const localPath = buildPlanDefinitionPath(projectDataDir, buildPlanId);
180
182
  const local = loadBuildPlanDefinitionFromDir(localPath);
181
183
  if (local && !isNeutralScaffoldBuildPlanDefinition(local))
182
184
  return localPath;
@@ -187,7 +189,7 @@ export function resolveBuildPlanPackageSourcePath(prepDataDir, buildPlanId) {
187
189
  }
188
190
  export function seedLocalDefaultBuildPlan(options) {
189
191
  const buildPlanId = "interf-default";
190
- const targetPath = buildPlanDefinitionPath(options.prepDataDir, buildPlanId);
192
+ const targetPath = buildPlanDefinitionPath(options.projectDataDir, buildPlanId);
191
193
  if (existsSync(join(targetPath, "build-plan.json"))) {
192
194
  return { buildPlanId, targetPath, alreadyExisted: true };
193
195
  }
@@ -199,7 +201,7 @@ export function seedLocalDefaultBuildPlan(options) {
199
201
  patchBuildPlanPackageMetadata(targetPath, {
200
202
  id: buildPlanId,
201
203
  label: "Built-in Interf Build Plan",
202
- hint: "Built-in file-processing Build Plan: summarize source-grounded evidence, structure cross-file connections, and shape verifiable context around the saved readiness checks.",
204
+ hint: "Built-in file-processing Build Plan: summarize source-grounded evidence, structure cross-file connections, and shape the Context Graph around the saved Checks.",
203
205
  });
204
206
  return { buildPlanId, targetPath, alreadyExisted: false };
205
207
  }
@@ -226,7 +228,7 @@ export function patchBuildPlanPackageMetadata(dirPath, options) {
226
228
  const nextBuildPlanJson = {
227
229
  ...buildPlanJson,
228
230
  type: "build-plan",
229
- engine_api: buildPlanJson.engine_api ?? {
231
+ runtime_api: buildPlanJson.runtime_api ?? {
230
232
  kind: "build",
231
233
  version: 1,
232
234
  },
@@ -377,11 +379,12 @@ export function validateBuildPlanPackage(dirPath) {
377
379
  if (buildPlanSchema) {
378
380
  const stages = def.stages ?? [];
379
381
  const stageIds = new Set(stages.map((stage) => stage.id));
380
- const seenPaths = new Map();
382
+ const seenArtifactsByPath = new Map();
381
383
  const seenArtifactIds = new Set();
382
384
  const schemaArtifacts = listContextInterfaceArtifacts(buildPlanSchema);
383
385
  const artifactById = new Map(schemaArtifacts.map((artifact) => [artifact.id, artifact]));
384
386
  const normalizedParts = (value) => value.replaceAll("\\", "/").split("/").filter(Boolean);
387
+ const normalizedPathKey = (value) => normalizedParts(value).join("/");
385
388
  const hasOverlappingPath = (value, other) => {
386
389
  const a = normalizedParts(value);
387
390
  const b = normalizedParts(other);
@@ -389,32 +392,57 @@ export function validateBuildPlanPackage(dirPath) {
389
392
  const longer = a.length <= b.length ? b : a;
390
393
  return shorter.every((part, index) => longer[index] === part);
391
394
  };
395
+ const requiredLayerPaths = new Set(["summaries", "knowledge", "artifacts"]);
396
+ const isRequiredLayerArtifact = (artifact) => artifact.kind === "directory" && requiredLayerPaths.has(normalizedPathKey(artifact.path));
397
+ const allowsRequiredLayerContainment = (artifact, existingArtifact) => {
398
+ const artifactPath = normalizedPathKey(artifact.path);
399
+ const existingPath = normalizedPathKey(existingArtifact.path);
400
+ if (artifactPath === existingPath)
401
+ return false;
402
+ if (!hasOverlappingPath(artifact.path, existingArtifact.path))
403
+ return false;
404
+ return isRequiredLayerArtifact(artifact) || isRequiredLayerArtifact(existingArtifact);
405
+ };
392
406
  for (const artifact of schemaArtifacts) {
393
407
  if (seenArtifactIds.has(artifact.id)) {
394
408
  errors.push(`build-plan.schema.json repeats Artifact id "${artifact.id}".`);
395
409
  }
396
410
  seenArtifactIds.add(artifact.id);
397
- const existingPathOwner = seenPaths.get(artifact.path);
411
+ const pathKey = normalizedPathKey(artifact.path);
412
+ const existingPathOwner = seenArtifactsByPath.get(pathKey);
398
413
  if (existingPathOwner) {
399
414
  errors.push(`build-plan.schema.json repeats Artifact path "${artifact.path}".`);
400
415
  }
401
- for (const [existingPath, existingZoneId] of seenPaths.entries()) {
402
- if (existingPath === artifact.path)
416
+ for (const existingArtifact of seenArtifactsByPath.values()) {
417
+ if (normalizedPathKey(existingArtifact.path) === pathKey)
403
418
  continue;
404
- if (hasOverlappingPath(artifact.path, existingPath)) {
405
- errors.push(`build-plan.schema.json Artifacts "${artifact.id}" and "${existingZoneId}" overlap on path "${artifact.path}" / "${existingPath}".`);
419
+ if (hasOverlappingPath(artifact.path, existingArtifact.path) &&
420
+ !allowsRequiredLayerContainment(artifact, existingArtifact)) {
421
+ errors.push(`build-plan.schema.json Artifacts "${artifact.id}" and "${existingArtifact.id}" overlap on path "${artifact.path}" / "${existingArtifact.path}".`);
406
422
  }
407
423
  }
408
- seenPaths.set(artifact.path, artifact.id);
409
- if ((artifact.role === "input" || artifact.role === "runtime") && artifact.owned_by.length > 0) {
410
- errors.push(`build-plan.schema.json Artifact "${artifact.id}" cannot declare owners because its role is "${artifact.role}".`);
411
- }
424
+ seenArtifactsByPath.set(pathKey, artifact);
412
425
  for (const owner of artifact.owned_by) {
413
426
  if (!stageIds.has(owner)) {
414
427
  errors.push(`build-plan.schema.json references unknown stage "${owner}" for Artifact path "${artifact.path}".`);
428
+ continue;
429
+ }
430
+ const ownerStage = stages.find((stage) => stage.id === owner);
431
+ if (ownerStage && !ownerStage.writes.includes(artifact.id)) {
432
+ errors.push(`build-plan.schema.json Artifact "${artifact.id}" is owned by stage "${owner}" but that stage does not write it in build-plan.json.`);
415
433
  }
416
434
  }
417
435
  }
436
+ for (const requiredPath of ["summaries", "knowledge", "artifacts"]) {
437
+ const artifact = seenArtifactsByPath.get(requiredPath);
438
+ if (!artifact) {
439
+ errors.push(`File-based Build Plan packages must declare a writable Artifact at "${requiredPath}".`);
440
+ continue;
441
+ }
442
+ if (artifact.owned_by.length === 0) {
443
+ errors.push(`File-based Build Plan Artifact "${artifact.id}" at "${requiredPath}" must be owned by at least one stage.`);
444
+ }
445
+ }
418
446
  for (const stage of stages) {
419
447
  for (const artifactId of stage.reads) {
420
448
  if (!artifactById.has(artifactId)) {
@@ -427,9 +455,6 @@ export function validateBuildPlanPackage(dirPath) {
427
455
  errors.push(`Stage "${stage.id}" writes unknown Artifact "${artifactId}".`);
428
456
  continue;
429
457
  }
430
- if (artifact.role === "input" || artifact.role === "runtime") {
431
- errors.push(`Stage "${stage.id}" writes Artifact "${artifactId}" but Artifacts with role "${artifact.role}" are engine-owned inputs, not writable stage outputs.`);
432
- }
433
458
  if (!artifact.owned_by.includes(stage.id)) {
434
459
  errors.push(`Stage "${stage.id}" writes Artifact "${artifactId}" but that Artifact is not owned by the stage in build-plan.schema.json.`);
435
460
  }
@@ -457,7 +482,7 @@ function describeContextInterfaceValidationIssues(dirPath) {
457
482
  if (!existsSync(buildPlanSchemaPath)) {
458
483
  return ["build-plan.schema.json is missing."];
459
484
  }
460
- const raw = readJsonFileUnchecked(buildPlanSchemaPath, "Build Plan context interface");
485
+ const raw = readJsonFileUnchecked(buildPlanSchemaPath, "Build Plan requested Artifact contract");
461
486
  if (raw === null) {
462
487
  return ["build-plan.schema.json is invalid JSON."];
463
488
  }
@@ -1,7 +1,7 @@
1
1
  import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync, } from "node:fs";
2
2
  import { dirname, join, resolve } from "node:path";
3
3
  import { warnInterf } from "../../contracts/utils/logger.js";
4
- import { userBuildPlanPackagePath, userBuildPlansRoot, } from "../../contracts/lib/preparation-paths.js";
4
+ import { userBuildPlanPackagePath, userBuildPlansRoot, } from "../../contracts/lib/project-paths.js";
5
5
  import { loadBuildPlanDefinitionFromDir, } from "./local-build-plans.js";
6
6
  export function userBuildPlanPath(id) {
7
7
  return userBuildPlanPackagePath(id);
@@ -1,3 +1,5 @@
1
1
  export * as schema from "./lib/schema.js";
2
- export type { AgentRecord, AgentsRegistry, Artifact, ArtifactId, ArtifactShape, ArtifactStatus, CanonicalRole, Check, CheckKind, GateStatus, Locator, LocatorKind, BuildPlanId, PreparationName, Proof, ReadinessGate, ReadinessStatus, Readiness, ReadyVerdict, RoleMap, RuntimeContractType, RuntimeExecutorInfo, RuntimeStage, RuntimeTargetType, Source, SourceFile, SourceFiles, SourceKind, SourceSnapshot, StageInput, StageInputs, StandardEvidenceFrontmatterKey, TestCaseExpect, TestTargetType, VerifyTargetResult, } from "./lib/schema.js";
3
- export { CANONICAL_ROLES, CHECK_KINDS, STANDARD_EVIDENCE_FRONTMATTER_KEYS, } from "./lib/schema.js";
2
+ export * as projectSchema from "./lib/project-schema.js";
3
+ export type { AgentRecord, AgentsRegistry, Artifact, ArtifactId, ArtifactShape, ArtifactStatus, CanonicalRole, Check, CheckKind, BuildCheckRow, BuildEvidenceIssueState, BuildEvidenceMetric, BuildEvidenceRef, BuildEvidenceResource, ContextCheck, ContextCheckDeclaration, ContextCheckProjection, ContextCheckStatus, GateStatus, Locator, LocatorKind, BuildPlanId, ProjectId, CheckResult, ReadinessGate, ReadinessStatus, Readiness, ReadyVerdict, RoleMap, RuntimeContractType, RuntimeExecutorInfo, RuntimeStage, RuntimeTargetType, Source, SourceFile, SourceFiles, SourceKind, SourceState, StageEvidence, StageEvidenceCount, StageEvidenceEdge, StageEvidenceItem, StageEvidenceOutputRef, StageEvidenceSourceRef, StageInput, StageInputs, StandardEvidenceFrontmatterKey, TestCaseExpect, TestTargetType, VerifyTargetResult, } from "./lib/schema.js";
4
+ export type { ContextGraph, ContextGraphLocator, DriftKind, ProjectName, ProjectSourceState, Trace, Traces, } from "./lib/project-schema.js";
5
+ export { CANONICAL_ROLES, CHECK_PARAM_CONTRACTS, CHECK_KINDS, ContextCheckDeclarationSchema, ContextCheckProjectionSchema, ContextCheckSchema, ContextCheckStatusSchema, BuildCheckRowSchema, BuildEvidenceIssueStateSchema, BuildEvidenceMetricSchema, BuildEvidenceRefSchema, BuildEvidenceResourceSchema, EvidenceCountKeySchema, StageEvidenceCountSchema, StageEvidenceEdgeSchema, StageEvidenceItemSchema, StageEvidenceOutputRefSchema, StageEvidenceSchema, StageEvidenceSourceRefSchema, STANDARD_EVIDENCE_FRONTMATTER_KEYS, } from "./lib/schema.js";
@@ -1,2 +1,3 @@
1
1
  export * as schema from "./lib/schema.js";
2
- export { CANONICAL_ROLES, CHECK_KINDS, STANDARD_EVIDENCE_FRONTMATTER_KEYS, } from "./lib/schema.js";
2
+ export * as projectSchema from "./lib/project-schema.js";
3
+ export { CANONICAL_ROLES, CHECK_PARAM_CONTRACTS, CHECK_KINDS, ContextCheckDeclarationSchema, ContextCheckProjectionSchema, ContextCheckSchema, ContextCheckStatusSchema, BuildCheckRowSchema, BuildEvidenceIssueStateSchema, BuildEvidenceMetricSchema, BuildEvidenceRefSchema, BuildEvidenceResourceSchema, EvidenceCountKeySchema, StageEvidenceCountSchema, StageEvidenceEdgeSchema, StageEvidenceItemSchema, StageEvidenceOutputRefSchema, StageEvidenceSchema, StageEvidenceSourceRefSchema, STANDARD_EVIDENCE_FRONTMATTER_KEYS, } from "./lib/schema.js";
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Source of truth for every Interf path on disk.
3
+ *
4
+ * Two roots, one helper per named location. Code never string-concatenates
5
+ * path segments to product locations; it calls the helper here.
6
+ *
7
+ * Branded string types catch "passed a Source Folder where I expected a
8
+ * Project Data Dir" at the type-checker level instead of at runtime.
9
+ *
10
+ * Two roots:
11
+ * - **Interf Home** (`~/.interf/`): per-user, cross-Project state. Holds
12
+ * the user-level Build Plan library and the central service registry.
13
+ * - **Project Data Dir**: a directory that IS a Project's state
14
+ * root. Holds `interf.json`, `build-plans/`, the Context Graph output, and
15
+ * the service-internal `.service/` scratch dir. The user's Source Folders
16
+ * are passed as `--source <path>` — they are inputs, not part of the
17
+ * Project data dir.
18
+ *
19
+ * No nested `interf/` namespace. The data dir IS the state root, full stop.
20
+ */
21
+ /** Absolute path to `~/.interf/` (overridable via `INTERF_USER_HOME`). */
22
+ export type InterfHomeRoot = string & {
23
+ readonly __brand: "InterfHomeRoot";
24
+ };
25
+ /** Absolute path to a directory that IS a Project's state root. */
26
+ export type ProjectDataDir = string & {
27
+ readonly __brand: "ProjectDataDir";
28
+ };
29
+ /** Absolute path to a Source Folder — the user's input. Read-only by default. */
30
+ export type SourceFolderPath = string & {
31
+ readonly __brand: "SourceFolderPath";
32
+ };
33
+ /** Absolute path to a Context Graph output directory. */
34
+ export type ContextGraphPath = string & {
35
+ readonly __brand: "ContextGraphPath";
36
+ };
37
+ /** Project config filename. */
38
+ export declare const PROJECT_CONFIG_FILENAME = "interf.json";
39
+ /** The Context Graph state directory name (lives at `<context-graph>/.interf/`). */
40
+ export declare const CONTEXT_GRAPH_STATE_DIR = ".interf";
41
+ /** Build Plan packages directory name (Project drafts and user library). */
42
+ export declare const BUILD_PLANS_DIR = "build-plans";
43
+ /** Service-internal directory inside a Project data dir. */
44
+ export declare const SERVICE_DIR = ".service";
45
+ /** Service registry filename inside Interf Home. */
46
+ export declare const SERVICE_REGISTRY_FILENAME = "services.json";
47
+ /** Service jobs subdir. */
48
+ export declare const SERVICE_JOBS_DIR = "jobs";
49
+ /** Service action-proposals subdir. */
50
+ export declare const SERVICE_ACTION_PROPOSALS_DIR = "action-proposals";
51
+ /** Service action-plans subdir. */
52
+ export declare const SERVICE_ACTION_PLANS_DIR = "action-plans";
53
+ /** Tests directory inside a Project data dir. */
54
+ export declare const PROJECT_TESTS_DIR = "tests";
55
+ /** Per-run Context Graph output directory inside a Project data dir. */
56
+ export declare const CONTEXT_GRAPHS_DIR = "graphs";
57
+ /** Tests-spec subdir. */
58
+ export declare const PROJECT_TESTS_SPECS_DIR = "specs";
59
+ /** Per-Context Graph tests directory. */
60
+ export declare const CONTEXT_GRAPH_TESTS_DIR = "tests";
61
+ /** Per-Context Graph runtime directory. */
62
+ export declare const CONTEXT_GRAPH_RUNTIME_DIR = "runtime";
63
+ /** Per-Context Graph Build Plan package directory. */
64
+ export declare const CONTEXT_GRAPH_BUILD_PLAN_DIR = "build-plan";
65
+ /** Environment variable that overrides Interf Home for tests. */
66
+ export declare const INTERF_USER_HOME_ENV = "INTERF_USER_HOME";
67
+ /** Interf Home directory name under the OS home dir. */
68
+ export declare const INTERF_HOME_DIR = ".interf";
69
+ /** Projects directory inside Interf Home. */
70
+ export declare const PROJECTS_DIR = "projects";
71
+ /** CLI connection record filename inside Interf Home. */
72
+ export declare const CONNECTION_CONFIG_FILENAME = "connection.json";
73
+ export declare function asProjectDataDir(path: string): ProjectDataDir;
74
+ export declare function asSourceFolderPath(path: string): SourceFolderPath;
75
+ export declare function asContextGraphPath(path: string): ContextGraphPath;
76
+ /** `~/.interf/` (or `INTERF_USER_HOME` override). */
77
+ export declare function interfHomeRoot(): InterfHomeRoot;
78
+ /** `~/.interf/connection.json` — single CLI connection record. */
79
+ export declare function connectionConfigPath(): string;
80
+ /** `~/.interf/build-plans/` — user-level Build Plan library root. */
81
+ export declare function userBuildPlansRoot(): string;
82
+ /** `~/.interf/build-plans/<id>/` — a specific user-library Build Plan package. */
83
+ export declare function userBuildPlanPackagePath(buildPlanId: string): string;
84
+ /** `~/.interf/services.json` — central service registry. */
85
+ export declare function serviceRegistryPath(): string;
86
+ /** `~/.interf/projects/` — root for all Project state. */
87
+ export declare function projectsRoot(): string;
88
+ /** `~/.interf/projects/<project-id>/` — one Project state dir. */
89
+ export declare function projectDataDir(projectId: string): ProjectDataDir;
90
+ /** `<project-data>/interf.json` — Project config source of truth. */
91
+ export declare function projectConfigPath(projectDataDir: ProjectDataDir): string;
92
+ /** `<project-data>/build-plans/` — Project-draft Build Plan packages root. */
93
+ export declare function projectBuildPlansRoot(projectDataDir: ProjectDataDir): string;
94
+ /** `<project-data>/build-plans/<id>/` — a Project-draft Build Plan package. */
95
+ export declare function projectBuildPlanPackagePath(projectDataDir: ProjectDataDir, buildPlanId: string): string;
96
+ /** `<project-data>/<project-id>/` — legacy Project-level Context Graph root. */
97
+ export declare function projectContextGraphPath(projectDataDir: ProjectDataDir, projectName: string): ContextGraphPath;
98
+ /** `<project-data>/graphs/` — per-run Context Graph outputs root. */
99
+ export declare function projectContextGraphsRoot(projectDataDir: ProjectDataDir): string;
100
+ /** `<project-data>/graphs/<run-id>/` — one Build Run's Context Graph output. */
101
+ export declare function projectRunContextGraphPath(projectDataDir: ProjectDataDir, runId: string): ContextGraphPath;
102
+ /** `<project-data>/.service/` — service-owned scratch dir for jobs and proposals. */
103
+ export declare function projectServiceRoot(projectDataDir: ProjectDataDir): string;
104
+ /** `<project-data>/.service/jobs/`. */
105
+ export declare function projectServiceJobsRoot(projectDataDir: ProjectDataDir): string;
106
+ /** `<project-data>/.service/action-proposals/`. */
107
+ export declare function projectServiceActionProposalsRoot(projectDataDir: ProjectDataDir): string;
108
+ /** `<project-data>/.service/action-plans/`. */
109
+ export declare function projectServiceActionPlansRoot(projectDataDir: ProjectDataDir): string;
110
+ /** `<project-data>/.service/build-runs/` — Project activity index for Build Runs. */
111
+ export declare function projectServiceBuildRunsRoot(projectDataDir: ProjectDataDir): string;
112
+ /** `<project-data>/tests/specs/` — saved benchmark specs. */
113
+ export declare function projectTestsSpecsRoot(projectDataDir: ProjectDataDir): string;
114
+ /** `<context-graph>/.interf/`. */
115
+ export declare function contextGraphStateRoot(contextGraph: ContextGraphPath): string;
116
+ /** `<context-graph>/.interf/interf.json` — runtime contract. */
117
+ export declare function contextGraphConfigPath(contextGraph: ContextGraphPath): string;
118
+ /** `<context-graph>/.interf/build-plan/` — active Build Plan package inside Context Graph. */
119
+ export declare function contextGraphBuildPlanPath(contextGraph: ContextGraphPath): string;
120
+ /** `<context-graph>/.interf/runtime/`. */
121
+ export declare function contextGraphRuntimeRoot(contextGraph: ContextGraphPath): string;
122
+ /** `<context-graph>/.interf/tests/`. */
123
+ export declare function contextGraphTestsRoot(contextGraph: ContextGraphPath): string;
124
+ /** Test target labels: source-files (raw input) vs Context Graph. */
125
+ export type ProjectTestTargetLabel = "source-files" | "context-graph";
126
+ /** `<project-data>/<project>/.interf/tests/`. */
127
+ export declare function projectTestsRoot(projectDataDir: ProjectDataDir, projectName: string): string;
128
+ /** `<project-data>/<project>/.interf/tests/<target>/runs/`. */
129
+ export declare function projectTestRunsRoot(projectDataDir: ProjectDataDir, projectName: string, target: ProjectTestTargetLabel): string;
130
+ /** `<project-data>/<project>/.interf/tests/latest.json`. */
131
+ export declare function projectLatestBenchmarkRunPath(projectDataDir: ProjectDataDir, projectName: string): string;
132
+ /** `<project-data>/<project>/.interf/tests/latest.md`. */
133
+ export declare function projectLatestBenchmarkSummaryPath(projectDataDir: ProjectDataDir, projectName: string): string;
134
+ /** Normalize a free-form string into a stable, kebab-cased id (≤80 chars). */
135
+ export declare function normalizeProjectTestRunId(input: string): string;
136
+ /** `<project-data>/<project>/.interf/tests/<target>/runs/<timestamp>-<run-id>[-<suffix>].json`. */
137
+ export declare function projectTestRunPath(projectDataDir: ProjectDataDir, projectName: string, target: ProjectTestTargetLabel, generatedAt: string, runId: string, runSuffix?: string | null): string;
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Source of truth for every Interf path on disk.
3
+ *
4
+ * Two roots, one helper per named location. Code never string-concatenates
5
+ * path segments to product locations; it calls the helper here.
6
+ *
7
+ * Branded string types catch "passed a Source Folder where I expected a
8
+ * Project Data Dir" at the type-checker level instead of at runtime.
9
+ *
10
+ * Two roots:
11
+ * - **Interf Home** (`~/.interf/`): per-user, cross-Project state. Holds
12
+ * the user-level Build Plan library and the central service registry.
13
+ * - **Project Data Dir**: a directory that IS a Project's state
14
+ * root. Holds `interf.json`, `build-plans/`, the Context Graph output, and
15
+ * the service-internal `.service/` scratch dir. The user's Source Folders
16
+ * are passed as `--source <path>` — they are inputs, not part of the
17
+ * Project data dir.
18
+ *
19
+ * No nested `interf/` namespace. The data dir IS the state root, full stop.
20
+ */
21
+ import { homedir } from "node:os";
22
+ import { join } from "node:path";
23
+ // ───────────────────────────────────────────────────────────────────────────
24
+ // Constants — every named segment lives here, nowhere else
25
+ // ───────────────────────────────────────────────────────────────────────────
26
+ /** Project config filename. */
27
+ export const PROJECT_CONFIG_FILENAME = "interf.json";
28
+ /** The Context Graph state directory name (lives at `<context-graph>/.interf/`). */
29
+ export const CONTEXT_GRAPH_STATE_DIR = ".interf";
30
+ /** Build Plan packages directory name (Project drafts and user library). */
31
+ export const BUILD_PLANS_DIR = "build-plans";
32
+ /** Service-internal directory inside a Project data dir. */
33
+ export const SERVICE_DIR = ".service";
34
+ /** Service registry filename inside Interf Home. */
35
+ export const SERVICE_REGISTRY_FILENAME = "services.json";
36
+ /** Service jobs subdir. */
37
+ export const SERVICE_JOBS_DIR = "jobs";
38
+ /** Service action-proposals subdir. */
39
+ export const SERVICE_ACTION_PROPOSALS_DIR = "action-proposals";
40
+ /** Service action-plans subdir. */
41
+ export const SERVICE_ACTION_PLANS_DIR = "action-plans";
42
+ /** Tests directory inside a Project data dir. */
43
+ export const PROJECT_TESTS_DIR = "tests";
44
+ /** Per-run Context Graph output directory inside a Project data dir. */
45
+ export const CONTEXT_GRAPHS_DIR = "graphs";
46
+ /** Tests-spec subdir. */
47
+ export const PROJECT_TESTS_SPECS_DIR = "specs";
48
+ /** Per-Context Graph tests directory. */
49
+ export const CONTEXT_GRAPH_TESTS_DIR = "tests";
50
+ /** Per-Context Graph runtime directory. */
51
+ export const CONTEXT_GRAPH_RUNTIME_DIR = "runtime";
52
+ /** Per-Context Graph Build Plan package directory. */
53
+ export const CONTEXT_GRAPH_BUILD_PLAN_DIR = "build-plan";
54
+ /** Environment variable that overrides Interf Home for tests. */
55
+ export const INTERF_USER_HOME_ENV = "INTERF_USER_HOME";
56
+ /** Interf Home directory name under the OS home dir. */
57
+ export const INTERF_HOME_DIR = ".interf";
58
+ /** Projects directory inside Interf Home. */
59
+ export const PROJECTS_DIR = "projects";
60
+ /** CLI connection record filename inside Interf Home. */
61
+ export const CONNECTION_CONFIG_FILENAME = "connection.json";
62
+ // ───────────────────────────────────────────────────────────────────────────
63
+ // Brand constructors — convert untyped strings at boundaries
64
+ // ───────────────────────────────────────────────────────────────────────────
65
+ export function asProjectDataDir(path) {
66
+ return path;
67
+ }
68
+ export function asSourceFolderPath(path) {
69
+ return path;
70
+ }
71
+ export function asContextGraphPath(path) {
72
+ return path;
73
+ }
74
+ // ───────────────────────────────────────────────────────────────────────────
75
+ // Interf Home (~/.interf/) paths
76
+ // ───────────────────────────────────────────────────────────────────────────
77
+ /** `~/.interf/` (or `INTERF_USER_HOME` override). */
78
+ export function interfHomeRoot() {
79
+ const override = process.env[INTERF_USER_HOME_ENV]?.trim();
80
+ if (override && override.length > 0)
81
+ return override;
82
+ return join(homedir(), INTERF_HOME_DIR);
83
+ }
84
+ /** `~/.interf/connection.json` — single CLI connection record. */
85
+ export function connectionConfigPath() {
86
+ return join(interfHomeRoot(), CONNECTION_CONFIG_FILENAME);
87
+ }
88
+ /** `~/.interf/build-plans/` — user-level Build Plan library root. */
89
+ export function userBuildPlansRoot() {
90
+ return join(interfHomeRoot(), BUILD_PLANS_DIR);
91
+ }
92
+ /** `~/.interf/build-plans/<id>/` — a specific user-library Build Plan package. */
93
+ export function userBuildPlanPackagePath(buildPlanId) {
94
+ return join(userBuildPlansRoot(), buildPlanId);
95
+ }
96
+ /** `~/.interf/services.json` — central service registry. */
97
+ export function serviceRegistryPath() {
98
+ return join(interfHomeRoot(), SERVICE_REGISTRY_FILENAME);
99
+ }
100
+ /** `~/.interf/projects/` — root for all Project state. */
101
+ export function projectsRoot() {
102
+ return join(interfHomeRoot(), PROJECTS_DIR);
103
+ }
104
+ /** `~/.interf/projects/<project-id>/` — one Project state dir. */
105
+ export function projectDataDir(projectId) {
106
+ return asProjectDataDir(join(projectsRoot(), projectId));
107
+ }
108
+ // ───────────────────────────────────────────────────────────────────────────
109
+ // Project Data Dir paths (the data dir IS the state root)
110
+ // ───────────────────────────────────────────────────────────────────────────
111
+ /** `<project-data>/interf.json` — Project config source of truth. */
112
+ export function projectConfigPath(projectDataDir) {
113
+ return join(projectDataDir, PROJECT_CONFIG_FILENAME);
114
+ }
115
+ /** `<project-data>/build-plans/` — Project-draft Build Plan packages root. */
116
+ export function projectBuildPlansRoot(projectDataDir) {
117
+ return join(projectDataDir, BUILD_PLANS_DIR);
118
+ }
119
+ /** `<project-data>/build-plans/<id>/` — a Project-draft Build Plan package. */
120
+ export function projectBuildPlanPackagePath(projectDataDir, buildPlanId) {
121
+ return join(projectBuildPlansRoot(projectDataDir), buildPlanId);
122
+ }
123
+ /** `<project-data>/<project-id>/` — legacy Project-level Context Graph root. */
124
+ export function projectContextGraphPath(projectDataDir, projectName) {
125
+ return join(projectDataDir, projectName);
126
+ }
127
+ /** `<project-data>/graphs/` — per-run Context Graph outputs root. */
128
+ export function projectContextGraphsRoot(projectDataDir) {
129
+ return join(projectDataDir, CONTEXT_GRAPHS_DIR);
130
+ }
131
+ /** `<project-data>/graphs/<run-id>/` — one Build Run's Context Graph output. */
132
+ export function projectRunContextGraphPath(projectDataDir, runId) {
133
+ return join(projectContextGraphsRoot(projectDataDir), runId);
134
+ }
135
+ /** `<project-data>/.service/` — service-owned scratch dir for jobs and proposals. */
136
+ export function projectServiceRoot(projectDataDir) {
137
+ return join(projectDataDir, SERVICE_DIR);
138
+ }
139
+ /** `<project-data>/.service/jobs/`. */
140
+ export function projectServiceJobsRoot(projectDataDir) {
141
+ return join(projectServiceRoot(projectDataDir), SERVICE_JOBS_DIR);
142
+ }
143
+ /** `<project-data>/.service/action-proposals/`. */
144
+ export function projectServiceActionProposalsRoot(projectDataDir) {
145
+ return join(projectServiceRoot(projectDataDir), SERVICE_ACTION_PROPOSALS_DIR);
146
+ }
147
+ /** `<project-data>/.service/action-plans/`. */
148
+ export function projectServiceActionPlansRoot(projectDataDir) {
149
+ return join(projectServiceRoot(projectDataDir), SERVICE_ACTION_PLANS_DIR);
150
+ }
151
+ /** `<project-data>/.service/build-runs/` — Project activity index for Build Runs. */
152
+ export function projectServiceBuildRunsRoot(projectDataDir) {
153
+ return join(projectServiceRoot(projectDataDir), "build-runs");
154
+ }
155
+ /** `<project-data>/tests/specs/` — saved benchmark specs. */
156
+ export function projectTestsSpecsRoot(projectDataDir) {
157
+ return join(projectDataDir, PROJECT_TESTS_DIR, PROJECT_TESTS_SPECS_DIR);
158
+ }
159
+ // ───────────────────────────────────────────────────────────────────────────
160
+ // Context Graph paths (generated graph outputs)
161
+ // ───────────────────────────────────────────────────────────────────────────
162
+ /** `<context-graph>/.interf/`. */
163
+ export function contextGraphStateRoot(contextGraph) {
164
+ return join(contextGraph, CONTEXT_GRAPH_STATE_DIR);
165
+ }
166
+ /** `<context-graph>/.interf/interf.json` — runtime contract. */
167
+ export function contextGraphConfigPath(contextGraph) {
168
+ return join(contextGraphStateRoot(contextGraph), PROJECT_CONFIG_FILENAME);
169
+ }
170
+ /** `<context-graph>/.interf/build-plan/` — active Build Plan package inside Context Graph. */
171
+ export function contextGraphBuildPlanPath(contextGraph) {
172
+ return join(contextGraphStateRoot(contextGraph), CONTEXT_GRAPH_BUILD_PLAN_DIR);
173
+ }
174
+ /** `<context-graph>/.interf/runtime/`. */
175
+ export function contextGraphRuntimeRoot(contextGraph) {
176
+ return join(contextGraphStateRoot(contextGraph), CONTEXT_GRAPH_RUNTIME_DIR);
177
+ }
178
+ /** `<context-graph>/.interf/tests/`. */
179
+ export function contextGraphTestsRoot(contextGraph) {
180
+ return join(contextGraphStateRoot(contextGraph), CONTEXT_GRAPH_TESTS_DIR);
181
+ }
182
+ /** `<project-data>/<project>/.interf/tests/`. */
183
+ export function projectTestsRoot(projectDataDir, projectName) {
184
+ return contextGraphTestsRoot(projectContextGraphPath(projectDataDir, projectName));
185
+ }
186
+ /** `<project-data>/<project>/.interf/tests/<target>/runs/`. */
187
+ export function projectTestRunsRoot(projectDataDir, projectName, target) {
188
+ return join(projectTestsRoot(projectDataDir, projectName), target, "runs");
189
+ }
190
+ /** `<project-data>/<project>/.interf/tests/latest.json`. */
191
+ export function projectLatestBenchmarkRunPath(projectDataDir, projectName) {
192
+ return join(projectTestsRoot(projectDataDir, projectName), "latest.json");
193
+ }
194
+ /** `<project-data>/<project>/.interf/tests/latest.md`. */
195
+ export function projectLatestBenchmarkSummaryPath(projectDataDir, projectName) {
196
+ return join(projectTestsRoot(projectDataDir, projectName), "latest.md");
197
+ }
198
+ /** Normalize a free-form string into a stable, kebab-cased id (≤80 chars). */
199
+ export function normalizeProjectTestRunId(input) {
200
+ return input
201
+ .toLowerCase()
202
+ .trim()
203
+ .replace(/[^a-z0-9]+/g, "-")
204
+ .replace(/^-+|-+$/g, "")
205
+ .slice(0, 80);
206
+ }
207
+ /** `<project-data>/<project>/.interf/tests/<target>/runs/<timestamp>-<run-id>[-<suffix>].json`. */
208
+ export function projectTestRunPath(projectDataDir, projectName, target, generatedAt, runId, runSuffix) {
209
+ const suffix = runSuffix ? `-${normalizeProjectTestRunId(runSuffix)}` : "";
210
+ return join(projectTestRunsRoot(projectDataDir, projectName, target), `${generatedAt.replace(/[:.]/g, "-")}-${runId}${suffix}.json`);
211
+ }