@joshuafolkken/kit 1.1166.0 → 1.1229.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/.claude-plugin/plugin.json +1 -1
- package/.claude/settings.json +2 -2
- package/.claude/skills/dependency-update/SKILL.md +4 -8
- package/.claude/skills/epic-commands/SKILL.md +2 -2
- package/.claude/skills/epic-commands/epic-bundle.md +1 -1
- package/.claude/skills/workflow-commands/SKILL.md +2 -4
- package/.claude/skills/workflow-commands/backlogrun-child.md +6 -4
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +9 -5
- package/.claude/skills/workflow-commands/backlogrun-park.md +29 -9
- package/.claude/skills/workflow-commands/backlogrun-progress.md +7 -2
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +4 -3
- package/.claude/skills/workflow-commands/backlogrun-steps.md +24 -15
- package/.claude/skills/workflow-commands/chain-rule.md +1 -1
- package/.claude/skills/workflow-commands/delegation.md +2 -2
- package/.claude/skills/workflow-commands/followup.md +5 -0
- package/.claude/skills/workflow-commands/fullrun-steps.md +1 -1
- package/.claude/skills/workflow-commands/halfrun.md +1 -1
- package/.claude/skills/workflow-commands/issue-scout.md +1 -1
- package/.claude/skills/workflow-commands/kickoff.md +1 -1
- package/.claude/skills/workflow-commands/observation-ledger.md +3 -3
- package/.claude/skills/workflow-commands/pre-gate-cut.md +10 -5
- package/.claude/skills/workflow-commands/prerequisite.md +2 -2
- package/.claude/skills/workflow-commands/progress-watcher.md +1 -1
- package/.claude/skills/workflow-commands/working-tree-hold.md +1 -1
- package/.codex/hooks.json +2 -2
- package/.cursorrules +6 -41
- package/.github/actions/setup-node/action.yml +1 -1
- package/.github/workflows/auto-tag.yml +3 -4
- package/.github/workflows/ci.yml +47 -33
- package/.github/workflows/dependabot-auto-merge.yml +13 -6
- package/.github/workflows/publish.yml +48 -4
- package/.github/workflows/sonar-qube.yml +3 -0
- package/.pnpmfile.mjs +4 -3
- package/.prettierignore +8 -2
- package/CLAUDE.md +18 -20
- package/README.md +26 -19
- package/SECURITY.md +15 -1
- package/dist/CLAUDE.md +18 -20
- package/dist/commands/document-section-cli.js +734 -0
- package/dist/hooks/audit-provision.js +346 -0
- package/dist/hooks/batch-guard.js +5 -4
- package/dist/hooks/{chunk-DYAVAM6S.js → chunk-55HHG5PX.js} +1405 -631
- package/dist/hooks/{chunk-A6P7PN7P.js → chunk-5VMKCCC4.js} +25 -10
- package/dist/hooks/chunk-5VNDSNG3.js +12 -0
- package/dist/hooks/{chunk-5KTCMCOT.js → chunk-6HJJXRBX.js} +4 -2
- package/dist/hooks/chunk-CDY4NFQG.js +15 -0
- package/dist/hooks/chunk-ELCN5LCH.js +135 -0
- package/dist/hooks/{chunk-ENA7P5FB.js → chunk-F56MFS4B.js} +3 -3
- package/dist/hooks/{chunk-ANJ2WGFD.js → chunk-FIVDHQGT.js} +7 -6
- package/dist/hooks/{chunk-3V37IID6.js → chunk-JBBMAPC4.js} +23 -14
- package/dist/hooks/{chunk-GU5MATVE.js → chunk-JUDKDCDP.js} +499 -389
- package/dist/hooks/{chunk-ZDZ555YH.js → chunk-NV2JRZZO.js} +743 -909
- package/dist/hooks/{chunk-V2BTOZHT.js → chunk-RNWHN5BP.js} +3 -3
- package/dist/hooks/{chunk-URJA6XY4.js → chunk-TQNPDZNH.js} +4 -4
- package/dist/hooks/{chunk-GYNGP7HI.js → chunk-VC3PZPZO.js} +1 -1
- package/dist/hooks/codex-hook-adapter.js +14 -12
- package/dist/hooks/duplicate-read-guard.js +6 -5
- package/dist/hooks/format-edited.js +4 -3
- package/dist/hooks/inputs.json +232 -210
- package/dist/hooks/investigation-guard.js +6 -5
- package/dist/hooks/pretool-guard.js +12 -10
- package/dist/hooks/session-lang.js +2 -4
- package/dist/hooks/stop-guard.js +81 -59
- package/dist/josh.js +872 -75
- package/dist/version/index.d.ts +7 -2
- package/dist/version/index.js +152 -75
- package/eslint/base.js +23 -1
- package/eslint/rules/code-quality.js +3 -0
- package/eslint/rules/early-return-one-liner.js +98 -0
- package/eslint/rules/unicorn.js +16 -1
- package/package.json +7 -6
- package/pnpm-workspace.yaml +9 -4
- package/prettier/basic.d.ts +3 -1
- package/prettier/index.d.ts +3 -1
- package/prettier/static.d.ts +3 -1
- package/prompts/coding-standards.md +1 -1
- package/prompts/collaboration-workflow/file-edits.md +4 -4
- package/prompts/collaboration-workflow/glossary.md +1 -1
- package/prompts/collaboration-workflow/operating-rules.md +17 -9
- package/prompts/collaboration-workflow/overview.md +2 -2
- package/prompts/collaboration-workflow/principles.md +14 -12
- package/prompts/collaboration-workflow/report-format.md +1 -1
- package/prompts/collaboration-workflow/residency.md +1 -1
- package/prompts/collaboration-workflow/rule-delivery.md +6 -6
- package/prompts/collaboration-workflow/shell-body.md +6 -6
- package/prompts/collaboration-workflow/turn-batching.md +1 -1
- package/prompts/collaboration-workflow/upstream-interrupt.md +12 -2
- package/prompts/collaboration-workflow/wip-cap.md +10 -10
- package/prompts/review-rubric.md +1 -2
- package/prompts/review.md +1 -1
- package/scripts/agent/agent-headless.ts +29 -0
- package/scripts/agent/agent-launch-environment.ts +6 -2
- package/scripts/agent/codex-agent-argv.ts +2 -1
- package/scripts/auto-ok/auto-ok-cli.ts +1 -1
- package/scripts/backlog/backlog-arrival.ts +3 -3
- package/scripts/backlog/backlog-budget.ts +1 -1
- package/scripts/backlog/backlog-drive-args.ts +135 -0
- package/scripts/backlog/backlog-drive-cli.ts +11 -137
- package/scripts/backlog/backlog-drive-launch.ts +39 -0
- package/scripts/backlog/backlog-drive-named-offer.ts +3 -5
- package/scripts/backlog/backlog-drive-named.ts +3 -3
- package/scripts/backlog/backlog-drive-offer-argv.ts +1 -1
- package/scripts/backlog/backlog-drive-owner.ts +1 -1
- package/scripts/backlog/backlog-drive-restore.ts +1 -1
- package/scripts/backlog/backlog-drive-retrospective.ts +1 -1
- package/scripts/backlog/backlog-drive.ts +1 -1
- package/scripts/backlog/backlog-next.ts +31 -9
- package/scripts/backlog/backlog-offer-cli.ts +6 -6
- package/scripts/backlog/backlog-offer.ts +1 -1
- package/scripts/backlog/backlog-plan-cli.ts +7 -6
- package/scripts/backlog/backlog-pool.ts +57 -11
- package/scripts/backlog/backlog-rank.ts +18 -9
- package/scripts/backlog/backlog-ready.ts +1 -1
- package/scripts/backlog/backlog-restructure.ts +152 -0
- package/scripts/backlog/backlog-scope.ts +1 -1
- package/scripts/backlog/backlog-stalled-detect.ts +2 -2
- package/scripts/backlog/backlog-stalled.ts +1 -1
- package/scripts/backlog/backlog-waves.ts +15 -17
- package/scripts/build/build-codex-hooks.ts +3 -1
- package/scripts/build/build-commands.ts +66 -0
- package/scripts/build/build-hooks.ts +2 -1
- package/scripts/build/build-library.ts +12 -3
- package/scripts/build/build.ts +70 -0
- package/scripts/build/local-bin.ts +3 -13
- package/scripts/cost-runtime/context-cut-threshold.ts +1 -9
- package/scripts/cost-runtime/cost-verdict.ts +15 -28
- package/scripts/delegation/investigation-reads.ts +3 -1
- package/scripts/discovery/repo-origin.ts +5 -5
- package/scripts/doctor/doctor-consumer.ts +2 -2
- package/scripts/doctor/doctor-io.ts +2 -3
- package/scripts/document/capped-print-part.ts +30 -0
- package/scripts/document/capped-print.ts +3 -4
- package/scripts/document/document-byte-budget.ts +11 -2
- package/scripts/document/document-scan.ts +117 -0
- package/scripts/document/document-section.ts +143 -16
- package/scripts/document/entry-read-budget.ts +5 -3
- package/scripts/document/entry-read-set.ts +10 -89
- package/scripts/document/read-set-cost.ts +98 -0
- package/scripts/epic/epic-add-body.ts +1 -0
- package/scripts/epic/epic-audit-checks.ts +1 -1
- package/scripts/epic/epic-audit-rationale.ts +4 -3
- package/scripts/epic/epic-bundle-cli.ts +14 -3
- package/scripts/epic/epic-bundle-poll.ts +41 -0
- package/scripts/epic/epic-busy.ts +1 -1
- package/scripts/epic/epic-candidate-confirm.ts +3 -2
- package/scripts/epic/epic-classify.ts +1 -1
- package/scripts/epic/epic-cli-argv.ts +78 -46
- package/scripts/epic/epic-cli-remove.ts +11 -19
- package/scripts/epic/epic-cli.ts +74 -73
- package/scripts/epic/epic-close-comment.ts +1 -1
- package/scripts/epic/epic-close.ts +1 -1
- package/scripts/epic/epic-cross-repo.ts +5 -5
- package/scripts/epic/epic-graph.ts +1 -1
- package/scripts/epic/epic-index.ts +1 -1
- package/scripts/epic/epic-issue.ts +2 -6
- package/scripts/epic/epic-lane-offer.ts +2 -2
- package/scripts/epic/epic-next.ts +29 -42
- package/scripts/epic/epic-solo-stale.ts +1 -1
- package/scripts/epic/epic-triage.ts +8 -4
- package/scripts/epic/epic-validate.ts +1 -1
- package/scripts/followup/git-followup-finish.ts +2 -2
- package/scripts/followup/git-followup-label.ts +2 -2
- package/scripts/followup/git-followup-merged.ts +2 -2
- package/scripts/followup/git-followup-stages.ts +9 -0
- package/scripts/followup/git-pr-followup-checks.ts +142 -0
- package/scripts/followup/git-pr-followup.ts +5 -130
- package/scripts/gate/core-budget.ts +69 -1
- package/scripts/gate/gate-plan.ts +47 -7
- package/scripts/gate/gate-skip.ts +38 -7
- package/scripts/gate/hook-gate-reuse.ts +12 -10
- package/scripts/gate/pre-commit-type-check.ts +4 -1
- package/scripts/gate/project-checks.ts +6 -9
- package/scripts/gate/type-check-step.ts +2 -3
- package/scripts/gate/verification-gate.ts +27 -8
- package/scripts/gh/git-gh-api-path.ts +2 -2
- package/scripts/gh/git-gh-issue-rest.ts +3 -3
- package/scripts/gh/git-gh-issue-write.ts +53 -7
- package/scripts/gh/git-gh-issue.ts +5 -3
- package/scripts/gh/git-gh-pr-read.ts +68 -19
- package/scripts/gh/git-gh-pr-rest.ts +1 -1
- package/scripts/gh/git-gh-pr.ts +5 -1
- package/scripts/gh/git-pr-ai-review.ts +1 -1
- package/scripts/gh/git-pr-checks-eval.ts +9 -3
- package/scripts/gh/git-pr-checks-parse.ts +1 -1
- package/scripts/gh/git-pr-checks-watch.ts +6 -5
- package/scripts/gh/git-pr-checks.ts +18 -6
- package/scripts/gh/git-pr-coderabbit.ts +1 -1
- package/scripts/gh/git-pr-error.ts +1 -3
- package/scripts/gh/git-pr.ts +9 -13
- package/scripts/gh/github-issue-url.ts +2 -2
- package/scripts/git/constants.ts +12 -6
- package/scripts/git/git-command.ts +20 -218
- package/scripts/git/git-diff-reads.ts +225 -0
- package/scripts/git/git-error.ts +4 -12
- package/scripts/git/git-pre-push-hook.ts +139 -0
- package/scripts/git/git-prompt.ts +2 -6
- package/scripts/git/{schemas.ts → git-schemas.ts} +2 -0
- package/scripts/git/git-spawn-sync.ts +3 -1
- package/scripts/git/git-spawn.ts +1 -1
- package/scripts/git/git-staging.ts +4 -6
- package/scripts/git/git-status.ts +3 -9
- package/scripts/git/main-merge.ts +57 -21
- package/scripts/hooks/codex-hook-adapter.ts +1 -1
- package/scripts/hooks/edited-cspell.ts +2 -4
- package/scripts/hooks/format-edited-file.ts +3 -12
- package/scripts/hooks/pre-push-unit.ts +31 -9
- package/scripts/hooks/reserved-run.ts +2 -2
- package/scripts/hooks/run-hook.sh +5 -4
- package/scripts/hooks/stop-guard.ts +5 -3
- package/scripts/init/init-actions.ts +0 -5
- package/scripts/init/init-ai-copy.ts +13 -2
- package/scripts/init/init-logic-json-merge.ts +19 -0
- package/scripts/init/init-logic-secretlint.ts +7 -7
- package/scripts/init/init-logic-workspace.ts +41 -2
- package/scripts/init/init-logic.ts +16 -26
- package/scripts/init/init.ts +5 -15
- package/scripts/init/initial-commit.ts +4 -4
- package/scripts/init/kit-development-versions.ts +40 -0
- package/scripts/init/kit-setup-state.ts +2 -2
- package/scripts/init/start-exec.ts +68 -19
- package/scripts/init/start-setup-pr.ts +9 -9
- package/scripts/init/start-steps.ts +6 -10
- package/scripts/issue/defect-rate-cli.ts +1 -1
- package/scripts/issue/git-next-issues.ts +1 -1
- package/scripts/issue/issue-auto-ok.ts +1 -1
- package/scripts/issue/issue-backlinks-cli.ts +2 -2
- package/scripts/issue/issue-backlinks.ts +9 -9
- package/scripts/issue/issue-comment-cli.ts +19 -13
- package/scripts/issue/issue-file-cli.ts +45 -18
- package/scripts/issue/issue-file.ts +24 -1
- package/scripts/issue/issue-scout-closed.ts +1 -1
- package/scripts/issue/issue-state-cli.ts +30 -74
- package/scripts/josh/josh-command-map.ts +2 -0
- package/scripts/josh/josh-command-types.ts +11 -0
- package/scripts/josh/josh-commands-ai.ts +4 -4
- package/scripts/josh/josh-commands-backlog.ts +4 -1
- package/scripts/josh/josh-commands-development.ts +11 -1
- package/scripts/josh/josh-commands-document.ts +1 -0
- package/scripts/josh/josh-commands-lane.ts +22 -0
- package/scripts/josh/josh-commands-maintenance.ts +4 -4
- package/scripts/josh/josh-commands-run.ts +12 -7
- package/scripts/josh/josh-in-process.ts +28 -9
- package/scripts/josh/josh-logic.ts +33 -15
- package/scripts/josh/process-identity.ts +1 -3
- package/scripts/josh/session-language-cli.ts +3 -4
- package/scripts/lane/lane-await.ts +5 -1
- package/scripts/lane/lane-child-invocation.ts +2 -2
- package/scripts/lane/lane-cli.ts +3 -3
- package/scripts/lane/lane-dispatch.ts +14 -10
- package/scripts/lane/lane-environment.ts +5 -1
- package/scripts/lane/lane-handoff.ts +1 -1
- package/scripts/lane/lane-install.ts +2 -13
- package/scripts/lane/lane-launch-cli.ts +35 -3
- package/scripts/lane/lane-ledger.ts +145 -0
- package/scripts/lane/lane-leftover.ts +1 -1
- package/scripts/lane/lane-load.ts +108 -0
- package/scripts/lane/lane-measure-cli.ts +149 -0
- package/scripts/lane/lane-occupancy.ts +3 -0
- package/scripts/lane/lane-reap.ts +1 -3
- package/scripts/lane/lane-relaunch.ts +1 -1
- package/scripts/lane/lane-stats.ts +224 -0
- package/scripts/lane/lane-vacant.ts +36 -0
- package/scripts/lane/openai-lane-ship.ts +2 -2
- package/scripts/lane/openai-lane-supervisor-owner.ts +180 -0
- package/scripts/lane/openai-lane-supervisor.ts +7 -165
- package/scripts/lane/openai-review-broker.ts +2 -4
- package/scripts/lib/ancestor-directories.ts +35 -0
- package/scripts/lib/animation-helpers.ts +2 -2
- package/scripts/lib/buffered-process.ts +3 -7
- package/scripts/lib/cli-flags.ts +71 -1
- package/scripts/lib/spawn-exit.ts +2 -2
- package/scripts/lib/timeouts.ts +35 -2
- package/scripts/lines/line-budget.ts +4 -6
- package/scripts/notify/telegram-notify.ts +26 -1
- package/scripts/notify/telegram-test.ts +6 -0
- package/scripts/observations/observation-ledger-line.ts +6 -6
- package/scripts/observations/observation-ledger-migrate.ts +55 -4
- package/scripts/observations/observation-ledger.ts +26 -7
- package/scripts/overrides/lockfile-overrides.ts +1 -1
- package/scripts/overrides/overrides-logic.ts +1 -1
- package/scripts/propagate/propagate-git.ts +1 -1
- package/scripts/propagate/propagate-publish.ts +2 -2
- package/scripts/propagate/propagate-steps.ts +20 -15
- package/scripts/propagate/propagate.ts +36 -27
- package/scripts/refactor/import-graph.ts +18 -1
- package/scripts/refactor/refactor-lint.ts +4 -4
- package/scripts/repo/repository-labels.ts +2 -2
- package/scripts/repo/required-checks-logic.ts +1 -3
- package/scripts/review/live-evidence.ts +2 -4
- package/scripts/review/review-brief-cli.ts +1 -1
- package/scripts/review/review-finding-ledger.ts +1 -1
- package/scripts/review/review-findings-cli.ts +1 -3
- package/scripts/rules/decision-oracle-batch.ts +128 -0
- package/scripts/rules/decision-oracle-tokens.ts +21 -0
- package/scripts/rules/decision-oracle.ts +8 -120
- package/scripts/rules/delivered-rules.ts +26 -182
- package/scripts/rules/direct-filing.ts +1 -1
- package/scripts/rules/early-heartbeat.ts +3 -3
- package/scripts/rules/git-argv.ts +1 -1
- package/scripts/rules/git-force.ts +1 -1
- package/scripts/rules/implementation-cut.ts +2 -2
- package/scripts/rules/index-guard.ts +1 -1
- package/scripts/rules/issue-comments.ts +118 -0
- package/scripts/rules/{issue-fold.ts → issue-fold-rule.ts} +2 -2
- package/scripts/rules/lane-background.ts +2 -2
- package/scripts/rules/lane-park.ts +18 -0
- package/scripts/rules/lane-split-park.ts +128 -0
- package/scripts/rules/oracle-firing.ts +1 -1
- package/scripts/rules/poll-loop.ts +1 -1
- package/scripts/rules/pre-gate-cut.ts +3 -3
- package/scripts/rules/protected-files.ts +59 -4
- package/scripts/rules/{run-tail.ts → run-tail-rule.ts} +2 -2
- package/scripts/rules/shell-body-trigger.ts +1 -1
- package/scripts/rules/stop-rules.ts +18 -7
- package/scripts/rules/test-declared-commit.ts +4 -4
- package/scripts/rules/wip-cap.ts +63 -0
- package/scripts/run/{run-carry-args.ts → carry/run-carry-args.ts} +37 -13
- package/scripts/run/{run-carry-change.ts → carry/run-carry-change.ts} +29 -7
- package/scripts/run/{run-carry-cli.ts → carry/run-carry-cli.ts} +4 -6
- package/scripts/run/{run-carry.ts → carry/run-carry.ts} +12 -6
- package/scripts/run/{run-cut-args.ts → cut/run-cut-args.ts} +1 -1
- package/scripts/run/{run-cut-cli.ts → cut/run-cut-cli.ts} +3 -3
- package/scripts/run/{run-cut-report.ts → cut/run-cut-report.ts} +2 -2
- package/scripts/run/{run-cut.ts → cut/run-cut.ts} +1 -1
- package/scripts/run/{run-entry-cli.ts → entry/run-entry-cli.ts} +11 -11
- package/scripts/run/{run-entry.ts → entry/run-entry.ts} +2 -2
- package/scripts/run/{run-event-scope.ts → event/run-event-scope.ts} +1 -1
- package/scripts/run/{run-event-stream-emit.ts → event/run-event-stream-emit.ts} +1 -1
- package/scripts/run/{run-event-stream.ts → event/run-event-stream.ts} +16 -2
- package/scripts/run/{run-hold-cli.ts → hold/run-hold-cli.ts} +5 -5
- package/scripts/run/{run-merge-cli.ts → merge/run-merge-cli.ts} +10 -5
- package/scripts/run/{run-merge-steps.ts → merge/run-merge-steps.ts} +53 -5
- package/scripts/run/{run-merge.ts → merge/run-merge.ts} +1 -1
- package/scripts/run/{run-progress-cli.ts → progress/run-progress-cli.ts} +1 -1
- package/scripts/run/{run-progress-config.ts → progress/run-progress-config.ts} +2 -17
- package/scripts/run/{run-progress-read.ts → progress/run-progress-read.ts} +5 -5
- package/scripts/run/{run-progress.ts → progress/run-progress.ts} +1 -1
- package/scripts/run/{run-review-steps.ts → review/run-review-steps.ts} +2 -3
- package/scripts/run/run-ending.ts +2 -2
- package/scripts/run/run-halfrun-resume.ts +6 -1
- package/scripts/run/run-headless.ts +1 -1
- package/scripts/run/run-invocation.ts +85 -84
- package/scripts/run/run-liveness.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +1 -1
- package/scripts/run/run-preflight.ts +6 -6
- package/scripts/run/run-prep-cli.ts +1 -1
- package/scripts/run/run-prrun-resume.ts +1 -1
- package/scripts/run/run-report-cli.ts +4 -4
- package/scripts/run/run-report.ts +2 -2
- package/scripts/run/run-status-cli.ts +1 -1
- package/scripts/run/run-step-cli.ts +3 -3
- package/scripts/run/run-step.ts +2 -2
- package/scripts/run/run-stop-notify.ts +1 -1
- package/scripts/run/run-stranded-detect.ts +4 -4
- package/scripts/run/run-stranded.ts +2 -2
- package/scripts/run/run-watcher-guard-cli.ts +1 -1
- package/scripts/run/run-watcher-guard.ts +5 -3
- package/scripts/run/run-watcher-hook.ts +1 -1
- package/scripts/run/{run-ship-cli.ts → ship/run-ship-cli.ts} +29 -8
- package/scripts/run/{run-ship-detach.ts → ship/run-ship-detach.ts} +3 -3
- package/scripts/run/ship/run-ship-lock.ts +50 -0
- package/scripts/run/{run-ship-next.ts → ship/run-ship-next.ts} +13 -0
- package/scripts/run/ship/run-ship-pre-detach.ts +66 -0
- package/scripts/run/{run-ship-preflight.ts → ship/run-ship-preflight.ts} +6 -2
- package/scripts/run/{run-ship-probe.ts → ship/run-ship-probe.ts} +2 -2
- package/scripts/run/{run-ship-return.ts → ship/run-ship-return.ts} +10 -6
- package/scripts/run/{run-ship-review-steps.ts → ship/run-ship-review-steps.ts} +3 -3
- package/scripts/run/{run-ship-scoped.ts → ship/run-ship-scoped.ts} +10 -1
- package/scripts/run/{run-ship-stage.ts → ship/run-ship-stage.ts} +13 -0
- package/scripts/run/{run-ship-steps.ts → ship/run-ship-steps.ts} +15 -8
- package/scripts/run/ship/run-ship-stop-text.ts +13 -0
- package/scripts/run/ship/run-ship-sync.ts +128 -0
- package/scripts/run/{run-ship.ts → ship/run-ship.ts} +6 -0
- package/scripts/run/{run-tidy-lanes.ts → tidy/run-tidy-lanes.ts} +1 -1
- package/scripts/run/{run-wake-cli.ts → wake/run-wake-cli.ts} +31 -9
- package/scripts/run/{run-wake-describe.ts → wake/run-wake-describe.ts} +3 -3
- package/scripts/run/{run-wake-driver.ts → wake/run-wake-driver.ts} +99 -17
- package/scripts/run/{run-wake-handoff.ts → wake/run-wake-handoff.ts} +1 -1
- package/scripts/run/{run-wake-loop.ts → wake/run-wake-loop.ts} +8 -2
- package/scripts/run/wake/run-wake-restart.ts +58 -0
- package/scripts/run/{run-wake-session.ts → wake/run-wake-session.ts} +3 -3
- package/scripts/run/{run-wake.ts → wake/run-wake.ts} +1 -1
- package/scripts/safe-chain/preinstall-command.ts +20 -21
- package/scripts/safe-chain/project-config.ts +19 -15
- package/scripts/sync/sync-ai-files.ts +1 -1
- package/scripts/sync/sync-configs.ts +2 -1
- package/scripts/sync/sync.ts +15 -2
- package/scripts/test/test-red-logic.ts +17 -2
- package/scripts/test/test-red.ts +8 -7
- package/scripts/test/unit-worker-share.ts +1 -0
- package/scripts/time-runtime/time-background.ts +5 -1
- package/scripts/time-runtime/time-instant.ts +3 -1
- package/scripts/time-runtime/time-spans.ts +6 -139
- package/scripts/time-runtime/time-tool-call.ts +160 -0
- package/scripts/time-runtime/time-transcript-line.ts +27 -1
- package/scripts/version/effective-upstream.ts +2 -20
- package/scripts/version/latest-corepack.ts +17 -17
- package/scripts/version/latest-regression.ts +1 -1
- package/scripts/version/latest-update.ts +4 -4
- package/scripts/version/npm-registry.ts +20 -5
- package/scripts/version/publishable-range-check.ts +2 -2
- package/scripts/version/publishable-range.ts +1 -1
- package/scripts/version/release-age.ts +48 -38
- package/scripts/version/release-hold.ts +1 -1
- package/scripts/version/safe-chain-version-update.ts +40 -0
- package/scripts/version/upgrade-shell-command.ts +48 -8
- package/scripts/version/version-check-logic.ts +23 -14
- package/scripts/version/version-commands.ts +23 -11
- package/scripts/version/version-remote.ts +28 -13
- package/templates/pnpm-workspace.basic.yaml +4 -0
- package/templates/workflows/dependabot-auto-merge.yml +5 -5
- package/templates/workflows/github-release.yml +2 -0
- package/scripts/build/build-config-merge.ts +0 -27
- package/scripts/build/build-managed-marker.ts +0 -27
- package/scripts/build/build-self-sync-guard.ts +0 -27
- package/scripts/build/build-version.ts +0 -26
- package/scripts/version/preinstall-version-update.ts +0 -86
- /package/scripts/overrides/{schemas.ts → overrides-schemas.ts} +0 -0
- /package/scripts/run/{run-carry-conversation.ts → carry/run-carry-conversation.ts} +0 -0
- /package/scripts/run/{run-carry-reclaim.ts → carry/run-carry-reclaim.ts} +0 -0
- /package/scripts/run/{run-carry-stash.ts → carry/run-carry-stash.ts} +0 -0
- /package/scripts/run/{run-carry-streak.ts → carry/run-carry-streak.ts} +0 -0
- /package/scripts/run/{run-cut-handoff.ts → cut/run-cut-handoff.ts} +0 -0
- /package/scripts/run/{run-entry-stop.ts → entry/run-entry-stop.ts} +0 -0
- /package/scripts/run/{run-event-cli.ts → event/run-event-cli.ts} +0 -0
- /package/scripts/run/{run-event-follow.ts → event/run-event-follow.ts} +0 -0
- /package/scripts/run/{run-event-render.ts → event/run-event-render.ts} +0 -0
- /package/scripts/run/{run-event-watch.ts → event/run-event-watch.ts} +0 -0
- /package/scripts/run/{run-hold.ts → hold/run-hold.ts} +0 -0
- /package/scripts/run/{run-progress-args.ts → progress/run-progress-args.ts} +0 -0
- /package/scripts/run/{run-progress-clock.ts → progress/run-progress-clock.ts} +0 -0
- /package/scripts/run/{run-review-cli.ts → review/run-review-cli.ts} +0 -0
- /package/scripts/run/{run-review.ts → review/run-review.ts} +0 -0
- /package/scripts/run/{run-ship-review.ts → ship/run-ship-review.ts} +0 -0
- /package/scripts/run/{run-tidy-cli.ts → tidy/run-tidy-cli.ts} +0 -0
- /package/scripts/run/{run-tidy-stashes.ts → tidy/run-tidy-stashes.ts} +0 -0
- /package/scripts/run/{run-tidy.ts → tidy/run-tidy.ts} +0 -0
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { INSTALL_TIMEOUT_MS } from '#scripts/lib/timeouts'
|
|
1
2
|
import { execaSync } from 'execa'
|
|
2
3
|
import { release_age } from './release-age'
|
|
3
4
|
import { release_hold } from './release-hold'
|
|
4
5
|
import { running_binary } from './running-binary'
|
|
5
6
|
import type { InstalledVersions } from './upgrade-command-guard'
|
|
7
|
+
import type { UpgradeCommand } from './upgrade-shell-command'
|
|
6
8
|
import {
|
|
7
9
|
version_check_logic,
|
|
8
10
|
type ReleaseHold,
|
|
@@ -24,8 +26,6 @@ import { version_targets } from './version-targets'
|
|
|
24
26
|
const FAILURE_EXIT_CODE = 1
|
|
25
27
|
const ALREADY_UP_TO_DATE = 'Already up to date'
|
|
26
28
|
const NO_QUARANTINE_MINUTES = 0
|
|
27
|
-
// A global install that goes to the network — the same ten minutes `lane-install.ts` gives one.
|
|
28
|
-
const UPGRADE_TIMEOUT_MS = 600_000
|
|
29
29
|
|
|
30
30
|
// What the local minimum-release-age policy permits for one package. Resolved per package because
|
|
31
31
|
// the newest installable release is a property of that package's own publish history. Returns a hold
|
|
@@ -197,23 +197,35 @@ function run_check(config: VersionCommandConfig): void {
|
|
|
197
197
|
)
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
//
|
|
203
|
-
//
|
|
204
|
-
function
|
|
205
|
-
const
|
|
200
|
+
// One step as an argument vector — no shell unless the step itself is the consumer's `sh -c`
|
|
201
|
+
// (`shell_upgrade_command`). The bound keeps a registry that never answers from holding `josh
|
|
202
|
+
// version` open forever; a timed-out run has no exit code, so it falls through to the failure code
|
|
203
|
+
// like any other failed step.
|
|
204
|
+
function run_upgrade_step(step: ReadonlyArray<string>): number {
|
|
205
|
+
const [executable = '', ...rest] = step
|
|
206
|
+
const result = execaSync(executable, rest, {
|
|
206
207
|
stdio: 'inherit',
|
|
207
208
|
reject: false,
|
|
208
|
-
timeout:
|
|
209
|
+
timeout: INSTALL_TIMEOUT_MS,
|
|
209
210
|
})
|
|
210
211
|
|
|
211
212
|
return result.exitCode ?? FAILURE_EXIT_CODE
|
|
212
213
|
}
|
|
213
214
|
|
|
215
|
+
// Run one command's steps in order, stopping at the first failure — what the `&&` in its printed
|
|
216
|
+
// text says.
|
|
217
|
+
function run_upgrade_command(command: UpgradeCommand): number {
|
|
218
|
+
for (const step of command.steps) {
|
|
219
|
+
const code = run_upgrade_step(step)
|
|
220
|
+
if (code !== 0) return code
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return 0
|
|
224
|
+
}
|
|
225
|
+
|
|
214
226
|
// Run every upgrade command in order, returning the last non-zero exit code (or 0 when all
|
|
215
227
|
// succeed) so a failure on either target is surfaced without aborting the remaining upgrades.
|
|
216
|
-
function run_all_upgrade_commands(commands: ReadonlyArray<
|
|
228
|
+
function run_all_upgrade_commands(commands: ReadonlyArray<UpgradeCommand>): number {
|
|
217
229
|
let exit_code = 0
|
|
218
230
|
const failed_commands: Array<string> = []
|
|
219
231
|
|
|
@@ -221,7 +233,7 @@ function run_all_upgrade_commands(commands: ReadonlyArray<string>): number {
|
|
|
221
233
|
const code = run_upgrade_command(command)
|
|
222
234
|
if (code === 0) continue
|
|
223
235
|
exit_code = code
|
|
224
|
-
failed_commands.push(command)
|
|
236
|
+
failed_commands.push(command.text)
|
|
225
237
|
}
|
|
226
238
|
|
|
227
239
|
if (failed_commands.length > 0) {
|
|
@@ -23,19 +23,11 @@ function require_endpoint(versions_endpoint: string | undefined, package_name: s
|
|
|
23
23
|
)
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
// message instead of a raw ExecaSyncError stack. The detail is the shared layer's failure text: gh's
|
|
32
|
-
// own stderr (e.g. "gh: Not Found (HTTP 404)") when it wrote one, execa's message otherwise, followed
|
|
33
|
-
// by any JSON error body gh wrote to stdout.
|
|
34
|
-
function fetch_latest_version(versions_endpoint: string | undefined, package_name: string): string {
|
|
35
|
-
const endpoint = require_endpoint(versions_endpoint, package_name)
|
|
36
|
-
const public_latest = npm_registry.read_latest(package_name)
|
|
37
|
-
if (public_latest !== undefined) return public_latest
|
|
38
|
-
|
|
26
|
+
// The newest version name on the GitHub Packages versions endpoint. Wraps `gh api` failures with an
|
|
27
|
+
// actionable message instead of a raw ExecaSyncError stack. The detail is the shared layer's failure
|
|
28
|
+
// text: gh's own stderr (e.g. "gh: Not Found (HTTP 404)") when it wrote one, execa's message
|
|
29
|
+
// otherwise, followed by any JSON error body gh wrote to stdout.
|
|
30
|
+
function read_github_name(endpoint: string, package_name: string): string {
|
|
39
31
|
try {
|
|
40
32
|
return git_gh_exec.exec_gh_api_sync({ path: endpoint, jq_filter: '.[0].name' }).trim()
|
|
41
33
|
} catch (error) {
|
|
@@ -50,6 +42,29 @@ function fetch_latest_version(versions_endpoint: string | undefined, package_nam
|
|
|
50
42
|
}
|
|
51
43
|
}
|
|
52
44
|
|
|
45
|
+
// Refused at the source, as public npm's answer is: the value goes into an install command, so
|
|
46
|
+
// anything but a semver version is never passed on (joshuafolkken/kit#3266).
|
|
47
|
+
function read_github_latest(endpoint: string, package_name: string): string {
|
|
48
|
+
const name = read_github_name(endpoint, package_name)
|
|
49
|
+
const version = npm_registry.valid_version(name)
|
|
50
|
+
if (version !== undefined) return version
|
|
51
|
+
|
|
52
|
+
throw new Error(
|
|
53
|
+
`Refused latest version for ${package_name} via ${endpoint}: ${JSON.stringify(name)} is not a semver version`,
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Fetch the latest published version: public npm's `latest` dist-tag first, which needs no
|
|
58
|
+
// credentials (joshuafolkken/kit#2882), then the GitHub Packages versions endpoint for a package
|
|
59
|
+
// public npm does not answer for. The endpoint is supplied per package (e.g.
|
|
60
|
+
// `/users/joshuafolkken/packages/npm/kit/versions?per_page=1`) so the same fetcher serves kit, jgame,
|
|
61
|
+
// and app-kit. Guards an undefined/empty endpoint before either source is asked.
|
|
62
|
+
function fetch_latest_version(versions_endpoint: string | undefined, package_name: string): string {
|
|
63
|
+
const endpoint = require_endpoint(versions_endpoint, package_name)
|
|
64
|
+
|
|
65
|
+
return npm_registry.read_latest(package_name) ?? read_github_latest(endpoint, package_name)
|
|
66
|
+
}
|
|
67
|
+
|
|
53
68
|
// Rewrite the endpoint's page size. The endpoint is consumer-overridable, so `per_page` is set
|
|
54
69
|
// through a query parser rather than by substituting the literal the default happens to carry.
|
|
55
70
|
function with_page_size(endpoint: string, page_size: number): string {
|
|
@@ -13,10 +13,6 @@ concurrency:
|
|
|
13
13
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
14
14
|
cancel-in-progress: true
|
|
15
15
|
|
|
16
|
-
permissions:
|
|
17
|
-
contents: write
|
|
18
|
-
pull-requests: write
|
|
19
|
-
|
|
20
16
|
jobs:
|
|
21
17
|
# Gated on who opened the pull request, not on who triggered this run. `github.actor` names the
|
|
22
18
|
# latter, so a push by anyone other than Dependabot — a maintainer rebasing the branch by hand, or
|
|
@@ -24,11 +20,15 @@ jobs:
|
|
|
24
20
|
# `gh pr merge --auto` is state on the pull request, so a run that never happens cannot withdraw an
|
|
25
21
|
# auto-merge an earlier run armed, and the bump merges itself the moment the checks go green
|
|
26
22
|
# (joshuafolkken/kit#838). The author is the stable fact about a Dependabot pull request; arming is
|
|
27
|
-
# what stays restricted to Dependabot's own events, on the step below.
|
|
23
|
+
# what stays restricted to Dependabot's own events, on the step below. The write rights are granted
|
|
24
|
+
# to this job alone (joshuafolkken/kit#3268).
|
|
28
25
|
auto-merge:
|
|
29
26
|
runs-on: ubuntu-latest
|
|
30
27
|
timeout-minutes: 10
|
|
31
28
|
if: github.event.pull_request.user.login == 'dependabot[bot]'
|
|
29
|
+
permissions:
|
|
30
|
+
contents: write
|
|
31
|
+
pull-requests: write
|
|
32
32
|
steps:
|
|
33
33
|
# Whether the pull request touches a workflow some upstream package overwrites. Decided from
|
|
34
34
|
# the changed files because Dependabot's metadata cannot answer it: for the github-actions
|
|
@@ -17,6 +17,8 @@ on:
|
|
|
17
17
|
jobs:
|
|
18
18
|
release:
|
|
19
19
|
runs-on: ubuntu-latest
|
|
20
|
+
# `josh release:github` waits up to 60 minutes (120 polls, 30 seconds apart) for the Publish run
|
|
21
|
+
# and lower tags' releases; the extra 5 minutes cover the setup before it.
|
|
20
22
|
timeout-minutes: 65
|
|
21
23
|
permissions:
|
|
22
24
|
actions: read
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
import { fileURLToPath } from 'node:url'
|
|
3
|
-
import { error_text } from '#scripts/lib/error-message'
|
|
4
|
-
import { build_library, library_paths } from './build-library'
|
|
5
|
-
|
|
6
|
-
const CONFIG_MERGE_LIBRARY = 'config-merge'
|
|
7
|
-
const { outfile: CONFIG_MERGE_OUTFILE, dts_file: CONFIG_MERGE_DTS_FILE } =
|
|
8
|
-
library_paths(CONFIG_MERGE_LIBRARY)
|
|
9
|
-
|
|
10
|
-
async function build_config_merge_library(): Promise<void> {
|
|
11
|
-
await build_library(CONFIG_MERGE_LIBRARY)
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async function main(): Promise<void> {
|
|
15
|
-
try {
|
|
16
|
-
await build_config_merge_library()
|
|
17
|
-
console.info(` ✔ ${CONFIG_MERGE_OUTFILE} built`)
|
|
18
|
-
console.info(` ✔ ${CONFIG_MERGE_DTS_FILE} built`)
|
|
19
|
-
} catch (error) {
|
|
20
|
-
console.error(error_text.message_of(error))
|
|
21
|
-
process.exit(1)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (process.argv[1] === fileURLToPath(import.meta.url)) await main()
|
|
26
|
-
|
|
27
|
-
export { build_config_merge_library, CONFIG_MERGE_OUTFILE, CONFIG_MERGE_DTS_FILE }
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
import { fileURLToPath } from 'node:url'
|
|
3
|
-
import { error_text } from '#scripts/lib/error-message'
|
|
4
|
-
import { build_library, library_paths } from './build-library'
|
|
5
|
-
|
|
6
|
-
const MANAGED_MARKER_LIBRARY = 'managed-marker'
|
|
7
|
-
const { outfile: MANAGED_MARKER_OUTFILE, dts_file: MANAGED_MARKER_DTS_FILE } =
|
|
8
|
-
library_paths(MANAGED_MARKER_LIBRARY)
|
|
9
|
-
|
|
10
|
-
async function build_managed_marker_library(): Promise<void> {
|
|
11
|
-
await build_library(MANAGED_MARKER_LIBRARY)
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async function main(): Promise<void> {
|
|
15
|
-
try {
|
|
16
|
-
await build_managed_marker_library()
|
|
17
|
-
console.info(` ✔ ${MANAGED_MARKER_OUTFILE} built`)
|
|
18
|
-
console.info(` ✔ ${MANAGED_MARKER_DTS_FILE} built`)
|
|
19
|
-
} catch (error) {
|
|
20
|
-
console.error(error_text.message_of(error))
|
|
21
|
-
process.exit(1)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (process.argv[1] === fileURLToPath(import.meta.url)) await main()
|
|
26
|
-
|
|
27
|
-
export { build_managed_marker_library, MANAGED_MARKER_OUTFILE, MANAGED_MARKER_DTS_FILE }
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
import { fileURLToPath } from 'node:url'
|
|
3
|
-
import { error_text } from '#scripts/lib/error-message'
|
|
4
|
-
import { build_library, library_paths } from './build-library'
|
|
5
|
-
|
|
6
|
-
const SELF_SYNC_GUARD_LIBRARY = 'self-sync-guard'
|
|
7
|
-
const { outfile: SELF_SYNC_GUARD_OUTFILE, dts_file: SELF_SYNC_GUARD_DTS_FILE } =
|
|
8
|
-
library_paths(SELF_SYNC_GUARD_LIBRARY)
|
|
9
|
-
|
|
10
|
-
async function build_self_sync_guard_library(): Promise<void> {
|
|
11
|
-
await build_library(SELF_SYNC_GUARD_LIBRARY)
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async function main(): Promise<void> {
|
|
15
|
-
try {
|
|
16
|
-
await build_self_sync_guard_library()
|
|
17
|
-
console.info(` ✔ ${SELF_SYNC_GUARD_OUTFILE} built`)
|
|
18
|
-
console.info(` ✔ ${SELF_SYNC_GUARD_DTS_FILE} built`)
|
|
19
|
-
} catch (error) {
|
|
20
|
-
console.error(error_text.message_of(error))
|
|
21
|
-
process.exit(1)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (process.argv[1] === fileURLToPath(import.meta.url)) await main()
|
|
26
|
-
|
|
27
|
-
export { build_self_sync_guard_library, SELF_SYNC_GUARD_OUTFILE, SELF_SYNC_GUARD_DTS_FILE }
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
import { fileURLToPath } from 'node:url'
|
|
3
|
-
import { error_text } from '#scripts/lib/error-message'
|
|
4
|
-
import { build_library, library_paths } from './build-library'
|
|
5
|
-
|
|
6
|
-
const VERSION_LIBRARY = 'version'
|
|
7
|
-
const { outfile: VERSION_OUTFILE, dts_file: VERSION_DTS_FILE } = library_paths(VERSION_LIBRARY)
|
|
8
|
-
|
|
9
|
-
async function build_version_library(): Promise<void> {
|
|
10
|
-
await build_library(VERSION_LIBRARY)
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
async function main(): Promise<void> {
|
|
14
|
-
try {
|
|
15
|
-
await build_version_library()
|
|
16
|
-
console.info(` ✔ ${VERSION_OUTFILE} built`)
|
|
17
|
-
console.info(` ✔ ${VERSION_DTS_FILE} built`)
|
|
18
|
-
} catch (error) {
|
|
19
|
-
console.error(error_text.message_of(error))
|
|
20
|
-
process.exit(1)
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (process.argv[1] === fileURLToPath(import.meta.url)) await main()
|
|
25
|
-
|
|
26
|
-
export { build_version_library, VERSION_OUTFILE, VERSION_DTS_FILE }
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { readFileSync, writeFileSync } from 'node:fs'
|
|
2
|
-
import { ci_installer_pin } from '#scripts/safe-chain/ci-installer-pin'
|
|
3
|
-
import { execaSync } from 'execa'
|
|
4
|
-
|
|
5
|
-
const SAFE_CHAIN_PKG = '@aikidosec/safe-chain'
|
|
6
|
-
const VERSION_RE = /@aikidosec\/safe-chain@([^\s"']+)/u
|
|
7
|
-
const NPM_TIMEOUT_MS = 30_000
|
|
8
|
-
|
|
9
|
-
interface PreinstallInfo {
|
|
10
|
-
content: string
|
|
11
|
-
current_version: string
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function extract_pinned_version(preinstall: string): string | undefined {
|
|
15
|
-
return VERSION_RE.exec(preinstall)?.[1]
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function fetch_latest_version(): string | undefined {
|
|
19
|
-
const result = execaSync('npm', ['view', SAFE_CHAIN_PKG, 'version'], {
|
|
20
|
-
reject: false,
|
|
21
|
-
timeout: NPM_TIMEOUT_MS,
|
|
22
|
-
})
|
|
23
|
-
if (result.exitCode !== 0 || !result.stdout) return undefined
|
|
24
|
-
|
|
25
|
-
return result.stdout.trim()
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function rewrite_version(content: string, current_version: string, next_version: string): string {
|
|
29
|
-
return content.replace(
|
|
30
|
-
`${SAFE_CHAIN_PKG}@${current_version}`,
|
|
31
|
-
() => `${SAFE_CHAIN_PKG}@${next_version}`,
|
|
32
|
-
)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function read_preinstall_info(package_json_path: string): PreinstallInfo | undefined {
|
|
36
|
-
const content = readFileSync(package_json_path, 'utf8')
|
|
37
|
-
const package_json = JSON.parse(content) as { scripts?: { preinstall?: string } }
|
|
38
|
-
const preinstall = package_json.scripts?.preinstall
|
|
39
|
-
if (!preinstall) return undefined
|
|
40
|
-
|
|
41
|
-
const current_version = extract_pinned_version(preinstall)
|
|
42
|
-
if (!current_version) return undefined
|
|
43
|
-
|
|
44
|
-
return { content, current_version }
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function write_if_updated(
|
|
48
|
-
package_json_path: string,
|
|
49
|
-
content: string,
|
|
50
|
-
current: string,
|
|
51
|
-
latest: string,
|
|
52
|
-
): void {
|
|
53
|
-
if (current === latest) {
|
|
54
|
-
console.info(`\n✔ ${SAFE_CHAIN_PKG} preinstall already at ${latest}`)
|
|
55
|
-
|
|
56
|
-
return
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
console.info(`\n↑ Updating ${SAFE_CHAIN_PKG} preinstall: ${current} → ${latest}`)
|
|
60
|
-
writeFileSync(package_json_path, rewrite_version(content, current, latest), 'utf8')
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function sync(package_json_path: string): void {
|
|
64
|
-
const info = read_preinstall_info(package_json_path)
|
|
65
|
-
if (!info) return
|
|
66
|
-
|
|
67
|
-
const latest = fetch_latest_version()
|
|
68
|
-
|
|
69
|
-
if (!latest) {
|
|
70
|
-
console.warn(`\n⚠ Could not fetch latest version of ${SAFE_CHAIN_PKG}; skipping`)
|
|
71
|
-
|
|
72
|
-
return
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
write_if_updated(package_json_path, info.content, info.current_version, latest)
|
|
76
|
-
ci_installer_pin.sync(latest)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const preinstall_version_update = {
|
|
80
|
-
sync,
|
|
81
|
-
extract_pinned_version,
|
|
82
|
-
fetch_latest_version,
|
|
83
|
-
rewrite_version,
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export { preinstall_version_update }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|