@treeseed/sdk 0.11.0 → 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 +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 +627 -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 +63 -0
- package/dist/platform/desired-state.js +1021 -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
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type TreeseedWorkflowPhaseStatus = 'passed' | 'failed' | 'skipped';
|
|
2
|
+
export type TreeseedWorkflowTimingPhase = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
startedAt: string;
|
|
6
|
+
finishedAt: string;
|
|
7
|
+
durationMs: number;
|
|
8
|
+
status: TreeseedWorkflowPhaseStatus;
|
|
9
|
+
};
|
|
10
|
+
export type TreeseedWorkflowTiming = {
|
|
11
|
+
startedAt: string;
|
|
12
|
+
finishedAt: string;
|
|
13
|
+
durationMs: number;
|
|
14
|
+
phases: TreeseedWorkflowTimingPhase[];
|
|
15
|
+
};
|
|
16
|
+
export type TreeseedWorkflowTimer = {
|
|
17
|
+
readonly startedAt: string;
|
|
18
|
+
phase<T>(id: string, label: string, action: () => T): T;
|
|
19
|
+
phaseAsync<T>(id: string, label: string, action: () => Promise<T>): Promise<T>;
|
|
20
|
+
skip(id: string, label: string): void;
|
|
21
|
+
finish(): TreeseedWorkflowTiming;
|
|
22
|
+
};
|
|
23
|
+
export declare function createTreeseedWorkflowTimer(startedAt?: string): TreeseedWorkflowTimer;
|
|
24
|
+
export declare function formatTreeseedDuration(durationMs: number): string;
|
|
25
|
+
export declare function slowestTreeseedWorkflowPhases(timing: TreeseedWorkflowTiming, limit?: number): TreeseedWorkflowTimingPhase[];
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
function nowIso() {
|
|
2
|
+
return (/* @__PURE__ */ new Date()).toISOString();
|
|
3
|
+
}
|
|
4
|
+
function durationSince(startMs) {
|
|
5
|
+
return Math.max(0, Date.now() - startMs);
|
|
6
|
+
}
|
|
7
|
+
function createTreeseedWorkflowTimer(startedAt = nowIso()) {
|
|
8
|
+
const startMs = Date.parse(startedAt);
|
|
9
|
+
const phases = [];
|
|
10
|
+
function record(id, label, started, startedMs, status) {
|
|
11
|
+
const finishedAt = nowIso();
|
|
12
|
+
phases.push({
|
|
13
|
+
id,
|
|
14
|
+
label,
|
|
15
|
+
startedAt: started,
|
|
16
|
+
finishedAt,
|
|
17
|
+
durationMs: durationSince(startedMs),
|
|
18
|
+
status
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
startedAt,
|
|
23
|
+
phase(id, label, action) {
|
|
24
|
+
const phaseStartedAt = nowIso();
|
|
25
|
+
const phaseStartedMs = Date.now();
|
|
26
|
+
try {
|
|
27
|
+
const result = action();
|
|
28
|
+
record(id, label, phaseStartedAt, phaseStartedMs, "passed");
|
|
29
|
+
return result;
|
|
30
|
+
} catch (error) {
|
|
31
|
+
record(id, label, phaseStartedAt, phaseStartedMs, "failed");
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
async phaseAsync(id, label, action) {
|
|
36
|
+
const phaseStartedAt = nowIso();
|
|
37
|
+
const phaseStartedMs = Date.now();
|
|
38
|
+
try {
|
|
39
|
+
const result = await action();
|
|
40
|
+
record(id, label, phaseStartedAt, phaseStartedMs, "passed");
|
|
41
|
+
return result;
|
|
42
|
+
} catch (error) {
|
|
43
|
+
record(id, label, phaseStartedAt, phaseStartedMs, "failed");
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
skip(id, label) {
|
|
48
|
+
const phaseStartedAt = nowIso();
|
|
49
|
+
record(id, label, phaseStartedAt, Date.now(), "skipped");
|
|
50
|
+
},
|
|
51
|
+
finish() {
|
|
52
|
+
const finishedAt = nowIso();
|
|
53
|
+
return {
|
|
54
|
+
startedAt,
|
|
55
|
+
finishedAt,
|
|
56
|
+
durationMs: Math.max(0, Date.parse(finishedAt) - startMs),
|
|
57
|
+
phases: [...phases]
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function formatTreeseedDuration(durationMs) {
|
|
63
|
+
const totalSeconds = Math.max(0, Math.round(durationMs / 1e3));
|
|
64
|
+
if (totalSeconds < 60) return `${totalSeconds}s`;
|
|
65
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
66
|
+
const seconds = totalSeconds % 60;
|
|
67
|
+
if (minutes < 60) return seconds === 0 ? `${minutes}m` : `${minutes}m${seconds}s`;
|
|
68
|
+
const hours = Math.floor(minutes / 60);
|
|
69
|
+
const remainingMinutes = minutes % 60;
|
|
70
|
+
return remainingMinutes === 0 ? `${hours}h` : `${hours}h${remainingMinutes}m`;
|
|
71
|
+
}
|
|
72
|
+
function slowestTreeseedWorkflowPhases(timing, limit = 5) {
|
|
73
|
+
return [...timing.phases].sort((left, right) => right.durationMs - left.durationMs).slice(0, Math.max(0, limit));
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
createTreeseedWorkflowTimer,
|
|
77
|
+
formatTreeseedDuration,
|
|
78
|
+
slowestTreeseedWorkflowPhases
|
|
79
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, readlinkSync, rmSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { dirname, relative, resolve } from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { runTreeseedGit } from "./git-runner.js";
|
|
4
4
|
import { workspacePackages, workspaceRoot } from "./workspace-tools.js";
|
|
5
5
|
const METADATA_VERSION = 1;
|
|
6
6
|
const INTERNAL_DEPENDENCY_FIELDS = ["dependencies", "optionalDependencies", "peerDependencies", "devDependencies"];
|
|
@@ -65,10 +65,10 @@ function writeMetadata(root, links) {
|
|
|
65
65
|
`, "utf8");
|
|
66
66
|
}
|
|
67
67
|
function gitInfoExcludePath(repoPath) {
|
|
68
|
-
const result =
|
|
68
|
+
const result = runTreeseedGit(["rev-parse", "--git-common-dir"], {
|
|
69
69
|
cwd: repoPath,
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
mode: "read",
|
|
71
|
+
allowFailure: true
|
|
72
72
|
});
|
|
73
73
|
if (result.status !== 0) return null;
|
|
74
74
|
const gitDir = result.stdout.trim();
|
|
@@ -268,6 +268,40 @@ function createLink(link) {
|
|
|
268
268
|
const relativeTarget = relative(dirname(link.linkPath), link.targetPath) || ".";
|
|
269
269
|
symlinkSync(relativeTarget, link.linkPath, process.platform === "win32" ? "junction" : "dir");
|
|
270
270
|
}
|
|
271
|
+
function packageBinEntries(packageJson) {
|
|
272
|
+
const bin = packageJson.bin;
|
|
273
|
+
if (typeof bin === "string" && typeof packageJson.name === "string") {
|
|
274
|
+
return [[packageDirName(packageJson.name), bin]];
|
|
275
|
+
}
|
|
276
|
+
if (!bin || typeof bin !== "object" || Array.isArray(bin)) return [];
|
|
277
|
+
return Object.entries(bin).filter((entry) => typeof entry[1] === "string");
|
|
278
|
+
}
|
|
279
|
+
function syncPackageBinLinks(link) {
|
|
280
|
+
const packageJson = readJson(resolve(link.targetPath, "package.json"));
|
|
281
|
+
const binEntries = packageBinEntries(packageJson);
|
|
282
|
+
if (binEntries.length === 0) return [];
|
|
283
|
+
const binDir = resolve(link.ownerPath, "node_modules", ".bin");
|
|
284
|
+
mkdirSync(binDir, { recursive: true });
|
|
285
|
+
const created = [];
|
|
286
|
+
for (const [binName, binTarget] of binEntries) {
|
|
287
|
+
const linkPath = resolve(binDir, binName);
|
|
288
|
+
const targetPath = resolve(link.linkPath, binTarget);
|
|
289
|
+
const relativeTarget = relative(dirname(linkPath), targetPath) || targetPath;
|
|
290
|
+
const stat = safeLstat(linkPath);
|
|
291
|
+
if (stat?.isSymbolicLink()) {
|
|
292
|
+
const currentTarget = readlinkSync(linkPath);
|
|
293
|
+
if (currentTarget === relativeTarget || resolve(dirname(linkPath), currentTarget) === targetPath) {
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
unlinkSync(linkPath);
|
|
297
|
+
} else if (stat) {
|
|
298
|
+
continue;
|
|
299
|
+
}
|
|
300
|
+
symlinkSync(relativeTarget, linkPath);
|
|
301
|
+
created.push(linkPath);
|
|
302
|
+
}
|
|
303
|
+
return created;
|
|
304
|
+
}
|
|
271
305
|
function ensureLocalWorkspaceLinks(root = workspaceRoot(), options = {}) {
|
|
272
306
|
const enabled = workspaceLinksEnabled(options.mode, options.env);
|
|
273
307
|
const links = discoverWorkspaceLinks(root);
|
|
@@ -284,6 +318,9 @@ function ensureLocalWorkspaceLinks(root = workspaceRoot(), options = {}) {
|
|
|
284
318
|
createLink(link);
|
|
285
319
|
created.push(link.linkPath);
|
|
286
320
|
}
|
|
321
|
+
for (const link of links) {
|
|
322
|
+
created.push(...syncPackageBinLinks(link));
|
|
323
|
+
}
|
|
287
324
|
writeMetadata(root, links);
|
|
288
325
|
return {
|
|
289
326
|
...inspectWorkspaceDependencyMode(root, { mode: options.mode, env: options.env }),
|
|
@@ -51,27 +51,27 @@ function envTokenStatus(keys, label, values = process.env) {
|
|
|
51
51
|
}
|
|
52
52
|
function parseGitHubAuthStatus(values = process.env) {
|
|
53
53
|
return {
|
|
54
|
-
authenticated: envTokenStatus(["
|
|
55
|
-
detail: envTokenStatus(["
|
|
54
|
+
authenticated: envTokenStatus(["TREESEED_GITHUB_TOKEN"], "GitHub", values).ready,
|
|
55
|
+
detail: envTokenStatus(["TREESEED_GITHUB_TOKEN"], "GitHub", values).detail
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
58
|
function parseWranglerWhoAmI(values = process.env) {
|
|
59
59
|
return {
|
|
60
|
-
authenticated: envTokenStatus(["
|
|
61
|
-
detail: envTokenStatus(["
|
|
60
|
+
authenticated: envTokenStatus(["TREESEED_CLOUDFLARE_API_TOKEN"], "Cloudflare", values).ready,
|
|
61
|
+
detail: envTokenStatus(["TREESEED_CLOUDFLARE_API_TOKEN"], "Cloudflare", values).detail
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
64
|
function parseRailwayWhoAmI(values = process.env) {
|
|
65
65
|
return {
|
|
66
|
-
authenticated: envTokenStatus(["
|
|
67
|
-
detail: envTokenStatus(["
|
|
66
|
+
authenticated: envTokenStatus(["TREESEED_RAILWAY_API_TOKEN"], "Railway", values).ready,
|
|
67
|
+
detail: envTokenStatus(["TREESEED_RAILWAY_API_TOKEN"], "Railway", values).detail
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
70
|
function parseCopilotSessionStatus(values = process.env) {
|
|
71
|
-
const status = envTokenStatus(["
|
|
71
|
+
const status = envTokenStatus(["TREESEED_GITHUB_COPILOT_TOKEN", "TREESEED_GITHUB_TOKEN"], "GitHub Copilot", values);
|
|
72
72
|
return {
|
|
73
73
|
configured: status.ready,
|
|
74
|
-
detail: status.ready ? "GitHub token detected from configured Treeseed environment for Copilot-backed workflows." : "GitHub token is not configured. Set
|
|
74
|
+
detail: status.ready ? "GitHub Copilot token detected from configured Treeseed environment for Copilot-backed workflows." : "GitHub Copilot token is not configured. Set TREESEED_GITHUB_COPILOT_TOKEN for Copilot-backed workflows. TREESEED_GITHUB_TOKEN is accepted as a compatibility fallback."
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
77
|
function collectCliPreflight({ cwd = process.cwd(), requireAuth = false } = {}) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TreeseedWorkflowResult } from '../../workflow.
|
|
1
|
+
import type { TreeseedWorkflowResult } from '../../workflow.js';
|
|
2
2
|
export type SaveScriptArgs = {
|
|
3
3
|
hotfix: boolean;
|
|
4
4
|
message: string;
|
|
@@ -7,12 +7,12 @@ export declare function parseWorkspaceSaveScriptArgs(argv: string[]): SaveScript
|
|
|
7
7
|
export declare function formatWorkspaceSaveSuccessReport(result: TreeseedWorkflowResult<Record<string, unknown>>): {
|
|
8
8
|
ok: boolean;
|
|
9
9
|
kind: string;
|
|
10
|
-
operation: import("../../workflow.
|
|
10
|
+
operation: import("../../workflow.js").TreeseedWorkflowOperationId;
|
|
11
11
|
};
|
|
12
12
|
export declare function formatWorkspaceSaveFailureReport(error: unknown): {
|
|
13
13
|
ok: boolean;
|
|
14
|
-
kind: import("../../workflow.
|
|
15
|
-
operation: import("../../workflow.
|
|
14
|
+
kind: import("../../workflow.js").TreeseedWorkflowErrorCode;
|
|
15
|
+
operation: import("../../workflow.js").TreeseedWorkflowOperationId;
|
|
16
16
|
message: string;
|
|
17
17
|
details: Record<string, unknown> | null;
|
|
18
18
|
exitCode: number;
|
|
@@ -59,6 +59,7 @@ export declare function countConflictMarkers(source: any): {
|
|
|
59
59
|
};
|
|
60
60
|
export declare function collectMergeConflictReport(repoDir: any): {
|
|
61
61
|
branch: string;
|
|
62
|
+
mergeInProgress: boolean;
|
|
62
63
|
rebaseInProgress: boolean;
|
|
63
64
|
conflictedFiles: string[];
|
|
64
65
|
status: string;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { changedWorkspacePackages, publishableWorkspacePackages,
|
|
1
|
+
import { existsSync, lstatSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { isAbsolute, resolve } from "node:path";
|
|
3
|
+
import { changedWorkspacePackages, publishableWorkspacePackages, sortWorkspacePackages, workspacePackages, workspaceRoot } from "./workspace-tools.js";
|
|
4
|
+
import { classifyTreeseedGitMode, runTreeseedGitText } from "./git-runner.js";
|
|
5
|
+
function runGit(args, options) {
|
|
6
|
+
return runTreeseedGitText(args, {
|
|
7
|
+
cwd: options.cwd,
|
|
8
|
+
mode: classifyTreeseedGitMode(args),
|
|
9
|
+
timeoutMs: options.timeoutMs,
|
|
10
|
+
maxBuffer: options.maxBuffer
|
|
11
|
+
});
|
|
12
|
+
}
|
|
4
13
|
const MERGE_CONFLICT_EXIT_CODE = 12;
|
|
5
14
|
const TREESEED_PUBLIC_RELEASE_PACKAGE_NAMES = ["@treeseed/sdk", "@treeseed/ui", "@treeseed/core", "@treeseed/admin", "@treeseed/cli", "@treeseed/agent"];
|
|
6
15
|
function parseSemver(version) {
|
|
@@ -60,7 +69,7 @@ function versionForLine(line, patch = 0) {
|
|
|
60
69
|
}
|
|
61
70
|
function localGitTagExists(repoDir, tagName) {
|
|
62
71
|
try {
|
|
63
|
-
return
|
|
72
|
+
return runGit(["tag", "--list", tagName], { cwd: repoDir, capture: true }).trim() === tagName;
|
|
64
73
|
} catch {
|
|
65
74
|
return false;
|
|
66
75
|
}
|
|
@@ -68,7 +77,7 @@ function localGitTagExists(repoDir, tagName) {
|
|
|
68
77
|
function highestStableGitTagOnLine(repoDir, lineLabel) {
|
|
69
78
|
const line = parseVersionLine(lineLabel);
|
|
70
79
|
try {
|
|
71
|
-
const tags =
|
|
80
|
+
const tags = runGit(["tag", "--list", `${line.label}.*`], { cwd: repoDir, capture: true }).split(/\r?\n/u).map((tag) => tag.trim()).filter(Boolean).map((tag) => {
|
|
72
81
|
try {
|
|
73
82
|
const parsed = parseSemver(tag);
|
|
74
83
|
if (parsed.prerelease || parsed.major !== line.major || parsed.minor !== line.minor) return null;
|
|
@@ -340,16 +349,16 @@ function assertWorkspaceVersionConsistency(root = workspaceRoot()) {
|
|
|
340
349
|
);
|
|
341
350
|
}
|
|
342
351
|
function repoRoot(cwd = workspaceRoot()) {
|
|
343
|
-
return
|
|
352
|
+
return runGit(["rev-parse", "--show-toplevel"], { cwd, capture: true }).trim();
|
|
344
353
|
}
|
|
345
354
|
function currentBranch(repoDir) {
|
|
346
|
-
return
|
|
355
|
+
return runGit(["branch", "--show-current"], { cwd: repoDir, capture: true }).trim();
|
|
347
356
|
}
|
|
348
357
|
function originRemoteUrl(repoDir) {
|
|
349
|
-
return
|
|
358
|
+
return runGit(["remote", "get-url", "origin"], { cwd: repoDir, capture: true }).trim();
|
|
350
359
|
}
|
|
351
360
|
function gitStatusPorcelain(repoDir) {
|
|
352
|
-
return
|
|
361
|
+
return runGit(["status", "--porcelain"], { cwd: repoDir, capture: true }).trim();
|
|
353
362
|
}
|
|
354
363
|
function hasMeaningfulChanges(repoDir) {
|
|
355
364
|
return gitStatusPorcelain(repoDir).length > 0;
|
|
@@ -361,25 +370,38 @@ function countConflictMarkers(source) {
|
|
|
361
370
|
end: (source.match(/^>{7} /gm) ?? []).length
|
|
362
371
|
};
|
|
363
372
|
}
|
|
373
|
+
function gitPathExists(repoDir, gitPath) {
|
|
374
|
+
try {
|
|
375
|
+
const resolved = runGit(["rev-parse", "--git-path", gitPath], {
|
|
376
|
+
cwd: repoDir,
|
|
377
|
+
capture: true
|
|
378
|
+
}).trim();
|
|
379
|
+
const fullPath = resolved && (isAbsolute(resolved) ? resolved : resolve(repoDir, resolved));
|
|
380
|
+
return Boolean(fullPath) && existsSync(fullPath);
|
|
381
|
+
} catch {
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
364
385
|
function collectMergeConflictReport(repoDir) {
|
|
365
386
|
const branch = currentBranch(repoDir);
|
|
366
|
-
const conflictedFiles =
|
|
387
|
+
const conflictedFiles = runGit(["diff", "--name-only", "--diff-filter=U"], {
|
|
367
388
|
cwd: repoDir,
|
|
368
389
|
capture: true
|
|
369
390
|
}).split("\n").map((line) => line.trim()).filter(Boolean);
|
|
370
|
-
const status =
|
|
391
|
+
const status = runGit(["status", "--short"], { cwd: repoDir, capture: true });
|
|
371
392
|
const perFile = conflictedFiles.map((filePath) => {
|
|
372
393
|
const fullPath = resolve(repoDir, filePath);
|
|
373
|
-
const source = existsSync(fullPath) ? readFileSync(fullPath, "utf8") : "";
|
|
394
|
+
const source = existsSync(fullPath) && !lstatSync(fullPath).isDirectory() ? readFileSync(fullPath, "utf8") : "";
|
|
374
395
|
return {
|
|
375
396
|
filePath,
|
|
376
397
|
markers: countConflictMarkers(source),
|
|
377
|
-
diff:
|
|
398
|
+
diff: runGit(["diff", "--", filePath], { cwd: repoDir, capture: true })
|
|
378
399
|
};
|
|
379
400
|
});
|
|
380
401
|
return {
|
|
381
402
|
branch,
|
|
382
|
-
|
|
403
|
+
mergeInProgress: gitPathExists(repoDir, "MERGE_HEAD"),
|
|
404
|
+
rebaseInProgress: gitPathExists(repoDir, "rebase-merge") || gitPathExists(repoDir, "rebase-apply"),
|
|
383
405
|
conflictedFiles,
|
|
384
406
|
status,
|
|
385
407
|
perFile
|
|
@@ -387,9 +409,10 @@ function collectMergeConflictReport(repoDir) {
|
|
|
387
409
|
}
|
|
388
410
|
function formatMergeConflictReport(report, repoDir, targetBranch = "main") {
|
|
389
411
|
const lines = [
|
|
390
|
-
`Treeseed
|
|
412
|
+
`Treeseed workflow failed due to Git integration conflicts while updating ${targetBranch}.`,
|
|
391
413
|
`Repository root: ${repoDir}`,
|
|
392
414
|
`Branch: ${report.branch}`,
|
|
415
|
+
`Merge in progress: ${report.mergeInProgress ? "yes" : "no"}`,
|
|
393
416
|
`Rebase in progress: ${report.rebaseInProgress ? "yes" : "no"}`,
|
|
394
417
|
"Git status:",
|
|
395
418
|
report.status || "(no git status output)",
|
|
@@ -402,9 +425,9 @@ function formatMergeConflictReport(report, repoDir, targetBranch = "main") {
|
|
|
402
425
|
lines.push(file.diff || " (no diff output)");
|
|
403
426
|
}
|
|
404
427
|
lines.push("Next steps:");
|
|
405
|
-
lines.push("- Inspect conflicted files and reconcile local vs
|
|
406
|
-
lines.push("-
|
|
407
|
-
lines.push("-
|
|
428
|
+
lines.push("- Inspect conflicted files and reconcile local vs target-branch changes on your task branch.");
|
|
429
|
+
lines.push("- Save the resolved task branch, then retry the interrupted Treeseed workflow.");
|
|
430
|
+
lines.push("- If a Git merge or rebase is still active, abort it before retrying.");
|
|
408
431
|
return lines.join("\n");
|
|
409
432
|
}
|
|
410
433
|
export {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync } from "node:fs";
|
|
2
2
|
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { classifyTreeseedGitMode, runTreeseedGit, runTreeseedGitText } from "./git-runner.js";
|
|
3
4
|
import { join, relative, resolve } from "node:path";
|
|
4
|
-
const TREESEED_WORKSPACE_PACKAGE_DIRS = ["sdk", "core", "cli", "agent"];
|
|
5
|
+
const TREESEED_WORKSPACE_PACKAGE_DIRS = ["sdk", "ui", "core", "admin", "cli", "agent", "api", "treedx"];
|
|
5
6
|
function packageSortWeight(pkg) {
|
|
6
7
|
const relativeDir = String(pkg.relativeDir ?? "");
|
|
7
8
|
const dirName = relativeDir.split("/").pop() ?? "";
|
|
@@ -19,6 +20,14 @@ function compareWorkspacePackages(left, right) {
|
|
|
19
20
|
function escapeRegex(source) {
|
|
20
21
|
return source.replace(/[|\\{}()[\]^$+?.]/g, "\\$&");
|
|
21
22
|
}
|
|
23
|
+
function runGit(args, options) {
|
|
24
|
+
return runTreeseedGitText(args, {
|
|
25
|
+
cwd: options.cwd,
|
|
26
|
+
mode: classifyTreeseedGitMode(args),
|
|
27
|
+
timeoutMs: options.timeoutMs,
|
|
28
|
+
maxBuffer: options.maxBuffer
|
|
29
|
+
});
|
|
30
|
+
}
|
|
22
31
|
function segmentPatternToRegex(pattern) {
|
|
23
32
|
return new RegExp(`^${escapeRegex(pattern).replaceAll("*", ".*")}$`);
|
|
24
33
|
}
|
|
@@ -76,7 +85,10 @@ function isWorkspaceRoot(root = process.cwd()) {
|
|
|
76
85
|
}
|
|
77
86
|
}
|
|
78
87
|
function hasCompleteTreeseedPackageCheckout(root = process.cwd()) {
|
|
79
|
-
return TREESEED_WORKSPACE_PACKAGE_DIRS.every((dirName) =>
|
|
88
|
+
return TREESEED_WORKSPACE_PACKAGE_DIRS.every((dirName) => {
|
|
89
|
+
const packageDir = resolve(root, "packages", dirName);
|
|
90
|
+
return existsSync(resolve(packageDir, "package.json")) || existsSync(resolve(packageDir, "treeseed.package.yaml"));
|
|
91
|
+
});
|
|
80
92
|
}
|
|
81
93
|
function findNearestTreeseedWorkspaceRoot(startCwd = process.cwd()) {
|
|
82
94
|
const tenantRoot = findNearestTreeseedRoot(startCwd);
|
|
@@ -89,9 +101,15 @@ function readJson(filePath) {
|
|
|
89
101
|
return JSON.parse(readFileSync(filePath, "utf8"));
|
|
90
102
|
}
|
|
91
103
|
function workspacePackageJson(root = workspaceRoot()) {
|
|
104
|
+
if (!existsSync(resolve(root, "package.json"))) {
|
|
105
|
+
return {};
|
|
106
|
+
}
|
|
92
107
|
return readJson(resolve(root, "package.json"));
|
|
93
108
|
}
|
|
94
109
|
function workspacePatterns(root = workspaceRoot()) {
|
|
110
|
+
if (!existsSync(resolve(root, "package.json"))) {
|
|
111
|
+
return hasCompleteTreeseedPackageCheckout(root) ? ["packages/*"] : [];
|
|
112
|
+
}
|
|
95
113
|
const packageJson = workspacePackageJson(root);
|
|
96
114
|
const workspaces = Array.isArray(packageJson.workspaces) ? packageJson.workspaces : Array.isArray(packageJson.workspaces?.packages) ? packageJson.workspaces.packages : [];
|
|
97
115
|
const patterns = workspaces.filter((value) => typeof value === "string" && value.trim().length > 0);
|
|
@@ -172,6 +190,22 @@ function packagesWithScript(scriptName, root = workspaceRoot()) {
|
|
|
172
190
|
);
|
|
173
191
|
}
|
|
174
192
|
function run(command, args, options = {}) {
|
|
193
|
+
if (command === "git") {
|
|
194
|
+
const result2 = runTreeseedGit(args, {
|
|
195
|
+
cwd: options.cwd ?? workspaceRoot(),
|
|
196
|
+
mode: classifyTreeseedGitMode(args),
|
|
197
|
+
allowFailure: false,
|
|
198
|
+
timeoutMs: options.timeoutMs,
|
|
199
|
+
maxBuffer: options.maxBuffer
|
|
200
|
+
});
|
|
201
|
+
if (!options.capture && result2.stdout) {
|
|
202
|
+
process.stdout.write(result2.stdout);
|
|
203
|
+
}
|
|
204
|
+
if (!options.capture && result2.stderr) {
|
|
205
|
+
process.stderr.write(result2.stderr);
|
|
206
|
+
}
|
|
207
|
+
return (result2.stdout ?? "").trim();
|
|
208
|
+
}
|
|
175
209
|
const result = spawnSync(command, args, {
|
|
176
210
|
cwd: options.cwd ?? workspaceRoot(),
|
|
177
211
|
env: { ...process.env, ...options.env ?? {} },
|
|
@@ -188,10 +222,10 @@ function run(command, args, options = {}) {
|
|
|
188
222
|
return (result.stdout ?? "").trim();
|
|
189
223
|
}
|
|
190
224
|
function canResolveGitRef(baseRef, cwd = workspaceRoot()) {
|
|
191
|
-
const result =
|
|
225
|
+
const result = runTreeseedGit(["rev-parse", "--verify", baseRef], {
|
|
192
226
|
cwd,
|
|
193
|
-
|
|
194
|
-
|
|
227
|
+
mode: "read",
|
|
228
|
+
allowFailure: true
|
|
195
229
|
});
|
|
196
230
|
return result.status === 0;
|
|
197
231
|
}
|
|
@@ -213,7 +247,7 @@ function changedWorkspaceFiles(baseRef, cwd = workspaceRoot()) {
|
|
|
213
247
|
diffCommands.unshift(["diff", "--name-only", resolvedBaseRef, "HEAD"]);
|
|
214
248
|
}
|
|
215
249
|
for (const args of diffCommands) {
|
|
216
|
-
const output =
|
|
250
|
+
const output = runGit(args, { cwd, capture: true });
|
|
217
251
|
for (const line of output.split("\n").map((entry) => entry.trim()).filter(Boolean)) {
|
|
218
252
|
changedFiles.add(line);
|
|
219
253
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TreeseedOperationMetadata } from './operations-types.
|
|
1
|
+
import type { TreeseedOperationMetadata } from './operations-types.js';
|
|
2
2
|
export declare const TRESEED_OPERATION_SPECS: TreeseedOperationMetadata[];
|
|
3
3
|
export declare const TRESEED_OPERATION_INDEX: Map<string, TreeseedOperationMetadata>;
|
|
4
4
|
export declare function findTreeseedOperation(name: string | null | undefined): TreeseedOperationMetadata | null;
|
|
@@ -8,9 +8,11 @@ const TRESEED_OPERATION_SPECS = [
|
|
|
8
8
|
operation({ id: "branch.tasks", name: "tasks", aliases: [], group: "Workflow", summary: "List task branches plus package branch alignment.", description: "List task branches from market and checked-out package repos, including preview metadata and branch/pointer alignment state.", provider: "default", related: ["status", "switch", "close"] }),
|
|
9
9
|
operation({ id: "branch.switch", name: "switch", aliases: [], group: "Workflow", summary: "Create or resume a recursive task branch.", description: "Create or resume the task branch in market and any checked-out package repos, with optional preview provisioning.", provider: "default", related: ["tasks", "dev", "save"] }),
|
|
10
10
|
operation({ id: "branch.save", name: "save", aliases: [], group: "Workflow", summary: "Recursively verify, commit, and push the current task checkpoint.", description: "Save dirty package repos in dependency order, then verify, commit, push, and optionally refresh preview for market.", provider: "default", related: ["switch", "stage", "status"] }),
|
|
11
|
-
operation({ id: "branch.
|
|
12
|
-
operation({ id: "branch.
|
|
13
|
-
operation({ id: "
|
|
11
|
+
operation({ id: "branch.update", name: "update", aliases: [], group: "Workflow", summary: "Merge staging into the current task branch.", description: "Merge the selected upstream branch, staging by default, into the current task branch across market and checked-out package repos.", provider: "default", related: ["status", "save", "stage", "switch"] }),
|
|
12
|
+
operation({ id: "branch.close", name: "close", aliases: [], group: "Workflow", summary: "Recursively archive and delete a task branch.", description: "Auto-save if needed, clean preview resources, and remove the task branch across market and checked-out package repos.", provider: "default", related: ["tasks", "switch", "stage"] }),
|
|
13
|
+
operation({ id: "branch.stage", name: "stage", aliases: [], group: "Workflow", summary: "Promote a locally verified task branch to staging across market and packages.", description: "Merge staging down into the task branch first, run local proof, promote exact verified root and package refs to staging, verify remote staging refs, and clean up only after promotion succeeds.", provider: "default", related: ["save", "release", "close"] }),
|
|
14
|
+
operation({ id: "release.candidate", name: "release-candidate", aliases: [], group: "Validation", summary: "Plan and run reusable release proof records for staging promotion.", description: "Build the exact-SHA proof graph for package, hosted workflow, and provider verification. GitHub-hosted workflow proof is authoritative; local and action-simulation proof is reusable but not a hosted CI substitute.", provider: "default", related: ["stage", "release", "save"] }),
|
|
15
|
+
operation({ id: "release.proof", name: "proof", aliases: [], group: "Validation", summary: "Plan, run, and inspect reusable release proof records.", description: "Manage exact-SHA release proof records for packages, hosted workflows, and provider verification. GitHub-hosted workflow proof is authoritative; local action simulation is advisory.", provider: "default", related: ["save", "release-candidate", "ci"] }),
|
|
14
16
|
operation({ id: "workspace.resume", name: "resume", aliases: [], group: "Workflow", summary: "Resume an interrupted workflow run.", description: "Continue a failed journaled workflow run from its next incomplete step after validating current workspace preconditions.", provider: "default", related: ["recover", "status"] }),
|
|
15
17
|
operation({ id: "workspace.recover", name: "recover", aliases: [], group: "Workflow", summary: "Inspect active workflow locks and interrupted runs.", description: "List active workflow locks, resumable interrupted runs, and the exact commands needed to continue or recover the workspace state.", provider: "default", related: ["resume", "status"] }),
|
|
16
18
|
operation({ id: "workspace.links.status", name: workspaceCommand("status"), aliases: [], group: "Utilities", summary: "Inspect local workspace dependency links.", description: "Inspect whether Treeseed package dependencies are linked to local package checkouts or resolved through deployment references.", provider: "default", related: ["dev", "save"] }),
|
|
@@ -68,9 +70,6 @@ const TRESEED_OPERATION_SPECS = [
|
|
|
68
70
|
operation({ id: "release.verify", name: "test:release:full", aliases: ["release:verify"], group: "Release Utilities", summary: "Run the full release verification path.", description: "Run the full release verification path.", provider: "default" }),
|
|
69
71
|
operation({ id: "release.publishChanged", name: "release:publish:changed", aliases: [], group: "Release Utilities", summary: "Publish changed Treeseed workspace packages.", description: "Publish changed Treeseed workspace packages.", provider: "default" }),
|
|
70
72
|
operation({ id: "tools.astro", name: "astro", aliases: [], group: "Passthrough", summary: "Pass through to the packaged Astro CLI wrapper.", description: "Pass through to the packaged Astro CLI wrapper.", provider: "default" }),
|
|
71
|
-
operation({ id: "services.mailpitUp", name: "mailpit:up", aliases: [], group: "Utilities", summary: "Start the package-managed Mailpit service.", description: "Start the package-managed Mailpit service.", provider: "default" }),
|
|
72
|
-
operation({ id: "services.mailpitDown", name: "mailpit:down", aliases: [], group: "Utilities", summary: "Stop the package-managed Mailpit service.", description: "Stop the package-managed Mailpit service.", provider: "default" }),
|
|
73
|
-
operation({ id: "services.mailpitLogs", name: "mailpit:logs", aliases: [], group: "Utilities", summary: "Show Mailpit logs.", description: "Show Mailpit logs.", provider: "default" }),
|
|
74
73
|
operation({ id: "data.d1MigrateLocal", name: "d1:migrate:local", aliases: [], group: "Utilities", summary: "Apply local D1 migrations.", description: "Apply local D1 migrations.", provider: "default" }),
|
|
75
74
|
operation({ id: "content.cleanupMarkdown", name: "cleanup:markdown", aliases: [], group: "Utilities", summary: "Normalize Markdown and MDX files.", description: "Normalize Markdown and MDX files.", provider: "default" }),
|
|
76
75
|
operation({ id: "content.cleanupMarkdownCheck", name: "cleanup:markdown:check", aliases: [], group: "Utilities", summary: "Check Markdown and MDX formatting without rewriting files.", description: "Check Markdown and MDX formatting without rewriting files.", provider: "default" }),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type TreeseedOperationGroup = 'Workflow' | 'Local Development' | 'Validation' | 'Release Utilities' | 'Utilities' | 'Passthrough';
|
|
2
|
-
export type TreeseedOperationId = 'workspace.status' | 'workspace.doctor' | 'branch.tasks' | 'branch.switch' | 'branch.save' | 'branch.close' | 'branch.stage' | 'deploy.release' | 'deploy.rollback' | 'deploy.destroy' | 'workspace.resume' | 'workspace.recover' | 'template.list' | 'template.show' | 'template.validate' | 'template.sync' | 'project.init' | 'project.config' | 'local.dev' | 'local.devWatch' | 'local.build' | 'local.check' | 'local.preview' | 'local.lint' | 'local.test' | 'validation.testUnit' | 'validation.preflight' | 'validation.authCheck' | 'auth.login' | 'auth.logout' | 'auth.whoami' | 'release.testE2e' | 'release.testE2eLocal' | 'release.testE2eStaging' | 'release.testE2eFull' | 'release.testFast' | 'release.verify' | 'release.publishChanged' | '
|
|
2
|
+
export type TreeseedOperationId = 'workspace.status' | 'workspace.doctor' | 'branch.tasks' | 'branch.switch' | 'branch.save' | 'branch.close' | 'branch.stage' | 'deploy.release' | 'deploy.rollback' | 'deploy.destroy' | 'workspace.resume' | 'workspace.recover' | 'template.list' | 'template.show' | 'template.validate' | 'template.sync' | 'project.init' | 'project.config' | 'local.dev' | 'local.devWatch' | 'local.build' | 'local.check' | 'local.preview' | 'local.lint' | 'local.test' | 'validation.testUnit' | 'validation.preflight' | 'validation.authCheck' | 'auth.login' | 'auth.logout' | 'auth.whoami' | 'release.testE2e' | 'release.testE2eLocal' | 'release.testE2eStaging' | 'release.testE2eFull' | 'release.testFast' | 'release.verify' | 'release.publishChanged' | 'data.d1MigrateLocal' | 'content.cleanupMarkdown' | 'content.cleanupMarkdownCheck' | 'project.export' | 'tools.astro' | 'tools.syncDevvars' | 'tools.starlightPatch' | 'agents.run';
|
|
3
3
|
export type TreeseedOperationProviderId = 'default';
|
|
4
4
|
export type TreeseedOperationMetadata = {
|
|
5
5
|
id: TreeseedOperationId;
|
package/dist/operations.d.ts
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
export { TRESEED_OPERATION_SPECS, findTreeseedOperation, listTreeseedOperationNames, } from './operations-registry.
|
|
2
|
-
export { collectTreeseedConfigSeedValues } from './operations/services/config-runtime.
|
|
3
|
-
export { createKnowledgeHubRepositories, defaultHubContentResolutionPolicy, executeKnowledgeHubLaunch, normalizeKnowledgeHubLaunchIntent, planKnowledgeHubLaunch, planKnowledgeHubRepositories, validateRepositoryHost, } from './operations/services/hub-launch.
|
|
4
|
-
export { TreeseedOperationsSdk } from './operations/runtime.
|
|
5
|
-
export { cancelGitHubWorkflowRun,
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export type
|
|
1
|
+
export { TRESEED_OPERATION_SPECS, findTreeseedOperation, listTreeseedOperationNames, } from './operations-registry.js';
|
|
2
|
+
export { collectTreeseedConfigSeedValues } from './operations/services/config-runtime.js';
|
|
3
|
+
export { createKnowledgeHubRepositories, defaultHubContentResolutionPolicy, executeKnowledgeHubLaunch, normalizeKnowledgeHubLaunchIntent, planKnowledgeHubLaunch, planKnowledgeHubRepositories, validateRepositoryHost, } from './operations/services/hub-launch.js';
|
|
4
|
+
export { TreeseedOperationsSdk } from './operations/runtime.js';
|
|
5
|
+
export { cancelGitHubWorkflowRun, formatGitHubWorkflowFailure, waitForGitHubWorkflowRunCompletion, type GitHubWorkflowCancellationResult, type GitHubWorkflowFailureSummary, type GitHubWorkflowFailureSummaryInput, type GitHubWorkflowProgressEvent, } from './operations/services/github-api.js';
|
|
6
|
+
export { computeProofInputHash, createProofRecord, proofIdFor, type TreeseedProofDriver, type TreeseedProofInput, type TreeseedProofRecord, type TreeseedProofStatus, type TreeseedProofSubject, type TreeseedProofSubjectKind, } from './operations/services/release-proof.js';
|
|
7
|
+
export { cleanProofLedger, findReusableProof, invalidateProofs, readProofLedger, writeProofRecord, } from './operations/services/release-proof-ledger.js';
|
|
8
|
+
export { buildTreeseedProofPlan, summarizeTreeseedProofLedger, type TreeseedProofPlan, type TreeseedProofPlanSubject, type TreeseedProofTarget, } from './operations/services/release-proof-planner.js';
|
|
9
|
+
export { runTreeseedProof, type TreeseedProofRunResult, } from './operations/services/release-proof-runner.js';
|
|
10
|
+
export { createTreeseedWorkflowTimer, formatTreeseedDuration, slowestTreeseedWorkflowPhases, type TreeseedWorkflowTiming, type TreeseedWorkflowTimingPhase, } from './operations/services/workflow-timing.js';
|
|
11
|
+
export { classifyTreeseedGitMode, inspectTreeseedGitLocks, inspectTreeseedWorkspaceGitLocks, recoverTreeseedGitLocks, runTreeseedGit, runTreeseedGitBatch, runTreeseedGitOk, runTreeseedGitText, type TreeseedGitBatchOperation, type TreeseedGitLockDiagnostic, type TreeseedGitRunnerMode, type TreeseedGitRunnerResult, type TreeseedGitWorkspaceLockDiagnostics, } from './operations/services/git-runner.js';
|
|
12
|
+
export type { HubContentResolutionPolicy, KnowledgeHubLaunchIntent, KnowledgeHubLaunchPhase, KnowledgeHubLaunchPlan, KnowledgeHubLaunchResult, KnowledgeHubRepositoryPlan, RepositoryHost, } from './operations/services/hub-launch.js';
|
|
13
|
+
export type { TreeseedOperationContext, TreeseedOperationImplementation, TreeseedOperationId, TreeseedOperationMetadata, TreeseedOperationProvider, TreeseedOperationProviderId, TreeseedOperationRequest, TreeseedOperationResult, TreeseedOperationGroup, } from './operations-types.js';
|
|
14
|
+
export { TreeseedOperationError } from './operations-types.js';
|
|
15
|
+
export { AGENT_OPERATION_MODES, AGENT_OPERATION_NAMES, createAgentOperationEvent, decideAgentOperationPermission, deniedAgentOperationResult, isAgentOperationName, resolveAgentOperationGrant, type AgentDeterministicOperationStep, type AgentOperationEvent, type AgentOperationGrant, type AgentOperationMergeFailure, type AgentOperationMode, type AgentOperationName, type AgentOperationPermissionCode, type AgentOperationPermissionDecision, type AgentOperationRequest, type AgentOperationResult, type AgentOperationStatus, } from './operations/agent-tools.js';
|
|
16
|
+
export { TreeseedWorkflowSdk } from './workflow.js';
|
|
17
|
+
export type * from './workflow.js';
|