@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
@@ -1,3 +1,4 @@
1
+ export declare function isFilesystemArtifact(filePath: string): boolean;
1
2
  export declare function countFilesRecursive(dirPath: string): number;
2
3
  export declare function listFilesRecursive(dirPath: string, predicate?: (filePath: string) => boolean): string[];
3
4
  /**
@@ -1,6 +1,34 @@
1
1
  import { existsSync, readdirSync, realpathSync } from "node:fs";
2
2
  import { readdir, realpath } from "node:fs/promises";
3
- import { join } from "node:path";
3
+ import { basename, join } from "node:path";
4
+ /**
5
+ * OS-generated filesystem junk that is provably not user content: macOS
6
+ * `.DS_Store`, AppleDouble resource forks (`._name`), Spotlight/Trash sidecars,
7
+ * Windows `Thumbs.db` / `desktop.ini`. These are filesystem bookkeeping, not
8
+ * Source files, so they must never count as required/expected coverage units —
9
+ * otherwise a macOS Source folder shows "not ready" purely because Finder left
10
+ * a `.DS_Store` behind.
11
+ *
12
+ * This match is by filename only (deterministic, provable), never by an agent's
13
+ * `not-relevant` label. A real content gap an agent skipped is NOT matched here
14
+ * and still counts toward readiness.
15
+ */
16
+ const FILESYSTEM_ARTIFACT_NAMES = new Set([
17
+ ".DS_Store",
18
+ "Thumbs.db",
19
+ "desktop.ini",
20
+ "Icon\r",
21
+ ".localized",
22
+ ]);
23
+ export function isFilesystemArtifact(filePath) {
24
+ const name = basename(filePath.replace(/\\/g, "/"));
25
+ if (FILESYSTEM_ARTIFACT_NAMES.has(name))
26
+ return true;
27
+ // AppleDouble resource forks copied onto non-HFS volumes: `._<realname>`.
28
+ if (name.startsWith("._"))
29
+ return true;
30
+ return false;
31
+ }
4
32
  export function countFilesRecursive(dirPath) {
5
33
  if (!existsSync(dirPath))
6
34
  return 0;
@@ -73,6 +73,66 @@ function parseYamlScalar(value) {
73
73
  }
74
74
  return trimmed;
75
75
  }
