@interf/compiler 0.18.0 → 0.22.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 (369) hide show
  1. package/dist/cli/commands/build-plan.d.ts +2 -0
  2. package/dist/cli/commands/build-plan.js +376 -0
  3. package/dist/cli/commands/{compile.d.ts → build.d.ts} +2 -2
  4. package/dist/cli/commands/{compile.js → build.js} +18 -18
  5. package/dist/cli/commands/doctor.js +2 -2
  6. package/dist/cli/commands/mcp.d.ts +0 -34
  7. package/dist/cli/commands/mcp.js +261 -60
  8. package/dist/cli/commands/prep.js +67 -35
  9. package/dist/cli/commands/reset.d.ts +1 -1
  10. package/dist/cli/commands/reset.js +6 -6
  11. package/dist/cli/commands/runs.js +105 -33
  12. package/dist/cli/commands/status.js +4 -2
  13. package/dist/cli/commands/test.d.ts +10 -0
  14. package/dist/cli/commands/{verify.js → test.js} +19 -21
  15. package/dist/cli/commands/web.js +82 -8
  16. package/dist/cli/commands/wizard.js +63 -64
  17. package/dist/cli/index.d.ts +4 -4
  18. package/dist/cli/index.js +7 -7
  19. package/dist/interf-ui/404.html +1 -0
  20. package/dist/interf-ui/__next.__PAGE__.txt +10 -0
  21. package/dist/{compiler-ui → interf-ui}/__next._full.txt +12 -12
  22. package/dist/interf-ui/__next._head.txt +5 -0
  23. package/dist/{compiler-ui → interf-ui}/__next._index.txt +4 -4
  24. package/dist/{compiler-ui → interf-ui}/__next._tree.txt +3 -3
  25. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +3 -0
  26. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +1 -0
  27. package/dist/{compiler-ui/_next/static/chunks/0_i-3_5l9t2qe.js → interf-ui/_next/static/chunks/0dn41fa_zvgsl.js} +1 -1
  28. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +1 -0
  29. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +1 -0
  30. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +1 -0
  31. package/dist/{compiler-ui/_next/static/chunks/08g7lvje.te.u.js → interf-ui/_next/static/chunks/0nv3am99vjzn4.js} +1 -1
  32. package/dist/{compiler-ui/_next/static/chunks/0n51hrfoufc7g.js → interf-ui/_next/static/chunks/0s77gt_o4jwtx.js} +1 -1
  33. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +116 -0
  34. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +31 -0
  35. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +1 -0
  36. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +1 -0
  37. package/dist/{compiler-ui/_next/static/chunks/08m7vf5asqlsm.js → interf-ui/_next/static/chunks/14dznb2qpt-ho.js} +5 -5
  38. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +5 -0
  39. package/dist/{compiler-ui/_next/static/chunks/turbopack-10e~t1yzi4svj.js → interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js} +1 -1
  40. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +1 -0
  41. package/dist/{compiler-ui → interf-ui}/_not-found/__next._full.txt +9 -9
  42. package/dist/interf-ui/_not-found/__next._head.txt +5 -0
  43. package/dist/{compiler-ui → interf-ui}/_not-found/__next._index.txt +4 -4
  44. package/dist/{compiler-ui → interf-ui}/_not-found/__next._not-found.__PAGE__.txt +2 -2
  45. package/dist/interf-ui/_not-found/__next._not-found.txt +5 -0
  46. package/dist/{compiler-ui → interf-ui}/_not-found/__next._tree.txt +2 -2
  47. package/dist/interf-ui/_not-found.html +1 -0
  48. package/dist/{compiler-ui → interf-ui}/_not-found.txt +9 -9
  49. package/dist/interf-ui/index.html +1 -0
  50. package/dist/{compiler-ui → interf-ui}/index.txt +12 -12
  51. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +36 -0
  52. package/dist/packages/{methods/authoring/method-authoring.js → build-plans/authoring/build-plan-authoring.js} +57 -88
  53. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +18 -0
  54. package/dist/packages/{methods/authoring/method-edit-session.js → build-plans/authoring/build-plan-edit-session.js} +34 -34
  55. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +23 -0
  56. package/dist/packages/build-plans/authoring/build-plan-improvement.js +216 -0
  57. package/dist/packages/build-plans/authoring/index.d.ts +4 -0
  58. package/dist/packages/build-plans/authoring/index.js +4 -0
  59. package/dist/packages/{methods/authoring/lib/method-edit-utils.d.ts → build-plans/authoring/lib/build-plan-edit-utils.d.ts} +3 -3
  60. package/dist/packages/build-plans/build-plan-resolution.d.ts +6 -0
  61. package/dist/packages/build-plans/build-plan-resolution.js +7 -0
  62. package/dist/packages/build-plans/index.d.ts +2 -0
  63. package/dist/packages/build-plans/index.js +2 -0
  64. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +61 -0
  65. package/dist/packages/build-plans/package/build-plan-definitions.js +214 -0
  66. package/dist/packages/{methods/package/method-helpers.d.ts → build-plans/package/build-plan-helpers.d.ts} +7 -7
  67. package/dist/packages/{methods/package/method-helpers.js → build-plans/package/build-plan-helpers.js} +20 -20
  68. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +10 -0
  69. package/dist/packages/build-plans/package/build-plan-review-paths.js +31 -0
  70. package/dist/packages/{methods/package/method-stage-runner.d.ts → build-plans/package/build-plan-stage-runner.d.ts} +12 -12
  71. package/dist/packages/{methods/package/method-stage-runner.js → build-plans/package/build-plan-stage-runner.js} +10 -10
  72. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +37 -0
  73. package/dist/packages/build-plans/package/builtin-build-plan.js +91 -0
  74. package/dist/packages/{methods → build-plans}/package/context-interface.d.ts +11 -11
  75. package/dist/packages/{methods → build-plans}/package/context-interface.js +23 -23
  76. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +31 -0
  77. package/dist/packages/build-plans/package/interf-build-plan-package.js +466 -0
  78. package/dist/packages/{methods → build-plans}/package/lib/package-root.js +1 -1
  79. package/dist/packages/build-plans/package/local-build-plans.d.ts +74 -0
  80. package/dist/packages/build-plans/package/local-build-plans.js +472 -0
  81. package/dist/packages/build-plans/package/user-build-plans.d.ts +17 -0
  82. package/dist/packages/build-plans/package/user-build-plans.js +77 -0
  83. package/dist/packages/contracts/index.d.ts +1 -1
  84. package/dist/packages/contracts/lib/preparation-paths.d.ts +37 -37
  85. package/dist/packages/contracts/lib/preparation-paths.js +43 -43
  86. package/dist/packages/contracts/lib/schema.d.ts +38 -41
  87. package/dist/packages/contracts/lib/schema.js +44 -35
  88. package/dist/packages/engine/action-definitions.d.ts +228 -67
  89. package/dist/packages/engine/action-definitions.js +277 -273
  90. package/dist/packages/engine/action-planner.d.ts +2 -2
  91. package/dist/packages/engine/action-planner.js +8 -15
  92. package/dist/packages/engine/action-values.d.ts +1 -1
  93. package/dist/packages/engine/action-values.js +1 -1
  94. package/dist/packages/engine/agents/index.d.ts +2 -2
  95. package/dist/packages/engine/agents/index.js +1 -1
  96. package/dist/packages/engine/agents/lib/args.d.ts +2 -2
  97. package/dist/packages/engine/agents/lib/args.js +1 -1
  98. package/dist/packages/engine/agents/lib/constants.js +1 -1
  99. package/dist/packages/engine/agents/lib/execution-profile.d.ts +5 -5
  100. package/dist/packages/engine/agents/lib/execution-profile.js +3 -3
  101. package/dist/packages/engine/agents/lib/executors.d.ts +11 -11
  102. package/dist/packages/engine/agents/lib/render.js +4 -4
  103. package/dist/packages/engine/agents/lib/shells.d.ts +33 -31
  104. package/dist/packages/engine/agents/lib/shells.js +254 -250
  105. package/dist/packages/engine/agents/lib/types.d.ts +2 -2
  106. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +3 -0
  107. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.js +19 -0
  108. package/dist/packages/engine/agents/role-executors.d.ts +7 -7
  109. package/dist/packages/engine/agents/role-executors.js +2 -2
  110. package/dist/packages/engine/agents/role-router.d.ts +2 -2
  111. package/dist/packages/engine/agents/role-router.js +1 -1
  112. package/dist/packages/engine/build/artifact-counts.d.ts +1 -0
  113. package/dist/packages/engine/{compile → build}/artifact-counts.js +7 -7
  114. package/dist/packages/engine/{compile → build}/artifact-status.d.ts +8 -8
  115. package/dist/packages/engine/{compile → build}/artifact-status.js +19 -19
  116. package/dist/packages/engine/{compile → build}/billing-events.d.ts +4 -4
  117. package/dist/packages/engine/{compile → build}/billing-events.js +4 -4
  118. package/dist/packages/engine/build/build-execution.d.ts +4 -0
  119. package/dist/packages/engine/build/build-execution.js +4 -0
  120. package/dist/packages/engine/build/build-pipeline.d.ts +56 -0
  121. package/dist/packages/engine/{compile/compiled-pipeline.js → build/build-pipeline.js} +55 -55
  122. package/dist/packages/engine/build/build-plan-primitives.d.ts +2 -0
  123. package/dist/packages/engine/{compile/method-primitives.js → build/build-plan-primitives.js} +1 -1
  124. package/dist/packages/engine/build/build-plan-runs.d.ts +14 -0
  125. package/dist/packages/engine/build/build-plan-runs.js +31 -0
  126. package/dist/packages/engine/build/build-stage-plan.d.ts +16 -0
  127. package/dist/packages/engine/build/build-stage-plan.js +100 -0
  128. package/dist/packages/engine/build/build-stage-runner.d.ts +15 -0
  129. package/dist/packages/engine/{compile/compiled-stage-runner.js → build/build-stage-runner.js} +21 -21
  130. package/dist/packages/engine/build/build-target.d.ts +11 -0
  131. package/dist/packages/engine/build/build-target.js +16 -0
  132. package/dist/packages/engine/{compile → build}/check-evaluator.d.ts +4 -4
  133. package/dist/packages/engine/{compile → build}/check-evaluator.js +1 -1
  134. package/dist/packages/engine/{compile → build}/discovery.d.ts +2 -2
  135. package/dist/packages/engine/{compile → build}/discovery.js +4 -4
  136. package/dist/packages/engine/{compile → build}/index.d.ts +6 -6
  137. package/dist/packages/engine/{compile → build}/index.js +5 -5
  138. package/dist/packages/engine/{compile → build}/lib/schema.d.ts +79 -79
  139. package/dist/packages/engine/{compile → build}/lib/schema.js +71 -71
  140. package/dist/packages/engine/build/reset.d.ts +2 -0
  141. package/dist/packages/engine/build/reset.js +74 -0
  142. package/dist/packages/engine/{compile → build}/runtime-contracts.js +8 -8
  143. package/dist/packages/engine/build/runtime-inventory.d.ts +7 -0
  144. package/dist/packages/engine/{compile → build}/runtime-inventory.js +8 -8
  145. package/dist/packages/engine/{compile → build}/runtime-paths.js +6 -6
  146. package/dist/packages/engine/{compile → build}/runtime-prompt.js +11 -11
  147. package/dist/packages/engine/build/runtime-reconcile.d.ts +2 -0
  148. package/dist/packages/engine/{compile → build}/runtime-reconcile.js +18 -18
  149. package/dist/packages/engine/{compile → build}/runtime-runs.js +27 -27
  150. package/dist/packages/engine/{compile → build}/runtime-types.d.ts +10 -10
  151. package/dist/packages/engine/build/source-files.d.ts +46 -0
  152. package/dist/packages/engine/{compile → build}/source-files.js +32 -32
  153. package/dist/packages/engine/build/state-artifacts.d.ts +9 -0
  154. package/dist/packages/engine/build/state-artifacts.js +14 -0
  155. package/dist/packages/engine/build/state-health.d.ts +4 -0
  156. package/dist/packages/engine/{compile → build}/state-health.js +40 -40
  157. package/dist/packages/engine/build/state-io.d.ts +11 -0
  158. package/dist/packages/engine/{compile → build}/state-io.js +22 -22
  159. package/dist/packages/engine/build/state-paths.js +16 -0
  160. package/dist/packages/engine/build/state-view.d.ts +5 -0
  161. package/dist/packages/engine/{compile → build}/state-view.js +29 -29
  162. package/dist/packages/engine/build/state.d.ts +7 -0
  163. package/dist/packages/engine/build/state.js +12 -0
  164. package/dist/packages/engine/build/validate-verifiable-context.d.ts +27 -0
  165. package/dist/packages/engine/{compile/validate-compiled.js → build/validate-verifiable-context.js} +73 -73
  166. package/dist/packages/engine/{compile → build}/validate.d.ts +4 -4
  167. package/dist/packages/engine/{compile → build}/validate.js +27 -27
  168. package/dist/packages/engine/build/verifiable-context-paths.d.ts +47 -0
  169. package/dist/packages/engine/build/verifiable-context-paths.js +121 -0
  170. package/dist/packages/engine/build/verifiable-context-schema.d.ts +21 -0
  171. package/dist/packages/engine/build/verifiable-context-schema.js +126 -0
  172. package/dist/packages/engine/client.d.ts +16 -16
  173. package/dist/packages/engine/client.js +21 -21
  174. package/dist/packages/engine/cloud-seams.d.ts +3 -3
  175. package/dist/packages/engine/connection-config.js +1 -1
  176. package/dist/packages/engine/execution/index.d.ts +2 -2
  177. package/dist/packages/engine/execution/index.js +1 -1
  178. package/dist/packages/engine/execution/lib/schema.d.ts +100 -95
  179. package/dist/packages/engine/execution/lib/schema.js +31 -31
  180. package/dist/packages/engine/index.d.ts +7 -7
  181. package/dist/packages/engine/index.js +3 -3
  182. package/dist/packages/engine/instance-paths.d.ts +45 -39
  183. package/dist/packages/engine/instance-paths.js +54 -48
  184. package/dist/packages/engine/lib/schema.d.ts +1568 -484
  185. package/dist/packages/engine/lib/schema.js +172 -161
  186. package/dist/packages/engine/native-run-handlers.d.ts +12 -12
  187. package/dist/packages/engine/native-run-handlers.js +138 -136
  188. package/dist/packages/engine/preparation-store.d.ts +31 -36
  189. package/dist/packages/engine/preparation-store.js +42 -31
  190. package/dist/packages/engine/readiness-check-draft.d.ts +2 -2
  191. package/dist/packages/engine/readiness-check-draft.js +1 -1
  192. package/dist/packages/engine/requested-artifacts.d.ts +5 -0
  193. package/dist/packages/engine/requested-artifacts.js +36 -0
  194. package/dist/packages/engine/routes.d.ts +18 -17
  195. package/dist/packages/engine/routes.js +20 -19
  196. package/dist/packages/engine/run-observability.d.ts +5 -3
  197. package/dist/packages/engine/run-observability.js +103 -90
  198. package/dist/packages/engine/runtime-caches.d.ts +16 -16
  199. package/dist/packages/engine/runtime-caches.js +26 -26
  200. package/dist/packages/engine/runtime-event-applier.d.ts +2 -2
  201. package/dist/packages/engine/runtime-event-applier.js +1 -1
  202. package/dist/packages/engine/runtime-persistence.d.ts +9 -9
  203. package/dist/packages/engine/runtime-persistence.js +16 -16
  204. package/dist/packages/engine/runtime-proposal-helpers.d.ts +15 -15
  205. package/dist/packages/engine/runtime-proposal-helpers.js +81 -85
  206. package/dist/packages/engine/runtime-resource-builders.d.ts +16 -11
  207. package/dist/packages/engine/runtime-resource-builders.js +32 -21
  208. package/dist/packages/engine/runtime.d.ts +53 -60
  209. package/dist/packages/engine/runtime.js +555 -453
  210. package/dist/packages/engine/server.d.ts +2 -2
  211. package/dist/packages/engine/server.js +226 -143
  212. package/dist/packages/engine/service-registry.d.ts +5 -17
  213. package/dist/packages/engine/service-registry.js +5 -20
  214. package/dist/packages/engine/verify/lib/schema.d.ts +19 -19
  215. package/dist/packages/engine/verify/lib/schema.js +36 -8
  216. package/dist/packages/engine/verify/readiness-check-run.d.ts +15 -16
  217. package/dist/packages/engine/verify/readiness-check-run.js +46 -46
  218. package/dist/packages/engine/verify/verify-execution.d.ts +3 -3
  219. package/dist/packages/engine/verify/verify-execution.js +10 -10
  220. package/dist/packages/engine/verify/verify-paths.d.ts +4 -4
  221. package/dist/packages/engine/verify/verify-paths.js +17 -17
  222. package/dist/packages/engine/verify/verify-sandbox.d.ts +1 -1
  223. package/dist/packages/engine/verify/verify-sandbox.js +26 -26
  224. package/dist/packages/engine/verify/verify-targets.d.ts +2 -2
  225. package/dist/packages/engine/verify/verify-targets.js +17 -17
  226. package/dist/packages/engine/verify/verify-types.d.ts +2 -2
  227. package/dist/packages/engine/verify/verify.d.ts +1 -1
  228. package/dist/packages/engine/verify/verify.js +1 -1
  229. package/dist/packages/engine/wire-schemas.d.ts +42 -40
  230. package/dist/packages/engine/wire-schemas.js +13 -13
  231. package/dist/packages/project/index.d.ts +1 -1
  232. package/dist/packages/project/interf-bootstrap.d.ts +1 -1
  233. package/dist/packages/project/interf-bootstrap.js +1 -1
  234. package/dist/packages/project/interf-detect.d.ts +11 -11
  235. package/dist/packages/project/interf-detect.js +36 -36
  236. package/dist/packages/project/interf-scaffold.d.ts +3 -3
  237. package/dist/packages/project/interf-scaffold.js +72 -72
  238. package/dist/packages/project/interf.d.ts +4 -4
  239. package/dist/packages/project/interf.js +3 -3
  240. package/dist/packages/project/lib/schema.d.ts +205 -12
  241. package/dist/packages/project/lib/schema.js +59 -14
  242. package/dist/packages/project/preparation-entries.d.ts +3 -3
  243. package/dist/packages/project/preparation-entries.js +19 -19
  244. package/dist/packages/project/source-config.d.ts +10 -10
  245. package/dist/packages/project/source-config.js +62 -58
  246. package/dist/packages/project/source-folders.js +1 -1
  247. package/package.json +14 -17
  248. package/public-repo/CONTRIBUTING.md +47 -0
  249. package/public-repo/README.md +327 -0
  250. package/public-repo/SECURITY.md +67 -0
  251. package/public-repo/build-plans/interf-default/README.md +33 -0
  252. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +27 -0
  253. package/{builtin-methods/interf-default/compile → public-repo/build-plans/interf-default/build}/stages/structure/SKILL.md +2 -2
  254. package/{builtin-methods/interf-default/compile → public-repo/build-plans/interf-default/build}/stages/summarize/SKILL.md +1 -1
  255. package/{builtin-methods/interf-default/method.json → public-repo/build-plans/interf-default/build-plan.json} +16 -16
  256. package/{builtin-methods/interf-default/method.schema.json → public-repo/build-plans/interf-default/build-plan.schema.json} +4 -4
  257. package/public-repo/build-plans/interf-default/improve/SKILL.md +18 -0
  258. package/public-repo/build-plans/interf-default/use/query/SKILL.md +23 -0
  259. package/public-repo/plugins/README.md +9 -0
  260. package/public-repo/plugins/interf/.claude-plugin/plugin.json +21 -0
  261. package/public-repo/plugins/interf/.mcp.json +12 -0
  262. package/public-repo/plugins/interf/README.md +32 -0
  263. package/public-repo/plugins/interf/skills/interf/SKILL.md +376 -0
  264. package/public-repo/skills/interf/SKILL.md +376 -0
  265. package/README.md +0 -311
  266. package/agent-skills/interf-actions/SKILL.md +0 -185
  267. package/agent-skills/interf-actions/references/cli.md +0 -243
  268. package/builtin-methods/interf-default/README.md +0 -29
  269. package/builtin-methods/interf-default/compile/stages/shape/SKILL.md +0 -31
  270. package/builtin-methods/interf-default/improve/SKILL.md +0 -18
  271. package/builtin-methods/interf-default/use/query/SKILL.md +0 -28
  272. package/dist/cli/commands/method.d.ts +0 -2
  273. package/dist/cli/commands/method.js +0 -113
  274. package/dist/cli/commands/verify.d.ts +0 -10
  275. package/dist/compiler-ui/404.html +0 -1
  276. package/dist/compiler-ui/__next.__PAGE__.txt +0 -10
  277. package/dist/compiler-ui/__next._head.txt +0 -5
  278. package/dist/compiler-ui/_next/static/chunks/06yhdspx~ca5-.js +0 -5
  279. package/dist/compiler-ui/_next/static/chunks/06z~l3kwb891e.js +0 -1
  280. package/dist/compiler-ui/_next/static/chunks/0_c_tvh-cukjz.css +0 -3
  281. package/dist/compiler-ui/_next/static/chunks/0b-ywny_j0g~0.js +0 -1
  282. package/dist/compiler-ui/_next/static/chunks/0b52v41o1gixx.js +0 -1
  283. package/dist/compiler-ui/_next/static/chunks/0f_geuwdesg_c.js +0 -114
  284. package/dist/compiler-ui/_next/static/chunks/0gpzgsv0w.q~m.js +0 -31
  285. package/dist/compiler-ui/_next/static/chunks/0ilwfezfvu6~-.js +0 -1
  286. package/dist/compiler-ui/_next/static/chunks/0xxmf45eskdt~.css +0 -1
  287. package/dist/compiler-ui/_next/static/chunks/14wtz~vq25~qq.js +0 -1
  288. package/dist/compiler-ui/_next/static/chunks/turbopack-0.uq1k8c0j4s..js +0 -1
  289. package/dist/compiler-ui/_not-found/__next._head.txt +0 -5
  290. package/dist/compiler-ui/_not-found/__next._not-found.txt +0 -5
  291. package/dist/compiler-ui/_not-found.html +0 -1
  292. package/dist/compiler-ui/index.html +0 -1
  293. package/dist/packages/engine/agents/lib/compiled-bootstrap.d.ts +0 -3
  294. package/dist/packages/engine/agents/lib/compiled-bootstrap.js +0 -19
  295. package/dist/packages/engine/compile/artifact-counts.d.ts +0 -1
  296. package/dist/packages/engine/compile/compiled-compile.d.ts +0 -4
  297. package/dist/packages/engine/compile/compiled-compile.js +0 -4
  298. package/dist/packages/engine/compile/compiled-paths.d.ts +0 -47
  299. package/dist/packages/engine/compile/compiled-paths.js +0 -121
  300. package/dist/packages/engine/compile/compiled-pipeline.d.ts +0 -56
  301. package/dist/packages/engine/compile/compiled-schema.d.ts +0 -21
  302. package/dist/packages/engine/compile/compiled-schema.js +0 -126
  303. package/dist/packages/engine/compile/compiled-stage-plan.d.ts +0 -16
  304. package/dist/packages/engine/compile/compiled-stage-plan.js +0 -100
  305. package/dist/packages/engine/compile/compiled-stage-runner.d.ts +0 -15
  306. package/dist/packages/engine/compile/compiled-target.d.ts +0 -11
  307. package/dist/packages/engine/compile/compiled-target.js +0 -16
  308. package/dist/packages/engine/compile/method-primitives.d.ts +0 -2
  309. package/dist/packages/engine/compile/method-runs.d.ts +0 -14
  310. package/dist/packages/engine/compile/method-runs.js +0 -31
  311. package/dist/packages/engine/compile/reset.d.ts +0 -2
  312. package/dist/packages/engine/compile/reset.js +0 -74
  313. package/dist/packages/engine/compile/runtime-inventory.d.ts +0 -7
  314. package/dist/packages/engine/compile/runtime-reconcile.d.ts +0 -2
  315. package/dist/packages/engine/compile/source-files.d.ts +0 -46
  316. package/dist/packages/engine/compile/state-artifacts.d.ts +0 -9
  317. package/dist/packages/engine/compile/state-artifacts.js +0 -14
  318. package/dist/packages/engine/compile/state-health.d.ts +0 -4
  319. package/dist/packages/engine/compile/state-io.d.ts +0 -11
  320. package/dist/packages/engine/compile/state-paths.js +0 -16
  321. package/dist/packages/engine/compile/state-view.d.ts +0 -5
  322. package/dist/packages/engine/compile/state.d.ts +0 -7
  323. package/dist/packages/engine/compile/state.js +0 -12
  324. package/dist/packages/engine/compile/validate-compiled.d.ts +0 -27
  325. package/dist/packages/methods/authoring/index.d.ts +0 -4
  326. package/dist/packages/methods/authoring/index.js +0 -4
  327. package/dist/packages/methods/authoring/method-authoring.d.ts +0 -34
  328. package/dist/packages/methods/authoring/method-edit-session.d.ts +0 -18
  329. package/dist/packages/methods/authoring/method-improvement.d.ts +0 -23
  330. package/dist/packages/methods/authoring/method-improvement.js +0 -217
  331. package/dist/packages/methods/index.d.ts +0 -2
  332. package/dist/packages/methods/index.js +0 -2
  333. package/dist/packages/methods/method-resolution.d.ts +0 -6
  334. package/dist/packages/methods/method-resolution.js +0 -7
  335. package/dist/packages/methods/package/builtin-compiled-method.d.ts +0 -37
  336. package/dist/packages/methods/package/builtin-compiled-method.js +0 -91
  337. package/dist/packages/methods/package/interf-method-package.d.ts +0 -31
  338. package/dist/packages/methods/package/interf-method-package.js +0 -466
  339. package/dist/packages/methods/package/local-methods.d.ts +0 -73
  340. package/dist/packages/methods/package/local-methods.js +0 -457
  341. package/dist/packages/methods/package/method-definitions.d.ts +0 -61
  342. package/dist/packages/methods/package/method-definitions.js +0 -214
  343. package/dist/packages/methods/package/method-review-paths.d.ts +0 -10
  344. package/dist/packages/methods/package/method-review-paths.js +0 -31
  345. package/dist/packages/methods/package/user-methods.d.ts +0 -17
  346. package/dist/packages/methods/package/user-methods.js +0 -77
  347. /package/dist/{compiler-ui/_next/static/6qyE1u9m_oBUkvAhhoCmO → interf-ui/_next/static/_qJKnA0dammQ306MG_zMq}/_buildManifest.js +0 -0
  348. /package/dist/{compiler-ui/_next/static/6qyE1u9m_oBUkvAhhoCmO → interf-ui/_next/static/_qJKnA0dammQ306MG_zMq}/_clientMiddlewareManifest.js +0 -0
  349. /package/dist/{compiler-ui/_next/static/6qyE1u9m_oBUkvAhhoCmO → interf-ui/_next/static/_qJKnA0dammQ306MG_zMq}/_ssgManifest.js +0 -0
  350. /package/dist/{compiler-ui → interf-ui}/_next/static/chunks/03~yq9q893hmn.js +0 -0
  351. /package/dist/{compiler-ui → interf-ui}/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -0
  352. /package/dist/{compiler-ui → interf-ui}/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -0
  353. /package/dist/{compiler-ui → interf-ui}/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  354. /package/dist/{compiler-ui → interf-ui}/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  355. /package/dist/{compiler-ui → interf-ui}/_next/static/media/worker.102zas1s52_pf.js +0 -0
  356. /package/dist/packages/{methods/authoring/lib/method-edit-utils.js → build-plans/authoring/lib/build-plan-edit-utils.js} +0 -0
  357. /package/dist/packages/{methods → build-plans}/package/lib/package-root.d.ts +0 -0
  358. /package/dist/packages/engine/{compile → build}/runtime-contracts.d.ts +0 -0
  359. /package/dist/packages/engine/{compile → build}/runtime-paths.d.ts +0 -0
  360. /package/dist/packages/engine/{compile → build}/runtime-prompt.d.ts +0 -0
  361. /package/dist/packages/engine/{compile → build}/runtime-runs.d.ts +0 -0
  362. /package/dist/packages/engine/{compile → build}/runtime-types.js +0 -0
  363. /package/dist/packages/engine/{compile → build}/runtime.d.ts +0 -0
  364. /package/dist/packages/engine/{compile → build}/runtime.js +0 -0
  365. /package/dist/packages/engine/{compile → build}/state-paths.d.ts +0 -0
  366. /package/dist/packages/engine/{compile → build}/validate-helpers.d.ts +0 -0
  367. /package/dist/packages/engine/{compile → build}/validate-helpers.js +0 -0
  368. /package/{LICENSE.md → public-repo/LICENSE.md} +0 -0
  369. /package/{TRADEMARKS.md → public-repo/TRADEMARKS.md} +0 -0
