@interf/compiler 0.22.2 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +119 -282
- package/dist/bin-mcp.d.ts +2 -0
- package/dist/bin-mcp.js +63 -0
- package/dist/bin-runtime.d.ts +2 -0
- package/dist/bin-runtime.js +111 -0
- package/dist/cli/commands/agents.js +4 -35
- package/dist/cli/commands/auth.d.ts +20 -0
- package/dist/cli/commands/auth.js +161 -0
- package/dist/cli/commands/benchmark.d.ts +9 -0
- package/dist/cli/commands/benchmark.js +58 -0
- package/dist/cli/commands/build-plan.js +107 -139
- package/dist/cli/commands/build.d.ts +3 -4
- package/dist/cli/commands/build.js +16 -45
- package/dist/cli/commands/doctor.js +3 -3
- package/dist/cli/commands/graphs.d.ts +2 -0
- package/dist/cli/commands/graphs.js +344 -0
- package/dist/cli/commands/login.js +4 -6
- package/dist/cli/commands/logout.js +1 -1
- package/dist/cli/commands/mcp.d.ts +4 -2
- package/dist/cli/commands/mcp.js +846 -232
- package/dist/cli/commands/project.d.ts +2 -0
- package/dist/cli/commands/project.js +176 -0
- package/dist/cli/commands/reset.d.ts +3 -4
- package/dist/cli/commands/reset.js +10 -31
- package/dist/cli/commands/runs.js +136 -57
- package/dist/cli/commands/runtime.d.ts +24 -0
- package/dist/cli/commands/runtime.js +373 -0
- package/dist/cli/commands/status.d.ts +1 -0
- package/dist/cli/commands/status.js +35 -45
- package/dist/cli/commands/traces.d.ts +2 -0
- package/dist/cli/commands/traces.js +97 -0
- package/dist/cli/commands/wizard.js +171 -178
- package/dist/cli/index.d.ts +7 -4
- package/dist/cli/index.js +13 -7
- package/dist/cli/lib/http-client.d.ts +39 -0
- package/dist/cli/lib/http-client.js +73 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/packages/build-plans/authoring/brief.d.ts +538 -0
- package/dist/packages/build-plans/authoring/brief.js +89 -0
- package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +52 -11
- package/dist/packages/build-plans/authoring/build-plan-authoring.js +493 -46
- package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +10 -1
- package/dist/packages/build-plans/authoring/build-plan-edit-session.js +27 -4
- package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
- package/dist/packages/build-plans/authoring/build-plan-improvement.js +97 -46
- package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.d.ts +1 -0
- package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
- package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
- package/dist/packages/build-plans/build-plan-resolution.js +3 -3
- package/dist/packages/build-plans/index.d.ts +1 -1
- package/dist/packages/build-plans/index.js +1 -1
- package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -13
- package/dist/packages/build-plans/package/build-plan-definitions.js +45 -42
- package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
- package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
- package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
- package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
- package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +5 -4
- package/dist/packages/build-plans/package/build-plan-stage-runner.js +23 -11
- package/dist/packages/build-plans/package/builtin-build-plan.d.ts +7 -8
- package/dist/packages/build-plans/package/builtin-build-plan.js +10 -11
- package/dist/packages/build-plans/package/context-interface.d.ts +14 -9
- package/dist/packages/build-plans/package/context-interface.js +14 -33
- package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
- package/dist/packages/build-plans/package/interf-build-plan-package.js +68 -64
- package/dist/packages/build-plans/package/local-build-plans.d.ts +21 -14
- package/dist/packages/build-plans/package/local-build-plans.js +105 -55
- package/dist/packages/build-plans/package/user-build-plans.js +1 -1
- package/dist/packages/contracts/index.d.ts +5 -2
- package/dist/packages/contracts/index.js +3 -1
- package/dist/packages/contracts/lib/context-graph-layer.d.ts +161 -0
- package/dist/packages/contracts/lib/context-graph-layer.js +216 -0
- package/dist/packages/contracts/lib/project-paths.d.ts +144 -0
- package/dist/packages/contracts/lib/project-paths.js +220 -0
- package/dist/packages/contracts/lib/project-schema.d.ts +423 -0
- package/dist/packages/contracts/lib/project-schema.js +138 -0
- package/dist/packages/contracts/lib/schema.d.ts +1273 -81
- package/dist/packages/contracts/lib/schema.js +675 -79
- package/dist/packages/contracts/utils/filesystem.d.ts +1 -0
- package/dist/packages/contracts/utils/filesystem.js +29 -1
- package/dist/packages/contracts/utils/parse.js +67 -0
- package/dist/packages/projects/index.d.ts +6 -0
- package/dist/packages/{project → projects}/index.js +0 -3
- package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
- package/dist/packages/{project → projects}/interf-detect.js +56 -50
- package/dist/packages/projects/interf.d.ts +2 -0
- package/dist/packages/projects/interf.js +1 -0
- package/dist/packages/projects/lib/schema.d.ts +77 -0
- package/dist/packages/projects/lib/schema.js +91 -0
- package/dist/packages/projects/source-config.d.ts +53 -0
- package/dist/packages/projects/source-config.js +339 -0
- package/dist/packages/projects/source-folders.d.ts +11 -0
- package/dist/packages/{project → projects}/source-folders.js +26 -26
- package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
- package/dist/packages/{engine → runtime}/action-planner.js +20 -22
- package/dist/packages/runtime/action-values.d.ts +1 -0
- package/dist/packages/runtime/action-values.js +1 -0
- package/dist/packages/runtime/actions/errors.d.ts +2 -0
- package/dist/packages/runtime/actions/errors.js +12 -0
- package/dist/packages/runtime/actions/fields.d.ts +86 -0
- package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
- package/dist/packages/runtime/actions/form-builders.js +667 -0
- package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
- package/dist/packages/runtime/actions/form-validators.js +134 -0
- package/dist/packages/runtime/actions/helpers.d.ts +11 -0
- package/dist/packages/runtime/actions/helpers.js +80 -0
- package/dist/packages/runtime/actions/index.d.ts +8 -0
- package/dist/packages/runtime/actions/index.js +11 -0
- package/dist/packages/runtime/actions/registry.d.ts +64 -0
- package/dist/packages/runtime/actions/registry.js +62 -0
- package/dist/packages/runtime/actions/requests.d.ts +45 -0
- package/dist/packages/runtime/actions/requests.js +164 -0
- package/dist/packages/runtime/actions/schemas.d.ts +161 -0
- package/dist/packages/runtime/actions/schemas.js +37 -0
- package/dist/packages/runtime/agent-handoff.d.ts +11 -0
- package/dist/packages/runtime/agent-handoff.js +102 -0
- package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
- package/dist/packages/{engine → runtime}/agents/index.js +1 -2
- package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
- package/dist/packages/runtime/agents/lib/args.js +24 -0
- package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
- package/dist/packages/runtime/agents/lib/constants.js +13 -0
- package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
- package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
- package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
- package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
- package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +14 -0
- package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +31 -14
- package/dist/packages/{engine → runtime}/agents/lib/execution.js +22 -6
- package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +1 -0
- package/dist/packages/{engine → runtime}/agents/lib/executors.js +11 -2
- package/dist/packages/runtime/agents/lib/logs.d.ts +12 -0
- package/dist/packages/runtime/agents/lib/logs.js +41 -0
- package/dist/packages/{engine → runtime}/agents/lib/preflight.js +19 -14
- package/dist/packages/runtime/agents/lib/render.d.ts +26 -0
- package/dist/packages/{engine → runtime}/agents/lib/render.js +48 -22
- package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
- package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
- package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
- package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
- package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
- package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
- package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
- package/dist/packages/runtime/agents/lib/shell-templates.js +494 -0
- package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
- package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
- package/dist/packages/runtime/agents/lib/shells.d.ts +92 -0
- package/dist/packages/runtime/agents/lib/shells.js +509 -0
- package/dist/packages/runtime/agents/lib/source-context-scan.d.ts +10 -0
- package/dist/packages/runtime/agents/lib/source-context-scan.js +388 -0
- package/dist/packages/{engine → runtime}/agents/lib/status.js +1 -14
- package/dist/packages/runtime/agents/lib/string-utils.d.ts +16 -0
- package/dist/packages/runtime/agents/lib/string-utils.js +36 -0
- package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +1 -0
- package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
- package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
- package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
- package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
- package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
- package/dist/packages/runtime/agents/providers/codex.js +66 -0
- package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
- package/dist/packages/runtime/agents/providers/cursor.js +24 -0
- package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
- package/dist/packages/runtime/agents/providers/index.js +31 -0
- package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
- package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
- package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
- package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
- package/dist/packages/{engine → runtime}/agents/role-executors.js +9 -7
- package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
- package/dist/packages/runtime/auth/account-context.d.ts +52 -0
- package/dist/packages/runtime/auth/account-context.js +68 -0
- package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
- package/dist/packages/runtime/auth/auth-flow.js +189 -0
- package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
- package/dist/packages/runtime/auth/jwt-validator.js +86 -0
- package/dist/packages/runtime/auth/keychain.d.ts +35 -0
- package/dist/packages/runtime/auth/keychain.js +85 -0
- package/dist/packages/runtime/auth/session-store.d.ts +38 -0
- package/dist/packages/runtime/auth/session-store.js +96 -0
- package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
- package/dist/packages/runtime/auth/workos-client.js +87 -0
- package/dist/packages/runtime/benchmark-question-draft.d.ts +23 -0
- package/dist/packages/runtime/benchmark-question-draft.js +153 -0
- package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
- package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
- package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +6 -6
- package/dist/packages/{engine → runtime}/build/artifact-status.js +26 -24
- package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
- package/dist/packages/runtime/build/atomic-fs.js +95 -0
- package/dist/packages/runtime/build/billing-events.d.ts +78 -0
- package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
- package/dist/packages/runtime/build/build-evidence.d.ts +16 -0
- package/dist/packages/runtime/build/build-evidence.js +179 -0
- package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
- package/dist/packages/runtime/build/build-pipeline.js +388 -0
- package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
- package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
- package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
- package/dist/packages/runtime/build/build-plan-runs.js +31 -0
- package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
- package/dist/packages/runtime/build/build-stage-plan.js +101 -0
- package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
- package/dist/packages/runtime/build/build-stage-runner.js +302 -0
- package/dist/packages/{engine → runtime}/build/build-target.d.ts +7 -4
- package/dist/packages/runtime/build/build-target.js +40 -0
- package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
- package/dist/packages/runtime/build/check-evaluator.js +1226 -0
- package/dist/packages/runtime/build/context-graph-paths.d.ts +64 -0
- package/dist/packages/runtime/build/context-graph-paths.js +160 -0
- package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
- package/dist/packages/runtime/build/context-graph-schema.js +39 -0
- package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
- package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
- package/dist/packages/{engine → runtime}/build/index.d.ts +7 -5
- package/dist/packages/{engine → runtime}/build/index.js +7 -5
- package/dist/packages/runtime/build/inspect-map.d.ts +10 -0
- package/dist/packages/runtime/build/inspect-map.js +270 -0
- package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +449 -123
- package/dist/packages/runtime/build/lib/schema.js +494 -0
- package/dist/packages/runtime/build/native-entrypoint.d.ts +2 -0
- package/dist/packages/runtime/build/native-entrypoint.js +286 -0
- package/dist/packages/runtime/build/reset.d.ts +2 -0
- package/dist/packages/runtime/build/reset.js +62 -0
- package/dist/packages/{engine → runtime}/build/runtime-contracts.js +13 -7
- package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
- package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
- package/dist/packages/runtime/build/runtime-log-paths.d.ts +3 -0
- package/dist/packages/runtime/build/runtime-log-paths.js +16 -0
- package/dist/packages/{engine → runtime}/build/runtime-prompt.js +12 -9
- package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
- package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
- package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
- package/dist/packages/runtime/build/runtime-runs.js +318 -0
- package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +9 -6
- package/dist/packages/runtime/build/runtime-types.js +1 -0
- package/dist/packages/runtime/build/runtime.d.ts +8 -0
- package/dist/packages/runtime/build/runtime.js +7 -0
- package/dist/packages/runtime/build/source-files.d.ts +58 -0
- package/dist/packages/runtime/build/source-files.js +193 -0
- package/dist/packages/runtime/build/source-inventory.d.ts +28 -0
- package/dist/packages/runtime/build/source-inventory.js +512 -0
- package/dist/packages/runtime/build/source-manifest.d.ts +63 -0
- package/dist/packages/runtime/build/source-manifest.js +220 -0
- package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
- package/dist/packages/runtime/build/stage-evidence.js +386 -0
- package/dist/packages/runtime/build/stage-manifest.d.ts +45 -0
- package/dist/packages/runtime/build/stage-manifest.js +1125 -0
- package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
- package/dist/packages/runtime/build/stage-reuse.js +154 -0
- package/dist/packages/runtime/build/stage-session.d.ts +81 -0
- package/dist/packages/runtime/build/stage-session.js +308 -0
- package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
- package/dist/packages/runtime/build/state-artifacts.js +14 -0
- package/dist/packages/runtime/build/state-health.d.ts +4 -0
- package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
- package/dist/packages/runtime/build/state-io.d.ts +12 -0
- package/dist/packages/runtime/build/state-io.js +118 -0
- package/dist/packages/runtime/build/state-view.d.ts +5 -0
- package/dist/packages/runtime/build/state-view.js +121 -0
- package/dist/packages/runtime/build/state.d.ts +7 -0
- package/dist/packages/runtime/build/state.js +12 -0
- package/dist/packages/runtime/build/summary-coverage-index.d.ts +21 -0
- package/dist/packages/runtime/build/summary-coverage-index.js +189 -0
- package/dist/packages/runtime/build/traces.d.ts +30 -0
- package/dist/packages/runtime/build/traces.js +133 -0
- package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
- package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +49 -36
- package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
- package/dist/packages/{engine → runtime}/build/validate.js +26 -26
- package/dist/packages/{engine → runtime}/client.d.ts +18 -18
- package/dist/packages/{engine → runtime}/client.js +48 -36
- package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
- package/dist/packages/{engine → runtime}/connection-config.js +9 -8
- package/dist/packages/runtime/context-checks.d.ts +10 -0
- package/dist/packages/runtime/context-checks.js +127 -0
- package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
- package/dist/packages/runtime/context-graph-scaffold.js +135 -0
- package/dist/packages/runtime/context-graph-semantic-graph.d.ts +9 -0
- package/dist/packages/runtime/context-graph-semantic-graph.js +416 -0
- package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
- package/dist/packages/runtime/entitlement-guard.js +70 -0
- package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
- package/dist/packages/{engine → runtime}/execution/index.js +1 -1
- package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +272 -191
- package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
- package/dist/packages/runtime/index.d.ts +29 -0
- package/dist/packages/runtime/index.js +21 -0
- package/dist/packages/runtime/instance-paths.d.ts +30 -0
- package/dist/packages/runtime/instance-paths.js +29 -0
- package/dist/packages/runtime/native-run-handlers.d.ts +63 -0
- package/dist/packages/{engine → runtime}/native-run-handlers.js +217 -166
- package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
- package/dist/packages/runtime/plan-artifact-contract.js +42 -0
- package/dist/packages/runtime/project-entries.d.ts +11 -0
- package/dist/packages/runtime/project-entries.js +49 -0
- package/dist/packages/runtime/project-source-state.d.ts +26 -0
- package/dist/packages/runtime/project-source-state.js +56 -0
- package/dist/packages/runtime/project-store.d.ts +90 -0
- package/dist/packages/runtime/project-store.js +195 -0
- package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
- package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
- package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
- package/dist/packages/{engine → runtime}/run-observability.js +174 -87
- package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
- package/dist/packages/runtime/runtime-action-proposals.js +542 -0
- package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
- package/dist/packages/runtime/runtime-build-plans.js +175 -0
- package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
- package/dist/packages/runtime/runtime-build-runs.js +555 -0
- package/dist/packages/runtime/runtime-caches.d.ts +117 -0
- package/dist/packages/runtime/runtime-caches.js +266 -0
- package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
- package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
- package/dist/packages/runtime/runtime-executor.d.ts +22 -0
- package/dist/packages/runtime/runtime-executor.js +131 -0
- package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
- package/dist/packages/runtime/runtime-jobs.js +463 -0
- package/dist/packages/runtime/runtime-observability.d.ts +11 -0
- package/dist/packages/runtime/runtime-observability.js +39 -0
- package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
- package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
- package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
- package/dist/packages/runtime/runtime-project-mutations.js +65 -0
- package/dist/packages/runtime/runtime-project-reads.d.ts +18 -0
- package/dist/packages/runtime/runtime-project-reads.js +574 -0
- package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
- package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
- package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +23 -16
- package/dist/packages/{engine → runtime}/runtime-resource-builders.js +58 -46
- package/dist/packages/runtime/runtime-status.d.ts +14 -0
- package/dist/packages/runtime/runtime-status.js +15 -0
- package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
- package/dist/packages/runtime/runtime-verify-runs.js +296 -0
- package/dist/packages/runtime/runtime.d.ts +1582 -0
- package/dist/packages/runtime/runtime.js +431 -0
- package/dist/packages/runtime/schemas/actions.d.ts +1206 -0
- package/dist/packages/runtime/schemas/actions.js +117 -0
- package/dist/packages/runtime/schemas/agents.d.ts +104 -0
- package/dist/packages/runtime/schemas/agents.js +74 -0
- package/dist/packages/runtime/schemas/build-plans.d.ts +1132 -0
- package/dist/packages/runtime/schemas/build-plans.js +141 -0
- package/dist/packages/runtime/schemas/context-graphs.d.ts +1522 -0
- package/dist/packages/runtime/schemas/context-graphs.js +110 -0
- package/dist/packages/runtime/schemas/files.d.ts +227 -0
- package/dist/packages/runtime/schemas/files.js +28 -0
- package/dist/packages/runtime/schemas/index.d.ts +9 -0
- package/dist/packages/runtime/schemas/index.js +13 -0
- package/dist/packages/runtime/schemas/instance.d.ts +141 -0
- package/dist/packages/runtime/schemas/instance.js +143 -0
- package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
- package/dist/packages/runtime/schemas/jobs.js +107 -0
- package/dist/packages/runtime/schemas/projects.d.ts +366 -0
- package/dist/packages/runtime/schemas/projects.js +160 -0
- package/dist/packages/runtime/schemas/runs.d.ts +3445 -0
- package/dist/packages/runtime/schemas/runs.js +115 -0
- package/dist/packages/runtime/service/index.d.ts +3 -0
- package/dist/packages/runtime/service/index.js +3 -0
- package/dist/packages/runtime/service/openapi.d.ts +7 -0
- package/dist/packages/runtime/service/openapi.js +118 -0
- package/dist/packages/runtime/service/operations.d.ts +3011 -0
- package/dist/packages/runtime/service/operations.js +375 -0
- package/dist/packages/runtime/service/routes.d.ts +114 -0
- package/dist/packages/runtime/service/routes.js +128 -0
- package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
- package/dist/packages/runtime/service/server-api-files.js +85 -0
- package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
- package/dist/packages/runtime/service/server-app-boot.js +46 -0
- package/dist/packages/runtime/service/server-guards.d.ts +63 -0
- package/dist/packages/runtime/service/server-guards.js +181 -0
- package/dist/packages/runtime/service/server-helpers.d.ts +38 -0
- package/dist/packages/runtime/service/server-helpers.js +108 -0
- package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
- package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
- package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-action-proposals.js +45 -0
- package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-agents.js +132 -0
- package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
- package/dist/packages/runtime/service/server-routes-auth.js +138 -0
- package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-build-plans.js +86 -0
- package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
- package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
- package/dist/packages/runtime/service/server-routes-events.js +99 -0
- package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
- package/dist/packages/runtime/service/server-routes-project-context.js +287 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.js +137 -0
- package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
- package/dist/packages/runtime/service/server-routes-project-runs.js +88 -0
- package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-projects.js +96 -0
- package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-runs.js +119 -0
- package/dist/packages/runtime/service/server.d.ts +37 -0
- package/dist/packages/runtime/service/server.js +300 -0
- package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
- package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
- package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
- package/dist/packages/runtime/verify/benchmark-run.js +303 -0
- package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
- package/dist/packages/{engine → runtime}/verify/index.js +1 -1
- package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
- package/dist/packages/{engine → runtime}/verify/lib/schema.js +38 -18
- package/dist/packages/runtime/verify/test-file-guard.d.ts +2 -0
- package/dist/packages/runtime/verify/test-file-guard.js +29 -0
- package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +7 -0
- package/dist/packages/{engine → runtime}/verify/verify-execution.js +119 -45
- package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +5 -4
- package/dist/packages/runtime/verify/verify-paths.js +65 -0
- package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
- package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
- package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
- package/dist/packages/runtime/verify/verify-specs.js +126 -0
- package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
- package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
- package/dist/packages/runtime/verify/verify-types.js +1 -0
- package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
- package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
- package/dist/packages/runtime/wire-schemas.d.ts +18 -0
- package/dist/packages/runtime/wire-schemas.js +27 -0
- package/package.json +32 -30
- package/public-repo/CONTRIBUTING.md +16 -18
- package/public-repo/README.md +119 -282
- package/public-repo/SECURITY.md +3 -4
- package/public-repo/build-plans/interf-default/README.md +24 -16
- package/public-repo/build-plans/interf-default/build/stages/entrypoint/SKILL.md +74 -0
- package/public-repo/build-plans/interf-default/build/stages/knowledge/SKILL.md +95 -0
- package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +49 -4
- package/public-repo/build-plans/interf-default/build-plan.json +49 -39
- package/public-repo/build-plans/interf-default/build-plan.schema.json +59 -33
- package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
- package/public-repo/build-plans/interf-default/use/query/SKILL.md +18 -11
- package/public-repo/openapi/local-service.openapi.json +14227 -0
- package/public-repo/skills/interf/SKILL.md +508 -187
- package/dist/cli/commands/prep.d.ts +0 -2
- package/dist/cli/commands/prep.js +0 -240
- package/dist/cli/commands/test.d.ts +0 -10
- package/dist/cli/commands/test.js +0 -85
- package/dist/cli/commands/web.d.ts +0 -2
- package/dist/cli/commands/web.js +0 -286
- package/dist/interf-ui/404.html +0 -1
- package/dist/interf-ui/__next.__PAGE__.txt +0 -10
- package/dist/interf-ui/__next._full.txt +0 -20
- package/dist/interf-ui/__next._head.txt +0 -5
- package/dist/interf-ui/__next._index.txt +0 -5
- package/dist/interf-ui/__next._tree.txt +0 -5
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
- package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
- package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
- package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
- package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
- package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
- package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
- package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
- package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
- package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
- package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
- package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
- package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
- package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
- package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
- package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
- package/dist/interf-ui/_not-found/__next._full.txt +0 -15
- package/dist/interf-ui/_not-found/__next._head.txt +0 -5
- package/dist/interf-ui/_not-found/__next._index.txt +0 -5
- package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
- package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
- package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
- package/dist/interf-ui/_not-found.html +0 -1
- package/dist/interf-ui/_not-found.txt +0 -15
- package/dist/interf-ui/index.html +0 -1
- package/dist/interf-ui/index.txt +0 -20
- package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
- package/dist/packages/contracts/lib/preparation-paths.js +0 -177
- package/dist/packages/engine/action-definitions.d.ts +0 -407
- package/dist/packages/engine/action-definitions.js +0 -1158
- package/dist/packages/engine/action-values.d.ts +0 -1
- package/dist/packages/engine/action-values.js +0 -1
- package/dist/packages/engine/agents/lib/args.d.ts +0 -4
- package/dist/packages/engine/agents/lib/args.js +0 -52
- package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
- package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
- package/dist/packages/engine/agents/lib/constants.js +0 -28
- package/dist/packages/engine/agents/lib/logs.d.ts +0 -2
- package/dist/packages/engine/agents/lib/logs.js +0 -17
- package/dist/packages/engine/agents/lib/render.d.ts +0 -8
- package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
- package/dist/packages/engine/agents/lib/schema.js +0 -7
- package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
- package/dist/packages/engine/agents/lib/shells.js +0 -1052
- package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
- package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
- package/dist/packages/engine/build/billing-events.d.ts +0 -89
- package/dist/packages/engine/build/build-pipeline.js +0 -175
- package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
- package/dist/packages/engine/build/build-plan-runs.js +0 -31
- package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
- package/dist/packages/engine/build/build-stage-plan.js +0 -100
- package/dist/packages/engine/build/build-stage-runner.js +0 -94
- package/dist/packages/engine/build/build-target.js +0 -16
- package/dist/packages/engine/build/check-evaluator.js +0 -298
- package/dist/packages/engine/build/lib/schema.js +0 -316
- package/dist/packages/engine/build/reset.d.ts +0 -2
- package/dist/packages/engine/build/reset.js +0 -74
- package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
- package/dist/packages/engine/build/runtime-paths.d.ts +0 -8
- package/dist/packages/engine/build/runtime-paths.js +0 -26
- package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
- package/dist/packages/engine/build/runtime-runs.js +0 -224
- package/dist/packages/engine/build/runtime.d.ts +0 -5
- package/dist/packages/engine/build/runtime.js +0 -4
- package/dist/packages/engine/build/source-files.d.ts +0 -46
- package/dist/packages/engine/build/source-files.js +0 -149
- package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
- package/dist/packages/engine/build/state-artifacts.js +0 -14
- package/dist/packages/engine/build/state-health.d.ts +0 -4
- package/dist/packages/engine/build/state-io.d.ts +0 -11
- package/dist/packages/engine/build/state-io.js +0 -82
- package/dist/packages/engine/build/state-paths.d.ts +0 -5
- package/dist/packages/engine/build/state-paths.js +0 -16
- package/dist/packages/engine/build/state-view.d.ts +0 -5
- package/dist/packages/engine/build/state-view.js +0 -94
- package/dist/packages/engine/build/state.d.ts +0 -7
- package/dist/packages/engine/build/state.js +0 -12
- package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
- package/dist/packages/engine/build/validate-helpers.js +0 -41
- package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
- package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
- package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
- package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
- package/dist/packages/engine/cloud-seams.d.ts +0 -115
- package/dist/packages/engine/cloud-seams.js +0 -84
- package/dist/packages/engine/index.d.ts +0 -22
- package/dist/packages/engine/index.js +0 -15
- package/dist/packages/engine/instance-paths.d.ts +0 -106
- package/dist/packages/engine/instance-paths.js +0 -171
- package/dist/packages/engine/lib/schema.d.ts +0 -6304
- package/dist/packages/engine/lib/schema.js +0 -730
- package/dist/packages/engine/native-run-handlers.d.ts +0 -25
- package/dist/packages/engine/preparation-store.d.ts +0 -105
- package/dist/packages/engine/preparation-store.js +0 -213
- package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
- package/dist/packages/engine/readiness-check-draft.js +0 -111
- package/dist/packages/engine/requested-artifacts.d.ts +0 -5
- package/dist/packages/engine/routes.d.ts +0 -85
- package/dist/packages/engine/routes.js +0 -99
- package/dist/packages/engine/runtime-caches.d.ts +0 -76
- package/dist/packages/engine/runtime-caches.js +0 -191
- package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
- package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
- package/dist/packages/engine/runtime.d.ts +0 -371
- package/dist/packages/engine/runtime.js +0 -2463
- package/dist/packages/engine/server.d.ts +0 -58
- package/dist/packages/engine/server.js +0 -1399
- package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
- package/dist/packages/engine/verify/readiness-check-run.js +0 -265
- package/dist/packages/engine/verify/verify-paths.js +0 -61
- package/dist/packages/engine/verify/verify-sandbox.js +0 -88
- package/dist/packages/engine/verify/verify-specs.js +0 -114
- package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
- package/dist/packages/engine/wire-schemas.d.ts +0 -547
- package/dist/packages/engine/wire-schemas.js +0 -59
- package/dist/packages/project/index.d.ts +0 -9
- package/dist/packages/project/interf-bootstrap.d.ts +0 -1
- package/dist/packages/project/interf-bootstrap.js +0 -1
- package/dist/packages/project/interf-scaffold.d.ts +0 -3
- package/dist/packages/project/interf-scaffold.js +0 -136
- package/dist/packages/project/interf.d.ts +0 -4
- package/dist/packages/project/interf.js +0 -3
- package/dist/packages/project/lib/schema.d.ts +0 -328
- package/dist/packages/project/lib/schema.js +0 -136
- package/dist/packages/project/preparation-entries.d.ts +0 -11
- package/dist/packages/project/preparation-entries.js +0 -49
- package/dist/packages/project/source-config.d.ts +0 -46
- package/dist/packages/project/source-config.js +0 -394
- package/dist/packages/project/source-folders.d.ts +0 -11
- package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +0 -27
- package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +0 -21
- package/public-repo/plugins/README.md +0 -9
- package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
- package/public-repo/plugins/interf/.mcp.json +0 -12
- package/public-repo/plugins/interf/README.md +0 -32
- package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
- /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
- /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
- /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
- /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
- /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import { basename } from "node:path";
|
|
2
|
-
import { readInterfConfig,
|
|
3
|
-
import {
|
|
4
|
-
import { loadRuntimeRun } from "./runtime.js";
|
|
2
|
+
import { readInterfConfig, } from "../../projects/interf-detect.js";
|
|
3
|
+
import { loadExecutionStageLedger } from "./runtime.js";
|
|
5
4
|
import { loadState } from "./state-io.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { loadContextGraphSourceManifest } from "./source-manifest.js";
|
|
6
|
+
import { validateContextGraph, } from "./validate.js";
|
|
7
|
+
import { listBuildPlanContextArtifacts, readBuildPlanContextFile } from "./context-graph-schema.js";
|
|
8
|
+
import { buildPlanPackagePathForContextGraph } from "./context-graph-paths.js";
|
|
9
9
|
import { getActiveBuildPlan, resolveRequiredBuildPlanFromConfig } from "../../build-plans/package/build-plan-definitions.js";
|
|
10
10
|
import { countBuildArtifactsAtPath } from "./artifact-counts.js";
|
|
11
|
-
export function
|
|
11
|
+
export function computeContextGraphHealth(dirPath) {
|
|
12
12
|
const now = new Date().toISOString();
|
|
13
13
|
const config = readInterfConfig(dirPath);
|
|
14
14
|
const targetName = config?.name ?? basename(dirPath);
|
|
15
|
-
const
|
|
16
|
-
const sourceTotal = config ? discoverSourceFiles(sourcePath, dirPath).totalCount : 0;
|
|
15
|
+
const sourceTotal = loadContextGraphSourceManifest(dirPath)?.source_total ?? 0;
|
|
17
16
|
const state = loadState(dirPath);
|
|
18
|
-
const
|
|
19
|
-
const activeRun =
|
|
17
|
+
const buildPlanValidation = validateContextGraph(dirPath);
|
|
18
|
+
const activeRun = loadExecutionStageLedger(dirPath);
|
|
20
19
|
const buildPlanId = config
|
|
21
20
|
? resolveRequiredBuildPlanFromConfig(config, `.interf/interf.json for ${dirPath}`)
|
|
22
21
|
: null;
|
|
@@ -29,14 +28,10 @@ export function computeVerifiableContextHealth(dirPath) {
|
|
|
29
28
|
buildPlan = null;
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const completedStages = stageResults.filter((entry) => entry.validation.ok).length;
|
|
37
|
-
const firstFailed = stageResults.find((entry) => !entry.validation.ok) ?? null;
|
|
38
|
-
const buildPlanValidation = validateVerifiableContext(dirPath);
|
|
39
|
-
const schema = readBuildPlanContextFile(buildPlanPackagePathForVerifiableContext(dirPath));
|
|
31
|
+
const completedStages = buildPlanValidation.counts.completed_stages ?? 0;
|
|
32
|
+
const firstFailedStage = Object.entries(buildPlanValidation.stage_results)
|
|
33
|
+
.find(([, ok]) => !ok)?.[0] ?? null;
|
|
34
|
+
const schema = readBuildPlanContextFile(buildPlanPackagePathForContextGraph(dirPath));
|
|
40
35
|
const artifactMetrics = Object.fromEntries((schema ? listBuildPlanContextArtifacts(schema) : []).map((artifact) => [
|
|
41
36
|
`artifact_${artifact.id}`,
|
|
42
37
|
countBuildArtifactsAtPath(dirPath, artifact.path, artifact.kind),
|
|
@@ -45,7 +40,7 @@ export function computeVerifiableContextHealth(dirPath) {
|
|
|
45
40
|
let stage = "idle";
|
|
46
41
|
let summary = "Idle — no source files have been built yet.";
|
|
47
42
|
const errors = buildPlanValidation.errors.length;
|
|
48
|
-
if (!
|
|
43
|
+
if (!buildPlanValidation.checks.config_present || !buildPlanValidation.checks.config_valid || !buildPlanValidation.checks.config_type_match || !buildPlanValidation.checks.build_plan_valid || !buildPlanValidation.checks.schema_valid) {
|
|
49
44
|
status = "failed";
|
|
50
45
|
stage = "failed";
|
|
51
46
|
summary = buildPlanValidation.summary;
|
|
@@ -72,20 +67,20 @@ export function computeVerifiableContextHealth(dirPath) {
|
|
|
72
67
|
}
|
|
73
68
|
else {
|
|
74
69
|
status = "stale";
|
|
75
|
-
stage =
|
|
76
|
-
summary =
|
|
70
|
+
stage = firstFailedStage ?? buildPlanValidation.stage;
|
|
71
|
+
summary = buildPlanValidation.summary;
|
|
77
72
|
}
|
|
78
73
|
const checks = {
|
|
79
|
-
...
|
|
74
|
+
...buildPlanValidation.checks,
|
|
80
75
|
...(buildPlan
|
|
81
76
|
? Object.fromEntries(buildPlan.stages.map((buildPlanStage) => [
|
|
82
77
|
`stage_${buildPlanStage.id}_ok`,
|
|
83
|
-
|
|
78
|
+
buildPlanValidation.stage_results[buildPlanStage.id] ?? false,
|
|
84
79
|
]))
|
|
85
80
|
: {}),
|
|
86
81
|
};
|
|
87
82
|
return {
|
|
88
|
-
kind: "
|
|
83
|
+
kind: "context-graph-health",
|
|
89
84
|
version: 2,
|
|
90
85
|
generated_at: now,
|
|
91
86
|
target_name: targetName,
|
|
@@ -103,7 +98,7 @@ export function computeVerifiableContextHealth(dirPath) {
|
|
|
103
98
|
checks,
|
|
104
99
|
};
|
|
105
100
|
}
|
|
106
|
-
export function
|
|
101
|
+
export function resolveContextGraphStatus(..._args) {
|
|
107
102
|
const state = _args[_args.length - 1];
|
|
108
103
|
if (state?.error_count && state.error_count > 0)
|
|
109
104
|
return "failed";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ContextGraphHealth, type ContextGraphState, type ContextGraphViewSpec, type SourceFiles, type SourceManifest, type SourceState } from "./lib/schema.js";
|
|
2
|
+
export declare function loadState<T>(dirPath: string): T | null;
|
|
3
|
+
export declare function saveState<T>(dirPath: string, state: T): void;
|
|
4
|
+
export declare function loadContextGraphHealth(dirPath: string): ContextGraphHealth | null;
|
|
5
|
+
export declare function saveContextGraphHealth(dirPath: string, health: ContextGraphHealth): void;
|
|
6
|
+
export declare function loadContextGraphViewSpec(dirPath: string): ContextGraphViewSpec | null;
|
|
7
|
+
export declare function saveContextGraphViewSpec(dirPath: string, viewSpec: ContextGraphViewSpec): void;
|
|
8
|
+
export declare function loadContextGraphSourceManifest(dirPath: string): SourceManifest | null;
|
|
9
|
+
export declare function loadContextGraphSourceFiles(dirPath: string): SourceFiles | null;
|
|
10
|
+
export declare function loadContextGraphSourceState(dirPath: string): SourceState | null;
|
|
11
|
+
export declare function saveEmptyExecutionInventory(dirPath: string): void;
|
|
12
|
+
export declare function initContextGraphState(): ContextGraphState;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { existsSync, readFileSync, } from "node:fs";
|
|
2
|
+
import { warnInterf } from "../../contracts/utils/logger.js";
|
|
3
|
+
import { readJsonFileUnchecked, readJsonFileWithSchema } from "../../contracts/utils/parse.js";
|
|
4
|
+
import { ContextGraphHealthSchema, ContextGraphStateSchema, ContextGraphViewSpecSchema, SourceFilesSchema, SourceManifestSchema, SourceStateSchema, } from "./lib/schema.js";
|
|
5
|
+
import { emptyExecutionInventory, } from "./runtime-inventory.js";
|
|
6
|
+
import { contextGraphExecutionInventoryPath, contextGraphRuntimeHealthPath, contextGraphRuntimeSourceFilesPath, contextGraphRuntimeSourceManifestPath, contextGraphRuntimeSourceStatePath, contextGraphRuntimeStatePath, contextGraphRuntimeViewSpecPath, } from "./context-graph-paths.js";
|
|
7
|
+
import { writeJsonAtomic } from "./atomic-fs.js";
|
|
8
|
+
export function loadState(dirPath) {
|
|
9
|
+
const path = contextGraphRuntimeStatePath(dirPath);
|
|
10
|
+
if (!existsSync(path))
|
|
11
|
+
return null;
|
|
12
|
+
const raw = readJsonFileUnchecked(path, "runtime state");
|
|
13
|
+
if (raw === null)
|
|
14
|
+
return null;
|
|
15
|
+
const parsed = ContextGraphStateSchema.safeParse(raw);
|
|
16
|
+
if (parsed.success) {
|
|
17
|
+
return parsed.data;
|
|
18
|
+
}
|
|
19
|
+
warnInterf(`Warning: failed to validate runtime state at ${path}: ${parsed.error.issues.map((issue) => issue.message).join("; ")}`);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
export function saveState(dirPath, state) {
|
|
23
|
+
writeJsonAtomic(contextGraphRuntimeStatePath(dirPath), state);
|
|
24
|
+
}
|
|
25
|
+
export function loadContextGraphHealth(dirPath) {
|
|
26
|
+
const path = contextGraphRuntimeHealthPath(dirPath);
|
|
27
|
+
if (!existsSync(path))
|
|
28
|
+
return null;
|
|
29
|
+
return readJsonFileWithSchema(path, "context-graph health", ContextGraphHealthSchema);
|
|
30
|
+
}
|
|
31
|
+
export function saveContextGraphHealth(dirPath, health) {
|
|
32
|
+
writeJsonAtomic(contextGraphRuntimeHealthPath(dirPath), health);
|
|
33
|
+
}
|
|
34
|
+
export function loadContextGraphViewSpec(dirPath) {
|
|
35
|
+
const path = contextGraphRuntimeViewSpecPath(dirPath);
|
|
36
|
+
if (!existsSync(path))
|
|
37
|
+
return null;
|
|
38
|
+
return loadViewSpec(path, ContextGraphViewSpecSchema);
|
|
39
|
+
}
|
|
40
|
+
export function saveContextGraphViewSpec(dirPath, viewSpec) {
|
|
41
|
+
writeJsonAtomic(contextGraphRuntimeViewSpecPath(dirPath), viewSpec);
|
|
42
|
+
}
|
|
43
|
+
export function loadContextGraphSourceManifest(dirPath) {
|
|
44
|
+
const path = contextGraphRuntimeSourceManifestPath(dirPath);
|
|
45
|
+
if (!existsSync(path))
|
|
46
|
+
return null;
|
|
47
|
+
return readJsonFileWithSchema(path, "context-graph source manifest", SourceManifestSchema);
|
|
48
|
+
}
|
|
49
|
+
export function loadContextGraphSourceFiles(dirPath) {
|
|
50
|
+
const manifest = loadContextGraphSourceManifest(dirPath);
|
|
51
|
+
if (manifest) {
|
|
52
|
+
return SourceFilesSchema.parse({
|
|
53
|
+
kind: "interf-source-files",
|
|
54
|
+
version: 1,
|
|
55
|
+
generated_at: manifest.generated_at,
|
|
56
|
+
source: manifest.source,
|
|
57
|
+
source_total: manifest.source_total,
|
|
58
|
+
files: manifest.files.map((file) => ({
|
|
59
|
+
id: file.id,
|
|
60
|
+
path: file.path,
|
|
61
|
+
locator: file.locator,
|
|
62
|
+
...(typeof file.size_bytes === "number" ? { size_bytes: file.size_bytes } : {}),
|
|
63
|
+
})),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const path = contextGraphRuntimeSourceFilesPath(dirPath);
|
|
67
|
+
if (!existsSync(path))
|
|
68
|
+
return null;
|
|
69
|
+
return readJsonFileWithSchema(path, "context-graph source files", SourceFilesSchema);
|
|
70
|
+
}
|
|
71
|
+
export function loadContextGraphSourceState(dirPath) {
|
|
72
|
+
const manifest = loadContextGraphSourceManifest(dirPath);
|
|
73
|
+
if (manifest) {
|
|
74
|
+
return SourceStateSchema.parse({
|
|
75
|
+
kind: "interf-source-state",
|
|
76
|
+
version: 1,
|
|
77
|
+
graph_id: manifest.manifest_id,
|
|
78
|
+
generated_at: manifest.generated_at,
|
|
79
|
+
run_id: manifest.run_id,
|
|
80
|
+
source: manifest.source,
|
|
81
|
+
source_total: manifest.source_total,
|
|
82
|
+
files: manifest.files.map((file) => ({
|
|
83
|
+
id: file.id,
|
|
84
|
+
path: file.path,
|
|
85
|
+
locator: file.locator,
|
|
86
|
+
...(typeof file.size_bytes === "number" ? { size_bytes: file.size_bytes } : {}),
|
|
87
|
+
})),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const path = contextGraphRuntimeSourceStatePath(dirPath);
|
|
91
|
+
if (!existsSync(path))
|
|
92
|
+
return null;
|
|
93
|
+
return readJsonFileWithSchema(path, "context-graph source state", SourceStateSchema);
|
|
94
|
+
}
|
|
95
|
+
export function saveEmptyExecutionInventory(dirPath) {
|
|
96
|
+
writeJsonAtomic(contextGraphExecutionInventoryPath(dirPath), emptyExecutionInventory());
|
|
97
|
+
}
|
|
98
|
+
export function initContextGraphState() {
|
|
99
|
+
return {
|
|
100
|
+
version: 2,
|
|
101
|
+
pending: [],
|
|
102
|
+
stages: {},
|
|
103
|
+
last_add: null,
|
|
104
|
+
last_build: null,
|
|
105
|
+
warning_count: 0,
|
|
106
|
+
error_count: 0,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function loadViewSpec(filePath, schema) {
|
|
110
|
+
try {
|
|
111
|
+
const raw = JSON.parse(readFileSync(filePath, "utf8"));
|
|
112
|
+
const parsed = schema.safeParse(raw);
|
|
113
|
+
return parsed.success ? parsed.data ?? null : null;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ContextGraphViewSpec, type SourceFiles, type SourceState } from "./lib/schema.js";
|
|
2
|
+
export declare function ensureContextGraphViewSpec(dirPath: string): ContextGraphViewSpec;
|
|
3
|
+
export declare function ensureContextGraphSourceFiles(dirPath: string): SourceFiles;
|
|
4
|
+
export declare function ensureContextGraphSourceState(dirPath: string, sourceFiles?: SourceFiles): SourceState;
|
|
5
|
+
export declare function normalizeContextGraphViewSpec(existing: ContextGraphViewSpec, defaults?: ContextGraphViewSpec): ContextGraphViewSpec;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { basename } from "node:path";
|
|
2
|
+
import { readInterfConfig, resolveSourceFolderPath } from "../../projects/interf-detect.js";
|
|
3
|
+
import { SourceFilesSchema, SourceStateSchema, } from "./lib/schema.js";
|
|
4
|
+
import { loadContextGraphSourceFiles, loadContextGraphSourceState, loadContextGraphViewSpec, saveContextGraphViewSpec, } from "./state-io.js";
|
|
5
|
+
import { loadContextGraphSourceManifest, sourceManifestToSourceFiles, sourceManifestToSourceState, } from "./source-manifest.js";
|
|
6
|
+
import { buildPlanPackagePathForContextGraph } from "./context-graph-paths.js";
|
|
7
|
+
import { listBuildPlanContextArtifacts, readBuildPlanContextFile } from "./context-graph-schema.js";
|
|
8
|
+
import { getActiveBuildPlan, resolveRequiredBuildPlanFromConfig } from "../../build-plans/package/build-plan-definitions.js";
|
|
9
|
+
export function ensureContextGraphViewSpec(dirPath) {
|
|
10
|
+
const existing = loadContextGraphViewSpec(dirPath);
|
|
11
|
+
const now = new Date().toISOString();
|
|
12
|
+
const contextGraphName = readInterfConfig(dirPath)?.name ?? basename(dirPath);
|
|
13
|
+
const defaults = buildDefaultContextGraphViewSpec(dirPath, contextGraphName, now);
|
|
14
|
+
if (existing) {
|
|
15
|
+
const normalized = normalizeContextGraphViewSpec(existing, defaults);
|
|
16
|
+
if (JSON.stringify(normalized) !== JSON.stringify(existing)) {
|
|
17
|
+
saveContextGraphViewSpec(dirPath, normalized);
|
|
18
|
+
}
|
|
19
|
+
return normalized;
|
|
20
|
+
}
|
|
21
|
+
saveContextGraphViewSpec(dirPath, defaults);
|
|
22
|
+
return defaults;
|
|
23
|
+
}
|
|
24
|
+
export function ensureContextGraphSourceFiles(dirPath) {
|
|
25
|
+
const existing = loadContextGraphSourceFiles(dirPath);
|
|
26
|
+
if (existing)
|
|
27
|
+
return existing;
|
|
28
|
+
const manifest = loadContextGraphSourceManifest(dirPath);
|
|
29
|
+
if (manifest)
|
|
30
|
+
return sourceManifestToSourceFiles(manifest);
|
|
31
|
+
const config = readInterfConfig(dirPath);
|
|
32
|
+
const now = new Date().toISOString();
|
|
33
|
+
const sourceFiles = SourceFilesSchema.parse({
|
|
34
|
+
kind: "interf-source-files",
|
|
35
|
+
version: 1,
|
|
36
|
+
generated_at: now,
|
|
37
|
+
source: {
|
|
38
|
+
id: "src-unscanned",
|
|
39
|
+
kind: "local-folder",
|
|
40
|
+
locator: resolveSourceFolderPath(dirPath, config),
|
|
41
|
+
},
|
|
42
|
+
source_total: 0,
|
|
43
|
+
files: [],
|
|
44
|
+
});
|
|
45
|
+
return sourceFiles;
|
|
46
|
+
}
|
|
47
|
+
export function ensureContextGraphSourceState(dirPath, sourceFiles) {
|
|
48
|
+
const existing = loadContextGraphSourceState(dirPath);
|
|
49
|
+
if (existing)
|
|
50
|
+
return existing;
|
|
51
|
+
const manifest = loadContextGraphSourceManifest(dirPath);
|
|
52
|
+
if (manifest)
|
|
53
|
+
return sourceManifestToSourceState(manifest);
|
|
54
|
+
const resolvedSourceFiles = sourceFiles ?? ensureContextGraphSourceFiles(dirPath);
|
|
55
|
+
const sourceState = SourceStateSchema.parse({
|
|
56
|
+
kind: "interf-source-state",
|
|
57
|
+
version: 1,
|
|
58
|
+
graph_id: "source-manifest-unrecorded",
|
|
59
|
+
generated_at: resolvedSourceFiles.generated_at,
|
|
60
|
+
run_id: null,
|
|
61
|
+
source: resolvedSourceFiles.source,
|
|
62
|
+
source_total: resolvedSourceFiles.source_total,
|
|
63
|
+
files: resolvedSourceFiles.files,
|
|
64
|
+
});
|
|
65
|
+
return sourceState;
|
|
66
|
+
}
|
|
67
|
+
export function normalizeContextGraphViewSpec(existing, defaults) {
|
|
68
|
+
const resolvedDefaults = defaults ?? existing;
|
|
69
|
+
return {
|
|
70
|
+
...resolvedDefaults,
|
|
71
|
+
...existing,
|
|
72
|
+
cards: Array.isArray(existing.cards) && existing.cards.length > 0
|
|
73
|
+
? existing.cards.map((card) => {
|
|
74
|
+
if (card.format !== "fraction" || card.denominator_metric)
|
|
75
|
+
return card;
|
|
76
|
+
const defaultCard = resolvedDefaults.cards.find((candidate) => candidate.id === card.id);
|
|
77
|
+
return {
|
|
78
|
+
...card,
|
|
79
|
+
denominator_metric: defaultCard?.denominator_metric ?? "stage_total",
|
|
80
|
+
};
|
|
81
|
+
})
|
|
82
|
+
: resolvedDefaults.cards,
|
|
83
|
+
sections: Array.isArray(existing.sections) && existing.sections.length > 0 ? existing.sections : resolvedDefaults.sections,
|
|
84
|
+
document_scope: Array.isArray(existing.document_scope) && existing.document_scope.length > 0
|
|
85
|
+
? existing.document_scope
|
|
86
|
+
: resolvedDefaults.document_scope,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function buildDefaultContextGraphViewSpec(dirPath, contextGraphName, generatedAt) {
|
|
90
|
+
const config = readInterfConfig(dirPath);
|
|
91
|
+
resolveRequiredBuildPlanFromConfig(config, `.interf/interf.json for ${dirPath}`);
|
|
92
|
+
const buildPlan = getActiveBuildPlan(dirPath);
|
|
93
|
+
const schema = readBuildPlanContextFile(buildPlanPackagePathForContextGraph(dirPath));
|
|
94
|
+
const schemaArtifacts = schema ? listBuildPlanContextArtifacts(schema) : [];
|
|
95
|
+
const outputDocumentPaths = schemaArtifacts
|
|
96
|
+
.map((artifact) => artifact.path);
|
|
97
|
+
const defaultNote = schemaArtifacts.find((artifact) => artifact.kind === "file")?.path ?? null;
|
|
98
|
+
return {
|
|
99
|
+
kind: "context-graph-view-spec",
|
|
100
|
+
version: 2,
|
|
101
|
+
generated_at: generatedAt,
|
|
102
|
+
target_name: contextGraphName,
|
|
103
|
+
health_source: ".interf/runtime/health.json",
|
|
104
|
+
state_source: ".interf/runtime/state.json",
|
|
105
|
+
default_note: defaultNote,
|
|
106
|
+
document_scope: outputDocumentPaths,
|
|
107
|
+
cards: [
|
|
108
|
+
{ id: "source-total", label: "Source Files", metric: "source_total", format: "number" },
|
|
109
|
+
{ id: "stage-total", label: "Stages", metric: "stage_total", format: "number" },
|
|
110
|
+
{ id: "completed-stages", label: "Completed", metric: "completed_stages", denominator_metric: "stage_total", format: "fraction" },
|
|
111
|
+
],
|
|
112
|
+
sections: [
|
|
113
|
+
{ id: "status", type: "status", title: "Build Status", path: ".interf/runtime/health.json" },
|
|
114
|
+
{ id: "cards", type: "cards", title: "Key Metrics", path: ".interf/runtime/health.json" },
|
|
115
|
+
...(outputDocumentPaths.length > 0
|
|
116
|
+
? [{ id: "outputs", type: "documents", title: "Requested outputs", paths: outputDocumentPaths }]
|
|
117
|
+
: []),
|
|
118
|
+
{ id: "build-plan", type: "documents", title: "Build Plan Docs", paths: ["build-plan/README.md", ...buildPlan.stages.map((stage) => `build-plan/build/stages/${stage.skillDir}`)] },
|
|
119
|
+
],
|
|
120
|
+
};
|
|
121
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { RuntimeStatus, BuildStage, ContextGraphState, ContextGraphHealth, ViewSection, ViewCard, ContextGraphViewSpec, SourceFiles, SourceState, StageInputs, } from "./lib/schema.js";
|
|
2
|
+
export { contextGraphRuntimeStatePath as statePath, contextGraphRuntimeHealthPath as healthPath, contextGraphRuntimeViewSpecPath as viewSpecPath, contextGraphRuntimeSourceFilesPath as sourceFilesPath, contextGraphRuntimeSourceStatePath as sourceStatePath, } from "./context-graph-paths.js";
|
|
3
|
+
export { loadState, saveState, loadContextGraphHealth, saveContextGraphHealth, loadContextGraphViewSpec, loadContextGraphSourceFiles, loadContextGraphSourceState, saveContextGraphViewSpec, initContextGraphState, } from "./state-io.js";
|
|
4
|
+
export { refreshContextGraphArtifacts, } from "./state-artifacts.js";
|
|
5
|
+
export { computeContextGraphHealth, resolveContextGraphStatus, resolveBuildStage, } from "./state-health.js";
|
|
6
|
+
export { ensureContextGraphViewSpec, ensureContextGraphSourceFiles, ensureContextGraphSourceState, normalizeContextGraphViewSpec, } from "./state-view.js";
|
|
7
|
+
export declare function initializeBuildRuntimeState(dirPath: string): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { contextGraphRuntimeStatePath as statePath, contextGraphRuntimeHealthPath as healthPath, contextGraphRuntimeViewSpecPath as viewSpecPath, contextGraphRuntimeSourceFilesPath as sourceFilesPath, contextGraphRuntimeSourceStatePath as sourceStatePath, } from "./context-graph-paths.js";
|
|
2
|
+
export { loadState, saveState, loadContextGraphHealth, saveContextGraphHealth, loadContextGraphViewSpec, loadContextGraphSourceFiles, loadContextGraphSourceState, saveContextGraphViewSpec, initContextGraphState, } from "./state-io.js";
|
|
3
|
+
export { refreshContextGraphArtifacts, } from "./state-artifacts.js";
|
|
4
|
+
export { computeContextGraphHealth, resolveContextGraphStatus, resolveBuildStage, } from "./state-health.js";
|
|
5
|
+
export { ensureContextGraphViewSpec, ensureContextGraphSourceFiles, ensureContextGraphSourceState, normalizeContextGraphViewSpec, } from "./state-view.js";
|
|
6
|
+
import { saveEmptyExecutionInventory, initContextGraphState, saveState } from "./state-io.js";
|
|
7
|
+
import { refreshContextGraphArtifacts } from "./state-artifacts.js";
|
|
8
|
+
export function initializeBuildRuntimeState(dirPath) {
|
|
9
|
+
saveState(dirPath, initContextGraphState());
|
|
10
|
+
saveEmptyExecutionInventory(dirPath);
|
|
11
|
+
refreshContextGraphArtifacts(dirPath, { ensureViewSpec: true });
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Stable delimiters around the managed coverage block in `home.md`. */
|
|
2
|
+
export declare const HOME_COVERAGE_BLOCK_BEGIN = "<!-- interf:coverage-index:begin -->";
|
|
3
|
+
export declare const HOME_COVERAGE_BLOCK_END = "<!-- interf:coverage-index:end -->";
|
|
4
|
+
export interface SummaryCoverageIndexResult {
|
|
5
|
+
/** Number of summary notes the home coverage block wikilinks. */
|
|
6
|
+
summaries: number;
|
|
7
|
+
/** The file the navigation links were written into. */
|
|
8
|
+
indexPath: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Ensure `home.md` wikilinks every summary the build produced, via a managed,
|
|
12
|
+
* deterministic coverage block. Call this at build finalization, AFTER the stage
|
|
13
|
+
* agents have produced summaries, BEFORE the connectivity check runs. Guarantees
|
|
14
|
+
* every summary note has an inbound graph edge from the entrypoint spine
|
|
15
|
+
* regardless of agent behavior.
|
|
16
|
+
*
|
|
17
|
+
* Returns the count of linked summaries, or `null` when there is nothing to index
|
|
18
|
+
* (no `summaries/` layer). Never throws into the build: assembly is already
|
|
19
|
+
* complete; this is the connectivity floor laid on top.
|
|
20
|
+
*/
|
|
21
|
+
export declare function ensureSummaryCoverageIndex(contextGraphPath: string): SummaryCoverageIndexResult | null;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic NAVIGATION layer that GUARANTEES every summary note is reachable
|
|
3
|
+
* through the link web, independent of agent behavior.
|
|
4
|
+
*
|
|
5
|
+
* THE PROBLEM IT SOLVES
|
|
6
|
+
* The summarize stage produces one summary note per Source file. Knowledge and
|
|
7
|
+
* entrypoint stages are SUPPOSED to wikilink those summaries into the graph, but
|
|
8
|
+
* that relies on the stage agent doing it. When the agent skips a summary, that
|
|
9
|
+
* summary becomes a free-floating island: no note links it, it links no note,
|
|
10
|
+
* undirected degree 0. The `graph_notes_connected` readiness check then fails,
|
|
11
|
+
* and the rendered semantic graph shows the coverage layer as scattered dots.
|
|
12
|
+
*
|
|
13
|
+
* THE GUARANTEE
|
|
14
|
+
* After the stage agents run, the build calls `ensureSummaryCoverageIndex`. It
|
|
15
|
+
* is pure structure, deterministic, and idempotent. It writes a managed
|
|
16
|
+
* "Coverage index" block into `home.md` — the entrypoint spine — holding a
|
|
17
|
+
* `[[full/graph/path]]` wikilink to EVERY summary note the build produced,
|
|
18
|
+
* grouped by source folder. A full graph path resolves uniquely in the
|
|
19
|
+
* connectivity check's link resolver, so each summary gains a guaranteed
|
|
20
|
+
* INBOUND edge from `home.md`. `home.md` is itself part of the fixed skeleton
|
|
21
|
+
* and the graph spine, so it is never an island. Result: no summary can be a
|
|
22
|
+
* free-floating island, regardless of what the stage agent linked.
|
|
23
|
+
*
|
|
24
|
+
* WHY home.md (NOT a new note under summaries/)
|
|
25
|
+
* `home.md` is exactly what entrypoints are for: routing the reader into the
|
|
26
|
+
* content layers. The entrypoint SKILL already models a "Coverage" section in
|
|
27
|
+
* home that links every summary. Putting the index in the spine — rather than a
|
|
28
|
+
* new note inside `summaries/` — keeps the `summaries/` layer purely
|
|
29
|
+
* source-grounded summary notes (so the per-summary content contract,
|
|
30
|
+
* `frontmatter_required_keys` / `frontmatter_valid` / source-ref checks, still
|
|
31
|
+
* holds for every file there) while still guaranteeing connectivity.
|
|
32
|
+
*
|
|
33
|
+
* WHAT IT IS NOT
|
|
34
|
+
* This is a NAVIGATION layer: links only, exactly what `home.md` / entrypoints
|
|
35
|
+
* are for. It invents NO knowledge, NO claims, NO project-specific content, and
|
|
36
|
+
* hardcodes NOTHING about any Source. It only adds `[[wikilinks]]` from the
|
|
37
|
+
* entrypoint spine down to summaries the build already produced. It respects the
|
|
38
|
+
* fixed Context Graph skeleton: it edits only `home.md`, adds no new top-level
|
|
39
|
+
* folder, and creates no note inside the content layers.
|
|
40
|
+
*
|
|
41
|
+
* IDEMPOTENT / DETERMINISTIC
|
|
42
|
+
* Same graph in → same home block out. The block is regenerated from the current
|
|
43
|
+
* on-disk summary set every call (notes sorted, grouped deterministically) and is
|
|
44
|
+
* delimited by stable markers, so re-running REPLACES it in place rather than
|
|
45
|
+
* appending. Agent-authored home content outside the markers is preserved.
|
|
46
|
+
* Re-running on an already-finalized graph is a no-op on content.
|
|
47
|
+
*
|
|
48
|
+
* Best-effort: a failure to write must never fail a build (the stage outputs are
|
|
49
|
+
* already on disk). The connectivity check still runs after and is the source of
|
|
50
|
+
* truth on readiness.
|
|
51
|
+
*/
|
|
52
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
53
|
+
import { join, relative } from "node:path";
|
|
54
|
+
import { writeFileAtomic } from "./atomic-fs.js";
|
|
55
|
+
import { listFilesRecursive } from "../../contracts/utils/filesystem.js";
|
|
56
|
+
import { isOutputMarkdownFile } from "./validate.js";
|
|
57
|
+
import { HOME_SPINE_FILE } from "../../contracts/lib/context-graph-layer.js";
|
|
58
|
+
const SUMMARIES_LAYER_DIR = "summaries";
|
|
59
|
+
/** Stable delimiters around the managed coverage block in `home.md`. */
|
|
60
|
+
export const HOME_COVERAGE_BLOCK_BEGIN = "<!-- interf:coverage-index:begin -->";
|
|
61
|
+
export const HOME_COVERAGE_BLOCK_END = "<!-- interf:coverage-index:end -->";
|
|
62
|
+
/**
|
|
63
|
+
* Normalize a graph-relative file path to the link form the connectivity check
|
|
64
|
+
* resolves: forward slashes, no leading `./`, no trailing `.md`. Mirrors
|
|
65
|
+
* `normalizeGraphPath` in check-evaluator so the wikilinks this module emits are
|
|
66
|
+
* the exact tokens that check credits as web edges.
|
|
67
|
+
*/
|
|
68
|
+
function toGraphPath(relativePath) {
|
|
69
|
+
return relativePath
|
|
70
|
+
.replaceAll("\\", "/")
|
|
71
|
+
.replace(/^\.\/+/, "")
|
|
72
|
+
.replace(/\.md$/i, "")
|
|
73
|
+
.replace(/\/+$/g, "");
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Every summary note in the graph, as graph paths, deterministically sorted.
|
|
77
|
+
* Uses the same `isOutputMarkdownFile` filter the connectivity check and the
|
|
78
|
+
* semantic-graph builder use, so the spine links exactly the notes the check
|
|
79
|
+
* scores for connectivity.
|
|
80
|
+
*/
|
|
81
|
+
function listSummaryNoteGraphPaths(contextGraphPath) {
|
|
82
|
+
const summariesDir = join(contextGraphPath, SUMMARIES_LAYER_DIR);
|
|
83
|
+
if (!existsSync(summariesDir))
|
|
84
|
+
return [];
|
|
85
|
+
return listFilesRecursive(summariesDir, isOutputMarkdownFile)
|
|
86
|
+
.map((file) => toGraphPath(relative(contextGraphPath, file)))
|
|
87
|
+
.sort((left, right) => left.localeCompare(right));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Group summary note graph paths by their source folder (the segment(s) between
|
|
91
|
+
* `summaries/` and the note leaf), purely for a navigable, grouped block.
|
|
92
|
+
* Grouping is cosmetic — connectivity is guaranteed by the per-note wikilink
|
|
93
|
+
* regardless of grouping — so a note directly under the layer falls into a single
|
|
94
|
+
* root group.
|
|
95
|
+
*/
|
|
96
|
+
function groupBySourceFolder(graphPaths) {
|
|
97
|
+
const groups = new Map();
|
|
98
|
+
for (const graphPath of graphPaths) {
|
|
99
|
+
const withoutLayer = graphPath.replace(new RegExp(`^${SUMMARIES_LAYER_DIR}/`), "");
|
|
100
|
+
const lastSlash = withoutLayer.lastIndexOf("/");
|
|
101
|
+
const group = lastSlash >= 0 ? withoutLayer.slice(0, lastSlash) : SUMMARIES_LAYER_DIR;
|
|
102
|
+
const bucket = groups.get(group);
|
|
103
|
+
if (bucket)
|
|
104
|
+
bucket.push(graphPath);
|
|
105
|
+
else
|
|
106
|
+
groups.set(group, [graphPath]);
|
|
107
|
+
}
|
|
108
|
+
return groups;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Render the managed coverage block: a stable-delimited `## Coverage` section
|
|
112
|
+
* that wikilinks every summary by its full graph path, grouped by source folder.
|
|
113
|
+
* Deterministic for a given summary set.
|
|
114
|
+
*/
|
|
115
|
+
function renderCoverageBlock(graphPaths) {
|
|
116
|
+
const lines = [
|
|
117
|
+
HOME_COVERAGE_BLOCK_BEGIN,
|
|
118
|
+
"## Coverage",
|
|
119
|
+
"",
|
|
120
|
+
"Every Source summary in this Context Graph, linked so the coverage layer stays",
|
|
121
|
+
"connected to this entrypoint. Navigation only — links, no new content.",
|
|
122
|
+
"",
|
|
123
|
+
];
|
|
124
|
+
const groups = groupBySourceFolder(graphPaths);
|
|
125
|
+
const groupNames = [...groups.keys()].sort((left, right) => left.localeCompare(right));
|
|
126
|
+
for (const group of groupNames) {
|
|
127
|
+
lines.push(`### ${group}`, "");
|
|
128
|
+
for (const graphPath of groups.get(group) ?? []) {
|
|
129
|
+
lines.push(`- [[${graphPath}]]`);
|
|
130
|
+
}
|
|
131
|
+
lines.push("");
|
|
132
|
+
}
|
|
133
|
+
lines.push(HOME_COVERAGE_BLOCK_END);
|
|
134
|
+
return lines.join("\n");
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Write or replace the managed coverage block in `home.md`. The block is
|
|
138
|
+
* delimited by stable markers and fully rewritten each call, so agent-authored
|
|
139
|
+
* spine content outside the markers is preserved and re-running is idempotent. If
|
|
140
|
+
* `home.md` does not exist yet, a minimal spine carrying the block is created —
|
|
141
|
+
* home is part of the fixed skeleton, so ensuring it exists is legitimate.
|
|
142
|
+
*/
|
|
143
|
+
function writeCoverageBlockIntoHome(contextGraphPath, block) {
|
|
144
|
+
const homePath = join(contextGraphPath, HOME_SPINE_FILE);
|
|
145
|
+
if (!existsSync(homePath)) {
|
|
146
|
+
writeFileAtomic(homePath, `# Home\n\n${block}\n`);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const current = readFileSync(homePath, "utf8");
|
|
150
|
+
const beginIndex = current.indexOf(HOME_COVERAGE_BLOCK_BEGIN);
|
|
151
|
+
const endIndex = current.indexOf(HOME_COVERAGE_BLOCK_END);
|
|
152
|
+
let next;
|
|
153
|
+
if (beginIndex >= 0 && endIndex > beginIndex) {
|
|
154
|
+
// Replace the existing managed block in place (idempotent).
|
|
155
|
+
const before = current.slice(0, beginIndex);
|
|
156
|
+
const after = current.slice(endIndex + HOME_COVERAGE_BLOCK_END.length);
|
|
157
|
+
next = `${before}${block}${after}`;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// Append the managed block once, separated from existing spine content.
|
|
161
|
+
const trimmed = current.replace(/\s+$/g, "");
|
|
162
|
+
next = `${trimmed}\n\n${block}\n`;
|
|
163
|
+
}
|
|
164
|
+
if (next !== current)
|
|
165
|
+
writeFileAtomic(homePath, next);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Ensure `home.md` wikilinks every summary the build produced, via a managed,
|
|
169
|
+
* deterministic coverage block. Call this at build finalization, AFTER the stage
|
|
170
|
+
* agents have produced summaries, BEFORE the connectivity check runs. Guarantees
|
|
171
|
+
* every summary note has an inbound graph edge from the entrypoint spine
|
|
172
|
+
* regardless of agent behavior.
|
|
173
|
+
*
|
|
174
|
+
* Returns the count of linked summaries, or `null` when there is nothing to index
|
|
175
|
+
* (no `summaries/` layer). Never throws into the build: assembly is already
|
|
176
|
+
* complete; this is the connectivity floor laid on top.
|
|
177
|
+
*/
|
|
178
|
+
export function ensureSummaryCoverageIndex(contextGraphPath) {
|
|
179
|
+
if (!existsSync(contextGraphPath))
|
|
180
|
+
return null;
|
|
181
|
+
const graphPaths = listSummaryNoteGraphPaths(contextGraphPath);
|
|
182
|
+
if (graphPaths.length === 0)
|
|
183
|
+
return null;
|
|
184
|
+
writeCoverageBlockIntoHome(contextGraphPath, renderCoverageBlock(graphPaths));
|
|
185
|
+
return {
|
|
186
|
+
summaries: graphPaths.length,
|
|
187
|
+
indexPath: HOME_SPINE_FILE,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Traces builder — evidence rollup for humans.
|
|
3
|
+
*
|
|
4
|
+
* Traces are the visible product. "20 of 20 files processed, 847 pages
|
|
5
|
+
* read, 18 charts extracted, 92 entities found, 12 checks passed." Each
|
|
6
|
+
* trace rolls up one quantifiable piece of evidence the user can verify
|
|
7
|
+
* at a glance.
|
|
8
|
+
*
|
|
9
|
+
* Traces are derived (not stored): the builder walks the current
|
|
10
|
+
* Context Graph's artifacts + Checks / benchmark results + source file index and
|
|
11
|
+
* rolls them into a single Traces wire shape per request. Future
|
|
12
|
+
* enhancement: cache the rolled-up Traces on the Context Graph manifest
|
|
13
|
+
* so Context Graph bundles ship with traces attached.
|
|
14
|
+
*/
|
|
15
|
+
import type { ArtifactStatus, Readiness } from "../../contracts/lib/schema.js";
|
|
16
|
+
import type { Traces } from "../../contracts/lib/project-schema.js";
|
|
17
|
+
export interface BuildTracesInput {
|
|
18
|
+
projectId: string;
|
|
19
|
+
graphId: string;
|
|
20
|
+
readiness: Readiness | null;
|
|
21
|
+
artifacts: readonly ArtifactStatus[];
|
|
22
|
+
sourceFileCount: number;
|
|
23
|
+
filesProcessed?: number;
|
|
24
|
+
generatedAt?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build a Traces wire shape from the inputs available after a Build.
|
|
28
|
+
* Empty/safe when the Project has no Context Graph yet.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildTraces(input: BuildTracesInput): Traces;
|