@interf/compiler 0.22.2 → 0.50.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/README.md +119 -282
- package/dist/bin-mcp.d.ts +2 -0
- package/dist/bin-mcp.js +63 -0
- package/dist/bin-runtime.d.ts +2 -0
- package/dist/bin-runtime.js +111 -0
- package/dist/cli/commands/agents.js +4 -35
- package/dist/cli/commands/auth.d.ts +20 -0
- package/dist/cli/commands/auth.js +161 -0
- package/dist/cli/commands/benchmark.d.ts +9 -0
- package/dist/cli/commands/benchmark.js +58 -0
- package/dist/cli/commands/build-plan.js +107 -139
- package/dist/cli/commands/build.d.ts +3 -4
- package/dist/cli/commands/build.js +16 -45
- package/dist/cli/commands/doctor.js +3 -3
- package/dist/cli/commands/graphs.d.ts +2 -0
- package/dist/cli/commands/graphs.js +344 -0
- package/dist/cli/commands/login.js +4 -6
- package/dist/cli/commands/logout.js +1 -1
- package/dist/cli/commands/mcp.d.ts +4 -2
- package/dist/cli/commands/mcp.js +846 -232
- package/dist/cli/commands/project.d.ts +2 -0
- package/dist/cli/commands/project.js +176 -0
- package/dist/cli/commands/reset.d.ts +3 -4
- package/dist/cli/commands/reset.js +10 -31
- package/dist/cli/commands/runs.js +136 -57
- package/dist/cli/commands/runtime.d.ts +24 -0
- package/dist/cli/commands/runtime.js +373 -0
- package/dist/cli/commands/status.d.ts +1 -0
- package/dist/cli/commands/status.js +35 -45
- package/dist/cli/commands/traces.d.ts +2 -0
- package/dist/cli/commands/traces.js +97 -0
- package/dist/cli/commands/wizard.js +171 -178
- package/dist/cli/index.d.ts +7 -4
- package/dist/cli/index.js +13 -7
- package/dist/cli/lib/http-client.d.ts +39 -0
- package/dist/cli/lib/http-client.js +73 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/packages/build-plans/authoring/brief.d.ts +538 -0
- package/dist/packages/build-plans/authoring/brief.js +89 -0
- package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +52 -11
- package/dist/packages/build-plans/authoring/build-plan-authoring.js +493 -46
- package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +10 -1
- package/dist/packages/build-plans/authoring/build-plan-edit-session.js +27 -4
- package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
- package/dist/packages/build-plans/authoring/build-plan-improvement.js +97 -46
- package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.d.ts +1 -0
- package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
- package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
- package/dist/packages/build-plans/build-plan-resolution.js +3 -3
- package/dist/packages/build-plans/index.d.ts +1 -1
- package/dist/packages/build-plans/index.js +1 -1
- package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -13
- package/dist/packages/build-plans/package/build-plan-definitions.js +45 -42
- package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
- package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
- package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
- package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
- package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +5 -4
- package/dist/packages/build-plans/package/build-plan-stage-runner.js +23 -11
- package/dist/packages/build-plans/package/builtin-build-plan.d.ts +7 -8
- package/dist/packages/build-plans/package/builtin-build-plan.js +10 -11
- package/dist/packages/build-plans/package/context-interface.d.ts +14 -9
- package/dist/packages/build-plans/package/context-interface.js +14 -33
- package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
- package/dist/packages/build-plans/package/interf-build-plan-package.js +68 -64
- package/dist/packages/build-plans/package/local-build-plans.d.ts +21 -14
- package/dist/packages/build-plans/package/local-build-plans.js +105 -55
- package/dist/packages/build-plans/package/user-build-plans.js +1 -1
- package/dist/packages/contracts/index.d.ts +5 -2
- package/dist/packages/contracts/index.js +3 -1
- package/dist/packages/contracts/lib/context-graph-layer.d.ts +161 -0
- package/dist/packages/contracts/lib/context-graph-layer.js +216 -0
- package/dist/packages/contracts/lib/project-paths.d.ts +144 -0
- package/dist/packages/contracts/lib/project-paths.js +220 -0
- package/dist/packages/contracts/lib/project-schema.d.ts +423 -0
- package/dist/packages/contracts/lib/project-schema.js +138 -0
- package/dist/packages/contracts/lib/schema.d.ts +1273 -81
- package/dist/packages/contracts/lib/schema.js +675 -79
- package/dist/packages/contracts/utils/filesystem.d.ts +1 -0
- package/dist/packages/contracts/utils/filesystem.js +29 -1
- package/dist/packages/contracts/utils/parse.js +67 -0
- package/dist/packages/projects/index.d.ts +6 -0
- package/dist/packages/{project → projects}/index.js +0 -3
- package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
- package/dist/packages/{project → projects}/interf-detect.js +56 -50
- package/dist/packages/projects/interf.d.ts +2 -0
- package/dist/packages/projects/interf.js +1 -0
- package/dist/packages/projects/lib/schema.d.ts +77 -0
- package/dist/packages/projects/lib/schema.js +91 -0
- package/dist/packages/projects/source-config.d.ts +53 -0
- package/dist/packages/projects/source-config.js +339 -0
- package/dist/packages/projects/source-folders.d.ts +11 -0
- package/dist/packages/{project → projects}/source-folders.js +26 -26
- package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
- package/dist/packages/{engine → runtime}/action-planner.js +20 -22
- package/dist/packages/runtime/action-values.d.ts +1 -0
- package/dist/packages/runtime/action-values.js +1 -0
- package/dist/packages/runtime/actions/errors.d.ts +2 -0
- package/dist/packages/runtime/actions/errors.js +12 -0
- package/dist/packages/runtime/actions/fields.d.ts +86 -0
- package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
- package/dist/packages/runtime/actions/form-builders.js +667 -0
- package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
- package/dist/packages/runtime/actions/form-validators.js +134 -0
- package/dist/packages/runtime/actions/helpers.d.ts +11 -0
- package/dist/packages/runtime/actions/helpers.js +80 -0
- package/dist/packages/runtime/actions/index.d.ts +8 -0
- package/dist/packages/runtime/actions/index.js +11 -0
- package/dist/packages/runtime/actions/registry.d.ts +64 -0
- package/dist/packages/runtime/actions/registry.js +62 -0
- package/dist/packages/runtime/actions/requests.d.ts +45 -0
- package/dist/packages/runtime/actions/requests.js +164 -0
- package/dist/packages/runtime/actions/schemas.d.ts +161 -0
- package/dist/packages/runtime/actions/schemas.js +37 -0
- package/dist/packages/runtime/agent-handoff.d.ts +11 -0
- package/dist/packages/runtime/agent-handoff.js +102 -0
- package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
- package/dist/packages/{engine → runtime}/agents/index.js +1 -2
- package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
- package/dist/packages/runtime/agents/lib/args.js +24 -0
- package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
- package/dist/packages/runtime/agents/lib/constants.js +13 -0
- package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
- package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
- package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
- package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
- package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +14 -0
- package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +31 -14
- package/dist/packages/{engine → runtime}/agents/lib/execution.js +22 -6
- package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +1 -0
- package/dist/packages/{engine → runtime}/agents/lib/executors.js +11 -2
- package/dist/packages/runtime/agents/lib/logs.d.ts +12 -0
- package/dist/packages/runtime/agents/lib/logs.js +41 -0
- package/dist/packages/{engine → runtime}/agents/lib/preflight.js +19 -14
- package/dist/packages/runtime/agents/lib/render.d.ts +26 -0
- package/dist/packages/{engine → runtime}/agents/lib/render.js +48 -22
- package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
- package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
- package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
- package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
- package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
- package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
- package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
- package/dist/packages/runtime/agents/lib/shell-templates.js +494 -0
- package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
- package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
- package/dist/packages/runtime/agents/lib/shells.d.ts +92 -0
- package/dist/packages/runtime/agents/lib/shells.js +509 -0
- package/dist/packages/runtime/agents/lib/source-context-scan.d.ts +10 -0
- package/dist/packages/runtime/agents/lib/source-context-scan.js +388 -0
- package/dist/packages/{engine → runtime}/agents/lib/status.js +1 -14
- package/dist/packages/runtime/agents/lib/string-utils.d.ts +16 -0
- package/dist/packages/runtime/agents/lib/string-utils.js +36 -0
- package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +1 -0
- package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
- package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
- package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
- package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
- package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
- package/dist/packages/runtime/agents/providers/codex.js +66 -0
- package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
- package/dist/packages/runtime/agents/providers/cursor.js +24 -0
- package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
- package/dist/packages/runtime/agents/providers/index.js +31 -0
- package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
- package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
- package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
- package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
- package/dist/packages/{engine → runtime}/agents/role-executors.js +9 -7
- package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
- package/dist/packages/runtime/auth/account-context.d.ts +52 -0
- package/dist/packages/runtime/auth/account-context.js +68 -0
- package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
- package/dist/packages/runtime/auth/auth-flow.js +189 -0
- package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
- package/dist/packages/runtime/auth/jwt-validator.js +86 -0
- package/dist/packages/runtime/auth/keychain.d.ts +35 -0
- package/dist/packages/runtime/auth/keychain.js +85 -0
- package/dist/packages/runtime/auth/session-store.d.ts +38 -0
- package/dist/packages/runtime/auth/session-store.js +96 -0
- package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
- package/dist/packages/runtime/auth/workos-client.js +87 -0
- package/dist/packages/runtime/benchmark-question-draft.d.ts +23 -0
- package/dist/packages/runtime/benchmark-question-draft.js +153 -0
- package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
- package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
- package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +6 -6
- package/dist/packages/{engine → runtime}/build/artifact-status.js +26 -24
- package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
- package/dist/packages/runtime/build/atomic-fs.js +95 -0
- package/dist/packages/runtime/build/billing-events.d.ts +78 -0
- package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
- package/dist/packages/runtime/build/build-evidence.d.ts +16 -0
- package/dist/packages/runtime/build/build-evidence.js +179 -0
- package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
- package/dist/packages/runtime/build/build-pipeline.js +388 -0
- package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
- package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
- package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
- package/dist/packages/runtime/build/build-plan-runs.js +31 -0
- package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
- package/dist/packages/runtime/build/build-stage-plan.js +101 -0
- package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
- package/dist/packages/runtime/build/build-stage-runner.js +302 -0
- package/dist/packages/{engine → runtime}/build/build-target.d.ts +7 -4
- package/dist/packages/runtime/build/build-target.js +40 -0
- package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
- package/dist/packages/runtime/build/check-evaluator.js +1226 -0
- package/dist/packages/runtime/build/context-graph-paths.d.ts +64 -0
- package/dist/packages/runtime/build/context-graph-paths.js +160 -0
- package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
- package/dist/packages/runtime/build/context-graph-schema.js +39 -0
- package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
- package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
- package/dist/packages/{engine → runtime}/build/index.d.ts +7 -5
- package/dist/packages/{engine → runtime}/build/index.js +7 -5
- package/dist/packages/runtime/build/inspect-map.d.ts +10 -0
- package/dist/packages/runtime/build/inspect-map.js +270 -0
- package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +449 -123
- package/dist/packages/runtime/build/lib/schema.js +494 -0
- package/dist/packages/runtime/build/native-entrypoint.d.ts +2 -0
- package/dist/packages/runtime/build/native-entrypoint.js +286 -0
- package/dist/packages/runtime/build/reset.d.ts +2 -0
- package/dist/packages/runtime/build/reset.js +62 -0
- package/dist/packages/{engine → runtime}/build/runtime-contracts.js +13 -7
- package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
- package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
- package/dist/packages/runtime/build/runtime-log-paths.d.ts +3 -0
- package/dist/packages/runtime/build/runtime-log-paths.js +16 -0
- package/dist/packages/{engine → runtime}/build/runtime-prompt.js +12 -9
- package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
- package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
- package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
- package/dist/packages/runtime/build/runtime-runs.js +318 -0
- package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +9 -6
- package/dist/packages/runtime/build/runtime-types.js +1 -0
- package/dist/packages/runtime/build/runtime.d.ts +8 -0
- package/dist/packages/runtime/build/runtime.js +7 -0
- package/dist/packages/runtime/build/source-files.d.ts +58 -0
- package/dist/packages/runtime/build/source-files.js +193 -0
- package/dist/packages/runtime/build/source-inventory.d.ts +28 -0
- package/dist/packages/runtime/build/source-inventory.js +512 -0
- package/dist/packages/runtime/build/source-manifest.d.ts +63 -0
- package/dist/packages/runtime/build/source-manifest.js +220 -0
- package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
- package/dist/packages/runtime/build/stage-evidence.js +386 -0
- package/dist/packages/runtime/build/stage-manifest.d.ts +45 -0
- package/dist/packages/runtime/build/stage-manifest.js +1125 -0
- package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
- package/dist/packages/runtime/build/stage-reuse.js +154 -0
- package/dist/packages/runtime/build/stage-session.d.ts +81 -0
- package/dist/packages/runtime/build/stage-session.js +308 -0
- package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
- package/dist/packages/runtime/build/state-artifacts.js +14 -0
- package/dist/packages/runtime/build/state-health.d.ts +4 -0
- package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
- package/dist/packages/runtime/build/state-io.d.ts +12 -0
- package/dist/packages/runtime/build/state-io.js +118 -0
- package/dist/packages/runtime/build/state-view.d.ts +5 -0
- package/dist/packages/runtime/build/state-view.js +121 -0
- package/dist/packages/runtime/build/state.d.ts +7 -0
- package/dist/packages/runtime/build/state.js +12 -0
- package/dist/packages/runtime/build/summary-coverage-index.d.ts +21 -0
- package/dist/packages/runtime/build/summary-coverage-index.js +189 -0
- package/dist/packages/runtime/build/traces.d.ts +30 -0
- package/dist/packages/runtime/build/traces.js +133 -0
- package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
- package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +49 -36
- package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
- package/dist/packages/{engine → runtime}/build/validate.js +26 -26
- package/dist/packages/{engine → runtime}/client.d.ts +18 -18
- package/dist/packages/{engine → runtime}/client.js +48 -36
- package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
- package/dist/packages/{engine → runtime}/connection-config.js +9 -8
- package/dist/packages/runtime/context-checks.d.ts +10 -0
- package/dist/packages/runtime/context-checks.js +127 -0
- package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
- package/dist/packages/runtime/context-graph-scaffold.js +135 -0
- package/dist/packages/runtime/context-graph-semantic-graph.d.ts +9 -0
- package/dist/packages/runtime/context-graph-semantic-graph.js +416 -0
- package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
- package/dist/packages/runtime/entitlement-guard.js +70 -0
- package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
- package/dist/packages/{engine → runtime}/execution/index.js +1 -1
- package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +272 -191
- package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
- package/dist/packages/runtime/index.d.ts +29 -0
- package/dist/packages/runtime/index.js +21 -0
- package/dist/packages/runtime/instance-paths.d.ts +30 -0
- package/dist/packages/runtime/instance-paths.js +29 -0
- package/dist/packages/runtime/native-run-handlers.d.ts +63 -0
- package/dist/packages/{engine → runtime}/native-run-handlers.js +217 -166
- package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
- package/dist/packages/runtime/plan-artifact-contract.js +42 -0
- package/dist/packages/runtime/project-entries.d.ts +11 -0
- package/dist/packages/runtime/project-entries.js +49 -0
- package/dist/packages/runtime/project-source-state.d.ts +26 -0
- package/dist/packages/runtime/project-source-state.js +56 -0
- package/dist/packages/runtime/project-store.d.ts +90 -0
- package/dist/packages/runtime/project-store.js +195 -0
- package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
- package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
- package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
- package/dist/packages/{engine → runtime}/run-observability.js +174 -87
- package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
- package/dist/packages/runtime/runtime-action-proposals.js +542 -0
- package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
- package/dist/packages/runtime/runtime-build-plans.js +175 -0
- package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
- package/dist/packages/runtime/runtime-build-runs.js +555 -0
- package/dist/packages/runtime/runtime-caches.d.ts +117 -0
- package/dist/packages/runtime/runtime-caches.js +266 -0
- package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
- package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
- package/dist/packages/runtime/runtime-executor.d.ts +22 -0
- package/dist/packages/runtime/runtime-executor.js +131 -0
- package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
- package/dist/packages/runtime/runtime-jobs.js +463 -0
- package/dist/packages/runtime/runtime-observability.d.ts +11 -0
- package/dist/packages/runtime/runtime-observability.js +39 -0
- package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
- package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
- package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
- package/dist/packages/runtime/runtime-project-mutations.js +65 -0
- package/dist/packages/runtime/runtime-project-reads.d.ts +18 -0
- package/dist/packages/runtime/runtime-project-reads.js +574 -0
- package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
- package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
- package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +23 -16
- package/dist/packages/{engine → runtime}/runtime-resource-builders.js +58 -46
- package/dist/packages/runtime/runtime-status.d.ts +14 -0
- package/dist/packages/runtime/runtime-status.js +15 -0
- package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
- package/dist/packages/runtime/runtime-verify-runs.js +296 -0
- package/dist/packages/runtime/runtime.d.ts +1582 -0
- package/dist/packages/runtime/runtime.js +431 -0
- package/dist/packages/runtime/schemas/actions.d.ts +1206 -0
- package/dist/packages/runtime/schemas/actions.js +117 -0
- package/dist/packages/runtime/schemas/agents.d.ts +104 -0
- package/dist/packages/runtime/schemas/agents.js +74 -0
- package/dist/packages/runtime/schemas/build-plans.d.ts +1132 -0
- package/dist/packages/runtime/schemas/build-plans.js +141 -0
- package/dist/packages/runtime/schemas/context-graphs.d.ts +1522 -0
- package/dist/packages/runtime/schemas/context-graphs.js +110 -0
- package/dist/packages/runtime/schemas/files.d.ts +227 -0
- package/dist/packages/runtime/schemas/files.js +28 -0
- package/dist/packages/runtime/schemas/index.d.ts +9 -0
- package/dist/packages/runtime/schemas/index.js +13 -0
- package/dist/packages/runtime/schemas/instance.d.ts +141 -0
- package/dist/packages/runtime/schemas/instance.js +143 -0
- package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
- package/dist/packages/runtime/schemas/jobs.js +107 -0
- package/dist/packages/runtime/schemas/projects.d.ts +366 -0
- package/dist/packages/runtime/schemas/projects.js +160 -0
- package/dist/packages/runtime/schemas/runs.d.ts +3445 -0
- package/dist/packages/runtime/schemas/runs.js +115 -0
- package/dist/packages/runtime/service/index.d.ts +3 -0
- package/dist/packages/runtime/service/index.js +3 -0
- package/dist/packages/runtime/service/openapi.d.ts +7 -0
- package/dist/packages/runtime/service/openapi.js +118 -0
- package/dist/packages/runtime/service/operations.d.ts +3011 -0
- package/dist/packages/runtime/service/operations.js +375 -0
- package/dist/packages/runtime/service/routes.d.ts +114 -0
- package/dist/packages/runtime/service/routes.js +128 -0
- package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
- package/dist/packages/runtime/service/server-api-files.js +85 -0
- package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
- package/dist/packages/runtime/service/server-app-boot.js +46 -0
- package/dist/packages/runtime/service/server-guards.d.ts +63 -0
- package/dist/packages/runtime/service/server-guards.js +181 -0
- package/dist/packages/runtime/service/server-helpers.d.ts +38 -0
- package/dist/packages/runtime/service/server-helpers.js +108 -0
- package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
- package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
- package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-action-proposals.js +45 -0
- package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-agents.js +132 -0
- package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
- package/dist/packages/runtime/service/server-routes-auth.js +138 -0
- package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-build-plans.js +86 -0
- package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
- package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
- package/dist/packages/runtime/service/server-routes-events.js +99 -0
- package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
- package/dist/packages/runtime/service/server-routes-project-context.js +287 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.js +137 -0
- package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
- package/dist/packages/runtime/service/server-routes-project-runs.js +88 -0
- package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-projects.js +96 -0
- package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-runs.js +119 -0
- package/dist/packages/runtime/service/server.d.ts +37 -0
- package/dist/packages/runtime/service/server.js +300 -0
- package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
- package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
- package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
- package/dist/packages/runtime/verify/benchmark-run.js +303 -0
- package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
- package/dist/packages/{engine → runtime}/verify/index.js +1 -1
- package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
- package/dist/packages/{engine → runtime}/verify/lib/schema.js +38 -18
- package/dist/packages/runtime/verify/test-file-guard.d.ts +2 -0
- package/dist/packages/runtime/verify/test-file-guard.js +29 -0
- package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +7 -0
- package/dist/packages/{engine → runtime}/verify/verify-execution.js +119 -45
- package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +5 -4
- package/dist/packages/runtime/verify/verify-paths.js +65 -0
- package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
- package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
- package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
- package/dist/packages/runtime/verify/verify-specs.js +126 -0
- package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
- package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
- package/dist/packages/runtime/verify/verify-types.js +1 -0
- package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
- package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
- package/dist/packages/runtime/wire-schemas.d.ts +18 -0
- package/dist/packages/runtime/wire-schemas.js +27 -0
- package/package.json +32 -30
- package/public-repo/CONTRIBUTING.md +16 -18
- package/public-repo/README.md +119 -282
- package/public-repo/SECURITY.md +3 -4
- package/public-repo/build-plans/interf-default/README.md +24 -16
- package/public-repo/build-plans/interf-default/build/stages/entrypoint/SKILL.md +74 -0
- package/public-repo/build-plans/interf-default/build/stages/knowledge/SKILL.md +95 -0
- package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +49 -4
- package/public-repo/build-plans/interf-default/build-plan.json +49 -39
- package/public-repo/build-plans/interf-default/build-plan.schema.json +59 -33
- package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
- package/public-repo/build-plans/interf-default/use/query/SKILL.md +18 -11
- package/public-repo/openapi/local-service.openapi.json +14227 -0
- package/public-repo/skills/interf/SKILL.md +508 -187
- package/dist/cli/commands/prep.d.ts +0 -2
- package/dist/cli/commands/prep.js +0 -240
- package/dist/cli/commands/test.d.ts +0 -10
- package/dist/cli/commands/test.js +0 -85
- package/dist/cli/commands/web.d.ts +0 -2
- package/dist/cli/commands/web.js +0 -286
- package/dist/interf-ui/404.html +0 -1
- package/dist/interf-ui/__next.__PAGE__.txt +0 -10
- package/dist/interf-ui/__next._full.txt +0 -20
- package/dist/interf-ui/__next._head.txt +0 -5
- package/dist/interf-ui/__next._index.txt +0 -5
- package/dist/interf-ui/__next._tree.txt +0 -5
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
- package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
- package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
- package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
- package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
- package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
- package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
- package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
- package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
- package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
- package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
- package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
- package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
- package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
- package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
- package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
- package/dist/interf-ui/_not-found/__next._full.txt +0 -15
- package/dist/interf-ui/_not-found/__next._head.txt +0 -5
- package/dist/interf-ui/_not-found/__next._index.txt +0 -5
- package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
- package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
- package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
- package/dist/interf-ui/_not-found.html +0 -1
- package/dist/interf-ui/_not-found.txt +0 -15
- package/dist/interf-ui/index.html +0 -1
- package/dist/interf-ui/index.txt +0 -20
- package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
- package/dist/packages/contracts/lib/preparation-paths.js +0 -177
- package/dist/packages/engine/action-definitions.d.ts +0 -407
- package/dist/packages/engine/action-definitions.js +0 -1158
- package/dist/packages/engine/action-values.d.ts +0 -1
- package/dist/packages/engine/action-values.js +0 -1
- package/dist/packages/engine/agents/lib/args.d.ts +0 -4
- package/dist/packages/engine/agents/lib/args.js +0 -52
- package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
- package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
- package/dist/packages/engine/agents/lib/constants.js +0 -28
- package/dist/packages/engine/agents/lib/logs.d.ts +0 -2
- package/dist/packages/engine/agents/lib/logs.js +0 -17
- package/dist/packages/engine/agents/lib/render.d.ts +0 -8
- package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
- package/dist/packages/engine/agents/lib/schema.js +0 -7
- package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
- package/dist/packages/engine/agents/lib/shells.js +0 -1052
- package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
- package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
- package/dist/packages/engine/build/billing-events.d.ts +0 -89
- package/dist/packages/engine/build/build-pipeline.js +0 -175
- package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
- package/dist/packages/engine/build/build-plan-runs.js +0 -31
- package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
- package/dist/packages/engine/build/build-stage-plan.js +0 -100
- package/dist/packages/engine/build/build-stage-runner.js +0 -94
- package/dist/packages/engine/build/build-target.js +0 -16
- package/dist/packages/engine/build/check-evaluator.js +0 -298
- package/dist/packages/engine/build/lib/schema.js +0 -316
- package/dist/packages/engine/build/reset.d.ts +0 -2
- package/dist/packages/engine/build/reset.js +0 -74
- package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
- package/dist/packages/engine/build/runtime-paths.d.ts +0 -8
- package/dist/packages/engine/build/runtime-paths.js +0 -26
- package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
- package/dist/packages/engine/build/runtime-runs.js +0 -224
- package/dist/packages/engine/build/runtime.d.ts +0 -5
- package/dist/packages/engine/build/runtime.js +0 -4
- package/dist/packages/engine/build/source-files.d.ts +0 -46
- package/dist/packages/engine/build/source-files.js +0 -149
- package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
- package/dist/packages/engine/build/state-artifacts.js +0 -14
- package/dist/packages/engine/build/state-health.d.ts +0 -4
- package/dist/packages/engine/build/state-io.d.ts +0 -11
- package/dist/packages/engine/build/state-io.js +0 -82
- package/dist/packages/engine/build/state-paths.d.ts +0 -5
- package/dist/packages/engine/build/state-paths.js +0 -16
- package/dist/packages/engine/build/state-view.d.ts +0 -5
- package/dist/packages/engine/build/state-view.js +0 -94
- package/dist/packages/engine/build/state.d.ts +0 -7
- package/dist/packages/engine/build/state.js +0 -12
- package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
- package/dist/packages/engine/build/validate-helpers.js +0 -41
- package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
- package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
- package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
- package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
- package/dist/packages/engine/cloud-seams.d.ts +0 -115
- package/dist/packages/engine/cloud-seams.js +0 -84
- package/dist/packages/engine/index.d.ts +0 -22
- package/dist/packages/engine/index.js +0 -15
- package/dist/packages/engine/instance-paths.d.ts +0 -106
- package/dist/packages/engine/instance-paths.js +0 -171
- package/dist/packages/engine/lib/schema.d.ts +0 -6304
- package/dist/packages/engine/lib/schema.js +0 -730
- package/dist/packages/engine/native-run-handlers.d.ts +0 -25
- package/dist/packages/engine/preparation-store.d.ts +0 -105
- package/dist/packages/engine/preparation-store.js +0 -213
- package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
- package/dist/packages/engine/readiness-check-draft.js +0 -111
- package/dist/packages/engine/requested-artifacts.d.ts +0 -5
- package/dist/packages/engine/routes.d.ts +0 -85
- package/dist/packages/engine/routes.js +0 -99
- package/dist/packages/engine/runtime-caches.d.ts +0 -76
- package/dist/packages/engine/runtime-caches.js +0 -191
- package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
- package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
- package/dist/packages/engine/runtime.d.ts +0 -371
- package/dist/packages/engine/runtime.js +0 -2463
- package/dist/packages/engine/server.d.ts +0 -58
- package/dist/packages/engine/server.js +0 -1399
- package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
- package/dist/packages/engine/verify/readiness-check-run.js +0 -265
- package/dist/packages/engine/verify/verify-paths.js +0 -61
- package/dist/packages/engine/verify/verify-sandbox.js +0 -88
- package/dist/packages/engine/verify/verify-specs.js +0 -114
- package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
- package/dist/packages/engine/wire-schemas.d.ts +0 -547
- package/dist/packages/engine/wire-schemas.js +0 -59
- package/dist/packages/project/index.d.ts +0 -9
- package/dist/packages/project/interf-bootstrap.d.ts +0 -1
- package/dist/packages/project/interf-bootstrap.js +0 -1
- package/dist/packages/project/interf-scaffold.d.ts +0 -3
- package/dist/packages/project/interf-scaffold.js +0 -136
- package/dist/packages/project/interf.d.ts +0 -4
- package/dist/packages/project/interf.js +0 -3
- package/dist/packages/project/lib/schema.d.ts +0 -328
- package/dist/packages/project/lib/schema.js +0 -136
- package/dist/packages/project/preparation-entries.d.ts +0 -11
- package/dist/packages/project/preparation-entries.js +0 -49
- package/dist/packages/project/source-config.d.ts +0 -46
- package/dist/packages/project/source-config.js +0 -394
- package/dist/packages/project/source-folders.d.ts +0 -11
- package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +0 -27
- package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +0 -21
- package/public-repo/plugins/README.md +0 -9
- package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
- package/public-repo/plugins/interf/.mcp.json +0 -12
- package/public-repo/plugins/interf/README.md +0 -32
- package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
- /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
- /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
- /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
- /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
- /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* `interf` (no subcommand) and `interf init` — the wizard.
|
|
3
3
|
*
|
|
4
4
|
* Casual-user entry point. End-to-end onboarding:
|
|
5
|
-
* - If no connection → connect to an already-running local
|
|
6
|
-
* whether to start the foreground local
|
|
7
|
-
* - Once connected → action menu (list / create / build / test /
|
|
5
|
+
* - If no connection → connect to an already-running local service, or ask
|
|
6
|
+
* whether to start the foreground local service, connect remote, or quit.
|
|
7
|
+
* - Once connected → action menu (list / create / build / test / stop service / quit).
|
|
8
8
|
* - Each action loops back to the menu instead of exiting.
|
|
9
9
|
*
|
|
10
|
-
* Agents bypass the wizard entirely. They use `interf
|
|
10
|
+
* Agents bypass the wizard entirely. They use `interf project`, `interf build`,
|
|
11
11
|
* etc. directly. The wizard is purely a UX wrapper around those CLI commands.
|
|
12
12
|
*/
|
|
13
13
|
import chalk from "chalk";
|
|
@@ -16,30 +16,9 @@ import { existsSync, statSync } from "node:fs";
|
|
|
16
16
|
import { homedir } from "node:os";
|
|
17
17
|
import { basename, resolve } from "node:path";
|
|
18
18
|
import { spawn } from "node:child_process";
|
|
19
|
-
import { ConnectionRecordSchema, readActiveConnection, writeConnection, } from "../../packages/
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
const headers = new Headers();
|
|
23
|
-
if (token)
|
|
24
|
-
headers.set("authorization", `Bearer ${token}`);
|
|
25
|
-
try {
|
|
26
|
-
const response = await fetch(url, { headers });
|
|
27
|
-
const raw = await response.text();
|
|
28
|
-
let body = null;
|
|
29
|
-
if (raw) {
|
|
30
|
-
try {
|
|
31
|
-
body = JSON.parse(raw);
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
body = null;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return { status: response.status, body };
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return { status: 0, body: null };
|
|
41
|
-
}
|
|
42
|
-
}
|
|
19
|
+
import { ConnectionRecordSchema, readActiveConnection, writeConnection, } from "../../packages/runtime/connection-config.js";
|
|
20
|
+
import { callJsonSafe } from "../lib/http-client.js";
|
|
21
|
+
import { LOCAL_SERVICE_DEFAULT_HOST, LOCAL_SERVICE_DEFAULT_PORT } from "../../packages/runtime/service/routes.js";
|
|
43
22
|
function spawnInterf(args) {
|
|
44
23
|
return new Promise((resolveSpawn) => {
|
|
45
24
|
const child = spawn(process.argv[1] ?? "interf", args, { stdio: "inherit" });
|
|
@@ -60,9 +39,9 @@ function isHttpUrl(value) {
|
|
|
60
39
|
}
|
|
61
40
|
}
|
|
62
41
|
/**
|
|
63
|
-
* Probe a URL's `/health` endpoint and return whether the
|
|
42
|
+
* Probe a URL's `/health` endpoint and return whether the local service is up.
|
|
64
43
|
* Used as a fallback when `connection.json` may be missing (e.g. older
|
|
65
|
-
* `interf
|
|
44
|
+
* `interf runtime` binaries that don't write the connection record).
|
|
66
45
|
*/
|
|
67
46
|
async function probeHealth(url) {
|
|
68
47
|
try {
|
|
@@ -73,29 +52,64 @@ async function probeHealth(url) {
|
|
|
73
52
|
return false;
|
|
74
53
|
}
|
|
75
54
|
}
|
|
55
|
+
async function serviceRequiresAuth(url) {
|
|
56
|
+
try {
|
|
57
|
+
const response = await fetch(`${url.replace(/\/+$/, "")}/v1/instance`);
|
|
58
|
+
if (response.status !== 200)
|
|
59
|
+
return true;
|
|
60
|
+
const body = await response.json();
|
|
61
|
+
return body.auth_required === true;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function activeConnectionForUrl(url) {
|
|
68
|
+
const normalized = url.replace(/\/+$/, "");
|
|
69
|
+
const conn = readActiveConnection();
|
|
70
|
+
if (!conn)
|
|
71
|
+
return null;
|
|
72
|
+
return conn.url.replace(/\/+$/, "") === normalized
|
|
73
|
+
? { url: normalized, token: conn.auth_token }
|
|
74
|
+
: null;
|
|
75
|
+
}
|
|
76
|
+
async function connectToReachableEngine(url) {
|
|
77
|
+
const normalized = url.replace(/\/+$/, "");
|
|
78
|
+
const existing = activeConnectionForUrl(normalized);
|
|
79
|
+
if (existing)
|
|
80
|
+
return existing;
|
|
81
|
+
if (await serviceRequiresAuth(normalized))
|
|
82
|
+
return null;
|
|
83
|
+
try {
|
|
84
|
+
writeConnection({ url: normalized, auth_token: null });
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// best effort
|
|
88
|
+
}
|
|
89
|
+
return { url: normalized, token: null };
|
|
90
|
+
}
|
|
76
91
|
/**
|
|
77
|
-
* Connect to
|
|
92
|
+
* Connect to a local service. Either an existing one already running on the
|
|
78
93
|
* default port (with a `wasAlreadyRunning` flag so the caller can tell
|
|
79
94
|
* the user honestly) or a fresh one we spawn here.
|
|
80
95
|
*
|
|
81
96
|
* Returns null on timeout / error.
|
|
82
97
|
*/
|
|
83
98
|
async function startLocalEngineInBackground() {
|
|
84
|
-
// First: check whether
|
|
99
|
+
// First: check whether a local service is ALREADY running on the default
|
|
85
100
|
// port. If so, don't pretend to start a new one — just connect.
|
|
86
101
|
if (await probeHealth(DEFAULT_ENGINE_URL)) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
// best effort
|
|
102
|
+
const existing = await connectToReachableEngine(DEFAULT_ENGINE_URL);
|
|
103
|
+
if (!existing) {
|
|
104
|
+
console.log(chalk.yellow(` Local service already running at ${DEFAULT_ENGINE_URL}, but no bearer token is available.`));
|
|
105
|
+
return null;
|
|
92
106
|
}
|
|
93
|
-
console.log(chalk.dim(`
|
|
94
|
-
return {
|
|
107
|
+
console.log(chalk.dim(` Local service already running at ${DEFAULT_ENGINE_URL} — connecting.`));
|
|
108
|
+
return { ...existing, wasAlreadyRunning: true };
|
|
95
109
|
}
|
|
96
110
|
const spinner = p.spinner();
|
|
97
|
-
spinner.start("Starting local Interf
|
|
98
|
-
const child = spawn(process.argv[1] ?? "interf", ["
|
|
111
|
+
spinner.start("Starting local Interf service...");
|
|
112
|
+
const child = spawn(process.argv[1] ?? "interf", ["runtime"], {
|
|
99
113
|
detached: true,
|
|
100
114
|
stdio: "ignore",
|
|
101
115
|
});
|
|
@@ -104,34 +118,31 @@ async function startLocalEngineInBackground() {
|
|
|
104
118
|
const timeoutMs = 30_000;
|
|
105
119
|
while (Date.now() - startedAt < timeoutMs) {
|
|
106
120
|
await new Promise((r) => setTimeout(r, 250));
|
|
107
|
-
// Path A: connection.json written by the spawned
|
|
121
|
+
// Path A: connection.json written by the spawned server.
|
|
108
122
|
const conn = readActiveConnection();
|
|
109
123
|
if (conn) {
|
|
110
124
|
const url = conn.url.replace(/\/+$/, "");
|
|
111
125
|
if (await probeHealth(url)) {
|
|
112
|
-
spinner.stop(chalk.green(`
|
|
126
|
+
spinner.stop(chalk.green(`Local service ready at ${url}`));
|
|
113
127
|
return { url, token: conn.auth_token, wasAlreadyRunning: false };
|
|
114
128
|
}
|
|
115
129
|
}
|
|
116
|
-
// Path B: spawned
|
|
130
|
+
// Path B: spawned service is ready on the default URL.
|
|
117
131
|
if (await probeHealth(DEFAULT_ENGINE_URL)) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
// best effort
|
|
132
|
+
const existing = await connectToReachableEngine(DEFAULT_ENGINE_URL);
|
|
133
|
+
if (existing) {
|
|
134
|
+
spinner.stop(chalk.green(`Local service ready at ${DEFAULT_ENGINE_URL}`));
|
|
135
|
+
return { ...existing, wasAlreadyRunning: false };
|
|
123
136
|
}
|
|
124
|
-
spinner.stop(chalk.green(`Engine ready at ${DEFAULT_ENGINE_URL}`));
|
|
125
|
-
return { url: DEFAULT_ENGINE_URL, token: null, wasAlreadyRunning: false };
|
|
126
137
|
}
|
|
127
138
|
}
|
|
128
|
-
spinner.stop(chalk.red("Timed out waiting for
|
|
139
|
+
spinner.stop(chalk.red("Timed out waiting for local service to start."));
|
|
129
140
|
return null;
|
|
130
141
|
}
|
|
131
142
|
/**
|
|
132
143
|
* Print the canonical connect-or-error hint and exit non-zero. Used
|
|
133
|
-
* whenever the wizard needs
|
|
134
|
-
* exists. The wizard does NOT auto-start
|
|
144
|
+
* whenever the wizard needs a local service but no reachable connection
|
|
145
|
+
* exists. The wizard does NOT auto-start a service — `interf runtime` is
|
|
135
146
|
* the explicit, foreground way to run one.
|
|
136
147
|
*/
|
|
137
148
|
function exitNoEngineConnected(reason) {
|
|
@@ -139,9 +150,9 @@ function exitNoEngineConnected(reason) {
|
|
|
139
150
|
console.log(chalk.yellow(` ${reason}`));
|
|
140
151
|
console.log();
|
|
141
152
|
console.log(" Start one in another terminal:");
|
|
142
|
-
console.log(chalk.bold(" interf
|
|
153
|
+
console.log(chalk.bold(" interf runtime"));
|
|
143
154
|
console.log();
|
|
144
|
-
console.log(" Or connect to a remote
|
|
155
|
+
console.log(" Or connect to a remote service:");
|
|
145
156
|
console.log(chalk.bold(" interf login --url <https://…>"));
|
|
146
157
|
console.log();
|
|
147
158
|
process.exit(1);
|
|
@@ -156,8 +167,8 @@ async function promptForConnection(reason) {
|
|
|
156
167
|
const choice = await p.select({
|
|
157
168
|
message: "How do you want to continue?",
|
|
158
169
|
options: [
|
|
159
|
-
{ value: "start-local", label: "Start local
|
|
160
|
-
{ value: "connect-remote", label: "Connect to remote
|
|
170
|
+
{ value: "start-local", label: "Start local service" },
|
|
171
|
+
{ value: "connect-remote", label: "Connect to remote service" },
|
|
161
172
|
{ value: "quit", label: chalk.dim("Exit") },
|
|
162
173
|
],
|
|
163
174
|
initialValue: "start-local",
|
|
@@ -168,13 +179,13 @@ async function promptForConnection(reason) {
|
|
|
168
179
|
}
|
|
169
180
|
if (choice === "start-local") {
|
|
170
181
|
console.log();
|
|
171
|
-
console.log(chalk.dim(" Starting `interf
|
|
182
|
+
console.log(chalk.dim(" Starting `interf runtime` in this terminal. Press Ctrl-C to stop the service."));
|
|
172
183
|
console.log();
|
|
173
|
-
const code = await spawnInterf(["
|
|
184
|
+
const code = await spawnInterf(["runtime"]);
|
|
174
185
|
process.exit(code);
|
|
175
186
|
}
|
|
176
187
|
const urlValue = await p.text({
|
|
177
|
-
message: "Remote
|
|
188
|
+
message: "Remote service URL",
|
|
178
189
|
placeholder: "https://api.interf.cloud",
|
|
179
190
|
validate: (value) => {
|
|
180
191
|
const trimmed = String(value ?? "").trim();
|
|
@@ -201,7 +212,7 @@ async function promptForConnection(reason) {
|
|
|
201
212
|
auth_token: String(tokenValue ?? "").trim() || null,
|
|
202
213
|
});
|
|
203
214
|
const url = record.url.replace(/\/+$/, "");
|
|
204
|
-
const probe = await
|
|
215
|
+
const probe = await callJsonSafe(`${url}/health`, record.auth_token);
|
|
205
216
|
if (probe.status === 0) {
|
|
206
217
|
return promptForConnection(`Connection ${url} is unreachable.`);
|
|
207
218
|
}
|
|
@@ -265,28 +276,28 @@ async function promptSourcePath() {
|
|
|
265
276
|
}
|
|
266
277
|
return String(choice);
|
|
267
278
|
}
|
|
268
|
-
async function
|
|
269
|
-
const
|
|
270
|
-
message: "
|
|
271
|
-
placeholder: "my-
|
|
279
|
+
async function flowCreateProject(conn) {
|
|
280
|
+
const projectId = await p.text({
|
|
281
|
+
message: "Project id (a short name for this agent task)",
|
|
282
|
+
placeholder: "my-project",
|
|
272
283
|
validate: (value) => (/^[a-z0-9][a-z0-9-]*$/.test(value) ? undefined : "Lowercase letters, numbers, and dashes only."),
|
|
273
284
|
});
|
|
274
|
-
if (p.isCancel(
|
|
275
|
-
return null;
|
|
276
|
-
const about = await p.text({
|
|
277
|
-
message: "What is this preparation for? (one line — the agent task intent)",
|
|
278
|
-
placeholder: "Prepare these notes so an agent can answer questions about them.",
|
|
279
|
-
});
|
|
280
|
-
if (p.isCancel(about))
|
|
285
|
+
if (p.isCancel(projectId))
|
|
281
286
|
return null;
|
|
282
|
-
const aboutText = String(about ?? "").trim();
|
|
283
287
|
const sourcePath = await promptSourcePath();
|
|
284
288
|
if (!sourcePath)
|
|
285
289
|
return null;
|
|
290
|
+
const intent = await p.text({
|
|
291
|
+
message: "What should the agent do with this Source?",
|
|
292
|
+
placeholder: "Compare the launch timeline against approval notes and produce a sourced handoff.",
|
|
293
|
+
validate: (value) => String(value).trim().length > 0 ? undefined : "Agent task is required.",
|
|
294
|
+
});
|
|
295
|
+
if (p.isCancel(intent))
|
|
296
|
+
return null;
|
|
286
297
|
// Offer saved Build Plans, but keep selection optional. The agent-first
|
|
287
|
-
// path usually creates the
|
|
288
|
-
//
|
|
289
|
-
const buildPlansResp = await
|
|
298
|
+
// path usually creates the Project from Source first, then drafts a
|
|
299
|
+
// custom Build Plan for review.
|
|
300
|
+
const buildPlansResp = await callJsonSafe(`${conn.url}/v1/build-plans`, conn.token);
|
|
290
301
|
const buildPlans = buildPlansResp.body?.build_plans ?? [];
|
|
291
302
|
const buildPlanOptions = buildPlans
|
|
292
303
|
.map((plan) => ({ value: plan.build_plan_id ?? plan.id ?? "", label: `${plan.build_plan_id ?? plan.id ?? "(?)"}${plan.label ? ` - ${plan.label}` : ""}` }))
|
|
@@ -339,30 +350,31 @@ async function flowCreatePreparation(conn) {
|
|
|
339
350
|
}
|
|
340
351
|
}
|
|
341
352
|
const exitCode = await spawnInterf([
|
|
342
|
-
"
|
|
353
|
+
"project",
|
|
343
354
|
"create",
|
|
344
|
-
String(
|
|
355
|
+
String(projectId),
|
|
345
356
|
"--source",
|
|
346
357
|
resolve(String(sourcePath)),
|
|
358
|
+
"--intent",
|
|
359
|
+
String(intent),
|
|
347
360
|
...(buildPlanId ? ["--build-plan", buildPlanId] : []),
|
|
348
|
-
...(aboutText ? ["--about", aboutText] : []),
|
|
349
361
|
]);
|
|
350
362
|
if (exitCode !== 0)
|
|
351
363
|
return null;
|
|
352
|
-
return String(
|
|
364
|
+
return { id: String(projectId), buildPlanId };
|
|
353
365
|
}
|
|
354
|
-
async function
|
|
355
|
-
const
|
|
356
|
-
const list =
|
|
366
|
+
async function pickProject(conn, message) {
|
|
367
|
+
const projects = await callJsonSafe(`${conn.url}/v1/projects`, conn.token);
|
|
368
|
+
const list = projects.body?.projects ?? [];
|
|
357
369
|
if (list.length === 0) {
|
|
358
|
-
console.log(chalk.dim(" No
|
|
370
|
+
console.log(chalk.dim(" No Projects yet. Create one first."));
|
|
359
371
|
return null;
|
|
360
372
|
}
|
|
361
373
|
const choice = await p.select({
|
|
362
374
|
message,
|
|
363
|
-
options: list.map((
|
|
364
|
-
value:
|
|
365
|
-
label: `${
|
|
375
|
+
options: list.map((project) => ({
|
|
376
|
+
value: project.id,
|
|
377
|
+
label: `${project.id} ${chalk.dim(`(${project.build_plan_id ?? "no Build Plan"} · ${project.readiness?.status ?? "-"})`)}`,
|
|
366
378
|
})),
|
|
367
379
|
});
|
|
368
380
|
if (p.isCancel(choice))
|
|
@@ -371,28 +383,27 @@ async function pickPreparation(conn, message) {
|
|
|
371
383
|
}
|
|
372
384
|
async function showActionMenu(conn, options = { allowAgentRuns: true }) {
|
|
373
385
|
const buildLabel = options.allowAgentRuns
|
|
374
|
-
? "Build a
|
|
375
|
-
: chalk.dim("Build a
|
|
376
|
-
const
|
|
377
|
-
? "Run
|
|
378
|
-
: chalk.dim("
|
|
386
|
+
? "Build a Project"
|
|
387
|
+
: chalk.dim("Build a Project (no agents available)");
|
|
388
|
+
const benchmarkLabel = options.allowAgentRuns
|
|
389
|
+
? "Run benchmark/evaluation"
|
|
390
|
+
: chalk.dim("Benchmark/evaluation (no agents available)");
|
|
379
391
|
const action = await p.select({
|
|
380
392
|
message: "What do you want to do?",
|
|
381
393
|
options: [
|
|
382
|
-
{ value: "
|
|
383
|
-
{ value: "
|
|
384
|
-
{ value: "create", label: "Create a new preparation" },
|
|
394
|
+
{ value: "ls", label: "List Projects" },
|
|
395
|
+
{ value: "create", label: "Create a new Project" },
|
|
385
396
|
{ value: "agents", label: "Manage agents (list / register / role-map)" },
|
|
386
397
|
{ value: "build", label: buildLabel },
|
|
387
|
-
{ value: "
|
|
388
|
-
{ value: "stop", label: "Stop the local
|
|
398
|
+
{ value: "benchmark", label: benchmarkLabel },
|
|
399
|
+
{ value: "stop", label: "Stop the local service" },
|
|
389
400
|
{ value: "quit", label: "Quit" },
|
|
390
401
|
],
|
|
391
402
|
});
|
|
392
403
|
if (p.isCancel(action) || action === "quit")
|
|
393
404
|
return "exit";
|
|
394
405
|
if (action === "ls") {
|
|
395
|
-
await spawnInterf(["
|
|
406
|
+
await spawnInterf(["project", "ls"]);
|
|
396
407
|
return "continue";
|
|
397
408
|
}
|
|
398
409
|
if (action === "agents") {
|
|
@@ -400,17 +411,21 @@ async function showActionMenu(conn, options = { allowAgentRuns: true }) {
|
|
|
400
411
|
return "continue";
|
|
401
412
|
}
|
|
402
413
|
if (action === "create") {
|
|
403
|
-
const
|
|
404
|
-
if (
|
|
414
|
+
const created = await flowCreateProject(conn);
|
|
415
|
+
if (created) {
|
|
405
416
|
if (!options.allowAgentRuns) {
|
|
406
417
|
console.log(chalk.dim(" Skipping build prompt — no agents available. Install one then run `interf build " +
|
|
407
|
-
|
|
418
|
+
created.id +
|
|
408
419
|
"`."));
|
|
409
420
|
}
|
|
421
|
+
else if (!created.buildPlanId) {
|
|
422
|
+
console.log(chalk.dim(` Project ${created.id} created. Draft or select a Build Plan before building: ` +
|
|
423
|
+
`interf plan draft ${created.id} --intent "...".`));
|
|
424
|
+
}
|
|
410
425
|
else {
|
|
411
|
-
const buildNow = await p.confirm({ message: `Build ${
|
|
426
|
+
const buildNow = await p.confirm({ message: `Build ${created.id} now?`, initialValue: true });
|
|
412
427
|
if (!p.isCancel(buildNow) && buildNow) {
|
|
413
|
-
await spawnInterf(["build",
|
|
428
|
+
await spawnInterf(["build", created.id]);
|
|
414
429
|
}
|
|
415
430
|
}
|
|
416
431
|
}
|
|
@@ -423,43 +438,25 @@ async function showActionMenu(conn, options = { allowAgentRuns: true }) {
|
|
|
423
438
|
console.log(" register a custom CLI: `interf agents register <name> --command <cmd>`.");
|
|
424
439
|
return "continue";
|
|
425
440
|
}
|
|
426
|
-
const id = await
|
|
441
|
+
const id = await pickProject(conn, "Which Project to build?");
|
|
427
442
|
if (id)
|
|
428
443
|
await spawnInterf(["build", id]);
|
|
429
444
|
return "continue";
|
|
430
445
|
}
|
|
431
|
-
if (action === "
|
|
446
|
+
if (action === "benchmark") {
|
|
432
447
|
if (!options.allowAgentRuns) {
|
|
433
|
-
console.log(chalk.yellow(" Cannot run
|
|
448
|
+
console.log(chalk.yellow(" Cannot run benchmark/evaluation — no agents available."));
|
|
434
449
|
return "continue";
|
|
435
450
|
}
|
|
436
|
-
const id = await
|
|
451
|
+
const id = await pickProject(conn, "Which Project should Interf benchmark?");
|
|
437
452
|
if (id)
|
|
438
|
-
await spawnInterf(["
|
|
439
|
-
return "continue";
|
|
440
|
-
}
|
|
441
|
-
if (action === "ui") {
|
|
442
|
-
const target = `${conn.url}/`;
|
|
443
|
-
console.log();
|
|
444
|
-
console.log(` Opening ${chalk.bold(target)} in your browser…`);
|
|
445
|
-
const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
|
|
446
|
-
try {
|
|
447
|
-
const child = spawn(command, [target], { detached: true, stdio: "ignore" });
|
|
448
|
-
child.on("error", () => {
|
|
449
|
-
console.log(chalk.dim(` (Could not open browser; visit ${target} manually.)`));
|
|
450
|
-
});
|
|
451
|
-
child.unref();
|
|
452
|
-
}
|
|
453
|
-
catch {
|
|
454
|
-
console.log(chalk.dim(` (Could not open browser; visit ${target} manually.)`));
|
|
455
|
-
}
|
|
456
|
-
console.log();
|
|
453
|
+
await spawnInterf(["benchmark", id]);
|
|
457
454
|
return "continue";
|
|
458
455
|
}
|
|
459
456
|
if (action === "stop") {
|
|
460
|
-
const ok = await p.confirm({ message: "Stop the connected
|
|
457
|
+
const ok = await p.confirm({ message: "Stop the connected local service?", initialValue: false });
|
|
461
458
|
if (!p.isCancel(ok) && ok) {
|
|
462
|
-
await spawnInterf(["
|
|
459
|
+
await spawnInterf(["runtime", "stop"]);
|
|
463
460
|
return "exit";
|
|
464
461
|
}
|
|
465
462
|
return "continue";
|
|
@@ -467,17 +464,17 @@ async function showActionMenu(conn, options = { allowAgentRuns: true }) {
|
|
|
467
464
|
return "continue";
|
|
468
465
|
}
|
|
469
466
|
/**
|
|
470
|
-
* Agent install-cards menu shown when the connected
|
|
467
|
+
* Agent install-cards menu shown when the connected service has zero
|
|
471
468
|
* detected + registered agents. Returns:
|
|
472
469
|
* - "rerun" → user installed an agent and wants to retry detection
|
|
473
|
-
* - "skip" → continue in
|
|
470
|
+
* - "skip" → continue in read-only mode (no build/benchmark)
|
|
474
471
|
* - "quit" → exit
|
|
475
472
|
*/
|
|
476
473
|
async function showAgentInstallCards() {
|
|
477
474
|
console.log();
|
|
478
475
|
console.log(chalk.yellow(" No agents detected."));
|
|
479
476
|
console.log();
|
|
480
|
-
console.log(" Interf needs at least one agent to build
|
|
477
|
+
console.log(" Interf needs at least one agent to build a Context Graph and run benchmark/evaluation passes.");
|
|
481
478
|
console.log();
|
|
482
479
|
const choice = await p.select({
|
|
483
480
|
message: "How do you want to proceed?",
|
|
@@ -500,7 +497,7 @@ async function showAgentInstallCards() {
|
|
|
500
497
|
},
|
|
501
498
|
{
|
|
502
499
|
value: "skip",
|
|
503
|
-
label: chalk.dim("Skip
|
|
500
|
+
label: chalk.dim("Skip - read-only mode (browse existing Context Graph only)"),
|
|
504
501
|
},
|
|
505
502
|
{ value: "quit", label: chalk.dim("Quit") },
|
|
506
503
|
],
|
|
@@ -568,7 +565,7 @@ async function showAgentInstallCards() {
|
|
|
568
565
|
message: "What now?",
|
|
569
566
|
options: [
|
|
570
567
|
{ value: "rerun", label: "I installed it — re-detect" },
|
|
571
|
-
{ value: "skip", label: chalk.dim("Skip
|
|
568
|
+
{ value: "skip", label: chalk.dim("Skip - continue in read-only mode") },
|
|
572
569
|
{ value: "quit", label: chalk.dim("Quit") },
|
|
573
570
|
],
|
|
574
571
|
});
|
|
@@ -580,13 +577,13 @@ async function showAgentInstallCards() {
|
|
|
580
577
|
}
|
|
581
578
|
return "rerun";
|
|
582
579
|
}
|
|
583
|
-
async function
|
|
584
|
-
const instance = await
|
|
585
|
-
const agentsResponse = await
|
|
580
|
+
async function fetchAgentState(conn) {
|
|
581
|
+
const instance = await callJsonSafe(`${conn.url}/v1/instance`, conn.token);
|
|
582
|
+
const agentsResponse = await callJsonSafe(`${conn.url}/v1/agents`, conn.token);
|
|
586
583
|
if (instance.status !== 200)
|
|
587
584
|
return null;
|
|
588
|
-
//
|
|
589
|
-
//
|
|
585
|
+
// Older engines don't expose /v1/agents. Surface the gap explicitly so
|
|
586
|
+
// the wizard can tell the user to restart instead of silently going
|
|
590
587
|
// through the install-cards flow.
|
|
591
588
|
const engineSupportsAgents = agentsResponse.status === 200 && instance.body?.agent_count !== undefined;
|
|
592
589
|
return {
|
|
@@ -598,7 +595,7 @@ async function fetchAgentSnapshot(conn) {
|
|
|
598
595
|
}
|
|
599
596
|
async function runWizard(args) {
|
|
600
597
|
// The wizard is the human entry point, so it can ask how to connect.
|
|
601
|
-
// It still never auto-starts
|
|
598
|
+
// It still never auto-starts a service: starting `interf runtime` is an
|
|
602
599
|
// explicit foreground choice, and script/agent commands keep the
|
|
603
600
|
// connect-or-error behavior.
|
|
604
601
|
const initial = readActiveConnection({
|
|
@@ -608,34 +605,32 @@ async function runWizard(args) {
|
|
|
608
605
|
let conn = null;
|
|
609
606
|
if (!initial) {
|
|
610
607
|
if (await probeHealth(DEFAULT_ENGINE_URL)) {
|
|
611
|
-
|
|
612
|
-
|
|
608
|
+
conn = await connectToReachableEngine(DEFAULT_ENGINE_URL);
|
|
609
|
+
if (conn) {
|
|
610
|
+
console.log();
|
|
611
|
+
console.log(chalk.dim(` Local service already running at ${DEFAULT_ENGINE_URL} — connecting.`));
|
|
613
612
|
}
|
|
614
|
-
|
|
615
|
-
|
|
613
|
+
else {
|
|
614
|
+
conn = await promptForConnection(`Local service is running at ${DEFAULT_ENGINE_URL}, but no bearer token is available.`);
|
|
616
615
|
}
|
|
617
|
-
console.log();
|
|
618
|
-
console.log(chalk.dim(` Engine already running at ${DEFAULT_ENGINE_URL} — connecting.`));
|
|
619
|
-
conn = { url: DEFAULT_ENGINE_URL, token: null };
|
|
620
616
|
}
|
|
621
617
|
else {
|
|
622
|
-
conn = await promptForConnection("No Interf
|
|
618
|
+
conn = await promptForConnection("No Interf local service is connected.");
|
|
623
619
|
}
|
|
624
620
|
}
|
|
625
621
|
else {
|
|
626
622
|
const url = initial.url.replace(/\/+$/, "");
|
|
627
|
-
const probe = await
|
|
623
|
+
const probe = await callJsonSafe(`${url}/health`, initial.auth_token);
|
|
628
624
|
if (probe.status === 0) {
|
|
629
625
|
if (!args.url && await probeHealth(DEFAULT_ENGINE_URL)) {
|
|
630
|
-
|
|
631
|
-
|
|
626
|
+
conn = await connectToReachableEngine(DEFAULT_ENGINE_URL);
|
|
627
|
+
if (conn) {
|
|
628
|
+
console.log();
|
|
629
|
+
console.log(chalk.dim(` Saved connection ${url} is unreachable; using local service at ${DEFAULT_ENGINE_URL}.`));
|
|
632
630
|
}
|
|
633
|
-
|
|
634
|
-
|
|
631
|
+
else {
|
|
632
|
+
conn = await promptForConnection(`Saved connection ${url} is unreachable. The default local service is running, but no bearer token is available.`);
|
|
635
633
|
}
|
|
636
|
-
console.log();
|
|
637
|
-
console.log(chalk.dim(` Saved connection ${url} is unreachable; using local engine at ${DEFAULT_ENGINE_URL}.`));
|
|
638
|
-
conn = { url: DEFAULT_ENGINE_URL, token: null };
|
|
639
634
|
}
|
|
640
635
|
else {
|
|
641
636
|
conn = await promptForConnection(`Connection ${url} is unreachable.`);
|
|
@@ -648,26 +643,24 @@ async function runWizard(args) {
|
|
|
648
643
|
if (!conn) {
|
|
649
644
|
return;
|
|
650
645
|
}
|
|
651
|
-
const instance = await
|
|
646
|
+
const instance = await callJsonSafe(`${conn.url}/v1/instance`, conn.token);
|
|
652
647
|
console.log();
|
|
653
648
|
console.log(chalk.bold(` Connected to ${conn.url}`));
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
}
|
|
657
|
-
// 0.15 — surface the connected agents up front. When zero are
|
|
649
|
+
console.log(chalk.dim(` ${instance.body?.project_count ?? 0} project(s)`));
|
|
650
|
+
// surface the execution agents up front. When zero are
|
|
658
651
|
// detected, run the install-cards menu before letting the user
|
|
659
|
-
// try to build or run
|
|
660
|
-
let agents = await
|
|
652
|
+
// try to build or run benchmark/evaluation passes.
|
|
653
|
+
let agents = await fetchAgentState(conn);
|
|
661
654
|
if (agents && !agents.engineSupportsAgents) {
|
|
662
655
|
console.log();
|
|
663
|
-
console.log(chalk.yellow("
|
|
656
|
+
console.log(chalk.yellow(" The connected local service is older than this CLI."));
|
|
664
657
|
console.log(chalk.dim(" /v1/agents is not available — agent management is disabled."));
|
|
665
658
|
console.log();
|
|
666
659
|
const choice = await p.select({
|
|
667
|
-
message: "Restart the
|
|
660
|
+
message: "Restart the local service now to pick up new features?",
|
|
668
661
|
options: [
|
|
669
|
-
{ value: "restart", label: "Yes
|
|
670
|
-
{ value: "continue", label: chalk.dim("No
|
|
662
|
+
{ value: "restart", label: "Yes - stop old service, start new one" },
|
|
663
|
+
{ value: "continue", label: chalk.dim("No - continue with limited features (no agent management, Build runs, or benchmark runs)") },
|
|
671
664
|
{ value: "quit", label: "Quit" },
|
|
672
665
|
],
|
|
673
666
|
initialValue: "restart",
|
|
@@ -678,26 +671,26 @@ async function runWizard(args) {
|
|
|
678
671
|
}
|
|
679
672
|
if (choice === "restart") {
|
|
680
673
|
console.log();
|
|
681
|
-
console.log(chalk.dim(" Stopping old
|
|
682
|
-
await spawnInterf(["
|
|
674
|
+
console.log(chalk.dim(" Stopping old service..."));
|
|
675
|
+
await spawnInterf(["runtime", "stop"]);
|
|
683
676
|
// Small grace period for the OS to release the port.
|
|
684
677
|
await new Promise((r) => setTimeout(r, 800));
|
|
685
678
|
const restarted = await startLocalEngineInBackground();
|
|
686
679
|
if (!restarted) {
|
|
687
|
-
console.log(chalk.red(" Could not start the new
|
|
680
|
+
console.log(chalk.red(" Could not start the new local service. Try manually: interf runtime"));
|
|
688
681
|
process.exit(1);
|
|
689
682
|
}
|
|
690
683
|
conn = restarted;
|
|
691
|
-
agents = await
|
|
684
|
+
agents = await fetchAgentState(conn);
|
|
692
685
|
}
|
|
693
686
|
}
|
|
694
687
|
// Treat "all registered agents are unavailable" the same as "no agents
|
|
695
688
|
// detected" — the install-cards menu lets the user install or register
|
|
696
689
|
// a real one before the active-agent picker runs.
|
|
697
|
-
function installedAgentCount(
|
|
698
|
-
if (!
|
|
690
|
+
function installedAgentCount(registry) {
|
|
691
|
+
if (!registry)
|
|
699
692
|
return 0;
|
|
700
|
-
return
|
|
693
|
+
return registry.agents.filter((agent) => agent.available !== false).length;
|
|
701
694
|
}
|
|
702
695
|
let allowAgentRuns = installedAgentCount(agents) > 0;
|
|
703
696
|
while (agents &&
|
|
@@ -713,7 +706,7 @@ async function runWizard(args) {
|
|
|
713
706
|
break;
|
|
714
707
|
}
|
|
715
708
|
// decision === "rerun"
|
|
716
|
-
agents = await
|
|
709
|
+
agents = await fetchAgentState(conn);
|
|
717
710
|
allowAgentRuns = installedAgentCount(agents) > 0;
|
|
718
711
|
}
|
|
719
712
|
if (agents && agents.engineSupportsAgents && installedAgentCount(agents) > 0) {
|
|
@@ -724,7 +717,7 @@ async function runWizard(args) {
|
|
|
724
717
|
//
|
|
725
718
|
// Custom agents whose CLI is no longer on PATH carry `available: false`
|
|
726
719
|
// — show them in a hint instead of as selectable choices so the picker
|
|
727
|
-
// does not let the user pick something the
|
|
720
|
+
// does not let the user pick something the local service cannot run.
|
|
728
721
|
const stale = agents.agents.filter((agent) => agent.available === false);
|
|
729
722
|
if (stale.length > 0) {
|
|
730
723
|
const names = stale.map((agent) => agent.display_name || agent.name).join(", ");
|
|
@@ -756,14 +749,14 @@ async function runWizard(args) {
|
|
|
756
749
|
p.outro("Bye.");
|
|
757
750
|
return;
|
|
758
751
|
}
|
|
759
|
-
agents = await
|
|
752
|
+
agents = await fetchAgentState(conn);
|
|
760
753
|
}
|
|
761
754
|
else if (choice !== agents.defaultAgent) {
|
|
762
755
|
// Switch active agent before proceeding. Reuse the existing CLI to
|
|
763
756
|
// sweep the role-map's `general` row + any role pinned to the
|
|
764
757
|
// previous active.
|
|
765
758
|
await spawnInterf(["agents", "use", String(choice)]);
|
|
766
|
-
agents = await
|
|
759
|
+
agents = await fetchAgentState(conn);
|
|
767
760
|
}
|
|
768
761
|
if (agents && agents.defaultAgent) {
|
|
769
762
|
console.log(chalk.dim(` Active: ${agents.defaultAgent} · roles default to ${agents.defaultAgent}`));
|