@interf/compiler 0.22.2 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +175 -234
- package/dist/bin-mcp.d.ts +2 -0
- package/dist/bin-mcp.js +63 -0
- package/dist/bin-runtime.d.ts +2 -0
- package/dist/bin-runtime.js +111 -0
- package/dist/cli/commands/agents.js +4 -4
- package/dist/cli/commands/auth.d.ts +20 -0
- package/dist/cli/commands/auth.js +161 -0
- package/dist/cli/commands/benchmark.d.ts +10 -0
- package/dist/cli/commands/benchmark.js +88 -0
- package/dist/cli/commands/build-plan.js +95 -103
- package/dist/cli/commands/build.d.ts +1 -1
- package/dist/cli/commands/build.js +16 -15
- package/dist/cli/commands/doctor.js +3 -3
- package/dist/cli/commands/graphs.d.ts +2 -0
- package/dist/cli/commands/graphs.js +199 -0
- package/dist/cli/commands/login.js +4 -6
- package/dist/cli/commands/logout.js +1 -1
- package/dist/cli/commands/mcp.d.ts +3 -2
- package/dist/cli/commands/mcp.js +721 -204
- package/dist/cli/commands/project.d.ts +2 -0
- package/dist/cli/commands/project.js +202 -0
- package/dist/cli/commands/reset.d.ts +1 -1
- package/dist/cli/commands/reset.js +10 -10
- package/dist/cli/commands/runs.js +52 -26
- package/dist/cli/commands/runtime.d.ts +24 -0
- package/dist/cli/commands/runtime.js +373 -0
- package/dist/cli/commands/status.d.ts +1 -0
- package/dist/cli/commands/status.js +33 -22
- package/dist/cli/commands/traces.d.ts +2 -0
- package/dist/cli/commands/traces.js +125 -0
- package/dist/cli/commands/wizard.js +155 -150
- package/dist/cli/index.d.ts +7 -4
- package/dist/cli/index.js +13 -7
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/packages/build-plans/authoring/brief.d.ts +517 -0
- package/dist/packages/build-plans/authoring/brief.js +89 -0
- package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +10 -10
- package/dist/packages/build-plans/authoring/build-plan-authoring.js +66 -26
- package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +1 -1
- package/dist/packages/build-plans/authoring/build-plan-edit-session.js +8 -2
- package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
- package/dist/packages/build-plans/authoring/build-plan-improvement.js +39 -42
- package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
- package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
- package/dist/packages/build-plans/build-plan-resolution.js +3 -3
- package/dist/packages/build-plans/index.d.ts +1 -1
- package/dist/packages/build-plans/index.js +1 -1
- package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -12
- package/dist/packages/build-plans/package/build-plan-definitions.js +40 -39
- package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
- package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
- package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
- package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
- package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +4 -4
- package/dist/packages/build-plans/package/build-plan-stage-runner.js +22 -11
- package/dist/packages/build-plans/package/builtin-build-plan.d.ts +5 -6
- package/dist/packages/build-plans/package/builtin-build-plan.js +7 -8
- package/dist/packages/build-plans/package/context-interface.d.ts +11 -9
- package/dist/packages/build-plans/package/context-interface.js +14 -33
- package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
- package/dist/packages/build-plans/package/interf-build-plan-package.js +56 -52
- package/dist/packages/build-plans/package/local-build-plans.d.ts +12 -10
- package/dist/packages/build-plans/package/local-build-plans.js +56 -31
- package/dist/packages/build-plans/package/user-build-plans.js +1 -1
- package/dist/packages/contracts/index.d.ts +4 -2
- package/dist/packages/contracts/index.js +2 -1
- package/dist/packages/contracts/lib/project-paths.d.ts +137 -0
- package/dist/packages/contracts/lib/project-paths.js +211 -0
- package/dist/packages/contracts/lib/project-schema.d.ts +160 -0
- package/dist/packages/contracts/lib/project-schema.js +113 -0
- package/dist/packages/contracts/lib/schema.d.ts +739 -80
- package/dist/packages/contracts/lib/schema.js +410 -75
- package/dist/packages/contracts/utils/parse.js +67 -0
- package/dist/packages/projects/index.d.ts +6 -0
- package/dist/packages/{project → projects}/index.js +0 -3
- package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
- package/dist/packages/{project → projects}/interf-detect.js +56 -50
- package/dist/packages/projects/interf.d.ts +2 -0
- package/dist/packages/projects/interf.js +1 -0
- package/dist/packages/projects/lib/schema.d.ts +79 -0
- package/dist/packages/projects/lib/schema.js +89 -0
- package/dist/packages/projects/source-config.d.ts +58 -0
- package/dist/packages/projects/source-config.js +352 -0
- package/dist/packages/projects/source-folders.d.ts +11 -0
- package/dist/packages/{project → projects}/source-folders.js +26 -26
- package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
- package/dist/packages/{engine → runtime}/action-planner.js +20 -22
- package/dist/packages/runtime/action-values.d.ts +1 -0
- package/dist/packages/runtime/action-values.js +1 -0
- package/dist/packages/runtime/actions/errors.d.ts +2 -0
- package/dist/packages/runtime/actions/errors.js +12 -0
- package/dist/packages/runtime/actions/fields.d.ts +82 -0
- package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
- package/dist/packages/runtime/actions/form-builders.js +619 -0
- package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
- package/dist/packages/runtime/actions/form-validators.js +128 -0
- package/dist/packages/runtime/actions/helpers.d.ts +11 -0
- package/dist/packages/runtime/actions/helpers.js +80 -0
- package/dist/packages/runtime/actions/index.d.ts +8 -0
- package/dist/packages/runtime/actions/index.js +11 -0
- package/dist/packages/runtime/actions/registry.d.ts +64 -0
- package/dist/packages/runtime/actions/registry.js +62 -0
- package/dist/packages/runtime/actions/requests.d.ts +45 -0
- package/dist/packages/runtime/actions/requests.js +158 -0
- package/dist/packages/runtime/actions/schemas.d.ts +154 -0
- package/dist/packages/runtime/actions/schemas.js +36 -0
- package/dist/packages/runtime/agent-handoff.d.ts +11 -0
- package/dist/packages/runtime/agent-handoff.js +101 -0
- package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
- package/dist/packages/{engine → runtime}/agents/index.js +1 -2
- package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
- package/dist/packages/runtime/agents/lib/args.js +24 -0
- package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
- package/dist/packages/runtime/agents/lib/constants.js +13 -0
- package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
- package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
- package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
- package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
- package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +8 -14
- package/dist/packages/{engine → runtime}/agents/lib/execution.js +14 -4
- package/dist/packages/{engine → runtime}/agents/lib/preflight.js +15 -13
- package/dist/packages/{engine → runtime}/agents/lib/render.js +4 -4
- package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
- package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
- package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
- package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
- package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
- package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
- package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
- package/dist/packages/runtime/agents/lib/shell-templates.js +452 -0
- package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
- package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
- package/dist/packages/runtime/agents/lib/shells.d.ts +63 -0
- package/dist/packages/runtime/agents/lib/shells.js +383 -0
- package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
- package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
- package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
- package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
- package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
- package/dist/packages/runtime/agents/providers/codex.js +64 -0
- package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
- package/dist/packages/runtime/agents/providers/cursor.js +24 -0
- package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
- package/dist/packages/runtime/agents/providers/index.js +31 -0
- package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
- package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
- package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
- package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
- package/dist/packages/{engine → runtime}/agents/role-executors.js +7 -6
- package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
- package/dist/packages/runtime/auth/account-context.d.ts +52 -0
- package/dist/packages/runtime/auth/account-context.js +68 -0
- package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
- package/dist/packages/runtime/auth/auth-flow.js +189 -0
- package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
- package/dist/packages/runtime/auth/jwt-validator.js +86 -0
- package/dist/packages/runtime/auth/keychain.d.ts +35 -0
- package/dist/packages/runtime/auth/keychain.js +85 -0
- package/dist/packages/runtime/auth/session-store.d.ts +38 -0
- package/dist/packages/runtime/auth/session-store.js +88 -0
- package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
- package/dist/packages/runtime/auth/workos-client.js +87 -0
- package/dist/packages/runtime/benchmark-question-draft.d.ts +20 -0
- package/dist/packages/runtime/benchmark-question-draft.js +124 -0
- package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
- package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
- package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +5 -5
- package/dist/packages/{engine → runtime}/build/artifact-status.js +25 -23
- package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
- package/dist/packages/runtime/build/atomic-fs.js +95 -0
- package/dist/packages/runtime/build/billing-events.d.ts +78 -0
- package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
- package/dist/packages/runtime/build/build-evidence.d.ts +15 -0
- package/dist/packages/runtime/build/build-evidence.js +173 -0
- package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
- package/dist/packages/runtime/build/build-pipeline.js +304 -0
- package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
- package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
- package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
- package/dist/packages/runtime/build/build-plan-runs.js +31 -0
- package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
- package/dist/packages/{engine → runtime}/build/build-stage-plan.js +28 -29
- package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
- package/dist/packages/runtime/build/build-stage-runner.js +165 -0
- package/dist/packages/{engine → runtime}/build/build-target.d.ts +4 -4
- package/dist/packages/runtime/build/build-target.js +16 -0
- package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
- package/dist/packages/runtime/build/check-evaluator.js +575 -0
- package/dist/packages/runtime/build/context-graph-paths.d.ts +51 -0
- package/dist/packages/runtime/build/context-graph-paths.js +133 -0
- package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
- package/dist/packages/runtime/build/context-graph-schema.js +39 -0
- package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
- package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
- package/dist/packages/{engine → runtime}/build/index.d.ts +5 -3
- package/dist/packages/{engine → runtime}/build/index.js +5 -3
- package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +221 -88
- package/dist/packages/{engine → runtime}/build/lib/schema.js +61 -41
- package/dist/packages/runtime/build/reset.d.ts +2 -0
- package/dist/packages/runtime/build/reset.js +62 -0
- package/dist/packages/{engine → runtime}/build/runtime-contracts.js +5 -5
- package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
- package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
- package/dist/packages/{engine → runtime}/build/runtime-paths.js +6 -6
- package/dist/packages/{engine → runtime}/build/runtime-prompt.js +7 -6
- package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
- package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
- package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
- package/dist/packages/runtime/build/runtime-runs.js +265 -0
- package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +6 -6
- package/dist/packages/runtime/build/runtime-types.js +1 -0
- package/dist/packages/runtime/build/runtime.d.ts +6 -0
- package/dist/packages/runtime/build/runtime.js +5 -0
- package/dist/packages/runtime/build/source-files.d.ts +58 -0
- package/dist/packages/runtime/build/source-files.js +184 -0
- package/dist/packages/runtime/build/source-inventory.d.ts +27 -0
- package/dist/packages/runtime/build/source-inventory.js +273 -0
- package/dist/packages/runtime/build/source-manifest.d.ts +52 -0
- package/dist/packages/runtime/build/source-manifest.js +192 -0
- package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
- package/dist/packages/runtime/build/stage-evidence.js +317 -0
- package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
- package/dist/packages/runtime/build/stage-reuse.js +142 -0
- package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
- package/dist/packages/runtime/build/state-artifacts.js +14 -0
- package/dist/packages/runtime/build/state-health.d.ts +4 -0
- package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
- package/dist/packages/runtime/build/state-io.d.ts +12 -0
- package/dist/packages/runtime/build/state-io.js +119 -0
- package/dist/packages/{engine → runtime}/build/state-paths.d.ts +3 -1
- package/dist/packages/runtime/build/state-paths.js +22 -0
- package/dist/packages/runtime/build/state-view.d.ts +5 -0
- package/dist/packages/{engine → runtime}/build/state-view.js +60 -33
- package/dist/packages/runtime/build/state.d.ts +7 -0
- package/dist/packages/runtime/build/state.js +12 -0
- package/dist/packages/runtime/build/traces.d.ts +30 -0
- package/dist/packages/runtime/build/traces.js +133 -0
- package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
- package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +48 -35
- package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
- package/dist/packages/{engine → runtime}/build/validate.js +26 -26
- package/dist/packages/{engine → runtime}/client.d.ts +15 -15
- package/dist/packages/{engine → runtime}/client.js +41 -24
- package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
- package/dist/packages/{engine → runtime}/connection-config.js +9 -8
- package/dist/packages/runtime/context-checks.d.ts +10 -0
- package/dist/packages/runtime/context-checks.js +114 -0
- package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
- package/dist/packages/runtime/context-graph-scaffold.js +134 -0
- package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
- package/dist/packages/runtime/entitlement-guard.js +70 -0
- package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
- package/dist/packages/{engine → runtime}/execution/index.js +1 -1
- package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +270 -192
- package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
- package/dist/packages/runtime/index.d.ts +29 -0
- package/dist/packages/runtime/index.js +21 -0
- package/dist/packages/runtime/instance-paths.d.ts +30 -0
- package/dist/packages/runtime/instance-paths.js +29 -0
- package/dist/packages/{engine → runtime}/native-run-handlers.d.ts +4 -4
- package/dist/packages/{engine → runtime}/native-run-handlers.js +184 -152
- package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
- package/dist/packages/runtime/plan-artifact-contract.js +42 -0
- package/dist/packages/runtime/project-entries.d.ts +11 -0
- package/dist/packages/runtime/project-entries.js +49 -0
- package/dist/packages/runtime/project-source-state.d.ts +26 -0
- package/dist/packages/runtime/project-source-state.js +53 -0
- package/dist/packages/runtime/project-store.d.ts +85 -0
- package/dist/packages/runtime/project-store.js +168 -0
- package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
- package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
- package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
- package/dist/packages/{engine → runtime}/run-observability.js +166 -84
- package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
- package/dist/packages/runtime/runtime-action-proposals.js +542 -0
- package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
- package/dist/packages/runtime/runtime-build-plans.js +131 -0
- package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
- package/dist/packages/runtime/runtime-build-runs.js +562 -0
- package/dist/packages/runtime/runtime-caches.d.ts +91 -0
- package/dist/packages/{engine → runtime}/runtime-caches.js +77 -49
- package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
- package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
- package/dist/packages/runtime/runtime-executor.d.ts +22 -0
- package/dist/packages/runtime/runtime-executor.js +131 -0
- package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
- package/dist/packages/runtime/runtime-jobs.js +463 -0
- package/dist/packages/runtime/runtime-observability.d.ts +11 -0
- package/dist/packages/runtime/runtime-observability.js +39 -0
- package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
- package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
- package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
- package/dist/packages/runtime/runtime-project-mutations.js +64 -0
- package/dist/packages/runtime/runtime-project-reads.d.ts +15 -0
- package/dist/packages/runtime/runtime-project-reads.js +381 -0
- package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
- package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
- package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +21 -16
- package/dist/packages/{engine → runtime}/runtime-resource-builders.js +48 -38
- package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
- package/dist/packages/runtime/runtime-verify-runs.js +295 -0
- package/dist/packages/runtime/runtime.d.ts +1165 -0
- package/dist/packages/runtime/runtime.js +417 -0
- package/dist/packages/runtime/schemas/actions.d.ts +1182 -0
- package/dist/packages/runtime/schemas/actions.js +117 -0
- package/dist/packages/runtime/schemas/agents.d.ts +76 -0
- package/dist/packages/runtime/schemas/agents.js +41 -0
- package/dist/packages/runtime/schemas/build-plans.d.ts +959 -0
- package/dist/packages/runtime/schemas/build-plans.js +107 -0
- package/dist/packages/runtime/schemas/files.d.ts +567 -0
- package/dist/packages/runtime/schemas/files.js +51 -0
- package/dist/packages/runtime/schemas/index.d.ts +8 -0
- package/dist/packages/runtime/schemas/index.js +12 -0
- package/dist/packages/runtime/schemas/instance.d.ts +141 -0
- package/dist/packages/runtime/schemas/instance.js +143 -0
- package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
- package/dist/packages/runtime/schemas/jobs.js +103 -0
- package/dist/packages/runtime/schemas/projects.d.ts +339 -0
- package/dist/packages/runtime/schemas/projects.js +136 -0
- package/dist/packages/runtime/schemas/runs.d.ts +2676 -0
- package/dist/packages/runtime/schemas/runs.js +98 -0
- package/dist/packages/runtime/service/index.d.ts +3 -0
- package/dist/packages/runtime/service/index.js +3 -0
- package/dist/packages/runtime/service/openapi.d.ts +7 -0
- package/dist/packages/runtime/service/openapi.js +117 -0
- package/dist/packages/runtime/service/operations.d.ts +1490 -0
- package/dist/packages/runtime/service/operations.js +245 -0
- package/dist/packages/runtime/service/routes.d.ts +106 -0
- package/dist/packages/runtime/service/routes.js +120 -0
- package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
- package/dist/packages/runtime/service/server-api-files.js +85 -0
- package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
- package/dist/packages/runtime/service/server-app-boot.js +46 -0
- package/dist/packages/runtime/service/server-guards.d.ts +63 -0
- package/dist/packages/runtime/service/server-guards.js +181 -0
- package/dist/packages/runtime/service/server-helpers.d.ts +27 -0
- package/dist/packages/runtime/service/server-helpers.js +89 -0
- package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
- package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
- package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-action-proposals.js +43 -0
- package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-agents.js +198 -0
- package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
- package/dist/packages/runtime/service/server-routes-auth.js +138 -0
- package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-build-plans.js +83 -0
- package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
- package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
- package/dist/packages/runtime/service/server-routes-events.js +99 -0
- package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
- package/dist/packages/runtime/service/server-routes-project-context.js +192 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
- package/dist/packages/runtime/service/server-routes-project-jobs.js +130 -0
- package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
- package/dist/packages/runtime/service/server-routes-project-runs.js +85 -0
- package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
- package/dist/packages/runtime/service/server-routes-projects.js +92 -0
- package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
- package/dist/packages/runtime/service/server-routes-runs.js +112 -0
- package/dist/packages/runtime/service/server.d.ts +37 -0
- package/dist/packages/runtime/service/server.js +300 -0
- package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
- package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
- package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
- package/dist/packages/runtime/verify/benchmark-run.js +303 -0
- package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
- package/dist/packages/{engine → runtime}/verify/index.js +1 -1
- package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
- package/dist/packages/{engine → runtime}/verify/lib/schema.js +26 -18
- package/dist/packages/{engine → runtime}/verify/verify-execution.js +11 -11
- package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +4 -4
- package/dist/packages/runtime/verify/verify-paths.js +61 -0
- package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
- package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
- package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
- package/dist/packages/{engine → runtime}/verify/verify-specs.js +5 -3
- package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
- package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
- package/dist/packages/runtime/verify/verify-types.js +1 -0
- package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
- package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
- package/dist/packages/runtime/wire-schemas.d.ts +18 -0
- package/dist/packages/runtime/wire-schemas.js +27 -0
- package/package.json +39 -31
- package/public-repo/CONTRIBUTING.md +7 -16
- package/public-repo/README.md +175 -234
- package/public-repo/SECURITY.md +3 -4
- package/public-repo/build-plans/interf-default/README.md +19 -14
- package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +18 -11
- package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +12 -5
- package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +16 -4
- package/public-repo/build-plans/interf-default/build-plan.json +34 -28
- package/public-repo/build-plans/interf-default/build-plan.schema.json +54 -32
- package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
- package/public-repo/build-plans/interf-default/use/query/SKILL.md +17 -11
- package/public-repo/openapi/local-service.openapi.json +6803 -0
- package/public-repo/skills/interf/SKILL.md +460 -179
- package/dist/cli/commands/prep.d.ts +0 -2
- package/dist/cli/commands/prep.js +0 -240
- package/dist/cli/commands/test.d.ts +0 -10
- package/dist/cli/commands/test.js +0 -85
- package/dist/cli/commands/web.d.ts +0 -2
- package/dist/cli/commands/web.js +0 -286
- package/dist/interf-ui/404.html +0 -1
- package/dist/interf-ui/__next.__PAGE__.txt +0 -10
- package/dist/interf-ui/__next._full.txt +0 -20
- package/dist/interf-ui/__next._head.txt +0 -5
- package/dist/interf-ui/__next._index.txt +0 -5
- package/dist/interf-ui/__next._tree.txt +0 -5
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
- package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
- package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
- package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
- package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
- package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
- package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
- package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
- package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
- package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
- package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
- package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
- package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
- package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
- package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
- package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
- package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
- package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
- package/dist/interf-ui/_not-found/__next._full.txt +0 -15
- package/dist/interf-ui/_not-found/__next._head.txt +0 -5
- package/dist/interf-ui/_not-found/__next._index.txt +0 -5
- package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
- package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
- package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
- package/dist/interf-ui/_not-found.html +0 -1
- package/dist/interf-ui/_not-found.txt +0 -15
- package/dist/interf-ui/index.html +0 -1
- package/dist/interf-ui/index.txt +0 -20
- package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
- package/dist/packages/contracts/lib/preparation-paths.js +0 -177
- package/dist/packages/engine/action-definitions.d.ts +0 -407
- package/dist/packages/engine/action-definitions.js +0 -1158
- package/dist/packages/engine/action-values.d.ts +0 -1
- package/dist/packages/engine/action-values.js +0 -1
- package/dist/packages/engine/agents/lib/args.d.ts +0 -4
- package/dist/packages/engine/agents/lib/args.js +0 -52
- package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
- package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
- package/dist/packages/engine/agents/lib/constants.js +0 -28
- package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
- package/dist/packages/engine/agents/lib/schema.js +0 -7
- package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
- package/dist/packages/engine/agents/lib/shells.js +0 -1052
- package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
- package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
- package/dist/packages/engine/build/billing-events.d.ts +0 -89
- package/dist/packages/engine/build/build-pipeline.js +0 -175
- package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
- package/dist/packages/engine/build/build-plan-runs.js +0 -31
- package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
- package/dist/packages/engine/build/build-stage-runner.js +0 -94
- package/dist/packages/engine/build/build-target.js +0 -16
- package/dist/packages/engine/build/check-evaluator.js +0 -298
- package/dist/packages/engine/build/reset.d.ts +0 -2
- package/dist/packages/engine/build/reset.js +0 -74
- package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
- package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
- package/dist/packages/engine/build/runtime-runs.js +0 -224
- package/dist/packages/engine/build/runtime.d.ts +0 -5
- package/dist/packages/engine/build/runtime.js +0 -4
- package/dist/packages/engine/build/source-files.d.ts +0 -46
- package/dist/packages/engine/build/source-files.js +0 -149
- package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
- package/dist/packages/engine/build/state-artifacts.js +0 -14
- package/dist/packages/engine/build/state-health.d.ts +0 -4
- package/dist/packages/engine/build/state-io.d.ts +0 -11
- package/dist/packages/engine/build/state-io.js +0 -82
- package/dist/packages/engine/build/state-paths.js +0 -16
- package/dist/packages/engine/build/state-view.d.ts +0 -5
- package/dist/packages/engine/build/state.d.ts +0 -7
- package/dist/packages/engine/build/state.js +0 -12
- package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
- package/dist/packages/engine/build/validate-helpers.js +0 -41
- package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
- package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
- package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
- package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
- package/dist/packages/engine/cloud-seams.d.ts +0 -115
- package/dist/packages/engine/cloud-seams.js +0 -84
- package/dist/packages/engine/index.d.ts +0 -22
- package/dist/packages/engine/index.js +0 -15
- package/dist/packages/engine/instance-paths.d.ts +0 -106
- package/dist/packages/engine/instance-paths.js +0 -171
- package/dist/packages/engine/lib/schema.d.ts +0 -6304
- package/dist/packages/engine/lib/schema.js +0 -730
- package/dist/packages/engine/preparation-store.d.ts +0 -105
- package/dist/packages/engine/preparation-store.js +0 -213
- package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
- package/dist/packages/engine/readiness-check-draft.js +0 -111
- package/dist/packages/engine/requested-artifacts.d.ts +0 -5
- package/dist/packages/engine/routes.d.ts +0 -85
- package/dist/packages/engine/routes.js +0 -99
- package/dist/packages/engine/runtime-caches.d.ts +0 -76
- package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
- package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
- package/dist/packages/engine/runtime.d.ts +0 -371
- package/dist/packages/engine/runtime.js +0 -2463
- package/dist/packages/engine/server.d.ts +0 -58
- package/dist/packages/engine/server.js +0 -1399
- package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
- package/dist/packages/engine/verify/readiness-check-run.js +0 -265
- package/dist/packages/engine/verify/verify-paths.js +0 -61
- package/dist/packages/engine/verify/verify-sandbox.js +0 -88
- package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
- package/dist/packages/engine/wire-schemas.d.ts +0 -547
- package/dist/packages/engine/wire-schemas.js +0 -59
- package/dist/packages/project/index.d.ts +0 -9
- package/dist/packages/project/interf-bootstrap.d.ts +0 -1
- package/dist/packages/project/interf-bootstrap.js +0 -1
- package/dist/packages/project/interf-scaffold.d.ts +0 -3
- package/dist/packages/project/interf-scaffold.js +0 -136
- package/dist/packages/project/interf.d.ts +0 -4
- package/dist/packages/project/interf.js +0 -3
- package/dist/packages/project/lib/schema.d.ts +0 -328
- package/dist/packages/project/lib/schema.js +0 -136
- package/dist/packages/project/preparation-entries.d.ts +0 -11
- package/dist/packages/project/preparation-entries.js +0 -49
- package/dist/packages/project/source-config.d.ts +0 -46
- package/dist/packages/project/source-config.js +0 -394
- package/dist/packages/project/source-folders.d.ts +0 -11
- package/public-repo/plugins/README.md +0 -9
- package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
- package/public-repo/plugins/interf/.mcp.json +0 -12
- package/public-repo/plugins/interf/README.md +0 -32
- package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
- /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/executors.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/logs.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/logs.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/render.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/status.js +0 -0
- /package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +0 -0
- /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
- /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
- /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-paths.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
- /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
- /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { TracesSchema } from "../../contracts/lib/project-schema.js";
|
|
3
|
+
import { BuildEvidenceResourceSchema, ProjectIdSchema, } from "../../contracts/lib/schema.js";
|
|
4
|
+
import { BuildPlanAuthoringCreateRequestSchema, BuildRunCreateRequestSchema, BuildRunResourceSchema, ContextGraphResourceSchema, InstanceResourceSchema, LocalJobRunResourceSchema, LocalServiceHealthSchema, ProjectCreateRequestSchema, ProjectWireShapeSchema, RunArtifactsResponseSchema, RunStatusResourceSchema, SourceFileListResponseSchema, SourceManifestResourceSchema, } from "../schemas/index.js";
|
|
5
|
+
const EmptyObjectSchema = z.object({}).strict();
|
|
6
|
+
const OpenApiDocumentSchema = z.record(z.string(), z.unknown());
|
|
7
|
+
const ProjectBuildRunCreateRequestSchema = BuildRunCreateRequestSchema
|
|
8
|
+
.omit({ project: true })
|
|
9
|
+
.strict();
|
|
10
|
+
const PrepareBuildPlanRequestSchema = BuildPlanAuthoringCreateRequestSchema
|
|
11
|
+
.omit({ project: true, source_folder_path: true })
|
|
12
|
+
.strict();
|
|
13
|
+
const ProjectIdParameter = {
|
|
14
|
+
name: "project_id",
|
|
15
|
+
in: "path",
|
|
16
|
+
required: true,
|
|
17
|
+
description: "Project id.",
|
|
18
|
+
schema: ProjectIdSchema,
|
|
19
|
+
};
|
|
20
|
+
const RunIdParameter = {
|
|
21
|
+
name: "run_id",
|
|
22
|
+
in: "path",
|
|
23
|
+
required: true,
|
|
24
|
+
description: "Run id.",
|
|
25
|
+
schema: z.string().min(1),
|
|
26
|
+
};
|
|
27
|
+
const ContextGraphFilePathParameter = {
|
|
28
|
+
name: "path",
|
|
29
|
+
in: "query",
|
|
30
|
+
required: true,
|
|
31
|
+
description: "Relative file path inside the latest Context Graph.",
|
|
32
|
+
schema: z.string().min(1),
|
|
33
|
+
};
|
|
34
|
+
const RunFilePathParameter = {
|
|
35
|
+
name: "path",
|
|
36
|
+
in: "query",
|
|
37
|
+
required: true,
|
|
38
|
+
description: "Relative file path inside the Build run's Context Graph output.",
|
|
39
|
+
schema: z.string().min(1),
|
|
40
|
+
};
|
|
41
|
+
export const SERVICE_OPERATIONS = [
|
|
42
|
+
{
|
|
43
|
+
id: "getHealth",
|
|
44
|
+
method: "GET",
|
|
45
|
+
path: "/health",
|
|
46
|
+
tags: ["Instance"],
|
|
47
|
+
summary: "Check local service health",
|
|
48
|
+
description: "Small tokenless liveness probe for local clients.",
|
|
49
|
+
visibility: "public",
|
|
50
|
+
response_schema: LocalServiceHealthSchema,
|
|
51
|
+
success_status: 200,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: "getInstance",
|
|
55
|
+
method: "GET",
|
|
56
|
+
path: "/v1/instance",
|
|
57
|
+
tags: ["Instance"],
|
|
58
|
+
summary: "Get instance metadata",
|
|
59
|
+
description: "Return local service metadata without Project or Source contents.",
|
|
60
|
+
visibility: "public",
|
|
61
|
+
response_schema: InstanceResourceSchema,
|
|
62
|
+
success_status: 200,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: "getOpenApi",
|
|
66
|
+
method: "GET",
|
|
67
|
+
path: "/v1/openapi.json",
|
|
68
|
+
tags: ["Instance"],
|
|
69
|
+
summary: "Get OpenAPI contract",
|
|
70
|
+
description: "Return the generated OpenAPI document for the local service API.",
|
|
71
|
+
visibility: "public",
|
|
72
|
+
response_schema: OpenApiDocumentSchema,
|
|
73
|
+
success_status: 200,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "createProject",
|
|
77
|
+
method: "POST",
|
|
78
|
+
path: "/v1/projects",
|
|
79
|
+
tags: ["Projects"],
|
|
80
|
+
summary: "Create Project",
|
|
81
|
+
description: "Create a Project bound to one Source. Project ids may be generated by clients.",
|
|
82
|
+
visibility: "app",
|
|
83
|
+
workflow_step: 1,
|
|
84
|
+
request_schema: ProjectCreateRequestSchema,
|
|
85
|
+
response_schema: ProjectWireShapeSchema,
|
|
86
|
+
success_status: 201,
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: "getProject",
|
|
90
|
+
method: "GET",
|
|
91
|
+
path: "/v1/projects/{project_id}",
|
|
92
|
+
tags: ["Projects"],
|
|
93
|
+
summary: "Get Project",
|
|
94
|
+
description: "Read one Project to confirm its Source binding, selected Build Plan, readiness, and latest Context Graph.",
|
|
95
|
+
visibility: "app",
|
|
96
|
+
parameters: [ProjectIdParameter],
|
|
97
|
+
response_schema: ProjectWireShapeSchema,
|
|
98
|
+
success_status: 200,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: "prepareBuildPlan",
|
|
102
|
+
method: "POST",
|
|
103
|
+
path: "/v1/projects/{project_id}/build-plan-drafts",
|
|
104
|
+
tags: ["Build Plans"],
|
|
105
|
+
summary: "Prepare Build Plan",
|
|
106
|
+
description: "Draft a Build Plan from the approved intent, Context Checks, and requested Artifacts. This does not run a Build.",
|
|
107
|
+
visibility: "app",
|
|
108
|
+
workflow_step: 2,
|
|
109
|
+
parameters: [ProjectIdParameter],
|
|
110
|
+
request_schema: PrepareBuildPlanRequestSchema,
|
|
111
|
+
response_schema: LocalJobRunResourceSchema,
|
|
112
|
+
success_status: 202,
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: "runBuild",
|
|
116
|
+
method: "POST",
|
|
117
|
+
path: "/v1/projects/{project_id}/build-runs",
|
|
118
|
+
tags: ["Build Runs"],
|
|
119
|
+
summary: "Run Build",
|
|
120
|
+
description: "Run the selected Build Plan and create an isolated Context Graph folder. Use only after Build Plan approval or explicit autonomy.",
|
|
121
|
+
visibility: "app",
|
|
122
|
+
workflow_step: 3,
|
|
123
|
+
parameters: [ProjectIdParameter],
|
|
124
|
+
request_schema: ProjectBuildRunCreateRequestSchema.default({}),
|
|
125
|
+
response_schema: BuildRunResourceSchema,
|
|
126
|
+
success_status: 201,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: "getRunStatus",
|
|
130
|
+
method: "GET",
|
|
131
|
+
path: "/v1/runs/{run_id}/status",
|
|
132
|
+
tags: ["Runs"],
|
|
133
|
+
summary: "Get Run status",
|
|
134
|
+
description: "Read compact Run observability for polling. Detailed logs and artifacts are separate resources.",
|
|
135
|
+
visibility: "app",
|
|
136
|
+
parameters: [RunIdParameter],
|
|
137
|
+
response_schema: RunStatusResourceSchema,
|
|
138
|
+
success_status: 200,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: "getRunArtifacts",
|
|
142
|
+
method: "GET",
|
|
143
|
+
path: "/v1/runs/{run_id}/artifacts",
|
|
144
|
+
tags: ["Runs"],
|
|
145
|
+
summary: "Get Run artifacts",
|
|
146
|
+
description: "Read the bounded artifact manifest for a finished Build run. Use only when the compact status says the Run is terminal.",
|
|
147
|
+
visibility: "app",
|
|
148
|
+
parameters: [RunIdParameter],
|
|
149
|
+
response_schema: RunArtifactsResponseSchema,
|
|
150
|
+
success_status: 200,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: "readRunFile",
|
|
154
|
+
method: "GET",
|
|
155
|
+
path: "/v1/runs/{run_id}/files",
|
|
156
|
+
tags: ["Runs"],
|
|
157
|
+
summary: "Read Run file",
|
|
158
|
+
description: "Read a prompt log, status log, event stream, stage contract, or evidence file from the exact Build run output. Use this instead of latest Context Graph file reads when debugging historical runs.",
|
|
159
|
+
visibility: "app",
|
|
160
|
+
parameters: [RunIdParameter, RunFilePathParameter],
|
|
161
|
+
response_schema: z.string(),
|
|
162
|
+
response_content_type: "text/plain",
|
|
163
|
+
success_status: 200,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
id: "getLatestContextGraph",
|
|
167
|
+
method: "GET",
|
|
168
|
+
path: "/v1/projects/{project_id}/context-graph",
|
|
169
|
+
tags: ["Context Graphs"],
|
|
170
|
+
summary: "Get latest Context Graph",
|
|
171
|
+
description: "Return the latest successful Context Graph locator and readiness state for a Project. This is a compact locator/status read; read artifacts/ handoff files before answering.",
|
|
172
|
+
visibility: "app",
|
|
173
|
+
parameters: [ProjectIdParameter],
|
|
174
|
+
response_schema: ContextGraphResourceSchema,
|
|
175
|
+
success_status: 200,
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
id: "listSourceFiles",
|
|
179
|
+
method: "GET",
|
|
180
|
+
path: "/v1/projects/{project_id}/source-files",
|
|
181
|
+
tags: ["Source"],
|
|
182
|
+
summary: "List Source Manifest projection",
|
|
183
|
+
description: "Return the latest Source Manifest projected as source file rows for compatibility clients. Use source-manifest as the canonical run authority.",
|
|
184
|
+
visibility: "app",
|
|
185
|
+
parameters: [ProjectIdParameter],
|
|
186
|
+
response_schema: SourceFileListResponseSchema,
|
|
187
|
+
success_status: 200,
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
id: "getSourceManifest",
|
|
191
|
+
method: "GET",
|
|
192
|
+
path: "/v1/projects/{project_id}/source-manifest",
|
|
193
|
+
tags: ["Source"],
|
|
194
|
+
summary: "Get Source Manifest",
|
|
195
|
+
description: "Return the evidence-backed Source Manifest recorded for the latest Context Graph.",
|
|
196
|
+
visibility: "app",
|
|
197
|
+
parameters: [ProjectIdParameter],
|
|
198
|
+
response_schema: SourceManifestResourceSchema,
|
|
199
|
+
success_status: 200,
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
id: "readContextGraphFile",
|
|
203
|
+
method: "GET",
|
|
204
|
+
path: "/v1/projects/{project_id}/context-graph/file",
|
|
205
|
+
tags: ["Context Graphs"],
|
|
206
|
+
summary: "Read Context Graph file",
|
|
207
|
+
description: "Read one file from the latest Context Graph by relative path. Start with artifacts/ task handoffs; use summaries/ for coverage proof and knowledge/ for drilldown.",
|
|
208
|
+
visibility: "app",
|
|
209
|
+
parameters: [ProjectIdParameter, ContextGraphFilePathParameter],
|
|
210
|
+
response_schema: z.string(),
|
|
211
|
+
response_content_type: "text/plain",
|
|
212
|
+
success_status: 200,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
id: "getContextGraphTraces",
|
|
216
|
+
method: "GET",
|
|
217
|
+
path: "/v1/projects/{project_id}/context-graph/traces",
|
|
218
|
+
tags: ["Context Graphs"],
|
|
219
|
+
summary: "Get Context Graph traces",
|
|
220
|
+
description: "Read source-backed trace rollups for exact values and provenance checks.",
|
|
221
|
+
visibility: "app",
|
|
222
|
+
parameters: [ProjectIdParameter],
|
|
223
|
+
response_schema: TracesSchema,
|
|
224
|
+
success_status: 200,
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
id: "getBuildEvidence",
|
|
228
|
+
method: "GET",
|
|
229
|
+
path: "/v1/projects/{project_id}/context-graph/evidence",
|
|
230
|
+
tags: ["Context Graphs"],
|
|
231
|
+
summary: "Get Build evidence",
|
|
232
|
+
description: "Read checks, Artifact diagnostics, and readiness evidence for the latest Context Graph.",
|
|
233
|
+
visibility: "app",
|
|
234
|
+
parameters: [ProjectIdParameter],
|
|
235
|
+
response_schema: BuildEvidenceResourceSchema,
|
|
236
|
+
success_status: 200,
|
|
237
|
+
},
|
|
238
|
+
];
|
|
239
|
+
export const APP_PROFILE_OPERATION_IDS = SERVICE_OPERATIONS
|
|
240
|
+
.filter((operation) => operation.visibility === "app")
|
|
241
|
+
.map((operation) => operation.id);
|
|
242
|
+
export function serviceOperationById(id) {
|
|
243
|
+
return SERVICE_OPERATIONS.find((operation) => operation.id === id);
|
|
244
|
+
}
|
|
245
|
+
export { EmptyObjectSchema };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export declare const LOCAL_SERVICE_DEFAULT_HOST = "127.0.0.1";
|
|
2
|
+
export declare const LOCAL_SERVICE_DEFAULT_PORT = 4873;
|
|
3
|
+
export declare const LOCAL_SERVICE_ROUTES: {
|
|
4
|
+
readonly root: "/";
|
|
5
|
+
readonly api: "/v1";
|
|
6
|
+
readonly health: "/health";
|
|
7
|
+
readonly instance: "/v1/instance";
|
|
8
|
+
readonly openapi: "/v1/openapi.json";
|
|
9
|
+
readonly projects: "/v1/projects";
|
|
10
|
+
readonly buildPlans: "/v1/build-plans";
|
|
11
|
+
readonly runs: "/v1/runs";
|
|
12
|
+
/** Server-Sent Events change stream — pushes refresh signals to clients. */
|
|
13
|
+
readonly events: "/v1/events";
|
|
14
|
+
readonly actionProposals: "/v1/action-proposals";
|
|
15
|
+
/** App-backed MCP setup for MCP-capable agent hosts. */
|
|
16
|
+
readonly mcp: "/v1/mcp";
|
|
17
|
+
/** Single-active-agent route backed by the role-map's `general` row. */
|
|
18
|
+
readonly executor: "/v1/executor";
|
|
19
|
+
/**
|
|
20
|
+
* connected-agents primitive — registry, role-map, role list.
|
|
21
|
+
* `agents/{name}` and `agents/role-map` are sub-resources handled
|
|
22
|
+
* by string match in `server.ts`.
|
|
23
|
+
*/
|
|
24
|
+
readonly agents: "/v1/agents";
|
|
25
|
+
/**
|
|
26
|
+
* Auth surface — current user identity, login/logout (cloud only),
|
|
27
|
+
* subscription state.
|
|
28
|
+
*/
|
|
29
|
+
readonly auth: "/v1/auth";
|
|
30
|
+
/** Current account / session — used by the local service to check `runtime.currentAccount`. */
|
|
31
|
+
readonly me: "/v1/me";
|
|
32
|
+
readonly openPath: "/v1/open-path";
|
|
33
|
+
};
|
|
34
|
+
/** Project-scoped sub-resources (relative to /v1/projects/<id>/). */
|
|
35
|
+
export declare const PROJECT_SUBRESOURCES: {
|
|
36
|
+
/** Build-run collection — POST creates a new Build run for this Project. */
|
|
37
|
+
readonly buildRuns: "build-runs";
|
|
38
|
+
readonly verifyRuns: "verify-runs";
|
|
39
|
+
readonly buildPlanDraftRuns: "build-plan-drafts";
|
|
40
|
+
readonly legacyBuildPlanDraftRuns: "build-plan-draft-runs";
|
|
41
|
+
readonly buildPlanImprovementRuns: "build-plan-improvement-runs";
|
|
42
|
+
readonly benchmarkQuestionDrafts: "benchmark-question-drafts";
|
|
43
|
+
readonly benchmarkChecks: "benchmark-checks";
|
|
44
|
+
readonly buildPlanChanges: "build-plan-changes";
|
|
45
|
+
readonly reset: "reset";
|
|
46
|
+
readonly runs: "runs";
|
|
47
|
+
readonly readiness: "readiness";
|
|
48
|
+
readonly graphs: "graphs";
|
|
49
|
+
readonly sourceFiles: "source-files";
|
|
50
|
+
/** Latest evidence-backed Source Manifest for this Project. */
|
|
51
|
+
readonly sourceManifest: "source-manifest";
|
|
52
|
+
/**
|
|
53
|
+
* Latest Context Graph for this Project — what the agent reads. Returns the
|
|
54
|
+
* current Context Graph wire shape plus a locator pointing at the generated
|
|
55
|
+
* folder or API-served resource.
|
|
56
|
+
*/
|
|
57
|
+
readonly contextGraph: "context-graph";
|
|
58
|
+
/** First-class traces surface — per-claim provenance back to source. */
|
|
59
|
+
readonly traces: "context-graph/traces";
|
|
60
|
+
/** First-class Checks / Build evidence review resource. */
|
|
61
|
+
readonly buildEvidence: "context-graph/evidence";
|
|
62
|
+
/** Read a single Context Graph file using a query param: `?path=<relpath>`. */
|
|
63
|
+
readonly contextGraphFile: "context-graph/file";
|
|
64
|
+
/** Drift state for the Project's Source binding. */
|
|
65
|
+
readonly sourceState: "source-state";
|
|
66
|
+
/**
|
|
67
|
+
* per-Artifact detail. Returns the latest status, contributing stages,
|
|
68
|
+
* and check evidence for a Build Plan-declared Artifact:
|
|
69
|
+
* GET /v1/projects/<id>/artifacts/<artifact-id>
|
|
70
|
+
*/
|
|
71
|
+
readonly artifacts: "artifacts";
|
|
72
|
+
};
|
|
73
|
+
/** Build Plan activity sub-resources (relative to /v1/build-plans/<id>/). */
|
|
74
|
+
export declare const BUILD_PLAN_SUBRESOURCES: {
|
|
75
|
+
readonly runs: "runs";
|
|
76
|
+
/**
|
|
77
|
+
* Read a Build Plan definition file (read-only, path-guarded inside
|
|
78
|
+
* the Build Plan root). Used by the locator pattern's `api-served` kind:
|
|
79
|
+
* GET /v1/build-plans/<id>/files/<relpath>
|
|
80
|
+
*/
|
|
81
|
+
readonly files: "files";
|
|
82
|
+
};
|
|
83
|
+
/** Run-scoped sub-resources (relative to /v1/runs/<run-id>/). */
|
|
84
|
+
export declare const RUN_SUBRESOURCES: {
|
|
85
|
+
readonly status: "status";
|
|
86
|
+
readonly events: "events";
|
|
87
|
+
readonly cancel: "cancel";
|
|
88
|
+
readonly artifacts: "artifacts";
|
|
89
|
+
readonly files: "files";
|
|
90
|
+
};
|
|
91
|
+
export declare function buildLocalServiceUrl(options?: {
|
|
92
|
+
host?: string;
|
|
93
|
+
port?: number;
|
|
94
|
+
}): string;
|
|
95
|
+
/** Path builder: /v1/projects/<id>. */
|
|
96
|
+
export declare function projectResourcePath(projectId: string): string;
|
|
97
|
+
/** Path builder: /v1/projects/<id>/<subresource>. */
|
|
98
|
+
export declare function projectSubresourcePath(projectId: string, sub: keyof typeof PROJECT_SUBRESOURCES): string;
|
|
99
|
+
/** Path builder: /v1/runs/<run-id>. */
|
|
100
|
+
export declare function runResourcePath(runId: string): string;
|
|
101
|
+
/** Path builder: /v1/runs/<run-id>/<subresource>. */
|
|
102
|
+
export declare function runSubresourcePath(runId: string, sub: keyof typeof RUN_SUBRESOURCES): string;
|
|
103
|
+
/** Path builder: /v1/build-plans/<id>. */
|
|
104
|
+
export declare function buildPlanResourcePath(buildPlanId: string): string;
|
|
105
|
+
/** Path builder: /v1/build-plans/<id>/<subresource>. */
|
|
106
|
+
export declare function buildPlanSubresourcePath(buildPlanId: string, sub: keyof typeof BUILD_PLAN_SUBRESOURCES): string;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
export const LOCAL_SERVICE_DEFAULT_HOST = "127.0.0.1";
|
|
2
|
+
export const LOCAL_SERVICE_DEFAULT_PORT = 4873;
|
|
3
|
+
export const LOCAL_SERVICE_ROUTES = {
|
|
4
|
+
root: "/",
|
|
5
|
+
api: "/v1",
|
|
6
|
+
health: "/health",
|
|
7
|
+
// surface — project-keyed.
|
|
8
|
+
instance: "/v1/instance",
|
|
9
|
+
openapi: "/v1/openapi.json",
|
|
10
|
+
projects: "/v1/projects",
|
|
11
|
+
buildPlans: "/v1/build-plans",
|
|
12
|
+
runs: "/v1/runs",
|
|
13
|
+
/** Server-Sent Events change stream — pushes refresh signals to clients. */
|
|
14
|
+
events: "/v1/events",
|
|
15
|
+
actionProposals: "/v1/action-proposals",
|
|
16
|
+
/** App-backed MCP setup for MCP-capable agent hosts. */
|
|
17
|
+
mcp: "/v1/mcp",
|
|
18
|
+
/** Single-active-agent route backed by the role-map's `general` row. */
|
|
19
|
+
executor: "/v1/executor",
|
|
20
|
+
/**
|
|
21
|
+
* connected-agents primitive — registry, role-map, role list.
|
|
22
|
+
* `agents/{name}` and `agents/role-map` are sub-resources handled
|
|
23
|
+
* by string match in `server.ts`.
|
|
24
|
+
*/
|
|
25
|
+
agents: "/v1/agents",
|
|
26
|
+
/**
|
|
27
|
+
* Auth surface — current user identity, login/logout (cloud only),
|
|
28
|
+
* subscription state.
|
|
29
|
+
*/
|
|
30
|
+
auth: "/v1/auth",
|
|
31
|
+
/** Current account / session — used by the local service to check `runtime.currentAccount`. */
|
|
32
|
+
me: "/v1/me",
|
|
33
|
+
openPath: "/v1/open-path",
|
|
34
|
+
};
|
|
35
|
+
/** Project-scoped sub-resources (relative to /v1/projects/<id>/). */
|
|
36
|
+
export const PROJECT_SUBRESOURCES = {
|
|
37
|
+
/** Build-run collection — POST creates a new Build run for this Project. */
|
|
38
|
+
buildRuns: "build-runs",
|
|
39
|
+
verifyRuns: "verify-runs",
|
|
40
|
+
buildPlanDraftRuns: "build-plan-drafts",
|
|
41
|
+
legacyBuildPlanDraftRuns: "build-plan-draft-runs",
|
|
42
|
+
buildPlanImprovementRuns: "build-plan-improvement-runs",
|
|
43
|
+
benchmarkQuestionDrafts: "benchmark-question-drafts",
|
|
44
|
+
benchmarkChecks: "benchmark-checks",
|
|
45
|
+
buildPlanChanges: "build-plan-changes",
|
|
46
|
+
reset: "reset",
|
|
47
|
+
runs: "runs",
|
|
48
|
+
readiness: "readiness",
|
|
49
|
+
graphs: "graphs",
|
|
50
|
+
sourceFiles: "source-files",
|
|
51
|
+
/** Latest evidence-backed Source Manifest for this Project. */
|
|
52
|
+
sourceManifest: "source-manifest",
|
|
53
|
+
/**
|
|
54
|
+
* Latest Context Graph for this Project — what the agent reads. Returns the
|
|
55
|
+
* current Context Graph wire shape plus a locator pointing at the generated
|
|
56
|
+
* folder or API-served resource.
|
|
57
|
+
*/
|
|
58
|
+
contextGraph: "context-graph",
|
|
59
|
+
/** First-class traces surface — per-claim provenance back to source. */
|
|
60
|
+
traces: "context-graph/traces",
|
|
61
|
+
/** First-class Checks / Build evidence review resource. */
|
|
62
|
+
buildEvidence: "context-graph/evidence",
|
|
63
|
+
/** Read a single Context Graph file using a query param: `?path=<relpath>`. */
|
|
64
|
+
contextGraphFile: "context-graph/file",
|
|
65
|
+
/** Drift state for the Project's Source binding. */
|
|
66
|
+
sourceState: "source-state",
|
|
67
|
+
/**
|
|
68
|
+
* per-Artifact detail. Returns the latest status, contributing stages,
|
|
69
|
+
* and check evidence for a Build Plan-declared Artifact:
|
|
70
|
+
* GET /v1/projects/<id>/artifacts/<artifact-id>
|
|
71
|
+
*/
|
|
72
|
+
artifacts: "artifacts",
|
|
73
|
+
};
|
|
74
|
+
/** Build Plan activity sub-resources (relative to /v1/build-plans/<id>/). */
|
|
75
|
+
export const BUILD_PLAN_SUBRESOURCES = {
|
|
76
|
+
runs: "runs",
|
|
77
|
+
/**
|
|
78
|
+
* Read a Build Plan definition file (read-only, path-guarded inside
|
|
79
|
+
* the Build Plan root). Used by the locator pattern's `api-served` kind:
|
|
80
|
+
* GET /v1/build-plans/<id>/files/<relpath>
|
|
81
|
+
*/
|
|
82
|
+
files: "files",
|
|
83
|
+
};
|
|
84
|
+
/** Run-scoped sub-resources (relative to /v1/runs/<run-id>/). */
|
|
85
|
+
export const RUN_SUBRESOURCES = {
|
|
86
|
+
status: "status",
|
|
87
|
+
events: "events",
|
|
88
|
+
cancel: "cancel",
|
|
89
|
+
artifacts: "artifacts",
|
|
90
|
+
files: "files",
|
|
91
|
+
};
|
|
92
|
+
export function buildLocalServiceUrl(options = {}) {
|
|
93
|
+
const host = options.host ?? LOCAL_SERVICE_DEFAULT_HOST;
|
|
94
|
+
const port = options.port ?? LOCAL_SERVICE_DEFAULT_PORT;
|
|
95
|
+
return `http://${host}:${port}`;
|
|
96
|
+
}
|
|
97
|
+
/** Path builder: /v1/projects/<id>. */
|
|
98
|
+
export function projectResourcePath(projectId) {
|
|
99
|
+
return `${LOCAL_SERVICE_ROUTES.projects}/${encodeURIComponent(projectId)}`;
|
|
100
|
+
}
|
|
101
|
+
/** Path builder: /v1/projects/<id>/<subresource>. */
|
|
102
|
+
export function projectSubresourcePath(projectId, sub) {
|
|
103
|
+
return `${projectResourcePath(projectId)}/${PROJECT_SUBRESOURCES[sub]}`;
|
|
104
|
+
}
|
|
105
|
+
/** Path builder: /v1/runs/<run-id>. */
|
|
106
|
+
export function runResourcePath(runId) {
|
|
107
|
+
return `${LOCAL_SERVICE_ROUTES.runs}/${encodeURIComponent(runId)}`;
|
|
108
|
+
}
|
|
109
|
+
/** Path builder: /v1/runs/<run-id>/<subresource>. */
|
|
110
|
+
export function runSubresourcePath(runId, sub) {
|
|
111
|
+
return `${runResourcePath(runId)}/${RUN_SUBRESOURCES[sub]}`;
|
|
112
|
+
}
|
|
113
|
+
/** Path builder: /v1/build-plans/<id>. */
|
|
114
|
+
export function buildPlanResourcePath(buildPlanId) {
|
|
115
|
+
return `${LOCAL_SERVICE_ROUTES.buildPlans}/${encodeURIComponent(buildPlanId)}`;
|
|
116
|
+
}
|
|
117
|
+
/** Path builder: /v1/build-plans/<id>/<subresource>. */
|
|
118
|
+
export function buildPlanSubresourcePath(buildPlanId, sub) {
|
|
119
|
+
return `${buildPlanResourcePath(buildPlanId)}/${BUILD_PLAN_SUBRESOURCES[sub]}`;
|
|
120
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ServerResponse } from "node:http";
|
|
2
|
+
export declare function packageRoot(): string;
|
|
3
|
+
export declare function safeApiFilePath(root: string, relativePath: string): string | null;
|
|
4
|
+
export declare function sendApiFile(res: ServerResponse, filePath: string): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Reject any path that contains `..` or absolute segments. These helpers are
|
|
7
|
+
* only for authenticated `/v1/.../files/...` API resources, not for serving
|
|
8
|
+
* the Desktop renderer.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isTraversalRelativePath(relPath: string): boolean;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { dirname, extname, normalize, resolve, sep } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { writeHeaders } from "./server-helpers.js";
|
|
5
|
+
export function packageRoot() {
|
|
6
|
+
return resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "..", "..");
|
|
7
|
+
}
|
|
8
|
+
function contentType(filePath) {
|
|
9
|
+
switch (extname(filePath)) {
|
|
10
|
+
case ".html":
|
|
11
|
+
return "text/html; charset=utf-8";
|
|
12
|
+
case ".js":
|
|
13
|
+
return "text/javascript; charset=utf-8";
|
|
14
|
+
case ".css":
|
|
15
|
+
return "text/css; charset=utf-8";
|
|
16
|
+
case ".json":
|
|
17
|
+
return "application/json; charset=utf-8";
|
|
18
|
+
case ".svg":
|
|
19
|
+
return "image/svg+xml";
|
|
20
|
+
case ".png":
|
|
21
|
+
return "image/png";
|
|
22
|
+
case ".ico":
|
|
23
|
+
return "image/x-icon";
|
|
24
|
+
case ".txt":
|
|
25
|
+
return "text/plain; charset=utf-8";
|
|
26
|
+
case ".md":
|
|
27
|
+
return "text/markdown; charset=utf-8";
|
|
28
|
+
case ".yml":
|
|
29
|
+
case ".yaml":
|
|
30
|
+
return "application/yaml; charset=utf-8";
|
|
31
|
+
case ".map":
|
|
32
|
+
return "application/json; charset=utf-8";
|
|
33
|
+
case ".webmanifest":
|
|
34
|
+
return "application/manifest+json; charset=utf-8";
|
|
35
|
+
case ".woff2":
|
|
36
|
+
return "font/woff2";
|
|
37
|
+
default:
|
|
38
|
+
return "application/octet-stream";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function safeApiFilePath(root, relativePath) {
|
|
42
|
+
const normalized = normalize(relativePath).replace(/^(\.\.(?:\/|\\|$))+/, "");
|
|
43
|
+
const absolute = resolve(root, normalized);
|
|
44
|
+
const resolvedRoot = resolve(root);
|
|
45
|
+
if (absolute !== resolvedRoot && !absolute.startsWith(`${resolvedRoot}${sep}`)) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return absolute;
|
|
49
|
+
}
|
|
50
|
+
export function sendApiFile(res, filePath) {
|
|
51
|
+
if (!existsSync(filePath))
|
|
52
|
+
return false;
|
|
53
|
+
try {
|
|
54
|
+
if (!statSync(filePath).isFile())
|
|
55
|
+
return false;
|
|
56
|
+
const type = contentType(filePath);
|
|
57
|
+
const headers = { "content-type": type };
|
|
58
|
+
if (type.startsWith("text/html")) {
|
|
59
|
+
headers["cache-control"] = "no-store";
|
|
60
|
+
}
|
|
61
|
+
writeHeaders(res, 200, headers);
|
|
62
|
+
res.end(readFileSync(filePath));
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Reject any path that contains `..` or absolute segments. These helpers are
|
|
71
|
+
* only for authenticated `/v1/.../files/...` API resources, not for serving
|
|
72
|
+
* the Desktop renderer.
|
|
73
|
+
*/
|
|
74
|
+
export function isTraversalRelativePath(relPath) {
|
|
75
|
+
if (relPath.length === 0)
|
|
76
|
+
return true;
|
|
77
|
+
const segments = relPath.split(/[\\/]+/);
|
|
78
|
+
for (const segment of segments) {
|
|
79
|
+
if (segment === ".." || segment === "")
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
if (relPath.startsWith("/") || /^[A-Za-z]:/.test(relPath))
|
|
83
|
+
return true;
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import type { LocalServiceRuntime } from "../runtime.js";
|
|
3
|
+
export declare function sendDesktopAppBoot(req: IncomingMessage, res: ServerResponse, runtime: LocalServiceRuntime): boolean;
|
|
4
|
+
export declare function sendServiceNotFound(res: ServerResponse): void;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { buildLocalServiceUrl } from "./routes.js";
|
|
2
|
+
import { parseRequestUrl, sendText, writeHeaders } from "./server-helpers.js";
|
|
3
|
+
function escapedJsonForHtml(value) {
|
|
4
|
+
return JSON.stringify(value).replace(/</g, "\\u003c");
|
|
5
|
+
}
|
|
6
|
+
export function sendDesktopAppBoot(req, res, runtime) {
|
|
7
|
+
const url = parseRequestUrl(req);
|
|
8
|
+
if (url.pathname !== "/")
|
|
9
|
+
return false;
|
|
10
|
+
const method = req.method ?? "GET";
|
|
11
|
+
if (method !== "GET" && method !== "HEAD")
|
|
12
|
+
return false;
|
|
13
|
+
const boot = {
|
|
14
|
+
kind: "interf-app-boot",
|
|
15
|
+
version: 1,
|
|
16
|
+
service_url: buildLocalServiceUrl({ host: runtime.host, port: runtime.port }),
|
|
17
|
+
auth_required: Boolean(runtime.authToken),
|
|
18
|
+
auth_token: runtime.authToken,
|
|
19
|
+
};
|
|
20
|
+
const json = escapedJsonForHtml(boot);
|
|
21
|
+
writeHeaders(res, 200, {
|
|
22
|
+
"content-type": "text/html; charset=utf-8",
|
|
23
|
+
"cache-control": "no-store",
|
|
24
|
+
});
|
|
25
|
+
if (method === "HEAD") {
|
|
26
|
+
res.end();
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
res.end(`<!doctype html>
|
|
30
|
+
<html lang="en">
|
|
31
|
+
<head>
|
|
32
|
+
<meta charset="utf-8">
|
|
33
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
34
|
+
<title>Interf local service</title>
|
|
35
|
+
<script id="interf-app-boot" type="application/json">${json}</script>
|
|
36
|
+
</head>
|
|
37
|
+
<body>
|
|
38
|
+
<p>Interf local service is running. Open Interf.app to use the desktop interface.</p>
|
|
39
|
+
</body>
|
|
40
|
+
</html>
|
|
41
|
+
`);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
export function sendServiceNotFound(res) {
|
|
45
|
+
sendText(res, 404, "Not found. Open Interf.app for the desktop interface.\n");
|
|
46
|
+
}
|