@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,216 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { join, relative } from "node:path";
|
|
3
|
+
import { createBuildPlanImprovementShell, freezeBuildPlanImprovementShell, } from "../../engine/agents/lib/shells.js";
|
|
4
|
+
import { validateBuildPlanPackage } from "../package/local-build-plans.js";
|
|
5
|
+
import { CONTEXT_INTERFACE_FILE } from "../package/context-interface.js";
|
|
6
|
+
import { readJsonFileWithSchema } from "../../contracts/utils/parse.js";
|
|
7
|
+
import { resolveBuildPlanImprovementReviewPaths } from "../package/build-plan-review-paths.js";
|
|
8
|
+
import { targetTestRunsRootForVerifiableContext, targetTestSandboxesRootForVerifiableContext, buildPlanImprovementRunRoot, buildPlanPackagePathForVerifiableContext, } from "../../engine/build/verifiable-context-paths.js";
|
|
9
|
+
import { readInterfConfig } from "../../project/interf.js";
|
|
10
|
+
import { saveVerifiableContextInterfConfig } from "../../project/source-config.js";
|
|
11
|
+
import { BuildPlanImprovementRunLedgerSchema, } from "../../engine/build/lib/schema.js";
|
|
12
|
+
import { runBuildPlanEditSession } from "./build-plan-edit-session.js";
|
|
13
|
+
import { ensureStageRoles } from "./build-plan-authoring.js";
|
|
14
|
+
function toShellArtifactPath(absolutePath, sourceRoot, shellRoot) {
|
|
15
|
+
if (!absolutePath)
|
|
16
|
+
return null;
|
|
17
|
+
const normalizedSourceRoot = `${sourceRoot}/`;
|
|
18
|
+
if (absolutePath !== sourceRoot && !absolutePath.startsWith(normalizedSourceRoot)) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const relativePath = relative(sourceRoot, absolutePath);
|
|
22
|
+
return join(shellRoot, relativePath);
|
|
23
|
+
}
|
|
24
|
+
function mapLoopSummaryForShell(summary, verifiableContextPath) {
|
|
25
|
+
const shellTestRunsRoot = "artifacts/test-runs";
|
|
26
|
+
const shellTestSandboxesRoot = "artifacts/test-sandboxes";
|
|
27
|
+
return {
|
|
28
|
+
...summary,
|
|
29
|
+
test_run_path: toShellArtifactPath(summary.test_run_path, targetTestRunsRootForVerifiableContext(verifiableContextPath), shellTestRunsRoot) ?? summary.test_run_path ?? null,
|
|
30
|
+
test_sandbox_path: toShellArtifactPath(summary.test_sandbox_path, targetTestSandboxesRootForVerifiableContext(verifiableContextPath), shellTestSandboxesRoot) ?? summary.test_sandbox_path ?? null,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function buildLoopContext(options) {
|
|
34
|
+
const previousVariations = options.previousVariations.map((summary) => mapLoopSummaryForShell(summary, options.verifiableContextPath));
|
|
35
|
+
const latestFailure = previousVariations.at(-1) ?? null;
|
|
36
|
+
return {
|
|
37
|
+
kind: "interf-build-plan-improvement-loop",
|
|
38
|
+
version: 1,
|
|
39
|
+
generated_at: new Date().toISOString(),
|
|
40
|
+
target_name: readInterfConfig(options.verifiableContextPath)?.name ?? "verifiable-context",
|
|
41
|
+
build_plan_id: options.buildPlanId,
|
|
42
|
+
loop_index: options.loopIndex,
|
|
43
|
+
max_loops: options.maxLoops,
|
|
44
|
+
max_attempts: options.maxAttempts,
|
|
45
|
+
review_paths: resolveBuildPlanImprovementReviewPaths(options.verifiableContextPath),
|
|
46
|
+
readiness_checks: {
|
|
47
|
+
count: options.verifiableContextConfig.checks.length,
|
|
48
|
+
questions: options.verifiableContextConfig.checks.map((check, index) => ({
|
|
49
|
+
id: check.id ?? `check-${index + 1}`,
|
|
50
|
+
question: check.question,
|
|
51
|
+
})),
|
|
52
|
+
},
|
|
53
|
+
previous_variations: previousVariations,
|
|
54
|
+
latest_failure: latestFailure,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function buildBuildPlanImprovementPrompt() {
|
|
58
|
+
return [
|
|
59
|
+
"This is an automated Interf Build Plan improvement run, not an open-ended chat session.",
|
|
60
|
+
"The user already invoked this through `interf build` with self-improving loops enabled. Execute it now.",
|
|
61
|
+
"Read `runtime/loop-context.json` first.",
|
|
62
|
+
`Then read \`build-plan/README.md\`, \`build-plan/build-plan.json\`, \`build-plan/${CONTEXT_INTERFACE_FILE}\`, and \`build-plan/improve/SKILL.md\` if it exists.`,
|
|
63
|
+
"Review preserved evidence from earlier failures under `artifacts/` before you edit the Build Plan.",
|
|
64
|
+
"Treat `build-plan/improve/SKILL.md` as guidance for how to improve the Build Plan, not as the default file to edit.",
|
|
65
|
+
"Treat the Build Plan package as four aligned layers: purpose, inputs, context interface, and stages.",
|
|
66
|
+
"Prefer editing the stage docs, Build Plan contract, input contract, or schema ownership that actually change verifiable-context outputs.",
|
|
67
|
+
"Edit only files under `build-plan/`.",
|
|
68
|
+
"Do not edit checks, test specs, source files, or generated verifiable-context outputs.",
|
|
69
|
+
"Keep the Build Plan package valid for the current build API and `build-plan.schema.json`.",
|
|
70
|
+
"Respect stage boundaries: a stage may only introduce links that resolve within that stage's declared writes or already-existing read Artifacts.",
|
|
71
|
+
"Do not make one stage point at files or notes that are only created later by another stage.",
|
|
72
|
+
"Prefer small, defensible changes to Build Plan docs, stage docs, stage policies, or schema ownership over random churn.",
|
|
73
|
+
"Do not narrate plans or ask follow-up questions.",
|
|
74
|
+
"Only emit user-visible updates that begin with STATUS:, DONE:, BLOCKED:, or ERROR:.",
|
|
75
|
+
"As soon as the Build Plan edits are complete, stop.",
|
|
76
|
+
].join("\n");
|
|
77
|
+
}
|
|
78
|
+
function updateBuildPlanOrigin(options) {
|
|
79
|
+
const current = readInterfConfig(options.verifiableContextPath);
|
|
80
|
+
if (!current)
|
|
81
|
+
return;
|
|
82
|
+
const nextConfig = {
|
|
83
|
+
...current,
|
|
84
|
+
build_plan_origin: {
|
|
85
|
+
selected: options.selectedBuildPlanId,
|
|
86
|
+
...(options.localDraft ? { local_draft: true } : {}),
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
saveVerifiableContextInterfConfig(options.verifiableContextPath, nextConfig);
|
|
90
|
+
}
|
|
91
|
+
function buildPlanImprovementRunLedgerPath(verifiableContextPath, runId) {
|
|
92
|
+
return join(buildPlanImprovementRunRoot(verifiableContextPath, runId), "run.json");
|
|
93
|
+
}
|
|
94
|
+
function buildPlanImprovementLoopHistoryPath(verifiableContextPath, runId) {
|
|
95
|
+
return join(buildPlanImprovementRunRoot(verifiableContextPath, runId), "loop-history.jsonl");
|
|
96
|
+
}
|
|
97
|
+
function buildPlanImprovementLoopRecordPath(loopRootPath) {
|
|
98
|
+
return join(loopRootPath, "loop.json");
|
|
99
|
+
}
|
|
100
|
+
function readBuildPlanImprovementRunLedger(verifiableContextPath, runId) {
|
|
101
|
+
const ledgerPath = buildPlanImprovementRunLedgerPath(verifiableContextPath, runId);
|
|
102
|
+
if (!existsSync(ledgerPath))
|
|
103
|
+
return null;
|
|
104
|
+
return readJsonFileWithSchema(ledgerPath, "Build Plan improvement run ledger", BuildPlanImprovementRunLedgerSchema);
|
|
105
|
+
}
|
|
106
|
+
function writeBuildPlanImprovementRunLedger(verifiableContextPath, runId, record, options) {
|
|
107
|
+
const runRoot = buildPlanImprovementRunRoot(verifiableContextPath, runId);
|
|
108
|
+
mkdirSync(runRoot, { recursive: true });
|
|
109
|
+
const existing = readBuildPlanImprovementRunLedger(verifiableContextPath, runId);
|
|
110
|
+
const generatedAt = existing?.generated_at ?? new Date().toISOString();
|
|
111
|
+
const ledger = {
|
|
112
|
+
kind: "interf-build-plan-improvement-run",
|
|
113
|
+
version: 1,
|
|
114
|
+
generated_at: generatedAt,
|
|
115
|
+
updated_at: new Date().toISOString(),
|
|
116
|
+
run_id: runId,
|
|
117
|
+
target_name: options.targetName,
|
|
118
|
+
build_plan_id: options.buildPlanId,
|
|
119
|
+
max_loops: options.maxLoops,
|
|
120
|
+
max_attempts: options.maxAttempts,
|
|
121
|
+
loops: [...(existing?.loops ?? []), record],
|
|
122
|
+
};
|
|
123
|
+
writeFileSync(buildPlanImprovementRunLedgerPath(verifiableContextPath, runId), `${JSON.stringify(ledger, null, 2)}\n`);
|
|
124
|
+
writeFileSync(buildPlanImprovementLoopRecordPath(record.loop_root_path), `${JSON.stringify(record, null, 2)}\n`);
|
|
125
|
+
appendFileSync(buildPlanImprovementLoopHistoryPath(verifiableContextPath, runId), `${JSON.stringify(record)}\n`);
|
|
126
|
+
}
|
|
127
|
+
function buildBuildPlanImprovementLoopRecord(options) {
|
|
128
|
+
return {
|
|
129
|
+
kind: "interf-build-plan-improvement-loop-record",
|
|
130
|
+
version: 1,
|
|
131
|
+
recorded_at: new Date().toISOString(),
|
|
132
|
+
run_id: options.runId,
|
|
133
|
+
loop_index: options.loopIndex,
|
|
134
|
+
target_name: options.targetName,
|
|
135
|
+
build_plan_id: options.buildPlanId,
|
|
136
|
+
result: options.result,
|
|
137
|
+
changed: options.changed,
|
|
138
|
+
applied: options.result === "updated",
|
|
139
|
+
summary: options.summary,
|
|
140
|
+
shell_path: options.shellPath,
|
|
141
|
+
loop_root_path: options.loopRootPath,
|
|
142
|
+
context_path: join(options.shellPath, "runtime", "loop-context.json"),
|
|
143
|
+
build_plan_before_path: options.buildPlanBeforePath,
|
|
144
|
+
build_plan_after_path: options.buildPlanAfterPath,
|
|
145
|
+
prompt_log_path: options.promptLogPath,
|
|
146
|
+
event_log_path: options.eventLogPath,
|
|
147
|
+
status_log_path: options.statusLogPath,
|
|
148
|
+
preserved_shell_manifest_path: options.preservedShellManifestPath,
|
|
149
|
+
validation: options.validation,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
export async function runBuildPlanImprovementLoop(options) {
|
|
153
|
+
const verifiableContextName = readInterfConfig(options.verifiableContextPath)?.name ?? "verifiable-context";
|
|
154
|
+
const context = buildLoopContext(options);
|
|
155
|
+
const shell = createBuildPlanImprovementShell({
|
|
156
|
+
verifiableContextPath: options.verifiableContextPath,
|
|
157
|
+
verifiableContextName,
|
|
158
|
+
buildPlanId: options.buildPlanId,
|
|
159
|
+
runId: options.runId,
|
|
160
|
+
loopIndex: options.loopIndex,
|
|
161
|
+
context,
|
|
162
|
+
});
|
|
163
|
+
const buildPlanRoot = buildPlanPackagePathForVerifiableContext(options.verifiableContextPath);
|
|
164
|
+
const session = await runBuildPlanEditSession({
|
|
165
|
+
executor: options.executor,
|
|
166
|
+
buildPlanPath: buildPlanRoot,
|
|
167
|
+
shell,
|
|
168
|
+
prompt: buildBuildPlanImprovementPrompt(),
|
|
169
|
+
validate: validateBuildPlanPackage,
|
|
170
|
+
maxValidationRepairAttempts: 1,
|
|
171
|
+
});
|
|
172
|
+
if (session.status === "updated") {
|
|
173
|
+
// 0.15 — fill role=general on any stage the improvement run
|
|
174
|
+
// dropped a role from. Idempotent and silent when complete.
|
|
175
|
+
ensureStageRoles(buildPlanRoot);
|
|
176
|
+
}
|
|
177
|
+
const preservedShellManifestPath = freezeBuildPlanImprovementShell(shell.rootPath);
|
|
178
|
+
writeBuildPlanImprovementRunLedger(options.verifiableContextPath, options.runId, buildBuildPlanImprovementLoopRecord({
|
|
179
|
+
targetName: verifiableContextName,
|
|
180
|
+
buildPlanId: options.buildPlanId,
|
|
181
|
+
runId: options.runId,
|
|
182
|
+
loopIndex: options.loopIndex,
|
|
183
|
+
shellPath: shell.rootPath,
|
|
184
|
+
loopRootPath: shell.loopRootPath,
|
|
185
|
+
buildPlanBeforePath: shell.buildPlanBeforePath,
|
|
186
|
+
buildPlanAfterPath: shell.buildPlanAfterPath,
|
|
187
|
+
promptLogPath: shell.promptLogPath,
|
|
188
|
+
eventLogPath: shell.eventLogPath,
|
|
189
|
+
statusLogPath: shell.statusLogPath,
|
|
190
|
+
preservedShellManifestPath,
|
|
191
|
+
changed: session.changed,
|
|
192
|
+
validation: session.validation,
|
|
193
|
+
result: session.status,
|
|
194
|
+
summary: session.summary,
|
|
195
|
+
}), {
|
|
196
|
+
targetName: verifiableContextName,
|
|
197
|
+
buildPlanId: options.buildPlanId,
|
|
198
|
+
maxLoops: options.maxLoops,
|
|
199
|
+
maxAttempts: options.maxAttempts,
|
|
200
|
+
});
|
|
201
|
+
if (session.status === "updated") {
|
|
202
|
+
updateBuildPlanOrigin({
|
|
203
|
+
verifiableContextPath: options.verifiableContextPath,
|
|
204
|
+
selectedBuildPlanId: options.buildPlanId,
|
|
205
|
+
localDraft: true,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
status: session.status,
|
|
210
|
+
changed: session.changed,
|
|
211
|
+
validation: session.validation,
|
|
212
|
+
summary: session.summary,
|
|
213
|
+
shellPath: shell.rootPath,
|
|
214
|
+
loopRootPath: shell.loopRootPath,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export declare function copyDirectory(sourcePath: string, targetPath: string): void;
|
|
2
2
|
export declare function directoriesMatch(leftPath: string, rightPath: string): boolean;
|
|
3
|
-
export interface
|
|
3
|
+
export interface BuildPlanEditShellArtifacts {
|
|
4
4
|
rootPath: string;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
buildPlanBeforePath: string;
|
|
6
|
+
buildPlanAfterPath: string;
|
|
7
7
|
promptLogPath: string;
|
|
8
8
|
eventLogPath: string;
|
|
9
9
|
statusLogPath: string;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const DEFAULT_BUILD_PLAN_ID = "interf-default";
|
|
2
|
+
export interface BuildPlanSelectionLike {
|
|
3
|
+
build_plan?: string | null;
|
|
4
|
+
}
|
|
5
|
+
export declare function buildPlanIdForSourcePreparationConfig(preparationConfig: BuildPlanSelectionLike | null | undefined): string | null;
|
|
6
|
+
export declare function resolveBuildPlanId(selection: BuildPlanSelectionLike | null | undefined, fallback?: string): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const DEFAULT_BUILD_PLAN_ID = "interf-default";
|
|
2
|
+
export function buildPlanIdForSourcePreparationConfig(preparationConfig) {
|
|
3
|
+
return preparationConfig?.build_plan ?? null;
|
|
4
|
+
}
|
|
5
|
+
export function resolveBuildPlanId(selection, fallback = DEFAULT_BUILD_PLAN_ID) {
|
|
6
|
+
return buildPlanIdForSourcePreparationConfig(selection) ?? fallback;
|
|
7
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type LocalBuildPlanDefinition } from "./local-build-plans.js";
|
|
2
|
+
import type { BuildPlanEngineApi } from "../../engine/build/lib/schema.js";
|
|
3
|
+
import type { BuildPlanId, RuntimeContractType } from "../../contracts/lib/schema.js";
|
|
4
|
+
import { type ContextInterface, type ContextInterfaceArtifactId, type BuildPlanInputSpec } from "./context-interface.js";
|
|
5
|
+
export interface BuildPlanStarterDoc {
|
|
6
|
+
relativePath: string;
|
|
7
|
+
content: string;
|
|
8
|
+
}
|
|
9
|
+
export interface BuildPlanStageDefinition {
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
description: string;
|
|
13
|
+
contractType: RuntimeContractType;
|
|
14
|
+
skillDir: string;
|
|
15
|
+
/**
|
|
16
|
+
* Role hint declared by the Build Plan package. Defaults to `general` when
|
|
17
|
+
* absent; mapped to a connected agent via the user's role-map at run
|
|
18
|
+
* time.
|
|
19
|
+
*/
|
|
20
|
+
role: string;
|
|
21
|
+
reads: ContextInterfaceArtifactId[];
|
|
22
|
+
writes: ContextInterfaceArtifactId[];
|
|
23
|
+
}
|
|
24
|
+
export interface BuildPlanDefinition<TId extends string> {
|
|
25
|
+
id: TId;
|
|
26
|
+
engineApi?: BuildPlanEngineApi;
|
|
27
|
+
purpose?: {
|
|
28
|
+
label: string;
|
|
29
|
+
taskHint: string;
|
|
30
|
+
};
|
|
31
|
+
inputs?: BuildPlanInputSpec[];
|
|
32
|
+
label: string;
|
|
33
|
+
hint: string;
|
|
34
|
+
recommended?: boolean;
|
|
35
|
+
contextInterface?: ContextInterface;
|
|
36
|
+
schema?: ContextInterface;
|
|
37
|
+
stages: BuildPlanStageDefinition[];
|
|
38
|
+
stagePolicyNotes?: Record<string, string[]>;
|
|
39
|
+
starterDocs?: BuildPlanStarterDoc[];
|
|
40
|
+
scope?: "builtin" | "user" | "local";
|
|
41
|
+
}
|
|
42
|
+
export type ResolvedBuildPlanId = string;
|
|
43
|
+
export declare function standaloneBuildPlanDefinitionFromLocalPackage(local: LocalBuildPlanDefinition): BuildPlanDefinition<string>;
|
|
44
|
+
export declare function listBuildPlanChoices(prepDataDir?: string): BuildPlanDefinition<string>[];
|
|
45
|
+
export declare function getBuildPlan(buildPlanId: ResolvedBuildPlanId, options?: {
|
|
46
|
+
prepDataDir?: string;
|
|
47
|
+
}): BuildPlanDefinition<string>;
|
|
48
|
+
export declare function getActiveBuildPlan(verifiableContextPath: string): BuildPlanDefinition<string>;
|
|
49
|
+
export declare function resolveVerifiableContextBuildPlanId(value: unknown): ResolvedBuildPlanId | null;
|
|
50
|
+
export declare function resolveBuildPlanFromConfig(config: unknown): ResolvedBuildPlanId | null;
|
|
51
|
+
export declare function resolveRequiredBuildPlanFromConfig(config: unknown, label?: string): ResolvedBuildPlanId;
|
|
52
|
+
export declare function getBuildPlanStageDefinition(buildPlanId: BuildPlanId, stage: string, prepDataDir?: string): BuildPlanStageDefinition | null;
|
|
53
|
+
export declare function getBuildPlanStagePosition(buildPlanId: BuildPlanId, stage: string, prepDataDir?: string): {
|
|
54
|
+
stageIndex: number;
|
|
55
|
+
stageTotal: number;
|
|
56
|
+
stages: string[];
|
|
57
|
+
} | null;
|
|
58
|
+
export declare function getBuildPlanStages(buildPlanId: BuildPlanId, prepDataDir?: string): string[];
|
|
59
|
+
export declare function getActiveBuildPlanStages(verifiableContextPath: string): string[];
|
|
60
|
+
export declare function getActiveBuildPlanStagePolicyNotes(verifiableContextPath: string, stage: string): string[];
|
|
61
|
+
export declare function formatActiveBuildPlanStageLabel(verifiableContextPath: string, stage: string): string;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { builtinBuildPlanPackagePath, isBuildPlanId, listLocalBuildPlanDefinitions, loadLocalBuildPlanDefinition, loadBuildPlanDefinitionFromDir, mergeStagePolicyNotesForStages, } from "./local-build-plans.js";
|
|
4
|
+
import { listUserBuildPlanDefinitions, loadUserBuildPlanDefinition, } from "./user-build-plans.js";
|
|
5
|
+
import { warnInterf } from "../../contracts/utils/logger.js";
|
|
6
|
+
import { buildPlanPackagePathForVerifiableContext } from "../../engine/build/verifiable-context-paths.js";
|
|
7
|
+
import { asPreparationDataDir, preparationBuildPlanPackagePath } from "../../contracts/lib/preparation-paths.js";
|
|
8
|
+
import { resolveSourceControlPath } from "../../project/interf.js";
|
|
9
|
+
import { deriveBuildPlanInputsFromContextInterface, } from "./context-interface.js";
|
|
10
|
+
const DEFAULT_BUILD_PLAN_ID = "interf-default";
|
|
11
|
+
let builtinDefaultBuildPlanCache = null;
|
|
12
|
+
function toBuildPlanStages(stages) {
|
|
13
|
+
return stages.map((stage) => ({
|
|
14
|
+
id: stage.id,
|
|
15
|
+
label: stage.label,
|
|
16
|
+
description: stage.description ?? stage.label,
|
|
17
|
+
contractType: stage.contract_type,
|
|
18
|
+
skillDir: stage.skill_dir ?? stage.id,
|
|
19
|
+
role: stage.role && stage.role.trim().length > 0 ? stage.role : "general",
|
|
20
|
+
reads: [...stage.reads],
|
|
21
|
+
writes: [...stage.writes],
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
export function standaloneBuildPlanDefinitionFromLocalPackage(local) {
|
|
25
|
+
if (!local.stages || local.stages.length === 0) {
|
|
26
|
+
throw new Error(`Build Plan package "${local.id}" is missing explicit stages. Local Build Plan packages must be standalone.`);
|
|
27
|
+
}
|
|
28
|
+
const stages = toBuildPlanStages(local.stages);
|
|
29
|
+
const contextInterface = local.build_plan_schema;
|
|
30
|
+
const inputs = local.inputs?.length
|
|
31
|
+
? [...local.inputs]
|
|
32
|
+
: deriveBuildPlanInputsFromContextInterface(contextInterface);
|
|
33
|
+
return {
|
|
34
|
+
id: local.id,
|
|
35
|
+
engineApi: local.engine_api ?? {
|
|
36
|
+
kind: "build",
|
|
37
|
+
version: 1,
|
|
38
|
+
},
|
|
39
|
+
...(local.purpose
|
|
40
|
+
? {
|
|
41
|
+
purpose: {
|
|
42
|
+
label: local.purpose.label,
|
|
43
|
+
taskHint: local.purpose.task_hint,
|
|
44
|
+
},
|
|
45
|
+
}
|
|
46
|
+
: {}),
|
|
47
|
+
inputs,
|
|
48
|
+
label: local.label,
|
|
49
|
+
hint: local.hint,
|
|
50
|
+
recommended: false,
|
|
51
|
+
contextInterface,
|
|
52
|
+
...(contextInterface ? { schema: contextInterface } : {}),
|
|
53
|
+
stages,
|
|
54
|
+
stagePolicyNotes: mergeStagePolicyNotesForStages(stages, undefined, local.stage_policy_notes),
|
|
55
|
+
starterDocs: [...local.starter_docs],
|
|
56
|
+
scope: "local",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function getBuiltinDefaultBuildPlan() {
|
|
60
|
+
if (builtinDefaultBuildPlanCache)
|
|
61
|
+
return builtinDefaultBuildPlanCache;
|
|
62
|
+
const local = loadBuildPlanDefinitionFromDir(builtinBuildPlanPackagePath(DEFAULT_BUILD_PLAN_ID));
|
|
63
|
+
if (!local) {
|
|
64
|
+
throw new Error(`Missing built-in Interf Build Plan package at public-repo/build-plans/${DEFAULT_BUILD_PLAN_ID}.`);
|
|
65
|
+
}
|
|
66
|
+
const resolved = standaloneBuildPlanDefinitionFromLocalPackage(local);
|
|
67
|
+
builtinDefaultBuildPlanCache = {
|
|
68
|
+
...resolved,
|
|
69
|
+
id: DEFAULT_BUILD_PLAN_ID,
|
|
70
|
+
recommended: true,
|
|
71
|
+
scope: "builtin",
|
|
72
|
+
};
|
|
73
|
+
return builtinDefaultBuildPlanCache;
|
|
74
|
+
}
|
|
75
|
+
function listBuiltinBuildPlans() {
|
|
76
|
+
return [getBuiltinDefaultBuildPlan()];
|
|
77
|
+
}
|
|
78
|
+
function resolveBuildPlanFromLocal(buildPlanId, prepDataDir) {
|
|
79
|
+
const local = loadLocalBuildPlanDefinition(prepDataDir, buildPlanId);
|
|
80
|
+
if (!local)
|
|
81
|
+
return null;
|
|
82
|
+
const resolved = standaloneBuildPlanDefinitionFromLocalPackage(local);
|
|
83
|
+
return resolved;
|
|
84
|
+
}
|
|
85
|
+
function resolveBuildPlanFromUserLibrary(buildPlanId) {
|
|
86
|
+
const user = loadUserBuildPlanDefinition(buildPlanId);
|
|
87
|
+
if (!user)
|
|
88
|
+
return null;
|
|
89
|
+
const resolved = standaloneBuildPlanDefinitionFromLocalPackage(user);
|
|
90
|
+
return { ...resolved, scope: "user" };
|
|
91
|
+
}
|
|
92
|
+
export function listBuildPlanChoices(prepDataDir) {
|
|
93
|
+
const builtins = listBuiltinBuildPlans();
|
|
94
|
+
const buildPlansById = new Map();
|
|
95
|
+
for (const buildPlan of builtins) {
|
|
96
|
+
buildPlansById.set(buildPlan.id, buildPlan);
|
|
97
|
+
}
|
|
98
|
+
for (const definition of listUserBuildPlanDefinitions()) {
|
|
99
|
+
try {
|
|
100
|
+
const buildPlan = resolveBuildPlanFromUserLibrary(definition.id);
|
|
101
|
+
if (buildPlan)
|
|
102
|
+
buildPlansById.set(buildPlan.id, buildPlan);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
warnInterf(`Warning: skipping user Build Plan "${definition.id}" because it could not be resolved cleanly: ${error instanceof Error ? error.message : String(error)}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (!prepDataDir)
|
|
109
|
+
return [...buildPlansById.values()];
|
|
110
|
+
for (const definition of listLocalBuildPlanDefinitions(prepDataDir)) {
|
|
111
|
+
try {
|
|
112
|
+
const buildPlan = resolveBuildPlanFromLocal(definition.id, prepDataDir);
|
|
113
|
+
if (buildPlan)
|
|
114
|
+
buildPlansById.set(buildPlan.id, buildPlan);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
warnInterf(`Warning: skipping local Build Plan "${definition.id}" because it could not be resolved cleanly: ${error instanceof Error ? error.message : String(error)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return [...buildPlansById.values()];
|
|
121
|
+
}
|
|
122
|
+
export function getBuildPlan(buildPlanId, options = {}) {
|
|
123
|
+
if (options.prepDataDir) {
|
|
124
|
+
const local = resolveBuildPlanFromLocal(buildPlanId, options.prepDataDir);
|
|
125
|
+
if (local)
|
|
126
|
+
return local;
|
|
127
|
+
}
|
|
128
|
+
const user = resolveBuildPlanFromUserLibrary(buildPlanId);
|
|
129
|
+
if (user)
|
|
130
|
+
return user;
|
|
131
|
+
const builtin = listBuiltinBuildPlans().find((candidate) => candidate.id === buildPlanId);
|
|
132
|
+
if (builtin)
|
|
133
|
+
return builtin;
|
|
134
|
+
if (options.prepDataDir) {
|
|
135
|
+
throw new Error(`No Build Plan package "${buildPlanId}" found in this Preparation, in your user library, or among bundled Build Plan packages. Looked under ${preparationBuildPlanPackagePath(asPreparationDataDir(options.prepDataDir), buildPlanId)} and ~/.interf/build-plans/${buildPlanId}.`);
|
|
136
|
+
}
|
|
137
|
+
throw new Error(`Build Plan package "${buildPlanId}" is not built-in and no Preparation data directory was provided to look for a local override.`);
|
|
138
|
+
}
|
|
139
|
+
export function getActiveBuildPlan(verifiableContextPath) {
|
|
140
|
+
const buildPlanPath = buildPlanPackagePathForVerifiableContext(verifiableContextPath);
|
|
141
|
+
if (existsSync(join(buildPlanPath, "build-plan.json"))) {
|
|
142
|
+
const local = loadBuildPlanDefinitionFromDir(buildPlanPath);
|
|
143
|
+
if (!local) {
|
|
144
|
+
throw new Error(`Local Build Plan package at ${buildPlanPath} is missing or invalid. Interf build runs the local package directly; recreate or reseed this verifiable context.`);
|
|
145
|
+
}
|
|
146
|
+
return standaloneBuildPlanDefinitionFromLocalPackage(local);
|
|
147
|
+
}
|
|
148
|
+
throw new Error(`Missing local Build Plan package at ${buildPlanPath}. Interf build runs the local package directly, so recreate or reseed this verifiable context under ${resolveSourceControlPath(verifiableContextPath)}.`);
|
|
149
|
+
}
|
|
150
|
+
export function resolveVerifiableContextBuildPlanId(value) {
|
|
151
|
+
if (typeof value === "string" && isBuildPlanId(value)) {
|
|
152
|
+
return value;
|
|
153
|
+
}
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
export function resolveBuildPlanFromConfig(config) {
|
|
157
|
+
if (!config || typeof config !== "object")
|
|
158
|
+
return null;
|
|
159
|
+
const raw = config;
|
|
160
|
+
return resolveVerifiableContextBuildPlanId(raw.build_plan);
|
|
161
|
+
}
|
|
162
|
+
export function resolveRequiredBuildPlanFromConfig(config, label = "verifiable-context config") {
|
|
163
|
+
const buildPlanId = resolveBuildPlanFromConfig(config);
|
|
164
|
+
if (!buildPlanId) {
|
|
165
|
+
throw new Error(`Missing or invalid Build Plan in ${label}.`);
|
|
166
|
+
}
|
|
167
|
+
return buildPlanId;
|
|
168
|
+
}
|
|
169
|
+
function resolveBuildPlanDefinitionForStageMetadata(buildPlanId, prepDataDir) {
|
|
170
|
+
if (prepDataDir &&
|
|
171
|
+
existsSync(join(buildPlanPackagePathForVerifiableContext(prepDataDir), "build-plan.json"))) {
|
|
172
|
+
return getActiveBuildPlan(prepDataDir);
|
|
173
|
+
}
|
|
174
|
+
return getBuildPlan(buildPlanId, { prepDataDir });
|
|
175
|
+
}
|
|
176
|
+
function formatBuildPlanStageLabel(buildPlan, stage) {
|
|
177
|
+
const stageIndex = buildPlan.stages.findIndex((candidate) => candidate.id === stage);
|
|
178
|
+
if (stageIndex === -1) {
|
|
179
|
+
throw new Error(`Stage "${stage}" is not part of the build runtime.`);
|
|
180
|
+
}
|
|
181
|
+
const stageDefinition = buildPlan.stages[stageIndex];
|
|
182
|
+
if (!stageDefinition) {
|
|
183
|
+
throw new Error(`Stage "${stage}" is not part of the build runtime.`);
|
|
184
|
+
}
|
|
185
|
+
return `Stage ${stageIndex + 1}/${buildPlan.stages.length} - ${stageDefinition.label}`;
|
|
186
|
+
}
|
|
187
|
+
export function getBuildPlanStageDefinition(buildPlanId, stage, prepDataDir) {
|
|
188
|
+
const buildPlan = resolveBuildPlanDefinitionForStageMetadata(buildPlanId, prepDataDir);
|
|
189
|
+
return buildPlan.stages.find((candidate) => candidate.id === stage) ?? null;
|
|
190
|
+
}
|
|
191
|
+
export function getBuildPlanStagePosition(buildPlanId, stage, prepDataDir) {
|
|
192
|
+
const stages = getBuildPlanStages(buildPlanId, prepDataDir);
|
|
193
|
+
const stageIndex = stages.findIndex((candidate) => candidate === stage);
|
|
194
|
+
if (stageIndex === -1)
|
|
195
|
+
return null;
|
|
196
|
+
return {
|
|
197
|
+
stageIndex: stageIndex + 1,
|
|
198
|
+
stageTotal: stages.length,
|
|
199
|
+
stages: [...stages],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
export function getBuildPlanStages(buildPlanId, prepDataDir) {
|
|
203
|
+
return resolveBuildPlanDefinitionForStageMetadata(buildPlanId, prepDataDir).stages.map((definition) => definition.id);
|
|
204
|
+
}
|
|
205
|
+
export function getActiveBuildPlanStages(verifiableContextPath) {
|
|
206
|
+
return getActiveBuildPlan(verifiableContextPath).stages.map((definition) => definition.id);
|
|
207
|
+
}
|
|
208
|
+
export function getActiveBuildPlanStagePolicyNotes(verifiableContextPath, stage) {
|
|
209
|
+
const buildPlan = getActiveBuildPlan(verifiableContextPath);
|
|
210
|
+
return [...(buildPlan.stagePolicyNotes?.[stage] ?? [])];
|
|
211
|
+
}
|
|
212
|
+
export function formatActiveBuildPlanStageLabel(verifiableContextPath, stage) {
|
|
213
|
+
return formatBuildPlanStageLabel(getActiveBuildPlan(verifiableContextPath), stage);
|
|
214
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { type LocalInstructionMode, type RuntimeInstructionMode, type RuntimeStageInstructions } from "../../engine/
|
|
2
|
-
export interface
|
|
1
|
+
import { type LocalInstructionMode, type RuntimeInstructionMode, type RuntimeStageInstructions } from "../../engine/build/lib/schema.js";
|
|
2
|
+
export interface BuildPlanReporter {
|
|
3
3
|
line?: (message: string) => void;
|
|
4
4
|
blankLine?: () => void;
|
|
5
5
|
}
|
|
6
|
-
export interface
|
|
6
|
+
export interface BuildPlanStageResult {
|
|
7
7
|
ok: boolean;
|
|
8
8
|
code: number;
|
|
9
9
|
summary?: string | null;
|
|
10
10
|
}
|
|
11
|
-
export declare function
|
|
11
|
+
export declare function buildPlanStageDirectory(stageDir: string): string;
|
|
12
12
|
export interface LocalSkillContractExtension {
|
|
13
13
|
reads: string[];
|
|
14
14
|
count: number;
|
|
@@ -19,6 +19,6 @@ export interface LocalSkillContractExtension {
|
|
|
19
19
|
}
|
|
20
20
|
export declare function buildLocalSkillContractExtension(rootPath: string, directories: string[], purpose: string): LocalSkillContractExtension;
|
|
21
21
|
export declare function buildStageInstructions(stageSkillDir: string, localSkills: LocalSkillContractExtension): RuntimeStageInstructions;
|
|
22
|
-
export declare function reportLine(reporter:
|
|
23
|
-
export declare function reportBlankLine(reporter:
|
|
24
|
-
export declare function reportValidationFailure(reporter:
|
|
22
|
+
export declare function reportLine(reporter: BuildPlanReporter | undefined, message: string): void;
|
|
23
|
+
export declare function reportBlankLine(reporter: BuildPlanReporter | undefined): void;
|
|
24
|
+
export declare function reportValidationFailure(reporter: BuildPlanReporter | undefined, summary: string, errors?: string[]): void;
|
|
@@ -3,10 +3,10 @@ import { join, relative, sep } from "node:path";
|
|
|
3
3
|
import { listFilesRecursive } from "../../contracts/utils/filesystem.js";
|
|
4
4
|
import { parseJsonFrontmatter } from "../../contracts/utils/parse.js";
|
|
5
5
|
import { isMarkdownFile } from "../../contracts/utils/file-types.js";
|
|
6
|
-
import {
|
|
6
|
+
import { VERIFIABLE_CONTEXT_BUILD_PLAN_DIR, buildPlanPackagePathForVerifiableContext } from "../../engine/build/verifiable-context-paths.js";
|
|
7
7
|
const LOCAL_SKILL_READ_LIMIT = 50;
|
|
8
|
-
export function
|
|
9
|
-
return `${
|
|
8
|
+
export function buildPlanStageDirectory(stageDir) {
|
|
9
|
+
return `${VERIFIABLE_CONTEXT_BUILD_PLAN_DIR}/build/stages/${stageDir}`;
|
|
10
10
|
}
|
|
11
11
|
function emptyLocalSkillContractExtension() {
|
|
12
12
|
return {
|
|
@@ -30,10 +30,10 @@ function readLocalInstructionMode(filePath) {
|
|
|
30
30
|
}
|
|
31
31
|
function collectLocalSkillDocs(rootPath, directories) {
|
|
32
32
|
const docs = new Map();
|
|
33
|
-
const
|
|
34
|
-
const rootReadme = join(
|
|
33
|
+
const buildPlanRoot = buildPlanPackagePathForVerifiableContext(rootPath);
|
|
34
|
+
const rootReadme = join(buildPlanRoot, "README.md");
|
|
35
35
|
if (existsSync(rootReadme)) {
|
|
36
|
-
const read =
|
|
36
|
+
const read = projectBuildPlanReadPath(rootPath, rootReadme);
|
|
37
37
|
docs.set(read, {
|
|
38
38
|
read,
|
|
39
39
|
absolutePath: rootReadme,
|
|
@@ -43,7 +43,7 @@ function collectLocalSkillDocs(rootPath, directories) {
|
|
|
43
43
|
for (const directory of directories) {
|
|
44
44
|
const absoluteDirectory = resolveAuthoringDirectory(rootPath, directory);
|
|
45
45
|
for (const filePath of listFilesRecursive(absoluteDirectory, isMarkdownFile)) {
|
|
46
|
-
const read =
|
|
46
|
+
const read = projectBuildPlanReadPath(rootPath, filePath);
|
|
47
47
|
docs.set(read, {
|
|
48
48
|
read,
|
|
49
49
|
absolutePath: filePath,
|
|
@@ -56,21 +56,21 @@ function collectLocalSkillDocs(rootPath, directories) {
|
|
|
56
56
|
.slice(0, LOCAL_SKILL_READ_LIMIT);
|
|
57
57
|
}
|
|
58
58
|
function resolveAuthoringDirectory(rootPath, directory) {
|
|
59
|
-
if (directory ===
|
|
60
|
-
return
|
|
59
|
+
if (directory === VERIFIABLE_CONTEXT_BUILD_PLAN_DIR) {
|
|
60
|
+
return buildPlanPackagePathForVerifiableContext(rootPath);
|
|
61
61
|
}
|
|
62
|
-
if (directory.startsWith(`${
|
|
63
|
-
const
|
|
64
|
-
return join(
|
|
62
|
+
if (directory.startsWith(`${VERIFIABLE_CONTEXT_BUILD_PLAN_DIR}${sep}`) || directory.startsWith(`${VERIFIABLE_CONTEXT_BUILD_PLAN_DIR}/`)) {
|
|
63
|
+
const relativeBuildPlanPath = directory.replace(/^build-plan[\\/]/, "");
|
|
64
|
+
return join(buildPlanPackagePathForVerifiableContext(rootPath), relativeBuildPlanPath);
|
|
65
65
|
}
|
|
66
66
|
return join(rootPath, directory);
|
|
67
67
|
}
|
|
68
|
-
function
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
if (absolutePath ===
|
|
72
|
-
const
|
|
73
|
-
return relative(rootPath, join(rootPath,
|
|
68
|
+
function projectBuildPlanReadPath(rootPath, absolutePath) {
|
|
69
|
+
const buildPlanRoot = buildPlanPackagePathForVerifiableContext(rootPath);
|
|
70
|
+
const normalizedBuildPlanRoot = `${buildPlanRoot}${sep}`;
|
|
71
|
+
if (absolutePath === buildPlanRoot || absolutePath.startsWith(normalizedBuildPlanRoot)) {
|
|
72
|
+
const relativeBuildPlanPath = relative(buildPlanRoot, absolutePath);
|
|
73
|
+
return relative(rootPath, join(rootPath, VERIFIABLE_CONTEXT_BUILD_PLAN_DIR, relativeBuildPlanPath));
|
|
74
74
|
}
|
|
75
75
|
return relative(rootPath, absolutePath);
|
|
76
76
|
}
|
|
@@ -98,8 +98,8 @@ function buildContractExtensionFromDocs(docs, directories, purpose) {
|
|
|
98
98
|
notes: [
|
|
99
99
|
readNotice,
|
|
100
100
|
localMode === "override"
|
|
101
|
-
? `${purpose} One or more local docs declare \`mode: override\`, so their
|
|
102
|
-
: `${purpose} These local
|
|
101
|
+
? `${purpose} One or more local docs declare \`mode: override\`, so their Build Plan instructions replace Interf's bundled stage instructions for this run. They still do not bypass coverage proof, evidence weighting, required writes, or deterministic runtime reconciliation.`
|
|
102
|
+
: `${purpose} These local Build Plan docs can refine the stage, but they do not bypass coverage proof, evidence weighting, required writes, or deterministic runtime reconciliation.`,
|
|
103
103
|
],
|
|
104
104
|
localMode,
|
|
105
105
|
effectiveMode: localMode ?? "builtin",
|