@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
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `interf build-plan` — manage Build Plans on the connected instance.
|
|
3
|
+
*
|
|
4
|
+
* interf build-plan list # list Build Plans
|
|
5
|
+
* interf build-plan show <build-plan-id> # show a Build Plan summary
|
|
6
|
+
* interf build-plan select <prep-id> <id> # select a Build Plan for a Preparation
|
|
7
|
+
* interf build-plan save <path-or-id> # save/promote a reusable Build Plan
|
|
8
|
+
* interf build-plan draft <prep-id> # start a Build Plan draft run
|
|
9
|
+
* interf build-plan improve <prep-id> # start a Build Plan improvement run
|
|
10
|
+
*/
|
|
11
|
+
import chalk from "chalk";
|
|
12
|
+
import { resolve } from "node:path";
|
|
13
|
+
import { CONNECT_OR_ERROR_HINT, readActiveConnection } from "../../packages/engine/connection-config.js";
|
|
14
|
+
import { buildPlanResourcePath, preparationResourcePath, preparationSubresourcePath, } from "../../packages/engine/routes.js";
|
|
15
|
+
import { BuildPlanAuthoringArtifactRequirementSchema, } from "../../packages/engine/lib/schema.js";
|
|
16
|
+
import { artifactRequirementsFromRequestedArtifacts, formatRequestedArtifactsForPrompt, } from "../../packages/engine/requested-artifacts.js";
|
|
17
|
+
import { slugify } from "../../packages/contracts/utils/naming.js";
|
|
18
|
+
function resolveConnection(args) {
|
|
19
|
+
const conn = readActiveConnection({
|
|
20
|
+
urlOverride: args.url,
|
|
21
|
+
authTokenOverride: args.token,
|
|
22
|
+
});
|
|
23
|
+
if (!conn) {
|
|
24
|
+
console.error(CONNECT_OR_ERROR_HINT);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
return { url: conn.url.replace(/\/+$/, ""), token: conn.auth_token };
|
|
28
|
+
}
|
|
29
|
+
async function callJson(url, token, init = {}) {
|
|
30
|
+
const headers = new Headers(init.headers ?? {});
|
|
31
|
+
if (token)
|
|
32
|
+
headers.set("authorization", `Bearer ${token}`);
|
|
33
|
+
if (init.body && !headers.has("content-type"))
|
|
34
|
+
headers.set("content-type", "application/json");
|
|
35
|
+
const response = await fetch(url, { ...init, headers });
|
|
36
|
+
const raw = await response.text();
|
|
37
|
+
let body = null;
|
|
38
|
+
if (raw) {
|
|
39
|
+
try {
|
|
40
|
+
body = JSON.parse(raw);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
body = null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return { status: response.status, body, raw };
|
|
47
|
+
}
|
|
48
|
+
function asArray(value) {
|
|
49
|
+
return Array.isArray(value) ? value : [];
|
|
50
|
+
}
|
|
51
|
+
const BuildPlanAuthoringArtifactRequirementsCliSchema = BuildPlanAuthoringArtifactRequirementSchema.array();
|
|
52
|
+
function parseJsonOption(label, value, parse) {
|
|
53
|
+
if (!value)
|
|
54
|
+
return undefined;
|
|
55
|
+
let parsed;
|
|
56
|
+
try {
|
|
57
|
+
parsed = JSON.parse(value);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error(chalk.red(`Invalid JSON for ${label}.`));
|
|
61
|
+
console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
return parse(parsed);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error(chalk.red(`Invalid ${label}.`));
|
|
69
|
+
console.error(chalk.dim(error instanceof Error ? error.message : String(error)));
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function buildPreparationReviewUrl(url, prepId) {
|
|
74
|
+
return `${url}/?section=preparations&preparation=${encodeURIComponent(prepId)}&preparationTab=build-plan`;
|
|
75
|
+
}
|
|
76
|
+
function buildRunUrl(url, prepId, runId) {
|
|
77
|
+
if (!runId)
|
|
78
|
+
return null;
|
|
79
|
+
return `${url}/?section=preparations&preparation=${encodeURIComponent(prepId)}&preparationTab=runs&run=${encodeURIComponent(runId)}`;
|
|
80
|
+
}
|
|
81
|
+
function defaultBuildPlanIdForPreparation(prepId) {
|
|
82
|
+
return slugify(`${prepId}-build-plan`) || "build-plan";
|
|
83
|
+
}
|
|
84
|
+
function labelFromBuildPlanId(buildPlanId) {
|
|
85
|
+
const label = buildPlanId
|
|
86
|
+
.split("-")
|
|
87
|
+
.filter(Boolean)
|
|
88
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
89
|
+
.join(" ");
|
|
90
|
+
return label || "Build Plan";
|
|
91
|
+
}
|
|
92
|
+
function renderBuildPlanSummary(buildPlan) {
|
|
93
|
+
const id = buildPlan.build_plan_id ?? buildPlan.id ?? "(?)";
|
|
94
|
+
console.log();
|
|
95
|
+
console.log(` ${chalk.bold(buildPlan.label ?? id)}`);
|
|
96
|
+
console.log(chalk.dim(` id: ${id}`));
|
|
97
|
+
if (buildPlan.hint)
|
|
98
|
+
console.log(chalk.dim(` hint: ${buildPlan.hint}`));
|
|
99
|
+
if (buildPlan.purpose?.task_hint)
|
|
100
|
+
console.log(chalk.dim(` purpose: ${buildPlan.purpose.task_hint}`));
|
|
101
|
+
if (buildPlan.source_kind)
|
|
102
|
+
console.log(chalk.dim(` source: ${buildPlan.source_kind}`));
|
|
103
|
+
const artifacts = buildPlan.artifacts ?? [];
|
|
104
|
+
if (artifacts.length > 0) {
|
|
105
|
+
console.log();
|
|
106
|
+
console.log(chalk.bold(" Artifacts"));
|
|
107
|
+
for (const artifact of artifacts) {
|
|
108
|
+
const shape = artifact.shape?.path
|
|
109
|
+
? chalk.dim(` -> ${artifact.shape.path}`)
|
|
110
|
+
: "";
|
|
111
|
+
console.log(` ${chalk.bold(artifact.id)}${shape}`);
|
|
112
|
+
console.log(chalk.dim(` ${artifact.description}`));
|
|
113
|
+
const checks = artifact.checks ?? [];
|
|
114
|
+
for (const check of checks.slice(0, 3)) {
|
|
115
|
+
const required = check.required === false ? "soft" : "required";
|
|
116
|
+
console.log(chalk.dim(` - ${check.description ?? check.kind} (${required})`));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const stages = buildPlan.stages ?? [];
|
|
121
|
+
if (stages.length > 0) {
|
|
122
|
+
console.log();
|
|
123
|
+
console.log(chalk.bold(" Stages"));
|
|
124
|
+
for (const stage of stages) {
|
|
125
|
+
const role = stage.role ? chalk.dim(` [${stage.role}]`) : "";
|
|
126
|
+
console.log(` ${chalk.bold(stage.label)}${role}`);
|
|
127
|
+
if (stage.description)
|
|
128
|
+
console.log(chalk.dim(` ${stage.description}`));
|
|
129
|
+
const reads = stage.reads?.length ? stage.reads.join(", ") : "source";
|
|
130
|
+
const writes = stage.writes?.length ? stage.writes.join(", ") : "(none declared)";
|
|
131
|
+
console.log(chalk.dim(` reads: ${reads}`));
|
|
132
|
+
console.log(chalk.dim(` writes: ${writes}`));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (buildPlan.active_for_preparations?.length) {
|
|
136
|
+
console.log();
|
|
137
|
+
console.log(chalk.dim(` used by: ${buildPlan.active_for_preparations.join(", ")}`));
|
|
138
|
+
}
|
|
139
|
+
console.log();
|
|
140
|
+
console.log(chalk.dim(" Run with --json for the raw Build Plan record."));
|
|
141
|
+
console.log();
|
|
142
|
+
}
|
|
143
|
+
function preparationChecks(preparation) {
|
|
144
|
+
return asArray(preparation.checks).length
|
|
145
|
+
? asArray(preparation.checks)
|
|
146
|
+
: asArray(preparation.preparation?.checks);
|
|
147
|
+
}
|
|
148
|
+
function preparationRequestedArtifacts(preparation) {
|
|
149
|
+
return preparation.requested_artifacts?.length
|
|
150
|
+
? preparation.requested_artifacts
|
|
151
|
+
: preparation.preparation?.requested_artifacts ?? [];
|
|
152
|
+
}
|
|
153
|
+
function preparationSourceProfile(preparation) {
|
|
154
|
+
return preparation.source_profile ?? preparation.preparation?.source_profile ?? null;
|
|
155
|
+
}
|
|
156
|
+
function selectedBuildPlanId(preparation) {
|
|
157
|
+
return preparation.build_plan_id ?? preparation.preparation?.build_plan ?? null;
|
|
158
|
+
}
|
|
159
|
+
function sourceFolderPathFromPreparation(preparation, sourceFiles) {
|
|
160
|
+
if (preparation.source?.kind === "local-folder" && preparation.source.locator)
|
|
161
|
+
return preparation.source.locator;
|
|
162
|
+
if (sourceFiles?.source_files?.[0]?.source_folder_path)
|
|
163
|
+
return sourceFiles.source_files[0].source_folder_path;
|
|
164
|
+
return preparation.source_path ?? null;
|
|
165
|
+
}
|
|
166
|
+
function buildTaskPrompt(args, preparation, prepId, mode) {
|
|
167
|
+
const about = (preparation.about ?? preparation.preparation?.about)?.trim();
|
|
168
|
+
const requestedArtifacts = formatRequestedArtifactsForPrompt(preparationRequestedArtifacts(preparation));
|
|
169
|
+
const sections = [
|
|
170
|
+
`${mode === "improve" ? "Improve" : "Draft"} a Build Plan for Preparation "${prepId}".`,
|
|
171
|
+
args.task?.trim() ? `Agent job:\n${args.task.trim()}` : null,
|
|
172
|
+
about ? `Preparation context:\n${about}` : null,
|
|
173
|
+
requestedArtifacts ? `Requested Artifacts saved on the Preparation:\n${requestedArtifacts}` : null,
|
|
174
|
+
args.artifacts?.trim() ? `Additional Artifact notes:\n${args.artifacts.trim()}` : null,
|
|
175
|
+
args.readyWhen?.trim() ? `Ready when:\n${args.readyWhen.trim()}` : null,
|
|
176
|
+
"Return a Build Plan definition that declares the verifiable Artifacts, the stages that build them, and the checks that prove the verifiable context is ready for agent work.",
|
|
177
|
+
].filter((section) => Boolean(section));
|
|
178
|
+
return sections.join("\n\n");
|
|
179
|
+
}
|
|
180
|
+
async function readPreparationContext(url, token, prepId) {
|
|
181
|
+
const fetched = await callJson(`${url}${preparationResourcePath(prepId)}`, token);
|
|
182
|
+
if (fetched.status !== 200 || !fetched.body) {
|
|
183
|
+
console.error(chalk.red(`Failed to read Preparation ${prepId} (HTTP ${fetched.status}).`));
|
|
184
|
+
if (fetched.raw)
|
|
185
|
+
console.error(fetched.raw);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
}
|
|
188
|
+
let sourceFiles = null;
|
|
189
|
+
const sourcePath = sourceFolderPathFromPreparation(fetched.body, sourceFiles);
|
|
190
|
+
if (!sourcePath) {
|
|
191
|
+
const listed = await callJson(`${url}${preparationSubresourcePath(prepId, "sourceFiles")}`, token);
|
|
192
|
+
if (listed.status === 200)
|
|
193
|
+
sourceFiles = listed.body;
|
|
194
|
+
}
|
|
195
|
+
const sourceFolderPath = sourceFolderPathFromPreparation(fetched.body, sourceFiles);
|
|
196
|
+
if (!sourceFolderPath) {
|
|
197
|
+
console.error(chalk.red(`Preparation ${prepId} has no readable local Source binding.`));
|
|
198
|
+
process.exit(1);
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
preparation: fetched.body,
|
|
202
|
+
sourceFolderPath,
|
|
203
|
+
checks: preparationChecks(fetched.body),
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
async function startBuildPlanRun(args, mode) {
|
|
207
|
+
const { url, token } = resolveConnection(args);
|
|
208
|
+
const { preparation, sourceFolderPath, checks } = await readPreparationContext(url, token, args.prepId);
|
|
209
|
+
const existingBuildPlan = selectedBuildPlanId(preparation);
|
|
210
|
+
const buildPlanId = args.buildPlan ?? (mode === "improve" ? existingBuildPlan : defaultBuildPlanIdForPreparation(args.prepId));
|
|
211
|
+
const requestedArtifacts = preparationRequestedArtifacts(preparation);
|
|
212
|
+
const explicitArtifactRequirements = parseJsonOption("--artifact-requirements-json", args.artifactRequirementsJson, (input) => BuildPlanAuthoringArtifactRequirementsCliSchema.parse(input));
|
|
213
|
+
const artifactRequirements = explicitArtifactRequirements
|
|
214
|
+
?? artifactRequirementsFromRequestedArtifacts(requestedArtifacts);
|
|
215
|
+
if (!buildPlanId) {
|
|
216
|
+
console.error(chalk.red(`Preparation ${args.prepId} has no selected Build Plan to improve.`));
|
|
217
|
+
console.error(chalk.dim(`Draft one first: interf build-plan draft ${args.prepId} --task "..."`));
|
|
218
|
+
process.exit(1);
|
|
219
|
+
}
|
|
220
|
+
const body = {
|
|
221
|
+
preparation: args.prepId,
|
|
222
|
+
source_folder_path: sourceFolderPath,
|
|
223
|
+
...(args.baseBuildPlan ? { base_build_plan_id: args.baseBuildPlan } : {}),
|
|
224
|
+
...(args.referenceBuildPlan ? { reference_build_plan_id: args.referenceBuildPlan } : {}),
|
|
225
|
+
...(mode === "improve" && !args.referenceBuildPlan && existingBuildPlan ? { reference_build_plan_id: existingBuildPlan } : {}),
|
|
226
|
+
build_plan_id: buildPlanId,
|
|
227
|
+
label: args.label ?? labelFromBuildPlanId(buildPlanId),
|
|
228
|
+
hint: args.hint ?? `Build Plan for Preparation ${args.prepId}.`,
|
|
229
|
+
task_prompt: buildTaskPrompt(args, preparation, args.prepId, mode),
|
|
230
|
+
checks,
|
|
231
|
+
requested_artifacts: requestedArtifacts,
|
|
232
|
+
source_profile: preparationSourceProfile(preparation),
|
|
233
|
+
artifact_requirements: artifactRequirements,
|
|
234
|
+
};
|
|
235
|
+
const endpoint = mode === "improve" ? "buildPlanImprovementRuns" : "buildPlanDraftRuns";
|
|
236
|
+
const { status, body: run, raw } = await callJson(`${url}${preparationSubresourcePath(args.prepId, endpoint)}`, token, { method: "POST", body: JSON.stringify(body) });
|
|
237
|
+
if (status !== 202 && status !== 201 && status !== 200) {
|
|
238
|
+
console.error(chalk.red(`Failed to start Build Plan ${mode} run (HTTP ${status}).`));
|
|
239
|
+
if (raw)
|
|
240
|
+
console.error(raw);
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
const runUrl = buildRunUrl(url, args.prepId, run?.run_id);
|
|
244
|
+
const reviewUrl = buildPreparationReviewUrl(url, args.prepId);
|
|
245
|
+
if (args.json) {
|
|
246
|
+
console.log(JSON.stringify({
|
|
247
|
+
run_id: run?.run_id ?? null,
|
|
248
|
+
status: run?.status ?? null,
|
|
249
|
+
preparation: args.prepId,
|
|
250
|
+
build_plan_id: buildPlanId,
|
|
251
|
+
run_url: runUrl,
|
|
252
|
+
review_url: reviewUrl,
|
|
253
|
+
}, null, 2));
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
console.log(chalk.green(`Build Plan ${mode} run ${chalk.bold(run?.run_id ?? "(?)")} started.`));
|
|
257
|
+
console.log(chalk.dim(` Build Plan: ${buildPlanId}`));
|
|
258
|
+
if (runUrl)
|
|
259
|
+
console.log(chalk.dim(` watch: ${runUrl}`));
|
|
260
|
+
console.log(chalk.dim(` review after it finishes: ${reviewUrl}`));
|
|
261
|
+
}
|
|
262
|
+
export const buildPlanCommand = {
|
|
263
|
+
command: "build-plan <subcommand>",
|
|
264
|
+
describe: "Manage Build Plans on the connected instance",
|
|
265
|
+
builder: (yargs) => yargs
|
|
266
|
+
.option("url", { type: "string", describe: "Override the active connection URL" })
|
|
267
|
+
.option("token", { type: "string", describe: "Override the active bearer token" })
|
|
268
|
+
.command("list", "List Build Plans on the instance", (y) => y, async (args) => {
|
|
269
|
+
const { url, token } = resolveConnection(args);
|
|
270
|
+
const { status, body, raw } = await callJson(`${url}/v1/build-plans`, token);
|
|
271
|
+
if (status !== 200) {
|
|
272
|
+
console.error(chalk.red(`Failed to list Build Plans (HTTP ${status}).`));
|
|
273
|
+
if (raw)
|
|
274
|
+
console.error(raw);
|
|
275
|
+
process.exit(1);
|
|
276
|
+
}
|
|
277
|
+
const buildPlans = body?.build_plans ?? [];
|
|
278
|
+
if (buildPlans.length === 0) {
|
|
279
|
+
console.log(chalk.dim(" No Build Plans on this instance."));
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
console.log();
|
|
283
|
+
for (const buildPlan of buildPlans) {
|
|
284
|
+
const id = buildPlan.build_plan_id ?? buildPlan.id ?? "(?)";
|
|
285
|
+
const label = buildPlan.label ? ` ${chalk.dim(buildPlan.label)}` : "";
|
|
286
|
+
const kind = buildPlan.source_kind ? chalk.dim(`[${buildPlan.source_kind}]`) : "";
|
|
287
|
+
console.log(` ${chalk.bold(id)} ${kind}${label}`);
|
|
288
|
+
if (buildPlan.active_for_preparations?.length) {
|
|
289
|
+
console.log(chalk.dim(` used by: ${buildPlan.active_for_preparations.join(", ")}`));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
console.log();
|
|
293
|
+
})
|
|
294
|
+
.command("save <source>", "Save a Build Plan definition from a local folder", (y) => y
|
|
295
|
+
.positional("source", { type: "string", demandOption: true, describe: "Path to the Build Plan definition folder" })
|
|
296
|
+
.option("as", { type: "string", describe: "Build Plan id to save as" })
|
|
297
|
+
.option("overwrite", { type: "boolean", default: false, describe: "Replace an existing Build Plan with the same id" }), async (args) => {
|
|
298
|
+
const { url, token } = resolveConnection(args);
|
|
299
|
+
const absolute = resolve(process.cwd(), args.source);
|
|
300
|
+
const { status, raw } = await callJson(`${url}/v1/build-plans`, token, { method: "POST", body: JSON.stringify({ source_path: absolute, id: args.as, overwrite: args.overwrite }) });
|
|
301
|
+
if (status !== 201 && status !== 200) {
|
|
302
|
+
console.error(chalk.red(`Failed to save Build Plan (HTTP ${status}).`));
|
|
303
|
+
if (raw)
|
|
304
|
+
console.error(raw);
|
|
305
|
+
process.exit(1);
|
|
306
|
+
}
|
|
307
|
+
console.log(chalk.green(`Saved Build Plan from ${absolute}.`));
|
|
308
|
+
})
|
|
309
|
+
.command("show <build-plan-id>", "Show a Build Plan", (y) => y
|
|
310
|
+
.positional("build-plan-id", { type: "string", demandOption: true, describe: "Build Plan id" })
|
|
311
|
+
.option("json", {
|
|
312
|
+
type: "boolean",
|
|
313
|
+
default: false,
|
|
314
|
+
describe: "Print the raw JSON record instead of the formatted summary",
|
|
315
|
+
}), async (args) => {
|
|
316
|
+
const { url, token } = resolveConnection(args);
|
|
317
|
+
const { status, body, raw } = await callJson(`${url}${buildPlanResourcePath(args.buildPlanId)}`, token);
|
|
318
|
+
if (status !== 200 || !body) {
|
|
319
|
+
console.error(chalk.red(`Failed to read Build Plan ${args.buildPlanId} (HTTP ${status}).`));
|
|
320
|
+
if (raw)
|
|
321
|
+
console.error(raw);
|
|
322
|
+
process.exit(1);
|
|
323
|
+
}
|
|
324
|
+
if (args.json) {
|
|
325
|
+
console.log(JSON.stringify(body, null, 2));
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
renderBuildPlanSummary(body);
|
|
329
|
+
})
|
|
330
|
+
.command("select <prep-id> <build-plan-id>", "Select a Build Plan for a Preparation", (y) => y
|
|
331
|
+
.positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id" })
|
|
332
|
+
.positional("build-plan-id", { type: "string", demandOption: true, describe: "Build Plan id" }), async (args) => {
|
|
333
|
+
const { url, token } = resolveConnection(args);
|
|
334
|
+
const { status, raw } = await callJson(`${url}${preparationResourcePath(args.prepId)}`, token, { method: "PATCH", body: JSON.stringify({ build_plan_id: args.buildPlanId }) });
|
|
335
|
+
if (status !== 200) {
|
|
336
|
+
console.error(chalk.red(`Failed to select Build Plan (HTTP ${status}).`));
|
|
337
|
+
if (raw)
|
|
338
|
+
console.error(raw);
|
|
339
|
+
process.exit(1);
|
|
340
|
+
}
|
|
341
|
+
console.log(chalk.green(`Selected Build Plan ${chalk.bold(args.buildPlanId)} for ${chalk.bold(args.prepId)}.`));
|
|
342
|
+
})
|
|
343
|
+
.command("draft <prep-id>", "Start a Build Plan draft run for a preparation", (y) => y
|
|
344
|
+
.positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id" })
|
|
345
|
+
.option("task", { type: "string", describe: "Agent job this Build Plan should support" })
|
|
346
|
+
.option("artifacts", { type: "string", describe: "Requested Artifacts and why the agent needs them" })
|
|
347
|
+
.option("artifact-requirements-json", { type: "string", describe: "JSON array of exact Artifact output requirements for the Build Plan" })
|
|
348
|
+
.option("ready-when", { type: "string", describe: "Proof or readiness expectations for the Build Plan" })
|
|
349
|
+
.option("build-plan", { type: "string", describe: "Build Plan id to write" })
|
|
350
|
+
.option("label", { type: "string", describe: "Human-readable Build Plan label" })
|
|
351
|
+
.option("hint", { type: "string", describe: "Short Build Plan hint for reviewers" })
|
|
352
|
+
.option("base-build-plan", { type: "string", describe: "Existing Build Plan id to use as a starting point" })
|
|
353
|
+
.option("reference-build-plan", { type: "string", describe: "Existing Build Plan id to reference while drafting" })
|
|
354
|
+
.option("json", { type: "boolean", default: false, describe: "Print machine-readable run metadata" }), async (args) => {
|
|
355
|
+
await startBuildPlanRun(args, "draft");
|
|
356
|
+
})
|
|
357
|
+
.command("improve <prep-id>", "Start a Build Plan improvement run for a preparation", (y) => y
|
|
358
|
+
.positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id" })
|
|
359
|
+
.option("task", { type: "string", describe: "Change request for the selected Build Plan" })
|
|
360
|
+
.option("artifacts", { type: "string", describe: "Requested Artifact changes and why they matter" })
|
|
361
|
+
.option("artifact-requirements-json", { type: "string", describe: "JSON array of exact Artifact output requirements for the Build Plan" })
|
|
362
|
+
.option("ready-when", { type: "string", describe: "Proof or readiness expectations to add or change" })
|
|
363
|
+
.option("build-plan", { type: "string", describe: "Build Plan id to update" })
|
|
364
|
+
.option("label", { type: "string", describe: "Human-readable Build Plan label" })
|
|
365
|
+
.option("hint", { type: "string", describe: "Short Build Plan hint for reviewers" })
|
|
366
|
+
.option("base-build-plan", { type: "string", describe: "Existing Build Plan id to use as a starting point" })
|
|
367
|
+
.option("reference-build-plan", { type: "string", describe: "Existing Build Plan id to reference while improving" })
|
|
368
|
+
.option("json", { type: "boolean", default: false, describe: "Print machine-readable run metadata" }), async (args) => {
|
|
369
|
+
await startBuildPlanRun(args, "improve");
|
|
370
|
+
})
|
|
371
|
+
.demandCommand(1)
|
|
372
|
+
.strict(),
|
|
373
|
+
handler: () => {
|
|
374
|
+
/* yargs subcommand handlers do the work */
|
|
375
|
+
},
|
|
376
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CommandModule } from "yargs";
|
|
2
|
-
interface
|
|
2
|
+
interface BuildArgs {
|
|
3
3
|
prepId: string;
|
|
4
4
|
watch?: boolean;
|
|
5
5
|
quiet?: boolean;
|
|
@@ -7,5 +7,5 @@ interface CompileArgs {
|
|
|
7
7
|
url?: string;
|
|
8
8
|
token?: string;
|
|
9
9
|
}
|
|
10
|
-
export declare const
|
|
10
|
+
export declare const buildCommand: CommandModule<unknown, BuildArgs>;
|
|
11
11
|
export {};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Build command stack.
|
|
3
3
|
*
|
|
4
|
-
* interf
|
|
5
|
-
* interf
|
|
6
|
-
* interf
|
|
4
|
+
* interf build bristol
|
|
5
|
+
* interf build bristol --quiet # only the locator on stdout (scripting)
|
|
6
|
+
* interf build bristol --watch # stream events
|
|
7
7
|
*
|
|
8
|
-
* Requires an active connection. Hits POST /v1/preparations/<id>/
|
|
8
|
+
* Requires an active connection. Hits POST /v1/preparations/<id>/build-runs.
|
|
9
9
|
*/
|
|
10
10
|
import chalk from "chalk";
|
|
11
11
|
import { CONNECT_OR_ERROR_HINT, readActiveConnection } from "../../packages/engine/connection-config.js";
|
|
@@ -39,23 +39,23 @@ async function callJson(url, token, init = {}) {
|
|
|
39
39
|
}
|
|
40
40
|
return { status: response.status, body, raw };
|
|
41
41
|
}
|
|
42
|
-
export const
|
|
43
|
-
command: "
|
|
44
|
-
describe: "
|
|
42
|
+
export const buildCommand = {
|
|
43
|
+
command: "build <prep-id>",
|
|
44
|
+
describe: "Run the selected Build Plan for a Preparation",
|
|
45
45
|
builder: (yargs) => yargs
|
|
46
46
|
.positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id" })
|
|
47
|
-
.option("watch", { type: "boolean", default: false, describe: "Stream run events" })
|
|
48
|
-
.option("quiet", { type: "boolean", default: false, describe: "Print only the
|
|
47
|
+
.option("watch", { type: "boolean", default: false, describe: "Stream build-run events" })
|
|
48
|
+
.option("quiet", { type: "boolean", default: false, describe: "Print only the context locator on success" })
|
|
49
49
|
.option("idempotency-key", { type: "string", describe: "Client-supplied dedupe key" })
|
|
50
50
|
.option("url", { type: "string", describe: "Override the active connection URL" })
|
|
51
51
|
.option("token", { type: "string", describe: "Override the active bearer token" }),
|
|
52
52
|
handler: async (args) => {
|
|
53
53
|
const { url, token } = resolveConnection(args);
|
|
54
|
-
// 0.15 hard-error: refuse to start a
|
|
55
|
-
// connected agents — the
|
|
54
|
+
// 0.15 hard-error: refuse to start a build if the engine has zero
|
|
55
|
+
// connected agents — the build pipeline can't run without one.
|
|
56
56
|
const instance = await callJson(`${url}/v1/instance`, token);
|
|
57
57
|
if (instance.body && instance.body.agent_count === 0) {
|
|
58
|
-
console.error(chalk.red(" Cannot
|
|
58
|
+
console.error(chalk.red(" Cannot build — no agents available."));
|
|
59
59
|
console.error(" Install Claude Code, Codex, Gemini, or another agent CLI, or");
|
|
60
60
|
console.error(" register a custom CLI: `interf agents register <name> --command <cmd>`.");
|
|
61
61
|
process.exit(1);
|
|
@@ -63,23 +63,23 @@ export const compileCommand = {
|
|
|
63
63
|
const headers = {};
|
|
64
64
|
if (args.idempotencyKey)
|
|
65
65
|
headers["x-interf-idempotency-key"] = args.idempotencyKey;
|
|
66
|
-
const { status, body, raw } = await callJson(`${url}/v1/preparations/${encodeURIComponent(args.prepId)}/
|
|
66
|
+
const { status, body, raw } = await callJson(`${url}/v1/preparations/${encodeURIComponent(args.prepId)}/build-runs`, token, { method: "POST", headers, body: JSON.stringify({}) });
|
|
67
67
|
if (status !== 201 && status !== 200 && status !== 202) {
|
|
68
|
-
console.error(chalk.red(`Failed to start
|
|
68
|
+
console.error(chalk.red(`Failed to start build run for ${args.prepId} (HTTP ${status}).`));
|
|
69
69
|
if (raw)
|
|
70
70
|
console.error(raw);
|
|
71
71
|
process.exit(1);
|
|
72
72
|
}
|
|
73
73
|
const run = body?.run;
|
|
74
74
|
const runId = run?.run_id ?? "(unknown run)";
|
|
75
|
-
const locator = run?.
|
|
75
|
+
const locator = run?.verifiable_context_path ?? "(no locator)";
|
|
76
76
|
if (args.quiet) {
|
|
77
77
|
console.log(locator);
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
80
|
console.log();
|
|
81
|
-
console.log(`
|
|
82
|
-
console.log(`
|
|
81
|
+
console.log(` Build run ${chalk.bold(runId)} ${chalk.dim(`(${run?.status ?? "started"})`)}`);
|
|
82
|
+
console.log(` Verifiable context: ${locator}`);
|
|
83
83
|
if (run?.status === "succeeded" || run?.finished_at) {
|
|
84
84
|
const prepResp = await callJson(`${url}/v1/preparations/${encodeURIComponent(args.prepId)}`, token);
|
|
85
85
|
const readiness = prepResp.body?.readiness?.status;
|
|
@@ -97,7 +97,7 @@ export const doctorCommand = {
|
|
|
97
97
|
id: "live",
|
|
98
98
|
label: "Live executor preflight",
|
|
99
99
|
status: "skipped",
|
|
100
|
-
message: "Skipped. Run `interf doctor --live` to exercise the real local agent before drafting readiness checks,
|
|
100
|
+
message: "Skipped. Run `interf doctor --live` to exercise the real local agent before drafting readiness checks, Build Plan authoring, a readiness check, or a Build run.",
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
const ok = checks.every((check) => check.status !== "fail");
|
|
@@ -121,7 +121,7 @@ export const doctorCommand = {
|
|
|
121
121
|
}
|
|
122
122
|
console.log();
|
|
123
123
|
if (!argv.live) {
|
|
124
|
-
console.log(chalk.dim(" Tip: run `interf doctor --live` before a first
|
|
124
|
+
console.log(chalk.dim(" Tip: run `interf doctor --live` before a first build on a new machine."));
|
|
125
125
|
console.log();
|
|
126
126
|
}
|
|
127
127
|
}
|
|
@@ -1,37 +1,3 @@
|
|
|
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
|
-
* The server reads `~/.interf/connection.json` (the same file every other
|
|
12
|
-
* client uses) and exits non-zero with the connect-or-error hint if no
|
|
13
|
-
* instance is reachable. Tools call straight through to the API; the
|
|
14
|
-
* server itself holds no state. The transport options are intentionally
|
|
15
|
-
* minimal — agents speaking MCP today are stdio-first.
|
|
16
|
-
*
|
|
17
|
-
* Tool list mirrors the API verbatim:
|
|
18
|
-
* prep_list GET /v1/preparations
|
|
19
|
-
* prep_create POST /v1/preparations
|
|
20
|
-
* prep_show GET /v1/preparations/{id}
|
|
21
|
-
* prep_set_method PATCH /v1/preparations/{id}
|
|
22
|
-
* prep_remove DELETE /v1/preparations/{id}
|
|
23
|
-
* prep_compile POST /v1/preparations/{id}/compile-runs
|
|
24
|
-
* prep_verify POST /v1/preparations/{id}/verify-runs
|
|
25
|
-
* method_list GET /v1/methods
|
|
26
|
-
* method_install POST /v1/methods (preparation-scoped via `prep_id`)
|
|
27
|
-
* method_draft POST /v1/preparations/{id}/method-authoring-runs
|
|
28
|
-
* method_improve POST /v1/preparations/{id}/method-improvement-runs
|
|
29
|
-
* runs_status GET /v1/runs/{run-id}
|
|
30
|
-
* runs_watch GET /v1/runs/{run-id}/events (snapshot, not SSE)
|
|
31
|
-
* runs_cancel POST /v1/runs/{run-id}/cancel
|
|
32
|
-
* runs_fetch GET /v1/runs/{run-id}/artifacts
|
|
33
|
-
* instance_status GET /v1/instance
|
|
34
|
-
*/
|
|
35
1
|
import type { CommandModule } from "yargs";
|
|
36
2
|
interface McpArgs {
|
|
37
3
|
transport?: "stdio" | "http";
|