@interf/compiler 0.22.0 → 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 +268 -0
- 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 +40 -30
- 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/_qJKnA0dammQ306MG_zMq/_buildManifest.js +0 -11
- package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_clientMiddlewareManifest.js +0 -1
- package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_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
|
@@ -5,10 +5,11 @@ import { listFilesRecursive } from "../../contracts/utils/filesystem.js";
|
|
|
5
5
|
import { warnInterf } from "../../contracts/utils/logger.js";
|
|
6
6
|
import { readJsonFileUnchecked, readJsonFileWithSchema } from "../../contracts/utils/parse.js";
|
|
7
7
|
import { isMarkdownFile } from "../../contracts/utils/file-types.js";
|
|
8
|
-
import {
|
|
8
|
+
import { BuildPlanRuntimeApiSchema, BuildPlanPurposeSchema, BuildPlanStageArtifactReadAccessSchema, BuildPlanStageArtifactWriteAccessSchema, } from "../../runtime/build/lib/schema.js";
|
|
9
9
|
import { RuntimeContractTypeSchema, InterfIdPattern, } from "../../contracts/lib/schema.js";
|
|
10
|
-
import {
|
|
10
|
+
import { asProjectDataDir, projectBuildPlansRoot, } from "../../contracts/lib/project-paths.js";
|
|
11
11
|
import { CONTEXT_INTERFACE_FILE, ContextInterfaceSchema, contextInterfaceExists, contextInterfaceFilePath, listContextInterfaceArtifacts, readContextInterface, BuildPlanInputSpecSchema, writeContextInterface, } from "./context-interface.js";
|
|
12
|
+
import { BuildPlanAuthoringBriefSchema, } from "../authoring/brief.js";
|
|
12
13
|
import { PACKAGE_ROOT } from "./lib/package-root.js";
|
|
13
14
|
const LocalBuildPlanStageDefinitionSchema = z.object({
|
|
14
15
|
id: z.string().regex(InterfIdPattern),
|
|
@@ -23,8 +24,9 @@ const LocalBuildPlanStageDefinitionSchema = z.object({
|
|
|
23
24
|
const LocalBuildPlanDefinitionSchema = z.object({
|
|
24
25
|
id: z.string().regex(InterfIdPattern),
|
|
25
26
|
type: z.literal("build-plan"),
|
|
26
|
-
|
|
27
|
+
runtime_api: BuildPlanRuntimeApiSchema.optional(),
|
|
27
28
|
purpose: BuildPlanPurposeSchema.optional(),
|
|
29
|
+
brief: BuildPlanAuthoringBriefSchema.optional(),
|
|
28
30
|
inputs: z.array(BuildPlanInputSpecSchema).min(1).optional(),
|
|
29
31
|
label: z.string().min(1),
|
|
30
32
|
hint: z.string().min(1),
|
|
@@ -62,14 +64,14 @@ export function mergeStagePolicyNotesForStages(stages, baseNotes, overrideNotes)
|
|
|
62
64
|
}
|
|
63
65
|
return Object.keys(merged).length > 0 ? merged : undefined;
|
|
64
66
|
}
|
|
65
|
-
function buildPlanRootPath(
|
|
66
|
-
return
|
|
67
|
+
function buildPlanRootPath(projectDataDir) {
|
|
68
|
+
return projectBuildPlansRoot(asProjectDataDir(projectDataDir));
|
|
67
69
|
}
|
|
68
70
|
export function builtinBuildPlanPackagePath(buildPlanId) {
|
|
69
71
|
return join(PACKAGE_ROOT, "public-repo", "build-plans", buildPlanId);
|
|
70
72
|
}
|
|
71
|
-
export function buildPlanDefinitionPath(
|
|
72
|
-
return join(buildPlanRootPath(
|
|
73
|
+
export function buildPlanDefinitionPath(projectDataDir, id) {
|
|
74
|
+
return join(buildPlanRootPath(projectDataDir), id);
|
|
73
75
|
}
|
|
74
76
|
function isSupportedBuildPlanStarterDocPath(relativePath) {
|
|
75
77
|
if (relativePath === "README.md")
|
|
@@ -139,7 +141,7 @@ export function loadBuildPlanDefinitionFromDir(dirPath) {
|
|
|
139
141
|
buildPlanSchemaPath: contextInterfaceFilePath(dirPath),
|
|
140
142
|
};
|
|
141
143
|
}
|
|
142
|
-
|
|
144
|
+
function isNeutralScaffoldBuildPlanDefinition(definition) {
|
|
143
145
|
const hasScaffoldPurpose = definition.purpose?.label === "From-scratch Build Plan draft" ||
|
|
144
146
|
Boolean(definition.purpose?.task_hint?.includes("Replace this neutral scaffold"));
|
|
145
147
|
const hasScaffoldStage = Boolean(definition.stages?.some((stage) => stage.id === "prepare" &&
|
|
@@ -149,9 +151,9 @@ export function isNeutralScaffoldBuildPlanDefinition(definition) {
|
|
|
149
151
|
artifact.description.includes("neutral authoring scaffold"));
|
|
150
152
|
return hasScaffoldPurpose || hasScaffoldStage || hasScaffoldArtifact;
|
|
151
153
|
}
|
|
152
|
-
export function listLocalBuildPlanDefinitions(
|
|
154
|
+
export function listLocalBuildPlanDefinitions(projectDataDir) {
|
|
153
155
|
const definitions = new Map();
|
|
154
|
-
const root = buildPlanRootPath(
|
|
156
|
+
const root = buildPlanRootPath(projectDataDir);
|
|
155
157
|
if (existsSync(root)) {
|
|
156
158
|
for (const entryPath of readdirSync(root).map((entry) => join(root, entry))) {
|
|
157
159
|
try {
|
|
@@ -169,14 +171,14 @@ export function listLocalBuildPlanDefinitions(prepDataDir) {
|
|
|
169
171
|
}
|
|
170
172
|
return [...definitions.values()].sort((a, b) => a.label.localeCompare(b.label));
|
|
171
173
|
}
|
|
172
|
-
export function loadLocalBuildPlanDefinition(
|
|
173
|
-
const definition = loadBuildPlanDefinitionFromDir(buildPlanDefinitionPath(
|
|
174
|
+
export function loadLocalBuildPlanDefinition(projectDataDir, id) {
|
|
175
|
+
const definition = loadBuildPlanDefinitionFromDir(buildPlanDefinitionPath(projectDataDir, id));
|
|
174
176
|
if (!definition || isNeutralScaffoldBuildPlanDefinition(definition))
|
|
175
177
|
return null;
|
|
176
178
|
return definition;
|
|
177
179
|
}
|
|
178
|
-
export function resolveBuildPlanPackageSourcePath(
|
|
179
|
-
const localPath = buildPlanDefinitionPath(
|
|
180
|
+
export function resolveBuildPlanPackageSourcePath(projectDataDir, buildPlanId) {
|
|
181
|
+
const localPath = buildPlanDefinitionPath(projectDataDir, buildPlanId);
|
|
180
182
|
const local = loadBuildPlanDefinitionFromDir(localPath);
|
|
181
183
|
if (local && !isNeutralScaffoldBuildPlanDefinition(local))
|
|
182
184
|
return localPath;
|
|
@@ -187,7 +189,7 @@ export function resolveBuildPlanPackageSourcePath(prepDataDir, buildPlanId) {
|
|
|
187
189
|
}
|
|
188
190
|
export function seedLocalDefaultBuildPlan(options) {
|
|
189
191
|
const buildPlanId = "interf-default";
|
|
190
|
-
const targetPath = buildPlanDefinitionPath(options.
|
|
192
|
+
const targetPath = buildPlanDefinitionPath(options.projectDataDir, buildPlanId);
|
|
191
193
|
if (existsSync(join(targetPath, "build-plan.json"))) {
|
|
192
194
|
return { buildPlanId, targetPath, alreadyExisted: true };
|
|
193
195
|
}
|
|
@@ -199,7 +201,7 @@ export function seedLocalDefaultBuildPlan(options) {
|
|
|
199
201
|
patchBuildPlanPackageMetadata(targetPath, {
|
|
200
202
|
id: buildPlanId,
|
|
201
203
|
label: "Built-in Interf Build Plan",
|
|
202
|
-
hint: "Built-in file-processing Build Plan: summarize source-grounded evidence, structure cross-file connections, and shape
|
|
204
|
+
hint: "Built-in file-processing Build Plan: summarize source-grounded evidence, structure cross-file connections, and shape the Context Graph around the saved Checks.",
|
|
203
205
|
});
|
|
204
206
|
return { buildPlanId, targetPath, alreadyExisted: false };
|
|
205
207
|
}
|
|
@@ -226,7 +228,7 @@ export function patchBuildPlanPackageMetadata(dirPath, options) {
|
|
|
226
228
|
const nextBuildPlanJson = {
|
|
227
229
|
...buildPlanJson,
|
|
228
230
|
type: "build-plan",
|
|
229
|
-
|
|
231
|
+
runtime_api: buildPlanJson.runtime_api ?? {
|
|
230
232
|
kind: "build",
|
|
231
233
|
version: 1,
|
|
232
234
|
},
|
|
@@ -377,11 +379,12 @@ export function validateBuildPlanPackage(dirPath) {
|
|
|
377
379
|
if (buildPlanSchema) {
|
|
378
380
|
const stages = def.stages ?? [];
|
|
379
381
|
const stageIds = new Set(stages.map((stage) => stage.id));
|
|
380
|
-
const
|
|
382
|
+
const seenArtifactsByPath = new Map();
|
|
381
383
|
const seenArtifactIds = new Set();
|
|
382
384
|
const schemaArtifacts = listContextInterfaceArtifacts(buildPlanSchema);
|
|
383
385
|
const artifactById = new Map(schemaArtifacts.map((artifact) => [artifact.id, artifact]));
|
|
384
386
|
const normalizedParts = (value) => value.replaceAll("\\", "/").split("/").filter(Boolean);
|
|
387
|
+
const normalizedPathKey = (value) => normalizedParts(value).join("/");
|
|
385
388
|
const hasOverlappingPath = (value, other) => {
|
|
386
389
|
const a = normalizedParts(value);
|
|
387
390
|
const b = normalizedParts(other);
|
|
@@ -389,32 +392,57 @@ export function validateBuildPlanPackage(dirPath) {
|
|
|
389
392
|
const longer = a.length <= b.length ? b : a;
|
|
390
393
|
return shorter.every((part, index) => longer[index] === part);
|
|
391
394
|
};
|
|
395
|
+
const requiredLayerPaths = new Set(["summaries", "knowledge", "artifacts"]);
|
|
396
|
+
const isRequiredLayerArtifact = (artifact) => artifact.kind === "directory" && requiredLayerPaths.has(normalizedPathKey(artifact.path));
|
|
397
|
+
const allowsRequiredLayerContainment = (artifact, existingArtifact) => {
|
|
398
|
+
const artifactPath = normalizedPathKey(artifact.path);
|
|
399
|
+
const existingPath = normalizedPathKey(existingArtifact.path);
|
|
400
|
+
if (artifactPath === existingPath)
|
|
401
|
+
return false;
|
|
402
|
+
if (!hasOverlappingPath(artifact.path, existingArtifact.path))
|
|
403
|
+
return false;
|
|
404
|
+
return isRequiredLayerArtifact(artifact) || isRequiredLayerArtifact(existingArtifact);
|
|
405
|
+
};
|
|
392
406
|
for (const artifact of schemaArtifacts) {
|
|
393
407
|
if (seenArtifactIds.has(artifact.id)) {
|
|
394
408
|
errors.push(`build-plan.schema.json repeats Artifact id "${artifact.id}".`);
|
|
395
409
|
}
|
|
396
410
|
seenArtifactIds.add(artifact.id);
|
|
397
|
-
const
|
|
411
|
+
const pathKey = normalizedPathKey(artifact.path);
|
|
412
|
+
const existingPathOwner = seenArtifactsByPath.get(pathKey);
|
|
398
413
|
if (existingPathOwner) {
|
|
399
414
|
errors.push(`build-plan.schema.json repeats Artifact path "${artifact.path}".`);
|
|
400
415
|
}
|
|
401
|
-
for (const
|
|
402
|
-
if (
|
|
416
|
+
for (const existingArtifact of seenArtifactsByPath.values()) {
|
|
417
|
+
if (normalizedPathKey(existingArtifact.path) === pathKey)
|
|
403
418
|
continue;
|
|
404
|
-
if (hasOverlappingPath(artifact.path,
|
|
405
|
-
|
|
419
|
+
if (hasOverlappingPath(artifact.path, existingArtifact.path) &&
|
|
420
|
+
!allowsRequiredLayerContainment(artifact, existingArtifact)) {
|
|
421
|
+
errors.push(`build-plan.schema.json Artifacts "${artifact.id}" and "${existingArtifact.id}" overlap on path "${artifact.path}" / "${existingArtifact.path}".`);
|
|
406
422
|
}
|
|
407
423
|
}
|
|
408
|
-
|
|
409
|
-
if ((artifact.role === "input" || artifact.role === "runtime") && artifact.owned_by.length > 0) {
|
|
410
|
-
errors.push(`build-plan.schema.json Artifact "${artifact.id}" cannot declare owners because its role is "${artifact.role}".`);
|
|
411
|
-
}
|
|
424
|
+
seenArtifactsByPath.set(pathKey, artifact);
|
|
412
425
|
for (const owner of artifact.owned_by) {
|
|
413
426
|
if (!stageIds.has(owner)) {
|
|
414
427
|
errors.push(`build-plan.schema.json references unknown stage "${owner}" for Artifact path "${artifact.path}".`);
|
|
428
|
+
continue;
|
|
429
|
+
}
|
|
430
|
+
const ownerStage = stages.find((stage) => stage.id === owner);
|
|
431
|
+
if (ownerStage && !ownerStage.writes.includes(artifact.id)) {
|
|
432
|
+
errors.push(`build-plan.schema.json Artifact "${artifact.id}" is owned by stage "${owner}" but that stage does not write it in build-plan.json.`);
|
|
415
433
|
}
|
|
416
434
|
}
|
|
417
435
|
}
|
|
436
|
+
for (const requiredPath of ["summaries", "knowledge", "artifacts"]) {
|
|
437
|
+
const artifact = seenArtifactsByPath.get(requiredPath);
|
|
438
|
+
if (!artifact) {
|
|
439
|
+
errors.push(`File-based Build Plan packages must declare a writable Artifact at "${requiredPath}".`);
|
|
440
|
+
continue;
|
|
441
|
+
}
|
|
442
|
+
if (artifact.owned_by.length === 0) {
|
|
443
|
+
errors.push(`File-based Build Plan Artifact "${artifact.id}" at "${requiredPath}" must be owned by at least one stage.`);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
418
446
|
for (const stage of stages) {
|
|
419
447
|
for (const artifactId of stage.reads) {
|
|
420
448
|
if (!artifactById.has(artifactId)) {
|
|
@@ -427,9 +455,6 @@ export function validateBuildPlanPackage(dirPath) {
|
|
|
427
455
|
errors.push(`Stage "${stage.id}" writes unknown Artifact "${artifactId}".`);
|
|
428
456
|
continue;
|
|
429
457
|
}
|
|
430
|
-
if (artifact.role === "input" || artifact.role === "runtime") {
|
|
431
|
-
errors.push(`Stage "${stage.id}" writes Artifact "${artifactId}" but Artifacts with role "${artifact.role}" are engine-owned inputs, not writable stage outputs.`);
|
|
432
|
-
}
|
|
433
458
|
if (!artifact.owned_by.includes(stage.id)) {
|
|
434
459
|
errors.push(`Stage "${stage.id}" writes Artifact "${artifactId}" but that Artifact is not owned by the stage in build-plan.schema.json.`);
|
|
435
460
|
}
|
|
@@ -457,7 +482,7 @@ function describeContextInterfaceValidationIssues(dirPath) {
|
|
|
457
482
|
if (!existsSync(buildPlanSchemaPath)) {
|
|
458
483
|
return ["build-plan.schema.json is missing."];
|
|
459
484
|
}
|
|
460
|
-
const raw = readJsonFileUnchecked(buildPlanSchemaPath, "Build Plan
|
|
485
|
+
const raw = readJsonFileUnchecked(buildPlanSchemaPath, "Build Plan requested Artifact contract");
|
|
461
486
|
if (raw === null) {
|
|
462
487
|
return ["build-plan.schema.json is invalid JSON."];
|
|
463
488
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync, } from "node:fs";
|
|
2
2
|
import { dirname, join, resolve } from "node:path";
|
|
3
3
|
import { warnInterf } from "../../contracts/utils/logger.js";
|
|
4
|
-
import { userBuildPlanPackagePath, userBuildPlansRoot, } from "../../contracts/lib/
|
|
4
|
+
import { userBuildPlanPackagePath, userBuildPlansRoot, } from "../../contracts/lib/project-paths.js";
|
|
5
5
|
import { loadBuildPlanDefinitionFromDir, } from "./local-build-plans.js";
|
|
6
6
|
export function userBuildPlanPath(id) {
|
|
7
7
|
return userBuildPlanPackagePath(id);
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export * as schema from "./lib/schema.js";
|
|
2
|
-
export
|
|
3
|
-
export {
|
|
2
|
+
export * as projectSchema from "./lib/project-schema.js";
|
|
3
|
+
export type { AgentRecord, AgentsRegistry, Artifact, ArtifactId, ArtifactShape, ArtifactStatus, CanonicalRole, Check, CheckKind, BuildCheckRow, BuildEvidenceIssueState, BuildEvidenceMetric, BuildEvidenceRef, BuildEvidenceResource, ContextCheck, ContextCheckDeclaration, ContextCheckProjection, ContextCheckStatus, GateStatus, Locator, LocatorKind, BuildPlanId, ProjectId, CheckResult, ReadinessGate, ReadinessStatus, Readiness, ReadyVerdict, RoleMap, RuntimeContractType, RuntimeExecutorInfo, RuntimeStage, RuntimeTargetType, Source, SourceFile, SourceFiles, SourceKind, SourceState, StageEvidence, StageEvidenceCount, StageEvidenceEdge, StageEvidenceItem, StageEvidenceOutputRef, StageEvidenceSourceRef, StageInput, StageInputs, StandardEvidenceFrontmatterKey, TestCaseExpect, TestTargetType, VerifyTargetResult, } from "./lib/schema.js";
|
|
4
|
+
export type { ContextGraph, ContextGraphLocator, DriftKind, ProjectName, ProjectSourceState, Trace, Traces, } from "./lib/project-schema.js";
|
|
5
|
+
export { CANONICAL_ROLES, CHECK_PARAM_CONTRACTS, CHECK_KINDS, ContextCheckDeclarationSchema, ContextCheckProjectionSchema, ContextCheckSchema, ContextCheckStatusSchema, BuildCheckRowSchema, BuildEvidenceIssueStateSchema, BuildEvidenceMetricSchema, BuildEvidenceRefSchema, BuildEvidenceResourceSchema, EvidenceCountKeySchema, StageEvidenceCountSchema, StageEvidenceEdgeSchema, StageEvidenceItemSchema, StageEvidenceOutputRefSchema, StageEvidenceSchema, StageEvidenceSourceRefSchema, STANDARD_EVIDENCE_FRONTMATTER_KEYS, } from "./lib/schema.js";
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export * as schema from "./lib/schema.js";
|
|
2
|
-
export
|
|
2
|
+
export * as projectSchema from "./lib/project-schema.js";
|
|
3
|
+
export { CANONICAL_ROLES, CHECK_PARAM_CONTRACTS, CHECK_KINDS, ContextCheckDeclarationSchema, ContextCheckProjectionSchema, ContextCheckSchema, ContextCheckStatusSchema, BuildCheckRowSchema, BuildEvidenceIssueStateSchema, BuildEvidenceMetricSchema, BuildEvidenceRefSchema, BuildEvidenceResourceSchema, EvidenceCountKeySchema, StageEvidenceCountSchema, StageEvidenceEdgeSchema, StageEvidenceItemSchema, StageEvidenceOutputRefSchema, StageEvidenceSchema, StageEvidenceSourceRefSchema, STANDARD_EVIDENCE_FRONTMATTER_KEYS, } from "./lib/schema.js";
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source of truth for every Interf path on disk.
|
|
3
|
+
*
|
|
4
|
+
* Two roots, one helper per named location. Code never string-concatenates
|
|
5
|
+
* path segments to product locations; it calls the helper here.
|
|
6
|
+
*
|
|
7
|
+
* Branded string types catch "passed a Source Folder where I expected a
|
|
8
|
+
* Project Data Dir" at the type-checker level instead of at runtime.
|
|
9
|
+
*
|
|
10
|
+
* Two roots:
|
|
11
|
+
* - **Interf Home** (`~/.interf/`): per-user, cross-Project state. Holds
|
|
12
|
+
* the user-level Build Plan library and the central service registry.
|
|
13
|
+
* - **Project Data Dir**: a directory that IS a Project's state
|
|
14
|
+
* root. Holds `interf.json`, `build-plans/`, the Context Graph output, and
|
|
15
|
+
* the service-internal `.service/` scratch dir. The user's Source Folders
|
|
16
|
+
* are passed as `--source <path>` — they are inputs, not part of the
|
|
17
|
+
* Project data dir.
|
|
18
|
+
*
|
|
19
|
+
* No nested `interf/` namespace. The data dir IS the state root, full stop.
|
|
20
|
+
*/
|
|
21
|
+
/** Absolute path to `~/.interf/` (overridable via `INTERF_USER_HOME`). */
|
|
22
|
+
export type InterfHomeRoot = string & {
|
|
23
|
+
readonly __brand: "InterfHomeRoot";
|
|
24
|
+
};
|
|
25
|
+
/** Absolute path to a directory that IS a Project's state root. */
|
|
26
|
+
export type ProjectDataDir = string & {
|
|
27
|
+
readonly __brand: "ProjectDataDir";
|
|
28
|
+
};
|
|
29
|
+
/** Absolute path to a Source Folder — the user's input. Read-only by default. */
|
|
30
|
+
export type SourceFolderPath = string & {
|
|
31
|
+
readonly __brand: "SourceFolderPath";
|
|
32
|
+
};
|
|
33
|
+
/** Absolute path to a Context Graph output directory. */
|
|
34
|
+
export type ContextGraphPath = string & {
|
|
35
|
+
readonly __brand: "ContextGraphPath";
|
|
36
|
+
};
|
|
37
|
+
/** Project config filename. */
|
|
38
|
+
export declare const PROJECT_CONFIG_FILENAME = "interf.json";
|
|
39
|
+
/** The Context Graph state directory name (lives at `<context-graph>/.interf/`). */
|
|
40
|
+
export declare const CONTEXT_GRAPH_STATE_DIR = ".interf";
|
|
41
|
+
/** Build Plan packages directory name (Project drafts and user library). */
|
|
42
|
+
export declare const BUILD_PLANS_DIR = "build-plans";
|
|
43
|
+
/** Service-internal directory inside a Project data dir. */
|
|
44
|
+
export declare const SERVICE_DIR = ".service";
|
|
45
|
+
/** Service registry filename inside Interf Home. */
|
|
46
|
+
export declare const SERVICE_REGISTRY_FILENAME = "services.json";
|
|
47
|
+
/** Service jobs subdir. */
|
|
48
|
+
export declare const SERVICE_JOBS_DIR = "jobs";
|
|
49
|
+
/** Service action-proposals subdir. */
|
|
50
|
+
export declare const SERVICE_ACTION_PROPOSALS_DIR = "action-proposals";
|
|
51
|
+
/** Service action-plans subdir. */
|
|
52
|
+
export declare const SERVICE_ACTION_PLANS_DIR = "action-plans";
|
|
53
|
+
/** Tests directory inside a Project data dir. */
|
|
54
|
+
export declare const PROJECT_TESTS_DIR = "tests";
|
|
55
|
+
/** Per-run Context Graph output directory inside a Project data dir. */
|
|
56
|
+
export declare const CONTEXT_GRAPHS_DIR = "graphs";
|
|
57
|
+
/** Tests-spec subdir. */
|
|
58
|
+
export declare const PROJECT_TESTS_SPECS_DIR = "specs";
|
|
59
|
+
/** Per-Context Graph tests directory. */
|
|
60
|
+
export declare const CONTEXT_GRAPH_TESTS_DIR = "tests";
|
|
61
|
+
/** Per-Context Graph runtime directory. */
|
|
62
|
+
export declare const CONTEXT_GRAPH_RUNTIME_DIR = "runtime";
|
|
63
|
+
/** Per-Context Graph Build Plan package directory. */
|
|
64
|
+
export declare const CONTEXT_GRAPH_BUILD_PLAN_DIR = "build-plan";
|
|
65
|
+
/** Environment variable that overrides Interf Home for tests. */
|
|
66
|
+
export declare const INTERF_USER_HOME_ENV = "INTERF_USER_HOME";
|
|
67
|
+
/** Interf Home directory name under the OS home dir. */
|
|
68
|
+
export declare const INTERF_HOME_DIR = ".interf";
|
|
69
|
+
/** Projects directory inside Interf Home. */
|
|
70
|
+
export declare const PROJECTS_DIR = "projects";
|
|
71
|
+
/** CLI connection record filename inside Interf Home. */
|
|
72
|
+
export declare const CONNECTION_CONFIG_FILENAME = "connection.json";
|
|
73
|
+
export declare function asProjectDataDir(path: string): ProjectDataDir;
|
|
74
|
+
export declare function asSourceFolderPath(path: string): SourceFolderPath;
|
|
75
|
+
export declare function asContextGraphPath(path: string): ContextGraphPath;
|
|
76
|
+
/** `~/.interf/` (or `INTERF_USER_HOME` override). */
|
|
77
|
+
export declare function interfHomeRoot(): InterfHomeRoot;
|
|
78
|
+
/** `~/.interf/connection.json` — single CLI connection record. */
|
|
79
|
+
export declare function connectionConfigPath(): string;
|
|
80
|
+
/** `~/.interf/build-plans/` — user-level Build Plan library root. */
|
|
81
|
+
export declare function userBuildPlansRoot(): string;
|
|
82
|
+
/** `~/.interf/build-plans/<id>/` — a specific user-library Build Plan package. */
|
|
83
|
+
export declare function userBuildPlanPackagePath(buildPlanId: string): string;
|
|
84
|
+
/** `~/.interf/services.json` — central service registry. */
|
|
85
|
+
export declare function serviceRegistryPath(): string;
|
|
86
|
+
/** `~/.interf/projects/` — root for all Project state. */
|
|
87
|
+
export declare function projectsRoot(): string;
|
|
88
|
+
/** `~/.interf/projects/<project-id>/` — one Project state dir. */
|
|
89
|
+
export declare function projectDataDir(projectId: string): ProjectDataDir;
|
|
90
|
+
/** `<project-data>/interf.json` — Project config source of truth. */
|
|
91
|
+
export declare function projectConfigPath(projectDataDir: ProjectDataDir): string;
|
|
92
|
+
/** `<project-data>/build-plans/` — Project-draft Build Plan packages root. */
|
|
93
|
+
export declare function projectBuildPlansRoot(projectDataDir: ProjectDataDir): string;
|
|
94
|
+
/** `<project-data>/build-plans/<id>/` — a Project-draft Build Plan package. */
|
|
95
|
+
export declare function projectBuildPlanPackagePath(projectDataDir: ProjectDataDir, buildPlanId: string): string;
|
|
96
|
+
/** `<project-data>/<project-id>/` — legacy Project-level Context Graph root. */
|
|
97
|
+
export declare function projectContextGraphPath(projectDataDir: ProjectDataDir, projectName: string): ContextGraphPath;
|
|
98
|
+
/** `<project-data>/graphs/` — per-run Context Graph outputs root. */
|
|
99
|
+
export declare function projectContextGraphsRoot(projectDataDir: ProjectDataDir): string;
|
|
100
|
+
/** `<project-data>/graphs/<run-id>/` — one Build Run's Context Graph output. */
|
|
101
|
+
export declare function projectRunContextGraphPath(projectDataDir: ProjectDataDir, runId: string): ContextGraphPath;
|
|
102
|
+
/** `<project-data>/.service/` — service-owned scratch dir for jobs and proposals. */
|
|
103
|
+
export declare function projectServiceRoot(projectDataDir: ProjectDataDir): string;
|
|
104
|
+
/** `<project-data>/.service/jobs/`. */
|
|
105
|
+
export declare function projectServiceJobsRoot(projectDataDir: ProjectDataDir): string;
|
|
106
|
+
/** `<project-data>/.service/action-proposals/`. */
|
|
107
|
+
export declare function projectServiceActionProposalsRoot(projectDataDir: ProjectDataDir): string;
|
|
108
|
+
/** `<project-data>/.service/action-plans/`. */
|
|
109
|
+
export declare function projectServiceActionPlansRoot(projectDataDir: ProjectDataDir): string;
|
|
110
|
+
/** `<project-data>/.service/build-runs/` — Project activity index for Build Runs. */
|
|
111
|
+
export declare function projectServiceBuildRunsRoot(projectDataDir: ProjectDataDir): string;
|
|
112
|
+
/** `<project-data>/tests/specs/` — saved benchmark specs. */
|
|
113
|
+
export declare function projectTestsSpecsRoot(projectDataDir: ProjectDataDir): string;
|
|
114
|
+
/** `<context-graph>/.interf/`. */
|
|
115
|
+
export declare function contextGraphStateRoot(contextGraph: ContextGraphPath): string;
|
|
116
|
+
/** `<context-graph>/.interf/interf.json` — runtime contract. */
|
|
117
|
+
export declare function contextGraphConfigPath(contextGraph: ContextGraphPath): string;
|
|
118
|
+
/** `<context-graph>/.interf/build-plan/` — active Build Plan package inside Context Graph. */
|
|
119
|
+
export declare function contextGraphBuildPlanPath(contextGraph: ContextGraphPath): string;
|
|
120
|
+
/** `<context-graph>/.interf/runtime/`. */
|
|
121
|
+
export declare function contextGraphRuntimeRoot(contextGraph: ContextGraphPath): string;
|
|
122
|
+
/** `<context-graph>/.interf/tests/`. */
|
|
123
|
+
export declare function contextGraphTestsRoot(contextGraph: ContextGraphPath): string;
|
|
124
|
+
/** Test target labels: source-files (raw input) vs Context Graph. */
|
|
125
|
+
export type ProjectTestTargetLabel = "source-files" | "context-graph";
|
|
126
|
+
/** `<project-data>/<project>/.interf/tests/`. */
|
|
127
|
+
export declare function projectTestsRoot(projectDataDir: ProjectDataDir, projectName: string): string;
|
|
128
|
+
/** `<project-data>/<project>/.interf/tests/<target>/runs/`. */
|
|
129
|
+
export declare function projectTestRunsRoot(projectDataDir: ProjectDataDir, projectName: string, target: ProjectTestTargetLabel): string;
|
|
130
|
+
/** `<project-data>/<project>/.interf/tests/latest.json`. */
|
|
131
|
+
export declare function projectLatestBenchmarkRunPath(projectDataDir: ProjectDataDir, projectName: string): string;
|
|
132
|
+
/** `<project-data>/<project>/.interf/tests/latest.md`. */
|
|
133
|
+
export declare function projectLatestBenchmarkSummaryPath(projectDataDir: ProjectDataDir, projectName: string): string;
|
|
134
|
+
/** Normalize a free-form string into a stable, kebab-cased id (≤80 chars). */
|
|
135
|
+
export declare function normalizeProjectTestRunId(input: string): string;
|
|
136
|
+
/** `<project-data>/<project>/.interf/tests/<target>/runs/<timestamp>-<run-id>[-<suffix>].json`. */
|
|
137
|
+
export declare function projectTestRunPath(projectDataDir: ProjectDataDir, projectName: string, target: ProjectTestTargetLabel, generatedAt: string, runId: string, runSuffix?: string | null): string;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source of truth for every Interf path on disk.
|
|
3
|
+
*
|
|
4
|
+
* Two roots, one helper per named location. Code never string-concatenates
|
|
5
|
+
* path segments to product locations; it calls the helper here.
|
|
6
|
+
*
|
|
7
|
+
* Branded string types catch "passed a Source Folder where I expected a
|
|
8
|
+
* Project Data Dir" at the type-checker level instead of at runtime.
|
|
9
|
+
*
|
|
10
|
+
* Two roots:
|
|
11
|
+
* - **Interf Home** (`~/.interf/`): per-user, cross-Project state. Holds
|
|
12
|
+
* the user-level Build Plan library and the central service registry.
|
|
13
|
+
* - **Project Data Dir**: a directory that IS a Project's state
|
|
14
|
+
* root. Holds `interf.json`, `build-plans/`, the Context Graph output, and
|
|
15
|
+
* the service-internal `.service/` scratch dir. The user's Source Folders
|
|
16
|
+
* are passed as `--source <path>` — they are inputs, not part of the
|
|
17
|
+
* Project data dir.
|
|
18
|
+
*
|
|
19
|
+
* No nested `interf/` namespace. The data dir IS the state root, full stop.
|
|
20
|
+
*/
|
|
21
|
+
import { homedir } from "node:os";
|
|
22
|
+
import { join } from "node:path";
|
|
23
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
24
|
+
// Constants — every named segment lives here, nowhere else
|
|
25
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
26
|
+
/** Project config filename. */
|
|
27
|
+
export const PROJECT_CONFIG_FILENAME = "interf.json";
|
|
28
|
+
/** The Context Graph state directory name (lives at `<context-graph>/.interf/`). */
|
|
29
|
+
export const CONTEXT_GRAPH_STATE_DIR = ".interf";
|
|
30
|
+
/** Build Plan packages directory name (Project drafts and user library). */
|
|
31
|
+
export const BUILD_PLANS_DIR = "build-plans";
|
|
32
|
+
/** Service-internal directory inside a Project data dir. */
|
|
33
|
+
export const SERVICE_DIR = ".service";
|
|
34
|
+
/** Service registry filename inside Interf Home. */
|
|
35
|
+
export const SERVICE_REGISTRY_FILENAME = "services.json";
|
|
36
|
+
/** Service jobs subdir. */
|
|
37
|
+
export const SERVICE_JOBS_DIR = "jobs";
|
|
38
|
+
/** Service action-proposals subdir. */
|
|
39
|
+
export const SERVICE_ACTION_PROPOSALS_DIR = "action-proposals";
|
|
40
|
+
/** Service action-plans subdir. */
|
|
41
|
+
export const SERVICE_ACTION_PLANS_DIR = "action-plans";
|
|
42
|
+
/** Tests directory inside a Project data dir. */
|
|
43
|
+
export const PROJECT_TESTS_DIR = "tests";
|
|
44
|
+
/** Per-run Context Graph output directory inside a Project data dir. */
|
|
45
|
+
export const CONTEXT_GRAPHS_DIR = "graphs";
|
|
46
|
+
/** Tests-spec subdir. */
|
|
47
|
+
export const PROJECT_TESTS_SPECS_DIR = "specs";
|
|
48
|
+
/** Per-Context Graph tests directory. */
|
|
49
|
+
export const CONTEXT_GRAPH_TESTS_DIR = "tests";
|
|
50
|
+
/** Per-Context Graph runtime directory. */
|
|
51
|
+
export const CONTEXT_GRAPH_RUNTIME_DIR = "runtime";
|
|
52
|
+
/** Per-Context Graph Build Plan package directory. */
|
|
53
|
+
export const CONTEXT_GRAPH_BUILD_PLAN_DIR = "build-plan";
|
|
54
|
+
/** Environment variable that overrides Interf Home for tests. */
|
|
55
|
+
export const INTERF_USER_HOME_ENV = "INTERF_USER_HOME";
|
|
56
|
+
/** Interf Home directory name under the OS home dir. */
|
|
57
|
+
export const INTERF_HOME_DIR = ".interf";
|
|
58
|
+
/** Projects directory inside Interf Home. */
|
|
59
|
+
export const PROJECTS_DIR = "projects";
|
|
60
|
+
/** CLI connection record filename inside Interf Home. */
|
|
61
|
+
export const CONNECTION_CONFIG_FILENAME = "connection.json";
|
|
62
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
63
|
+
// Brand constructors — convert untyped strings at boundaries
|
|
64
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
65
|
+
export function asProjectDataDir(path) {
|
|
66
|
+
return path;
|
|
67
|
+
}
|
|
68
|
+
export function asSourceFolderPath(path) {
|
|
69
|
+
return path;
|
|
70
|
+
}
|
|
71
|
+
export function asContextGraphPath(path) {
|
|
72
|
+
return path;
|
|
73
|
+
}
|
|
74
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
75
|
+
// Interf Home (~/.interf/) paths
|
|
76
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
77
|
+
/** `~/.interf/` (or `INTERF_USER_HOME` override). */
|
|
78
|
+
export function interfHomeRoot() {
|
|
79
|
+
const override = process.env[INTERF_USER_HOME_ENV]?.trim();
|
|
80
|
+
if (override && override.length > 0)
|
|
81
|
+
return override;
|
|
82
|
+
return join(homedir(), INTERF_HOME_DIR);
|
|
83
|
+
}
|
|
84
|
+
/** `~/.interf/connection.json` — single CLI connection record. */
|
|
85
|
+
export function connectionConfigPath() {
|
|
86
|
+
return join(interfHomeRoot(), CONNECTION_CONFIG_FILENAME);
|
|
87
|
+
}
|
|
88
|
+
/** `~/.interf/build-plans/` — user-level Build Plan library root. */
|
|
89
|
+
export function userBuildPlansRoot() {
|
|
90
|
+
return join(interfHomeRoot(), BUILD_PLANS_DIR);
|
|
91
|
+
}
|
|
92
|
+
/** `~/.interf/build-plans/<id>/` — a specific user-library Build Plan package. */
|
|
93
|
+
export function userBuildPlanPackagePath(buildPlanId) {
|
|
94
|
+
return join(userBuildPlansRoot(), buildPlanId);
|
|
95
|
+
}
|
|
96
|
+
/** `~/.interf/services.json` — central service registry. */
|
|
97
|
+
export function serviceRegistryPath() {
|
|
98
|
+
return join(interfHomeRoot(), SERVICE_REGISTRY_FILENAME);
|
|
99
|
+
}
|
|
100
|
+
/** `~/.interf/projects/` — root for all Project state. */
|
|
101
|
+
export function projectsRoot() {
|
|
102
|
+
return join(interfHomeRoot(), PROJECTS_DIR);
|
|
103
|
+
}
|
|
104
|
+
/** `~/.interf/projects/<project-id>/` — one Project state dir. */
|
|
105
|
+
export function projectDataDir(projectId) {
|
|
106
|
+
return asProjectDataDir(join(projectsRoot(), projectId));
|
|
107
|
+
}
|
|
108
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
109
|
+
// Project Data Dir paths (the data dir IS the state root)
|
|
110
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
111
|
+
/** `<project-data>/interf.json` — Project config source of truth. */
|
|
112
|
+
export function projectConfigPath(projectDataDir) {
|
|
113
|
+
return join(projectDataDir, PROJECT_CONFIG_FILENAME);
|
|
114
|
+
}
|
|
115
|
+
/** `<project-data>/build-plans/` — Project-draft Build Plan packages root. */
|
|
116
|
+
export function projectBuildPlansRoot(projectDataDir) {
|
|
117
|
+
return join(projectDataDir, BUILD_PLANS_DIR);
|
|
118
|
+
}
|
|
119
|
+
/** `<project-data>/build-plans/<id>/` — a Project-draft Build Plan package. */
|
|
120
|
+
export function projectBuildPlanPackagePath(projectDataDir, buildPlanId) {
|
|
121
|
+
return join(projectBuildPlansRoot(projectDataDir), buildPlanId);
|
|
122
|
+
}
|
|
123
|
+
/** `<project-data>/<project-id>/` — legacy Project-level Context Graph root. */
|
|
124
|
+
export function projectContextGraphPath(projectDataDir, projectName) {
|
|
125
|
+
return join(projectDataDir, projectName);
|
|
126
|
+
}
|
|
127
|
+
/** `<project-data>/graphs/` — per-run Context Graph outputs root. */
|
|
128
|
+
export function projectContextGraphsRoot(projectDataDir) {
|
|
129
|
+
return join(projectDataDir, CONTEXT_GRAPHS_DIR);
|
|
130
|
+
}
|
|
131
|
+
/** `<project-data>/graphs/<run-id>/` — one Build Run's Context Graph output. */
|
|
132
|
+
export function projectRunContextGraphPath(projectDataDir, runId) {
|
|
133
|
+
return join(projectContextGraphsRoot(projectDataDir), runId);
|
|
134
|
+
}
|
|
135
|
+
/** `<project-data>/.service/` — service-owned scratch dir for jobs and proposals. */
|
|
136
|
+
export function projectServiceRoot(projectDataDir) {
|
|
137
|
+
return join(projectDataDir, SERVICE_DIR);
|
|
138
|
+
}
|
|
139
|
+
/** `<project-data>/.service/jobs/`. */
|
|
140
|
+
export function projectServiceJobsRoot(projectDataDir) {
|
|
141
|
+
return join(projectServiceRoot(projectDataDir), SERVICE_JOBS_DIR);
|
|
142
|
+
}
|
|
143
|
+
/** `<project-data>/.service/action-proposals/`. */
|
|
144
|
+
export function projectServiceActionProposalsRoot(projectDataDir) {
|
|
145
|
+
return join(projectServiceRoot(projectDataDir), SERVICE_ACTION_PROPOSALS_DIR);
|
|
146
|
+
}
|
|
147
|
+
/** `<project-data>/.service/action-plans/`. */
|
|
148
|
+
export function projectServiceActionPlansRoot(projectDataDir) {
|
|
149
|
+
return join(projectServiceRoot(projectDataDir), SERVICE_ACTION_PLANS_DIR);
|
|
150
|
+
}
|
|
151
|
+
/** `<project-data>/.service/build-runs/` — Project activity index for Build Runs. */
|
|
152
|
+
export function projectServiceBuildRunsRoot(projectDataDir) {
|
|
153
|
+
return join(projectServiceRoot(projectDataDir), "build-runs");
|
|
154
|
+
}
|
|
155
|
+
/** `<project-data>/tests/specs/` — saved benchmark specs. */
|
|
156
|
+
export function projectTestsSpecsRoot(projectDataDir) {
|
|
157
|
+
return join(projectDataDir, PROJECT_TESTS_DIR, PROJECT_TESTS_SPECS_DIR);
|
|
158
|
+
}
|
|
159
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
160
|
+
// Context Graph paths (generated graph outputs)
|
|
161
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
162
|
+
/** `<context-graph>/.interf/`. */
|
|
163
|
+
export function contextGraphStateRoot(contextGraph) {
|
|
164
|
+
return join(contextGraph, CONTEXT_GRAPH_STATE_DIR);
|
|
165
|
+
}
|
|
166
|
+
/** `<context-graph>/.interf/interf.json` — runtime contract. */
|
|
167
|
+
export function contextGraphConfigPath(contextGraph) {
|
|
168
|
+
return join(contextGraphStateRoot(contextGraph), PROJECT_CONFIG_FILENAME);
|
|
169
|
+
}
|
|
170
|
+
/** `<context-graph>/.interf/build-plan/` — active Build Plan package inside Context Graph. */
|
|
171
|
+
export function contextGraphBuildPlanPath(contextGraph) {
|
|
172
|
+
return join(contextGraphStateRoot(contextGraph), CONTEXT_GRAPH_BUILD_PLAN_DIR);
|
|
173
|
+
}
|
|
174
|
+
/** `<context-graph>/.interf/runtime/`. */
|
|
175
|
+
export function contextGraphRuntimeRoot(contextGraph) {
|
|
176
|
+
return join(contextGraphStateRoot(contextGraph), CONTEXT_GRAPH_RUNTIME_DIR);
|
|
177
|
+
}
|
|
178
|
+
/** `<context-graph>/.interf/tests/`. */
|
|
179
|
+
export function contextGraphTestsRoot(contextGraph) {
|
|
180
|
+
return join(contextGraphStateRoot(contextGraph), CONTEXT_GRAPH_TESTS_DIR);
|
|
181
|
+
}
|
|
182
|
+
/** `<project-data>/<project>/.interf/tests/`. */
|
|
183
|
+
export function projectTestsRoot(projectDataDir, projectName) {
|
|
184
|
+
return contextGraphTestsRoot(projectContextGraphPath(projectDataDir, projectName));
|
|
185
|
+
}
|
|
186
|
+
/** `<project-data>/<project>/.interf/tests/<target>/runs/`. */
|
|
187
|
+
export function projectTestRunsRoot(projectDataDir, projectName, target) {
|
|
188
|
+
return join(projectTestsRoot(projectDataDir, projectName), target, "runs");
|
|
189
|
+
}
|
|
190
|
+
/** `<project-data>/<project>/.interf/tests/latest.json`. */
|
|
191
|
+
export function projectLatestBenchmarkRunPath(projectDataDir, projectName) {
|
|
192
|
+
return join(projectTestsRoot(projectDataDir, projectName), "latest.json");
|
|
193
|
+
}
|
|
194
|
+
/** `<project-data>/<project>/.interf/tests/latest.md`. */
|
|
195
|
+
export function projectLatestBenchmarkSummaryPath(projectDataDir, projectName) {
|
|
196
|
+
return join(projectTestsRoot(projectDataDir, projectName), "latest.md");
|
|
197
|
+
}
|
|
198
|
+
/** Normalize a free-form string into a stable, kebab-cased id (≤80 chars). */
|
|
199
|
+
export function normalizeProjectTestRunId(input) {
|
|
200
|
+
return input
|
|
201
|
+
.toLowerCase()
|
|
202
|
+
.trim()
|
|
203
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
204
|
+
.replace(/^-+|-+$/g, "")
|
|
205
|
+
.slice(0, 80);
|
|
206
|
+
}
|
|
207
|
+
/** `<project-data>/<project>/.interf/tests/<target>/runs/<timestamp>-<run-id>[-<suffix>].json`. */
|
|
208
|
+
export function projectTestRunPath(projectDataDir, projectName, target, generatedAt, runId, runSuffix) {
|
|
209
|
+
const suffix = runSuffix ? `-${normalizeProjectTestRunId(runSuffix)}` : "";
|
|
210
|
+
return join(projectTestRunsRoot(projectDataDir, projectName, target), `${generatedAt.replace(/[:.]/g, "-")}-${runId}${suffix}.json`);
|
|
211
|
+
}
|