@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
@@ -1,25 +1,113 @@
1
+ /**
2
+ * `interf mcp` — Model Context Protocol server.
3
+ *
4
+ * Wraps the local-service HTTP API as a typed agent surface so coding
5
+ * agents can interact with Interf the same way they call other MCP tools
6
+ * (instead of shelling out to the CLI).
7
+ *
8
+ * interf mcp # stdio transport (default)
9
+ * interf mcp --transport=http --port=4889 # advanced: HTTP transport
10
+ *
11
+ * API-backed tools read `~/.interf/connection.json` (the same file every
12
+ * other client uses) on each call. The MCP server can start before an
13
+ * engine is connected so local plugin hosts such as Cowork can load the
14
+ * tool surface first, then call `web_start` or `web_status`. The MCP
15
+ * server itself holds no Interf runtime state. The transport options are
16
+ * intentionally minimal — agents speaking MCP today are stdio-first.
17
+ *
18
+ * Tool list:
19
+ * web_start shell out to `interf web start`
20
+ * web_stop shell out to `interf web stop`
21
+ * web_status shell out to `interf web status`
22
+ * prep_list GET /v1/preparations
23
+ * prep_create POST /v1/preparations
24
+ * prep_show GET /v1/preparations/{id}
25
+ * prep_select_build_plan PATCH /v1/preparations/{id}
26
+ * prep_remove DELETE /v1/preparations/{id}
27
+ * prep_build POST /v1/preparations/{id}/build-runs
28
+ * prep_test POST /v1/preparations/{id}/verify-runs
29
+ * build_plan_list GET /v1/build-plans
30
+ * build_plan_draft POST /v1/preparations/{id}/build-plan-draft-runs
31
+ * build_plan_improve POST /v1/preparations/{id}/build-plan-improvement-runs
32
+ * runs_status GET /v1/runs/{run-id}
33
+ * runs_watch GET /v1/build-runs/{run-id}/events (snapshot, not SSE)
34
+ * runs_cancel POST /v1/build-runs/{run-id}/cancel
35
+ * runs_fetch GET /v1/build-runs/{run-id}/artifacts
36
+ * instance_status GET /v1/instance
37
+ */
38
+ import { spawn } from "node:child_process";
39
+ import { readFileSync } from "node:fs";
1
40
  import { z } from "zod";
2
41
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
42
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
43
  import { CONNECT_OR_ERROR_HINT, readActiveConnection, } from "../../packages/engine/connection-config.js";
5
- import { LOCAL_SERVICE_ROUTES, preparationResourcePath, preparationSubresourcePath, runResourcePath, runSubresourcePath, } from "../../packages/engine/routes.js";
44
+ import { LOCAL_SERVICE_ROUTES, preparationResourcePath, preparationSubresourcePath, runResourcePath, } from "../../packages/engine/routes.js";
45
+ import { BuildPlanAuthoringArtifactRequirementSchema, } from "../../packages/engine/lib/schema.js";
46
+ import { RequestedArtifactSchema, SourceProfileSchema, } from "../../packages/project/lib/schema.js";
6
47
  function trimTrailingSlash(value) {
7
48
  return value.replace(/\/+$/, "");
8
49
  }
