@joshuafolkken/kit 1.1514.0 → 1.2114.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/agents/investigator.md +1 -1
- package/.claude/agents/reviewer-verification.md +19 -0
- package/.claude/agents/reviewer.md +19 -0
- package/.claude/settings.json +5 -6
- package/.claude/skills/dependency-update/SKILL.md +9 -10
- package/.claude/skills/epic-commands/SKILL.md +26 -65
- package/.claude/skills/epic-commands/epic-bundle.md +3 -1
- package/.claude/skills/workflow-commands/SKILL.md +11 -11
- package/.claude/skills/workflow-commands/background-commands.md +13 -10
- package/.claude/skills/workflow-commands/backlogrun-child.md +12 -8
- package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +7 -25
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +18 -14
- package/.claude/skills/workflow-commands/backlogrun-park.md +18 -24
- package/.claude/skills/workflow-commands/backlogrun-progress.md +4 -5
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +6 -6
- package/.claude/skills/workflow-commands/backlogrun-steps.md +12 -11
- package/.claude/skills/workflow-commands/backlogrun.md +1 -1
- package/.claude/skills/workflow-commands/chain-rule.md +43 -28
- package/.claude/skills/workflow-commands/delegation.md +11 -10
- package/.claude/skills/workflow-commands/entry-sequence.md +10 -10
- package/.claude/skills/workflow-commands/followup.md +16 -36
- package/.claude/skills/workflow-commands/fullrun-steps.md +38 -47
- package/.claude/skills/workflow-commands/fullrun.md +3 -3
- package/.claude/skills/workflow-commands/halfrun.md +17 -25
- package/.claude/skills/workflow-commands/issue-comments.md +25 -16
- package/.claude/skills/workflow-commands/issue-fold-existing.md +2 -1
- package/.claude/skills/workflow-commands/issue-scout.md +2 -2
- package/.claude/skills/workflow-commands/kickoff.md +24 -23
- package/.claude/skills/workflow-commands/latest-gate.md +7 -12
- package/.claude/skills/workflow-commands/needs-human-review.md +9 -14
- package/.claude/skills/workflow-commands/observation-filing.md +4 -36
- package/.claude/skills/workflow-commands/observation-ledger.md +6 -4
- package/.claude/skills/workflow-commands/pre-gate-cut.md +22 -37
- package/.claude/skills/workflow-commands/prerequisite.md +11 -16
- package/.claude/skills/workflow-commands/progress-watcher.md +1 -1
- package/.claude/skills/workflow-commands/prrun.md +3 -7
- package/.claude/skills/workflow-commands/retrospective.md +2 -2
- package/.claude/skills/workflow-commands/split-assessment.md +15 -1
- package/.claude/skills/workflow-commands/working-tree-hold.md +9 -9
- package/.codex/hooks.json +5 -5
- package/.github/actions/setup-node/action.yml +9 -0
- package/.github/actions/setup-pnpm/action.yml +10 -17
- package/.github/dependabot.yml +32 -0
- package/.github/release.yml +0 -2
- package/.github/workflows/auto-tag.yml +45 -0
- package/.github/workflows/ci.yml +267 -17
- package/.github/workflows/dependabot-auto-merge.yml +63 -4
- package/.github/workflows/production.yml +8 -0
- package/.github/workflows/publish.yml +67 -46
- package/.github/workflows/sonar-qube.yml +1 -0
- package/.prettierignore +2 -0
- package/.vscode/settings.json +19 -0
- package/.vscode/tasks.json +1 -2
- package/CLAUDE.md +7 -18
- package/README.md +4 -2
- package/SECURITY.md +3 -3
- package/dist/CLAUDE.md +7 -18
- package/dist/commands/document-read-cli.js +883 -0
- package/dist/commands/{document-section-cli.js → document-section-main.js} +81 -38
- package/dist/commands/read-set-cli.js +1927 -0
- package/dist/commands/run-prep-main.js +21174 -0
- package/dist/commands/run-step-cli.js +27733 -0
- package/dist/config-merge/index.js +5 -1
- package/dist/hooks/audit-provision.js +39 -36
- package/dist/hooks/chunk-3GKE653K.js +6204 -0
- package/dist/hooks/chunk-45CJJOO7.js +1243 -0
- package/dist/hooks/chunk-5PM2JRGV.js +7780 -0
- package/dist/hooks/chunk-7SIUNQXK.js +3591 -0
- package/dist/hooks/chunk-CQD4LJE6.js +4858 -0
- package/dist/hooks/{chunk-723HKZO5.js → chunk-OPSRGWFU.js} +1 -1
- package/dist/hooks/chunk-UJ3FPMMM.js +628 -0
- package/dist/hooks/chunk-VVNYJWEI.js +30 -0
- package/dist/hooks/chunk-Z6DQJKH3.js +2806 -0
- package/dist/hooks/codex-hook-adapter.js +10 -22
- package/dist/hooks/format-edited.js +4 -6
- package/dist/hooks/inputs.json +460 -308
- package/dist/hooks/pretool-guard.js +8 -25
- package/dist/hooks/session-lang.js +135 -299
- package/dist/hooks/stop-guard.js +6496 -1799
- package/dist/josh.js +7412 -4228
- package/dist/self-sync-guard/index.js +74 -10
- package/dist/version/index.js +276 -407
- package/eslint/base.js +1 -1
- package/eslint/rules/comment-why-only.js +108 -0
- package/lefthook/base.yml +3 -1
- package/package.json +23 -54
- package/pnpm-workspace.yaml +4 -2
- package/prompts/coding-standards.md +2 -2
- package/prompts/collaboration-workflow/file-edits.md +14 -17
- package/prompts/collaboration-workflow/issue-citation.md +0 -4
- package/prompts/collaboration-workflow/issue-template.md +54 -18
- package/prompts/collaboration-workflow/lane-instructions.md +3 -2
- package/prompts/collaboration-workflow/measurement.md +44 -0
- package/prompts/collaboration-workflow/operating-rules.md +15 -8
- package/prompts/collaboration-workflow/output-bounds.md +6 -7
- package/prompts/collaboration-workflow/plan-comment.md +3 -42
- package/prompts/collaboration-workflow/principles.md +14 -0
- package/prompts/collaboration-workflow/report-format.md +31 -60
- package/prompts/collaboration-workflow/residency.md +3 -2
- package/prompts/collaboration-workflow/rule-delivery.md +13 -1
- package/prompts/collaboration-workflow/shell-body.md +6 -16
- package/prompts/collaboration-workflow/turn-batching.md +0 -2
- package/prompts/collaboration-workflow/upstream-interrupt.md +15 -5
- package/prompts/collaboration-workflow/wip-cap.md +4 -2
- package/prompts/collaboration-workflow.md +3 -7
- package/prompts/refactoring.md +1 -1
- package/prompts/review-rubric.md +9 -2
- package/prompts/review.md +65 -36
- package/prompts/testing-guide.md +9 -43
- package/scripts/agent/agent-argv.ts +14 -16
- package/scripts/agent/agent-event.ts +15 -15
- package/scripts/agent/agent-exit-record.ts +13 -1
- package/scripts/agent/agent-provider.ts +138 -0
- package/scripts/agent/agent-role-profile.ts +108 -156
- package/scripts/agent/agent-safe-text.ts +20 -5
- package/scripts/agent/api-auth.ts +41 -0
- package/scripts/agent/api-outage.ts +1 -1
- package/scripts/agent/api-usage-limit.ts +65 -0
- package/scripts/agent/claude-agent-argv.ts +19 -9
- package/scripts/agent/codex-agent-argv.ts +118 -22
- package/scripts/agent/usage-limit-reset.ts +179 -0
- package/scripts/auth/claude-token-output.ts +2 -2
- package/scripts/auto-ok/auto-ok-author.ts +53 -0
- package/scripts/auto-ok/auto-ok-cli.ts +25 -16
- package/scripts/auto-ok/auto-ok-judge-read.ts +12 -3
- package/scripts/auto-ok/auto-ok-judge-write.ts +46 -19
- package/scripts/auto-ok/auto-ok-judge.ts +13 -2
- package/scripts/auto-ok/auto-ok-main.ts +17 -0
- package/scripts/backlog/backlog-arrival.ts +14 -3
- package/scripts/backlog/backlog-budget-cli.ts +7 -33
- package/scripts/backlog/backlog-budget-main.ts +16 -0
- package/scripts/backlog/backlog-budget.ts +2 -3
- package/scripts/backlog/backlog-defect-priority.ts +5 -4
- package/scripts/backlog/backlog-drive-adopt.ts +67 -0
- package/scripts/backlog/backlog-drive-args.ts +4 -5
- package/scripts/backlog/backlog-drive-cli.ts +118 -28
- package/scripts/backlog/backlog-drive-hold.ts +162 -0
- package/scripts/backlog/backlog-drive-idle.ts +161 -0
- package/scripts/backlog/backlog-drive-judge.ts +25 -0
- package/scripts/backlog/backlog-drive-launch-pass.ts +90 -0
- package/scripts/backlog/backlog-drive-launch.ts +8 -2
- package/scripts/backlog/backlog-drive-memory.ts +126 -0
- package/scripts/backlog/backlog-drive-named-offer.ts +73 -35
- package/scripts/backlog/backlog-drive-named.ts +81 -13
- package/scripts/backlog/backlog-drive-offer-argv.ts +3 -8
- package/scripts/backlog/backlog-drive-paused.ts +170 -0
- package/scripts/backlog/backlog-drive-restore.ts +39 -8
- package/scripts/backlog/backlog-drive-seats.ts +18 -8
- package/scripts/backlog/backlog-drive-token-handling.ts +38 -0
- package/scripts/backlog/backlog-drive.ts +96 -131
- package/scripts/backlog/backlog-gate-scope.ts +61 -0
- package/scripts/backlog/backlog-measure-close.ts +112 -0
- package/scripts/backlog/backlog-next-main.ts +16 -0
- package/scripts/backlog/backlog-next-shared.ts +73 -0
- package/scripts/backlog/backlog-next.ts +78 -56
- package/scripts/backlog/backlog-occupied.ts +52 -39
- package/scripts/backlog/backlog-offer-cli.ts +6 -21
- package/scripts/backlog/backlog-offer-exclude.ts +15 -0
- package/scripts/backlog/backlog-offer-main.ts +12 -0
- package/scripts/backlog/backlog-offer.ts +36 -3
- package/scripts/backlog/backlog-overlap.ts +62 -10
- package/scripts/backlog/backlog-plan-cli.ts +4 -1
- package/scripts/backlog/backlog-plan-comment.ts +81 -0
- package/scripts/backlog/backlog-plan-read.ts +22 -5
- package/scripts/backlog/backlog-plan.ts +18 -4
- package/scripts/backlog/backlog-pool.ts +60 -22
- package/scripts/backlog/backlog-rank.ts +70 -15
- package/scripts/backlog/backlog-ready.ts +112 -30
- package/scripts/backlog/backlog-stalled-detect.ts +110 -36
- package/scripts/backlog/backlog-stalled.ts +52 -16
- package/scripts/backlog/backlog-wait-cause.ts +86 -0
- package/scripts/backlog/backlog-waves.ts +56 -15
- package/scripts/backlog/backlogrun-args.ts +19 -7
- package/scripts/backlog/backlogrun-cli.ts +19 -5
- package/scripts/backlog/backlogrun-launch.ts +13 -4
- package/scripts/backlog/backlogrun-restart.ts +97 -0
- package/scripts/backlog/backlogrun-stop.ts +79 -7
- package/scripts/behavior/behavior-cli.ts +2 -2
- package/scripts/behavior/behavior-rules.ts +47 -24
- package/scripts/build/build-bin.ts +2 -16
- package/scripts/build/build-claude-md.ts +0 -7
- package/scripts/build/build-commands.ts +0 -13
- package/scripts/build/build-hooks.ts +49 -48
- package/scripts/build/hook-bundle-stamp.ts +29 -11
- package/scripts/build/local-bin.ts +1 -1
- package/scripts/cases/cases-cli.ts +25 -13
- package/scripts/cases/cases-interaction-scan.ts +134 -0
- package/scripts/cases/cases-interaction.ts +183 -0
- package/scripts/cases/cases-logic.ts +39 -6
- package/scripts/ci/pr-classification-main.ts +18 -0
- package/scripts/ci/pr-classification.ts +10 -17
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/cost-runtime/context-cut-payback.ts +27 -25
- package/scripts/cost-runtime/cost-blocks.ts +22 -37
- package/scripts/cost-runtime/cost-cli.ts +67 -29
- package/scripts/cost-runtime/cost-main.ts +12 -0
- package/scripts/cost-runtime/cost-pricing.ts +9 -0
- package/scripts/cost-runtime/cost-transcript.ts +1 -0
- package/scripts/cost-runtime/cost-verdict.ts +4 -1
- package/scripts/delegation/delegation-policy.ts +18 -5
- package/scripts/delegation/duplicate-read-guard.ts +1 -8
- package/scripts/delegation/investigation-guard.ts +12 -8
- package/scripts/delegation/investigation-reads.ts +48 -27
- package/scripts/dependabot/dependabot-cooldown.ts +195 -0
- package/scripts/discovery/repo-discovery.ts +24 -6
- package/scripts/discovery/repo-party.ts +80 -20
- package/scripts/discovery/session-owner-pin.ts +51 -0
- package/scripts/doctor/doctor-consumer.ts +2 -5
- package/scripts/document/capped-print.ts +1 -1
- package/scripts/document/command-reference-line-budget.ts +42 -0
- package/scripts/document/document-byte-budget.ts +18 -6
- package/scripts/document/document-checks.ts +20 -0
- package/scripts/document/document-ratchet-check.ts +101 -0
- package/scripts/document/document-scan.ts +1 -1
- package/scripts/document/document-section-cli.ts +0 -8
- package/scripts/document/document-section-main.ts +12 -0
- package/scripts/document/document-section.ts +1 -0
- package/scripts/document/entry-read-budget.ts +7 -3
- package/scripts/document/issue-citation-budget.ts +94 -0
- package/scripts/epic/epic-audit-cli.ts +12 -6
- package/scripts/epic/epic-bundle-apply.ts +137 -0
- package/scripts/epic/epic-bundle-cli.ts +32 -121
- package/scripts/epic/epic-bundle-format.ts +116 -0
- package/scripts/epic/epic-bundle-main.ts +17 -0
- package/scripts/epic/epic-busy.ts +5 -12
- package/scripts/epic/epic-classify.ts +24 -15
- package/scripts/epic/epic-cli-argv.ts +33 -2
- package/scripts/epic/epic-cli-decide.ts +42 -0
- package/scripts/epic/epic-cli.ts +6 -38
- package/scripts/epic/epic-close.ts +112 -55
- package/scripts/epic/epic-cross-repo.ts +4 -7
- package/scripts/epic/epic-decide.ts +119 -0
- package/scripts/epic/epic-decision.ts +9 -0
- package/scripts/epic/epic-fetch.ts +6 -0
- package/scripts/epic/epic-graph.ts +8 -1
- package/scripts/epic/epic-issue.ts +8 -2
- package/scripts/epic/epic-label-age.ts +1 -1
- package/scripts/epic/epic-lane-offer.ts +39 -4
- package/scripts/epic/epic-next-main.ts +24 -0
- package/scripts/epic/epic-next.ts +6 -24
- package/scripts/epic/epic-outside-blocker.ts +6 -2
- package/scripts/epic/epic-parse.ts +9 -3
- package/scripts/epic/epic-rank.ts +5 -0
- package/scripts/epic/epic-read.ts +1 -0
- package/scripts/epic/epic-reconcile.ts +39 -0
- package/scripts/epic/epic-run.ts +10 -1
- package/scripts/epic/epic-solo.ts +50 -14
- package/scripts/epic/epic.ts +41 -7
- package/scripts/exports/unused-members-check.ts +62 -0
- package/scripts/exports/unused-members-cli.ts +6 -51
- package/scripts/followup/followup-checks-event.ts +8 -3
- package/scripts/followup/followup-ci-path.ts +67 -0
- package/scripts/followup/followup-coderabbit-retrigger.ts +261 -0
- package/scripts/followup/followup-coderabbit-wait.ts +85 -0
- package/scripts/followup/followup-failed-tests.ts +160 -0
- package/scripts/followup/followup-job-needs.ts +100 -0
- package/scripts/followup/followup-job-rerun.ts +303 -0
- package/scripts/followup/followup-main-move.ts +113 -0
- package/scripts/followup/followup-review-gates.ts +81 -0
- package/scripts/followup/git-followup-finish.ts +43 -11
- package/scripts/followup/git-followup-pending.ts +3 -3
- package/scripts/followup/git-followup-stages.ts +52 -12
- package/scripts/followup/git-followup-workflow.ts +19 -66
- package/scripts/followup/git-pr-followup-checks.ts +55 -16
- package/scripts/followup/git-pr-followup-wrapup.ts +32 -18
- package/scripts/followup/git-pr-followup.ts +96 -33
- package/scripts/fresh-machine/fresh-machine-cli.ts +1 -1
- package/scripts/fresh-machine/fresh-machine-run.ts +8 -8
- package/scripts/fresh-machine/fresh-machine-script.ts +5 -9
- package/scripts/fresh-machine/specs/kit-test-backlogrun-python.json +2 -2
- package/scripts/fresh-machine/specs/kit-test-backlogrun.json +3 -3
- package/scripts/gate/busy-average.ts +90 -0
- package/scripts/gate/check-cpu.ts +60 -0
- package/scripts/gate/check-inputs.ts +39 -95
- package/scripts/gate/check-related-pinned.ts +43 -0
- package/scripts/gate/check-related-reuse.ts +64 -0
- package/scripts/gate/check-related-section.ts +57 -0
- package/scripts/gate/check-related-unplanned.ts +34 -0
- package/scripts/gate/check-related.ts +265 -0
- package/scripts/gate/check-reuse.ts +33 -54
- package/scripts/gate/command-memory.ts +192 -0
- package/scripts/gate/core-admission.ts +236 -28
- package/scripts/gate/core-budget-timing.ts +51 -0
- package/scripts/gate/core-budget.ts +111 -100
- package/scripts/gate/core-wait-record.ts +49 -0
- package/scripts/gate/core-wait.ts +62 -7
- package/scripts/gate/core-weights.ts +94 -0
- package/scripts/gate/free-cores.ts +27 -4
- package/scripts/gate/gate-labels.ts +46 -0
- package/scripts/gate/gate-ledger.ts +44 -8
- package/scripts/gate/gate-plan.ts +130 -78
- package/scripts/gate/gate-report.ts +23 -9
- package/scripts/gate/gate-run-steps.ts +77 -9
- package/scripts/gate/gate-skip.ts +57 -8
- package/scripts/gate/gate-static-group.ts +60 -0
- package/scripts/gate/gate-steps.ts +14 -2
- package/scripts/gate/gate-tree.ts +4 -2
- package/scripts/gate/hook-gate-reuse.ts +19 -2
- package/scripts/gate/input-fingerprint.ts +42 -0
- package/scripts/gate/machine-capacity.ts +65 -31
- package/scripts/gate/metrics-totals.ts +59 -0
- package/scripts/gate/moved-paths.ts +67 -0
- package/scripts/gate/project-checks.ts +5 -12
- package/scripts/gate/scoped-green.ts +76 -19
- package/scripts/gate/since-green.ts +70 -0
- package/scripts/gate/structural-checks.ts +96 -0
- package/scripts/gate/toolchain-inputs.ts +115 -0
- package/scripts/gate/verification-gate.ts +70 -32
- package/scripts/gate/verification-inputs.ts +265 -0
- package/scripts/gate/verification-tail.ts +52 -0
- package/scripts/gh/gh-author-association.ts +117 -9
- package/scripts/gh/git-ai-review-scan.ts +5 -3
- package/scripts/gh/git-gh-api-path.ts +26 -2
- package/scripts/gh/git-gh-branch-rules.ts +73 -0
- package/scripts/gh/git-gh-comments-unreadable.ts +36 -0
- package/scripts/gh/git-gh-conditional.ts +5 -2
- package/scripts/gh/git-gh-exec.ts +32 -2
- package/scripts/gh/git-gh-issue-read.ts +7 -1
- package/scripts/gh/git-gh-issue-rest.ts +1 -0
- package/scripts/gh/git-gh-issue-write.ts +75 -31
- package/scripts/gh/git-gh-issue.ts +19 -8
- package/scripts/gh/git-gh-poll-read.ts +89 -0
- package/scripts/gh/git-gh-pr-auto-merge.ts +21 -9
- package/scripts/gh/git-gh-pr-graphql-state.ts +56 -0
- package/scripts/gh/git-gh-pr-read.ts +74 -13
- package/scripts/gh/git-gh-pr-rest.ts +4 -2
- package/scripts/gh/git-gh-pr-snapshot.ts +48 -20
- package/scripts/gh/git-gh-pr-too-large.ts +20 -0
- package/scripts/gh/git-gh-pr.ts +48 -22
- package/scripts/gh/git-gh-retry.ts +141 -0
- package/scripts/gh/git-pr-ai-review.ts +15 -6
- package/scripts/gh/git-pr-checks-eval.ts +42 -7
- package/scripts/gh/git-pr-checks-parse.ts +39 -9
- package/scripts/gh/git-pr-checks.ts +5 -5
- package/scripts/gh/git-pr-merge-checked.ts +80 -0
- package/scripts/git/base-tree.ts +49 -2
- package/scripts/git/change-base.ts +4 -10
- package/scripts/git/changed-file-scope.ts +6 -4
- package/scripts/git/changed-paths-sync.ts +63 -0
- package/scripts/git/changed-paths.ts +34 -2
- package/scripts/git/git-common-directory.ts +11 -1
- package/scripts/git/git-diff-reads.ts +91 -20
- package/scripts/git/git-error.ts +9 -2
- package/scripts/git/git-grep-hits.ts +85 -0
- package/scripts/git/git-location-environment.ts +1 -1
- package/scripts/git/git-merge-conflicts.ts +83 -0
- package/scripts/git/git-preflight.ts +37 -12
- package/scripts/git/git-push-transport.ts +1 -2
- package/scripts/git/git-schemas.ts +30 -7
- package/scripts/git/git-spawn.ts +1 -2
- package/scripts/git/git-status.ts +4 -4
- package/scripts/git/git-worktree.ts +13 -0
- package/scripts/git/gone-branch.ts +4 -1
- package/scripts/git/main-merge-budget-conflict.ts +89 -0
- package/scripts/git/main-merge-guard.ts +55 -18
- package/scripts/git/main-merge-main.ts +12 -0
- package/scripts/git/main-merge-regenerate.ts +59 -25
- package/scripts/git/main-merge.ts +77 -13
- package/scripts/git/main-sync-main.ts +12 -0
- package/scripts/git/main-sync.ts +0 -9
- package/scripts/git/no-base-checkout.ts +127 -0
- package/scripts/git/stash/git-stash.ts +38 -6
- package/scripts/git/stash/{stash-pop-args.ts → stash-args.ts} +13 -10
- package/scripts/git/stash/stash-pop-cli.ts +6 -12
- package/scripts/git/stash/stash-pop-main.ts +12 -0
- package/scripts/git/stash/stash-push-cli.ts +86 -0
- package/scripts/git/stash/stash-push-main.ts +12 -0
- package/scripts/hooks/batch-guard.ts +38 -27
- package/scripts/hooks/check-commit-message-main.ts +8 -0
- package/scripts/hooks/check-commit-message.ts +4 -7
- package/scripts/hooks/edited-cspell.ts +37 -11
- package/scripts/hooks/format-edited-file.ts +29 -25
- package/scripts/hooks/lane-plan-guard.ts +50 -0
- package/scripts/hooks/pre-commit-lint-switch.ts +9 -0
- package/scripts/hooks/pre-commit-lint.ts +44 -4
- package/scripts/hooks/pre-push-related-switch.ts +10 -0
- package/scripts/hooks/pre-push-unit.ts +77 -9
- package/scripts/hooks/pretool-guard-cli.ts +1 -8
- package/scripts/hooks/pretool-guard.ts +34 -19
- package/scripts/hooks/reserved-run.ts +81 -10
- package/scripts/hooks/run-hook.sh +30 -6
- package/scripts/hooks/shell-rules-notice.ts +37 -0
- package/scripts/hooks/step-zero-notice.ts +6 -1
- package/scripts/hooks/stop-actions.ts +5 -36
- package/scripts/hooks/stop-guard.ts +20 -15
- package/scripts/init/distributed-paths.ts +1 -0
- package/scripts/init/hook-command-rewrite.ts +23 -5
- package/scripts/init/hook-launch.ts +17 -17
- package/scripts/init/init-actions.ts +0 -6
- package/scripts/init/init-ai-copy.ts +10 -36
- package/scripts/init/init-bootstrap.ts +9 -8
- package/scripts/init/init-dry-run-report.ts +1 -1
- package/scripts/init/init-dry-run.ts +1 -1
- package/scripts/init/init-file-action.ts +7 -9
- package/scripts/init/init-logic-json-merge.ts +2 -2
- package/scripts/init/init-logic-migrate.ts +9 -82
- package/scripts/init/init-logic.ts +3 -2
- package/scripts/init/init-main.ts +12 -0
- package/scripts/init/init.ts +5 -12
- package/scripts/init/kit-development-versions.ts +3 -7
- package/scripts/init/kit-written-paths.ts +2 -2
- package/scripts/init/project-profile.ts +5 -4
- package/scripts/init/tsconfig-preset-migration.ts +2 -1
- package/scripts/init/vscode-tasks.ts +1 -1
- package/scripts/issue/aggregation-split.ts +52 -0
- package/scripts/issue/defect-origin-cli.ts +106 -0
- package/scripts/issue/defect-origin-line.ts +78 -0
- package/scripts/issue/defect-origin-main.ts +11 -0
- package/scripts/issue/defect-origin.ts +114 -0
- package/scripts/issue/defect-rate-cli.ts +38 -179
- package/scripts/issue/defect-rate.ts +0 -16
- package/scripts/issue/defect-report-cli.ts +128 -0
- package/scripts/issue/defect-report-format.ts +56 -0
- package/scripts/issue/defect-report-main.ts +11 -0
- package/scripts/issue/defect-report.ts +160 -0
- package/scripts/issue/effect-audit-cli.ts +178 -0
- package/scripts/issue/effect-audit.ts +185 -0
- package/scripts/issue/expected-effect-lint.ts +65 -9
- package/scripts/issue/git-next-issues.ts +5 -0
- package/scripts/issue/issue-already-done-cli.ts +62 -0
- package/scripts/issue/issue-body-or-comment.ts +74 -0
- package/scripts/issue/issue-cite-cli.ts +1 -12
- package/scripts/issue/issue-cite-main.ts +12 -0
- package/scripts/issue/issue-classification.ts +13 -7
- package/scripts/issue/issue-closing-pr.ts +8 -1
- package/scripts/issue/issue-comment-cli.ts +10 -24
- package/scripts/issue/issue-comment-main.ts +12 -0
- package/scripts/issue/issue-evidence-exit.ts +102 -0
- package/scripts/issue/issue-file-cap.ts +58 -0
- package/scripts/issue/issue-file-cli.ts +131 -36
- package/scripts/issue/issue-file-deferral.ts +52 -0
- package/scripts/issue/issue-file-fold.ts +29 -10
- package/scripts/issue/issue-file-interrupt.ts +85 -0
- package/scripts/issue/issue-file-lane-hint.ts +30 -0
- package/scripts/issue/issue-file.ts +56 -19
- package/scripts/issue/issue-fold-cli.ts +2 -11
- package/scripts/issue/issue-fold-main.ts +12 -0
- package/scripts/issue/issue-labels.ts +97 -89
- package/scripts/issue/issue-lint-cli.ts +29 -12
- package/scripts/issue/issue-lint-main.ts +12 -0
- package/scripts/issue/issue-measured-cli.ts +34 -0
- package/scripts/issue/issue-measured-close.ts +58 -0
- package/scripts/issue/issue-merged.ts +19 -2
- package/scripts/issue/issue-not-before-label.ts +135 -0
- package/scripts/issue/issue-not-before.ts +114 -0
- package/scripts/issue/issue-number-shape.ts +15 -1
- package/scripts/issue/issue-park.ts +28 -0
- package/scripts/issue/issue-plan-cli.ts +151 -0
- package/scripts/issue/issue-priority-cli.ts +60 -0
- package/scripts/issue/issue-priority-raise.ts +55 -0
- package/scripts/issue/issue-priority.ts +282 -0
- package/scripts/issue/issue-rank.ts +27 -4
- package/scripts/issue/issue-read-cli.ts +35 -16
- package/scripts/issue/issue-read-main.ts +12 -0
- package/scripts/issue/issue-read.ts +62 -13
- package/scripts/issue/issue-release-cli.ts +0 -10
- package/scripts/issue/issue-release-main.ts +13 -0
- package/scripts/issue/issue-release.ts +7 -12
- package/scripts/issue/issue-sample-gate.ts +213 -0
- package/scripts/issue/issue-sample-prime.ts +127 -0
- package/scripts/issue/issue-sample-required.ts +57 -0
- package/scripts/issue/issue-sample-source.ts +77 -0
- package/scripts/issue/issue-scout-cli.ts +0 -11
- package/scripts/issue/issue-scout-main.ts +14 -0
- package/scripts/issue/issue-search.ts +124 -0
- package/scripts/issue/issue-state-cli.ts +0 -10
- package/scripts/issue/issue-state-main.ts +12 -0
- package/scripts/issue/issue-state.ts +13 -1
- package/scripts/issue/issue-template-section.ts +43 -0
- package/scripts/issue/issue-watch-diff.ts +87 -16
- package/scripts/issue/issue-watch-hook.ts +11 -2
- package/scripts/issue/issue-watch.ts +55 -11
- package/scripts/issue/issue-wip.ts +2 -7
- package/scripts/issue/markdown-section.ts +1 -0
- package/scripts/issue/measure-declaration.ts +121 -0
- package/scripts/issue/measure-rerun-cli.ts +7 -65
- package/scripts/issue/plan-consumers-cli.ts +39 -0
- package/scripts/issue/plan-consumers-main.ts +11 -0
- package/scripts/issue/plan-consumers-section.ts +76 -0
- package/scripts/issue/plan-consumers.ts +127 -0
- package/scripts/issue/reproduction-measure.ts +3 -1
- package/scripts/issue/size-estimate.ts +90 -0
- package/scripts/issue/trusted-measure.ts +84 -0
- package/scripts/josh/agent-session-environment.ts +1 -1
- package/scripts/josh/command-usage.ts +17 -44
- package/scripts/josh/durable-state-migrate.ts +105 -0
- package/scripts/josh/durable-state.ts +112 -0
- package/scripts/josh/file-map-stamp.ts +49 -16
- package/scripts/josh/hook-decision.ts +32 -20
- package/scripts/josh/josh-aliases.ts +95 -0
- package/scripts/josh/josh-command-map.ts +1 -79
- package/scripts/josh/josh-command-types.ts +12 -6
- package/scripts/josh/josh-commands-agent-hooks.ts +83 -0
- package/scripts/josh/josh-commands-ai.ts +160 -161
- package/scripts/josh/josh-commands-backlog.ts +82 -16
- package/scripts/josh/josh-commands-clone.ts +1 -0
- package/scripts/josh/josh-commands-development.ts +142 -101
- package/scripts/josh/josh-commands-document.ts +43 -1
- package/scripts/josh/josh-commands-epic.ts +171 -0
- package/scripts/josh/josh-commands-hooks.ts +25 -2
- package/scripts/josh/josh-commands-issue-write.ts +200 -0
- package/scripts/josh/josh-commands-issue.ts +156 -24
- package/scripts/josh/josh-commands-lane.ts +187 -3
- package/scripts/josh/josh-commands-lint.ts +34 -10
- package/scripts/josh/josh-commands-maintenance.ts +127 -4
- package/scripts/josh/josh-commands-pause.ts +29 -0
- package/scripts/josh/josh-commands-progress.ts +87 -0
- package/scripts/josh/josh-commands-project.ts +138 -9
- package/scripts/josh/josh-commands-review.ts +159 -0
- package/scripts/josh/josh-commands-run.ts +211 -23
- package/scripts/josh/josh-commands-ship.ts +217 -0
- package/scripts/josh/josh-commands-split.ts +9 -0
- package/scripts/josh/josh-commands-test-check.ts +80 -0
- package/scripts/josh/josh-commands-versioning.ts +49 -2
- package/scripts/josh/josh-commands-workflow.ts +144 -6
- package/scripts/josh/josh-environment-file.ts +43 -3
- package/scripts/josh/josh-in-process.ts +2 -2
- package/scripts/josh/josh-logic.ts +11 -16
- package/scripts/josh/josh-run.ts +19 -1
- package/scripts/josh/package-directory.ts +2 -4
- package/scripts/josh/process-identity.ts +13 -4
- package/scripts/josh/run-record-path.ts +15 -0
- package/scripts/josh/session-language-cli.ts +4 -8
- package/scripts/josh/session-language-main.ts +13 -0
- package/scripts/josh/session-language.ts +6 -1
- package/scripts/josh/shared-cache.ts +90 -0
- package/scripts/josh/stamp-file.ts +20 -17
- package/scripts/lane/lane-adopt-cli.ts +98 -0
- package/scripts/lane/lane-adopt.ts +208 -0
- package/scripts/lane/lane-await.ts +56 -20
- package/scripts/lane/lane-baseline.ts +123 -0
- package/scripts/lane/lane-breakdown-cli.ts +64 -0
- package/scripts/lane/lane-breakdown-implement.ts +170 -0
- package/scripts/lane/lane-breakdown-laps.ts +107 -0
- package/scripts/lane/lane-breakdown-pinned.ts +76 -0
- package/scripts/lane/lane-breakdown-text.ts +145 -0
- package/scripts/lane/lane-breakdown.ts +239 -0
- package/scripts/lane/lane-cache.ts +5 -30
- package/scripts/lane/lane-capacity.ts +14 -23
- package/scripts/lane/lane-check-stats.ts +84 -22
- package/scripts/lane/lane-child-invocation.ts +17 -2
- package/scripts/lane/lane-child-mark-keys.ts +12 -0
- package/scripts/lane/lane-child-marker.ts +20 -1
- package/scripts/lane/lane-ci-path-stats.ts +73 -0
- package/scripts/lane/lane-claim-stats.ts +84 -0
- package/scripts/lane/lane-cli.ts +15 -5
- package/scripts/lane/lane-close.ts +91 -18
- package/scripts/lane/lane-core-wait-stats.ts +66 -0
- package/scripts/lane/lane-dispatch-log.ts +3 -3
- package/scripts/lane/lane-dispatch.ts +26 -5
- package/scripts/lane/lane-gap-stats.ts +157 -0
- package/scripts/lane/lane-guard-policy.ts +7 -1
- package/scripts/lane/lane-handoff.ts +69 -1
- package/scripts/lane/lane-held-stats.ts +129 -0
- package/scripts/lane/lane-implement-stats.ts +207 -0
- package/scripts/lane/lane-implement-subagents.ts +90 -0
- package/scripts/lane/lane-install.ts +4 -11
- package/scripts/lane/lane-investigation-switch.ts +16 -0
- package/scripts/lane/lane-launch-cli.ts +0 -9
- package/scripts/lane/lane-launch-main.ts +12 -0
- package/scripts/lane/lane-ledger-kind.ts +31 -0
- package/scripts/lane/lane-ledger-schema-ship.ts +49 -0
- package/scripts/lane/lane-ledger-schema.ts +349 -0
- package/scripts/lane/lane-ledger-write.ts +257 -0
- package/scripts/lane/lane-ledger.ts +56 -233
- package/scripts/lane/lane-limit-cli.ts +12 -1
- package/scripts/lane/lane-load.ts +1 -1
- package/scripts/lane/lane-measure-cli.ts +193 -30
- package/scripts/lane/lane-net-read.ts +44 -0
- package/scripts/lane/lane-net-time.ts +212 -0
- package/scripts/lane/lane-open.ts +25 -8
- package/scripts/lane/lane-output.ts +2 -4
- package/scripts/lane/lane-overrun-prompt.ts +147 -0
- package/scripts/lane/lane-overrun.ts +274 -0
- package/scripts/lane/lane-parked.ts +3 -3
- package/scripts/lane/lane-paths.ts +24 -1
- package/scripts/lane/lane-pause-cli.ts +133 -0
- package/scripts/lane/lane-pause.ts +158 -0
- package/scripts/lane/lane-paused-spans.ts +97 -0
- package/scripts/lane/lane-plan-check.ts +207 -0
- package/scripts/lane/lane-plan-cli.ts +41 -0
- package/scripts/lane/lane-plan.ts +144 -0
- package/scripts/lane/lane-process-table.ts +166 -0
- package/scripts/lane/lane-reap-settle.ts +124 -0
- package/scripts/lane/lane-reap.ts +50 -15
- package/scripts/lane/lane-registry.ts +38 -4
- package/scripts/lane/lane-relaunch.ts +1 -1
- package/scripts/lane/lane-residents.ts +162 -0
- package/scripts/lane/lane-restart.ts +22 -2
- package/scripts/lane/lane-round-one-stats.ts +51 -0
- package/scripts/lane/lane-round-two-stats.ts +49 -0
- package/scripts/lane/lane-sampler.ts +26 -3
- package/scripts/lane/lane-session-action.ts +112 -23
- package/scripts/lane/lane-session-broker.ts +146 -37
- package/scripts/lane/lane-session-reread-main.ts +14 -0
- package/scripts/lane/lane-session-reread.ts +51 -0
- package/scripts/lane/lane-ship-lap-stats.ts +74 -0
- package/scripts/lane/lane-sleep.ts +58 -0
- package/scripts/lane/lane-snapshot-trace.ts +84 -0
- package/scripts/lane/lane-spans.ts +51 -0
- package/scripts/lane/lane-spent.ts +7 -4
- package/scripts/lane/lane-split-stats.ts +28 -0
- package/scripts/lane/lane-stage-stats.ts +20 -3
- package/scripts/lane/lane-state.ts +334 -0
- package/scripts/lane/lane-stats-tables.ts +58 -0
- package/scripts/lane/lane-stats.ts +74 -4
- package/scripts/lane/lane-stop-stats.ts +145 -37
- package/scripts/lane/lane-tail-stats.ts +32 -0
- package/scripts/lane/lane-test-related-stats.ts +127 -0
- package/scripts/lane/lane-transcript-calls.ts +202 -0
- package/scripts/lane/lane-transcript-stats.ts +200 -0
- package/scripts/lane/lane-vacant.ts +13 -3
- package/scripts/lane/lane-value-cell.ts +72 -0
- package/scripts/lane/lane-value.ts +118 -0
- package/scripts/lane/lane-withdraw-cli.ts +5 -4
- package/scripts/lane/lane-withdraw-closed.ts +124 -0
- package/scripts/lane/lane-withdraw.ts +149 -71
- package/scripts/lane/lane-yield.ts +85 -0
- package/scripts/lane/openai-lane-ship.ts +12 -11
- package/scripts/lane/openai-lane-supervisor-decision.ts +6 -8
- package/scripts/lane/openai-lane-supervisor-owner.ts +5 -8
- package/scripts/lane/openai-lane-supervisor.ts +5 -4
- package/scripts/lane/process-directories.ts +70 -0
- package/scripts/lane/process-lane-marks.ts +94 -0
- package/scripts/lib/atomic-write.ts +62 -0
- package/scripts/lib/buffered-process.ts +12 -5
- package/scripts/lib/cli-flags.ts +53 -0
- package/scripts/lib/figure-format.ts +63 -0
- package/scripts/lib/json-value.ts +9 -1
- package/scripts/lib/package-manifest.ts +35 -0
- package/scripts/lib/poll.ts +38 -9
- package/scripts/lib/read-file.ts +3 -1
- package/scripts/lib/settled-together.ts +10 -0
- package/scripts/lib/shell-quote.ts +21 -0
- package/scripts/lib/stamped-memo.ts +63 -0
- package/scripts/lib/stdout-on-stderr.ts +24 -0
- package/scripts/lib/timeouts.ts +9 -0
- package/scripts/lib/token-shape.ts +111 -0
- package/scripts/lib/transcript-record.ts +91 -0
- package/scripts/lines/effective-limit.ts +1 -1
- package/scripts/lint/eslint-cache-dependencies.ts +145 -0
- package/scripts/lint/eslint-daemon-sources.ts +79 -0
- package/scripts/lint/eslint-daemon.ts +304 -0
- package/scripts/lint/eslint-warm-cli.ts +7 -0
- package/scripts/lint/eslint-warm.ts +66 -0
- package/scripts/lint/format.ts +11 -2
- package/scripts/lint/import-graph.ts +409 -0
- package/scripts/lint/lint-gate-scope.ts +102 -0
- package/scripts/lint/lint-parallel-main.ts +19 -0
- package/scripts/lint/lint-parallel.ts +113 -33
- package/scripts/lint/lint-related-scope.ts +30 -24
- package/scripts/lint/lint-related.ts +183 -30
- package/scripts/lint/rename-cli.ts +179 -0
- package/scripts/lint/rename-identifier.ts +192 -0
- package/scripts/lint/type-only-imports.ts +58 -0
- package/scripts/notify/confirmation-options.ts +1 -2
- package/scripts/notify/telegram-notify.ts +32 -23
- package/scripts/notify/telegram-test-logic.ts +0 -1
- package/scripts/notify/telegram-test-main.ts +8 -0
- package/scripts/notify/telegram-test.ts +2 -6
- package/scripts/observations/observation-ledger.ts +13 -0
- package/scripts/observations/observation-record.ts +42 -16
- package/scripts/observations/observations-flush-landing.ts +5 -3
- package/scripts/observations/observations-flush.ts +38 -10
- package/scripts/overrides/overrides-check.ts +11 -6
- package/scripts/overrides/overrides-files.ts +2 -1
- package/scripts/overrides/overrides-logic.ts +3 -6
- package/scripts/package/verify-optional-eslint-install.ts +8 -6
- package/scripts/propagate/propagate-publish.ts +2 -7
- package/scripts/propagate/propagate-targets.ts +4 -12
- package/scripts/refactor/import-graph.ts +9 -7
- package/scripts/release/github-release-runs.ts +17 -6
- package/scripts/release/release-approval-prune.ts +24 -0
- package/scripts/release/release-history.ts +1 -3
- package/scripts/release/release-progress.ts +42 -22
- package/scripts/release/release-publish-run.ts +39 -0
- package/scripts/release/release-publish.ts +6 -6
- package/scripts/release/release-scope-cli.ts +0 -10
- package/scripts/release/release-scope-main.ts +12 -0
- package/scripts/repo/repo-setting.ts +3 -6
- package/scripts/repo/required-checks-logic.ts +10 -16
- package/scripts/repo/ruleset-check.ts +4 -3
- package/scripts/report/markdown-shape.ts +28 -0
- package/scripts/report/report-format-reference.ts +17 -1
- package/scripts/report/report-labels.ts +166 -0
- package/scripts/report/report-lint-child-summary.ts +94 -0
- package/scripts/report/report-lint-cli.ts +29 -7
- package/scripts/report/report-lint.ts +85 -128
- package/scripts/report/report-template-cli.ts +59 -0
- package/scripts/report/report-template.ts +112 -0
- package/scripts/review/acceptance-map.ts +1 -0
- package/scripts/review/prose-stale-cli.ts +88 -0
- package/scripts/review/prose-stale-scan.ts +152 -0
- package/scripts/review/removed-tests-check.ts +86 -0
- package/scripts/review/removed-tests.ts +149 -0
- package/scripts/review/review-attest.ts +73 -23
- package/scripts/review/review-brief-cli.ts +138 -23
- package/scripts/review/review-brief-main.ts +12 -0
- package/scripts/review/review-brief-paths.ts +22 -0
- package/scripts/review/review-brief.ts +45 -10
- package/scripts/review/review-code-tree.ts +10 -6
- package/scripts/review/review-comment-carry.ts +47 -0
- package/scripts/review/review-comment-round.ts +111 -30
- package/scripts/review/review-finding-ledger.ts +135 -18
- package/scripts/review/review-finding-text.ts +43 -0
- package/scripts/review/review-interaction.ts +105 -0
- package/scripts/review/review-lane-handover.ts +68 -0
- package/scripts/review/review-lint-cli.ts +57 -0
- package/scripts/review/review-lint-findings.ts +92 -0
- package/scripts/review/review-lint-sections.ts +80 -0
- package/scripts/review/review-lint.ts +221 -0
- package/scripts/review/review-prior-findings.ts +102 -0
- package/scripts/review/review-readers-scan.ts +165 -0
- package/scripts/review/review-record-cli.ts +236 -74
- package/scripts/review/review-record-code-round.ts +55 -0
- package/scripts/review/review-record-comment.ts +60 -0
- package/scripts/review/review-record-interaction.ts +35 -0
- package/scripts/review/review-record-main.ts +12 -0
- package/scripts/review/review-record-pinned.ts +108 -0
- package/scripts/review/review-record.ts +25 -1
- package/scripts/review/review-reviewed-tree.ts +307 -0
- package/scripts/review/review-round-one-blobs.ts +221 -0
- package/scripts/review/review-round-one-closure.ts +62 -0
- package/scripts/review/review-round-reuse.ts +106 -0
- package/scripts/review/review-round2-cli.ts +135 -36
- package/scripts/review/review-round2-skip-comment.ts +55 -0
- package/scripts/review/review-round2.ts +103 -19
- package/scripts/review/review-stamps.ts +23 -1
- package/scripts/review/review-stop-log.ts +110 -0
- package/scripts/review/review-stops-cli.ts +86 -0
- package/scripts/review/review-submit-cli.ts +101 -0
- package/scripts/review/review-tree.ts +6 -17
- package/scripts/review/review-untouched-readers.ts +146 -0
- package/scripts/review/test-titles.ts +118 -0
- package/scripts/rules/agent-model.ts +9 -1
- package/scripts/rules/bash-triggers.ts +49 -6
- package/scripts/rules/concise-reply.ts +88 -0
- package/scripts/rules/credential-body.ts +77 -0
- package/scripts/rules/decision-oracle-batch.ts +9 -1
- package/scripts/rules/decision-oracle.ts +3 -3
- package/scripts/rules/delivered-rules.ts +115 -18
- package/scripts/rules/destructive-command.ts +11 -12
- package/scripts/rules/direct-filing.ts +10 -2
- package/scripts/rules/direct-issue-comment.ts +139 -0
- package/scripts/rules/direct-issue-read.ts +191 -0
- package/scripts/rules/direct-pr-create.ts +72 -26
- package/scripts/rules/early-heartbeat.ts +4 -1
- package/scripts/rules/edit-tool.ts +27 -0
- package/scripts/rules/file-body.ts +7 -0
- package/scripts/rules/file-edit-rows.ts +17 -0
- package/scripts/rules/file-rewrite.ts +146 -0
- package/scripts/rules/firing-point.ts +3 -2
- package/scripts/rules/gh-api.ts +128 -7
- package/scripts/rules/gh-repo-selector.ts +84 -0
- package/scripts/rules/git-argv.ts +72 -14
- package/scripts/rules/git-force.ts +14 -4
- package/scripts/rules/guard-remedy.ts +17 -4
- package/scripts/rules/implementation-cut-verdict.ts +1 -1
- package/scripts/rules/implementation-cut.ts +68 -27
- package/scripts/rules/index-guard.ts +8 -1
- package/scripts/rules/investigator-foreground.ts +231 -0
- package/scripts/rules/issue-citation.ts +15 -60
- package/scripts/rules/issue-comments.ts +18 -5
- package/scripts/rules/josh-git-bare.ts +7 -0
- package/scripts/rules/lane-background.ts +103 -33
- package/scripts/rules/lane-carry-conflict.ts +6 -0
- package/scripts/rules/lane-direct-tool.ts +172 -0
- package/scripts/rules/lane-interactive-ask.ts +12 -2
- package/scripts/rules/lane-park.ts +49 -25
- package/scripts/rules/lane-spilled-read.ts +90 -0
- package/scripts/rules/lane-split-park.ts +11 -3
- package/scripts/rules/lane-switch-main.ts +11 -4
- package/scripts/rules/last-prompt.ts +20 -47
- package/scripts/rules/oracle-consulted.ts +11 -1
- package/scripts/rules/oracle-firing.ts +1 -0
- package/scripts/rules/permission-guards.ts +7 -0
- package/scripts/rules/piped-verification-shapes.ts +110 -0
- package/scripts/rules/piped-verification.ts +68 -18
- package/scripts/rules/poll-loop.ts +78 -8
- package/scripts/rules/pr-merge.ts +123 -0
- package/scripts/rules/pre-gate-cut.ts +3 -3
- package/scripts/rules/protected-files.ts +113 -22
- package/scripts/rules/raw-field-body.ts +6 -0
- package/scripts/rules/reply-language.ts +3 -17
- package/scripts/rules/reply-prose.ts +34 -0
- package/scripts/rules/repo-admin.ts +132 -0
- package/scripts/rules/reviewer-foreground.ts +88 -0
- package/scripts/rules/round-one-check-related.ts +120 -0
- package/scripts/rules/rule-body-guard.ts +13 -15
- package/scripts/rules/rule-list.ts +9 -28
- package/scripts/rules/rule-value-cache.ts +57 -14
- package/scripts/rules/rule-value-candidates.ts +84 -0
- package/scripts/rules/rule-value-cli.ts +106 -39
- package/scripts/rules/rule-value.ts +18 -5
- package/scripts/rules/run-tail-rule.ts +1 -1
- package/scripts/rules/sed-in-place.ts +196 -0
- package/scripts/rules/shell-segments.ts +43 -0
- package/scripts/rules/stop-rule-rows.ts +52 -0
- package/scripts/rules/stop-rules.ts +36 -62
- package/scripts/rules/test-declared-commit.ts +11 -1
- package/scripts/rules/third-party-write.ts +115 -21
- package/scripts/rules/timed-rerun.ts +69 -0
- package/scripts/rules/turn-filings.ts +90 -0
- package/scripts/rules/worktree-guard.ts +32 -7
- package/scripts/run/board/run-board-app-name.ts +23 -0
- package/scripts/run/board/run-board-cli.ts +65 -32
- package/scripts/run/board/run-board-earlier.ts +94 -0
- package/scripts/run/board/run-board-ending-reason.ts +71 -0
- package/scripts/run/board/run-board-estimate-schedule.ts +103 -0
- package/scripts/run/board/run-board-estimate.ts +98 -0
- package/scripts/run/board/run-board-fit.ts +177 -37
- package/scripts/run/board/run-board-fold.ts +123 -0
- package/scripts/run/board/run-board-found.ts +134 -0
- package/scripts/run/board/run-board-fresh.ts +2 -2
- package/scripts/run/board/run-board-gather-live.ts +29 -0
- package/scripts/run/board/run-board-gather-thread.ts +189 -0
- package/scripts/run/board/run-board-gather-worker.ts +29 -0
- package/scripts/run/board/run-board-gather.ts +187 -0
- package/scripts/run/board/run-board-github.ts +118 -38
- package/scripts/run/board/run-board-header.ts +90 -20
- package/scripts/run/board/run-board-keys.ts +58 -0
- package/scripts/run/board/run-board-kind.ts +20 -6
- package/scripts/run/board/run-board-labels.ts +126 -71
- package/scripts/run/board/run-board-lane-state.ts +109 -0
- package/scripts/run/board/run-board-lane-time.ts +123 -0
- package/scripts/run/board/run-board-layout.ts +239 -60
- package/scripts/run/board/run-board-length.ts +52 -0
- package/scripts/run/board/run-board-link.ts +15 -2
- package/scripts/run/board/run-board-machine.ts +8 -4
- package/scripts/run/board/run-board-main.ts +12 -0
- package/scripts/run/board/run-board-notes.ts +59 -32
- package/scripts/run/board/run-board-now.ts +1 -1
- package/scripts/run/board/run-board-operation.ts +19 -35
- package/scripts/run/board/run-board-phase.ts +3 -6
- package/scripts/run/board/run-board-plan-shared.ts +115 -0
- package/scripts/run/board/run-board-plan.ts +56 -4
- package/scripts/run/board/run-board-planning.ts +45 -0
- package/scripts/run/board/run-board-priority.ts +44 -0
- package/scripts/run/board/run-board-process-groups.ts +195 -0
- package/scripts/run/board/run-board-read.ts +197 -28
- package/scripts/run/board/run-board-reason.ts +247 -51
- package/scripts/run/board/run-board-released.ts +35 -0
- package/scripts/run/board/run-board-render-checks.ts +42 -7
- package/scripts/run/board/run-board-render-condition.ts +96 -0
- package/scripts/run/board/run-board-render-drawn.ts +78 -0
- package/scripts/run/board/run-board-render-foot.ts +59 -0
- package/scripts/run/board/run-board-render-found.ts +157 -0
- package/scripts/run/board/run-board-render-icon.ts +35 -0
- package/scripts/run/board/run-board-render-lanes.ts +145 -0
- package/scripts/run/board/run-board-render-lead.ts +89 -0
- package/scripts/run/board/run-board-render-legend.ts +136 -48
- package/scripts/run/board/run-board-render-notes.ts +156 -29
- package/scripts/run/board/run-board-render-processes.ts +196 -0
- package/scripts/run/board/run-board-render-section.ts +119 -0
- package/scripts/run/board/run-board-render-slot.ts +3 -36
- package/scripts/run/board/run-board-render-tail.ts +115 -48
- package/scripts/run/board/run-board-render-time.ts +56 -0
- package/scripts/run/board/run-board-render-title.ts +117 -24
- package/scripts/run/board/run-board-render-waits.ts +104 -20
- package/scripts/run/board/run-board-render.ts +264 -258
- package/scripts/run/board/run-board-roots.ts +54 -0
- package/scripts/run/board/run-board-row-yield.ts +9 -4
- package/scripts/run/board/run-board-setup.ts +1 -12
- package/scripts/run/board/run-board-snapshot.ts +111 -0
- package/scripts/run/board/run-board-spin.ts +3 -5
- package/scripts/run/board/run-board-state.ts +22 -33
- package/scripts/run/board/run-board-status.ts +149 -71
- package/scripts/run/board/run-board-thanks-read.ts +2 -2
- package/scripts/run/board/run-board-tick.ts +158 -114
- package/scripts/run/board/run-board-usage-board.ts +78 -0
- package/scripts/run/board/run-board-usage-lanes.ts +113 -0
- package/scripts/run/board/run-board-usage-listing.ts +93 -0
- package/scripts/run/board/run-board-usage-read.ts +120 -150
- package/scripts/run/board/run-board-usage-rusage.ts +19 -7
- package/scripts/run/board/run-board-usage-text.ts +139 -51
- package/scripts/run/board/run-board-usage-top.ts +102 -0
- package/scripts/run/board/run-board-usage.ts +89 -72
- package/scripts/run/board/run-board-usual.ts +20 -9
- package/scripts/run/carry/run-carry-args.ts +4 -7
- package/scripts/run/carry/run-carry-conversation.ts +1 -1
- package/scripts/run/carry/run-carry-ended.ts +3 -2
- package/scripts/run/carry/run-carry.ts +12 -6
- package/scripts/run/cut/run-cut-cli.ts +33 -133
- package/scripts/run/cut/run-cut-digest.ts +152 -0
- package/scripts/run/cut/run-cut-handoff.ts +54 -10
- package/scripts/run/cut/run-cut-report.ts +24 -3
- package/scripts/run/cut/run-cut-resume.ts +129 -0
- package/scripts/run/cut/run-cut-review.ts +105 -0
- package/scripts/run/cut/run-cut.ts +18 -7
- package/scripts/run/detached-launch.ts +1 -1
- package/scripts/run/entry/run-entry-cli.ts +88 -19
- package/scripts/run/entry/run-entry-spill.ts +83 -0
- package/scripts/run/entry/run-entry-stop.ts +5 -1
- package/scripts/run/entry/run-entry-trust.ts +91 -0
- package/scripts/run/event/run-event-baseline.ts +56 -0
- package/scripts/run/event/run-event-cli.ts +1 -5
- package/scripts/run/event/run-event-filed.ts +18 -6
- package/scripts/run/event/run-event-follow.ts +2 -3
- package/scripts/run/event/run-event-overrun.ts +197 -0
- package/scripts/run/event/run-event-render.ts +10 -10
- package/scripts/run/event/run-event-scope.ts +2 -2
- package/scripts/run/event/run-event-stream-emit.ts +82 -22
- package/scripts/run/event/run-event-stream.ts +58 -10
- package/scripts/run/hold/run-hold-adopt.ts +65 -0
- package/scripts/run/hold/run-hold-cli.ts +93 -22
- package/scripts/run/hold/run-hold-main.ts +12 -0
- package/scripts/run/hold/run-hold-member.ts +37 -0
- package/scripts/run/hold/run-stop-notify.ts +178 -0
- package/scripts/run/merge/run-merge-auth.ts +31 -0
- package/scripts/run/merge/run-merge-cap.ts +57 -0
- package/scripts/run/merge/run-merge-cli.ts +119 -62
- package/scripts/run/merge/run-merge-close.ts +74 -0
- package/scripts/run/merge/run-merge-collect.ts +6 -13
- package/scripts/run/merge/run-merge-driver.ts +71 -0
- package/scripts/run/merge/run-merge-main.ts +12 -0
- package/scripts/run/merge/run-merge-outcome.ts +25 -0
- package/scripts/run/merge/run-merge-restart.ts +39 -0
- package/scripts/run/merge/run-merge-ship.ts +33 -7
- package/scripts/run/merge/run-merge-signals.ts +66 -25
- package/scripts/run/merge/run-merge-steps.ts +162 -107
- package/scripts/run/merge/run-merge-usage-limit.ts +53 -0
- package/scripts/run/merge/run-merge-withdrawn.ts +53 -0
- package/scripts/run/merge/run-merge.ts +76 -48
- package/scripts/run/park/run-park-cli.ts +91 -0
- package/scripts/run/park/run-park.ts +88 -0
- package/scripts/run/park/run-stalled.ts +68 -0
- package/scripts/run/pause/run-pause-cli.ts +73 -0
- package/scripts/run/pause/run-pause.ts +251 -0
- package/scripts/run/progress/run-progress-cli.ts +4 -12
- package/scripts/run/progress/run-progress-clock.ts +1 -1
- package/scripts/run/progress/run-progress-config.ts +6 -14
- package/scripts/run/progress/run-progress-main.ts +12 -0
- package/scripts/run/progress/run-progress.ts +1 -4
- package/scripts/run/review/run-review-cli.ts +306 -20
- package/scripts/run/review/run-review-early-push.ts +121 -0
- package/scripts/run/review/run-review-join-read.ts +94 -0
- package/scripts/run/review/run-review-pinned-accepted.ts +126 -0
- package/scripts/run/review/run-review-pinned-join.ts +216 -0
- package/scripts/run/review/run-review-pinned-steps.ts +383 -0
- package/scripts/run/review/run-review-pinned-tree.ts +37 -0
- package/scripts/run/review/run-review-pinned.ts +53 -0
- package/scripts/run/review/run-review-steps.ts +70 -34
- package/scripts/run/review/run-review.ts +28 -7
- package/scripts/run/run-ending.ts +1 -0
- package/scripts/run/run-invocation.ts +5 -6
- package/scripts/run/run-liveness-cli.ts +6 -8
- package/scripts/run/run-liveness.ts +60 -29
- package/scripts/run/run-next.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +3 -4
- package/scripts/run/run-preflight.ts +18 -3
- package/scripts/run/run-prep-cli.ts +1 -10
- package/scripts/run/run-prep-locate.ts +7 -50
- package/scripts/run/run-prep-main.ts +12 -0
- package/scripts/run/run-prep.ts +7 -0
- package/scripts/run/run-report-cli.ts +101 -13
- package/scripts/run/run-report-handoff.ts +114 -0
- package/scripts/run/run-stage-read.ts +2 -6
- package/scripts/run/run-step-cli.ts +17 -5
- package/scripts/run/run-step-lane-plan.ts +27 -0
- package/scripts/run/run-step-section.ts +26 -7
- package/scripts/run/run-step.ts +6 -3
- package/scripts/run/run-stranded-detect.ts +13 -0
- package/scripts/run/run-watcher-guard-cli.ts +1 -1
- package/scripts/run/run-watcher-guard.ts +1 -1
- package/scripts/run/ship/run-ship-args.ts +140 -0
- package/scripts/run/ship/run-ship-body-draft.ts +110 -0
- package/scripts/run/ship/run-ship-brokered-review.ts +106 -0
- package/scripts/run/ship/run-ship-cli.ts +181 -166
- package/scripts/run/ship/run-ship-conflict-probe.ts +59 -0
- package/scripts/run/ship/run-ship-detach.ts +29 -12
- package/scripts/run/ship/run-ship-handover.ts +106 -0
- package/scripts/run/ship/run-ship-infra-retry.ts +74 -0
- package/scripts/run/ship/run-ship-lap.ts +63 -0
- package/scripts/run/ship/run-ship-next.ts +44 -27
- package/scripts/run/ship/run-ship-overlap.ts +49 -7
- package/scripts/run/ship/run-ship-place.ts +103 -0
- package/scripts/run/ship/run-ship-planned.ts +92 -0
- package/scripts/run/ship/run-ship-pre-detach-pinned.ts +197 -0
- package/scripts/run/ship/run-ship-pre-detach-timed.ts +42 -0
- package/scripts/run/ship/run-ship-pre-detach.ts +144 -33
- package/scripts/run/ship/run-ship-preflight.ts +150 -33
- package/scripts/run/ship/run-ship-probe.ts +28 -6
- package/scripts/run/ship/run-ship-relaunch-cap.ts +106 -0
- package/scripts/run/ship/run-ship-relaunch.ts +51 -0
- package/scripts/run/ship/run-ship-removed-rows.ts +61 -0
- package/scripts/run/ship/run-ship-return.ts +183 -25
- package/scripts/run/ship/run-ship-review-reason.ts +24 -0
- package/scripts/run/ship/run-ship-review-steps.ts +296 -171
- package/scripts/run/ship/run-ship-review.ts +222 -35
- package/scripts/run/ship/run-ship-reviewer.ts +303 -0
- package/scripts/run/ship/run-ship-scoped.ts +39 -10
- package/scripts/run/ship/run-ship-stage.ts +101 -16
- package/scripts/run/ship/run-ship-steps.ts +68 -17
- package/scripts/run/ship/run-ship-stop-cause.ts +176 -0
- package/scripts/run/ship/run-ship-stop-context.ts +50 -13
- package/scripts/run/ship/run-ship-stop-text.ts +11 -6
- package/scripts/run/ship/run-ship-sync.ts +212 -34
- package/scripts/run/ship/run-ship-synced-scope.ts +178 -0
- package/scripts/run/ship/run-ship-wait-cli.ts +145 -0
- package/scripts/run/ship/run-ship-waiter.ts +114 -0
- package/scripts/run/ship/run-ship.ts +44 -2
- package/scripts/run/tidy/run-tidy-cli.ts +0 -4
- package/scripts/run/tidy/run-tidy-lanes.ts +3 -0
- package/scripts/run/tidy/run-tidy-main.ts +8 -0
- package/scripts/run/wake/run-wake-caffeinate.ts +48 -0
- package/scripts/run/wake/run-wake-cli.ts +121 -209
- package/scripts/run/wake/run-wake-code.ts +125 -0
- package/scripts/run/wake/run-wake-driver.ts +22 -9
- package/scripts/run/wake/run-wake-finish.ts +137 -0
- package/scripts/run/wake/run-wake-loop.ts +36 -3
- package/scripts/run/wake/run-wake-main.ts +13 -0
- package/scripts/run/wake/run-wake-ports.ts +98 -0
- package/scripts/run/wake/run-wake-session.ts +2 -0
- package/scripts/run/wake/run-wake-takeover.ts +66 -0
- package/scripts/run/wake/run-wake.ts +5 -3
- package/scripts/safe-chain/ci-installer-pin.ts +49 -8
- package/scripts/safe-chain/pack-hook.ts +2 -2
- package/scripts/safe-chain/preinstall-command.ts +2 -1
- package/scripts/safe-chain/project-config.ts +6 -11
- package/scripts/security/secretlint-scan.ts +42 -9
- package/scripts/security/security-audit-main.ts +8 -0
- package/scripts/security/security-audit-provision-logic.ts +0 -11
- package/scripts/security/security-audit-provision-main.ts +20 -0
- package/scripts/security/security-audit-provision.ts +12 -27
- package/scripts/security/security-audit.ts +27 -8
- package/scripts/security/sonar-file.ts +10 -5
- package/scripts/self-sync-guard/self-sync-guard-logic.ts +6 -13
- package/scripts/split/split-assess-cli.ts +2 -2
- package/scripts/split/split-assess.ts +25 -1
- package/scripts/split/split-early-notice.ts +116 -0
- package/scripts/split/split-measure.ts +83 -0
- package/scripts/split/split-resolution.ts +107 -0
- package/scripts/sync/claude-settings-merge.ts +8 -15
- package/scripts/sync/directory-copy-guard.ts +4 -9
- package/scripts/sync/file-content.ts +78 -8
- package/scripts/sync/sync-ai-files.ts +3 -5
- package/scripts/sync/sync-configs.ts +11 -23
- package/scripts/sync/sync-hook-safety.ts +4 -10
- package/scripts/sync/sync-main.ts +11 -0
- package/scripts/sync/sync.ts +25 -37
- package/scripts/test/direct-importers.ts +185 -0
- package/scripts/test/pure-files-entries.ts +83 -0
- package/scripts/test/related-heavy-tests.ts +81 -0
- package/scripts/test/test-declared-changed.ts +2 -2
- package/scripts/test/test-declared.ts +1 -1
- package/scripts/test/test-e2e-guard.ts +25 -1
- package/scripts/test/test-e2e-stamp.ts +38 -0
- package/scripts/test/test-no-base.ts +88 -0
- package/scripts/test/test-pinned-cache-logic.ts +363 -0
- package/scripts/test/test-pinned-cache.ts +337 -0
- package/scripts/test/test-pinned-emit.ts +49 -0
- package/scripts/test/test-pinned-functions.ts +116 -0
- package/scripts/test/test-pinned-ledger.ts +80 -0
- package/scripts/test/test-pinned-logic.ts +333 -0
- package/scripts/test/test-pinned-main.ts +144 -0
- package/scripts/test/test-pinned-pool.ts +73 -0
- package/scripts/test/test-pinned-probe.ts +254 -0
- package/scripts/test/test-pinned-prune-logic.ts +118 -0
- package/scripts/test/test-pinned-reach.ts +194 -0
- package/scripts/test/test-pinned-record.ts +196 -0
- package/scripts/test/test-pinned-rewire.ts +148 -0
- package/scripts/test/test-pinned-spawn.ts +81 -0
- package/scripts/test/test-pinned-stage.ts +70 -0
- package/scripts/test/test-pinned.ts +311 -0
- package/scripts/test/test-reach-cli.ts +61 -0
- package/scripts/test/test-read-map.ts +288 -0
- package/scripts/test/test-read-recording.ts +103 -0
- package/scripts/test/test-read-trace.ts +166 -0
- package/scripts/test/test-red-logic.ts +46 -7
- package/scripts/test/test-red-main.ts +12 -0
- package/scripts/test/test-red.ts +39 -37
- package/scripts/test/test-related-claim.ts +37 -0
- package/scripts/test/test-related-main.ts +21 -0
- package/scripts/test/test-related-moved.ts +91 -0
- package/scripts/test/test-related-record.ts +139 -0
- package/scripts/test/test-related-scope.ts +292 -41
- package/scripts/test/test-related-synced.ts +135 -0
- package/scripts/test/test-related-touched.ts +84 -0
- package/scripts/test/test-related.ts +381 -19
- package/scripts/test/test-unit-guard-main.ts +15 -0
- package/scripts/test/test-unit-guard.ts +66 -25
- package/scripts/test/unit-count-file.ts +37 -0
- package/scripts/test/unit-durations.ts +41 -0
- package/scripts/test/unit-run-marker.ts +162 -0
- package/scripts/test/unit-setup-files.ts +51 -0
- package/scripts/test/unit-worker-share.ts +64 -151
- package/scripts/test/vitest-cache-directory.ts +19 -0
- package/scripts/test/vitest-cli-excludes.ts +14 -0
- package/scripts/test/vitest-failure-summary.ts +111 -0
- package/scripts/test/whole-suite-files.ts +74 -0
- package/scripts/time-runtime/time-background.ts +20 -2
- package/scripts/time-runtime/time-batch-guard.ts +42 -4
- package/scripts/time-runtime/time-bundle-call.ts +1 -1
- package/scripts/time-runtime/time-bundles.ts +40 -8
- package/scripts/time-runtime/time-density-hook.ts +8 -6
- package/scripts/time-runtime/time-followup-stage.ts +1 -3
- package/scripts/time-runtime/time-format.ts +5 -28
- package/scripts/time-runtime/time-markers.ts +12 -3
- package/scripts/time-runtime/time-search-call.ts +38 -0
- package/scripts/time-runtime/time-shell.ts +98 -11
- package/scripts/time-runtime/time-transcript-line.ts +65 -66
- package/scripts/uninstall/uninstall.ts +1 -1
- package/scripts/version/bump-version-main.ts +12 -0
- package/scripts/version/bump-version.ts +25 -25
- package/scripts/version/development-engines-verdict.ts +124 -0
- package/scripts/version/effective-upstream.ts +6 -12
- package/scripts/version/latest-corepack.ts +19 -32
- package/scripts/version/latest-if-required-cli.ts +93 -0
- package/scripts/version/latest-lane-guard-main.ts +8 -0
- package/scripts/version/latest-lane-guard.ts +0 -4
- package/scripts/version/latest-scope-cli.ts +0 -9
- package/scripts/version/latest-scope-main.ts +12 -0
- package/scripts/version/latest-update.ts +5 -5
- package/scripts/version/npm-registry.ts +44 -6
- package/scripts/version/publishable-range-check.ts +5 -16
- package/scripts/version/release-age.ts +1 -1
- package/scripts/version/release-hold.ts +1 -1
- package/scripts/version/release-window.ts +38 -0
- package/scripts/version/running-binary.ts +1 -1
- package/scripts/version/safe-chain-version-update.ts +3 -8
- package/scripts/version/version-targets.ts +6 -28
- package/templates/dependabot.yml +29 -0
- package/templates/gitignore +6 -1
- package/templates/pnpm-workspace.basic.yaml +1 -1
- package/templates/sonar-project.properties +3 -2
- package/templates/workflows/ci.yml +53 -4
- package/templates/workflows/github-release.yml +4 -0
- package/tsconfig.sonar.json +1 -1
- package/.ncurc.json +0 -3
- package/dist/hooks/batch-guard.js +0 -29
- package/dist/hooks/chunk-4KKD2UTK.js +0 -66
- package/dist/hooks/chunk-6TS2JD6D.js +0 -237
- package/dist/hooks/chunk-7DSBJVFH.js +0 -50
- package/dist/hooks/chunk-A65Y4YOR.js +0 -79
- package/dist/hooks/chunk-APUO6U4J.js +0 -2451
- package/dist/hooks/chunk-CDY4NFQG.js +0 -15
- package/dist/hooks/chunk-DGT54IH5.js +0 -161
- package/dist/hooks/chunk-EFXE6C37.js +0 -81
- package/dist/hooks/chunk-GP4IEC4O.js +0 -20
- package/dist/hooks/chunk-JP45SOCJ.js +0 -56
- package/dist/hooks/chunk-LAOV7NLM.js +0 -45
- package/dist/hooks/chunk-M4HGZV7U.js +0 -83
- package/dist/hooks/chunk-O6GDRNJB.js +0 -343
- package/dist/hooks/chunk-PF2NZL2A.js +0 -131
- package/dist/hooks/chunk-PTICX4OL.js +0 -358
- package/dist/hooks/chunk-RT27QRJW.js +0 -6247
- package/dist/hooks/chunk-SYOTDYCI.js +0 -3533
- package/dist/hooks/chunk-TNUMY6NL.js +0 -4838
- package/dist/hooks/chunk-UPUZF3AN.js +0 -279
- package/dist/hooks/chunk-WK6SMBIC.js +0 -3180
- package/dist/hooks/duplicate-read-guard.js +0 -30
- package/dist/hooks/investigation-guard.js +0 -29
- package/scripts/backlog/backlog-stalled-cli.ts +0 -30
- package/scripts/cost-runtime/context-cut-threshold.ts +0 -11
- package/scripts/cost-runtime/cost-format.ts +0 -29
- package/scripts/init/basic-path-migration.ts +0 -24
- package/scripts/issue/issue-backlinks-cli.ts +0 -93
- package/scripts/josh/josh-commands-guard.ts +0 -38
- package/scripts/josh/josh-usage-automation.ts +0 -121
- package/scripts/josh/josh-usage-backlog.ts +0 -180
- package/scripts/josh/josh-usage-developer.ts +0 -230
- package/scripts/josh/josh-usage-hooks.ts +0 -38
- package/scripts/josh/josh-usage-issue.ts +0 -205
- package/scripts/josh/josh-usage-review.ts +0 -101
- package/scripts/josh/josh-usage-run.ts +0 -252
- package/scripts/josh/josh-usage-session.ts +0 -238
- package/scripts/josh/josh-usage-workflow.ts +0 -212
- package/scripts/lint/cross-file-recheck.ts +0 -155
- package/scripts/registry-migration/migrate-logic.ts +0 -237
- package/scripts/registry-migration/migrate.ts +0 -292
- package/scripts/registry-migration/user-npmrc.ts +0 -15
- package/scripts/rules/filing-cap.ts +0 -132
- package/scripts/rules/rule-guard.ts +0 -23
- package/scripts/rules/rule-registry-rows.ts +0 -292
- package/scripts/rules/rule-registry.ts +0 -112
- package/scripts/run/run-stranded-cli.ts +0 -27
package/dist/version/index.js
CHANGED
|
@@ -62,9 +62,8 @@ function create_version_command_config(options) {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
// scripts/version/effective-upstream.ts
|
|
65
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
66
65
|
import { createRequire } from "node:module";
|
|
67
|
-
import
|
|
66
|
+
import path3 from "node:path";
|
|
68
67
|
|
|
69
68
|
// scripts/lib/ancestor-directories.ts
|
|
70
69
|
import path from "node:path";
|
|
@@ -83,6 +82,10 @@ function nearest(start_directory, is_match) {
|
|
|
83
82
|
}
|
|
84
83
|
var ancestor_directories = { list, nearest };
|
|
85
84
|
|
|
85
|
+
// scripts/lib/package-manifest.ts
|
|
86
|
+
import { readFileSync as readFileSync2 } from "node:fs";
|
|
87
|
+
import path2 from "node:path";
|
|
88
|
+
|
|
86
89
|
// scripts/lib/json-value.ts
|
|
87
90
|
function parse_or_undefined(text) {
|
|
88
91
|
try {
|
|
@@ -97,10 +100,56 @@ function parse_with(text, schema) {
|
|
|
97
100
|
const parsed = schema.safeParse(value);
|
|
98
101
|
return parsed.success ? parsed.data : void 0;
|
|
99
102
|
}
|
|
103
|
+
function parse_array(text) {
|
|
104
|
+
const value = parse_or_undefined(text);
|
|
105
|
+
return Array.isArray(value) ? value : void 0;
|
|
106
|
+
}
|
|
100
107
|
function is_record(value) {
|
|
101
108
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
102
109
|
}
|
|
103
|
-
var json_value = { parse_or_undefined, parse_with, is_record };
|
|
110
|
+
var json_value = { parse_or_undefined, parse_with, parse_array, is_record };
|
|
111
|
+
|
|
112
|
+
// scripts/lib/read-file.ts
|
|
113
|
+
import { readFileSync } from "node:fs";
|
|
114
|
+
var ABSENT_CODE = "ENOENT";
|
|
115
|
+
function is_absent(error) {
|
|
116
|
+
return error instanceof Error && "code" in error && error.code === ABSENT_CODE;
|
|
117
|
+
}
|
|
118
|
+
function read_optional(path7) {
|
|
119
|
+
try {
|
|
120
|
+
return readFileSync(path7, "utf8");
|
|
121
|
+
} catch (error) {
|
|
122
|
+
if (is_absent(error)) return void 0;
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function read_file_or_empty(path7) {
|
|
127
|
+
return read_optional(path7) ?? "";
|
|
128
|
+
}
|
|
129
|
+
function read_if_readable(path7) {
|
|
130
|
+
try {
|
|
131
|
+
return readFileSync(path7, "utf8");
|
|
132
|
+
} catch {
|
|
133
|
+
return void 0;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
var file_reader = { is_absent, read_optional, read_file_or_empty, read_if_readable };
|
|
137
|
+
|
|
138
|
+
// scripts/lib/package-manifest.ts
|
|
139
|
+
var PACKAGE_JSON = "package.json";
|
|
140
|
+
function manifest_path(directory) {
|
|
141
|
+
return path2.join(directory, PACKAGE_JSON);
|
|
142
|
+
}
|
|
143
|
+
function read_manifest(directory, schema) {
|
|
144
|
+
const text = readFileSync2(manifest_path(directory), "utf8");
|
|
145
|
+
return schema.parse(JSON.parse(text));
|
|
146
|
+
}
|
|
147
|
+
function read_manifest_if_valid(directory, schema) {
|
|
148
|
+
const text = file_reader.read_if_readable(manifest_path(directory));
|
|
149
|
+
if (text === void 0) return void 0;
|
|
150
|
+
return json_value.parse_with(text, schema);
|
|
151
|
+
}
|
|
152
|
+
var package_manifest = { manifest_path, read_manifest, read_manifest_if_valid };
|
|
104
153
|
|
|
105
154
|
// scripts/lib/schemas.ts
|
|
106
155
|
import { z } from "zod";
|
|
@@ -135,18 +184,14 @@ var string_array_schema = z.array(z.string());
|
|
|
135
184
|
var string_record_schema = z.record(z.string(), z.string());
|
|
136
185
|
|
|
137
186
|
// scripts/version/effective-upstream.ts
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
if (
|
|
141
|
-
|
|
142
|
-
json_value.parse_or_undefined(readFileSync(manifest_path, "utf8"))
|
|
143
|
-
);
|
|
144
|
-
if (!parsed.success || parsed.data.name !== package_name) return void 0;
|
|
145
|
-
return parsed.data.version;
|
|
187
|
+
function read_matching_version(directory, package_name) {
|
|
188
|
+
const manifest = package_manifest.read_manifest_if_valid(directory, package_named_version_schema);
|
|
189
|
+
if (manifest?.name !== package_name) return void 0;
|
|
190
|
+
return manifest.version;
|
|
146
191
|
}
|
|
147
192
|
function walk_up_for_version(start_directory, package_name) {
|
|
148
193
|
for (const directory of ancestor_directories.list(start_directory)) {
|
|
149
|
-
const version = read_matching_version(
|
|
194
|
+
const version = read_matching_version(directory, package_name);
|
|
150
195
|
if (version !== void 0) return version;
|
|
151
196
|
}
|
|
152
197
|
return void 0;
|
|
@@ -161,10 +206,13 @@ function resolve_from_base(base_url, package_name, resolve_marker = package_name
|
|
|
161
206
|
function resolve_effective_upstream_version(base_url, package_name, options = {}) {
|
|
162
207
|
const resolved = resolve_from_base(base_url, package_name, options.resolve_marker);
|
|
163
208
|
if (resolved === void 0) return void 0;
|
|
164
|
-
return walk_up_for_version(
|
|
209
|
+
return walk_up_for_version(path3.dirname(resolved), package_name);
|
|
165
210
|
}
|
|
166
211
|
|
|
167
212
|
// scripts/lib/timeouts.ts
|
|
213
|
+
var MS_PER_SECOND = 1e3;
|
|
214
|
+
var SECONDS_PER_MINUTE = 60;
|
|
215
|
+
var MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;
|
|
168
216
|
var FETCH_TIMEOUT_MS = 1e4;
|
|
169
217
|
var COMMAND_TIMEOUT_MS = 3e4;
|
|
170
218
|
var INSTALL_TIMEOUT_MS = 6e5;
|
|
@@ -173,8 +221,8 @@ var INSTALL_TIMEOUT_MS = 6e5;
|
|
|
173
221
|
import { execaSync as execaSync4 } from "execa";
|
|
174
222
|
|
|
175
223
|
// scripts/version/release-age.ts
|
|
176
|
-
import { readFileSync as
|
|
177
|
-
import
|
|
224
|
+
import { readFileSync as readFileSync3 } from "node:fs";
|
|
225
|
+
import path4 from "node:path";
|
|
178
226
|
|
|
179
227
|
// scripts/lib/yaml-document.ts
|
|
180
228
|
import { load, loadAll, YAMLException } from "js-yaml";
|
|
@@ -208,7 +256,6 @@ var NO_QUARANTINE_MINUTES = 0;
|
|
|
208
256
|
var WORKSPACE_PATH = "pnpm-workspace.yaml";
|
|
209
257
|
var workspace_age_schema = z2.object({ minimumReleaseAge: z2.number().int().nonnegative() });
|
|
210
258
|
var release_times_schema = z2.record(z2.string(), z2.string());
|
|
211
|
-
var MS_PER_MINUTE = 6e4;
|
|
212
259
|
function parse_workspace(workspace_content) {
|
|
213
260
|
try {
|
|
214
261
|
return yaml_document.parse_yaml(workspace_content);
|
|
@@ -240,7 +287,7 @@ function select_aged_version(times, major, minimum_age_minutes, now_ms) {
|
|
|
240
287
|
}
|
|
241
288
|
function read_declared_minimum_release_age(workspace_path) {
|
|
242
289
|
try {
|
|
243
|
-
return parse_declared_minimum_release_age(
|
|
290
|
+
return parse_declared_minimum_release_age(readFileSync3(workspace_path, "utf8"));
|
|
244
291
|
} catch {
|
|
245
292
|
return void 0;
|
|
246
293
|
}
|
|
@@ -249,14 +296,14 @@ function read_minimum_release_age(workspace_path = WORKSPACE_PATH) {
|
|
|
249
296
|
return read_declared_minimum_release_age(workspace_path) ?? NO_QUARANTINE_MINUTES;
|
|
250
297
|
}
|
|
251
298
|
function find_declared_minimum_release_age(start, boundary) {
|
|
252
|
-
const declared = read_declared_minimum_release_age(
|
|
299
|
+
const declared = read_declared_minimum_release_age(path4.join(start, WORKSPACE_PATH));
|
|
253
300
|
if (declared !== void 0) return declared;
|
|
254
301
|
if (start === boundary) return void 0;
|
|
255
|
-
const parent =
|
|
302
|
+
const parent = path4.dirname(start);
|
|
256
303
|
return parent === start ? void 0 : find_declared_minimum_release_age(parent, boundary);
|
|
257
304
|
}
|
|
258
305
|
function read_nearest_minimum_release_age(start, boundary) {
|
|
259
|
-
return find_declared_minimum_release_age(
|
|
306
|
+
return find_declared_minimum_release_age(path4.resolve(start), boundary) ?? NO_QUARANTINE_MINUTES;
|
|
260
307
|
}
|
|
261
308
|
var release_age = {
|
|
262
309
|
release_times_schema,
|
|
@@ -270,14 +317,13 @@ var release_age = {
|
|
|
270
317
|
// scripts/version/release-hold.ts
|
|
271
318
|
import semver2 from "semver";
|
|
272
319
|
var MINUTES_PER_HOUR = 60;
|
|
273
|
-
var MS_PER_MINUTE2 = 6e4;
|
|
274
320
|
var HOLD_LABEL = "Held:";
|
|
275
321
|
function is_latest_withheld(times, latest, minimum_age_minutes, now_ms) {
|
|
276
322
|
const published_at = times[latest];
|
|
277
323
|
if (published_at === void 0) return false;
|
|
278
324
|
const published_ms = Date.parse(published_at);
|
|
279
325
|
if (!Number.isFinite(published_ms)) return false;
|
|
280
|
-
return published_ms > now_ms - minimum_age_minutes *
|
|
326
|
+
return published_ms > now_ms - minimum_age_minutes * MS_PER_MINUTE;
|
|
281
327
|
}
|
|
282
328
|
function resolve_installable(times, latest, minimum_age_minutes, now_ms) {
|
|
283
329
|
if (times === void 0 || !is_latest_withheld(times, latest, minimum_age_minutes, now_ms)) {
|
|
@@ -320,21 +366,20 @@ var release_hold = {
|
|
|
320
366
|
};
|
|
321
367
|
|
|
322
368
|
// scripts/version/running-binary.ts
|
|
323
|
-
import { existsSync
|
|
324
|
-
import
|
|
325
|
-
var PACKAGE_JSON2 = "package.json";
|
|
369
|
+
import { existsSync, readFileSync as readFileSync4 } from "node:fs";
|
|
370
|
+
import path5 from "node:path";
|
|
326
371
|
var SCRIPT_DEPTH_FROM_ROOT = ["..", ".."];
|
|
327
372
|
function resolve_self_package_path(self_directory) {
|
|
328
|
-
return
|
|
373
|
+
return path5.join(self_directory, ...SCRIPT_DEPTH_FROM_ROOT, PACKAGE_JSON);
|
|
329
374
|
}
|
|
330
375
|
function running_package_directory(self_directory) {
|
|
331
|
-
return
|
|
376
|
+
return path5.resolve(self_directory, ...SCRIPT_DEPTH_FROM_ROOT);
|
|
332
377
|
}
|
|
333
378
|
function read_running_version(self_directory) {
|
|
334
379
|
const package_path = resolve_self_package_path(self_directory);
|
|
335
|
-
if (!
|
|
380
|
+
if (!existsSync(package_path)) return void 0;
|
|
336
381
|
const parsed = package_version_schema.safeParse(
|
|
337
|
-
json_value.parse_or_undefined(
|
|
382
|
+
json_value.parse_or_undefined(readFileSync4(package_path, "utf8"))
|
|
338
383
|
);
|
|
339
384
|
return parsed.success ? parsed.data.version : void 0;
|
|
340
385
|
}
|
|
@@ -536,6 +581,11 @@ var version_check_logic = {
|
|
|
536
581
|
};
|
|
537
582
|
|
|
538
583
|
// scripts/git/git-execa-error.ts
|
|
584
|
+
function get_exit_code(error) {
|
|
585
|
+
if (typeof error !== "object" || error === null || !("exitCode" in error)) return void 0;
|
|
586
|
+
const { exitCode: exit_code } = error;
|
|
587
|
+
return typeof exit_code === "number" ? exit_code : void 0;
|
|
588
|
+
}
|
|
539
589
|
function has_timed_out(error) {
|
|
540
590
|
if (typeof error !== "object" || error === null || !("timedOut" in error)) return false;
|
|
541
591
|
return error.timedOut === true;
|
|
@@ -636,6 +686,75 @@ function trace_swallowed(where, error) {
|
|
|
636
686
|
}
|
|
637
687
|
var error_text = { message_of, trace_swallowed };
|
|
638
688
|
|
|
689
|
+
// scripts/lib/token-shape.ts
|
|
690
|
+
var REDACTED = "[REDACTED]";
|
|
691
|
+
var GITHUB_RULE = "@secretlint/secretlint-rule-github";
|
|
692
|
+
var ANTHROPIC_OAUTH_TOKEN = /sk-ant-oat\d+-[\w-]+/u;
|
|
693
|
+
var SHAPES = [
|
|
694
|
+
{
|
|
695
|
+
name: "GitHub token",
|
|
696
|
+
pattern: new RegExp("(?<!\\p{L})(?:ghp|gho|ghu|ghs|ghr)_\\w{36}(?!\\w)", "u"),
|
|
697
|
+
secretlint: GITHUB_RULE
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
name: "GitHub App installation token",
|
|
701
|
+
pattern: new RegExp("(?<!\\p{L})ghs_\\d{1,20}_[\\w-]{1,1000}\\.[\\w-]{1,10000}\\.[\\w-]{1,1000}(?![\\w-])", "u"),
|
|
702
|
+
secretlint: GITHUB_RULE
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
name: "GitHub fine-grained token",
|
|
706
|
+
pattern: new RegExp("(?<!\\p{L})github_pat_\\w{82}(?!\\w)", "u"),
|
|
707
|
+
secretlint: GITHUB_RULE
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
name: "Slack token",
|
|
711
|
+
pattern: /\b(?:xoxb|xoxp|xapp|xoxa|xoxo|xoxr)-(?:\d-)?(?:[a-zA-Z0-9]{1,40}-)+[a-zA-Z0-9]{1,40}\b/u,
|
|
712
|
+
secretlint: "@secretlint/secretlint-rule-slack"
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
name: "Anthropic API key",
|
|
716
|
+
pattern: new RegExp("(?<!\\p{L})sk-ant-api0\\d-[\\w-]{90,128}AA(?![\\w-])", "u"),
|
|
717
|
+
secretlint: "@secretlint/secretlint-rule-anthropic"
|
|
718
|
+
},
|
|
719
|
+
{ name: "Anthropic OAuth token", pattern: ANTHROPIC_OAUTH_TOKEN, secretlint: void 0 }
|
|
720
|
+
];
|
|
721
|
+
var EVERY_SHAPE = new RegExp(SHAPES.map((shape) => shape.pattern.source).join("|"), "gu");
|
|
722
|
+
function find(text) {
|
|
723
|
+
return SHAPES.find((shape) => shape.pattern.test(text));
|
|
724
|
+
}
|
|
725
|
+
function holds(text) {
|
|
726
|
+
return SHAPES.some((shape) => shape.pattern.test(text));
|
|
727
|
+
}
|
|
728
|
+
function refuse(text, subject) {
|
|
729
|
+
const shape = find(text);
|
|
730
|
+
if (shape === void 0) return;
|
|
731
|
+
throw new Error(
|
|
732
|
+
`${subject} holds a ${shape.name}-shaped string, so it was not sent. Remove the credential and send it again.`
|
|
733
|
+
);
|
|
734
|
+
}
|
|
735
|
+
function redact(text) {
|
|
736
|
+
return text.replaceAll(EVERY_SHAPE, () => REDACTED);
|
|
737
|
+
}
|
|
738
|
+
function string_leaves(value) {
|
|
739
|
+
if (typeof value === "string") return [value];
|
|
740
|
+
if (typeof value !== "object" || value === null) return [];
|
|
741
|
+
return Object.values(value).flatMap((entry) => string_leaves(entry));
|
|
742
|
+
}
|
|
743
|
+
function decoded(body) {
|
|
744
|
+
const value = json_value.parse_or_undefined(body);
|
|
745
|
+
return value === void 0 ? body : string_leaves(value).join("\n");
|
|
746
|
+
}
|
|
747
|
+
var token_shape = {
|
|
748
|
+
ANTHROPIC_OAUTH_TOKEN,
|
|
749
|
+
REDACTED,
|
|
750
|
+
SHAPES,
|
|
751
|
+
decoded,
|
|
752
|
+
find,
|
|
753
|
+
holds,
|
|
754
|
+
refuse,
|
|
755
|
+
redact
|
|
756
|
+
};
|
|
757
|
+
|
|
639
758
|
// scripts/gh/git-gh-exec.ts
|
|
640
759
|
import { execa as execa2, execaSync } from "execa";
|
|
641
760
|
|
|
@@ -698,6 +817,78 @@ function failure_of(error) {
|
|
|
698
817
|
}
|
|
699
818
|
var gh_failure = { attach, classify_stdout, failure_of, parse_response_status };
|
|
700
819
|
|
|
820
|
+
// scripts/gh/git-gh-retry.ts
|
|
821
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
822
|
+
var FIRST_RETRY_DELAY_MS = 2e3;
|
|
823
|
+
var SECOND_RETRY_DELAY_MS = 5e3;
|
|
824
|
+
var RETRY_DELAYS_MS = [FIRST_RETRY_DELAY_MS, SECOND_RETRY_DELAY_MS];
|
|
825
|
+
var MAX_ATTEMPTS = RETRY_DELAYS_MS.length + 1;
|
|
826
|
+
var SERVER_ERROR_FLOOR = 500;
|
|
827
|
+
var GH_AUTH_REQUIRED_EXIT_CODE = 4;
|
|
828
|
+
var SPENT_NOTE = "gh: request failed transiently on every attempt";
|
|
829
|
+
var SUMMARY_STATUS_PATTERN = /\(HTTP (?<status>\d{3})\)/u;
|
|
830
|
+
var DEFAULT_HOOKS = {
|
|
831
|
+
wait: async (milliseconds) => {
|
|
832
|
+
await delay(milliseconds);
|
|
833
|
+
},
|
|
834
|
+
note: (text) => {
|
|
835
|
+
process.stderr.write(`${text}
|
|
836
|
+
`);
|
|
837
|
+
}
|
|
838
|
+
};
|
|
839
|
+
function summary_status(error) {
|
|
840
|
+
const { status } = SUMMARY_STATUS_PATTERN.exec(error.message)?.groups ?? {};
|
|
841
|
+
return status === void 0 ? void 0 : Number(status);
|
|
842
|
+
}
|
|
843
|
+
function has_answer(spawn_error) {
|
|
844
|
+
if (!(spawn_error instanceof Error) || !("stdout" in spawn_error)) return false;
|
|
845
|
+
return typeof spawn_error.stdout === "string" && spawn_error.stdout.trim().length > 0;
|
|
846
|
+
}
|
|
847
|
+
function is_transient_status(status, spawn_error) {
|
|
848
|
+
if (status === void 0) return !has_answer(spawn_error);
|
|
849
|
+
return status >= SERVER_ERROR_FLOOR;
|
|
850
|
+
}
|
|
851
|
+
function is_final_spawn(spawn_error) {
|
|
852
|
+
return has_timed_out(spawn_error) || get_exit_code(spawn_error) === GH_AUTH_REQUIRED_EXIT_CODE;
|
|
853
|
+
}
|
|
854
|
+
function is_transient(error) {
|
|
855
|
+
const failure = gh_failure.failure_of(error);
|
|
856
|
+
if (failure === void 0 || !(error instanceof Error)) return false;
|
|
857
|
+
const status = failure.status ?? summary_status(error);
|
|
858
|
+
return !is_final_spawn(error.cause) && is_transient_status(status, error.cause);
|
|
859
|
+
}
|
|
860
|
+
function first_line(error) {
|
|
861
|
+
return error_text.message_of(error).split("\n", 1)[0] ?? "";
|
|
862
|
+
}
|
|
863
|
+
function retry_note(error, attempt, wait_ms) {
|
|
864
|
+
const ordinal = `${String(attempt)}/${String(MAX_ATTEMPTS)}`;
|
|
865
|
+
return `gh: request failed transiently (attempt ${ordinal}: ${first_line(error)}) \u2014 retrying in ${String(wait_ms)} ms`;
|
|
866
|
+
}
|
|
867
|
+
function retry_delay(error, attempt) {
|
|
868
|
+
return is_transient(error) ? RETRY_DELAYS_MS[attempt - 1] : void 0;
|
|
869
|
+
}
|
|
870
|
+
function spent_note(message) {
|
|
871
|
+
return `${SPENT_NOTE} (${message})`;
|
|
872
|
+
}
|
|
873
|
+
function note_spent(error, attempt, hooks) {
|
|
874
|
+
if (attempt === MAX_ATTEMPTS && is_transient(error)) hooks.note(spent_note(first_line(error)));
|
|
875
|
+
}
|
|
876
|
+
async function with_retry(request, hooks = DEFAULT_HOOKS, attempt = 1) {
|
|
877
|
+
try {
|
|
878
|
+
return await request();
|
|
879
|
+
} catch (error) {
|
|
880
|
+
const wait_ms = retry_delay(error, attempt);
|
|
881
|
+
if (wait_ms === void 0) {
|
|
882
|
+
note_spent(error, attempt, hooks);
|
|
883
|
+
throw error;
|
|
884
|
+
}
|
|
885
|
+
hooks.note(retry_note(error, attempt, wait_ms));
|
|
886
|
+
await hooks.wait(wait_ms);
|
|
887
|
+
return await with_retry(request, hooks, attempt + 1);
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
var gh_retry = { MAX_ATTEMPTS, RETRY_DELAYS_MS, is_transient, spent_note, with_retry };
|
|
891
|
+
|
|
701
892
|
// scripts/gh/git-gh-exec.ts
|
|
702
893
|
var BODY_FROM_STDIN = "-";
|
|
703
894
|
var GH_REQUEST_TIMEOUT_MS = 6e4;
|
|
@@ -764,20 +955,20 @@ function parse_status_line(output) {
|
|
|
764
955
|
function status_of_failure(error) {
|
|
765
956
|
return has_stdout_field(error) ? parse_status_line(error.stdout) : void 0;
|
|
766
957
|
}
|
|
767
|
-
async function exec_gh_api_status(
|
|
958
|
+
async function exec_gh_api_status(path7, timeout_ms) {
|
|
768
959
|
const options = to_spawn_options(timeout_ms);
|
|
769
960
|
try {
|
|
770
961
|
await check_gh_installed();
|
|
771
|
-
const { stdout } = await execa2("gh", ["api", "--include", "--silent",
|
|
962
|
+
const { stdout } = await execa2("gh", ["api", "--include", "--silent", path7], options);
|
|
772
963
|
return parse_status_line(stdout);
|
|
773
964
|
} catch (error) {
|
|
774
965
|
return status_of_failure(error);
|
|
775
966
|
}
|
|
776
967
|
}
|
|
777
|
-
function exec_gh_api_status_sync(
|
|
968
|
+
function exec_gh_api_status_sync(path7, timeout_ms) {
|
|
778
969
|
const options = to_spawn_options(timeout_ms);
|
|
779
970
|
try {
|
|
780
|
-
const { stdout } = execaSync("gh", ["api", "--include", "--silent",
|
|
971
|
+
const { stdout } = execaSync("gh", ["api", "--include", "--silent", path7], options);
|
|
781
972
|
return parse_status_line(stdout);
|
|
782
973
|
} catch (error) {
|
|
783
974
|
return status_of_failure(error);
|
|
@@ -788,13 +979,20 @@ var INPUT_FLAG = "--input";
|
|
|
788
979
|
var PAGINATE_FLAG = "--paginate";
|
|
789
980
|
var SLURP_FLAG = "--slurp";
|
|
790
981
|
var JQ_FLAG = "--jq";
|
|
982
|
+
var ALLOW_ESCAPES_FLAG = "--allow-escape-sequences";
|
|
791
983
|
function optional_flag(flag, value) {
|
|
792
984
|
return value === void 0 ? [] : [flag, value];
|
|
793
985
|
}
|
|
986
|
+
function refuse_credential_body(request) {
|
|
987
|
+
if (request.body !== void 0) {
|
|
988
|
+
token_shape.refuse(token_shape.decoded(request.body), `The gh api ${request.path} body`);
|
|
989
|
+
}
|
|
990
|
+
}
|
|
794
991
|
function to_gh_api_args(request) {
|
|
795
992
|
const body_args = request.body === void 0 ? [] : [INPUT_FLAG, BODY_FROM_STDIN];
|
|
796
993
|
const paginate_args = request.should_paginate === true ? [PAGINATE_FLAG] : [];
|
|
797
994
|
const slurp_args = request.should_slurp === true ? [SLURP_FLAG] : [];
|
|
995
|
+
const escape_args = request.should_allow_escapes === true ? [ALLOW_ESCAPES_FLAG] : [];
|
|
798
996
|
return [
|
|
799
997
|
"api",
|
|
800
998
|
request.path,
|
|
@@ -802,10 +1000,11 @@ function to_gh_api_args(request) {
|
|
|
802
1000
|
...body_args,
|
|
803
1001
|
...paginate_args,
|
|
804
1002
|
...slurp_args,
|
|
1003
|
+
...escape_args,
|
|
805
1004
|
...optional_flag(JQ_FLAG, request.jq_filter)
|
|
806
1005
|
];
|
|
807
1006
|
}
|
|
808
|
-
async function
|
|
1007
|
+
async function send_gh_api(request) {
|
|
809
1008
|
const args = to_gh_api_args(request);
|
|
810
1009
|
if (request.body === void 0) {
|
|
811
1010
|
return await exec_gh_command(args, request.timeout_ms, request.cwd);
|
|
@@ -817,7 +1016,13 @@ async function exec_gh_api(request) {
|
|
|
817
1016
|
cwd: request.cwd
|
|
818
1017
|
});
|
|
819
1018
|
}
|
|
1019
|
+
async function exec_gh_api(request) {
|
|
1020
|
+
refuse_credential_body(request);
|
|
1021
|
+
if (request.should_retry === false) return await send_gh_api(request);
|
|
1022
|
+
return await gh_retry.with_retry(async () => await send_gh_api(request));
|
|
1023
|
+
}
|
|
820
1024
|
function exec_gh_api_sync(request) {
|
|
1025
|
+
refuse_credential_body(request);
|
|
821
1026
|
const body_option = request.body === void 0 ? {} : { input: request.body };
|
|
822
1027
|
const options = { ...body_option, ...to_spawn_options(request.timeout_ms, request.cwd) };
|
|
823
1028
|
try {
|
|
@@ -846,328 +1051,21 @@ var git_gh_exec = {
|
|
|
846
1051
|
parse_status_line
|
|
847
1052
|
};
|
|
848
1053
|
|
|
849
|
-
// scripts/gh/fix-gh-packages-logic.ts
|
|
850
|
-
import { loadAll as loadAll2 } from "js-yaml";
|
|
851
|
-
import { z as z4 } from "zod";
|
|
852
|
-
var GH_PACKAGES_HOST = "npm.pkg.github.com";
|
|
853
|
-
var RESOLUTION_BLOCK = "\n resolution:\n";
|
|
854
|
-
var INTEGRITY_PREFIX = " integrity: ";
|
|
855
|
-
var TARBALL_PREFIX = " tarball: ";
|
|
856
|
-
var FLOW_RESOLUTION_LINE_START = "\n resolution: {";
|
|
857
|
-
var FLOW_TARBALL_KEY = ", tarball: ";
|
|
858
|
-
var NPMRC_AUTH_TOKEN_PREFIX = `//${GH_PACKAGES_HOST}/:_authToken=`;
|
|
859
|
-
var REGISTRY_KEY = ":registry=";
|
|
860
|
-
var lockfile_resolution_schema = z4.looseObject({
|
|
861
|
-
integrity: z4.string().optional(),
|
|
862
|
-
tarball: z4.string().optional()
|
|
863
|
-
});
|
|
864
|
-
var lockfile_package_schema = z4.looseObject({
|
|
865
|
-
resolution: lockfile_resolution_schema.optional()
|
|
866
|
-
});
|
|
867
|
-
var lockfile_document_schema = z4.looseObject({
|
|
868
|
-
packages: z4.record(z4.string(), lockfile_package_schema).optional()
|
|
869
|
-
});
|
|
870
|
-
function parse_lockfile_packages(raw) {
|
|
871
|
-
const merged = {};
|
|
872
|
-
for (const document of loadAll2(raw)) {
|
|
873
|
-
const { packages } = lockfile_document_schema.parse(document);
|
|
874
|
-
if (packages !== void 0) Object.assign(merged, packages);
|
|
875
|
-
}
|
|
876
|
-
return merged;
|
|
877
|
-
}
|
|
878
|
-
function extract_gh_registry_scope(line) {
|
|
879
|
-
const trimmed = line.trim();
|
|
880
|
-
if (!trimmed.startsWith("@")) return void 0;
|
|
881
|
-
const eq_index = trimmed.indexOf(REGISTRY_KEY);
|
|
882
|
-
if (eq_index === -1) return void 0;
|
|
883
|
-
const registry = trimmed.slice(eq_index + REGISTRY_KEY.length).trim().replace(/\/$/u, "");
|
|
884
|
-
if (registry !== `https://${GH_PACKAGES_HOST}`) return void 0;
|
|
885
|
-
return trimmed.slice(0, eq_index);
|
|
886
|
-
}
|
|
887
|
-
function parse_gh_scopes(npmrc) {
|
|
888
|
-
const scopes = /* @__PURE__ */ new Set();
|
|
889
|
-
for (const line of npmrc.split("\n")) {
|
|
890
|
-
const scope = extract_gh_registry_scope(line);
|
|
891
|
-
if (scope !== void 0) scopes.add(scope);
|
|
892
|
-
}
|
|
893
|
-
return scopes;
|
|
894
|
-
}
|
|
895
|
-
function extract_auth_token_from_line(line) {
|
|
896
|
-
const trimmed = line.trim();
|
|
897
|
-
if (!trimmed.startsWith(NPMRC_AUTH_TOKEN_PREFIX)) return void 0;
|
|
898
|
-
const value = trimmed.slice(NPMRC_AUTH_TOKEN_PREFIX.length);
|
|
899
|
-
if (value.startsWith("${") || value.length === 0) return void 0;
|
|
900
|
-
return value;
|
|
901
|
-
}
|
|
902
|
-
function parse_npmrc_auth_token(npmrc) {
|
|
903
|
-
for (const line of npmrc.split("\n")) {
|
|
904
|
-
const token = extract_auth_token_from_line(line);
|
|
905
|
-
if (token !== void 0) return token;
|
|
906
|
-
}
|
|
907
|
-
return void 0;
|
|
908
|
-
}
|
|
909
|
-
function scope_from_key(key) {
|
|
910
|
-
return key.startsWith("@") ? key.split("/", 1)[0] ?? "" : "";
|
|
911
|
-
}
|
|
912
|
-
function has_tarball(entry) {
|
|
913
|
-
return entry.resolution?.tarball !== void 0;
|
|
914
|
-
}
|
|
915
|
-
function package_path_from_key(key) {
|
|
916
|
-
const start = key.startsWith("@") ? 1 : 0;
|
|
917
|
-
const at_index = key.indexOf("@", start);
|
|
918
|
-
return at_index === -1 ? key : key.slice(0, at_index);
|
|
919
|
-
}
|
|
920
|
-
function package_version_from_key(key) {
|
|
921
|
-
const start = key.startsWith("@") ? 1 : 0;
|
|
922
|
-
const at_index = key.indexOf("@", start);
|
|
923
|
-
if (at_index === -1) return "";
|
|
924
|
-
return key.slice(at_index + 1).split("(", 1)[0] ?? "";
|
|
925
|
-
}
|
|
926
|
-
function should_fix_tarball(key, entry, scopes) {
|
|
927
|
-
if (has_tarball(entry)) return false;
|
|
928
|
-
const scope = scope_from_key(key);
|
|
929
|
-
return scope.length > 0 && scopes.has(scope);
|
|
930
|
-
}
|
|
931
|
-
function find_entry_start(content, package_key) {
|
|
932
|
-
const single = content.indexOf(`
|
|
933
|
-
'${package_key}':
|
|
934
|
-
`);
|
|
935
|
-
if (single !== -1) return single;
|
|
936
|
-
return content.indexOf(`
|
|
937
|
-
"${package_key}":
|
|
938
|
-
`);
|
|
939
|
-
}
|
|
940
|
-
function find_entry_end(content, entry_start) {
|
|
941
|
-
const next_match = /\n {2}['"]/u.exec(content.slice(entry_start + 1));
|
|
942
|
-
return next_match === null ? content.length : entry_start + 1 + next_match.index;
|
|
943
|
-
}
|
|
944
|
-
function find_integrity_eol_in_entry(entry_content) {
|
|
945
|
-
const resolution_pos = entry_content.indexOf(RESOLUTION_BLOCK);
|
|
946
|
-
if (resolution_pos === -1) return -1;
|
|
947
|
-
const integrity_pos = entry_content.indexOf(INTEGRITY_PREFIX, resolution_pos);
|
|
948
|
-
if (integrity_pos === -1) return -1;
|
|
949
|
-
return entry_content.indexOf("\n", integrity_pos);
|
|
950
|
-
}
|
|
951
|
-
function find_flow_resolution_brace(entry_content) {
|
|
952
|
-
const pos = entry_content.indexOf(FLOW_RESOLUTION_LINE_START);
|
|
953
|
-
if (pos === -1) return -1;
|
|
954
|
-
const line_end = entry_content.indexOf("\n", pos + 1);
|
|
955
|
-
const search_end = line_end === -1 ? entry_content.length : line_end;
|
|
956
|
-
const brace = entry_content.lastIndexOf("}", search_end);
|
|
957
|
-
if (brace <= pos) return -1;
|
|
958
|
-
return brace;
|
|
959
|
-
}
|
|
960
|
-
function insert_expanded_tarball(content, entry_start, entry_end, tarball) {
|
|
961
|
-
const entry_content = content.slice(entry_start, entry_end);
|
|
962
|
-
const integrity_eol = find_integrity_eol_in_entry(entry_content);
|
|
963
|
-
if (integrity_eol === -1) return void 0;
|
|
964
|
-
if (entry_content.slice(integrity_eol + 1).startsWith(TARBALL_PREFIX)) return content;
|
|
965
|
-
const patched = `${entry_content.slice(0, integrity_eol + 1)}${TARBALL_PREFIX}${tarball}
|
|
966
|
-
${entry_content.slice(integrity_eol + 1)}`;
|
|
967
|
-
return content.slice(0, entry_start) + patched + content.slice(entry_end);
|
|
968
|
-
}
|
|
969
|
-
function insert_flow_tarball(content, entry_start, entry_end, tarball) {
|
|
970
|
-
const entry_content = content.slice(entry_start, entry_end);
|
|
971
|
-
const brace_pos = find_flow_resolution_brace(entry_content);
|
|
972
|
-
if (brace_pos === -1) return void 0;
|
|
973
|
-
const open_brace = entry_content.lastIndexOf("{", brace_pos);
|
|
974
|
-
if (open_brace === -1) return void 0;
|
|
975
|
-
const flow_body = entry_content.slice(open_brace + 1, brace_pos);
|
|
976
|
-
if (/\btarball\s*:/u.test(flow_body)) return content;
|
|
977
|
-
const patched = `${entry_content.slice(0, brace_pos)}${FLOW_TARBALL_KEY}${tarball}${entry_content.slice(brace_pos)}`;
|
|
978
|
-
return content.slice(0, entry_start) + patched + content.slice(entry_end);
|
|
979
|
-
}
|
|
980
|
-
function insert_tarball_for_key(content, package_key, tarball) {
|
|
981
|
-
const entry_start = find_entry_start(content, package_key);
|
|
982
|
-
if (entry_start === -1) return content;
|
|
983
|
-
const entry_end = find_entry_end(content, entry_start);
|
|
984
|
-
return insert_expanded_tarball(content, entry_start, entry_end, tarball) ?? insert_flow_tarball(content, entry_start, entry_end, tarball) ?? content;
|
|
985
|
-
}
|
|
986
|
-
function patch_lockfile(content, patches) {
|
|
987
|
-
let result = content;
|
|
988
|
-
for (const [key, tarball] of patches) {
|
|
989
|
-
result = insert_tarball_for_key(result, key, tarball);
|
|
990
|
-
}
|
|
991
|
-
return result;
|
|
992
|
-
}
|
|
993
|
-
function resolve_token(environment_token, npmrc_token, get_fallback_token) {
|
|
994
|
-
if (environment_token !== void 0 && environment_token.length > 0) return environment_token;
|
|
995
|
-
if (npmrc_token !== void 0) return npmrc_token;
|
|
996
|
-
return get_fallback_token();
|
|
997
|
-
}
|
|
998
|
-
var fix_gh_packages_logic = {
|
|
999
|
-
parse_gh_scopes,
|
|
1000
|
-
parse_npmrc_auth_token,
|
|
1001
|
-
parse_lockfile_packages,
|
|
1002
|
-
package_path_from_key,
|
|
1003
|
-
package_version_from_key,
|
|
1004
|
-
needs_tarball_fix: should_fix_tarball,
|
|
1005
|
-
insert_tarball_for_key,
|
|
1006
|
-
patch_lockfile,
|
|
1007
|
-
resolve_token
|
|
1008
|
-
};
|
|
1009
|
-
|
|
1010
|
-
// scripts/registry-migration/migrate-logic.ts
|
|
1011
|
-
var SCOPE = "@joshuafolkken";
|
|
1012
|
-
var REGISTRY_KEY2 = `${SCOPE}:registry`;
|
|
1013
|
-
var PUBLIC_REGISTRY = "https://registry.npmjs.org/";
|
|
1014
|
-
var GITHUB_REGISTRY = "https://npm.pkg.github.com/";
|
|
1015
|
-
var MAPPING = `${REGISTRY_KEY2}=${PUBLIC_REGISTRY}`;
|
|
1016
|
-
var REGISTRY_VALUE_INDEX = 1;
|
|
1017
|
-
var SPLIT_LIMIT = 2;
|
|
1018
|
-
function normalized_registry(value) {
|
|
1019
|
-
let normalized = value.trim();
|
|
1020
|
-
while (normalized.endsWith("/")) normalized = normalized.slice(0, -1);
|
|
1021
|
-
return `${normalized}/`;
|
|
1022
|
-
}
|
|
1023
|
-
function mapping_lines(content) {
|
|
1024
|
-
return content.split(/\r?\n/u).filter((line) => line.trimStart().startsWith(`${REGISTRY_KEY2}=`));
|
|
1025
|
-
}
|
|
1026
|
-
function registry_of(content) {
|
|
1027
|
-
const lines = mapping_lines(content);
|
|
1028
|
-
if (lines.length !== 1) return void 0;
|
|
1029
|
-
return normalized_registry(lines[0]?.split("=", SPLIT_LIMIT)[REGISTRY_VALUE_INDEX] ?? "");
|
|
1030
|
-
}
|
|
1031
|
-
function scoped_packages(lockfile) {
|
|
1032
|
-
const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
|
|
1033
|
-
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);
|
|
1034
|
-
}
|
|
1035
|
-
function scoped_versions(lockfile) {
|
|
1036
|
-
const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
|
|
1037
|
-
return Object.keys(packages).filter((key) => key.startsWith(`${SCOPE}/`)).map(
|
|
1038
|
-
(key) => [
|
|
1039
|
-
fix_gh_packages_logic.package_path_from_key(key),
|
|
1040
|
-
fix_gh_packages_logic.package_version_from_key(key)
|
|
1041
|
-
]
|
|
1042
|
-
);
|
|
1043
|
-
}
|
|
1044
|
-
function is_github_tarball(value) {
|
|
1045
|
-
try {
|
|
1046
|
-
const url = new URL(value);
|
|
1047
|
-
return url.protocol === "https:" && url.hostname === "npm.pkg.github.com";
|
|
1048
|
-
} catch {
|
|
1049
|
-
return false;
|
|
1050
|
-
}
|
|
1051
|
-
}
|
|
1052
|
-
function github_tarballs(lockfile) {
|
|
1053
|
-
const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
|
|
1054
|
-
return Object.entries(packages).filter(
|
|
1055
|
-
([key, entry]) => key.startsWith(`${SCOPE}/`) && entry.resolution?.tarball !== void 0 && is_github_tarball(entry.resolution.tarball)
|
|
1056
|
-
).map(([key]) => key);
|
|
1057
|
-
}
|
|
1058
|
-
function remove_flow_tarball(line) {
|
|
1059
|
-
const marker = ", tarball: https://npm.pkg.github.com/";
|
|
1060
|
-
const start = line.indexOf(marker);
|
|
1061
|
-
if (start === -1) return line;
|
|
1062
|
-
const end = line.indexOf("}", start);
|
|
1063
|
-
if (end === -1) return line;
|
|
1064
|
-
return `${line.slice(0, start)}${line.slice(end)}`;
|
|
1065
|
-
}
|
|
1066
|
-
function is_package_entry(line) {
|
|
1067
|
-
return /^ {2}[^ ]/u.test(line);
|
|
1068
|
-
}
|
|
1069
|
-
function is_github_tarball_line(line) {
|
|
1070
|
-
return line.trimStart().startsWith("tarball: https://npm.pkg.github.com/");
|
|
1071
|
-
}
|
|
1072
|
-
function package_id(key) {
|
|
1073
|
-
const name = fix_gh_packages_logic.package_path_from_key(key);
|
|
1074
|
-
return `${name}@${fix_gh_packages_logic.package_version_from_key(key)}`;
|
|
1075
|
-
}
|
|
1076
|
-
function clean_scoped_line(line, id, integrities) {
|
|
1077
|
-
if (!id) return line;
|
|
1078
|
-
if (is_github_tarball_line(line)) return void 0;
|
|
1079
|
-
const cleaned = remove_flow_tarball(line);
|
|
1080
|
-
const pair = integrities.get(id);
|
|
1081
|
-
if (pair === void 0) return cleaned;
|
|
1082
|
-
return cleaned.split(`integrity: ${pair[0]}`).join(`integrity: ${pair[1]}`);
|
|
1083
|
-
}
|
|
1084
|
-
function next_scoped_id(line, id) {
|
|
1085
|
-
if (!is_package_entry(line)) return id;
|
|
1086
|
-
const prefix = ` '${SCOPE}/`;
|
|
1087
|
-
if (!line.startsWith(prefix)) return "";
|
|
1088
|
-
return package_id(line.slice(" '".length).split("'", 1)[0] ?? "");
|
|
1089
|
-
}
|
|
1090
|
-
function integrity_pair(old_integrity, npm_integrity) {
|
|
1091
|
-
if (old_integrity === void 0 || npm_integrity === void 0) return void 0;
|
|
1092
|
-
return [old_integrity, npm_integrity];
|
|
1093
|
-
}
|
|
1094
|
-
function lock_integrities(lockfile, npm_integrities) {
|
|
1095
|
-
const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
|
|
1096
|
-
const pairs = /* @__PURE__ */ new Map();
|
|
1097
|
-
const scoped_entries = Object.entries(packages).filter(([key]) => key.startsWith(`${SCOPE}/`));
|
|
1098
|
-
for (const [key, entry] of scoped_entries) {
|
|
1099
|
-
const id = package_id(key);
|
|
1100
|
-
const pair = integrity_pair(entry.resolution?.integrity, npm_integrities.get(id));
|
|
1101
|
-
if (pair !== void 0) pairs.set(id, pair);
|
|
1102
|
-
}
|
|
1103
|
-
return pairs;
|
|
1104
|
-
}
|
|
1105
|
-
function push_if_defined(lines, cleaned) {
|
|
1106
|
-
if (cleaned !== void 0) lines.push(cleaned);
|
|
1107
|
-
}
|
|
1108
|
-
function rewrite_scoped_lockfile(lockfile, npm_integrities) {
|
|
1109
|
-
let id = "";
|
|
1110
|
-
const lines = [];
|
|
1111
|
-
const integrities = lock_integrities(lockfile, npm_integrities);
|
|
1112
|
-
for (const line of lockfile.split("\n")) {
|
|
1113
|
-
id = next_scoped_id(line, id);
|
|
1114
|
-
const cleaned = clean_scoped_line(line, id, integrities);
|
|
1115
|
-
push_if_defined(lines, cleaned);
|
|
1116
|
-
}
|
|
1117
|
-
return lines.join("\n");
|
|
1118
|
-
}
|
|
1119
|
-
function append_mapping(content, eol) {
|
|
1120
|
-
const separator = content && !content.endsWith("\n") ? eol : "";
|
|
1121
|
-
return `${content}${separator}${MAPPING}${eol}`;
|
|
1122
|
-
}
|
|
1123
|
-
function replace_mapping(content) {
|
|
1124
|
-
const lines = mapping_lines(content);
|
|
1125
|
-
const eol = content.includes("\r\n") ? "\r\n" : "\n";
|
|
1126
|
-
if (lines.length === 0) return append_mapping(content, eol);
|
|
1127
|
-
return content.split(/\r?\n/u).map((line) => line === lines[0] ? MAPPING : line).join(eol);
|
|
1128
|
-
}
|
|
1129
|
-
function unsupported_registry(project_npmrc) {
|
|
1130
|
-
const registry = registry_of(project_npmrc);
|
|
1131
|
-
if (registry === void 0 || [GITHUB_REGISTRY, PUBLIC_REGISTRY].includes(registry)) {
|
|
1132
|
-
return void 0;
|
|
1133
|
-
}
|
|
1134
|
-
return `unsupported project registry: ${registry}`;
|
|
1135
|
-
}
|
|
1136
|
-
function has_duplicate_mapping(project_npmrc, user_npmrc) {
|
|
1137
|
-
return mapping_lines(project_npmrc).length > 1 || mapping_lines(user_npmrc).length > 1;
|
|
1138
|
-
}
|
|
1139
|
-
function previous_registry(project_npmrc, user_npmrc) {
|
|
1140
|
-
return registry_of(project_npmrc) ?? registry_of(user_npmrc) ?? "default npm";
|
|
1141
|
-
}
|
|
1142
|
-
function plan(project_npmrc, user_npmrc, lockfile) {
|
|
1143
|
-
const packages = scoped_packages(lockfile);
|
|
1144
|
-
const blocked = [];
|
|
1145
|
-
if (has_duplicate_mapping(project_npmrc, user_npmrc)) blocked.push("duplicate registry mappings");
|
|
1146
|
-
const unsupported = unsupported_registry(project_npmrc);
|
|
1147
|
-
if (unsupported !== void 0) blocked.push(unsupported);
|
|
1148
|
-
const before = previous_registry(project_npmrc, user_npmrc);
|
|
1149
|
-
const change = `${before} \u2192 ${PUBLIC_REGISTRY}`;
|
|
1150
|
-
return { content: replace_mapping(project_npmrc), packages, blocked, change };
|
|
1151
|
-
}
|
|
1152
|
-
var migrate_logic = {
|
|
1153
|
-
plan,
|
|
1154
|
-
github_tarballs,
|
|
1155
|
-
is_github_tarball,
|
|
1156
|
-
rewrite_scoped_lockfile,
|
|
1157
|
-
scoped_versions
|
|
1158
|
-
};
|
|
1159
|
-
|
|
1160
1054
|
// scripts/version/npm-registry.ts
|
|
1161
1055
|
import { execaSync as execaSync2 } from "execa";
|
|
1162
1056
|
import semver3 from "semver";
|
|
1163
|
-
import { z as
|
|
1164
|
-
var
|
|
1057
|
+
import { z as z4 } from "zod";
|
|
1058
|
+
var PUBLIC_REGISTRY = "https://registry.npmjs.org";
|
|
1165
1059
|
var ABBREVIATED_ACCEPT = "application/vnd.npm.install-v1+json";
|
|
1166
1060
|
var FULL_ACCEPT = "application/json";
|
|
1167
1061
|
var SCOPE_SEPARATOR = "/";
|
|
1168
1062
|
var ENCODED_SCOPE_SEPARATOR = "%2f";
|
|
1169
1063
|
var SCOPE_PATTERN = /^@[^/]+(?=\/)/u;
|
|
1170
1064
|
var SCOPE_REGISTRY_SUFFIX = ":registry";
|
|
1065
|
+
var GITHUB_REGISTRY_HOST = "npm.pkg.github.com";
|
|
1066
|
+
var PNPM = "pnpm";
|
|
1067
|
+
var JSON_FLAG = "--json";
|
|
1068
|
+
var FAILURE_EXIT_CODE = 1;
|
|
1171
1069
|
var github_scopes = /* @__PURE__ */ new Map();
|
|
1172
1070
|
var FETCH_SCRIPT = [
|
|
1173
1071
|
"const [url, accept] = process.argv.slice(1)",
|
|
@@ -1175,11 +1073,11 @@ var FETCH_SCRIPT = [
|
|
|
1175
1073
|
"if (!response.ok) process.exit(1)",
|
|
1176
1074
|
"process.stdout.write(await response.text())"
|
|
1177
1075
|
].join("\n");
|
|
1178
|
-
var version_schema =
|
|
1179
|
-
var latest_schema =
|
|
1180
|
-
var times_schema =
|
|
1076
|
+
var version_schema = z4.string().refine((value) => semver3.valid(value) === value);
|
|
1077
|
+
var latest_schema = z4.looseObject({ "dist-tags": z4.looseObject({ latest: version_schema }) });
|
|
1078
|
+
var times_schema = z4.looseObject({ time: release_age.release_times_schema });
|
|
1181
1079
|
function packument_url(package_name) {
|
|
1182
|
-
return `${
|
|
1080
|
+
return `${PUBLIC_REGISTRY}/${package_name.replace(SCOPE_SEPARATOR, () => ENCODED_SCOPE_SEPARATOR)}`;
|
|
1183
1081
|
}
|
|
1184
1082
|
function read_packument(package_name, accept) {
|
|
1185
1083
|
const result = execaSync2(
|
|
@@ -1190,14 +1088,22 @@ function read_packument(package_name, accept) {
|
|
|
1190
1088
|
if (result.exitCode !== 0) return void 0;
|
|
1191
1089
|
return json_value.parse_or_undefined(result.stdout);
|
|
1192
1090
|
}
|
|
1091
|
+
function is_github_registry(value) {
|
|
1092
|
+
try {
|
|
1093
|
+
const url = new URL(value);
|
|
1094
|
+
return url.protocol === "https:" && url.hostname === GITHUB_REGISTRY_HOST;
|
|
1095
|
+
} catch {
|
|
1096
|
+
return false;
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1193
1099
|
function is_github_scope(scope) {
|
|
1194
1100
|
const is_cached_github = github_scopes.get(scope);
|
|
1195
1101
|
if (is_cached_github !== void 0) return is_cached_github;
|
|
1196
|
-
const result = execaSync2(
|
|
1102
|
+
const result = execaSync2(PNPM, ["config", "get", `${scope}${SCOPE_REGISTRY_SUFFIX}`], {
|
|
1197
1103
|
reject: false,
|
|
1198
1104
|
timeout: FETCH_TIMEOUT_MS
|
|
1199
1105
|
});
|
|
1200
|
-
const is_github = result.exitCode === 0 &&
|
|
1106
|
+
const is_github = result.exitCode === 0 && is_github_registry(result.stdout.trim());
|
|
1201
1107
|
github_scopes.set(scope, is_github);
|
|
1202
1108
|
return is_github;
|
|
1203
1109
|
}
|
|
@@ -1219,6 +1125,14 @@ function has_public_version(package_name, version) {
|
|
|
1219
1125
|
const parsed = times_schema.safeParse(read_packument(package_name, FULL_ACCEPT));
|
|
1220
1126
|
return parsed.success && parsed.data.time[version] !== void 0;
|
|
1221
1127
|
}
|
|
1128
|
+
function view(spec, field, format = "text") {
|
|
1129
|
+
const format_arguments = format === "json" ? [JSON_FLAG] : [];
|
|
1130
|
+
const result = execaSync2(PNPM, ["view", spec, field, ...format_arguments], {
|
|
1131
|
+
reject: false,
|
|
1132
|
+
timeout: COMMAND_TIMEOUT_MS
|
|
1133
|
+
});
|
|
1134
|
+
return { exit_code: result.exitCode ?? FAILURE_EXIT_CODE, stdout: result.stdout };
|
|
1135
|
+
}
|
|
1222
1136
|
function valid_version(value) {
|
|
1223
1137
|
return version_schema.safeParse(value).success ? value : void 0;
|
|
1224
1138
|
}
|
|
@@ -1227,7 +1141,8 @@ var npm_registry = {
|
|
|
1227
1141
|
packument_url,
|
|
1228
1142
|
read_latest,
|
|
1229
1143
|
read_release_times,
|
|
1230
|
-
valid_version
|
|
1144
|
+
valid_version,
|
|
1145
|
+
view
|
|
1231
1146
|
};
|
|
1232
1147
|
|
|
1233
1148
|
// scripts/version/version-remote.ts
|
|
@@ -1284,38 +1199,9 @@ function fetch_release_times(versions_endpoint, package_name) {
|
|
|
1284
1199
|
}
|
|
1285
1200
|
|
|
1286
1201
|
// scripts/version/version-targets.ts
|
|
1287
|
-
import
|
|
1288
|
-
|
|
1289
|
-
// scripts/lib/read-file.ts
|
|
1290
|
-
import { readFileSync as readFileSync4 } from "node:fs";
|
|
1291
|
-
var ABSENT_CODE = "ENOENT";
|
|
1292
|
-
function is_absent(error) {
|
|
1293
|
-
return error instanceof Error && "code" in error && error.code === ABSENT_CODE;
|
|
1294
|
-
}
|
|
1295
|
-
function read_optional(path6) {
|
|
1296
|
-
try {
|
|
1297
|
-
return readFileSync4(path6, "utf8");
|
|
1298
|
-
} catch (error) {
|
|
1299
|
-
if (is_absent(error)) return void 0;
|
|
1300
|
-
throw error;
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
function read_file_or_empty(path6) {
|
|
1304
|
-
return read_optional(path6) ?? "";
|
|
1305
|
-
}
|
|
1306
|
-
function read_if_readable(path6) {
|
|
1307
|
-
try {
|
|
1308
|
-
return readFileSync4(path6, "utf8");
|
|
1309
|
-
} catch {
|
|
1310
|
-
return void 0;
|
|
1311
|
-
}
|
|
1312
|
-
}
|
|
1313
|
-
var file_reader = { read_optional, read_file_or_empty, read_if_readable };
|
|
1314
|
-
|
|
1315
|
-
// scripts/version/version-targets.ts
|
|
1202
|
+
import path6 from "node:path";
|
|
1316
1203
|
import { execaSync as execaSync3 } from "execa";
|
|
1317
1204
|
var NODE_MODULES2 = "node_modules";
|
|
1318
|
-
var PACKAGE_JSON3 = "package.json";
|
|
1319
1205
|
function build_pnpm_ls_arguments(package_name) {
|
|
1320
1206
|
return ["ls", "-g", "--json", package_name];
|
|
1321
1207
|
}
|
|
@@ -1324,44 +1210,27 @@ function parse_global_version(stdout, package_name) {
|
|
|
1324
1210
|
if (!parsed.success) return void 0;
|
|
1325
1211
|
return parsed.data[0]?.dependencies?.[package_name]?.version;
|
|
1326
1212
|
}
|
|
1327
|
-
function parse_project_version(raw) {
|
|
1328
|
-
if (raw === void 0) return void 0;
|
|
1329
|
-
const parsed = package_version_schema.safeParse(json_value.parse_or_undefined(raw));
|
|
1330
|
-
return parsed.success ? parsed.data.version : void 0;
|
|
1331
|
-
}
|
|
1332
1213
|
function read_global_version(package_name) {
|
|
1333
1214
|
const result = execaSync3("pnpm", build_pnpm_ls_arguments(package_name), { reject: false });
|
|
1334
1215
|
return parse_global_version(result.stdout, package_name);
|
|
1335
1216
|
}
|
|
1336
|
-
function project_package_path(cwd, package_name) {
|
|
1337
|
-
return path5.join(cwd, NODE_MODULES2, package_name, PACKAGE_JSON3);
|
|
1338
|
-
}
|
|
1339
1217
|
function read_project_version(cwd, package_name) {
|
|
1340
|
-
const
|
|
1341
|
-
|
|
1342
|
-
return parse_project_version(raw);
|
|
1218
|
+
const package_directory = path6.join(cwd, NODE_MODULES2, package_name);
|
|
1219
|
+
return package_manifest.read_manifest_if_valid(package_directory, package_version_schema)?.version;
|
|
1343
1220
|
}
|
|
1344
1221
|
function read_workspace_version(cwd) {
|
|
1345
|
-
|
|
1346
|
-
const raw = file_reader.read_optional(package_path);
|
|
1347
|
-
return parse_project_version(raw);
|
|
1222
|
+
return package_manifest.read_manifest_if_valid(cwd, package_version_schema)?.version;
|
|
1348
1223
|
}
|
|
1349
1224
|
var version_targets = {
|
|
1350
1225
|
build_pnpm_ls_arguments,
|
|
1351
1226
|
parse_global_version,
|
|
1352
|
-
parse_project_version,
|
|
1353
1227
|
read_global_version,
|
|
1354
1228
|
read_project_version,
|
|
1355
|
-
|
|
1356
|
-
read_workspace_version,
|
|
1357
|
-
// The manifest's filename. Exported rather than re-declared in each of `josh release`'s two
|
|
1358
|
-
// halves: the module that already owns "where the project's manifest is"
|
|
1359
|
-
// is where the name belongs.
|
|
1360
|
-
PACKAGE_JSON: PACKAGE_JSON3
|
|
1229
|
+
read_workspace_version
|
|
1361
1230
|
};
|
|
1362
1231
|
|
|
1363
1232
|
// scripts/version/version-commands.ts
|
|
1364
|
-
var
|
|
1233
|
+
var FAILURE_EXIT_CODE2 = 1;
|
|
1365
1234
|
var ALREADY_UP_TO_DATE = "Already up to date";
|
|
1366
1235
|
var NO_QUARANTINE_MINUTES2 = 0;
|
|
1367
1236
|
function read_release_hold(package_config, latest, versions) {
|
|
@@ -1455,7 +1324,7 @@ function run_upgrade_step(step) {
|
|
|
1455
1324
|
reject: false,
|
|
1456
1325
|
timeout: INSTALL_TIMEOUT_MS
|
|
1457
1326
|
});
|
|
1458
|
-
return result.exitCode ??
|
|
1327
|
+
return result.exitCode ?? FAILURE_EXIT_CODE2;
|
|
1459
1328
|
}
|
|
1460
1329
|
function run_upgrade_command(command) {
|
|
1461
1330
|
for (const step of command.steps) {
|