@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
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { basename, extname, join, relative } from "node:path";
|
|
3
|
+
import { appendAgentEventLog, } from "../agents/lib/logs.js";
|
|
4
|
+
import { ExpectedInputsFileSchema, ResourceRefSchema, SourceManifestSchema, } from "../../contracts/lib/schema.js";
|
|
5
|
+
import { normalizeLayerPath } from "../../contracts/lib/context-graph-layer.js";
|
|
6
|
+
import { listFilesRecursive, } from "../../contracts/utils/filesystem.js";
|
|
7
|
+
import { parseJsonFrontmatter, renderJsonFrontmatter, } from "../../contracts/utils/parse.js";
|
|
8
|
+
function markdownTitle(path, content) {
|
|
9
|
+
const parsed = parseJsonFrontmatter(content);
|
|
10
|
+
const title = parsed && typeof parsed.frontmatter.title === "string"
|
|
11
|
+
? parsed.frontmatter.title.trim()
|
|
12
|
+
: "";
|
|
13
|
+
if (title)
|
|
14
|
+
return title;
|
|
15
|
+
const body = parsed?.body ?? content;
|
|
16
|
+
const heading = body.split(/\r?\n/).find((line) => /^#{1,3}\s+\S/.test(line));
|
|
17
|
+
if (heading)
|
|
18
|
+
return heading.replace(/^#{1,3}\s+/, "").trim();
|
|
19
|
+
return basename(path, extname(path));
|
|
20
|
+
}
|
|
21
|
+
function markdownSummary(content) {
|
|
22
|
+
const parsed = parseJsonFrontmatter(content);
|
|
23
|
+
if (parsed && typeof parsed.frontmatter.summary === "string" && parsed.frontmatter.summary.trim()) {
|
|
24
|
+
return parsed.frontmatter.summary.trim();
|
|
25
|
+
}
|
|
26
|
+
const body = parsed?.body ?? content;
|
|
27
|
+
const paragraph = body
|
|
28
|
+
.split(/\n\s*\n/)
|
|
29
|
+
.map((block) => block.replace(/\s+/g, " ").trim())
|
|
30
|
+
.find((block) => block.length > 0 && !block.startsWith("#"));
|
|
31
|
+
if (!paragraph)
|
|
32
|
+
return null;
|
|
33
|
+
return paragraph.length > 180 ? `${paragraph.slice(0, 177)}...` : paragraph;
|
|
34
|
+
}
|
|
35
|
+
function safeReadJson(path) {
|
|
36
|
+
try {
|
|
37
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function readExpectedInputs(shellRoot) {
|
|
44
|
+
const parsed = ExpectedInputsFileSchema.safeParse(safeReadJson(join(shellRoot, "runtime", "expected-inputs.json")));
|
|
45
|
+
return parsed.success ? parsed.data.expected : [];
|
|
46
|
+
}
|
|
47
|
+
function readSourceManifest(shellRoot) {
|
|
48
|
+
const raw = safeReadJson(join(shellRoot, "runtime", "source-manifest.json"));
|
|
49
|
+
const parsed = SourceManifestSchema.safeParse(raw);
|
|
50
|
+
return parsed.success ? parsed.data : null;
|
|
51
|
+
}
|
|
52
|
+
function readProjectIntent(shellRoot) {
|
|
53
|
+
const contract = safeReadJson(join(shellRoot, "runtime", "stage-contract.json"));
|
|
54
|
+
const intent = typeof contract?.project?.intent === "string" ? contract.project.intent.trim() : "";
|
|
55
|
+
return intent || "Build a task-specific Context Graph from the Project Source.";
|
|
56
|
+
}
|
|
57
|
+
function collectMarkdownResources(shellRoot, directory) {
|
|
58
|
+
const root = join(shellRoot, directory);
|
|
59
|
+
if (!existsSync(root))
|
|
60
|
+
return [];
|
|
61
|
+
return listFilesRecursive(root, (filePath) => filePath.endsWith(".md"))
|
|
62
|
+
.sort((left, right) => left.localeCompare(right))
|
|
63
|
+
.map((filePath) => {
|
|
64
|
+
const path = normalizeLayerPath(relative(shellRoot, filePath));
|
|
65
|
+
const content = readFileSync(filePath, "utf8");
|
|
66
|
+
const parsed = parseJsonFrontmatter(content);
|
|
67
|
+
const sourceRefs = sourceRefsFromFrontmatter(parsed?.frontmatter ?? {});
|
|
68
|
+
return ResourceRefSchema.parse({
|
|
69
|
+
id: `${directory}:${path.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "")}`,
|
|
70
|
+
role: directory === "knowledge" ? "knowledge" : "summary",
|
|
71
|
+
kind: directory === "knowledge" ? "knowledge.note" : "summary.note",
|
|
72
|
+
label: markdownTitle(path, content),
|
|
73
|
+
path,
|
|
74
|
+
source_refs: sourceRefs,
|
|
75
|
+
links: [],
|
|
76
|
+
metadata: {
|
|
77
|
+
...(markdownSummary(content) ? { summary: markdownSummary(content) } : {}),
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function sourceRefsFromFrontmatter(frontmatter) {
|
|
83
|
+
const values = [
|
|
84
|
+
frontmatter.source_refs,
|
|
85
|
+
frontmatter.source_ref,
|
|
86
|
+
frontmatter.source_path,
|
|
87
|
+
frontmatter.source,
|
|
88
|
+
];
|
|
89
|
+
const refs = values.flatMap((value) => {
|
|
90
|
+
if (typeof value === "string" && value.trim())
|
|
91
|
+
return [value.trim()];
|
|
92
|
+
if (Array.isArray(value)) {
|
|
93
|
+
return value
|
|
94
|
+
.filter((item) => typeof item === "string" && item.trim().length > 0)
|
|
95
|
+
.map((item) => item.trim());
|
|
96
|
+
}
|
|
97
|
+
return [];
|
|
98
|
+
});
|
|
99
|
+
return [...new Set(refs)];
|
|
100
|
+
}
|
|
101
|
+
function collectSourceRefs(expected, manifest, notes) {
|
|
102
|
+
const refs = new Set();
|
|
103
|
+
for (const resource of [...expected, ...notes]) {
|
|
104
|
+
for (const ref of resource.source_refs)
|
|
105
|
+
refs.add(ref);
|
|
106
|
+
}
|
|
107
|
+
for (const file of manifest?.files ?? [])
|
|
108
|
+
refs.add(file.path);
|
|
109
|
+
return [...refs].sort((left, right) => left.localeCompare(right));
|
|
110
|
+
}
|
|
111
|
+
function markdownLink(resource) {
|
|
112
|
+
const path = resource.path ?? "";
|
|
113
|
+
return path ? `[${resource.label}](${path})` : resource.label;
|
|
114
|
+
}
|
|
115
|
+
function renderResourceList(resources, limit) {
|
|
116
|
+
return resources.slice(0, limit).map((resource) => {
|
|
117
|
+
const summary = typeof resource.metadata?.summary === "string" ? resource.metadata.summary : null;
|
|
118
|
+
return `- ${markdownLink(resource)}${summary ? ` - ${summary}` : ""}`;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function renderSourceRefList(sourceRefs, limit) {
|
|
122
|
+
return sourceRefs.slice(0, limit).map((ref) => `- \`${ref}\``);
|
|
123
|
+
}
|
|
124
|
+
function writeReviewedInputs(shellRoot, expected) {
|
|
125
|
+
const now = new Date().toISOString();
|
|
126
|
+
const reviewed = expected.map((resource) => ({
|
|
127
|
+
resource_id: resource.id,
|
|
128
|
+
decision: "used",
|
|
129
|
+
source_refs: resource.source_refs.length > 0 ? resource.source_refs : [resource.path ?? resource.id],
|
|
130
|
+
metadata: {
|
|
131
|
+
reviewer: "interf-native-entrypoint",
|
|
132
|
+
},
|
|
133
|
+
}));
|
|
134
|
+
writeFileSync(join(shellRoot, "runtime", "reviewed-inputs.json"), `${JSON.stringify({
|
|
135
|
+
kind: "interf-stage-reviewed-inputs",
|
|
136
|
+
version: 1,
|
|
137
|
+
generated_at: now,
|
|
138
|
+
stage_id: "entrypoint",
|
|
139
|
+
reviewed,
|
|
140
|
+
}, null, 2)}\n`);
|
|
141
|
+
}
|
|
142
|
+
function writeEntrypointOutputs(shellRoot) {
|
|
143
|
+
const intent = readProjectIntent(shellRoot);
|
|
144
|
+
const expected = readExpectedInputs(shellRoot);
|
|
145
|
+
const manifest = readSourceManifest(shellRoot);
|
|
146
|
+
const knowledge = collectMarkdownResources(shellRoot, "knowledge");
|
|
147
|
+
const summaries = collectMarkdownResources(shellRoot, "summaries");
|
|
148
|
+
const expectedByPath = new Map(expected.map((resource) => [resource.path, resource]));
|
|
149
|
+
const knowledgeForRouting = knowledge.length > 0
|
|
150
|
+
? knowledge
|
|
151
|
+
: expected.filter((resource) => resource.role === "knowledge");
|
|
152
|
+
const notesForRefs = [...knowledgeForRouting, ...summaries, ...expectedByPath.values()];
|
|
153
|
+
const sourceRefs = collectSourceRefs(expected, manifest, notesForRefs);
|
|
154
|
+
const generatedAt = new Date().toISOString();
|
|
155
|
+
const topKnowledge = knowledgeForRouting.slice(0, 12);
|
|
156
|
+
const topSummaries = summaries.slice(0, 12);
|
|
157
|
+
const links = [
|
|
158
|
+
"artifacts/agent-handoff.md",
|
|
159
|
+
...topKnowledge.map((resource) => resource.path).filter((path) => Boolean(path)),
|
|
160
|
+
...topSummaries.slice(0, 6).map((resource) => resource.path).filter((path) => Boolean(path)),
|
|
161
|
+
];
|
|
162
|
+
mkdirSync(join(shellRoot, "artifacts"), { recursive: true });
|
|
163
|
+
writeFileSync(join(shellRoot, "home.md"), [
|
|
164
|
+
renderJsonFrontmatter({
|
|
165
|
+
title: "Context Graph Home",
|
|
166
|
+
summary: "Primary agent entrypoint for the prepared Context Graph.",
|
|
167
|
+
task: intent,
|
|
168
|
+
source_refs: sourceRefs,
|
|
169
|
+
links,
|
|
170
|
+
generated_by: "interf-native-entrypoint",
|
|
171
|
+
}),
|
|
172
|
+
"",
|
|
173
|
+
"# Context Graph Home",
|
|
174
|
+
"",
|
|
175
|
+
`Project intent: ${intent}`,
|
|
176
|
+
"",
|
|
177
|
+
"Start with the task handoff, then follow the linked knowledge notes and summaries. Generated notes are routing and synthesis; original Source and source refs remain the authority for exact claims.",
|
|
178
|
+
"",
|
|
179
|
+
"## Start Here",
|
|
180
|
+
"",
|
|
181
|
+
"- [Agent handoff](artifacts/agent-handoff.md)",
|
|
182
|
+
...renderResourceList(topKnowledge, 10),
|
|
183
|
+
"",
|
|
184
|
+
"## Coverage Routes",
|
|
185
|
+
"",
|
|
186
|
+
...(topSummaries.length > 0
|
|
187
|
+
? renderResourceList(topSummaries, 10)
|
|
188
|
+
: ["- No summary notes were available to route."]),
|
|
189
|
+
"",
|
|
190
|
+
"## Source Refs",
|
|
191
|
+
"",
|
|
192
|
+
...(sourceRefs.length > 0
|
|
193
|
+
? renderSourceRefList(sourceRefs, 20)
|
|
194
|
+
: ["- No source refs were recorded."]),
|
|
195
|
+
"",
|
|
196
|
+
].join("\n"));
|
|
197
|
+
writeFileSync(join(shellRoot, "artifacts", "agent-handoff.md"), [
|
|
198
|
+
renderJsonFrontmatter({
|
|
199
|
+
title: "Agent Handoff",
|
|
200
|
+
summary: "Task-specific route through the prepared Context Graph.",
|
|
201
|
+
task: intent,
|
|
202
|
+
source_refs: sourceRefs,
|
|
203
|
+
handoff_type: "agent-context-handoff",
|
|
204
|
+
truth_mode: "source-backed routing",
|
|
205
|
+
verification_state: "Ready to use; follow original Source and source refs for exact claims.",
|
|
206
|
+
caveats: [
|
|
207
|
+
"Generated summaries and knowledge notes are prepared context, not replacement source material.",
|
|
208
|
+
"Use original Source and source refs when exact wording, table values, chart reads, dates, or provenance-sensitive claims matter.",
|
|
209
|
+
],
|
|
210
|
+
links,
|
|
211
|
+
generated_at: generatedAt,
|
|
212
|
+
generated_by: "interf-native-entrypoint",
|
|
213
|
+
}),
|
|
214
|
+
"",
|
|
215
|
+
"# Agent Handoff",
|
|
216
|
+
"",
|
|
217
|
+
`Task: ${intent}`,
|
|
218
|
+
"",
|
|
219
|
+
"Use this Context Graph as prepared context. For exact claims, follow the original Source and source refs from the notes below back to the source files.",
|
|
220
|
+
"",
|
|
221
|
+
"## Useful Knowledge",
|
|
222
|
+
"",
|
|
223
|
+
...(topKnowledge.length > 0
|
|
224
|
+
? renderResourceList(topKnowledge, 12)
|
|
225
|
+
: ["- No knowledge notes were available."]),
|
|
226
|
+
"",
|
|
227
|
+
"## Coverage And Source Routes",
|
|
228
|
+
"",
|
|
229
|
+
...(topSummaries.length > 0
|
|
230
|
+
? renderResourceList(topSummaries, 12)
|
|
231
|
+
: ["- No summary notes were available."]),
|
|
232
|
+
"",
|
|
233
|
+
"## Source Refs To Recheck",
|
|
234
|
+
"",
|
|
235
|
+
...(sourceRefs.length > 0
|
|
236
|
+
? renderSourceRefList(sourceRefs, 30)
|
|
237
|
+
: ["- No source refs were recorded."]),
|
|
238
|
+
"",
|
|
239
|
+
].join("\n"));
|
|
240
|
+
writeReviewedInputs(shellRoot, expected);
|
|
241
|
+
}
|
|
242
|
+
function appendStatus(options, line) {
|
|
243
|
+
appendAgentEventLog(options?.eventLogPath, {
|
|
244
|
+
type: "native-stage.status",
|
|
245
|
+
message: line,
|
|
246
|
+
});
|
|
247
|
+
options?.onStatus?.(line);
|
|
248
|
+
if (options?.statusLogPath) {
|
|
249
|
+
appendFileSync(options.statusLogPath, `${line}\n`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
function appendNativeEvent(options, event) {
|
|
253
|
+
appendAgentEventLog(options?.eventLogPath, {
|
|
254
|
+
type: "native-stage.event",
|
|
255
|
+
...event,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
export function createNativeEntrypointExecutor() {
|
|
259
|
+
return {
|
|
260
|
+
kind: "managed",
|
|
261
|
+
name: "interf-native-entrypoint",
|
|
262
|
+
displayName: "Interf native entrypoint",
|
|
263
|
+
command: null,
|
|
264
|
+
execute(rootPath, _prompt, options) {
|
|
265
|
+
try {
|
|
266
|
+
appendNativeEvent(options, { phase: "started", root_path: rootPath });
|
|
267
|
+
appendStatus(options, "STATUS: loaded entrypoint stage.");
|
|
268
|
+
appendStatus(options, "STATUS: reading declared inputs.");
|
|
269
|
+
writeEntrypointOutputs(rootPath);
|
|
270
|
+
appendStatus(options, "STATUS: writing declared outputs.");
|
|
271
|
+
appendStatus(options, "DONE: entrypoint complete.");
|
|
272
|
+
appendNativeEvent(options, { phase: "succeeded", root_path: rootPath });
|
|
273
|
+
return Promise.resolve(0);
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
appendStatus(options, `ERROR: native entrypoint failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
277
|
+
appendNativeEvent(options, {
|
|
278
|
+
phase: "failed",
|
|
279
|
+
root_path: rootPath,
|
|
280
|
+
error: error instanceof Error ? error.message : String(error),
|
|
281
|
+
});
|
|
282
|
+
return Promise.resolve(1);
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { existsSync, readdirSync, rmSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { initializeBuildRuntimeState } from "./state.js";
|
|
4
|
+
import { stageExecutionShellsRoot, testRootForContextGraph, testTargetsRootForContextGraph, buildPlanImprovementLoopsRoot, contextGraphQueryAcceptanceRoot, contextGraphRuntimeRoot, contextGraphRuntimeLogsRoot, } from "./context-graph-paths.js";
|
|
5
|
+
function removeIfExists(path) {
|
|
6
|
+
if (existsSync(path)) {
|
|
7
|
+
rmSync(path, { recursive: true, force: true });
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const BUILD_RUNTIME_RESET_ENTRIES = [
|
|
11
|
+
"state.json",
|
|
12
|
+
"health.json",
|
|
13
|
+
"view-spec.json",
|
|
14
|
+
"inventory.json",
|
|
15
|
+
"run.json",
|
|
16
|
+
"source-manifest.json",
|
|
17
|
+
"source-manifest.audit.json",
|
|
18
|
+
"source-files.json",
|
|
19
|
+
"source-state.json",
|
|
20
|
+
"stage-contract.json",
|
|
21
|
+
"stages",
|
|
22
|
+
];
|
|
23
|
+
const PRESERVED_CONTEXT_GRAPH_ROOTS = new Set([
|
|
24
|
+
".agents",
|
|
25
|
+
".claude",
|
|
26
|
+
".codex",
|
|
27
|
+
".cursor",
|
|
28
|
+
".gitignore",
|
|
29
|
+
".interf",
|
|
30
|
+
".interfignore",
|
|
31
|
+
"AGENTS.md",
|
|
32
|
+
"CLAUDE.md",
|
|
33
|
+
]);
|
|
34
|
+
export function clearBuildRuntimeDerivedArtifacts(contextGraphPath) {
|
|
35
|
+
const runtimeRoot = contextGraphRuntimeRoot(contextGraphPath);
|
|
36
|
+
for (const entry of BUILD_RUNTIME_RESET_ENTRIES) {
|
|
37
|
+
removeIfExists(join(runtimeRoot, entry));
|
|
38
|
+
}
|
|
39
|
+
removeIfExists(contextGraphQueryAcceptanceRoot(contextGraphPath));
|
|
40
|
+
}
|
|
41
|
+
function resetBuildGeneratedOutputs(contextGraphPath) {
|
|
42
|
+
for (const entry of readdirSync(contextGraphPath)) {
|
|
43
|
+
if (PRESERVED_CONTEXT_GRAPH_ROOTS.has(entry))
|
|
44
|
+
continue;
|
|
45
|
+
removeIfExists(join(contextGraphPath, entry));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function resetBuildGeneratedState(contextGraphPath, scope = "build") {
|
|
49
|
+
resetBuildGeneratedOutputs(contextGraphPath);
|
|
50
|
+
// Stage reuse fingerprints live in state.json, so this is the load-bearing
|
|
51
|
+
// build reset path that forces a post-reset build to re-run every stage.
|
|
52
|
+
clearBuildRuntimeDerivedArtifacts(contextGraphPath);
|
|
53
|
+
initializeBuildRuntimeState(contextGraphPath);
|
|
54
|
+
if (scope === "all") {
|
|
55
|
+
removeIfExists(stageExecutionShellsRoot(contextGraphPath));
|
|
56
|
+
removeIfExists(buildPlanImprovementLoopsRoot(contextGraphPath));
|
|
57
|
+
removeIfExists(contextGraphRuntimeLogsRoot(contextGraphPath));
|
|
58
|
+
removeIfExists(join(contextGraphRuntimeRoot(contextGraphPath), "run-history.jsonl"));
|
|
59
|
+
removeIfExists(testRootForContextGraph(contextGraphPath));
|
|
60
|
+
removeIfExists(testTargetsRootForContextGraph(contextGraphPath));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { BUILD_PLAN_SCHEMA_FILE } from "./
|
|
1
|
+
import { BUILD_PLAN_SCHEMA_FILE } from "./context-graph-schema.js";
|
|
2
2
|
export function buildRuntimeStageContract(options) {
|
|
3
3
|
const localSkillDocs = options.localSkillDocs ?? [];
|
|
4
4
|
const buildPlanNotes = options.buildPlanNotes ?? [];
|
|
5
5
|
return {
|
|
6
6
|
instructions: options.instructions,
|
|
7
|
+
project: options.project,
|
|
7
8
|
counts: {
|
|
8
9
|
...(options.counts ?? {}),
|
|
9
10
|
local_skill_docs: localSkillDocs.length,
|
|
@@ -19,16 +20,21 @@ export function buildRuntimeStageContract(options) {
|
|
|
19
20
|
writes: options.stageWriteArtifacts,
|
|
20
21
|
write_contracts: options.stageWriteContracts ?? [],
|
|
21
22
|
},
|
|
23
|
+
context_checks: options.contextChecks ?? [],
|
|
22
24
|
policies: {
|
|
23
25
|
execution_mode: "deterministic",
|
|
24
26
|
status_prefixes: ["STATUS:", "DONE:", "BLOCKED:", "ERROR:"],
|
|
25
27
|
notes: [
|
|
26
|
-
`This is the "${options.stageLabel}" stage for the
|
|
28
|
+
`This is the "${options.stageLabel}" stage for the context graph "${options.contextGraphName}".`,
|
|
29
|
+
options.project.intent
|
|
30
|
+
? `Project intent: ${options.project.intent}`
|
|
31
|
+
: "Project intent is not set. Keep outputs source-grounded and explicitly note missing task focus where it limits usefulness.",
|
|
27
32
|
"The Build Plan is the authoritative plan layer for this run.",
|
|
28
|
-
`Use \`build-plan/${BUILD_PLAN_SCHEMA_FILE}\` as the deterministic
|
|
29
|
-
"
|
|
33
|
+
`Use \`build-plan/${BUILD_PLAN_SCHEMA_FILE}\` as the deterministic requested output contract for this context graph.`,
|
|
34
|
+
"Use `context_checks[]` only as legacy coverage-goal context; StageManifest and GraphManifest metrics are the readiness proof.",
|
|
35
|
+
"Honor the declared read and write outputs instead of inventing a parallel process.",
|
|
30
36
|
"Only create or update files that fall under the declared write targets for this stage.",
|
|
31
|
-
"Before emitting DONE, satisfy every check listed under `artifacts.write_contracts[]` for the write
|
|
37
|
+
"Before emitting DONE, satisfy every check listed under `artifacts.write_contracts[]` for the write outputs this stage owns.",
|
|
32
38
|
"Interf writes `.interf/runtime/` ledgers such as run, state, health, and view-spec files. Read them if needed, but do not create, edit, or replace them in this stage unless the contract explicitly marks a runtime artifact as stage-owned.",
|
|
33
39
|
"Keep scratch extraction commands single-purpose and non-destructive. Avoid wildcard cleanup and multi-command chains.",
|
|
34
40
|
...buildPlanNotes,
|
|
@@ -36,8 +42,8 @@ export function buildRuntimeStageContract(options) {
|
|
|
36
42
|
? [
|
|
37
43
|
"Read any local instruction docs listed in the contract before you write artifacts or declare the stage complete.",
|
|
38
44
|
options.instructions.effective_mode === "override"
|
|
39
|
-
? "Local stage docs replace the default Build Plan guidance for this run, but they still do not bypass required writes, declared
|
|
40
|
-
: "Local stage docs can refine the stage behavior, but they do not bypass required writes, declared
|
|
45
|
+
? "Local stage docs replace the default Build Plan guidance for this run, but they still do not bypass required writes, declared evidence artifacts, or deterministic runtime reconciliation."
|
|
46
|
+
: "Local stage docs can refine the stage behavior, but they do not bypass required writes, declared evidence artifacts, or deterministic runtime reconciliation.",
|
|
41
47
|
]
|
|
42
48
|
: []),
|
|
43
49
|
],
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ExecutionInventory, type ExecutionInventoryEntry } from "./lib/schema.js";
|
|
2
|
+
export declare function emptyExecutionInventory(): ExecutionInventory;
|
|
3
|
+
export declare function buildInventoryFromEntries(entries: ExecutionInventoryEntry[], stage?: string): ExecutionInventory;
|
|
4
|
+
export declare function buildInventoryEntryCount(inventory: ExecutionInventory | null): number;
|
|
5
|
+
export declare function buildInventoryTotal(inventory: ExecutionInventory | null): number;
|
|
6
|
+
export declare function buildInventoryFrontmatterScannedCount(inventory: ExecutionInventory | null): number;
|
|
7
|
+
export declare function buildInventoryAbstractCoverageCount(inventory: ExecutionInventory | null): number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function emptyExecutionInventory() {
|
|
2
2
|
return {
|
|
3
|
-
kind: "
|
|
3
|
+
kind: "context-graph-runtime-ledger",
|
|
4
4
|
version: 1,
|
|
5
5
|
entries: [],
|
|
6
6
|
total: 0,
|
|
@@ -8,7 +8,7 @@ export function emptyRuntimeInventory() {
|
|
|
8
8
|
}
|
|
9
9
|
export function buildInventoryFromEntries(entries, stage) {
|
|
10
10
|
return {
|
|
11
|
-
kind: "
|
|
11
|
+
kind: "context-graph-runtime-ledger",
|
|
12
12
|
version: 1,
|
|
13
13
|
...(stage ? { stage } : {}),
|
|
14
14
|
entries,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { contextGraphRuntimeLogsRoot } from "./context-graph-paths.js";
|
|
3
|
+
// Canonical per-run log-file builders for stage execution without a shell.
|
|
4
|
+
// They share the runtime logs root with the archived stage contract
|
|
5
|
+
// (contextGraphRuntimeArchivedStageContractPath) and use the same
|
|
6
|
+
// `<runId>.<suffix>` naming. Shell-backed runs use the parallel
|
|
7
|
+
// shell-workspace builders instead.
|
|
8
|
+
export function promptLogPath(dirPath, runId) {
|
|
9
|
+
return join(contextGraphRuntimeLogsRoot(dirPath), `${runId}.prompt.txt`);
|
|
10
|
+
}
|
|
11
|
+
export function eventLogPath(dirPath, runId) {
|
|
12
|
+
return join(contextGraphRuntimeLogsRoot(dirPath), `${runId}.events.ndjson`);
|
|
13
|
+
}
|
|
14
|
+
export function statusLogPath(dirPath, runId) {
|
|
15
|
+
return join(contextGraphRuntimeLogsRoot(dirPath), `${runId}.status.log`);
|
|
16
|
+
}
|
|
@@ -8,7 +8,7 @@ export function buildStagePrompt(instructions, contractPath, statusLines) {
|
|
|
8
8
|
]
|
|
9
9
|
: instructions.effective_mode === "extend"
|
|
10
10
|
? [
|
|
11
|
-
"Use the current Build Plan docs as the default
|
|
11
|
+
"Use the current Build Plan docs as the default instructions for this run.",
|
|
12
12
|
"Then apply any additional local stage instruction docs referenced by the contract as stage-specific extensions.",
|
|
13
13
|
]
|
|
14
14
|
: [
|
|
@@ -21,18 +21,21 @@ export function buildStagePrompt(instructions, contractPath, statusLines) {
|
|
|
21
21
|
"The user has already invoked this stage through the Interf CLI. Execute it now.",
|
|
22
22
|
"Do not ask what the user wants, offer help, list tools, or wait for another instruction.",
|
|
23
23
|
`Read \`${contractPath}\` first. It is the authoritative contract for this stage.`,
|
|
24
|
-
"
|
|
25
|
-
"
|
|
24
|
+
"Use `project.intent` in that contract as the task focus for task-aware summaries, knowledge, entrypoints, and task note work.",
|
|
25
|
+
"Use `runtime/expected-inputs.json` as the coverage contract and write `runtime/reviewed-inputs.json` before DONE.",
|
|
26
|
+
"If `runtime/paths.json` exists in this shell, read it next. It maps Build Plan output ids onto the shell-local `inputs/` and `outputs/` mounts for this stage.",
|
|
27
|
+
"For file output mounts, `runtime/paths.json` also gives the exact file path inside the `inputs/` or `outputs/` mount root.",
|
|
28
|
+
"Before DONE, run `node runtime/check-stage.mjs` from the shell root and fix outputs until it prints `VALID:`.",
|
|
26
29
|
"Honor the contract's counts, artifact paths, and policies instead of inventing another Build Plan.",
|
|
27
|
-
"The contract's `artifacts.write_contracts[]` lists the checks Interf will run against the
|
|
28
|
-
"Read only the files named by the contract's `artifacts.reads` list
|
|
30
|
+
"The contract's `artifacts.write_contracts[]` lists the checks Interf will run against the outputs this stage writes. Treat those checks as required output constraints.",
|
|
31
|
+
"Read only the files named by the contract's `artifacts.reads` list, `runtime/source-manifest.json`, `runtime/stage-inputs.json`, `runtime/expected-inputs.json`, and any paths those files explicitly assign to this stage. `runtime/source-state.json` is compatibility-only and is not stage authority.",
|
|
29
32
|
"Prefer direct file-reading and search tools over shell commands when you inspect inputs, docs, or generated outputs.",
|
|
30
33
|
"Do not use shell helpers like `cat`, `sed`, `ls`, or `find` for routine file inspection if a native read/search tool can do the same job.",
|
|
31
34
|
"If the contract lists `instructions.local_docs`, open every one of those files before you write artifacts or declare the stage complete.",
|
|
32
|
-
"If `AGENTS.md` is listed in the contract, use it only for
|
|
33
|
-
"`.interf/runtime/run.json`, `.interf/runtime/state.json`, `.interf/runtime/health.json`, and `.interf/runtime/view-spec.json` are runtime artifacts written by Interf. You may read them, but do not create, edit, or replace them unless the contract explicitly marks a different
|
|
35
|
+
"If `AGENTS.md` is listed in the contract, use it only for context-graph routing that is directly relevant to this stage.",
|
|
36
|
+
"`.interf/runtime/run.json`, `.interf/runtime/state.json`, `.interf/runtime/health.json`, and `.interf/runtime/view-spec.json` are runtime artifacts written by Interf. You may read them, but do not create, edit, or replace them unless the contract explicitly marks a different evidence artifact as stage-owned.",
|
|
34
37
|
"If a contract-listed output file does not exist yet, create it in one whole-file write. Do not attempt patch-style edits against a missing runtime path.",
|
|
35
|
-
"Stay inside the current
|
|
38
|
+
"Stay inside the current context graph. Do not try to open repo docs, repo source files, or other paths outside this context unless the stage contract explicitly requires them.",
|
|
36
39
|
instructions.effective_mode === "override"
|
|
37
40
|
? "Do not depend on any repo-root or globally installed skill cache for this run. Local stage instruction docs are the primary Build Plan layer for this run."
|
|
38
41
|
: "Do not depend on any repo-root or globally installed skill cache for this run. Use the current Build Plan stage docs and the contract as the default behavior.",
|
|
@@ -43,7 +46,7 @@ export function buildStagePrompt(instructions, contractPath, statusLines) {
|
|
|
43
46
|
"Before any long-running source inspection or shell-based helper step, emit a STATUS: line that names the current subtask.",
|
|
44
47
|
"If work stays in progress, do not remain silent for more than about one minute. Emit another STATUS: line when you switch files, page groups, targets, or extraction passes.",
|
|
45
48
|
"If you respond conversationally instead of executing the stage, the run will be treated as failed.",
|
|
46
|
-
"As soon as the required
|
|
49
|
+
"As soon as the required evidence artifacts are complete, stop. Do not keep browsing or auditing after the contract is satisfied.",
|
|
47
50
|
...statusLines,
|
|
48
51
|
].join("\n");
|
|
49
52
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { type BuildPlanStageDefinition } from "../../build-plans/package/build-plan-definitions.js";
|
|
2
|
-
export declare function reconcileBuildStageRun(dirPath: string, stage:
|
|
2
|
+
export declare function reconcileBuildStageRun(dirPath: string, stage: BuildPlanStageDefinition): boolean;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { existsSync, readFileSync, statSync,
|
|
1
|
+
import { existsSync, readFileSync, statSync, } from "node:fs";
|
|
2
2
|
import { extname, join, relative } from "node:path";
|
|
3
3
|
import { listFilesRecursive } from "../../contracts/utils/filesystem.js";
|
|
4
|
-
import {
|
|
4
|
+
import { contextGraphArtifactAbsolutePath, findBuildPlanContextArtifact, readBuildPlanContextFile, } from "./context-graph-schema.js";
|
|
5
5
|
import { parseJsonFrontmatter } from "../../contracts/utils/parse.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { loadExecutionStageLedger } from "./runtime.js";
|
|
7
|
+
import { initContextGraphState, loadState, refreshContextGraphArtifacts, saveState, } from "./state.js";
|
|
8
8
|
import { buildInventoryFromEntries } from "./runtime-inventory.js";
|
|
9
9
|
import { STANDARD_EVIDENCE_FRONTMATTER_KEYS, } from "../../contracts/lib/schema.js";
|
|
10
|
-
import {
|
|
10
|
+
import { contextGraphRuntimeRoot, buildPlanPackagePathForContextGraph } from "./context-graph-paths.js";
|
|
11
11
|
import { extractSynthAbstract, isOutputMarkdownFile } from "./validate.js";
|
|
12
|
+
import { writeJsonAtomic } from "./atomic-fs.js";
|
|
13
|
+
import { computeStageFingerprint } from "./stage-reuse.js";
|
|
12
14
|
function readActiveRunStartedAtMs(dirPath) {
|
|
13
|
-
const run =
|
|
15
|
+
const run = loadExecutionStageLedger(dirPath);
|
|
14
16
|
if (!run)
|
|
15
17
|
return null;
|
|
16
18
|
const startedAtMs = Date.parse(run.started_at);
|
|
@@ -39,7 +41,7 @@ function anyPathUpdatedSince(absolutePath, sinceMs) {
|
|
|
39
41
|
return false;
|
|
40
42
|
}
|
|
41
43
|
function artifactCount(dirPath, artifactPath, kind) {
|
|
42
|
-
const absolutePath =
|
|
44
|
+
const absolutePath = contextGraphArtifactAbsolutePath(dirPath, { path: artifactPath });
|
|
43
45
|
if (!existsSync(absolutePath))
|
|
44
46
|
return 0;
|
|
45
47
|
if (kind === "file")
|
|
@@ -53,8 +55,8 @@ function summaryAbstract(content) {
|
|
|
53
55
|
return extractSynthAbstract(parsed.frontmatter, parsed.body);
|
|
54
56
|
}
|
|
55
57
|
function listZoneArtifacts(dirPath, artifact) {
|
|
56
|
-
const absolutePath =
|
|
57
|
-
if (!existsSync(absolutePath)
|
|
58
|
+
const absolutePath = contextGraphArtifactAbsolutePath(dirPath, artifact);
|
|
59
|
+
if (!existsSync(absolutePath))
|
|
58
60
|
return [];
|
|
59
61
|
if (artifact.kind === "file") {
|
|
60
62
|
try {
|
|
@@ -95,15 +97,15 @@ function buildInventoryMetadata(options) {
|
|
|
95
97
|
return metadata;
|
|
96
98
|
}
|
|
97
99
|
function buildStageInventoryEntries(dirPath, stage) {
|
|
98
|
-
const schema = readBuildPlanContextFile(
|
|
100
|
+
const schema = readBuildPlanContextFile(buildPlanPackagePathForContextGraph(dirPath));
|
|
99
101
|
if (!schema)
|
|
100
102
|
return [];
|
|
101
103
|
const readableInputArtifacts = stage.reads
|
|
102
104
|
.map((artifactId) => findBuildPlanContextArtifact(schema, artifactId))
|
|
103
|
-
.filter((artifact) => artifact !== null
|
|
105
|
+
.filter((artifact) => artifact !== null);
|
|
104
106
|
const outputArtifacts = stage.writes
|
|
105
107
|
.map((artifactId) => findBuildPlanContextArtifact(schema, artifactId))
|
|
106
|
-
.filter((artifact) => artifact !== null
|
|
108
|
+
.filter((artifact) => artifact !== null);
|
|
107
109
|
if (outputArtifacts.length === 0)
|
|
108
110
|
return [];
|
|
109
111
|
const entries = [];
|
|
@@ -148,16 +150,16 @@ function buildStageInventoryEntries(dirPath, stage) {
|
|
|
148
150
|
return entries.sort((left, right) => `${left.output_artifact}:${left.output_path}`.localeCompare(`${right.output_artifact}:${right.output_path}`));
|
|
149
151
|
}
|
|
150
152
|
function writeStageInventory(dirPath, stageId, entries) {
|
|
151
|
-
|
|
153
|
+
writeJsonAtomic(join(contextGraphRuntimeRoot(dirPath), "inventory.json"), buildInventoryFromEntries(entries, stageId));
|
|
152
154
|
}
|
|
153
155
|
function activeRunCounts(dirPath) {
|
|
154
|
-
return { ...(
|
|
156
|
+
return { ...(loadExecutionStageLedger(dirPath)?.counts ?? {}) };
|
|
155
157
|
}
|
|
156
158
|
export function reconcileBuildStageRun(dirPath, stage) {
|
|
157
159
|
const startedAtMs = readActiveRunStartedAtMs(dirPath);
|
|
158
160
|
if (startedAtMs === null)
|
|
159
161
|
return false;
|
|
160
|
-
const schema = readBuildPlanContextFile(
|
|
162
|
+
const schema = readBuildPlanContextFile(buildPlanPackagePathForContextGraph(dirPath));
|
|
161
163
|
if (!schema)
|
|
162
164
|
return false;
|
|
163
165
|
const writeArtifacts = stage.writes
|
|
@@ -165,31 +167,33 @@ export function reconcileBuildStageRun(dirPath, stage) {
|
|
|
165
167
|
.filter((artifact) => artifact !== null);
|
|
166
168
|
if (writeArtifacts.length === 0)
|
|
167
169
|
return false;
|
|
168
|
-
if (!writeArtifacts.some((artifact) => anyPathUpdatedSince(
|
|
170
|
+
if (!writeArtifacts.some((artifact) => anyPathUpdatedSince(contextGraphArtifactAbsolutePath(dirPath, artifact), startedAtMs))) {
|
|
169
171
|
return false;
|
|
170
172
|
}
|
|
171
173
|
writeStageInventory(dirPath, stage.id, buildStageInventoryEntries(dirPath, stage));
|
|
172
174
|
const currentState = {
|
|
173
|
-
...
|
|
175
|
+
...initContextGraphState(),
|
|
174
176
|
...(loadState(dirPath) ?? {}),
|
|
175
177
|
stages: {
|
|
176
178
|
...(loadState(dirPath)?.stages ?? {}),
|
|
177
179
|
},
|
|
178
180
|
};
|
|
179
181
|
const now = new Date().toISOString();
|
|
182
|
+
const fingerprint = computeStageFingerprint(dirPath, stage);
|
|
180
183
|
currentState.stages[stage.id] = {
|
|
181
184
|
contract_type: stage.contractType,
|
|
182
185
|
status: "succeeded",
|
|
183
|
-
|
|
186
|
+
...(fingerprint ? { fingerprint } : {}),
|
|
187
|
+
started_at: loadExecutionStageLedger(dirPath)?.started_at ?? now,
|
|
184
188
|
finished_at: now,
|
|
185
189
|
counts: activeRunCounts(dirPath),
|
|
186
190
|
artifact_counts: Object.fromEntries(writeArtifacts.map((artifact) => [artifact.id, artifactCount(dirPath, artifact.path, artifact.kind)])),
|
|
187
191
|
artifacts: writeArtifacts.map((artifact) => artifact.kind === "file" ? artifact.path : `${artifact.path}/`),
|
|
188
|
-
summary:
|
|
189
|
-
run_id:
|
|
192
|
+
summary: loadExecutionStageLedger(dirPath)?.summary ?? null,
|
|
193
|
+
run_id: loadExecutionStageLedger(dirPath)?.run_id ?? null,
|
|
190
194
|
};
|
|
191
195
|
currentState.last_build = now;
|
|
192
196
|
saveState(dirPath, currentState);
|
|
193
|
-
|
|
197
|
+
refreshContextGraphArtifacts(dirPath, { ensureViewSpec: true });
|
|
194
198
|
return true;
|
|
195
199
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ExecutionStageLedger, type RuntimeStageContract } from "./lib/schema.js";
|
|
2
|
+
import { type ExecutionStageLedgerPatch, type RuntimeStageExecutionOptions } from "./runtime-types.js";
|
|
3
|
+
export declare function loadExecutionStageLedger(dirPath: string): ExecutionStageLedger | null;
|
|
4
|
+
export declare function saveExecutionStageLedger(dirPath: string, run: ExecutionStageLedger): void;
|
|
5
|
+
export declare function writeStageContract(dirPath: string, contract: RuntimeStageContract): string;
|
|
6
|
+
export declare function runExecutorStage(options: RuntimeStageExecutionOptions): Promise<number>;
|
|
7
|
+
export declare function beginExecutionStageLedger(dirPath: string, run: ExecutionStageLedger): ExecutionStageLedger;
|
|
8
|
+
export declare function updateExecutionStageLedger(dirPath: string, patch: ExecutionStageLedgerPatch): ExecutionStageLedger | null;
|
|
9
|
+
export declare function markExecutionStageLedgerFailedAfterValidation(dirPath: string, summary: string): ExecutionStageLedger | null;
|
|
10
|
+
export declare function markExecutionStageLedgerSucceededAfterValidation(dirPath: string, summary: string): ExecutionStageLedger | null;
|