9
- function resolveConnection(args) {
50
+ function packageVersionFromManifest() {
51
+ try {
52
+ const url = new URL("../../../package.json", import.meta.url);
53
+ const raw = readFileSync(url, "utf8");
54
+ const parsed = JSON.parse(raw);
55
+ return parsed.version ?? "0.0.0";
56
+ }
57
+ catch {
58
+ return "0.0.0";
59
+ }
60
+ }
61
+ function resolveConnectionOrNull(args) {
10
62
  const conn = readActiveConnection({
11
63
  urlOverride: args.url ?? null,
12
64
  authTokenOverride: args.token ?? null,
13
65
  });
14
- if (!conn) {
15
- process.stderr.write(`${CONNECT_OR_ERROR_HINT}\n`);
16
- process.exit(1);
17
- }
66
+ if (!conn)
67
+ return null;
18
68
  return {
19
69
  url: trimTrailingSlash(conn.url),
20
70
  token: conn.auth_token ?? null,
21
71
  };
22
72
  }
73
+ function runInterfCli(args) {
74
+ const binPath = process.argv[1];
75
+ if (!binPath) {
76
+ return Promise.resolve({
77
+ code: 1,
78
+ signal: null,
79
+ stdout: "",
80
+ stderr: "Cannot locate the Interf CLI entrypoint.",
81
+ });
82
+ }
83
+ return new Promise((resolve) => {
84
+ const child = spawn(process.execPath, [binPath, ...args], {
85
+ stdio: ["ignore", "pipe", "pipe"],
86
+ env: process.env,
87
+ });
88
+ let stdout = "";
89
+ let stderr = "";
90
+ child.stdout.setEncoding("utf8");
91
+ child.stderr.setEncoding("utf8");
92
+ child.stdout.on("data", (chunk) => {
93
+ stdout += chunk;
94
+ });
95
+ child.stderr.on("data", (chunk) => {
96
+ stderr += chunk;
97
+ });
98
+ child.on("error", (error) => {
99
+ resolve({
100
+ code: 1,
101
+ signal: null,
102
+ stdout,
103
+ stderr: stderr || error.message,
104
+ });
105
+ });
106
+ child.on("close", (code, signal) => {
107
+ resolve({ code, signal, stdout, stderr });
108
+ });
109
+ });
110
+ }
23
111
  async function callApi(conn, path, init = {}) {
24
112
  const headers = new Headers(init.headers ?? {});
25
113
  if (conn.token)
@@ -57,38 +145,109 @@ function toolErrorJson(message, payload) {
57
145
  isError: true,
58
146
  };
59
147
  }
60
- async function callAndReturn(conn, path, init = {}) {
148
+ function cliToolResult(result) {
149
+ const output = [
150
+ result.stdout.trim(),
151
+ result.stderr.trim(),
152
+ ].filter(Boolean).join("\n");
153
+ if (result.code === 0)
154
+ return toolResultJson(output || "OK");
155
+ return toolErrorJson(`interf command exited with ${result.signal ?? result.code ?? "unknown"}.`, output);
156
+ }
157
+ async function callAndReturn(args, path, init = {}) {
158
+ const conn = resolveConnectionOrNull(args);
159
+ if (!conn)
160
+ return toolErrorJson(CONNECT_OR_ERROR_HINT);
61
161
  const response = await callApi(conn, path, init);
62
162
  if (response.status >= 200 && response.status < 300) {
63
163
  return toolResultJson(response.body ?? response.raw);
64
164
  }
65
165
  return toolErrorJson(`Local service responded with HTTP ${response.status}.`, response.body ?? response.raw);
66
166
  }
67
- function registerTools(server, conn) {
167
+ function registerTools(server, connectionArgs) {
168
+ // ── Local engine lifecycle ─────────────────────────────────────────────
169
+ server.registerTool("web_start", {
170
+ title: "Start local Interf engine",
171
+ description: "Start the Interf engine in the background on the user's machine. "
172
+ + "Use this when no Interf instance is connected yet.",
173
+ inputSchema: {
174
+ host: z.string().min(1).optional().describe("Host to bind. Defaults to 127.0.0.1."),
175
+ port: z.number().int().positive().optional().describe("Port to bind. Defaults to 4873."),
176
+ timeout_ms: z.number().int().positive().optional().describe("Startup timeout in milliseconds."),
177
+ log: z.string().min(1).optional().describe("Optional path for background engine logs."),
178
+ },
179
+ }, async (args) => {
180
+ const cliArgs = ["web", "start"];
181
+ if (args.host)
182
+ cliArgs.push("--host", args.host);
183
+ if (args.port)
184
+ cliArgs.push("--port", String(args.port));
185
+ if (args.timeout_ms)
186
+ cliArgs.push("--timeout-ms", String(args.timeout_ms));
187
+ if (args.log)
188
+ cliArgs.push("--log", args.log);
189
+ return cliToolResult(await runInterfCli(cliArgs));
190
+ });
191
+ server.registerTool("web_stop", {
192
+ title: "Stop local Interf engine",
193
+ description: "Stop the connected Interf engine or the live engine recorded in the "
194
+ + "local service registry.",
195
+ inputSchema: {
196
+ url: z.string().url().optional().describe("Optional engine URL to stop."),
197
+ token: z.string().min(1).optional().describe("Optional bearer token."),
198
+ },
199
+ }, async (args) => {
200
+ const cliArgs = ["web", "stop"];
201
+ if (args.url)
202
+ cliArgs.push("--url", args.url);
203
+ if (args.token)
204
+ cliArgs.push("--token", args.token);
205
+ return cliToolResult(await runInterfCli(cliArgs));
206
+ });
207
+ server.registerTool("web_status", {
208
+ title: "Show local Interf engine status",
209
+ description: "Return the connected engine status using the same connection record "
210
+ + "as the CLI.",
211
+ inputSchema: {
212
+ url: z.string().url().optional().describe("Optional engine URL."),
213
+ token: z.string().min(1).optional().describe("Optional bearer token."),
214
+ },
215
+ }, async (args) => {
216
+ const cliArgs = ["web", "status"];
217
+ if (args.url)
218
+ cliArgs.push("--url", args.url);
219
+ if (args.token)
220
+ cliArgs.push("--token", args.token);
221
+ return cliToolResult(await runInterfCli(cliArgs));
222
+ });
68
223
  // ── Preparations ────────────────────────────────────────────────────────
69
224
  server.registerTool("prep_list", {
70
225
  title: "List preparations",
71
226
  description: "List every Preparation registered on the connected Interf instance, "
72
- + "with source binding, Method id, and current readiness.",
227
+ + "with source binding, Build Plan id, and current readiness.",
73
228
  inputSchema: {},
74
- }, async () => callAndReturn(conn, LOCAL_SERVICE_ROUTES.preparations));
229
+ }, async () => callAndReturn(connectionArgs, LOCAL_SERVICE_ROUTES.preparations));
75
230
  server.registerTool("prep_create", {
76
231
  title: "Create a preparation",
77
- description: "Create a new Preparation. The Preparation binds a Source Folder "
78
- + "to an optional Method and is the saved unit of work for compile runs.",
232
+ description: "Create a new Preparation. The Preparation binds a Source, "
233
+ + "agent intent, requested Artifacts, and optional Build Plan.",
79
234
  inputSchema: {
80
235
  id: z.string().min(1).describe("Preparation id (kebab-case)."),
81
- source_path: z.string().min(1).describe("Absolute or workspace-relative Source Folder path."),
82
- method_id: z.string().min(1).optional().describe("Optional Method id to bind. Bind later with prep_set_method if omitted."),
236
+ source_path: z.string().min(1).describe("Source path visible to the connected instance."),
237
+ build_plan_id: z.string().min(1).optional().describe("Optional Build Plan id to select. Select later with prep_select_build_plan if omitted."),
83
238
  about: z.string().min(1).optional().describe("Optional human-readable description."),
239
+ requested_artifacts: z.array(RequestedArtifactSchema).optional().describe("Requested Artifacts the agent/user confirmed for this Preparation."),
240
+ source_profile: SourceProfileSchema.optional().describe("Advisory source profile from the agent's inspection before build."),
84
241
  },
85
- }, async (args) => callAndReturn(conn, LOCAL_SERVICE_ROUTES.preparations, {
242
+ }, async (args) => callAndReturn(connectionArgs, LOCAL_SERVICE_ROUTES.preparations, {
86
243
  method: "POST",
87
244
  body: JSON.stringify({
88
245
  id: args.id,
89
246
  source: { kind: "local-folder", locator: args.source_path },
90
- ...(args.method_id ? { method_id: args.method_id } : {}),
247
+ ...(args.build_plan_id ? { build_plan_id: args.build_plan_id } : {}),
91
248
  ...(args.about ? { about: args.about } : {}),
249
+ ...(args.requested_artifacts ? { requested_artifacts: args.requested_artifacts } : {}),
250
+ ...(args.source_profile ? { source_profile: args.source_profile } : {}),
92
251
  }),
93
252
  }));
94
253
  server.registerTool("prep_show", {
@@ -97,72 +256,115 @@ function registerTools(server, conn) {
97
256
  inputSchema: {
98
257
  id: z.string().min(1).describe("Preparation id."),
99
258
  },
100
- }, async (args) => callAndReturn(conn, preparationResourcePath(args.id)));
101
- server.registerTool("prep_set_method", {
102
- title: "Bind a Method to a preparation",
103
- description: "Update the Method binding on a Preparation. Use this to swap "
104
- + "Methods between compile runs without rebuilding the Preparation.",
259
+ }, async (args) => callAndReturn(connectionArgs, preparationResourcePath(args.id)));
260
+ server.registerTool("prep_select_build_plan", {
261
+ title: "Select a Build Plan for a Preparation",
262
+ description: "Update the selected Build Plan on a Preparation. Use this to swap "
263
+ + "Build Plans between Build runs without rebuilding the Preparation.",
105
264
  inputSchema: {
106
265
  id: z.string().min(1).describe("Preparation id."),
107
- method_id: z.string().min(1).describe("Method id to bind."),
266
+ build_plan_id: z.string().min(1).describe("Build Plan id to use."),
108
267
  },
109
- }, async (args) => callAndReturn(conn, preparationResourcePath(args.id), {
268
+ }, async (args) => callAndReturn(connectionArgs, preparationResourcePath(args.id), {
110
269
  method: "PATCH",
111
- body: JSON.stringify({ method_id: args.method_id }),
270
+ body: JSON.stringify({ build_plan_id: args.build_plan_id }),
112
271
  }));
113
272
  server.registerTool("prep_remove", {
114
273
  title: "Remove a preparation",
115
- description: "Delete a Preparation. Portable context is removed too.",
274
+ description: "Delete a Preparation. Verifiable context is removed too.",
116
275
  inputSchema: {
117
276
  id: z.string().min(1).describe("Preparation id."),
118
277
  },
119
- }, async (args) => callAndReturn(conn, preparationResourcePath(args.id), {
278
+ }, async (args) => callAndReturn(connectionArgs, preparationResourcePath(args.id), {
120
279
  method: "DELETE",
121
280
  }));
122
- // ── Compile + verify runs ──────────────────────────────────────────────
123
- server.registerTool("prep_compile", {
124
- title: "Start a compile run",
125
- description: "Kick off a compile run for a Preparation. Returns the new run "
281
+ // ── Build + readiness-check runs ───────────────────────────────────────
282
+ server.registerTool("prep_build", {
283
+ title: "Start a Build run",
284
+ description: "Run the selected Build Plan for a Preparation. Returns the new Build run "
126
285
  + "resource immediately; use runs_status to poll progress and "
127
286
  + "runs_fetch when the run finishes.",
128
287
  inputSchema: {
129
288
  id: z.string().min(1).describe("Preparation id."),
130
289
  },
131
- }, async (args) => callAndReturn(conn, preparationSubresourcePath(args.id, "compileRuns"), { method: "POST", body: "{}" }));
132
- server.registerTool("prep_verify", {
290
+ }, async (args) => callAndReturn(connectionArgs, preparationSubresourcePath(args.id, "buildRuns"), { method: "POST", body: "{}" }));
291
+ server.registerTool("prep_test", {
133
292
  title: "Run readiness checks",
134
- description: "Run the Preparation's readiness checks against the latest portable "
135
- + "context. Verify runs always judge against the compiled output in 0.15+.",
293
+ description: "Run the Preparation's readiness checks against the latest verifiable "
294
+ + "context.",
136
295
  inputSchema: {
137
296
  id: z.string().min(1).describe("Preparation id."),
138
297
  },
139
- }, async (args) => callAndReturn(conn, preparationSubresourcePath(args.id, "verifyRuns"), {
298
+ }, async (args) => callAndReturn(connectionArgs, preparationSubresourcePath(args.id, "verifyRuns"), {
140
299
  method: "POST",
141
300
  body: JSON.stringify({}),
142
301
  }));
143
- // ── Methods ─────────────────────────────────────────────────────────────
144
- server.registerTool("method_list", {
145
- title: "List Methods",
146
- description: "List every Method visible to the connected instance: workspace "
147
- + "drafts, the user library at ~/.interf/methods/, and bundled Methods.",
302
+ // ── Build Plans ────────────────────────────────────────────────────────
303
+ server.registerTool("build_plan_list", {
304
+ title: "List Build Plans",
305
+ description: "List every Build Plan visible to the connected instance: Preparation drafts, "
306
+ + "saved Build Plans, and bundled Build Plans.",
148
307
  inputSchema: {},
149
- }, async () => callAndReturn(conn, LOCAL_SERVICE_ROUTES.methods));
150
- server.registerTool("method_draft", {
151
- title: "Author a new Method draft",
152
- description: "Run the Method-authoring agent for a Preparation. Produces a new "
153
- + "Method package draft under <workspace>/methods/<id>/.",
308
+ }, async () => callAndReturn(connectionArgs, LOCAL_SERVICE_ROUTES.buildPlans));
309
+ server.registerTool("build_plan_draft", {
310
+ title: "Draft a Build Plan",
311
+ description: "Run the Build Plan authoring agent for a Preparation. Saved requested "
312
+ + "Artifacts are used automatically when omitted from the request.",
154
313
  inputSchema: {
155
314
  prep_id: z.string().min(1).describe("Preparation id."),
315
+ source_folder_path: z.string().min(1).describe("Source folder path visible to the connected instance."),
316
+ build_plan_id: z.string().min(1).describe("Build Plan id to create."),
317
+ label: z.string().min(1).describe("Human-readable Build Plan label."),
318
+ hint: z.string().min(1).describe("Short Build Plan hint."),
319
+ task_prompt: z.string().min(1).describe("Agent job this Build Plan should support."),
320
+ requested_artifacts: z.array(RequestedArtifactSchema).optional(),
321
+ source_profile: SourceProfileSchema.nullable().optional(),
322
+ artifact_requirements: z.array(BuildPlanAuthoringArtifactRequirementSchema).optional(),
156
323
  },
157
- }, async (args) => callAndReturn(conn, preparationSubresourcePath(args.prep_id, "methodAuthoringRuns"), { method: "POST", body: "{}" }));
158
- server.registerTool("method_improve", {
159
- title: "Run Method improvement",
160
- description: "Run the Method-improvement agent for a Preparation. Iterates on "
161
- + "the bound Method based on the latest readiness-check results.",
324
+ }, async (args) => callAndReturn(connectionArgs, preparationSubresourcePath(args.prep_id, "buildPlanDraftRuns"), {
325
+ method: "POST",
326
+ body: JSON.stringify({
327
+ preparation: args.prep_id,
328
+ source_folder_path: args.source_folder_path,
329
+ build_plan_id: args.build_plan_id,
330
+ label: args.label,
331
+ hint: args.hint,
332
+ task_prompt: args.task_prompt,
333
+ ...(args.requested_artifacts ? { requested_artifacts: args.requested_artifacts } : {}),
334
+ ...(args.source_profile !== undefined ? { source_profile: args.source_profile } : {}),
335
+ ...(args.artifact_requirements ? { artifact_requirements: args.artifact_requirements } : {}),
336
+ }),
337
+ }));
338
+ server.registerTool("build_plan_improve", {
339
+ title: "Improve a Build Plan",
340
+ description: "Run the Build Plan improvement agent for a Preparation. Iterates on "
341
+ + "the selected Build Plan based on requested Artifacts and latest readiness evidence.",
162
342
  inputSchema: {
163
343
  prep_id: z.string().min(1).describe("Preparation id."),
344
+ source_folder_path: z.string().min(1).describe("Source folder path visible to the connected instance."),
345
+ build_plan_id: z.string().min(1).describe("Selected Build Plan id to improve."),
346
+ label: z.string().min(1).describe("Human-readable Build Plan label."),
347
+ hint: z.string().min(1).describe("Short Build Plan hint."),
348
+ task_prompt: z.string().min(1).describe("Change request or improvement goal."),
349
+ requested_artifacts: z.array(RequestedArtifactSchema).optional(),
350
+ source_profile: SourceProfileSchema.nullable().optional(),
351
+ artifact_requirements: z.array(BuildPlanAuthoringArtifactRequirementSchema).optional(),
164
352
  },
165
- }, async (args) => callAndReturn(conn, preparationSubresourcePath(args.prep_id, "methodImprovementRuns"), { method: "POST", body: "{}" }));
353
+ }, async (args) => callAndReturn(connectionArgs, preparationSubresourcePath(args.prep_id, "buildPlanImprovementRuns"), {
354
+ method: "POST",
355
+ body: JSON.stringify({
356
+ preparation: args.prep_id,
357
+ source_folder_path: args.source_folder_path,
358
+ build_plan_id: args.build_plan_id,
359
+ reference_build_plan_id: args.build_plan_id,
360
+ label: args.label,
361
+ hint: args.hint,
362
+ task_prompt: args.task_prompt,
363
+ ...(args.requested_artifacts ? { requested_artifacts: args.requested_artifacts } : {}),
364
+ ...(args.source_profile !== undefined ? { source_profile: args.source_profile } : {}),
365
+ ...(args.artifact_requirements ? { artifact_requirements: args.artifact_requirements } : {}),
366
+ }),
367
+ }));
166
368
  // ── Runs ────────────────────────────────────────────────────────────────
167
369
  server.registerTool("runs_status", {
168
370
  title: "Get run status",
@@ -170,7 +372,7 @@ function registerTools(server, conn) {
170
372
  inputSchema: {
171
373
  run_id: z.string().min(1).describe("Run id."),
172
374
  },
173
- }, async (args) => callAndReturn(conn, runResourcePath(args.run_id)));
375
+ }, async (args) => callAndReturn(connectionArgs, runResourcePath(args.run_id)));
174
376
  server.registerTool("runs_watch", {
175
377
  title: "Read run events",
176
378
  description: "Read the events log for one run as a snapshot. Returns the same "
@@ -179,34 +381,33 @@ function registerTools(server, conn) {
179
381
  inputSchema: {
180
382
  run_id: z.string().min(1).describe("Run id."),
181
383
  },
182
- }, async (args) => callAndReturn(conn, runSubresourcePath(args.run_id, "events")));
384
+ }, async (args) => callAndReturn(connectionArgs, `${LOCAL_SERVICE_ROUTES.buildRuns}/${encodeURIComponent(args.run_id)}/events`));
183
385
  server.registerTool("runs_cancel", {
184
386
  title: "Cancel a run",
185
387
  description: "Request cancellation of an in-flight run.",
186
388
  inputSchema: {
187
389
  run_id: z.string().min(1).describe("Run id."),
188
390
  },
189
- }, async (args) => callAndReturn(conn, runSubresourcePath(args.run_id, "cancel"), { method: "POST", body: "{}" }));
391
+ }, async (args) => callAndReturn(connectionArgs, `${LOCAL_SERVICE_ROUTES.buildRuns}/${encodeURIComponent(args.run_id)}/cancel`, { method: "POST", body: "{}" }));
190
392
  server.registerTool("runs_fetch", {
191
393
  title: "Fetch run artifacts",
192
- description: "Return the artifact manifest for a finished run (portable context, "
394
+ description: "Return the artifact manifest for a finished run (verifiable context, "
193
395
  + "proof records, logs, run-scoped audit trail).",
194
396
  inputSchema: {
195
397
  run_id: z.string().min(1).describe("Run id."),
196
398
  },
197
- }, async (args) => callAndReturn(conn, runSubresourcePath(args.run_id, "artifacts")));
399
+ }, async (args) => callAndReturn(connectionArgs, `${LOCAL_SERVICE_ROUTES.buildRuns}/${encodeURIComponent(args.run_id)}/artifacts`));
198
400
  // ── Instance ────────────────────────────────────────────────────────────
199
401
  server.registerTool("instance_status", {
200
402
  title: "Show instance status",
201
403
  description: "Return the engine's instance resource: started_at, package "
202
404
  + "version, registered preparations, active runs, idle seconds.",
203
405
  inputSchema: {},
204
- }, async () => callAndReturn(conn, LOCAL_SERVICE_ROUTES.instance));
406
+ }, async () => callAndReturn(connectionArgs, LOCAL_SERVICE_ROUTES.instance));
205
407
  }
