@treeseed/sdk 0.11.0 → 0.12.5
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 +9 -4
- 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 +117 -60
- package/dist/capacity-provider.js +215 -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 +2 -2
- 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 +49037 -11843
- package/dist/db/market-schema.js +1788 -50
- package/dist/db/node-sqlite.d.ts +1 -232
- 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 +1 -1
- package/dist/hosting/builtins.d.ts +1 -1
- package/dist/hosting/builtins.js +9 -198
- package/dist/hosting/contracts.d.ts +3 -2
- package/dist/hosting/graph.d.ts +24 -21
- package/dist/hosting/graph.js +280 -294
- package/dist/hosting/index.d.ts +4 -4
- package/dist/index.d.ts +88 -74
- package/dist/index.js +81 -10
- 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 -8
- package/dist/market-client.d.ts +265 -7
- package/dist/market-client.js +381 -9
- 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 +1 -1
- 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 +73 -19
- package/dist/operations/services/config-runtime.js +276 -100
- package/dist/operations/services/deploy.d.ts +41 -622
- package/dist/operations/services/deploy.js +181 -213
- package/dist/operations/services/deployment-readiness.d.ts +1 -1
- package/dist/operations/services/deployment-readiness.js +38 -7
- 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 +43 -5
- package/dist/operations/services/git-workflow.js +242 -20
- package/dist/operations/services/github-actions-verification.d.ts +3 -1
- package/dist/operations/services/github-actions-verification.js +11 -3
- package/dist/operations/services/github-api.js +21 -5
- package/dist/operations/services/github-automation.d.ts +3 -3
- package/dist/operations/services/github-automation.js +15 -18
- package/dist/operations/services/github-credentials.js +2 -1
- package/dist/operations/services/hosted-service-checks.d.ts +19 -1
- package/dist/operations/services/hosted-service-checks.js +162 -11
- 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 +19 -14
- package/dist/operations/services/live-hosted-service-checks.d.ts +2 -1
- package/dist/operations/services/live-hosted-service-checks.js +193 -80
- 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-repositories.d.ts +37 -0
- package/dist/operations/services/managed-repositories.js +177 -0
- package/dist/operations/services/operations-runner-smoke.d.ts +3 -2
- package/dist/operations/services/operations-runner-smoke.js +22 -4
- package/dist/operations/services/package-adapters.d.ts +77 -2
- package/dist/operations/services/package-adapters.js +629 -56
- package/dist/operations/services/package-reference-policy.d.ts +12 -88
- package/dist/operations/services/package-reference-policy.js +81 -213
- package/dist/operations/services/project-host-operations.d.ts +4 -4
- package/dist/operations/services/project-platform.d.ts +19 -193
- package/dist/operations/services/project-platform.js +31 -103
- package/dist/operations/services/project-web-monitor.d.ts +2 -2
- package/dist/operations/services/project-web-monitor.js +97 -2
- package/dist/operations/services/railway-api.d.ts +36 -7
- package/dist/operations/services/railway-api.js +331 -100
- package/dist/operations/services/railway-deploy.d.ts +7 -95
- package/dist/operations/services/railway-deploy.js +334 -742
- 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 +6 -7
- package/dist/operations/services/repository-save-orchestrator.js +353 -174
- 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 -192
- package/dist/operations/services/runtime-tools.js +4 -444
- 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/workflow-timing.d.ts +25 -0
- package/dist/operations/services/workflow-timing.js +79 -0
- package/dist/operations/services/workspace-dependency-mode.js +41 -4
- 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 +41 -18
- package/dist/operations/services/workspace-tools.js +40 -6
- 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 +6 -1
- package/dist/platform/deploy-config.d.ts +1 -1
- package/dist/platform/deploy-config.js +7 -1
- package/dist/platform/deploy-runtime.d.ts +1 -1
- package/dist/platform/desired-state.d.ts +66 -0
- package/dist/platform/desired-state.js +1052 -0
- package/dist/platform/env.yaml +414 -19
- package/dist/platform/environment.d.ts +2 -2
- package/dist/platform/environment.js +54 -22
- 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 +5 -5
- 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/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 +3 -3
- package/dist/reconcile/builtin-adapters.d.ts +7 -1
- package/dist/reconcile/builtin-adapters.js +2924 -346
- package/dist/reconcile/contracts.d.ts +15 -2
- package/dist/reconcile/desired-state.d.ts +2 -193
- package/dist/reconcile/desired-state.js +24 -33
- package/dist/reconcile/engine.d.ts +60 -397
- package/dist/reconcile/engine.js +182 -18
- package/dist/reconcile/index.d.ts +10 -10
- package/dist/reconcile/live-acceptance.d.ts +22 -1
- package/dist/reconcile/live-acceptance.js +456 -44
- 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 +3 -40
- package/dist/reconcile/units.d.ts +1 -1
- package/dist/reconcile/units.js +7 -1
- 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/migrate-journey-csv-to-guarantees.js +140 -0
- package/dist/scripts/package-tools.js +12 -1
- package/dist/scripts/prepare.js +3 -7
- package/dist/scripts/release-verify.js +2 -5
- 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/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 +1184 -113
- package/dist/sdk-types.js +393 -0
- package/dist/sdk.d.ts +74 -79
- package/dist/sdk.js +27 -36
- 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-ui.d.ts +2 -2
- package/dist/treedx/adapters.d.ts +6 -6
- package/dist/treedx/client.d.ts +1 -1
- package/dist/treedx/errors.d.ts +1 -1
- package/dist/treedx/federated-client.d.ts +3 -3
- package/dist/treedx/graph-adapter.d.ts +2 -2
- package/dist/treedx/index.d.ts +14 -14
- package/dist/treedx/market-integration.d.ts +1 -1
- package/dist/treedx/ports.d.ts +30 -30
- package/dist/treedx/query-adapter.d.ts +3 -3
- package/dist/treedx/registry-client.d.ts +2 -2
- package/dist/treedx/repository-adapter.d.ts +4 -4
- package/dist/treedx/repository-adapter.js +14 -3
- package/dist/treedx/sdk-integration.d.ts +3 -3
- package/dist/treedx/types.d.ts +2 -2
- package/dist/treedx/workspace-adapter.d.ts +2 -2
- package/dist/treedx-backends.d.ts +13 -11
- package/dist/treedx-backends.js +52 -50
- package/dist/treedx-client.d.ts +3 -0
- package/dist/treedx-client.js +10 -1
- package/dist/treeseed/services/compose.yml +2 -3
- package/dist/treeseed/template-catalog/catalog.fixture.json +4 -4
- 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 +510 -559
- package/dist/workflow/operations.js +1891 -1342
- 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 +5 -5
- package/dist/workflow-state.js +27 -17
- package/dist/workflow-support.d.ts +26 -25
- package/dist/workflow-support.js +27 -31
- package/dist/workflow.d.ts +46 -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/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 +75 -18
- package/scripts/{verify-driver.mjs → verify-driver.ts} +19 -4
- package/templates/github/deploy-web.workflow.yml +12 -8
- 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 -60
- package/dist/operations/services/release-candidate.js +0 -953
- 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
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"publisher": {
|
|
23
23
|
"id": "treeseed",
|
|
24
24
|
"name": "TreeSeed",
|
|
25
|
-
"url": "https://treeseed.
|
|
25
|
+
"url": "https://treeseed.dev"
|
|
26
26
|
},
|
|
27
27
|
"publisherVerified": true,
|
|
28
28
|
"templateVersion": "1.0.0",
|
|
@@ -206,7 +206,7 @@
|
|
|
206
206
|
"publisher": {
|
|
207
207
|
"id": "treeseed",
|
|
208
208
|
"name": "TreeSeed",
|
|
209
|
-
"url": "https://treeseed.
|
|
209
|
+
"url": "https://treeseed.dev"
|
|
210
210
|
},
|
|
211
211
|
"publisherVerified": true,
|
|
212
212
|
"templateVersion": "1.0.0",
|
|
@@ -390,7 +390,7 @@
|
|
|
390
390
|
"publisher": {
|
|
391
391
|
"id": "treeseed",
|
|
392
392
|
"name": "TreeSeed",
|
|
393
|
-
"url": "https://treeseed.
|
|
393
|
+
"url": "https://treeseed.dev"
|
|
394
394
|
},
|
|
395
395
|
"publisherVerified": true,
|
|
396
396
|
"templateVersion": "1.0.0",
|
|
@@ -574,7 +574,7 @@
|
|
|
574
574
|
"publisher": {
|
|
575
575
|
"id": "treeseed",
|
|
576
576
|
"name": "TreeSeed",
|
|
577
|
-
"url": "https://treeseed.
|
|
577
|
+
"url": "https://treeseed.dev"
|
|
578
578
|
},
|
|
579
579
|
"publisherVerified": true,
|
|
580
580
|
"templateVersion": "0.1.0",
|
package/dist/types/agents.d.ts
CHANGED
|
@@ -4,12 +4,22 @@ export declare const AGENT_MESSAGE_STATUSES: readonly ["pending", "claimed", "co
|
|
|
4
4
|
export declare const AGENT_RUN_STATUSES: readonly ["running", "completed", "failed", "waiting"];
|
|
5
5
|
export declare const AGENT_HANDLER_KINDS: readonly ["planner", "architect", "engineer", "notifier", "researcher", "reviewer", "releaser"];
|
|
6
6
|
export declare const AGENT_CLI_ALLOW_TOOLS: readonly ["shell(git)", "shell(npm)", "web"];
|
|
7
|
+
export declare const EXECUTION_RESOURCE_NEED_KINDS: readonly ["repository", "treedx_workspace", "workflow", "secret", "external_issue", "external_job"];
|
|
8
|
+
export declare const EXECUTION_PROVIDER_KINDS: readonly ["ai_model", "human_issue_queue", "deterministic_workflow", "local_process"];
|
|
9
|
+
export declare const EXECUTION_RUN_STATUSES: readonly ["accepted", "running", "waiting", "blocked", "completed", "returned", "failed", "cancelled"];
|
|
10
|
+
export declare const EXECUTION_PROVIDER_PRESSURE_STATES: readonly ["idle", "normal", "busy", "throttled", "exhausted"];
|
|
11
|
+
export declare const EXECUTION_PROVIDER_QUOTA_VISIBILITIES: readonly ["opaque", "partial", "exact"];
|
|
7
12
|
export type AgentTriggerKind = (typeof AGENT_TRIGGER_KINDS)[number];
|
|
8
13
|
export type AgentPermissionOperation = (typeof AGENT_PERMISSION_OPERATIONS)[number];
|
|
9
14
|
export type AgentMessageStatus = (typeof AGENT_MESSAGE_STATUSES)[number];
|
|
10
15
|
export type AgentRunStatus = (typeof AGENT_RUN_STATUSES)[number];
|
|
11
16
|
export type AgentHandlerKind = string;
|
|
12
17
|
export type AgentCliAllowTool = (typeof AGENT_CLI_ALLOW_TOOLS)[number];
|
|
18
|
+
export type ExecutionResourceNeedKind = (typeof EXECUTION_RESOURCE_NEED_KINDS)[number] | string;
|
|
19
|
+
export type ExecutionProviderKind = (typeof EXECUTION_PROVIDER_KINDS)[number] | string;
|
|
20
|
+
export type ExecutionRunStatus = (typeof EXECUTION_RUN_STATUSES)[number];
|
|
21
|
+
export type ExecutionProviderPressure = (typeof EXECUTION_PROVIDER_PRESSURE_STATES)[number];
|
|
22
|
+
export type ExecutionProviderQuotaVisibility = (typeof EXECUTION_PROVIDER_QUOTA_VISIBILITIES)[number];
|
|
13
23
|
export interface AgentTriggerConfig {
|
|
14
24
|
type: AgentTriggerKind;
|
|
15
25
|
cron?: string;
|
|
@@ -22,10 +32,58 @@ export interface AgentPermissionConfig {
|
|
|
22
32
|
model: string;
|
|
23
33
|
operations: AgentPermissionOperation[];
|
|
24
34
|
}
|
|
35
|
+
export interface AgentContentPermission {
|
|
36
|
+
model: string;
|
|
37
|
+
operations: Array<'read' | 'create' | 'update' | 'link' | 'comment' | string>;
|
|
38
|
+
filters?: Record<string, unknown>;
|
|
39
|
+
}
|
|
40
|
+
export interface AgentModePermissionPolicy {
|
|
41
|
+
content?: {
|
|
42
|
+
read?: AgentContentPermission[];
|
|
43
|
+
write?: AgentContentPermission[];
|
|
44
|
+
};
|
|
45
|
+
repository?: {
|
|
46
|
+
readPaths?: string[];
|
|
47
|
+
writePaths?: string[];
|
|
48
|
+
allowCodeMutation?: boolean;
|
|
49
|
+
};
|
|
50
|
+
network?: {
|
|
51
|
+
allowWeb?: boolean;
|
|
52
|
+
allowedDomains?: string[];
|
|
53
|
+
};
|
|
54
|
+
shell?: {
|
|
55
|
+
allowCommands?: boolean;
|
|
56
|
+
allowedCommands?: string[];
|
|
57
|
+
deniedCommands?: string[];
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export interface AgentPermissionPolicy {
|
|
61
|
+
modes?: {
|
|
62
|
+
planning?: AgentModePermissionPolicy;
|
|
63
|
+
acting?: AgentModePermissionPolicy;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
25
66
|
export interface AgentOutputContract {
|
|
26
67
|
messageTypes: string[];
|
|
27
68
|
modelMutations: string[];
|
|
28
69
|
}
|
|
70
|
+
export interface AgentToolPolicy {
|
|
71
|
+
allowed: string[];
|
|
72
|
+
}
|
|
73
|
+
export interface AgentContentScope {
|
|
74
|
+
models: string[];
|
|
75
|
+
actions?: import('../content-operations.js').TreeseedContentAction[];
|
|
76
|
+
books?: string[];
|
|
77
|
+
paths?: string[];
|
|
78
|
+
relations?: string[];
|
|
79
|
+
}
|
|
80
|
+
export interface AgentContentAccessPolicy {
|
|
81
|
+
read?: AgentContentScope;
|
|
82
|
+
write?: AgentContentScope;
|
|
83
|
+
commit?: {
|
|
84
|
+
allowed: boolean;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
29
87
|
export interface AgentExecutionConfig {
|
|
30
88
|
provider?: string;
|
|
31
89
|
model?: string;
|
|
@@ -73,6 +131,195 @@ export interface AgentProviderProfile {
|
|
|
73
131
|
disallowedRegions?: string[];
|
|
74
132
|
fallbackPolicy: AgentProviderFallbackPolicy;
|
|
75
133
|
}
|
|
134
|
+
export interface ExecutionResourceNeed {
|
|
135
|
+
kind: ExecutionResourceNeedKind;
|
|
136
|
+
operations: string[];
|
|
137
|
+
paths?: string[];
|
|
138
|
+
required?: boolean;
|
|
139
|
+
metadata?: Record<string, unknown>;
|
|
140
|
+
}
|
|
141
|
+
export interface ExecutionCapabilityDemand {
|
|
142
|
+
required: string[];
|
|
143
|
+
preferred?: string[];
|
|
144
|
+
mode: 'planning' | 'acting';
|
|
145
|
+
resourceNeeds?: ExecutionResourceNeed[];
|
|
146
|
+
outputTypes?: string[];
|
|
147
|
+
metadata?: Record<string, unknown>;
|
|
148
|
+
}
|
|
149
|
+
export interface ExecutionCapabilitySupply {
|
|
150
|
+
capacityProviderId: string;
|
|
151
|
+
executionProviderId: string;
|
|
152
|
+
kind: ExecutionProviderKind;
|
|
153
|
+
capabilities: string[];
|
|
154
|
+
aliases?: string[];
|
|
155
|
+
grants: string[];
|
|
156
|
+
availability?: Record<string, unknown>;
|
|
157
|
+
pressure?: ExecutionProviderPressure;
|
|
158
|
+
maxConcurrentAssignments?: number;
|
|
159
|
+
nativeUnit?: string;
|
|
160
|
+
quotaVisibility?: ExecutionProviderQuotaVisibility;
|
|
161
|
+
metadata?: Record<string, unknown>;
|
|
162
|
+
}
|
|
163
|
+
export interface AgentExpectedOutput {
|
|
164
|
+
type: string;
|
|
165
|
+
required: boolean;
|
|
166
|
+
description?: string;
|
|
167
|
+
schema?: Record<string, unknown>;
|
|
168
|
+
}
|
|
169
|
+
export interface AgentWorkPackageConstraints {
|
|
170
|
+
mode: 'planning' | 'acting';
|
|
171
|
+
requiredCapabilities: string[];
|
|
172
|
+
allowedPaths?: string[];
|
|
173
|
+
forbiddenPaths?: string[];
|
|
174
|
+
allowedOperations?: string[];
|
|
175
|
+
deadline?: string | null;
|
|
176
|
+
maxAttempts?: number | null;
|
|
177
|
+
metadata?: Record<string, unknown>;
|
|
178
|
+
}
|
|
179
|
+
export type AgentHandlerAlgorithmKind = 'plan' | 'research' | 'act' | 'review' | 'report';
|
|
180
|
+
export type AgentWorkPackageKind = AgentHandlerAlgorithmKind | string;
|
|
181
|
+
export interface AgentInputSelector {
|
|
182
|
+
source: string;
|
|
183
|
+
path?: string;
|
|
184
|
+
required?: boolean;
|
|
185
|
+
metadata?: Record<string, unknown>;
|
|
186
|
+
}
|
|
187
|
+
export interface AgentOutputTemplate {
|
|
188
|
+
type: string;
|
|
189
|
+
template?: string;
|
|
190
|
+
required?: boolean;
|
|
191
|
+
metadata?: Record<string, unknown>;
|
|
192
|
+
}
|
|
193
|
+
export interface AgentReviewCriterion {
|
|
194
|
+
id: string;
|
|
195
|
+
description: string;
|
|
196
|
+
required?: boolean;
|
|
197
|
+
metadata?: Record<string, unknown>;
|
|
198
|
+
}
|
|
199
|
+
export interface AgentPlanningPolicy {
|
|
200
|
+
prioritization?: string;
|
|
201
|
+
maxCandidates?: number;
|
|
202
|
+
metadata?: Record<string, unknown>;
|
|
203
|
+
}
|
|
204
|
+
export interface AgentReportTemplate {
|
|
205
|
+
kind: string;
|
|
206
|
+
title?: string;
|
|
207
|
+
sections?: string[];
|
|
208
|
+
metadata?: Record<string, unknown>;
|
|
209
|
+
}
|
|
210
|
+
export interface AgentHandlerConfig {
|
|
211
|
+
workPackageKind?: AgentWorkPackageKind;
|
|
212
|
+
domain?: string;
|
|
213
|
+
inputSelectors?: AgentInputSelector[];
|
|
214
|
+
outputTemplates?: AgentOutputTemplate[];
|
|
215
|
+
reviewCriteria?: AgentReviewCriterion[];
|
|
216
|
+
planningPolicy?: AgentPlanningPolicy;
|
|
217
|
+
reportTemplate?: AgentReportTemplate;
|
|
218
|
+
delegation?: {
|
|
219
|
+
required?: boolean;
|
|
220
|
+
allowedProviderKinds?: string[];
|
|
221
|
+
reason?: string;
|
|
222
|
+
};
|
|
223
|
+
resourceNeeds?: ExecutionResourceNeed[];
|
|
224
|
+
metadata?: Record<string, unknown>;
|
|
225
|
+
}
|
|
226
|
+
export interface AgentWorkPackage {
|
|
227
|
+
kind: AgentWorkPackageKind;
|
|
228
|
+
title: string;
|
|
229
|
+
summary: string;
|
|
230
|
+
instructions: string;
|
|
231
|
+
context: Record<string, unknown>;
|
|
232
|
+
expectedOutputs: AgentExpectedOutput[];
|
|
233
|
+
constraints: AgentWorkPackageConstraints;
|
|
234
|
+
metadata?: Record<string, unknown>;
|
|
235
|
+
}
|
|
236
|
+
export interface ExecutionProviderDescriptor {
|
|
237
|
+
id: string;
|
|
238
|
+
kind: ExecutionProviderKind;
|
|
239
|
+
capabilities: string[];
|
|
240
|
+
capabilityAliases?: string[];
|
|
241
|
+
nativeUnit: string;
|
|
242
|
+
quotaVisibility: ExecutionProviderQuotaVisibility;
|
|
243
|
+
maxConcurrentAssignments: number;
|
|
244
|
+
supportsAsync: boolean;
|
|
245
|
+
supportsCancel: boolean;
|
|
246
|
+
supportsResume: boolean;
|
|
247
|
+
supportsUsage: boolean;
|
|
248
|
+
supportsArtifacts: boolean;
|
|
249
|
+
metadata?: Record<string, unknown>;
|
|
250
|
+
}
|
|
251
|
+
export interface ExecutionProviderObserveInput {
|
|
252
|
+
capacityProviderId?: string | null;
|
|
253
|
+
executionProviderId?: string | null;
|
|
254
|
+
runnerId?: string | null;
|
|
255
|
+
activeAssignmentIds?: string[];
|
|
256
|
+
metadata?: Record<string, unknown>;
|
|
257
|
+
}
|
|
258
|
+
export interface ExecutionProviderObservation {
|
|
259
|
+
descriptor?: ExecutionProviderDescriptor;
|
|
260
|
+
supply?: ExecutionCapabilitySupply;
|
|
261
|
+
pressure?: ExecutionProviderPressure;
|
|
262
|
+
available?: boolean;
|
|
263
|
+
activeAssignmentCount?: number;
|
|
264
|
+
blockedReason?: string | null;
|
|
265
|
+
metadata?: Record<string, unknown>;
|
|
266
|
+
}
|
|
267
|
+
export interface ExecutionPreparationResult {
|
|
268
|
+
accepted: boolean;
|
|
269
|
+
summary: string;
|
|
270
|
+
retryable?: boolean;
|
|
271
|
+
code?: string | null;
|
|
272
|
+
metadata?: Record<string, unknown>;
|
|
273
|
+
}
|
|
274
|
+
export interface ExecutionRunRef {
|
|
275
|
+
assignmentId: string;
|
|
276
|
+
executionProviderId?: string | null;
|
|
277
|
+
runId: string;
|
|
278
|
+
externalRef?: string | null;
|
|
279
|
+
externalUrl?: string | null;
|
|
280
|
+
leaseToken?: string | null;
|
|
281
|
+
runnerId?: string | null;
|
|
282
|
+
metadata?: Record<string, unknown>;
|
|
283
|
+
}
|
|
284
|
+
export interface ExecutionUsageActual {
|
|
285
|
+
kind: string;
|
|
286
|
+
unit: string;
|
|
287
|
+
amount: number;
|
|
288
|
+
source?: string | null;
|
|
289
|
+
partial?: boolean;
|
|
290
|
+
metadata?: Record<string, unknown>;
|
|
291
|
+
}
|
|
292
|
+
export interface ExecutionArtifactRef {
|
|
293
|
+
kind: string;
|
|
294
|
+
name?: string | null;
|
|
295
|
+
uri?: string | null;
|
|
296
|
+
externalUrl?: string | null;
|
|
297
|
+
mediaType?: string | null;
|
|
298
|
+
digest?: string | null;
|
|
299
|
+
metadata?: Record<string, unknown>;
|
|
300
|
+
}
|
|
301
|
+
export interface ExecutionWorkspaceContext {
|
|
302
|
+
repoRoot?: string | null;
|
|
303
|
+
workspaceId?: string | null;
|
|
304
|
+
accessMode?: string | null;
|
|
305
|
+
allowedPaths?: string[];
|
|
306
|
+
forbiddenPaths?: string[];
|
|
307
|
+
capabilityHandleIds?: string[];
|
|
308
|
+
metadata?: Record<string, unknown>;
|
|
309
|
+
}
|
|
310
|
+
export interface ExecutionRunSnapshot {
|
|
311
|
+
status: ExecutionRunStatus;
|
|
312
|
+
summary: string;
|
|
313
|
+
runId?: string | null;
|
|
314
|
+
externalRef?: string | null;
|
|
315
|
+
externalUrl?: string | null;
|
|
316
|
+
outputs?: Record<string, unknown>;
|
|
317
|
+
usage?: ExecutionUsageActual[];
|
|
318
|
+
artifacts?: ExecutionArtifactRef[];
|
|
319
|
+
retryable?: boolean;
|
|
320
|
+
code?: string | null;
|
|
321
|
+
metadata?: Record<string, unknown>;
|
|
322
|
+
}
|
|
76
323
|
export interface AgentTriggerPolicy {
|
|
77
324
|
maxRunsPerCycle?: number;
|
|
78
325
|
messageBatchSize?: number;
|
|
@@ -85,6 +332,9 @@ export interface AgentCliOptions {
|
|
|
85
332
|
export interface AgentRuntimeSpec {
|
|
86
333
|
slug: string;
|
|
87
334
|
handler: AgentHandlerKind;
|
|
335
|
+
projectAgentClassId?: string;
|
|
336
|
+
projectAgentClassSlug?: string;
|
|
337
|
+
handlerConfig?: AgentHandlerConfig;
|
|
88
338
|
enabled: boolean;
|
|
89
339
|
systemPrompt: string;
|
|
90
340
|
persona: string;
|
|
@@ -92,6 +342,12 @@ export interface AgentRuntimeSpec {
|
|
|
92
342
|
triggers: AgentTriggerConfig[];
|
|
93
343
|
triggerPolicy?: AgentTriggerPolicy;
|
|
94
344
|
permissions: AgentPermissionConfig[];
|
|
345
|
+
permissionPolicy?: AgentPermissionPolicy;
|
|
346
|
+
tools: AgentToolPolicy;
|
|
347
|
+
contentAccess?: AgentContentAccessPolicy;
|
|
348
|
+
context?: {
|
|
349
|
+
queries?: import('../graph/context-query-contracts.js').DeclarativeContextQuery[];
|
|
350
|
+
};
|
|
95
351
|
execution: AgentExecutionConfig;
|
|
96
352
|
outputs: AgentOutputContract;
|
|
97
353
|
}
|
package/dist/types/agents.js
CHANGED
|
@@ -30,11 +30,52 @@ const AGENT_CLI_ALLOW_TOOLS = [
|
|
|
30
30
|
"shell(npm)",
|
|
31
31
|
"web"
|
|
32
32
|
];
|
|
33
|
+
const EXECUTION_RESOURCE_NEED_KINDS = [
|
|
34
|
+
"repository",
|
|
35
|
+
"treedx_workspace",
|
|
36
|
+
"workflow",
|
|
37
|
+
"secret",
|
|
38
|
+
"external_issue",
|
|
39
|
+
"external_job"
|
|
40
|
+
];
|
|
41
|
+
const EXECUTION_PROVIDER_KINDS = [
|
|
42
|
+
"ai_model",
|
|
43
|
+
"human_issue_queue",
|
|
44
|
+
"deterministic_workflow",
|
|
45
|
+
"local_process"
|
|
46
|
+
];
|
|
47
|
+
const EXECUTION_RUN_STATUSES = [
|
|
48
|
+
"accepted",
|
|
49
|
+
"running",
|
|
50
|
+
"waiting",
|
|
51
|
+
"blocked",
|
|
52
|
+
"completed",
|
|
53
|
+
"returned",
|
|
54
|
+
"failed",
|
|
55
|
+
"cancelled"
|
|
56
|
+
];
|
|
57
|
+
const EXECUTION_PROVIDER_PRESSURE_STATES = [
|
|
58
|
+
"idle",
|
|
59
|
+
"normal",
|
|
60
|
+
"busy",
|
|
61
|
+
"throttled",
|
|
62
|
+
"exhausted"
|
|
63
|
+
];
|
|
64
|
+
const EXECUTION_PROVIDER_QUOTA_VISIBILITIES = [
|
|
65
|
+
"opaque",
|
|
66
|
+
"partial",
|
|
67
|
+
"exact"
|
|
68
|
+
];
|
|
33
69
|
export {
|
|
34
70
|
AGENT_CLI_ALLOW_TOOLS,
|
|
35
71
|
AGENT_HANDLER_KINDS,
|
|
36
72
|
AGENT_MESSAGE_STATUSES,
|
|
37
73
|
AGENT_PERMISSION_OPERATIONS,
|
|
38
74
|
AGENT_RUN_STATUSES,
|
|
39
|
-
AGENT_TRIGGER_KINDS
|
|
75
|
+
AGENT_TRIGGER_KINDS,
|
|
76
|
+
EXECUTION_PROVIDER_KINDS,
|
|
77
|
+
EXECUTION_PROVIDER_PRESSURE_STATES,
|
|
78
|
+
EXECUTION_PROVIDER_QUOTA_VISIBILITIES,
|
|
79
|
+
EXECUTION_RESOURCE_NEED_KINDS,
|
|
80
|
+
EXECUTION_RUN_STATUSES
|
|
40
81
|
};
|
package/dist/verification.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export type TreeseedVerifyDriverOptions = {
|
|
|
3
3
|
packageRoot?: string;
|
|
4
4
|
driver?: TreeseedVerifyDriver;
|
|
5
5
|
eventName?: string;
|
|
6
|
+
localTreeseedExtraSiblingDependencies?: string[];
|
|
6
7
|
write?: (message: string, stream?: 'stdout' | 'stderr') => void;
|
|
7
8
|
runCommand?: (command: string, args: string[], cwd: string) => number;
|
|
8
9
|
checkCommand?: (command: string, args: string[], cwd: string) => {
|
package/dist/verification.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { existsSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
2
3
|
import * as childProcess from "node:child_process";
|
|
3
4
|
import { basename, relative, resolve } from "node:path";
|
|
4
5
|
import { tmpdir } from "node:os";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
6
7
|
import { createTreeseedManagedToolEnv, resolveTreeseedToolBinary } from "./managed-dependencies.js";
|
|
7
8
|
const defaultActUbuntuLatestImage = "catthehacker/ubuntu:act-latest";
|
|
9
|
+
const actLockStaleAfterMs = 2 * 60 * 60 * 1e3;
|
|
10
|
+
const actLockPollMs = 500;
|
|
8
11
|
function defaultWrite(message, stream = "stdout") {
|
|
9
12
|
if (!message) return;
|
|
10
13
|
(stream === "stderr" ? process.stderr : process.stdout).write(`${message}
|
|
@@ -41,14 +44,116 @@ function readPackageManifest(packageJsonPath) {
|
|
|
41
44
|
return null;
|
|
42
45
|
}
|
|
43
46
|
}
|
|
47
|
+
function allocateActServerPorts() {
|
|
48
|
+
const result = childProcess.spawnSync(process.execPath, [
|
|
49
|
+
"-e",
|
|
50
|
+
`const net = require('node:net');
|
|
51
|
+
const servers = [net.createServer(), net.createServer()];
|
|
52
|
+
const ports = [];
|
|
53
|
+
let remaining = servers.length;
|
|
54
|
+
function fail(error) {
|
|
55
|
+
console.error(error && error.stack ? error.stack : String(error));
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
for (const server of servers) {
|
|
59
|
+
server.once('error', fail);
|
|
60
|
+
server.listen(0, '127.0.0.1', () => {
|
|
61
|
+
const address = server.address();
|
|
62
|
+
if (!address || typeof address === 'string') fail(new Error('Unable to allocate TCP port.'));
|
|
63
|
+
ports.push(address.port);
|
|
64
|
+
server.close(() => {
|
|
65
|
+
remaining -= 1;
|
|
66
|
+
if (remaining === 0) {
|
|
67
|
+
console.log(JSON.stringify(ports));
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}`
|
|
72
|
+
], {
|
|
73
|
+
encoding: "utf8",
|
|
74
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
75
|
+
});
|
|
76
|
+
if (result.status !== 0) {
|
|
77
|
+
const detail = `${result.stderr ?? ""}
|
|
78
|
+
${result.stdout ?? ""}`.trim();
|
|
79
|
+
throw new Error(`Unable to allocate local act server ports.${detail ? `
|
|
80
|
+
${detail}` : ""}`);
|
|
81
|
+
}
|
|
82
|
+
const ports = JSON.parse(result.stdout.trim());
|
|
83
|
+
if (!Array.isArray(ports) || ports.length !== 2 || ports.some((port) => !Number.isInteger(port) || port <= 0)) {
|
|
84
|
+
throw new Error(`Unable to allocate local act server ports: ${result.stdout.trim()}`);
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
artifactServerPort: String(ports[0]),
|
|
88
|
+
cacheServerPort: String(ports[1])
|
|
89
|
+
};
|
|
90
|
+
}
|
|
44
91
|
function createActArgs(eventName, workflowPath) {
|
|
45
92
|
const image = process.env.TREESEED_VERIFY_ACT_UBUNTU_LATEST_IMAGE?.trim() || defaultActUbuntuLatestImage;
|
|
46
|
-
const
|
|
93
|
+
const ports = allocateActServerPorts();
|
|
94
|
+
const args = [
|
|
95
|
+
"act",
|
|
96
|
+
eventName,
|
|
97
|
+
"-W",
|
|
98
|
+
workflowPath,
|
|
99
|
+
"-j",
|
|
100
|
+
"verify",
|
|
101
|
+
"--artifact-server-port",
|
|
102
|
+
ports.artifactServerPort,
|
|
103
|
+
"--cache-server-port",
|
|
104
|
+
ports.cacheServerPort
|
|
105
|
+
];
|
|
47
106
|
if (image) {
|
|
48
107
|
args.push("-P", `ubuntu-latest=${image}`);
|
|
49
108
|
}
|
|
50
109
|
return args;
|
|
51
110
|
}
|
|
111
|
+
function sleepSync(ms) {
|
|
112
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
113
|
+
}
|
|
114
|
+
function acquireActLock() {
|
|
115
|
+
const lockDir = resolve(tmpdir(), "treeseed-verify-act.lock");
|
|
116
|
+
const owner = `${process.pid}:${Date.now()}`;
|
|
117
|
+
while (true) {
|
|
118
|
+
try {
|
|
119
|
+
mkdirSync(lockDir);
|
|
120
|
+
writeFileSync(resolve(lockDir, "owner"), owner, "utf8");
|
|
121
|
+
return () => {
|
|
122
|
+
try {
|
|
123
|
+
const currentOwner = readFileSync(resolve(lockDir, "owner"), "utf8");
|
|
124
|
+
if (currentOwner === owner) {
|
|
125
|
+
rmSync(lockDir, { recursive: true, force: true });
|
|
126
|
+
}
|
|
127
|
+
} catch {
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
} catch (error) {
|
|
131
|
+
const code = error.code;
|
|
132
|
+
if (code !== "EEXIST") {
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
const ageMs = Date.now() - statSync(lockDir).mtimeMs;
|
|
137
|
+
if (ageMs > actLockStaleAfterMs) {
|
|
138
|
+
rmSync(lockDir, { recursive: true, force: true });
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
} catch {
|
|
142
|
+
rmSync(lockDir, { recursive: true, force: true });
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
sleepSync(actLockPollMs);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function runActCommand(runCommand, command, args, cwd) {
|
|
150
|
+
const releaseLock = acquireActLock();
|
|
151
|
+
try {
|
|
152
|
+
return runCommand(command, args, cwd);
|
|
153
|
+
} finally {
|
|
154
|
+
releaseLock();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
52
157
|
function createWorkspaceActWorkflow(options) {
|
|
53
158
|
const relativePackageRoot = relative(options.workspaceRoot, options.packageRoot).replace(/\\/g, "/");
|
|
54
159
|
const siblingLinkCommands = options.localTreeseedSiblingDependencies.map((packageName) => {
|
|
@@ -66,6 +171,20 @@ function createWorkspaceActWorkflow(options) {
|
|
|
66
171
|
`ln -s ${linkTarget} ${linkParent}/${packageShortName}`
|
|
67
172
|
].join("\n");
|
|
68
173
|
}).join("\n");
|
|
174
|
+
const npmRetryFunction = [
|
|
175
|
+
"treeseed_npm_retry() {",
|
|
176
|
+
" attempt=1",
|
|
177
|
+
' until npm "$@"; do',
|
|
178
|
+
" status=$?",
|
|
179
|
+
' if test "$attempt" -ge 3; then',
|
|
180
|
+
' return "$status"',
|
|
181
|
+
" fi",
|
|
182
|
+
' echo "npm $* failed with $status; retrying in $((attempt * 5))s" >&2',
|
|
183
|
+
" sleep $((attempt * 5))",
|
|
184
|
+
" attempt=$((attempt + 1))",
|
|
185
|
+
" done",
|
|
186
|
+
"}"
|
|
187
|
+
].join("\n");
|
|
69
188
|
const siblingPreparationCommands = options.localTreeseedSiblingDependencies.map((packageName) => {
|
|
70
189
|
const packageDir = `packages/${packageName.split("/")[1]}`;
|
|
71
190
|
const manifest = readPackageManifest(resolve(options.workspaceRoot, packageDir, "package.json"));
|
|
@@ -74,9 +193,9 @@ function createWorkspaceActWorkflow(options) {
|
|
|
74
193
|
}
|
|
75
194
|
const commands = [
|
|
76
195
|
`if test -f ${packageDir}/package-lock.json; then`,
|
|
77
|
-
`
|
|
196
|
+
` treeseed_npm_retry --prefix ${packageDir} ci --workspaces=false`,
|
|
78
197
|
"else",
|
|
79
|
-
`
|
|
198
|
+
` treeseed_npm_retry --prefix ${packageDir} install --workspaces=false --no-audit --no-fund`,
|
|
80
199
|
"fi"
|
|
81
200
|
];
|
|
82
201
|
if (manifest.scripts?.["build:dist"]) {
|
|
@@ -86,6 +205,7 @@ function createWorkspaceActWorkflow(options) {
|
|
|
86
205
|
}).filter((command) => Boolean(command)).join("\n");
|
|
87
206
|
const workflowRoot = mkdtempSync(resolve(tmpdir(), "treeseed-verify-act-"));
|
|
88
207
|
const workflowPath = resolve(workflowRoot, "verify.yml");
|
|
208
|
+
const isolatedPackageVerifyEnv = process.env.TREESEED_VERIFY_PACKAGE_ISOLATED === "1" ? ' TREESEED_VERIFY_PACKAGE_ISOLATED: "1"\n' : "";
|
|
89
209
|
writeFileSync(
|
|
90
210
|
workflowPath,
|
|
91
211
|
`name: Treeseed Local Verify
|
|
@@ -104,7 +224,7 @@ jobs:
|
|
|
104
224
|
TREESEED_STAGE_WAIT_MODE: skip
|
|
105
225
|
TREESEED_AGENT_DISABLE_GIT: "true"
|
|
106
226
|
TREESEED_FIXTURE_ID: treeseed-working-site
|
|
107
|
-
steps:
|
|
227
|
+
${isolatedPackageVerifyEnv} steps:
|
|
108
228
|
- name: Checkout
|
|
109
229
|
uses: actions/checkout@v4
|
|
110
230
|
with:
|
|
@@ -121,17 +241,21 @@ jobs:
|
|
|
121
241
|
${siblingPreparationCommands ? ` - name: Prepare sibling packages
|
|
122
242
|
working-directory: .
|
|
123
243
|
run: |
|
|
244
|
+
${npmRetryFunction.split("\n").map((line) => ` ${line}`).join("\n")}
|
|
124
245
|
${siblingPreparationCommands.split("\n").map((line) => ` ${line}`).join("\n")}
|
|
125
246
|
|
|
126
247
|
` : ""} - name: Install dependencies
|
|
127
248
|
run: |
|
|
249
|
+
${npmRetryFunction.split("\n").map((line) => ` ${line}`).join("\n")}
|
|
128
250
|
node -e "const fs = require('fs'); const p = JSON.parse(fs.readFileSync('package.json', 'utf8')); if (p.scripts) delete p.scripts.prepare; fs.writeFileSync('package.json', JSON.stringify(p, null, '\\t') + '\\n');"
|
|
129
251
|
if test -f package-lock.json; then
|
|
130
|
-
|
|
252
|
+
treeseed_npm_retry ci --workspaces=false
|
|
131
253
|
else
|
|
132
|
-
|
|
254
|
+
treeseed_npm_retry install --workspaces=false --no-audit --no-fund
|
|
255
|
+
fi
|
|
256
|
+
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
257
|
+
git checkout -- package.json
|
|
133
258
|
fi
|
|
134
|
-
git checkout -- package.json || true
|
|
135
259
|
|
|
136
260
|
${siblingLinkCommands ? ` - name: Link local Treeseed dependencies
|
|
137
261
|
run: |
|
|
@@ -167,7 +291,7 @@ function findWorkspaceRoot(packageRoot) {
|
|
|
167
291
|
current = parent;
|
|
168
292
|
}
|
|
169
293
|
}
|
|
170
|
-
function resolveLocalWorkspaceContext(packageRoot) {
|
|
294
|
+
function resolveLocalWorkspaceContext(packageRoot, extraSiblingDependencies = []) {
|
|
171
295
|
const currentManifest = readPackageManifest(resolve(packageRoot, "package.json"));
|
|
172
296
|
const currentPackageName = typeof currentManifest?.name === "string" ? currentManifest.name : null;
|
|
173
297
|
const workspace = findWorkspaceRoot(packageRoot);
|
|
@@ -199,7 +323,12 @@ function resolveLocalWorkspaceContext(packageRoot) {
|
|
|
199
323
|
...currentPackage.manifest.devDependencies ?? {},
|
|
200
324
|
...currentPackage.manifest.peerDependencies ?? {}
|
|
201
325
|
};
|
|
202
|
-
const
|
|
326
|
+
const declaredLocalTreeseedSiblingDependencies = Object.keys(declaredDependencies).filter((name) => name.startsWith("@treeseed/")).filter((name) => localTreeseedPackageSet.has(name)).sort();
|
|
327
|
+
const extraLocalTreeseedSiblingDependencies = extraSiblingDependencies.filter((name) => name.startsWith("@treeseed/")).filter((name) => localTreeseedPackageSet.has(name)).sort();
|
|
328
|
+
const localTreeseedSiblingDependencies = [
|
|
329
|
+
...declaredLocalTreeseedSiblingDependencies,
|
|
330
|
+
...extraLocalTreeseedSiblingDependencies.filter((name) => !declaredLocalTreeseedSiblingDependencies.includes(name))
|
|
331
|
+
];
|
|
203
332
|
return {
|
|
204
333
|
workspaceRoot: workspace.workspaceRoot,
|
|
205
334
|
currentPackageName: currentPackage.manifest.name ?? currentPackageName,
|
|
@@ -214,7 +343,7 @@ function getTreeseedVerifyDriverStatus(options = {}) {
|
|
|
214
343
|
const eventName = options.eventName ?? process.env.TREESEED_VERIFY_EVENT ?? "workflow_dispatch";
|
|
215
344
|
const inGitHubActions = process.env.GITHUB_ACTIONS === "true";
|
|
216
345
|
const workflowPresent = existsSync(workflowPath);
|
|
217
|
-
const workspace = resolveLocalWorkspaceContext(packageRoot);
|
|
346
|
+
const workspace = resolveLocalWorkspaceContext(packageRoot, options.localTreeseedExtraSiblingDependencies ?? []);
|
|
218
347
|
const checkCommand = options.checkCommand ?? check;
|
|
219
348
|
const gh = options.checkCommand ? "gh" : resolveTreeseedToolBinary("gh") ?? "gh";
|
|
220
349
|
const ghAct = checkCommand(gh, ["act", "--version"], packageRoot);
|
|
@@ -268,15 +397,15 @@ function runTreeseedVerifyDriver(options = {}) {
|
|
|
268
397
|
eventName: status.eventName,
|
|
269
398
|
localTreeseedSiblingDependencies: status.localTreeseedSiblingDependencies
|
|
270
399
|
});
|
|
271
|
-
return runCommand
|
|
400
|
+
return runActCommand(runCommand, gh, workspaceAct.args, workspaceAct.cwd);
|
|
272
401
|
}
|
|
273
|
-
return runCommand
|
|
402
|
+
return runActCommand(runCommand, gh, createActArgs(status.eventName, ".github/workflows/verify.yml"), status.packageRoot);
|
|
274
403
|
}
|
|
275
404
|
if (status.prefersDirectForLocalWorkspace) {
|
|
276
405
|
return runCommand("npm", ["run", "verify:direct"], status.packageRoot);
|
|
277
406
|
}
|
|
278
407
|
if (status.canUseAct) {
|
|
279
|
-
return runCommand
|
|
408
|
+
return runActCommand(runCommand, gh, createActArgs(status.eventName, ".github/workflows/verify.yml"), status.packageRoot);
|
|
280
409
|
}
|
|
281
410
|
if (!status.workflowPresent) {
|
|
282
411
|
write("Treeseed verify warning: package-local verify workflow is missing; falling back to verify:direct.", "stderr");
|