@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
|
@@ -3,23 +3,33 @@ import { z } from "zod";
|
|
|
3
3
|
// Identity primitives
|
|
4
4
|
// ───────────────────────────────────────────────────────────────────────────
|
|
5
5
|
export const InterfIdPattern = /^[a-z0-9][a-z0-9-]{0,79}$/;
|
|
6
|
-
export const
|
|
7
|
-
const
|
|
8
|
-
export const
|
|
6
|
+
export const ProjectIdPattern = /^[a-z0-9][a-z0-9-]*$/;
|
|
7
|
+
const RESERVED_PROJECT_IDS = new Set(["tests", "build-plans"]);
|
|
8
|
+
export const ProjectIdSchema = z
|
|
9
9
|
.string()
|
|
10
|
-
.regex(
|
|
11
|
-
.refine((value) => !
|
|
10
|
+
.regex(ProjectIdPattern, "Project names must use lowercase letters, numbers, and dashes only.")
|
|
11
|
+
.refine((value) => !RESERVED_PROJECT_IDS.has(value), "Project name is reserved.");
|
|
12
12
|
export const BuildPlanIdSchema = z.string().regex(InterfIdPattern);
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* The user's agent task for a Project.
|
|
15
|
+
*
|
|
16
|
+
* Project intent is the compact, durable instruction that explains what
|
|
17
|
+
* the Context Graph must prepare the Source for. Build Plans operationalize
|
|
18
|
+
* this field, but Project owns it.
|
|
19
|
+
*/
|
|
20
|
+
export const ProjectIntentSchema = z.string().trim().min(1);
|
|
21
|
+
/**
|
|
22
|
+
* Legacy internal output identifier. Same shape as `BuildPlanIdSchema` but
|
|
23
|
+
* conceptually distinct: it identifies a requested output inside one Build
|
|
24
|
+
* Plan, while `BuildPlanIdSchema` identifies the Build Plan itself.
|
|
25
|
+
*
|
|
26
|
+
* The exported name remains `ArtifactIdSchema` until the ABI rename lands.
|
|
17
27
|
*/
|
|
18
28
|
export const ArtifactIdSchema = z.string().regex(InterfIdPattern);
|
|
19
29
|
export const RuntimeStageSchema = z.string().regex(InterfIdPattern);
|
|
20
30
|
export const RuntimeContractTypeSchema = z.string().regex(InterfIdPattern);
|
|
21
|
-
export const RuntimeTargetTypeSchema = z.enum(["
|
|
22
|
-
export const TestTargetTypeSchema = z.enum(["
|
|
31
|
+
export const RuntimeTargetTypeSchema = z.enum(["context-graph"]);
|
|
32
|
+
export const TestTargetTypeSchema = z.enum(["context-graph", "source-files"]);
|
|
23
33
|
// ───────────────────────────────────────────────────────────────────────────
|
|
24
34
|
// Path validation
|
|
25
35
|
//
|
|
@@ -57,13 +67,17 @@ export const LocatorSchema = z.object({
|
|
|
57
67
|
value: z.string().min(1),
|
|
58
68
|
}).strict();
|
|
59
69
|
// ───────────────────────────────────────────────────────────────────────────
|
|
60
|
-
// Source primitives — what the user puts in
|
|
70
|
+
// Source primitives — what the user puts in.
|
|
61
71
|
//
|
|
62
|
-
// `local-folder` is the only kind
|
|
63
|
-
//
|
|
64
|
-
//
|
|
72
|
+
// `local-folder` is the only Source kind Interf accepts. Cloud / remote
|
|
73
|
+
// storage kinds will be re-introduced when a real variant ships; see
|
|
74
|
+
// `internal/iterations/0.23-service-variant-parking-lot.md`.
|
|
65
75
|
// ───────────────────────────────────────────────────────────────────────────
|
|
66
|
-
export const SourceKindSchema = z.enum(["local-folder"
|
|
76
|
+
export const SourceKindSchema = z.enum(["local-folder"]);
|
|
77
|
+
export const SourceBindingSchema = z.object({
|
|
78
|
+
kind: SourceKindSchema,
|
|
79
|
+
locator: z.string().min(1),
|
|
80
|
+
}).strict();
|
|
67
81
|
export const SourceSchema = z.object({
|
|
68
82
|
id: z.string().regex(InterfIdPattern),
|
|
69
83
|
kind: SourceKindSchema,
|
|
@@ -73,6 +87,7 @@ export const SourceFileSchema = z.object({
|
|
|
73
87
|
id: z.string().min(1),
|
|
74
88
|
path: z.string().min(1),
|
|
75
89
|
locator: z.string().min(1),
|
|
90
|
+
size_bytes: z.number().int().nonnegative().optional(),
|
|
76
91
|
}).strict();
|
|
77
92
|
export const SourceFilesSchema = z.object({
|
|
78
93
|
kind: z.literal("interf-source-files"),
|
|
@@ -82,46 +97,367 @@ export const SourceFilesSchema = z.object({
|
|
|
82
97
|
source_total: z.number().int().min(0),
|
|
83
98
|
files: z.array(SourceFileSchema),
|
|
84
99
|
}).strict();
|
|
85
|
-
export const
|
|
86
|
-
kind: z.literal("interf-source-
|
|
100
|
+
export const SourceStateSchema = z.object({
|
|
101
|
+
kind: z.literal("interf-source-state"),
|
|
87
102
|
version: z.literal(1),
|
|
88
|
-
|
|
103
|
+
graph_id: z.string().min(1),
|
|
89
104
|
generated_at: z.string().min(1),
|
|
90
105
|
run_id: z.string().min(1).nullable(),
|
|
91
106
|
source: SourceSchema,
|
|
92
107
|
source_total: z.number().int().min(0),
|
|
93
108
|
files: z.array(SourceFileSchema),
|
|
94
109
|
}).strict();
|
|
110
|
+
export const SourceInspectableUnitSchema = z.object({
|
|
111
|
+
kind: z.enum(["file", "page", "slide", "sheet", "table", "image", "section"]),
|
|
112
|
+
index: z.number().int().min(1).optional(),
|
|
113
|
+
label: z.string().min(1).optional(),
|
|
114
|
+
}).strict();
|
|
115
|
+
export const SourceManifestEvidenceSchema = z.object({
|
|
116
|
+
kind: z.enum(["agent-observation", "connector-metadata", "user-provided"]),
|
|
117
|
+
summary: z.string().min(1),
|
|
118
|
+
}).strict();
|
|
119
|
+
export const SourceManifestFileKindSchema = z.enum([
|
|
120
|
+
"pdf",
|
|
121
|
+
"document",
|
|
122
|
+
"spreadsheet",
|
|
123
|
+
"presentation",
|
|
124
|
+
"image",
|
|
125
|
+
"text",
|
|
126
|
+
"other",
|
|
127
|
+
]);
|
|
128
|
+
export const SourceManifestFileSchema = SourceFileSchema.extend({
|
|
129
|
+
path: z.string().min(1).refine(isInterfRelativePath, {
|
|
130
|
+
message: "Source manifest paths must be relative and cannot contain path traversal.",
|
|
131
|
+
}),
|
|
132
|
+
kind: SourceManifestFileKindSchema.default("other"),
|
|
133
|
+
size_bytes: z.number().int().nonnegative().optional(),
|
|
134
|
+
content_hash: z.string().min(1).optional(),
|
|
135
|
+
page_count: z.number().int().min(1).optional(),
|
|
136
|
+
inspectable_units: z.array(SourceInspectableUnitSchema).default([]),
|
|
137
|
+
confidence: z.enum(["high", "medium", "low"]).default("medium"),
|
|
138
|
+
evidence: z.array(SourceManifestEvidenceSchema).min(1),
|
|
139
|
+
}).strict();
|
|
140
|
+
export const SourceManifestScannerSchema = z.object({
|
|
141
|
+
executor: z.string().min(1),
|
|
142
|
+
agent_label: z.string().min(1),
|
|
143
|
+
attempt: z.number().int().min(1),
|
|
144
|
+
}).strict();
|
|
145
|
+
export const SourceManifestSchema = z.object({
|
|
146
|
+
kind: z.literal("interf-source-manifest"),
|
|
147
|
+
version: z.literal(1),
|
|
148
|
+
manifest_id: z.string().min(1),
|
|
149
|
+
generated_at: z.string().min(1),
|
|
150
|
+
run_id: z.string().min(1).nullable(),
|
|
151
|
+
project: ProjectIdSchema,
|
|
152
|
+
source: SourceSchema,
|
|
153
|
+
scanner: SourceManifestScannerSchema,
|
|
154
|
+
source_total: z.number().int().min(1),
|
|
155
|
+
files: z.array(SourceManifestFileSchema).min(1),
|
|
156
|
+
warnings: z.array(z.string().min(1)).default([]),
|
|
157
|
+
}).strict().superRefine((value, ctx) => {
|
|
158
|
+
if (value.files.length !== value.source_total) {
|
|
159
|
+
ctx.addIssue({
|
|
160
|
+
code: z.ZodIssueCode.custom,
|
|
161
|
+
path: ["source_total"],
|
|
162
|
+
message: "source_total must equal files.length.",
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
const ids = new Set();
|
|
166
|
+
const paths = new Set();
|
|
167
|
+
for (const [index, file] of value.files.entries()) {
|
|
168
|
+
if (ids.has(file.id)) {
|
|
169
|
+
ctx.addIssue({
|
|
170
|
+
code: z.ZodIssueCode.custom,
|
|
171
|
+
path: ["files", index, "id"],
|
|
172
|
+
message: `Duplicate source file id: ${file.id}.`,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
ids.add(file.id);
|
|
176
|
+
if (paths.has(file.path)) {
|
|
177
|
+
ctx.addIssue({
|
|
178
|
+
code: z.ZodIssueCode.custom,
|
|
179
|
+
path: ["files", index, "path"],
|
|
180
|
+
message: `Duplicate source file path: ${file.path}.`,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
paths.add(file.path);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
export const SourceManifestAuditSchema = z.object({
|
|
187
|
+
kind: z.literal("interf-source-manifest-audit"),
|
|
188
|
+
version: z.literal(1),
|
|
189
|
+
run_id: z.string().min(1).nullable(),
|
|
190
|
+
manifest_id: z.string().min(1),
|
|
191
|
+
generated_at: z.string().min(1),
|
|
192
|
+
auditor: SourceManifestScannerSchema,
|
|
193
|
+
verdict: z.enum(["pass", "fail", "needs-review"]),
|
|
194
|
+
findings: z.array(z.string().min(1)).default([]),
|
|
195
|
+
}).strict();
|
|
95
196
|
export const StageInputSchema = z.object({
|
|
96
197
|
source_file_id: z.string().min(1),
|
|
97
198
|
path: z.string().min(1),
|
|
98
199
|
locator: z.string().min(1),
|
|
200
|
+
kind: SourceManifestFileKindSchema.default("other").optional(),
|
|
201
|
+
size_bytes: z.number().int().nonnegative().optional(),
|
|
202
|
+
page_count: z.number().int().min(1).optional(),
|
|
203
|
+
inspectable_units: z.array(SourceInspectableUnitSchema).default([]).optional(),
|
|
204
|
+
content_hash: z.string().min(1).optional(),
|
|
99
205
|
}).strict();
|
|
100
206
|
export const StageInputsSchema = z.object({
|
|
101
207
|
kind: z.literal("interf-stage-inputs"),
|
|
102
|
-
version: z.literal(
|
|
208
|
+
version: z.literal(3),
|
|
103
209
|
generated_at: z.string().min(1),
|
|
104
210
|
run_id: z.string().min(1).nullable(),
|
|
105
211
|
build_plan: BuildPlanIdSchema,
|
|
106
212
|
stage: RuntimeStageSchema,
|
|
107
|
-
|
|
213
|
+
source_state_id: z.string().min(1),
|
|
214
|
+
source_manifest_id: z.string().min(1),
|
|
108
215
|
input_total: z.number().int().min(0),
|
|
109
216
|
inputs: z.array(StageInputSchema),
|
|
110
|
-
}).strict()
|
|
217
|
+
}).strict().superRefine((value, ctx) => {
|
|
218
|
+
if (value.input_total !== value.inputs.length) {
|
|
219
|
+
ctx.addIssue({
|
|
220
|
+
code: z.ZodIssueCode.custom,
|
|
221
|
+
path: ["input_total"],
|
|
222
|
+
message: "input_total must equal inputs.length.",
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
});
|
|
111
226
|
export const SourceBuildMaxAttemptsSchema = z.number().int().min(1).max(5);
|
|
112
227
|
export const SourceBuildMaxLoopsSchema = z.number().int().min(1).max(3);
|
|
113
228
|
// ───────────────────────────────────────────────────────────────────────────
|
|
114
|
-
//
|
|
229
|
+
// Context Graph manifests — canonical coverage/runtime proof
|
|
230
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
231
|
+
export const ResourceRoleSchema = z.enum([
|
|
232
|
+
"source",
|
|
233
|
+
"summary",
|
|
234
|
+
"knowledge",
|
|
235
|
+
"entrypoint",
|
|
236
|
+
"diagnostic",
|
|
237
|
+
"other",
|
|
238
|
+
]);
|
|
239
|
+
export const MetricKeySchema = z.string().regex(/^[a-z][a-z0-9_.:-]*$/);
|
|
240
|
+
export const ResourceRefSchema = z.object({
|
|
241
|
+
id: z.string().min(1),
|
|
242
|
+
role: ResourceRoleSchema,
|
|
243
|
+
kind: z.string().min(1),
|
|
244
|
+
label: z.string().min(1),
|
|
245
|
+
path: z.string().min(1).refine(isInterfRelativePath, {
|
|
246
|
+
message: "Resource paths must stay inside their root (no `..`, no absolute paths).",
|
|
247
|
+
}).optional(),
|
|
248
|
+
locator: z.string().min(1).optional(),
|
|
249
|
+
stage_id: RuntimeStageSchema.optional(),
|
|
250
|
+
source_refs: z.array(z.string().min(1)).default([]),
|
|
251
|
+
links: z.array(z.string().min(1)).default([]),
|
|
252
|
+
required: z.boolean().default(false),
|
|
253
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
254
|
+
}).strict();
|
|
255
|
+
// metadata.guarantee groups a metric under one honest guarantee: "coverage" (every Source file read), "traceability" (every claim/summary/knowledge node linked). Verification (qa_match) is a separate fallible Check scope, never a coverage/traceability metric and never gates readiness.
|
|
256
|
+
export const MetricCountSchema = z.object({
|
|
257
|
+
key: MetricKeySchema,
|
|
258
|
+
label: z.string().min(1),
|
|
259
|
+
value: z.number().int().min(0),
|
|
260
|
+
total: z.number().int().min(0).optional(),
|
|
261
|
+
unit: z.string().min(1).optional(),
|
|
262
|
+
primary: z.boolean().default(false),
|
|
263
|
+
issue_state: z.enum(["pass", "missing", "review", "fail"]).optional(),
|
|
264
|
+
detail: z.string().min(1).optional(),
|
|
265
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
266
|
+
}).strict().superRefine((value, ctx) => {
|
|
267
|
+
if (typeof value.total === "number" && value.value > value.total) {
|
|
268
|
+
ctx.addIssue({
|
|
269
|
+
code: z.ZodIssueCode.custom,
|
|
270
|
+
path: ["value"],
|
|
271
|
+
message: "Metric value cannot exceed total.",
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
export const ReviewedInputDecisionSchema = z.enum([
|
|
276
|
+
"used",
|
|
277
|
+
"reviewed",
|
|
278
|
+
"missing",
|
|
279
|
+
"blocked",
|
|
280
|
+
"not-relevant",
|
|
281
|
+
]);
|
|
282
|
+
export const ReviewedInputSchema = z.object({
|
|
283
|
+
resource_id: z.string().min(1),
|
|
284
|
+
decision: ReviewedInputDecisionSchema,
|
|
285
|
+
reason: z.string().min(1).optional(),
|
|
286
|
+
output_resource_ids: z.array(z.string().min(1)).default([]),
|
|
287
|
+
source_refs: z.array(z.string().min(1)).default([]),
|
|
288
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
289
|
+
}).strict();
|
|
290
|
+
export const MissingInputSchema = z.object({
|
|
291
|
+
resource_id: z.string().min(1),
|
|
292
|
+
status: z.enum(["missing", "blocked", "not-relevant"]),
|
|
293
|
+
reason: z.string().min(1),
|
|
294
|
+
}).strict();
|
|
295
|
+
/**
|
|
296
|
+
* Stage runtime-file contracts: the `expected-inputs.json` and
|
|
297
|
+
* `reviewed-inputs.json` files a stage shell reads and writes. Defined once
|
|
298
|
+
* here so the build engine (stage-manifest writer, native entrypoint reader)
|
|
299
|
+
* and any future client validate against one shape instead of a hand-rolled
|
|
300
|
+
* parallel `interface`.
|
|
301
|
+
*/
|
|
302
|
+
export const ExpectedInputsFileSchema = z.object({
|
|
303
|
+
kind: z.literal("interf-stage-expected-inputs"),
|
|
304
|
+
version: z.literal(1),
|
|
305
|
+
generated_at: z.string().min(1),
|
|
306
|
+
stage_id: z.string().min(1),
|
|
307
|
+
expected: z.array(ResourceRefSchema),
|
|
308
|
+
}).strict();
|
|
309
|
+
export const ReviewedInputsFileSchema = z.object({
|
|
310
|
+
kind: z.literal("interf-stage-reviewed-inputs"),
|
|
311
|
+
version: z.literal(1),
|
|
312
|
+
generated_at: z.string().min(1),
|
|
313
|
+
stage_id: z.string().min(1),
|
|
314
|
+
reviewed: z.array(ReviewedInputSchema),
|
|
315
|
+
}).strict();
|
|
316
|
+
export const StageManifestSchema = z.object({
|
|
317
|
+
kind: z.literal("interf-stage-manifest"),
|
|
318
|
+
version: z.literal(1),
|
|
319
|
+
generated_at: z.string().min(1),
|
|
320
|
+
project: ProjectIdSchema,
|
|
321
|
+
run_id: z.string().min(1).nullable(),
|
|
322
|
+
build_plan: BuildPlanIdSchema,
|
|
323
|
+
stage_id: RuntimeStageSchema,
|
|
324
|
+
stage_label: z.string().min(1),
|
|
325
|
+
role: ResourceRoleSchema,
|
|
326
|
+
summary: z.string().min(1),
|
|
327
|
+
input_manifests: z.array(ResourceRefSchema).default([]),
|
|
328
|
+
expected: z.array(ResourceRefSchema).default([]),
|
|
329
|
+
reviewed: z.array(ReviewedInputSchema).default([]),
|
|
330
|
+
referenced: z.array(ResourceRefSchema).default([]),
|
|
331
|
+
missing: z.array(MissingInputSchema).default([]),
|
|
332
|
+
produced: z.array(ResourceRefSchema).default([]),
|
|
333
|
+
metrics: z.array(MetricCountSchema).default([]),
|
|
334
|
+
}).strict().superRefine((value, ctx) => {
|
|
335
|
+
for (const field of ["input_manifests", "expected", "referenced", "produced"]) {
|
|
336
|
+
const seen = new Set();
|
|
337
|
+
for (const [index, resource] of value[field].entries()) {
|
|
338
|
+
if (seen.has(resource.id)) {
|
|
339
|
+
ctx.addIssue({
|
|
340
|
+
code: z.ZodIssueCode.custom,
|
|
341
|
+
path: [field, index, "id"],
|
|
342
|
+
message: `Duplicate resource id: ${resource.id}.`,
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
seen.add(resource.id);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
const expectedIds = new Set(value.expected.map((resource) => resource.id));
|
|
349
|
+
const producedIds = new Set(value.produced.map((resource) => resource.id));
|
|
350
|
+
const reviewedIds = new Set(value.reviewed.map((review) => review.resource_id));
|
|
351
|
+
const missingIds = new Set(value.missing.map((entry) => entry.resource_id));
|
|
352
|
+
for (const [index, review] of value.reviewed.entries()) {
|
|
353
|
+
if (!expectedIds.has(review.resource_id)) {
|
|
354
|
+
ctx.addIssue({
|
|
355
|
+
code: z.ZodIssueCode.custom,
|
|
356
|
+
path: ["reviewed", index, "resource_id"],
|
|
357
|
+
message: `Reviewed input "${review.resource_id}" is not in expected inputs.`,
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
for (const [outputIndex, outputId] of review.output_resource_ids.entries()) {
|
|
361
|
+
if (!producedIds.has(outputId)) {
|
|
362
|
+
ctx.addIssue({
|
|
363
|
+
code: z.ZodIssueCode.custom,
|
|
364
|
+
path: ["reviewed", index, "output_resource_ids", outputIndex],
|
|
365
|
+
message: `Reviewed input references unknown produced output "${outputId}".`,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
for (const [index, entry] of value.missing.entries()) {
|
|
371
|
+
if (!expectedIds.has(entry.resource_id)) {
|
|
372
|
+
ctx.addIssue({
|
|
373
|
+
code: z.ZodIssueCode.custom,
|
|
374
|
+
path: ["missing", index, "resource_id"],
|
|
375
|
+
message: `Missing input "${entry.resource_id}" is not in expected inputs.`,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
for (const [index, resource] of value.expected.entries()) {
|
|
380
|
+
if (resource.required !== true)
|
|
381
|
+
continue;
|
|
382
|
+
if (!reviewedIds.has(resource.id) && !missingIds.has(resource.id)) {
|
|
383
|
+
ctx.addIssue({
|
|
384
|
+
code: z.ZodIssueCode.custom,
|
|
385
|
+
path: ["expected", index, "id"],
|
|
386
|
+
message: `Required expected input "${resource.id}" must be reviewed or marked missing.`,
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
export const GraphManifestStageSummarySchema = z.object({
|
|
392
|
+
stage_id: RuntimeStageSchema,
|
|
393
|
+
stage_label: z.string().min(1),
|
|
394
|
+
role: ResourceRoleSchema,
|
|
395
|
+
manifest_path: z.string().min(1).refine(isInterfRelativePath, {
|
|
396
|
+
message: "Stage manifest paths must stay inside the Context Graph root.",
|
|
397
|
+
}),
|
|
398
|
+
summary: z.string().min(1),
|
|
399
|
+
produced_total: z.number().int().min(0),
|
|
400
|
+
missing_required_total: z.number().int().min(0),
|
|
401
|
+
metrics: z.array(MetricCountSchema).default([]),
|
|
402
|
+
}).strict();
|
|
403
|
+
export const GraphReadinessRollupSchema = z.object({
|
|
404
|
+
status: z.enum(["ready", "not-ready"]),
|
|
405
|
+
ready: z.boolean(),
|
|
406
|
+
summary: z.string().min(1),
|
|
407
|
+
context_graph_path: z.string().min(1).nullable().optional(),
|
|
408
|
+
missing_required_total: z.number().int().min(0),
|
|
409
|
+
missing: z.array(MissingInputSchema).default([]),
|
|
410
|
+
}).strict();
|
|
411
|
+
export const GraphOutputCountsSchema = z.object({
|
|
412
|
+
nodes: z.number().int().min(0),
|
|
413
|
+
edges: z.number().int().min(0),
|
|
414
|
+
notes: z.number().int().min(0),
|
|
415
|
+
links: z.number().int().min(0),
|
|
416
|
+
source_refs: z.number().int().min(0),
|
|
417
|
+
claims: z.number().int().min(0).optional(),
|
|
418
|
+
entities: z.number().int().min(0).optional(),
|
|
419
|
+
}).strict();
|
|
420
|
+
export const GraphManifestSchema = z.object({
|
|
421
|
+
kind: z.literal("interf-graph-manifest"),
|
|
422
|
+
version: z.literal(1),
|
|
423
|
+
generated_at: z.string().min(1),
|
|
424
|
+
project: ProjectIdSchema,
|
|
425
|
+
graph_id: z.string().min(1),
|
|
426
|
+
run_id: z.string().min(1).nullable(),
|
|
427
|
+
build_plan: BuildPlanIdSchema,
|
|
428
|
+
intent: ProjectIntentSchema.nullable(),
|
|
429
|
+
graph_path: z.string().min(1),
|
|
430
|
+
primary_metrics: z.array(MetricCountSchema).default([]),
|
|
431
|
+
stages: z.array(GraphManifestStageSummarySchema).default([]),
|
|
432
|
+
entrypoints: z.array(ResourceRefSchema).default([]),
|
|
433
|
+
resources: z.array(ResourceRefSchema).default([]),
|
|
434
|
+
graph_outputs: GraphOutputCountsSchema,
|
|
435
|
+
readiness: GraphReadinessRollupSchema,
|
|
436
|
+
}).strict().superRefine((value, ctx) => {
|
|
437
|
+
const resourceIds = new Set();
|
|
438
|
+
for (const [index, resource] of value.resources.entries()) {
|
|
439
|
+
if (resourceIds.has(resource.id)) {
|
|
440
|
+
ctx.addIssue({
|
|
441
|
+
code: z.ZodIssueCode.custom,
|
|
442
|
+
path: ["resources", index, "id"],
|
|
443
|
+
message: `Duplicate graph resource id: ${resource.id}.`,
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
resourceIds.add(resource.id);
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
450
|
+
// Check / Diagnostics / Ready — legacy verification primitives
|
|
115
451
|
//
|
|
116
452
|
// Three words doing three precise jobs:
|
|
117
453
|
// - Check: the rule that must pass (with a `kind` and optional params)
|
|
118
|
-
// -
|
|
454
|
+
// - Diagnostics: records that a check ran (pass/fail + summary + details)
|
|
119
455
|
// - Ready: aggregate verdict (`ready` or `not_ready`)
|
|
120
456
|
//
|
|
121
457
|
// A check has a SCOPE (where it's declared), not a different name:
|
|
122
458
|
// - stage check — Build Plan-declared per stage; runs end-of-stage
|
|
123
|
-
// -
|
|
124
|
-
// -
|
|
459
|
+
// - Output diagnostic — Build Plan-declared per requested output; runs end-of-build
|
|
460
|
+
// - benchmark check — Project-declared Q&A / fact check; runs on `interf benchmark`
|
|
125
461
|
//
|
|
126
462
|
// Same `Check` primitive across all three scopes. Same `CheckKind`
|
|
127
463
|
// canonical list - Build Plans, users, and engine code pick from it.
|
|
@@ -130,31 +466,153 @@ export const SourceBuildMaxLoopsSchema = z.number().int().min(1).max(3);
|
|
|
130
466
|
* Canonical check kinds the engine knows how to evaluate.
|
|
131
467
|
*
|
|
132
468
|
* Adding a new kind requires an engine release (the evaluator must
|
|
133
|
-
* implement it).
|
|
469
|
+
* implement it). Plans and user checks pick from this list; they
|
|
134
470
|
* cannot invent custom kinds.
|
|
135
471
|
*
|
|
136
472
|
* file_exists — file is present and non-empty
|
|
473
|
+
* source_manifest_valid — source-manifest.json exists, parses, and has at least one file
|
|
137
474
|
* min_file_count — directory has ≥ N files (params: { min: number })
|
|
138
475
|
* min_file_count_matches_source — directory has ≥ source_total files (the "all files analyzed" check)
|
|
476
|
+
* source_summary_folders — summaries directory has ≥ source_total source folders, each with summary.md or manifest.md
|
|
477
|
+
* source_page_coverage — page summary outputs exist for every manifest page unit
|
|
139
478
|
* frontmatter_valid — every markdown file has parseable YAML frontmatter
|
|
140
479
|
* frontmatter_required_keys — every markdown file has these frontmatter keys (params: { keys: string[] })
|
|
480
|
+
* frontmatter_nonempty_keys — every markdown file has non-empty values for these frontmatter keys
|
|
481
|
+
* source_refs_required — every markdown file has non-empty source_refs/source_ref/source_path frontmatter
|
|
482
|
+
* summary_backlinks_present — every summary cited by a note's source_refs is also wikilinked from that layer (no orphaned summaries)
|
|
483
|
+
* knowledge_web_connectivity — every knowledge note links at least one OTHER knowledge note (no disconnected islands in the knowledge web)
|
|
484
|
+
* graph_notes_connected — every markdown note across the WHOLE Context Graph (summaries, knowledge, artifacts, home) is link-connected to at least one other note (no free-floating island anywhere, including uncited summaries)
|
|
141
485
|
* wikilinks_valid — every wikilink resolves
|
|
142
|
-
* must_not_contain — file/directory does not contain forbidden phrases (params: { phrases: string[] })
|
|
143
|
-
* must_contain — file/directory contains required phrases (params: { phrases: string[] })
|
|
144
|
-
* qa_match — user-defined Q/A: agent answer matches expected (params: {
|
|
486
|
+
* must_not_contain — file/directory does not contain forbidden phrases (params: { phrases: string[] } or { text: string })
|
|
487
|
+
* must_contain — file/directory contains required phrases (params: { phrases: string[] } or { text: string })
|
|
488
|
+
* qa_match — user-defined Q/A: agent answer matches expected (params: { expected: string, strictness?: "loose" | "strict" })
|
|
145
489
|
*/
|
|
146
490
|
export const CHECK_KINDS = [
|
|
147
491
|
"file_exists",
|
|
492
|
+
"source_manifest_valid",
|
|
148
493
|
"min_file_count",
|
|
149
494
|
"min_file_count_matches_source",
|
|
495
|
+
"source_summary_folders",
|
|
496
|
+
"source_page_coverage",
|
|
150
497
|
"frontmatter_valid",
|
|
151
498
|
"frontmatter_required_keys",
|
|
499
|
+
"frontmatter_nonempty_keys",
|
|
500
|
+
"source_refs_required",
|
|
501
|
+
"summary_backlinks_present",
|
|
502
|
+
"knowledge_web_connectivity",
|
|
503
|
+
"graph_notes_connected",
|
|
152
504
|
"wikilinks_valid",
|
|
153
505
|
"must_not_contain",
|
|
154
506
|
"must_contain",
|
|
155
507
|
"qa_match",
|
|
156
508
|
];
|
|
157
509
|
export const CheckKindSchema = z.enum(CHECK_KINDS);
|
|
510
|
+
export const CHECK_PARAM_CONTRACTS = {
|
|
511
|
+
file_exists: {
|
|
512
|
+
params: {},
|
|
513
|
+
examples: [{}],
|
|
514
|
+
},
|
|
515
|
+
source_manifest_valid: {
|
|
516
|
+
params: {
|
|
517
|
+
path: "optional manifest path; defaults to .interf/runtime/source-manifest.json",
|
|
518
|
+
},
|
|
519
|
+
examples: [{}],
|
|
520
|
+
},
|
|
521
|
+
min_file_count: {
|
|
522
|
+
params: {
|
|
523
|
+
min: "optional number; defaults to 1",
|
|
524
|
+
},
|
|
525
|
+
examples: [{ min: 26 }],
|
|
526
|
+
},
|
|
527
|
+
min_file_count_matches_source: {
|
|
528
|
+
params: {
|
|
529
|
+
match: "optional count key string; defaults to source_total",
|
|
530
|
+
},
|
|
531
|
+
examples: [{ match: "source_total" }],
|
|
532
|
+
},
|
|
533
|
+
source_summary_folders: {
|
|
534
|
+
params: {
|
|
535
|
+
match: "optional count key string; defaults to source_total",
|
|
536
|
+
summary_file: "optional filename string; defaults to summary.md",
|
|
537
|
+
manifest_file: "optional filename string; defaults to manifest.md",
|
|
538
|
+
},
|
|
539
|
+
examples: [{ match: "source_total" }],
|
|
540
|
+
},
|
|
541
|
+
source_page_coverage: {
|
|
542
|
+
params: {
|
|
543
|
+
pages_dir: "optional directory name inside each source summary folder; defaults to pages",
|
|
544
|
+
summary_file: "optional filename string; defaults to summary.md",
|
|
545
|
+
},
|
|
546
|
+
examples: [{ pages_dir: "pages" }],
|
|
547
|
+
},
|
|
548
|
+
frontmatter_valid: {
|
|
549
|
+
params: {},
|
|
550
|
+
examples: [{}],
|
|
551
|
+
},
|
|
552
|
+
frontmatter_required_keys: {
|
|
553
|
+
params: {
|
|
554
|
+
keys: "required string[]",
|
|
555
|
+
},
|
|
556
|
+
examples: [{ keys: ["page", "title", "summary"] }],
|
|
557
|
+
},
|
|
558
|
+
frontmatter_nonempty_keys: {
|
|
559
|
+
params: {
|
|
560
|
+
keys: "required string[]",
|
|
561
|
+
},
|
|
562
|
+
examples: [{ keys: ["source_refs", "verification_state"] }],
|
|
563
|
+
},
|
|
564
|
+
source_refs_required: {
|
|
565
|
+
params: {
|
|
566
|
+
keys: "optional string[]; defaults to source_refs, source_ref, source_path",
|
|
567
|
+
},
|
|
568
|
+
examples: [{ keys: ["source_refs"] }],
|
|
569
|
+
},
|
|
570
|
+
summary_backlinks_present: {
|
|
571
|
+
params: {
|
|
572
|
+
summaries_dir: "optional summaries directory name; defaults to summaries",
|
|
573
|
+
summary_file: "optional summary filename; defaults to summary.md",
|
|
574
|
+
manifest_file: "optional manifest filename; defaults to manifest.md",
|
|
575
|
+
},
|
|
576
|
+
examples: [{}, { summaries_dir: "summaries" }],
|
|
577
|
+
},
|
|
578
|
+
knowledge_web_connectivity: {
|
|
579
|
+
params: {
|
|
580
|
+
knowledge_dir: "optional knowledge directory; defaults to the artifact's own target path. May only narrow the scan to a path inside that target layer.",
|
|
581
|
+
},
|
|
582
|
+
examples: [{}, { knowledge_dir: "knowledge" }],
|
|
583
|
+
},
|
|
584
|
+
graph_notes_connected: {
|
|
585
|
+
params: {
|
|
586
|
+
graph_root: "optional graph-root-relative directory to scan; defaults to the Context Graph root (every note in every layer). Use to narrow the floor to one layer (e.g. summaries) when a Build Plan splits the connectivity floor across outputs.",
|
|
587
|
+
},
|
|
588
|
+
examples: [{}, { graph_root: "summaries" }],
|
|
589
|
+
},
|
|
590
|
+
wikilinks_valid: {
|
|
591
|
+
params: {},
|
|
592
|
+
examples: [{}],
|
|
593
|
+
},
|
|
594
|
+
must_not_contain: {
|
|
595
|
+
params: {
|
|
596
|
+
phrases: "preferred string[] of forbidden phrases",
|
|
597
|
+
text: "optional string shorthand for one forbidden phrase",
|
|
598
|
+
},
|
|
599
|
+
examples: [{ phrases: ["TODO", "Not yet built."] }, { text: "TODO" }],
|
|
600
|
+
},
|
|
601
|
+
must_contain: {
|
|
602
|
+
params: {
|
|
603
|
+
phrases: "preferred string[] of required phrases",
|
|
604
|
+
text: "optional string shorthand for one required phrase",
|
|
605
|
+
},
|
|
606
|
+
examples: [{ phrases: ["Bristol", "Central London"] }, { text: "Bristol" }],
|
|
607
|
+
},
|
|
608
|
+
qa_match: {
|
|
609
|
+
params: {
|
|
610
|
+
expected: "required expected answer string",
|
|
611
|
+
strictness: "optional string; loose or strict; defaults to loose",
|
|
612
|
+
},
|
|
613
|
+
examples: [{ expected: "Acme Corp", strictness: "loose" }],
|
|
614
|
+
},
|
|
615
|
+
};
|
|
158
616
|
/**
|
|
159
617
|
* One check declaration. Reusable across stage/artifact/user scopes.
|
|
160
618
|
*
|
|
@@ -164,7 +622,7 @@ export const CheckKindSchema = z.enum(CHECK_KINDS);
|
|
|
164
622
|
* rule-specific config (typed at the engine evaluator).
|
|
165
623
|
*
|
|
166
624
|
* `required: true` (default) → a failed check fails the parent
|
|
167
|
-
* (stage/artifact/
|
|
625
|
+
* (stage/artifact/Project). `required: false` → soft check, fails
|
|
168
626
|
* warn but don't block the `ready` verdict.
|
|
169
627
|
*/
|
|
170
628
|
export const CheckSchema = z.object({
|
|
@@ -179,7 +637,7 @@ export const CheckSchema = z.object({
|
|
|
179
637
|
* short one-line label for the UI; `details` carries rule-specific
|
|
180
638
|
* structured data (e.g., file count, missing keys, broken link list).
|
|
181
639
|
*/
|
|
182
|
-
export const
|
|
640
|
+
export const CheckResultSchema = z.object({
|
|
183
641
|
check_id: z.string().regex(InterfIdPattern),
|
|
184
642
|
kind: CheckKindSchema,
|
|
185
643
|
passed: z.boolean(),
|
|
@@ -188,9 +646,36 @@ export const ProofSchema = z.object({
|
|
|
188
646
|
details: z.record(z.string(), z.unknown()).optional(),
|
|
189
647
|
evaluated_at: z.string().min(1),
|
|
190
648
|
}).strict();
|
|
649
|
+
export const ContextCheckStatusSchema = z.enum([
|
|
650
|
+
"pending",
|
|
651
|
+
"running",
|
|
652
|
+
"passed",
|
|
653
|
+
"failed",
|
|
654
|
+
"skipped",
|
|
655
|
+
]);
|
|
656
|
+
/**
|
|
657
|
+
* Legacy Build Plan check declaration. Current product surfaces should prefer
|
|
658
|
+
* concrete coverage metrics, Stage Manifests, and Graph Manifest readiness.
|
|
659
|
+
* Deterministic output diagnostics remain nested under requested outputs and
|
|
660
|
+
* use `CheckSchema`.
|
|
661
|
+
*/
|
|
662
|
+
export const ContextCheckDeclarationSchema = z.object({
|
|
663
|
+
id: z.string().regex(InterfIdPattern),
|
|
664
|
+
label: z.string().min(1),
|
|
665
|
+
description: z.string().min(1).optional(),
|
|
666
|
+
backed_by_artifact_ids: z.array(ArtifactIdSchema).default([]),
|
|
667
|
+
required: z.boolean().default(true),
|
|
668
|
+
evidence_expectation: z.string().min(1).optional(),
|
|
669
|
+
}).strict();
|
|
670
|
+
export const ContextCheckProjectionSchema = ContextCheckDeclarationSchema.extend({
|
|
671
|
+
status: ContextCheckStatusSchema.optional(),
|
|
672
|
+
evidence: z.string().min(1).optional(),
|
|
673
|
+
issue: z.string().min(1).optional(),
|
|
674
|
+
}).strict();
|
|
675
|
+
export const ContextCheckSchema = ContextCheckProjectionSchema;
|
|
191
676
|
/**
|
|
192
677
|
* Per-thing readiness verdict. Used for an artifact, a stage, or a
|
|
193
|
-
*
|
|
678
|
+
* Project. Aggregate verdict over its required checks.
|
|
194
679
|
*/
|
|
195
680
|
export const ReadyVerdictSchema = z.enum(["ready", "not_ready", "failed", "skipped"]);
|
|
196
681
|
/**
|
|
@@ -201,6 +686,9 @@ export const ReadyVerdictSchema = z.enum(["ready", "not_ready", "failed", "skipp
|
|
|
201
686
|
*/
|
|
202
687
|
export const STANDARD_EVIDENCE_FRONTMATTER_KEYS = [
|
|
203
688
|
"source",
|
|
689
|
+
"source_file_id",
|
|
690
|
+
"source_path",
|
|
691
|
+
"source_locator",
|
|
204
692
|
"source_kind",
|
|
205
693
|
"evidence_tier",
|
|
206
694
|
"truth_mode",
|
|
@@ -210,33 +698,31 @@ export const STANDARD_EVIDENCE_FRONTMATTER_KEYS = [
|
|
|
210
698
|
// Artifact — a produced thing the user can see and verify
|
|
211
699
|
//
|
|
212
700
|
// Every output of a Build Plan is an Artifact. No internal/working/output
|
|
213
|
-
// distinction — if it's named, it's an Artifact. The
|
|
701
|
+
// distinction — if it's named, it's an Artifact. The runtime reserves
|
|
214
702
|
// `.interf/runtime/` as its own namespace by convention; those paths
|
|
215
703
|
// are not artifacts.
|
|
216
704
|
// ───────────────────────────────────────────────────────────────────────────
|
|
217
705
|
/**
|
|
218
|
-
* Where an Artifact materializes.
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
* as a
|
|
706
|
+
* Where an Artifact materializes. `path` is always relative to the
|
|
707
|
+
* Context Graph root, and `artifact_kind` tells consumers whether the
|
|
708
|
+
* target materializes as a file or directory. The `kind: "path"`
|
|
709
|
+
* discriminator is retained on the wire so a future shape variant can be
|
|
710
|
+
* added as a discriminated union without renaming existing data.
|
|
223
711
|
*/
|
|
224
712
|
export const ArtifactPathShapeSchema = z.object({
|
|
225
713
|
kind: z.literal("path"),
|
|
226
714
|
path: z.string().min(1).refine(isInterfRelativePath, {
|
|
227
|
-
message: "Artifact paths must stay inside the
|
|
715
|
+
message: "Artifact paths must stay inside the Context Graph root (no `..`, no absolute paths).",
|
|
228
716
|
}),
|
|
229
717
|
artifact_kind: z.enum(["file", "directory"]),
|
|
230
718
|
}).strict();
|
|
231
|
-
export const ArtifactShapeSchema =
|
|
232
|
-
ArtifactPathShapeSchema,
|
|
233
|
-
]);
|
|
719
|
+
export const ArtifactShapeSchema = ArtifactPathShapeSchema;
|
|
234
720
|
/**
|
|
235
|
-
*
|
|
721
|
+
* Legacy internal requested-output schema.
|
|
236
722
|
*
|
|
237
723
|
* `checks[]` is the locked vocabulary: an array of `Check` (with
|
|
238
724
|
* `kind` from `CHECK_KINDS`). The runtime evaluates them via the
|
|
239
|
-
* shared check evaluator and produces `
|
|
725
|
+
* shared check evaluator and produces `CheckResult[]` on each Build.
|
|
240
726
|
*/
|
|
241
727
|
export const ArtifactSchema = z.object({
|
|
242
728
|
id: ArtifactIdSchema,
|
|
@@ -246,8 +732,8 @@ export const ArtifactSchema = z.object({
|
|
|
246
732
|
built_by_stages: z.array(z.string().regex(InterfIdPattern)).default([]),
|
|
247
733
|
}).strict();
|
|
248
734
|
/**
|
|
249
|
-
* Per-Artifact runtime status. Lives on Build
|
|
250
|
-
*
|
|
735
|
+
* Per-Artifact runtime status. Lives on Build resources and on
|
|
736
|
+
* Project resources. `check_results[]` carries the structured evidence
|
|
251
737
|
* emitted by the shared check evaluator.
|
|
252
738
|
*/
|
|
253
739
|
export const ArtifactStatusValueSchema = ReadyVerdictSchema;
|
|
@@ -255,14 +741,121 @@ export const ArtifactStatusSchema = z.object({
|
|
|
255
741
|
artifact_id: ArtifactIdSchema,
|
|
256
742
|
status: ReadyVerdictSchema,
|
|
257
743
|
built_by_stages: z.array(z.string().regex(InterfIdPattern)).default([]),
|
|
258
|
-
|
|
744
|
+
check_results: z.array(CheckResultSchema).default([]),
|
|
259
745
|
summary: z.string().min(1).optional(),
|
|
260
746
|
}).strict();
|
|
261
747
|
// ───────────────────────────────────────────────────────────────────────────
|
|
262
|
-
//
|
|
748
|
+
// Supplemental graph diagnostics
|
|
263
749
|
//
|
|
264
|
-
//
|
|
265
|
-
//
|
|
750
|
+
// Diagnostic rows are secondary review records for a Build. They deliberately
|
|
751
|
+
// keep the surface small:
|
|
752
|
+
// assertion label + metric + evidence link/ref + optional issue state
|
|
753
|
+
//
|
|
754
|
+
// Denominators are engine-owned (Source inventory or declared Build Plan
|
|
755
|
+
// expectations). Observed values come from Build runs: stage records,
|
|
756
|
+
// accepted Outputs, validators, and traces. Benchmarks remain separate.
|
|
757
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
758
|
+
export const BuildEvidenceIssueStateSchema = z.enum([
|
|
759
|
+
"pass",
|
|
760
|
+
"missing",
|
|
761
|
+
"review",
|
|
762
|
+
"fail",
|
|
763
|
+
]);
|
|
764
|
+
export const BuildEvidenceMetricSchema = z.object({
|
|
765
|
+
observed: z.number().int().min(0),
|
|
766
|
+
total: z.number().int().min(0).optional(),
|
|
767
|
+
unit: z.string().min(1).optional(),
|
|
768
|
+
}).strict();
|
|
769
|
+
export const BuildEvidenceRefSchema = z.object({
|
|
770
|
+
kind: z.enum([
|
|
771
|
+
"source-inventory",
|
|
772
|
+
"stage-record",
|
|
773
|
+
"output",
|
|
774
|
+
"validator",
|
|
775
|
+
"trace",
|
|
776
|
+
"stage-evidence",
|
|
777
|
+
]),
|
|
778
|
+
label: z.string().min(1),
|
|
779
|
+
ref: z.string().min(1).optional(),
|
|
780
|
+
path: z.string().min(1).optional(),
|
|
781
|
+
run_id: z.string().min(1).optional(),
|
|
782
|
+
stage_id: z.string().regex(InterfIdPattern).optional(),
|
|
783
|
+
artifact_id: ArtifactIdSchema.optional(),
|
|
784
|
+
}).strict();
|
|
785
|
+
export const BuildCheckRowSchema = z.object({
|
|
786
|
+
id: z.string().regex(InterfIdPattern),
|
|
787
|
+
assertion: z.string().min(1),
|
|
788
|
+
metric: BuildEvidenceMetricSchema,
|
|
789
|
+
evidence: BuildEvidenceRefSchema,
|
|
790
|
+
issue_state: BuildEvidenceIssueStateSchema.optional(),
|
|
791
|
+
issue: z.string().min(1).optional(),
|
|
792
|
+
}).strict();
|
|
793
|
+
export const BuildEvidenceResourceSchema = z.object({
|
|
794
|
+
kind: z.literal("interf-build-evidence"),
|
|
795
|
+
version: z.literal(1),
|
|
796
|
+
generated_at: z.string().min(1),
|
|
797
|
+
project_id: z.string().min(1),
|
|
798
|
+
build_run_id: z.string().min(1).nullable(),
|
|
799
|
+
ready: z.boolean(),
|
|
800
|
+
summary: z.string().min(1),
|
|
801
|
+
rows: z.array(BuildCheckRowSchema).default([]),
|
|
802
|
+
}).strict();
|
|
803
|
+
export const EvidenceCountKeySchema = MetricKeySchema;
|
|
804
|
+
export const StageEvidenceSourceRefSchema = z.object({
|
|
805
|
+
path: z.string().min(1),
|
|
806
|
+
source_file_id: z.string().min(1).optional(),
|
|
807
|
+
locator: z.string().min(1).optional(),
|
|
808
|
+
}).strict();
|
|
809
|
+
export const StageEvidenceOutputRefSchema = z.object({
|
|
810
|
+
artifact_id: ArtifactIdSchema,
|
|
811
|
+
path: z.string().min(1).refine(isInterfRelativePath, {
|
|
812
|
+
message: "Output refs must stay inside the Context Graph root.",
|
|
813
|
+
}),
|
|
814
|
+
}).strict();
|
|
815
|
+
export const StageEvidenceCountSchema = z.object({
|
|
816
|
+
key: EvidenceCountKeySchema,
|
|
817
|
+
label: z.string().min(1),
|
|
818
|
+
value: z.number().int().min(0),
|
|
819
|
+
total: z.number().int().min(0).optional(),
|
|
820
|
+
unit: z.string().min(1).optional(),
|
|
821
|
+
source: z.enum(["engine", "stage"]),
|
|
822
|
+
stage_id: z.string().regex(InterfIdPattern).optional(),
|
|
823
|
+
artifact_id: ArtifactIdSchema.optional(),
|
|
824
|
+
primary: z.boolean().optional(),
|
|
825
|
+
expected: z.boolean().optional(),
|
|
826
|
+
}).strict();
|
|
827
|
+
export const StageEvidenceItemSchema = z.object({
|
|
828
|
+
id: z.string().regex(InterfIdPattern),
|
|
829
|
+
kind: EvidenceCountKeySchema,
|
|
830
|
+
label: z.string().min(1),
|
|
831
|
+
summary: z.string().min(1).optional(),
|
|
832
|
+
source_refs: z.array(StageEvidenceSourceRefSchema).default([]),
|
|
833
|
+
output_refs: z.array(StageEvidenceOutputRefSchema).default([]),
|
|
834
|
+
stage_id: z.string().regex(InterfIdPattern),
|
|
835
|
+
artifact_id: ArtifactIdSchema.optional(),
|
|
836
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
837
|
+
}).strict();
|
|
838
|
+
export const StageEvidenceEdgeSchema = z.object({
|
|
839
|
+
from: z.string().regex(InterfIdPattern),
|
|
840
|
+
to: z.string().regex(InterfIdPattern),
|
|
841
|
+
relation: EvidenceCountKeySchema,
|
|
842
|
+
stage_id: z.string().regex(InterfIdPattern),
|
|
843
|
+
}).strict();
|
|
844
|
+
export const StageEvidenceSchema = z.object({
|
|
845
|
+
kind: z.literal("interf-stage-evidence"),
|
|
846
|
+
version: z.literal(1),
|
|
847
|
+
run_id: z.string().min(1),
|
|
848
|
+
stage: z.string().regex(InterfIdPattern),
|
|
849
|
+
counts: z.array(StageEvidenceCountSchema).default([]),
|
|
850
|
+
items: z.array(StageEvidenceItemSchema).default([]),
|
|
851
|
+
edges: z.array(StageEvidenceEdgeSchema).default([]),
|
|
852
|
+
warnings: z.array(z.string().min(1)).optional(),
|
|
853
|
+
}).strict();
|
|
854
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
855
|
+
// Readiness — project-level aggregate verdict
|
|
856
|
+
//
|
|
857
|
+
// Rolls up output diagnostics, benchmark results, and engine-level gates
|
|
858
|
+
// (is the project configured, has a Build, etc.) into a single
|
|
266
859
|
// `ready` / `not_ready` answer for the ICP.
|
|
267
860
|
// ───────────────────────────────────────────────────────────────────────────
|
|
268
861
|
export const ReadinessStatusSchema = z.enum([
|
|
@@ -277,18 +870,19 @@ export const ReadinessStatusSchema = z.enum([
|
|
|
277
870
|
"failed",
|
|
278
871
|
]);
|
|
279
872
|
export const ReadinessGateSchema = z.enum([
|
|
280
|
-
"
|
|
281
|
-
"
|
|
873
|
+
"project-config",
|
|
874
|
+
"context-graph",
|
|
282
875
|
"build-run",
|
|
283
|
-
"artifact-
|
|
284
|
-
"
|
|
285
|
-
"
|
|
876
|
+
"artifact-diagnostics",
|
|
877
|
+
"context-checks",
|
|
878
|
+
"benchmarks",
|
|
879
|
+
"benchmarks-current",
|
|
286
880
|
]);
|
|
287
881
|
/**
|
|
288
882
|
* Per-gate status — one row in the readiness summary. A gate is a
|
|
289
|
-
* high-level layer (is config valid? is
|
|
290
|
-
* latest Build
|
|
291
|
-
*
|
|
883
|
+
* high-level layer (is config valid? is the Context Graph built? did
|
|
884
|
+
* the latest Build succeed?). Gate failures are aggregated alongside
|
|
885
|
+
* output diagnostic failures into the overall `Readiness` verdict.
|
|
292
886
|
*/
|
|
293
887
|
export const GateStatusSchema = z.object({
|
|
294
888
|
gate: ReadinessGateSchema,
|
|
@@ -309,40 +903,28 @@ export const VerifyTargetResultSchema = z.object({
|
|
|
309
903
|
run_path: z.string().min(1).nullable().optional(),
|
|
310
904
|
}).strict();
|
|
311
905
|
/**
|
|
312
|
-
*
|
|
313
|
-
*
|
|
314
|
-
* Field names retain the preparation-readiness wire shape
|
|
315
|
-
* (`latest_test_run_id`, `check_results`, `checks`). The exported type
|
|
316
|
-
* name is `Readiness`.
|
|
906
|
+
* Project-level readiness verdict.
|
|
317
907
|
*/
|
|
318
|
-
|
|
319
|
-
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
320
|
-
return value;
|
|
321
|
-
const record = value;
|
|
322
|
-
return {
|
|
323
|
-
...record,
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
export const ReadinessSchema = z.preprocess(mapReadinessRecord, z.object({
|
|
908
|
+
export const ReadinessSchema = z.object({
|
|
327
909
|
kind: z.literal("interf-readiness-state"),
|
|
328
910
|
version: z.literal(1),
|
|
329
911
|
generated_at: z.string().min(1),
|
|
330
|
-
|
|
912
|
+
project: z.string().min(1),
|
|
331
913
|
status: ReadinessStatusSchema,
|
|
332
914
|
ready: z.boolean(),
|
|
333
915
|
summary: z.string().min(1),
|
|
334
|
-
|
|
916
|
+
context_graph_path: z.string().min(1).nullable(),
|
|
335
917
|
latest_build_run_id: z.string().min(1).nullable().optional(),
|
|
336
|
-
|
|
918
|
+
latest_benchmark_run_id: z.string().min(1).nullable().optional(),
|
|
337
919
|
build: GateStatusSchema.nullable(),
|
|
338
920
|
check_results: z.object({
|
|
339
921
|
configured: z.number().int().min(0),
|
|
340
922
|
fingerprint: z.string().min(1).nullable(),
|
|
341
923
|
source_files: VerifyTargetResultSchema.nullable(),
|
|
342
|
-
|
|
924
|
+
context_graph: VerifyTargetResultSchema.nullable(),
|
|
343
925
|
}).strict(),
|
|
344
926
|
checks: z.array(GateStatusSchema).default([]),
|
|
345
|
-
}).strict()
|
|
927
|
+
}).strict();
|
|
346
928
|
// ───────────────────────────────────────────────────────────────────────────
|
|
347
929
|
// User-defined verification (Q/A pairs) — the "user check" scope
|
|
348
930
|
// ───────────────────────────────────────────────────────────────────────────
|
|
@@ -377,7 +959,7 @@ export const RuntimeExecutorInfoSchema = z.object({
|
|
|
377
959
|
timeout_ms: z.number().nullable().optional(),
|
|
378
960
|
});
|
|
379
961
|
// ───────────────────────────────────────────────────────────────────────────
|
|
380
|
-
//
|
|
962
|
+
// Execution agents + roles
|
|
381
963
|
// ───────────────────────────────────────────────────────────────────────────
|
|
382
964
|
/**
|
|
383
965
|
* The 5 canonical roles a Build Plan stage can declare. Build Plans MAY declare
|
|
@@ -391,7 +973,7 @@ export const CANONICAL_ROLES = [
|
|
|
391
973
|
"general",
|
|
392
974
|
];
|
|
393
975
|
/**
|
|
394
|
-
* Open-ended role identifier.
|
|
976
|
+
* Open-ended role identifier. Plans invent role names freely; the
|
|
395
977
|
* role-router maps unknown names to `general` at run time.
|
|
396
978
|
*/
|
|
397
979
|
export const RoleSchema = z.string().min(1);
|
|
@@ -399,16 +981,30 @@ export const RoleSchema = z.string().min(1);
|
|
|
399
981
|
* One agent in the registry. `available` is a runtime-only flag — true
|
|
400
982
|
* if the command's first token resolves on PATH. Stripped before
|
|
401
983
|
* persistence.
|
|
984
|
+
*
|
|
985
|
+
* `prefs` carries the merged-at-runtime per-agent preferences (env vars,
|
|
986
|
+
* model, effort). It is filled in at load time by looking up the
|
|
987
|
+
* registry's `agent_prefs` map by name. The persisted shape never carries
|
|
988
|
+
* `prefs` — it lives in `agent_prefs` on disk so built-in agents (which
|
|
989
|
+
* are detected, not persisted) can also receive preferences.
|
|
402
990
|
*/
|
|
991
|
+
export const AgentPrefsSchema = z.object({
|
|
992
|
+
env_vars: z.record(z.string().min(1), z.string()).optional(),
|
|
993
|
+
model: z.string().min(1).nullable().optional(),
|
|
994
|
+
effort: z.string().min(1).nullable().optional(),
|
|
995
|
+
}).strict();
|
|
403
996
|
export const AgentRecordSchema = z.object({
|
|
404
997
|
name: z.string().min(1),
|
|
405
998
|
display_name: z.string().min(1),
|
|
406
999
|
command: z.string().min(1),
|
|
407
1000
|
source: z.enum(["builtin", "user"]),
|
|
408
1001
|
available: z.boolean().optional(),
|
|
1002
|
+
prefs: AgentPrefsSchema.optional(),
|
|
409
1003
|
}).strict();
|
|
410
1004
|
export const RoleMapSchema = z.record(RoleSchema, z.string().min(1));
|
|
1005
|
+
export const AgentPrefsMapSchema = z.record(z.string().min(1), AgentPrefsSchema);
|
|
411
1006
|
export const AgentsRegistrySchema = z.object({
|
|
412
1007
|
agents: z.array(AgentRecordSchema).default([]),
|
|
413
1008
|
role_map: RoleMapSchema.default({}),
|
|
1009
|
+
agent_prefs: AgentPrefsMapSchema.default({}),
|
|
414
1010
|
}).strict();
|