@treeseed/sdk 0.10.28 → 0.12.4
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 +213 -7
- package/dist/agent-capacity.d.ts +916 -0
- package/dist/agent-capacity.js +1600 -0
- package/dist/agent-tools.d.ts +37 -0
- package/dist/agent-tools.js +301 -0
- package/dist/api/app.d.ts +1 -1
- package/dist/api/auth/d1-database.d.ts +2 -2
- package/dist/api/auth/d1-provider.d.ts +4 -4
- package/dist/api/auth/d1-store.d.ts +2 -2
- package/dist/api/auth/memory-provider.d.ts +1 -1
- package/dist/api/auth/tokens.d.ts +1 -1
- package/dist/api/config.d.ts +3 -1
- package/dist/api/config.js +34 -10
- package/dist/api/http.d.ts +2 -2
- package/dist/api/index.d.ts +10 -10
- package/dist/api/index.js +4 -2
- package/dist/api/operations-routes.d.ts +3 -3
- package/dist/api/operations.d.ts +1 -1
- package/dist/api/providers.d.ts +1 -1
- package/dist/api/providers.js +21 -4
- package/dist/api/railway.d.ts +3 -2
- package/dist/api/sdk-dispatch.d.ts +4 -4
- package/dist/api/sdk-routes.d.ts +2 -2
- package/dist/api/templates.d.ts +2 -2
- package/dist/api/types.d.ts +3 -2
- package/dist/capacity-provider.d.ts +118 -59
- package/dist/capacity-provider.js +235 -43
- package/dist/capacity.d.ts +2 -2
- package/dist/cli-tools.d.ts +1 -1
- package/dist/content-operations.d.ts +97 -0
- package/dist/content-operations.js +250 -0
- package/dist/content-store.d.ts +4 -4
- package/dist/control-plane-client.d.ts +13 -18
- package/dist/control-plane-client.js +8 -86
- package/dist/control-plane.d.ts +3 -2
- package/dist/control-plane.js +38 -13
- package/dist/copilot.d.ts +3 -0
- package/dist/copilot.js +16 -1
- package/dist/d1-http.d.ts +1 -1
- package/dist/d1-store.d.ts +32 -57
- package/dist/d1-store.js +115 -318
- package/dist/db/d1.d.ts +1 -232
- package/dist/db/index.d.ts +3 -3
- package/dist/db/market-schema.d.ts +50900 -11018
- package/dist/db/market-schema.js +2313 -467
- package/dist/db/node-sqlite.d.ts +1 -232
- package/dist/db/node-sqlite.js +7 -2
- package/dist/db/schema.d.ts +0 -462
- package/dist/db/schema.js +2 -22
- package/dist/dispatch.d.ts +1 -1
- package/dist/dispatch.js +0 -11
- package/dist/fixture-support.js +52 -4
- package/dist/governance.d.ts +133 -0
- package/dist/governance.js +285 -0
- package/dist/graph/build.d.ts +2 -2
- package/dist/graph/context-query-contracts.d.ts +1 -1
- package/dist/graph/dsl.d.ts +1 -1
- package/dist/graph/query.d.ts +4 -4
- package/dist/graph/ranking.d.ts +1 -1
- package/dist/graph/schema.d.ts +1 -1
- package/dist/graph.d.ts +11 -11
- package/dist/guarantees/index.d.ts +425 -0
- package/dist/guarantees/index.js +1146 -0
- package/dist/hosting/apps.d.ts +12 -0
- package/dist/hosting/apps.js +107 -0
- package/dist/hosting/builtins.d.ts +25 -0
- package/dist/hosting/builtins.js +602 -0
- package/dist/hosting/contracts.d.ts +208 -0
- package/dist/hosting/contracts.js +0 -0
- package/dist/hosting/graph.d.ts +195 -0
- package/dist/hosting/graph.js +1092 -0
- package/dist/hosting/index.d.ts +4 -0
- package/dist/hosting/index.js +4 -0
- package/dist/index.d.ts +88 -67
- package/dist/index.js +142 -14
- package/dist/local-dev/managed-dev.d.ts +85 -0
- package/dist/local-dev/managed-dev.js +368 -0
- package/dist/managed-dependencies.d.ts +9 -0
- package/dist/managed-dependencies.js +10 -9
- package/dist/market-client.d.ts +327 -9
- package/dist/market-client.js +464 -20
- package/dist/model-registry.d.ts +1 -1
- package/dist/model-registry.js +19 -19
- package/dist/operations/agent-tools.d.ts +2 -11
- package/dist/operations/agent-tools.js +2 -14
- package/dist/operations/providers/default.d.ts +1 -1
- package/dist/operations/providers/default.js +20 -37
- package/dist/operations/repository-operations.d.ts +26 -2
- package/dist/operations/repository-operations.js +159 -1
- package/dist/operations/runtime.d.ts +3 -3
- package/dist/operations/services/bootstrap-runner.d.ts +4 -2
- package/dist/operations/services/bootstrap-runner.js +22 -2
- package/dist/operations/services/build-warning-policy.d.ts +34 -0
- package/dist/operations/services/build-warning-policy.js +81 -82
- package/dist/operations/services/commit-message-provider.js +4 -4
- package/dist/operations/services/config-runtime.d.ts +83 -24
- package/dist/operations/services/config-runtime.js +449 -130
- package/dist/operations/services/deploy.d.ts +106 -624
- package/dist/operations/services/deploy.js +746 -263
- package/dist/operations/services/deployment-readiness.d.ts +30 -0
- package/dist/operations/services/deployment-readiness.js +206 -0
- package/dist/operations/services/git-remote-policy.js +12 -4
- package/dist/operations/services/git-runner.d.ts +66 -0
- package/dist/operations/services/git-runner.js +479 -0
- package/dist/operations/services/git-workflow.d.ts +45 -6
- package/dist/operations/services/git-workflow.js +251 -23
- package/dist/operations/services/github-actions-verification.d.ts +4 -1
- package/dist/operations/services/github-actions-verification.js +12 -3
- package/dist/operations/services/github-api.js +22 -6
- package/dist/operations/services/github-automation.d.ts +4 -4
- package/dist/operations/services/github-automation.js +19 -21
- package/dist/operations/services/github-credentials.d.ts +13 -0
- package/dist/operations/services/github-credentials.js +59 -0
- package/dist/operations/services/hosted-service-checks.d.ts +81 -0
- package/dist/operations/services/hosted-service-checks.js +478 -0
- package/dist/operations/services/hosting-audit.d.ts +2 -2
- package/dist/operations/services/hosting-audit.js +7 -7
- package/dist/operations/services/hub-launch.d.ts +1 -1
- package/dist/operations/services/hub-provider-launch.d.ts +5 -5
- package/dist/operations/services/hub-provider-launch.js +22 -17
- package/dist/operations/services/live-hosted-service-checks.d.ts +26 -0
- package/dist/operations/services/live-hosted-service-checks.js +463 -0
- package/dist/operations/services/local-dev.js +0 -1
- package/dist/operations/services/managed-host-security.d.ts +1 -1
- package/dist/operations/services/managed-host-security.js +1 -1
- package/dist/operations/services/managed-repositories.d.ts +37 -0
- package/dist/operations/services/managed-repositories.js +177 -0
- package/dist/operations/services/operations-runner-smoke.d.ts +31 -0
- package/dist/operations/services/operations-runner-smoke.js +198 -0
- package/dist/operations/services/package-adapters.d.ts +170 -0
- package/dist/operations/services/package-adapters.js +859 -0
- package/dist/operations/services/package-reference-policy.d.ts +13 -88
- package/dist/operations/services/package-reference-policy.js +96 -215
- package/dist/operations/services/project-host-operations.d.ts +4 -4
- package/dist/operations/services/project-platform.d.ts +57 -173
- package/dist/operations/services/project-platform.js +80 -111
- package/dist/operations/services/project-web-monitor.d.ts +2 -2
- package/dist/operations/services/project-web-monitor.js +122 -5
- package/dist/operations/services/railway-api.d.ts +117 -5
- package/dist/operations/services/railway-api.js +915 -93
- package/dist/operations/services/railway-deploy.d.ts +30 -112
- package/dist/operations/services/railway-deploy.js +521 -961
- package/dist/operations/services/release-history.js +3 -4
- package/dist/operations/services/release-proof-ledger.d.ts +13 -0
- package/dist/operations/services/release-proof-ledger.js +81 -0
- package/dist/operations/services/release-proof-planner.d.ts +48 -0
- package/dist/operations/services/release-proof-planner.js +195 -0
- package/dist/operations/services/release-proof-runner.d.ts +16 -0
- package/dist/operations/services/release-proof-runner.js +169 -0
- package/dist/operations/services/release-proof.d.ts +81 -0
- package/dist/operations/services/release-proof.js +79 -0
- package/dist/operations/services/repository-save-orchestrator.d.ts +8 -7
- package/dist/operations/services/repository-save-orchestrator.js +604 -212
- package/dist/operations/services/runtime-paths.d.ts +1 -3
- package/dist/operations/services/runtime-paths.js +0 -4
- package/dist/operations/services/runtime-tools.d.ts +1 -191
- package/dist/operations/services/runtime-tools.js +4 -443
- package/dist/operations/services/save-deploy-preflight.js +9 -1
- package/dist/operations/services/template-host-bindings.d.ts +2 -2
- package/dist/operations/services/template-host-bindings.js +3 -2
- package/dist/operations/services/template-registry.d.ts +6 -6
- package/dist/operations/services/template-registry.js +33 -14
- package/dist/operations/services/template-secret-sync.d.ts +3 -3
- package/dist/operations/services/verification-cache.d.ts +25 -0
- package/dist/operations/services/verification-cache.js +71 -0
- package/dist/operations/services/workflow-timing.d.ts +25 -0
- package/dist/operations/services/workflow-timing.js +79 -0
- package/dist/operations/services/workspace-dependency-mode.js +50 -5
- package/dist/operations/services/workspace-preflight.js +8 -8
- package/dist/operations/services/workspace-save-script.d.ts +4 -4
- package/dist/operations/services/workspace-save.d.ts +1 -0
- package/dist/operations/services/workspace-save.js +42 -19
- package/dist/operations/services/workspace-tools.js +42 -7
- package/dist/operations-registry.d.ts +1 -1
- package/dist/operations-registry.js +5 -6
- package/dist/operations-types.d.ts +1 -1
- package/dist/operations.d.ts +17 -11
- package/dist/operations.js +57 -3
- package/dist/platform/book-export.js +2 -0
- package/dist/platform/books-data.d.ts +1 -1
- package/dist/platform/config.d.ts +27 -0
- package/dist/platform/config.js +100 -0
- package/dist/platform/content-runtime-source.d.ts +54 -0
- package/dist/platform/content-runtime-source.js +169 -0
- package/dist/platform/contracts.d.ts +38 -2
- package/dist/platform/deploy-config.d.ts +1 -1
- package/dist/platform/deploy-config.js +80 -9
- package/dist/platform/deploy-runtime.d.ts +1 -1
- package/dist/platform/desired-state.d.ts +63 -0
- package/dist/platform/desired-state.js +1021 -0
- package/dist/platform/env.yaml +568 -45
- package/dist/platform/environment.d.ts +3 -2
- package/dist/platform/environment.js +122 -21
- package/dist/platform/local-content-materialization.d.ts +9 -0
- package/dist/platform/local-content-materialization.js +212 -0
- package/dist/platform/plugin.d.ts +13 -4
- package/dist/platform/plugins/runtime.d.ts +3 -3
- package/dist/platform/plugins/runtime.js +62 -1
- package/dist/platform/plugins.d.ts +6 -6
- package/dist/platform/published-content-pipeline.d.ts +3 -3
- package/dist/platform/published-content-pipeline.js +5 -1
- package/dist/platform/published-content.d.ts +4 -3
- package/dist/platform/site-config-schema.d.ts +1 -0
- package/dist/platform/site-config-schema.js +4 -1
- package/dist/platform/tenant/runtime-config.d.ts +152 -2
- package/dist/platform/tenant-config.d.ts +1 -1
- package/dist/platform/utils/site-config-schema.d.ts +154 -0
- package/dist/platform/utils/site-config-schema.js +400 -461
- package/dist/platform-operation-store.d.ts +1 -1
- package/dist/platform-operation-store.js +2 -2
- package/dist/platform-operations.js +1 -1
- package/dist/plugin-default.d.ts +1 -1
- package/dist/plugin-default.js +27 -12
- package/dist/project-import.d.ts +91 -0
- package/dist/project-import.js +257 -0
- package/dist/project-workflow.d.ts +1 -1
- package/dist/reconcile/bootstrap-systems.d.ts +2 -2
- package/dist/reconcile/bootstrap-systems.js +5 -5
- package/dist/reconcile/builtin-adapters.d.ts +7 -1
- package/dist/reconcile/builtin-adapters.js +3190 -429
- package/dist/reconcile/contracts.d.ts +23 -6
- package/dist/reconcile/desired-state.d.ts +2 -192
- package/dist/reconcile/desired-state.js +29 -38
- package/dist/reconcile/engine.d.ts +61 -395
- package/dist/reconcile/engine.js +229 -44
- package/dist/reconcile/index.d.ts +10 -8
- package/dist/reconcile/index.js +2 -0
- package/dist/reconcile/live-acceptance.d.ts +100 -0
- package/dist/reconcile/live-acceptance.js +2027 -0
- package/dist/reconcile/platform.d.ts +104 -0
- package/dist/reconcile/platform.js +100 -0
- package/dist/reconcile/providers/docker-private.d.ts +54 -0
- package/dist/reconcile/providers/docker-private.js +101 -0
- package/dist/reconcile/providers/github-private.d.ts +65 -0
- package/dist/reconcile/providers/github-private.js +119 -0
- package/dist/reconcile/providers/local-private.d.ts +28 -0
- package/dist/reconcile/providers/local-private.js +75 -0
- package/dist/reconcile/providers/railway-iac.d.ts +66 -0
- package/dist/reconcile/providers/railway-iac.js +275 -0
- package/dist/reconcile/providers/release-private.d.ts +92 -0
- package/dist/reconcile/providers/release-private.js +152 -0
- package/dist/reconcile/registry.d.ts +2 -2
- package/dist/reconcile/registry.js +16 -1
- package/dist/reconcile/state.d.ts +1 -1
- package/dist/reconcile/state.js +7 -44
- package/dist/reconcile/units.d.ts +1 -1
- package/dist/reconcile/units.js +9 -3
- package/dist/remote.d.ts +6 -6
- package/dist/scenes/artifacts.d.ts +16 -0
- package/dist/scenes/artifacts.js +61 -0
- package/dist/scenes/auth.d.ts +2 -0
- package/dist/scenes/auth.js +28 -0
- package/dist/scenes/base-url.d.ts +12 -0
- package/dist/scenes/base-url.js +123 -0
- package/dist/scenes/builtin-plugins.d.ts +2 -0
- package/dist/scenes/builtin-plugins.js +447 -0
- package/dist/scenes/checkpoints.d.ts +14 -0
- package/dist/scenes/checkpoints.js +33 -0
- package/dist/scenes/device-matrix.d.ts +2 -0
- package/dist/scenes/device-matrix.js +97 -0
- package/dist/scenes/devices.d.ts +11 -0
- package/dist/scenes/devices.js +22 -0
- package/dist/scenes/diagnostics.d.ts +5 -0
- package/dist/scenes/diagnostics.js +22 -0
- package/dist/scenes/diagram-providers.d.ts +2 -0
- package/dist/scenes/diagram-providers.js +181 -0
- package/dist/scenes/diagram-validation.d.ts +22 -0
- package/dist/scenes/diagram-validation.js +74 -0
- package/dist/scenes/environment.d.ts +2 -0
- package/dist/scenes/environment.js +65 -0
- package/dist/scenes/evidence-bundle.d.ts +5 -0
- package/dist/scenes/evidence-bundle.js +42 -0
- package/dist/scenes/evidence-report.d.ts +10 -0
- package/dist/scenes/evidence-report.js +73 -0
- package/dist/scenes/evidence.d.ts +16 -0
- package/dist/scenes/evidence.js +277 -0
- package/dist/scenes/index.d.ts +48 -0
- package/dist/scenes/index.js +312 -0
- package/dist/scenes/inspect.d.ts +9 -0
- package/dist/scenes/inspect.js +64 -0
- package/dist/scenes/loader.d.ts +3 -0
- package/dist/scenes/loader.js +38 -0
- package/dist/scenes/logs.d.ts +2 -0
- package/dist/scenes/logs.js +47 -0
- package/dist/scenes/operations.d.ts +3 -0
- package/dist/scenes/operations.js +128 -0
- package/dist/scenes/phase0.d.ts +9 -0
- package/dist/scenes/phase0.js +637 -0
- package/dist/scenes/planner.d.ts +12 -0
- package/dist/scenes/planner.js +166 -0
- package/dist/scenes/playwright-adapter.d.ts +2 -0
- package/dist/scenes/playwright-adapter.js +63 -0
- package/dist/scenes/plugins.d.ts +5 -0
- package/dist/scenes/plugins.js +115 -0
- package/dist/scenes/progress.d.ts +17 -0
- package/dist/scenes/progress.js +24 -0
- package/dist/scenes/publish-destinations.d.ts +12 -0
- package/dist/scenes/publish-destinations.js +99 -0
- package/dist/scenes/publish-plan-report.d.ts +10 -0
- package/dist/scenes/publish-plan-report.js +70 -0
- package/dist/scenes/publish-plan.d.ts +15 -0
- package/dist/scenes/publish-plan.js +248 -0
- package/dist/scenes/publish-redaction.d.ts +16 -0
- package/dist/scenes/publish-redaction.js +148 -0
- package/dist/scenes/publish-release-record.d.ts +13 -0
- package/dist/scenes/publish-release-record.js +34 -0
- package/dist/scenes/publish-report.d.ts +10 -0
- package/dist/scenes/publish-report.js +67 -0
- package/dist/scenes/publish.d.ts +16 -0
- package/dist/scenes/publish.js +298 -0
- package/dist/scenes/registry.d.ts +12 -0
- package/dist/scenes/registry.js +65 -0
- package/dist/scenes/remotion-adapter.d.ts +3 -0
- package/dist/scenes/remotion-adapter.js +94 -0
- package/dist/scenes/remotion-composition-registry.d.ts +2 -0
- package/dist/scenes/remotion-composition-registry.js +12 -0
- package/dist/scenes/remotion-compositions.d.ts +15 -0
- package/dist/scenes/remotion-compositions.js +464 -0
- package/dist/scenes/remotion-diagrams.d.ts +9 -0
- package/dist/scenes/remotion-diagrams.js +188 -0
- package/dist/scenes/remotion-input.d.ts +13 -0
- package/dist/scenes/remotion-input.js +291 -0
- package/dist/scenes/remotion-visuals.d.ts +29 -0
- package/dist/scenes/remotion-visuals.js +198 -0
- package/dist/scenes/render-media-assets.d.ts +9 -0
- package/dist/scenes/render-media-assets.js +117 -0
- package/dist/scenes/render-report.d.ts +10 -0
- package/dist/scenes/render-report.js +27 -0
- package/dist/scenes/render.d.ts +2 -0
- package/dist/scenes/render.js +218 -0
- package/dist/scenes/reporter.d.ts +3 -0
- package/dist/scenes/reporter.js +101 -0
- package/dist/scenes/resume.d.ts +2 -0
- package/dist/scenes/resume.js +79 -0
- package/dist/scenes/runner.d.ts +2 -0
- package/dist/scenes/runner.js +674 -0
- package/dist/scenes/schema.d.ts +6 -0
- package/dist/scenes/schema.js +994 -0
- package/dist/scenes/seed.d.ts +2 -0
- package/dist/scenes/seed.js +83 -0
- package/dist/scenes/segments.d.ts +15 -0
- package/dist/scenes/segments.js +79 -0
- package/dist/scenes/selectors.d.ts +3 -0
- package/dist/scenes/selectors.js +21 -0
- package/dist/scenes/timeline.d.ts +11 -0
- package/dist/scenes/timeline.js +26 -0
- package/dist/scenes/timeouts.d.ts +6 -0
- package/dist/scenes/timeouts.js +17 -0
- package/dist/scenes/training-captions.d.ts +14 -0
- package/dist/scenes/training-captions.js +98 -0
- package/dist/scenes/training-report.d.ts +10 -0
- package/dist/scenes/training-report.js +78 -0
- package/dist/scenes/training-transcript.d.ts +24 -0
- package/dist/scenes/training-transcript.js +204 -0
- package/dist/scenes/training.d.ts +10 -0
- package/dist/scenes/training.js +134 -0
- package/dist/scenes/types.d.ts +1872 -0
- package/dist/scenes/types.js +8 -0
- package/dist/scenes/visual-audit-contact-sheets.d.ts +6 -0
- package/dist/scenes/visual-audit-contact-sheets.js +119 -0
- package/dist/scenes/visual-audit-fixtures.d.ts +25 -0
- package/dist/scenes/visual-audit-fixtures.js +210 -0
- package/dist/scenes/visual-audit-report.d.ts +11 -0
- package/dist/scenes/visual-audit-report.js +85 -0
- package/dist/scenes/visual-audit-review.d.ts +23 -0
- package/dist/scenes/visual-audit-review.js +829 -0
- package/dist/scenes/visual-audit-routes.d.ts +13 -0
- package/dist/scenes/visual-audit-routes.js +308 -0
- package/dist/scenes/visual-audit.d.ts +3 -0
- package/dist/scenes/visual-audit.js +596 -0
- package/dist/scripts/build-dist.js +154 -40
- package/dist/scripts/check-build-warnings.js +42 -53
- package/dist/scripts/cleanup-markdown.js +1 -1
- package/dist/scripts/cli-test-fixtures.js +24 -28
- package/dist/scripts/deployment-readiness.js +20 -0
- package/dist/scripts/generate-treedx-openapi-types.js +186 -0
- package/dist/scripts/migrate-journey-csv-to-guarantees.js +140 -0
- package/dist/scripts/operations-runner-smoke.js +16 -0
- package/dist/scripts/package-tools.js +12 -1
- package/dist/scripts/prepare.js +3 -7
- package/dist/scripts/release-verify.js +6 -6
- package/dist/scripts/run-fixture-astro-command.js +1 -1
- package/dist/scripts/template-catalog.test.js +68 -82
- package/dist/scripts/tenant-dev.js +0 -10
- package/dist/scripts/tenant-workflow-action.js +10 -1
- package/dist/scripts/test-cloudflare-local.js +1 -1
- package/dist/scripts/test-scaffold.js +0 -1
- package/dist/scripts/test-smoke.js +3 -3
- package/dist/scripts/treeseed-build-dist.js +4 -7
- package/dist/scripts/treeseed-release-verify.js +1 -1
- package/dist/scripts/verify-driver.js +30 -21
- package/dist/scripts/workflow-commands.test.js +18 -27
- package/dist/scripts/workspace-command-e2e.js +1 -1
- package/dist/scripts/workspace-lint.js +6 -0
- package/dist/scripts/workspace-release-test.js +90 -1
- package/dist/scripts/workspace-test.js +6 -0
- package/dist/sdk-dispatch.d.ts +1 -1
- package/dist/sdk-dispatch.js +0 -16
- package/dist/sdk-fields.d.ts +1 -1
- package/dist/sdk-filters.d.ts +1 -1
- package/dist/sdk-types.d.ts +1352 -116
- package/dist/sdk-types.js +413 -2
- package/dist/sdk.d.ts +106 -100
- package/dist/sdk.js +211 -51
- package/dist/secrets-capability.d.ts +421 -0
- package/dist/secrets-capability.js +530 -0
- package/dist/seeds/normalize.js +1 -0
- package/dist/seeds/planner.js +38 -0
- package/dist/seeds/schema.js +293 -4
- package/dist/seeds/types.d.ts +60 -0
- package/dist/seeds/types.js +9 -1
- package/dist/service-credentials.d.ts +54 -0
- package/dist/service-credentials.js +112 -0
- package/dist/stores/cursor-store.d.ts +2 -2
- package/dist/stores/envelopes.d.ts +1 -1
- package/dist/stores/helpers.d.ts +1 -1
- package/dist/stores/lease-store.d.ts +2 -2
- package/dist/stores/message-store.d.ts +2 -2
- package/dist/stores/operational-store.d.ts +3 -26
- package/dist/stores/operational-store.js +0 -225
- package/dist/stores/project-workflow-store.d.ts +2 -2
- package/dist/stores/run-store.d.ts +2 -3
- package/dist/stores/run-store.js +0 -98
- package/dist/stores/subscription-store.d.ts +2 -3
- package/dist/stores/subscription-store.js +0 -100
- package/dist/template-catalog.d.ts +1 -1
- package/dist/template-launch-requirements.d.ts +2 -2
- package/dist/template-launch-requirements.js +9 -0
- package/dist/template-launch-ui.d.ts +2 -2
- package/dist/treedx/adapters.d.ts +6 -0
- package/dist/treedx/adapters.js +36 -0
- package/dist/treedx/client.d.ts +222 -0
- package/dist/treedx/client.js +871 -0
- package/dist/treedx/errors.d.ts +13 -0
- package/dist/treedx/errors.js +17 -0
- package/dist/treedx/federated-client.d.ts +27 -0
- package/dist/treedx/federated-client.js +158 -0
- package/dist/treedx/generated/openapi-types.d.ts +3558 -0
- package/dist/treedx/generated/openapi-types.js +0 -0
- package/dist/treedx/graph-adapter.d.ts +33 -0
- package/dist/treedx/graph-adapter.js +156 -0
- package/dist/treedx/index.d.ts +14 -0
- package/dist/treedx/index.js +48 -0
- package/dist/treedx/market-integration.d.ts +27 -0
- package/dist/treedx/market-integration.js +131 -0
- package/dist/treedx/ports.d.ts +166 -0
- package/dist/treedx/ports.js +231 -0
- package/dist/treedx/query-adapter.d.ts +19 -0
- package/dist/treedx/query-adapter.js +62 -0
- package/dist/treedx/registry-client.d.ts +11 -0
- package/dist/treedx/registry-client.js +19 -0
- package/dist/treedx/repository-adapter.d.ts +45 -0
- package/dist/treedx/repository-adapter.js +319 -0
- package/dist/treedx/sdk-integration.d.ts +27 -0
- package/dist/treedx/sdk-integration.js +63 -0
- package/dist/treedx/types.d.ts +1084 -0
- package/dist/treedx/types.js +8 -0
- package/dist/treedx/workspace-adapter.d.ts +27 -0
- package/dist/treedx/workspace-adapter.js +65 -0
- package/dist/treedx-backends.d.ts +220 -0
- package/dist/treedx-backends.js +634 -0
- package/dist/treedx-client.d.ts +89 -0
- package/dist/treedx-client.js +184 -0
- package/dist/treeseed/services/compose.yml +2 -3
- package/dist/treeseed/template-catalog/catalog.fixture.json +27 -27
- package/dist/types/agents.d.ts +256 -0
- package/dist/types/agents.js +42 -1
- package/dist/verification.d.ts +1 -0
- package/dist/verification.js +143 -14
- package/dist/workflow/operations.d.ts +580 -523
- package/dist/workflow/operations.js +2084 -1279
- package/dist/workflow/policy.js +19 -7
- package/dist/workflow/runs.d.ts +9 -3
- package/dist/workflow/runs.js +66 -26
- package/dist/workflow/session.d.ts +4 -1
- package/dist/workflow/session.js +50 -10
- package/dist/workflow/worktrees.d.ts +6 -2
- package/dist/workflow/worktrees.js +98 -15
- package/dist/workflow-state.d.ts +17 -4
- package/dist/workflow-state.js +68 -41
- package/dist/workflow-support.d.ts +26 -17
- package/dist/workflow-support.js +84 -24
- package/dist/workflow.d.ts +51 -16
- package/dist/workflow.js +19 -7
- package/drizzle/d1/0000_treeseed_d1.sql +0 -18
- package/drizzle/market/0000_market_control_plane.sql +1793 -1499
- package/drizzle/market/0004_treedx_market_integration.sql +99 -0
- package/drizzle/market/0005_agent_capacity_coordination.sql +145 -0
- package/drizzle/market/0006_provider_assignment_lifecycle.sql +9 -0
- package/drizzle/market/0007_agent_architecture_gap_closure.sql +157 -0
- package/drizzle/market/0008_agent_capacity_operational_closure.sql +27 -0
- package/drizzle/market/0009_agent_capacity_runtime_hardening.sql +29 -0
- package/drizzle/market/0010_secrets_capability_persistence.sql +130 -0
- package/drizzle/market/0011_github_app_adapter.sql +47 -0
- package/drizzle/market/0012_workday_test_runs.sql +44 -0
- package/drizzle/market/0013_runtime_task_lifecycle.sql +39 -0
- package/drizzle/market/0014_governance_pipeline.sql +189 -0
- package/package.json +106 -18
- package/scripts/{verify-driver.mjs → verify-driver.ts} +19 -4
- package/templates/github/deploy-web.workflow.yml +49 -12
- package/dist/operations/services/mailpit-runtime.d.ts +0 -20
- package/dist/operations/services/mailpit-runtime.js +0 -67
- package/dist/operations/services/release-candidate.d.ts +0 -41
- package/dist/operations/services/release-candidate.js +0 -616
- package/dist/scripts/ensure-mailpit.js +0 -48
- package/dist/scripts/logs-mailpit.js +0 -2
- package/dist/scripts/run-ts.js +0 -45
- package/dist/scripts/stop-mailpit.js +0 -5
- package/dist/scripts/treeseed-run-ts.js +0 -45
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
TREESEED_REMOTE_CONTRACT_HEADER,
|
|
3
3
|
TREESEED_REMOTE_CONTRACT_VERSION
|
|
4
4
|
} from "./remote.js";
|
|
5
|
+
import { parse as parseYaml } from "yaml";
|
|
5
6
|
import {
|
|
6
7
|
collectTreeseedConfigSeedValues,
|
|
7
8
|
collectTreeseedEnvironmentContext,
|
|
@@ -11,12 +12,19 @@ import {
|
|
|
11
12
|
const CAPACITY_PROVIDER_ENDPOINTS = {
|
|
12
13
|
register: "/v1/provider/register",
|
|
13
14
|
heartbeat: "/v1/provider/heartbeat",
|
|
15
|
+
checkIn: "/v1/provider/check-in",
|
|
16
|
+
sessions: "/v1/provider/sessions",
|
|
14
17
|
portfolio: "/v1/provider/portfolio",
|
|
15
18
|
workdays: "/v1/provider/workdays",
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
nextAssignment: "/v1/provider/assignments/next",
|
|
20
|
+
assignment: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}`,
|
|
21
|
+
assignmentRenew: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/renew`,
|
|
22
|
+
assignmentReturn: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/return`,
|
|
23
|
+
assignmentComplete: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/complete`,
|
|
24
|
+
assignmentFail: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/fail`,
|
|
25
|
+
assignmentModeRuns: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/mode-runs`,
|
|
26
|
+
assignmentWorkflowOperationDispatch: (assignmentId, operationId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/workflow-operations/${encodeURIComponent(operationId)}/dispatch`,
|
|
27
|
+
assignmentExplanation: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/explanation`,
|
|
20
28
|
usage: "/v1/provider/usage",
|
|
21
29
|
reports: "/v1/provider/reports"
|
|
22
30
|
};
|
|
@@ -24,20 +32,23 @@ const CAPACITY_PROVIDER_SCOPES = [
|
|
|
24
32
|
"provider:register",
|
|
25
33
|
"provider:heartbeat",
|
|
26
34
|
"provider:portfolio:read",
|
|
27
|
-
"provider:
|
|
28
|
-
"provider:
|
|
35
|
+
"provider:assignments:read",
|
|
36
|
+
"provider:assignments:write",
|
|
29
37
|
"provider:usage:report",
|
|
30
38
|
"provider:reports:write",
|
|
31
39
|
"provider:capabilities:write"
|
|
32
40
|
];
|
|
33
41
|
const CAPACITY_PROVIDER_ENV_KEYS = [
|
|
42
|
+
"TREESEED_MANAGEMENT_API_URL",
|
|
34
43
|
"TREESEED_MARKET_URL",
|
|
35
44
|
"TREESEED_MARKET_ID",
|
|
45
|
+
"TREESEED_MANAGER_ID",
|
|
46
|
+
"TREESEED_CAPACITY_PROVIDER_ID",
|
|
47
|
+
"TREESEED_CAPACITY_PROVIDER_TEAM_ID",
|
|
36
48
|
"TREESEED_CAPACITY_PROVIDER_API_KEY",
|
|
37
49
|
"TREESEED_PROVIDER_HOST_DATA_DIR",
|
|
50
|
+
"TREESEED_HOST_CODEX_AUTH_FILE",
|
|
38
51
|
"TREESEED_PROVIDER_DATA_DIR",
|
|
39
|
-
"TREESEED_PROVIDER_API_PORT",
|
|
40
|
-
"TREESEED_PROVIDER_HOST_API_PORT",
|
|
41
52
|
"TREESEED_PROVIDER_ENVIRONMENT",
|
|
42
53
|
"TREESEED_PROVIDER_CAPABILITIES_FILE",
|
|
43
54
|
"TREESEED_PROVIDER_BUDGET_FILE",
|
|
@@ -48,9 +59,25 @@ const CAPACITY_PROVIDER_ENV_KEYS = [
|
|
|
48
59
|
"TREESEED_PROVIDER_STARTUP_MODE",
|
|
49
60
|
"TREESEED_CODEX_AUTH_FILE",
|
|
50
61
|
"TREESEED_CODEX_AUTH_JSON_B64",
|
|
51
|
-
"TREESEED_CODEX_AUTH_OVERWRITE"
|
|
62
|
+
"TREESEED_CODEX_AUTH_OVERWRITE",
|
|
63
|
+
"TREESEED_TREEDX_BASE_URL",
|
|
64
|
+
"TREESEED_TREEDX_URL",
|
|
65
|
+
"TREESEED_TREEDX_TOKEN",
|
|
66
|
+
"TREESEED_TREEDX_REPO_ID",
|
|
67
|
+
"TREESEED_TREEDX_REF",
|
|
68
|
+
"TREESEED_TREEDX_WORKSPACE_ID",
|
|
69
|
+
"TREESEED_TREEDX_JWT_ISSUER",
|
|
70
|
+
"TREESEED_TREEDX_JWT_AUDIENCE",
|
|
71
|
+
"TREESEED_TREEDX_JWT_HS256_SECRET",
|
|
72
|
+
"TREESEED_TREEDX_PROXY_ACTOR_ID",
|
|
73
|
+
"TREESEED_TREEDX_PROXY_TENANT_ID"
|
|
52
74
|
];
|
|
53
75
|
const CAPACITY_PROVIDER_DEPLOYMENT_SERVICE_ROLES = ["api", "manager", "runner"];
|
|
76
|
+
const DEFAULT_CAPACITY_PROVIDER_ROLE_IMAGES = {
|
|
77
|
+
api: "treeseed/agent-provider-api",
|
|
78
|
+
manager: "treeseed/agent-manager",
|
|
79
|
+
runner: "treeseed/agent-runner"
|
|
80
|
+
};
|
|
54
81
|
class CapacityProviderApiError extends Error {
|
|
55
82
|
constructor(message, status, payload) {
|
|
56
83
|
super(message);
|
|
@@ -158,6 +185,26 @@ function assertCapacityProviderPortfolioManifest(value) {
|
|
|
158
185
|
requireString(project, "slug", `Capacity provider portfolio project ${index}`);
|
|
159
186
|
requireString(project, "name", `Capacity provider portfolio project ${index}`);
|
|
160
187
|
if (!isRecord(project.repository)) throw new Error(`Capacity provider portfolio project ${index} is missing repository.`);
|
|
188
|
+
if (project.repositoryTopology !== void 0) {
|
|
189
|
+
if (!isRecord(project.repositoryTopology)) {
|
|
190
|
+
throw new Error(`Capacity provider portfolio project ${index} repositoryTopology must be an object.`);
|
|
191
|
+
}
|
|
192
|
+
if (!isRecord(project.repositoryTopology.contentRepository)) {
|
|
193
|
+
throw new Error(`Capacity provider portfolio project ${index} repositoryTopology is missing contentRepository.`);
|
|
194
|
+
}
|
|
195
|
+
if (project.repositoryTopology.contentRepository.accessMode !== "treedx") {
|
|
196
|
+
throw new Error(`Capacity provider portfolio project ${index} contentRepository must use treedx access.`);
|
|
197
|
+
}
|
|
198
|
+
if (!isRecord(project.repositoryTopology.siteRepository)) {
|
|
199
|
+
throw new Error(`Capacity provider portfolio project ${index} repositoryTopology is missing siteRepository.`);
|
|
200
|
+
}
|
|
201
|
+
if (project.repositoryTopology.siteRepository.accessMode !== "filesystem") {
|
|
202
|
+
throw new Error(`Capacity provider portfolio project ${index} siteRepository must use filesystem access.`);
|
|
203
|
+
}
|
|
204
|
+
if (project.repositoryTopology.projectRepository !== void 0 && project.repositoryTopology.projectRepository !== null && (!isRecord(project.repositoryTopology.projectRepository) || project.repositoryTopology.projectRepository.accessMode !== "filesystem")) {
|
|
205
|
+
throw new Error(`Capacity provider portfolio project ${index} projectRepository must use filesystem access.`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
161
208
|
if (!isRecord(project.agentSpecs)) throw new Error(`Capacity provider portfolio project ${index} is missing agentSpecs.`);
|
|
162
209
|
if (!isRecord(project.workPolicy)) throw new Error(`Capacity provider portfolio project ${index} is missing workPolicy.`);
|
|
163
210
|
}
|
|
@@ -166,13 +213,15 @@ function resolveCapacityProviderEnvironment(input) {
|
|
|
166
213
|
const env = {
|
|
167
214
|
TREESEED_MARKET_URL: normalizeBaseUrl(input.marketUrl),
|
|
168
215
|
TREESEED_MARKET_ID: input.marketId.trim(),
|
|
216
|
+
TREESEED_MANAGER_ID: input.marketId.trim(),
|
|
169
217
|
TREESEED_CAPACITY_PROVIDER_API_KEY: input.apiKey.trim(),
|
|
170
218
|
TREESEED_PROVIDER_DATA_DIR: input.providerDataDir ?? "/data",
|
|
171
|
-
TREESEED_PROVIDER_API_PORT: stringValue(input.providerApiPort, "3100"),
|
|
172
219
|
TREESEED_PROVIDER_ENVIRONMENT: input.providerEnvironment ?? "local"
|
|
173
220
|
};
|
|
174
|
-
|
|
221
|
+
env.TREESEED_MANAGEMENT_API_URL = env.TREESEED_MARKET_URL || "https://api.treeseed.dev";
|
|
175
222
|
if (!env.TREESEED_CAPACITY_PROVIDER_API_KEY) throw new Error("Capacity provider API key is required.");
|
|
223
|
+
if (input.providerId) env.TREESEED_CAPACITY_PROVIDER_ID = input.providerId;
|
|
224
|
+
if (input.teamId) env.TREESEED_CAPACITY_PROVIDER_TEAM_ID = input.teamId;
|
|
176
225
|
if (input.providerHostDataDir) env.TREESEED_PROVIDER_HOST_DATA_DIR = input.providerHostDataDir;
|
|
177
226
|
if (input.capabilitiesFile) env.TREESEED_PROVIDER_CAPABILITIES_FILE = input.capabilitiesFile;
|
|
178
227
|
if (input.budgetFile) env.TREESEED_PROVIDER_BUDGET_FILE = input.budgetFile;
|
|
@@ -215,12 +264,14 @@ function resolveCapacityProviderLaunchEnvironment(input = {}) {
|
|
|
215
264
|
const diagnostic = input.diagnostic === true || values.TREESEED_PROVIDER_STARTUP_MODE === "diagnostic";
|
|
216
265
|
const resolved = {
|
|
217
266
|
TREESEED_PROVIDER_DATA_DIR: "/data",
|
|
218
|
-
TREESEED_PROVIDER_API_PORT: "3100",
|
|
219
267
|
TREESEED_PROVIDER_ENVIRONMENT: scope,
|
|
220
268
|
...values
|
|
221
269
|
};
|
|
222
|
-
if (!resolved.
|
|
223
|
-
resolved.
|
|
270
|
+
if (!resolved.TREESEED_MARKET_ID && resolved.TREESEED_MANAGER_ID) {
|
|
271
|
+
resolved.TREESEED_MARKET_ID = resolved.TREESEED_MANAGER_ID;
|
|
272
|
+
}
|
|
273
|
+
if (!resolved.TREESEED_MANAGER_ID && resolved.TREESEED_MARKET_ID) {
|
|
274
|
+
resolved.TREESEED_MANAGER_ID = resolved.TREESEED_MARKET_ID;
|
|
224
275
|
}
|
|
225
276
|
if (!resolved.TREESEED_PROVIDER_HOST_DATA_DIR) {
|
|
226
277
|
resolved.TREESEED_PROVIDER_HOST_DATA_DIR = ".treeseed/local-capacity-provider/data";
|
|
@@ -229,8 +280,6 @@ function resolveCapacityProviderLaunchEnvironment(input = {}) {
|
|
|
229
280
|
resolved.TREESEED_PROVIDER_STARTUP_MODE = "diagnostic";
|
|
230
281
|
}
|
|
231
282
|
const required = [
|
|
232
|
-
"TREESEED_MARKET_URL",
|
|
233
|
-
"TREESEED_MARKET_ID",
|
|
234
283
|
...diagnostic ? [] : ["TREESEED_CAPACITY_PROVIDER_API_KEY"],
|
|
235
284
|
"TREESEED_PROVIDER_HOST_DATA_DIR"
|
|
236
285
|
];
|
|
@@ -261,8 +310,12 @@ function persistCapacityProviderConnectionToTreeseedConfig(input) {
|
|
|
261
310
|
}
|
|
262
311
|
const entryById = new Map(registryEntries.map((entry) => [entry.id, entry]));
|
|
263
312
|
const keys = [
|
|
313
|
+
"TREESEED_MANAGEMENT_API_URL",
|
|
264
314
|
"TREESEED_MARKET_URL",
|
|
265
315
|
"TREESEED_MARKET_ID",
|
|
316
|
+
"TREESEED_MANAGER_ID",
|
|
317
|
+
"TREESEED_CAPACITY_PROVIDER_ID",
|
|
318
|
+
"TREESEED_CAPACITY_PROVIDER_TEAM_ID",
|
|
266
319
|
"TREESEED_CAPACITY_PROVIDER_API_KEY",
|
|
267
320
|
"TREESEED_PROVIDER_HOST_DATA_DIR",
|
|
268
321
|
"TREESEED_PROVIDER_ENVIRONMENT"
|
|
@@ -292,6 +345,63 @@ function redactCapacityProviderEnv(env) {
|
|
|
292
345
|
}
|
|
293
346
|
return redacted;
|
|
294
347
|
}
|
|
348
|
+
function manifestRecord(value) {
|
|
349
|
+
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
350
|
+
}
|
|
351
|
+
function manifestRoleImage(role, manifest) {
|
|
352
|
+
const tag = manifest.runtime?.images?.tag ?? "latest";
|
|
353
|
+
const roleConfig = manifest.runtime?.images?.roles?.[role] ?? {};
|
|
354
|
+
const extension = manifest.extensions?.[role];
|
|
355
|
+
if (extension?.enabled && extension.image) {
|
|
356
|
+
return `${extension.image}:${extension.tag ?? tag}`;
|
|
357
|
+
}
|
|
358
|
+
return `${roleConfig.image ?? DEFAULT_CAPACITY_PROVIDER_ROLE_IMAGES[role]}:${roleConfig.tag ?? tag}`;
|
|
359
|
+
}
|
|
360
|
+
function assertSafeCapacityProviderManifest(value) {
|
|
361
|
+
for (const [role, extension] of Object.entries(value.extensions ?? {})) {
|
|
362
|
+
if (!extension) continue;
|
|
363
|
+
for (const [key, entryValue] of Object.entries(extension.buildArgs ?? {})) {
|
|
364
|
+
if (entryValue === void 0 || entryValue === null || entryValue === "") continue;
|
|
365
|
+
if (isCapacityProviderSecretEnvKey(key) || /(?:tscp_|tsp_|sk-|ghp_|gho_|github_pat_)/u.test(String(entryValue))) {
|
|
366
|
+
throw new Error(`Capacity provider ${role} extension build arg ${key} looks secret-like. Store secrets in Treeseed config or the host secret manager instead.`);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
function parseCapacityProviderLaunchManifest(source) {
|
|
372
|
+
const parsed = typeof source === "string" ? parseYaml(source) : source;
|
|
373
|
+
const record = manifestRecord(parsed);
|
|
374
|
+
if (record.schemaVersion !== 1) {
|
|
375
|
+
throw new Error("Capacity provider launch manifest schemaVersion must be 1.");
|
|
376
|
+
}
|
|
377
|
+
const manifest = record;
|
|
378
|
+
assertSafeCapacityProviderManifest(manifest);
|
|
379
|
+
return manifest;
|
|
380
|
+
}
|
|
381
|
+
function resolveCapacityProviderLaunchPlan(manifest) {
|
|
382
|
+
assertSafeCapacityProviderManifest(manifest);
|
|
383
|
+
const roleImages = {
|
|
384
|
+
api: manifestRoleImage("api", manifest),
|
|
385
|
+
manager: manifestRoleImage("manager", manifest),
|
|
386
|
+
runner: manifestRoleImage("runner", manifest)
|
|
387
|
+
};
|
|
388
|
+
const composeEnv = {
|
|
389
|
+
...manifest.provider?.dataDir ? { TREESEED_PROVIDER_HOST_DATA_DIR: manifest.provider.dataDir } : {},
|
|
390
|
+
...manifest.provider?.environment ? { TREESEED_PROVIDER_ENVIRONMENT: manifest.provider.environment } : {},
|
|
391
|
+
...manifest.provider?.market?.url ? { TREESEED_MARKET_URL: manifest.provider.market.url } : {},
|
|
392
|
+
...manifest.provider?.market?.id ? { TREESEED_MANAGER_ID: manifest.provider.market.id, TREESEED_MARKET_ID: manifest.provider.market.id } : {},
|
|
393
|
+
...manifest.runtime?.runners?.maxConcurrent ? { TREESEED_PROVIDER_MAX_CONCURRENT_RUNNERS: String(manifest.runtime.runners.maxConcurrent) } : {},
|
|
394
|
+
TREESEED_AGENT_API_IMAGE: roleImages.api,
|
|
395
|
+
TREESEED_AGENT_MANAGER_IMAGE: roleImages.manager,
|
|
396
|
+
TREESEED_AGENT_RUNNER_IMAGE: roleImages.runner
|
|
397
|
+
};
|
|
398
|
+
return {
|
|
399
|
+
manifest,
|
|
400
|
+
roleImages,
|
|
401
|
+
composeEnv,
|
|
402
|
+
redactedEnv: redactCapacityProviderEnv(composeEnv)
|
|
403
|
+
};
|
|
404
|
+
}
|
|
295
405
|
function renderCapacityProviderSelfHostInstructions(input) {
|
|
296
406
|
const env = resolveCapacityProviderEnvironment(input);
|
|
297
407
|
return {
|
|
@@ -318,7 +428,7 @@ function defaultProviderDeploymentAdapter(hostKind) {
|
|
|
318
428
|
role: spec.role,
|
|
319
429
|
serviceName: spec.serviceName,
|
|
320
430
|
serviceId: `${hostKind}:${spec.serviceName}`,
|
|
321
|
-
url:
|
|
431
|
+
url: null,
|
|
322
432
|
status: "deployed",
|
|
323
433
|
envRefs: Object.fromEntries(
|
|
324
434
|
Object.keys(spec.env).map((key) => [key, isCapacityProviderSecretEnvKey(key) ? `${spec.serviceName}:${key}` : spec.redactedEnv[key] ?? spec.env[key]])
|
|
@@ -328,7 +438,11 @@ function defaultProviderDeploymentAdapter(hostKind) {
|
|
|
328
438
|
};
|
|
329
439
|
}
|
|
330
440
|
async function deployCapacityProviderWithAdapter(input, launchMode, hostKind) {
|
|
331
|
-
const
|
|
441
|
+
const roleImageRefs = {
|
|
442
|
+
api: input.roleImageRefs?.api ?? input.imageRef ?? input.intent.imageRef ?? "treeseed/agent-provider-api:latest",
|
|
443
|
+
manager: input.roleImageRefs?.manager ?? input.imageRef ?? input.intent.imageRef ?? "treeseed/agent-manager:latest",
|
|
444
|
+
runner: input.roleImageRefs?.runner ?? input.imageRef ?? input.intent.imageRef ?? "treeseed/agent-runner:latest"
|
|
445
|
+
};
|
|
332
446
|
const serviceNamePrefix = input.serviceNamePrefix ?? `${input.intent.capacityProviderId || "capacity-provider"}`.replace(/^cp[_-]?/u, "capacity-provider-").replace(/[^a-zA-Z0-9_.-]+/gu, "-");
|
|
333
447
|
const env = { ...input.env };
|
|
334
448
|
const redactedEnv = input.redactedEnv ?? redactCapacityProviderEnv(env);
|
|
@@ -340,7 +454,7 @@ async function deployCapacityProviderWithAdapter(input, launchMode, hostKind) {
|
|
|
340
454
|
const result = await adapter.provisionService({
|
|
341
455
|
role,
|
|
342
456
|
serviceName: providerDeploymentServiceName(serviceNamePrefix, role),
|
|
343
|
-
imageRef,
|
|
457
|
+
imageRef: roleImageRefs[role],
|
|
344
458
|
startCommand: providerDeploymentStartCommand(role),
|
|
345
459
|
env,
|
|
346
460
|
redactedEnv
|
|
@@ -359,7 +473,7 @@ async function deployCapacityProviderWithAdapter(input, launchMode, hostKind) {
|
|
|
359
473
|
ok: true,
|
|
360
474
|
launchMode,
|
|
361
475
|
hostKind,
|
|
362
|
-
|
|
476
|
+
roleImageRefs,
|
|
363
477
|
status: "deployed",
|
|
364
478
|
serviceRefs: services,
|
|
365
479
|
envRefs: Object.fromEntries(Object.keys(env).map((key) => [key, isCapacityProviderSecretEnvKey(key) ? "<host-secret>" : redactedEnv[key] ?? env[key]])),
|
|
@@ -372,7 +486,7 @@ async function deployCapacityProviderWithAdapter(input, launchMode, hostKind) {
|
|
|
372
486
|
ok: false,
|
|
373
487
|
launchMode,
|
|
374
488
|
hostKind,
|
|
375
|
-
|
|
489
|
+
roleImageRefs,
|
|
376
490
|
status: "failed",
|
|
377
491
|
serviceRefs: services,
|
|
378
492
|
envRefs: Object.fromEntries(Object.keys(env).map((key) => [key, isCapacityProviderSecretEnvKey(key) ? "<host-secret>" : redactedEnv[key] ?? env[key]])),
|
|
@@ -394,14 +508,15 @@ class MarketProviderClient {
|
|
|
394
508
|
apiKey;
|
|
395
509
|
fetchImpl;
|
|
396
510
|
userAgent;
|
|
511
|
+
requestTimeoutMs;
|
|
397
512
|
constructor(options) {
|
|
398
513
|
this.marketUrl = normalizeBaseUrl(options.marketUrl);
|
|
399
514
|
this.marketId = options.marketId.trim();
|
|
400
515
|
this.apiKey = options.apiKey.trim();
|
|
401
|
-
if (!this.marketId) throw new Error("Capacity provider Market ID is required.");
|
|
402
516
|
if (!this.apiKey) throw new Error("Capacity provider API key is required.");
|
|
403
517
|
this.fetchImpl = options.fetchImpl ?? fetch;
|
|
404
518
|
this.userAgent = options.userAgent;
|
|
519
|
+
this.requestTimeoutMs = Math.max(1e3, Number(options.requestTimeoutMs ?? 3e4) || 3e4);
|
|
405
520
|
}
|
|
406
521
|
async requestJson(path, options = {}) {
|
|
407
522
|
const headers = {
|
|
@@ -411,11 +526,22 @@ class MarketProviderClient {
|
|
|
411
526
|
};
|
|
412
527
|
if (this.userAgent) headers["user-agent"] = this.userAgent;
|
|
413
528
|
if (options.body !== void 0) headers["content-type"] = "application/json";
|
|
414
|
-
const
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
529
|
+
const controller = new AbortController();
|
|
530
|
+
const timeout = setTimeout(() => controller.abort(), this.requestTimeoutMs);
|
|
531
|
+
let response;
|
|
532
|
+
try {
|
|
533
|
+
response = await this.fetchImpl(`${this.marketUrl}${path}`, {
|
|
534
|
+
method: options.method ?? "GET",
|
|
535
|
+
headers,
|
|
536
|
+
body: options.body === void 0 ? void 0 : JSON.stringify(options.body),
|
|
537
|
+
signal: controller.signal
|
|
538
|
+
});
|
|
539
|
+
} catch (error) {
|
|
540
|
+
const message = error instanceof Error && error.name === "AbortError" ? `Capacity provider request timed out after ${this.requestTimeoutMs}ms: ${path}` : error instanceof Error ? error.message : String(error);
|
|
541
|
+
throw new CapacityProviderApiError(message, 0, { path, timeoutMs: this.requestTimeoutMs });
|
|
542
|
+
} finally {
|
|
543
|
+
clearTimeout(timeout);
|
|
544
|
+
}
|
|
419
545
|
const payload = await response.json().catch(() => ({}));
|
|
420
546
|
if (!response.ok) {
|
|
421
547
|
const message = isRecord(payload) && typeof payload.error === "string" ? payload.error : `Capacity provider request failed with ${response.status}.`;
|
|
@@ -424,23 +550,48 @@ class MarketProviderClient {
|
|
|
424
550
|
return payload;
|
|
425
551
|
}
|
|
426
552
|
register(request) {
|
|
553
|
+
const marketId = request.marketId ?? this.marketId;
|
|
554
|
+
const body = marketId ? { ...request, marketId } : request;
|
|
427
555
|
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.register, {
|
|
428
556
|
method: "POST",
|
|
429
|
-
body
|
|
557
|
+
body
|
|
430
558
|
}).then((response) => {
|
|
431
559
|
assertCapacityProviderRegistrationResponse(response);
|
|
560
|
+
if (typeof response.sessionToken === "string" && response.sessionToken.trim()) {
|
|
561
|
+
this.apiKey = response.sessionToken.trim();
|
|
562
|
+
}
|
|
432
563
|
return response;
|
|
433
564
|
});
|
|
434
565
|
}
|
|
435
566
|
heartbeat(request = {}) {
|
|
567
|
+
const marketId = request.marketId ?? this.marketId;
|
|
568
|
+
const body = marketId ? { ...request, marketId } : request;
|
|
436
569
|
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.heartbeat, {
|
|
437
570
|
method: "POST",
|
|
438
|
-
body
|
|
571
|
+
body
|
|
439
572
|
}).then((response) => {
|
|
440
573
|
assertCapacityProviderOkEnvelope(response, "Capacity provider heartbeat response");
|
|
441
574
|
return response;
|
|
442
575
|
});
|
|
443
576
|
}
|
|
577
|
+
createAvailabilitySession(request = {}) {
|
|
578
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.sessions, {
|
|
579
|
+
method: "POST",
|
|
580
|
+
body: request
|
|
581
|
+
}).then((response) => {
|
|
582
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider availability session response");
|
|
583
|
+
return response;
|
|
584
|
+
});
|
|
585
|
+
}
|
|
586
|
+
checkIn(request = {}) {
|
|
587
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.checkIn, {
|
|
588
|
+
method: "POST",
|
|
589
|
+
body: request
|
|
590
|
+
}).then((response) => {
|
|
591
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider check-in response");
|
|
592
|
+
return response;
|
|
593
|
+
});
|
|
594
|
+
}
|
|
444
595
|
portfolio() {
|
|
445
596
|
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.portfolio).then((response) => {
|
|
446
597
|
assertCapacityProviderPortfolioManifest(response);
|
|
@@ -456,40 +607,78 @@ class MarketProviderClient {
|
|
|
456
607
|
return response;
|
|
457
608
|
});
|
|
458
609
|
}
|
|
459
|
-
|
|
460
|
-
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.
|
|
610
|
+
assignment(assignmentId) {
|
|
611
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignment(assignmentId)).then((response) => {
|
|
612
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider assignment response");
|
|
613
|
+
return response;
|
|
614
|
+
});
|
|
615
|
+
}
|
|
616
|
+
assignmentExplanation(assignmentId) {
|
|
617
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentExplanation(assignmentId)).then((response) => {
|
|
618
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider assignment explanation response");
|
|
619
|
+
return response;
|
|
620
|
+
});
|
|
621
|
+
}
|
|
622
|
+
nextAssignment(request = {}) {
|
|
623
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.nextAssignment, {
|
|
624
|
+
method: "POST",
|
|
625
|
+
body: request
|
|
626
|
+
}).then((response) => {
|
|
627
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider next assignment response");
|
|
628
|
+
return response;
|
|
629
|
+
});
|
|
630
|
+
}
|
|
631
|
+
renewAssignment(assignmentId, request = {}) {
|
|
632
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentRenew(assignmentId), {
|
|
633
|
+
method: "POST",
|
|
634
|
+
body: request
|
|
635
|
+
}).then((response) => {
|
|
636
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider assignment renew response");
|
|
637
|
+
return response;
|
|
638
|
+
});
|
|
639
|
+
}
|
|
640
|
+
returnAssignment(assignmentId, request = {}) {
|
|
641
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentReturn(assignmentId), {
|
|
642
|
+
method: "POST",
|
|
643
|
+
body: request
|
|
644
|
+
}).then((response) => {
|
|
645
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider assignment return response");
|
|
646
|
+
return response;
|
|
647
|
+
});
|
|
648
|
+
}
|
|
649
|
+
completeAssignment(assignmentId, request = {}) {
|
|
650
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentComplete(assignmentId), {
|
|
461
651
|
method: "POST",
|
|
462
652
|
body: request
|
|
463
653
|
}).then((response) => {
|
|
464
|
-
assertCapacityProviderOkEnvelope(response, "Capacity provider
|
|
465
|
-
if (!Array.isArray(response.tasks)) throw new Error("Capacity provider task claim response is missing tasks.");
|
|
654
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider assignment complete response");
|
|
466
655
|
return response;
|
|
467
656
|
});
|
|
468
657
|
}
|
|
469
|
-
|
|
470
|
-
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.
|
|
658
|
+
failAssignment(assignmentId, request = {}) {
|
|
659
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentFail(assignmentId), {
|
|
471
660
|
method: "POST",
|
|
472
661
|
body: request
|
|
473
662
|
}).then((response) => {
|
|
474
|
-
assertCapacityProviderOkEnvelope(response, "Capacity provider
|
|
663
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider assignment fail response");
|
|
475
664
|
return response;
|
|
476
665
|
});
|
|
477
666
|
}
|
|
478
|
-
|
|
479
|
-
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.
|
|
667
|
+
createAssignmentModeRun(assignmentId, request) {
|
|
668
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentModeRuns(assignmentId), {
|
|
480
669
|
method: "POST",
|
|
481
670
|
body: request
|
|
482
671
|
}).then((response) => {
|
|
483
|
-
assertCapacityProviderOkEnvelope(response, "Capacity provider
|
|
672
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider mode run response");
|
|
484
673
|
return response;
|
|
485
674
|
});
|
|
486
675
|
}
|
|
487
|
-
|
|
488
|
-
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.
|
|
676
|
+
dispatchAssignmentWorkflowOperation(assignmentId, operationId, request) {
|
|
677
|
+
return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentWorkflowOperationDispatch(assignmentId, operationId), {
|
|
489
678
|
method: "POST",
|
|
490
679
|
body: request
|
|
491
680
|
}).then((response) => {
|
|
492
|
-
assertCapacityProviderOkEnvelope(response, "Capacity provider
|
|
681
|
+
assertCapacityProviderOkEnvelope(response, "Capacity provider workflow operation dispatch response");
|
|
493
682
|
return response;
|
|
494
683
|
});
|
|
495
684
|
}
|
|
@@ -518,6 +707,7 @@ export {
|
|
|
518
707
|
CAPACITY_PROVIDER_ENV_KEYS,
|
|
519
708
|
CAPACITY_PROVIDER_SCOPES,
|
|
520
709
|
CapacityProviderApiError,
|
|
710
|
+
DEFAULT_CAPACITY_PROVIDER_ROLE_IMAGES,
|
|
521
711
|
MarketProviderClient,
|
|
522
712
|
assertCapacityProviderOkEnvelope,
|
|
523
713
|
assertCapacityProviderPortfolioManifest,
|
|
@@ -526,10 +716,12 @@ export {
|
|
|
526
716
|
deployCapacityProviderToManagedMarketHost,
|
|
527
717
|
deployCapacityProviderToRailway,
|
|
528
718
|
isCapacityProviderSecretEnvKey,
|
|
719
|
+
parseCapacityProviderLaunchManifest,
|
|
529
720
|
persistCapacityProviderConnectionToTreeseedConfig,
|
|
530
721
|
redactCapacityProviderEnv,
|
|
531
722
|
redactCapacityProviderSecret,
|
|
532
723
|
renderCapacityProviderSelfHostInstructions,
|
|
533
724
|
resolveCapacityProviderEnvironment,
|
|
534
|
-
resolveCapacityProviderLaunchEnvironment
|
|
725
|
+
resolveCapacityProviderLaunchEnvironment,
|
|
726
|
+
resolveCapacityProviderLaunchPlan
|
|
535
727
|
};
|
package/dist/capacity.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AttentionEstimate, AttentionPolicy, CapacityEstimateConfidence, CapacityGrant, CapacityPlan, CapacityProvider, CapacityProviderLane, CapacityReservation, CreditConversionProfile, CreateCapacityReservationRequest, CreateCapacityRoutingDecisionRequest, DerivedCapacityAvailability, DerivedCapacityInput, ExecutionProfile, HybridExecutionPlan, NativeUsageObservation, PlannedTaskNode, PlanningAdmissionResult, PlanningPolicy, PredictiveReservePolicy, ProjectEnvironmentName, RecordCapacityUsageRequest, ReservePrediction, TaskAdmissionDecision, TaskAdmissionPolicy, TaskClassification, TaskEstimateProfile, TaskPlanProposal, TaskMutationScope, TaskUsageActual, UtilityEstimate, UtilityPolicy, WorkdayBudgetEnvelope } from './sdk-types.
|
|
2
|
-
import type { AgentProviderProfile } from './types/agents.
|
|
1
|
+
import type { AttentionEstimate, AttentionPolicy, CapacityEstimateConfidence, CapacityGrant, CapacityPlan, CapacityProvider, CapacityProviderLane, CapacityReservation, CreditConversionProfile, CreateCapacityReservationRequest, CreateCapacityRoutingDecisionRequest, DerivedCapacityAvailability, DerivedCapacityInput, ExecutionProfile, HybridExecutionPlan, NativeUsageObservation, PlannedTaskNode, PlanningAdmissionResult, PlanningPolicy, PredictiveReservePolicy, ProjectEnvironmentName, RecordCapacityUsageRequest, ReservePrediction, TaskAdmissionDecision, TaskAdmissionPolicy, TaskClassification, TaskEstimateProfile, TaskPlanProposal, TaskMutationScope, TaskUsageActual, UtilityEstimate, UtilityPolicy, WorkdayBudgetEnvelope } from './sdk-types.js';
|
|
2
|
+
import type { AgentProviderProfile } from './types/agents.js';
|
|
3
3
|
export declare const ACTUAL_CREDIT_FORMULA_VERSION = "treeseed.actual-credits.v1";
|
|
4
4
|
export interface ActualCreditCalculationInput {
|
|
5
5
|
nativeUsage?: NativeUsageObservation | Record<string, unknown> | null;
|
package/dist/cli-tools.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { AgentCliOptions } from './types/agents.
|
|
1
|
+
import type { AgentCliOptions } from './types/agents.js';
|
|
2
2
|
export declare function normalizeAgentCliOptions(input: unknown): AgentCliOptions;
|
|
3
3
|
export declare function buildCopilotAllowToolArgs(allowTools?: AgentCliOptions['allowTools']): string[];
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { SdkModelRegistry } from './sdk-types.js';
|
|
2
|
+
export type TreeseedContentAction = 'describe' | 'query' | 'read' | 'create' | 'update' | 'link' | 'validate' | 'commit';
|
|
3
|
+
export type TreeseedContentModel = 'page' | 'note' | 'question' | 'proposal' | 'decision' | 'book' | 'knowledge' | 'objective' | 'person' | 'agent';
|
|
4
|
+
export interface TreeseedContentRelationInput {
|
|
5
|
+
field: string;
|
|
6
|
+
targetModel?: TreeseedContentModel | string;
|
|
7
|
+
targetSlug: string;
|
|
8
|
+
}
|
|
9
|
+
export interface TreeseedContentPlacement {
|
|
10
|
+
bookSlug?: string;
|
|
11
|
+
parentPath?: string;
|
|
12
|
+
path?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface TreeseedContentOperationInput {
|
|
15
|
+
action: TreeseedContentAction;
|
|
16
|
+
model?: TreeseedContentModel | string;
|
|
17
|
+
id?: string;
|
|
18
|
+
slug?: string;
|
|
19
|
+
title?: string;
|
|
20
|
+
fields?: Record<string, unknown>;
|
|
21
|
+
body?: string;
|
|
22
|
+
query?: string;
|
|
23
|
+
filters?: unknown[];
|
|
24
|
+
relations?: TreeseedContentRelationInput[];
|
|
25
|
+
placement?: TreeseedContentPlacement;
|
|
26
|
+
commit?: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
message?: string;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface TreeseedContentRef {
|
|
32
|
+
model: TreeseedContentModel;
|
|
33
|
+
collection: string;
|
|
34
|
+
slug: string;
|
|
35
|
+
id?: string;
|
|
36
|
+
path?: string;
|
|
37
|
+
href?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface TreeseedContentDiagnostic {
|
|
40
|
+
severity: 'info' | 'warning' | 'error';
|
|
41
|
+
code: string;
|
|
42
|
+
message: string;
|
|
43
|
+
field?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface TreeseedContentOperationResult {
|
|
46
|
+
ok: true;
|
|
47
|
+
action: TreeseedContentAction;
|
|
48
|
+
refs: TreeseedContentRef[];
|
|
49
|
+
changedPaths?: string[];
|
|
50
|
+
diagnostics: TreeseedContentDiagnostic[];
|
|
51
|
+
payload?: Record<string, unknown>;
|
|
52
|
+
}
|
|
53
|
+
export interface RenderTreeseedContentInput {
|
|
54
|
+
model: TreeseedContentModel | string;
|
|
55
|
+
slug?: string;
|
|
56
|
+
title?: string;
|
|
57
|
+
fields?: Record<string, unknown>;
|
|
58
|
+
body?: string;
|
|
59
|
+
relations?: TreeseedContentRelationInput[];
|
|
60
|
+
placement?: TreeseedContentPlacement;
|
|
61
|
+
existingFrontmatter?: Record<string, unknown>;
|
|
62
|
+
registry?: SdkModelRegistry;
|
|
63
|
+
now?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface RenderedTreeseedContentRecord {
|
|
66
|
+
model: TreeseedContentModel;
|
|
67
|
+
collection: string;
|
|
68
|
+
slug: string;
|
|
69
|
+
path: string;
|
|
70
|
+
frontmatter: Record<string, unknown>;
|
|
71
|
+
body: string;
|
|
72
|
+
content: string;
|
|
73
|
+
ref: TreeseedContentRef;
|
|
74
|
+
diagnostics: TreeseedContentDiagnostic[];
|
|
75
|
+
}
|
|
76
|
+
export interface TreeseedContentToolPreset {
|
|
77
|
+
id: string;
|
|
78
|
+
action: TreeseedContentAction;
|
|
79
|
+
model?: TreeseedContentModel;
|
|
80
|
+
title: string;
|
|
81
|
+
description: string;
|
|
82
|
+
inputSchema: Record<string, unknown>;
|
|
83
|
+
}
|
|
84
|
+
export declare const TREESEED_CONTENT_ACTIONS: TreeseedContentAction[];
|
|
85
|
+
export declare const TREESEED_CONTENT_READ_ACTIONS: Set<TreeseedContentAction>;
|
|
86
|
+
export declare const TREESEED_CONTENT_WRITE_ACTIONS: Set<TreeseedContentAction>;
|
|
87
|
+
export declare function slugifyTreeseedContent(value: unknown): string;
|
|
88
|
+
export declare function renderTreeseedContentRecord(input: RenderTreeseedContentInput): RenderedTreeseedContentRecord;
|
|
89
|
+
export declare function validateTreeseedContentRecord(model: string, source: string, registry?: SdkModelRegistry): {
|
|
90
|
+
ok: boolean;
|
|
91
|
+
frontmatter: Record<string, unknown>;
|
|
92
|
+
body: string;
|
|
93
|
+
diagnostics: TreeseedContentDiagnostic[];
|
|
94
|
+
};
|
|
95
|
+
export declare function genericTreeseedContentInputSchema(action: TreeseedContentAction): Record<string, unknown>;
|
|
96
|
+
export declare function createTreeseedContentToolPresets(registry?: SdkModelRegistry): TreeseedContentToolPreset[];
|
|
97
|
+
export declare function findTreeseedContentToolPreset(id: string, registry?: SdkModelRegistry): TreeseedContentToolPreset | null;
|