@joshuafolkken/kit 1.1035.0 → 1.1094.0
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/.claude/settings.json +9 -8
- package/.claude/skills/epic-commands/SKILL.md +5 -7
- package/.claude/skills/verify-ui/SKILL.md +1 -1
- package/.claude/skills/workflow-commands/SKILL.md +21 -13
- package/.claude/skills/workflow-commands/background-commands.md +5 -4
- package/.claude/skills/workflow-commands/backlogrun-child.md +3 -3
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +9 -7
- package/.claude/skills/workflow-commands/backlogrun-park.md +6 -0
- package/.claude/skills/workflow-commands/backlogrun-progress.md +31 -37
- package/.claude/skills/workflow-commands/backlogrun-steps.md +25 -25
- package/.claude/skills/workflow-commands/backlogrun.md +2 -2
- package/.claude/skills/workflow-commands/chain-rule.md +6 -4
- package/.claude/skills/workflow-commands/delegation.md +3 -3
- package/.claude/skills/workflow-commands/followup-reference.md +3 -3
- package/.claude/skills/workflow-commands/followup.md +7 -3
- package/.claude/skills/workflow-commands/fullrun-steps.md +3 -2
- package/.claude/skills/workflow-commands/fullrun.md +3 -2
- package/.claude/skills/workflow-commands/halfrun.md +16 -19
- package/.claude/skills/workflow-commands/issue-comments.md +2 -2
- package/.claude/skills/workflow-commands/issue-fold-existing.md +10 -10
- package/.claude/skills/workflow-commands/issue-scout.md +1 -1
- package/.claude/skills/workflow-commands/kickoff.md +9 -4
- package/.claude/skills/workflow-commands/latest-gate.md +1 -1
- package/.claude/skills/workflow-commands/needs-human-review.md +1 -1
- package/.claude/skills/workflow-commands/observation-filing.md +44 -89
- package/.claude/skills/workflow-commands/pre-gate-cut.md +33 -36
- package/.claude/skills/workflow-commands/prerequisite.md +1 -1
- package/.claude/skills/workflow-commands/prrun.md +36 -0
- package/.claude/skills/workflow-commands/retrospective.md +1 -1
- package/.claude/skills/workflow-commands/working-tree-hold.md +24 -4
- package/.codex/hooks.json +16 -20
- package/.github/actions/setup-pnpm/action.yml +93 -0
- package/.github/dependabot.yml +5 -1
- package/.github/workflows/auto-tag.yml +21 -0
- package/.github/workflows/ci.yml +26 -128
- package/.github/workflows/pr-classification.yml +5 -41
- package/.github/workflows/publish.yml +42 -48
- package/.github/workflows/sonar-qube.yml +37 -4
- package/AGENTS.md +12 -2
- package/CLAUDE.md +15 -16
- package/GEMINI.md +14 -2
- package/README.md +59 -18
- package/SECURITY.md +36 -6
- package/cspell/index.yaml +2 -1
- package/dist/CLAUDE.md +15 -16
- package/dist/config-merge/index.js +15 -3
- package/dist/hooks/batch-guard.js +4 -4
- package/dist/hooks/{chunk-Y27M6A7X.js → chunk-3C4YCCEF.js} +5 -13
- package/dist/hooks/{chunk-D67KVGGY.js → chunk-7ZPFAVR7.js} +17 -88
- package/dist/hooks/{chunk-HOYJU5RM.js → chunk-E54KGFEQ.js} +11 -4
- package/dist/hooks/{chunk-KG6PZD72.js → chunk-IL27YTPH.js} +2 -2
- package/dist/hooks/{chunk-GJT4BNVE.js → chunk-KHWHKJOM.js} +3 -3
- package/dist/hooks/{chunk-HU66PWWL.js → chunk-M2XDCUKD.js} +1076 -509
- package/dist/hooks/{chunk-GLBDBJOK.js → chunk-NKOG3XAV.js} +199 -304
- package/dist/hooks/{chunk-ZXNE6NY3.js → chunk-O4LL4HTI.js} +2 -7
- package/dist/hooks/{chunk-XPLP27WA.js → chunk-OIZUHPJI.js} +5 -27
- package/dist/hooks/{chunk-EIFCAJRB.js → chunk-UD24EAIL.js} +2546 -1636
- package/dist/hooks/codex-hook-adapter.js +10 -11
- package/dist/hooks/duplicate-read-guard.js +5 -5
- package/dist/hooks/format-edited.js +15 -34
- package/dist/hooks/inputs.json +279 -0
- package/dist/hooks/investigation-guard.js +5 -5
- package/dist/hooks/pretool-guard.js +23 -16
- package/dist/hooks/session-lang.js +0 -1
- package/dist/hooks/stop-guard.js +188 -509
- package/dist/josh.js +166 -225
- package/dist/managed-marker/index.js +2 -1
- package/dist/version/index.js +412 -64
- package/eslint/rules/promise.js +5 -0
- package/package.json +13 -8
- package/prompts/collaboration-workflow/file-edits.md +6 -53
- package/prompts/collaboration-workflow/issue-citation.md +5 -5
- package/prompts/collaboration-workflow/operating-rules.md +4 -4
- package/prompts/collaboration-workflow/overview.md +13 -1
- package/prompts/collaboration-workflow/report-format.md +1 -1
- package/prompts/collaboration-workflow/residency.md +4 -4
- package/prompts/collaboration-workflow/rule-delivery.md +5 -36
- package/prompts/collaboration-workflow/shell-body.md +7 -9
- package/prompts/collaboration-workflow/turn-batching.md +21 -37
- package/prompts/collaboration-workflow/upstream-interrupt.md +1 -1
- package/prompts/collaboration-workflow/wip-cap.md +36 -36
- package/prompts/collaboration-workflow.md +5 -8
- package/prompts/review-rubric.md +1 -1
- package/prompts/review.md +3 -3
- package/prompts/sonar-hotspot-handling.md +12 -4
- package/prompts/testing-guide.md +3 -3
- package/scripts/adopt/adopt-toolkits.ts +2 -2
- package/scripts/adopt/adopt.ts +0 -2
- package/scripts/agent/agent-argv.ts +0 -2
- package/scripts/agent/agent-diagnostics.ts +1 -1
- package/scripts/agent/agent-role-profile.ts +0 -7
- package/scripts/agent/claude-agent-argv.ts +0 -2
- package/scripts/agent/codex-agent-argv.ts +1 -1
- package/scripts/agent/codex-hooks.ts +92 -0
- package/scripts/agent/interactive-ask.ts +1 -1
- package/scripts/auto-ok/auto-ok-cli.ts +15 -25
- package/scripts/backlog/backlog-budget.ts +0 -2
- package/scripts/backlog/backlog-defect-priority.ts +2 -2
- package/scripts/backlog/backlog-drive-cli.ts +10 -8
- package/scripts/backlog/backlog-drive-named-offer.ts +16 -3
- package/scripts/backlog/backlog-drive-named.ts +2 -1
- package/scripts/backlog/backlog-drive.ts +76 -16
- package/scripts/backlog/backlog-named.ts +0 -3
- package/scripts/backlog/backlog-next.ts +32 -22
- package/scripts/backlog/backlog-offer-cli.ts +0 -5
- package/scripts/backlog/backlog-plan-cli.ts +6 -8
- package/scripts/backlog/backlog-plan.ts +1 -1
- package/scripts/backlog/backlog-pool.ts +34 -17
- package/scripts/backlog/backlog-rank.ts +106 -0
- package/scripts/backlog/backlog-ready.ts +19 -3
- package/scripts/backlog/backlog-scope.ts +1 -3
- package/scripts/backlog/backlog-stalled-detect.ts +2 -2
- package/scripts/backlog/backlog-stalled.ts +0 -1
- package/scripts/backlog/backlog-waves.ts +47 -31
- package/scripts/behavior/behavior-cli.ts +1 -1
- package/scripts/build/build-codex-hooks.ts +26 -0
- package/scripts/build/build-hooks.ts +92 -11
- package/scripts/build/hook-bundle-stamp.ts +111 -0
- package/scripts/cases/cases-cli.ts +1 -1
- package/scripts/cases/cases-logic.ts +1 -1
- package/scripts/ci/composite-actions.ts +30 -0
- package/scripts/ci/pr-classification.ts +3 -3
- package/scripts/claude/workflow-destination.ts +10 -1
- package/scripts/clone/clone-fingerprint.ts +0 -1
- package/scripts/clone/clone-scan-cli.ts +1 -1
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/config-merge/json-format.ts +0 -1
- package/scripts/config-merge/patch-yaml-list.ts +1 -1
- package/scripts/cost-runtime/codex-usage.ts +2 -9
- package/scripts/cost-runtime/cost-attribute.ts +0 -1
- package/scripts/cost-runtime/cost-cli.ts +0 -3
- package/scripts/cost-runtime/cost-corpus.ts +0 -2
- package/scripts/cost-runtime/cost-format.ts +0 -3
- package/scripts/cost-runtime/cost-pricing.ts +0 -1
- package/scripts/cost-runtime/cost-tokens.ts +0 -1
- package/scripts/delegation/delegation-cli.ts +1 -1
- package/scripts/delegation/delegation-policy.ts +11 -1
- package/scripts/delegation/duplicate-read-guard.ts +0 -8
- package/scripts/delegation/fanout-cli.ts +1 -1
- package/scripts/delegation/fanout.ts +0 -2
- package/scripts/delegation/investigation-reads.ts +1 -164
- package/scripts/discovery/repo-map-logic.ts +0 -1
- package/scripts/discovery/repo-party-cli.ts +1 -1
- package/scripts/doctor/doctor-consumer.ts +4 -6
- package/scripts/doctor/doctor-logic.ts +0 -4
- package/scripts/doctor/doctor.ts +14 -9
- package/scripts/document/document-byte-budget.ts +8 -9
- package/scripts/document/document-byte-check.ts +0 -1
- package/scripts/document/document-read-cli.ts +0 -2
- package/scripts/document/document-section-cli.ts +1 -1
- package/scripts/document/document-section.ts +0 -3
- package/scripts/document/edit-files-cli.ts +0 -1
- package/scripts/document/entry-read-budget.ts +13 -4
- package/scripts/document/lane-child-read-set.ts +1 -6
- package/scripts/document/read-files-cli.ts +0 -4
- package/scripts/document/read-set-cli.ts +0 -2
- package/scripts/document/read-set-point-of-use.ts +1 -0
- package/scripts/document/read-set-pricing.ts +0 -1
- package/scripts/document/read-set-trim.ts +1 -1
- package/scripts/epic/epic-add.ts +1 -1
- package/scripts/epic/epic-audit-cli.ts +1 -4
- package/scripts/epic/epic-audit-orphans.ts +1 -3
- package/scripts/epic/epic-audit-rationale.ts +0 -1
- package/scripts/epic/epic-audit-report.ts +0 -2
- package/scripts/epic/epic-audit.ts +5 -4
- package/scripts/epic/epic-bundle-cli.ts +1 -1
- package/scripts/epic/epic-bundle-evidence.ts +0 -1
- package/scripts/epic/epic-bundle-referenced.ts +1 -5
- package/scripts/epic/epic-bundle.ts +0 -4
- package/scripts/epic/epic-busy.ts +4 -5
- package/scripts/epic/epic-candidate-confirm.ts +0 -5
- package/scripts/epic/epic-classify.ts +2 -2
- package/scripts/epic/epic-cli-argv.ts +0 -1
- package/scripts/epic/epic-close-comment.ts +1 -1
- package/scripts/epic/epic-close.ts +5 -2
- package/scripts/epic/epic-cross-repo.ts +2 -4
- package/scripts/epic/epic-decision.ts +0 -1
- package/scripts/epic/epic-fetch.ts +2 -2
- package/scripts/epic/epic-index.ts +2 -3
- package/scripts/epic/epic-issue.ts +1 -15
- package/scripts/epic/epic-lane-offer.ts +20 -30
- package/scripts/epic/epic-nested.ts +1 -1
- package/scripts/epic/epic-next-read.ts +1 -3
- package/scripts/epic/epic-next-views.ts +0 -1
- package/scripts/epic/epic-next.ts +1 -10
- package/scripts/epic/epic-parse.ts +0 -1
- package/scripts/epic/epic-promote.ts +0 -9
- package/scripts/epic/epic-rank.ts +37 -0
- package/scripts/epic/epic-read.ts +1 -2
- package/scripts/epic/epic-reconcile.ts +1 -1
- package/scripts/epic/epic-reference.ts +1 -13
- package/scripts/epic/epic-relation-recheck.ts +1 -1
- package/scripts/epic/epic-relations.ts +1 -1
- package/scripts/epic/epic-remove.ts +1 -1
- package/scripts/epic/epic-report.ts +0 -1
- package/scripts/epic/epic-run.ts +2 -3
- package/scripts/epic/epic-shape.ts +1 -1
- package/scripts/epic/epic-solo-stale.ts +107 -0
- package/scripts/epic/epic-solo.ts +32 -30
- package/scripts/epic/epic-triage.ts +1 -1
- package/scripts/epic/epic-validate.ts +1 -1
- package/scripts/epic/epic.ts +1 -1
- package/scripts/exports/unused-members-cli.ts +53 -0
- package/scripts/{git → followup}/followup-issue-number.ts +1 -6
- package/scripts/{git → followup}/git-followup-cleanup.ts +2 -1
- package/scripts/{git → followup}/git-followup-finish.ts +1 -3
- package/scripts/{git → followup}/git-followup-flush.ts +2 -2
- package/scripts/{git → followup}/git-followup-issue-close.ts +2 -2
- package/scripts/{git → followup}/git-followup-label.ts +4 -4
- package/scripts/followup/git-followup-merged.ts +112 -0
- package/scripts/{git → followup}/git-followup-pending.ts +1 -1
- package/scripts/{git → followup}/git-followup-workflow.ts +19 -11
- package/scripts/{git → followup}/git-pr-followup-wrapup.ts +9 -3
- package/scripts/{git → followup}/git-pr-followup.ts +53 -16
- package/scripts/gate/core-budget.ts +3 -9
- package/scripts/gate/gate-plan.ts +7 -4
- package/scripts/gate/gate-report.ts +0 -6
- package/scripts/gate/gate-tree.ts +1 -1
- package/scripts/gate/pre-commit-type-check.ts +0 -6
- package/scripts/gate/project-checks.ts +7 -8
- package/scripts/gate/scoped-green.ts +0 -1
- package/scripts/gate/type-check-step.ts +1 -1
- package/scripts/gate/verification-gate.ts +0 -2
- package/scripts/gh/fix-gh-packages.ts +15 -12
- package/scripts/gh/gh-spawn.ts +2 -2
- package/scripts/{git → gh}/git-ai-review-scan.ts +1 -5
- package/scripts/{git → gh}/git-gh-check.ts +2 -1
- package/scripts/{git → gh}/git-gh-exec.ts +1 -1
- package/scripts/{git → gh}/git-gh-failure.ts +1 -1
- package/scripts/{git → gh}/git-gh-helpers.ts +0 -1
- package/scripts/{git → gh}/git-gh-issue-list.ts +2 -0
- package/scripts/{git → gh}/git-gh-issue-read.ts +1 -1
- package/scripts/{git → gh}/git-gh-issue-rest.ts +6 -3
- package/scripts/{git → gh}/git-gh-pr-read.ts +24 -0
- package/scripts/{git → gh}/git-gh-pr-rest.ts +5 -2
- package/scripts/{git → gh}/git-gh-pr-review.ts +2 -2
- package/scripts/{git → gh}/git-gh-pr-rollup.ts +1 -3
- package/scripts/{git → gh}/git-gh-pr.ts +3 -1
- package/scripts/{git → gh}/git-pr-ai-review.ts +2 -5
- package/scripts/{git → gh}/git-pr-checks-eval.ts +0 -10
- package/scripts/{git → gh}/git-pr-checks-parse.ts +4 -20
- package/scripts/{git → gh}/git-pr-checks.ts +2 -1
- package/scripts/{git → gh}/git-pr-coderabbit.ts +2 -5
- package/scripts/{git → gh}/git-pr-confirmation.ts +1 -3
- package/scripts/{git → gh}/git-pr-managed-config.ts +2 -3
- package/scripts/{git → gh}/git-pr.ts +3 -3
- package/scripts/git/changed-file-scope.ts +0 -1
- package/scripts/git/git-branch.ts +3 -6
- package/scripts/git/git-command.ts +1 -1
- package/scripts/git/git-commit.ts +1 -1
- package/scripts/git/git-common-directory.ts +80 -24
- package/scripts/git/git-error.ts +66 -9
- package/scripts/git/git-execa-error.ts +6 -1
- package/scripts/git/git-issue.ts +1 -1
- package/scripts/git/git-preflight.ts +24 -6
- package/scripts/git/git-prompt.ts +6 -31
- package/scripts/git/git-push-transport.ts +12 -69
- package/scripts/git/git-push.ts +1 -1
- package/scripts/git/git-spawn.ts +79 -3
- package/scripts/git/git-ssh-keepalive.ts +74 -0
- package/scripts/git/git-staging.ts +1 -0
- package/scripts/git/git-status.ts +1 -1
- package/scripts/git/git-workflow.ts +1 -1
- package/scripts/git/gone-branch.ts +4 -2
- package/scripts/git/listing-cutoff.ts +1 -1
- package/scripts/git/main-merge.ts +1 -1
- package/scripts/git/main-sync.ts +19 -1
- package/scripts/git/parse-json-array.ts +0 -3
- package/scripts/git/repository-lock.ts +16 -16
- package/scripts/git/{git-stash.ts → stash/git-stash.ts} +1 -1
- package/scripts/git/{stash-pop-args.ts → stash/stash-pop-args.ts} +1 -1
- package/scripts/git/{stash-pop-cli.ts → stash/stash-pop-cli.ts} +0 -1
- package/scripts/git/{stash-sweep-lock.ts → stash/stash-sweep-lock.ts} +3 -3
- package/scripts/hooks/codex-hook-adapter.ts +0 -1
- package/scripts/hooks/edited-cspell.ts +1 -1
- package/scripts/hooks/format-edited-cli.ts +15 -0
- package/scripts/hooks/format-edited-file.ts +4 -9
- package/scripts/hooks/pre-push-unit.ts +0 -4
- package/scripts/hooks/pretool-guard-cli.ts +21 -0
- package/scripts/hooks/pretool-guard.ts +36 -19
- package/scripts/hooks/reserved-run.ts +1 -1
- package/scripts/hooks/step-zero-notice.ts +76 -0
- package/scripts/hooks/stop-guard.ts +47 -21
- package/scripts/init/claude-plugin-config.ts +4 -5
- package/scripts/init/hook-command-rewrite.ts +16 -8
- package/scripts/init/hook-launch.ts +41 -15
- package/scripts/init/init-basic.ts +2 -5
- package/scripts/init/init-logic.ts +7 -0
- package/scripts/init/init.ts +0 -3
- package/scripts/init/project-profile.ts +6 -11
- package/scripts/init/start-exec.ts +8 -2
- package/scripts/init/start-plan.ts +18 -5
- package/scripts/init/start-setup-pr.ts +52 -25
- package/scripts/init/start-steps.ts +42 -9
- package/scripts/init/start.ts +40 -10
- package/scripts/issue/behavior-change-lint.ts +0 -1
- package/scripts/issue/defect-rate-cli.ts +3 -3
- package/scripts/issue/defect-rate.ts +1 -2
- package/scripts/{git → issue}/git-next-issues.ts +37 -8
- package/scripts/issue/issue-backlinks-cli.ts +1 -5
- package/scripts/issue/issue-cite-cli.ts +2 -6
- package/scripts/issue/issue-cite.ts +19 -3
- package/scripts/issue/issue-classification.ts +1 -9
- package/scripts/issue/issue-closing-pr.ts +4 -4
- package/scripts/issue/issue-comment-cli.ts +2 -2
- package/scripts/issue/issue-file-cli.ts +5 -5
- package/scripts/issue/issue-file.ts +2 -2
- package/scripts/issue/issue-fold-cli.ts +1 -1
- package/scripts/issue/issue-fold-existing-cli.ts +1 -1
- package/scripts/{git → issue}/issue-labels.ts +20 -0
- package/scripts/issue/issue-lint-cli.ts +1 -1
- package/scripts/issue/issue-merged.ts +2 -2
- package/scripts/issue/issue-rank.ts +89 -0
- package/scripts/issue/issue-read-cli.ts +8 -47
- package/scripts/issue/issue-read.ts +0 -2
- package/scripts/issue/issue-report-failures.ts +80 -0
- package/scripts/issue/issue-scout-cli.ts +1 -7
- package/scripts/issue/issue-scout-closed.ts +2 -2
- package/scripts/issue/issue-scout.ts +0 -2
- package/scripts/issue/issue-state-cli.ts +5 -46
- package/scripts/issue/issue-state.ts +1 -5
- package/scripts/issue/markdown-section.ts +1 -1
- package/scripts/issue/measure-rerun-cli.ts +1 -1
- package/scripts/issue/reproduction-measure.ts +1 -1
- package/scripts/josh/cli-body.ts +1 -1
- package/scripts/josh/file-map-stamp.ts +0 -3
- package/scripts/josh/josh-command-map.ts +2 -102
- package/scripts/josh/josh-commands-ai.ts +9 -102
- package/scripts/josh/josh-commands-backlog.ts +5 -1
- package/scripts/josh/josh-commands-development.ts +10 -3
- package/scripts/josh/josh-commands-issue.ts +2 -2
- package/scripts/josh/josh-commands-maintenance.ts +7 -0
- package/scripts/josh/josh-commands-project.ts +7 -1
- package/scripts/josh/josh-commands-run.ts +114 -0
- package/scripts/josh/josh-commands-versioning.ts +8 -0
- package/scripts/josh/josh-commands-workflow.ts +2 -2
- package/scripts/josh/path-decision.ts +0 -3
- package/scripts/josh/process-owner.ts +16 -0
- package/scripts/josh/session-language-cli.ts +0 -1
- package/scripts/lane/lane-await.ts +3 -6
- package/scripts/lane/lane-capacity.ts +6 -3
- package/scripts/lane/lane-child-invocation.ts +20 -7
- package/scripts/lane/lane-child-marker.ts +16 -2
- package/scripts/lane/lane-cli.ts +33 -18
- package/scripts/lane/lane-close.ts +1 -3
- package/scripts/lane/lane-dispatch.ts +3 -4
- package/scripts/lane/lane-environment.ts +0 -9
- package/scripts/lane/lane-handoff.ts +38 -0
- package/scripts/lane/lane-launch-cli.ts +21 -11
- package/scripts/lane/lane-open.ts +0 -3
- package/scripts/lane/lane-output.ts +0 -1
- package/scripts/lane/lane-registry.ts +9 -0
- package/scripts/lane/lane-report.ts +10 -4
- package/scripts/lane/openai-lane-ship.ts +2 -0
- package/scripts/lane/openai-lane-supervisor-decision.ts +2 -1
- package/scripts/lane/openai-lane-supervisor.ts +6 -4
- package/scripts/lane/openai-review-broker.ts +3 -0
- package/scripts/lib/bounded-pool.ts +1 -0
- package/scripts/lib/json-value.ts +5 -4
- package/scripts/lib/poll.ts +3 -1
- package/scripts/lib/timed-fetch.ts +15 -0
- package/scripts/lib/timeouts.ts +13 -0
- package/scripts/{yaml → lib}/yaml-document.ts +3 -1
- package/scripts/{bytes → lines}/bytes-command.ts +0 -2
- package/scripts/lines/lines-command.ts +0 -1
- package/scripts/lint/lint-related-scope.ts +0 -1
- package/scripts/lint/lint-related.ts +1 -1
- package/scripts/{git → notify}/telegram-notify.ts +2 -2
- package/scripts/{git → notify}/telegram-test.ts +4 -4
- package/scripts/observations/observation-ledger-home.ts +0 -1
- package/scripts/observations/observation-ledger-line.ts +0 -1
- package/scripts/observations/observation-ledger-migrate.ts +1 -1
- package/scripts/observations/observations-flush-landing.ts +3 -3
- package/scripts/observations/observations-flush.ts +2 -2
- package/scripts/overrides/lockfile-overrides.ts +1 -1
- package/scripts/overrides/overrides-logic.ts +1 -1
- package/scripts/package/package-scout-cli.ts +2 -7
- package/scripts/package/package-scout.ts +0 -2
- package/scripts/propagate/propagate-git-failure.ts +0 -1
- package/scripts/propagate/propagate-git.ts +0 -2
- package/scripts/propagate/propagate-plan.ts +185 -0
- package/scripts/propagate/propagate-publish.ts +2 -3
- package/scripts/propagate/propagate-run.ts +5 -3
- package/scripts/propagate/propagate-steps.ts +19 -6
- package/scripts/propagate/propagate-targets.ts +13 -6
- package/scripts/propagate/propagate.ts +60 -46
- package/scripts/refactor/import-graph.ts +0 -1
- package/scripts/refactor/refactor-lint.ts +0 -2
- package/scripts/refactor/refactor-scan.ts +0 -1
- package/scripts/refactor/refactor-targets.ts +0 -1
- package/scripts/registry-migration/migrate-logic.ts +1 -2
- package/scripts/registry-migration/migrate.ts +19 -9
- package/scripts/release/github-release-cli.ts +8 -6
- package/scripts/release/github-release-environment.ts +46 -0
- package/scripts/release/github-release.ts +151 -94
- package/scripts/release/release-history.ts +0 -1
- package/scripts/release/release-plan.ts +0 -1
- package/scripts/release/release-publish.ts +2 -3
- package/scripts/release/release-scope-cli.ts +1 -2
- package/scripts/release/release-tag.ts +2 -4
- package/scripts/repo/auto-merge-setting-logic.ts +1 -4
- package/scripts/repo/repo-setting.ts +1 -1
- package/scripts/repo/repository-labels.ts +3 -3
- package/scripts/repo/required-checks-logic.ts +206 -0
- package/scripts/repo/required-checks-report.ts +71 -0
- package/scripts/repo/ruleset-check-cli.ts +53 -0
- package/scripts/repo/ruleset-check.ts +147 -0
- package/scripts/report/report-lint-cli.ts +0 -4
- package/scripts/review/disposition-cli.ts +1 -1
- package/scripts/review/live-evidence.ts +1 -1
- package/scripts/review/review-attest-cli.ts +0 -6
- package/scripts/review/review-attest.ts +48 -16
- package/scripts/review/review-brief-cli.ts +72 -8
- package/scripts/review/review-brief.ts +67 -9
- package/scripts/review/review-diff-parts.ts +89 -0
- package/scripts/review/review-diff-write.ts +97 -0
- package/scripts/review/review-finding-ledger.ts +0 -1
- package/scripts/review/review-record-cli.ts +1 -1
- package/scripts/review/review-record.ts +0 -1
- package/scripts/review/review-round2-cli.ts +1 -1
- package/scripts/review/review-stamps.ts +6 -2
- package/scripts/review/review-tree.ts +14 -2
- package/scripts/rules/decision-oracle-stage.ts +18 -0
- package/scripts/rules/decision-oracle.ts +10 -7
- package/scripts/rules/delivered-rules.ts +9 -1
- package/scripts/rules/destructive-command.ts +119 -0
- package/scripts/rules/direct-filing.ts +1 -1
- package/scripts/rules/file-body.ts +0 -3
- package/scripts/rules/filing-cap.ts +0 -2
- package/scripts/rules/gh-api.ts +7 -2
- package/scripts/rules/git-argv.ts +18 -7
- package/scripts/rules/git-force.ts +0 -2
- package/scripts/rules/implementation-cut.ts +1 -2
- package/scripts/rules/index-guard.ts +71 -0
- package/scripts/rules/issue-citation.ts +50 -25
- package/scripts/rules/issue-fold.ts +1 -2
- package/scripts/rules/lane-background.ts +15 -7
- package/scripts/rules/lane-carry-conflict.ts +1 -2
- package/scripts/rules/lane-park.ts +14 -8
- package/scripts/rules/last-prompt.ts +1 -0
- package/scripts/rules/oracle-consulted.ts +1 -1
- package/scripts/rules/oracle-firing.ts +1 -0
- package/scripts/rules/oracle-list-cli.ts +0 -3
- package/scripts/rules/permission-guards.ts +14 -0
- package/scripts/rules/pre-gate-cut.ts +2 -2
- package/scripts/rules/protected-files.ts +74 -0
- package/scripts/rules/reply-language.ts +1 -1
- package/scripts/rules/rule-body-guard.ts +0 -3
- package/scripts/rules/rule-value-cli.ts +0 -1
- package/scripts/rules/shell-body-trigger.ts +0 -1
- package/scripts/rules/shell-segments.ts +0 -1
- package/scripts/rules/stop-rules.ts +13 -5
- package/scripts/rules/tail-commands.ts +1 -1
- package/scripts/rules/test-declared-commit.ts +1 -1
- package/scripts/rules/third-party-write.ts +0 -1
- package/scripts/rules/worktree-guard.ts +26 -9
- package/scripts/run/run-carry-cli.ts +0 -2
- package/scripts/run/run-carry-stash.ts +2 -2
- package/scripts/run/run-carry-streak.ts +1 -1
- package/scripts/run/run-cut-cli.ts +0 -7
- package/scripts/run/run-cut.ts +8 -54
- package/scripts/run/run-ending-cli.ts +1 -1
- package/scripts/run/run-ending.ts +1 -4
- package/scripts/run/run-entry-cli.ts +101 -24
- package/scripts/run/run-entry.ts +0 -1
- package/scripts/run/run-event-cli.ts +0 -2
- package/scripts/run/run-event-follow.ts +1 -0
- package/scripts/run/run-event-render.ts +1 -1
- package/scripts/run/run-event-scope.ts +53 -4
- package/scripts/run/run-event-stream.ts +0 -3
- package/scripts/run/run-event-watch.ts +1 -0
- package/scripts/run/run-halfrun-resume.ts +20 -7
- package/scripts/run/run-headless.ts +24 -8
- package/scripts/run/run-hold-cli.ts +33 -10
- package/scripts/run/run-hold.ts +25 -5
- package/scripts/run/run-issue-number.ts +1 -1
- package/scripts/run/run-liveness-cli.ts +1 -1
- package/scripts/run/run-liveness.ts +2 -3
- package/scripts/run/run-merge-cli.ts +5 -13
- package/scripts/run/run-merge-steps.ts +5 -5
- package/scripts/run/run-merge.ts +1 -1
- package/scripts/run/run-next-cli.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +143 -0
- package/scripts/run/run-preflight.ts +2 -9
- package/scripts/run/run-prep-cli.ts +2 -2
- package/scripts/run/run-prep-locate.ts +1 -1
- package/scripts/run/run-progress-cli.ts +4 -7
- package/scripts/run/run-progress-clock.ts +6 -34
- package/scripts/run/run-progress-config.ts +0 -4
- package/scripts/run/run-progress-read.ts +3 -3
- package/scripts/run/run-progress.ts +22 -10
- package/scripts/run/run-prrun-resume.ts +117 -0
- package/scripts/run/run-report-cli.ts +1 -2
- package/scripts/run/run-report.ts +0 -1
- package/scripts/run/run-retrospective.ts +1 -1
- package/scripts/run/run-review-cli.ts +0 -3
- package/scripts/run/run-review-steps.ts +2 -0
- package/scripts/run/run-review.ts +0 -2
- package/scripts/run/run-ship-cli.ts +27 -77
- package/scripts/run/run-ship-detach.ts +1 -0
- package/scripts/run/run-ship-next.ts +106 -0
- package/scripts/run/run-ship-preflight.ts +87 -0
- package/scripts/run/run-ship-return.ts +8 -3
- package/scripts/run/run-ship-review-steps.ts +23 -30
- package/scripts/run/run-ship-review.ts +20 -0
- package/scripts/run/run-ship-scoped.ts +45 -0
- package/scripts/run/run-ship-stage.ts +5 -1
- package/scripts/run/run-ship-steps.ts +105 -0
- package/scripts/run/run-ship.ts +2 -1
- package/scripts/run/run-stage-read.ts +62 -0
- package/scripts/run/run-stage.ts +160 -0
- package/scripts/run/run-status-cli.ts +1 -1
- package/scripts/run/run-step-cli.ts +21 -14
- package/scripts/run/run-step.ts +1 -1
- package/scripts/run/run-stop-notify.ts +1 -3
- package/scripts/run/run-stranded-cli.ts +0 -4
- package/scripts/run/run-stranded-detect.ts +2 -2
- package/scripts/run/run-tail-cli.ts +17 -11
- package/scripts/run/run-tail.ts +2 -0
- package/scripts/run/run-tidy-lanes.ts +2 -1
- package/scripts/run/run-tidy-stashes.ts +12 -12
- package/scripts/run/run-wake-cli.ts +4 -5
- package/scripts/run/run-wake-describe.ts +19 -1
- package/scripts/run/run-wake-loop.ts +2 -2
- package/scripts/run/run-wake.ts +2 -4
- package/scripts/run/run-watcher-guard-cli.ts +0 -4
- package/scripts/run/run-watcher-guard.ts +9 -7
- package/scripts/run/run-watcher-hook.ts +1 -1
- package/scripts/safe-chain/ci-installer-pin.ts +11 -5
- package/scripts/safe-chain/project-config.ts +1 -1
- package/scripts/security/security-audit-provision-logic.ts +0 -1
- package/scripts/security/security-audit-provision.ts +3 -2
- package/scripts/security/security-audit.ts +0 -1
- package/scripts/security/security-updates-logic.ts +0 -1
- package/scripts/sonar/sonar-hotspots-cli.ts +10 -52
- package/scripts/sonar/sonar-hotspots.ts +0 -1
- package/scripts/sonar/sonar-new-code-cli.ts +150 -0
- package/scripts/sonar/sonar-new-code.ts +79 -0
- package/scripts/sonar/sonar-project.ts +97 -0
- package/scripts/split/split-assess-cli.ts +1 -1
- package/scripts/split/split-assess.ts +2 -5
- package/scripts/sync/managed-config-scope-cli.ts +1 -1
- package/scripts/sync/skill-migration.ts +0 -1
- package/scripts/sync/sync-hook-safety.ts +2 -3
- package/scripts/sync/sync.ts +1 -8
- package/scripts/sync/template-source-logic.ts +0 -1
- package/scripts/sync/workflow-pin-logic.ts +16 -28
- package/scripts/test/test-declared-logic.ts +0 -1
- package/scripts/test/test-declared.ts +0 -2
- package/scripts/test/test-red-commit.ts +2 -2
- package/scripts/test/test-red.ts +14 -7
- package/scripts/test/test-type-logic.ts +1 -1
- package/scripts/test/unit-worker-share.ts +7 -16
- package/scripts/time-runtime/time-batch-guard.ts +1 -2
- package/scripts/time-runtime/time-bundle-call.ts +2 -3
- package/scripts/time-runtime/time-bundles.ts +0 -4
- package/scripts/time-runtime/time-density-hook.ts +0 -2
- package/scripts/time-runtime/time-followup-stage.ts +1 -1
- package/scripts/time-runtime/time-format.ts +0 -73
- package/scripts/time-runtime/time-round-trips.ts +0 -4
- package/scripts/time-runtime/time-single-check.ts +1 -1
- package/scripts/time-runtime/time-spans.ts +1 -1
- package/scripts/time-runtime/time-transcript-line.ts +1 -2
- package/scripts/ui/ui-routes-cli.ts +0 -5
- package/scripts/ui/ui-routes.ts +0 -5
- package/scripts/version/effective-upstream.ts +2 -2
- package/scripts/version/latest-corepack.ts +7 -9
- package/scripts/version/latest-scope-cli.ts +0 -2
- package/scripts/version/latest-update.ts +0 -2
- package/scripts/version/npm-registry.ts +97 -0
- package/scripts/version/publishable-range-check.ts +1 -1
- package/scripts/version/release-hold.ts +0 -4
- package/scripts/version/running-binary.ts +2 -2
- package/scripts/version/version-check-logic.ts +0 -2
- package/scripts/version/version-commands.ts +5 -4
- package/scripts/version/version-remote.ts +28 -14
- package/scripts/version/version-targets.ts +4 -4
- package/templates/sonar-project.properties +28 -1
- package/templates/workflows/dependabot-auto-merge.yml +5 -3
- package/templates/workflows/github-release.yml +81 -0
- package/prompts/collaboration-workflow/cross-repo-epic.md +0 -5
- package/prompts/collaboration-workflow/epic-audit.md +0 -5
- package/prompts/collaboration-workflow/epic-bundle.md +0 -5
- package/scripts/init/plugin-install-hint.ts +0 -47
- package/scripts/version/parse-json.ts +0 -13
- /package/scripts/{git → followup}/git-followup-stages.ts +0 -0
- /package/scripts/{git → gh}/git-gh-api-path.ts +0 -0
- /package/scripts/{git → gh}/git-gh-command.ts +0 -0
- /package/scripts/{git → gh}/git-gh-issue-write.ts +0 -0
- /package/scripts/{git → gh}/git-gh-issue.ts +0 -0
- /package/scripts/{git → gh}/git-gh-pr-auto-merge.ts +0 -0
- /package/scripts/{git → gh}/git-gh-pr-snapshot.ts +0 -0
- /package/scripts/{git → gh}/git-gh-reachability.ts +0 -0
- /package/scripts/{git → gh}/git-gh-repo.ts +0 -0
- /package/scripts/{git → gh}/git-gh-rest-state.ts +0 -0
- /package/scripts/{git → gh}/git-pr-checks-watch.ts +0 -0
- /package/scripts/{git → gh}/git-pr-error.ts +0 -0
- /package/scripts/{git → gh}/git-pr-messages.ts +0 -0
- /package/scripts/{git → gh}/github-issue-url.ts +0 -0
- /package/scripts/git/{stash-orphans.ts → stash/stash-orphans.ts} +0 -0
- /package/scripts/{git → issue}/issue-reference.ts +0 -0
- /package/scripts/{git → lib}/animation-helpers.ts +0 -0
- /package/scripts/{git → lib}/git-animation.ts +0 -0
- /package/scripts/{git → notify}/git-notify.ts +0 -0
- /package/scripts/{git → notify}/telegram-test-logic.ts +0 -0
package/dist/version/index.js
CHANGED
|
@@ -66,6 +66,19 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
66
66
|
import { createRequire } from "node:module";
|
|
67
67
|
import path from "node:path";
|
|
68
68
|
|
|
69
|
+
// scripts/lib/json-value.ts
|
|
70
|
+
function parse_or_undefined(text) {
|
|
71
|
+
try {
|
|
72
|
+
return JSON.parse(text);
|
|
73
|
+
} catch {
|
|
74
|
+
return void 0;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function is_record(value) {
|
|
78
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
79
|
+
}
|
|
80
|
+
var json_value = { parse_or_undefined, is_record };
|
|
81
|
+
|
|
69
82
|
// scripts/lib/schemas.ts
|
|
70
83
|
import { z } from "zod";
|
|
71
84
|
var overrides_snapshot_schema = z.record(z.string(), z.string());
|
|
@@ -98,22 +111,13 @@ var json_object_schema = z.record(z.string(), z.unknown());
|
|
|
98
111
|
var string_array_schema = z.array(z.string());
|
|
99
112
|
var string_record_schema = z.record(z.string(), z.string());
|
|
100
113
|
|
|
101
|
-
// scripts/version/parse-json.ts
|
|
102
|
-
function safe_json_parse(raw) {
|
|
103
|
-
try {
|
|
104
|
-
return JSON.parse(raw);
|
|
105
|
-
} catch {
|
|
106
|
-
return void 0;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
114
|
// scripts/version/effective-upstream.ts
|
|
111
115
|
var PACKAGE_JSON = "package.json";
|
|
112
116
|
var MAX_WALK_DEPTH = 64;
|
|
113
117
|
function read_matching_version(manifest_path, package_name) {
|
|
114
118
|
if (!existsSync(manifest_path)) return void 0;
|
|
115
119
|
const parsed = package_named_version_schema.safeParse(
|
|
116
|
-
|
|
120
|
+
json_value.parse_or_undefined(readFileSync(manifest_path, "utf8"))
|
|
117
121
|
);
|
|
118
122
|
if (!parsed.success) return void 0;
|
|
119
123
|
if (parsed.data.name !== package_name) return void 0;
|
|
@@ -151,7 +155,7 @@ function resolve_effective_upstream_version(base_url, package_name, options = {}
|
|
|
151
155
|
}
|
|
152
156
|
|
|
153
157
|
// scripts/version/version-commands.ts
|
|
154
|
-
import { execaSync as
|
|
158
|
+
import { execaSync as execaSync4 } from "execa";
|
|
155
159
|
|
|
156
160
|
// scripts/version/release-age.ts
|
|
157
161
|
import { readFileSync as readFileSync2 } from "node:fs";
|
|
@@ -258,13 +262,9 @@ function build_release_hold_notes(version, latest, installable, minimum_age_minu
|
|
|
258
262
|
return [format_release_hold_note(version, latest, installable, minimum_age_minutes)];
|
|
259
263
|
}
|
|
260
264
|
var release_hold = {
|
|
261
|
-
HOLD_LABEL,
|
|
262
|
-
is_at_or_above,
|
|
263
|
-
is_latest_withheld,
|
|
264
265
|
resolve_installable,
|
|
265
266
|
is_release_age_hold,
|
|
266
267
|
format_window,
|
|
267
|
-
format_release_hold_note,
|
|
268
268
|
build_release_hold_notes
|
|
269
269
|
};
|
|
270
270
|
|
|
@@ -283,7 +283,7 @@ function read_running_version(self_directory) {
|
|
|
283
283
|
const package_path = resolve_self_package_path(self_directory);
|
|
284
284
|
if (!existsSync2(package_path)) return void 0;
|
|
285
285
|
const parsed = package_version_schema.safeParse(
|
|
286
|
-
|
|
286
|
+
json_value.parse_or_undefined(readFileSync3(package_path, "utf8"))
|
|
287
287
|
);
|
|
288
288
|
return parsed.success ? parsed.data.version : void 0;
|
|
289
289
|
}
|
|
@@ -463,19 +463,23 @@ var version_check_logic = {
|
|
|
463
463
|
format_dual_version_output,
|
|
464
464
|
format_running_line,
|
|
465
465
|
format_upstream_lines,
|
|
466
|
-
format_upstream_global_line,
|
|
467
466
|
build_dual_upgrade_commands,
|
|
468
467
|
build_upstream_upgrade_commands,
|
|
469
468
|
build_upstream_upgrade_notes,
|
|
470
469
|
build_effective_upgrade_commands,
|
|
471
470
|
build_effective_upgrade_notes,
|
|
472
|
-
build_project_upgrade_commands,
|
|
473
471
|
format_update_command,
|
|
474
472
|
format_effective_outcome,
|
|
475
473
|
build_upgrade_shell_command,
|
|
476
474
|
unique_upgrade_commands
|
|
477
475
|
};
|
|
478
476
|
|
|
477
|
+
// scripts/git/git-execa-error.ts
|
|
478
|
+
function has_timed_out(error) {
|
|
479
|
+
if (typeof error !== "object" || error === null || !("timedOut" in error)) return false;
|
|
480
|
+
return error.timedOut === true;
|
|
481
|
+
}
|
|
482
|
+
|
|
479
483
|
// scripts/josh/agent-session-environment.ts
|
|
480
484
|
var SESSION_ID_KEY = "CLAUDE_CODE_SESSION_ID";
|
|
481
485
|
var PARENT_SESSION_KEYS = [
|
|
@@ -563,22 +567,19 @@ function message_of(error) {
|
|
|
563
567
|
}
|
|
564
568
|
var error_text = { message_of };
|
|
565
569
|
|
|
566
|
-
// scripts/
|
|
570
|
+
// scripts/gh/git-gh-exec.ts
|
|
567
571
|
import { execa as execa2, execaSync } from "execa";
|
|
568
572
|
|
|
569
|
-
// scripts/
|
|
570
|
-
|
|
571
|
-
if (typeof error !== "object" || error === null || !("timedOut" in error)) return false;
|
|
572
|
-
return error.timedOut === true;
|
|
573
|
-
}
|
|
573
|
+
// scripts/lib/timeouts.ts
|
|
574
|
+
var COMMAND_TIMEOUT_MS = 3e4;
|
|
574
575
|
|
|
575
|
-
// scripts/
|
|
576
|
+
// scripts/gh/git-gh-check.ts
|
|
576
577
|
import { execa } from "execa";
|
|
577
578
|
var GH_NOT_INSTALLED_MSG = "gh CLI is not installed. Install it from https://cli.github.com/";
|
|
578
579
|
var gh_check = {};
|
|
579
580
|
async function run_gh_check() {
|
|
580
581
|
try {
|
|
581
|
-
await execa("gh", ["--version"]);
|
|
582
|
+
await execa("gh", ["--version"], { timeout: COMMAND_TIMEOUT_MS });
|
|
582
583
|
} catch {
|
|
583
584
|
delete gh_check.promise;
|
|
584
585
|
throw new Error(GH_NOT_INSTALLED_MSG);
|
|
@@ -589,9 +590,6 @@ async function check_gh_installed() {
|
|
|
589
590
|
await gh_check.promise;
|
|
590
591
|
}
|
|
591
592
|
|
|
592
|
-
// scripts/git/git-gh-failure.ts
|
|
593
|
-
import { z as z3 } from "zod";
|
|
594
|
-
|
|
595
593
|
// scripts/git/parse-json-array.ts
|
|
596
594
|
var MALFORMED_JSON = /* @__PURE__ */ Symbol("malformed-json");
|
|
597
595
|
function parse_json_loose(raw_json) {
|
|
@@ -602,37 +600,17 @@ function parse_json_loose(raw_json) {
|
|
|
602
600
|
throw error;
|
|
603
601
|
}
|
|
604
602
|
}
|
|
605
|
-
function parse_json_array_or_undefined(raw_json, element_schema) {
|
|
606
|
-
const value = parse_json_loose(raw_json);
|
|
607
|
-
if (value === MALFORMED_JSON || !Array.isArray(value)) return void 0;
|
|
608
|
-
return element_schema.array().parse(value);
|
|
609
|
-
}
|
|
610
|
-
function read_json_listing(raw_json, element_schema) {
|
|
611
|
-
try {
|
|
612
|
-
const rows = parse_json_array_or_undefined(raw_json, element_schema);
|
|
613
|
-
return rows === void 0 ? { kind: "unreadable" } : { kind: "read", rows };
|
|
614
|
-
} catch {
|
|
615
|
-
return { kind: "unexpected_shape" };
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
function parse_json_array_safe(raw_json, element_schema) {
|
|
619
|
-
const value = parse_json_loose(raw_json);
|
|
620
|
-
if (value === MALFORMED_JSON) return [];
|
|
621
|
-
return element_schema.array().parse(value);
|
|
622
|
-
}
|
|
623
603
|
function parse_json_object_safe(raw_json, schema) {
|
|
624
604
|
const value = parse_json_loose(raw_json);
|
|
625
605
|
if (value === MALFORMED_JSON) return void 0;
|
|
626
606
|
return schema.parse(value);
|
|
627
607
|
}
|
|
628
608
|
var parse_json = {
|
|
629
|
-
|
|
630
|
-
parse_json_array_or_undefined,
|
|
631
|
-
parse_json_object_safe,
|
|
632
|
-
read_json_listing
|
|
609
|
+
parse_json_object_safe
|
|
633
610
|
};
|
|
634
611
|
|
|
635
|
-
// scripts/
|
|
612
|
+
// scripts/gh/git-gh-failure.ts
|
|
613
|
+
import { z as z3 } from "zod";
|
|
636
614
|
var error_document_schema = z3.object({ status: z3.union([z3.string(), z3.number()]).optional() }).catch({});
|
|
637
615
|
var GH_FAILURE_FIELD = "gh_failure";
|
|
638
616
|
function has_gh_failure(error) {
|
|
@@ -660,7 +638,7 @@ function failure_of(error) {
|
|
|
660
638
|
}
|
|
661
639
|
var gh_failure = { attach, classify_stdout, failure_of, parse_response_status };
|
|
662
640
|
|
|
663
|
-
// scripts/
|
|
641
|
+
// scripts/gh/git-gh-exec.ts
|
|
664
642
|
var BODY_FROM_STDIN = "-";
|
|
665
643
|
var GH_REQUEST_TIMEOUT_MS = 6e4;
|
|
666
644
|
function to_timeout_option(timeout_ms) {
|
|
@@ -808,6 +786,371 @@ var git_gh_exec = {
|
|
|
808
786
|
parse_status_line
|
|
809
787
|
};
|
|
810
788
|
|
|
789
|
+
// scripts/gh/fix-gh-packages-logic.ts
|
|
790
|
+
import { loadAll } from "js-yaml";
|
|
791
|
+
import { z as z4 } from "zod";
|
|
792
|
+
var GH_PACKAGES_HOST = "npm.pkg.github.com";
|
|
793
|
+
var RESOLUTION_BLOCK = "\n resolution:\n";
|
|
794
|
+
var INTEGRITY_PREFIX = " integrity: ";
|
|
795
|
+
var TARBALL_PREFIX = " tarball: ";
|
|
796
|
+
var FLOW_RESOLUTION_LINE_START = "\n resolution: {";
|
|
797
|
+
var FLOW_TARBALL_KEY = ", tarball: ";
|
|
798
|
+
var NPMRC_AUTH_TOKEN_PREFIX = `//${GH_PACKAGES_HOST}/:_authToken=`;
|
|
799
|
+
var REGISTRY_KEY = ":registry=";
|
|
800
|
+
var lockfile_resolution_schema = z4.looseObject({
|
|
801
|
+
integrity: z4.string().optional(),
|
|
802
|
+
tarball: z4.string().optional()
|
|
803
|
+
});
|
|
804
|
+
var lockfile_package_schema = z4.looseObject({
|
|
805
|
+
resolution: lockfile_resolution_schema.optional()
|
|
806
|
+
});
|
|
807
|
+
var lockfile_document_schema = z4.looseObject({
|
|
808
|
+
packages: z4.record(z4.string(), lockfile_package_schema).optional()
|
|
809
|
+
});
|
|
810
|
+
function parse_lockfile_packages(raw) {
|
|
811
|
+
const merged = {};
|
|
812
|
+
for (const document of loadAll(raw)) {
|
|
813
|
+
const { packages } = lockfile_document_schema.parse(document);
|
|
814
|
+
if (packages !== void 0) Object.assign(merged, packages);
|
|
815
|
+
}
|
|
816
|
+
return merged;
|
|
817
|
+
}
|
|
818
|
+
function extract_gh_registry_scope(line) {
|
|
819
|
+
const trimmed = line.trim();
|
|
820
|
+
if (!trimmed.startsWith("@")) return void 0;
|
|
821
|
+
const eq_index = trimmed.indexOf(REGISTRY_KEY);
|
|
822
|
+
if (eq_index === -1) return void 0;
|
|
823
|
+
const registry = trimmed.slice(eq_index + REGISTRY_KEY.length).trim().replace(/\/$/u, "");
|
|
824
|
+
if (registry !== `https://${GH_PACKAGES_HOST}`) return void 0;
|
|
825
|
+
return trimmed.slice(0, eq_index);
|
|
826
|
+
}
|
|
827
|
+
function parse_gh_scopes(npmrc) {
|
|
828
|
+
const scopes = /* @__PURE__ */ new Set();
|
|
829
|
+
for (const line of npmrc.split("\n")) {
|
|
830
|
+
const scope = extract_gh_registry_scope(line);
|
|
831
|
+
if (scope !== void 0) scopes.add(scope);
|
|
832
|
+
}
|
|
833
|
+
return scopes;
|
|
834
|
+
}
|
|
835
|
+
function extract_auth_token_from_line(line) {
|
|
836
|
+
const trimmed = line.trim();
|
|
837
|
+
if (!trimmed.startsWith(NPMRC_AUTH_TOKEN_PREFIX)) return void 0;
|
|
838
|
+
const value = trimmed.slice(NPMRC_AUTH_TOKEN_PREFIX.length);
|
|
839
|
+
if (value.startsWith("${") || value.length === 0) return void 0;
|
|
840
|
+
return value;
|
|
841
|
+
}
|
|
842
|
+
function parse_npmrc_auth_token(npmrc) {
|
|
843
|
+
for (const line of npmrc.split("\n")) {
|
|
844
|
+
const token = extract_auth_token_from_line(line);
|
|
845
|
+
if (token !== void 0) return token;
|
|
846
|
+
}
|
|
847
|
+
return void 0;
|
|
848
|
+
}
|
|
849
|
+
function scope_from_key(key) {
|
|
850
|
+
return key.startsWith("@") ? key.split("/", 1)[0] ?? "" : "";
|
|
851
|
+
}
|
|
852
|
+
function has_tarball(entry) {
|
|
853
|
+
return entry.resolution?.tarball !== void 0;
|
|
854
|
+
}
|
|
855
|
+
function package_path_from_key(key) {
|
|
856
|
+
const start = key.startsWith("@") ? 1 : 0;
|
|
857
|
+
const at_index = key.indexOf("@", start);
|
|
858
|
+
return at_index === -1 ? key : key.slice(0, at_index);
|
|
859
|
+
}
|
|
860
|
+
function package_version_from_key(key) {
|
|
861
|
+
const start = key.startsWith("@") ? 1 : 0;
|
|
862
|
+
const at_index = key.indexOf("@", start);
|
|
863
|
+
if (at_index === -1) return "";
|
|
864
|
+
return key.slice(at_index + 1).split("(", 1)[0] ?? "";
|
|
865
|
+
}
|
|
866
|
+
function should_fix_tarball(key, entry, scopes) {
|
|
867
|
+
if (has_tarball(entry)) return false;
|
|
868
|
+
const scope = scope_from_key(key);
|
|
869
|
+
return scope.length > 0 && scopes.has(scope);
|
|
870
|
+
}
|
|
871
|
+
function find_entry_start(content, package_key) {
|
|
872
|
+
const single = content.indexOf(`
|
|
873
|
+
'${package_key}':
|
|
874
|
+
`);
|
|
875
|
+
if (single !== -1) return single;
|
|
876
|
+
return content.indexOf(`
|
|
877
|
+
"${package_key}":
|
|
878
|
+
`);
|
|
879
|
+
}
|
|
880
|
+
function find_entry_end(content, entry_start) {
|
|
881
|
+
const next_match = /\n {2}['"]/u.exec(content.slice(entry_start + 1));
|
|
882
|
+
return next_match === null ? content.length : entry_start + 1 + next_match.index;
|
|
883
|
+
}
|
|
884
|
+
function find_integrity_eol_in_entry(entry_content) {
|
|
885
|
+
const resolution_pos = entry_content.indexOf(RESOLUTION_BLOCK);
|
|
886
|
+
if (resolution_pos === -1) return -1;
|
|
887
|
+
const integrity_pos = entry_content.indexOf(INTEGRITY_PREFIX, resolution_pos);
|
|
888
|
+
if (integrity_pos === -1) return -1;
|
|
889
|
+
return entry_content.indexOf("\n", integrity_pos);
|
|
890
|
+
}
|
|
891
|
+
function find_flow_resolution_brace(entry_content) {
|
|
892
|
+
const pos = entry_content.indexOf(FLOW_RESOLUTION_LINE_START);
|
|
893
|
+
if (pos === -1) return -1;
|
|
894
|
+
const line_end = entry_content.indexOf("\n", pos + 1);
|
|
895
|
+
const search_end = line_end === -1 ? entry_content.length : line_end;
|
|
896
|
+
const brace = entry_content.lastIndexOf("}", search_end);
|
|
897
|
+
if (brace <= pos) return -1;
|
|
898
|
+
return brace;
|
|
899
|
+
}
|
|
900
|
+
function insert_expanded_tarball(content, entry_start, entry_end, tarball) {
|
|
901
|
+
const entry_content = content.slice(entry_start, entry_end);
|
|
902
|
+
const integrity_eol = find_integrity_eol_in_entry(entry_content);
|
|
903
|
+
if (integrity_eol === -1) return void 0;
|
|
904
|
+
if (entry_content.slice(integrity_eol + 1).startsWith(TARBALL_PREFIX)) return content;
|
|
905
|
+
const patched = `${entry_content.slice(0, integrity_eol + 1)}${TARBALL_PREFIX}${tarball}
|
|
906
|
+
${entry_content.slice(integrity_eol + 1)}`;
|
|
907
|
+
return content.slice(0, entry_start) + patched + content.slice(entry_end);
|
|
908
|
+
}
|
|
909
|
+
function insert_flow_tarball(content, entry_start, entry_end, tarball) {
|
|
910
|
+
const entry_content = content.slice(entry_start, entry_end);
|
|
911
|
+
const brace_pos = find_flow_resolution_brace(entry_content);
|
|
912
|
+
if (brace_pos === -1) return void 0;
|
|
913
|
+
const open_brace = entry_content.lastIndexOf("{", brace_pos);
|
|
914
|
+
if (open_brace === -1) return void 0;
|
|
915
|
+
const flow_body = entry_content.slice(open_brace + 1, brace_pos);
|
|
916
|
+
if (/\btarball\s*:/u.test(flow_body)) return content;
|
|
917
|
+
const patched = `${entry_content.slice(0, brace_pos)}${FLOW_TARBALL_KEY}${tarball}${entry_content.slice(brace_pos)}`;
|
|
918
|
+
return content.slice(0, entry_start) + patched + content.slice(entry_end);
|
|
919
|
+
}
|
|
920
|
+
function insert_tarball_for_key(content, package_key, tarball) {
|
|
921
|
+
const entry_start = find_entry_start(content, package_key);
|
|
922
|
+
if (entry_start === -1) return content;
|
|
923
|
+
const entry_end = find_entry_end(content, entry_start);
|
|
924
|
+
return insert_expanded_tarball(content, entry_start, entry_end, tarball) ?? insert_flow_tarball(content, entry_start, entry_end, tarball) ?? content;
|
|
925
|
+
}
|
|
926
|
+
function patch_lockfile(content, patches) {
|
|
927
|
+
let result = content;
|
|
928
|
+
for (const [key, tarball] of patches) {
|
|
929
|
+
result = insert_tarball_for_key(result, key, tarball);
|
|
930
|
+
}
|
|
931
|
+
return result;
|
|
932
|
+
}
|
|
933
|
+
function resolve_token(environment_token, npmrc_token, get_fallback_token) {
|
|
934
|
+
if (environment_token !== void 0 && environment_token.length > 0) return environment_token;
|
|
935
|
+
if (npmrc_token !== void 0) return npmrc_token;
|
|
936
|
+
return get_fallback_token();
|
|
937
|
+
}
|
|
938
|
+
var fix_gh_packages_logic = {
|
|
939
|
+
parse_gh_scopes,
|
|
940
|
+
parse_npmrc_auth_token,
|
|
941
|
+
parse_lockfile_packages,
|
|
942
|
+
package_path_from_key,
|
|
943
|
+
package_version_from_key,
|
|
944
|
+
needs_tarball_fix: should_fix_tarball,
|
|
945
|
+
insert_tarball_for_key,
|
|
946
|
+
patch_lockfile,
|
|
947
|
+
resolve_token
|
|
948
|
+
};
|
|
949
|
+
|
|
950
|
+
// scripts/registry-migration/migrate-logic.ts
|
|
951
|
+
var SCOPE = "@joshuafolkken";
|
|
952
|
+
var REGISTRY_KEY2 = `${SCOPE}:registry`;
|
|
953
|
+
var PUBLIC_REGISTRY = "https://registry.npmjs.org/";
|
|
954
|
+
var GITHUB_REGISTRY = "https://npm.pkg.github.com/";
|
|
955
|
+
var MAPPING = `${REGISTRY_KEY2}=${PUBLIC_REGISTRY}`;
|
|
956
|
+
var REGISTRY_VALUE_INDEX = 1;
|
|
957
|
+
var SPLIT_LIMIT = 2;
|
|
958
|
+
function normalized_registry(value) {
|
|
959
|
+
let normalized = value.trim();
|
|
960
|
+
while (normalized.endsWith("/")) normalized = normalized.slice(0, -1);
|
|
961
|
+
return `${normalized}/`;
|
|
962
|
+
}
|
|
963
|
+
function mapping_lines(content) {
|
|
964
|
+
return content.split(/\r?\n/u).filter((line) => line.trimStart().startsWith(`${REGISTRY_KEY2}=`));
|
|
965
|
+
}
|
|
966
|
+
function registry_of(content) {
|
|
967
|
+
const lines = mapping_lines(content);
|
|
968
|
+
if (lines.length !== 1) return void 0;
|
|
969
|
+
return normalized_registry(lines[0]?.split("=", SPLIT_LIMIT)[REGISTRY_VALUE_INDEX] ?? "");
|
|
970
|
+
}
|
|
971
|
+
function scoped_packages(lockfile) {
|
|
972
|
+
const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
|
|
973
|
+
return Object.keys(packages).filter((key) => key.startsWith(`${SCOPE}/`)).map((key) => fix_gh_packages_logic.package_path_from_key(key)).filter((name, index, names) => names.indexOf(name) === index);
|
|
974
|
+
}
|
|
975
|
+
function scoped_versions(lockfile) {
|
|
976
|
+
const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
|
|
977
|
+
return Object.keys(packages).filter((key) => key.startsWith(`${SCOPE}/`)).map(
|
|
978
|
+
(key) => [
|
|
979
|
+
fix_gh_packages_logic.package_path_from_key(key),
|
|
980
|
+
fix_gh_packages_logic.package_version_from_key(key)
|
|
981
|
+
]
|
|
982
|
+
);
|
|
983
|
+
}
|
|
984
|
+
function is_github_tarball(value) {
|
|
985
|
+
try {
|
|
986
|
+
const url = new URL(value);
|
|
987
|
+
return url.protocol === "https:" && url.hostname === "npm.pkg.github.com";
|
|
988
|
+
} catch {
|
|
989
|
+
return false;
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
function github_tarballs(lockfile) {
|
|
993
|
+
const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
|
|
994
|
+
return Object.entries(packages).filter(
|
|
995
|
+
([key, entry]) => key.startsWith(`${SCOPE}/`) && entry.resolution?.tarball !== void 0 && is_github_tarball(entry.resolution.tarball)
|
|
996
|
+
).map(([key]) => key);
|
|
997
|
+
}
|
|
998
|
+
function remove_flow_tarball(line) {
|
|
999
|
+
const marker = ", tarball: https://npm.pkg.github.com/";
|
|
1000
|
+
const start = line.indexOf(marker);
|
|
1001
|
+
if (start === -1) return line;
|
|
1002
|
+
const end = line.indexOf("}", start);
|
|
1003
|
+
if (end === -1) return line;
|
|
1004
|
+
return `${line.slice(0, start)}${line.slice(end)}`;
|
|
1005
|
+
}
|
|
1006
|
+
function is_package_entry(line) {
|
|
1007
|
+
return /^ {2}[^ ]/u.test(line);
|
|
1008
|
+
}
|
|
1009
|
+
function is_github_tarball_line(line) {
|
|
1010
|
+
return line.trimStart().startsWith("tarball: https://npm.pkg.github.com/");
|
|
1011
|
+
}
|
|
1012
|
+
function clean_kit_line(line, version, integrities) {
|
|
1013
|
+
if (!version) return line;
|
|
1014
|
+
if (is_github_tarball_line(line)) return void 0;
|
|
1015
|
+
const cleaned = remove_flow_tarball(line);
|
|
1016
|
+
const pair = integrities.get(version);
|
|
1017
|
+
if (pair === void 0) return cleaned;
|
|
1018
|
+
return cleaned.split(`integrity: ${pair[0]}`).join(`integrity: ${pair[1]}`);
|
|
1019
|
+
}
|
|
1020
|
+
function next_kit_version(line, version) {
|
|
1021
|
+
if (!is_package_entry(line)) return version;
|
|
1022
|
+
const prefix = " '@joshuafolkken/kit@";
|
|
1023
|
+
return line.startsWith(prefix) ? line.slice(prefix.length).split("'", 1)[0] ?? "" : "";
|
|
1024
|
+
}
|
|
1025
|
+
function integrity_pair(old_integrity, npm_integrity) {
|
|
1026
|
+
if (old_integrity === void 0 || npm_integrity === void 0) return void 0;
|
|
1027
|
+
return [old_integrity, npm_integrity];
|
|
1028
|
+
}
|
|
1029
|
+
function lock_integrities(lockfile, npm_integrities) {
|
|
1030
|
+
const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
|
|
1031
|
+
const pairs = /* @__PURE__ */ new Map();
|
|
1032
|
+
const kit_entries = Object.entries(packages).filter(([key]) => key.startsWith(`${SCOPE}/kit@`));
|
|
1033
|
+
for (const [key, entry] of kit_entries) {
|
|
1034
|
+
const version = fix_gh_packages_logic.package_version_from_key(key);
|
|
1035
|
+
const pair = integrity_pair(entry.resolution?.integrity, npm_integrities.get(version));
|
|
1036
|
+
if (pair !== void 0) pairs.set(version, pair);
|
|
1037
|
+
}
|
|
1038
|
+
return pairs;
|
|
1039
|
+
}
|
|
1040
|
+
function push_if_defined(lines, cleaned) {
|
|
1041
|
+
if (cleaned !== void 0) lines.push(cleaned);
|
|
1042
|
+
}
|
|
1043
|
+
function rewrite_kit_lockfile(lockfile, npm_integrities) {
|
|
1044
|
+
let kit_version = "";
|
|
1045
|
+
const lines = [];
|
|
1046
|
+
const integrities = lock_integrities(lockfile, npm_integrities);
|
|
1047
|
+
for (const line of lockfile.split("\n")) {
|
|
1048
|
+
kit_version = next_kit_version(line, kit_version);
|
|
1049
|
+
const cleaned = clean_kit_line(line, kit_version, integrities);
|
|
1050
|
+
push_if_defined(lines, cleaned);
|
|
1051
|
+
}
|
|
1052
|
+
return lines.join("\n");
|
|
1053
|
+
}
|
|
1054
|
+
function append_mapping(content, eol) {
|
|
1055
|
+
const separator = content && !content.endsWith("\n") ? eol : "";
|
|
1056
|
+
return `${content}${separator}${MAPPING}${eol}`;
|
|
1057
|
+
}
|
|
1058
|
+
function replace_mapping(content) {
|
|
1059
|
+
const lines = mapping_lines(content);
|
|
1060
|
+
const eol = content.includes("\r\n") ? "\r\n" : "\n";
|
|
1061
|
+
if (lines.length === 0) return append_mapping(content, eol);
|
|
1062
|
+
return content.split(/\r?\n/u).map((line) => line === lines[0] ? MAPPING : line).join(eol);
|
|
1063
|
+
}
|
|
1064
|
+
function unsupported_registry(project_npmrc) {
|
|
1065
|
+
const registry = registry_of(project_npmrc);
|
|
1066
|
+
if (registry === void 0 || [GITHUB_REGISTRY, PUBLIC_REGISTRY].includes(registry)) {
|
|
1067
|
+
return void 0;
|
|
1068
|
+
}
|
|
1069
|
+
return `unsupported project registry: ${registry}`;
|
|
1070
|
+
}
|
|
1071
|
+
function has_duplicate_mapping(project_npmrc, user_npmrc) {
|
|
1072
|
+
return mapping_lines(project_npmrc).length > 1 || mapping_lines(user_npmrc).length > 1;
|
|
1073
|
+
}
|
|
1074
|
+
function previous_registry(project_npmrc, user_npmrc) {
|
|
1075
|
+
return registry_of(project_npmrc) ?? registry_of(user_npmrc) ?? "default npm";
|
|
1076
|
+
}
|
|
1077
|
+
function plan(project_npmrc, user_npmrc, lockfile) {
|
|
1078
|
+
const packages = scoped_packages(lockfile);
|
|
1079
|
+
const blocked = packages.filter((name) => name !== `${SCOPE}/kit`);
|
|
1080
|
+
if (has_duplicate_mapping(project_npmrc, user_npmrc)) blocked.push("duplicate registry mappings");
|
|
1081
|
+
const unsupported = unsupported_registry(project_npmrc);
|
|
1082
|
+
if (unsupported !== void 0) blocked.push(unsupported);
|
|
1083
|
+
const before = previous_registry(project_npmrc, user_npmrc);
|
|
1084
|
+
const change = `${before} \u2192 ${PUBLIC_REGISTRY}`;
|
|
1085
|
+
return { content: replace_mapping(project_npmrc), packages, blocked, change };
|
|
1086
|
+
}
|
|
1087
|
+
var migrate_logic = {
|
|
1088
|
+
plan,
|
|
1089
|
+
github_tarballs,
|
|
1090
|
+
is_github_tarball,
|
|
1091
|
+
rewrite_kit_lockfile,
|
|
1092
|
+
scoped_versions
|
|
1093
|
+
};
|
|
1094
|
+
|
|
1095
|
+
// scripts/version/npm-registry.ts
|
|
1096
|
+
import { execaSync as execaSync2 } from "execa";
|
|
1097
|
+
import { z as z5 } from "zod";
|
|
1098
|
+
var PUBLIC_REGISTRY2 = "https://registry.npmjs.org";
|
|
1099
|
+
var ABBREVIATED_ACCEPT = "application/vnd.npm.install-v1+json";
|
|
1100
|
+
var FULL_ACCEPT = "application/json";
|
|
1101
|
+
var REQUEST_TIMEOUT_MS = 1e4;
|
|
1102
|
+
var SCOPE_SEPARATOR = "/";
|
|
1103
|
+
var ENCODED_SCOPE_SEPARATOR = "%2f";
|
|
1104
|
+
var SCOPE_PATTERN = /^@[^/]+(?=\/)/u;
|
|
1105
|
+
var SCOPE_REGISTRY_SUFFIX = ":registry";
|
|
1106
|
+
var github_scopes = /* @__PURE__ */ new Map();
|
|
1107
|
+
var FETCH_SCRIPT = [
|
|
1108
|
+
"const [url, accept] = process.argv.slice(1)",
|
|
1109
|
+
"const response = await fetch(url, { headers: { accept } })",
|
|
1110
|
+
"if (!response.ok) process.exit(1)",
|
|
1111
|
+
"process.stdout.write(await response.text())"
|
|
1112
|
+
].join("\n");
|
|
1113
|
+
var latest_schema = z5.looseObject({ "dist-tags": z5.looseObject({ latest: z5.string() }) });
|
|
1114
|
+
var times_schema = z5.looseObject({ time: release_age.release_times_schema });
|
|
1115
|
+
function packument_url(package_name) {
|
|
1116
|
+
return `${PUBLIC_REGISTRY2}/${package_name.replace(SCOPE_SEPARATOR, () => ENCODED_SCOPE_SEPARATOR)}`;
|
|
1117
|
+
}
|
|
1118
|
+
function read_packument(package_name, accept) {
|
|
1119
|
+
const result = execaSync2(
|
|
1120
|
+
process.execPath,
|
|
1121
|
+
["--input-type=module", "-e", FETCH_SCRIPT, packument_url(package_name), accept],
|
|
1122
|
+
{ reject: false, timeout: REQUEST_TIMEOUT_MS }
|
|
1123
|
+
);
|
|
1124
|
+
if (result.exitCode !== 0) return void 0;
|
|
1125
|
+
return json_value.parse_or_undefined(result.stdout);
|
|
1126
|
+
}
|
|
1127
|
+
function is_github_scope(scope) {
|
|
1128
|
+
const is_cached_github = github_scopes.get(scope);
|
|
1129
|
+
if (is_cached_github !== void 0) return is_cached_github;
|
|
1130
|
+
const result = execaSync2("pnpm", ["config", "get", `${scope}${SCOPE_REGISTRY_SUFFIX}`], {
|
|
1131
|
+
reject: false,
|
|
1132
|
+
timeout: REQUEST_TIMEOUT_MS
|
|
1133
|
+
});
|
|
1134
|
+
const is_github = result.exitCode === 0 && migrate_logic.is_github_tarball(result.stdout.trim());
|
|
1135
|
+
github_scopes.set(scope, is_github);
|
|
1136
|
+
return is_github;
|
|
1137
|
+
}
|
|
1138
|
+
function is_public_source(package_name) {
|
|
1139
|
+
const scope = SCOPE_PATTERN.exec(package_name)?.[0];
|
|
1140
|
+
return scope === void 0 || !is_github_scope(scope);
|
|
1141
|
+
}
|
|
1142
|
+
function read_latest(package_name) {
|
|
1143
|
+
if (!is_public_source(package_name)) return void 0;
|
|
1144
|
+
const parsed = latest_schema.safeParse(read_packument(package_name, ABBREVIATED_ACCEPT));
|
|
1145
|
+
return parsed.success ? parsed.data["dist-tags"].latest : void 0;
|
|
1146
|
+
}
|
|
1147
|
+
function read_release_times(package_name) {
|
|
1148
|
+
if (!is_public_source(package_name)) return void 0;
|
|
1149
|
+
const parsed = times_schema.safeParse(read_packument(package_name, FULL_ACCEPT));
|
|
1150
|
+
return parsed.success ? parsed.data.time : void 0;
|
|
1151
|
+
}
|
|
1152
|
+
var npm_registry = { packument_url, read_latest, read_release_times };
|
|
1153
|
+
|
|
811
1154
|
// scripts/version/version-remote.ts
|
|
812
1155
|
var TIMES_PAGE_SIZE = 100;
|
|
813
1156
|
var TIMES_JQ = "[.[] | {(.name): .created_at}] | add";
|
|
@@ -819,6 +1162,8 @@ function require_endpoint(versions_endpoint, package_name) {
|
|
|
819
1162
|
}
|
|
820
1163
|
function fetch_latest_version(versions_endpoint, package_name) {
|
|
821
1164
|
const endpoint = require_endpoint(versions_endpoint, package_name);
|
|
1165
|
+
const public_latest = npm_registry.read_latest(package_name);
|
|
1166
|
+
if (public_latest !== void 0) return public_latest;
|
|
822
1167
|
try {
|
|
823
1168
|
return git_gh_exec.exec_gh_api_sync({ path: endpoint, jq_filter: ".[0].name" }).trim();
|
|
824
1169
|
} catch (error) {
|
|
@@ -838,14 +1183,17 @@ function with_page_size(endpoint, page_size) {
|
|
|
838
1183
|
query.set("per_page", String(page_size));
|
|
839
1184
|
return `${path_part}?${query.toString()}`;
|
|
840
1185
|
}
|
|
841
|
-
function
|
|
842
|
-
if (versions_endpoint === void 0 || versions_endpoint.trim() === "") return void 0;
|
|
1186
|
+
function read_github_release_times(versions_endpoint) {
|
|
843
1187
|
const endpoint = with_page_size(versions_endpoint, TIMES_PAGE_SIZE);
|
|
844
1188
|
const stdout = git_gh_exec.read_gh_api_sync({ path: endpoint, jq_filter: TIMES_JQ });
|
|
845
1189
|
if (stdout === void 0) return void 0;
|
|
846
|
-
const parsed = release_age.release_times_schema.safeParse(
|
|
1190
|
+
const parsed = release_age.release_times_schema.safeParse(json_value.parse_or_undefined(stdout));
|
|
847
1191
|
return parsed.success ? parsed.data : void 0;
|
|
848
1192
|
}
|
|
1193
|
+
function fetch_release_times(versions_endpoint, package_name) {
|
|
1194
|
+
if (versions_endpoint === void 0 || versions_endpoint.trim() === "") return void 0;
|
|
1195
|
+
return npm_registry.read_release_times(package_name) ?? read_github_release_times(versions_endpoint);
|
|
1196
|
+
}
|
|
849
1197
|
|
|
850
1198
|
// scripts/version/version-targets.ts
|
|
851
1199
|
import path4 from "node:path";
|
|
@@ -877,24 +1225,24 @@ function read_if_readable(path5) {
|
|
|
877
1225
|
var file_reader = { read_optional, read_file_or_empty, read_if_readable };
|
|
878
1226
|
|
|
879
1227
|
// scripts/version/version-targets.ts
|
|
880
|
-
import { execaSync as
|
|
1228
|
+
import { execaSync as execaSync3 } from "execa";
|
|
881
1229
|
var NODE_MODULES2 = "node_modules";
|
|
882
1230
|
var PACKAGE_JSON3 = "package.json";
|
|
883
1231
|
function build_pnpm_ls_arguments(package_name) {
|
|
884
1232
|
return ["ls", "-g", "--json", package_name];
|
|
885
1233
|
}
|
|
886
1234
|
function parse_global_version(stdout, package_name) {
|
|
887
|
-
const parsed = pnpm_ls_global_schema.safeParse(
|
|
1235
|
+
const parsed = pnpm_ls_global_schema.safeParse(json_value.parse_or_undefined(stdout));
|
|
888
1236
|
if (!parsed.success) return void 0;
|
|
889
1237
|
return parsed.data[0]?.dependencies?.[package_name]?.version;
|
|
890
1238
|
}
|
|
891
1239
|
function parse_project_version(raw) {
|
|
892
1240
|
if (raw === void 0) return void 0;
|
|
893
|
-
const parsed = package_version_schema.safeParse(
|
|
1241
|
+
const parsed = package_version_schema.safeParse(json_value.parse_or_undefined(raw));
|
|
894
1242
|
return parsed.success ? parsed.data.version : void 0;
|
|
895
1243
|
}
|
|
896
1244
|
function read_global_version(package_name) {
|
|
897
|
-
const result =
|
|
1245
|
+
const result = execaSync3("pnpm", build_pnpm_ls_arguments(package_name), { reject: false });
|
|
898
1246
|
return parse_global_version(result.stdout, package_name);
|
|
899
1247
|
}
|
|
900
1248
|
function project_package_path(cwd, package_name) {
|
|
@@ -928,12 +1276,12 @@ var version_targets = {
|
|
|
928
1276
|
var FAILURE_EXIT_CODE = 1;
|
|
929
1277
|
var ALREADY_UP_TO_DATE = "Already up to date";
|
|
930
1278
|
var NO_QUARANTINE_MINUTES2 = 0;
|
|
931
|
-
function read_release_hold(
|
|
1279
|
+
function read_release_hold(package_config, latest, versions) {
|
|
932
1280
|
if (versions.every((version) => version === void 0 || version === latest)) return void 0;
|
|
933
1281
|
const minimum_age_minutes = release_age.read_nearest_minimum_release_age(process.cwd());
|
|
934
1282
|
if (minimum_age_minutes <= NO_QUARANTINE_MINUTES2) return void 0;
|
|
935
1283
|
const installable = release_hold.resolve_installable(
|
|
936
|
-
fetch_release_times(versions_endpoint),
|
|
1284
|
+
fetch_release_times(package_config.versions_endpoint, package_config.package_name),
|
|
937
1285
|
latest,
|
|
938
1286
|
minimum_age_minutes,
|
|
939
1287
|
Date.now()
|
|
@@ -990,7 +1338,7 @@ function read_upstream_report(upstream, config, snapshot, is_hold_wanted) {
|
|
|
990
1338
|
const project_version = version_targets.read_project_version(process.cwd(), upstream.package_name);
|
|
991
1339
|
const report = { config: upstream, project_version, latest };
|
|
992
1340
|
attach_upstream_effective(report, config, snapshot, upstream);
|
|
993
|
-
const hold = is_hold_wanted ? read_release_hold(upstream
|
|
1341
|
+
const hold = is_hold_wanted ? read_release_hold(upstream, latest, [report.effective?.version]) : void 0;
|
|
994
1342
|
if (hold !== void 0) report.hold = hold;
|
|
995
1343
|
return report;
|
|
996
1344
|
}
|
|
@@ -1012,7 +1360,7 @@ function run_check(config) {
|
|
|
1012
1360
|
);
|
|
1013
1361
|
}
|
|
1014
1362
|
function run_upgrade_command(command) {
|
|
1015
|
-
const result =
|
|
1363
|
+
const result = execaSync4("sh", ["-c", command], { stdio: "inherit", reject: false });
|
|
1016
1364
|
return result.exitCode ?? FAILURE_EXIT_CODE;
|
|
1017
1365
|
}
|
|
1018
1366
|
function run_all_upgrade_commands(commands) {
|
package/eslint/rules/promise.js
CHANGED
|
@@ -5,6 +5,11 @@ export const promise_rules = {
|
|
|
5
5
|
'promise/param-names': 'error',
|
|
6
6
|
'promise/no-nesting': 'error',
|
|
7
7
|
|
|
8
|
+
// ループ内で 1 つずつ await すると、独立した処理まで直列になる。Sonar の S9382 と同じ指摘を
|
|
9
|
+
// ローカルのゲートで先に出す。ポーリングや順序が意味を持つ処理など意図的な逐次は、
|
|
10
|
+
// `// eslint-disable-next-line no-await-in-loop -- <理由>` で理由を残して抑止する。
|
|
11
|
+
'no-await-in-loop': 'error',
|
|
12
|
+
|
|
8
13
|
// `promise-function-async` を有効にしている以上、`require-await` は同時に満たせない。
|
|
9
14
|
// Promise を返す契約の関数(execa モックなど)は async である必要がある一方、
|
|
10
15
|
// 実際に await する対象を持たないため `require-await` が必ず発火する。
|