@software-dlc/cli 0.157.2
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/CHANGELOG.md +11 -0
- package/LICENSE +105 -0
- package/README.md +31 -0
- package/dist/checkout.d.ts +43 -0
- package/dist/checkout.d.ts.map +1 -0
- package/dist/checkout.js +92 -0
- package/dist/checkout.js.map +1 -0
- package/dist/cli-arguments.d.ts +13 -0
- package/dist/cli-arguments.d.ts.map +1 -0
- package/dist/cli-arguments.js +67 -0
- package/dist/cli-arguments.js.map +1 -0
- package/dist/cli-branch-history.d.ts +48 -0
- package/dist/cli-branch-history.d.ts.map +1 -0
- package/dist/cli-branch-history.js +319 -0
- package/dist/cli-branch-history.js.map +1 -0
- package/dist/cli-branches.d.ts +22 -0
- package/dist/cli-branches.d.ts.map +1 -0
- package/dist/cli-branches.js +59 -0
- package/dist/cli-branches.js.map +1 -0
- package/dist/cli-deploy.d.ts +14 -0
- package/dist/cli-deploy.d.ts.map +1 -0
- package/dist/cli-deploy.js +164 -0
- package/dist/cli-deploy.js.map +1 -0
- package/dist/cli-health.d.ts +3 -0
- package/dist/cli-health.d.ts.map +1 -0
- package/dist/cli-health.js +73 -0
- package/dist/cli-health.js.map +1 -0
- package/dist/cli-help.d.ts +21 -0
- package/dist/cli-help.d.ts.map +1 -0
- package/dist/cli-help.js +176 -0
- package/dist/cli-help.js.map +1 -0
- package/dist/cli-login.d.ts +76 -0
- package/dist/cli-login.d.ts.map +1 -0
- package/dist/cli-login.js +634 -0
- package/dist/cli-login.js.map +1 -0
- package/dist/cli-operation.d.ts +2 -0
- package/dist/cli-operation.d.ts.map +1 -0
- package/dist/cli-operation.js +66 -0
- package/dist/cli-operation.js.map +1 -0
- package/dist/cli-org.d.ts +12 -0
- package/dist/cli-org.d.ts.map +1 -0
- package/dist/cli-org.js +218 -0
- package/dist/cli-org.js.map +1 -0
- package/dist/cli-rebuild.d.ts +20 -0
- package/dist/cli-rebuild.d.ts.map +1 -0
- package/dist/cli-rebuild.js +29 -0
- package/dist/cli-rebuild.js.map +1 -0
- package/dist/cli-reset.d.ts +27 -0
- package/dist/cli-reset.d.ts.map +1 -0
- package/dist/cli-reset.js +44 -0
- package/dist/cli-reset.js.map +1 -0
- package/dist/cli-snapshot.d.ts +398 -0
- package/dist/cli-snapshot.d.ts.map +1 -0
- package/dist/cli-snapshot.js +45 -0
- package/dist/cli-snapshot.js.map +1 -0
- package/dist/cli-task-context.d.ts +3 -0
- package/dist/cli-task-context.d.ts.map +1 -0
- package/dist/cli-task-context.js +112 -0
- package/dist/cli-task-context.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1004 -0
- package/dist/cli.js.map +1 -0
- package/dist/graph-packages-lock.d.ts +169 -0
- package/dist/graph-packages-lock.d.ts.map +1 -0
- package/dist/graph-packages-lock.js +503 -0
- package/dist/graph-packages-lock.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/local/aggregate-preflight.d.ts +12 -0
- package/dist/local/aggregate-preflight.d.ts.map +1 -0
- package/dist/local/aggregate-preflight.js +22 -0
- package/dist/local/aggregate-preflight.js.map +1 -0
- package/dist/local/allow-mcp.d.ts +77 -0
- package/dist/local/allow-mcp.d.ts.map +1 -0
- package/dist/local/allow-mcp.js +394 -0
- package/dist/local/allow-mcp.js.map +1 -0
- package/dist/local/api-client.d.ts +15 -0
- package/dist/local/api-client.d.ts.map +1 -0
- package/dist/local/api-client.js +87 -0
- package/dist/local/api-client.js.map +1 -0
- package/dist/local/app-contract-readers.d.ts +229 -0
- package/dist/local/app-contract-readers.d.ts.map +1 -0
- package/dist/local/app-contract-readers.js +450 -0
- package/dist/local/app-contract-readers.js.map +1 -0
- package/dist/local/app-org-reader.d.ts +21 -0
- package/dist/local/app-org-reader.d.ts.map +1 -0
- package/dist/local/app-org-reader.js +66 -0
- package/dist/local/app-org-reader.js.map +1 -0
- package/dist/local/app-shell-readers.d.ts +96 -0
- package/dist/local/app-shell-readers.d.ts.map +1 -0
- package/dist/local/app-shell-readers.js +381 -0
- package/dist/local/app-shell-readers.js.map +1 -0
- package/dist/local/app-tasks-read.d.ts +202 -0
- package/dist/local/app-tasks-read.d.ts.map +1 -0
- package/dist/local/app-tasks-read.js +290 -0
- package/dist/local/app-tasks-read.js.map +1 -0
- package/dist/local/app-worktrees.d.ts +69 -0
- package/dist/local/app-worktrees.d.ts.map +1 -0
- package/dist/local/app-worktrees.js +554 -0
- package/dist/local/app-worktrees.js.map +1 -0
- package/dist/local/base-sync-manifest.d.ts +12 -0
- package/dist/local/base-sync-manifest.d.ts.map +1 -0
- package/dist/local/base-sync-manifest.js +57 -0
- package/dist/local/base-sync-manifest.js.map +1 -0
- package/dist/local/blast-radius.d.ts +191 -0
- package/dist/local/blast-radius.d.ts.map +1 -0
- package/dist/local/blast-radius.js +585 -0
- package/dist/local/blast-radius.js.map +1 -0
- package/dist/local/canonical.d.ts +2 -0
- package/dist/local/canonical.d.ts.map +1 -0
- package/dist/local/canonical.js +2 -0
- package/dist/local/canonical.js.map +1 -0
- package/dist/local/config.d.ts +22 -0
- package/dist/local/config.d.ts.map +1 -0
- package/dist/local/config.js +57 -0
- package/dist/local/config.js.map +1 -0
- package/dist/local/document-commands.d.ts +163 -0
- package/dist/local/document-commands.d.ts.map +1 -0
- package/dist/local/document-commands.js +620 -0
- package/dist/local/document-commands.js.map +1 -0
- package/dist/local/document-embeds.d.ts +21 -0
- package/dist/local/document-embeds.d.ts.map +1 -0
- package/dist/local/document-embeds.js +38 -0
- package/dist/local/document-embeds.js.map +1 -0
- package/dist/local/environment-context.d.ts +39 -0
- package/dist/local/environment-context.d.ts.map +1 -0
- package/dist/local/environment-context.js +193 -0
- package/dist/local/environment-context.js.map +1 -0
- package/dist/local/environment-exclude.d.ts +7 -0
- package/dist/local/environment-exclude.d.ts.map +1 -0
- package/dist/local/environment-exclude.js +82 -0
- package/dist/local/environment-exclude.js.map +1 -0
- package/dist/local/environment-sidecar.d.ts +126 -0
- package/dist/local/environment-sidecar.d.ts.map +1 -0
- package/dist/local/environment-sidecar.js +442 -0
- package/dist/local/environment-sidecar.js.map +1 -0
- package/dist/local/environment-switch.d.ts +22 -0
- package/dist/local/environment-switch.d.ts.map +1 -0
- package/dist/local/environment-switch.js +385 -0
- package/dist/local/environment-switch.js.map +1 -0
- package/dist/local/exact-remote-projection.d.ts +17 -0
- package/dist/local/exact-remote-projection.d.ts.map +1 -0
- package/dist/local/exact-remote-projection.js +53 -0
- package/dist/local/exact-remote-projection.js.map +1 -0
- package/dist/local/experimental/path-object-store.d.ts +66 -0
- package/dist/local/experimental/path-object-store.d.ts.map +1 -0
- package/dist/local/experimental/path-object-store.js +135 -0
- package/dist/local/experimental/path-object-store.js.map +1 -0
- package/dist/local/external-worktree-binding.d.ts +21 -0
- package/dist/local/external-worktree-binding.d.ts.map +1 -0
- package/dist/local/external-worktree-binding.js +56 -0
- package/dist/local/external-worktree-binding.js.map +1 -0
- package/dist/local/folder-members.d.ts +34 -0
- package/dist/local/folder-members.d.ts.map +1 -0
- package/dist/local/folder-members.js +168 -0
- package/dist/local/folder-members.js.map +1 -0
- package/dist/local/git-ref-authority.d.ts +11 -0
- package/dist/local/git-ref-authority.d.ts.map +1 -0
- package/dist/local/git-ref-authority.js +76 -0
- package/dist/local/git-ref-authority.js.map +1 -0
- package/dist/local/git.d.ts +88 -0
- package/dist/local/git.d.ts.map +1 -0
- package/dist/local/git.js +413 -0
- package/dist/local/git.js.map +1 -0
- package/dist/local/graph-read.d.ts +168 -0
- package/dist/local/graph-read.d.ts.map +1 -0
- package/dist/local/graph-read.js +360 -0
- package/dist/local/graph-read.js.map +1 -0
- package/dist/local/graph-sync.d.ts +39 -0
- package/dist/local/graph-sync.d.ts.map +1 -0
- package/dist/local/graph-sync.js +186 -0
- package/dist/local/graph-sync.js.map +1 -0
- package/dist/local/guide-commands.d.ts +79 -0
- package/dist/local/guide-commands.d.ts.map +1 -0
- package/dist/local/guide-commands.js +247 -0
- package/dist/local/guide-commands.js.map +1 -0
- package/dist/local/health-files.d.ts +24 -0
- package/dist/local/health-files.d.ts.map +1 -0
- package/dist/local/health-files.js +133 -0
- package/dist/local/health-files.js.map +1 -0
- package/dist/local/health-inspection.d.ts +12 -0
- package/dist/local/health-inspection.d.ts.map +1 -0
- package/dist/local/health-inspection.js +407 -0
- package/dist/local/health-inspection.js.map +1 -0
- package/dist/local/health-policy.d.ts +11 -0
- package/dist/local/health-policy.d.ts.map +1 -0
- package/dist/local/health-policy.js +257 -0
- package/dist/local/health-policy.js.map +1 -0
- package/dist/local/health-projection.d.ts +14 -0
- package/dist/local/health-projection.d.ts.map +1 -0
- package/dist/local/health-projection.js +102 -0
- package/dist/local/health-projection.js.map +1 -0
- package/dist/local/health-schema.d.ts +338 -0
- package/dist/local/health-schema.d.ts.map +1 -0
- package/dist/local/health-schema.js +213 -0
- package/dist/local/health-schema.js.map +1 -0
- package/dist/local/health-store.d.ts +61 -0
- package/dist/local/health-store.d.ts.map +1 -0
- package/dist/local/health-store.js +218 -0
- package/dist/local/health-store.js.map +1 -0
- package/dist/local/index.d.ts +66 -0
- package/dist/local/index.d.ts.map +1 -0
- package/dist/local/index.js +66 -0
- package/dist/local/index.js.map +1 -0
- package/dist/local/journey-commands.d.ts +65 -0
- package/dist/local/journey-commands.d.ts.map +1 -0
- package/dist/local/journey-commands.js +138 -0
- package/dist/local/journey-commands.js.map +1 -0
- package/dist/local/local-org-store.d.ts +46 -0
- package/dist/local/local-org-store.d.ts.map +1 -0
- package/dist/local/local-org-store.js +132 -0
- package/dist/local/local-org-store.js.map +1 -0
- package/dist/local/local-org.d.ts +389 -0
- package/dist/local/local-org.d.ts.map +1 -0
- package/dist/local/local-org.js +855 -0
- package/dist/local/local-org.js.map +1 -0
- package/dist/local/media-upload.d.ts +5 -0
- package/dist/local/media-upload.d.ts.map +1 -0
- package/dist/local/media-upload.js +41 -0
- package/dist/local/media-upload.js.map +1 -0
- package/dist/local/operation.d.ts +155 -0
- package/dist/local/operation.d.ts.map +1 -0
- package/dist/local/operation.js +340 -0
- package/dist/local/operation.js.map +1 -0
- package/dist/local/ownership-reader-schema.d.ts +117 -0
- package/dist/local/ownership-reader-schema.d.ts.map +1 -0
- package/dist/local/ownership-reader-schema.js +105 -0
- package/dist/local/ownership-reader-schema.js.map +1 -0
- package/dist/local/ownership-reader-worker.d.ts +2 -0
- package/dist/local/ownership-reader-worker.d.ts.map +1 -0
- package/dist/local/ownership-reader-worker.js +341 -0
- package/dist/local/ownership-reader-worker.js.map +1 -0
- package/dist/local/ownership-reader.d.ts +10 -0
- package/dist/local/ownership-reader.d.ts.map +1 -0
- package/dist/local/ownership-reader.js +93 -0
- package/dist/local/ownership-reader.js.map +1 -0
- package/dist/local/package-uses-check.d.ts +33 -0
- package/dist/local/package-uses-check.d.ts.map +1 -0
- package/dist/local/package-uses-check.js +62 -0
- package/dist/local/package-uses-check.js.map +1 -0
- package/dist/local/pending-recovery.d.ts +22 -0
- package/dist/local/pending-recovery.d.ts.map +1 -0
- package/dist/local/pending-recovery.js +171 -0
- package/dist/local/pending-recovery.js.map +1 -0
- package/dist/local/portable-commit-store.d.ts +28 -0
- package/dist/local/portable-commit-store.d.ts.map +1 -0
- package/dist/local/portable-commit-store.js +187 -0
- package/dist/local/portable-commit-store.js.map +1 -0
- package/dist/local/portable-commit.d.ts +109 -0
- package/dist/local/portable-commit.d.ts.map +1 -0
- package/dist/local/portable-commit.js +209 -0
- package/dist/local/portable-commit.js.map +1 -0
- package/dist/local/portable-remote.d.ts +432 -0
- package/dist/local/portable-remote.d.ts.map +1 -0
- package/dist/local/portable-remote.js +280 -0
- package/dist/local/portable-remote.js.map +1 -0
- package/dist/local/project-deleted.d.ts +4 -0
- package/dist/local/project-deleted.d.ts.map +1 -0
- package/dist/local/project-deleted.js +13 -0
- package/dist/local/project-deleted.js.map +1 -0
- package/dist/local/projection.d.ts +166 -0
- package/dist/local/projection.d.ts.map +1 -0
- package/dist/local/projection.js +709 -0
- package/dist/local/projection.js.map +1 -0
- package/dist/local/read-operation.d.ts +3 -0
- package/dist/local/read-operation.d.ts.map +1 -0
- package/dist/local/read-operation.js +19 -0
- package/dist/local/read-operation.js.map +1 -0
- package/dist/local/rebuild.d.ts +11 -0
- package/dist/local/rebuild.d.ts.map +1 -0
- package/dist/local/rebuild.js +42 -0
- package/dist/local/rebuild.js.map +1 -0
- package/dist/local/remote-base.d.ts +25 -0
- package/dist/local/remote-base.d.ts.map +1 -0
- package/dist/local/remote-base.js +68 -0
- package/dist/local/remote-base.js.map +1 -0
- package/dist/local/save-layout-worker.d.ts +19 -0
- package/dist/local/save-layout-worker.d.ts.map +1 -0
- package/dist/local/save-layout-worker.js +28 -0
- package/dist/local/save-layout-worker.js.map +1 -0
- package/dist/local/save-layout.d.ts +84 -0
- package/dist/local/save-layout.d.ts.map +1 -0
- package/dist/local/save-layout.js +221 -0
- package/dist/local/save-layout.js.map +1 -0
- package/dist/local/scope-impact.d.ts +31 -0
- package/dist/local/scope-impact.d.ts.map +1 -0
- package/dist/local/scope-impact.js +32 -0
- package/dist/local/scope-impact.js.map +1 -0
- package/dist/local/source-evidence/filesystem-worker.d.ts +2 -0
- package/dist/local/source-evidence/filesystem-worker.d.ts.map +1 -0
- package/dist/local/source-evidence/filesystem-worker.js +139 -0
- package/dist/local/source-evidence/filesystem-worker.js.map +1 -0
- package/dist/local/source-evidence/processes.d.ts +20 -0
- package/dist/local/source-evidence/processes.d.ts.map +1 -0
- package/dist/local/source-evidence/processes.js +133 -0
- package/dist/local/source-evidence/processes.js.map +1 -0
- package/dist/local/source-evidence/protocol.d.ts +52 -0
- package/dist/local/source-evidence/protocol.d.ts.map +1 -0
- package/dist/local/source-evidence/protocol.js +72 -0
- package/dist/local/source-evidence/protocol.js.map +1 -0
- package/dist/local/source-evidence/reader.d.ts +14 -0
- package/dist/local/source-evidence/reader.d.ts.map +1 -0
- package/dist/local/source-evidence/reader.js +308 -0
- package/dist/local/source-evidence/reader.js.map +1 -0
- package/dist/local/source-evidence/schema.d.ts +2504 -0
- package/dist/local/source-evidence/schema.d.ts.map +1 -0
- package/dist/local/source-evidence/schema.js +99 -0
- package/dist/local/source-evidence/schema.js.map +1 -0
- package/dist/local/source-policy/loader.d.ts +29 -0
- package/dist/local/source-policy/loader.d.ts.map +1 -0
- package/dist/local/source-policy/loader.js +209 -0
- package/dist/local/source-policy/loader.js.map +1 -0
- package/dist/local/source-policy/process.d.ts +7 -0
- package/dist/local/source-policy/process.d.ts.map +1 -0
- package/dist/local/source-policy/process.js +53 -0
- package/dist/local/source-policy/process.js.map +1 -0
- package/dist/local/source-policy/protocol.d.ts +27 -0
- package/dist/local/source-policy/protocol.d.ts.map +1 -0
- package/dist/local/source-policy/protocol.js +48 -0
- package/dist/local/source-policy/protocol.js.map +1 -0
- package/dist/local/source-policy/worker.d.ts +2 -0
- package/dist/local/source-policy/worker.d.ts.map +1 -0
- package/dist/local/source-policy/worker.js +100 -0
- package/dist/local/source-policy/worker.js.map +1 -0
- package/dist/local/state-directory.d.ts +17 -0
- package/dist/local/state-directory.d.ts.map +1 -0
- package/dist/local/state-directory.js +68 -0
- package/dist/local/state-directory.js.map +1 -0
- package/dist/local/store-database.d.ts +13 -0
- package/dist/local/store-database.d.ts.map +1 -0
- package/dist/local/store-database.js +187 -0
- package/dist/local/store-database.js.map +1 -0
- package/dist/local/store.d.ts +181 -0
- package/dist/local/store.d.ts.map +1 -0
- package/dist/local/store.js +585 -0
- package/dist/local/store.js.map +1 -0
- package/dist/local/sync.d.ts +47 -0
- package/dist/local/sync.d.ts.map +1 -0
- package/dist/local/sync.js +518 -0
- package/dist/local/sync.js.map +1 -0
- package/dist/local/task-context-inspection.d.ts +23 -0
- package/dist/local/task-context-inspection.d.ts.map +1 -0
- package/dist/local/task-context-inspection.js +165 -0
- package/dist/local/task-context-inspection.js.map +1 -0
- package/dist/local/task-context-observations.d.ts +9553 -0
- package/dist/local/task-context-observations.d.ts.map +1 -0
- package/dist/local/task-context-observations.js +232 -0
- package/dist/local/task-context-observations.js.map +1 -0
- package/dist/local/task-context-provider.d.ts +18 -0
- package/dist/local/task-context-provider.d.ts.map +1 -0
- package/dist/local/task-context-provider.js +231 -0
- package/dist/local/task-context-provider.js.map +1 -0
- package/dist/local/task-context-schema.d.ts +847 -0
- package/dist/local/task-context-schema.d.ts.map +1 -0
- package/dist/local/task-context-schema.js +305 -0
- package/dist/local/task-context-schema.js.map +1 -0
- package/dist/local/task-context-source.d.ts +16 -0
- package/dist/local/task-context-source.d.ts.map +1 -0
- package/dist/local/task-context-source.js +45 -0
- package/dist/local/task-context-source.js.map +1 -0
- package/dist/local/task-context.d.ts +14 -0
- package/dist/local/task-context.d.ts.map +1 -0
- package/dist/local/task-context.js +570 -0
- package/dist/local/task-context.js.map +1 -0
- package/dist/local/test-commands.d.ts +71 -0
- package/dist/local/test-commands.d.ts.map +1 -0
- package/dist/local/test-commands.js +292 -0
- package/dist/local/test-commands.js.map +1 -0
- package/dist/local/tree-save.d.ts +117 -0
- package/dist/local/tree-save.d.ts.map +1 -0
- package/dist/local/tree-save.js +615 -0
- package/dist/local/tree-save.js.map +1 -0
- package/dist/local/variants.d.ts +125 -0
- package/dist/local/variants.d.ts.map +1 -0
- package/dist/local/variants.js +267 -0
- package/dist/local/variants.js.map +1 -0
- package/dist/local/workspace-admission.d.ts +61 -0
- package/dist/local/workspace-admission.d.ts.map +1 -0
- package/dist/local/workspace-admission.js +112 -0
- package/dist/local/workspace-admission.js.map +1 -0
- package/dist/local/workspace-authority-guard.d.ts +18 -0
- package/dist/local/workspace-authority-guard.d.ts.map +1 -0
- package/dist/local/workspace-authority-guard.js +69 -0
- package/dist/local/workspace-authority-guard.js.map +1 -0
- package/dist/local/workspace-authority.d.ts +33 -0
- package/dist/local/workspace-authority.d.ts.map +1 -0
- package/dist/local/workspace-authority.js +33 -0
- package/dist/local/workspace-authority.js.map +1 -0
- package/dist/local/workspace-branch-runtime.d.ts +61 -0
- package/dist/local/workspace-branch-runtime.d.ts.map +1 -0
- package/dist/local/workspace-branch-runtime.js +216 -0
- package/dist/local/workspace-branch-runtime.js.map +1 -0
- package/dist/local/workspace-built-content.d.ts +137 -0
- package/dist/local/workspace-built-content.d.ts.map +1 -0
- package/dist/local/workspace-built-content.js +393 -0
- package/dist/local/workspace-built-content.js.map +1 -0
- package/dist/local/workspace-claim-status-read.d.ts +53 -0
- package/dist/local/workspace-claim-status-read.d.ts.map +1 -0
- package/dist/local/workspace-claim-status-read.js +118 -0
- package/dist/local/workspace-claim-status-read.js.map +1 -0
- package/dist/local/workspace-claim-status.d.ts +172 -0
- package/dist/local/workspace-claim-status.d.ts.map +1 -0
- package/dist/local/workspace-claim-status.js +721 -0
- package/dist/local/workspace-claim-status.js.map +1 -0
- package/dist/local/workspace-claim-views.d.ts +45 -0
- package/dist/local/workspace-claim-views.d.ts.map +1 -0
- package/dist/local/workspace-claim-views.js +45 -0
- package/dist/local/workspace-claim-views.js.map +1 -0
- package/dist/local/workspace-cli.d.ts +46 -0
- package/dist/local/workspace-cli.d.ts.map +1 -0
- package/dist/local/workspace-cli.js +1524 -0
- package/dist/local/workspace-cli.js.map +1 -0
- package/dist/local/workspace-commit-resolver.d.ts +19 -0
- package/dist/local/workspace-commit-resolver.d.ts.map +1 -0
- package/dist/local/workspace-commit-resolver.js +47 -0
- package/dist/local/workspace-commit-resolver.js.map +1 -0
- package/dist/local/workspace-decision-store.d.ts +184 -0
- package/dist/local/workspace-decision-store.d.ts.map +1 -0
- package/dist/local/workspace-decision-store.js +510 -0
- package/dist/local/workspace-decision-store.js.map +1 -0
- package/dist/local/workspace-environment-runtime.d.ts +107 -0
- package/dist/local/workspace-environment-runtime.d.ts.map +1 -0
- package/dist/local/workspace-environment-runtime.js +135 -0
- package/dist/local/workspace-environment-runtime.js.map +1 -0
- package/dist/local/workspace-evidence-drop.d.ts +21 -0
- package/dist/local/workspace-evidence-drop.d.ts.map +1 -0
- package/dist/local/workspace-evidence-drop.js +58 -0
- package/dist/local/workspace-evidence-drop.js.map +1 -0
- package/dist/local/workspace-evidence-sign-tool.d.ts +20 -0
- package/dist/local/workspace-evidence-sign-tool.d.ts.map +1 -0
- package/dist/local/workspace-evidence-sign-tool.js +85 -0
- package/dist/local/workspace-evidence-sign-tool.js.map +1 -0
- package/dist/local/workspace-evidence-status.d.ts +89 -0
- package/dist/local/workspace-evidence-status.d.ts.map +1 -0
- package/dist/local/workspace-evidence-status.js +141 -0
- package/dist/local/workspace-evidence-status.js.map +1 -0
- package/dist/local/workspace-evidence.d.ts +145 -0
- package/dist/local/workspace-evidence.d.ts.map +1 -0
- package/dist/local/workspace-evidence.js +347 -0
- package/dist/local/workspace-evidence.js.map +1 -0
- package/dist/local/workspace-graph-store.d.ts +32 -0
- package/dist/local/workspace-graph-store.d.ts.map +1 -0
- package/dist/local/workspace-graph-store.js +249 -0
- package/dist/local/workspace-graph-store.js.map +1 -0
- package/dist/local/workspace-handoff.d.ts +32 -0
- package/dist/local/workspace-handoff.d.ts.map +1 -0
- package/dist/local/workspace-handoff.js +144 -0
- package/dist/local/workspace-handoff.js.map +1 -0
- package/dist/local/workspace-history-journal.d.ts +70 -0
- package/dist/local/workspace-history-journal.d.ts.map +1 -0
- package/dist/local/workspace-history-journal.js +131 -0
- package/dist/local/workspace-history-journal.js.map +1 -0
- package/dist/local/workspace-history-store.d.ts +98 -0
- package/dist/local/workspace-history-store.d.ts.map +1 -0
- package/dist/local/workspace-history-store.js +632 -0
- package/dist/local/workspace-history-store.js.map +1 -0
- package/dist/local/workspace-history-types.d.ts +307 -0
- package/dist/local/workspace-history-types.d.ts.map +1 -0
- package/dist/local/workspace-history-types.js +2 -0
- package/dist/local/workspace-history-types.js.map +1 -0
- package/dist/local/workspace-integration-runtime.d.ts +48 -0
- package/dist/local/workspace-integration-runtime.d.ts.map +1 -0
- package/dist/local/workspace-integration-runtime.js +419 -0
- package/dist/local/workspace-integration-runtime.js.map +1 -0
- package/dist/local/workspace-lock.d.ts +7 -0
- package/dist/local/workspace-lock.d.ts.map +1 -0
- package/dist/local/workspace-lock.js +211 -0
- package/dist/local/workspace-lock.js.map +1 -0
- package/dist/local/workspace-merge.d.ts +77 -0
- package/dist/local/workspace-merge.d.ts.map +1 -0
- package/dist/local/workspace-merge.js +703 -0
- package/dist/local/workspace-merge.js.map +1 -0
- package/dist/local/workspace-mixed-history.d.ts +33 -0
- package/dist/local/workspace-mixed-history.d.ts.map +1 -0
- package/dist/local/workspace-mixed-history.js +107 -0
- package/dist/local/workspace-mixed-history.js.map +1 -0
- package/dist/local/workspace-overlap-allocation.d.ts +33 -0
- package/dist/local/workspace-overlap-allocation.d.ts.map +1 -0
- package/dist/local/workspace-overlap-allocation.js +69 -0
- package/dist/local/workspace-overlap-allocation.js.map +1 -0
- package/dist/local/workspace-overlap-impact.d.ts +46 -0
- package/dist/local/workspace-overlap-impact.d.ts.map +1 -0
- package/dist/local/workspace-overlap-impact.js +162 -0
- package/dist/local/workspace-overlap-impact.js.map +1 -0
- package/dist/local/workspace-overlap.d.ts +109 -0
- package/dist/local/workspace-overlap.d.ts.map +1 -0
- package/dist/local/workspace-overlap.js +327 -0
- package/dist/local/workspace-overlap.js.map +1 -0
- package/dist/local/workspace-paths.d.ts +4 -0
- package/dist/local/workspace-paths.d.ts.map +1 -0
- package/dist/local/workspace-paths.js +8 -0
- package/dist/local/workspace-paths.js.map +1 -0
- package/dist/local/workspace-pick-runtime.d.ts +70 -0
- package/dist/local/workspace-pick-runtime.d.ts.map +1 -0
- package/dist/local/workspace-pick-runtime.js +177 -0
- package/dist/local/workspace-pick-runtime.js.map +1 -0
- package/dist/local/workspace-pick-store.d.ts +33 -0
- package/dist/local/workspace-pick-store.d.ts.map +1 -0
- package/dist/local/workspace-pick-store.js +43 -0
- package/dist/local/workspace-pick-store.js.map +1 -0
- package/dist/local/workspace-pick.d.ts +73 -0
- package/dist/local/workspace-pick.d.ts.map +1 -0
- package/dist/local/workspace-pick.js +253 -0
- package/dist/local/workspace-pick.js.map +1 -0
- package/dist/local/workspace-portable-authoring.d.ts +43 -0
- package/dist/local/workspace-portable-authoring.d.ts.map +1 -0
- package/dist/local/workspace-portable-authoring.js +128 -0
- package/dist/local/workspace-portable-authoring.js.map +1 -0
- package/dist/local/workspace-prune.d.ts +63 -0
- package/dist/local/workspace-prune.d.ts.map +1 -0
- package/dist/local/workspace-prune.js +267 -0
- package/dist/local/workspace-prune.js.map +1 -0
- package/dist/local/workspace-remote-fetch.d.ts +82 -0
- package/dist/local/workspace-remote-fetch.d.ts.map +1 -0
- package/dist/local/workspace-remote-fetch.js +409 -0
- package/dist/local/workspace-remote-fetch.js.map +1 -0
- package/dist/local/workspace-remote-provider.d.ts +97 -0
- package/dist/local/workspace-remote-provider.d.ts.map +1 -0
- package/dist/local/workspace-remote-provider.js +400 -0
- package/dist/local/workspace-remote-provider.js.map +1 -0
- package/dist/local/workspace-remote-pull-request-journal.d.ts +49 -0
- package/dist/local/workspace-remote-pull-request-journal.d.ts.map +1 -0
- package/dist/local/workspace-remote-pull-request-journal.js +63 -0
- package/dist/local/workspace-remote-pull-request-journal.js.map +1 -0
- package/dist/local/workspace-remote-pull-request.d.ts +36 -0
- package/dist/local/workspace-remote-pull-request.d.ts.map +1 -0
- package/dist/local/workspace-remote-pull-request.js +158 -0
- package/dist/local/workspace-remote-pull-request.js.map +1 -0
- package/dist/local/workspace-remote-push.d.ts +88 -0
- package/dist/local/workspace-remote-push.d.ts.map +1 -0
- package/dist/local/workspace-remote-push.js +297 -0
- package/dist/local/workspace-remote-push.js.map +1 -0
- package/dist/local/workspace-remote-topic-journal.d.ts +56 -0
- package/dist/local/workspace-remote-topic-journal.d.ts.map +1 -0
- package/dist/local/workspace-remote-topic-journal.js +121 -0
- package/dist/local/workspace-remote-topic-journal.js.map +1 -0
- package/dist/local/workspace-remote-topic.d.ts +45 -0
- package/dist/local/workspace-remote-topic.d.ts.map +1 -0
- package/dist/local/workspace-remote-topic.js +204 -0
- package/dist/local/workspace-remote-topic.js.map +1 -0
- package/dist/local/workspace-remote-transfer.d.ts +76 -0
- package/dist/local/workspace-remote-transfer.d.ts.map +1 -0
- package/dist/local/workspace-remote-transfer.js +270 -0
- package/dist/local/workspace-remote-transfer.js.map +1 -0
- package/dist/local/workspace-resolution.d.ts +145 -0
- package/dist/local/workspace-resolution.d.ts.map +1 -0
- package/dist/local/workspace-resolution.js +479 -0
- package/dist/local/workspace-resolution.js.map +1 -0
- package/dist/local/workspace-resolver-provider.d.ts +72 -0
- package/dist/local/workspace-resolver-provider.d.ts.map +1 -0
- package/dist/local/workspace-resolver-provider.js +312 -0
- package/dist/local/workspace-resolver-provider.js.map +1 -0
- package/dist/local/workspace-runtime-handoff.d.ts +52 -0
- package/dist/local/workspace-runtime-handoff.d.ts.map +1 -0
- package/dist/local/workspace-runtime-handoff.js +237 -0
- package/dist/local/workspace-runtime-handoff.js.map +1 -0
- package/dist/local/workspace-runtime-lease.d.ts +26 -0
- package/dist/local/workspace-runtime-lease.d.ts.map +1 -0
- package/dist/local/workspace-runtime-lease.js +123 -0
- package/dist/local/workspace-runtime-lease.js.map +1 -0
- package/dist/local/workspace-runtime.d.ts +690 -0
- package/dist/local/workspace-runtime.d.ts.map +1 -0
- package/dist/local/workspace-runtime.js +2124 -0
- package/dist/local/workspace-runtime.js.map +1 -0
- package/dist/local/workspace-scope.d.ts +70 -0
- package/dist/local/workspace-scope.d.ts.map +1 -0
- package/dist/local/workspace-scope.js +206 -0
- package/dist/local/workspace-scope.js.map +1 -0
- package/dist/local/workspace-sources.d.ts +159 -0
- package/dist/local/workspace-sources.d.ts.map +1 -0
- package/dist/local/workspace-sources.js +570 -0
- package/dist/local/workspace-sources.js.map +1 -0
- package/dist/local/workspace-store-database.d.ts +5 -0
- package/dist/local/workspace-store-database.d.ts.map +1 -0
- package/dist/local/workspace-store-database.js +726 -0
- package/dist/local/workspace-store-database.js.map +1 -0
- package/dist/local/workspace-store.d.ts +261 -0
- package/dist/local/workspace-store.d.ts.map +1 -0
- package/dist/local/workspace-store.js +831 -0
- package/dist/local/workspace-store.js.map +1 -0
- package/dist/local/workspace-topology-runtime.d.ts +27 -0
- package/dist/local/workspace-topology-runtime.d.ts.map +1 -0
- package/dist/local/workspace-topology-runtime.js +396 -0
- package/dist/local/workspace-topology-runtime.js.map +1 -0
- package/dist/local/workspace-topology.d.ts +140 -0
- package/dist/local/workspace-topology.d.ts.map +1 -0
- package/dist/local/workspace-topology.js +359 -0
- package/dist/local/workspace-topology.js.map +1 -0
- package/dist/local/workspace-upstream-inspection.d.ts +60 -0
- package/dist/local/workspace-upstream-inspection.d.ts.map +1 -0
- package/dist/local/workspace-upstream-inspection.js +189 -0
- package/dist/local/workspace-upstream-inspection.js.map +1 -0
- package/dist/local/workspace-upstream-runtime.d.ts +91 -0
- package/dist/local/workspace-upstream-runtime.d.ts.map +1 -0
- package/dist/local/workspace-upstream-runtime.js +270 -0
- package/dist/local/workspace-upstream-runtime.js.map +1 -0
- package/dist/local/workspace-upstream-store.d.ts +51 -0
- package/dist/local/workspace-upstream-store.d.ts.map +1 -0
- package/dist/local/workspace-upstream-store.js +475 -0
- package/dist/local/workspace-upstream-store.js.map +1 -0
- package/dist/local/workspace-viewer-server.d.ts +136 -0
- package/dist/local/workspace-viewer-server.d.ts.map +1 -0
- package/dist/local/workspace-viewer-server.js +1097 -0
- package/dist/local/workspace-viewer-server.js.map +1 -0
- package/dist/local/workspace-viewer-snapshot.d.ts +49 -0
- package/dist/local/workspace-viewer-snapshot.d.ts.map +1 -0
- package/dist/local/workspace-viewer-snapshot.js +91 -0
- package/dist/local/workspace-viewer-snapshot.js.map +1 -0
- package/dist/local/worktree-projection.d.ts +76 -0
- package/dist/local/worktree-projection.d.ts.map +1 -0
- package/dist/local/worktree-projection.js +470 -0
- package/dist/local/worktree-projection.js.map +1 -0
- package/dist/mcp/client-identity.d.ts +8 -0
- package/dist/mcp/client-identity.d.ts.map +1 -0
- package/dist/mcp/client-identity.js +33 -0
- package/dist/mcp/client-identity.js.map +1 -0
- package/dist/mcp/graph-to-code.d.ts +53 -0
- package/dist/mcp/graph-to-code.d.ts.map +1 -0
- package/dist/mcp/graph-to-code.js +1624 -0
- package/dist/mcp/graph-to-code.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +3 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/stdio/graph-to-code.d.ts +3 -0
- package/dist/mcp/stdio/graph-to-code.d.ts.map +1 -0
- package/dist/mcp/stdio/graph-to-code.js +55 -0
- package/dist/mcp/stdio/graph-to-code.js.map +1 -0
- package/dist/mcp/stdio/worktree.d.ts +3 -0
- package/dist/mcp/stdio/worktree.d.ts.map +1 -0
- package/dist/mcp/stdio/worktree.js +67 -0
- package/dist/mcp/stdio/worktree.js.map +1 -0
- package/dist/mcp/worktree-claim-status.d.ts +162 -0
- package/dist/mcp/worktree-claim-status.d.ts.map +1 -0
- package/dist/mcp/worktree-claim-status.js +113 -0
- package/dist/mcp/worktree-claim-status.js.map +1 -0
- package/dist/mcp/worktree-dispatch.d.ts +13 -0
- package/dist/mcp/worktree-dispatch.d.ts.map +1 -0
- package/dist/mcp/worktree-dispatch.js +52 -0
- package/dist/mcp/worktree-dispatch.js.map +1 -0
- package/dist/mcp/worktree-errors.d.ts +15 -0
- package/dist/mcp/worktree-errors.d.ts.map +1 -0
- package/dist/mcp/worktree-errors.js +17 -0
- package/dist/mcp/worktree-errors.js.map +1 -0
- package/dist/mcp/worktree-health.d.ts +12 -0
- package/dist/mcp/worktree-health.d.ts.map +1 -0
- package/dist/mcp/worktree-health.js +32 -0
- package/dist/mcp/worktree-health.js.map +1 -0
- package/dist/mcp/worktree-results.d.ts +15 -0
- package/dist/mcp/worktree-results.d.ts.map +1 -0
- package/dist/mcp/worktree-results.js +12 -0
- package/dist/mcp/worktree-results.js.map +1 -0
- package/dist/mcp/worktree-task-context.d.ts +57 -0
- package/dist/mcp/worktree-task-context.d.ts.map +1 -0
- package/dist/mcp/worktree-task-context.js +45 -0
- package/dist/mcp/worktree-task-context.js.map +1 -0
- package/dist/mcp/worktree-tools.d.ts +2648 -0
- package/dist/mcp/worktree-tools.d.ts.map +1 -0
- package/dist/mcp/worktree-tools.js +192 -0
- package/dist/mcp/worktree-tools.js.map +1 -0
- package/dist/mcp/worktree.d.ts +33 -0
- package/dist/mcp/worktree.d.ts.map +1 -0
- package/dist/mcp/worktree.js +551 -0
- package/dist/mcp/worktree.js.map +1 -0
- package/dist/own-package.d.ts +13 -0
- package/dist/own-package.d.ts.map +1 -0
- package/dist/own-package.js +32 -0
- package/dist/own-package.js.map +1 -0
- package/dist/packages-browse.d.ts +107 -0
- package/dist/packages-browse.d.ts.map +1 -0
- package/dist/packages-browse.js +646 -0
- package/dist/packages-browse.js.map +1 -0
- package/dist/packages-cli.d.ts +8 -0
- package/dist/packages-cli.d.ts.map +1 -0
- package/dist/packages-cli.js +184 -0
- package/dist/packages-cli.js.map +1 -0
- package/dist/packages-uses.d.ts +46 -0
- package/dist/packages-uses.d.ts.map +1 -0
- package/dist/packages-uses.js +737 -0
- package/dist/packages-uses.js.map +1 -0
- package/dist/portable.d.ts +7 -0
- package/dist/portable.d.ts.map +1 -0
- package/dist/portable.js +14 -0
- package/dist/portable.js.map +1 -0
- package/dist/quiet-warnings.d.ts +3 -0
- package/dist/quiet-warnings.d.ts.map +1 -0
- package/dist/quiet-warnings.js +21 -0
- package/dist/quiet-warnings.js.map +1 -0
- package/dist/view-seam.d.ts +62 -0
- package/dist/view-seam.d.ts.map +1 -0
- package/dist/view-seam.js +70 -0
- package/dist/view-seam.js.map +1 -0
- package/generated/graph-packages/index.json +5 -0
- package/graph-packages.lock.json +4 -0
- package/package.json +81 -0
- package/viewer/assets/index-BZKGDARF.css +1 -0
- package/viewer/assets/index-DWu0CbZZ.js +272 -0
- package/viewer/index.html +13 -0
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
/**
|
|
6
|
+
* The graph packages lock and the bundled snapshot (docs/specs/graph-packages.md, Distribution).
|
|
7
|
+
*
|
|
8
|
+
* `packages/sdlc/graph-packages.lock.json` pins each bundled public package by id, version and
|
|
9
|
+
* content hash. The build (scripts/graph-packages-snapshot.mjs) fetches each pinned version
|
|
10
|
+
* document from the public route, or takes it from a content-addressed download cache, refuses
|
|
11
|
+
* bytes whose sha256 or ETag differ from the lock, and writes the snapshot to
|
|
12
|
+
* `generated/graph-packages/`: one file per version, byte for byte as served, and an index. The
|
|
13
|
+
* snapshot is never checked in. `sdlc packages lock add|update|remove` edits the lock (packages-cli.ts).
|
|
14
|
+
*/
|
|
15
|
+
export const GRAPH_PACKAGES_LOCK_FILE = 'graph-packages.lock.json';
|
|
16
|
+
export const GRAPH_PACKAGES_LOCK_VERSION = 1;
|
|
17
|
+
export const GRAPH_PACKAGES_SNAPSHOT_FORMAT = 'sdlc.graph-package-snapshot/1';
|
|
18
|
+
export const GRAPH_PACKAGES_SNAPSHOT_INDEX = 'index.json';
|
|
19
|
+
// The production app origin: the bare domain answers with a redirect, which fetches here refuse.
|
|
20
|
+
export const DEFAULT_GRAPH_PACKAGES_ORIGIN = 'https://www.softwaredlc.com';
|
|
21
|
+
/** The header Vercel reads to let a request past its deployment protection (staging). */
|
|
22
|
+
export const VERCEL_PROTECTION_BYPASS_HEADER = 'x-vercel-protection-bypass';
|
|
23
|
+
const GENERATED_NOTE = 'Generated by the sdlc build from graph-packages.lock.json. Do not edit: change the lock with sdlc packages lock.';
|
|
24
|
+
const FETCH_TIMEOUT_MS = 30_000;
|
|
25
|
+
export class GraphPackagesLockError extends Error {
|
|
26
|
+
constructor(message) {
|
|
27
|
+
super(message);
|
|
28
|
+
this.name = 'GraphPackagesLockError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
32
|
+
const CONTENT_HASH = /^sha256:[0-9a-f]{64}$/;
|
|
33
|
+
const SEMVER = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
|
34
|
+
const ENTRY_KEYS = ['id', 'coordinate', 'version', 'content_hash'];
|
|
35
|
+
export const isContentHash = (value) => typeof value === 'string' && CONTENT_HASH.test(value);
|
|
36
|
+
export const isSemver = (value) => typeof value === 'string' && SEMVER.test(value);
|
|
37
|
+
export function contentHashOfBytes(bytes) {
|
|
38
|
+
return `sha256:${createHash('sha256').update(bytes).digest('hex')}`;
|
|
39
|
+
}
|
|
40
|
+
export function emptyGraphPackagesLock() {
|
|
41
|
+
return { lock_version: GRAPH_PACKAGES_LOCK_VERSION, packages: [] };
|
|
42
|
+
}
|
|
43
|
+
/** Parses and checks a lock's text; `where` names it in errors. */
|
|
44
|
+
export function parseGraphPackagesLock(text, where = GRAPH_PACKAGES_LOCK_FILE) {
|
|
45
|
+
let value;
|
|
46
|
+
try {
|
|
47
|
+
value = JSON.parse(text);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw new GraphPackagesLockError(`${where} is not JSON: ${error.message}`);
|
|
51
|
+
}
|
|
52
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
53
|
+
throw new GraphPackagesLockError(`${where} must be a JSON object`);
|
|
54
|
+
}
|
|
55
|
+
const record = value;
|
|
56
|
+
const extra = Object.keys(record).filter((key) => key !== 'lock_version' && key !== 'packages');
|
|
57
|
+
if (extra.length)
|
|
58
|
+
throw new GraphPackagesLockError(`${where} has unknown keys: ${extra.join(', ')}`);
|
|
59
|
+
if (record.lock_version !== GRAPH_PACKAGES_LOCK_VERSION) {
|
|
60
|
+
throw new GraphPackagesLockError(`${where} has lock_version ${JSON.stringify(record.lock_version)}; this sdlc reads lock_version ${GRAPH_PACKAGES_LOCK_VERSION}`);
|
|
61
|
+
}
|
|
62
|
+
if (!Array.isArray(record.packages))
|
|
63
|
+
throw new GraphPackagesLockError(`${where}: packages must be a list`);
|
|
64
|
+
const seen = new Set();
|
|
65
|
+
const packages = record.packages.map((raw, index) => {
|
|
66
|
+
const at = `${where}: packages[${index}]`;
|
|
67
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
68
|
+
throw new GraphPackagesLockError(`${at} must be an object`);
|
|
69
|
+
const entry = raw;
|
|
70
|
+
const unknown = Object.keys(entry).filter((key) => !ENTRY_KEYS.includes(key));
|
|
71
|
+
if (unknown.length)
|
|
72
|
+
throw new GraphPackagesLockError(`${at} has unknown keys: ${unknown.join(', ')}`);
|
|
73
|
+
if (typeof entry.id !== 'string' || !UUID.test(entry.id))
|
|
74
|
+
throw new GraphPackagesLockError(`${at}.id must be a lowercase UUID`);
|
|
75
|
+
if (typeof entry.coordinate !== 'string' || !entry.coordinate) {
|
|
76
|
+
throw new GraphPackagesLockError(`${at}.coordinate must be a non-empty string`);
|
|
77
|
+
}
|
|
78
|
+
if (!isSemver(entry.version))
|
|
79
|
+
throw new GraphPackagesLockError(`${at}.version must be a SemVer version`);
|
|
80
|
+
if (!isContentHash(entry.content_hash))
|
|
81
|
+
throw new GraphPackagesLockError(`${at}.content_hash must be sha256:<64 hex>`);
|
|
82
|
+
for (const key of [`id:${entry.id}`, `coordinate:${entry.coordinate}`]) {
|
|
83
|
+
if (seen.has(key))
|
|
84
|
+
throw new GraphPackagesLockError(`${at} pins a package the lock already pins (${key})`);
|
|
85
|
+
seen.add(key);
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
id: entry.id,
|
|
89
|
+
coordinate: entry.coordinate,
|
|
90
|
+
version: entry.version,
|
|
91
|
+
content_hash: entry.content_hash
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
return { lock_version: GRAPH_PACKAGES_LOCK_VERSION, packages };
|
|
95
|
+
}
|
|
96
|
+
/** The lock's text: entries sorted by coordinate, keys in a fixed order, so a change is a small diff. */
|
|
97
|
+
export function serializeGraphPackagesLock(lock) {
|
|
98
|
+
const packages = [...lock.packages]
|
|
99
|
+
.sort((a, b) => a.coordinate < b.coordinate ? -1 : a.coordinate > b.coordinate ? 1 : 0)
|
|
100
|
+
.map(({ id, coordinate, version, content_hash }) => ({
|
|
101
|
+
id,
|
|
102
|
+
coordinate,
|
|
103
|
+
version,
|
|
104
|
+
content_hash
|
|
105
|
+
}));
|
|
106
|
+
return `${JSON.stringify({ lock_version: GRAPH_PACKAGES_LOCK_VERSION, packages }, null, 2)}\n`;
|
|
107
|
+
}
|
|
108
|
+
export function readGraphPackagesLock(file) {
|
|
109
|
+
return parseGraphPackagesLock(readFileSync(file, 'utf8'), file);
|
|
110
|
+
}
|
|
111
|
+
/** Writes a lock, refusing (and writing nothing) when the result would not parse. */
|
|
112
|
+
export function writeGraphPackagesLock(file, lock) {
|
|
113
|
+
const text = serializeGraphPackagesLock(lock);
|
|
114
|
+
parseGraphPackagesLock(text, file);
|
|
115
|
+
writeAtomically(file, text);
|
|
116
|
+
}
|
|
117
|
+
/** The public routes (docs/specs/graph-packages.md, Serving). */
|
|
118
|
+
export const publicPackageUrls = {
|
|
119
|
+
version: (origin, id, version) => `${trimOrigin(origin)}/api/public/packages/${encodeURIComponent(id)}/${encodeURIComponent(version)}`,
|
|
120
|
+
index: (origin, id) => `${trimOrigin(origin)}/api/public/packages/${encodeURIComponent(id)}`,
|
|
121
|
+
coordinate: (origin, coordinate) => `${trimOrigin(origin)}/api/public/packages?coordinate=${encodeURIComponent(coordinate)}`
|
|
122
|
+
};
|
|
123
|
+
function trimOrigin(origin) {
|
|
124
|
+
const url = new URL(origin);
|
|
125
|
+
if (url.protocol !== 'https:' &&
|
|
126
|
+
!(url.protocol === 'http:' && isLoopback(url.hostname))) {
|
|
127
|
+
throw new GraphPackagesLockError(`the package origin must be https (or http on this machine): ${origin}`);
|
|
128
|
+
}
|
|
129
|
+
return url.origin;
|
|
130
|
+
}
|
|
131
|
+
function isLoopback(host) {
|
|
132
|
+
return host === 'localhost' || host === '127.0.0.1' || host === '[::1]';
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* One GET of a public route. A redirect is refused, so that no redirect chooses the host: it
|
|
136
|
+
* fails naming where it pointed. A network failure or timeout fails naming the URL.
|
|
137
|
+
*/
|
|
138
|
+
export async function fetchPublicPackage(url, options) {
|
|
139
|
+
const headers = { accept: 'application/json' };
|
|
140
|
+
if (options.bypass)
|
|
141
|
+
headers[VERCEL_PROTECTION_BYPASS_HEADER] = options.bypass;
|
|
142
|
+
const unreachable = (error) => {
|
|
143
|
+
const cause = error.cause?.message;
|
|
144
|
+
return new GraphPackagesFetchError(`could not fetch ${url}: ${error.message}${cause ? ` (${cause})` : ''}`);
|
|
145
|
+
};
|
|
146
|
+
let response;
|
|
147
|
+
try {
|
|
148
|
+
response = await (options.fetchImpl ?? fetch)(url, {
|
|
149
|
+
headers,
|
|
150
|
+
redirect: 'manual',
|
|
151
|
+
signal: AbortSignal.timeout(options.timeoutMs ?? FETCH_TIMEOUT_MS)
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
throw unreachable(error);
|
|
156
|
+
}
|
|
157
|
+
if (response.status >= 300 && response.status < 400) {
|
|
158
|
+
const location = response.headers.get('location');
|
|
159
|
+
throw new GraphPackagesLockError(`${url} redirects (${response.status})${location ? ` to ${location}` : ''}; package fetches refuse redirects, so give the origin it redirects to with --origin or SDLC_GRAPH_PACKAGES_ORIGIN (the default is ${DEFAULT_GRAPH_PACKAGES_ORIGIN})`);
|
|
160
|
+
}
|
|
161
|
+
let bytes;
|
|
162
|
+
try {
|
|
163
|
+
// The timeout covers the body too, so a stall or a reset here fails like one before the headers.
|
|
164
|
+
bytes = new Uint8Array(await response.arrayBuffer());
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
throw unreachable(error);
|
|
168
|
+
}
|
|
169
|
+
return { status: response.status, etag: response.headers.get('etag'), bytes };
|
|
170
|
+
}
|
|
171
|
+
/** A fetch that never got a whole response: no network, a timeout, or a dropped connection. */
|
|
172
|
+
export class GraphPackagesFetchError extends GraphPackagesLockError {
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* A version route that answered 404. Only the build knows the version is a standing pin, so it
|
|
176
|
+
* adds what that means (goneHint); a lock edit reports the 404 as it is.
|
|
177
|
+
*/
|
|
178
|
+
export class GraphPackagesNotFoundError extends GraphPackagesLockError {
|
|
179
|
+
}
|
|
180
|
+
/** What a refused status means for the person running the command, when it is more than the status. */
|
|
181
|
+
export function statusHint(status) {
|
|
182
|
+
return status === 401 || status === 403
|
|
183
|
+
? '; a protected (staging) origin needs its bypass secret in SDLC_GRAPH_PACKAGES_BYPASS'
|
|
184
|
+
: '';
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* What a 404 for a pinned package means: taken down or no longer public, so the pin goes, unless
|
|
188
|
+
* the origin is not the one the lock was pinned from (package ids differ per origin).
|
|
189
|
+
*/
|
|
190
|
+
export function goneHint(coordinate, origin) {
|
|
191
|
+
const other = origin && trimOrigin(origin) !== DEFAULT_GRAPH_PACKAGES_ORIGIN
|
|
192
|
+
? `, or ${trimOrigin(origin)} is not the origin the lock was pinned from (package ids differ per origin)`
|
|
193
|
+
: '';
|
|
194
|
+
return `: the package was taken down or is no longer public${other}. To stop bundling it, run sdlc packages lock remove ${coordinate}`;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Downloads one locked version and checks it: a 200, an ETag of exactly `"<content_hash>"`, bytes
|
|
198
|
+
* whose sha256 is the content hash, and a document naming the locked package and version.
|
|
199
|
+
*/
|
|
200
|
+
export async function downloadLockedVersion(entry, options) {
|
|
201
|
+
const url = publicPackageUrls.version(options.origin ?? DEFAULT_GRAPH_PACKAGES_ORIGIN, entry.id, entry.version);
|
|
202
|
+
const fetched = await fetchPublicPackage(url, options);
|
|
203
|
+
const label = `${entry.coordinate}@${entry.version}`;
|
|
204
|
+
if (fetched.status !== 200)
|
|
205
|
+
throw fetched.status === 404
|
|
206
|
+
? new GraphPackagesNotFoundError(`${label}: ${url} answered 404`)
|
|
207
|
+
: new GraphPackagesLockError(`${label}: ${url} answered ${fetched.status}${statusHint(fetched.status)}`);
|
|
208
|
+
if (!etagNames(fetched.etag, entry.content_hash)) {
|
|
209
|
+
throw new GraphPackagesLockError(`${label}: the ETag ${fetched.etag ?? '(none)'} is not the expected content hash "${entry.content_hash}"`);
|
|
210
|
+
}
|
|
211
|
+
const actual = contentHashOfBytes(fetched.bytes);
|
|
212
|
+
if (actual !== entry.content_hash) {
|
|
213
|
+
throw new GraphPackagesLockError(`${label}: the served bytes hash to ${actual}, not the expected ${entry.content_hash}`);
|
|
214
|
+
}
|
|
215
|
+
checkDocumentIdentity(entry, fetched.bytes, url);
|
|
216
|
+
return fetched.bytes;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Whether an ETag carries exactly this hash. A CDN may mark it weak (W/) when it compresses a
|
|
220
|
+
* response; the value still names the hash, and the bytes are checked against the hash anyway.
|
|
221
|
+
*/
|
|
222
|
+
export function etagNames(etag, contentHash) {
|
|
223
|
+
return etag === `"${contentHash}"` || etag === `W/"${contentHash}"`;
|
|
224
|
+
}
|
|
225
|
+
function checkDocumentIdentity(entry, bytes, where) {
|
|
226
|
+
let document;
|
|
227
|
+
try {
|
|
228
|
+
document = JSON.parse(Buffer.from(bytes).toString('utf8'));
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
throw new GraphPackagesLockError(`${entry.coordinate}@${entry.version}: ${where} is not a JSON version document`);
|
|
232
|
+
}
|
|
233
|
+
if (document?.package?.id !== entry.id ||
|
|
234
|
+
document?.version !== entry.version) {
|
|
235
|
+
throw new GraphPackagesLockError(`${entry.coordinate}@${entry.version}: ${where} names another package or version than the lock`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/** The shared content-addressed download cache: SDLC_GRAPH_PACKAGES_CACHE, else the user's cache folder. */
|
|
239
|
+
export function defaultGraphPackagesCacheDir(env = process.env) {
|
|
240
|
+
if (env.SDLC_GRAPH_PACKAGES_CACHE)
|
|
241
|
+
return path.resolve(env.SDLC_GRAPH_PACKAGES_CACHE);
|
|
242
|
+
const base = env.XDG_CACHE_HOME
|
|
243
|
+
? path.resolve(env.XDG_CACHE_HOME)
|
|
244
|
+
: path.join(homedir(), '.cache');
|
|
245
|
+
return path.join(base, 'software-dlc', 'graph-packages');
|
|
246
|
+
}
|
|
247
|
+
const cacheFile = (cacheDir, contentHash) => path.join(cacheDir, `${contentHash.slice('sha256:'.length)}.json`);
|
|
248
|
+
/** Where `sdlc packages fetch` keeps the last public index it read of a package. */
|
|
249
|
+
export const GRAPH_PACKAGES_CACHE_INDEXES = 'indexes';
|
|
250
|
+
const cachedIndexFile = (cacheDir, id) => path.join(cacheDir, GRAPH_PACKAGES_CACHE_INDEXES, `${id}.json`);
|
|
251
|
+
/** Keeps a package's public index in the cache, for its latest version and withdrawals offline. */
|
|
252
|
+
export function cacheGraphPackageIndex(id, bytes, cacheDir = defaultGraphPackagesCacheDir()) {
|
|
253
|
+
if (!UUID.test(id))
|
|
254
|
+
throw new GraphPackagesLockError(`refusing to cache an index for ${id}, which is no package id`);
|
|
255
|
+
writeAtomically(cachedIndexFile(cacheDir, id), bytes);
|
|
256
|
+
}
|
|
257
|
+
/** The cached index of a package, or null when none was fetched. */
|
|
258
|
+
export function readCachedGraphPackageIndex(id, cacheDir = defaultGraphPackagesCacheDir()) {
|
|
259
|
+
const file = cachedIndexFile(cacheDir, id);
|
|
260
|
+
return existsSync(file) ? readFileSync(file) : null;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Every version document in the download cache, each with the hash its file name gives. A file
|
|
264
|
+
* whose bytes hash otherwise was changed after download: it comes back as `tampered`, for the
|
|
265
|
+
* caller to report, never as a document.
|
|
266
|
+
*/
|
|
267
|
+
export function listCachedGraphPackageVersions(cacheDir = defaultGraphPackagesCacheDir()) {
|
|
268
|
+
if (!existsSync(cacheDir))
|
|
269
|
+
return [];
|
|
270
|
+
return readdirSync(cacheDir)
|
|
271
|
+
.filter((name) => /^[0-9a-f]{64}\.json$/.test(name))
|
|
272
|
+
.sort()
|
|
273
|
+
.map((name) => {
|
|
274
|
+
const file = path.join(cacheDir, name);
|
|
275
|
+
const bytes = readFileSync(file);
|
|
276
|
+
const expected = `sha256:${name.slice(0, 64)}`;
|
|
277
|
+
const actual = contentHashOfBytes(bytes);
|
|
278
|
+
return actual === expected
|
|
279
|
+
? { file, content_hash: expected, bytes }
|
|
280
|
+
: {
|
|
281
|
+
file,
|
|
282
|
+
tampered: `${file} hashes to ${actual}; it was changed after download. Delete it to download it again.`
|
|
283
|
+
};
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
/** The public index of the package with this coordinate (the coordinate lookup, then the index). */
|
|
287
|
+
export async function fetchPackageIndexByCoordinate(coordinate, options) {
|
|
288
|
+
const origin = options.origin ?? DEFAULT_GRAPH_PACKAGES_ORIGIN;
|
|
289
|
+
const found = await fetchPublicPackage(publicPackageUrls.coordinate(origin, coordinate), options);
|
|
290
|
+
if (found.status === 404)
|
|
291
|
+
throw new GraphPackagesLockError(`no public package has the coordinate ${coordinate}`);
|
|
292
|
+
const { id } = readFetchedJson(found, `the coordinate lookup for ${coordinate}`);
|
|
293
|
+
if (typeof id !== 'string')
|
|
294
|
+
throw new GraphPackagesLockError(`the coordinate lookup for ${coordinate} gave no id`);
|
|
295
|
+
const fetched = await fetchPackageIndexById(id, options);
|
|
296
|
+
if (fetched.index.package.coordinate !== coordinate) {
|
|
297
|
+
throw new GraphPackagesLockError(`the index of ${coordinate} does not describe that package`);
|
|
298
|
+
}
|
|
299
|
+
return fetched;
|
|
300
|
+
}
|
|
301
|
+
/** The public index of the package with this id; a 404 means it was taken down or is no longer public. */
|
|
302
|
+
export async function fetchPackageIndexById(id, options) {
|
|
303
|
+
const origin = options.origin ?? DEFAULT_GRAPH_PACKAGES_ORIGIN;
|
|
304
|
+
const fetched = await fetchPublicPackage(publicPackageUrls.index(origin, id), options);
|
|
305
|
+
if (fetched.status === 404)
|
|
306
|
+
throw new GraphPackagesLockError(`no public package has the id ${id}: it was taken down or is no longer public`);
|
|
307
|
+
const index = readFetchedJson(fetched, `the index of ${id}`);
|
|
308
|
+
if (index?.package?.id !== id ||
|
|
309
|
+
typeof index.package.coordinate !== 'string' ||
|
|
310
|
+
!index.package.coordinate ||
|
|
311
|
+
!Array.isArray(index.versions)) {
|
|
312
|
+
throw new GraphPackagesLockError(`the index of ${id} does not describe that package`);
|
|
313
|
+
}
|
|
314
|
+
// The index ETag is the hash of its bytes: a check that what arrived is what was sent.
|
|
315
|
+
if (fetched.etag &&
|
|
316
|
+
!etagNames(fetched.etag, contentHashOfBytes(fetched.bytes))) {
|
|
317
|
+
throw new GraphPackagesLockError(`the index of ${id} does not match its ETag`);
|
|
318
|
+
}
|
|
319
|
+
return { index, bytes: fetched.bytes };
|
|
320
|
+
}
|
|
321
|
+
function readFetchedJson(fetched, what) {
|
|
322
|
+
if (fetched.status !== 200)
|
|
323
|
+
throw new GraphPackagesLockError(`${what} answered ${fetched.status}${statusHint(fetched.status)}`);
|
|
324
|
+
try {
|
|
325
|
+
return JSON.parse(Buffer.from(fetched.bytes).toString('utf8'));
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
throw new GraphPackagesLockError(`${what} is not JSON`);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/** Keeps a downloaded, checked version in the download cache, so the next build needs no network. */
|
|
332
|
+
export function cacheGraphPackageVersion(entry, bytes, cacheDir = defaultGraphPackagesCacheDir()) {
|
|
333
|
+
if (contentHashOfBytes(bytes) !== entry.content_hash)
|
|
334
|
+
throw new GraphPackagesLockError(`${entry.coordinate}@${entry.version}: refusing to cache bytes that do not hash to ${entry.content_hash}`);
|
|
335
|
+
writeAtomically(cacheFile(cacheDir, entry.content_hash), bytes);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Writes the snapshot of every locked version into `outDir` and returns what it wrote, with
|
|
339
|
+
* warnings for withdrawn pins. Throws GraphPackagesLockError, writing nothing, when a version
|
|
340
|
+
* cannot be had with the locked hash: a tampered cache entry, a mismatched download, (offline) a
|
|
341
|
+
* version missing from the cache, or (online) a package the public index no longer serves.
|
|
342
|
+
*/
|
|
343
|
+
export async function buildGraphPackagesSnapshot(options) {
|
|
344
|
+
const cacheDir = options.cacheDir ?? defaultGraphPackagesCacheDir();
|
|
345
|
+
const written = [];
|
|
346
|
+
const documents = [];
|
|
347
|
+
for (const entry of options.lock.packages) {
|
|
348
|
+
const cached = cacheFile(cacheDir, entry.content_hash);
|
|
349
|
+
let bytes;
|
|
350
|
+
let source;
|
|
351
|
+
if (existsSync(cached)) {
|
|
352
|
+
bytes = readFileSync(cached);
|
|
353
|
+
const actual = contentHashOfBytes(bytes);
|
|
354
|
+
if (actual !== entry.content_hash) {
|
|
355
|
+
throw new GraphPackagesLockError(`${entry.coordinate}@${entry.version}: the cached copy ${cached} hashes to ${actual}, not the locked ${entry.content_hash}; it was changed after download. Delete it to download it again.`);
|
|
356
|
+
}
|
|
357
|
+
checkDocumentIdentity(entry, bytes, cached);
|
|
358
|
+
source = 'cache';
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
if (options.offline) {
|
|
362
|
+
throw new GraphPackagesLockError(`${entry.coordinate}@${entry.version} is not in the download cache (${cacheDir}) and the build is offline; build once with the network (without --offline or SDLC_GRAPH_PACKAGES_OFFLINE) to download it`);
|
|
363
|
+
}
|
|
364
|
+
try {
|
|
365
|
+
bytes = await downloadLockedVersion(entry, options);
|
|
366
|
+
}
|
|
367
|
+
catch (error) {
|
|
368
|
+
if (error instanceof GraphPackagesFetchError)
|
|
369
|
+
throw new GraphPackagesFetchError(`${error.message}. With no network, build from a warm download cache with --offline`);
|
|
370
|
+
if (error instanceof GraphPackagesNotFoundError)
|
|
371
|
+
throw new GraphPackagesLockError(`${error.message}${goneHint(entry.coordinate, options.origin)}`);
|
|
372
|
+
throw error;
|
|
373
|
+
}
|
|
374
|
+
cacheGraphPackageVersion(entry, bytes, cacheDir);
|
|
375
|
+
source = 'download';
|
|
376
|
+
}
|
|
377
|
+
documents.push(bytes);
|
|
378
|
+
written.push({
|
|
379
|
+
...entry,
|
|
380
|
+
file: `${entry.id}/${entry.version}.json`,
|
|
381
|
+
source
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
// Checked before anything is written: a package the public index no longer serves fails here.
|
|
385
|
+
const warnings = options.offline
|
|
386
|
+
? options.lock.packages.length
|
|
387
|
+
? ['offline: did not check whether a locked version was withdrawn']
|
|
388
|
+
: []
|
|
389
|
+
: await withdrawalWarnings(options.lock, options);
|
|
390
|
+
// Staged beside the folder that holds the snapshot (generated.stage-<pid>/, not inside
|
|
391
|
+
// generated/), so a build killed midway leaves nothing in what the package ships.
|
|
392
|
+
const stagingRoot = `${path.dirname(options.outDir)}.stage-${process.pid}`;
|
|
393
|
+
const staging = path.join(stagingRoot, path.basename(options.outDir));
|
|
394
|
+
rmSync(stagingRoot, { recursive: true, force: true });
|
|
395
|
+
try {
|
|
396
|
+
mkdirSync(staging, { recursive: true });
|
|
397
|
+
written.forEach((entry, index) => {
|
|
398
|
+
mkdirSync(path.join(staging, entry.id), { recursive: true });
|
|
399
|
+
writeFileSync(path.join(staging, entry.file), documents[index]);
|
|
400
|
+
});
|
|
401
|
+
writeFileSync(path.join(staging, GRAPH_PACKAGES_SNAPSHOT_INDEX), snapshotIndexText(options.lock));
|
|
402
|
+
mkdirSync(path.dirname(options.outDir), { recursive: true });
|
|
403
|
+
rmSync(options.outDir, { recursive: true, force: true });
|
|
404
|
+
renameSync(staging, options.outDir);
|
|
405
|
+
}
|
|
406
|
+
finally {
|
|
407
|
+
rmSync(stagingRoot, { recursive: true, force: true });
|
|
408
|
+
}
|
|
409
|
+
return { outDir: options.outDir, packages: written, warnings };
|
|
410
|
+
}
|
|
411
|
+
function snapshotIndexText(lock) {
|
|
412
|
+
const packages = parseGraphPackagesLock(serializeGraphPackagesLock(lock)).packages.map((entry) => ({
|
|
413
|
+
...entry,
|
|
414
|
+
file: `${entry.id}/${entry.version}.json`
|
|
415
|
+
}));
|
|
416
|
+
return `${JSON.stringify({ format: GRAPH_PACKAGES_SNAPSHOT_FORMAT, generated: GENERATED_NOTE, packages }, null, 2)}\n`;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* A warning for each locked version the public index marks withdrawn, or whose index could not be
|
|
420
|
+
* read. A package the index answers 404 for was taken down or is no longer public, which breaks
|
|
421
|
+
* the lock on purpose (docs/specs/graph-packages.md, Withdrawal): that throws.
|
|
422
|
+
*/
|
|
423
|
+
export async function withdrawalWarnings(lock, options) {
|
|
424
|
+
const warnings = [];
|
|
425
|
+
for (const entry of lock.packages) {
|
|
426
|
+
const label = `${entry.coordinate}@${entry.version}`;
|
|
427
|
+
const url = publicPackageUrls.index(options.origin ?? DEFAULT_GRAPH_PACKAGES_ORIGIN, entry.id);
|
|
428
|
+
let fetched;
|
|
429
|
+
try {
|
|
430
|
+
fetched = await fetchPublicPackage(url, options);
|
|
431
|
+
}
|
|
432
|
+
catch (error) {
|
|
433
|
+
warnings.push(`${label}: could not check withdrawal (${error.message})`);
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
if (fetched.status === 404) {
|
|
437
|
+
throw new GraphPackagesLockError(`${label}: the build will not ship it, ${url} answered 404${goneHint(entry.coordinate, options.origin)}`);
|
|
438
|
+
}
|
|
439
|
+
try {
|
|
440
|
+
if (fetched.status !== 200) {
|
|
441
|
+
warnings.push(`${label}: could not check withdrawal, the index answered ${fetched.status}${statusHint(fetched.status)}`);
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
const index = JSON.parse(Buffer.from(fetched.bytes).toString('utf8'));
|
|
445
|
+
const listed = index.versions?.find((version) => version.version === entry.version);
|
|
446
|
+
if (listed?.withdrawn) {
|
|
447
|
+
warnings.push(`${label} is withdrawn${listed.withdrawn_reason ? `: ${listed.withdrawn_reason}` : ''}; update the lock with sdlc packages lock update ${entry.coordinate}`);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
catch (error) {
|
|
451
|
+
warnings.push(`${label}: could not check withdrawal (${error.message})`);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return warnings;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* The problems of a snapshot folder against a lock: a missing or different index, a missing
|
|
458
|
+
* version file or one whose hash differs, and any file the lock does not account for. Empty when
|
|
459
|
+
* the snapshot is exactly the lock's.
|
|
460
|
+
*/
|
|
461
|
+
export function verifyGraphPackagesSnapshot(dir, lock) {
|
|
462
|
+
const problems = [];
|
|
463
|
+
const indexPath = path.join(dir, GRAPH_PACKAGES_SNAPSHOT_INDEX);
|
|
464
|
+
if (!existsSync(indexPath))
|
|
465
|
+
return [`${indexPath} is missing: the snapshot was not built`];
|
|
466
|
+
const expected = snapshotIndexText(lock);
|
|
467
|
+
if (readFileSync(indexPath, 'utf8') !== expected)
|
|
468
|
+
problems.push(`${indexPath} does not list exactly the lock's packages`);
|
|
469
|
+
const files = new Set([GRAPH_PACKAGES_SNAPSHOT_INDEX]);
|
|
470
|
+
for (const entry of lock.packages) {
|
|
471
|
+
const rel = `${entry.id}/${entry.version}.json`;
|
|
472
|
+
files.add(rel);
|
|
473
|
+
const file = path.join(dir, rel);
|
|
474
|
+
if (!existsSync(file)) {
|
|
475
|
+
problems.push(`${entry.coordinate}@${entry.version}: ${file} is missing`);
|
|
476
|
+
continue;
|
|
477
|
+
}
|
|
478
|
+
const actual = contentHashOfBytes(readFileSync(file));
|
|
479
|
+
if (actual !== entry.content_hash) {
|
|
480
|
+
problems.push(`${entry.coordinate}@${entry.version}: ${file} hashes to ${actual}, not the locked ${entry.content_hash}`);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
for (const rel of listFiles(dir)) {
|
|
484
|
+
if (!files.has(rel))
|
|
485
|
+
problems.push(`${path.join(dir, rel)} is not in the lock`);
|
|
486
|
+
}
|
|
487
|
+
return problems;
|
|
488
|
+
}
|
|
489
|
+
function listFiles(dir, prefix = '') {
|
|
490
|
+
return readdirSync(path.join(dir, prefix)).flatMap((name) => {
|
|
491
|
+
const rel = prefix ? `${prefix}/${name}` : name;
|
|
492
|
+
return statSync(path.join(dir, rel)).isDirectory()
|
|
493
|
+
? listFiles(dir, rel)
|
|
494
|
+
: [rel];
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
function writeAtomically(file, content) {
|
|
498
|
+
mkdirSync(path.dirname(file), { recursive: true });
|
|
499
|
+
const temporary = `${file}.${process.pid}.tmp`;
|
|
500
|
+
writeFileSync(temporary, content);
|
|
501
|
+
renameSync(temporary, file);
|
|
502
|
+
}
|
|
503
|
+
//# sourceMappingURL=graph-packages-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-packages-lock.js","sourceRoot":"","sources":["../src/graph-packages-lock.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GraphAutoMergeSimulation } from '@software-dlc/graph/types';
|
|
2
|
+
export declare function readAutoMergeScopeRecipes(path?: string | null): Promise<{
|
|
3
|
+
schema_version: 1;
|
|
4
|
+
selectors: {
|
|
5
|
+
path_ids?: string[] | undefined;
|
|
6
|
+
path_tree_root_ids?: string[] | undefined;
|
|
7
|
+
node_ids?: string[] | undefined;
|
|
8
|
+
edge_ids?: string[] | undefined;
|
|
9
|
+
};
|
|
10
|
+
}[] | undefined>;
|
|
11
|
+
export declare function isAutoMergePreflightClean(simulation: GraphAutoMergeSimulation): boolean;
|
|
12
|
+
//# sourceMappingURL=aggregate-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate-preflight.d.ts","sourceRoot":"","sources":["../../src/local/aggregate-preflight.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,wBAAsB,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;;;;;;;;iBAMnE;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,wBAAwB,WAYrC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { scope_recipe_v1_schema } from '@software-dlc/graph/schema';
|
|
4
|
+
export async function readAutoMergeScopeRecipes(path) {
|
|
5
|
+
if (!path)
|
|
6
|
+
return undefined;
|
|
7
|
+
return z
|
|
8
|
+
.array(scope_recipe_v1_schema)
|
|
9
|
+
.max(256)
|
|
10
|
+
.parse(JSON.parse(await readFile(path, 'utf8')));
|
|
11
|
+
}
|
|
12
|
+
export function isAutoMergePreflightClean(simulation) {
|
|
13
|
+
return (simulation.status === 'clean' &&
|
|
14
|
+
simulation.would_apply &&
|
|
15
|
+
!simulation.has_conflicts &&
|
|
16
|
+
simulation.blockers.length === 0 &&
|
|
17
|
+
simulation.aggregate_verification?.status === 'verified' &&
|
|
18
|
+
simulation.aggregate_verification.evidence_root_hash !== null &&
|
|
19
|
+
simulation.aggregate_verification.source_roots !== null &&
|
|
20
|
+
simulation.aggregate_verification.issues.length === 0);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=aggregate-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate-preflight.js","sourceRoot":"","sources":["../../src/local/aggregate-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAoB;IAClE,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,CAAC;SACL,KAAK,CAAC,sBAAsB,CAAC;SAC7B,GAAG,CAAC,GAAG,CAAC;SACR,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAoC;IAEpC,OAAO,CACL,UAAU,CAAC,MAAM,KAAK,OAAO;QAC7B,UAAU,CAAC,WAAW;QACtB,CAAC,UAAU,CAAC,aAAa;QACzB,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAChC,UAAU,CAAC,sBAAsB,EAAE,MAAM,KAAK,UAAU;QACxD,UAAU,CAAC,sBAAsB,CAAC,kBAAkB,KAAK,IAAI;QAC7D,UAAU,CAAC,sBAAsB,CAAC,YAAY,KAAK,IAAI;QACvD,UAAU,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CACtD,CAAC;AACJ,CAAC"}
|