@interf/compiler 0.22.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/README.md +268 -0
  2. package/dist/bin-mcp.d.ts +2 -0
  3. package/dist/bin-mcp.js +63 -0
  4. package/dist/bin-runtime.d.ts +2 -0
  5. package/dist/bin-runtime.js +111 -0
  6. package/dist/cli/commands/agents.js +4 -4
  7. package/dist/cli/commands/auth.d.ts +20 -0
  8. package/dist/cli/commands/auth.js +161 -0
  9. package/dist/cli/commands/benchmark.d.ts +10 -0
  10. package/dist/cli/commands/benchmark.js +88 -0
  11. package/dist/cli/commands/build-plan.js +95 -103
  12. package/dist/cli/commands/build.d.ts +1 -1
  13. package/dist/cli/commands/build.js +16 -15
  14. package/dist/cli/commands/doctor.js +3 -3
  15. package/dist/cli/commands/graphs.d.ts +2 -0
  16. package/dist/cli/commands/graphs.js +199 -0
  17. package/dist/cli/commands/login.js +4 -6
  18. package/dist/cli/commands/logout.js +1 -1
  19. package/dist/cli/commands/mcp.d.ts +3 -2
  20. package/dist/cli/commands/mcp.js +721 -204
  21. package/dist/cli/commands/project.d.ts +2 -0
  22. package/dist/cli/commands/project.js +202 -0
  23. package/dist/cli/commands/reset.d.ts +1 -1
  24. package/dist/cli/commands/reset.js +10 -10
  25. package/dist/cli/commands/runs.js +52 -26
  26. package/dist/cli/commands/runtime.d.ts +24 -0
  27. package/dist/cli/commands/runtime.js +373 -0
  28. package/dist/cli/commands/status.d.ts +1 -0
  29. package/dist/cli/commands/status.js +33 -22
  30. package/dist/cli/commands/traces.d.ts +2 -0
  31. package/dist/cli/commands/traces.js +125 -0
  32. package/dist/cli/commands/wizard.js +155 -150
  33. package/dist/cli/index.d.ts +7 -4
  34. package/dist/cli/index.js +13 -7
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +2 -2
  37. package/dist/packages/build-plans/authoring/brief.d.ts +517 -0
  38. package/dist/packages/build-plans/authoring/brief.js +89 -0
  39. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +10 -10
  40. package/dist/packages/build-plans/authoring/build-plan-authoring.js +66 -26
  41. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +1 -1
  42. package/dist/packages/build-plans/authoring/build-plan-edit-session.js +8 -2
  43. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
  44. package/dist/packages/build-plans/authoring/build-plan-improvement.js +39 -42
  45. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
  46. package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
  47. package/dist/packages/build-plans/build-plan-resolution.js +3 -3
  48. package/dist/packages/build-plans/index.d.ts +1 -1
  49. package/dist/packages/build-plans/index.js +1 -1
  50. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -12
  51. package/dist/packages/build-plans/package/build-plan-definitions.js +40 -39
  52. package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
  53. package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
  54. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
  55. package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
  56. package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +4 -4
  57. package/dist/packages/build-plans/package/build-plan-stage-runner.js +22 -11
  58. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +5 -6
  59. package/dist/packages/build-plans/package/builtin-build-plan.js +7 -8
  60. package/dist/packages/build-plans/package/context-interface.d.ts +11 -9
  61. package/dist/packages/build-plans/package/context-interface.js +14 -33
  62. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
  63. package/dist/packages/build-plans/package/interf-build-plan-package.js +56 -52
  64. package/dist/packages/build-plans/package/local-build-plans.d.ts +12 -10
  65. package/dist/packages/build-plans/package/local-build-plans.js +56 -31
  66. package/dist/packages/build-plans/package/user-build-plans.js +1 -1
  67. package/dist/packages/contracts/index.d.ts +4 -2
  68. package/dist/packages/contracts/index.js +2 -1
  69. package/dist/packages/contracts/lib/project-paths.d.ts +137 -0
  70. package/dist/packages/contracts/lib/project-paths.js +211 -0
  71. package/dist/packages/contracts/lib/project-schema.d.ts +160 -0
  72. package/dist/packages/contracts/lib/project-schema.js +113 -0
  73. package/dist/packages/contracts/lib/schema.d.ts +739 -80
  74. package/dist/packages/contracts/lib/schema.js +410 -75
  75. package/dist/packages/contracts/utils/parse.js +67 -0
  76. package/dist/packages/projects/index.d.ts +6 -0
  77. package/dist/packages/{project → projects}/index.js +0 -3
  78. package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
  79. package/dist/packages/{project → projects}/interf-detect.js +56 -50
  80. package/dist/packages/projects/interf.d.ts +2 -0
  81. package/dist/packages/projects/interf.js +1 -0
  82. package/dist/packages/projects/lib/schema.d.ts +79 -0
  83. package/dist/packages/projects/lib/schema.js +89 -0
  84. package/dist/packages/projects/source-config.d.ts +58 -0
  85. package/dist/packages/projects/source-config.js +352 -0
  86. package/dist/packages/projects/source-folders.d.ts +11 -0
  87. package/dist/packages/{project → projects}/source-folders.js +26 -26
  88. package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
  89. package/dist/packages/{engine → runtime}/action-planner.js +20 -22
  90. package/dist/packages/runtime/action-values.d.ts +1 -0
  91. package/dist/packages/runtime/action-values.js +1 -0
  92. package/dist/packages/runtime/actions/errors.d.ts +2 -0
  93. package/dist/packages/runtime/actions/errors.js +12 -0
  94. package/dist/packages/runtime/actions/fields.d.ts +82 -0
  95. package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
  96. package/dist/packages/runtime/actions/form-builders.js +619 -0
  97. package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
  98. package/dist/packages/runtime/actions/form-validators.js +128 -0
  99. package/dist/packages/runtime/actions/helpers.d.ts +11 -0
  100. package/dist/packages/runtime/actions/helpers.js +80 -0
  101. package/dist/packages/runtime/actions/index.d.ts +8 -0
  102. package/dist/packages/runtime/actions/index.js +11 -0
  103. package/dist/packages/runtime/actions/registry.d.ts +64 -0
  104. package/dist/packages/runtime/actions/registry.js +62 -0
  105. package/dist/packages/runtime/actions/requests.d.ts +45 -0
  106. package/dist/packages/runtime/actions/requests.js +158 -0
  107. package/dist/packages/runtime/actions/schemas.d.ts +154 -0
  108. package/dist/packages/runtime/actions/schemas.js +36 -0
  109. package/dist/packages/runtime/agent-handoff.d.ts +11 -0
  110. package/dist/packages/runtime/agent-handoff.js +101 -0
  111. package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
  112. package/dist/packages/{engine → runtime}/agents/index.js +1 -2
  113. package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
  114. package/dist/packages/runtime/agents/lib/args.js +24 -0
  115. package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
  116. package/dist/packages/runtime/agents/lib/constants.js +13 -0
  117. package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
  118. package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
  119. package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
  120. package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
  121. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +8 -14
  122. package/dist/packages/{engine → runtime}/agents/lib/execution.js +14 -4
  123. package/dist/packages/{engine → runtime}/agents/lib/preflight.js +15 -13
  124. package/dist/packages/{engine → runtime}/agents/lib/render.js +4 -4
  125. package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
  126. package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
  127. package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
  128. package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
  129. package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
  130. package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
  131. package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
  132. package/dist/packages/runtime/agents/lib/shell-templates.js +452 -0
  133. package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
  134. package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
  135. package/dist/packages/runtime/agents/lib/shells.d.ts +63 -0
  136. package/dist/packages/runtime/agents/lib/shells.js +383 -0
  137. package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
  138. package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
  139. package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
  140. package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
  141. package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
  142. package/dist/packages/runtime/agents/providers/codex.js +64 -0
  143. package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
  144. package/dist/packages/runtime/agents/providers/cursor.js +24 -0
  145. package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
  146. package/dist/packages/runtime/agents/providers/index.js +31 -0
  147. package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
  148. package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
  149. package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
  150. package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
  151. package/dist/packages/{engine → runtime}/agents/role-executors.js +7 -6
  152. package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
  153. package/dist/packages/runtime/auth/account-context.d.ts +52 -0
  154. package/dist/packages/runtime/auth/account-context.js +68 -0
  155. package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
  156. package/dist/packages/runtime/auth/auth-flow.js +189 -0
  157. package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
  158. package/dist/packages/runtime/auth/jwt-validator.js +86 -0
  159. package/dist/packages/runtime/auth/keychain.d.ts +35 -0
  160. package/dist/packages/runtime/auth/keychain.js +85 -0
  161. package/dist/packages/runtime/auth/session-store.d.ts +38 -0
  162. package/dist/packages/runtime/auth/session-store.js +88 -0
  163. package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
  164. package/dist/packages/runtime/auth/workos-client.js +87 -0
  165. package/dist/packages/runtime/benchmark-question-draft.d.ts +20 -0
  166. package/dist/packages/runtime/benchmark-question-draft.js +124 -0
  167. package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
  168. package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
  169. package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +5 -5
  170. package/dist/packages/{engine → runtime}/build/artifact-status.js +25 -23
  171. package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
  172. package/dist/packages/runtime/build/atomic-fs.js +95 -0
  173. package/dist/packages/runtime/build/billing-events.d.ts +78 -0
  174. package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
  175. package/dist/packages/runtime/build/build-evidence.d.ts +15 -0
  176. package/dist/packages/runtime/build/build-evidence.js +173 -0
  177. package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
  178. package/dist/packages/runtime/build/build-pipeline.js +304 -0
  179. package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
  180. package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
  181. package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
  182. package/dist/packages/runtime/build/build-plan-runs.js +31 -0
  183. package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
  184. package/dist/packages/{engine → runtime}/build/build-stage-plan.js +28 -29
  185. package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
  186. package/dist/packages/runtime/build/build-stage-runner.js +165 -0
  187. package/dist/packages/{engine → runtime}/build/build-target.d.ts +4 -4
  188. package/dist/packages/runtime/build/build-target.js +16 -0
  189. package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
  190. package/dist/packages/runtime/build/check-evaluator.js +575 -0
  191. package/dist/packages/runtime/build/context-graph-paths.d.ts +51 -0
  192. package/dist/packages/runtime/build/context-graph-paths.js +133 -0
  193. package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
  194. package/dist/packages/runtime/build/context-graph-schema.js +39 -0
  195. package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
  196. package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
  197. package/dist/packages/{engine → runtime}/build/index.d.ts +5 -3
  198. package/dist/packages/{engine → runtime}/build/index.js +5 -3
  199. package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +221 -88
  200. package/dist/packages/{engine → runtime}/build/lib/schema.js +61 -41
  201. package/dist/packages/runtime/build/reset.d.ts +2 -0
  202. package/dist/packages/runtime/build/reset.js +62 -0
  203. package/dist/packages/{engine → runtime}/build/runtime-contracts.js +5 -5
  204. package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
  205. package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
  206. package/dist/packages/{engine → runtime}/build/runtime-paths.js +6 -6
  207. package/dist/packages/{engine → runtime}/build/runtime-prompt.js +7 -6
  208. package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
  209. package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
  210. package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
  211. package/dist/packages/runtime/build/runtime-runs.js +265 -0
  212. package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +6 -6
  213. package/dist/packages/runtime/build/runtime-types.js +1 -0
  214. package/dist/packages/runtime/build/runtime.d.ts +6 -0
  215. package/dist/packages/runtime/build/runtime.js +5 -0
  216. package/dist/packages/runtime/build/source-files.d.ts +58 -0
  217. package/dist/packages/runtime/build/source-files.js +184 -0
  218. package/dist/packages/runtime/build/source-inventory.d.ts +27 -0
  219. package/dist/packages/runtime/build/source-inventory.js +273 -0
  220. package/dist/packages/runtime/build/source-manifest.d.ts +52 -0
  221. package/dist/packages/runtime/build/source-manifest.js +192 -0
  222. package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
  223. package/dist/packages/runtime/build/stage-evidence.js +317 -0
  224. package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
  225. package/dist/packages/runtime/build/stage-reuse.js +142 -0
  226. package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
  227. package/dist/packages/runtime/build/state-artifacts.js +14 -0
  228. package/dist/packages/runtime/build/state-health.d.ts +4 -0
  229. package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
  230. package/dist/packages/runtime/build/state-io.d.ts +12 -0
  231. package/dist/packages/runtime/build/state-io.js +119 -0
  232. package/dist/packages/{engine → runtime}/build/state-paths.d.ts +3 -1
  233. package/dist/packages/runtime/build/state-paths.js +22 -0
  234. package/dist/packages/runtime/build/state-view.d.ts +5 -0
  235. package/dist/packages/{engine → runtime}/build/state-view.js +60 -33
  236. package/dist/packages/runtime/build/state.d.ts +7 -0
  237. package/dist/packages/runtime/build/state.js +12 -0
  238. package/dist/packages/runtime/build/traces.d.ts +30 -0
  239. package/dist/packages/runtime/build/traces.js +133 -0
  240. package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
  241. package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +48 -35
  242. package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
  243. package/dist/packages/{engine → runtime}/build/validate.js +26 -26
  244. package/dist/packages/{engine → runtime}/client.d.ts +15 -15
  245. package/dist/packages/{engine → runtime}/client.js +41 -24
  246. package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
  247. package/dist/packages/{engine → runtime}/connection-config.js +9 -8
  248. package/dist/packages/runtime/context-checks.d.ts +10 -0
  249. package/dist/packages/runtime/context-checks.js +114 -0
  250. package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
  251. package/dist/packages/runtime/context-graph-scaffold.js +134 -0
  252. package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
  253. package/dist/packages/runtime/entitlement-guard.js +70 -0
  254. package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
  255. package/dist/packages/{engine → runtime}/execution/index.js +1 -1
  256. package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +270 -192
  257. package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
  258. package/dist/packages/runtime/index.d.ts +29 -0
  259. package/dist/packages/runtime/index.js +21 -0
  260. package/dist/packages/runtime/instance-paths.d.ts +30 -0
  261. package/dist/packages/runtime/instance-paths.js +29 -0
  262. package/dist/packages/{engine → runtime}/native-run-handlers.d.ts +4 -4
  263. package/dist/packages/{engine → runtime}/native-run-handlers.js +184 -152
  264. package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
  265. package/dist/packages/runtime/plan-artifact-contract.js +42 -0
  266. package/dist/packages/runtime/project-entries.d.ts +11 -0
  267. package/dist/packages/runtime/project-entries.js +49 -0
  268. package/dist/packages/runtime/project-source-state.d.ts +26 -0
  269. package/dist/packages/runtime/project-source-state.js +53 -0
  270. package/dist/packages/runtime/project-store.d.ts +85 -0
  271. package/dist/packages/runtime/project-store.js +168 -0
  272. package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
  273. package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
  274. package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
  275. package/dist/packages/{engine → runtime}/run-observability.js +166 -84
  276. package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
  277. package/dist/packages/runtime/runtime-action-proposals.js +542 -0
  278. package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
  279. package/dist/packages/runtime/runtime-build-plans.js +131 -0
  280. package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
  281. package/dist/packages/runtime/runtime-build-runs.js +562 -0
  282. package/dist/packages/runtime/runtime-caches.d.ts +91 -0
  283. package/dist/packages/{engine → runtime}/runtime-caches.js +77 -49
  284. package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
  285. package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
  286. package/dist/packages/runtime/runtime-executor.d.ts +22 -0
  287. package/dist/packages/runtime/runtime-executor.js +131 -0
  288. package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
  289. package/dist/packages/runtime/runtime-jobs.js +463 -0
  290. package/dist/packages/runtime/runtime-observability.d.ts +11 -0
  291. package/dist/packages/runtime/runtime-observability.js +39 -0
  292. package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
  293. package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
  294. package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
  295. package/dist/packages/runtime/runtime-project-mutations.js +64 -0
  296. package/dist/packages/runtime/runtime-project-reads.d.ts +15 -0
  297. package/dist/packages/runtime/runtime-project-reads.js +381 -0
  298. package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
  299. package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
  300. package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +21 -16
  301. package/dist/packages/{engine → runtime}/runtime-resource-builders.js +48 -38
  302. package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
  303. package/dist/packages/runtime/runtime-verify-runs.js +295 -0
  304. package/dist/packages/runtime/runtime.d.ts +1165 -0
  305. package/dist/packages/runtime/runtime.js +417 -0
  306. package/dist/packages/runtime/schemas/actions.d.ts +1182 -0
  307. package/dist/packages/runtime/schemas/actions.js +117 -0
  308. package/dist/packages/runtime/schemas/agents.d.ts +76 -0
  309. package/dist/packages/runtime/schemas/agents.js +41 -0
  310. package/dist/packages/runtime/schemas/build-plans.d.ts +959 -0
  311. package/dist/packages/runtime/schemas/build-plans.js +107 -0
  312. package/dist/packages/runtime/schemas/files.d.ts +567 -0
  313. package/dist/packages/runtime/schemas/files.js +51 -0
  314. package/dist/packages/runtime/schemas/index.d.ts +8 -0
  315. package/dist/packages/runtime/schemas/index.js +12 -0
  316. package/dist/packages/runtime/schemas/instance.d.ts +141 -0
  317. package/dist/packages/runtime/schemas/instance.js +143 -0
  318. package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
  319. package/dist/packages/runtime/schemas/jobs.js +103 -0
  320. package/dist/packages/runtime/schemas/projects.d.ts +339 -0
  321. package/dist/packages/runtime/schemas/projects.js +136 -0
  322. package/dist/packages/runtime/schemas/runs.d.ts +2676 -0
  323. package/dist/packages/runtime/schemas/runs.js +98 -0
  324. package/dist/packages/runtime/service/index.d.ts +3 -0
  325. package/dist/packages/runtime/service/index.js +3 -0
  326. package/dist/packages/runtime/service/openapi.d.ts +7 -0
  327. package/dist/packages/runtime/service/openapi.js +117 -0
  328. package/dist/packages/runtime/service/operations.d.ts +1490 -0
  329. package/dist/packages/runtime/service/operations.js +245 -0
  330. package/dist/packages/runtime/service/routes.d.ts +106 -0
  331. package/dist/packages/runtime/service/routes.js +120 -0
  332. package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
  333. package/dist/packages/runtime/service/server-api-files.js +85 -0
  334. package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
  335. package/dist/packages/runtime/service/server-app-boot.js +46 -0
  336. package/dist/packages/runtime/service/server-guards.d.ts +63 -0
  337. package/dist/packages/runtime/service/server-guards.js +181 -0
  338. package/dist/packages/runtime/service/server-helpers.d.ts +27 -0
  339. package/dist/packages/runtime/service/server-helpers.js +89 -0
  340. package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
  341. package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
  342. package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
  343. package/dist/packages/runtime/service/server-routes-action-proposals.js +43 -0
  344. package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
  345. package/dist/packages/runtime/service/server-routes-agents.js +198 -0
  346. package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
  347. package/dist/packages/runtime/service/server-routes-auth.js +138 -0
  348. package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
  349. package/dist/packages/runtime/service/server-routes-build-plans.js +83 -0
  350. package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
  351. package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
  352. package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
  353. package/dist/packages/runtime/service/server-routes-events.js +99 -0
  354. package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
  355. package/dist/packages/runtime/service/server-routes-project-context.js +192 -0
  356. package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
  357. package/dist/packages/runtime/service/server-routes-project-jobs.js +130 -0
  358. package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
  359. package/dist/packages/runtime/service/server-routes-project-runs.js +85 -0
  360. package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
  361. package/dist/packages/runtime/service/server-routes-projects.js +92 -0
  362. package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
  363. package/dist/packages/runtime/service/server-routes-runs.js +112 -0
  364. package/dist/packages/runtime/service/server.d.ts +37 -0
  365. package/dist/packages/runtime/service/server.js +300 -0
  366. package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
  367. package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
  368. package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
  369. package/dist/packages/runtime/verify/benchmark-run.js +303 -0
  370. package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
  371. package/dist/packages/{engine → runtime}/verify/index.js +1 -1
  372. package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
  373. package/dist/packages/{engine → runtime}/verify/lib/schema.js +26 -18
  374. package/dist/packages/{engine → runtime}/verify/verify-execution.js +11 -11
  375. package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +4 -4
  376. package/dist/packages/runtime/verify/verify-paths.js +61 -0
  377. package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
  378. package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
  379. package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
  380. package/dist/packages/{engine → runtime}/verify/verify-specs.js +5 -3
  381. package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
  382. package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
  383. package/dist/packages/runtime/verify/verify-types.js +1 -0
  384. package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
  385. package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
  386. package/dist/packages/runtime/wire-schemas.d.ts +18 -0
  387. package/dist/packages/runtime/wire-schemas.js +27 -0
  388. package/package.json +40 -30
  389. package/public-repo/CONTRIBUTING.md +7 -16
  390. package/public-repo/README.md +175 -234
  391. package/public-repo/SECURITY.md +3 -4
  392. package/public-repo/build-plans/interf-default/README.md +19 -14
  393. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +18 -11
  394. package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +12 -5
  395. package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +16 -4
  396. package/public-repo/build-plans/interf-default/build-plan.json +34 -28
  397. package/public-repo/build-plans/interf-default/build-plan.schema.json +54 -32
  398. package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
  399. package/public-repo/build-plans/interf-default/use/query/SKILL.md +17 -11
  400. package/public-repo/openapi/local-service.openapi.json +6803 -0
  401. package/public-repo/skills/interf/SKILL.md +460 -179
  402. package/dist/cli/commands/prep.d.ts +0 -2
  403. package/dist/cli/commands/prep.js +0 -240
  404. package/dist/cli/commands/test.d.ts +0 -10
  405. package/dist/cli/commands/test.js +0 -85
  406. package/dist/cli/commands/web.d.ts +0 -2
  407. package/dist/cli/commands/web.js +0 -286
  408. package/dist/interf-ui/404.html +0 -1
  409. package/dist/interf-ui/__next.__PAGE__.txt +0 -10
  410. package/dist/interf-ui/__next._full.txt +0 -20
  411. package/dist/interf-ui/__next._head.txt +0 -5
  412. package/dist/interf-ui/__next._index.txt +0 -5
  413. package/dist/interf-ui/__next._tree.txt +0 -5
  414. package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_buildManifest.js +0 -11
  415. package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_clientMiddlewareManifest.js +0 -1
  416. package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_ssgManifest.js +0 -1
  417. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
  418. package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
  419. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
  420. package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
  421. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
  422. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
  423. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
  424. package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
  425. package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
  426. package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
  427. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
  428. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
  429. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
  430. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
  431. package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
  432. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
  433. package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
  434. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
  435. package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
  436. package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  437. package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  438. package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
  439. package/dist/interf-ui/_not-found/__next._full.txt +0 -15
  440. package/dist/interf-ui/_not-found/__next._head.txt +0 -5
  441. package/dist/interf-ui/_not-found/__next._index.txt +0 -5
  442. package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
  443. package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
  444. package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
  445. package/dist/interf-ui/_not-found.html +0 -1
  446. package/dist/interf-ui/_not-found.txt +0 -15
  447. package/dist/interf-ui/index.html +0 -1
  448. package/dist/interf-ui/index.txt +0 -20
  449. package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
  450. package/dist/packages/contracts/lib/preparation-paths.js +0 -177
  451. package/dist/packages/engine/action-definitions.d.ts +0 -407
  452. package/dist/packages/engine/action-definitions.js +0 -1158
  453. package/dist/packages/engine/action-values.d.ts +0 -1
  454. package/dist/packages/engine/action-values.js +0 -1
  455. package/dist/packages/engine/agents/lib/args.d.ts +0 -4
  456. package/dist/packages/engine/agents/lib/args.js +0 -52
  457. package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
  458. package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
  459. package/dist/packages/engine/agents/lib/constants.js +0 -28
  460. package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
  461. package/dist/packages/engine/agents/lib/schema.js +0 -7
  462. package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
  463. package/dist/packages/engine/agents/lib/shells.js +0 -1052
  464. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
  465. package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
  466. package/dist/packages/engine/build/billing-events.d.ts +0 -89
  467. package/dist/packages/engine/build/build-pipeline.js +0 -175
  468. package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
  469. package/dist/packages/engine/build/build-plan-runs.js +0 -31
  470. package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
  471. package/dist/packages/engine/build/build-stage-runner.js +0 -94
  472. package/dist/packages/engine/build/build-target.js +0 -16
  473. package/dist/packages/engine/build/check-evaluator.js +0 -298
  474. package/dist/packages/engine/build/reset.d.ts +0 -2
  475. package/dist/packages/engine/build/reset.js +0 -74
  476. package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
  477. package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
  478. package/dist/packages/engine/build/runtime-runs.js +0 -224
  479. package/dist/packages/engine/build/runtime.d.ts +0 -5
  480. package/dist/packages/engine/build/runtime.js +0 -4
  481. package/dist/packages/engine/build/source-files.d.ts +0 -46
  482. package/dist/packages/engine/build/source-files.js +0 -149
  483. package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
  484. package/dist/packages/engine/build/state-artifacts.js +0 -14
  485. package/dist/packages/engine/build/state-health.d.ts +0 -4
  486. package/dist/packages/engine/build/state-io.d.ts +0 -11
  487. package/dist/packages/engine/build/state-io.js +0 -82
  488. package/dist/packages/engine/build/state-paths.js +0 -16
  489. package/dist/packages/engine/build/state-view.d.ts +0 -5
  490. package/dist/packages/engine/build/state.d.ts +0 -7
  491. package/dist/packages/engine/build/state.js +0 -12
  492. package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
  493. package/dist/packages/engine/build/validate-helpers.js +0 -41
  494. package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
  495. package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
  496. package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
  497. package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
  498. package/dist/packages/engine/cloud-seams.d.ts +0 -115
  499. package/dist/packages/engine/cloud-seams.js +0 -84
  500. package/dist/packages/engine/index.d.ts +0 -22
  501. package/dist/packages/engine/index.js +0 -15
  502. package/dist/packages/engine/instance-paths.d.ts +0 -106
  503. package/dist/packages/engine/instance-paths.js +0 -171
  504. package/dist/packages/engine/lib/schema.d.ts +0 -6304
  505. package/dist/packages/engine/lib/schema.js +0 -730
  506. package/dist/packages/engine/preparation-store.d.ts +0 -105
  507. package/dist/packages/engine/preparation-store.js +0 -213
  508. package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
  509. package/dist/packages/engine/readiness-check-draft.js +0 -111
  510. package/dist/packages/engine/requested-artifacts.d.ts +0 -5
  511. package/dist/packages/engine/routes.d.ts +0 -85
  512. package/dist/packages/engine/routes.js +0 -99
  513. package/dist/packages/engine/runtime-caches.d.ts +0 -76
  514. package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
  515. package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
  516. package/dist/packages/engine/runtime.d.ts +0 -371
  517. package/dist/packages/engine/runtime.js +0 -2463
  518. package/dist/packages/engine/server.d.ts +0 -58
  519. package/dist/packages/engine/server.js +0 -1399
  520. package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
  521. package/dist/packages/engine/verify/readiness-check-run.js +0 -265
  522. package/dist/packages/engine/verify/verify-paths.js +0 -61
  523. package/dist/packages/engine/verify/verify-sandbox.js +0 -88
  524. package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
  525. package/dist/packages/engine/wire-schemas.d.ts +0 -547
  526. package/dist/packages/engine/wire-schemas.js +0 -59
  527. package/dist/packages/project/index.d.ts +0 -9
  528. package/dist/packages/project/interf-bootstrap.d.ts +0 -1
  529. package/dist/packages/project/interf-bootstrap.js +0 -1
  530. package/dist/packages/project/interf-scaffold.d.ts +0 -3
  531. package/dist/packages/project/interf-scaffold.js +0 -136
  532. package/dist/packages/project/interf.d.ts +0 -4
  533. package/dist/packages/project/interf.js +0 -3
  534. package/dist/packages/project/lib/schema.d.ts +0 -328
  535. package/dist/packages/project/lib/schema.js +0 -136
  536. package/dist/packages/project/preparation-entries.d.ts +0 -11
  537. package/dist/packages/project/preparation-entries.js +0 -49
  538. package/dist/packages/project/source-config.d.ts +0 -46
  539. package/dist/packages/project/source-config.js +0 -394
  540. package/dist/packages/project/source-folders.d.ts +0 -11
  541. package/public-repo/plugins/README.md +0 -9
  542. package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
  543. package/public-repo/plugins/interf/.mcp.json +0 -12
  544. package/public-repo/plugins/interf/README.md +0 -32
  545. package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
  546. /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
  547. /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
  548. /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
  549. /package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +0 -0
  550. /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
  551. /package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +0 -0
  552. /package/dist/packages/{engine → runtime}/agents/lib/executors.js +0 -0
  553. /package/dist/packages/{engine → runtime}/agents/lib/logs.d.ts +0 -0
  554. /package/dist/packages/{engine → runtime}/agents/lib/logs.js +0 -0
  555. /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
  556. /package/dist/packages/{engine → runtime}/agents/lib/render.d.ts +0 -0
  557. /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
  558. /package/dist/packages/{engine → runtime}/agents/lib/status.js +0 -0
  559. /package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +0 -0
  560. /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
  561. /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
  562. /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
  563. /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
  564. /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
  565. /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
  566. /package/dist/packages/{engine → runtime}/build/runtime-paths.d.ts +0 -0
  567. /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
  568. /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
  569. /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
  570. /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
  571. /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
  572. /package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +0 -0
  573. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
  574. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
  575. /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
