@interf/compiler 0.22.2 → 0.33.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 +175 -234
- 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 -4
- package/dist/cli/commands/auth.d.ts +20 -0
- package/dist/cli/commands/auth.js +161 -0
- package/dist/cli/commands/benchmark.d.ts +10 -0
- package/dist/cli/commands/benchmark.js +88 -0
- package/dist/cli/commands/build-plan.js +95 -103
- package/dist/cli/commands/build.d.ts +1 -1
- package/dist/cli/commands/build.js +16 -15
- package/dist/cli/commands/doctor.js +3 -3
- package/dist/cli/commands/graphs.d.ts +2 -0
- package/dist/cli/commands/graphs.js +199 -0
- package/dist/cli/commands/login.js +4 -6
- package/dist/cli/commands/logout.js +1 -1
- package/dist/cli/commands/mcp.d.ts +3 -2
- package/dist/cli/commands/mcp.js +721 -204
- package/dist/cli/commands/project.d.ts +2 -0
- package/dist/cli/commands/project.js +202 -0
- package/dist/cli/commands/reset.d.ts +1 -1
- package/dist/cli/commands/reset.js +10 -10
- package/dist/cli/commands/runs.js +52 -26
- 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 +33 -22
- package/dist/cli/commands/traces.d.ts +2 -0
- package/dist/cli/commands/traces.js +125 -0
- package/dist/cli/commands/wizard.js +155 -150
- package/dist/cli/index.d.ts +7 -4
- package/dist/cli/index.js +13 -7
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/packages/build-plans/authoring/brief.d.ts +517 -0
- package/dist/packages/build-plans/authoring/brief.js +89 -0
- package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +10 -10
- package/dist/packages/build-plans/authoring/build-plan-authoring.js +66 -26
- package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +1 -1
- package/dist/packages/build-plans/authoring/build-plan-edit-session.js +8 -2
- package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
- package/dist/packages/build-plans/authoring/build-plan-improvement.js +39 -42
- 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 -12
- package/dist/packages/build-plans/package/build-plan-definitions.js +40 -39
- 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 +4 -4
- package/dist/packages/build-plans/package/build-plan-stage-runner.js +22 -11
- package/dist/packages/build-plans/package/builtin-build-plan.d.ts +5 -6
- package/dist/packages/build-plans/package/builtin-build-plan.js +7 -8
- package/dist/packages/build-plans/package/context-interface.d.ts +11 -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 +56 -52
- package/dist/packages/build-plans/package/local-build-plans.d.ts +12 -10
- package/dist/packages/build-plans/package/local-build-plans.js +56 -31
- package/dist/packages/build-plans/package/user-build-plans.js +1 -1
- package/dist/packages/contracts/index.d.ts +4 -2
- package/dist/packages/contracts/index.js +2 -1
- package/dist/packages/contracts/lib/project-paths.d.ts +137 -0
- package/dist/packages/contracts/lib/project-paths.js +211 -0
- package/dist/packages/contracts/lib/project-schema.d.ts +160 -0
- package/dist/packages/contracts/lib/project-schema.js +113 -0
- package/dist/packages/contracts/lib/schema.d.ts +739 -80
- package/dist/packages/contracts/lib/schema.js +410 -75
- 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 +79 -0
- package/dist/packages/projects/lib/schema.js +89 -0
- package/dist/packages/projects/source-config.d.ts +58 -0
- package/dist/packages/projects/source-config.js +352 -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 +82 -0
- package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
- package/dist/packages/runtime/actions/form-builders.js +619 -0
- package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
- package/dist/packages/runtime/actions/form-validators.js +128 -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 +158 -0
- package/dist/packages/runtime/actions/schemas.d.ts +154 -0
- package/dist/packages/runtime/actions/schemas.js +36 -0
- package/dist/packages/runtime/agent-handoff.d.ts +11 -0
- package/dist/packages/runtime/agent-handoff.js +101 -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.js +8 -14
- package/dist/packages/{engine → runtime}/agents/lib/execution.js +14 -4
- package/dist/packages/{engine → runtime}/agents/lib/preflight.js +15 -13
- package/dist/packages/{engine → runtime}/agents/lib/render.js +4 -4
- 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 +452 -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 +63 -0
- package/dist/packages/runtime/agents/lib/shells.js +383 -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 +64 -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 +7 -6
- 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 +88 -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 +20 -0
- package/dist/packages/runtime/benchmark-question-draft.js +124 -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 +5 -5
- package/dist/packages/{engine → runtime}/build/artifact-status.js +25 -23
- 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 +15 -0
- package/dist/packages/runtime/build/build-evidence.js +173 -0
- package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
- package/dist/packages/runtime/build/build-pipeline.js +304 -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/{engine → runtime}/build/build-stage-plan.js +28 -29
- package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
- package/dist/packages/runtime/build/build-stage-runner.js +165 -0
- package/dist/packages/{engine → runtime}/build/build-target.d.ts +4 -4
- package/dist/packages/runtime/build/build-target.js +16 -0
- package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
- package/dist/packages/runtime/build/check-evaluator.js +575 -0
- package/dist/packages/runtime/build/context-graph-paths.d.ts +51 -0
- package/dist/packages/runtime/build/context-graph-paths.js +133 -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 +5 -3
- package/dist/packages/{engine → runtime}/build/index.js +5 -3
- package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +221 -88
- package/dist/packages/{engine → runtime}/build/lib/schema.js +61 -41
- 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 +5 -5
- 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/{engine → runtime}/build/runtime-paths.js +6 -6
- package/dist/packages/{engine → runtime}/build/runtime-prompt.js +7 -6
- 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 +265 -0
- package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +6 -6
- package/dist/packages/runtime/build/runtime-types.js +1 -0
- package/dist/packages/runtime/build/runtime.d.ts +6 -0
- package/dist/packages/runtime/build/runtime.js +5 -0
- package/dist/packages/runtime/build/source-files.d.ts +58 -0
- package/dist/packages/runtime/build/source-files.js +184 -0
- package/dist/packages/runtime/build/source-inventory.d.ts +27 -0
- package/dist/packages/runtime/build/source-inventory.js +273 -0
- package/dist/packages/runtime/build/source-manifest.d.ts +52 -0
- package/dist/packages/runtime/build/source-manifest.js +192 -0
- package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
- package/dist/packages/runtime/build/stage-evidence.js +317 -0
- package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
- package/dist/packages/runtime/build/stage-reuse.js +142 -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 +119 -0
- package/dist/packages/{engine → runtime}/build/state-paths.d.ts +3 -1
- package/dist/packages/runtime/build/state-paths.js +22 -0
- package/dist/packages/runtime/build/state-view.d.ts +5 -0
- package/dist/packages/{engine → runtime}/build/state-view.js +60 -33
- package/dist/packages/runtime/build/state.d.ts +7 -0
- package/dist/packages/runtime/build/state.js +12 -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} +48 -35
- 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 +15 -15
- package/dist/packages/{engine → runtime}/client.js +41 -24
- 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 +114 -0
- package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
- package/dist/packages/runtime/context-graph-scaffold.js +134 -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 +270 -192
- 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/{engine → runtime}/native-run-handlers.d.ts +4 -4
- package/dist/packages/{engine → runtime}/native-run-handlers.js +184 -152
- 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 +53 -0
- package/dist/packages/runtime/project-store.d.ts +85 -0
- package/dist/packages/runtime/project-store.js +168 -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 +166 -84
- 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 +131 -0
- package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
- package/dist/packages/runtime/runtime-build-runs.js +562 -0
- package/dist/packages/runtime/runtime-caches.d.ts +91 -0
- package/dist/packages/{engine → runtime}/runtime-caches.js +77 -49
- 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 +64 -0
- package/dist/packages/runtime/runtime-project-reads.d.ts +15 -0
- package/dist/packages/runtime/runtime-project-reads.js +381 -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 +21 -16
- package/dist/packages/{engine → runtime}/runtime-resource-builders.js +48 -38
- package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
- package/dist/packages/runtime/runtime-verify-runs.js +295 -0
- package/dist/packages/runtime/runtime.d.ts +1165 -0
- package/dist/packages/runtime/runtime.js +417 -0
- package/dist/packages/runtime/schemas/actions.d.ts +1182 -0
- package/dist/packages/runtime/schemas/actions.js +117 -0
- package/dist/packages/runtime/schemas/agents.d.ts +76 -0
- package/dist/packages/runtime/schemas/agents.js +41 -0
- package/dist/packages/runtime/schemas/build-plans.d.ts +959 -0
- package/dist/packages/runtime/schemas/build-plans.js +107 -0
- package/dist/packages/runtime/schemas/files.d.ts +567 -0
- package/dist/packages/runtime/schemas/files.js +51 -0
- package/dist/packages/runtime/schemas/index.d.ts +8 -0
- package/dist/packages/runtime/schemas/index.js +12 -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 +103 -0
- package/dist/packages/runtime/schemas/projects.d.ts +339 -0
- package/dist/packages/runtime/schemas/projects.js +136 -0
- package/dist/packages/runtime/schemas/runs.d.ts +2676 -0
- package/dist/packages/runtime/schemas/runs.js +98 -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 +117 -0
- package/dist/packages/runtime/service/operations.d.ts +1490 -0
- package/dist/packages/runtime/service/operations.js +245 -0
- package/dist/packages/runtime/service/routes.d.ts +106 -0
- package/dist/packages/runtime/service/routes.js +120 -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 +27 -0
- package/dist/packages/runtime/service/server-helpers.js +89 -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 +43 -0
- package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-agents.js +198 -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 +83 -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 +192 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.js +130 -0
- package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
- package/dist/packages/runtime/service/server-routes-project-runs.js +85 -0
- package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-projects.js +92 -0
- package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-runs.js +112 -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 +26 -18
- package/dist/packages/{engine → runtime}/verify/verify-execution.js +11 -11
- package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +4 -4
- package/dist/packages/runtime/verify/verify-paths.js +61 -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/{engine → runtime}/verify/verify-specs.js +5 -3
- 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 +39 -31
- package/public-repo/CONTRIBUTING.md +7 -16
- package/public-repo/README.md +175 -234
- package/public-repo/SECURITY.md +3 -4
- package/public-repo/build-plans/interf-default/README.md +19 -14
- package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +18 -11
- package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +12 -5
- package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +16 -4
- package/public-repo/build-plans/interf-default/build-plan.json +34 -28
- package/public-repo/build-plans/interf-default/build-plan.schema.json +54 -32
- package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
- package/public-repo/build-plans/interf-default/use/query/SKILL.md +17 -11
- package/public-repo/openapi/local-service.openapi.json +6803 -0
- package/public-repo/skills/interf/SKILL.md +460 -179
- 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/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-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/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-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.js +0 -16
- package/dist/packages/engine/build/state-view.d.ts +0 -5
- 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/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-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-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/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-profile.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/executors.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/logs.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/logs.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/render.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/status.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/types.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-paths.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-execution.d.ts +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
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join, relative, resolve } from "node:path";
|
|
4
|
+
import { buildShellSourceState, loadBuildStageInputs, loadContextGraphSourceManifest, loadContextGraphSourceState, } from "../../build/source-manifest.js";
|
|
5
|
+
import { CHECK_PARAM_CONTRACTS, CHECK_KINDS, SourceManifestSchema, StageInputsSchema, } from "../../../contracts/lib/schema.js";
|
|
6
|
+
import { stageExecutionShellsRoot, buildPlanImprovementLoopRoot, buildPlanPackagePathForContextGraph, contextGraphInterfConfigPath, contextGraphRuntimeSourceManifestPath, contextGraphRuntimeRoot, } from "../../build/context-graph-paths.js";
|
|
7
|
+
import { writeFileAtomic, writeJsonAtomic } from "../../build/atomic-fs.js";
|
|
8
|
+
import { resolveBuildPlanImprovementReviewSourcePaths } from "../../../build-plans/package/build-plan-review-paths.js";
|
|
9
|
+
import { copyIfExists, copyResolvedTree, freezePreservedShell, writeIfChanged, writeNativeSkillCopies, } from "./shell-fs.js";
|
|
10
|
+
import { shellLogsPath, shellRuntimePath, } from "./shell-paths.js";
|
|
11
|
+
import { writeStageExecutionWorkspaceManifest, } from "./shell-workspace.js";
|
|
12
|
+
import { readBuildPlanImprovementDoc, readContextGraphQuerySkillSource, renderBuildPlanAuthoringAgents, renderBuildPlanAuthoringSkill, renderBuildPlanImprovementAgents, renderBuildPlanImprovementSkill, renderClaudeBootstrap, renderSourceFilesTestAgents, renderSourceFilesTestQuerySkill, renderStageExecutionAgents, renderStageExecutionSkill, renderContextGraphAgents, renderContextGraphQueryNativeSkill, renderContextGraphQuerySkill, } from "./shell-templates.js";
|
|
13
|
+
import { buildStageArtifactMounts, ensureBuildExecutionSurface, projectBuildPlanMetadata, projectStageArtifactMountAliases, projectContextGraphReviewArtifactsState, projectContextGraphRuntimeArtifacts, projectContextGraphSchemaArtifacts, readStageBuildPlanDoc, stageMaterializedArtifactSet, syncStageExecutionShellWrites, writeExecutionShellPathsFile, } from "./shell-projection.js";
|
|
14
|
+
export { syncStageExecutionShellWrites };
|
|
15
|
+
export { renderClaudeBootstrap, renderContextGraphQuerySkill };
|
|
16
|
+
function shellRelativePathInside(shellRoot, locator) {
|
|
17
|
+
const absolutePath = resolve(shellRoot, locator);
|
|
18
|
+
const relativePath = relative(shellRoot, absolutePath);
|
|
19
|
+
if (relativePath === "" || relativePath.startsWith("..") || resolve(relativePath) === relativePath) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return absolutePath;
|
|
23
|
+
}
|
|
24
|
+
export function validateStageExecutionShellInputs(options) {
|
|
25
|
+
const canonicalInputs = loadBuildStageInputs(options.contextGraphPath, options.stage.id);
|
|
26
|
+
if (!canonicalInputs) {
|
|
27
|
+
return { ok: false, summary: `Missing canonical stage inputs for ${options.stage.id}.` };
|
|
28
|
+
}
|
|
29
|
+
const canonicalManifest = loadContextGraphSourceManifest(options.contextGraphPath);
|
|
30
|
+
if (!canonicalManifest) {
|
|
31
|
+
return { ok: false, summary: "Missing canonical Source Manifest for stage execution." };
|
|
32
|
+
}
|
|
33
|
+
if (canonicalInputs.version !== 3 || canonicalInputs.source_manifest_id !== canonicalManifest.manifest_id) {
|
|
34
|
+
return { ok: false, summary: "Canonical stage inputs are not backed by the current Source Manifest." };
|
|
35
|
+
}
|
|
36
|
+
const shellInputsPath = shellRuntimePath(options.shellRoot, "stage-inputs.json");
|
|
37
|
+
if (!existsSync(shellInputsPath)) {
|
|
38
|
+
return { ok: false, summary: "Stage shell is missing runtime/stage-inputs.json." };
|
|
39
|
+
}
|
|
40
|
+
let shellInputs;
|
|
41
|
+
try {
|
|
42
|
+
shellInputs = StageInputsSchema.parse(JSON.parse(readFileSync(shellInputsPath, "utf8")));
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
return {
|
|
46
|
+
ok: false,
|
|
47
|
+
summary: `Stage shell inputs are invalid: ${error instanceof Error ? error.message : String(error)}`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (shellInputs.source_state_id !== canonicalInputs.source_state_id) {
|
|
51
|
+
return { ok: false, summary: "Stage shell inputs do not match the canonical Source state id." };
|
|
52
|
+
}
|
|
53
|
+
if (shellInputs.version !== 3 || shellInputs.source_manifest_id !== canonicalManifest.manifest_id) {
|
|
54
|
+
return { ok: false, summary: "Stage shell inputs do not match the canonical Source Manifest id." };
|
|
55
|
+
}
|
|
56
|
+
if (shellInputs.inputs.length !== canonicalInputs.inputs.length || shellInputs.input_total !== canonicalInputs.input_total) {
|
|
57
|
+
return { ok: false, summary: "Stage shell input count does not match the canonical stage input count." };
|
|
58
|
+
}
|
|
59
|
+
const shellManifestPath = shellRuntimePath(options.shellRoot, "source-manifest.json");
|
|
60
|
+
if (!existsSync(shellManifestPath)) {
|
|
61
|
+
return { ok: false, summary: "Stage shell is missing runtime/source-manifest.json." };
|
|
62
|
+
}
|
|
63
|
+
let shellManifest;
|
|
64
|
+
try {
|
|
65
|
+
shellManifest = SourceManifestSchema.parse(JSON.parse(readFileSync(shellManifestPath, "utf8")));
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
return {
|
|
69
|
+
ok: false,
|
|
70
|
+
summary: `Stage shell Source Manifest is invalid: ${error instanceof Error ? error.message : String(error)}`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
if (shellManifest.manifest_id !== canonicalManifest.manifest_id) {
|
|
74
|
+
return { ok: false, summary: "Stage shell Source Manifest does not match the canonical manifest id." };
|
|
75
|
+
}
|
|
76
|
+
const shellInputsByKey = new Map(shellInputs.inputs.map((input) => [`${input.source_file_id}\0${input.path}`, input]));
|
|
77
|
+
for (const canonicalInput of canonicalInputs.inputs) {
|
|
78
|
+
const key = `${canonicalInput.source_file_id}\0${canonicalInput.path}`;
|
|
79
|
+
const shellInput = shellInputsByKey.get(key);
|
|
80
|
+
if (!shellInput) {
|
|
81
|
+
return { ok: false, summary: `Stage shell is missing source input ${canonicalInput.path}.` };
|
|
82
|
+
}
|
|
83
|
+
if (canonicalInput.content_hash && shellInput.content_hash !== canonicalInput.content_hash) {
|
|
84
|
+
return { ok: false, summary: `Stage shell source input ${canonicalInput.path} has a changed content hash.` };
|
|
85
|
+
}
|
|
86
|
+
if (shellInput.locator !== canonicalInput.locator) {
|
|
87
|
+
return { ok: false, summary: `Stage shell source input ${canonicalInput.path} has a changed locator.` };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return { ok: true, summary: "Stage shell inputs match canonical source slices." };
|
|
91
|
+
}
|
|
92
|
+
export function writeNativeAgentSurface(rootPath, agentsContent, skillName, skillContent) {
|
|
93
|
+
let changed = false;
|
|
94
|
+
changed = writeIfChanged(join(rootPath, "AGENTS.md"), `${agentsContent.trimEnd()}\n`) || changed;
|
|
95
|
+
changed =
|
|
96
|
+
writeIfChanged(join(rootPath, "CLAUDE.md"), renderClaudeBootstrap(agentsContent)) || changed;
|
|
97
|
+
changed = writeNativeSkillCopies(rootPath, skillName, skillContent) || changed;
|
|
98
|
+
return changed;
|
|
99
|
+
}
|
|
100
|
+
export function pruneStageExecutionShells(contextGraphPath) {
|
|
101
|
+
rmSync(stageExecutionShellsRoot(contextGraphPath), { recursive: true, force: true });
|
|
102
|
+
}
|
|
103
|
+
export function projectContextGraphQueryShell(contextGraphPath, contextGraphName, buildPlanId, options) {
|
|
104
|
+
const agentsContent = renderContextGraphAgents(contextGraphPath, contextGraphName, buildPlanId, options);
|
|
105
|
+
const querySkillContent = readContextGraphQuerySkillSource(contextGraphPath);
|
|
106
|
+
return writeNativeAgentSurface(contextGraphPath, agentsContent, "interf-query", renderContextGraphQueryNativeSkill(querySkillContent));
|
|
107
|
+
}
|
|
108
|
+
export function projectSourceFilesTestQueryShell(rootPath) {
|
|
109
|
+
return writeNativeAgentSurface(rootPath, renderSourceFilesTestAgents(), "interf-query", renderSourceFilesTestQuerySkill());
|
|
110
|
+
}
|
|
111
|
+
export function createStageExecutionShell(contextGraphPath, contextGraphName, buildPlanId, stage, writeArtifacts = []) {
|
|
112
|
+
const schema = ensureBuildExecutionSurface(contextGraphPath);
|
|
113
|
+
const materializedArtifacts = stageMaterializedArtifactSet(schema, stage, writeArtifacts);
|
|
114
|
+
const cleanWriteArtifacts = new Set(stage.writes.filter((artifactId) => !stage.reads.includes(artifactId)));
|
|
115
|
+
const shellsRoot = stageExecutionShellsRoot(contextGraphPath);
|
|
116
|
+
const shellRoot = join(shellsRoot, `${stage.id}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`);
|
|
117
|
+
mkdirSync(shellRoot, { recursive: true });
|
|
118
|
+
mkdirSync(join(shellRoot, "runtime"), { recursive: true });
|
|
119
|
+
mkdirSync(join(shellRoot, ".interf", "runtime"), { recursive: true });
|
|
120
|
+
mkdirSync(join(shellRoot, "inputs"), { recursive: true });
|
|
121
|
+
mkdirSync(join(shellRoot, "outputs"), { recursive: true });
|
|
122
|
+
mkdirSync(shellLogsPath(shellRoot), { recursive: true });
|
|
123
|
+
copyResolvedTree({
|
|
124
|
+
sourcePath: contextGraphInterfConfigPath(contextGraphPath),
|
|
125
|
+
targetPath: join(shellRoot, "interf.json"),
|
|
126
|
+
shellType: "stage-execution",
|
|
127
|
+
});
|
|
128
|
+
copyIfExists(join(contextGraphRuntimeRoot(contextGraphPath), "stage-contract.json"), shellRuntimePath(shellRoot, "stage-contract.json"), "stage-execution");
|
|
129
|
+
const sourceState = loadContextGraphSourceState(contextGraphPath);
|
|
130
|
+
const stageInputs = loadBuildStageInputs(contextGraphPath, stage.id);
|
|
131
|
+
const sourceManifest = loadContextGraphSourceManifest(contextGraphPath);
|
|
132
|
+
if (sourceManifest) {
|
|
133
|
+
writeJsonAtomic(shellRuntimePath(shellRoot, "source-manifest.json"), sourceManifest);
|
|
134
|
+
copyIfExists(contextGraphRuntimeSourceManifestPath(contextGraphPath), join(shellRoot, ".interf", "runtime", "source-manifest.json"), "stage-execution");
|
|
135
|
+
}
|
|
136
|
+
if (sourceState && stageInputs) {
|
|
137
|
+
writeJsonAtomic(shellRuntimePath(shellRoot, "stage-inputs.json"), stageInputs);
|
|
138
|
+
writeJsonAtomic(shellRuntimePath(shellRoot, "source-state.json"), buildShellSourceState(sourceState, stageInputs));
|
|
139
|
+
}
|
|
140
|
+
writeStageSelfCheckScript(shellRoot);
|
|
141
|
+
projectContextGraphSchemaArtifacts(contextGraphPath, shellRoot, schema, new Set([...stage.reads, ...stage.writes]), materializedArtifacts, cleanWriteArtifacts);
|
|
142
|
+
projectBuildPlanMetadata(contextGraphPath, shellRoot, stage);
|
|
143
|
+
projectStageArtifactMountAliases(shellRoot, stage, schema);
|
|
144
|
+
writeExecutionShellPathsFile(shellRoot, buildPlanId, stage, buildStageArtifactMounts(contextGraphPath, shellRoot, stage, schema));
|
|
145
|
+
const agentsContent = renderStageExecutionAgents(contextGraphName, buildPlanId, stage);
|
|
146
|
+
writeNativeAgentSurface(shellRoot, agentsContent, "interf-stage", renderStageExecutionSkill(stage, readStageBuildPlanDoc(contextGraphPath, stage)));
|
|
147
|
+
writeStageExecutionWorkspaceManifest({
|
|
148
|
+
contextGraphPath,
|
|
149
|
+
shellRoot,
|
|
150
|
+
buildPlanId,
|
|
151
|
+
stage,
|
|
152
|
+
});
|
|
153
|
+
return {
|
|
154
|
+
rootPath: shellRoot,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function writeStageSelfCheckScript(shellRoot) {
|
|
158
|
+
const checkEvaluatorModuleUrl = new URL("../../build/check-evaluator.js", import.meta.url).href;
|
|
159
|
+
const runtimeSchemaModuleUrl = new URL("../../build/lib/schema.js", import.meta.url).href;
|
|
160
|
+
const contractsSchemaModuleUrl = new URL("../../../contracts/lib/schema.js", import.meta.url).href;
|
|
161
|
+
const script = [
|
|
162
|
+
"#!/usr/bin/env node",
|
|
163
|
+
"import { existsSync, readFileSync } from \"node:fs\";",
|
|
164
|
+
"import { dirname, resolve } from \"node:path\";",
|
|
165
|
+
"import { fileURLToPath } from \"node:url\";",
|
|
166
|
+
"",
|
|
167
|
+
`const { evaluateChecks } = await import(${JSON.stringify(checkEvaluatorModuleUrl)});`,
|
|
168
|
+
`const { RuntimeStageContractSchema } = await import(${JSON.stringify(runtimeSchemaModuleUrl)});`,
|
|
169
|
+
`const { SourceManifestSchema, StageEvidenceSchema, StageInputsSchema } = await import(${JSON.stringify(contractsSchemaModuleUrl)});`,
|
|
170
|
+
"",
|
|
171
|
+
"const shellRoot = resolve(dirname(fileURLToPath(import.meta.url)), \"..\");",
|
|
172
|
+
"const contractPath = resolve(shellRoot, \"runtime\", \"stage-contract.json\");",
|
|
173
|
+
"const contract = RuntimeStageContractSchema.parse(JSON.parse(readFileSync(contractPath, \"utf8\")));",
|
|
174
|
+
"const artifactResults = [];",
|
|
175
|
+
"const evidenceFailures = [];",
|
|
176
|
+
"const inputFailures = [];",
|
|
177
|
+
"const stageInputsPath = resolve(shellRoot, \"runtime\", \"stage-inputs.json\");",
|
|
178
|
+
"",
|
|
179
|
+
"if (!existsSync(stageInputsPath)) {",
|
|
180
|
+
" inputFailures.push(\"runtime/stage-inputs.json was not written.\");",
|
|
181
|
+
"} else {",
|
|
182
|
+
" try {",
|
|
183
|
+
" const stageInputs = StageInputsSchema.parse(JSON.parse(readFileSync(stageInputsPath, \"utf8\")));",
|
|
184
|
+
" if (stageInputs.input_total !== stageInputs.inputs.length) {",
|
|
185
|
+
" inputFailures.push(`stage-inputs input_total ${stageInputs.input_total} does not match ${stageInputs.inputs.length}.`);",
|
|
186
|
+
" }",
|
|
187
|
+
" const manifestPath = resolve(shellRoot, \"runtime\", \"source-manifest.json\");",
|
|
188
|
+
" if (!existsSync(manifestPath)) {",
|
|
189
|
+
" inputFailures.push(\"runtime/source-manifest.json was not written.\");",
|
|
190
|
+
" } else {",
|
|
191
|
+
" const manifest = SourceManifestSchema.parse(JSON.parse(readFileSync(manifestPath, \"utf8\")));",
|
|
192
|
+
" if (stageInputs.version !== 3 || stageInputs.source_manifest_id !== manifest.manifest_id) {",
|
|
193
|
+
" inputFailures.push(\"stage inputs are not backed by runtime/source-manifest.json.\");",
|
|
194
|
+
" }",
|
|
195
|
+
" }",
|
|
196
|
+
" } catch (error) {",
|
|
197
|
+
" inputFailures.push(`stage inputs JSON is invalid: ${error instanceof Error ? error.message : String(error)}`);",
|
|
198
|
+
" }",
|
|
199
|
+
"}",
|
|
200
|
+
"",
|
|
201
|
+
"for (const writeContract of contract.artifacts.write_contracts) {",
|
|
202
|
+
" const result = evaluateChecks(writeContract.checks, {",
|
|
203
|
+
" rootPath: shellRoot,",
|
|
204
|
+
" targetPath: writeContract.path,",
|
|
205
|
+
" counts: contract.counts,",
|
|
206
|
+
" });",
|
|
207
|
+
" artifactResults.push({",
|
|
208
|
+
" artifact_id: writeContract.artifact_id,",
|
|
209
|
+
" path: writeContract.path,",
|
|
210
|
+
" check_results: result.check_results,",
|
|
211
|
+
" failures: result.failures,",
|
|
212
|
+
" });",
|
|
213
|
+
"}",
|
|
214
|
+
"",
|
|
215
|
+
"const failures = artifactResults.flatMap((artifact) =>",
|
|
216
|
+
" artifact.failures.map((failure) => ({ artifact, failure })),",
|
|
217
|
+
");",
|
|
218
|
+
"const totalChecks = artifactResults.reduce((total, artifact) => total + artifact.check_results.length, 0);",
|
|
219
|
+
"const passedChecks = artifactResults.reduce(",
|
|
220
|
+
" (total, artifact) => total + artifact.check_results.filter((check) => check.passed).length,",
|
|
221
|
+
" 0,",
|
|
222
|
+
");",
|
|
223
|
+
"",
|
|
224
|
+
"if (contract.contract_type === \"build-file-evidence\") {",
|
|
225
|
+
" const evidencePath = resolve(shellRoot, \"runtime\", \"stage-evidence.json\");",
|
|
226
|
+
" if (!existsSync(evidencePath)) {",
|
|
227
|
+
" evidenceFailures.push(\"runtime/stage-evidence.json was not written.\");",
|
|
228
|
+
" } else {",
|
|
229
|
+
" try {",
|
|
230
|
+
" const evidence = StageEvidenceSchema.parse(JSON.parse(readFileSync(evidencePath, \"utf8\")));",
|
|
231
|
+
" if (evidence.run_id !== contract.run_id) {",
|
|
232
|
+
" evidenceFailures.push(`stage evidence run_id ${evidence.run_id} does not match ${contract.run_id}.`);",
|
|
233
|
+
" }",
|
|
234
|
+
" if (evidence.stage !== contract.stage) {",
|
|
235
|
+
" evidenceFailures.push(`stage evidence stage ${evidence.stage} does not match ${contract.stage}.`);",
|
|
236
|
+
" }",
|
|
237
|
+
" const evidenceItemsWithRefs = evidence.items.filter((item) => item.source_refs.length > 0 || item.output_refs.length > 0);",
|
|
238
|
+
" if (evidenceItemsWithRefs.length === 0) {",
|
|
239
|
+
" evidenceFailures.push(\"stage evidence needs at least one source/output evidence item.\");",
|
|
240
|
+
" }",
|
|
241
|
+
" const writableArtifacts = new Set(contract.artifacts.writes);",
|
|
242
|
+
" for (const item of evidence.items) {",
|
|
243
|
+
" for (const ref of item.output_refs) {",
|
|
244
|
+
" if (!writableArtifacts.has(ref.artifact_id)) {",
|
|
245
|
+
" evidenceFailures.push(`stage evidence output artifact ${ref.artifact_id} is not a declared write.`);",
|
|
246
|
+
" }",
|
|
247
|
+
" if (!existsSync(resolve(shellRoot, ref.path))) {",
|
|
248
|
+
" evidenceFailures.push(`stage evidence output path ${ref.path} does not exist.`);",
|
|
249
|
+
" }",
|
|
250
|
+
" }",
|
|
251
|
+
" }",
|
|
252
|
+
" } catch (error) {",
|
|
253
|
+
" evidenceFailures.push(`stage evidence JSON is invalid: ${error instanceof Error ? error.message : String(error)}`);",
|
|
254
|
+
" }",
|
|
255
|
+
" }",
|
|
256
|
+
"}",
|
|
257
|
+
"",
|
|
258
|
+
"if (failures.length === 0 && evidenceFailures.length === 0 && inputFailures.length === 0) {",
|
|
259
|
+
" console.log(`VALID: ${contract.stage} stage outputs satisfy ${passedChecks}/${totalChecks} deterministic check(s).`);",
|
|
260
|
+
" process.exit(0);",
|
|
261
|
+
"}",
|
|
262
|
+
"",
|
|
263
|
+
"console.log(`INVALID: ${failures.length + evidenceFailures.length + inputFailures.length} required deterministic check(s) failed for stage ${contract.stage}.`);",
|
|
264
|
+
"for (const { artifact, failure } of failures) {",
|
|
265
|
+
" console.log(`- ${artifact.artifact_id} (${artifact.path}) / ${failure.check_id}: ${failure.summary}`);",
|
|
266
|
+
" if (failure.details) {",
|
|
267
|
+
" console.log(` details: ${JSON.stringify(failure.details)}`);",
|
|
268
|
+
" }",
|
|
269
|
+
"}",
|
|
270
|
+
"for (const failure of evidenceFailures) {",
|
|
271
|
+
" console.log(`- stage evidence: ${failure}`);",
|
|
272
|
+
"}",
|
|
273
|
+
"for (const failure of inputFailures) {",
|
|
274
|
+
" console.log(`- stage input: ${failure}`);",
|
|
275
|
+
"}",
|
|
276
|
+
"process.exit(1);",
|
|
277
|
+
"",
|
|
278
|
+
].join("\n");
|
|
279
|
+
writeFileAtomic(shellRuntimePath(shellRoot, "check-stage.mjs"), script);
|
|
280
|
+
}
|
|
281
|
+
export function freezeStageExecutionShell(rootPath) {
|
|
282
|
+
return freezePreservedShell(rootPath, "stage-execution");
|
|
283
|
+
}
|
|
284
|
+
export function createBuildPlanAuthoringShell(options) {
|
|
285
|
+
const shellRoot = mkdtempSync(join(tmpdir(), `interf-build-plan-author-${options.buildPlanId}-`));
|
|
286
|
+
mkdirSync(join(shellRoot, "runtime"), { recursive: true });
|
|
287
|
+
mkdirSync(join(shellRoot, "artifacts"), { recursive: true });
|
|
288
|
+
mkdirSync(join(shellRoot, "logs"), { recursive: true });
|
|
289
|
+
const context = {
|
|
290
|
+
kind: "interf-build-plan-authoring",
|
|
291
|
+
version: 1,
|
|
292
|
+
generated_at: new Date().toISOString(),
|
|
293
|
+
authoring_mode: "from-scratch",
|
|
294
|
+
build_plan_id: options.buildPlanId,
|
|
295
|
+
build_plan_label: options.label,
|
|
296
|
+
...(options.referenceBuildPlanId ? { reference_build_plan_id: options.referenceBuildPlanId } : {}),
|
|
297
|
+
intent: options.intent,
|
|
298
|
+
...(options.userPrepInstructions ? { user_prep_instructions: options.userPrepInstructions } : {}),
|
|
299
|
+
allowed_check_kinds: CHECK_KINDS,
|
|
300
|
+
check_param_contracts: CHECK_PARAM_CONTRACTS,
|
|
301
|
+
requested_artifacts: options.requestedArtifacts ?? [],
|
|
302
|
+
checks: options.checks,
|
|
303
|
+
artifact_requirements: options.artifactRequirements ?? [],
|
|
304
|
+
project: {
|
|
305
|
+
source_folder_path: options.sourceFolderPath,
|
|
306
|
+
source_context: options.sourceContext ?? null,
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
writeFileSync(join(shellRoot, "runtime", "authoring-context.json"), `${JSON.stringify(context, null, 2)}\n`);
|
|
310
|
+
writeFileSync(join(shellRoot, "runtime", "source-locator.json"), `${JSON.stringify({
|
|
311
|
+
kind: "interf-source-locator",
|
|
312
|
+
version: 1,
|
|
313
|
+
generated_at: new Date().toISOString(),
|
|
314
|
+
source: {
|
|
315
|
+
kind: "local-folder",
|
|
316
|
+
locator: options.sourceFolderPath,
|
|
317
|
+
},
|
|
318
|
+
note: "Interf does not pre-scan Source files for Build Plan authoring. The authoring agent inspects this locator through its own Source access.",
|
|
319
|
+
}, null, 2)}\n`);
|
|
320
|
+
copyResolvedTree({
|
|
321
|
+
sourcePath: options.buildPlanPath,
|
|
322
|
+
targetPath: join(shellRoot, "build-plan"),
|
|
323
|
+
shellType: "build-plan-authoring",
|
|
324
|
+
});
|
|
325
|
+
writeNativeAgentSurface(shellRoot, renderBuildPlanAuthoringAgents({
|
|
326
|
+
buildPlanId: options.buildPlanId,
|
|
327
|
+
label: options.label,
|
|
328
|
+
referenceBuildPlanId: options.referenceBuildPlanId ?? null,
|
|
329
|
+
}), "interf-build-plan-author", renderBuildPlanAuthoringSkill());
|
|
330
|
+
return {
|
|
331
|
+
rootPath: shellRoot,
|
|
332
|
+
buildPlanBeforePath: join(shellRoot, "artifacts", "build-plan-before"),
|
|
333
|
+
buildPlanAfterPath: join(shellRoot, "artifacts", "build-plan-after"),
|
|
334
|
+
promptLogPath: join(shellRoot, "logs", "build-plan-author.prompt.txt"),
|
|
335
|
+
eventLogPath: join(shellRoot, "logs", "build-plan-author.events.ndjson"),
|
|
336
|
+
statusLogPath: join(shellRoot, "logs", "build-plan-author.status.log"),
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
export function createBuildPlanImprovementShell(options) {
|
|
340
|
+
const schema = ensureBuildExecutionSurface(options.contextGraphPath);
|
|
341
|
+
const loopRootPath = buildPlanImprovementLoopRoot(options.contextGraphPath, options.runId, options.loopIndex);
|
|
342
|
+
const shellRoot = join(loopRootPath, "shell");
|
|
343
|
+
mkdirSync(shellRoot, { recursive: true });
|
|
344
|
+
mkdirSync(join(shellRoot, "runtime"), { recursive: true });
|
|
345
|
+
mkdirSync(join(shellRoot, "artifacts"), { recursive: true });
|
|
346
|
+
mkdirSync(join(loopRootPath, "logs"), { recursive: true });
|
|
347
|
+
writeFileSync(join(shellRoot, "runtime", "loop-context.json"), `${JSON.stringify(options.context, null, 2)}\n`);
|
|
348
|
+
projectContextGraphReviewArtifactsState(options.contextGraphPath, shellRoot, schema);
|
|
349
|
+
copyResolvedTree({
|
|
350
|
+
sourcePath: buildPlanPackagePathForContextGraph(options.contextGraphPath),
|
|
351
|
+
targetPath: join(shellRoot, "build-plan"),
|
|
352
|
+
shellType: "build-plan-improvement",
|
|
353
|
+
});
|
|
354
|
+
copyIfExists(contextGraphInterfConfigPath(options.contextGraphPath), join(shellRoot, "interf.json"), "build-plan-improvement");
|
|
355
|
+
projectContextGraphRuntimeArtifacts(options.contextGraphPath, shellRoot);
|
|
356
|
+
const reviewSources = resolveBuildPlanImprovementReviewSourcePaths(options.contextGraphPath);
|
|
357
|
+
if (reviewSources.executionShells) {
|
|
358
|
+
copyIfExists(reviewSources.executionShells, join(shellRoot, "artifacts", "execution-shells"), "build-plan-improvement");
|
|
359
|
+
}
|
|
360
|
+
if (reviewSources.benchmarkRuns) {
|
|
361
|
+
copyIfExists(reviewSources.benchmarkRuns, join(shellRoot, "artifacts", "benchmark-runs"), "build-plan-improvement");
|
|
362
|
+
}
|
|
363
|
+
if (reviewSources.targetTestRuns) {
|
|
364
|
+
copyIfExists(reviewSources.targetTestRuns, join(shellRoot, "artifacts", "test-runs"), "build-plan-improvement");
|
|
365
|
+
}
|
|
366
|
+
if (reviewSources.targetTestSandboxes) {
|
|
367
|
+
copyIfExists(reviewSources.targetTestSandboxes, join(shellRoot, "artifacts", "test-sandboxes"), "build-plan-improvement");
|
|
368
|
+
}
|
|
369
|
+
const agentsContent = renderBuildPlanImprovementAgents(options.contextGraphName, options.buildPlanId, options.loopIndex);
|
|
370
|
+
writeNativeAgentSurface(shellRoot, agentsContent, "interf-build-plan-improver", renderBuildPlanImprovementSkill(options.buildPlanId, options.loopIndex, readBuildPlanImprovementDoc(options.contextGraphPath)));
|
|
371
|
+
return {
|
|
372
|
+
rootPath: shellRoot,
|
|
373
|
+
loopRootPath,
|
|
374
|
+
buildPlanBeforePath: join(loopRootPath, "build-plan-before"),
|
|
375
|
+
buildPlanAfterPath: join(loopRootPath, "build-plan-after"),
|
|
376
|
+
promptLogPath: join(loopRootPath, "logs", "build-plan-improver.prompt.txt"),
|
|
377
|
+
eventLogPath: join(loopRootPath, "logs", "build-plan-improver.events.ndjson"),
|
|
378
|
+
statusLogPath: join(loopRootPath, "logs", "build-plan-improver.status.log"),
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
export function freezeBuildPlanImprovementShell(rootPath) {
|
|
382
|
+
return freezePreservedShell(rootPath, "build-plan-improvement");
|
|
383
|
+
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const InterfUserConfigSchema: z.ZodObject<{
|
|
3
|
+
agent: z.ZodString;
|
|
4
|
+
agentCommand: z.ZodString;
|
|
5
|
+
skillsInstalled: z.ZodBoolean;
|
|
6
|
+
initialized: z.ZodString;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type InterfUserConfig = z.infer<typeof InterfUserConfigSchema>;
|
|
3
9
|
/** `~/.interf/` (overridable via `INTERF_USER_HOME`). */
|
|
4
10
|
export declare function interfHome(): string;
|
|
5
11
|
/** `~/.interf/config.json` — local executor preferences. */
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
3
4
|
import { readJsonFileWithSchema } from "../../../contracts/utils/parse.js";
|
|
4
|
-
import { interfHomeRoot } from "../../../contracts/lib/
|
|
5
|
-
|
|
5
|
+
import { interfHomeRoot } from "../../../contracts/lib/project-paths.js";
|
|
6
|
+
export const InterfUserConfigSchema = z.object({
|
|
7
|
+
agent: z.string(),
|
|
8
|
+
agentCommand: z.string(),
|
|
9
|
+
skillsInstalled: z.boolean(),
|
|
10
|
+
initialized: z.string(),
|
|
11
|
+
});
|
|
6
12
|
/** `~/.interf/` (overridable via `INTERF_USER_HOME`). */
|
|
7
13
|
export function interfHome() {
|
|
8
14
|
return interfHomeRoot();
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AgentProvider } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code provider.
|
|
4
|
+
*
|
|
5
|
+
* Configuration follows Anthropic's third-party integration spec:
|
|
6
|
+
* https://code.claude.com/docs/en/third-party-integrations
|
|
7
|
+
*
|
|
8
|
+
* The user-facing model knob is the alias (`opus`, `sonnet`, `haiku`)
|
|
9
|
+
* which Anthropic resolves server-side to the current pinned version.
|
|
10
|
+
* Hosts that need to pin a specific version do it via the
|
|
11
|
+
* `ANTHROPIC_DEFAULT_*_MODEL` env vars supplied by the user.
|
|
12
|
+
*/
|
|
13
|
+
export declare const claudeCodeProvider: AgentProvider;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Claude Code provider.
|
|
5
|
+
*
|
|
6
|
+
* Configuration follows Anthropic's third-party integration spec:
|
|
7
|
+
* https://code.claude.com/docs/en/third-party-integrations
|
|
8
|
+
*
|
|
9
|
+
* The user-facing model knob is the alias (`opus`, `sonnet`, `haiku`)
|
|
10
|
+
* which Anthropic resolves server-side to the current pinned version.
|
|
11
|
+
* Hosts that need to pin a specific version do it via the
|
|
12
|
+
* `ANTHROPIC_DEFAULT_*_MODEL` env vars supplied by the user.
|
|
13
|
+
*/
|
|
14
|
+
export const claudeCodeProvider = {
|
|
15
|
+
name: "claude-code",
|
|
16
|
+
displayName: "Claude Code",
|
|
17
|
+
command: "claude",
|
|
18
|
+
homeDir: join(homedir(), ".claude"),
|
|
19
|
+
skillsDir: join(homedir(), ".claude", "skills"),
|
|
20
|
+
supportsAutomatedRuns: true,
|
|
21
|
+
defaultModel: "claude-sonnet-4-6",
|
|
22
|
+
defaultEffort: "low",
|
|
23
|
+
noiseFilters: [],
|
|
24
|
+
buildArgs(prompt, profile) {
|
|
25
|
+
const args = [
|
|
26
|
+
"-p",
|
|
27
|
+
prompt,
|
|
28
|
+
"--output-format",
|
|
29
|
+
"stream-json",
|
|
30
|
+
"--verbose",
|
|
31
|
+
"--allowedTools",
|
|
32
|
+
"Read,Write,Edit,Bash,Grep,Glob,Agent",
|
|
33
|
+
];
|
|
34
|
+
if (profile.model) {
|
|
35
|
+
args.push("--model", profile.model);
|
|
36
|
+
}
|
|
37
|
+
if (profile.effort) {
|
|
38
|
+
args.push("--effort", profile.effort);
|
|
39
|
+
}
|
|
40
|
+
return args;
|
|
41
|
+
},
|
|
42
|
+
buildEnv(baseEnv) {
|
|
43
|
+
return { ...baseEnv };
|
|
44
|
+
},
|
|
45
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AgentProvider } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Codex provider.
|
|
4
|
+
*
|
|
5
|
+
* Reasoning effort is passed via the documented config override
|
|
6
|
+
* (`-c model_reasoning_effort=...`) rather than a flag.
|
|
7
|
+
*
|
|
8
|
+
* The `SHELL` env var is stripped from the spawn so Codex picks a
|
|
9
|
+
* sandbox-safe default shell instead of inheriting the host login shell.
|
|
10
|
+
*
|
|
11
|
+
* Two stderr noise lines are expected on every run and must not be
|
|
12
|
+
* treated as preflight failures.
|
|
13
|
+
*
|
|
14
|
+
* Codex preflight is retried when it reports transient session-record
|
|
15
|
+
* errors that resolve on a second attempt.
|
|
16
|
+
*/
|
|
17
|
+
export declare const codexProvider: AgentProvider;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
const SANDBOX_MODE = `work${"space-write"}`;
|
|
4
|
+
/**
|
|
5
|
+
* Codex provider.
|
|
6
|
+
*
|
|
7
|
+
* Reasoning effort is passed via the documented config override
|
|
8
|
+
* (`-c model_reasoning_effort=...`) rather than a flag.
|
|
9
|
+
*
|
|
10
|
+
* The `SHELL` env var is stripped from the spawn so Codex picks a
|
|
11
|
+
* sandbox-safe default shell instead of inheriting the host login shell.
|
|
12
|
+
*
|
|
13
|
+
* Two stderr noise lines are expected on every run and must not be
|
|
14
|
+
* treated as preflight failures.
|
|
15
|
+
*
|
|
16
|
+
* Codex preflight is retried when it reports transient session-record
|
|
17
|
+
* errors that resolve on a second attempt.
|
|
18
|
+
*/
|
|
19
|
+
export const codexProvider = {
|
|
20
|
+
name: "codex",
|
|
21
|
+
displayName: "Codex",
|
|
22
|
+
command: "codex",
|
|
23
|
+
homeDir: join(homedir(), ".codex"),
|
|
24
|
+
skillsDir: join(homedir(), ".codex", "skills"),
|
|
25
|
+
supportsAutomatedRuns: true,
|
|
26
|
+
defaultModel: "gpt-5.3-codex",
|
|
27
|
+
defaultEffort: "high",
|
|
28
|
+
noiseFilters: [
|
|
29
|
+
/codex_core_skills::loader: failed to stat skills entry .*\/interf-[^ ]+ \(symlink\): No such file or directory/,
|
|
30
|
+
/codex_core::codex: failed to load skill .*\/gstack\/SKILL\.md: invalid description: exceeds maximum length of 1024 characters/,
|
|
31
|
+
],
|
|
32
|
+
buildArgs(prompt, profile) {
|
|
33
|
+
const args = [
|
|
34
|
+
"exec",
|
|
35
|
+
"--json",
|
|
36
|
+
"-s",
|
|
37
|
+
SANDBOX_MODE,
|
|
38
|
+
"--skip-git-repo-check",
|
|
39
|
+
];
|
|
40
|
+
if (profile.model) {
|
|
41
|
+
args.push("--model", profile.model);
|
|
42
|
+
}
|
|
43
|
+
if (profile.profile) {
|
|
44
|
+
args.push("--profile", profile.profile);
|
|
45
|
+
}
|
|
46
|
+
if (profile.effort) {
|
|
47
|
+
args.push("-c", `model_reasoning_effort=${JSON.stringify(profile.effort)}`);
|
|
48
|
+
}
|
|
49
|
+
args.push(prompt);
|
|
50
|
+
return args;
|
|
51
|
+
},
|
|
52
|
+
buildEnv(baseEnv) {
|
|
53
|
+
const env = { ...baseEnv };
|
|
54
|
+
delete env.SHELL;
|
|
55
|
+
return env;
|
|
56
|
+
},
|
|
57
|
+
isTransientPreflightFailure(stderr, errorMessage) {
|
|
58
|
+
const text = `${errorMessage}\n${stderr}`;
|
|
59
|
+
if (/usage limit/i.test(text))
|
|
60
|
+
return false;
|
|
61
|
+
return /failed to record rollout items/i.test(text)
|
|
62
|
+
|| /thread\s+[0-9a-f-]+\s+not found/i.test(text);
|
|
63
|
+
},
|
|
64
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AgentProvider } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor provider.
|
|
4
|
+
*
|
|
5
|
+
* Cursor is detected for `interf init` so the listing shows it, but
|
|
6
|
+
* Interf cannot drive automated Build runs through Cursor today.
|
|
7
|
+
* `buildArgs` therefore throws.
|
|
8
|
+
*/
|
|
9
|
+
export declare const cursorProvider: AgentProvider;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Cursor provider.
|
|
5
|
+
*
|
|
6
|
+
* Cursor is detected for `interf init` so the listing shows it, but
|
|
7
|
+
* Interf cannot drive automated Build runs through Cursor today.
|
|
8
|
+
* `buildArgs` therefore throws.
|
|
9
|
+
*/
|
|
10
|
+
export const cursorProvider = {
|
|
11
|
+
name: "cursor",
|
|
12
|
+
displayName: "Cursor",
|
|
13
|
+
command: "cursor",
|
|
14
|
+
homeDir: join(homedir(), ".cursor"),
|
|
15
|
+
skillsDir: join(homedir(), ".cursor", "skills"),
|
|
16
|
+
supportsAutomatedRuns: false,
|
|
17
|
+
noiseFilters: [],
|
|
18
|
+
buildArgs() {
|
|
19
|
+
throw new Error('Cursor is not yet supported for automated Build runs.');
|
|
20
|
+
},
|
|
21
|
+
buildEnv(baseEnv) {
|
|
22
|
+
return { ...baseEnv };
|
|
23
|
+
},
|
|
24
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AgentProvider } from "./types.js";
|
|
2
|
+
export type { AgentProvider } from "./types.js";
|
|
3
|
+
export declare const BUILT_IN_PROVIDERS: ReadonlyArray<AgentProvider>;
|
|
4
|
+
/** Look up a built-in provider by name. Returns undefined for custom agents. */
|
|
5
|
+
export declare function getBuiltInProvider(name: string): AgentProvider | undefined;
|
|
6
|
+
/** True when `name` matches a built-in provider. */
|
|
7
|
+
export declare function isBuiltInProviderName(name: string): boolean;
|
|
8
|
+
/** All providers that support automated Build runs. */
|
|
9
|
+
export declare function automatableBuiltInProviders(): AgentProvider[];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent provider registry.
|
|
3
|
+
*
|
|
4
|
+
* The full set of built-in agent providers Interf knows about. Engine
|
|
5
|
+
* code consumes this list as data — there are no name comparisons or
|
|
6
|
+
* `if (agent === "codex")` branches outside the provider files.
|
|
7
|
+
*
|
|
8
|
+
* User-registered custom agents (`source: "user"` in the registry) flow
|
|
9
|
+
* through a separate generic provider that builds spawn args from a
|
|
10
|
+
* stored command template; that path lives outside this list.
|
|
11
|
+
*/
|
|
12
|
+
import { claudeCodeProvider } from "./claude-code.js";
|
|
13
|
+
import { codexProvider } from "./codex.js";
|
|
14
|
+
import { cursorProvider } from "./cursor.js";
|
|
15
|
+
export const BUILT_IN_PROVIDERS = [
|
|
16
|
+
claudeCodeProvider,
|
|
17
|
+
codexProvider,
|
|
18
|
+
cursorProvider,
|
|
19
|
+
];
|
|
20
|
+
/** Look up a built-in provider by name. Returns undefined for custom agents. */
|
|
21
|
+
export function getBuiltInProvider(name) {
|
|
22
|
+
return BUILT_IN_PROVIDERS.find((provider) => provider.name === name);
|
|
23
|
+
}
|
|
24
|
+
/** True when `name` matches a built-in provider. */
|
|
25
|
+
export function isBuiltInProviderName(name) {
|
|
26
|
+
return BUILT_IN_PROVIDERS.some((provider) => provider.name === name);
|
|
27
|
+
}
|
|
28
|
+
/** All providers that support automated Build runs. */
|
|
29
|
+
export function automatableBuiltInProviders() {
|
|
30
|
+
return BUILT_IN_PROVIDERS.filter((provider) => provider.supportsAutomatedRuns);
|
|
31
|
+
}
|