@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `interf reset <prep-id>` — reset a preparation's
|
|
2
|
+
* `interf reset <prep-id>` — reset a preparation's built output (or all state).
|
|
3
3
|
*
|
|
4
|
-
* interf reset bristol # default mode =
|
|
5
|
-
* interf reset bristol --mode all # also clear
|
|
4
|
+
* interf reset bristol # default mode = build
|
|
5
|
+
* interf reset bristol --mode all # also clear Build Plan draft / runs
|
|
6
6
|
*/
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
import { CONNECT_OR_ERROR_HINT, readActiveConnection } from "../../packages/engine/connection-config.js";
|
|
@@ -29,13 +29,13 @@ async function callJson(url, token, init = {}) {
|
|
|
29
29
|
}
|
|
30
30
|
export const resetCommand = {
|
|
31
31
|
command: "reset <prep-id>",
|
|
32
|
-
describe: "Reset a preparation's
|
|
32
|
+
describe: "Reset a preparation's built output",
|
|
33
33
|
builder: (yargs) => yargs
|
|
34
34
|
.positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id" })
|
|
35
35
|
.option("mode", {
|
|
36
36
|
type: "string",
|
|
37
|
-
choices: ["
|
|
38
|
-
default: "
|
|
37
|
+
choices: ["build", "all"],
|
|
38
|
+
default: "build",
|
|
39
39
|
describe: "Scope of the reset",
|
|
40
40
|
})
|
|
41
41
|
.option("url", { type: "string", describe: "Override the active connection URL" })
|
|
@@ -4,11 +4,8 @@
|
|
|
4
4
|
* interf runs ls [--prep <id>]
|
|
5
5
|
* interf runs status <run-id>
|
|
6
6
|
* interf runs cancel <run-id>
|
|
7
|
-
* interf runs fetch <run-id> --to <path>
|
|
8
7
|
*/
|
|
9
8
|
import chalk from "chalk";
|
|
10
|
-
import { mkdirSync, writeFileSync } from "node:fs";
|
|
11
|
-
import { dirname, isAbsolute, resolve } from "node:path";
|
|
12
9
|
import { CONNECT_OR_ERROR_HINT, readActiveConnection } from "../../packages/engine/connection-config.js";
|
|
13
10
|
function resolveConnection(args) {
|
|
14
11
|
const conn = readActiveConnection({
|
|
@@ -40,6 +37,90 @@ async function callJson(url, token, init = {}) {
|
|
|
40
37
|
}
|
|
41
38
|
return { status: response.status, body, raw };
|
|
42
39
|
}
|
|
40
|
+
function runStatusColor(status) {
|
|
41
|
+
if (status === "succeeded" || status === "completed")
|
|
42
|
+
return chalk.green;
|
|
43
|
+
if (status === "failed" || status === "cancelled")
|
|
44
|
+
return chalk.red;
|
|
45
|
+
if (status === "running")
|
|
46
|
+
return chalk.yellow;
|
|
47
|
+
return chalk.dim;
|
|
48
|
+
}
|
|
49
|
+
function renderRunStatus(run) {
|
|
50
|
+
const status = run.status ?? (run.trace?.run?.error ? "failed" : "unknown");
|
|
51
|
+
const color = runStatusColor(status);
|
|
52
|
+
console.log();
|
|
53
|
+
console.log(` ${chalk.bold(run.title ?? run.run_id)} ${color(`(${status})`)}`);
|
|
54
|
+
console.log(chalk.dim(` run: ${run.run_id}`));
|
|
55
|
+
if (run.run_type)
|
|
56
|
+
console.log(chalk.dim(` type: ${run.run_type}`));
|
|
57
|
+
if (run.preparation)
|
|
58
|
+
console.log(chalk.dim(` preparation: ${run.preparation}`));
|
|
59
|
+
if (run.build_plan)
|
|
60
|
+
console.log(chalk.dim(` Build Plan: ${run.build_plan}`));
|
|
61
|
+
if (run.agent_label)
|
|
62
|
+
console.log(chalk.dim(` agent: ${run.agent_label}`));
|
|
63
|
+
if (run.started_at)
|
|
64
|
+
console.log(chalk.dim(` started: ${run.started_at}`));
|
|
65
|
+
if (run.finished_at)
|
|
66
|
+
console.log(chalk.dim(` finished: ${run.finished_at}`));
|
|
67
|
+
if (run.output_path ?? run.verifiable_context_path) {
|
|
68
|
+
console.log(chalk.dim(` output: ${run.output_path ?? run.verifiable_context_path}`));
|
|
69
|
+
}
|
|
70
|
+
if (run.trace?.run?.error?.message) {
|
|
71
|
+
console.log();
|
|
72
|
+
console.log(chalk.red(" Error"));
|
|
73
|
+
console.log(chalk.dim(` ${run.trace.run.error.message}`));
|
|
74
|
+
}
|
|
75
|
+
const readiness = run.readiness;
|
|
76
|
+
if (readiness?.status) {
|
|
77
|
+
console.log();
|
|
78
|
+
const readinessColor = readiness.ready ? chalk.green : chalk.yellow;
|
|
79
|
+
console.log(` readiness: ${readinessColor(readiness.status)}${readiness.summary ? chalk.dim(` (${readiness.summary})`) : ""}`);
|
|
80
|
+
}
|
|
81
|
+
const metrics = run.metrics ?? [];
|
|
82
|
+
if (metrics.length > 0) {
|
|
83
|
+
console.log();
|
|
84
|
+
console.log(chalk.bold(" Metrics"));
|
|
85
|
+
for (const metric of metrics.slice(0, 8)) {
|
|
86
|
+
const value = metric.value !== undefined ? `${metric.value}${metric.unit ? ` ${metric.unit}` : ""}` : "";
|
|
87
|
+
console.log(chalk.dim(` ${metric.label ?? "metric"}: ${value}`));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const artifacts = run.artifacts ?? [];
|
|
91
|
+
if (artifacts.length > 0) {
|
|
92
|
+
console.log();
|
|
93
|
+
console.log(chalk.bold(" Artifacts"));
|
|
94
|
+
for (const artifact of artifacts.slice(0, 12)) {
|
|
95
|
+
const stage = artifact.stage_id ? chalk.dim(` ← ${artifact.stage_id}`) : "";
|
|
96
|
+
console.log(` ${artifact.label ?? artifact.role}: ${chalk.dim(artifact.path)}${stage}`);
|
|
97
|
+
}
|
|
98
|
+
if (artifacts.length > 12)
|
|
99
|
+
console.log(chalk.dim(` ... ${artifacts.length - 12} more`));
|
|
100
|
+
}
|
|
101
|
+
const proof = run.proof ?? [];
|
|
102
|
+
if (proof.length > 0) {
|
|
103
|
+
console.log();
|
|
104
|
+
console.log(chalk.bold(" Proof"));
|
|
105
|
+
for (const check of proof.slice(0, 12)) {
|
|
106
|
+
const marker = check.ok ? chalk.green("pass") : chalk.red("fail");
|
|
107
|
+
console.log(` ${marker} ${check.label}${check.detail ? chalk.dim(` — ${check.detail}`) : ""}`);
|
|
108
|
+
}
|
|
109
|
+
if (proof.length > 12)
|
|
110
|
+
console.log(chalk.dim(` ... ${proof.length - 12} more`));
|
|
111
|
+
}
|
|
112
|
+
const events = run.trace?.events ?? [];
|
|
113
|
+
if (events.length > 0) {
|
|
114
|
+
console.log();
|
|
115
|
+
console.log(chalk.bold(" Recent trace"));
|
|
116
|
+
for (const event of events.slice(-6)) {
|
|
117
|
+
console.log(chalk.dim(` ${event.createdAt ?? ""} ${event.eventType ?? "event"}`.trim()));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
console.log();
|
|
121
|
+
console.log(chalk.dim(" Run with --json for the raw run resource."));
|
|
122
|
+
console.log();
|
|
123
|
+
}
|
|
43
124
|
export const runsCommand = {
|
|
44
125
|
command: "runs <subcommand>",
|
|
45
126
|
describe: "Inspect runs on the connected instance",
|
|
@@ -48,24 +129,23 @@ export const runsCommand = {
|
|
|
48
129
|
.option("token", { type: "string", describe: "Override the active bearer token" })
|
|
49
130
|
.command("ls", "List runs (optionally filtered by preparation)", (y) => y.option("prep", { type: "string", describe: "Filter by preparation id" }), async (args) => {
|
|
50
131
|
const { url, token } = resolveConnection(args);
|
|
51
|
-
const
|
|
52
|
-
? `/v1/preparations/${encodeURIComponent(args.prep)}/runs`
|
|
53
|
-
: "/v1/runs";
|
|
54
|
-
const { status, body, raw } = await callJson(`${url}${path}`, token);
|
|
132
|
+
const { status, body, raw } = await callJson(`${url}/v1/runs`, token);
|
|
55
133
|
if (status !== 200) {
|
|
56
134
|
console.error(chalk.red(`Failed to list runs (HTTP ${status}).`));
|
|
57
135
|
if (raw)
|
|
58
136
|
console.error(raw);
|
|
59
137
|
process.exit(1);
|
|
60
138
|
}
|
|
61
|
-
const runs = body?.runs
|
|
62
|
-
|
|
63
|
-
|
|
139
|
+
const runs = body?.runs ?? [];
|
|
140
|
+
const visibleRuns = args.prep
|
|
141
|
+
? runs.filter((run) => run.preparation === args.prep)
|
|
142
|
+
: runs;
|
|
143
|
+
if (visibleRuns.length === 0) {
|
|
64
144
|
console.log(chalk.dim(" No runs."));
|
|
65
145
|
return;
|
|
66
146
|
}
|
|
67
147
|
console.log();
|
|
68
|
-
for (const run of
|
|
148
|
+
for (const run of visibleRuns) {
|
|
69
149
|
console.log(` ${chalk.bold(run.run_id)} ${chalk.dim(`(${run.status ?? "?"})`)}`);
|
|
70
150
|
if (run.preparation)
|
|
71
151
|
console.log(chalk.dim(` prep: ${run.preparation}`));
|
|
@@ -74,18 +154,28 @@ export const runsCommand = {
|
|
|
74
154
|
}
|
|
75
155
|
console.log();
|
|
76
156
|
})
|
|
77
|
-
.command("status <run-id>", "Show full record for a run", (y) => y
|
|
157
|
+
.command("status <run-id>", "Show full record for a run", (y) => y
|
|
158
|
+
.positional("run-id", { type: "string", demandOption: true, describe: "Run id" })
|
|
159
|
+
.option("json", {
|
|
160
|
+
type: "boolean",
|
|
161
|
+
default: false,
|
|
162
|
+
describe: "Print the raw JSON record instead of the formatted summary",
|
|
163
|
+
}), async (args) => {
|
|
78
164
|
const { url, token } = resolveConnection(args);
|
|
79
|
-
const { status, raw } = await callJson(`${url}/v1/runs/${encodeURIComponent(args.runId)}`, token);
|
|
165
|
+
const { status, body, raw } = await callJson(`${url}/v1/runs/${encodeURIComponent(args.runId)}`, token);
|
|
80
166
|
if (status !== 200) {
|
|
81
167
|
console.error(chalk.red(`Failed to read run ${args.runId} (HTTP ${status}).`));
|
|
82
168
|
process.exit(1);
|
|
83
169
|
}
|
|
84
|
-
|
|
170
|
+
if (args.json || !body) {
|
|
171
|
+
console.log(raw);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
renderRunStatus(body);
|
|
85
175
|
})
|
|
86
176
|
.command("cancel <run-id>", "Cancel a running run", (y) => y.positional("run-id", { type: "string", demandOption: true, describe: "Run id" }), async (args) => {
|
|
87
177
|
const { url, token } = resolveConnection(args);
|
|
88
|
-
const { status, raw } = await callJson(`${url}/v1/runs/${encodeURIComponent(args.runId)}/cancel`, token, { method: "POST", body: JSON.stringify({}) });
|
|
178
|
+
const { status, raw } = await callJson(`${url}/v1/build-runs/${encodeURIComponent(args.runId)}/cancel`, token, { method: "POST", body: JSON.stringify({}) });
|
|
89
179
|
if (status !== 200 && status !== 202 && status !== 204) {
|
|
90
180
|
console.error(chalk.red(`Failed to cancel ${args.runId} (HTTP ${status}).`));
|
|
91
181
|
if (raw)
|
|
@@ -93,24 +183,6 @@ export const runsCommand = {
|
|
|
93
183
|
process.exit(1);
|
|
94
184
|
}
|
|
95
185
|
console.log(chalk.green(`Cancelled ${chalk.bold(args.runId)}.`));
|
|
96
|
-
})
|
|
97
|
-
.command("fetch <run-id>", "Download a run's portable context", (y) => y
|
|
98
|
-
.positional("run-id", { type: "string", demandOption: true, describe: "Run id" })
|
|
99
|
-
.option("to", { type: "string", demandOption: true, describe: "Target path" }), async (args) => {
|
|
100
|
-
const { url, token } = resolveConnection(args);
|
|
101
|
-
const headers = new Headers();
|
|
102
|
-
if (token)
|
|
103
|
-
headers.set("authorization", `Bearer ${token}`);
|
|
104
|
-
const response = await fetch(`${url}/v1/runs/${encodeURIComponent(args.runId)}/artifacts/portable-context`, { headers });
|
|
105
|
-
if (response.status !== 200) {
|
|
106
|
-
console.error(chalk.red(`Failed to fetch artifact (HTTP ${response.status}).`));
|
|
107
|
-
process.exit(1);
|
|
108
|
-
}
|
|
109
|
-
const target = isAbsolute(args.to) ? args.to : resolve(process.cwd(), args.to);
|
|
110
|
-
mkdirSync(dirname(target), { recursive: true });
|
|
111
|
-
const buffer = Buffer.from(await response.arrayBuffer());
|
|
112
|
-
writeFileSync(target, buffer);
|
|
113
|
-
console.log(chalk.green(`Wrote ${target} (${buffer.length} bytes).`));
|
|
114
186
|
})
|
|
115
187
|
.demandCommand(1)
|
|
116
188
|
.strict(),
|
|
@@ -64,12 +64,14 @@ export const statusCommand = {
|
|
|
64
64
|
console.log();
|
|
65
65
|
console.log(chalk.bold(` Preparations (${list.length})`));
|
|
66
66
|
if (list.length === 0) {
|
|
67
|
-
console.log(chalk.dim(" No preparations yet. `interf prep create <id> --source <path
|
|
67
|
+
console.log(chalk.dim(" No preparations yet. `interf prep create <id> --source <path>`."));
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
70
70
|
for (const prep of list) {
|
|
71
71
|
const readiness = prep.readiness?.status ?? "—";
|
|
72
|
-
|
|
72
|
+
const buildPlan = prep.build_plan_id ?? "no Build Plan";
|
|
73
|
+
const requested = prep.requested_artifacts?.length ?? 0;
|
|
74
|
+
console.log(` ${chalk.bold(prep.id)} ${chalk.dim(`(${buildPlan} · ${requested} requested · ${readiness})`)}`);
|
|
73
75
|
console.log(chalk.dim(` source: ${prep.source.locator}`));
|
|
74
76
|
}
|
|
75
77
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CommandModule } from "yargs";
|
|
2
|
+
type TestTarget = "verifiable-context" | "source-files";
|
|
3
|
+
interface TestArgs {
|
|
4
|
+
prepId: string;
|
|
5
|
+
target?: TestTarget;
|
|
6
|
+
url?: string;
|
|
7
|
+
token?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const testCommand: CommandModule<unknown, TestArgs>;
|
|
10
|
+
export {};
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `interf
|
|
3
|
-
* judge against the latest
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* state.
|
|
2
|
+
* `interf test <prep-id>` — run readiness checks for a Preparation via a
|
|
3
|
+
* judge against the latest verifiable context (default) or against the source
|
|
4
|
+
* baseline (`--target source-files`). The source-files target reveals how
|
|
5
|
+
* much value the Build Plan adds. Together with Build Plan Artifact checks
|
|
6
|
+
* (auto-run on every `interf build`), this feeds the Preparation's
|
|
7
|
+
* overall readiness state.
|
|
9
8
|
*
|
|
10
|
-
* interf
|
|
11
|
-
* interf
|
|
9
|
+
* interf test bristol
|
|
10
|
+
* interf test bristol --target source-files
|
|
12
11
|
*/
|
|
13
12
|
import chalk from "chalk";
|
|
14
13
|
import { CONNECT_OR_ERROR_HINT, readActiveConnection } from "../../packages/engine/connection-config.js";
|
|
@@ -42,35 +41,34 @@ async function callJson(url, token, init = {}) {
|
|
|
42
41
|
}
|
|
43
42
|
return { status: response.status, body, raw };
|
|
44
43
|
}
|
|
45
|
-
export const
|
|
46
|
-
command: "
|
|
47
|
-
describe: "
|
|
44
|
+
export const testCommand = {
|
|
45
|
+
command: "test <prep-id>",
|
|
46
|
+
describe: "Run readiness checks against a Preparation's verifiable context (or source-files baseline)",
|
|
48
47
|
builder: (yargs) => yargs
|
|
49
48
|
.positional("prep-id", { type: "string", demandOption: true, describe: "Preparation id" })
|
|
50
49
|
.option("target", {
|
|
51
50
|
type: "string",
|
|
52
|
-
choices: ["
|
|
53
|
-
default: "
|
|
54
|
-
describe: "Judge target: '
|
|
51
|
+
choices: ["verifiable-context", "source-files"],
|
|
52
|
+
default: "verifiable-context",
|
|
53
|
+
describe: "Judge target: 'verifiable-context' (default) checks built output, 'source-files' checks the raw Source baseline",
|
|
55
54
|
})
|
|
56
55
|
.option("url", { type: "string", describe: "Override the active connection URL" })
|
|
57
56
|
.option("token", { type: "string", describe: "Override the active bearer token" }),
|
|
58
57
|
handler: async (args) => {
|
|
59
58
|
const { url, token } = resolveConnection(args);
|
|
60
|
-
// 0.15 hard-error: refuse to start a
|
|
61
|
-
// zero connected agents — verifier-role stages can't run without
|
|
62
|
-
// one.
|
|
59
|
+
// 0.15 hard-error: refuse to start a readiness-check run if the engine
|
|
60
|
+
// has zero connected agents — verifier-role stages can't run without one.
|
|
63
61
|
const instance = await callJson(`${url}/v1/instance`, token);
|
|
64
62
|
if (instance.body && instance.body.agent_count === 0) {
|
|
65
|
-
console.error(chalk.red(" Cannot
|
|
63
|
+
console.error(chalk.red(" Cannot run readiness checks — no agents available."));
|
|
66
64
|
console.error(" Install Claude Code, Codex, Gemini, or another agent CLI, or");
|
|
67
65
|
console.error(" register a custom CLI: `interf agents register <name> --command <cmd>`.");
|
|
68
66
|
process.exit(1);
|
|
69
67
|
}
|
|
70
|
-
const target = args.target ?? "
|
|
68
|
+
const target = args.target ?? "verifiable-context";
|
|
71
69
|
const { status, body, raw } = await callJson(`${url}/v1/preparations/${encodeURIComponent(args.prepId)}/verify-runs`, token, { method: "POST", body: JSON.stringify({ target }) });
|
|
72
70
|
if (status !== 201 && status !== 200) {
|
|
73
|
-
console.error(chalk.red(`Failed to start
|
|
71
|
+
console.error(chalk.red(`Failed to start readiness-check run for ${args.prepId} (HTTP ${status}).`));
|
|
74
72
|
if (raw)
|
|
75
73
|
console.error(raw);
|
|
76
74
|
process.exit(1);
|
package/dist/cli/commands/web.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* `interf web` — start the engine in the foreground until Ctrl-C.
|
|
3
3
|
*
|
|
4
4
|
* interf web # start on default port; hard error if port busy
|
|
5
|
+
* interf web start # start the engine in the background
|
|
5
6
|
* interf web stop # send SIGTERM to the running engine
|
|
6
7
|
* interf web status # print engine info via the connected URL
|
|
7
8
|
*
|
|
@@ -10,11 +11,13 @@
|
|
|
10
11
|
* connect without a pointer file.
|
|
11
12
|
*/
|
|
12
13
|
import chalk from "chalk";
|
|
13
|
-
import { readFileSync } from "node:fs";
|
|
14
|
+
import { closeSync, mkdirSync, openSync, readFileSync } from "node:fs";
|
|
15
|
+
import { spawn } from "node:child_process";
|
|
16
|
+
import { dirname } from "node:path";
|
|
14
17
|
import { LOCAL_SERVICE_DEFAULT_HOST, LOCAL_SERVICE_DEFAULT_PORT, buildLocalServiceUrl, } from "../../packages/engine/routes.js";
|
|
15
18
|
import { startLocalService } from "../../packages/engine/server.js";
|
|
16
19
|
import { createNativeLocalServiceRunHandlers } from "../../packages/engine/native-run-handlers.js";
|
|
17
|
-
import { CONNECT_OR_ERROR_HINT, clearConnection, readActiveConnection, } from "../../packages/engine/connection-config.js";
|
|
20
|
+
import { CONNECT_OR_ERROR_HINT, clearConnection, readActiveConnection, writeConnection, } from "../../packages/engine/connection-config.js";
|
|
18
21
|
import { serviceRegistryPath } from "../../packages/engine/instance-paths.js";
|
|
19
22
|
function packageVersionFromManifest() {
|
|
20
23
|
try {
|
|
@@ -53,12 +56,6 @@ async function runWebForeground(args) {
|
|
|
53
56
|
}
|
|
54
57
|
throw error;
|
|
55
58
|
}
|
|
56
|
-
console.log();
|
|
57
|
-
console.log(` Interf engine: ${chalk.bold(service.url)}`);
|
|
58
|
-
console.log(` Compiler UI: ${service.url}/`);
|
|
59
|
-
console.log(` Health: ${service.url}/health`);
|
|
60
|
-
console.log(chalk.dim(" Press Ctrl-C to stop."));
|
|
61
|
-
console.log();
|
|
62
59
|
const shutdown = async () => {
|
|
63
60
|
try {
|
|
64
61
|
await service.close();
|
|
@@ -68,12 +65,84 @@ async function runWebForeground(args) {
|
|
|
68
65
|
}
|
|
69
66
|
process.exit(0);
|
|
70
67
|
};
|
|
68
|
+
console.log();
|
|
69
|
+
console.log(` Interf engine: ${chalk.bold(service.url)}`);
|
|
70
|
+
console.log(` Interf UI: ${service.url}/`);
|
|
71
|
+
console.log(` Health: ${service.url}/health`);
|
|
72
|
+
console.log(chalk.dim(" Press Ctrl-C to stop."));
|
|
73
|
+
console.log();
|
|
71
74
|
process.on("SIGINT", shutdown);
|
|
72
75
|
process.on("SIGTERM", shutdown);
|
|
73
76
|
await new Promise(() => {
|
|
74
77
|
/* block forever; signals trigger shutdown */
|
|
75
78
|
});
|
|
76
79
|
}
|
|
80
|
+
async function isEngineReachable(url) {
|
|
81
|
+
try {
|
|
82
|
+
const response = await fetch(`${url}/health`);
|
|
83
|
+
return response.status === 200;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async function waitForEngine(url, timeoutMs) {
|
|
90
|
+
const started = Date.now();
|
|
91
|
+
while (Date.now() - started < timeoutMs) {
|
|
92
|
+
if (await isEngineReachable(url))
|
|
93
|
+
return true;
|
|
94
|
+
await new Promise((resolveWait) => setTimeout(resolveWait, 150));
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
function managedWebLogPath(port) {
|
|
99
|
+
return `${dirname(serviceRegistryPath())}/interf-web-${port}.log`;
|
|
100
|
+
}
|
|
101
|
+
async function runWebStart(args) {
|
|
102
|
+
const host = args.host ?? LOCAL_SERVICE_DEFAULT_HOST;
|
|
103
|
+
const port = args.port ?? LOCAL_SERVICE_DEFAULT_PORT;
|
|
104
|
+
const url = buildLocalServiceUrl({ host, port });
|
|
105
|
+
if (await isEngineReachable(url)) {
|
|
106
|
+
writeConnection({ url, auth_token: null });
|
|
107
|
+
console.log(chalk.green(`Interf engine already running at ${chalk.bold(url)}.`));
|
|
108
|
+
console.log(`Interf UI: ${url}/`);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const binPath = process.argv[1];
|
|
112
|
+
if (!binPath) {
|
|
113
|
+
console.error(chalk.red("Cannot locate the Interf CLI entrypoint for managed start."));
|
|
114
|
+
console.error(`Try running \`interf web\` in a separate terminal instead.`);
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
const logPath = args.log ?? managedWebLogPath(port);
|
|
118
|
+
mkdirSync(dirname(logPath), { recursive: true });
|
|
119
|
+
const stdoutFd = openSync(logPath, "a");
|
|
120
|
+
const stderrFd = openSync(logPath, "a");
|
|
121
|
+
let child;
|
|
122
|
+
try {
|
|
123
|
+
child = spawn(process.execPath, [binPath, "web", "--host", host, "--port", String(port)], {
|
|
124
|
+
detached: true,
|
|
125
|
+
stdio: ["ignore", stdoutFd, stderrFd],
|
|
126
|
+
env: process.env,
|
|
127
|
+
});
|
|
128
|
+
child.unref();
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
closeSync(stdoutFd);
|
|
132
|
+
closeSync(stderrFd);
|
|
133
|
+
}
|
|
134
|
+
const ready = await waitForEngine(url, args.timeoutMs ?? 5000);
|
|
135
|
+
if (!ready) {
|
|
136
|
+
console.error(chalk.red(`Timed out waiting for Interf engine at ${url}.`));
|
|
137
|
+
console.error(`Log: ${logPath}`);
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
writeConnection({ url, auth_token: null });
|
|
141
|
+
console.log(chalk.green(`Started Interf engine at ${chalk.bold(url)}.`));
|
|
142
|
+
console.log(`Interf UI: ${url}/`);
|
|
143
|
+
console.log(`Log: ${logPath}`);
|
|
144
|
+
console.log(chalk.dim(`Stop it with \`interf web stop\`.`));
|
|
145
|
+
}
|
|
77
146
|
function findEnginePidByUrl(url) {
|
|
78
147
|
try {
|
|
79
148
|
const raw = readFileSync(serviceRegistryPath(), "utf8");
|
|
@@ -196,6 +265,11 @@ export const webCommand = {
|
|
|
196
265
|
command: "web [subcommand]",
|
|
197
266
|
describe: "Start / stop / inspect the Interf engine",
|
|
198
267
|
builder: (yargs) => yargs
|
|
268
|
+
.command("start", "Start the engine in the background", (y) => y
|
|
269
|
+
.option("host", { type: "string", default: LOCAL_SERVICE_DEFAULT_HOST, describe: "Host to bind" })
|
|
270
|
+
.option("port", { type: "number", default: LOCAL_SERVICE_DEFAULT_PORT, describe: "Port to bind" })
|
|
271
|
+
.option("timeout-ms", { type: "number", default: 5000, describe: "How long to wait for startup" })
|
|
272
|
+
.option("log", { type: "string", describe: "Path to write background engine logs" }), runWebStart)
|
|
199
273
|
.command("stop", "Stop the connected engine", (y) => y
|
|
200
274
|
.option("url", { type: "string", describe: "Override the active connection URL" })
|
|
201
275
|
.option("token", { type: "string", describe: "Override the active bearer token" }), runWebStop)
|