@interf/compiler 0.22.2 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +175 -234
- package/dist/bin-mcp.d.ts +2 -0
- package/dist/bin-mcp.js +63 -0
- package/dist/bin-runtime.d.ts +2 -0
- package/dist/bin-runtime.js +111 -0
- package/dist/cli/commands/agents.js +4 -4
- package/dist/cli/commands/auth.d.ts +20 -0
- package/dist/cli/commands/auth.js +161 -0
- package/dist/cli/commands/benchmark.d.ts +10 -0
- package/dist/cli/commands/benchmark.js +88 -0
- package/dist/cli/commands/build-plan.js +95 -103
- package/dist/cli/commands/build.d.ts +1 -1
- package/dist/cli/commands/build.js +16 -15
- package/dist/cli/commands/doctor.js +3 -3
- package/dist/cli/commands/graphs.d.ts +2 -0
- package/dist/cli/commands/graphs.js +199 -0
- package/dist/cli/commands/login.js +4 -6
- package/dist/cli/commands/logout.js +1 -1
- package/dist/cli/commands/mcp.d.ts +3 -2
- package/dist/cli/commands/mcp.js +721 -204
- package/dist/cli/commands/project.d.ts +2 -0
- package/dist/cli/commands/project.js +202 -0
- package/dist/cli/commands/reset.d.ts +1 -1
- package/dist/cli/commands/reset.js +10 -10
- package/dist/cli/commands/runs.js +52 -26
- package/dist/cli/commands/runtime.d.ts +24 -0
- package/dist/cli/commands/runtime.js +373 -0
- package/dist/cli/commands/status.d.ts +1 -0
- package/dist/cli/commands/status.js +33 -22
- package/dist/cli/commands/traces.d.ts +2 -0
- package/dist/cli/commands/traces.js +125 -0
- package/dist/cli/commands/wizard.js +155 -150
- package/dist/cli/index.d.ts +7 -4
- package/dist/cli/index.js +13 -7
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/packages/build-plans/authoring/brief.d.ts +517 -0
- package/dist/packages/build-plans/authoring/brief.js +89 -0
- package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +10 -10
- package/dist/packages/build-plans/authoring/build-plan-authoring.js +66 -26
- package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +1 -1
- package/dist/packages/build-plans/authoring/build-plan-edit-session.js +8 -2
- package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
- package/dist/packages/build-plans/authoring/build-plan-improvement.js +39 -42
- package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
- package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
- package/dist/packages/build-plans/build-plan-resolution.js +3 -3
- package/dist/packages/build-plans/index.d.ts +1 -1
- package/dist/packages/build-plans/index.js +1 -1
- package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -12
- package/dist/packages/build-plans/package/build-plan-definitions.js +40 -39
- package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
- package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
- package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
- package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
- package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +4 -4
- package/dist/packages/build-plans/package/build-plan-stage-runner.js +22 -11
- package/dist/packages/build-plans/package/builtin-build-plan.d.ts +5 -6
- package/dist/packages/build-plans/package/builtin-build-plan.js +7 -8
- package/dist/packages/build-plans/package/context-interface.d.ts +11 -9
- package/dist/packages/build-plans/package/context-interface.js +14 -33
- package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
- package/dist/packages/build-plans/package/interf-build-plan-package.js +56 -52
- package/dist/packages/build-plans/package/local-build-plans.d.ts +12 -10
- package/dist/packages/build-plans/package/local-build-plans.js +56 -31
- package/dist/packages/build-plans/package/user-build-plans.js +1 -1
- package/dist/packages/contracts/index.d.ts +4 -2
- package/dist/packages/contracts/index.js +2 -1
- package/dist/packages/contracts/lib/project-paths.d.ts +137 -0
- package/dist/packages/contracts/lib/project-paths.js +211 -0
- package/dist/packages/contracts/lib/project-schema.d.ts +160 -0
- package/dist/packages/contracts/lib/project-schema.js +113 -0
- package/dist/packages/contracts/lib/schema.d.ts +739 -80
- package/dist/packages/contracts/lib/schema.js +410 -75
- package/dist/packages/contracts/utils/parse.js +67 -0
- package/dist/packages/projects/index.d.ts +6 -0
- package/dist/packages/{project → projects}/index.js +0 -3
- package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
- package/dist/packages/{project → projects}/interf-detect.js +56 -50
- package/dist/packages/projects/interf.d.ts +2 -0
- package/dist/packages/projects/interf.js +1 -0
- package/dist/packages/projects/lib/schema.d.ts +79 -0
- package/dist/packages/projects/lib/schema.js +89 -0
- package/dist/packages/projects/source-config.d.ts +58 -0
- package/dist/packages/projects/source-config.js +352 -0
- package/dist/packages/projects/source-folders.d.ts +11 -0
- package/dist/packages/{project → projects}/source-folders.js +26 -26
- package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
- package/dist/packages/{engine → runtime}/action-planner.js +20 -22
- package/dist/packages/runtime/action-values.d.ts +1 -0
- package/dist/packages/runtime/action-values.js +1 -0
- package/dist/packages/runtime/actions/errors.d.ts +2 -0
- package/dist/packages/runtime/actions/errors.js +12 -0
- package/dist/packages/runtime/actions/fields.d.ts +82 -0
- package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
- package/dist/packages/runtime/actions/form-builders.js +619 -0
- package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
- package/dist/packages/runtime/actions/form-validators.js +128 -0
- package/dist/packages/runtime/actions/helpers.d.ts +11 -0
- package/dist/packages/runtime/actions/helpers.js +80 -0
- package/dist/packages/runtime/actions/index.d.ts +8 -0
- package/dist/packages/runtime/actions/index.js +11 -0
- package/dist/packages/runtime/actions/registry.d.ts +64 -0
- package/dist/packages/runtime/actions/registry.js +62 -0
- package/dist/packages/runtime/actions/requests.d.ts +45 -0
- package/dist/packages/runtime/actions/requests.js +158 -0
- package/dist/packages/runtime/actions/schemas.d.ts +154 -0
- package/dist/packages/runtime/actions/schemas.js +36 -0
- package/dist/packages/runtime/agent-handoff.d.ts +11 -0
- package/dist/packages/runtime/agent-handoff.js +101 -0
- package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
- package/dist/packages/{engine → runtime}/agents/index.js +1 -2
- package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
- package/dist/packages/runtime/agents/lib/args.js +24 -0
- package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
- package/dist/packages/runtime/agents/lib/constants.js +13 -0
- package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
- package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
- package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
- package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
- package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +8 -14
- package/dist/packages/{engine → runtime}/agents/lib/execution.js +14 -4
- package/dist/packages/{engine → runtime}/agents/lib/preflight.js +15 -13
- package/dist/packages/{engine → runtime}/agents/lib/render.js +4 -4
- package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
- package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
- package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
- package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
- package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
- package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
- package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
- package/dist/packages/runtime/agents/lib/shell-templates.js +452 -0
- package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
- package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
- package/dist/packages/runtime/agents/lib/shells.d.ts +63 -0
- package/dist/packages/runtime/agents/lib/shells.js +383 -0
- package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
- package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
- package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
- package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
- package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
- package/dist/packages/runtime/agents/providers/codex.js +64 -0
- package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
- package/dist/packages/runtime/agents/providers/cursor.js +24 -0
- package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
- package/dist/packages/runtime/agents/providers/index.js +31 -0
- package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
- package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
- package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
- package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
- package/dist/packages/{engine → runtime}/agents/role-executors.js +7 -6
- package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
- package/dist/packages/runtime/auth/account-context.d.ts +52 -0
- package/dist/packages/runtime/auth/account-context.js +68 -0
- package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
- package/dist/packages/runtime/auth/auth-flow.js +189 -0
- package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
- package/dist/packages/runtime/auth/jwt-validator.js +86 -0
- package/dist/packages/runtime/auth/keychain.d.ts +35 -0
- package/dist/packages/runtime/auth/keychain.js +85 -0
- package/dist/packages/runtime/auth/session-store.d.ts +38 -0
- package/dist/packages/runtime/auth/session-store.js +88 -0
- package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
- package/dist/packages/runtime/auth/workos-client.js +87 -0
- package/dist/packages/runtime/benchmark-question-draft.d.ts +20 -0
- package/dist/packages/runtime/benchmark-question-draft.js +124 -0
- package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
- package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
- package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +5 -5
- package/dist/packages/{engine → runtime}/build/artifact-status.js +25 -23
- package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
- package/dist/packages/runtime/build/atomic-fs.js +95 -0
- package/dist/packages/runtime/build/billing-events.d.ts +78 -0
- package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
- package/dist/packages/runtime/build/build-evidence.d.ts +15 -0
- package/dist/packages/runtime/build/build-evidence.js +173 -0
- package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
- package/dist/packages/runtime/build/build-pipeline.js +304 -0
- package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
- package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
- package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
- package/dist/packages/runtime/build/build-plan-runs.js +31 -0
- package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
- package/dist/packages/{engine → runtime}/build/build-stage-plan.js +28 -29
- package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
- package/dist/packages/runtime/build/build-stage-runner.js +165 -0
- package/dist/packages/{engine → runtime}/build/build-target.d.ts +4 -4
- package/dist/packages/runtime/build/build-target.js +16 -0
- package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
- package/dist/packages/runtime/build/check-evaluator.js +575 -0
- package/dist/packages/runtime/build/context-graph-paths.d.ts +51 -0
- package/dist/packages/runtime/build/context-graph-paths.js +133 -0
- package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
- package/dist/packages/runtime/build/context-graph-schema.js +39 -0
- package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
- package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
- package/dist/packages/{engine → runtime}/build/index.d.ts +5 -3
- package/dist/packages/{engine → runtime}/build/index.js +5 -3
- package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +221 -88
- package/dist/packages/{engine → runtime}/build/lib/schema.js +61 -41
- package/dist/packages/runtime/build/reset.d.ts +2 -0
- package/dist/packages/runtime/build/reset.js +62 -0
- package/dist/packages/{engine → runtime}/build/runtime-contracts.js +5 -5
- package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
- package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
- package/dist/packages/{engine → runtime}/build/runtime-paths.js +6 -6
- package/dist/packages/{engine → runtime}/build/runtime-prompt.js +7 -6
- package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
- package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
- package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
- package/dist/packages/runtime/build/runtime-runs.js +265 -0
- package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +6 -6
- package/dist/packages/runtime/build/runtime-types.js +1 -0
- package/dist/packages/runtime/build/runtime.d.ts +6 -0
- package/dist/packages/runtime/build/runtime.js +5 -0
- package/dist/packages/runtime/build/source-files.d.ts +58 -0
- package/dist/packages/runtime/build/source-files.js +184 -0
- package/dist/packages/runtime/build/source-inventory.d.ts +27 -0
- package/dist/packages/runtime/build/source-inventory.js +273 -0
- package/dist/packages/runtime/build/source-manifest.d.ts +52 -0
- package/dist/packages/runtime/build/source-manifest.js +192 -0
- package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
- package/dist/packages/runtime/build/stage-evidence.js +317 -0
- package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
- package/dist/packages/runtime/build/stage-reuse.js +142 -0
- package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
- package/dist/packages/runtime/build/state-artifacts.js +14 -0
- package/dist/packages/runtime/build/state-health.d.ts +4 -0
- package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
- package/dist/packages/runtime/build/state-io.d.ts +12 -0
- package/dist/packages/runtime/build/state-io.js +119 -0
- package/dist/packages/{engine → runtime}/build/state-paths.d.ts +3 -1
- package/dist/packages/runtime/build/state-paths.js +22 -0
- package/dist/packages/runtime/build/state-view.d.ts +5 -0
- package/dist/packages/{engine → runtime}/build/state-view.js +60 -33
- package/dist/packages/runtime/build/state.d.ts +7 -0
- package/dist/packages/runtime/build/state.js +12 -0
- package/dist/packages/runtime/build/traces.d.ts +30 -0
- package/dist/packages/runtime/build/traces.js +133 -0
- package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
- package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +48 -35
- package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
- package/dist/packages/{engine → runtime}/build/validate.js +26 -26
- package/dist/packages/{engine → runtime}/client.d.ts +15 -15
- package/dist/packages/{engine → runtime}/client.js +41 -24
- package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
- package/dist/packages/{engine → runtime}/connection-config.js +9 -8
- package/dist/packages/runtime/context-checks.d.ts +10 -0
- package/dist/packages/runtime/context-checks.js +114 -0
- package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
- package/dist/packages/runtime/context-graph-scaffold.js +134 -0
- package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
- package/dist/packages/runtime/entitlement-guard.js +70 -0
- package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
- package/dist/packages/{engine → runtime}/execution/index.js +1 -1
- package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +270 -192
- package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
- package/dist/packages/runtime/index.d.ts +29 -0
- package/dist/packages/runtime/index.js +21 -0
- package/dist/packages/runtime/instance-paths.d.ts +30 -0
- package/dist/packages/runtime/instance-paths.js +29 -0
- package/dist/packages/{engine → runtime}/native-run-handlers.d.ts +4 -4
- package/dist/packages/{engine → runtime}/native-run-handlers.js +184 -152
- package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
- package/dist/packages/runtime/plan-artifact-contract.js +42 -0
- package/dist/packages/runtime/project-entries.d.ts +11 -0
- package/dist/packages/runtime/project-entries.js +49 -0
- package/dist/packages/runtime/project-source-state.d.ts +26 -0
- package/dist/packages/runtime/project-source-state.js +53 -0
- package/dist/packages/runtime/project-store.d.ts +85 -0
- package/dist/packages/runtime/project-store.js +168 -0
- package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
- package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
- package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
- package/dist/packages/{engine → runtime}/run-observability.js +166 -84
- package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
- package/dist/packages/runtime/runtime-action-proposals.js +542 -0
- package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
- package/dist/packages/runtime/runtime-build-plans.js +131 -0
- package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
- package/dist/packages/runtime/runtime-build-runs.js +562 -0
- package/dist/packages/runtime/runtime-caches.d.ts +91 -0
- package/dist/packages/{engine → runtime}/runtime-caches.js +77 -49
- package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
- package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
- package/dist/packages/runtime/runtime-executor.d.ts +22 -0
- package/dist/packages/runtime/runtime-executor.js +131 -0
- package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
- package/dist/packages/runtime/runtime-jobs.js +463 -0
- package/dist/packages/runtime/runtime-observability.d.ts +11 -0
- package/dist/packages/runtime/runtime-observability.js +39 -0
- package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
- package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
- package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
- package/dist/packages/runtime/runtime-project-mutations.js +64 -0
- package/dist/packages/runtime/runtime-project-reads.d.ts +15 -0
- package/dist/packages/runtime/runtime-project-reads.js +381 -0
- package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
- package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
- package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +21 -16
- package/dist/packages/{engine → runtime}/runtime-resource-builders.js +48 -38
- package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
- package/dist/packages/runtime/runtime-verify-runs.js +295 -0
- package/dist/packages/runtime/runtime.d.ts +1165 -0
- package/dist/packages/runtime/runtime.js +417 -0
- package/dist/packages/runtime/schemas/actions.d.ts +1182 -0
- package/dist/packages/runtime/schemas/actions.js +117 -0
- package/dist/packages/runtime/schemas/agents.d.ts +76 -0
- package/dist/packages/runtime/schemas/agents.js +41 -0
- package/dist/packages/runtime/schemas/build-plans.d.ts +959 -0
- package/dist/packages/runtime/schemas/build-plans.js +107 -0
- package/dist/packages/runtime/schemas/files.d.ts +567 -0
- package/dist/packages/runtime/schemas/files.js +51 -0
- package/dist/packages/runtime/schemas/index.d.ts +8 -0
- package/dist/packages/runtime/schemas/index.js +12 -0
- package/dist/packages/runtime/schemas/instance.d.ts +141 -0
- package/dist/packages/runtime/schemas/instance.js +143 -0
- package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
- package/dist/packages/runtime/schemas/jobs.js +103 -0
- package/dist/packages/runtime/schemas/projects.d.ts +339 -0
- package/dist/packages/runtime/schemas/projects.js +136 -0
- package/dist/packages/runtime/schemas/runs.d.ts +2676 -0
- package/dist/packages/runtime/schemas/runs.js +98 -0
- package/dist/packages/runtime/service/index.d.ts +3 -0
- package/dist/packages/runtime/service/index.js +3 -0
- package/dist/packages/runtime/service/openapi.d.ts +7 -0
- package/dist/packages/runtime/service/openapi.js +117 -0
- package/dist/packages/runtime/service/operations.d.ts +1490 -0
- package/dist/packages/runtime/service/operations.js +245 -0
- package/dist/packages/runtime/service/routes.d.ts +106 -0
- package/dist/packages/runtime/service/routes.js +120 -0
- package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
- package/dist/packages/runtime/service/server-api-files.js +85 -0
- package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
- package/dist/packages/runtime/service/server-app-boot.js +46 -0
- package/dist/packages/runtime/service/server-guards.d.ts +63 -0
- package/dist/packages/runtime/service/server-guards.js +181 -0
- package/dist/packages/runtime/service/server-helpers.d.ts +27 -0
- package/dist/packages/runtime/service/server-helpers.js +89 -0
- package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
- package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
- package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-action-proposals.js +43 -0
- package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-agents.js +198 -0
- package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
- package/dist/packages/runtime/service/server-routes-auth.js +138 -0
- package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-build-plans.js +83 -0
- package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
- package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
- package/dist/packages/runtime/service/server-routes-events.js +99 -0
- package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
- package/dist/packages/runtime/service/server-routes-project-context.js +192 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.js +130 -0
- package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
- package/dist/packages/runtime/service/server-routes-project-runs.js +85 -0
- package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-projects.js +92 -0
- package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-runs.js +112 -0
- package/dist/packages/runtime/service/server.d.ts +37 -0
- package/dist/packages/runtime/service/server.js +300 -0
- package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
- package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
- package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
- package/dist/packages/runtime/verify/benchmark-run.js +303 -0
- package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
- package/dist/packages/{engine → runtime}/verify/index.js +1 -1
- package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
- package/dist/packages/{engine → runtime}/verify/lib/schema.js +26 -18
- package/dist/packages/{engine → runtime}/verify/verify-execution.js +11 -11
- package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +4 -4
- package/dist/packages/runtime/verify/verify-paths.js +61 -0
- package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
- package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
- package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
- package/dist/packages/{engine → runtime}/verify/verify-specs.js +5 -3
- package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
- package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
- package/dist/packages/runtime/verify/verify-types.js +1 -0
- package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
- package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
- package/dist/packages/runtime/wire-schemas.d.ts +18 -0
- package/dist/packages/runtime/wire-schemas.js +27 -0
- package/package.json +39 -31
- package/public-repo/CONTRIBUTING.md +7 -16
- package/public-repo/README.md +175 -234
- package/public-repo/SECURITY.md +3 -4
- package/public-repo/build-plans/interf-default/README.md +19 -14
- package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +18 -11
- package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +12 -5
- package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +16 -4
- package/public-repo/build-plans/interf-default/build-plan.json +34 -28
- package/public-repo/build-plans/interf-default/build-plan.schema.json +54 -32
- package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
- package/public-repo/build-plans/interf-default/use/query/SKILL.md +17 -11
- package/public-repo/openapi/local-service.openapi.json +6803 -0
- package/public-repo/skills/interf/SKILL.md +460 -179
- package/dist/cli/commands/prep.d.ts +0 -2
- package/dist/cli/commands/prep.js +0 -240
- package/dist/cli/commands/test.d.ts +0 -10
- package/dist/cli/commands/test.js +0 -85
- package/dist/cli/commands/web.d.ts +0 -2
- package/dist/cli/commands/web.js +0 -286
- package/dist/interf-ui/404.html +0 -1
- package/dist/interf-ui/__next.__PAGE__.txt +0 -10
- package/dist/interf-ui/__next._full.txt +0 -20
- package/dist/interf-ui/__next._head.txt +0 -5
- package/dist/interf-ui/__next._index.txt +0 -5
- package/dist/interf-ui/__next._tree.txt +0 -5
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
- package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
- package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
- package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
- package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
- package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
- package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
- package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
- package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
- package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
- package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
- package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
- package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
- package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
- package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
- package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
- package/dist/interf-ui/_not-found/__next._full.txt +0 -15
- package/dist/interf-ui/_not-found/__next._head.txt +0 -5
- package/dist/interf-ui/_not-found/__next._index.txt +0 -5
- package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
- package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
- package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
- package/dist/interf-ui/_not-found.html +0 -1
- package/dist/interf-ui/_not-found.txt +0 -15
- package/dist/interf-ui/index.html +0 -1
- package/dist/interf-ui/index.txt +0 -20
- package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
- package/dist/packages/contracts/lib/preparation-paths.js +0 -177
- package/dist/packages/engine/action-definitions.d.ts +0 -407
- package/dist/packages/engine/action-definitions.js +0 -1158
- package/dist/packages/engine/action-values.d.ts +0 -1
- package/dist/packages/engine/action-values.js +0 -1
- package/dist/packages/engine/agents/lib/args.d.ts +0 -4
- package/dist/packages/engine/agents/lib/args.js +0 -52
- package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
- package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
- package/dist/packages/engine/agents/lib/constants.js +0 -28
- package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
- package/dist/packages/engine/agents/lib/schema.js +0 -7
- package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
- package/dist/packages/engine/agents/lib/shells.js +0 -1052
- package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
- package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
- package/dist/packages/engine/build/billing-events.d.ts +0 -89
- package/dist/packages/engine/build/build-pipeline.js +0 -175
- package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
- package/dist/packages/engine/build/build-plan-runs.js +0 -31
- package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
- package/dist/packages/engine/build/build-stage-runner.js +0 -94
- package/dist/packages/engine/build/build-target.js +0 -16
- package/dist/packages/engine/build/check-evaluator.js +0 -298
- package/dist/packages/engine/build/reset.d.ts +0 -2
- package/dist/packages/engine/build/reset.js +0 -74
- package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
- package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
- package/dist/packages/engine/build/runtime-runs.js +0 -224
- package/dist/packages/engine/build/runtime.d.ts +0 -5
- package/dist/packages/engine/build/runtime.js +0 -4
- package/dist/packages/engine/build/source-files.d.ts +0 -46
- package/dist/packages/engine/build/source-files.js +0 -149
- package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
- package/dist/packages/engine/build/state-artifacts.js +0 -14
- package/dist/packages/engine/build/state-health.d.ts +0 -4
- package/dist/packages/engine/build/state-io.d.ts +0 -11
- package/dist/packages/engine/build/state-io.js +0 -82
- package/dist/packages/engine/build/state-paths.js +0 -16
- package/dist/packages/engine/build/state-view.d.ts +0 -5
- package/dist/packages/engine/build/state.d.ts +0 -7
- package/dist/packages/engine/build/state.js +0 -12
- package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
- package/dist/packages/engine/build/validate-helpers.js +0 -41
- package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
- package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
- package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
- package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
- package/dist/packages/engine/cloud-seams.d.ts +0 -115
- package/dist/packages/engine/cloud-seams.js +0 -84
- package/dist/packages/engine/index.d.ts +0 -22
- package/dist/packages/engine/index.js +0 -15
- package/dist/packages/engine/instance-paths.d.ts +0 -106
- package/dist/packages/engine/instance-paths.js +0 -171
- package/dist/packages/engine/lib/schema.d.ts +0 -6304
- package/dist/packages/engine/lib/schema.js +0 -730
- package/dist/packages/engine/preparation-store.d.ts +0 -105
- package/dist/packages/engine/preparation-store.js +0 -213
- package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
- package/dist/packages/engine/readiness-check-draft.js +0 -111
- package/dist/packages/engine/requested-artifacts.d.ts +0 -5
- package/dist/packages/engine/routes.d.ts +0 -85
- package/dist/packages/engine/routes.js +0 -99
- package/dist/packages/engine/runtime-caches.d.ts +0 -76
- package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
- package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
- package/dist/packages/engine/runtime.d.ts +0 -371
- package/dist/packages/engine/runtime.js +0 -2463
- package/dist/packages/engine/server.d.ts +0 -58
- package/dist/packages/engine/server.js +0 -1399
- package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
- package/dist/packages/engine/verify/readiness-check-run.js +0 -265
- package/dist/packages/engine/verify/verify-paths.js +0 -61
- package/dist/packages/engine/verify/verify-sandbox.js +0 -88
- package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
- package/dist/packages/engine/wire-schemas.d.ts +0 -547
- package/dist/packages/engine/wire-schemas.js +0 -59
- package/dist/packages/project/index.d.ts +0 -9
- package/dist/packages/project/interf-bootstrap.d.ts +0 -1
- package/dist/packages/project/interf-bootstrap.js +0 -1
- package/dist/packages/project/interf-scaffold.d.ts +0 -3
- package/dist/packages/project/interf-scaffold.js +0 -136
- package/dist/packages/project/interf.d.ts +0 -4
- package/dist/packages/project/interf.js +0 -3
- package/dist/packages/project/lib/schema.d.ts +0 -328
- package/dist/packages/project/lib/schema.js +0 -136
- package/dist/packages/project/preparation-entries.d.ts +0 -11
- package/dist/packages/project/preparation-entries.js +0 -49
- package/dist/packages/project/source-config.d.ts +0 -46
- package/dist/packages/project/source-config.js +0 -394
- package/dist/packages/project/source-folders.d.ts +0 -11
- package/public-repo/plugins/README.md +0 -9
- package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
- package/public-repo/plugins/interf/.mcp.json +0 -12
- package/public-repo/plugins/interf/README.md +0 -32
- package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
- /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/executors.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/logs.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/logs.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/render.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/status.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +0 -0
- /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
- /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
- /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-paths.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
- /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
|
@@ -3,12 +3,12 @@ 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
14
|
* Build Plan-declared artifact identifier. Same shape as `BuildPlanIdSchema`
|
|
@@ -18,8 +18,8 @@ export const BuildPlanIdSchema = z.string().regex(InterfIdPattern);
|
|
|
18
18
|
export const ArtifactIdSchema = z.string().regex(InterfIdPattern);
|
|
19
19
|
export const RuntimeStageSchema = z.string().regex(InterfIdPattern);
|
|
20
20
|
export const RuntimeContractTypeSchema = z.string().regex(InterfIdPattern);
|
|
21
|
-
export const RuntimeTargetTypeSchema = z.enum(["
|
|
22
|
-
export const TestTargetTypeSchema = z.enum(["
|
|
21
|
+
export const RuntimeTargetTypeSchema = z.enum(["context-graph"]);
|
|
22
|
+
export const TestTargetTypeSchema = z.enum(["context-graph", "source-files"]);
|
|
23
23
|
// ───────────────────────────────────────────────────────────────────────────
|
|
24
24
|
// Path validation
|
|
25
25
|
//
|
|
@@ -57,13 +57,13 @@ export const LocatorSchema = z.object({
|
|
|
57
57
|
value: z.string().min(1),
|
|
58
58
|
}).strict();
|
|
59
59
|
// ───────────────────────────────────────────────────────────────────────────
|
|
60
|
-
// Source primitives — what the user puts in
|
|
60
|
+
// Source primitives — what the user puts in.
|
|
61
61
|
//
|
|
62
|
-
// `local-folder` is the only kind
|
|
63
|
-
//
|
|
64
|
-
//
|
|
62
|
+
// `local-folder` is the only Source kind Interf accepts. Cloud / remote
|
|
63
|
+
// storage kinds will be re-introduced when a real variant ships; see
|
|
64
|
+
// `internal/iterations/0.23-service-variant-parking-lot.md`.
|
|
65
65
|
// ───────────────────────────────────────────────────────────────────────────
|
|
66
|
-
export const SourceKindSchema = z.enum(["local-folder"
|
|
66
|
+
export const SourceKindSchema = z.enum(["local-folder"]);
|
|
67
67
|
export const SourceSchema = z.object({
|
|
68
68
|
id: z.string().regex(InterfIdPattern),
|
|
69
69
|
kind: SourceKindSchema,
|
|
@@ -73,6 +73,7 @@ export const SourceFileSchema = z.object({
|
|
|
73
73
|
id: z.string().min(1),
|
|
74
74
|
path: z.string().min(1),
|
|
75
75
|
locator: z.string().min(1),
|
|
76
|
+
size_bytes: z.number().int().nonnegative().optional(),
|
|
76
77
|
}).strict();
|
|
77
78
|
export const SourceFilesSchema = z.object({
|
|
78
79
|
kind: z.literal("interf-source-files"),
|
|
@@ -82,46 +83,146 @@ export const SourceFilesSchema = z.object({
|
|
|
82
83
|
source_total: z.number().int().min(0),
|
|
83
84
|
files: z.array(SourceFileSchema),
|
|
84
85
|
}).strict();
|
|
85
|
-
export const
|
|
86
|
-
kind: z.literal("interf-source-
|
|
86
|
+
export const SourceStateSchema = z.object({
|
|
87
|
+
kind: z.literal("interf-source-state"),
|
|
87
88
|
version: z.literal(1),
|
|
88
|
-
|
|
89
|
+
graph_id: z.string().min(1),
|
|
89
90
|
generated_at: z.string().min(1),
|
|
90
91
|
run_id: z.string().min(1).nullable(),
|
|
91
92
|
source: SourceSchema,
|
|
92
93
|
source_total: z.number().int().min(0),
|
|
93
94
|
files: z.array(SourceFileSchema),
|
|
94
95
|
}).strict();
|
|
96
|
+
export const SourceInspectableUnitSchema = z.object({
|
|
97
|
+
kind: z.enum(["page", "slide", "sheet", "table", "image", "section"]),
|
|
98
|
+
index: z.number().int().min(1).optional(),
|
|
99
|
+
label: z.string().min(1).optional(),
|
|
100
|
+
}).strict();
|
|
101
|
+
export const SourceManifestEvidenceSchema = z.object({
|
|
102
|
+
kind: z.enum(["agent-observation", "connector-metadata", "user-provided"]),
|
|
103
|
+
summary: z.string().min(1),
|
|
104
|
+
}).strict();
|
|
105
|
+
export const SourceManifestFileKindSchema = z.enum([
|
|
106
|
+
"pdf",
|
|
107
|
+
"document",
|
|
108
|
+
"spreadsheet",
|
|
109
|
+
"presentation",
|
|
110
|
+
"image",
|
|
111
|
+
"text",
|
|
112
|
+
"other",
|
|
113
|
+
]);
|
|
114
|
+
export const SourceManifestFileSchema = SourceFileSchema.extend({
|
|
115
|
+
path: z.string().min(1).refine(isInterfRelativePath, {
|
|
116
|
+
message: "Source manifest paths must be relative and cannot contain path traversal.",
|
|
117
|
+
}),
|
|
118
|
+
kind: SourceManifestFileKindSchema.default("other"),
|
|
119
|
+
size_bytes: z.number().int().nonnegative().optional(),
|
|
120
|
+
content_hash: z.string().min(1).optional(),
|
|
121
|
+
page_count: z.number().int().min(1).optional(),
|
|
122
|
+
inspectable_units: z.array(SourceInspectableUnitSchema).default([]),
|
|
123
|
+
confidence: z.enum(["high", "medium", "low"]).default("medium"),
|
|
124
|
+
evidence: z.array(SourceManifestEvidenceSchema).min(1),
|
|
125
|
+
}).strict();
|
|
126
|
+
export const SourceManifestScannerSchema = z.object({
|
|
127
|
+
executor: z.string().min(1),
|
|
128
|
+
agent_label: z.string().min(1),
|
|
129
|
+
attempt: z.number().int().min(1),
|
|
130
|
+
}).strict();
|
|
131
|
+
export const SourceManifestSchema = z.object({
|
|
132
|
+
kind: z.literal("interf-source-manifest"),
|
|
133
|
+
version: z.literal(1),
|
|
134
|
+
manifest_id: z.string().min(1),
|
|
135
|
+
generated_at: z.string().min(1),
|
|
136
|
+
run_id: z.string().min(1).nullable(),
|
|
137
|
+
project: ProjectIdSchema,
|
|
138
|
+
source: SourceSchema,
|
|
139
|
+
scanner: SourceManifestScannerSchema,
|
|
140
|
+
source_total: z.number().int().min(1),
|
|
141
|
+
files: z.array(SourceManifestFileSchema).min(1),
|
|
142
|
+
warnings: z.array(z.string().min(1)).default([]),
|
|
143
|
+
}).strict().superRefine((value, ctx) => {
|
|
144
|
+
if (value.files.length !== value.source_total) {
|
|
145
|
+
ctx.addIssue({
|
|
146
|
+
code: z.ZodIssueCode.custom,
|
|
147
|
+
path: ["source_total"],
|
|
148
|
+
message: "source_total must equal files.length.",
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const ids = new Set();
|
|
152
|
+
const paths = new Set();
|
|
153
|
+
for (const [index, file] of value.files.entries()) {
|
|
154
|
+
if (ids.has(file.id)) {
|
|
155
|
+
ctx.addIssue({
|
|
156
|
+
code: z.ZodIssueCode.custom,
|
|
157
|
+
path: ["files", index, "id"],
|
|
158
|
+
message: `Duplicate source file id: ${file.id}.`,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
ids.add(file.id);
|
|
162
|
+
if (paths.has(file.path)) {
|
|
163
|
+
ctx.addIssue({
|
|
164
|
+
code: z.ZodIssueCode.custom,
|
|
165
|
+
path: ["files", index, "path"],
|
|
166
|
+
message: `Duplicate source file path: ${file.path}.`,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
paths.add(file.path);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
export const SourceManifestAuditSchema = z.object({
|
|
173
|
+
kind: z.literal("interf-source-manifest-audit"),
|
|
174
|
+
version: z.literal(1),
|
|
175
|
+
run_id: z.string().min(1).nullable(),
|
|
176
|
+
manifest_id: z.string().min(1),
|
|
177
|
+
generated_at: z.string().min(1),
|
|
178
|
+
auditor: SourceManifestScannerSchema,
|
|
179
|
+
verdict: z.enum(["pass", "fail", "needs-review"]),
|
|
180
|
+
findings: z.array(z.string().min(1)).default([]),
|
|
181
|
+
}).strict();
|
|
95
182
|
export const StageInputSchema = z.object({
|
|
96
183
|
source_file_id: z.string().min(1),
|
|
97
184
|
path: z.string().min(1),
|
|
98
185
|
locator: z.string().min(1),
|
|
186
|
+
kind: SourceManifestFileKindSchema.default("other").optional(),
|
|
187
|
+
size_bytes: z.number().int().nonnegative().optional(),
|
|
188
|
+
page_count: z.number().int().min(1).optional(),
|
|
189
|
+
inspectable_units: z.array(SourceInspectableUnitSchema).default([]).optional(),
|
|
190
|
+
content_hash: z.string().min(1).optional(),
|
|
99
191
|
}).strict();
|
|
100
192
|
export const StageInputsSchema = z.object({
|
|
101
193
|
kind: z.literal("interf-stage-inputs"),
|
|
102
|
-
version: z.literal(
|
|
194
|
+
version: z.literal(3),
|
|
103
195
|
generated_at: z.string().min(1),
|
|
104
196
|
run_id: z.string().min(1).nullable(),
|
|
105
197
|
build_plan: BuildPlanIdSchema,
|
|
106
198
|
stage: RuntimeStageSchema,
|
|
107
|
-
|
|
199
|
+
source_state_id: z.string().min(1),
|
|
200
|
+
source_manifest_id: z.string().min(1),
|
|
108
201
|
input_total: z.number().int().min(0),
|
|
109
202
|
inputs: z.array(StageInputSchema),
|
|
110
|
-
}).strict()
|
|
203
|
+
}).strict().superRefine((value, ctx) => {
|
|
204
|
+
if (value.input_total !== value.inputs.length) {
|
|
205
|
+
ctx.addIssue({
|
|
206
|
+
code: z.ZodIssueCode.custom,
|
|
207
|
+
path: ["input_total"],
|
|
208
|
+
message: "input_total must equal inputs.length.",
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
});
|
|
111
212
|
export const SourceBuildMaxAttemptsSchema = z.number().int().min(1).max(5);
|
|
112
213
|
export const SourceBuildMaxLoopsSchema = z.number().int().min(1).max(3);
|
|
113
214
|
// ───────────────────────────────────────────────────────────────────────────
|
|
114
|
-
// Check /
|
|
215
|
+
// Check / Evidence / Ready — the locked verification vocabulary
|
|
115
216
|
//
|
|
116
217
|
// Three words doing three precise jobs:
|
|
117
218
|
// - Check: the rule that must pass (with a `kind` and optional params)
|
|
118
|
-
// -
|
|
219
|
+
// - Evidence: records that a check ran (pass/fail + summary + details)
|
|
119
220
|
// - Ready: aggregate verdict (`ready` or `not_ready`)
|
|
120
221
|
//
|
|
121
222
|
// A check has a SCOPE (where it's declared), not a different name:
|
|
122
223
|
// - stage check — Build Plan-declared per stage; runs end-of-stage
|
|
123
|
-
// -
|
|
124
|
-
// -
|
|
224
|
+
// - Artifact diagnostic — Build Plan-declared per artifact; runs end-of-build
|
|
225
|
+
// - benchmark check — Project-declared Q&A / fact check; runs on `interf benchmark`
|
|
125
226
|
//
|
|
126
227
|
// Same `Check` primitive across all three scopes. Same `CheckKind`
|
|
127
228
|
// canonical list - Build Plans, users, and engine code pick from it.
|
|
@@ -130,31 +231,127 @@ export const SourceBuildMaxLoopsSchema = z.number().int().min(1).max(3);
|
|
|
130
231
|
* Canonical check kinds the engine knows how to evaluate.
|
|
131
232
|
*
|
|
132
233
|
* Adding a new kind requires an engine release (the evaluator must
|
|
133
|
-
* implement it).
|
|
234
|
+
* implement it). Plans and user checks pick from this list; they
|
|
134
235
|
* cannot invent custom kinds.
|
|
135
236
|
*
|
|
136
237
|
* file_exists — file is present and non-empty
|
|
238
|
+
* source_manifest_valid — source-manifest.json exists, parses, and has at least one file
|
|
137
239
|
* min_file_count — directory has ≥ N files (params: { min: number })
|
|
138
240
|
* min_file_count_matches_source — directory has ≥ source_total files (the "all files analyzed" check)
|
|
241
|
+
* source_summary_folders — summaries directory has ≥ source_total source folders, each with summary.md or manifest.md
|
|
242
|
+
* source_page_coverage — page summary outputs exist for every manifest page unit
|
|
139
243
|
* frontmatter_valid — every markdown file has parseable YAML frontmatter
|
|
140
244
|
* frontmatter_required_keys — every markdown file has these frontmatter keys (params: { keys: string[] })
|
|
245
|
+
* frontmatter_nonempty_keys — every markdown file has non-empty values for these frontmatter keys
|
|
246
|
+
* source_refs_required — every markdown file has non-empty source_refs/source_ref/source_path frontmatter
|
|
141
247
|
* 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: {
|
|
248
|
+
* must_not_contain — file/directory does not contain forbidden phrases (params: { phrases: string[] } or { text: string })
|
|
249
|
+
* must_contain — file/directory contains required phrases (params: { phrases: string[] } or { text: string })
|
|
250
|
+
* qa_match — user-defined Q/A: agent answer matches expected (params: { expected: string, strictness?: "loose" | "strict" })
|
|
145
251
|
*/
|
|
146
252
|
export const CHECK_KINDS = [
|
|
147
253
|
"file_exists",
|
|
254
|
+
"source_manifest_valid",
|
|
148
255
|
"min_file_count",
|
|
149
256
|
"min_file_count_matches_source",
|
|
257
|
+
"source_summary_folders",
|
|
258
|
+
"source_page_coverage",
|
|
150
259
|
"frontmatter_valid",
|
|
151
260
|
"frontmatter_required_keys",
|
|
261
|
+
"frontmatter_nonempty_keys",
|
|
262
|
+
"source_refs_required",
|
|
152
263
|
"wikilinks_valid",
|
|
153
264
|
"must_not_contain",
|
|
154
265
|
"must_contain",
|
|
155
266
|
"qa_match",
|
|
156
267
|
];
|
|
157
268
|
export const CheckKindSchema = z.enum(CHECK_KINDS);
|
|
269
|
+
export const CHECK_PARAM_CONTRACTS = {
|
|
270
|
+
file_exists: {
|
|
271
|
+
params: {},
|
|
272
|
+
examples: [{}],
|
|
273
|
+
},
|
|
274
|
+
source_manifest_valid: {
|
|
275
|
+
params: {
|
|
276
|
+
path: "optional manifest path; defaults to .interf/runtime/source-manifest.json",
|
|
277
|
+
},
|
|
278
|
+
examples: [{}],
|
|
279
|
+
},
|
|
280
|
+
min_file_count: {
|
|
281
|
+
params: {
|
|
282
|
+
min: "optional number; defaults to 1",
|
|
283
|
+
},
|
|
284
|
+
examples: [{ min: 26 }],
|
|
285
|
+
},
|
|
286
|
+
min_file_count_matches_source: {
|
|
287
|
+
params: {
|
|
288
|
+
match: "optional count key string; defaults to source_total",
|
|
289
|
+
},
|
|
290
|
+
examples: [{ match: "source_total" }],
|
|
291
|
+
},
|
|
292
|
+
source_summary_folders: {
|
|
293
|
+
params: {
|
|
294
|
+
match: "optional count key string; defaults to source_total",
|
|
295
|
+
summary_file: "optional filename string; defaults to summary.md",
|
|
296
|
+
manifest_file: "optional filename string; defaults to manifest.md",
|
|
297
|
+
},
|
|
298
|
+
examples: [{ match: "source_total" }],
|
|
299
|
+
},
|
|
300
|
+
source_page_coverage: {
|
|
301
|
+
params: {
|
|
302
|
+
pages_dir: "optional directory name inside each source summary folder; defaults to pages",
|
|
303
|
+
summary_file: "optional filename string; defaults to summary.md",
|
|
304
|
+
},
|
|
305
|
+
examples: [{ pages_dir: "pages" }],
|
|
306
|
+
},
|
|
307
|
+
frontmatter_valid: {
|
|
308
|
+
params: {},
|
|
309
|
+
examples: [{}],
|
|
310
|
+
},
|
|
311
|
+
frontmatter_required_keys: {
|
|
312
|
+
params: {
|
|
313
|
+
keys: "required string[]",
|
|
314
|
+
},
|
|
315
|
+
examples: [{ keys: ["page", "title", "summary"] }],
|
|
316
|
+
},
|
|
317
|
+
frontmatter_nonempty_keys: {
|
|
318
|
+
params: {
|
|
319
|
+
keys: "required string[]",
|
|
320
|
+
},
|
|
321
|
+
examples: [{ keys: ["source_refs", "verification_state"] }],
|
|
322
|
+
},
|
|
323
|
+
source_refs_required: {
|
|
324
|
+
params: {
|
|
325
|
+
keys: "optional string[]; defaults to source_refs, source_ref, source_path",
|
|
326
|
+
},
|
|
327
|
+
examples: [{ keys: ["source_refs"] }],
|
|
328
|
+
},
|
|
329
|
+
wikilinks_valid: {
|
|
330
|
+
params: {},
|
|
331
|
+
examples: [{}],
|
|
332
|
+
},
|
|
333
|
+
must_not_contain: {
|
|
334
|
+
params: {
|
|
335
|
+
phrases: "preferred string[] of forbidden phrases",
|
|
336
|
+
text: "optional string shorthand for one forbidden phrase",
|
|
337
|
+
},
|
|
338
|
+
examples: [{ phrases: ["TODO", "Not yet built."] }, { text: "TODO" }],
|
|
339
|
+
},
|
|
340
|
+
must_contain: {
|
|
341
|
+
params: {
|
|
342
|
+
phrases: "preferred string[] of required phrases",
|
|
343
|
+
text: "optional string shorthand for one required phrase",
|
|
344
|
+
},
|
|
345
|
+
examples: [{ phrases: ["Bristol", "Central London"] }, { text: "Bristol" }],
|
|
346
|
+
},
|
|
347
|
+
qa_match: {
|
|
348
|
+
params: {
|
|
349
|
+
expected: "required expected answer string",
|
|
350
|
+
strictness: "optional string; loose or strict; defaults to loose",
|
|
351
|
+
},
|
|
352
|
+
examples: [{ expected: "Acme Corp", strictness: "loose" }],
|
|
353
|
+
},
|
|
354
|
+
};
|
|
158
355
|
/**
|
|
159
356
|
* One check declaration. Reusable across stage/artifact/user scopes.
|
|
160
357
|
*
|
|
@@ -164,7 +361,7 @@ export const CheckKindSchema = z.enum(CHECK_KINDS);
|
|
|
164
361
|
* rule-specific config (typed at the engine evaluator).
|
|
165
362
|
*
|
|
166
363
|
* `required: true` (default) → a failed check fails the parent
|
|
167
|
-
* (stage/artifact/
|
|
364
|
+
* (stage/artifact/Project). `required: false` → soft check, fails
|
|
168
365
|
* warn but don't block the `ready` verdict.
|
|
169
366
|
*/
|
|
170
367
|
export const CheckSchema = z.object({
|
|
@@ -179,7 +376,7 @@ export const CheckSchema = z.object({
|
|
|
179
376
|
* short one-line label for the UI; `details` carries rule-specific
|
|
180
377
|
* structured data (e.g., file count, missing keys, broken link list).
|
|
181
378
|
*/
|
|
182
|
-
export const
|
|
379
|
+
export const CheckResultSchema = z.object({
|
|
183
380
|
check_id: z.string().regex(InterfIdPattern),
|
|
184
381
|
kind: CheckKindSchema,
|
|
185
382
|
passed: z.boolean(),
|
|
@@ -188,9 +385,36 @@ export const ProofSchema = z.object({
|
|
|
188
385
|
details: z.record(z.string(), z.unknown()).optional(),
|
|
189
386
|
evaluated_at: z.string().min(1),
|
|
190
387
|
}).strict();
|
|
388
|
+
export const ContextCheckStatusSchema = z.enum([
|
|
389
|
+
"pending",
|
|
390
|
+
"running",
|
|
391
|
+
"passed",
|
|
392
|
+
"failed",
|
|
393
|
+
"skipped",
|
|
394
|
+
]);
|
|
395
|
+
/**
|
|
396
|
+
* User-facing Build Plan check: the plain-English assertion the user
|
|
397
|
+
* reviews as a Context Check. Requested Artifacts back these checks.
|
|
398
|
+
* Deterministic Artifact diagnostics remain nested under Artifacts
|
|
399
|
+
* and use `CheckSchema`.
|
|
400
|
+
*/
|
|
401
|
+
export const ContextCheckDeclarationSchema = z.object({
|
|
402
|
+
id: z.string().regex(InterfIdPattern),
|
|
403
|
+
label: z.string().min(1),
|
|
404
|
+
description: z.string().min(1).optional(),
|
|
405
|
+
backed_by_artifact_ids: z.array(ArtifactIdSchema).default([]),
|
|
406
|
+
required: z.boolean().default(true),
|
|
407
|
+
evidence_expectation: z.string().min(1).optional(),
|
|
408
|
+
}).strict();
|
|
409
|
+
export const ContextCheckProjectionSchema = ContextCheckDeclarationSchema.extend({
|
|
410
|
+
status: ContextCheckStatusSchema.optional(),
|
|
411
|
+
evidence: z.string().min(1).optional(),
|
|
412
|
+
issue: z.string().min(1).optional(),
|
|
413
|
+
}).strict();
|
|
414
|
+
export const ContextCheckSchema = ContextCheckProjectionSchema;
|
|
191
415
|
/**
|
|
192
416
|
* Per-thing readiness verdict. Used for an artifact, a stage, or a
|
|
193
|
-
*
|
|
417
|
+
* Project. Aggregate verdict over its required checks.
|
|
194
418
|
*/
|
|
195
419
|
export const ReadyVerdictSchema = z.enum(["ready", "not_ready", "failed", "skipped"]);
|
|
196
420
|
/**
|
|
@@ -201,6 +425,9 @@ export const ReadyVerdictSchema = z.enum(["ready", "not_ready", "failed", "skipp
|
|
|
201
425
|
*/
|
|
202
426
|
export const STANDARD_EVIDENCE_FRONTMATTER_KEYS = [
|
|
203
427
|
"source",
|
|
428
|
+
"source_file_id",
|
|
429
|
+
"source_path",
|
|
430
|
+
"source_locator",
|
|
204
431
|
"source_kind",
|
|
205
432
|
"evidence_tier",
|
|
206
433
|
"truth_mode",
|
|
@@ -210,33 +437,31 @@ export const STANDARD_EVIDENCE_FRONTMATTER_KEYS = [
|
|
|
210
437
|
// Artifact — a produced thing the user can see and verify
|
|
211
438
|
//
|
|
212
439
|
// Every output of a Build Plan is an Artifact. No internal/working/output
|
|
213
|
-
// distinction — if it's named, it's an Artifact. The
|
|
440
|
+
// distinction — if it's named, it's an Artifact. The runtime reserves
|
|
214
441
|
// `.interf/runtime/` as its own namespace by convention; those paths
|
|
215
442
|
// are not artifacts.
|
|
216
443
|
// ───────────────────────────────────────────────────────────────────────────
|
|
217
444
|
/**
|
|
218
|
-
* Where an Artifact materializes.
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
* as a
|
|
445
|
+
* Where an Artifact materializes. `path` is always relative to the
|
|
446
|
+
* Context Graph root, and `artifact_kind` tells consumers whether the
|
|
447
|
+
* target materializes as a file or directory. The `kind: "path"`
|
|
448
|
+
* discriminator is retained on the wire so a future shape variant can be
|
|
449
|
+
* added as a discriminated union without renaming existing data.
|
|
223
450
|
*/
|
|
224
451
|
export const ArtifactPathShapeSchema = z.object({
|
|
225
452
|
kind: z.literal("path"),
|
|
226
453
|
path: z.string().min(1).refine(isInterfRelativePath, {
|
|
227
|
-
message: "Artifact paths must stay inside the
|
|
454
|
+
message: "Artifact paths must stay inside the Context Graph root (no `..`, no absolute paths).",
|
|
228
455
|
}),
|
|
229
456
|
artifact_kind: z.enum(["file", "directory"]),
|
|
230
457
|
}).strict();
|
|
231
|
-
export const ArtifactShapeSchema =
|
|
232
|
-
ArtifactPathShapeSchema,
|
|
233
|
-
]);
|
|
458
|
+
export const ArtifactShapeSchema = ArtifactPathShapeSchema;
|
|
234
459
|
/**
|
|
235
460
|
* Build Plan-declared Artifact — a produced thing.
|
|
236
461
|
*
|
|
237
462
|
* `checks[]` is the locked vocabulary: an array of `Check` (with
|
|
238
463
|
* `kind` from `CHECK_KINDS`). The runtime evaluates them via the
|
|
239
|
-
* shared check evaluator and produces `
|
|
464
|
+
* shared check evaluator and produces `CheckResult[]` on each Build.
|
|
240
465
|
*/
|
|
241
466
|
export const ArtifactSchema = z.object({
|
|
242
467
|
id: ArtifactIdSchema,
|
|
@@ -246,8 +471,8 @@ export const ArtifactSchema = z.object({
|
|
|
246
471
|
built_by_stages: z.array(z.string().regex(InterfIdPattern)).default([]),
|
|
247
472
|
}).strict();
|
|
248
473
|
/**
|
|
249
|
-
* Per-Artifact runtime status. Lives on Build
|
|
250
|
-
*
|
|
474
|
+
* Per-Artifact runtime status. Lives on Build resources and on
|
|
475
|
+
* Project resources. `check_results[]` carries the structured evidence
|
|
251
476
|
* emitted by the shared check evaluator.
|
|
252
477
|
*/
|
|
253
478
|
export const ArtifactStatusValueSchema = ReadyVerdictSchema;
|
|
@@ -255,14 +480,121 @@ export const ArtifactStatusSchema = z.object({
|
|
|
255
480
|
artifact_id: ArtifactIdSchema,
|
|
256
481
|
status: ReadyVerdictSchema,
|
|
257
482
|
built_by_stages: z.array(z.string().regex(InterfIdPattern)).default([]),
|
|
258
|
-
|
|
483
|
+
check_results: z.array(CheckResultSchema).default([]),
|
|
484
|
+
summary: z.string().min(1).optional(),
|
|
485
|
+
}).strict();
|
|
486
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
487
|
+
// Build evidence — user-visible readiness rows
|
|
488
|
+
//
|
|
489
|
+
// Check rows are the app-facing review primitive for a Build. They
|
|
490
|
+
// deliberately keep the surface small:
|
|
491
|
+
// assertion label + metric + evidence link/ref + optional issue state
|
|
492
|
+
//
|
|
493
|
+
// Denominators are engine-owned (Source inventory or declared Build Plan
|
|
494
|
+
// expectations). Observed values come from Build runs: stage records,
|
|
495
|
+
// accepted Outputs, validators, and traces. Benchmarks remain separate.
|
|
496
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
497
|
+
export const BuildEvidenceIssueStateSchema = z.enum([
|
|
498
|
+
"pass",
|
|
499
|
+
"missing",
|
|
500
|
+
"review",
|
|
501
|
+
"fail",
|
|
502
|
+
]);
|
|
503
|
+
export const BuildEvidenceMetricSchema = z.object({
|
|
504
|
+
observed: z.number().int().min(0),
|
|
505
|
+
total: z.number().int().min(0).optional(),
|
|
506
|
+
unit: z.string().min(1).optional(),
|
|
507
|
+
}).strict();
|
|
508
|
+
export const BuildEvidenceRefSchema = z.object({
|
|
509
|
+
kind: z.enum([
|
|
510
|
+
"source-inventory",
|
|
511
|
+
"stage-record",
|
|
512
|
+
"output",
|
|
513
|
+
"validator",
|
|
514
|
+
"trace",
|
|
515
|
+
"stage-evidence",
|
|
516
|
+
]),
|
|
517
|
+
label: z.string().min(1),
|
|
518
|
+
ref: z.string().min(1).optional(),
|
|
519
|
+
path: z.string().min(1).optional(),
|
|
520
|
+
run_id: z.string().min(1).optional(),
|
|
521
|
+
stage_id: z.string().regex(InterfIdPattern).optional(),
|
|
522
|
+
artifact_id: ArtifactIdSchema.optional(),
|
|
523
|
+
}).strict();
|
|
524
|
+
export const BuildCheckRowSchema = z.object({
|
|
525
|
+
id: z.string().regex(InterfIdPattern),
|
|
526
|
+
assertion: z.string().min(1),
|
|
527
|
+
metric: BuildEvidenceMetricSchema,
|
|
528
|
+
evidence: BuildEvidenceRefSchema,
|
|
529
|
+
issue_state: BuildEvidenceIssueStateSchema.optional(),
|
|
530
|
+
issue: z.string().min(1).optional(),
|
|
531
|
+
}).strict();
|
|
532
|
+
export const BuildEvidenceResourceSchema = z.object({
|
|
533
|
+
kind: z.literal("interf-build-evidence"),
|
|
534
|
+
version: z.literal(1),
|
|
535
|
+
generated_at: z.string().min(1),
|
|
536
|
+
project_id: z.string().min(1),
|
|
537
|
+
build_run_id: z.string().min(1).nullable(),
|
|
538
|
+
ready: z.boolean(),
|
|
539
|
+
summary: z.string().min(1),
|
|
540
|
+
rows: z.array(BuildCheckRowSchema).default([]),
|
|
541
|
+
}).strict();
|
|
542
|
+
export const EvidenceCountKeySchema = z.string().regex(/^[a-z][a-z0-9_.:-]*$/);
|
|
543
|
+
export const StageEvidenceSourceRefSchema = z.object({
|
|
544
|
+
path: z.string().min(1),
|
|
545
|
+
source_file_id: z.string().min(1).optional(),
|
|
546
|
+
locator: z.string().min(1).optional(),
|
|
547
|
+
}).strict();
|
|
548
|
+
export const StageEvidenceOutputRefSchema = z.object({
|
|
549
|
+
artifact_id: ArtifactIdSchema,
|
|
550
|
+
path: z.string().min(1).refine(isInterfRelativePath, {
|
|
551
|
+
message: "Output refs must stay inside the Context Graph root.",
|
|
552
|
+
}),
|
|
553
|
+
}).strict();
|
|
554
|
+
export const StageEvidenceCountSchema = z.object({
|
|
555
|
+
key: EvidenceCountKeySchema,
|
|
556
|
+
label: z.string().min(1),
|
|
557
|
+
value: z.number().int().min(0),
|
|
558
|
+
total: z.number().int().min(0).optional(),
|
|
559
|
+
unit: z.string().min(1).optional(),
|
|
560
|
+
source: z.enum(["engine", "stage"]),
|
|
561
|
+
stage_id: z.string().regex(InterfIdPattern).optional(),
|
|
562
|
+
artifact_id: ArtifactIdSchema.optional(),
|
|
563
|
+
primary: z.boolean().optional(),
|
|
564
|
+
expected: z.boolean().optional(),
|
|
565
|
+
}).strict();
|
|
566
|
+
export const StageEvidenceItemSchema = z.object({
|
|
567
|
+
id: z.string().regex(InterfIdPattern),
|
|
568
|
+
kind: EvidenceCountKeySchema,
|
|
569
|
+
label: z.string().min(1),
|
|
259
570
|
summary: z.string().min(1).optional(),
|
|
571
|
+
source_refs: z.array(StageEvidenceSourceRefSchema).default([]),
|
|
572
|
+
output_refs: z.array(StageEvidenceOutputRefSchema).default([]),
|
|
573
|
+
stage_id: z.string().regex(InterfIdPattern),
|
|
574
|
+
artifact_id: ArtifactIdSchema.optional(),
|
|
575
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
576
|
+
}).strict();
|
|
577
|
+
export const StageEvidenceEdgeSchema = z.object({
|
|
578
|
+
from: z.string().regex(InterfIdPattern),
|
|
579
|
+
to: z.string().regex(InterfIdPattern),
|
|
580
|
+
relation: EvidenceCountKeySchema,
|
|
581
|
+
stage_id: z.string().regex(InterfIdPattern),
|
|
582
|
+
}).strict();
|
|
583
|
+
export const StageEvidenceSchema = z.object({
|
|
584
|
+
kind: z.literal("interf-stage-evidence"),
|
|
585
|
+
version: z.literal(1),
|
|
586
|
+
run_id: z.string().min(1),
|
|
587
|
+
stage: z.string().regex(InterfIdPattern),
|
|
588
|
+
counts: z.array(StageEvidenceCountSchema).default([]),
|
|
589
|
+
items: z.array(StageEvidenceItemSchema).default([]),
|
|
590
|
+
edges: z.array(StageEvidenceEdgeSchema).default([]),
|
|
591
|
+
warnings: z.array(z.string().min(1)).optional(),
|
|
260
592
|
}).strict();
|
|
261
593
|
// ───────────────────────────────────────────────────────────────────────────
|
|
262
|
-
// Readiness —
|
|
594
|
+
// Readiness — project-level aggregate verdict
|
|
263
595
|
//
|
|
264
|
-
// Rolls up
|
|
265
|
-
// (is the
|
|
596
|
+
// Rolls up Artifact diagnostics, benchmark results, and engine-level gates
|
|
597
|
+
// (is the project configured, has a Build, etc.) into a single
|
|
266
598
|
// `ready` / `not_ready` answer for the ICP.
|
|
267
599
|
// ───────────────────────────────────────────────────────────────────────────
|
|
268
600
|
export const ReadinessStatusSchema = z.enum([
|
|
@@ -277,18 +609,19 @@ export const ReadinessStatusSchema = z.enum([
|
|
|
277
609
|
"failed",
|
|
278
610
|
]);
|
|
279
611
|
export const ReadinessGateSchema = z.enum([
|
|
280
|
-
"
|
|
281
|
-
"
|
|
612
|
+
"project-config",
|
|
613
|
+
"context-graph",
|
|
282
614
|
"build-run",
|
|
283
|
-
"artifact-
|
|
284
|
-
"
|
|
285
|
-
"
|
|
615
|
+
"artifact-diagnostics",
|
|
616
|
+
"context-checks",
|
|
617
|
+
"benchmarks",
|
|
618
|
+
"benchmarks-current",
|
|
286
619
|
]);
|
|
287
620
|
/**
|
|
288
621
|
* 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
|
-
*
|
|
622
|
+
* high-level layer (is config valid? is the Context Graph built? did
|
|
623
|
+
* the latest Build succeed?). Gate failures are aggregated alongside
|
|
624
|
+
* Artifact diagnostic failures into the overall `Readiness` verdict.
|
|
292
625
|
*/
|
|
293
626
|
export const GateStatusSchema = z.object({
|
|
294
627
|
gate: ReadinessGateSchema,
|
|
@@ -309,40 +642,28 @@ export const VerifyTargetResultSchema = z.object({
|
|
|
309
642
|
run_path: z.string().min(1).nullable().optional(),
|
|
310
643
|
}).strict();
|
|
311
644
|
/**
|
|
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`.
|
|
645
|
+
* Project-level readiness verdict.
|
|
317
646
|
*/
|
|
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({
|
|
647
|
+
export const ReadinessSchema = z.object({
|
|
327
648
|
kind: z.literal("interf-readiness-state"),
|
|
328
649
|
version: z.literal(1),
|
|
329
650
|
generated_at: z.string().min(1),
|
|
330
|
-
|
|
651
|
+
project: z.string().min(1),
|
|
331
652
|
status: ReadinessStatusSchema,
|
|
332
653
|
ready: z.boolean(),
|
|
333
654
|
summary: z.string().min(1),
|
|
334
|
-
|
|
655
|
+
context_graph_path: z.string().min(1).nullable(),
|
|
335
656
|
latest_build_run_id: z.string().min(1).nullable().optional(),
|
|
336
|
-
|
|
657
|
+
latest_benchmark_run_id: z.string().min(1).nullable().optional(),
|
|
337
658
|
build: GateStatusSchema.nullable(),
|
|
338
659
|
check_results: z.object({
|
|
339
660
|
configured: z.number().int().min(0),
|
|
340
661
|
fingerprint: z.string().min(1).nullable(),
|
|
341
662
|
source_files: VerifyTargetResultSchema.nullable(),
|
|
342
|
-
|
|
663
|
+
context_graph: VerifyTargetResultSchema.nullable(),
|
|
343
664
|
}).strict(),
|
|
344
665
|
checks: z.array(GateStatusSchema).default([]),
|
|
345
|
-
}).strict()
|
|
666
|
+
}).strict();
|
|
346
667
|
// ───────────────────────────────────────────────────────────────────────────
|
|
347
668
|
// User-defined verification (Q/A pairs) — the "user check" scope
|
|
348
669
|
// ───────────────────────────────────────────────────────────────────────────
|
|
@@ -377,7 +698,7 @@ export const RuntimeExecutorInfoSchema = z.object({
|
|
|
377
698
|
timeout_ms: z.number().nullable().optional(),
|
|
378
699
|
});
|
|
379
700
|
// ───────────────────────────────────────────────────────────────────────────
|
|
380
|
-
//
|
|
701
|
+
// Execution agents + roles
|
|
381
702
|
// ───────────────────────────────────────────────────────────────────────────
|
|
382
703
|
/**
|
|
383
704
|
* The 5 canonical roles a Build Plan stage can declare. Build Plans MAY declare
|
|
@@ -391,7 +712,7 @@ export const CANONICAL_ROLES = [
|
|
|
391
712
|
"general",
|
|
392
713
|
];
|
|
393
714
|
/**
|
|
394
|
-
* Open-ended role identifier.
|
|
715
|
+
* Open-ended role identifier. Plans invent role names freely; the
|
|
395
716
|
* role-router maps unknown names to `general` at run time.
|
|
396
717
|
*/
|
|
397
718
|
export const RoleSchema = z.string().min(1);
|
|
@@ -399,16 +720,30 @@ export const RoleSchema = z.string().min(1);
|
|
|
399
720
|
* One agent in the registry. `available` is a runtime-only flag — true
|
|
400
721
|
* if the command's first token resolves on PATH. Stripped before
|
|
401
722
|
* persistence.
|
|
723
|
+
*
|
|
724
|
+
* `prefs` carries the merged-at-runtime per-agent preferences (env vars,
|
|
725
|
+
* model, effort). It is filled in at load time by looking up the
|
|
726
|
+
* registry's `agent_prefs` map by name. The persisted shape never carries
|
|
727
|
+
* `prefs` — it lives in `agent_prefs` on disk so built-in agents (which
|
|
728
|
+
* are detected, not persisted) can also receive preferences.
|
|
402
729
|
*/
|
|
730
|
+
export const AgentPrefsSchema = z.object({
|
|
731
|
+
env_vars: z.record(z.string().min(1), z.string()).optional(),
|
|
732
|
+
model: z.string().min(1).nullable().optional(),
|
|
733
|
+
effort: z.string().min(1).nullable().optional(),
|
|
734
|
+
}).strict();
|
|
403
735
|
export const AgentRecordSchema = z.object({
|
|
404
736
|
name: z.string().min(1),
|
|
405
737
|
display_name: z.string().min(1),
|
|
406
738
|
command: z.string().min(1),
|
|
407
739
|
source: z.enum(["builtin", "user"]),
|
|
408
740
|
available: z.boolean().optional(),
|
|
741
|
+
prefs: AgentPrefsSchema.optional(),
|
|
409
742
|
}).strict();
|
|
410
743
|
export const RoleMapSchema = z.record(RoleSchema, z.string().min(1));
|
|
744
|
+
export const AgentPrefsMapSchema = z.record(z.string().min(1), AgentPrefsSchema);
|
|
411
745
|
export const AgentsRegistrySchema = z.object({
|
|
412
746
|
agents: z.array(AgentRecordSchema).default([]),
|
|
413
747
|
role_map: RoleMapSchema.default({}),
|
|
748
|
+
agent_prefs: AgentPrefsMapSchema.default({}),
|
|
414
749
|
}).strict();
|