@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
|
@@ -73,6 +73,66 @@ function parseYamlScalar(value) {
|
|
|
73
73
|
}
|
|
74
74
|
return trimmed;
|
|
75
75
|
}
|
|
76
|
+
function yamlBlockHeader(value) {
|
|
77
|
+
const trimmed = value.trim();
|
|
78
|
+
if (!/^[>|](?:[+-]?\d*|\d*[+-]?)$/.test(trimmed))
|
|
79
|
+
return null;
|
|
80
|
+
return trimmed.startsWith(">") ? "folded" : "literal";
|
|
81
|
+
}
|
|
82
|
+
function leadingWhitespaceLength(value) {
|
|
83
|
+
const match = value.match(/^\s*/);
|
|
84
|
+
return match?.[0].length ?? 0;
|
|
85
|
+
}
|
|
86
|
+
function foldYamlBlock(lines) {
|
|
87
|
+
const paragraphs = [];
|
|
88
|
+
let current = [];
|
|
89
|
+
for (const line of lines) {
|
|
90
|
+
const trimmed = line.trim();
|
|
91
|
+
if (trimmed.length === 0) {
|
|
92
|
+
if (current.length > 0) {
|
|
93
|
+
paragraphs.push(current.join(" "));
|
|
94
|
+
current = [];
|
|
95
|
+
}
|
|
96
|
+
if (paragraphs[paragraphs.length - 1] !== "") {
|
|
97
|
+
paragraphs.push("");
|
|
98
|
+
}
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
current.push(trimmed);
|
|
102
|
+
}
|
|
103
|
+
if (current.length > 0) {
|
|
104
|
+
paragraphs.push(current.join(" "));
|
|
105
|
+
}
|
|
106
|
+
return paragraphs.join("\n").trimEnd();
|
|
107
|
+
}
|
|
108
|
+
function parseYamlBlockScalar(lines, startIndex, style) {
|
|
109
|
+
const blockLines = [];
|
|
110
|
+
let blockIndent = null;
|
|
111
|
+
let cursor = startIndex + 1;
|
|
112
|
+
while (cursor < lines.length) {
|
|
113
|
+
const nextLine = lines[cursor] ?? "";
|
|
114
|
+
const nextTrimmed = nextLine.trim();
|
|
115
|
+
if (nextTrimmed.length === 0) {
|
|
116
|
+
if (blockIndent !== null)
|
|
117
|
+
blockLines.push("");
|
|
118
|
+
cursor += 1;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const indent = leadingWhitespaceLength(nextLine);
|
|
122
|
+
if (indent === 0)
|
|
123
|
+
break;
|
|
124
|
+
if (blockIndent === null)
|
|
125
|
+
blockIndent = indent;
|
|
126
|
+
if (indent < blockIndent)
|
|
127
|
+
break;
|
|
128
|
+
blockLines.push(nextLine.slice(blockIndent));
|
|
129
|
+
cursor += 1;
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
value: style === "folded" ? foldYamlBlock(blockLines) : blockLines.join("\n").trimEnd(),
|
|
133
|
+
nextIndex: cursor,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
76
136
|
function parseYamlFrontmatter(frontmatterText) {
|
|
77
137
|
const lines = frontmatterText.split("\n");
|
|
78
138
|
const frontmatter = {};
|
|
@@ -88,6 +148,13 @@ function parseYamlFrontmatter(frontmatterText) {
|
|
|
88
148
|
if (!key)
|
|
89
149
|
return null;
|
|
90
150
|
if (inlineValue && inlineValue.trim().length > 0) {
|
|
151
|
+
const blockStyle = yamlBlockHeader(inlineValue);
|
|
152
|
+
if (blockStyle) {
|
|
153
|
+
const parsedBlock = parseYamlBlockScalar(lines, index, blockStyle);
|
|
154
|
+
frontmatter[key] = parsedBlock.value;
|
|
155
|
+
index = parsedBlock.nextIndex - 1;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
91
158
|
frontmatter[key] = parseYamlScalar(inlineValue);
|
|
92
159
|
continue;
|
|
93
160
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * as schema from "./lib/schema.js";
|
|
2
|
+
export * as sourceConfig from "./source-config.js";
|
|
3
|
+
export * as sourceFolders from "./source-folders.js";
|
|
4
|
+
export * as interf from "./interf.js";
|
|
5
|
+
export * as detect from "./interf-detect.js";
|
|
6
|
+
export type { InterfConfig, BuildPlanId, ProjectId, SourceFolderBinding, ProjectConfig, BenchmarkCheck, SourceContext, SourceFolderConfig, } from "./lib/schema.js";
|
|
@@ -3,6 +3,3 @@ export * as sourceConfig from "./source-config.js";
|
|
|
3
3
|
export * as sourceFolders from "./source-folders.js";
|
|
4
4
|
export * as interf from "./interf.js";
|
|
5
5
|
export * as detect from "./interf-detect.js";
|
|
6
|
-
export * as bootstrap from "./interf-bootstrap.js";
|
|
7
|
-
export * as scaffold from "./interf-scaffold.js";
|
|
8
|
-
export * as preparationEntries from "./preparation-entries.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type InterfConfig } from "./lib/schema.js";
|
|
2
2
|
export type { InterfConfig } from "./lib/schema.js";
|
|
3
|
-
export interface
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export interface ResolvedContextGraph {
|
|
4
|
+
projectDataDir: string;
|
|
5
|
+
contextGraphPath: string;
|
|
6
6
|
config: InterfConfig;
|
|
7
7
|
}
|
|
8
8
|
export declare const INTERF_CONTAINER_NAME = "interf";
|
|
@@ -16,23 +16,23 @@ export declare function hasSourceFolderInput(config: InterfConfig | null | undef
|
|
|
16
16
|
path: string;
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
-
export declare function
|
|
19
|
+
export declare function hasSourceProjectInput(config: InterfConfig | null | undefined): config is InterfConfig & {
|
|
20
20
|
source: {
|
|
21
|
-
|
|
21
|
+
project_path: string;
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
24
|
export declare function detectInterf(cwd: string): {
|
|
25
25
|
path: string;
|
|
26
26
|
config: InterfConfig;
|
|
27
27
|
} | null;
|
|
28
|
-
export declare function
|
|
29
|
-
export declare function resolveSourceFolderPath(
|
|
30
|
-
export declare function resolveSourceControlPath(
|
|
31
|
-
export declare function resolveSourceInputPath(
|
|
32
|
-
export declare function
|
|
28
|
+
export declare function resolveContextGraph(cwd: string): ResolvedContextGraph | null;
|
|
29
|
+
export declare function resolveSourceFolderPath(contextGraphPath: string, config?: InterfConfig | null): string;
|
|
30
|
+
export declare function resolveSourceControlPath(contextGraphPath: string): string;
|
|
31
|
+
export declare function resolveSourceInputPath(contextGraphPath: string): string;
|
|
32
|
+
export declare function listContextGraphsForSourceFolder(projectDataDir: string): Array<{
|
|
33
33
|
path: string;
|
|
34
34
|
config: InterfConfig;
|
|
35
35
|
}>;
|
|
36
|
-
export declare function
|
|
36
|
+
export declare function assertContextGraphContainer(projectDataDir: string): string;
|
|
37
37
|
export declare function assertWritableTargetDir(dirPath: string, label: string): void;
|
|
38
|
-
export declare function
|
|
38
|
+
export declare function assertContextGraphName(name: string, label: string): void;
|
|
@@ -2,8 +2,8 @@ import { existsSync, readdirSync, statSync, } from "node:fs";
|
|
|
2
2
|
import { join, resolve } from "node:path";
|
|
3
3
|
import { warnInterf } from "../contracts/utils/logger.js";
|
|
4
4
|
import { readJsonFileUnchecked } from "../contracts/utils/parse.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { asProjectDataDir, projectContextGraphPath, } from "../contracts/lib/project-paths.js";
|
|
6
|
+
import { resolveSourceControlPathForContextGraph, contextGraphInterfConfigPath, } from "../runtime/build/context-graph-paths.js";
|
|
7
7
|
import { InterfConfigSchema, } from "./lib/schema.js";
|
|
8
8
|
import { assertPathWithinRoot } from "../contracts/utils/path-guards.js";
|
|
9
9
|
export const INTERF_CONTAINER_NAME = "interf";
|
|
@@ -12,7 +12,7 @@ export const TEST_CONTAINER_NAME = "tests";
|
|
|
12
12
|
export const INTERF_CONFIG_FILE = "interf.json";
|
|
13
13
|
export const BUILD_PLAN_PACKAGE_DIR = "build-plan";
|
|
14
14
|
export function readInterfConfig(dirPath) {
|
|
15
|
-
const configPath =
|
|
15
|
+
const configPath = contextGraphInterfConfigPath(dirPath);
|
|
16
16
|
if (!existsSync(configPath))
|
|
17
17
|
return null;
|
|
18
18
|
const raw = readJsonFileUnchecked(configPath, "Interf config");
|
|
@@ -20,7 +20,7 @@ export function readInterfConfig(dirPath) {
|
|
|
20
20
|
return null;
|
|
21
21
|
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
22
22
|
return null;
|
|
23
|
-
if (raw.type !== "
|
|
23
|
+
if (raw.type !== "context-graph") {
|
|
24
24
|
return null;
|
|
25
25
|
}
|
|
26
26
|
const parsed = InterfConfigSchema.safeParse(raw);
|
|
@@ -33,8 +33,8 @@ export function readInterfConfig(dirPath) {
|
|
|
33
33
|
export function hasSourceFolderInput(config) {
|
|
34
34
|
return typeof config?.source?.path === "string" && config.source.path.length > 0;
|
|
35
35
|
}
|
|
36
|
-
export function
|
|
37
|
-
return typeof config?.source?.
|
|
36
|
+
export function hasSourceProjectInput(config) {
|
|
37
|
+
return typeof config?.source?.project_path === "string" && config.source.project_path.length > 0;
|
|
38
38
|
}
|
|
39
39
|
export function detectInterf(cwd) {
|
|
40
40
|
const config = readInterfConfig(cwd);
|
|
@@ -42,70 +42,76 @@ export function detectInterf(cwd) {
|
|
|
42
42
|
return { path: cwd, config };
|
|
43
43
|
return null;
|
|
44
44
|
}
|
|
45
|
-
export function
|
|
45
|
+
export function resolveContextGraph(cwd) {
|
|
46
46
|
const detected = detectInterf(cwd);
|
|
47
47
|
if (!detected)
|
|
48
48
|
return null;
|
|
49
49
|
return {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
projectDataDir: resolveSourceControlPath(detected.path),
|
|
51
|
+
contextGraphPath: detected.path,
|
|
52
52
|
config: detected.config,
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
export function resolveSourceFolderPath(
|
|
56
|
-
const resolvedConfig = config ?? readInterfConfig(
|
|
57
|
-
if (
|
|
58
|
-
return resolve(
|
|
55
|
+
export function resolveSourceFolderPath(contextGraphPath, config = null) {
|
|
56
|
+
const resolvedConfig = config ?? readInterfConfig(contextGraphPath);
|
|
57
|
+
if (hasSourceProjectInput(resolvedConfig)) {
|
|
58
|
+
return resolve(contextGraphPath, resolvedConfig.source.project_path);
|
|
59
59
|
}
|
|
60
60
|
if (hasSourceFolderInput(resolvedConfig)) {
|
|
61
|
-
return assertPathWithinRoot(
|
|
61
|
+
return assertPathWithinRoot(contextGraphPath, resolve(contextGraphPath, resolvedConfig.source.path), "Context Graph source path");
|
|
62
62
|
}
|
|
63
|
-
throw new Error(`
|
|
63
|
+
throw new Error(`Context Graph at ${contextGraphPath} is missing source.project_path or source.path in ${contextGraphInterfConfigPath(contextGraphPath)}.`);
|
|
64
64
|
}
|
|
65
|
-
export function resolveSourceControlPath(
|
|
66
|
-
return
|
|
65
|
+
export function resolveSourceControlPath(contextGraphPath) {
|
|
66
|
+
return resolveSourceControlPathForContextGraph(contextGraphPath);
|
|
67
67
|
}
|
|
68
|
-
export function resolveSourceInputPath(
|
|
69
|
-
const config = readInterfConfig(
|
|
70
|
-
if (
|
|
71
|
-
return resolve(
|
|
68
|
+
export function resolveSourceInputPath(contextGraphPath) {
|
|
69
|
+
const config = readInterfConfig(contextGraphPath);
|
|
70
|
+
if (hasSourceProjectInput(config)) {
|
|
71
|
+
return resolve(contextGraphPath, config.source.project_path);
|
|
72
72
|
}
|
|
73
|
-
throw new Error(`
|
|
73
|
+
throw new Error(`Context Graph is missing source.project_path in ${contextGraphInterfConfigPath(contextGraphPath)}.`);
|
|
74
74
|
}
|
|
75
|
-
export function
|
|
76
|
-
if (!existsSync(
|
|
75
|
+
export function listContextGraphsForSourceFolder(projectDataDir) {
|
|
76
|
+
if (!existsSync(projectDataDir))
|
|
77
77
|
return [];
|
|
78
78
|
try {
|
|
79
|
-
if (!statSync(
|
|
79
|
+
if (!statSync(projectDataDir).isDirectory())
|
|
80
80
|
return [];
|
|
81
81
|
}
|
|
82
82
|
catch (error) {
|
|
83
|
-
warnInterf(`Warning: failed to inspect Interf
|
|
83
|
+
warnInterf(`Warning: failed to inspect Interf Project data folder at ${projectDataDir}: ${error instanceof Error ? error.message : String(error)}`);
|
|
84
84
|
return [];
|
|
85
85
|
}
|
|
86
|
-
return readdirSync(
|
|
86
|
+
return readdirSync(projectDataDir)
|
|
87
87
|
.filter((entry) => !entry.startsWith(".") &&
|
|
88
88
|
entry !== BUILD_PLAN_CONTAINER_NAME &&
|
|
89
89
|
entry !== TEST_CONTAINER_NAME &&
|
|
90
90
|
entry !== INTERF_CONFIG_FILE)
|
|
91
|
-
.map((entry) =>
|
|
92
|
-
.filter((
|
|
93
|
-
.map((
|
|
94
|
-
const config = readInterfConfig(
|
|
95
|
-
return config ? { path:
|
|
91
|
+
.map((entry) => projectContextGraphPath(asProjectDataDir(projectDataDir), entry))
|
|
92
|
+
.filter((contextGraphPath) => existsSync(contextGraphPath))
|
|
93
|
+
.map((contextGraphPath) => {
|
|
94
|
+
const config = readInterfConfig(contextGraphPath);
|
|
95
|
+
return config ? { path: contextGraphPath, config } : null;
|
|
96
96
|
})
|
|
97
97
|
.filter((value) => value !== null);
|
|
98
98
|
}
|
|
99
|
-
export function
|
|
100
|
-
if (existsSync(
|
|
101
|
-
const stat = statSync(
|
|
99
|
+
export function assertContextGraphContainer(projectDataDir) {
|
|
100
|
+
if (existsSync(projectDataDir)) {
|
|
101
|
+
const stat = statSync(projectDataDir);
|
|
102
102
|
if (!stat.isDirectory()) {
|
|
103
|
-
throw new Error(`Interf
|
|
103
|
+
throw new Error(`Interf Project data folder exists and is not a directory: ${projectDataDir}`);
|
|
104
104
|
}
|
|
105
|
-
const unexpectedRootEntries = readdirSync(
|
|
105
|
+
const unexpectedRootEntries = readdirSync(projectDataDir).filter((entry) => {
|
|
106
106
|
if (entry.startsWith("."))
|
|
107
107
|
return false;
|
|
108
|
-
|
|
108
|
+
// Tolerate interf.json migration backups (e.g.
|
|
109
|
+
// interf.json.pre-ownership-refactor-<ts>.bak) that older migrations
|
|
110
|
+
// left in the Project root — they are benign and must not block Builds.
|
|
111
|
+
if (entry !== INTERF_CONFIG_FILE && entry.startsWith(`${INTERF_CONFIG_FILE}.`)) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
const entryPath = join(projectDataDir, entry);
|
|
109
115
|
if (entry === INTERF_CONFIG_FILE) {
|
|
110
116
|
try {
|
|
111
117
|
return !statSync(entryPath).isFile();
|
|
@@ -121,7 +127,7 @@ export function assertVerifiableContextContainer(prepDataDir) {
|
|
|
121
127
|
return !statSync(entryPath).isDirectory();
|
|
122
128
|
}
|
|
123
129
|
catch (error) {
|
|
124
|
-
warnInterf(`Warning: failed to inspect Interf
|
|
130
|
+
warnInterf(`Warning: failed to inspect Interf Project data path at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
125
131
|
return true;
|
|
126
132
|
}
|
|
127
133
|
}
|
|
@@ -134,21 +140,21 @@ export function assertVerifiableContextContainer(prepDataDir) {
|
|
|
134
140
|
}
|
|
135
141
|
});
|
|
136
142
|
if (unexpectedRootEntries.length > 0) {
|
|
137
|
-
throw new Error(`Interf
|
|
143
|
+
throw new Error(`Interf Project data folder contains unexpected entries: ${projectDataDir}`);
|
|
138
144
|
}
|
|
139
145
|
}
|
|
140
|
-
if (!existsSync(
|
|
141
|
-
return
|
|
146
|
+
if (!existsSync(projectDataDir)) {
|
|
147
|
+
return projectDataDir;
|
|
142
148
|
}
|
|
143
|
-
const stat = statSync(
|
|
149
|
+
const stat = statSync(projectDataDir);
|
|
144
150
|
if (!stat.isDirectory()) {
|
|
145
|
-
throw new Error(`Interf
|
|
151
|
+
throw new Error(`Interf Project data folder exists and is not a directory: ${projectDataDir}`);
|
|
146
152
|
}
|
|
147
|
-
const unexpectedEntries = readdirSync(
|
|
153
|
+
const unexpectedEntries = readdirSync(projectDataDir).filter((entry) => {
|
|
148
154
|
if (entry.startsWith("."))
|
|
149
155
|
return false;
|
|
150
156
|
if (entry === INTERF_CONFIG_FILE) {
|
|
151
|
-
const entryPath = join(
|
|
157
|
+
const entryPath = join(projectDataDir, entry);
|
|
152
158
|
try {
|
|
153
159
|
return !statSync(entryPath).isFile();
|
|
154
160
|
}
|
|
@@ -160,7 +166,7 @@ export function assertVerifiableContextContainer(prepDataDir) {
|
|
|
160
166
|
if (entry === BUILD_PLAN_CONTAINER_NAME ||
|
|
161
167
|
entry === TEST_CONTAINER_NAME)
|
|
162
168
|
return false;
|
|
163
|
-
const entryPath = join(
|
|
169
|
+
const entryPath = join(projectDataDir, entry);
|
|
164
170
|
try {
|
|
165
171
|
if (!statSync(entryPath).isDirectory())
|
|
166
172
|
return true;
|
|
@@ -172,9 +178,9 @@ export function assertVerifiableContextContainer(prepDataDir) {
|
|
|
172
178
|
return false;
|
|
173
179
|
});
|
|
174
180
|
if (unexpectedEntries.length > 0) {
|
|
175
|
-
throw new Error(`Interf
|
|
181
|
+
throw new Error(`Interf Project data folder contains invalid Project entries: ${projectDataDir}`);
|
|
176
182
|
}
|
|
177
|
-
return
|
|
183
|
+
return projectDataDir;
|
|
178
184
|
}
|
|
179
185
|
export function assertWritableTargetDir(dirPath, label) {
|
|
180
186
|
if (!existsSync(dirPath))
|
|
@@ -187,7 +193,7 @@ export function assertWritableTargetDir(dirPath, label) {
|
|
|
187
193
|
throw new Error(`${label} target already exists and is not empty: ${dirPath}`);
|
|
188
194
|
}
|
|
189
195
|
}
|
|
190
|
-
export function
|
|
196
|
+
export function assertContextGraphName(name, label) {
|
|
191
197
|
if (!/^[a-z0-9][a-z0-9-]*$/.test(name)) {
|
|
192
198
|
throw new Error(`${label} name must be a safe slug with lowercase letters, numbers, and dashes only: ${name}`);
|
|
193
199
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { INTERF_CONTAINER_NAME, BUILD_PLAN_CONTAINER_NAME, TEST_CONTAINER_NAME, INTERF_CONFIG_FILE, BUILD_PLAN_PACKAGE_DIR, readInterfConfig, detectInterf, resolveContextGraph, resolveSourceFolderPath, resolveSourceControlPath, resolveSourceInputPath, listContextGraphsForSourceFolder, hasSourceFolderInput, assertContextGraphContainer, assertWritableTargetDir, assertContextGraphName, } from "./interf-detect.js";
|
|
2
|
+
export type { InterfConfig, ResolvedContextGraph } from "./interf-detect.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { INTERF_CONTAINER_NAME, BUILD_PLAN_CONTAINER_NAME, TEST_CONTAINER_NAME, INTERF_CONFIG_FILE, BUILD_PLAN_PACKAGE_DIR, readInterfConfig, detectInterf, resolveContextGraph, resolveSourceFolderPath, resolveSourceControlPath, resolveSourceInputPath, listContextGraphsForSourceFolder, hasSourceFolderInput, assertContextGraphContainer, assertWritableTargetDir, assertContextGraphName, } from "./interf-detect.js";
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { BuildPlanIdSchema, ProjectIdSchema } from "../../contracts/lib/schema.js";
|
|
3
|
+
import { RequestedArtifactCheckSchema, RequestedArtifactOutputSchema, RequestedArtifactSchema, SourceContextSchema } from "../../build-plans/authoring/brief.js";
|
|
4
|
+
export { BuildPlanIdSchema, ProjectIdSchema, } from "../../contracts/lib/schema.js";
|
|
5
|
+
export declare const BenchmarkCheckSchema: z.ZodObject<{
|
|
6
|
+
id: z.ZodOptional<z.ZodString>;
|
|
7
|
+
question: z.ZodString;
|
|
8
|
+
answer: z.ZodOptional<z.ZodString>;
|
|
9
|
+
expect: z.ZodOptional<z.ZodObject<{
|
|
10
|
+
must_include: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
11
|
+
must_include_one_of: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodString>>>;
|
|
12
|
+
must_not_include: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13
|
+
min_words: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
max_words: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
}, z.core.$strip>>;
|
|
16
|
+
strictness: z.ZodOptional<z.ZodString>;
|
|
17
|
+
}, z.core.$strict>;
|
|
18
|
+
export { RequestedArtifactCheckSchema, RequestedArtifactOutputSchema, RequestedArtifactSchema, SourceContextItemSchema, SourceContextSchema, } from "../../build-plans/authoring/brief.js";
|
|
19
|
+
export declare const ProjectConfigSchema: z.ZodObject<{
|
|
20
|
+
id: z.ZodOptional<z.ZodString>;
|
|
21
|
+
name: z.ZodString;
|
|
22
|
+
path: z.ZodString;
|
|
23
|
+
build_plan: z.ZodOptional<z.ZodString>;
|
|
24
|
+
latest_context_graph_run_id: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, z.core.$strict>;
|
|
26
|
+
export declare const SourceFolderBindingSchema: z.ZodObject<{
|
|
27
|
+
path: z.ZodString;
|
|
28
|
+
}, z.core.$loose>;
|
|
29
|
+
export declare const ContextGraphInterfConfigSchema: z.ZodObject<{
|
|
30
|
+
type: z.ZodLiteral<"context-graph">;
|
|
31
|
+
name: z.ZodString;
|
|
32
|
+
build_plan: z.ZodString;
|
|
33
|
+
build_plan_origin: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
selected: z.ZodString;
|
|
35
|
+
local_draft: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
}, z.core.$strip>>;
|
|
37
|
+
source: z.ZodObject<{
|
|
38
|
+
path: z.ZodString;
|
|
39
|
+
control_path: z.ZodOptional<z.ZodString>;
|
|
40
|
+
project_path: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
export declare const InterfConfigSchema: z.ZodObject<{
|
|
44
|
+
type: z.ZodLiteral<"context-graph">;
|
|
45
|
+
name: z.ZodString;
|
|
46
|
+
build_plan: z.ZodString;
|
|
47
|
+
build_plan_origin: z.ZodOptional<z.ZodObject<{
|
|
48
|
+
selected: z.ZodString;
|
|
49
|
+
local_draft: z.ZodOptional<z.ZodBoolean>;
|
|
50
|
+
}, z.core.$strip>>;
|
|
51
|
+
source: z.ZodObject<{
|
|
52
|
+
path: z.ZodString;
|
|
53
|
+
control_path: z.ZodOptional<z.ZodString>;
|
|
54
|
+
project_path: z.ZodOptional<z.ZodString>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
export declare const SourceFolderConfigSchema: z.ZodObject<{
|
|
58
|
+
source_folder: z.ZodOptional<z.ZodObject<{
|
|
59
|
+
path: z.ZodString;
|
|
60
|
+
}, z.core.$loose>>;
|
|
61
|
+
projects: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
62
|
+
id: z.ZodOptional<z.ZodString>;
|
|
63
|
+
name: z.ZodString;
|
|
64
|
+
path: z.ZodString;
|
|
65
|
+
build_plan: z.ZodOptional<z.ZodString>;
|
|
66
|
+
latest_context_graph_run_id: z.ZodOptional<z.ZodString>;
|
|
67
|
+
}, z.core.$strict>>>;
|
|
68
|
+
}, z.core.$strict>;
|
|
69
|
+
export type SourceFolderBinding = z.infer<typeof SourceFolderBindingSchema>;
|
|
70
|
+
export type RequestedArtifactCheck = z.infer<typeof RequestedArtifactCheckSchema>;
|
|
71
|
+
export type RequestedArtifact = z.infer<typeof RequestedArtifactSchema>;
|
|
72
|
+
export type RequestedArtifactOutput = z.infer<typeof RequestedArtifactOutputSchema>;
|
|
73
|
+
export type BenchmarkCheck = z.infer<typeof BenchmarkCheckSchema>;
|
|
74
|
+
export type SourceContext = z.infer<typeof SourceContextSchema>;
|
|
75
|
+
export type ProjectId = z.infer<typeof ProjectIdSchema>;
|
|
76
|
+
export type BuildPlanId = z.infer<typeof BuildPlanIdSchema>;
|
|
77
|
+
export type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
|
|
78
|
+
export type InterfConfig = z.infer<typeof InterfConfigSchema>;
|
|
79
|
+
export type SourceFolderConfig = z.infer<typeof SourceFolderConfigSchema>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { InterfIdPattern, BuildPlanIdSchema, ProjectIdSchema, TestCaseExpectSchema, } from "../../contracts/lib/schema.js";
|
|
3
|
+
export { BuildPlanIdSchema, ProjectIdSchema, } from "../../contracts/lib/schema.js";
|
|
4
|
+
/**
|
|
5
|
+
* Absolute paths that an attacker-controlled config must never reach. The
|
|
6
|
+
* build runtime treats `project.path` as a filesystem instruction — letting
|
|
7
|
+
* a browser-tab forge `/etc` or `/sys` could mutate or read system state.
|
|
8
|
+
* The list mirrors the CSO review allowlist.
|
|
9
|
+
*/
|
|
10
|
+
const FORBIDDEN_ABSOLUTE_PATH_PREFIXES = [
|
|
11
|
+
"/etc",
|
|
12
|
+
"/sys",
|
|
13
|
+
"/proc",
|
|
14
|
+
"/dev",
|
|
15
|
+
"/var/run",
|
|
16
|
+
"/var/lib",
|
|
17
|
+
"/usr",
|
|
18
|
+
"/bin",
|
|
19
|
+
"/sbin",
|
|
20
|
+
"/boot",
|
|
21
|
+
];
|
|
22
|
+
function normalizePathForValidation(value) {
|
|
23
|
+
const normalized = value.replace(/\\/g, "/").replace(/\/+/g, "/");
|
|
24
|
+
if (normalized.length > 1)
|
|
25
|
+
return normalized.replace(/\/$/, "");
|
|
26
|
+
return normalized;
|
|
27
|
+
}
|
|
28
|
+
function isForbiddenAbsolutePath(value) {
|
|
29
|
+
const normalized = normalizePathForValidation(value);
|
|
30
|
+
for (const prefix of FORBIDDEN_ABSOLUTE_PATH_PREFIXES) {
|
|
31
|
+
if (normalized === prefix || normalized.startsWith(`${prefix}/`))
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
export const BenchmarkCheckSchema = z.object({
|
|
37
|
+
id: z.string().regex(InterfIdPattern).optional(),
|
|
38
|
+
question: z.string().min(1),
|
|
39
|
+
answer: z.string().min(1).optional(),
|
|
40
|
+
expect: TestCaseExpectSchema.optional(),
|
|
41
|
+
strictness: z.string().min(1).optional(),
|
|
42
|
+
}).strict().superRefine((value, ctx) => {
|
|
43
|
+
if (!value.answer && !value.expect) {
|
|
44
|
+
ctx.addIssue({
|
|
45
|
+
code: z.ZodIssueCode.custom,
|
|
46
|
+
path: ["answer"],
|
|
47
|
+
message: "Benchmark checks need `answer` or `expect`.",
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
export { RequestedArtifactCheckSchema, RequestedArtifactOutputSchema, RequestedArtifactSchema, SourceContextItemSchema, SourceContextSchema, } from "../../build-plans/authoring/brief.js";
|
|
52
|
+
export const ProjectConfigSchema = z.object({
|
|
53
|
+
id: z.string().regex(InterfIdPattern).optional(),
|
|
54
|
+
name: ProjectIdSchema,
|
|
55
|
+
path: z
|
|
56
|
+
.string()
|
|
57
|
+
.min(1)
|
|
58
|
+
.refine((value) => !isForbiddenAbsolutePath(value), {
|
|
59
|
+
message: "Project Source path may not target system directories (/etc, /sys, /proc, /dev, /usr, /bin, /sbin, /boot, /var/run, /var/lib).",
|
|
60
|
+
})
|
|
61
|
+
.refine((value) => !value.split(/[/\\]/).some((segment) => segment === ".."), {
|
|
62
|
+
message: "Project Source path may not contain `..` segments.",
|
|
63
|
+
}),
|
|
64
|
+
build_plan: BuildPlanIdSchema.optional(),
|
|
65
|
+
latest_context_graph_run_id: z.string().min(1).optional(),
|
|
66
|
+
}).strict();
|
|
67
|
+
export const SourceFolderBindingSchema = z.object({
|
|
68
|
+
path: z.string().min(1),
|
|
69
|
+
}).passthrough();
|
|
70
|
+
export const ContextGraphInterfConfigSchema = z.object({
|
|
71
|
+
type: z.literal("context-graph"),
|
|
72
|
+
name: ProjectIdSchema,
|
|
73
|
+
build_plan: BuildPlanIdSchema,
|
|
74
|
+
build_plan_origin: z.object({
|
|
75
|
+
selected: BuildPlanIdSchema,
|
|
76
|
+
local_draft: z.boolean().optional(),
|
|
77
|
+
}).optional(),
|
|
78
|
+
source: z.object({
|
|
79
|
+
path: z.string(),
|
|
80
|
+
control_path: z.string().optional(),
|
|
81
|
+
project_path: z.string().optional(),
|
|
82
|
+
}),
|
|
83
|
+
});
|
|
84
|
+
export const InterfConfigSchema = ContextGraphInterfConfigSchema;
|
|
85
|
+
export const SourceFolderConfigSchema = z.object({
|
|
86
|
+
source_folder: SourceFolderBindingSchema.optional(),
|
|
87
|
+
/** Project entries inside `interf.json`. */
|
|
88
|
+
projects: z.array(ProjectConfigSchema).default([]),
|
|
89
|
+
}).strict();
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type InterfConfig, type SourceFolderBinding, type BenchmarkCheck, type ProjectConfig, type SourceFolderConfig } from "./lib/schema.js";
|
|
2
|
+
import type { TestSpec, TestTargetType } from "../runtime/verify/lib/schema.js";
|
|
3
|
+
export declare const SOURCE_FOLDER_CONFIG_PATH = "interf.json";
|
|
4
|
+
interface LoadedSourceTestSpec extends TestSpec {
|
|
5
|
+
id: string;
|
|
6
|
+
filePath: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function sourceFolderConfigPath(projectDataDir: string): string;
|
|
9
|
+
export declare function fingerprintBenchmarkChecks(checks: BenchmarkCheck[]): string;
|
|
10
|
+
export declare function loadSourceFolderConfig(projectDataDir: string): SourceFolderConfig | null;
|
|
11
|
+
export interface WritableSourceFolderConfig {
|
|
12
|
+
source_folder?: SourceFolderBinding;
|
|
13
|
+
projects?: ProjectConfig[];
|
|
14
|
+
}
|
|
15
|
+
export { DEFAULT_BUILD_PLAN_ID, buildPlanIdForProjectConfig } from "../build-plans/build-plan-resolution.js";
|
|
16
|
+
export declare function listProjectConfigs(config: SourceFolderConfig | null): ProjectConfig[];
|
|
17
|
+
export declare function resolveBuildMaxAttempts(override?: number | null): number | null;
|
|
18
|
+
export declare function resolveBuildMaxLoops(override?: number | null): number | null;
|
|
19
|
+
export declare function getDefaultProjectConfig(config: SourceFolderConfig | null): ProjectConfig | null;
|
|
20
|
+
export declare function findProjectConfig(config: SourceFolderConfig | null, projectId: string): ProjectConfig | null;
|
|
21
|
+
export declare function configuredSourceFolderPath(config: SourceFolderConfig | WritableSourceFolderConfig | null | undefined): string | null;
|
|
22
|
+
export declare function resolveConfiguredSourceFolderPath(projectDataDir: string, config?: SourceFolderConfig | WritableSourceFolderConfig | null | undefined): string | null;
|
|
23
|
+
export declare function saveSourceFolderConfig(projectDataDir: string, config: WritableSourceFolderConfig): void;
|
|
24
|
+
export declare function upsertProjectConfig(projectDataDir: string, projectConfig: ProjectConfig, options?: {
|
|
25
|
+
matchName?: string;
|
|
26
|
+
}): void;
|
|
27
|
+
export declare function markProjectLatestContextGraphRun(projectDataDir: string, projectName: string, runId: string): ProjectConfig;
|
|
28
|
+
export declare function removeProjectConfig(projectDataDir: string, projectId: string): boolean;
|
|
29
|
+
export declare function projectConfigFromInterfConfig(config: InterfConfig, projectPath?: string): ProjectConfig;
|
|
30
|
+
export declare function loadContextGraphProjectConfig(contextGraphPath: string): ProjectConfig | null;
|
|
31
|
+
export declare function saveContextGraphInterfConfig(contextGraphPath: string, config: InterfConfig): InterfConfig;
|
|
32
|
+
export declare function syncContextGraphInterfConfigFromProjectConfig(contextGraphPath: string, projectConfig: ProjectConfig): InterfConfig;
|
|
33
|
+
export declare function buildTestSpecFromSourceFolderConfig(options: {
|
|
34
|
+
projectDataDir: string;
|
|
35
|
+
targetName?: string | null;
|
|
36
|
+
targetType?: TestTargetType;
|
|
37
|
+
}): LoadedSourceTestSpec | null;
|
|
38
|
+
export declare function buildTestSpecFromProjectConfig(options: {
|
|
39
|
+
contextGraphPath: string;
|
|
40
|
+
targetType?: TestTargetType;
|
|
41
|
+
}): LoadedSourceTestSpec | null;
|
|
42
|
+
export declare function writeBenchmarkSpecsForProject(options: {
|
|
43
|
+
projectDataDir: string;
|
|
44
|
+
projectName: string;
|
|
45
|
+
checks: BenchmarkCheck[];
|
|
46
|
+
description?: string;
|
|
47
|
+
}): {
|
|
48
|
+
source_files?: string;
|
|
49
|
+
context_graph?: string;
|
|
50
|
+
};
|
|
51
|
+
export declare function fingerprintTestSpec(spec: Pick<TestSpec, "cases">): string;
|
|
52
|
+
export declare function fingerprintSavedBenchmarkSpec(options: {
|
|
53
|
+
projectDataDir: string;
|
|
54
|
+
projectName: string;
|
|
55
|
+
targetType?: TestTargetType;
|
|
56
|
+
}): string | null;
|
|
57
|
+
export declare function resolveProjectSourcePath(projectDataDir: string, projectConfig: Pick<ProjectConfig, "path">): string;
|
|
58
|
+
export declare function resolveProjectSourceBindingPath(projectDataDir: string, projectConfig: Pick<ProjectConfig, "path">, config?: SourceFolderConfig | WritableSourceFolderConfig | null | undefined): string;
|