206
408
  async function startStdioServer(args) {
207
- const conn = resolveConnection(args);
208
- const server = new McpServer({ name: "interf", version: "0.14.0" }, { capabilities: { tools: {} } });
209
- registerTools(server, conn);
409
+ const server = new McpServer({ name: "interf", version: packageVersionFromManifest() }, { capabilities: { tools: {} } });
410
+ registerTools(server, args);
210
411
  const transport = new StdioServerTransport();
211
412
  await server.connect(transport);
212
413
  }
@@ -2,7 +2,7 @@
2
2
  * `interf prep` — preparation CRUD against a connected instance.
3
3
  *
4
4
  * interf prep ls
5
- * interf prep create <id> --source <path> --method <id> [--about <text>]
5
+ * interf prep create <id> --source <path> [--build-plan <id>] [--about <text>]
6
6
  * interf prep show <id>
7
7
  * interf prep rm <id>
8
8
  *
@@ -14,6 +14,8 @@ import { resolve } from "node:path";
14
14
  import chalk from "chalk";
15
15
  import { CONNECT_OR_ERROR_HINT, readActiveConnection, } from "../../packages/engine/connection-config.js";
16
16
  import { preparationResourcePath } from "../../packages/engine/routes.js";
17
+ import { requestedArtifactCheckLabel } from "../../packages/engine/requested-artifacts.js";
18
+ import { RequestedArtifactSchema, SourceProfileSchema, } from "../../packages/project/lib/schema.js";
17
19
  function requireConnection(args) {
18
20
  const conn = readActiveConnection({
19
21
  urlOverride: args.url,
@@ -45,6 +47,28 @@ async function callJson(url, token, init = {}) {
45
47
  }
46
48
  return { status: response.status, body, raw };
47
49
  }
50
+ const RequestedArtifactsCliSchema = RequestedArtifactSchema.array();
51
+ function parseJsonOption(label, value, parse) {
52
+ if (!value)
53
+ return undefined;
54
+ let parsed;
55
+ try {
56
+ parsed = JSON.parse(value);
57
+ }
58
+ catch (error) {
59
+ console.error(chalk.red(`Invalid JSON for ${label}.`));
60
+ console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
61
+ process.exit(1);
62
+ }
63
+ try {
64
+ return parse(parsed);
65
+ }
66
+ catch (error) {
67
+ console.error(chalk.red(`Invalid ${label}.`));
68
+ console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
69
+ process.exit(1);
70
+ }
71
+ }
48
72
  function statusColor(status) {
49
73
  if (status === "ready")
50
74
  return chalk.green;
@@ -57,12 +81,11 @@ function statusColor(status) {
57
81
  function renderPreparationSummary(prep) {
58
82
  console.log();
59
83
  console.log(` ${chalk.bold(prep.name)}`);
60
- if (prep.method_id)
61
- console.log(chalk.dim(` method: ${prep.method_id}`));
84
+ console.log(chalk.dim(` Build Plan: ${prep.build_plan_id ?? "(not selected)"}`));
62
85
  if (prep.source_path)
63
86
  console.log(chalk.dim(` source: ${prep.source_path}`));
64
- if (prep.portable_context_path) {
65
- console.log(chalk.dim(` output: ${prep.portable_context_path}`));
87
+ if (prep.verifiable_context_path) {
88
+ console.log(chalk.dim(` output: ${prep.verifiable_context_path}`));
66
89
  }
67
90
  if (prep.readiness?.status) {
68
91
  const aggColor = prep.readiness.ready ? chalk.green : chalk.yellow;
@@ -80,12 +103,26 @@ function renderPreparationSummary(prep) {
80
103
  console.log(` ${artifact.artifact_id.padEnd(idWidth)} ${colored}${stages}`);
81
104
  }
82
105
  }
83
- if (prep.latest_compile_run_id) {
106
+ if (prep.requested_artifacts && prep.requested_artifacts.length > 0) {
107
+ console.log();
108
+ console.log(chalk.bold(" Requested Artifacts"));
109
+ for (const artifact of prep.requested_artifacts) {
110
+ console.log(` ${chalk.bold(artifact.title)}`);
111
+ if (artifact.purpose ?? artifact.description) {
112
+ console.log(chalk.dim(` ${artifact.purpose ?? artifact.description}`));
113
+ }
114
+ const checks = artifact.checks ?? [];
115
+ for (const check of checks.slice(0, 4)) {
116
+ console.log(chalk.dim(` - ${requestedArtifactCheckLabel(check)}`));
117
+ }
118
+ }
119
+ }
120
+ if (prep.latest_build_run_id) {
84
121
  console.log();
85
- console.log(chalk.dim(` latest compile run: ${prep.latest_compile_run_id}`));
122
+ console.log(chalk.dim(` latest Build run: ${prep.latest_build_run_id}`));
86
123
  }
87
124
  if (prep.latest_test_run_id) {
88
- console.log(chalk.dim(` latest verify run: ${prep.latest_test_run_id}`));
125
+ console.log(chalk.dim(` latest check run: ${prep.latest_test_run_id}`));
89
126
  }
90
127
  console.log();
91
128
  console.log(chalk.dim(` Run with --json for the raw resource record.`));
@@ -108,7 +145,7 @@ export const prepCommand = {
108
145
  }
109
146
  const preparations = body.preparations ?? [];
110
147
  if (preparations.length === 0) {
111
- console.log(chalk.dim(" No preparations yet. Create one with `interf prep create <id> --source <path> --method <method-id>`."));
148
+ console.log(chalk.dim(" No preparations yet. Create one with `interf prep create <id> --source <path>`."));
112
149
  return;
113
150
  }
114
151
  console.log();
@@ -116,26 +153,34 @@ export const prepCommand = {
116
153
  console.log();
117
154
  for (const prep of preparations) {
118
155
  const sourceLabel = prep.source?.locator ?? prep.source_path ?? "(no source)";
119
- const method = prep.method_id ?? "(no method)";
156
+ const buildPlan = prep.build_plan_id ?? "(no Build Plan)";
120
157
  const readiness = prep.readiness?.status ?? "—";
158
+ const requested = prep.requested_artifacts?.length ?? 0;
121
159
  console.log(` ${prep.id}`);
122
160
  console.log(chalk.dim(` source: ${sourceLabel}`));
123
- console.log(chalk.dim(` method: ${method}`));
161
+ console.log(chalk.dim(` Build Plan: ${buildPlan}`));
162
+ console.log(chalk.dim(` requested Artifacts: ${requested}`));
124
163
  console.log(chalk.dim(` readiness: ${readiness}`));
125
164
  }
126
165
  })
127
- .command("create <prep-id>", "Create a preparation (method binding optional — set later if you don't have one yet)", (y) => y
166
+ .command("create <prep-id>", "Create a Preparation (Build Plan optional — select or draft it later)", (y) => y
128
167
  .positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id (lowercase, dash-separated)" })
129
- .option("source", { type: "string", demandOption: true, describe: "Path to the Source Folder" })
130
- .option("method", { type: "string", describe: "Method id (e.g. interf-default). Optional — bind later via `interf prep set-method`." })
131
- .option("about", { type: "string", describe: "One-line description of the agent work" }), async (args) => {
168
+ .option("source", { type: "string", demandOption: true, describe: "Path to the Source" })
169
+ .option("build-plan", { type: "string", describe: "Build Plan id. Optional — select later with `interf build-plan select`." })
170
+ .option("about", { type: "string", describe: "One-line description of the agent work" })
171
+ .option("requested-artifacts-json", { type: "string", describe: "JSON array of requested Artifacts for this Preparation" })
172
+ .option("source-profile-json", { type: "string", describe: "JSON object describing the agent's advisory source profile" }), async (args) => {
132
173
  const { url, token } = requireConnection(args);
133
174
  const sourceAbs = resolve(process.cwd(), args.source);
175
+ const requestedArtifacts = parseJsonOption("--requested-artifacts-json", args.requestedArtifactsJson, (input) => RequestedArtifactsCliSchema.parse(input));
176
+ const sourceProfile = parseJsonOption("--source-profile-json", args.sourceProfileJson, (input) => SourceProfileSchema.parse(input));
134
177
  const requestBody = {
135
178
  id: args.prepId,
136
179
  source: { kind: "local-folder", locator: sourceAbs },
137
- ...(args.method ? { method_id: args.method } : {}),
180
+ ...(args.buildPlan ? { build_plan_id: args.buildPlan } : {}),
138
181
  about: args.about,
182
+ ...(requestedArtifacts ? { requested_artifacts: requestedArtifacts } : {}),
183
+ ...(sourceProfile ? { source_profile: sourceProfile } : {}),
139
184
  checks: [],
140
185
  };
141
186
  const { status, body, raw } = await callJson(`${url}/v1/preparations`, token, { method: "POST", body: JSON.stringify(requestBody) });
@@ -146,27 +191,14 @@ export const prepCommand = {
146
191
  process.exit(1);
147
192
  }
148
193
  console.log(chalk.green(`Created preparation ${chalk.bold(args.prepId)}.`));
149
- if (!args.method) {
150
- console.log(chalk.dim(` no method bound yet — pick or draft one before compiling:`));
151
- console.log(chalk.dim(` interf prep set-method ${args.prepId} <method-id>`));
152
- console.log(chalk.dim(` interf method draft ${args.prepId}`));
153
- }
154
- if (body?.portable_context?.value) {
155
- console.log(chalk.dim(` portable context (locator): ${body.portable_context.value}`));
194
+ if (!args.buildPlan) {
195
+ console.log(chalk.dim(` no Build Plan selected yet — pick or draft one before building:`));
196
+ console.log(chalk.dim(` interf build-plan select ${args.prepId} <build-plan-id>`));
197
+ console.log(chalk.dim(` interf build-plan draft ${args.prepId}`));
156
198
  }
157
- })
158
- .command("set-method <prep-id> <method-id>", "Bind a method to a preparation (or change which method it uses)", (y) => y
159
- .positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id" })
160
- .positional("method-id", { type: "string", demandOption: true, describe: "Method id to bind" }), async (args) => {
161
- const { url, token } = requireConnection(args);
162
- const { status, raw } = await callJson(`${url}${preparationResourcePath(args.prepId)}`, token, { method: "PATCH", body: JSON.stringify({ method_id: args.methodId }) });
163
- if (status !== 200) {
164
- console.error(chalk.red(`Failed to set method (HTTP ${status}).`));
165
- if (raw)
166
- console.error(raw);
167
- process.exit(1);
199
+ if (body?.build_plan_id && body?.verifiable_context?.value) {
200
+ console.log(chalk.dim(` verifiable context (locator): ${body.verifiable_context.value}`));
168
201
  }
169
- console.log(chalk.green(`Bound ${chalk.bold(args.methodId)} to ${chalk.bold(args.prepId)}.`));
170
202
  })
171
203
  .command("show <prep-id>", "Show a preparation's full record", (y) => y
172
204
  .positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id" })
@@ -1,7 +1,7 @@
1
1
  import type { CommandModule } from "yargs";
2
2
  interface ResetArgs {
3
3
  prepId: string;
4
- mode?: "compile" | "all";
4
+ mode?: "build" | "all";
5
5
  url?: string;
6
6
  token?: string;
7
7
  }