@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,42 +2,43 @@ import { cpSync, existsSync, mkdirSync, mkdtempSync, rmSync } from "node:fs";
|
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
-
import {
|
|
6
|
-
import { readInterfConfig } from "../
|
|
7
|
-
import { resolveLocalExecutor, } from "./agents/lib/executors.js";
|
|
5
|
+
import { buildContextGraph, } from "./build/build-plan-runs.js";
|
|
6
|
+
import { readInterfConfig } from "../projects/interf.js";
|
|
7
|
+
import { buildRuntimeExecutorInfo, resolveLocalExecutor, } from "./agents/lib/executors.js";
|
|
8
8
|
import { formatAgentExecutionProfile } from "./agents/lib/execution-profile.js";
|
|
9
9
|
import { loadAgentsRegistry } from "./agents/registry.js";
|
|
10
10
|
import { buildRoleExecutorBundle } from "./agents/role-executors.js";
|
|
11
11
|
import { clearBuildRuntimeDerivedArtifacts, } from "./build/reset.js";
|
|
12
12
|
import { formatActiveBuildPlanStageLabel, resolveRequiredBuildPlanFromConfig, } from "../build-plans/package/build-plan-definitions.js";
|
|
13
13
|
import { createRunEventId, createRunEventTimestamp, } from "./execution/events.js";
|
|
14
|
-
import {
|
|
14
|
+
import { loadContextGraphProjectConfig, resolveBuildMaxAttempts, resolveBuildMaxLoops, buildTestSpecFromSourceFolderConfig, } from "../projects/source-config.js";
|
|
15
15
|
import { runBuildPlanImprovementLoop } from "../build-plans/authoring/build-plan-improvement.js";
|
|
16
|
-
import { stageExecutionShellsRoot,
|
|
17
|
-
import { listBuildPlanContextArtifacts, readBuildPlanContextFile } from "./build/
|
|
16
|
+
import { stageExecutionShellsRoot, buildPlanPackagePathForContextGraph, } from "./build/context-graph-paths.js";
|
|
17
|
+
import { listBuildPlanContextArtifacts, readBuildPlanContextFile } from "./build/context-graph-schema.js";
|
|
18
18
|
import { initializeBuildRuntimeState } from "./build/state.js";
|
|
19
|
-
import {
|
|
19
|
+
import { benchmarkPassRate, runBenchmarkForExecutor, runSavedContextGraphBenchmark, } from "./verify/benchmark-run.js";
|
|
20
20
|
import { runBuildPlanAuthoringDraft, } from "../build-plans/authoring/build-plan-authoring.js";
|
|
21
|
-
import {
|
|
21
|
+
import { draftBenchmarkQuestions, } from "./benchmark-question-draft.js";
|
|
22
|
+
import { asProjectDataDir, projectServiceJobShellsRoot, } from "../contracts/lib/project-paths.js";
|
|
22
23
|
import { planActionProposalWithExecutor, } from "./action-planner.js";
|
|
23
|
-
import { ActionProposalPlanSchema, } from "./
|
|
24
|
-
function printBuildFailure(
|
|
25
|
-
resolveRequiredBuildPlanFromConfig(readInterfConfig(
|
|
24
|
+
import { ActionProposalPlanSchema, } from "./schemas/index.js";
|
|
25
|
+
function printBuildFailure(contextGraphPath, failedStage) {
|
|
26
|
+
resolveRequiredBuildPlanFromConfig(readInterfConfig(contextGraphPath), `.interf/interf.json for ${contextGraphPath}`);
|
|
26
27
|
let failedStageLabel = failedStage ? `Stage "${failedStage}"` : "Build";
|
|
27
28
|
try {
|
|
28
|
-
failedStageLabel = formatActiveBuildPlanStageLabel(
|
|
29
|
+
failedStageLabel = formatActiveBuildPlanStageLabel(contextGraphPath, failedStage ?? "build");
|
|
29
30
|
}
|
|
30
31
|
catch {
|
|
31
32
|
// Keep the original failure visible even when the failure is outside a declared Build Plan stage.
|
|
32
33
|
}
|
|
33
34
|
console.log(chalk.red(` ${failedStageLabel} failed.`));
|
|
34
35
|
}
|
|
35
|
-
function testScore(outcome) {
|
|
36
|
+
export function testScore(outcome) {
|
|
36
37
|
return (outcome.result.passedCases * 1000) + outcome.result.passedChecks;
|
|
37
38
|
}
|
|
38
|
-
async function
|
|
39
|
+
async function buildContextGraphWithReporter(executor, contextGraphPath, options = {}) {
|
|
39
40
|
console.log();
|
|
40
|
-
console.log(chalk.bold(` ${options.heading ?? "Building
|
|
41
|
+
console.log(chalk.bold(` ${options.heading ?? "Building Context Graph..."}`));
|
|
41
42
|
const profileLabel = formatAgentExecutionProfile(executor.executionProfile);
|
|
42
43
|
if (profileLabel) {
|
|
43
44
|
console.log(chalk.dim(` Execution profile: ${profileLabel}`));
|
|
@@ -47,27 +48,28 @@ async function buildVerifiableContextWithReporter(executor, verifiableContextPat
|
|
|
47
48
|
line: (message) => console.log(chalk.dim(` ${message}`)),
|
|
48
49
|
blankLine: () => console.log(),
|
|
49
50
|
};
|
|
50
|
-
const result = await
|
|
51
|
+
const result = await buildContextGraph({
|
|
51
52
|
executor,
|
|
52
53
|
resolveStageExecutor: options.resolveStageExecutor,
|
|
53
|
-
|
|
54
|
+
contextGraphPath,
|
|
54
55
|
reporter,
|
|
55
56
|
preserveStageShells: options.preserveStageShells,
|
|
56
57
|
runId: options.runId,
|
|
57
58
|
events: options.events,
|
|
59
|
+
maxStageValidationAttempts: options.maxStageValidationAttempts,
|
|
58
60
|
});
|
|
59
61
|
if (!result.ok)
|
|
60
62
|
return result;
|
|
61
63
|
console.log();
|
|
62
|
-
console.log(chalk.green(` ${options.successMessage ?? "
|
|
64
|
+
console.log(chalk.green(` ${options.successMessage ?? "Context Graph ready."}`));
|
|
63
65
|
return result;
|
|
64
66
|
}
|
|
65
|
-
function
|
|
67
|
+
function printSavedBenchmarkOutcome(prefix, outcome) {
|
|
66
68
|
const color = outcome.result.ok ? chalk.green : chalk.red;
|
|
67
69
|
const status = outcome.result.ok ? chalk.green("PASS") : chalk.red("FAIL");
|
|
68
70
|
console.log(chalk.bold(` ${prefix}`));
|
|
69
71
|
console.log();
|
|
70
|
-
console.log(color(` ${status} ${outcome.result.passedCases}/${outcome.result.totalCases}
|
|
72
|
+
console.log(color(` ${status} ${outcome.result.passedCases}/${outcome.result.totalCases} benchmark checks`));
|
|
71
73
|
console.log();
|
|
72
74
|
for (const [index, caseResult] of outcome.result.caseResults.entries()) {
|
|
73
75
|
const caseStatus = caseResult.ok ? chalk.green("PASS") : chalk.red("FAIL");
|
|
@@ -85,10 +87,9 @@ function printSavedReadinessOutcome(prefix, outcome) {
|
|
|
85
87
|
}
|
|
86
88
|
console.log(chalk.dim(` Saved run: ${outcome.displayRunPath ?? outcome.runPath}`));
|
|
87
89
|
}
|
|
88
|
-
function bestVariationRestorePaths(
|
|
89
|
-
const schema = readBuildPlanContextFile(
|
|
90
|
+
function bestVariationRestorePaths(contextGraphPath) {
|
|
91
|
+
const schema = readBuildPlanContextFile(buildPlanPackagePathForContextGraph(contextGraphPath));
|
|
90
92
|
const artifactPaths = (schema ? listBuildPlanContextArtifacts(schema) : [])
|
|
91
|
-
.filter((artifact) => artifact.kind !== "runtime")
|
|
92
93
|
.map((artifact) => artifact.path);
|
|
93
94
|
return [
|
|
94
95
|
"AGENTS.md",
|
|
@@ -114,45 +115,70 @@ function copyRelativePathIfPresent(sourceRoot, targetRoot, relativePath) {
|
|
|
114
115
|
errorOnExist: false,
|
|
115
116
|
});
|
|
116
117
|
}
|
|
117
|
-
function
|
|
118
|
-
const
|
|
119
|
-
const
|
|
120
|
-
for (const relativePath of bestVariationRestorePaths(
|
|
121
|
-
copyRelativePathIfPresent(
|
|
118
|
+
function captureBestBuildState(contextGraphPath) {
|
|
119
|
+
const backupRoot = mkdtempSync(join(tmpdir(), "interf-build-attempt-"));
|
|
120
|
+
const backupPath = join(backupRoot, "context-graph");
|
|
121
|
+
for (const relativePath of bestVariationRestorePaths(contextGraphPath)) {
|
|
122
|
+
copyRelativePathIfPresent(contextGraphPath, backupPath, relativePath);
|
|
122
123
|
}
|
|
123
|
-
return
|
|
124
|
+
return backupPath;
|
|
124
125
|
}
|
|
125
|
-
function restoreBestBuildState(
|
|
126
|
-
for (const relativePath of bestVariationRestorePaths(
|
|
127
|
-
rmSync(join(
|
|
128
|
-
copyRelativePathIfPresent(
|
|
126
|
+
function restoreBestBuildState(backupPath, contextGraphPath) {
|
|
127
|
+
for (const relativePath of bestVariationRestorePaths(contextGraphPath)) {
|
|
128
|
+
rmSync(join(contextGraphPath, relativePath), { recursive: true, force: true });
|
|
129
|
+
copyRelativePathIfPresent(backupPath, contextGraphPath, relativePath);
|
|
130
|
+
}
|
|
131
|
+
// Restoring a changed Build Plan must invalidate stage fingerprints; the next
|
|
132
|
+
// build has to validate the restored graph against the restored Plan from zero.
|
|
133
|
+
clearBuildRuntimeDerivedArtifacts(contextGraphPath);
|
|
134
|
+
initializeBuildRuntimeState(contextGraphPath);
|
|
135
|
+
}
|
|
136
|
+
export function createVariationBestTracker() {
|
|
137
|
+
return { outcome: null, backupPath: null, attempt: 0, variation: 0 };
|
|
138
|
+
}
|
|
139
|
+
export function considerVariationBest(tracker, variation, result, prune) {
|
|
140
|
+
if (result.bestOutcome &&
|
|
141
|
+
result.bestGraphBackupPath &&
|
|
142
|
+
(!tracker.outcome || testScore(result.bestOutcome) > testScore(tracker.outcome))) {
|
|
143
|
+
if (tracker.backupPath) {
|
|
144
|
+
prune(tracker.backupPath);
|
|
145
|
+
}
|
|
146
|
+
tracker.outcome = result.bestOutcome;
|
|
147
|
+
tracker.backupPath = result.bestGraphBackupPath;
|
|
148
|
+
tracker.attempt = result.bestAttempt;
|
|
149
|
+
tracker.variation = variation;
|
|
150
|
+
result.bestGraphBackupPath = null;
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (result.bestGraphBackupPath) {
|
|
154
|
+
prune(result.bestGraphBackupPath);
|
|
155
|
+
result.bestGraphBackupPath = null;
|
|
129
156
|
}
|
|
130
|
-
clearBuildRuntimeDerivedArtifacts(verifiableContextPath);
|
|
131
|
-
initializeBuildRuntimeState(verifiableContextPath);
|
|
132
157
|
}
|
|
133
158
|
async function runBuildPlanVariation(options) {
|
|
134
159
|
let bestOutcome = null;
|
|
135
|
-
let
|
|
160
|
+
let bestGraphBackupPath = null;
|
|
136
161
|
let bestAttempt = 0;
|
|
137
162
|
let attemptsRun = 0;
|
|
138
163
|
try {
|
|
139
164
|
for (let attempt = 1; attempt <= options.maxAttempts; attempt += 1) {
|
|
140
165
|
attemptsRun = attempt;
|
|
141
|
-
const result = await
|
|
166
|
+
const result = await buildContextGraphWithReporter(options.executor, options.contextGraphPath, {
|
|
142
167
|
heading: options.maxAttempts > 1
|
|
143
|
-
? `Building
|
|
144
|
-
: `Building
|
|
168
|
+
? `Building Context Graph (${options.variationLabel}, attempt ${attempt}/${options.maxAttempts})...`
|
|
169
|
+
: `Building Context Graph (${options.variationLabel})...`,
|
|
145
170
|
successMessage: options.maxAttempts > 1
|
|
146
|
-
? `
|
|
147
|
-
: `
|
|
171
|
+
? `Context Graph ready for ${options.variationLabel}, attempt ${attempt}.`
|
|
172
|
+
: `Context Graph ready for ${options.variationLabel}.`,
|
|
148
173
|
preserveStageShells: options.preserveStageShells,
|
|
149
174
|
runId: options.runId,
|
|
150
175
|
events: options.events,
|
|
151
176
|
resolveStageExecutor: options.resolveStageExecutor,
|
|
177
|
+
maxStageValidationAttempts: options.maxAttempts,
|
|
152
178
|
});
|
|
153
179
|
if (!result.ok) {
|
|
154
|
-
printBuildFailure(options.
|
|
155
|
-
printStageShellReviewHint(options.
|
|
180
|
+
printBuildFailure(options.contextGraphPath, result.failedStage);
|
|
181
|
+
printStageShellReviewHint(options.contextGraphPath, options.preserveStageShells, "failure");
|
|
156
182
|
if (attempt < options.maxAttempts) {
|
|
157
183
|
console.log(chalk.yellow(` ${options.variationLabel} attempt ${attempt}/${options.maxAttempts} failed. Retrying with a fresh build.`));
|
|
158
184
|
continue;
|
|
@@ -162,16 +188,16 @@ async function runBuildPlanVariation(options) {
|
|
|
162
188
|
attemptsRun,
|
|
163
189
|
failedStage: result.failedStage,
|
|
164
190
|
bestOutcome,
|
|
165
|
-
|
|
191
|
+
bestGraphBackupPath,
|
|
166
192
|
bestAttempt,
|
|
167
193
|
fatalError: null,
|
|
168
194
|
};
|
|
169
195
|
}
|
|
170
|
-
const outcome = await
|
|
196
|
+
const outcome = await runSavedContextGraphBenchmark({
|
|
171
197
|
sourcePath: options.sourcePath,
|
|
172
|
-
|
|
198
|
+
projectConfig: options.contextGraphConfig,
|
|
173
199
|
executor: options.testExecutor,
|
|
174
|
-
|
|
200
|
+
contextGraphPath: options.contextGraphPath,
|
|
175
201
|
preserveSandboxes: options.preserveStageShells === "always" ? "always" : "on-failure",
|
|
176
202
|
});
|
|
177
203
|
if (!outcome) {
|
|
@@ -180,31 +206,31 @@ async function runBuildPlanVariation(options) {
|
|
|
180
206
|
attemptsRun,
|
|
181
207
|
failedStage: null,
|
|
182
208
|
bestOutcome,
|
|
183
|
-
|
|
209
|
+
bestGraphBackupPath,
|
|
184
210
|
bestAttempt,
|
|
185
|
-
fatalError: "Could not run saved
|
|
211
|
+
fatalError: "Could not run saved benchmark checks against Context Graph after build.",
|
|
186
212
|
};
|
|
187
213
|
}
|
|
188
214
|
console.log();
|
|
189
|
-
|
|
215
|
+
printSavedBenchmarkOutcome(`${options.variationLabel} · attempt ${attempt}/${options.maxAttempts}`, outcome);
|
|
190
216
|
if (!bestOutcome || testScore(outcome) > testScore(bestOutcome)) {
|
|
191
|
-
if (
|
|
192
|
-
rmSync(
|
|
217
|
+
if (bestGraphBackupPath) {
|
|
218
|
+
rmSync(bestGraphBackupPath, { recursive: true, force: true });
|
|
193
219
|
}
|
|
194
220
|
bestOutcome = outcome;
|
|
195
|
-
|
|
221
|
+
bestGraphBackupPath = captureBestBuildState(options.contextGraphPath);
|
|
196
222
|
bestAttempt = attempt;
|
|
197
223
|
}
|
|
198
224
|
if (outcome.result.ok) {
|
|
199
225
|
console.log();
|
|
200
|
-
console.log(chalk.green(`
|
|
201
|
-
printStageShellReviewHint(options.
|
|
226
|
+
console.log(chalk.green(` Context Graph passed on ${options.variationLabel}, attempt ${attempt}/${options.maxAttempts}.`));
|
|
227
|
+
printStageShellReviewHint(options.contextGraphPath, options.preserveStageShells, "success");
|
|
202
228
|
return {
|
|
203
229
|
passed: true,
|
|
204
230
|
attemptsRun,
|
|
205
231
|
failedStage: null,
|
|
206
232
|
bestOutcome,
|
|
207
|
-
|
|
233
|
+
bestGraphBackupPath,
|
|
208
234
|
bestAttempt,
|
|
209
235
|
fatalError: null,
|
|
210
236
|
};
|
|
@@ -219,7 +245,7 @@ async function runBuildPlanVariation(options) {
|
|
|
219
245
|
attemptsRun,
|
|
220
246
|
failedStage: null,
|
|
221
247
|
bestOutcome,
|
|
222
|
-
|
|
248
|
+
bestGraphBackupPath,
|
|
223
249
|
bestAttempt,
|
|
224
250
|
fatalError: null,
|
|
225
251
|
};
|
|
@@ -230,7 +256,7 @@ async function runBuildPlanVariation(options) {
|
|
|
230
256
|
attemptsRun,
|
|
231
257
|
failedStage: null,
|
|
232
258
|
bestOutcome,
|
|
233
|
-
|
|
259
|
+
bestGraphBackupPath,
|
|
234
260
|
bestAttempt,
|
|
235
261
|
fatalError: error instanceof Error ? error.message : String(error),
|
|
236
262
|
};
|
|
@@ -240,11 +266,11 @@ function summarizeBuildPlanVariation(options) {
|
|
|
240
266
|
const passedChecks = options.result.bestOutcome?.result.passedCases ?? 0;
|
|
241
267
|
const totalChecks = options.result.bestOutcome?.result.totalCases ?? options.defaultTotalChecks;
|
|
242
268
|
const summary = options.result.passed
|
|
243
|
-
? `Passed ${passedChecks}/${totalChecks}
|
|
269
|
+
? `Passed ${passedChecks}/${totalChecks} benchmark checks.`
|
|
244
270
|
: options.result.bestOutcome
|
|
245
|
-
? `Best result: ${passedChecks}/${totalChecks}
|
|
271
|
+
? `Best result: ${passedChecks}/${totalChecks} benchmark checks passed.`
|
|
246
272
|
: options.result.failedStage
|
|
247
|
-
? `Build failed at stage ${options.result.failedStage} before any saved
|
|
273
|
+
? `Build failed at stage ${options.result.failedStage} before any saved benchmark result.`
|
|
248
274
|
: "Build Plan variation did not produce a passing result.";
|
|
249
275
|
return {
|
|
250
276
|
variation: options.variation,
|
|
@@ -261,8 +287,8 @@ function summarizeBuildPlanVariation(options) {
|
|
|
261
287
|
summary,
|
|
262
288
|
};
|
|
263
289
|
}
|
|
264
|
-
function printStageShellReviewHint(
|
|
265
|
-
const reviewRoot = stageExecutionShellsRoot(
|
|
290
|
+
function printStageShellReviewHint(contextGraphPath, preserveStageShells, result) {
|
|
291
|
+
const reviewRoot = stageExecutionShellsRoot(contextGraphPath);
|
|
266
292
|
if (preserveStageShells === "always") {
|
|
267
293
|
console.log(chalk.dim(` Stage shells are saved under: ${reviewRoot}`));
|
|
268
294
|
return;
|
|
@@ -272,18 +298,18 @@ function printStageShellReviewHint(verifiableContextPath, preserveStageShells, r
|
|
|
272
298
|
}
|
|
273
299
|
}
|
|
274
300
|
function printPostBuildNextStep(options) {
|
|
275
|
-
console.log(chalk.dim(`
|
|
301
|
+
console.log(chalk.dim(` Context Graph: ${options.contextGraphPath}`));
|
|
276
302
|
if (options.checks === 0) {
|
|
277
|
-
console.log(chalk.dim(" Next: run `interf` to add
|
|
303
|
+
console.log(chalk.dim(" Next: run `interf` to add benchmark questions, then `interf benchmark`."));
|
|
278
304
|
return;
|
|
279
305
|
}
|
|
280
306
|
if (options.testedDuringBuild) {
|
|
281
|
-
console.log(chalk.dim(" Next: inspect the
|
|
307
|
+
console.log(chalk.dim(" Next: inspect the Context Graph agents will use, or run `interf benchmark` if you also want a Source Manifest baseline versus Context Graph benchmark."));
|
|
282
308
|
return;
|
|
283
309
|
}
|
|
284
|
-
console.log(chalk.dim(" Next: run `interf
|
|
310
|
+
console.log(chalk.dim(" Next: run `interf benchmark` to benchmark the Source Manifest baseline and/or the Context Graph."));
|
|
285
311
|
}
|
|
286
|
-
function
|
|
312
|
+
function formatVariationBenchmarkSummary(summary) {
|
|
287
313
|
return `${summary.passed_questions}/${summary.total_questions}`;
|
|
288
314
|
}
|
|
289
315
|
function printBuildPlanVariationSummary(summaries) {
|
|
@@ -292,101 +318,98 @@ function printBuildPlanVariationSummary(summaries) {
|
|
|
292
318
|
console.log();
|
|
293
319
|
console.log(chalk.bold(" Build Plan variation summary"));
|
|
294
320
|
console.log();
|
|
295
|
-
console.log(" | Variation | Kind |
|
|
321
|
+
console.log(" | Variation | Kind | Benchmark checks | Result |");
|
|
296
322
|
console.log(" | --- | --- | --- | --- |");
|
|
297
323
|
for (const summary of summaries) {
|
|
298
|
-
console.log(` | ${summary.variation} | ${summary.kind} | \`${
|
|
324
|
+
console.log(` | ${summary.variation} | ${summary.kind} | \`${formatVariationBenchmarkSummary(summary)}\` | ${summary.passed ? "pass" : "fail"} |`);
|
|
299
325
|
}
|
|
300
326
|
}
|
|
301
|
-
function printSelectedBuildPlanOwnership(
|
|
327
|
+
function printSelectedBuildPlanOwnership(contextGraphPath, bestVariation) {
|
|
302
328
|
if (bestVariation <= 1)
|
|
303
329
|
return;
|
|
304
330
|
console.log();
|
|
305
|
-
console.log(chalk.dim(` Best Build Plan variation now lives in: ${
|
|
306
|
-
console.log(chalk.dim(" The
|
|
307
|
-
console.log(chalk.dim("
|
|
331
|
+
console.log(chalk.dim(` Best Build Plan variation now lives in: ${buildPlanPackagePathForContextGraph(contextGraphPath)}`));
|
|
332
|
+
console.log(chalk.dim(" The Project-level Build Plan selection was not changed automatically."));
|
|
333
|
+
console.log(chalk.dim(" Building this existing Context Graph again reuses that local Build Plan draft."));
|
|
308
334
|
}
|
|
309
335
|
export async function runConfiguredBuild(options) {
|
|
310
|
-
const preserveStageShells = options.preserveStageShells ?? "
|
|
311
|
-
const configuredMaxAttempts =
|
|
312
|
-
const maxLoops =
|
|
336
|
+
const preserveStageShells = options.preserveStageShells ?? "always";
|
|
337
|
+
const configuredMaxAttempts = resolveBuildMaxAttempts(options.maxAttemptsOverride);
|
|
338
|
+
const maxLoops = resolveBuildMaxLoops(options.maxLoopsOverride);
|
|
313
339
|
const maxAttempts = configuredMaxAttempts ?? (maxLoops != null ? 1 : null);
|
|
314
340
|
const loopEnabled = maxAttempts != null;
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
341
|
+
// Read the persisted Interf config once for the entry path. `readInterfConfig`
|
|
342
|
+
// does fs I/O + JSON parse + zod validation, and nothing here mutates the
|
|
343
|
+
// config file before the improvement loop, so a single read drives the
|
|
344
|
+
// project-name fallback (below) and the improvement-loop config fallback
|
|
345
|
+
// identically. The in-loop read at the improvement step stays a live re-read
|
|
346
|
+
// because that loop edits the Build Plan/config between iterations.
|
|
347
|
+
const interfConfig = readInterfConfig(options.contextGraphPath);
|
|
348
|
+
const projectName = options.contextGraphConfig?.name ?? interfConfig?.name ?? "project";
|
|
349
|
+
const benchmarkSpec = buildTestSpecFromSourceFolderConfig({
|
|
350
|
+
projectDataDir: options.sourcePath,
|
|
351
|
+
targetName: projectName,
|
|
352
|
+
targetType: "context-graph",
|
|
353
|
+
});
|
|
354
|
+
const benchmarkCheckCount = benchmarkSpec?.cases.length ?? 0;
|
|
355
|
+
if (loopEnabled && benchmarkCheckCount === 0) {
|
|
356
|
+
console.log(chalk.yellow(" Retry and self-improving modes need saved benchmark checks. Building once without those loops."));
|
|
318
357
|
}
|
|
319
358
|
else if (loopEnabled) {
|
|
320
359
|
if (maxAttempts > 1) {
|
|
321
360
|
console.log(chalk.dim(` Retry mode: up to ${maxAttempts} build attempts.`));
|
|
322
|
-
console.log(chalk.dim(" Interf will rerun the same Build Plan variation, check the
|
|
361
|
+
console.log(chalk.dim(" Interf will rerun the same Build Plan variation, check the Context Graph agents can use, and stop early if it passes."));
|
|
323
362
|
}
|
|
324
363
|
else {
|
|
325
364
|
console.log(chalk.dim(" Build mode: 1 attempt per Build Plan variation."));
|
|
326
365
|
}
|
|
327
366
|
if (maxLoops != null) {
|
|
328
367
|
console.log(chalk.dim(` Build Plan improvement: up to ${maxLoops} Build Plan edits after retries fail.`));
|
|
329
|
-
console.log(chalk.dim(" Interf will review failed runs, edit the Build Plan, and
|
|
368
|
+
console.log(chalk.dim(" Interf will review failed runs, edit the Build Plan, and benchmark new Build Plan variations."));
|
|
330
369
|
}
|
|
331
370
|
}
|
|
332
|
-
if (!loopEnabled ||
|
|
333
|
-
const result = await
|
|
371
|
+
if (!loopEnabled || benchmarkCheckCount === 0) {
|
|
372
|
+
const result = await buildContextGraphWithReporter(options.executor, options.contextGraphPath, {
|
|
334
373
|
preserveStageShells,
|
|
335
374
|
runId: options.runId,
|
|
336
375
|
events: options.events,
|
|
337
376
|
resolveStageExecutor: options.resolveStageExecutor,
|
|
377
|
+
maxStageValidationAttempts: configuredMaxAttempts ?? undefined,
|
|
338
378
|
});
|
|
339
379
|
if (!result.ok) {
|
|
340
380
|
process.exitCode = 1;
|
|
341
|
-
printBuildFailure(options.
|
|
342
|
-
printStageShellReviewHint(options.
|
|
381
|
+
printBuildFailure(options.contextGraphPath, result.failedStage);
|
|
382
|
+
printStageShellReviewHint(options.contextGraphPath, preserveStageShells, "failure");
|
|
343
383
|
return false;
|
|
344
384
|
}
|
|
345
|
-
printStageShellReviewHint(options.
|
|
385
|
+
printStageShellReviewHint(options.contextGraphPath, preserveStageShells, "success");
|
|
346
386
|
printPostBuildNextStep({
|
|
347
|
-
|
|
348
|
-
checks:
|
|
387
|
+
contextGraphPath: options.contextGraphPath,
|
|
388
|
+
checks: benchmarkCheckCount,
|
|
349
389
|
testedDuringBuild: false,
|
|
350
390
|
});
|
|
351
391
|
return true;
|
|
352
392
|
}
|
|
353
|
-
|
|
354
|
-
let bestSnapshotPath = null;
|
|
355
|
-
let bestAttempt = 0;
|
|
356
|
-
let bestVariation = 0;
|
|
393
|
+
const best = createVariationBestTracker();
|
|
357
394
|
const previousVariations = [];
|
|
358
395
|
const improvementRunId = `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
396
|
+
const pruneBackup = (backupPath) => rmSync(backupPath, { recursive: true, force: true });
|
|
359
397
|
try {
|
|
360
|
-
const
|
|
361
|
-
??
|
|
398
|
+
const contextGraphConfig = options.contextGraphConfig
|
|
399
|
+
?? loadContextGraphProjectConfig(options.contextGraphPath)
|
|
362
400
|
?? {
|
|
363
|
-
name:
|
|
401
|
+
name: interfConfig?.name ?? "project",
|
|
402
|
+
intent: interfConfig?.intent ?? "",
|
|
364
403
|
path: "./source-folder",
|
|
365
|
-
checks: [],
|
|
366
404
|
};
|
|
367
|
-
const adoptVariationBest = (variation, result) =>
|
|
368
|
-
if (result.bestOutcome && result.bestSnapshotPath && (!bestOutcome || testScore(result.bestOutcome) > testScore(bestOutcome))) {
|
|
369
|
-
if (bestSnapshotPath) {
|
|
370
|
-
rmSync(bestSnapshotPath, { recursive: true, force: true });
|
|
371
|
-
}
|
|
372
|
-
bestOutcome = result.bestOutcome;
|
|
373
|
-
bestSnapshotPath = result.bestSnapshotPath;
|
|
374
|
-
bestAttempt = result.bestAttempt;
|
|
375
|
-
bestVariation = variation;
|
|
376
|
-
result.bestSnapshotPath = null;
|
|
377
|
-
}
|
|
378
|
-
if (result.bestSnapshotPath) {
|
|
379
|
-
rmSync(result.bestSnapshotPath, { recursive: true, force: true });
|
|
380
|
-
result.bestSnapshotPath = null;
|
|
381
|
-
}
|
|
382
|
-
};
|
|
405
|
+
const adoptVariationBest = (variation, result) => considerVariationBest(best, variation, result, pruneBackup);
|
|
383
406
|
const baseline = await runBuildPlanVariation({
|
|
384
407
|
executor: options.executor,
|
|
385
408
|
testExecutor: options.testExecutor,
|
|
386
409
|
resolveStageExecutor: options.resolveStageExecutor,
|
|
387
|
-
|
|
410
|
+
contextGraphPath: options.contextGraphPath,
|
|
388
411
|
sourcePath: options.sourcePath,
|
|
389
|
-
|
|
412
|
+
contextGraphConfig,
|
|
390
413
|
executionProfile: options.executionProfile,
|
|
391
414
|
preserveStageShells,
|
|
392
415
|
maxAttempts,
|
|
@@ -404,13 +427,13 @@ export async function runConfiguredBuild(options) {
|
|
|
404
427
|
variation: 1,
|
|
405
428
|
kind: "baseline",
|
|
406
429
|
result: baseline,
|
|
407
|
-
defaultTotalChecks:
|
|
430
|
+
defaultTotalChecks: benchmarkCheckCount,
|
|
408
431
|
}));
|
|
409
432
|
if (baseline.passed) {
|
|
410
433
|
printBuildPlanVariationSummary(previousVariations);
|
|
411
434
|
printPostBuildNextStep({
|
|
412
|
-
|
|
413
|
-
checks:
|
|
435
|
+
contextGraphPath: options.contextGraphPath,
|
|
436
|
+
checks: benchmarkCheckCount,
|
|
414
437
|
testedDuringBuild: true,
|
|
415
438
|
});
|
|
416
439
|
return true;
|
|
@@ -421,9 +444,12 @@ export async function runConfiguredBuild(options) {
|
|
|
421
444
|
console.log(chalk.dim(` Self-improving loop ${loopIndex}/${maxLoops}: reviewing failed runs and editing the Build Plan.`));
|
|
422
445
|
const improvement = await runBuildPlanImprovementLoop({
|
|
423
446
|
executor: options.executor,
|
|
424
|
-
|
|
425
|
-
buildPlanId: resolveRequiredBuildPlanFromConfig(readInterfConfig(options.
|
|
426
|
-
|
|
447
|
+
contextGraphPath: options.contextGraphPath,
|
|
448
|
+
buildPlanId: resolveRequiredBuildPlanFromConfig(readInterfConfig(options.contextGraphPath), `.interf/interf.json for ${options.contextGraphPath}`),
|
|
449
|
+
benchmarkChecks: benchmarkSpec?.cases.map((testCase) => ({
|
|
450
|
+
id: testCase.id,
|
|
451
|
+
question: testCase.question,
|
|
452
|
+
})) ?? [],
|
|
427
453
|
runId: improvementRunId,
|
|
428
454
|
loopIndex,
|
|
429
455
|
maxLoops,
|
|
@@ -444,9 +470,9 @@ export async function runConfiguredBuild(options) {
|
|
|
444
470
|
executor: options.executor,
|
|
445
471
|
testExecutor: options.testExecutor,
|
|
446
472
|
resolveStageExecutor: options.resolveStageExecutor,
|
|
447
|
-
|
|
473
|
+
contextGraphPath: options.contextGraphPath,
|
|
448
474
|
sourcePath: options.sourcePath,
|
|
449
|
-
|
|
475
|
+
contextGraphConfig,
|
|
450
476
|
executionProfile: options.executionProfile,
|
|
451
477
|
preserveStageShells,
|
|
452
478
|
maxAttempts,
|
|
@@ -464,44 +490,44 @@ export async function runConfiguredBuild(options) {
|
|
|
464
490
|
variation: loopIndex + 1,
|
|
465
491
|
kind: "edited",
|
|
466
492
|
result: variation,
|
|
467
|
-
defaultTotalChecks:
|
|
493
|
+
defaultTotalChecks: benchmarkCheckCount,
|
|
468
494
|
}));
|
|
469
495
|
if (variation.passed) {
|
|
470
496
|
printBuildPlanVariationSummary(previousVariations);
|
|
471
|
-
printSelectedBuildPlanOwnership(options.
|
|
497
|
+
printSelectedBuildPlanOwnership(options.contextGraphPath, best.variation);
|
|
472
498
|
printPostBuildNextStep({
|
|
473
|
-
|
|
474
|
-
checks:
|
|
499
|
+
contextGraphPath: options.contextGraphPath,
|
|
500
|
+
checks: benchmarkCheckCount,
|
|
475
501
|
testedDuringBuild: true,
|
|
476
502
|
});
|
|
477
503
|
return true;
|
|
478
504
|
}
|
|
479
505
|
}
|
|
480
506
|
}
|
|
481
|
-
if (
|
|
482
|
-
restoreBestBuildState(
|
|
507
|
+
if (best.backupPath && best.variation > 0) {
|
|
508
|
+
restoreBestBuildState(best.backupPath, options.contextGraphPath);
|
|
483
509
|
console.log();
|
|
484
|
-
console.log(chalk.dim(` Restored the best-performing
|
|
510
|
+
console.log(chalk.dim(` Restored the best-performing Context Graph from variation ${best.variation}, attempt ${best.attempt}.`));
|
|
485
511
|
}
|
|
486
512
|
process.exitCode = 1;
|
|
487
513
|
console.log();
|
|
488
514
|
printBuildPlanVariationSummary(previousVariations);
|
|
489
|
-
printSelectedBuildPlanOwnership(options.
|
|
515
|
+
printSelectedBuildPlanOwnership(options.contextGraphPath, best.variation);
|
|
490
516
|
if (maxLoops != null) {
|
|
491
|
-
console.log(chalk.red(`
|
|
517
|
+
console.log(chalk.red(` Context Graph did not pass after ${maxAttempts} attempt${maxAttempts === 1 ? "" : "s"} per variation and ${maxLoops} Build Plan improvement loop${maxLoops === 1 ? "" : "s"}.`));
|
|
492
518
|
}
|
|
493
519
|
else {
|
|
494
|
-
console.log(chalk.red(`
|
|
520
|
+
console.log(chalk.red(` Context Graph did not pass within ${maxAttempts} attempt${maxAttempts === 1 ? "" : "s"}.`));
|
|
495
521
|
}
|
|
496
|
-
if (
|
|
497
|
-
console.log(chalk.dim(` Best attempt
|
|
522
|
+
if (best.outcome) {
|
|
523
|
+
console.log(chalk.dim(` Best attempt benchmark pass rate: ${benchmarkPassRate(best.outcome)}%.`));
|
|
498
524
|
}
|
|
499
|
-
printStageShellReviewHint(options.
|
|
525
|
+
printStageShellReviewHint(options.contextGraphPath, preserveStageShells, "failure");
|
|
500
526
|
return false;
|
|
501
527
|
}
|
|
502
528
|
finally {
|
|
503
|
-
if (
|
|
504
|
-
rmSync(
|
|
529
|
+
if (best.backupPath) {
|
|
530
|
+
rmSync(best.backupPath, { recursive: true, force: true });
|
|
505
531
|
}
|
|
506
532
|
}
|
|
507
533
|
}
|
|
@@ -523,7 +549,7 @@ export function createNativeLocalServiceRunHandlers(options = {}) {
|
|
|
523
549
|
if (!resolved.executor) {
|
|
524
550
|
return ActionProposalPlanSchema.parse({
|
|
525
551
|
action_type: "clarification",
|
|
526
|
-
|
|
552
|
+
project: request.project,
|
|
527
553
|
assistant_message: resolved.error ?? "No local agent detected for action planning.",
|
|
528
554
|
});
|
|
529
555
|
}
|
|
@@ -568,9 +594,9 @@ export function createNativeLocalServiceRunHandlers(options = {}) {
|
|
|
568
594
|
}
|
|
569
595
|
return stageExecutor;
|
|
570
596
|
},
|
|
571
|
-
|
|
597
|
+
contextGraphPath: context.contextGraphPath,
|
|
572
598
|
sourcePath: context.sourcePath,
|
|
573
|
-
|
|
599
|
+
contextGraphConfig: context.projectConfig,
|
|
574
600
|
maxAttemptsOverride: request.max_attempts ?? null,
|
|
575
601
|
maxLoopsOverride: request.max_loops ?? null,
|
|
576
602
|
preserveStageShells: request.preserve_stage_shells,
|
|
@@ -590,47 +616,69 @@ export function createNativeLocalServiceRunHandlers(options = {}) {
|
|
|
590
616
|
});
|
|
591
617
|
// Verify runs always use the `verifier` role. We resolve here
|
|
592
618
|
// for symmetry with Build runs — verify-run events are not
|
|
593
|
-
// streamed
|
|
594
|
-
//
|
|
595
|
-
const
|
|
596
|
-
|
|
619
|
+
// streamed, so the resolution shows up only in the executor
|
|
620
|
+
// field on the saved benchmark run record.
|
|
621
|
+
const executor = request.agent_name
|
|
622
|
+
? (() => {
|
|
623
|
+
const agent = registry.agents.find((entry) => entry.name === request.agent_name && entry.available !== false);
|
|
624
|
+
if (!agent) {
|
|
625
|
+
throw new Error(`Benchmark agent "${request.agent_name}" is not connected.`);
|
|
626
|
+
}
|
|
627
|
+
const requestedExecutor = bundle.executors.get(agent.name);
|
|
628
|
+
if (!requestedExecutor) {
|
|
629
|
+
throw new Error(`Benchmark agent "${agent.name}" is not available for automated runs.`);
|
|
630
|
+
}
|
|
631
|
+
return requestedExecutor;
|
|
632
|
+
})()
|
|
633
|
+
: bundle.resolveExecutorForRole("verifier").executor;
|
|
634
|
+
const executorInfo = buildRuntimeExecutorInfo(executor);
|
|
635
|
+
const result = await runBenchmarkForExecutor({
|
|
597
636
|
sourcePath: context.sourcePath,
|
|
598
|
-
|
|
599
|
-
|
|
637
|
+
projectConfig: context.projectConfig,
|
|
638
|
+
contextGraphPath: context.contextGraphPath,
|
|
600
639
|
executor,
|
|
601
640
|
target: request.target,
|
|
602
641
|
});
|
|
603
|
-
const
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
? "
|
|
609
|
-
:
|
|
642
|
+
const missingTargets = [
|
|
643
|
+
...(request.target === "source-files" || request.target === "both"
|
|
644
|
+
? result.sourceFilesOutcome ? [] : ["Source files"]
|
|
645
|
+
: []),
|
|
646
|
+
...(request.target === "context-graph" || request.target === "both"
|
|
647
|
+
? result.contextGraphOutcome ? [] : ["Context Graph"]
|
|
648
|
+
: []),
|
|
649
|
+
];
|
|
650
|
+
if (missingTargets.length > 0) {
|
|
610
651
|
return {
|
|
611
652
|
ok: false,
|
|
612
|
-
|
|
613
|
-
|
|
653
|
+
benchmark_run: result.benchmarkRun,
|
|
654
|
+
executor: executorInfo,
|
|
655
|
+
agent_label: executor.displayName,
|
|
656
|
+
error: `${missingTargets.join(" and ")} ${missingTargets.length === 1 ? "is" : "are"} not ready for benchmark evaluation.`,
|
|
614
657
|
};
|
|
615
658
|
}
|
|
616
659
|
return {
|
|
617
660
|
ok: true,
|
|
618
|
-
|
|
661
|
+
benchmark_run: result.benchmarkRun,
|
|
662
|
+
executor: executorInfo,
|
|
663
|
+
agent_label: executor.displayName,
|
|
619
664
|
};
|
|
620
665
|
},
|
|
621
|
-
async
|
|
666
|
+
async createBenchmarkQuestionDraft(request, context) {
|
|
622
667
|
const executor = resolveHandlerExecutor(options.executor);
|
|
623
668
|
context.emit({
|
|
624
669
|
type: "log.appended",
|
|
625
670
|
step_id: "agent-draft",
|
|
626
|
-
message: `Using ${executor.displayName} to draft
|
|
671
|
+
message: `Using ${executor.displayName} to draft benchmark questions.`,
|
|
627
672
|
});
|
|
628
|
-
const drafted = await
|
|
629
|
-
|
|
673
|
+
const drafted = await draftBenchmarkQuestions({
|
|
674
|
+
projectName: request.project,
|
|
630
675
|
sourceFolderPath: request.source_folder_path,
|
|
631
|
-
|
|
676
|
+
intent: request.intent,
|
|
632
677
|
executor,
|
|
633
678
|
targetCount: request.target_count,
|
|
679
|
+
// Preserve the drafting shell under the Project's durable job storage so
|
|
680
|
+
// the draft execution (prompt, reasoning, output, verdict) is inspectable.
|
|
681
|
+
preservedShellRoot: join(projectServiceJobShellsRoot(asProjectDataDir(context.sourcePath)), `benchmark-question-draft-${context.runId}`),
|
|
634
682
|
onStatus: (line) => context.emit({
|
|
635
683
|
type: "log.appended",
|
|
636
684
|
step_id: "agent-draft",
|
|
@@ -638,10 +686,12 @@ export function createNativeLocalServiceRunHandlers(options = {}) {
|
|
|
638
686
|
}),
|
|
639
687
|
});
|
|
640
688
|
if (!drafted.checks) {
|
|
641
|
-
throw new Error(drafted.error ?? "Could not draft
|
|
689
|
+
throw new Error(drafted.error ?? "Could not draft benchmark questions from this Source Folder.");
|
|
642
690
|
}
|
|
643
691
|
return {
|
|
644
692
|
checks: drafted.checks,
|
|
693
|
+
...(drafted.shellPath ? { shell_path: drafted.shellPath } : {}),
|
|
694
|
+
...(drafted.reasoningPath ? { reasoning_path: drafted.reasoningPath } : {}),
|
|
645
695
|
};
|
|
646
696
|
},
|
|
647
697
|
async createBuildPlanAuthoringRun(request, context) {
|
|
@@ -652,16 +702,17 @@ export function createNativeLocalServiceRunHandlers(options = {}) {
|
|
|
652
702
|
message: `Using ${executor.displayName} for Build Plan authoring.`,
|
|
653
703
|
});
|
|
654
704
|
const result = await runBuildPlanAuthoringDraft({
|
|
655
|
-
|
|
705
|
+
projectDataDir: context.sourcePath,
|
|
656
706
|
sourceFolderPath: request.source_folder_path,
|
|
657
707
|
baseBuildPlanId: request.reference_build_plan_id ?? request.base_build_plan_id,
|
|
658
708
|
buildPlanId: request.build_plan_id,
|
|
659
709
|
label: request.label,
|
|
660
710
|
hint: request.hint,
|
|
661
|
-
|
|
711
|
+
intent: request.intent,
|
|
662
712
|
checks: request.checks,
|
|
713
|
+
userPrepInstructions: request.user_prep_instructions,
|
|
663
714
|
requestedArtifacts: request.requested_artifacts,
|
|
664
|
-
|
|
715
|
+
sourceContext: request.source_context ?? null,
|
|
665
716
|
artifactRequirements: request.artifact_requirements,
|
|
666
717
|
executor,
|
|
667
718
|
onStatus: (line) => context.emit({
|