@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
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
export type DevDependencyReferenceMode = 'git-
|
|
2
|
-
export type DevTagCleanupMode = 'safe-after-release' | 'off';
|
|
1
|
+
export type DevDependencyReferenceMode = 'git-commit';
|
|
3
2
|
export type GitDependencyProtocol = 'preserve-origin' | 'https' | 'ssh';
|
|
4
|
-
export type DevTagBranchScope = 'staging' | 'preview' | 'all';
|
|
5
3
|
export type PackageDependencyReference = {
|
|
6
4
|
packageName: string;
|
|
7
5
|
version: string;
|
|
@@ -10,7 +8,7 @@ export type PackageDependencyReference = {
|
|
|
10
8
|
installSpec: string;
|
|
11
9
|
tagName: string | null;
|
|
12
10
|
remoteUrl: string | null;
|
|
13
|
-
mode: 'stable-semver' | 'dev-git-
|
|
11
|
+
mode: 'stable-semver' | 'dev-git-commit';
|
|
14
12
|
};
|
|
15
13
|
export type RewrittenDevReference = {
|
|
16
14
|
packageName: string;
|
|
@@ -19,22 +17,6 @@ export type RewrittenDevReference = {
|
|
|
19
17
|
to: string;
|
|
20
18
|
tagName: string | null;
|
|
21
19
|
};
|
|
22
|
-
export type TreeseedDevTagInfo = {
|
|
23
|
-
tagName: string;
|
|
24
|
-
stableVersion: string;
|
|
25
|
-
branchSlug: string;
|
|
26
|
-
timestamp: string;
|
|
27
|
-
metadata: Record<string, string>;
|
|
28
|
-
branch: string | null;
|
|
29
|
-
packageName: string | null;
|
|
30
|
-
version: string | null;
|
|
31
|
-
};
|
|
32
|
-
export type StaleDevTagClassification = {
|
|
33
|
-
tagName: string;
|
|
34
|
-
action: 'delete' | 'skip';
|
|
35
|
-
reason: string;
|
|
36
|
-
info: TreeseedDevTagInfo | null;
|
|
37
|
-
};
|
|
38
20
|
export declare function internalDependencyFields(packageJson: Record<string, unknown> | null): string[];
|
|
39
21
|
export declare function isPrereleaseVersion(version: string): boolean;
|
|
40
22
|
export declare function isStableVersion(version: string): boolean;
|
|
@@ -48,10 +30,12 @@ export declare function createPackageDependencyReference(input: {
|
|
|
48
30
|
version: string;
|
|
49
31
|
branchMode: 'package-release-main' | 'package-dev-save';
|
|
50
32
|
remoteUrl?: string | null;
|
|
33
|
+
commitSha?: string | null;
|
|
51
34
|
devDependencyReferenceMode?: DevDependencyReferenceMode;
|
|
52
35
|
gitDependencyProtocol?: GitDependencyProtocol;
|
|
53
36
|
}): PackageDependencyReference;
|
|
54
37
|
export declare function updateInternalDependencySpecs(packageJson: Record<string, unknown> | null, references: Map<string, PackageDependencyReference>): RewrittenDevReference[];
|
|
38
|
+
export declare function installableInternalDependencyVersions(root: any, versions: Map<string, string>): Map<string, string>;
|
|
55
39
|
export declare function rewriteInternalDependenciesToStableVersions(root: any, versions: Map<string, string>): (RewrittenDevReference & {
|
|
56
40
|
repoName: string;
|
|
57
41
|
packageJsonPath: string;
|
|
@@ -68,72 +52,13 @@ export declare function collectInternalDevReferenceIssues(root?: any, packageNam
|
|
|
68
52
|
spec: string;
|
|
69
53
|
reason: string;
|
|
70
54
|
}[];
|
|
55
|
+
export declare function collectDevelopmentCommitReferenceIssues(root?: any, packageNames?: Set<any>): {
|
|
56
|
+
repoName: string;
|
|
57
|
+
filePath: string;
|
|
58
|
+
field?: string;
|
|
59
|
+
dependencyName?: string;
|
|
60
|
+
spec: string;
|
|
61
|
+
reason: string;
|
|
62
|
+
}[];
|
|
63
|
+
export declare function assertDevelopmentInternalCommitReferences(root?: any, packageNames?: Set<string>): void;
|
|
71
64
|
export declare function assertNoInternalDevReferences(root?: any, packageNames?: Set<string>): void;
|
|
72
|
-
export declare function createDevTagMessage(input: {
|
|
73
|
-
packageName: string;
|
|
74
|
-
version: string;
|
|
75
|
-
branch: string;
|
|
76
|
-
commitSha: string;
|
|
77
|
-
workflowRunId?: string | null;
|
|
78
|
-
createdAt?: string;
|
|
79
|
-
}): string;
|
|
80
|
-
export declare function gitTagMessage(repoDir: string, tagName: string): string;
|
|
81
|
-
export declare function tagHasTreeseedDevMetadata(repoDir: string, tagName: string): boolean;
|
|
82
|
-
export declare function parseTreeseedDevTag(tagName: string, message: string): TreeseedDevTagInfo | null;
|
|
83
|
-
export declare function classifyStaleTreeseedDevTag(input: {
|
|
84
|
-
tagName: string;
|
|
85
|
-
message: string;
|
|
86
|
-
currentVersion: string;
|
|
87
|
-
activeReferences?: string[];
|
|
88
|
-
branchScope?: DevTagBranchScope;
|
|
89
|
-
expectedPackageName?: string | null;
|
|
90
|
-
}): StaleDevTagClassification;
|
|
91
|
-
export declare function cleanupDevTags(repoDir: string, tagNames: string[], activeReferences?: string[]): {
|
|
92
|
-
cleaned: string[];
|
|
93
|
-
skipped: {
|
|
94
|
-
tagName: string;
|
|
95
|
-
reason: string;
|
|
96
|
-
}[];
|
|
97
|
-
};
|
|
98
|
-
export declare function collectTreeseedDevTagCleanupPlan(input: {
|
|
99
|
-
repoDir: string;
|
|
100
|
-
packageName: string;
|
|
101
|
-
currentVersion: string;
|
|
102
|
-
activeReferences?: string[];
|
|
103
|
-
branchScope?: DevTagBranchScope;
|
|
104
|
-
}): {
|
|
105
|
-
packageName: string;
|
|
106
|
-
currentVersion: string;
|
|
107
|
-
branchScope: DevTagBranchScope;
|
|
108
|
-
candidates: StaleDevTagClassification[];
|
|
109
|
-
skipped: StaleDevTagClassification[];
|
|
110
|
-
tags: StaleDevTagClassification[];
|
|
111
|
-
};
|
|
112
|
-
export declare function cleanupStaleTreeseedDevTags(input: {
|
|
113
|
-
repoDir: string;
|
|
114
|
-
packageName: string;
|
|
115
|
-
currentVersion: string;
|
|
116
|
-
activeReferences?: string[];
|
|
117
|
-
branchScope?: DevTagBranchScope;
|
|
118
|
-
dryRun?: boolean;
|
|
119
|
-
}): {
|
|
120
|
-
status: string;
|
|
121
|
-
packageName: string;
|
|
122
|
-
currentVersion: string;
|
|
123
|
-
branchScope: DevTagBranchScope;
|
|
124
|
-
candidates: {
|
|
125
|
-
tagName: string;
|
|
126
|
-
reason: string;
|
|
127
|
-
branch: string | null | undefined;
|
|
128
|
-
branchSlug: string | undefined;
|
|
129
|
-
version: string | null | undefined;
|
|
130
|
-
}[];
|
|
131
|
-
candidateCount: number;
|
|
132
|
-
cleaned: string[];
|
|
133
|
-
cleanedCount: number;
|
|
134
|
-
skipped: {
|
|
135
|
-
tagName: string;
|
|
136
|
-
reason: string;
|
|
137
|
-
}[];
|
|
138
|
-
skippedCount: number;
|
|
139
|
-
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
|
-
import {
|
|
4
|
+
import { discoverTreeseedPackageAdapters } from "./package-adapters.js";
|
|
5
|
+
import { workspacePackages, workspaceRoot } from "./workspace-tools.js";
|
|
5
6
|
const INTERNAL_DEPENDENCY_FIELDS = ["dependencies", "optionalDependencies", "peerDependencies", "devDependencies"];
|
|
6
7
|
function readJson(filePath) {
|
|
7
8
|
return JSON.parse(readFileSync(filePath, "utf8"));
|
|
@@ -20,19 +21,6 @@ function isPrereleaseVersion(version) {
|
|
|
20
21
|
function isStableVersion(version) {
|
|
21
22
|
return /^\d+\.\d+\.\d+$/u.test(String(version).trim());
|
|
22
23
|
}
|
|
23
|
-
function stableVersionBase(version) {
|
|
24
|
-
const match = String(version).trim().match(/^(\d+\.\d+\.\d+)(?:-|$)/u);
|
|
25
|
-
return match?.[1] ?? null;
|
|
26
|
-
}
|
|
27
|
-
function compareStableVersions(left, right) {
|
|
28
|
-
const leftParts = left.split(".").map((part) => Number(part));
|
|
29
|
-
const rightParts = right.split(".").map((part) => Number(part));
|
|
30
|
-
for (let index = 0; index < 3; index += 1) {
|
|
31
|
-
const difference = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);
|
|
32
|
-
if (difference !== 0) return difference;
|
|
33
|
-
}
|
|
34
|
-
return 0;
|
|
35
|
-
}
|
|
36
24
|
function isGitDependencySpec(spec) {
|
|
37
25
|
return /^(?:git\+|github:|gitlab:|bitbucket:|ssh:\/\/|https:\/\/|file:)/u.test(String(spec).trim()) && String(spec).includes("#");
|
|
38
26
|
}
|
|
@@ -104,33 +92,25 @@ function createPackageDependencyReference(input) {
|
|
|
104
92
|
mode: "stable-semver"
|
|
105
93
|
};
|
|
106
94
|
}
|
|
107
|
-
if ((input.devDependencyReferenceMode ?? "git-tag") === "registry-prerelease") {
|
|
108
|
-
return {
|
|
109
|
-
packageName: input.packageName,
|
|
110
|
-
version: input.version,
|
|
111
|
-
spec: input.version,
|
|
112
|
-
manifestSpec: input.version,
|
|
113
|
-
installSpec: input.version,
|
|
114
|
-
tagName: input.version,
|
|
115
|
-
remoteUrl: input.remoteUrl ?? null,
|
|
116
|
-
mode: "dev-registry-prerelease"
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
95
|
const installRemote = normalizeGitRemoteForDependency(input.remoteUrl ?? "", input.gitDependencyProtocol ?? "preserve-origin");
|
|
120
96
|
const manifestRemote = normalizeGitRemoteForManifest(input.remoteUrl ?? "", input.gitDependencyProtocol ?? "preserve-origin");
|
|
121
97
|
if (!installRemote || !manifestRemote) {
|
|
122
|
-
throw new Error(`Unable to create Git
|
|
98
|
+
throw new Error(`Unable to create Git dependency for ${input.packageName}; origin remote is missing.`);
|
|
99
|
+
}
|
|
100
|
+
const ref = String(input.commitSha ?? "").trim();
|
|
101
|
+
if (!ref) {
|
|
102
|
+
throw new Error(`Unable to create commit dependency for ${input.packageName}; commit SHA is missing.`);
|
|
123
103
|
}
|
|
124
|
-
const manifestSpec = `${manifestRemote}#${
|
|
104
|
+
const manifestSpec = `${manifestRemote}#${ref}`;
|
|
125
105
|
return {
|
|
126
106
|
packageName: input.packageName,
|
|
127
107
|
version: input.version,
|
|
128
108
|
spec: manifestSpec,
|
|
129
109
|
manifestSpec,
|
|
130
110
|
installSpec: manifestSpec,
|
|
131
|
-
tagName:
|
|
111
|
+
tagName: null,
|
|
132
112
|
remoteUrl: input.remoteUrl ?? null,
|
|
133
|
-
mode: "dev-git-
|
|
113
|
+
mode: "dev-git-commit"
|
|
134
114
|
};
|
|
135
115
|
}
|
|
136
116
|
function updateInternalDependencySpecs(packageJson, references) {
|
|
@@ -155,14 +135,24 @@ function updateInternalDependencySpecs(packageJson, references) {
|
|
|
155
135
|
}
|
|
156
136
|
return changed;
|
|
157
137
|
}
|
|
138
|
+
function installableInternalDependencyVersions(root = workspaceRoot(), versions) {
|
|
139
|
+
const publishTargets = /* @__PURE__ */ new Map();
|
|
140
|
+
for (const adapter of discoverTreeseedPackageAdapters(root)) {
|
|
141
|
+
const publishTarget = adapter.publishTarget ?? "npm";
|
|
142
|
+
publishTargets.set(adapter.id, publishTarget);
|
|
143
|
+
publishTargets.set(adapter.name, publishTarget);
|
|
144
|
+
}
|
|
145
|
+
return new Map([...versions.entries()].filter(([packageName]) => (publishTargets.get(packageName) ?? "npm") === "npm"));
|
|
146
|
+
}
|
|
158
147
|
function rewriteInternalDependenciesToStableVersions(root = workspaceRoot(), versions) {
|
|
159
148
|
const rewrites = [];
|
|
149
|
+
const installableVersions = installableInternalDependencyVersions(root, versions);
|
|
160
150
|
for (const pkg of workspacePackages(root)) {
|
|
161
151
|
const packageJsonPath = resolve(pkg.dir, "package.json");
|
|
162
152
|
const packageJson = readJson(packageJsonPath);
|
|
163
153
|
const changed = updateInternalDependencySpecs(
|
|
164
154
|
packageJson,
|
|
165
|
-
new Map([...
|
|
155
|
+
new Map([...installableVersions.entries()].map(([packageName, version]) => [packageName, {
|
|
166
156
|
packageName,
|
|
167
157
|
version,
|
|
168
158
|
spec: version,
|
|
@@ -185,6 +175,7 @@ function rewriteInternalDependenciesToStableVersions(root = workspaceRoot(), ver
|
|
|
185
175
|
}
|
|
186
176
|
function rewriteProjectInternalDependenciesToStableVersions(root = workspaceRoot(), versions) {
|
|
187
177
|
const rewrites = [];
|
|
178
|
+
const installableVersions = installableInternalDependencyVersions(root, versions);
|
|
188
179
|
const targets = [
|
|
189
180
|
{ name: "@treeseed/market", dir: root },
|
|
190
181
|
...workspacePackages(root).map((pkg) => ({ name: pkg.name, dir: pkg.dir }))
|
|
@@ -195,7 +186,7 @@ function rewriteProjectInternalDependenciesToStableVersions(root = workspaceRoot
|
|
|
195
186
|
const packageJson = readJson(packageJsonPath);
|
|
196
187
|
const changed = updateInternalDependencySpecs(
|
|
197
188
|
packageJson,
|
|
198
|
-
new Map([...
|
|
189
|
+
new Map([...installableVersions.entries()].map(([packageName, version]) => [packageName, {
|
|
199
190
|
packageName,
|
|
200
191
|
version,
|
|
201
192
|
spec: version,
|
|
@@ -231,8 +222,8 @@ function collectInternalDevReferenceIssues(root = workspaceRoot(), packageNames
|
|
|
231
222
|
for (const [depName, specValue] of Object.entries(values)) {
|
|
232
223
|
if (!packageNames.has(depName)) continue;
|
|
233
224
|
const spec = String(specValue);
|
|
234
|
-
if (isGitDependencySpec(spec)
|
|
235
|
-
issues.push({ repoName: pkg.name, filePath: packageJsonPath, field, dependencyName: depName, spec, reason: "git-dev-ref" });
|
|
225
|
+
if (isGitDependencySpec(spec)) {
|
|
226
|
+
issues.push({ repoName: pkg.name, filePath: packageJsonPath, field, dependencyName: depName, spec, reason: releaseTagFromDependencySpec(spec) ? "git-release-ref" : "git-dev-ref" });
|
|
236
227
|
} else if (isPrereleaseVersion(spec)) {
|
|
237
228
|
issues.push({ repoName: pkg.name, filePath: packageJsonPath, field, dependencyName: depName, spec, reason: "prerelease-dev-ref" });
|
|
238
229
|
}
|
|
@@ -259,10 +250,10 @@ function collectInternalDevReferenceIssues(root = workspaceRoot(), packageNames
|
|
|
259
250
|
record.resolved,
|
|
260
251
|
record.from
|
|
261
252
|
].map((value) => typeof value === "string" ? value : "").find(
|
|
262
|
-
(value) => isGitDependencySpec(value)
|
|
253
|
+
(value) => isGitDependencySpec(value) || devTagFromDependencySpec(value) || isPrereleaseVersion(value)
|
|
263
254
|
);
|
|
264
255
|
if (spec) {
|
|
265
|
-
issues.push({ repoName: lockRoot.name, filePath: lockPath, spec, reason: "lockfile-dev-ref", dependencyName: packageName });
|
|
256
|
+
issues.push({ repoName: lockRoot.name, filePath: lockPath, spec, reason: releaseTagFromDependencySpec(spec) ? "lockfile-git-release-ref" : "lockfile-dev-ref", dependencyName: packageName });
|
|
266
257
|
}
|
|
267
258
|
}
|
|
268
259
|
}
|
|
@@ -270,204 +261,94 @@ function collectInternalDevReferenceIssues(root = workspaceRoot(), packageNames
|
|
|
270
261
|
}
|
|
271
262
|
return issues;
|
|
272
263
|
}
|
|
273
|
-
function
|
|
274
|
-
const issues =
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
return "";
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
function gitRemoteTagMessage(repoDir, tagName) {
|
|
303
|
-
try {
|
|
304
|
-
run("git", ["fetch", "--no-tags", "origin", `refs/tags/${tagName}`], { cwd: repoDir, capture: true });
|
|
305
|
-
return run("git", ["cat-file", "-p", "FETCH_HEAD"], { cwd: repoDir, capture: true });
|
|
306
|
-
} catch {
|
|
307
|
-
return "";
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
function gitDevTagMessage(repoDir, tagName) {
|
|
311
|
-
const local = gitTagMessage(repoDir, tagName);
|
|
312
|
-
if (local.trim()) return local;
|
|
313
|
-
return gitRemoteTagMessage(repoDir, tagName);
|
|
314
|
-
}
|
|
315
|
-
function tagHasTreeseedDevMetadata(repoDir, tagName) {
|
|
316
|
-
return gitTagMessage(repoDir, tagName).includes("treeseed-dev-tag: true");
|
|
317
|
-
}
|
|
318
|
-
function parseTreeseedDevTag(tagName, message) {
|
|
319
|
-
const match = String(tagName).match(/^(\d+\.\d+\.\d+)-dev\.([0-9A-Za-z.-]+)\.(\d{8}T\d{6}Z)$/u);
|
|
320
|
-
if (!match) return null;
|
|
321
|
-
const metadata = Object.fromEntries(
|
|
322
|
-
String(message).split(/\r?\n/u).map((line) => line.match(/^([^:]+):\s*(.*)$/u)).filter((lineMatch) => Boolean(lineMatch)).map((lineMatch) => [String(lineMatch[1]).trim(), String(lineMatch[2] ?? "").trim()])
|
|
323
|
-
);
|
|
324
|
-
if (metadata["treeseed-dev-tag"] !== "true") return null;
|
|
325
|
-
return {
|
|
326
|
-
tagName,
|
|
327
|
-
stableVersion: match[1],
|
|
328
|
-
branchSlug: match[2],
|
|
329
|
-
timestamp: match[3],
|
|
330
|
-
metadata,
|
|
331
|
-
branch: metadata.branch || null,
|
|
332
|
-
packageName: metadata.package || null,
|
|
333
|
-
version: metadata.version || null
|
|
334
|
-
};
|
|
335
|
-
}
|
|
336
|
-
function devTagScope(info) {
|
|
337
|
-
const branch = info.branch ?? info.branchSlug;
|
|
338
|
-
if (branch === "staging" || info.branchSlug === "staging") return "staging";
|
|
339
|
-
if (branch === "main" || branch === "prod" || branch === "production" || info.branchSlug === "main" || info.branchSlug === "prod" || info.branchSlug === "production") return "main";
|
|
340
|
-
return "preview";
|
|
341
|
-
}
|
|
342
|
-
function classifyStaleTreeseedDevTag(input) {
|
|
343
|
-
const tagName = String(input.tagName).trim();
|
|
344
|
-
if (!tagName.includes("-dev.")) return { tagName, action: "skip", reason: "not-dev-tag", info: null };
|
|
345
|
-
if (tagName.startsWith("deprecated/")) return { tagName, action: "skip", reason: "deprecated-tag", info: null };
|
|
346
|
-
const info = parseTreeseedDevTag(tagName, input.message);
|
|
347
|
-
if (!info) return { tagName, action: "skip", reason: input.message.includes("treeseed-dev-tag: true") ? "malformed-dev-tag" : "missing-treeseed-metadata", info: null };
|
|
348
|
-
if (input.expectedPackageName && info.packageName && info.packageName !== input.expectedPackageName) {
|
|
349
|
-
return { tagName, action: "skip", reason: "package-mismatch", info };
|
|
350
|
-
}
|
|
351
|
-
if ((input.activeReferences ?? []).includes(tagName)) return { tagName, action: "skip", reason: "still-referenced", info };
|
|
352
|
-
const scope = devTagScope(info);
|
|
353
|
-
if (scope === "main") return { tagName, action: "skip", reason: "main-or-production-tag", info };
|
|
354
|
-
const branchScope = input.branchScope ?? "all";
|
|
355
|
-
if (branchScope !== "all" && branchScope !== scope) return { tagName, action: "skip", reason: `scope-${scope}`, info };
|
|
356
|
-
const currentStableVersion = stableVersionBase(input.currentVersion);
|
|
357
|
-
if (!currentStableVersion) return { tagName, action: "skip", reason: "invalid-current-version", info };
|
|
358
|
-
const comparison = compareStableVersions(info.stableVersion, currentStableVersion);
|
|
359
|
-
if (comparison >= 0) {
|
|
360
|
-
return { tagName, action: "skip", reason: comparison === 0 ? "current-version" : "newer-version", info };
|
|
361
|
-
}
|
|
362
|
-
return { tagName, action: "delete", reason: "stale-before-current-version", info };
|
|
363
|
-
}
|
|
364
|
-
function cleanupDevTags(repoDir, tagNames, activeReferences = []) {
|
|
365
|
-
const active = new Set(activeReferences.filter(Boolean));
|
|
366
|
-
const cleaned = [];
|
|
367
|
-
const skipped = [];
|
|
368
|
-
for (const tagName of [...new Set(tagNames.filter(Boolean))].sort()) {
|
|
369
|
-
if (!tagName.includes("-dev.")) {
|
|
370
|
-
skipped.push({ tagName, reason: "not-dev-tag" });
|
|
371
|
-
continue;
|
|
372
|
-
}
|
|
373
|
-
if (active.has(tagName)) {
|
|
374
|
-
skipped.push({ tagName, reason: "still-referenced" });
|
|
375
|
-
continue;
|
|
376
|
-
}
|
|
377
|
-
if (!tagHasTreeseedDevMetadata(repoDir, tagName)) {
|
|
378
|
-
skipped.push({ tagName, reason: "missing-treeseed-metadata" });
|
|
379
|
-
continue;
|
|
380
|
-
}
|
|
381
|
-
try {
|
|
382
|
-
run("git", ["tag", "-d", tagName], { cwd: repoDir });
|
|
383
|
-
run("git", ["push", "origin", `:refs/tags/${tagName}`], { cwd: repoDir });
|
|
384
|
-
cleaned.push(tagName);
|
|
385
|
-
} catch (error) {
|
|
386
|
-
skipped.push({ tagName, reason: error instanceof Error ? error.message : String(error) });
|
|
264
|
+
function collectDevelopmentCommitReferenceIssues(root = workspaceRoot(), packageNames = new Set(workspacePackages(root).map((pkg) => pkg.name))) {
|
|
265
|
+
const issues = [];
|
|
266
|
+
const manifestRoots = [
|
|
267
|
+
{ name: "@treeseed/market", dir: root },
|
|
268
|
+
...workspacePackages(root).map((pkg) => ({ name: pkg.name, dir: pkg.dir }))
|
|
269
|
+
];
|
|
270
|
+
for (const pkg of manifestRoots) {
|
|
271
|
+
const packageJsonPath = resolve(pkg.dir, "package.json");
|
|
272
|
+
if (!existsSync(packageJsonPath)) continue;
|
|
273
|
+
const packageJson = readJson(packageJsonPath);
|
|
274
|
+
for (const field of internalDependencyFields(packageJson)) {
|
|
275
|
+
const values = packageJson[field];
|
|
276
|
+
for (const [depName, specValue] of Object.entries(values)) {
|
|
277
|
+
if (!packageNames.has(depName)) continue;
|
|
278
|
+
const spec = String(specValue);
|
|
279
|
+
if (!/^github:treeseed-ai\/[a-z0-9._-]+#[a-f0-9]{40}$/u.test(spec)) {
|
|
280
|
+
issues.push({
|
|
281
|
+
repoName: pkg.name,
|
|
282
|
+
filePath: packageJsonPath,
|
|
283
|
+
field,
|
|
284
|
+
dependencyName: depName,
|
|
285
|
+
spec,
|
|
286
|
+
reason: isGitDependencySpec(spec) ? "git-ref-is-not-commit-sha" : isPrereleaseVersion(spec) ? "prerelease-ref" : "non-git-commit-ref"
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
}
|
|
387
290
|
}
|
|
388
291
|
}
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
292
|
+
for (const lockRoot of manifestRoots) {
|
|
293
|
+
for (const lockName of ["package-lock.json", "npm-shrinkwrap.json"]) {
|
|
294
|
+
const lockPath = resolve(lockRoot.dir, lockName);
|
|
295
|
+
if (!existsSync(lockPath)) continue;
|
|
296
|
+
const lockfile = readJson(lockPath);
|
|
297
|
+
const packageEntries = lockfile.packages && typeof lockfile.packages === "object" ? Object.entries(lockfile.packages) : [];
|
|
298
|
+
for (const [entryPath, entry] of packageEntries) {
|
|
299
|
+
if (!entry || typeof entry !== "object") continue;
|
|
300
|
+
for (const field of internalDependencyFields(entry)) {
|
|
301
|
+
const values = entry[field];
|
|
302
|
+
for (const [depName, specValue] of Object.entries(values)) {
|
|
303
|
+
if (!packageNames.has(depName)) continue;
|
|
304
|
+
const spec = String(specValue);
|
|
305
|
+
if (!/^github:treeseed-ai\/[a-z0-9._-]+#[a-f0-9]{40}$/u.test(spec)) {
|
|
306
|
+
issues.push({
|
|
307
|
+
repoName: lockRoot.name,
|
|
308
|
+
filePath: lockPath,
|
|
309
|
+
field: entryPath ? `packages.${entryPath}.${field}` : field,
|
|
310
|
+
dependencyName: depName,
|
|
311
|
+
spec,
|
|
312
|
+
reason: isGitDependencySpec(spec) ? "lockfile-git-ref-is-not-commit-sha" : "lockfile-non-git-commit-ref"
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
399
319
|
}
|
|
320
|
+
return issues;
|
|
400
321
|
}
|
|
401
|
-
function
|
|
402
|
-
const
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
activeReferences: input.activeReferences ?? [],
|
|
408
|
-
branchScope: input.branchScope ?? "all",
|
|
409
|
-
expectedPackageName: input.packageName
|
|
410
|
-
}));
|
|
411
|
-
return {
|
|
412
|
-
packageName: input.packageName,
|
|
413
|
-
currentVersion: input.currentVersion,
|
|
414
|
-
branchScope: input.branchScope ?? "all",
|
|
415
|
-
candidates: classifications.filter((classification) => classification.action === "delete"),
|
|
416
|
-
skipped: classifications.filter((classification) => classification.action === "skip"),
|
|
417
|
-
tags: classifications
|
|
418
|
-
};
|
|
322
|
+
function assertDevelopmentInternalCommitReferences(root = workspaceRoot(), packageNames) {
|
|
323
|
+
const issues = collectDevelopmentCommitReferenceIssues(root, packageNames);
|
|
324
|
+
if (issues.length === 0) return;
|
|
325
|
+
const rendered = issues.map((issue) => `${issue.filePath}${issue.field ? ` ${issue.field}.${issue.dependencyName}` : ""}: ${issue.reason} ${issue.spec}`).join("\n");
|
|
326
|
+
throw new Error(`Development and staging package references must use GitHub commit SHAs for internal Treeseed dependencies.
|
|
327
|
+
${rendered}`);
|
|
419
328
|
}
|
|
420
|
-
function
|
|
421
|
-
const
|
|
422
|
-
|
|
423
|
-
const
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
try {
|
|
427
|
-
run("git", ["tag", "-d", candidate.tagName], { cwd: input.repoDir });
|
|
428
|
-
} catch {
|
|
429
|
-
}
|
|
430
|
-
try {
|
|
431
|
-
run("git", ["push", "origin", `:refs/tags/${candidate.tagName}`], { cwd: input.repoDir });
|
|
432
|
-
cleaned.push(candidate.tagName);
|
|
433
|
-
} catch (error) {
|
|
434
|
-
skipped.push({ tagName: candidate.tagName, reason: error instanceof Error ? error.message : String(error) });
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
return {
|
|
438
|
-
status: input.dryRun ? "planned" : "completed",
|
|
439
|
-
packageName: input.packageName,
|
|
440
|
-
currentVersion: input.currentVersion,
|
|
441
|
-
branchScope: input.branchScope ?? "all",
|
|
442
|
-
candidates: plan.candidates.map((entry) => ({ tagName: entry.tagName, reason: entry.reason, branch: entry.info?.branch, branchSlug: entry.info?.branchSlug, version: entry.info?.version })),
|
|
443
|
-
candidateCount: plan.candidates.length,
|
|
444
|
-
cleaned,
|
|
445
|
-
cleanedCount: cleaned.length,
|
|
446
|
-
skipped,
|
|
447
|
-
skippedCount: skipped.length
|
|
448
|
-
};
|
|
329
|
+
function assertNoInternalDevReferences(root = workspaceRoot(), packageNames) {
|
|
330
|
+
const issues = collectInternalDevReferenceIssues(root, packageNames);
|
|
331
|
+
if (issues.length === 0) return;
|
|
332
|
+
const rendered = issues.map((issue) => `${issue.filePath}${issue.field ? ` ${issue.field}.${issue.dependencyName}` : ""}: ${issue.reason} ${issue.spec}`).join("\n");
|
|
333
|
+
throw new Error(`Stable release still contains internal Git or dev dependency references; production package.json files must use plain semver npm versions.
|
|
334
|
+
${rendered}`);
|
|
449
335
|
}
|
|
450
336
|
export {
|
|
337
|
+
assertDevelopmentInternalCommitReferences,
|
|
451
338
|
assertNoInternalDevReferences,
|
|
452
|
-
|
|
453
|
-
cleanupDevTags,
|
|
454
|
-
cleanupStaleTreeseedDevTags,
|
|
339
|
+
collectDevelopmentCommitReferenceIssues,
|
|
455
340
|
collectInternalDevReferenceIssues,
|
|
456
|
-
collectTreeseedDevTagCleanupPlan,
|
|
457
|
-
createDevTagMessage,
|
|
458
341
|
createPackageDependencyReference,
|
|
459
342
|
devTagFromDependencySpec,
|
|
460
|
-
|
|
343
|
+
installableInternalDependencyVersions,
|
|
461
344
|
internalDependencyFields,
|
|
462
345
|
isGitDependencySpec,
|
|
463
346
|
isPrereleaseVersion,
|
|
464
347
|
isStableVersion,
|
|
465
348
|
normalizeGitRemoteForDependency,
|
|
466
349
|
normalizeGitRemoteForManifest,
|
|
467
|
-
parseTreeseedDevTag,
|
|
468
350
|
releaseTagFromDependencySpec,
|
|
469
351
|
rewriteInternalDependenciesToStableVersions,
|
|
470
352
|
rewriteProjectInternalDependenciesToStableVersions,
|
|
471
|
-
tagHasTreeseedDevMetadata,
|
|
472
353
|
updateInternalDependencySpecs
|
|
473
354
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ProjectEnvironmentName, ProjectLaunchHostBindingInput, TemplateLaunchRequirements } from '../../sdk-types.
|
|
2
|
-
import { type PlatformRepositoryDescriptor } from '../repository-operations.
|
|
3
|
-
import { type ProjectLaunchSecretSyncProgressEvent, type ProjectLaunchSecretSyncResult } from './template-secret-sync.
|
|
4
|
-
import { type ProjectLaunchHostInventoryRecord, type ProjectLaunchResolvedHostBinding, type ResolveProjectLaunchHostBindingsResult } from '../../template-launch-requirements.
|
|
1
|
+
import type { ProjectEnvironmentName, ProjectLaunchHostBindingInput, TemplateLaunchRequirements } from '../../sdk-types.js';
|
|
2
|
+
import { type PlatformRepositoryDescriptor } from '../repository-operations.js';
|
|
3
|
+
import { type ProjectLaunchSecretSyncProgressEvent, type ProjectLaunchSecretSyncResult } from './template-secret-sync.js';
|
|
4
|
+
import { type ProjectLaunchHostInventoryRecord, type ProjectLaunchResolvedHostBinding, type ResolveProjectLaunchHostBindingsResult } from '../../template-launch-requirements.js';
|
|
5
5
|
export type ProjectHostOperationKind = 'inspect' | 'audit' | 'resync' | 'replace' | 'rotate';
|
|
6
6
|
export type ProjectHostOperationStatus = 'ok' | 'warning' | 'blocked';
|
|
7
7
|
export interface ProjectHostOperationDiagnostic {
|