@@ -0,0 +1,352 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
3
+ import { isAbsolute, relative, resolve, sep } from "node:path";
4
+ import { refreshContextGraphBootstrapGuidance } from "../runtime/agents/lib/context-graph-bootstrap.js";
5
+ import { readInterfConfig, } from "./interf.js";
6
+ import { seedContextGraphBuildPlanPackage } from "../build-plans/package/interf-build-plan-package.js";
7
+ import { readJsonFileWithSchema } from "../contracts/utils/parse.js";
8
+ import { getBuildPlan } from "../build-plans/package/build-plan-definitions.js";
9
+ import { DEFAULT_BUILD_PLAN_ID, buildPlanIdForProjectConfig, } from "../build-plans/build-plan-resolution.js";
10
+ import { SourceFolderConfigSchema, } from "./lib/schema.js";
11
+ import { listTestSpecs, writeTestSpec, } from "../runtime/verify/verify-specs.js";
12
+ import { slugify } from "../contracts/utils/naming.js";
13
+ import { assertPathWithinRoot, isPathWithinRoot } from "../contracts/utils/path-guards.js";
14
+ import { defaultControlPathForContextGraph, resolveSourceControlPathForContextGraph, contextGraphInterfConfigPath, contextGraphInterfRoot, } from "../runtime/build/context-graph-paths.js";
15
+ import { asProjectDataDir, projectConfigPath, PROJECT_CONFIG_FILENAME, } from "../contracts/lib/project-paths.js";
16
+ export const SOURCE_FOLDER_CONFIG_PATH = PROJECT_CONFIG_FILENAME;
17
+ export function sourceFolderConfigPath(projectDataDir) {
18
+ return projectConfigPath(asProjectDataDir(projectDataDir));
19
+ }
20
+ function readSourceFolderConfigFile(filePath) {
21
+ return readJsonFileWithSchema(filePath, "Source folder config", SourceFolderConfigSchema);
22
+ }
23
+ function normalizeBenchmarkChecks(cases) {
24
+ const seen = new Set();
25
+ return cases.map((caseSpec, index) => {
26
+ const baseId = slugify(caseSpec.id ?? caseSpec.question) || `check-${index + 1}`;
27
+ let id = baseId;
28
+ let suffix = 2;
29
+ while (seen.has(id)) {
30
+ id = `${baseId}-${suffix}`;
31
+ suffix += 1;
32
+ }
33
+ seen.add(id);
34
+ return {
35
+ id,
36
+ question: caseSpec.question.trim(),
37
+ ...(caseSpec.answer ? { answer: caseSpec.answer.trim() } : {}),
38
+ ...(caseSpec.strictness ? { strictness: caseSpec.strictness.trim() } : {}),
39
+ ...(caseSpec.expect ? { expect: caseSpec.expect } : {}),
40
+ };
41
+ });
42
+ }
43
+ export function fingerprintBenchmarkChecks(checks) {
44
+ const normalized = checks.map((check) => ({
45
+ question: check.question.trim(),
46
+ ...(check.answer ? { answer: check.answer.trim() } : {}),
47
+ ...(check.strictness ? { strictness: check.strictness.trim() } : {}),
48
+ ...(check.expect ? { expect: check.expect } : {}),
49
+ }));
50
+ return createHash("sha256")
51
+ .update(JSON.stringify(normalized))
52
+ .digest("hex")
53
+ .slice(0, 16);
54
+ }
55
+ export function loadSourceFolderConfig(projectDataDir) {
56
+ const filePath = sourceFolderConfigPath(projectDataDir);
57
+ if (!existsSync(filePath))
58
+ return null;
59
+ return readSourceFolderConfigFile(filePath);
60
+ }
61
+ export { DEFAULT_BUILD_PLAN_ID, buildPlanIdForProjectConfig } from "../build-plans/build-plan-resolution.js";
62
+ function normalizeProjectConfig(projectConfig) {
63
+ const buildPlan = buildPlanIdForProjectConfig(projectConfig);
64
+ return {
65
+ ...projectConfig,
66
+ ...(buildPlan ? { build_plan: buildPlan } : {}),
67
+ };
68
+ }
69
+ export function listProjectConfigs(config) {
70
+ return (config?.projects ?? []).map((project) => normalizeProjectConfig(project));
71
+ }
72
+ export function resolveBuildMaxAttempts(override = null) {
73
+ if (override == null)
74
+ return null;
75
+ const normalized = Math.trunc(override);
76
+ if (!Number.isFinite(normalized) || normalized < 1)
77
+ return 1;
78
+ return Math.min(5, normalized);
79
+ }
80
+ export function resolveBuildMaxLoops(override = null) {
81
+ if (override == null)
82
+ return null;
83
+ const normalized = Math.trunc(override);
84
+ if (!Number.isFinite(normalized) || normalized < 1)
85
+ return 1;
86
+ return Math.min(3, normalized);
87
+ }
88
+ export function getDefaultProjectConfig(config) {
89
+ const projects = listProjectConfigs(config);
90
+ return projects[0] ?? null;
91
+ }
92
+ export function findProjectConfig(config, projectId) {
93
+ return listProjectConfigs(config).find((project) => project.name === projectId) ?? null;
94
+ }
95
+ export function configuredSourceFolderPath(config) {
96
+ return config?.source_folder?.path ?? null;
97
+ }
98
+ export function resolveConfiguredSourceFolderPath(projectDataDir, config = loadSourceFolderConfig(projectDataDir)) {
99
+ const configuredPath = configuredSourceFolderPath(config);
100
+ return configuredPath ? resolve(projectDataDir, configuredPath) : null;
101
+ }
102
+ function toWritableSourceFolderConfig(config) {
103
+ const projects = config?.projects ?? [];
104
+ const sourceFolder = config?.source_folder;
105
+ if (projects.length > 0) {
106
+ return {
107
+ ...(sourceFolder ? { source_folder: sourceFolder } : {}),
108
+ projects: projects.map((project) => toWritableProjectConfig(project)),
109
+ };
110
+ }
111
+ return {
112
+ ...(sourceFolder ? { source_folder: sourceFolder } : {}),
113
+ projects: [],
114
+ };
115
+ }
116
+ function toWritableProjectConfig(project) {
117
+ const buildPlan = buildPlanIdForProjectConfig(project);
118
+ return {
119
+ name: project.name,
120
+ path: project.path,
121
+ ...(buildPlan ? { build_plan: buildPlan } : {}),
122
+ ...(project.latest_context_graph_run_id ? { latest_context_graph_run_id: project.latest_context_graph_run_id } : {}),
123
+ };
124
+ }
125
+ export function saveSourceFolderConfig(projectDataDir, config) {
126
+ const existing = loadSourceFolderConfig(projectDataDir);
127
+ const mergedConfig = {
128
+ ...(existing?.source_folder && !config.source_folder ? { source_folder: existing.source_folder } : {}),
129
+ ...config,
130
+ };
131
+ mkdirSync(projectDataDir, { recursive: true });
132
+ writeFileSync(sourceFolderConfigPath(projectDataDir), JSON.stringify(toWritableSourceFolderConfig(mergedConfig), null, 2) + "\n");
133
+ }
134
+ export function upsertProjectConfig(projectDataDir, projectConfig, options = {}) {
135
+ const existing = loadSourceFolderConfig(projectDataDir);
136
+ const projects = listProjectConfigs(existing);
137
+ const candidateNames = Array.from(new Set([projectConfig.name, options.matchName].filter((value) => Boolean(value))));
138
+ const existingIndex = projects.findIndex((entry) => candidateNames.includes(entry.name));
139
+ if (existingIndex >= 0) {
140
+ projects[existingIndex] = normalizeProjectConfig(projectConfig);
141
+ }
142
+ else {
143
+ projects.push(normalizeProjectConfig(projectConfig));
144
+ }
145
+ saveSourceFolderConfig(projectDataDir, {
146
+ projects: projects,
147
+ });
148
+ }
149
+ export function markProjectLatestContextGraphRun(projectDataDir, projectName, runId) {
150
+ const project = findProjectConfig(loadSourceFolderConfig(projectDataDir), projectName);
151
+ if (!project) {
152
+ throw new Error(`Project "${projectName}" is not saved in this control plane folder.`);
153
+ }
154
+ const next = {
155
+ ...project,
156
+ latest_context_graph_run_id: runId,
157
+ };
158
+ upsertProjectConfig(projectDataDir, next);
159
+ return next;
160
+ }
161
+ export function removeProjectConfig(projectDataDir, projectId) {
162
+ const existing = loadSourceFolderConfig(projectDataDir);
163
+ const projects = listProjectConfigs(existing);
164
+ const nextProjects = projects.filter((entry) => entry.name !== projectId);
165
+ if (nextProjects.length === projects.length)
166
+ return false;
167
+ saveSourceFolderConfig(projectDataDir, {
168
+ projects: nextProjects,
169
+ });
170
+ return true;
171
+ }
172
+ export function projectConfigFromInterfConfig(config, projectPath = `./${config.name}`) {
173
+ return {
174
+ name: config.name,
175
+ path: projectPath,
176
+ build_plan: config.build_plan,
177
+ };
178
+ }
179
+ export function loadContextGraphProjectConfig(contextGraphPath) {
180
+ const config = readInterfConfig(contextGraphPath);
181
+ if (!config)
182
+ return null;
183
+ const projectDataDir = resolveSourceControlPathForContextGraph(contextGraphPath);
184
+ const configuredProjects = listProjectConfigs(loadSourceFolderConfig(projectDataDir));
185
+ const defaultProjectPath = configuredProjects.length === 1
186
+ ? configuredProjects[0].path
187
+ : `./${config.name}`;
188
+ const sourceBinding = typeof config.source?.project_path === "string" && config.source.project_path.length > 0
189
+ ? config.source.project_path
190
+ : null;
191
+ const projectPath = sourceBinding
192
+ ? (() => {
193
+ const sourceAbsolutePath = resolve(contextGraphPath, sourceBinding);
194
+ if (!isPathWithinRoot(projectDataDir, sourceAbsolutePath)) {
195
+ return sourceAbsolutePath;
196
+ }
197
+ return relative(projectDataDir, sourceAbsolutePath).split(sep).join("/") || defaultProjectPath;
198
+ })()
199
+ : defaultProjectPath;
200
+ return projectConfigFromInterfConfig(config, projectPath);
201
+ }
202
+ export function saveContextGraphInterfConfig(contextGraphPath, config) {
203
+ mkdirSync(contextGraphInterfRoot(contextGraphPath), { recursive: true });
204
+ writeFileSync(contextGraphInterfConfigPath(contextGraphPath), JSON.stringify(config, null, 2) + "\n");
205
+ return config;
206
+ }
207
+ export function syncContextGraphInterfConfigFromProjectConfig(contextGraphPath, projectConfig) {
208
+ const current = readInterfConfig(contextGraphPath);
209
+ const projectDataDir = resolveSourceControlPathForContextGraph(contextGraphPath);
210
+ const projectSourceAbsolutePath = resolveProjectSourceBindingPath(projectDataDir, projectConfig);
211
+ const projectSourceRelativePath = relative(contextGraphPath, projectSourceAbsolutePath).split(sep).join("/") || ".";
212
+ const buildPlanId = buildPlanIdForProjectConfig(projectConfig)
213
+ ?? buildPlanIdForProjectConfig(current)
214
+ ?? DEFAULT_BUILD_PLAN_ID;
215
+ const buildPlanChanged = current?.build_plan !== undefined && current.build_plan !== buildPlanId;
216
+ const buildPlanOrigin = buildPlanChanged || !current?.build_plan_origin
217
+ ? {
218
+ selected: buildPlanId,
219
+ local_draft: false,
220
+ }
221
+ : current.build_plan_origin;
222
+ const nextConfig = {
223
+ ...(!current ? {
224
+ type: "context-graph",
225
+ source: {
226
+ path: projectSourceRelativePath,
227
+ },
228
+ } : {}),
229
+ type: "context-graph",
230
+ name: projectConfig.name,
231
+ build_plan: buildPlanId,
232
+ build_plan_origin: buildPlanOrigin,
233
+ source: {
234
+ path: projectSourceRelativePath,
235
+ control_path: defaultControlPathForContextGraph(contextGraphPath),
236
+ project_path: projectSourceRelativePath,
237
+ },
238
+ };
239
+ const saved = saveContextGraphInterfConfig(contextGraphPath, nextConfig);
240
+ if (buildPlanChanged) {
241
+ const selectedBuildPlan = getBuildPlan(buildPlanId, { projectDataDir });
242
+ seedContextGraphBuildPlanPackage({
243
+ contextGraphPath,
244
+ projectDataDir,
245
+ buildPlanId: selectedBuildPlan.id,
246
+ });
247
+ }
248
+ refreshContextGraphBootstrapGuidance(contextGraphPath);
249
+ return saved;
250
+ }
251
+ function selectSavedBenchmarkSpec(options) {
252
+ const specs = listTestSpecs(options.projectDataDir, options.targetType);
253
+ if (specs.length === 0)
254
+ return null;
255
+ if (options.targetName) {
256
+ return specs.find((spec) => spec.id === options.targetName ||
257
+ spec.name === options.targetName ||
258
+ spec.name === `${options.targetName} benchmark`) ?? null;
259
+ }
260
+ return specs.length === 1 ? specs[0] : null;
261
+ }
262
+ export function buildTestSpecFromSourceFolderConfig(options) {
263
+ const { projectDataDir, targetName, targetType = "context-graph" } = options;
264
+ return selectSavedBenchmarkSpec({ projectDataDir, targetName, targetType });
265
+ }
266
+ export function buildTestSpecFromProjectConfig(options) {
267
+ const { contextGraphPath, targetType = "context-graph" } = options;
268
+ const config = readInterfConfig(contextGraphPath);
269
+ if (!config)
270
+ return null;
271
+ return buildTestSpecFromSourceFolderConfig({
272
+ projectDataDir: resolveSourceControlPathForContextGraph(contextGraphPath),
273
+ targetName: config.name,
274
+ targetType,
275
+ });
276
+ }
277
+ export function writeBenchmarkSpecsForProject(options) {
278
+ if (options.checks.length === 0)
279
+ return {};
280
+ const baseSpec = {
281
+ id: options.projectName,
282
+ name: options.projectName,
283
+ description: options.description ?? `Saved benchmark checks for Project ${options.projectName}.`,
284
+ cases: normalizeBenchmarkChecks(options.checks),
285
+ };
286
+ return {
287
+ source_files: writeTestSpec(options.projectDataDir, { ...baseSpec, type: "source-files" }, { overwrite: true }),
288
+ context_graph: writeTestSpec(options.projectDataDir, { ...baseSpec, type: "context-graph" }, { overwrite: true }),
289
+ };
290
+ }
291
+ export function fingerprintTestSpec(spec) {
292
+ const normalized = spec.cases.map((testCase) => ({
293
+ question: testCase.question.trim(),
294
+ ...(testCase.file ? { file: testCase.file.trim() } : {}),
295
+ ...(testCase.answer ? { answer: testCase.answer.trim() } : {}),
296
+ ...(testCase.strictness ? { strictness: testCase.strictness.trim() } : {}),
297
+ ...(testCase.expect ? { expect: testCase.expect } : {}),
298
+ }));
299
+ return createHash("sha256")
300
+ .update(JSON.stringify(normalized))
301
+ .digest("hex")
302
+ .slice(0, 16);
303
+ }
304
+ export function fingerprintSavedBenchmarkSpec(options) {
305
+ const spec = buildTestSpecFromSourceFolderConfig({
306
+ projectDataDir: options.projectDataDir,
307
+ targetName: options.projectName,
308
+ targetType: options.targetType ?? "context-graph",
309
+ });
310
+ return spec ? fingerprintTestSpec(spec) : null;
311
+ }
312
+ /**
313
+ * System path prefixes the runtime must never operate on, even when an
314
+ * absolute `project.path` was authored by hand. The schema-level
315
+ * refinement in `ProjectConfigSchema` is the primary line of
316
+ * defense; this is the in-process backstop for callers that hand-craft a
317
+ * ProjectConfig at runtime (e.g. Build Plan authoring helpers that
318
+ * construct a config from an InterfConfig).
319
+ */
320
+ const FORBIDDEN_PROJECT_SOURCE_PATH_PREFIXES = [
321
+ "/etc",
322
+ "/sys",
323
+ "/proc",
324
+ "/dev",
325
+ "/var/run",
326
+ "/var/lib",
327
+ "/usr",
328
+ "/bin",
329
+ "/sbin",
330
+ "/boot",
331
+ ];
332
+ function rejectForbiddenProjectSourcePath(absolutePath) {
333
+ for (const prefix of FORBIDDEN_PROJECT_SOURCE_PATH_PREFIXES) {
334
+ if (absolutePath === prefix || absolutePath.startsWith(`${prefix}/`)) {
335
+ throw new Error(`Project Source path may not target system directory ${prefix}: ${absolutePath}`);
336
+ }
337
+ }
338
+ }
339
+ export function resolveProjectSourcePath(projectDataDir, projectConfig) {
340
+ const configuredPath = projectConfig.path.trim();
341
+ const resolvedPath = resolve(projectDataDir, configuredPath);
342
+ if (isAbsolute(configuredPath)) {
343
+ rejectForbiddenProjectSourcePath(resolvedPath);
344
+ return resolvedPath;
345
+ }
346
+ rejectForbiddenProjectSourcePath(resolvedPath);
347
+ return assertPathWithinRoot(projectDataDir, resolvedPath, "Source locator path");
348
+ }
349
+ export function resolveProjectSourceBindingPath(projectDataDir, projectConfig, config = loadSourceFolderConfig(projectDataDir)) {
350
+ return resolveConfiguredSourceFolderPath(projectDataDir, config)
351
+ ?? resolveProjectSourcePath(projectDataDir, projectConfig);
352
+ }
@@ -0,0 +1,11 @@
1
+ export declare function listVisibleSourceFolders(projectDataDir: string): string[];
2
+ export declare function isReservedProjectSourcePath(relativePath: string): boolean;
3
+ export declare function normalizeProjectSourcePathForConfig(projectDataDir: string, value: string): string;
4
+ export declare function defaultProjectIdForPath(sourceFolderPath: string): string;
5
+ export declare function findSingleSourceFolderCandidate(projectDataDir: string): string | null;
6
+ export declare function listSourceFolderChoices(projectDataDir?: string): Array<{
7
+ value: string;
8
+ label: string;
9
+ hint: string;
10
+ }>;
11
+ export declare function defaultProjectSourcePathForPrompt(name: string, introStyle: "first" | "additional" | "edit", projectDataDir?: string): string;
@@ -1,9 +1,9 @@
1
1
  import { existsSync, readdirSync, statSync } from "node:fs";
