@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.
- package/dist/cli/commands/build-plan.d.ts +2 -0
- package/dist/cli/commands/build-plan.js +376 -0
- package/dist/cli/commands/{compile.d.ts → build.d.ts} +2 -2
- package/dist/cli/commands/{compile.js → build.js} +18 -18
- package/dist/cli/commands/doctor.js +2 -2
- package/dist/cli/commands/mcp.d.ts +0 -34
- package/dist/cli/commands/mcp.js +261 -60
- package/dist/cli/commands/prep.js +67 -35
- package/dist/cli/commands/reset.d.ts +1 -1
- package/dist/cli/commands/reset.js +6 -6
- package/dist/cli/commands/runs.js +105 -33
- package/dist/cli/commands/status.js +4 -2
- package/dist/cli/commands/test.d.ts +10 -0
- package/dist/cli/commands/{verify.js → test.js} +19 -21
- package/dist/cli/commands/web.js +82 -8
- package/dist/cli/commands/wizard.js +63 -64
- package/dist/cli/index.d.ts +4 -4
- package/dist/cli/index.js +7 -7
- package/dist/interf-ui/404.html +1 -0
- package/dist/interf-ui/__next.__PAGE__.txt +10 -0
- package/dist/{compiler-ui → interf-ui}/__next._full.txt +12 -12
- package/dist/interf-ui/__next._head.txt +5 -0
- package/dist/{compiler-ui → interf-ui}/__next._index.txt +4 -4
- package/dist/{compiler-ui → interf-ui}/__next._tree.txt +3 -3
- package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +3 -0
- package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +1 -0
- package/dist/{compiler-ui/_next/static/chunks/0_i-3_5l9t2qe.js → interf-ui/_next/static/chunks/0dn41fa_zvgsl.js} +1 -1
- package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +1 -0
- package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +1 -0
- package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +1 -0
- package/dist/{compiler-ui/_next/static/chunks/08g7lvje.te.u.js → interf-ui/_next/static/chunks/0nv3am99vjzn4.js} +1 -1
- package/dist/{compiler-ui/_next/static/chunks/0n51hrfoufc7g.js → interf-ui/_next/static/chunks/0s77gt_o4jwtx.js} +1 -1
- package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +116 -0
- package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +31 -0
- package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +1 -0
- package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +1 -0
- package/dist/{compiler-ui/_next/static/chunks/08m7vf5asqlsm.js → interf-ui/_next/static/chunks/14dznb2qpt-ho.js} +5 -5
- package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +5 -0
- package/dist/{compiler-ui/_next/static/chunks/turbopack-10e~t1yzi4svj.js → interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js} +1 -1
- package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +1 -0
- package/dist/{compiler-ui → interf-ui}/_not-found/__next._full.txt +9 -9
- package/dist/interf-ui/_not-found/__next._head.txt +5 -0
- package/dist/{compiler-ui → interf-ui}/_not-found/__next._index.txt +4 -4
- package/dist/{compiler-ui → interf-ui}/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/dist/interf-ui/_not-found/__next._not-found.txt +5 -0
- package/dist/{compiler-ui → interf-ui}/_not-found/__next._tree.txt +2 -2
- package/dist/interf-ui/_not-found.html +1 -0
- package/dist/{compiler-ui → interf-ui}/_not-found.txt +9 -9
- package/dist/interf-ui/index.html +1 -0
- package/dist/{compiler-ui → interf-ui}/index.txt +12 -12
- package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +36 -0
- package/dist/packages/{methods/authoring/method-authoring.js → build-plans/authoring/build-plan-authoring.js} +57 -88
- package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +18 -0
- package/dist/packages/{methods/authoring/method-edit-session.js → build-plans/authoring/build-plan-edit-session.js} +34 -34
- package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +23 -0
- package/dist/packages/build-plans/authoring/build-plan-improvement.js +216 -0
- package/dist/packages/build-plans/authoring/index.d.ts +4 -0
- package/dist/packages/build-plans/authoring/index.js +4 -0
- package/dist/packages/{methods/authoring/lib/method-edit-utils.d.ts → build-plans/authoring/lib/build-plan-edit-utils.d.ts} +3 -3
- package/dist/packages/build-plans/build-plan-resolution.d.ts +6 -0
- package/dist/packages/build-plans/build-plan-resolution.js +7 -0
- package/dist/packages/build-plans/index.d.ts +2 -0
- package/dist/packages/build-plans/index.js +2 -0
- package/dist/packages/build-plans/package/build-plan-definitions.d.ts +61 -0
- package/dist/packages/build-plans/package/build-plan-definitions.js +214 -0
- package/dist/packages/{methods/package/method-helpers.d.ts → build-plans/package/build-plan-helpers.d.ts} +7 -7
- package/dist/packages/{methods/package/method-helpers.js → build-plans/package/build-plan-helpers.js} +20 -20
- package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +10 -0
- package/dist/packages/build-plans/package/build-plan-review-paths.js +31 -0
- package/dist/packages/{methods/package/method-stage-runner.d.ts → build-plans/package/build-plan-stage-runner.d.ts} +12 -12
- package/dist/packages/{methods/package/method-stage-runner.js → build-plans/package/build-plan-stage-runner.js} +10 -10
- package/dist/packages/build-plans/package/builtin-build-plan.d.ts +37 -0
- package/dist/packages/build-plans/package/builtin-build-plan.js +91 -0
- package/dist/packages/{methods → build-plans}/package/context-interface.d.ts +11 -11
- package/dist/packages/{methods → build-plans}/package/context-interface.js +23 -23
- package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +31 -0
- package/dist/packages/build-plans/package/interf-build-plan-package.js +466 -0
- package/dist/packages/{methods → build-plans}/package/lib/package-root.js +1 -1
- package/dist/packages/build-plans/package/local-build-plans.d.ts +74 -0
- package/dist/packages/build-plans/package/local-build-plans.js +472 -0
- package/dist/packages/build-plans/package/user-build-plans.d.ts +17 -0
- package/dist/packages/build-plans/package/user-build-plans.js +77 -0
- package/dist/packages/contracts/index.d.ts +1 -1
- package/dist/packages/contracts/lib/preparation-paths.d.ts +37 -37
- package/dist/packages/contracts/lib/preparation-paths.js +43 -43
- package/dist/packages/contracts/lib/schema.d.ts +38 -41
- package/dist/packages/contracts/lib/schema.js +44 -35
- package/dist/packages/engine/action-definitions.d.ts +228 -67
- package/dist/packages/engine/action-definitions.js +277 -273
- package/dist/packages/engine/action-planner.d.ts +2 -2
- package/dist/packages/engine/action-planner.js +8 -15
- package/dist/packages/engine/action-values.d.ts +1 -1
- package/dist/packages/engine/action-values.js +1 -1
- package/dist/packages/engine/agents/index.d.ts +2 -2
- package/dist/packages/engine/agents/index.js +1 -1
- package/dist/packages/engine/agents/lib/args.d.ts +2 -2
- package/dist/packages/engine/agents/lib/args.js +1 -1
- package/dist/packages/engine/agents/lib/constants.js +1 -1
- package/dist/packages/engine/agents/lib/execution-profile.d.ts +5 -5
- package/dist/packages/engine/agents/lib/execution-profile.js +3 -3
- package/dist/packages/engine/agents/lib/executors.d.ts +11 -11
- package/dist/packages/engine/agents/lib/render.js +4 -4
- package/dist/packages/engine/agents/lib/shells.d.ts +33 -31
- package/dist/packages/engine/agents/lib/shells.js +254 -250
- package/dist/packages/engine/agents/lib/types.d.ts +2 -2
- package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +3 -0
- package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.js +19 -0
- package/dist/packages/engine/agents/role-executors.d.ts +7 -7
- package/dist/packages/engine/agents/role-executors.js +2 -2
- package/dist/packages/engine/agents/role-router.d.ts +2 -2
- package/dist/packages/engine/agents/role-router.js +1 -1
- package/dist/packages/engine/build/artifact-counts.d.ts +1 -0
- package/dist/packages/engine/{compile → build}/artifact-counts.js +7 -7
- package/dist/packages/engine/{compile → build}/artifact-status.d.ts +8 -8
- package/dist/packages/engine/{compile → build}/artifact-status.js +19 -19
- package/dist/packages/engine/{compile → build}/billing-events.d.ts +4 -4
- package/dist/packages/engine/{compile → build}/billing-events.js +4 -4
- package/dist/packages/engine/build/build-execution.d.ts +4 -0
- package/dist/packages/engine/build/build-execution.js +4 -0
- package/dist/packages/engine/build/build-pipeline.d.ts +56 -0
- package/dist/packages/engine/{compile/compiled-pipeline.js → build/build-pipeline.js} +55 -55
- package/dist/packages/engine/build/build-plan-primitives.d.ts +2 -0
- package/dist/packages/engine/{compile/method-primitives.js → build/build-plan-primitives.js} +1 -1
- package/dist/packages/engine/build/build-plan-runs.d.ts +14 -0
- package/dist/packages/engine/build/build-plan-runs.js +31 -0
- package/dist/packages/engine/build/build-stage-plan.d.ts +16 -0
- package/dist/packages/engine/build/build-stage-plan.js +100 -0
- package/dist/packages/engine/build/build-stage-runner.d.ts +15 -0
- package/dist/packages/engine/{compile/compiled-stage-runner.js → build/build-stage-runner.js} +21 -21
- package/dist/packages/engine/build/build-target.d.ts +11 -0
- package/dist/packages/engine/build/build-target.js +16 -0
- package/dist/packages/engine/{compile → build}/check-evaluator.d.ts +4 -4
- package/dist/packages/engine/{compile → build}/check-evaluator.js +1 -1
- package/dist/packages/engine/{compile → build}/discovery.d.ts +2 -2
- package/dist/packages/engine/{compile → build}/discovery.js +4 -4
- package/dist/packages/engine/{compile → build}/index.d.ts +6 -6
- package/dist/packages/engine/{compile → build}/index.js +5 -5
- package/dist/packages/engine/{compile → build}/lib/schema.d.ts +79 -79
- package/dist/packages/engine/{compile → build}/lib/schema.js +71 -71
- package/dist/packages/engine/build/reset.d.ts +2 -0
- package/dist/packages/engine/build/reset.js +74 -0
- package/dist/packages/engine/{compile → build}/runtime-contracts.js +8 -8
- package/dist/packages/engine/build/runtime-inventory.d.ts +7 -0
- package/dist/packages/engine/{compile → build}/runtime-inventory.js +8 -8
- package/dist/packages/engine/{compile → build}/runtime-paths.js +6 -6
- package/dist/packages/engine/{compile → build}/runtime-prompt.js +11 -11
- package/dist/packages/engine/build/runtime-reconcile.d.ts +2 -0
- package/dist/packages/engine/{compile → build}/runtime-reconcile.js +18 -18
- package/dist/packages/engine/{compile → build}/runtime-runs.js +27 -27
- package/dist/packages/engine/{compile → build}/runtime-types.d.ts +10 -10
- package/dist/packages/engine/build/source-files.d.ts +46 -0
- package/dist/packages/engine/{compile → build}/source-files.js +32 -32
- package/dist/packages/engine/build/state-artifacts.d.ts +9 -0
- package/dist/packages/engine/build/state-artifacts.js +14 -0
- package/dist/packages/engine/build/state-health.d.ts +4 -0
- package/dist/packages/engine/{compile → build}/state-health.js +40 -40
- package/dist/packages/engine/build/state-io.d.ts +11 -0
- package/dist/packages/engine/{compile → build}/state-io.js +22 -22
- package/dist/packages/engine/build/state-paths.js +16 -0
- package/dist/packages/engine/build/state-view.d.ts +5 -0
- package/dist/packages/engine/{compile → build}/state-view.js +29 -29
- package/dist/packages/engine/build/state.d.ts +7 -0
- package/dist/packages/engine/build/state.js +12 -0
- package/dist/packages/engine/build/validate-verifiable-context.d.ts +27 -0
- package/dist/packages/engine/{compile/validate-compiled.js → build/validate-verifiable-context.js} +73 -73
- package/dist/packages/engine/{compile → build}/validate.d.ts +4 -4
- package/dist/packages/engine/{compile → build}/validate.js +27 -27
- package/dist/packages/engine/build/verifiable-context-paths.d.ts +47 -0
- package/dist/packages/engine/build/verifiable-context-paths.js +121 -0
- package/dist/packages/engine/build/verifiable-context-schema.d.ts +21 -0
- package/dist/packages/engine/build/verifiable-context-schema.js +126 -0
- package/dist/packages/engine/client.d.ts +16 -16
- package/dist/packages/engine/client.js +21 -21
- package/dist/packages/engine/cloud-seams.d.ts +3 -3
- package/dist/packages/engine/connection-config.js +1 -1
- package/dist/packages/engine/execution/index.d.ts +2 -2
- package/dist/packages/engine/execution/index.js +1 -1
- package/dist/packages/engine/execution/lib/schema.d.ts +100 -95
- package/dist/packages/engine/execution/lib/schema.js +31 -31
- package/dist/packages/engine/index.d.ts +7 -7
- package/dist/packages/engine/index.js +3 -3
- package/dist/packages/engine/instance-paths.d.ts +45 -39
- package/dist/packages/engine/instance-paths.js +54 -48
- package/dist/packages/engine/lib/schema.d.ts +1568 -484
- package/dist/packages/engine/lib/schema.js +172 -161
- package/dist/packages/engine/native-run-handlers.d.ts +12 -12
- package/dist/packages/engine/native-run-handlers.js +138 -136
- package/dist/packages/engine/preparation-store.d.ts +31 -36
- package/dist/packages/engine/preparation-store.js +42 -31
- package/dist/packages/engine/readiness-check-draft.d.ts +2 -2
- package/dist/packages/engine/readiness-check-draft.js +1 -1
- package/dist/packages/engine/requested-artifacts.d.ts +5 -0
- package/dist/packages/engine/requested-artifacts.js +36 -0
- package/dist/packages/engine/routes.d.ts +18 -17
- package/dist/packages/engine/routes.js +20 -19
- package/dist/packages/engine/run-observability.d.ts +5 -3
- package/dist/packages/engine/run-observability.js +103 -90
- package/dist/packages/engine/runtime-caches.d.ts +16 -16
- package/dist/packages/engine/runtime-caches.js +26 -26
- package/dist/packages/engine/runtime-event-applier.d.ts +2 -2
- package/dist/packages/engine/runtime-event-applier.js +1 -1
- package/dist/packages/engine/runtime-persistence.d.ts +9 -9
- package/dist/packages/engine/runtime-persistence.js +16 -16
- package/dist/packages/engine/runtime-proposal-helpers.d.ts +15 -15
- package/dist/packages/engine/runtime-proposal-helpers.js +81 -85
- package/dist/packages/engine/runtime-resource-builders.d.ts +16 -11
- package/dist/packages/engine/runtime-resource-builders.js +32 -21
- package/dist/packages/engine/runtime.d.ts +53 -60
- package/dist/packages/engine/runtime.js +555 -453
- package/dist/packages/engine/server.d.ts +2 -2
- package/dist/packages/engine/server.js +226 -143
- package/dist/packages/engine/service-registry.d.ts +5 -17
- package/dist/packages/engine/service-registry.js +5 -20
- package/dist/packages/engine/verify/lib/schema.d.ts +19 -19
- package/dist/packages/engine/verify/lib/schema.js +36 -8
- package/dist/packages/engine/verify/readiness-check-run.d.ts +15 -16
- package/dist/packages/engine/verify/readiness-check-run.js +46 -46
- package/dist/packages/engine/verify/verify-execution.d.ts +3 -3
- package/dist/packages/engine/verify/verify-execution.js +10 -10
- package/dist/packages/engine/verify/verify-paths.d.ts +4 -4
- package/dist/packages/engine/verify/verify-paths.js +17 -17
- package/dist/packages/engine/verify/verify-sandbox.d.ts +1 -1
- package/dist/packages/engine/verify/verify-sandbox.js +26 -26
- package/dist/packages/engine/verify/verify-targets.d.ts +2 -2
- package/dist/packages/engine/verify/verify-targets.js +17 -17
- package/dist/packages/engine/verify/verify-types.d.ts +2 -2
- package/dist/packages/engine/verify/verify.d.ts +1 -1
- package/dist/packages/engine/verify/verify.js +1 -1
- package/dist/packages/engine/wire-schemas.d.ts +42 -40
- package/dist/packages/engine/wire-schemas.js +13 -13
- package/dist/packages/project/index.d.ts +1 -1
- package/dist/packages/project/interf-bootstrap.d.ts +1 -1
- package/dist/packages/project/interf-bootstrap.js +1 -1
- package/dist/packages/project/interf-detect.d.ts +11 -11
- package/dist/packages/project/interf-detect.js +36 -36
- package/dist/packages/project/interf-scaffold.d.ts +3 -3
- package/dist/packages/project/interf-scaffold.js +72 -72
- package/dist/packages/project/interf.d.ts +4 -4
- package/dist/packages/project/interf.js +3 -3
- package/dist/packages/project/lib/schema.d.ts +205 -12
- package/dist/packages/project/lib/schema.js +59 -14
- package/dist/packages/project/preparation-entries.d.ts +3 -3
- package/dist/packages/project/preparation-entries.js +19 -19
- package/dist/packages/project/source-config.d.ts +10 -10
- package/dist/packages/project/source-config.js +62 -58
- package/dist/packages/project/source-folders.js +1 -1
- package/package.json +14 -17
- package/public-repo/CONTRIBUTING.md +47 -0
- package/public-repo/README.md +327 -0
- package/public-repo/SECURITY.md +67 -0
- package/public-repo/build-plans/interf-default/README.md +33 -0
- package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +27 -0
- package/{builtin-methods/interf-default/compile → public-repo/build-plans/interf-default/build}/stages/structure/SKILL.md +2 -2
- package/{builtin-methods/interf-default/compile → public-repo/build-plans/interf-default/build}/stages/summarize/SKILL.md +1 -1
- package/{builtin-methods/interf-default/method.json → public-repo/build-plans/interf-default/build-plan.json} +16 -16
- package/{builtin-methods/interf-default/method.schema.json → public-repo/build-plans/interf-default/build-plan.schema.json} +4 -4
- package/public-repo/build-plans/interf-default/improve/SKILL.md +18 -0
- package/public-repo/build-plans/interf-default/use/query/SKILL.md +23 -0
- package/public-repo/plugins/README.md +9 -0
- package/public-repo/plugins/interf/.claude-plugin/plugin.json +21 -0
- package/public-repo/plugins/interf/.mcp.json +12 -0
- package/public-repo/plugins/interf/README.md +32 -0
- package/public-repo/plugins/interf/skills/interf/SKILL.md +376 -0
- package/public-repo/skills/interf/SKILL.md +376 -0
- package/README.md +0 -311
- package/agent-skills/interf-actions/SKILL.md +0 -185
- package/agent-skills/interf-actions/references/cli.md +0 -243
- package/builtin-methods/interf-default/README.md +0 -29
- package/builtin-methods/interf-default/compile/stages/shape/SKILL.md +0 -31
- package/builtin-methods/interf-default/improve/SKILL.md +0 -18
- package/builtin-methods/interf-default/use/query/SKILL.md +0 -28
- package/dist/cli/commands/method.d.ts +0 -2
- package/dist/cli/commands/method.js +0 -113
- package/dist/cli/commands/verify.d.ts +0 -10
- package/dist/compiler-ui/404.html +0 -1
- package/dist/compiler-ui/__next.__PAGE__.txt +0 -10
- package/dist/compiler-ui/__next._head.txt +0 -5
- package/dist/compiler-ui/_next/static/chunks/06yhdspx~ca5-.js +0 -5
- package/dist/compiler-ui/_next/static/chunks/06z~l3kwb891e.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0_c_tvh-cukjz.css +0 -3
- package/dist/compiler-ui/_next/static/chunks/0b-ywny_j0g~0.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0b52v41o1gixx.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0f_geuwdesg_c.js +0 -114
- package/dist/compiler-ui/_next/static/chunks/0gpzgsv0w.q~m.js +0 -31
- package/dist/compiler-ui/_next/static/chunks/0ilwfezfvu6~-.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/0xxmf45eskdt~.css +0 -1
- package/dist/compiler-ui/_next/static/chunks/14wtz~vq25~qq.js +0 -1
- package/dist/compiler-ui/_next/static/chunks/turbopack-0.uq1k8c0j4s..js +0 -1
- package/dist/compiler-ui/_not-found/__next._head.txt +0 -5
- package/dist/compiler-ui/_not-found/__next._not-found.txt +0 -5
- package/dist/compiler-ui/_not-found.html +0 -1
- package/dist/compiler-ui/index.html +0 -1
- package/dist/packages/engine/agents/lib/compiled-bootstrap.d.ts +0 -3
- package/dist/packages/engine/agents/lib/compiled-bootstrap.js +0 -19
- package/dist/packages/engine/compile/artifact-counts.d.ts +0 -1
- package/dist/packages/engine/compile/compiled-compile.d.ts +0 -4
- package/dist/packages/engine/compile/compiled-compile.js +0 -4
- package/dist/packages/engine/compile/compiled-paths.d.ts +0 -47
- package/dist/packages/engine/compile/compiled-paths.js +0 -121
- package/dist/packages/engine/compile/compiled-pipeline.d.ts +0 -56
- package/dist/packages/engine/compile/compiled-schema.d.ts +0 -21
- package/dist/packages/engine/compile/compiled-schema.js +0 -126
- package/dist/packages/engine/compile/compiled-stage-plan.d.ts +0 -16
- package/dist/packages/engine/compile/compiled-stage-plan.js +0 -100
- package/dist/packages/engine/compile/compiled-stage-runner.d.ts +0 -15
- package/dist/packages/engine/compile/compiled-target.d.ts +0 -11
- package/dist/packages/engine/compile/compiled-target.js +0 -16
- package/dist/packages/engine/compile/method-primitives.d.ts +0 -2
- package/dist/packages/engine/compile/method-runs.d.ts +0 -14
- package/dist/packages/engine/compile/method-runs.js +0 -31
- package/dist/packages/engine/compile/reset.d.ts +0 -2
- package/dist/packages/engine/compile/reset.js +0 -74
- package/dist/packages/engine/compile/runtime-inventory.d.ts +0 -7
- package/dist/packages/engine/compile/runtime-reconcile.d.ts +0 -2
- package/dist/packages/engine/compile/source-files.d.ts +0 -46
- package/dist/packages/engine/compile/state-artifacts.d.ts +0 -9
- package/dist/packages/engine/compile/state-artifacts.js +0 -14
- package/dist/packages/engine/compile/state-health.d.ts +0 -4
- package/dist/packages/engine/compile/state-io.d.ts +0 -11
- package/dist/packages/engine/compile/state-paths.js +0 -16
- package/dist/packages/engine/compile/state-view.d.ts +0 -5
- package/dist/packages/engine/compile/state.d.ts +0 -7
- package/dist/packages/engine/compile/state.js +0 -12
- package/dist/packages/engine/compile/validate-compiled.d.ts +0 -27
- package/dist/packages/methods/authoring/index.d.ts +0 -4
- package/dist/packages/methods/authoring/index.js +0 -4
- package/dist/packages/methods/authoring/method-authoring.d.ts +0 -34
- package/dist/packages/methods/authoring/method-edit-session.d.ts +0 -18
- package/dist/packages/methods/authoring/method-improvement.d.ts +0 -23
- package/dist/packages/methods/authoring/method-improvement.js +0 -217
- package/dist/packages/methods/index.d.ts +0 -2
- package/dist/packages/methods/index.js +0 -2
- package/dist/packages/methods/method-resolution.d.ts +0 -6
- package/dist/packages/methods/method-resolution.js +0 -7
- package/dist/packages/methods/package/builtin-compiled-method.d.ts +0 -37
- package/dist/packages/methods/package/builtin-compiled-method.js +0 -91
- package/dist/packages/methods/package/interf-method-package.d.ts +0 -31
- package/dist/packages/methods/package/interf-method-package.js +0 -466
- package/dist/packages/methods/package/local-methods.d.ts +0 -73
- package/dist/packages/methods/package/local-methods.js +0 -457
- package/dist/packages/methods/package/method-definitions.d.ts +0 -61
- package/dist/packages/methods/package/method-definitions.js +0 -214
- package/dist/packages/methods/package/method-review-paths.d.ts +0 -10
- package/dist/packages/methods/package/method-review-paths.js +0 -31
- package/dist/packages/methods/package/user-methods.d.ts +0 -17
- package/dist/packages/methods/package/user-methods.js +0 -77
- /package/dist/{compiler-ui/_next/static/6qyE1u9m_oBUkvAhhoCmO → interf-ui/_next/static/_qJKnA0dammQ306MG_zMq}/_buildManifest.js +0 -0
- /package/dist/{compiler-ui/_next/static/6qyE1u9m_oBUkvAhhoCmO → interf-ui/_next/static/_qJKnA0dammQ306MG_zMq}/_clientMiddlewareManifest.js +0 -0
- /package/dist/{compiler-ui/_next/static/6qyE1u9m_oBUkvAhhoCmO → interf-ui/_next/static/_qJKnA0dammQ306MG_zMq}/_ssgManifest.js +0 -0
- /package/dist/{compiler-ui → interf-ui}/_next/static/chunks/03~yq9q893hmn.js +0 -0
- /package/dist/{compiler-ui → interf-ui}/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -0
- /package/dist/{compiler-ui → interf-ui}/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -0
- /package/dist/{compiler-ui → interf-ui}/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
- /package/dist/{compiler-ui → interf-ui}/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
- /package/dist/{compiler-ui → interf-ui}/_next/static/media/worker.102zas1s52_pf.js +0 -0
- /package/dist/packages/{methods/authoring/lib/method-edit-utils.js → build-plans/authoring/lib/build-plan-edit-utils.js} +0 -0
- /package/dist/packages/{methods → build-plans}/package/lib/package-root.d.ts +0 -0
- /package/dist/packages/engine/{compile → build}/runtime-contracts.d.ts +0 -0
- /package/dist/packages/engine/{compile → build}/runtime-paths.d.ts +0 -0
- /package/dist/packages/engine/{compile → build}/runtime-prompt.d.ts +0 -0
- /package/dist/packages/engine/{compile → build}/runtime-runs.d.ts +0 -0
- /package/dist/packages/engine/{compile → build}/runtime-types.js +0 -0
- /package/dist/packages/engine/{compile → build}/runtime.d.ts +0 -0
- /package/dist/packages/engine/{compile → build}/runtime.js +0 -0
- /package/dist/packages/engine/{compile → build}/state-paths.d.ts +0 -0
- /package/dist/packages/engine/{compile → build}/validate-helpers.d.ts +0 -0
- /package/dist/packages/engine/{compile → build}/validate-helpers.js +0 -0
- /package/{LICENSE.md → public-repo/LICENSE.md} +0 -0
- /package/{TRADEMARKS.md → public-repo/TRADEMARKS.md} +0 -0
package/dist/cli/commands/mcp.js
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
227
|
+
+ "with source binding, Build Plan id, and current readiness.",
|
|
73
228
|
inputSchema: {},
|
|
74
|
-
}, async () => callAndReturn(
|
|
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
|
|
78
|
-
+ "
|
|
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("
|
|
82
|
-
|
|
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(
|
|
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.
|
|
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(
|
|
101
|
-
server.registerTool("
|
|
102
|
-
title: "
|
|
103
|
-
description: "Update the
|
|
104
|
-
+ "
|
|
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
|
-
|
|
266
|
+
build_plan_id: z.string().min(1).describe("Build Plan id to use."),
|
|
108
267
|
},
|
|
109
|
-
}, async (args) => callAndReturn(
|
|
268
|
+
}, async (args) => callAndReturn(connectionArgs, preparationResourcePath(args.id), {
|
|
110
269
|
method: "PATCH",
|
|
111
|
-
body: JSON.stringify({
|
|
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.
|
|
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(
|
|
278
|
+
}, async (args) => callAndReturn(connectionArgs, preparationResourcePath(args.id), {
|
|
120
279
|
method: "DELETE",
|
|
121
280
|
}));
|
|
122
|
-
// ──
|
|
123
|
-
server.registerTool("
|
|
124
|
-
title: "Start a
|
|
125
|
-
description: "
|
|
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(
|
|
132
|
-
server.registerTool("
|
|
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
|
|
135
|
-
+ "context.
|
|
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(
|
|
298
|
+
}, async (args) => callAndReturn(connectionArgs, preparationSubresourcePath(args.id, "verifyRuns"), {
|
|
140
299
|
method: "POST",
|
|
141
300
|
body: JSON.stringify({}),
|
|
142
301
|
}));
|
|
143
|
-
// ──
|
|
144
|
-
server.registerTool("
|
|
145
|
-
title: "List
|
|
146
|
-
description: "List every
|
|
147
|
-
+ "
|
|
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(
|
|
150
|
-
server.registerTool("
|
|
151
|
-
title: "
|
|
152
|
-
description: "Run the
|
|
153
|
-
+ "
|
|
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(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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 (
|
|
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(
|
|
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(
|
|
406
|
+
}, async () => callAndReturn(connectionArgs, LOCAL_SERVICE_ROUTES.instance));
|
|
205
407
|
}
|
|
206
408
|
async function startStdioServer(args) {
|
|
207
|
-
const
|
|
208
|
-
|
|
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> --
|
|
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
|
-
|
|
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.
|
|
65
|
-
console.log(chalk.dim(` output: ${prep.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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(`
|
|
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
|
|
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
|
|
130
|
-
.option("
|
|
131
|
-
.option("about", { type: "string", describe: "One-line description of the agent work" })
|
|
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.
|
|
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.
|
|
150
|
-
console.log(chalk.dim(` no
|
|
151
|
-
console.log(chalk.dim(` interf
|
|
152
|
-
console.log(chalk.dim(` interf
|
|
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
|
-
|
|
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" })
|