@@ -0,0 +1,472 @@
1
+ import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync, } from "node:fs";
2
+ import { basename, dirname, join, relative } from "node:path";
3
+ import { z } from "zod";
4
+ import { listFilesRecursive } from "../../contracts/utils/filesystem.js";
5
+ import { warnInterf } from "../../contracts/utils/logger.js";
6
+ import { readJsonFileUnchecked, readJsonFileWithSchema } from "../../contracts/utils/parse.js";
7
+ import { isMarkdownFile } from "../../contracts/utils/file-types.js";
8
+ import { BuildPlanEngineApiSchema, BuildPlanPurposeSchema, BuildPlanStageArtifactReadAccessSchema, BuildPlanStageArtifactWriteAccessSchema, } from "../../engine/build/lib/schema.js";
9
+ import { RuntimeContractTypeSchema, InterfIdPattern, } from "../../contracts/lib/schema.js";
10
+ import { asPreparationDataDir, preparationBuildPlansRoot, } from "../../contracts/lib/preparation-paths.js";
11
+ import { CONTEXT_INTERFACE_FILE, ContextInterfaceSchema, contextInterfaceExists, contextInterfaceFilePath, listContextInterfaceArtifacts, readContextInterface, BuildPlanInputSpecSchema, writeContextInterface, } from "./context-interface.js";
12
+ import { PACKAGE_ROOT } from "./lib/package-root.js";
13
+ const LocalBuildPlanStageDefinitionSchema = z.object({
14
+ id: z.string().regex(InterfIdPattern),
15
+ label: z.string().min(1),
16
+ contract_type: RuntimeContractTypeSchema,
17
+ skill_dir: z.string().regex(InterfIdPattern).optional(),
18
+ description: z.string().min(1).optional(),
19
+ role: z.string().min(1).optional(),
20
+ reads: BuildPlanStageArtifactReadAccessSchema,
21
+ writes: BuildPlanStageArtifactWriteAccessSchema,
22
+ });
23
+ const LocalBuildPlanDefinitionSchema = z.object({
24
+ id: z.string().regex(InterfIdPattern),
25
+ type: z.literal("build-plan"),
26
+ engine_api: BuildPlanEngineApiSchema.optional(),
27
+ purpose: BuildPlanPurposeSchema.optional(),
28
+ inputs: z.array(BuildPlanInputSpecSchema).min(1).optional(),
29
+ label: z.string().min(1),
30
+ hint: z.string().min(1),
31
+ stages: z.array(LocalBuildPlanStageDefinitionSchema).min(1).optional(),
32
+ stage_policy_notes: z.record(z.string(), z.array(z.string())).optional(),
33
+ });
34
+ function normalizeStagePolicyNotes(value) {
35
+ if (!value || typeof value !== "object" || Array.isArray(value))
36
+ return undefined;
37
+ const normalized = {};
38
+ for (const [stageId, notes] of Object.entries(value)) {
39
+ if (!Array.isArray(notes))
40
+ continue;
41
+ const cleaned = Array.from(new Set(notes
42
+ .filter((note) => typeof note === "string")
43
+ .map((note) => note.trim())
44
+ .filter((note) => note.length > 0)));
45
+ if (cleaned.length > 0) {
46
+ normalized[stageId] = cleaned;
47
+ }
48
+ }
49
+ return Object.keys(normalized).length > 0 ? normalized : undefined;
50
+ }
51
+ export function mergeStagePolicyNotesForStages(stages, baseNotes, overrideNotes) {
52
+ const normalizedBase = normalizeStagePolicyNotes(baseNotes);
53
+ const merged = {};
54
+ for (const stage of stages) {
55
+ const combined = Array.from(new Set([
56
+ ...(normalizedBase?.[stage.id] ?? []),
57
+ ...((overrideNotes?.[stage.id] ?? []).map((note) => note.trim()).filter((note) => note.length > 0)),
58
+ ]));
59
+ if (combined.length > 0) {
60
+ merged[stage.id] = combined;
61
+ }
62
+ }
63
+ return Object.keys(merged).length > 0 ? merged : undefined;
64
+ }
65
+ function buildPlanRootPath(prepDataDir) {
66
+ return preparationBuildPlansRoot(asPreparationDataDir(prepDataDir));
67
+ }
68
+ export function builtinBuildPlanPackagePath(buildPlanId) {
69
+ return join(PACKAGE_ROOT, "public-repo", "build-plans", buildPlanId);
70
+ }
71
+ export function buildPlanDefinitionPath(prepDataDir, id) {
72
+ return join(buildPlanRootPath(prepDataDir), id);
73
+ }
74
+ function isSupportedBuildPlanStarterDocPath(relativePath) {
75
+ if (relativePath === "README.md")
76
+ return true;
77
+ if (relativePath.startsWith("improve/"))
78
+ return true;
79
+ if (relativePath.startsWith("use/query/"))
80
+ return true;
81
+ if (relativePath.startsWith("build/stages/"))
82
+ return true;
83
+ return false;
84
+ }
85
+ function collectStarterDocs(dirPath) {
86
+ return listFilesRecursive(dirPath, isMarkdownFile)
87
+ .map((filePath) => relative(dirPath, filePath).replaceAll("\\", "/"))
88
+ .filter((relativePath) => isSupportedBuildPlanStarterDocPath(relativePath))
89
+ .map((relativePath) => ({
90
+ relativePath,
91
+ content: readFileSync(join(dirPath, relativePath), "utf8"),
92
+ }))
93
+ .sort((a, b) => a.relativePath.localeCompare(b.relativePath));
94
+ }
95
+ function buildPlanPackageCopyPaths(dirPath) {
96
+ return [
97
+ "build-plan.json",
98
+ CONTEXT_INTERFACE_FILE,
99
+ ...collectStarterDocs(dirPath).map((doc) => doc.relativePath),
100
+ ];
101
+ }
102
+ function copyRelativeFile(sourceRoot, targetRoot, relativePath) {
103
+ const sourcePath = join(sourceRoot, relativePath);
104
+ if (!existsSync(sourcePath))
105
+ return;
106
+ const targetPath = join(targetRoot, relativePath);
107
+ mkdirSync(dirname(targetPath), { recursive: true });
108
+ cpSync(sourcePath, targetPath, { force: true });
109
+ }
110
+ function copyBuildPlanPackageFiles(sourceBuildPlanPath, targetBuildPlanPath) {
111
+ rmSync(targetBuildPlanPath, { recursive: true, force: true });
112
+ mkdirSync(targetBuildPlanPath, { recursive: true });
113
+ for (const relativePath of buildPlanPackageCopyPaths(sourceBuildPlanPath)) {
114
+ copyRelativeFile(sourceBuildPlanPath, targetBuildPlanPath, relativePath);
115
+ }
116
+ }
117
+ export function loadBuildPlanDefinitionFromDir(dirPath) {
118
+ const buildPlanPath = existsSync(join(dirPath, "build-plan.json"))
119
+ ? join(dirPath, "build-plan.json")
120
+ : null;
121
+ if (!buildPlanPath)
122
+ return null;
123
+ const definition = readJsonFileWithSchema(buildPlanPath, "local Build Plan definition", LocalBuildPlanDefinitionSchema);
124
+ if (!definition)
125
+ return null;
126
+ const buildPlanSchema = readContextInterface(dirPath);
127
+ if (!buildPlanSchema)
128
+ return null;
129
+ if (definition.type !== "build-plan") {
130
+ warnInterf(`Warning: local Build Plan definition at ${buildPlanPath} has unexpected type "${definition.type}".`);
131
+ return null;
132
+ }
133
+ return {
134
+ ...definition,
135
+ build_plan_schema: buildPlanSchema,
136
+ starter_docs: collectStarterDocs(dirPath),
137
+ directoryPath: dirPath,
138
+ buildPlanPath,
139
+ buildPlanSchemaPath: contextInterfaceFilePath(dirPath),
140
+ };
141
+ }
142
+ export function isNeutralScaffoldBuildPlanDefinition(definition) {
143
+ const hasScaffoldPurpose = definition.purpose?.label === "From-scratch Build Plan draft" ||
144
+ Boolean(definition.purpose?.task_hint?.includes("Replace this neutral scaffold"));
145
+ const hasScaffoldStage = Boolean(definition.stages?.some((stage) => stage.id === "prepare" &&
146
+ stage.contract_type === "build-plan-draft-stage" &&
147
+ stage.writes.includes("draft-context")));
148
+ const hasScaffoldArtifact = listContextInterfaceArtifacts(definition.build_plan_schema).some((artifact) => artifact.id === "draft-context" &&
149
+ artifact.description.includes("neutral authoring scaffold"));
150
+ return hasScaffoldPurpose || hasScaffoldStage || hasScaffoldArtifact;
151
+ }
152
+ export function listLocalBuildPlanDefinitions(prepDataDir) {
153
+ const definitions = new Map();
154
+ const root = buildPlanRootPath(prepDataDir);
155
+ if (existsSync(root)) {
156
+ for (const entryPath of readdirSync(root).map((entry) => join(root, entry))) {
157
+ try {
158
+ if (!statSync(entryPath).isDirectory())
159
+ continue;
160
+ }
161
+ catch {
162
+ continue;
163
+ }
164
+ const definition = loadBuildPlanDefinitionFromDir(entryPath);
165
+ if (definition && !isNeutralScaffoldBuildPlanDefinition(definition)) {
166
+ definitions.set(definition.id, definition);
167
+ }
168
+ }
169
+ }
170
+ return [...definitions.values()].sort((a, b) => a.label.localeCompare(b.label));
171
+ }
172
+ export function loadLocalBuildPlanDefinition(prepDataDir, id) {
173
+ const definition = loadBuildPlanDefinitionFromDir(buildPlanDefinitionPath(prepDataDir, id));
174
+ if (!definition || isNeutralScaffoldBuildPlanDefinition(definition))
175
+ return null;
176
+ return definition;
177
+ }
178
+ export function resolveBuildPlanPackageSourcePath(prepDataDir, buildPlanId) {
179
+ const localPath = buildPlanDefinitionPath(prepDataDir, buildPlanId);
180
+ const local = loadBuildPlanDefinitionFromDir(localPath);
181
+ if (local && !isNeutralScaffoldBuildPlanDefinition(local))
182
+ return localPath;
183
+ const builtinPath = builtinBuildPlanPackagePath(buildPlanId);
184
+ if (loadBuildPlanDefinitionFromDir(builtinPath))
185
+ return builtinPath;
186
+ return null;
187
+ }
188
+ export function seedLocalDefaultBuildPlan(options) {
189
+ const buildPlanId = "interf-default";
190
+ const targetPath = buildPlanDefinitionPath(options.prepDataDir, buildPlanId);
191
+ if (existsSync(join(targetPath, "build-plan.json"))) {
192
+ return { buildPlanId, targetPath, alreadyExisted: true };
193
+ }
194
+ const builtinInterfPath = builtinBuildPlanPackagePath(buildPlanId);
195
+ if (!existsSync(join(builtinInterfPath, "build-plan.json"))) {
196
+ throw new Error(`Built-in "${buildPlanId}" Build Plan package not found at ${builtinInterfPath}.`);
197
+ }
198
+ copyBuildPlanPackageDirectory(builtinInterfPath, targetPath);
199
+ patchBuildPlanPackageMetadata(targetPath, {
200
+ id: buildPlanId,
201
+ label: "Built-in Interf Build Plan",
202
+ hint: "Built-in file-processing Build Plan: summarize source-grounded evidence, structure cross-file connections, and shape verifiable context around the saved readiness checks.",
203
+ });
204
+ return { buildPlanId, targetPath, alreadyExisted: false };
205
+ }
206
+ export function isBuildPlanId(value) {
207
+ return InterfIdPattern.test(value);
208
+ }
209
+ function readBuildPlanJsonObject(dirPath) {
210
+ const buildPlanPath = join(dirPath, "build-plan.json");
211
+ const raw = readJsonFileUnchecked(buildPlanPath, "Build Plan package");
212
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
213
+ throw new Error(`Build Plan package at ${dirPath} is missing a valid build-plan.json.`);
214
+ }
215
+ return { ...raw };
216
+ }
217
+ export function patchBuildPlanPackageMetadata(dirPath, options) {
218
+ const buildPlanPath = join(dirPath, "build-plan.json");
219
+ const buildPlanJson = readBuildPlanJsonObject(dirPath);
220
+ const normalizedStages = Array.isArray(buildPlanJson.stages) && buildPlanJson.stages.length > 0
221
+ ? buildPlanJson.stages
222
+ : null;
223
+ if (!normalizedStages) {
224
+ throw new Error(`Cannot patch Build Plan package at ${dirPath}: build-plan.json must declare explicit stages before it can be copied or rewritten.`);
225
+ }
226
+ const nextBuildPlanJson = {
227
+ ...buildPlanJson,
228
+ type: "build-plan",
229
+ engine_api: buildPlanJson.engine_api ?? {
230
+ kind: "build",
231
+ version: 1,
232
+ },
233
+ stages: normalizedStages,
234
+ ...(options.id ? { id: options.id } : {}),
235
+ ...(options.inputs && options.inputs.length > 0 ? { inputs: options.inputs } : {}),
236
+ ...(options.label ? { label: options.label } : {}),
237
+ ...(options.hint ? { hint: options.hint } : {}),
238
+ };
239
+ const mergedStagePolicyNotes = mergeStagePolicyNotesForStages(normalizedStages, buildPlanJson.stage_policy_notes, options.stagePolicyNotes);
240
+ if (mergedStagePolicyNotes) {
241
+ nextBuildPlanJson.stage_policy_notes = mergedStagePolicyNotes;
242
+ }
243
+ else {
244
+ delete nextBuildPlanJson.stage_policy_notes;
245
+ }
246
+ writeFileSync(buildPlanPath, JSON.stringify(nextBuildPlanJson, null, 2) + "\n");
247
+ const schemaLabel = `${String(nextBuildPlanJson.label ?? buildPlanJson.label ?? options.id ?? "Build Plan")} Build Plan schema`;
248
+ const existingSchema = readContextInterface(dirPath);
249
+ if (!existingSchema) {
250
+ throw new Error(`Cannot patch Build Plan package at ${dirPath}: missing ${CONTEXT_INTERFACE_FILE}. Restore or reseed the package instead of regenerating a schema from build-plan.json.`);
251
+ }
252
+ writeContextInterface(dirPath, {
253
+ ...existingSchema,
254
+ label: schemaLabel,
255
+ });
256
+ }
257
+ function resolveStageSkillDir(stage) {
258
+ return typeof stage.skill_dir === "string" && stage.skill_dir.trim().length > 0
259
+ ? stage.skill_dir
260
+ : stage.id;
261
+ }
262
+ function collectBuildPlanPackageStructureIssues(dirPath, stages) {
263
+ const issues = [];
264
+ const buildPlanPath = join(dirPath, "build-plan.json");
265
+ if (!existsSync(buildPlanPath))
266
+ issues.push("missing build-plan.json");
267
+ if (!contextInterfaceExists(dirPath))
268
+ issues.push("missing build-plan.schema.json");
269
+ if (!existsSync(join(dirPath, "README.md")))
270
+ issues.push("missing README.md");
271
+ if (!existsSync(join(dirPath, "improve", "SKILL.md")))
272
+ issues.push("missing improve/SKILL.md");
273
+ if (!existsSync(join(dirPath, "use", "query", "SKILL.md")))
274
+ issues.push("missing use/query/SKILL.md");
275
+ if (!stages)
276
+ return issues;
277
+ for (const stage of stages) {
278
+ const skillDir = resolveStageSkillDir(stage);
279
+ if (!existsSync(join(dirPath, "build", "stages", skillDir, "SKILL.md"))) {
280
+ issues.push(`missing build/stages/${skillDir}/SKILL.md`);
281
+ }
282
+ }
283
+ return issues;
284
+ }
285
+ export function describeBuildPlanPackagePortability(dirPath) {
286
+ const issues = collectBuildPlanPackageStructureIssues(dirPath, null);
287
+ if (issues.length > 0)
288
+ return issues;
289
+ let buildPlanJson;
290
+ try {
291
+ buildPlanJson = readBuildPlanJsonObject(dirPath);
292
+ }
293
+ catch (error) {
294
+ issues.push(error instanceof Error ? error.message : String(error));
295
+ return issues;
296
+ }
297
+ const parsed = LocalBuildPlanDefinitionSchema.safeParse(buildPlanJson);
298
+ if (!parsed.success) {
299
+ issues.push(...parsed.error.issues.map((issue) => issue.path.length > 0
300
+ ? `build-plan.json ${issue.path.join(".")}: ${issue.message}`
301
+ : `build-plan.json: ${issue.message}`));
302
+ return issues;
303
+ }
304
+ if (!parsed.data.stages || parsed.data.stages.length === 0) {
305
+ issues.push("build-plan.json must declare explicit stages for a portable Build Plan package");
306
+ return issues;
307
+ }
308
+ // Structural issues already returned earlier; only stage-skill files can be missing now.
309
+ return [
310
+ ...issues,
311
+ ...collectBuildPlanPackageStructureIssues(dirPath, parsed.data.stages ?? null),
312
+ ];
313
+ }
314
+ export function isPortableBuildPlanPackage(dirPath) {
315
+ return describeBuildPlanPackagePortability(dirPath).length === 0;
316
+ }
317
+ export function copyBuildPlanPackageDirectory(sourceBuildPlanPath, targetBuildPlanPath) {
318
+ const portabilityIssues = describeBuildPlanPackagePortability(sourceBuildPlanPath);
319
+ if (portabilityIssues.length > 0) {
320
+ throw new Error(`Build Plan package at ${sourceBuildPlanPath} is not directly copyable: ${portabilityIssues.join("; ")}.`);
321
+ }
322
+ mkdirSync(dirname(targetBuildPlanPath), { recursive: true });
323
+ copyBuildPlanPackageFiles(sourceBuildPlanPath, targetBuildPlanPath);
324
+ }
325
+ export function validateBuildPlanPackage(dirPath) {
326
+ const buildPlanPath = join(dirPath, "build-plan.json");
327
+ if (!existsSync(buildPlanPath)) {
328
+ return {
329
+ ok: false,
330
+ summary: `No build-plan.json found at ${dirPath}`,
331
+ errors: ["Missing build-plan.json"],
332
+ counts: {},
333
+ };
334
+ }
335
+ const raw = readJsonFileUnchecked(buildPlanPath, "Build Plan package");
336
+ if (!raw) {
337
+ return {
338
+ ok: false,
339
+ summary: `Failed to parse build-plan.json at ${buildPlanPath}`,
340
+ errors: ["Invalid JSON in build-plan.json"],
341
+ counts: {},
342
+ };
343
+ }
344
+ const parsed = LocalBuildPlanDefinitionSchema.safeParse(raw);
345
+ if (!parsed.success) {
346
+ const issues = parsed.error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`);
347
+ return {
348
+ ok: false,
349
+ summary: `build-plan.json failed validation: ${issues.length} issue(s)`,
350
+ errors: issues,
351
+ counts: {},
352
+ };
353
+ }
354
+ const def = parsed.data;
355
+ const errors = [];
356
+ if (!def.stages || def.stages.length === 0) {
357
+ errors.push("build-plan.json must declare explicit stages.");
358
+ }
359
+ if (def.stage_policy_notes && def.stages) {
360
+ const stageIds = new Set(def.stages.map((stage) => stage.id));
361
+ for (const stageId of Object.keys(def.stage_policy_notes)) {
362
+ if (!stageIds.has(stageId)) {
363
+ errors.push(`build-plan.json stage_policy_notes references unknown stage "${stageId}".`);
364
+ }
365
+ }
366
+ }
367
+ for (const issue of collectBuildPlanPackageStructureIssues(dirPath, def.stages ?? null)) {
368
+ const formatted = issue.startsWith("missing ")
369
+ ? `Missing ${issue.slice("missing ".length)}.`
370
+ : issue;
371
+ errors.push(formatted);
372
+ }
373
+ const buildPlanSchema = readContextInterface(dirPath);
374
+ if (!buildPlanSchema) {
375
+ errors.push(...describeContextInterfaceValidationIssues(dirPath));
376
+ }
377
+ if (buildPlanSchema) {
378
+ const stages = def.stages ?? [];
379
+ const stageIds = new Set(stages.map((stage) => stage.id));
380
+ const seenPaths = new Map();
381
+ const seenArtifactIds = new Set();
382
+ const schemaArtifacts = listContextInterfaceArtifacts(buildPlanSchema);
383
+ const artifactById = new Map(schemaArtifacts.map((artifact) => [artifact.id, artifact]));
384
+ const normalizedParts = (value) => value.replaceAll("\\", "/").split("/").filter(Boolean);
385
+ const hasOverlappingPath = (value, other) => {
386
+ const a = normalizedParts(value);
387
+ const b = normalizedParts(other);
388
+ const shorter = a.length <= b.length ? a : b;
389
+ const longer = a.length <= b.length ? b : a;
390
+ return shorter.every((part, index) => longer[index] === part);
391
+ };
392
+ for (const artifact of schemaArtifacts) {
393
+ if (seenArtifactIds.has(artifact.id)) {
394
+ errors.push(`build-plan.schema.json repeats Artifact id "${artifact.id}".`);
395
+ }
396
+ seenArtifactIds.add(artifact.id);
397
+ const existingPathOwner = seenPaths.get(artifact.path);
398
+ if (existingPathOwner) {
399
+ errors.push(`build-plan.schema.json repeats Artifact path "${artifact.path}".`);
400
+ }
401
+ for (const [existingPath, existingZoneId] of seenPaths.entries()) {
402
+ if (existingPath === artifact.path)
403
+ continue;
404
+ if (hasOverlappingPath(artifact.path, existingPath)) {
405
+ errors.push(`build-plan.schema.json Artifacts "${artifact.id}" and "${existingZoneId}" overlap on path "${artifact.path}" / "${existingPath}".`);
406
+ }
407
+ }
408
+ seenPaths.set(artifact.path, artifact.id);
409
+ if ((artifact.role === "input" || artifact.role === "runtime") && artifact.owned_by.length > 0) {
410
+ errors.push(`build-plan.schema.json Artifact "${artifact.id}" cannot declare owners because its role is "${artifact.role}".`);
411
+ }
412
+ for (const owner of artifact.owned_by) {
413
+ if (!stageIds.has(owner)) {
414
+ errors.push(`build-plan.schema.json references unknown stage "${owner}" for Artifact path "${artifact.path}".`);
415
+ }
416
+ }
417
+ }
418
+ for (const stage of stages) {
419
+ for (const artifactId of stage.reads) {
420
+ if (!artifactById.has(artifactId)) {
421
+ errors.push(`Stage "${stage.id}" reads unknown Artifact "${artifactId}".`);
422
+ }
423
+ }
424
+ for (const artifactId of stage.writes) {
425
+ const artifact = artifactById.get(artifactId);
426
+ if (!artifact) {
427
+ errors.push(`Stage "${stage.id}" writes unknown Artifact "${artifactId}".`);
428
+ continue;
429
+ }
430
+ if (artifact.role === "input" || artifact.role === "runtime") {
431
+ errors.push(`Stage "${stage.id}" writes Artifact "${artifactId}" but Artifacts with role "${artifact.role}" are engine-owned inputs, not writable stage outputs.`);
432
+ }
433
+ if (!artifact.owned_by.includes(stage.id)) {
434
+ errors.push(`Stage "${stage.id}" writes Artifact "${artifactId}" but that Artifact is not owned by the stage in build-plan.schema.json.`);
435
+ }
436
+ }
437
+ }
438
+ }
439
+ const stageDirs = existsSync(join(dirPath, "build", "stages"))
440
+ ? listFilesRecursive(join(dirPath, "build", "stages"), (filePath) => basename(filePath) === "SKILL.md")
441
+ : [];
442
+ const counts = {
443
+ starter_docs: collectStarterDocs(dirPath).length,
444
+ build_stage_docs: stageDirs.length,
445
+ build_artifacts: buildPlanSchema ? listContextInterfaceArtifacts(buildPlanSchema).length : 0,
446
+ build_plan_artifacts: buildPlanSchema ? listContextInterfaceArtifacts(buildPlanSchema).length : 0,
447
+ };
448
+ return {
449
+ ok: errors.length === 0,
450
+ summary: errors.length === 0 ? "Build Plan package is valid." : `Build Plan package has ${errors.length} issue(s).`,
451
+ errors,
452
+ counts,
453
+ };
454
+ }
455
+ function describeContextInterfaceValidationIssues(dirPath) {
456
+ const buildPlanSchemaPath = contextInterfaceFilePath(dirPath);
457
+ if (!existsSync(buildPlanSchemaPath)) {
458
+ return ["build-plan.schema.json is missing."];
459
+ }
460
+ const raw = readJsonFileUnchecked(buildPlanSchemaPath, "Build Plan context interface");
461
+ if (raw === null) {
462
+ return ["build-plan.schema.json is invalid JSON."];
463
+ }
464
+ const parsed = ContextInterfaceSchema.safeParse(raw);
465
+ if (parsed.success) {
466
+ return ["build-plan.schema.json is missing or invalid."];
467
+ }
468
+ return parsed.error.issues.map((issue) => {
469
+ const path = issue.path.length > 0 ? issue.path.join(".") : "<root>";
470
+ return `build-plan.schema.json ${path}: ${issue.message}`;
471
+ });
472
+ }
@@ -0,0 +1,17 @@
1
+ import { type LocalBuildPlanDefinition } from "./local-build-plans.js";
2
+ export declare function userBuildPlanPath(id: string): string;
3
+ export declare function userBuildPlanExists(id: string): boolean;
4
+ export declare function listUserBuildPlanDefinitions(): LocalBuildPlanDefinition[];
5
+ export declare function loadUserBuildPlanDefinition(id: string): LocalBuildPlanDefinition | null;
6
+ export interface InstallUserBuildPlanOptions {
7
+ sourceDir: string;
8
+ id?: string;
9
+ overwrite?: boolean;
10
+ }
11
+ export interface InstallUserBuildPlanResult {
12
+ id: string;
13
+ path: string;
14
+ overwritten: boolean;
15
+ }
16
+ export declare function installUserBuildPlan(options: InstallUserBuildPlanOptions): InstallUserBuildPlanResult;
17
+ export declare function removeUserBuildPlan(id: string): boolean;
@@ -0,0 +1,77 @@
1
+ import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync, } from "node:fs";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { warnInterf } from "../../contracts/utils/logger.js";
4
+ import { userBuildPlanPackagePath, userBuildPlansRoot, } from "../../contracts/lib/preparation-paths.js";
5
+ import { loadBuildPlanDefinitionFromDir, } from "./local-build-plans.js";
6
+ export function userBuildPlanPath(id) {
7
+ return userBuildPlanPackagePath(id);
8
+ }
9
+ export function userBuildPlanExists(id) {
10
+ return existsSync(join(userBuildPlanPath(id), "build-plan.json"));
11
+ }
12
+ export function listUserBuildPlanDefinitions() {
13
+ const root = userBuildPlansRoot();
14
+ if (!existsSync(root))
15
+ return [];
16
+ const definitions = [];
17
+ for (const entry of readdirSync(root)) {
18
+ const entryPath = join(root, entry);
19
+ try {
20
+ if (!statSync(entryPath).isDirectory())
21
+ continue;
22
+ }
23
+ catch {
24
+ continue;
25
+ }
26
+ const definition = loadBuildPlanDefinitionFromDir(entryPath);
27
+ if (definition)
28
+ definitions.push(definition);
29
+ }
30
+ return definitions.sort((a, b) => a.label.localeCompare(b.label));
31
+ }
32
+ export function loadUserBuildPlanDefinition(id) {
33
+ return loadBuildPlanDefinitionFromDir(userBuildPlanPath(id));
34
+ }
35
+ export function installUserBuildPlan(options) {
36
+ const sourceDir = resolve(options.sourceDir);
37
+ if (!existsSync(join(sourceDir, "build-plan.json"))) {
38
+ throw new Error(`No build-plan.json found at ${sourceDir}.`);
39
+ }
40
+ const definition = loadBuildPlanDefinitionFromDir(sourceDir);
41
+ if (!definition) {
42
+ throw new Error(`Could not load Build Plan package at ${sourceDir}.`);
43
+ }
44
+ const id = options.id ?? definition.id;
45
+ if (!id)
46
+ throw new Error("Build Plan id is required.");
47
+ const targetPath = userBuildPlanPath(id);
48
+ const existed = existsSync(targetPath);
49
+ if (existed && !options.overwrite) {
50
+ throw new Error(`User Build Plan "${id}" already exists at ${targetPath}. Pass overwrite to replace it.`);
51
+ }
52
+ mkdirSync(dirname(targetPath), { recursive: true });
53
+ if (existed)
54
+ rmSync(targetPath, { recursive: true, force: true });
55
+ cpSync(sourceDir, targetPath, { recursive: true, force: true });
56
+ if (id !== definition.id) {
57
+ const targetBuildPlanJson = join(targetPath, "build-plan.json");
58
+ const raw = readFileSync(targetBuildPlanJson, "utf8");
59
+ const parsed = JSON.parse(raw);
60
+ parsed.id = id;
61
+ writeFileSync(targetBuildPlanJson, `${JSON.stringify(parsed, null, 2)}\n`);
62
+ }
63
+ return { id, path: targetPath, overwritten: existed };
64
+ }
65
+ export function removeUserBuildPlan(id) {
66
+ const target = userBuildPlanPath(id);
67
+ if (!existsSync(target))
68
+ return false;
69
+ try {
70
+ rmSync(target, { recursive: true, force: true });
71
+ return true;
72
+ }
73
+ catch (error) {
74
+ warnInterf(`Warning: failed to remove user Build Plan ${id} at ${target}: ${error instanceof Error ? error.message : String(error)}`);
75
+ return false;
76
+ }
77
+ }
@@ -1,3 +1,3 @@
1
1
  export * as schema from "./lib/schema.js";
2
- export type { AgentRecord, AgentsRegistry, Artifact, ArtifactId, ArtifactShape, ArtifactStatus, CanonicalRole, Check, CheckKind, GateStatus, Locator, LocatorKind, MethodId, PreparationName, Proof, ReadinessGate, ReadinessStatus, Readiness, ReadyVerdict, RoleMap, RuntimeContractType, RuntimeExecutorInfo, RuntimeStage, RuntimeTargetType, Source, SourceFile, SourceFiles, SourceKind, SourceSnapshot, StageInput, StageInputs, StandardEvidenceFrontmatterKey, TestCaseExpect, TestTargetType, VerifyTargetResult, } from "./lib/schema.js";
2
+ export type { AgentRecord, AgentsRegistry, Artifact, ArtifactId, ArtifactShape, ArtifactStatus, CanonicalRole, Check, CheckKind, GateStatus, Locator, LocatorKind, BuildPlanId, PreparationName, Proof, ReadinessGate, ReadinessStatus, Readiness, ReadyVerdict, RoleMap, RuntimeContractType, RuntimeExecutorInfo, RuntimeStage, RuntimeTargetType, Source, SourceFile, SourceFiles, SourceKind, SourceSnapshot, StageInput, StageInputs, StandardEvidenceFrontmatterKey, TestCaseExpect, TestTargetType, VerifyTargetResult, } from "./lib/schema.js";
3
3
  export { CANONICAL_ROLES, CHECK_KINDS, STANDARD_EVIDENCE_FRONTMATTER_KEYS, } from "./lib/schema.js";