2
2
  import { isAbsolute, join, relative, sep } from "node:path";
3
3
  import { slugify } from "../contracts/utils/naming.js";
4
- import { resolveSourcePreparationPath } from "./source-config.js";
4
+ import { resolveProjectSourcePath } from "./source-config.js";
5
5
  import { isPathWithinRoot } from "../contracts/utils/path-guards.js";
6
- const DEFAULT_PREPARATION_NAME = "default";
6
+ const DEFAULT_PROJECT_ID = "default";
7
7
  const IGNORED_SOURCE_FOLDER_ENTRIES = new Set([
8
8
  ".DS_Store",
9
9
  ".git",
@@ -12,10 +12,10 @@ const IGNORED_SOURCE_FOLDER_ENTRIES = new Set([
12
12
  "interf.json",
13
13
  "node_modules",
14
14
  ]);
15
- export function listVisibleSourceFolders(prepDataDir) {
15
+ export function listVisibleSourceFolders(projectDataDir) {
16
16
  let rootEntries = [];
17
17
  try {
18
- rootEntries = readdirSync(prepDataDir);
18
+ rootEntries = readdirSync(projectDataDir);
19
19
  }
20
20
  catch {
21
21
  return [];
@@ -24,7 +24,7 @@ export function listVisibleSourceFolders(prepDataDir) {
24
24
  const visibleDirectories = [];
25
25
  for (const entry of visibleEntries) {
26
26
  try {
27
- const entryPath = join(prepDataDir, entry);
27
+ const entryPath = join(projectDataDir, entry);
28
28
  if (statSync(entryPath).isDirectory()) {
29
29
  visibleDirectories.push(entry);
30
30
  }
@@ -35,64 +35,64 @@ export function listVisibleSourceFolders(prepDataDir) {
35
35
  }
36
36
  return visibleDirectories.sort((left, right) => left.localeCompare(right));
37
37
  }
38
- export function isReservedSourcePreparationPath(relativePath) {
38
+ export function isReservedProjectSourcePath(relativePath) {
39
39
  const normalized = relativePath.replace(/\\/g, "/").replace(/^\.\/+/, "");
40
40
  return normalized === "interf" ||
41
41
  normalized.startsWith("interf/") ||
42
42
  normalized === ".interf" ||
43
43
  normalized.startsWith(".interf/");
44
44
  }
45
- export function normalizeSourcePreparationPathForConfig(prepDataDir, value) {
45
+ export function normalizeProjectSourcePathForConfig(projectDataDir, value) {
46
46
  const trimmedValue = value.trim();
47
- const resolvedPath = resolveSourcePreparationPath(prepDataDir, { path: trimmedValue });
48
- const relativePath = relative(prepDataDir, resolvedPath).split(sep).join("/") || ".";
47
+ const resolvedPath = resolveProjectSourcePath(projectDataDir, { path: trimmedValue });
48
+ const relativePath = relative(projectDataDir, resolvedPath).split(sep).join("/") || ".";
49
49
  if (relativePath === ".") {
50
- throw new Error("Pick a Source Folder, not the Interf preparation data folder itself.");
50
+ throw new Error("Pick a Source Folder, not the Interf Project data folder itself.");
51
51
  }
52
- if (isAbsolute(trimmedValue) && !isPathWithinRoot(prepDataDir, resolvedPath)) {
52
+ if (isAbsolute(trimmedValue) && !isPathWithinRoot(projectDataDir, resolvedPath)) {
53
53
  if (!existsSync(resolvedPath)) {
54
- throw new Error("Pick an existing source folder.");
54
+ throw new Error("Pick an existing local Source folder.");
55
55
  }
56
56
  if (!statSync(resolvedPath).isDirectory()) {
57
- throw new Error("Source folder must be a directory.");
57
+ throw new Error("Local Source folder must be a directory.");
58
58
  }
59
59
  return resolvedPath;
60
60
  }
61
- if (isReservedSourcePreparationPath(relativePath)) {
62
- throw new Error("Pick an existing source folder, not `interf/` or `.interf/`.");
61
+ if (isReservedProjectSourcePath(relativePath)) {
62
+ throw new Error("Pick an existing local Source folder, not `interf/` or `.interf/`.");
63
63
  }
64
64
  if (!existsSync(resolvedPath)) {
65
- throw new Error("Pick an existing source folder.");
65
+ throw new Error("Pick an existing local Source folder.");
66
66
  }
67
67
  if (!statSync(resolvedPath).isDirectory()) {
68
- throw new Error("Source folder must be a directory.");
68
+ throw new Error("Local Source folder must be a directory.");
69
69
  }
70
70
  return relativePath.startsWith("./") ? relativePath : `./${relativePath}`;
71
71
  }
72
- export function defaultPreparationNameForPath(sourceFolderPath) {
72
+ export function defaultProjectIdForPath(sourceFolderPath) {
73
73
  const segments = sourceFolderPath
74
74
  .replace(/\\/g, "/")
75
75
  .replace(/\/+$/g, "")
76
76
  .split("/")
77
77
  .filter((segment) => segment.length > 0 && segment !== ".");
78
- return slugify(segments[segments.length - 1] ?? "") || DEFAULT_PREPARATION_NAME;
78
+ return slugify(segments[segments.length - 1] ?? "") || DEFAULT_PROJECT_ID;
79
79
  }
80
- export function findSingleSourceFolderCandidate(prepDataDir) {
81
- const visibleDirectories = listVisibleSourceFolders(prepDataDir);
80
+ export function findSingleSourceFolderCandidate(projectDataDir) {
81
+ const visibleDirectories = listVisibleSourceFolders(projectDataDir);
82
82
  if (visibleDirectories.length !== 1) {
83
83
  return null;
84
84
  }
85
85
  return `./${visibleDirectories[0]}`;
86
86
  }
87
- export function listSourceFolderChoices(prepDataDir = process.cwd()) {
88
- return listVisibleSourceFolders(prepDataDir).map((entry) => ({
87
+ export function listSourceFolderChoices(projectDataDir = process.cwd()) {
88
+ return listVisibleSourceFolders(projectDataDir).map((entry) => ({
89
89
  value: `./${entry}`,
90
90
  label: entry,
91
91
  hint: `Use ./${entry} as the source folder`,
92
92
  }));
93
93
  }
94
- export function defaultSourcePreparationPathForPrompt(name, introStyle, prepDataDir = process.cwd()) {
95
- const namedFolderPath = join(prepDataDir, name);
94
+ export function defaultProjectSourcePathForPrompt(name, introStyle, projectDataDir = process.cwd()) {
95
+ const namedFolderPath = join(projectDataDir, name);
96
96
  if (existsSync(namedFolderPath)) {
97
97
  try {
98
98
  if (statSync(namedFolderPath).isDirectory()) {
@@ -104,7 +104,7 @@ export function defaultSourcePreparationPathForPrompt(name, introStyle, prepData
104
104
  }
105
105
  }
106
106
  if (introStyle === "first") {
107
- return findSingleSourceFolderCandidate(prepDataDir) ?? `./${name}`;
107
+ return findSingleSourceFolderCandidate(projectDataDir) ?? `./${name}`;
108
108
  }
109
109
  return `./${name}`;
110
110
  }
@@ -1,6 +1,6 @@
1
1
  import type { AgentExecutor } from "./agents/lib/executors.js";
2
2
  import type { LocalServiceActionPlanningContext } from "./runtime.js";
3
- import { type ActionProposalCreateRequest, type ActionProposalPlan } from "./lib/schema.js";
3
+ import { type ActionProposalCreateRequest, type ActionProposalPlan } from "./schemas/index.js";
4
4
  export declare function buildActionPlannerPrompt(request: ActionProposalCreateRequest, context: LocalServiceActionPlanningContext, outputPath: string): string;
5
5
  export declare function planActionProposalWithExecutor(options: {
6
6
  request: ActionProposalCreateRequest;
@@ -1,9 +1,9 @@
1
1
  import { existsSync, mkdirSync, readFileSync, } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { buildPlanIdForSourcePreparationConfig, } from "../build-plans/build-plan-resolution.js";
3
+ import { buildPlanIdForProjectConfig, } from "../build-plans/build-plan-resolution.js";
4
4
  import { PACKAGE_ROOT } from "../build-plans/package/lib/package-root.js";
5
- import { asPreparationDataDir, preparationServiceActionPlansRoot, } from "../contracts/lib/preparation-paths.js";
6
- import { ActionProposalPlanSchema, } from "./lib/schema.js";
5
+ import { asProjectDataDir, projectServiceActionPlansRoot, } from "../contracts/lib/project-paths.js";
6
+ import { ActionProposalPlanSchema, } from "./schemas/index.js";
7
7
  function extractJsonObject(text) {
8
8
  try {
9
9
  return JSON.parse(text);
@@ -31,18 +31,16 @@ function readActionSkill() {
31
31
  }
32
32
  export function buildActionPlannerPrompt(request, context, outputPath) {
33
33
  const actionSkill = readActionSkill();
34
- const preparations = context.preparations.map((preparation) => ({
35
- name: preparation.name,
36
- path: preparation.path,
37
- about: preparation.about ?? null,
38
- build_plan: buildPlanIdForSourcePreparationConfig(preparation),
39
- checks: preparation.checks?.length ?? 0,
34
+ const projects = context.projects.map((project) => ({
35
+ name: project.name,
36
+ path: project.path,
37
+ build_plan: buildPlanIdForProjectConfig(project),
40
38
  }));
41
39
  const recentProposals = context.recentProposals.map((proposal) => ({
42
40
  status: proposal.status,
43
41
  action_type: proposal.action_type,
44
42
  title: proposal.title,
45
- preparation: proposal.preparation ?? null,
43
+ project: proposal.project ?? null,
46
44
  request: proposal.request,
47
45
  command_preview: proposal.command_preview ?? null,
48
46
  }));
@@ -56,19 +54,19 @@ export function buildActionPlannerPrompt(request, context, outputPath) {
56
54
  User request:
57
55
  ${request.message}
58
56
 
59
- Selected Preparation hint: ${request.preparation ?? "(none)"}
57
+ Selected Project hint: ${request.project ?? "(none)"}
60
58
 
61
59
  Structured request values:
62
60
  ${JSON.stringify(request.values ?? {}, null, 2)}
63
61
 
64
- Available Preparations:
65
- ${JSON.stringify(preparations, null, 2)}
62
+ Available Projects:
63
+ ${JSON.stringify(projects, null, 2)}
66
64
 
67
- Visible Source Folders:
65
+ Visible Sources:
68
66
  ${JSON.stringify(sourceFolders, null, 2)}
69
67
 
70
68
  Action health:
71
- ${JSON.stringify(context.preparationHealth, null, 2)}
69
+ ${JSON.stringify(context.projectHealth, null, 2)}
72
70
 
73
71
  Recent proposals, newest first. A short follow-up like "target source only" may be correcting the latest pending proposal:
74
72
  ${JSON.stringify(recentProposals, null, 2)}
@@ -77,7 +75,7 @@ Interf action skill source:
77
75
  ${actionSkill}
78
76
 
79
77
  Use the Interf action skill source as the authority for CLI semantics and Interf proposal mode. Preserve user intent over defaults.
80
- Use Action health to avoid proposing work that cannot run yet. If can_check_readiness is false, prefer the recommended next actions; do not propose a generic readiness check unless the user explicitly asks for a source-files-only baseline.
78
+ Use Action health to avoid proposing work that cannot run yet. If can_run_benchmark is false, prefer the recommended next actions; benchmark targets need a built Context Graph with a recorded Source Manifest.
81
79
  If the user is asking a question or making casual conversation, return "clarification" with a helpful assistant_message. Do not invent a CLI command for non-action chat.
82
80
  If a field does not apply, omit it instead of writing null or an empty string.
83
81
  Do not run any CLI command. Do not edit files except the output JSON file.
@@ -87,8 +85,8 @@ ${outputPath}
87
85
 
88
86
  JSON schema:
89
87
  {
90
- "action_type": "preparation-setup" | "preparation-change" | "build" | "test" | "readiness-check-draft" | "build-plan-draft" | "build-plan-change" | "build-plan-improvement" | "clarification",
91
- "preparation": "Preparation id if applicable",
88
+ "action_type": "project-setup" | "project-change" | "build" | "benchmark" | "benchmark-question-draft" | "build-plan-draft" | "build-plan-change" | "build-plan-improvement" | "clarification",
89
+ "project": "Project id if applicable",
92
90
  "build_plan": "Build Plan id if applicable",
93
91
  "values": {},
94
92
  "title": "short approval card title",
@@ -99,7 +97,7 @@ JSON schema:
99
97
  `;
100
98
  }
101
99
  export async function planActionProposalWithExecutor(options) {
102
- const planRoot = join(preparationServiceActionPlansRoot(asPreparationDataDir(options.context.sourcePath)), Date.now().toString(36));
100
+ const planRoot = join(projectServiceActionPlansRoot(asProjectDataDir(options.context.sourcePath)), Date.now().toString(36));
103
101
  mkdirSync(planRoot, { recursive: true });
104
102
  const outputPath = join(planRoot, "proposal.json");
105
103
  const prompt = buildActionPlannerPrompt(options.request, options.context, outputPath);
@@ -111,7 +109,7 @@ export async function planActionProposalWithExecutor(options) {
111
109
  if (exitCode !== 0 && !existsSync(outputPath)) {
112
110
  return ActionProposalPlanSchema.parse({
113
111
  action_type: "clarification",
114
- preparation: options.request.preparation,
112
+ project: options.request.project,
115
113
  assistant_message: `${options.executor.displayName} could not create a safe Interf proposal.`,
116
114
  });
117
115
  }
@@ -121,8 +119,8 @@ export async function planActionProposalWithExecutor(options) {
121
119
  catch {
122
120
  return ActionProposalPlanSchema.parse({
123
121
  action_type: "clarification",
124
- preparation: options.request.preparation,
125
- assistant_message: "I can help with this Interf instance. Ask a question about Interf, or ask me to create a Preparation, prepare, check readiness, improve, or draft a Build Plan and I will prepare an approval proposal.",
122
+ project: options.request.project,
123
+ assistant_message: "I can help with this Interf instance. Ask a question about Interf, or ask me to create a Project, build a Context Graph, benchmark, improve, or draft a Build Plan and I will prepare an approval proposal.",
126
124
  });
127
125
  }
128
126
  }
@@ -0,0 +1 @@
1
+ export { ActionValueIdPattern, ActionValueIdSchema, BuildPlanAuthoringActionValuesSchema, OptionalActionValueIdSchema, ProjectSetupActionValuesSchema, buildPlanAuthoringRequestFromActionValues, buildPlanAuthoringIntentBrief, projectSetupRequestFromActionValues, type BuildPlanAuthoringActionValues, type ProjectSetupActionValues, } from "./actions/index.js";
@@ -0,0 +1 @@
1
+ export { ActionValueIdPattern, ActionValueIdSchema, BuildPlanAuthoringActionValuesSchema, OptionalActionValueIdSchema, ProjectSetupActionValuesSchema, buildPlanAuthoringRequestFromActionValues, buildPlanAuthoringIntentBrief, projectSetupRequestFromActionValues, } from "./actions/index.js";
@@ -0,0 +1,2 @@
1
+ import type { z } from "zod";
2
+ export declare function packageSchemaFieldErrors(result: z.ZodSafeParseResult<unknown>, pathMap: Record<string, string>): Record<string, string>;
@@ -0,0 +1,12 @@
1
+ export function packageSchemaFieldErrors(result, pathMap) {
2
+ if (result.success)
3
+ return {};
4
+ const errors = {};
5
+ for (const issue of result.error.issues) {
6
+ const path = issue.path.join(".");
7
+ const key = pathMap[path] ?? pathMap[issue.path.at(-1)?.toString() ?? ""] ?? "";
8
+ if (key && !errors[key])
9
+ errors[key] = issue.message;
10
+ }
11
+ return errors;
12
+ }