76
+ function yamlBlockHeader(value) {
77
+ const trimmed = value.trim();
78
+ if (!/^[>|](?:[+-]?\d*|\d*[+-]?)$/.test(trimmed))
79
+ return null;
80
+ return trimmed.startsWith(">") ? "folded" : "literal";
81
+ }
82
+ function leadingWhitespaceLength(value) {
83
+ const match = value.match(/^\s*/);
84
+ return match?.[0].length ?? 0;
85
+ }
86
+ function foldYamlBlock(lines) {
87
+ const paragraphs = [];
88
+ let current = [];
89
+ for (const line of lines) {
90
+ const trimmed = line.trim();
91
+ if (trimmed.length === 0) {
92
+ if (current.length > 0) {
93
+ paragraphs.push(current.join(" "));
94
+ current = [];
95
+ }
96
+ if (paragraphs[paragraphs.length - 1] !== "") {
97
+ paragraphs.push("");
98
+ }
99
+ continue;
100
+ }
101
+ current.push(trimmed);
102
+ }
103
+ if (current.length > 0) {
104
+ paragraphs.push(current.join(" "));
105
+ }
106
+ return paragraphs.join("\n").trimEnd();
107
+ }
108
+ function parseYamlBlockScalar(lines, startIndex, style) {
109
+ const blockLines = [];
110
+ let blockIndent = null;
111
+ let cursor = startIndex + 1;
112
+ while (cursor < lines.length) {
113
+ const nextLine = lines[cursor] ?? "";
114
+ const nextTrimmed = nextLine.trim();
115
+ if (nextTrimmed.length === 0) {
116
+ if (blockIndent !== null)
117
+ blockLines.push("");
118
+ cursor += 1;
119
+ continue;
120
+ }
121
+ const indent = leadingWhitespaceLength(nextLine);
122
+ if (indent === 0)
123
+ break;
124
+ if (blockIndent === null)
125
+ blockIndent = indent;
126
+ if (indent < blockIndent)
127
+ break;
128
+ blockLines.push(nextLine.slice(blockIndent));
129
+ cursor += 1;
130
+ }
131
+ return {
132
+ value: style === "folded" ? foldYamlBlock(blockLines) : blockLines.join("\n").trimEnd(),
133
+ nextIndex: cursor,
134
+ };
135
+ }
76
136
  function parseYamlFrontmatter(frontmatterText) {
77
137
  const lines = frontmatterText.split("\n");
78
138
  const frontmatter = {};
@@ -88,6 +148,13 @@ function parseYamlFrontmatter(frontmatterText) {
88
148
  if (!key)
89
149
  return null;
90
150
  if (inlineValue && inlineValue.trim().length > 0) {
151
+ const blockStyle = yamlBlockHeader(inlineValue);
152
+ if (blockStyle) {
153
+ const parsedBlock = parseYamlBlockScalar(lines, index, blockStyle);
154
+ frontmatter[key] = parsedBlock.value;
155
+ index = parsedBlock.nextIndex - 1;
156
+ continue;
157
+ }
91
158
  frontmatter[key] = parseYamlScalar(inlineValue);
92
159
  continue;
93
160
  }
@@ -0,0 +1,6 @@
1
+ export * as schema from "./lib/schema.js";
2
+ export * as sourceConfig from "./source-config.js";
3
+ export * as sourceFolders from "./source-folders.js";
4
+ export * as interf from "./interf.js";
5
+ export * as detect from "./interf-detect.js";
6
+ export type { InterfConfig, BuildPlanId, ProjectId, SourceFolderBinding, ProjectConfig, BenchmarkCheck, SourceContext, SourceFolderConfig, } from "./lib/schema.js";
@@ -3,6 +3,3 @@ export * as sourceConfig from "./source-config.js";
3
3
  export * as sourceFolders from "./source-folders.js";
4
4
  export * as interf from "./interf.js";
5
5
  export * as detect from "./interf-detect.js";
6
- export * as bootstrap from "./interf-bootstrap.js";
7
- export * as scaffold from "./interf-scaffold.js";
8
- export * as preparationEntries from "./preparation-entries.js";
@@ -1,8 +1,8 @@
1
1
  import { type InterfConfig } from "./lib/schema.js";
2
2
  export type { InterfConfig } from "./lib/schema.js";
3
- export interface ResolvedVerifiableContext {
4
- prepDataDir: string;
5
- verifiableContextPath: string;
3
+ export interface ResolvedContextGraph {
4
+ projectDataDir: string;
5
+ contextGraphPath: string;
6
6
  config: InterfConfig;
7
7
  }
8
8
  export declare const INTERF_CONTAINER_NAME = "interf";
@@ -16,23 +16,23 @@ export declare function hasSourceFolderInput(config: InterfConfig | null | undef
16
16
  path: string;
17
17
  };
18
18
  };
19
- export declare function hasSourcePreparationInput(config: InterfConfig | null | undefined): config is InterfConfig & {
19
+ export declare function hasSourceProjectInput(config: InterfConfig | null | undefined): config is InterfConfig & {
20
20
  source: {
21
- preparation_path: string;
21
+ project_path: string;
22
22
  };
23
23
  };
24
24
  export declare function detectInterf(cwd: string): {
25
25
  path: string;
26
26
  config: InterfConfig;
27
27
  } | null;
28
- export declare function resolveVerifiableContext(cwd: string): ResolvedVerifiableContext | null;
29
- export declare function resolveSourceFolderPath(verifiableContextPath: string, config?: InterfConfig | null): string;
30
- export declare function resolveSourceControlPath(verifiableContextPath: string): string;
31
- export declare function resolveSourceInputPath(verifiableContextPath: string): string;
32
- export declare function listVerifiableContextsForSourceFolder(prepDataDir: string): Array<{
28
+ export declare function resolveContextGraph(cwd: string): ResolvedContextGraph | null;
29
+ export declare function resolveSourceFolderPath(contextGraphPath: string, config?: InterfConfig | null): string;
30
+ export declare function resolveSourceControlPath(contextGraphPath: string): string;
31
+ export declare function resolveSourceInputPath(contextGraphPath: string): string;
32
+ export declare function listContextGraphsForSourceFolder(projectDataDir: string): Array<{
33
33
  path: string;
34
34
  config: InterfConfig;
35
35
  }>;
36
- export declare function assertVerifiableContextContainer(prepDataDir: string): string;
36
+ export declare function assertContextGraphContainer(projectDataDir: string): string;
37
37
  export declare function assertWritableTargetDir(dirPath: string, label: string): void;
38
- export declare function assertVerifiableContextName(name: string, label: string): void;
38
+ export declare function assertContextGraphName(name: string, label: string): void;
@@ -2,8 +2,8 @@ import { existsSync, readdirSync, statSync, } from "node:fs";
2
2
  import { join, resolve } from "node:path";
3
3
  import { warnInterf } from "../contracts/utils/logger.js";
4
4
  import { readJsonFileUnchecked } from "../contracts/utils/parse.js";
5
- import { asPreparationDataDir, preparationVerifiableContextPath, } from "../contracts/lib/preparation-paths.js";
6
- import { resolveSourceControlPathForVerifiableContext, verifiableContextInterfConfigPath, } from "../engine/build/verifiable-context-paths.js";
5
+ import { asProjectDataDir, projectContextGraphPath, } from "../contracts/lib/project-paths.js";
6
+ import { resolveSourceControlPathForContextGraph, contextGraphInterfConfigPath, } from "../runtime/build/context-graph-paths.js";
7
7
  import { InterfConfigSchema, } from "./lib/schema.js";
8
8
  import { assertPathWithinRoot } from "../contracts/utils/path-guards.js";
9
9
  export const INTERF_CONTAINER_NAME = "interf";
@@ -12,7 +12,7 @@ export const TEST_CONTAINER_NAME = "tests";
12
12
  export const INTERF_CONFIG_FILE = "interf.json";
13
13
  export const BUILD_PLAN_PACKAGE_DIR = "build-plan";
14
14
  export function readInterfConfig(dirPath) {
15
- const configPath = verifiableContextInterfConfigPath(dirPath);
15
+ const configPath = contextGraphInterfConfigPath(dirPath);
16
16
  if (!existsSync(configPath))
17
17
  return null;
18
18
  const raw = readJsonFileUnchecked(configPath, "Interf config");
@@ -20,7 +20,7 @@ export function readInterfConfig(dirPath) {
20
20
  return null;
21
21
  if (!raw || typeof raw !== "object" || Array.isArray(raw))
22
22
  return null;
23
- if (raw.type !== "verifiable-context") {
23
+ if (raw.type !== "context-graph") {
24
24
  return null;
25
25
  }
26
26
  const parsed = InterfConfigSchema.safeParse(raw);
@@ -33,8 +33,8 @@ export function readInterfConfig(dirPath) {
33
33
  export function hasSourceFolderInput(config) {
34
34
  return typeof config?.source?.path === "string" && config.source.path.length > 0;
35
35
  }
36
- export function hasSourcePreparationInput(config) {
37
- return typeof config?.source?.preparation_path === "string" && config.source.preparation_path.length > 0;
36
+ export function hasSourceProjectInput(config) {
37
+ return typeof config?.source?.project_path === "string" && config.source.project_path.length > 0;
38
38
  }
39
39
  export function detectInterf(cwd) {
40
40
  const config = readInterfConfig(cwd);
@@ -42,70 +42,76 @@ export function detectInterf(cwd) {
42
42
  return { path: cwd, config };
43
43
  return null;
44
44
  }
45
- export function resolveVerifiableContext(cwd) {
45
+ export function resolveContextGraph(cwd) {
46
46
  const detected = detectInterf(cwd);
47
47
  if (!detected)
48
48
  return null;
49
49
  return {
50
- prepDataDir: resolveSourceControlPath(detected.path),
51
- verifiableContextPath: detected.path,
50
+ projectDataDir: resolveSourceControlPath(detected.path),
51
+ contextGraphPath: detected.path,
52
52
  config: detected.config,
53
53
  };
54
54
  }
55
- export function resolveSourceFolderPath(verifiableContextPath, config = null) {
56
- const resolvedConfig = config ?? readInterfConfig(verifiableContextPath);
57
- if (hasSourcePreparationInput(resolvedConfig)) {
58
- return resolve(verifiableContextPath, resolvedConfig.source.preparation_path);
55
+ export function resolveSourceFolderPath(contextGraphPath, config = null) {
56
+ const resolvedConfig = config ?? readInterfConfig(contextGraphPath);
57
+ if (hasSourceProjectInput(resolvedConfig)) {
58
+ return resolve(contextGraphPath, resolvedConfig.source.project_path);
59
59
  }
60
60
  if (hasSourceFolderInput(resolvedConfig)) {
61
- return assertPathWithinRoot(verifiableContextPath, resolve(verifiableContextPath, resolvedConfig.source.path), "Verifiable context source path");
61
+ return assertPathWithinRoot(contextGraphPath, resolve(contextGraphPath, resolvedConfig.source.path), "Context Graph source path");
62
62
  }
63
- throw new Error(`Verifiable context at ${verifiableContextPath} is missing source.preparation_path or source.path in ${verifiableContextInterfConfigPath(verifiableContextPath)}.`);
63
+ throw new Error(`Context Graph at ${contextGraphPath} is missing source.project_path or source.path in ${contextGraphInterfConfigPath(contextGraphPath)}.`);
64
64
  }
65
- export function resolveSourceControlPath(verifiableContextPath) {
66
- return resolveSourceControlPathForVerifiableContext(verifiableContextPath);
65
+ export function resolveSourceControlPath(contextGraphPath) {
66
+ return resolveSourceControlPathForContextGraph(contextGraphPath);
67
67
  }
68
- export function resolveSourceInputPath(verifiableContextPath) {
69
- const config = readInterfConfig(verifiableContextPath);
70
- if (hasSourcePreparationInput(config)) {
71
- return resolve(verifiableContextPath, config.source.preparation_path);
68
+ export function resolveSourceInputPath(contextGraphPath) {
69
+ const config = readInterfConfig(contextGraphPath);
70
+ if (hasSourceProjectInput(config)) {
71
+ return resolve(contextGraphPath, config.source.project_path);
72
72
  }
73
- throw new Error(`Verifiable context is missing source.preparation_path in ${verifiableContextInterfConfigPath(verifiableContextPath)}.`);
73
+ throw new Error(`Context Graph is missing source.project_path in ${contextGraphInterfConfigPath(contextGraphPath)}.`);
74
74
  }
75
- export function listVerifiableContextsForSourceFolder(prepDataDir) {
76
- if (!existsSync(prepDataDir))
75
+ export function listContextGraphsForSourceFolder(projectDataDir) {
76
+ if (!existsSync(projectDataDir))
77
77
  return [];
78
78
  try {
79
- if (!statSync(prepDataDir).isDirectory())
79
+ if (!statSync(projectDataDir).isDirectory())
80
80
  return [];
81
81
  }
82
82
  catch (error) {
83
- warnInterf(`Warning: failed to inspect Interf preparation data folder at ${prepDataDir}: ${error instanceof Error ? error.message : String(error)}`);
83
+ warnInterf(`Warning: failed to inspect Interf Project data folder at ${projectDataDir}: ${error instanceof Error ? error.message : String(error)}`);
84
84
  return [];
85
85
  }
86
- return readdirSync(prepDataDir)
86
+ return readdirSync(projectDataDir)
87
87
  .filter((entry) => !entry.startsWith(".") &&
88
88
  entry !== BUILD_PLAN_CONTAINER_NAME &&
89
89
  entry !== TEST_CONTAINER_NAME &&
90
90
  entry !== INTERF_CONFIG_FILE)
91
- .map((entry) => preparationVerifiableContextPath(asPreparationDataDir(prepDataDir), entry))
92
- .filter((verifiableContextPath) => existsSync(verifiableContextPath))
93
- .map((verifiableContextPath) => {
94
- const config = readInterfConfig(verifiableContextPath);
95
- return config ? { path: verifiableContextPath, config } : null;
91
+ .map((entry) => projectContextGraphPath(asProjectDataDir(projectDataDir), entry))
92
+ .filter((contextGraphPath) => existsSync(contextGraphPath))
93
+ .map((contextGraphPath) => {
94
+ const config = readInterfConfig(contextGraphPath);
95
+ return config ? { path: contextGraphPath, config } : null;
96
96
  })
97
97
  .filter((value) => value !== null);
98
98
  }
99
- export function assertVerifiableContextContainer(prepDataDir) {
100
- if (existsSync(prepDataDir)) {
101
- const stat = statSync(prepDataDir);
99
+ export function assertContextGraphContainer(projectDataDir) {
100
+ if (existsSync(projectDataDir)) {
101
+ const stat = statSync(projectDataDir);
102
102
  if (!stat.isDirectory()) {
103
- throw new Error(`Interf preparation data folder exists and is not a directory: ${prepDataDir}`);
103
+ throw new Error(`Interf Project data folder exists and is not a directory: ${projectDataDir}`);
104
104
  }
105
- const unexpectedRootEntries = readdirSync(prepDataDir).filter((entry) => {
105
+ const unexpectedRootEntries = readdirSync(projectDataDir).filter((entry) => {
106
106
  if (entry.startsWith("."))
107
107
  return false;
108
- const entryPath = join(prepDataDir, entry);
108
+ // Tolerate interf.json migration backups (e.g.
109
+ // interf.json.pre-ownership-refactor-<ts>.bak) that older migrations
110
+ // left in the Project root — they are benign and must not block Builds.
111
+ if (entry !== INTERF_CONFIG_FILE && entry.startsWith(`${INTERF_CONFIG_FILE}.`)) {
112
+ return false;
113
+ }
114
+ const entryPath = join(projectDataDir, entry);
109
115
  if (entry === INTERF_CONFIG_FILE) {
110
116
  try {
111
117
  return !statSync(entryPath).isFile();
@@ -121,7 +127,7 @@ export function assertVerifiableContextContainer(prepDataDir) {
121
127
  return !statSync(entryPath).isDirectory();
122
128
  }
123
129
  catch (error) {
124
- warnInterf(`Warning: failed to inspect Interf preparation data path at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
130
+ warnInterf(`Warning: failed to inspect Interf Project data path at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
125
131
  return true;
126
132
  }
127
133
  }
@@ -134,21 +140,21 @@ export function assertVerifiableContextContainer(prepDataDir) {
134
140
  }
135
141
  });
136
142
  if (unexpectedRootEntries.length > 0) {
137
- throw new Error(`Interf preparation data folder contains unexpected entries: ${prepDataDir}`);
143
+ throw new Error(`Interf Project data folder contains unexpected entries: ${projectDataDir}`);
138
144
  }
139
145
  }
140
- if (!existsSync(prepDataDir)) {
141
- return prepDataDir;
146
+ if (!existsSync(projectDataDir)) {
147
+ return projectDataDir;
142
148
  }
143
- const stat = statSync(prepDataDir);
149
+ const stat = statSync(projectDataDir);
144
150
  if (!stat.isDirectory()) {
145
- throw new Error(`Interf preparation data folder exists and is not a directory: ${prepDataDir}`);
151
+ throw new Error(`Interf Project data folder exists and is not a directory: ${projectDataDir}`);
146
152
  }
147
- const unexpectedEntries = readdirSync(prepDataDir).filter((entry) => {
153
+ const unexpectedEntries = readdirSync(projectDataDir).filter((entry) => {
148
154
  if (entry.startsWith("."))
149
155
  return false;
150
156
  if (entry === INTERF_CONFIG_FILE) {
151
- const entryPath = join(prepDataDir, entry);
157
+ const entryPath = join(projectDataDir, entry);
152
158
  try {
153
159
  return !statSync(entryPath).isFile();
154
160
  }
@@ -160,7 +166,7 @@ export function assertVerifiableContextContainer(prepDataDir) {
160
166
  if (entry === BUILD_PLAN_CONTAINER_NAME ||
161
167
  entry === TEST_CONTAINER_NAME)
162
168
  return false;
163
- const entryPath = join(prepDataDir, entry);
169
+ const entryPath = join(projectDataDir, entry);
164
170
  try {
165
171
  if (!statSync(entryPath).isDirectory())
166
172
  return true;
@@ -172,9 +178,9 @@ export function assertVerifiableContextContainer(prepDataDir) {
172
178
  return false;
173
179
  });
174
180
  if (unexpectedEntries.length > 0) {
175
- throw new Error(`Interf preparation data folder contains invalid Preparation entries: ${prepDataDir}`);
181
+ throw new Error(`Interf Project data folder contains invalid Project entries: ${projectDataDir}`);
176
182
  }
177
- return prepDataDir;
183
+ return projectDataDir;
178
184
  }
179
185
  export function assertWritableTargetDir(dirPath, label) {
180
186
  if (!existsSync(dirPath))
@@ -187,7 +193,7 @@ export function assertWritableTargetDir(dirPath, label) {
187
193
  throw new Error(`${label} target already exists and is not empty: ${dirPath}`);
188
194
  }
189
195
  }
190
- export function assertVerifiableContextName(name, label) {
196
+ export function assertContextGraphName(name, label) {
191
197
  if (!/^[a-z0-9][a-z0-9-]*$/.test(name)) {
192
198
  throw new Error(`${label} name must be a safe slug with lowercase letters, numbers, and dashes only: ${name}`);
193
199
  }
@@ -0,0 +1,2 @@
1
+ export { INTERF_CONTAINER_NAME, BUILD_PLAN_CONTAINER_NAME, TEST_CONTAINER_NAME, INTERF_CONFIG_FILE, BUILD_PLAN_PACKAGE_DIR, readInterfConfig, detectInterf, resolveContextGraph, resolveSourceFolderPath, resolveSourceControlPath, resolveSourceInputPath, listContextGraphsForSourceFolder, hasSourceFolderInput, assertContextGraphContainer, assertWritableTargetDir, assertContextGraphName, } from "./interf-detect.js";
2
+ export type { InterfConfig, ResolvedContextGraph } from "./interf-detect.js";
@@ -0,0 +1 @@
1
+ export { INTERF_CONTAINER_NAME, BUILD_PLAN_CONTAINER_NAME, TEST_CONTAINER_NAME, INTERF_CONFIG_FILE, BUILD_PLAN_PACKAGE_DIR, readInterfConfig, detectInterf, resolveContextGraph, resolveSourceFolderPath, resolveSourceControlPath, resolveSourceInputPath, listContextGraphsForSourceFolder, hasSourceFolderInput, assertContextGraphContainer, assertWritableTargetDir, assertContextGraphName, } from "./interf-detect.js";
@@ -0,0 +1,77 @@
1
+ import { z } from "zod";
2
+ export { BuildPlanIdSchema, ProjectIdSchema, } from "../../contracts/lib/schema.js";
3
+ export declare const BenchmarkCheckSchema: z.ZodObject<{
4
+ id: z.ZodOptional<z.ZodString>;
5
+ question: z.ZodString;
6
+ answer: z.ZodOptional<z.ZodString>;
7
+ expect: z.ZodOptional<z.ZodObject<{
8
+ must_include: z.ZodOptional<z.ZodArray<z.ZodString>>;
9
+ must_include_one_of: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodString>>>;
10
+ must_not_include: z.ZodOptional<z.ZodArray<z.ZodString>>;
11
+ min_words: z.ZodOptional<z.ZodNumber>;
12
+ max_words: z.ZodOptional<z.ZodNumber>;
13
+ }, z.core.$strip>>;
14
+ strictness: z.ZodOptional<z.ZodString>;
15
+ }, z.core.$strict>;
16
+ export { RequestedArtifactCheckSchema, RequestedArtifactOutputSchema, RequestedArtifactSchema, SourceContextItemSchema, SourceContextSchema, } from "../../build-plans/authoring/brief.js";
17
+ export declare const ProjectConfigSchema: z.ZodObject<{
18
+ id: z.ZodOptional<z.ZodString>;
19
+ name: z.ZodString;
20
+ intent: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
21
+ path: z.ZodString;
22
+ build_plan: z.ZodOptional<z.ZodString>;
23
+ latest_context_graph_run_id: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strict>;
25
+ export declare const SourceFolderBindingSchema: z.ZodObject<{
26
+ path: z.ZodString;
27
+ }, z.core.$loose>;
28
+ export declare const ContextGraphInterfConfigSchema: z.ZodObject<{
29
+ type: z.ZodLiteral<"context-graph">;
30
+ name: z.ZodString;
31
+ intent: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
32
+ build_plan: z.ZodString;
33
+ build_plan_origin: z.ZodOptional<z.ZodObject<{
34
+ selected: z.ZodString;
35
+ local_draft: z.ZodOptional<z.ZodBoolean>;
36
+ }, z.core.$strip>>;
37
+ source: z.ZodObject<{
38
+ path: z.ZodString;
39
+ control_path: z.ZodOptional<z.ZodString>;
40
+ project_path: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strip>;
42
+ }, z.core.$strip>;
43
+ export declare const InterfConfigSchema: z.ZodObject<{
44
+ type: z.ZodLiteral<"context-graph">;
45
+ name: z.ZodString;
46
+ intent: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
47
+ build_plan: z.ZodString;
48
+ build_plan_origin: z.ZodOptional<z.ZodObject<{
49
+ selected: z.ZodString;
50
+ local_draft: z.ZodOptional<z.ZodBoolean>;
51
+ }, z.core.$strip>>;
52
+ source: z.ZodObject<{
53
+ path: z.ZodString;
54
+ control_path: z.ZodOptional<z.ZodString>;
55
+ project_path: z.ZodOptional<z.ZodString>;
56
+ }, z.core.$strip>;
57
+ }, z.core.$strip>;
58
+ export declare const SourceFolderConfigSchema: z.ZodObject<{
59
+ source_folder: z.ZodOptional<z.ZodObject<{
60
+ path: z.ZodString;
61
+ }, z.core.$loose>>;
62
+ projects: z.ZodDefault<z.ZodArray<z.ZodObject<{
63
+ id: z.ZodOptional<z.ZodString>;
64
+ name: z.ZodString;
65
+ intent: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
66
+ path: z.ZodString;
67
+ build_plan: z.ZodOptional<z.ZodString>;
68
+ latest_context_graph_run_id: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strict>>>;
70
+ }, z.core.$strict>;
71
+ export type SourceFolderBinding = z.infer<typeof SourceFolderBindingSchema>;
72
+ export type BenchmarkCheck = z.infer<typeof BenchmarkCheckSchema>;
73
+ export type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
74
+ export type { RequestedArtifactCheck, RequestedArtifact, RequestedArtifactOutput, SourceContext, } from "../../build-plans/authoring/brief.js";
75
+ export type { ProjectId, BuildPlanId, ProjectIntent, } from "../../contracts/lib/schema.js";
76
+ export type InterfConfig = z.infer<typeof InterfConfigSchema>;
77
+ export type SourceFolderConfig = z.infer<typeof SourceFolderConfigSchema>;
@@ -0,0 +1,91 @@
1
+ import { z } from "zod";
2
+ import { InterfIdPattern, BuildPlanIdSchema, ProjectIdSchema, ProjectIntentSchema, TestCaseExpectSchema, } from "../../contracts/lib/schema.js";
3
+ export { BuildPlanIdSchema, ProjectIdSchema, } from "../../contracts/lib/schema.js";
4
+ /**
5
+ * Absolute paths that an attacker-controlled config must never reach. The
6
+ * build runtime treats `project.path` as a filesystem instruction — letting
7
+ * a browser-tab forge `/etc` or `/sys` could mutate or read system state.
8
+ * The list mirrors the CSO review allowlist.
9
+ */
10
+ const FORBIDDEN_ABSOLUTE_PATH_PREFIXES = [
11
+ "/etc",
12
+ "/sys",
13
+ "/proc",
14
+ "/dev",
15
+ "/var/run",
16
+ "/var/lib",
17
+ "/usr",
18
+ "/bin",
19
+ "/sbin",
20
+ "/boot",
21
+ ];
22
+ function normalizePathForValidation(value) {
23
+ const normalized = value.replace(/\\/g, "/").replace(/\/+/g, "/");
24
+ if (normalized.length > 1)
25
+ return normalized.replace(/\/$/, "");
26
+ return normalized;
27
+ }
28
+ function isForbiddenAbsolutePath(value) {
29
+ const normalized = normalizePathForValidation(value);
30
+ for (const prefix of FORBIDDEN_ABSOLUTE_PATH_PREFIXES) {
31
+ if (normalized === prefix || normalized.startsWith(`${prefix}/`))
32
+ return true;
33
+ }
34
+ return false;
35
+ }
36
+ export const BenchmarkCheckSchema = z.object({
37
+ id: z.string().regex(InterfIdPattern).optional(),
38
+ question: z.string().min(1),
39
+ answer: z.string().min(1).optional(),
40
+ expect: TestCaseExpectSchema.optional(),
41
+ strictness: z.string().min(1).optional(),
42
+ }).strict().superRefine((value, ctx) => {
43
+ if (!value.answer && !value.expect) {
44
+ ctx.addIssue({
45
+ code: z.ZodIssueCode.custom,
46
+ path: ["answer"],
47
+ message: "Benchmark checks need `answer` or `expect`.",
48
+ });
49
+ }
50
+ });
51
+ export { RequestedArtifactCheckSchema, RequestedArtifactOutputSchema, RequestedArtifactSchema, SourceContextItemSchema, SourceContextSchema, } from "../../build-plans/authoring/brief.js";
52
+ export const ProjectConfigSchema = z.object({
53
+ id: z.string().regex(InterfIdPattern).optional(),
54
+ name: ProjectIdSchema,
55
+ intent: ProjectIntentSchema.or(z.literal("")).default(""),
56
+ path: z
57
+ .string()
58
+ .min(1)
59
+ .refine((value) => !isForbiddenAbsolutePath(value), {
60
+ message: "Project Source path may not target system directories (/etc, /sys, /proc, /dev, /usr, /bin, /sbin, /boot, /var/run, /var/lib).",
61
+ })
62
+ .refine((value) => !value.split(/[/\\]/).some((segment) => segment === ".."), {
63
+ message: "Project Source path may not contain `..` segments.",
64
+ }),
65
+ build_plan: BuildPlanIdSchema.optional(),
66
+ latest_context_graph_run_id: z.string().min(1).optional(),
67
+ }).strict();
68
+ export const SourceFolderBindingSchema = z.object({
69
+ path: z.string().min(1),
70
+ }).passthrough();
71
+ export const ContextGraphInterfConfigSchema = z.object({
72
+ type: z.literal("context-graph"),
73
+ name: ProjectIdSchema,
74
+ intent: ProjectIntentSchema.or(z.literal("")).default(""),
75
+ build_plan: BuildPlanIdSchema,
76
+ build_plan_origin: z.object({
77
+ selected: BuildPlanIdSchema,
78
+ local_draft: z.boolean().optional(),
79
+ }).optional(),
80
+ source: z.object({
81
+ path: z.string(),
82
+ control_path: z.string().optional(),
83
+ project_path: z.string().optional(),
84
+ }),
85
+ });
86
+ export const InterfConfigSchema = ContextGraphInterfConfigSchema;
87
+ export const SourceFolderConfigSchema = z.object({
88
+ source_folder: SourceFolderBindingSchema.optional(),
89
+ /** Project entries inside `interf.json`. */
90
+ projects: z.array(ProjectConfigSchema).default([]),
91
+ }).strict();
@@ -0,0 +1,53 @@
1
+ import { type InterfConfig, type SourceFolderBinding, type BenchmarkCheck, type ProjectConfig, type SourceFolderConfig } from "./lib/schema.js";
2
+ import type { TestSpec, TestTargetType } from "../runtime/verify/lib/schema.js";
3
+ interface LoadedSourceTestSpec extends TestSpec {
4
+ id: string;
5
+ filePath: string;
6
+ }
7
+ export declare function sourceFolderConfigPath(projectDataDir: string): string;
8
+ export declare function fingerprintBenchmarkChecks(checks: BenchmarkCheck[]): string;
9
+ export declare function loadSourceFolderConfig(projectDataDir: string): SourceFolderConfig | null;
10
+ export interface WritableSourceFolderConfig {
11
+ source_folder?: SourceFolderBinding;
12
+ projects?: ProjectConfig[];
13
+ }
14
+ export { DEFAULT_BUILD_PLAN_ID, buildPlanIdForProjectConfig } from "../build-plans/build-plan-resolution.js";
15
+ export declare function listProjectConfigs(config: SourceFolderConfig | null): ProjectConfig[];
16
+ export declare function resolveBuildMaxAttempts(override?: number | null): number | null;
17
+ export declare function resolveBuildMaxLoops(override?: number | null): number | null;
18
+ export declare function findProjectConfig(config: SourceFolderConfig | null, projectId: string): ProjectConfig | null;
19
+ export declare function resolveConfiguredSourceFolderPath(projectDataDir: string, config?: SourceFolderConfig | WritableSourceFolderConfig | null | undefined): string | null;
20
+ export declare function saveSourceFolderConfig(projectDataDir: string, config: WritableSourceFolderConfig): void;
21
+ export declare function upsertProjectConfig(projectDataDir: string, projectConfig: ProjectConfig, options?: {
22
+ matchName?: string;
23
+ }): void;
24
+ export declare function markProjectLatestContextGraphRun(projectDataDir: string, projectName: string, runId: string): ProjectConfig;
25
+ export declare function projectConfigFromInterfConfig(config: InterfConfig, projectPath?: string): ProjectConfig;
26
+ export declare function loadContextGraphProjectConfig(contextGraphPath: string): ProjectConfig | null;
27
+ export declare function saveContextGraphInterfConfig(contextGraphPath: string, config: InterfConfig): InterfConfig;
28
+ export declare function syncContextGraphInterfConfigFromProjectConfig(contextGraphPath: string, projectConfig: ProjectConfig): InterfConfig;
29
+ export declare function buildTestSpecFromSourceFolderConfig(options: {
30
+ projectDataDir: string;
31
+ targetName?: string | null;
32
+ targetType?: TestTargetType;
33
+ }): LoadedSourceTestSpec | null;
34
+ export declare function buildTestSpecFromProjectConfig(options: {
35
+ contextGraphPath: string;
36
+ targetType?: TestTargetType;
37
+ }): LoadedSourceTestSpec | null;
38
+ export declare function writeBenchmarkSpecsForProject(options: {
39
+ projectDataDir: string;
40
+ projectName: string;
41
+ checks: BenchmarkCheck[];
42
+ description?: string;
43
+ }): {
44
+ source_files?: string;
45
+ context_graph?: string;
46
+ };
47
+ export declare function fingerprintSavedBenchmarkSpec(options: {
48
+ projectDataDir: string;
49
+ projectName: string;
50
+ targetType?: TestTargetType;
51
+ }): string | null;
52
+ export declare function resolveProjectSourcePath(projectDataDir: string, projectConfig: Pick<ProjectConfig, "path">): string;
53
+ export declare function resolveProjectSourceBindingPath(projectDataDir: string, projectConfig: Pick<ProjectConfig, "path">, config?: SourceFolderConfig | WritableSourceFolderConfig | null | undefined): string;