@joshuafolkken/kit 1.1050.0 → 1.1128.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +9 -8
- package/.claude/skills/epic-commands/SKILL.md +5 -7
- package/.claude/skills/workflow-commands/SKILL.md +20 -12
- package/.claude/skills/workflow-commands/background-commands.md +36 -84
- package/.claude/skills/workflow-commands/backlogrun-child.md +1 -1
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +8 -6
- package/.claude/skills/workflow-commands/backlogrun-progress.md +30 -33
- package/.claude/skills/workflow-commands/backlogrun-steps.md +12 -12
- package/.claude/skills/workflow-commands/backlogrun.md +2 -2
- package/.claude/skills/workflow-commands/chain-rule.md +4 -2
- package/.claude/skills/workflow-commands/delegation.md +3 -3
- package/.claude/skills/workflow-commands/followup-reference.md +1 -1
- package/.claude/skills/workflow-commands/followup.md +7 -3
- package/.claude/skills/workflow-commands/fullrun-steps.md +3 -2
- package/.claude/skills/workflow-commands/fullrun.md +8 -6
- package/.claude/skills/workflow-commands/halfrun.md +19 -21
- package/.claude/skills/workflow-commands/issue-comments.md +1 -1
- package/.claude/skills/workflow-commands/issue-fold-existing.md +10 -10
- package/.claude/skills/workflow-commands/issue-scout.md +1 -1
- package/.claude/skills/workflow-commands/kickoff.md +9 -4
- package/.claude/skills/workflow-commands/latest-gate.md +8 -16
- package/.claude/skills/workflow-commands/needs-human-review.md +1 -1
- package/.claude/skills/workflow-commands/observation-filing.md +3 -3
- package/.claude/skills/workflow-commands/pre-gate-cut.md +4 -8
- package/.claude/skills/workflow-commands/prerequisite.md +1 -1
- package/.claude/skills/workflow-commands/prrun.md +36 -0
- package/.claude/skills/workflow-commands/retrospective.md +1 -1
- package/.claude/skills/workflow-commands/split-assessment.md +4 -18
- package/.claude/skills/workflow-commands/working-tree-hold.md +22 -2
- package/.codex/hooks.json +16 -20
- package/.github/actions/setup-node/action.yml +33 -0
- package/.github/actions/setup-pnpm/action.yml +93 -0
- package/.github/dependabot.yml +5 -1
- package/.github/workflows/auto-tag.yml +2 -3
- package/.github/workflows/ci.yml +31 -134
- package/.github/workflows/dependabot-auto-merge.yml +1 -0
- package/.github/workflows/pr-classification.yml +6 -44
- package/.github/workflows/production.yml +1 -0
- package/.github/workflows/publish.yml +43 -47
- package/.github/workflows/sonar-qube.yml +41 -4
- package/.pnpmfile.mjs +29 -0
- package/AGENTS.md +5 -2
- package/CLAUDE.md +33 -27
- package/GEMINI.md +5 -2
- package/README.md +66 -20
- package/SECURITY.md +37 -6
- package/cspell/index.yaml +6 -1
- package/dist/CLAUDE.basic.md +6 -6
- package/dist/CLAUDE.md +33 -27
- package/dist/CLAUDE.static.md +6 -6
- package/dist/config-merge/index.js +48 -12
- package/dist/hooks/batch-guard.js +4 -4
- package/dist/hooks/{chunk-7VPDUBRN.js → chunk-4JZDP5X5.js} +152 -155
- package/dist/hooks/{chunk-HJIISEAC.js → chunk-5SD2YM7Z.js} +5 -13
- package/dist/hooks/{chunk-NAS4C7GP.js → chunk-77J7IEQM.js} +2 -2
- package/dist/hooks/{chunk-DMQN45FN.js → chunk-7HVB7SZG.js} +3 -3
- package/dist/hooks/{chunk-RLDX5SOC.js → chunk-AIOIOMPX.js} +4413 -1970
- package/dist/hooks/{chunk-5BK3K7V4.js → chunk-M7QKEKWO.js} +873 -2049
- package/dist/hooks/{chunk-WQ4OSBSS.js → chunk-MKVGBQPA.js} +2 -2
- package/dist/hooks/{chunk-EJDX2TOB.js → chunk-NXYMNPUQ.js} +7 -88
- package/dist/hooks/{chunk-NJQOBE6L.js → chunk-QVLT52OV.js} +2 -7
- package/dist/hooks/{chunk-GQ7KP45M.js → chunk-XYUIQOW3.js} +2 -2
- package/dist/hooks/codex-hook-adapter.js +12 -48
- package/dist/hooks/duplicate-read-guard.js +5 -5
- package/dist/hooks/format-edited.js +2 -2
- package/dist/hooks/inputs.json +280 -0
- package/dist/hooks/investigation-guard.js +5 -5
- package/dist/hooks/pretool-guard.js +9 -9
- package/dist/hooks/session-lang.js +0 -1
- package/dist/hooks/stop-guard.js +192 -333
- package/dist/josh.js +240 -148
- package/dist/managed-marker/index.js +2 -1
- package/dist/version/index.js +70 -78
- package/eslint/rules/promise.js +5 -0
- package/eslint/rules/unicorn.js +3 -2
- package/package.json +26 -5
- package/pnpm-workspace.yaml +5 -7
- package/prompts/collaboration-workflow/glossary.md +17 -0
- package/prompts/collaboration-workflow/issue-citation.md +5 -5
- package/prompts/collaboration-workflow/issue-template.md +1 -1
- package/prompts/collaboration-workflow/operating-rules.md +5 -5
- package/prompts/collaboration-workflow/overview.md +13 -1
- package/prompts/collaboration-workflow/principles.md +9 -0
- package/prompts/collaboration-workflow/report-format.md +1 -1
- package/prompts/collaboration-workflow/residency.md +3 -3
- package/prompts/collaboration-workflow/rule-delivery.md +1 -1
- package/prompts/collaboration-workflow/turn-batching.md +3 -3
- package/prompts/collaboration-workflow/upstream-interrupt.md +1 -1
- package/prompts/collaboration-workflow/wip-cap.md +25 -22
- package/prompts/collaboration-workflow.md +6 -8
- package/prompts/review-rubric.md +1 -1
- package/prompts/review.md +3 -3
- package/prompts/sonar-hotspot-handling.md +11 -3
- package/prompts/testing-guide.md +3 -3
- package/scripts/adopt/adopt-toolkits.ts +0 -2
- package/scripts/adopt/adopt.ts +0 -2
- package/scripts/agent/agent-argv.ts +0 -2
- package/scripts/agent/agent-diagnostics.ts +1 -1
- package/scripts/agent/agent-role-profile.ts +0 -7
- package/scripts/agent/claude-agent-argv.ts +0 -2
- package/scripts/agent/codex-agent-argv.ts +1 -1
- package/scripts/agent/codex-hooks.ts +92 -0
- package/scripts/agent/interactive-ask.ts +1 -1
- package/scripts/auto-ok/auto-ok-cli.ts +6 -16
- package/scripts/backlog/backlog-arrival.ts +30 -10
- package/scripts/backlog/backlog-budget-cli.ts +15 -16
- package/scripts/backlog/backlog-budget.ts +0 -2
- package/scripts/backlog/backlog-defect-priority.ts +2 -2
- package/scripts/backlog/backlog-drive-cli.ts +10 -8
- package/scripts/backlog/backlog-drive-named-offer.ts +16 -3
- package/scripts/backlog/backlog-drive-named.ts +2 -1
- package/scripts/backlog/backlog-drive.ts +76 -16
- package/scripts/backlog/backlog-named.ts +0 -3
- package/scripts/backlog/backlog-next.ts +9 -15
- package/scripts/backlog/backlog-offer-cli.ts +6 -19
- package/scripts/backlog/backlog-plan-cli.ts +1 -7
- package/scripts/backlog/backlog-plan.ts +30 -19
- package/scripts/backlog/backlog-pool.ts +3 -6
- package/scripts/backlog/backlog-rank.ts +2 -2
- package/scripts/backlog/backlog-ready.ts +39 -10
- package/scripts/backlog/backlog-scope.ts +1 -3
- package/scripts/backlog/backlog-stalled-detect.ts +2 -2
- package/scripts/backlog/backlog-stalled.ts +0 -1
- package/scripts/backlog/backlog-waves.ts +5 -2
- package/scripts/behavior/behavior-cli.ts +1 -1
- package/scripts/build/build-codex-hooks.ts +26 -0
- package/scripts/build/build-hooks.ts +85 -9
- package/scripts/build/hook-bundle-stamp.ts +111 -0
- package/scripts/cases/cases-cli.ts +1 -1
- package/scripts/cases/cases-logic.ts +1 -1
- package/scripts/ci/composite-actions.ts +30 -0
- package/scripts/ci/pr-classification.ts +3 -3
- package/scripts/claude/workflow-destination.ts +10 -1
- package/scripts/clone/clone-fingerprint.ts +0 -1
- package/scripts/clone/clone-scan-cli.ts +1 -1
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/config-merge/json-format.ts +0 -1
- package/scripts/config-merge/parse-jsonc.ts +33 -3
- package/scripts/config-merge/patch-json-key.ts +13 -6
- package/scripts/config-merge/patch-yaml-list.ts +1 -1
- package/scripts/cost-runtime/codex-usage.ts +2 -9
- package/scripts/cost-runtime/cost-attribute.ts +0 -1
- package/scripts/cost-runtime/cost-cli.ts +3 -10
- package/scripts/cost-runtime/cost-corpus.ts +0 -2
- package/scripts/cost-runtime/cost-format.ts +0 -3
- package/scripts/cost-runtime/cost-pricing.ts +0 -1
- package/scripts/cost-runtime/cost-tokens.ts +0 -1
- package/scripts/delegation/delegation-cli.ts +1 -1
- package/scripts/delegation/delegation-policy.ts +0 -1
- package/scripts/delegation/duplicate-read-guard.ts +0 -8
- package/scripts/delegation/fanout-cli.ts +1 -1
- package/scripts/delegation/fanout.ts +0 -2
- package/scripts/delegation/investigation-reads.ts +1 -164
- package/scripts/discovery/repo-map-logic.ts +0 -1
- package/scripts/discovery/repo-party-cli.ts +1 -1
- package/scripts/doctor/doctor-consumer.ts +6 -10
- package/scripts/doctor/doctor-io.ts +9 -13
- package/scripts/doctor/doctor-logic.ts +0 -4
- package/scripts/doctor/doctor.ts +14 -9
- package/scripts/document/backlogrun-parent-read-set.ts +12 -1
- package/scripts/document/document-byte-budget.ts +5 -5
- package/scripts/document/document-byte-check.ts +0 -1
- package/scripts/document/document-read-cli.ts +0 -2
- package/scripts/document/document-section-cli.ts +1 -1
- package/scripts/document/document-section.ts +0 -3
- package/scripts/document/edit-files-cli.ts +0 -1
- package/scripts/document/entry-read-budget.ts +21 -7
- package/scripts/document/entry-read-set.ts +32 -8
- package/scripts/document/lane-child-read-set.ts +8 -6
- package/scripts/document/read-files-cli.ts +0 -4
- package/scripts/document/read-set-cli.ts +0 -2
- package/scripts/document/read-set-point-of-use.ts +9 -3
- package/scripts/document/read-set-pricing.ts +0 -1
- package/scripts/document/read-set-trim.ts +4 -2
- package/scripts/epic/epic-add.ts +1 -1
- package/scripts/epic/epic-audit-cli.ts +1 -4
- package/scripts/epic/epic-audit-orphans.ts +1 -3
- package/scripts/epic/epic-audit-rationale.ts +0 -1
- package/scripts/epic/epic-audit-report.ts +0 -2
- package/scripts/epic/epic-audit.ts +8 -22
- package/scripts/epic/epic-bundle-cli.ts +1 -1
- package/scripts/epic/epic-bundle-evidence.ts +0 -1
- package/scripts/epic/epic-bundle-referenced.ts +1 -5
- package/scripts/epic/epic-bundle.ts +0 -4
- package/scripts/epic/epic-busy.ts +4 -5
- package/scripts/epic/epic-candidate-confirm.ts +0 -5
- package/scripts/epic/epic-classify.ts +2 -2
- package/scripts/epic/epic-cli-argv.ts +0 -1
- package/scripts/epic/epic-close-comment.ts +1 -1
- package/scripts/epic/epic-close.ts +5 -2
- package/scripts/epic/epic-cross-repo.ts +2 -4
- package/scripts/epic/epic-decision.ts +0 -1
- package/scripts/epic/epic-fetch.ts +2 -2
- package/scripts/epic/epic-index.ts +2 -3
- package/scripts/epic/epic-issue.ts +1 -15
- package/scripts/epic/epic-lane-offer.ts +9 -8
- package/scripts/epic/epic-nested.ts +1 -1
- package/scripts/epic/epic-next-read.ts +1 -3
- package/scripts/epic/epic-next-views.ts +0 -1
- package/scripts/epic/epic-next.ts +1 -10
- package/scripts/epic/epic-parse.ts +0 -1
- package/scripts/epic/epic-promote.ts +0 -9
- package/scripts/epic/epic-rank.ts +2 -2
- package/scripts/epic/epic-read.ts +1 -2
- package/scripts/epic/epic-reconcile.ts +1 -1
- package/scripts/epic/epic-reference.ts +1 -13
- package/scripts/epic/epic-relation-recheck.ts +1 -1
- package/scripts/epic/epic-relations.ts +1 -1
- package/scripts/epic/epic-remove.ts +1 -1
- package/scripts/epic/epic-report.ts +0 -1
- package/scripts/epic/epic-run.ts +2 -3
- package/scripts/epic/epic-shape.ts +1 -1
- package/scripts/epic/epic-solo-stale.ts +107 -0
- package/scripts/epic/epic-solo.ts +3 -2
- package/scripts/epic/epic-triage.ts +1 -1
- package/scripts/epic/epic-validate.ts +1 -1
- package/scripts/epic/epic.ts +1 -1
- package/scripts/exports/unused-members-cli.ts +53 -0
- package/scripts/{git → followup}/followup-issue-number.ts +1 -6
- package/scripts/{git → followup}/git-followup-cleanup.ts +2 -1
- package/scripts/{git → followup}/git-followup-finish.ts +1 -3
- package/scripts/{git → followup}/git-followup-flush.ts +2 -2
- package/scripts/{git → followup}/git-followup-issue-close.ts +2 -2
- package/scripts/{git → followup}/git-followup-label.ts +4 -4
- package/scripts/followup/git-followup-merged.ts +112 -0
- package/scripts/{git → followup}/git-followup-pending.ts +1 -1
- package/scripts/{git → followup}/git-followup-workflow.ts +19 -11
- package/scripts/{git → followup}/git-pr-followup-wrapup.ts +9 -3
- package/scripts/{git → followup}/git-pr-followup.ts +53 -16
- package/scripts/gate/core-budget.ts +3 -9
- package/scripts/gate/gate-plan.ts +7 -4
- package/scripts/gate/gate-report.ts +0 -6
- package/scripts/gate/gate-tree.ts +1 -1
- package/scripts/gate/pre-commit-type-check.ts +0 -6
- package/scripts/gate/project-checks.ts +7 -8
- package/scripts/gate/scoped-green.ts +0 -1
- package/scripts/gate/type-check-step.ts +1 -1
- package/scripts/gate/verification-gate.ts +0 -2
- package/scripts/gh/fix-gh-packages.ts +15 -12
- package/scripts/gh/gh-spawn.ts +2 -2
- package/scripts/{git → gh}/git-ai-review-scan.ts +1 -5
- package/scripts/{git → gh}/git-gh-check.ts +2 -1
- package/scripts/{git → gh}/git-gh-exec.ts +1 -1
- package/scripts/{git → gh}/git-gh-failure.ts +1 -1
- package/scripts/{git → gh}/git-gh-helpers.ts +0 -1
- package/scripts/{git → gh}/git-gh-issue-list.ts +13 -10
- package/scripts/{git → gh}/git-gh-issue-read.ts +1 -1
- package/scripts/{git → gh}/git-gh-issue-rest.ts +6 -3
- package/scripts/{git → gh}/git-gh-issue-write.ts +4 -1
- package/scripts/{git → gh}/git-gh-pr-auto-merge.ts +4 -1
- package/scripts/{git → gh}/git-gh-pr-read.ts +24 -0
- package/scripts/{git → gh}/git-gh-pr-rest.ts +5 -2
- package/scripts/{git → gh}/git-gh-pr-review.ts +2 -2
- package/scripts/{git → gh}/git-gh-pr-rollup.ts +1 -3
- package/scripts/{git → gh}/git-gh-pr.ts +3 -1
- package/scripts/{git → gh}/git-pr-ai-review.ts +2 -5
- package/scripts/{git → gh}/git-pr-checks-eval.ts +0 -10
- package/scripts/{git → gh}/git-pr-checks-parse.ts +4 -20
- package/scripts/{git → gh}/git-pr-checks.ts +2 -1
- package/scripts/{git → gh}/git-pr-coderabbit.ts +2 -5
- package/scripts/{git → gh}/git-pr-confirmation.ts +1 -3
- package/scripts/{git → gh}/git-pr-managed-config.ts +2 -3
- package/scripts/{git → gh}/git-pr.ts +3 -3
- package/scripts/git/changed-file-scope.ts +0 -1
- package/scripts/git/git-branch.ts +3 -6
- package/scripts/git/git-command.ts +6 -1
- package/scripts/git/git-commit.ts +1 -1
- package/scripts/git/git-common-directory.ts +80 -24
- package/scripts/git/git-error.ts +66 -9
- package/scripts/git/git-issue.ts +1 -1
- package/scripts/git/git-preflight.ts +2 -2
- package/scripts/git/git-prompt.ts +6 -31
- package/scripts/git/git-push.ts +1 -1
- package/scripts/git/git-spawn-sync.ts +65 -0
- package/scripts/git/git-spawn.ts +5 -4
- package/scripts/git/git-staging.ts +1 -0
- package/scripts/git/git-status.ts +1 -1
- package/scripts/git/git-workflow.ts +1 -1
- package/scripts/git/gone-branch.ts +1 -0
- package/scripts/git/listing-cutoff.ts +1 -1
- package/scripts/git/main-merge.ts +1 -1
- package/scripts/git/main-sync.ts +19 -1
- package/scripts/git/parse-json-array.ts +0 -3
- package/scripts/git/repository-lock.ts +16 -16
- package/scripts/git/{git-stash.ts → stash/git-stash.ts} +1 -1
- package/scripts/git/{stash-pop-args.ts → stash/stash-pop-args.ts} +2 -7
- package/scripts/git/{stash-pop-cli.ts → stash/stash-pop-cli.ts} +0 -1
- package/scripts/git/{stash-sweep-lock.ts → stash/stash-sweep-lock.ts} +3 -3
- package/scripts/hooks/codex-hook-adapter.ts +0 -1
- package/scripts/hooks/edited-cspell.ts +1 -1
- package/scripts/hooks/format-edited-file.ts +2 -0
- package/scripts/hooks/pre-push-unit.ts +0 -4
- package/scripts/hooks/pretool-guard.ts +22 -4
- package/scripts/hooks/reserved-run.ts +1 -1
- package/scripts/hooks/step-zero-notice.ts +76 -0
- package/scripts/hooks/stop-guard.ts +47 -21
- package/scripts/init/claude-plugin-config.ts +4 -5
- package/scripts/init/hook-command-rewrite.ts +16 -8
- package/scripts/init/hook-launch.ts +41 -15
- package/scripts/init/init-basic.ts +2 -5
- package/scripts/init/init-file-action.ts +54 -0
- package/scripts/init/init-logic-migrate.ts +35 -17
- package/scripts/init/init-logic-secretlint.ts +1 -1
- package/scripts/init/init-logic.ts +10 -19
- package/scripts/init/init.ts +11 -71
- package/scripts/init/kit-written-paths.ts +2 -0
- package/scripts/init/project-profile.ts +9 -17
- package/scripts/init/start-exec.ts +1 -1
- package/scripts/init/start-setup-pr.ts +6 -6
- package/scripts/init/start-steps.ts +3 -1
- package/scripts/issue/behavior-change-lint.ts +0 -1
- package/scripts/issue/defect-rate-cli.ts +64 -23
- package/scripts/issue/defect-rate.ts +1 -2
- package/scripts/{git → issue}/git-next-issues.ts +3 -3
- package/scripts/issue/issue-backlinks-cli.ts +1 -5
- package/scripts/issue/issue-backlinks.ts +7 -14
- package/scripts/issue/issue-cite-cli.ts +2 -6
- package/scripts/issue/issue-cite.ts +12 -8
- package/scripts/issue/issue-classification.ts +1 -9
- package/scripts/issue/issue-closing-pr.ts +4 -4
- package/scripts/issue/issue-comment-cli.ts +2 -2
- package/scripts/issue/issue-file-cli.ts +5 -5
- package/scripts/issue/issue-file.ts +7 -14
- package/scripts/issue/issue-fold-cli.ts +1 -1
- package/scripts/issue/issue-fold-existing-cli.ts +1 -1
- package/scripts/{git → issue}/issue-labels.ts +8 -0
- package/scripts/issue/issue-lint-cli.ts +1 -1
- package/scripts/issue/issue-merged.ts +2 -2
- package/scripts/{git → issue}/issue-rank.ts +1 -1
- package/scripts/issue/issue-read-cli.ts +8 -47
- package/scripts/issue/issue-read.ts +0 -2
- package/scripts/issue/issue-report-failures.ts +80 -0
- package/scripts/issue/issue-scout-cli.ts +1 -7
- package/scripts/issue/issue-scout-closed.ts +2 -2
- package/scripts/issue/issue-scout.ts +0 -2
- package/scripts/issue/issue-state-cli.ts +5 -46
- package/scripts/issue/issue-state.ts +1 -5
- package/scripts/issue/markdown-section.ts +21 -6
- package/scripts/issue/measure-rerun-cli.ts +74 -15
- package/scripts/issue/reproduction-measure.ts +1 -1
- package/scripts/josh/cli-body.ts +1 -1
- package/scripts/josh/file-map-stamp.ts +0 -3
- package/scripts/josh/josh-command-map.ts +2 -0
- package/scripts/josh/josh-commands-ai.ts +9 -102
- package/scripts/josh/josh-commands-backlog.ts +5 -1
- package/scripts/josh/josh-commands-development.ts +8 -1
- package/scripts/josh/josh-commands-issue.ts +2 -2
- package/scripts/josh/josh-commands-maintenance.ts +7 -0
- package/scripts/josh/josh-commands-project.ts +7 -1
- package/scripts/josh/josh-commands-run.ts +114 -0
- package/scripts/josh/josh-commands-versioning.ts +8 -0
- package/scripts/josh/josh-commands-workflow.ts +3 -3
- package/scripts/josh/path-decision.ts +0 -3
- package/scripts/josh/process-owner.ts +16 -0
- package/scripts/josh/run-github-prerequisite.ts +3 -6
- package/scripts/josh/session-language-cli.ts +0 -1
- package/scripts/lane/lane-await.ts +46 -19
- package/scripts/lane/lane-capacity.ts +6 -3
- package/scripts/lane/lane-child-invocation.ts +20 -7
- package/scripts/lane/lane-cli.ts +1 -4
- package/scripts/lane/lane-close.ts +5 -4
- package/scripts/lane/lane-dispatch.ts +3 -4
- package/scripts/lane/lane-environment.ts +0 -9
- package/scripts/lane/lane-handoff.ts +38 -0
- package/scripts/lane/lane-launch-cli.ts +31 -27
- package/scripts/lane/lane-open.ts +0 -3
- package/scripts/lane/lane-output.ts +0 -1
- package/scripts/lane/lane-registry.ts +9 -0
- package/scripts/lane/openai-lane-ship.ts +2 -0
- package/scripts/lane/openai-lane-supervisor-decision.ts +2 -1
- package/scripts/lane/openai-lane-supervisor.ts +6 -4
- package/scripts/lane/openai-review-broker.ts +7 -1
- package/scripts/lib/bounded-pool.ts +1 -0
- package/scripts/lib/cli-flags.ts +31 -2
- package/scripts/lib/error-message.ts +12 -1
- package/scripts/lib/json-value.ts +5 -4
- package/scripts/lib/poll.ts +3 -1
- package/scripts/lib/timed-fetch.ts +15 -0
- package/scripts/lib/timeouts.ts +13 -0
- package/scripts/{yaml → lib}/yaml-document.ts +3 -1
- package/scripts/{bytes → lines}/bytes-command.ts +0 -2
- package/scripts/lines/line-targets.ts +0 -11
- package/scripts/lines/lines-command.ts +5 -4
- package/scripts/lint/lint-related-scope.ts +0 -1
- package/scripts/lint/lint-related.ts +1 -1
- package/scripts/{git → notify}/telegram-notify.ts +2 -2
- package/scripts/{git → notify}/telegram-test.ts +4 -4
- package/scripts/observations/observation-ledger-home.ts +0 -1
- package/scripts/observations/observation-ledger-line.ts +0 -1
- package/scripts/observations/observation-ledger-migrate.ts +1 -1
- package/scripts/observations/observations-flush-landing.ts +3 -3
- package/scripts/observations/observations-flush.ts +2 -2
- package/scripts/overrides/lockfile-overrides.ts +1 -1
- package/scripts/overrides/overrides-logic.ts +1 -1
- package/scripts/package/package-scout-cli.ts +2 -7
- package/scripts/package/package-scout.ts +0 -2
- package/scripts/propagate/propagate-git-failure.ts +0 -1
- package/scripts/propagate/propagate-git.ts +3 -10
- package/scripts/propagate/propagate-publish.ts +2 -3
- package/scripts/propagate/propagate-run.ts +0 -2
- package/scripts/propagate/propagate-steps.ts +3 -5
- package/scripts/propagate/propagate-targets.ts +0 -4
- package/scripts/propagate/propagate.ts +0 -4
- package/scripts/refactor/import-graph.ts +0 -1
- package/scripts/refactor/refactor-lint.ts +0 -2
- package/scripts/refactor/refactor-scan.ts +2 -2
- package/scripts/refactor/refactor-targets.ts +0 -1
- package/scripts/registry-migration/migrate-logic.ts +28 -21
- package/scripts/registry-migration/migrate.ts +25 -14
- package/scripts/release/github-release-cli.ts +19 -6
- package/scripts/release/github-release-environment.ts +46 -0
- package/scripts/release/github-release.ts +151 -94
- package/scripts/release/release-history.ts +0 -1
- package/scripts/release/release-plan.ts +0 -1
- package/scripts/release/release-publish.ts +38 -5
- package/scripts/release/release-scope-cli.ts +1 -2
- package/scripts/release/release-tag.ts +2 -4
- package/scripts/release/release-worktree.ts +97 -2
- package/scripts/repo/auto-merge-setting-logic.ts +1 -4
- package/scripts/repo/repo-setting.ts +1 -1
- package/scripts/repo/repository-labels.ts +3 -3
- package/scripts/repo/required-checks-logic.ts +206 -0
- package/scripts/repo/required-checks-report.ts +71 -0
- package/scripts/repo/ruleset-check-cli.ts +53 -0
- package/scripts/repo/ruleset-check.ts +147 -0
- package/scripts/report/report-lint-cli.ts +0 -4
- package/scripts/review/disposition-cli.ts +1 -1
- package/scripts/review/live-evidence.ts +1 -1
- package/scripts/review/review-attest-cli.ts +0 -6
- package/scripts/review/review-attest.ts +4 -16
- package/scripts/review/review-brief-cli.ts +23 -6
- package/scripts/review/review-brief.ts +21 -8
- package/scripts/review/review-checkout.ts +3 -2
- package/scripts/review/review-diff-parts.ts +89 -0
- package/scripts/review/review-diff-write.ts +97 -0
- package/scripts/review/review-finding-ledger.ts +0 -1
- package/scripts/review/review-record-cli.ts +10 -17
- package/scripts/review/review-record.ts +0 -1
- package/scripts/review/review-round2-cli.ts +1 -1
- package/scripts/review/review-stamps.ts +0 -3
- package/scripts/review/review-tree.ts +14 -2
- package/scripts/rules/decision-oracle-stage.ts +18 -0
- package/scripts/rules/decision-oracle.ts +10 -7
- package/scripts/rules/delivered-rules.ts +9 -1
- package/scripts/rules/destructive-command.ts +119 -0
- package/scripts/rules/direct-filing.ts +1 -1
- package/scripts/rules/early-heartbeat.ts +4 -3
- package/scripts/rules/file-body.ts +0 -3
- package/scripts/rules/filing-cap.ts +0 -2
- package/scripts/rules/gh-api.ts +7 -2
- package/scripts/rules/git-argv.ts +18 -7
- package/scripts/rules/git-force.ts +0 -2
- package/scripts/rules/implementation-cut.ts +0 -1
- package/scripts/rules/index-guard.ts +71 -0
- package/scripts/rules/issue-citation.ts +50 -25
- package/scripts/rules/lane-background.ts +15 -7
- package/scripts/rules/lane-park.ts +22 -6
- package/scripts/rules/last-prompt.ts +1 -0
- package/scripts/rules/oracle-consulted.ts +1 -1
- package/scripts/rules/oracle-firing.ts +1 -0
- package/scripts/rules/oracle-list-cli.ts +0 -3
- package/scripts/rules/permission-guards.ts +14 -0
- package/scripts/rules/protected-files.ts +74 -0
- package/scripts/rules/reply-language.ts +1 -1
- package/scripts/rules/rule-body-guard.ts +0 -3
- package/scripts/rules/rule-value-cli.ts +0 -1
- package/scripts/rules/shell-body-trigger.ts +0 -1
- package/scripts/rules/shell-segments.ts +0 -1
- package/scripts/rules/stop-rules.ts +20 -9
- package/scripts/rules/tail-commands.ts +1 -1
- package/scripts/rules/test-declared-commit.ts +1 -1
- package/scripts/rules/third-party-write.ts +0 -1
- package/scripts/rules/worktree-guard.ts +26 -9
- package/scripts/run/run-carry-args.ts +8 -12
- package/scripts/run/run-carry-cli.ts +0 -2
- package/scripts/run/run-carry-stash.ts +2 -2
- package/scripts/run/run-carry-streak.ts +1 -1
- package/scripts/run/run-cut-args.ts +1 -6
- package/scripts/run/run-cut-cli.ts +0 -7
- package/scripts/run/run-cut.ts +8 -54
- package/scripts/run/run-ending-cli.ts +2 -6
- package/scripts/run/run-ending.ts +1 -4
- package/scripts/run/run-entry-cli.ts +133 -25
- package/scripts/run/run-entry-stop.ts +104 -0
- package/scripts/run/run-entry.ts +0 -1
- package/scripts/run/run-event-cli.ts +0 -2
- package/scripts/run/run-event-follow.ts +1 -0
- package/scripts/run/run-event-render.ts +1 -1
- package/scripts/run/run-event-scope.ts +53 -4
- package/scripts/run/run-event-stream-emit.ts +7 -2
- package/scripts/run/run-event-stream.ts +0 -3
- package/scripts/run/run-event-watch.ts +1 -0
- package/scripts/run/run-halfrun-resume.ts +20 -7
- package/scripts/run/run-headless.ts +2 -2
- package/scripts/run/run-hold-cli.ts +33 -10
- package/scripts/run/run-hold.ts +29 -6
- package/scripts/run/run-issue-number.ts +1 -1
- package/scripts/run/run-liveness-cli.ts +2 -6
- package/scripts/run/run-liveness.ts +2 -3
- package/scripts/run/run-merge-cli.ts +7 -23
- package/scripts/run/run-merge-steps.ts +5 -5
- package/scripts/run/run-merge.ts +1 -1
- package/scripts/run/run-next-cli.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +4 -2
- package/scripts/run/run-preflight.ts +2 -9
- package/scripts/run/run-prep-cli.ts +6 -3
- package/scripts/run/run-prep-locate.ts +1 -1
- package/scripts/run/run-progress-args.ts +20 -4
- package/scripts/run/run-progress-cli.ts +35 -36
- package/scripts/run/run-progress-clock.ts +10 -35
- package/scripts/run/run-progress-config.ts +0 -4
- package/scripts/run/run-progress-read.ts +1 -2
- package/scripts/run/run-progress.ts +1 -2
- package/scripts/run/run-prrun-resume.ts +117 -0
- package/scripts/run/run-report-cli.ts +1 -2
- package/scripts/run/run-report.ts +0 -1
- package/scripts/run/run-retrospective.ts +1 -1
- package/scripts/run/run-review-cli.ts +0 -3
- package/scripts/run/run-review-steps.ts +2 -0
- package/scripts/run/run-review.ts +0 -2
- package/scripts/run/run-ship-cli.ts +29 -19
- package/scripts/run/run-ship-detach.ts +1 -0
- package/scripts/run/run-ship-next.ts +106 -0
- package/scripts/run/run-ship-preflight.ts +1 -1
- package/scripts/run/run-ship-probe.ts +4 -1
- package/scripts/run/run-ship-return.ts +8 -3
- package/scripts/run/run-ship-review-steps.ts +18 -4
- package/scripts/run/run-ship-review.ts +11 -0
- package/scripts/run/run-ship-scoped.ts +1 -0
- package/scripts/run/run-ship-steps.ts +1 -1
- package/scripts/run/run-ship.ts +0 -1
- package/scripts/run/run-stage-read.ts +62 -0
- package/scripts/run/run-stage.ts +160 -0
- package/scripts/run/run-status-cli.ts +3 -16
- package/scripts/run/run-step-cli.ts +21 -14
- package/scripts/run/run-step.ts +1 -1
- package/scripts/run/run-stop-notify.ts +1 -3
- package/scripts/run/run-stranded-cli.ts +0 -4
- package/scripts/run/run-stranded-detect.ts +2 -2
- package/scripts/run/run-tail-cli.ts +17 -11
- package/scripts/run/run-tail.ts +2 -0
- package/scripts/run/run-tidy-lanes.ts +6 -2
- package/scripts/run/run-tidy-stashes.ts +12 -12
- package/scripts/run/run-wake-cli.ts +4 -13
- package/scripts/run/run-wake-loop.ts +2 -2
- package/scripts/run/run-wake.ts +2 -4
- package/scripts/run/run-watcher-guard-cli.ts +0 -4
- package/scripts/run/run-watcher-guard.ts +18 -12
- package/scripts/run/run-watcher-hook.ts +1 -1
- package/scripts/safe-chain/ci-installer-pin.ts +11 -5
- package/scripts/safe-chain/pack-hook.ts +92 -0
- package/scripts/safe-chain/project-config.ts +1 -1
- package/scripts/security/security-audit-provision-logic.ts +0 -1
- package/scripts/security/security-audit-provision.ts +3 -2
- package/scripts/security/security-audit.ts +0 -1
- package/scripts/security/security-updates-logic.ts +0 -1
- package/scripts/sonar/sonar-hotspots-cli.ts +10 -52
- package/scripts/sonar/sonar-hotspots.ts +0 -1
- package/scripts/sonar/sonar-new-code-cli.ts +150 -0
- package/scripts/sonar/sonar-new-code.ts +79 -0
- package/scripts/sonar/sonar-project.ts +97 -0
- package/scripts/split/split-assess-cli.ts +1 -1
- package/scripts/split/split-assess.ts +2 -5
- package/scripts/sync/managed-config-scope-cli.ts +1 -1
- package/scripts/sync/skill-migration.ts +0 -1
- package/scripts/sync/sync-ai-files.ts +4 -0
- package/scripts/sync/sync-hook-safety.ts +2 -3
- package/scripts/sync/sync.ts +1 -8
- package/scripts/sync/template-source-logic.ts +0 -1
- package/scripts/sync/workflow-pin-logic.ts +16 -28
- package/scripts/test/test-declared-changed.ts +13 -16
- package/scripts/test/test-declared-logic.ts +0 -1
- package/scripts/test/test-declared.ts +3 -9
- package/scripts/test/test-red-commit.ts +2 -2
- package/scripts/test/test-red.ts +14 -7
- package/scripts/test/test-type-logic.ts +1 -1
- package/scripts/test/unit-worker-share.ts +7 -16
- package/scripts/time-runtime/time-batch-guard.ts +1 -2
- package/scripts/time-runtime/time-bundle-call.ts +0 -1
- package/scripts/time-runtime/time-bundles.ts +0 -4
- package/scripts/time-runtime/time-density-hook.ts +0 -2
- package/scripts/time-runtime/time-followup-stage.ts +1 -1
- package/scripts/time-runtime/time-format.ts +0 -73
- package/scripts/time-runtime/time-round-trips.ts +0 -4
- package/scripts/time-runtime/time-single-check.ts +1 -1
- package/scripts/time-runtime/time-spans.ts +1 -1
- package/scripts/time-runtime/time-transcript-line.ts +1 -2
- package/scripts/ui/ui-routes-cli.ts +0 -5
- package/scripts/ui/ui-routes.ts +0 -5
- package/scripts/version/effective-upstream.ts +2 -2
- package/scripts/version/latest-corepack.ts +7 -9
- package/scripts/version/latest-scope-cli.ts +0 -2
- package/scripts/version/latest-update.ts +0 -2
- package/scripts/version/npm-registry.ts +2 -2
- package/scripts/version/publishable-range-check.ts +1 -1
- package/scripts/version/release-hold.ts +0 -4
- package/scripts/version/running-binary.ts +2 -2
- package/scripts/version/version-check-logic.ts +0 -2
- package/scripts/version/version-commands.ts +11 -1
- package/scripts/version/version-remote.ts +3 -3
- package/scripts/version/version-targets.ts +4 -4
- package/templates/CLAUDE.basic.md +6 -6
- package/templates/sonar-project.properties +28 -1
- package/templates/workflows/ci.yml +16 -82
- package/templates/workflows/dependabot-auto-merge.yml +6 -3
- package/templates/workflows/github-release.yml +79 -0
- package/tsconfig.sonar.json +4 -22
- package/prompts/collaboration-workflow/cross-repo-epic.md +0 -5
- package/prompts/collaboration-workflow/epic-audit.md +0 -5
- package/prompts/collaboration-workflow/epic-bundle.md +0 -5
- package/scripts/init/plugin-install-hint.ts +0 -47
- package/scripts/version/parse-json.ts +0 -13
- /package/scripts/{git → followup}/git-followup-stages.ts +0 -0
- /package/scripts/{git → gh}/git-gh-api-path.ts +0 -0
- /package/scripts/{git → gh}/git-gh-command.ts +0 -0
- /package/scripts/{git → gh}/git-gh-issue.ts +0 -0
- /package/scripts/{git → gh}/git-gh-pr-snapshot.ts +0 -0
- /package/scripts/{git → gh}/git-gh-reachability.ts +0 -0
- /package/scripts/{git → gh}/git-gh-repo.ts +0 -0
- /package/scripts/{git → gh}/git-gh-rest-state.ts +0 -0
- /package/scripts/{git → gh}/git-pr-checks-watch.ts +0 -0
- /package/scripts/{git → gh}/git-pr-error.ts +0 -0
- /package/scripts/{git → gh}/git-pr-messages.ts +0 -0
- /package/scripts/{git → gh}/github-issue-url.ts +0 -0
- /package/scripts/git/{stash-orphans.ts → stash/stash-orphans.ts} +0 -0
- /package/scripts/{git → issue}/issue-reference.ts +0 -0
- /package/scripts/{git → lib}/animation-helpers.ts +0 -0
- /package/scripts/{git → lib}/git-animation.ts +0 -0
- /package/scripts/{git → notify}/git-notify.ts +0 -0
- /package/scripts/{git → notify}/telegram-test-logic.ts +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { parse_json_array_or_undefined } from '#scripts/git/parse-json-array'
|
|
1
2
|
import { z } from 'zod'
|
|
2
|
-
import { parse_json_array_or_undefined } from './parse-json-array'
|
|
3
3
|
|
|
4
4
|
// The two REST listings `gh pr view --json statusCheckRollup` served as one array, merged back into
|
|
5
5
|
// that one array.
|
|
@@ -145,8 +145,6 @@ function to_status_check_rollup(input: {
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
const git_gh_pr_rollup = {
|
|
148
|
-
to_check_run_items,
|
|
149
|
-
to_status_context_items,
|
|
150
148
|
to_status_check_rollup,
|
|
151
149
|
}
|
|
152
150
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { pr_classification, type ReleaseClassification } from '#scripts/ci/pr-classification'
|
|
2
|
+
import { git_command } from '#scripts/git/git-command'
|
|
2
3
|
import { poll } from '#scripts/lib/poll'
|
|
3
4
|
import { z } from 'zod'
|
|
4
|
-
import { git_command } from './git-command'
|
|
5
5
|
import { git_gh_api_path } from './git-gh-api-path'
|
|
6
6
|
import { git_gh_exec } from './git-gh-exec'
|
|
7
7
|
import { git_gh_helpers } from './git-gh-helpers'
|
|
@@ -207,9 +207,11 @@ async function sleep_between_read_backs(attempt: number): Promise<void> {
|
|
|
207
207
|
// happen" from a read nobody got.
|
|
208
208
|
async function has_merge_landed(pr_number: number, merge_error: unknown): Promise<boolean> {
|
|
209
209
|
for (let attempt = 0; attempt < MERGE_READ_BACK_ATTEMPTS; attempt += 1) {
|
|
210
|
+
// eslint-disable-next-line no-await-in-loop -- a retry runs only after the previous attempt has answered
|
|
210
211
|
const is_merged = await read_merge_state(pr_number)
|
|
211
212
|
if (is_merged !== undefined) return is_merged
|
|
212
213
|
|
|
214
|
+
// eslint-disable-next-line no-await-in-loop -- a retry runs only after the previous attempt has answered
|
|
213
215
|
await sleep_between_read_backs(attempt)
|
|
214
216
|
}
|
|
215
217
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// cspell:words coderabbit coderabbitai
|
|
2
|
+
import { parse_json_array_or_undefined } from '#scripts/git/parse-json-array'
|
|
3
|
+
import { ai_review_pull_comment_schema } from '#scripts/git/schemas'
|
|
2
4
|
import {
|
|
3
5
|
classify_ai_review_comments,
|
|
4
6
|
type ClassifiedFinding,
|
|
@@ -6,8 +8,6 @@ import {
|
|
|
6
8
|
} from './git-ai-review-scan'
|
|
7
9
|
import { git_gh_command } from './git-gh-command'
|
|
8
10
|
import { git_pr_confirmation, has_ignore_reason, type TelegramContext } from './git-pr-confirmation'
|
|
9
|
-
import { parse_json_array_or_undefined } from './parse-json-array'
|
|
10
|
-
import { ai_review_pull_comment_schema } from './schemas'
|
|
11
11
|
|
|
12
12
|
interface AiReviewPullComment {
|
|
13
13
|
body?: string | undefined
|
|
@@ -163,9 +163,6 @@ async function handle_ai_review_findings(input: {
|
|
|
163
163
|
|
|
164
164
|
const git_pr_ai_review = {
|
|
165
165
|
handle_ai_review_findings,
|
|
166
|
-
parse_ai_review_comments,
|
|
167
|
-
to_review_comment,
|
|
168
|
-
has_ignore_reason,
|
|
169
166
|
}
|
|
170
167
|
|
|
171
168
|
export {
|
|
@@ -240,17 +240,7 @@ function is_auto_merge_blocked(snapshot: PrStateSnapshot): boolean {
|
|
|
240
240
|
)
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
const git_pr_checks_eval = {
|
|
244
|
-
evaluate_pr_state,
|
|
245
|
-
is_review_decision_decisive,
|
|
246
|
-
read_required_statuses,
|
|
247
|
-
is_coderabbit_check,
|
|
248
|
-
collect_blocking_failures,
|
|
249
|
-
describe_pr_failure,
|
|
250
|
-
}
|
|
251
|
-
|
|
252
243
|
export {
|
|
253
|
-
git_pr_checks_eval,
|
|
254
244
|
evaluate_pr_state,
|
|
255
245
|
is_auto_merge_blocked,
|
|
256
246
|
is_review_decision_decisive,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { pr_raw_schema, type RollupItemData } from '
|
|
1
|
+
import { pr_raw_schema, type RollupItemData } from '#scripts/git/schemas'
|
|
2
|
+
import { json_value } from '#scripts/lib/json-value'
|
|
2
3
|
|
|
3
4
|
const CHECK_STATUS_PASS = 'pass'
|
|
4
5
|
const CHECK_STATUS_PENDING = 'pending'
|
|
@@ -92,14 +93,6 @@ function read_rollup_array(parsed: unknown): Array<RollupItemData> {
|
|
|
92
93
|
return result.data.statusCheckRollup ?? []
|
|
93
94
|
}
|
|
94
95
|
|
|
95
|
-
function parse_json_safe(raw_json: string): unknown {
|
|
96
|
-
try {
|
|
97
|
-
return JSON.parse(raw_json)
|
|
98
|
-
} catch {
|
|
99
|
-
return undefined
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
96
|
function parse_rollup_item(item: RollupItemData): RollupCheck | undefined {
|
|
104
97
|
const name = read_string(item[KEY_NAME]) ?? read_string(item[KEY_CONTEXT])
|
|
105
98
|
if (name === undefined) return undefined
|
|
@@ -108,7 +101,7 @@ function parse_rollup_item(item: RollupItemData): RollupCheck | undefined {
|
|
|
108
101
|
}
|
|
109
102
|
|
|
110
103
|
function parse_rollup_checks(raw_json: string): Array<RollupCheck> {
|
|
111
|
-
const parsed =
|
|
104
|
+
const parsed = json_value.parse_or_undefined(raw_json)
|
|
112
105
|
const rollup = read_rollup_array(parsed)
|
|
113
106
|
const checks: Array<RollupCheck> = []
|
|
114
107
|
|
|
@@ -121,7 +114,7 @@ function parse_rollup_checks(raw_json: string): Array<RollupCheck> {
|
|
|
121
114
|
}
|
|
122
115
|
|
|
123
116
|
function parse_pr_state_snapshot(raw_json: string): PrStateSnapshot {
|
|
124
|
-
const parsed =
|
|
117
|
+
const parsed = json_value.parse_or_undefined(raw_json)
|
|
125
118
|
const result = pr_raw_schema.safeParse(parsed)
|
|
126
119
|
const data = result.success ? result.data : undefined
|
|
127
120
|
|
|
@@ -132,17 +125,8 @@ function parse_pr_state_snapshot(raw_json: string): PrStateSnapshot {
|
|
|
132
125
|
}
|
|
133
126
|
}
|
|
134
127
|
|
|
135
|
-
const git_pr_checks_parse = {
|
|
136
|
-
parse_rollup_checks,
|
|
137
|
-
parse_json_safe,
|
|
138
|
-
read_string,
|
|
139
|
-
parse_pr_state_snapshot,
|
|
140
|
-
}
|
|
141
|
-
|
|
142
128
|
export {
|
|
143
|
-
git_pr_checks_parse,
|
|
144
129
|
parse_rollup_checks,
|
|
145
|
-
parse_json_safe,
|
|
146
130
|
read_string,
|
|
147
131
|
parse_pr_state_snapshot,
|
|
148
132
|
CHECK_STATUS_PASS,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { package_name_schema } from '#scripts/git/schemas'
|
|
1
2
|
import { poll } from '#scripts/lib/poll'
|
|
2
3
|
import { git_gh_pr_auto_merge } from './git-gh-pr-auto-merge'
|
|
3
4
|
import { git_gh_pr_snapshot } from './git-gh-pr-snapshot'
|
|
@@ -9,7 +10,6 @@ import {
|
|
|
9
10
|
type PrEvaluation,
|
|
10
11
|
} from './git-pr-checks-eval'
|
|
11
12
|
import { parse_pr_state_snapshot, read_string, type PrStateSnapshot } from './git-pr-checks-parse'
|
|
12
|
-
import { package_name_schema } from './schemas'
|
|
13
13
|
|
|
14
14
|
const SECONDS_TO_MS = 1000
|
|
15
15
|
const CHECK_WAIT_INTERVAL_MS = 10_000
|
|
@@ -262,6 +262,7 @@ async function wait_for_pr_success(options: WaitForPrSuccessOptions): Promise<Pr
|
|
|
262
262
|
|
|
263
263
|
for (let attempt = 0; attempt < options.max_attempts; attempt += 1) {
|
|
264
264
|
console.info(`Checking PR status… (${String(attempt + 1)}/${String(options.max_attempts)})`)
|
|
265
|
+
// eslint-disable-next-line no-await-in-loop -- polling: each read waits on the state the previous one saw
|
|
265
266
|
carried = await attempt_pr_success_poll({
|
|
266
267
|
options,
|
|
267
268
|
stable_count: carried.next_stable_count,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { parse_json_array_or_undefined } from '#scripts/git/parse-json-array'
|
|
2
|
+
import { pull_comment_schema } from '#scripts/git/schemas'
|
|
1
3
|
import { git_gh_command } from './git-gh-command'
|
|
2
4
|
import { has_ignore_reason } from './git-pr-ai-review'
|
|
3
|
-
import { parse_json_array_or_undefined } from './parse-json-array'
|
|
4
|
-
import { pull_comment_schema } from './schemas'
|
|
5
5
|
|
|
6
6
|
// cspell:words coderabbit coderabbitai
|
|
7
7
|
|
|
@@ -120,9 +120,6 @@ async function handle_coderabbit_findings(input: {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
const git_pr_coderabbit = {
|
|
123
|
-
parse_pull_comments,
|
|
124
|
-
read_unresolved_cr_urls,
|
|
125
|
-
build_ignore_reason_comment,
|
|
126
123
|
handle_coderabbit_findings,
|
|
127
124
|
}
|
|
128
125
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { telegram_notify, type TelegramSendInput } from '
|
|
1
|
+
import { telegram_notify, type TelegramSendInput } from '#scripts/notify/telegram-notify'
|
|
2
2
|
|
|
3
3
|
// What to type when the confirmation notification itself could not be delivered
|
|
4
4
|
// (joshuafolkken/kit#1564). The `--body-file` spelling rather than `--body`, because the body names
|
|
@@ -53,8 +53,6 @@ function has_ignore_reason(reason: string | undefined): reason is string {
|
|
|
53
53
|
// gates drift apart.
|
|
54
54
|
const git_pr_confirmation = {
|
|
55
55
|
notify_confirmation,
|
|
56
|
-
build_confirmation_input,
|
|
57
|
-
has_ignore_reason,
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
// `has_ignore_reason` stays a named export beside the namespace: `git-pr-coderabbit.ts` imports it
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { changed_paths } from '#scripts/git/changed-paths'
|
|
2
|
+
import { git_command } from '#scripts/git/git-command'
|
|
1
3
|
import { managed_config_scope, type ManagedHit } from '#scripts/sync/managed-config-scope'
|
|
2
|
-
import { changed_paths } from './changed-paths'
|
|
3
|
-
import { git_command } from './git-command'
|
|
4
4
|
|
|
5
5
|
// **The tracked diff against the merge base — untracked files excluded.**
|
|
6
6
|
// `changed_paths.read_changed_paths(false)` appends the untracked files as well, and those are not in
|
|
@@ -63,7 +63,6 @@ async function handle_managed_config_changes(input: {
|
|
|
63
63
|
|
|
64
64
|
const git_pr_managed_config = {
|
|
65
65
|
handle_managed_config_changes,
|
|
66
|
-
build_report,
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
export { git_pr_managed_config }
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { pr_classification, type ReleaseClassification } from '#scripts/ci/pr-classification'
|
|
2
|
-
import {
|
|
2
|
+
import type { IssueInfo } from '#scripts/git/git-issue'
|
|
3
|
+
import { pr_info_schema } from '#scripts/git/schemas'
|
|
4
|
+
import { animation_helpers, type AnimationOptions } from '#scripts/lib/animation-helpers'
|
|
3
5
|
import { git_gh_command } from './git-gh-command'
|
|
4
|
-
import type { IssueInfo } from './git-issue'
|
|
5
6
|
import { git_pr_error } from './git-pr-error'
|
|
6
7
|
import { git_pr_messages } from './git-pr-messages'
|
|
7
|
-
import { pr_info_schema } from './schemas'
|
|
8
8
|
|
|
9
9
|
// **Answers the new pull request's URL, and `undefined` when one already existed.** `pr_create`
|
|
10
10
|
// filters its REST response to `.html_url`, so the address is in hand the moment the call returns —
|
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
animation_helpers,
|
|
3
3
|
create_git_operation_config,
|
|
4
4
|
type AnimationOptions,
|
|
5
|
-
} from '
|
|
5
|
+
} from '#scripts/lib/animation-helpers'
|
|
6
6
|
import { git_command } from './git-command'
|
|
7
|
-
import {
|
|
7
|
+
import { BranchMismatchError } from './git-error'
|
|
8
8
|
|
|
9
9
|
async function current(): Promise<string> {
|
|
10
10
|
const config: AnimationOptions<string> = {
|
|
@@ -124,7 +124,7 @@ async function check_and_create_branch(
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
if (is_mismatch(current_branch, target_branch_name, default_branch)) {
|
|
127
|
-
|
|
127
|
+
throw new BranchMismatchError({ current_branch, target_branch_name })
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
return current_branch
|
|
@@ -132,9 +132,6 @@ async function check_and_create_branch(
|
|
|
132
132
|
|
|
133
133
|
const git_branch = {
|
|
134
134
|
current,
|
|
135
|
-
create,
|
|
136
|
-
switch_to,
|
|
137
|
-
exists,
|
|
138
135
|
check_and_create_branch,
|
|
139
136
|
is_mismatch,
|
|
140
137
|
// Exported so a lane's branch name can be checked against the real matcher rather than against a
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { PORCELAIN_FLAG, UNTRACKED_FILES_FLAG } from './constants'
|
|
2
|
+
import { create_spawn_error } from './git-execa-error'
|
|
2
3
|
import { git_push_transport } from './git-push-transport'
|
|
3
4
|
import { git_spawn } from './git-spawn'
|
|
5
|
+
import { git_spawn_sync } from './git-spawn-sync'
|
|
4
6
|
|
|
5
7
|
async function branch(): Promise<string> {
|
|
6
8
|
return await git_spawn.read(['rev-parse', '--abbrev-ref', 'HEAD'])
|
|
@@ -31,7 +33,10 @@ async function status(directory?: string): Promise<string> {
|
|
|
31
33
|
// onto the working directory resolves to nothing, and a digest map built that way collapses to
|
|
32
34
|
// "every file absent" — which compares *equal* to another such map (joshuafolkken/kit#1241).
|
|
33
35
|
async function repository_root(): Promise<string> {
|
|
34
|
-
|
|
36
|
+
const result = git_spawn_sync.toplevel()
|
|
37
|
+
if (result.exit_code !== 0) throw create_spawn_error('rev-parse', result.exit_code)
|
|
38
|
+
|
|
39
|
+
return result.stdout.trim()
|
|
35
40
|
}
|
|
36
41
|
|
|
37
42
|
// The commit this checkout is sitting on, as opposed to `change_base_commit`'s commit a change is
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { animation_helpers, create_git_operation_config } from '
|
|
1
|
+
import { animation_helpers, create_git_operation_config } from '#scripts/lib/animation-helpers'
|
|
2
2
|
import { git_command } from './git-command'
|
|
3
3
|
|
|
4
4
|
async function commit(commit_message: string): Promise<void> {
|
|
@@ -1,46 +1,102 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process'
|
|
2
2
|
import { git_utilities } from './constants'
|
|
3
3
|
import { git_command } from './git-command'
|
|
4
|
+
import { git_location_environment, GIT_LOCATION_VARIABLES } from './git-location-environment'
|
|
5
|
+
|
|
6
|
+
// The one synchronous read of a checkout's two git directories (joshuafolkken/kit#2986) — the same
|
|
7
|
+
// `GIT_DIRECTORY_ARGUMENTS` `git_command.git_directories` asks asynchronously, so the two spellings
|
|
8
|
+
// cannot name different directories. It had been run in three places with three timeouts and no
|
|
9
|
+
// memory of the answer, though a `PreToolUse` hook may ask it several times in one call.
|
|
4
10
|
|
|
5
11
|
const OWN_GIT_DIRECTORY = 0
|
|
6
12
|
const COMMON_GIT_DIRECTORY = 1
|
|
7
|
-
|
|
13
|
+
// The read runs inside `PreToolUse` hooks, which hold the tool call for as long as it takes;
|
|
14
|
+
// `rev-parse` takes no lock, so anything past a few seconds is a fault rather than slow work.
|
|
15
|
+
const PROBE_TIMEOUT_MS = 5000
|
|
16
|
+
|
|
17
|
+
// **Only an answer is remembered, never a failure** — a timeout or a directory that is not yet a
|
|
18
|
+
// repository is asked again next time. The key carries every input git resolves from: the directory
|
|
19
|
+
// asked about and, where the environment is inherited, the git location variables it holds.
|
|
20
|
+
const answers = new Map<string, ReadonlyArray<string>>()
|
|
8
21
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
timeout: PROBE_TIMEOUT_MS,
|
|
16
|
-
})
|
|
22
|
+
// With an explicit `cwd`, the git location variables are cleared so that directory is what git answers
|
|
23
|
+
// for: a hook exports `GIT_DIR`, which beats `cwd` and would name the hook's checkout instead
|
|
24
|
+
// (joshuafolkken/kit#2515). Without one the environment is kept, so the read resolves the same
|
|
25
|
+
// checkout as the asynchronous `git_directories`.
|
|
26
|
+
function probe_environment(cwd: string | undefined): NodeJS.ProcessEnv {
|
|
27
|
+
if (cwd === undefined) return process.env
|
|
17
28
|
|
|
18
|
-
return
|
|
29
|
+
return { ...process.env, ...git_location_environment.location_free_environment() }
|
|
19
30
|
}
|
|
20
31
|
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
function cache_key(cwd: string | undefined): string {
|
|
33
|
+
if (cwd !== undefined) return `explicit\0${cwd}`
|
|
34
|
+
|
|
35
|
+
const locations = GIT_LOCATION_VARIABLES.map((name) => process.env[name] ?? '')
|
|
24
36
|
|
|
25
|
-
return
|
|
37
|
+
return ['inherited', process.cwd(), ...locations].join('\0')
|
|
26
38
|
}
|
|
27
39
|
|
|
28
|
-
|
|
40
|
+
// git's own diagnostics are discarded: a checkout it cannot describe is already the empty answer, and
|
|
41
|
+
// a hook that let `fatal: not a git repository` through would print it in front of a tool call. The
|
|
42
|
+
// binary is resolved through `git_utilities` exactly as `git-spawn.ts` resolves it and run with an
|
|
43
|
+
// argument array and no `shell`; both are internally controlled, never untrusted input.
|
|
44
|
+
function read_directories(cwd: string | undefined): ReadonlyArray<string> {
|
|
29
45
|
try {
|
|
30
|
-
|
|
46
|
+
const output = execFileSync(
|
|
47
|
+
git_utilities.get_git_command_for_spawn(),
|
|
48
|
+
[...git_command.GIT_DIRECTORY_ARGUMENTS],
|
|
49
|
+
{
|
|
50
|
+
cwd,
|
|
51
|
+
env: probe_environment(cwd),
|
|
52
|
+
encoding: 'utf8',
|
|
53
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
54
|
+
timeout: PROBE_TIMEOUT_MS,
|
|
55
|
+
},
|
|
56
|
+
) // NOSONAR
|
|
57
|
+
|
|
58
|
+
return output.split('\n').filter((line) => line !== '')
|
|
31
59
|
} catch {
|
|
32
|
-
return
|
|
60
|
+
return []
|
|
33
61
|
}
|
|
34
62
|
}
|
|
35
63
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
64
|
+
// The work tree's own git directory, then the common one every work tree of the repository shares —
|
|
65
|
+
// or nothing, where git cannot describe the checkout.
|
|
66
|
+
function directories(cwd?: string): ReadonlyArray<string> {
|
|
67
|
+
const key = cache_key(cwd)
|
|
68
|
+
const known = answers.get(key)
|
|
69
|
+
|
|
70
|
+
if (known !== undefined) return known
|
|
71
|
+
|
|
72
|
+
const read = read_directories(cwd)
|
|
73
|
+
|
|
74
|
+
if (read.length > 0) answers.set(key, read)
|
|
75
|
+
|
|
76
|
+
return read
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function own(cwd?: string): string | undefined {
|
|
80
|
+
return directories(cwd)[OWN_GIT_DIRECTORY]
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function repository(cwd?: string): string | undefined {
|
|
84
|
+
return directories(cwd)[COMMON_GIT_DIRECTORY]
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function select_linked(found: ReadonlyArray<string>): string | undefined {
|
|
88
|
+
const own_directory = found[OWN_GIT_DIRECTORY]
|
|
89
|
+
const common = found[COMMON_GIT_DIRECTORY]
|
|
90
|
+
|
|
91
|
+
return own_directory !== undefined && common !== undefined && own_directory !== common
|
|
92
|
+
? common
|
|
93
|
+
: undefined
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function resolve(cwd: string): string | undefined {
|
|
97
|
+
return select_linked(directories(cwd))
|
|
42
98
|
}
|
|
43
99
|
|
|
44
|
-
const git_common_directory = { repository, resolve, select_linked }
|
|
100
|
+
const git_common_directory = { directories, own, repository, resolve, select_linked }
|
|
45
101
|
|
|
46
102
|
export { git_common_directory }
|
package/scripts/git/git-error.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { has_stderr_field } from '#scripts/gh/git-gh-exec'
|
|
1
2
|
import { error_text } from '#scripts/lib/error-message'
|
|
2
|
-
import { has_stderr_field } from './git-gh-exec'
|
|
3
3
|
|
|
4
4
|
function get_stderr_from_error(cause: Error): string | undefined {
|
|
5
5
|
if (!has_stderr_field(cause)) return undefined
|
|
@@ -42,7 +42,41 @@ function display_error_details(cause: unknown): void {
|
|
|
42
42
|
console.error('💡 Details:', cause_message)
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
const FAILURE_EXIT_CODE = 1
|
|
46
|
+
const OPERATION_CANCELLED_MESSAGE = '💡 Operation cancelled.'
|
|
47
|
+
|
|
48
|
+
// **A library refuses by throwing; only the CLI entry decides the exit code** (joshuafolkken/kit#2985).
|
|
49
|
+
// `process.exit()` from an imported module skips every `finally` above it (a lock release included)
|
|
50
|
+
// and truncates a piped stdout, so these modules throw a typed error instead, and `handle` — the catch
|
|
51
|
+
// at each entry — renders it and sets `process.exitCode`.
|
|
52
|
+
interface BranchMismatch {
|
|
53
|
+
current_branch: string
|
|
54
|
+
target_branch_name: string
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
class BranchMismatchError extends Error {
|
|
58
|
+
readonly current_branch: string
|
|
59
|
+
readonly target_branch_name: string
|
|
60
|
+
|
|
61
|
+
constructor(mismatch: BranchMismatch, options?: ErrorOptions) {
|
|
62
|
+
super(
|
|
63
|
+
`Branch mismatch: on ${mismatch.current_branch}, expected ${mismatch.target_branch_name}`,
|
|
64
|
+
options,
|
|
65
|
+
)
|
|
66
|
+
this.name = 'BranchMismatchError'
|
|
67
|
+
this.current_branch = mismatch.current_branch
|
|
68
|
+
this.target_branch_name = mismatch.target_branch_name
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
class OperationCancelledError extends Error {
|
|
73
|
+
constructor() {
|
|
74
|
+
super('Operation cancelled')
|
|
75
|
+
this.name = 'OperationCancelledError'
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function display_failure(error: unknown): void {
|
|
46
80
|
const error_message = error_text.message_of(error)
|
|
47
81
|
|
|
48
82
|
console.error('')
|
|
@@ -53,23 +87,46 @@ function handle(error: unknown): void {
|
|
|
53
87
|
}
|
|
54
88
|
|
|
55
89
|
console.error('')
|
|
56
|
-
process.exit(1)
|
|
57
90
|
}
|
|
58
91
|
|
|
59
|
-
function
|
|
92
|
+
function display_branch_mismatch(error: BranchMismatchError): void {
|
|
60
93
|
console.error('')
|
|
61
94
|
console.error('❌ Branch mismatch detected')
|
|
62
95
|
console.error('')
|
|
63
|
-
console.error(`Current branch: ${current_branch}`)
|
|
64
|
-
console.error(`Expected branch: ${target_branch_name}`)
|
|
96
|
+
console.error(`Current branch: ${error.current_branch}`)
|
|
97
|
+
console.error(`Expected branch: ${error.target_branch_name}`)
|
|
65
98
|
console.error('')
|
|
66
99
|
console.error('💡 Please update main branch to the latest and try again.')
|
|
67
|
-
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function display_cancelled(): void {
|
|
103
|
+
console.info(OPERATION_CANCELLED_MESSAGE)
|
|
104
|
+
console.info('')
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function display(error: unknown): void {
|
|
108
|
+
if (error instanceof BranchMismatchError) {
|
|
109
|
+
display_branch_mismatch(error)
|
|
110
|
+
|
|
111
|
+
return
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (error instanceof OperationCancelledError) {
|
|
115
|
+
display_cancelled()
|
|
116
|
+
|
|
117
|
+
return
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
display_failure(error)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function handle(error: unknown): void {
|
|
124
|
+
display(error)
|
|
125
|
+
process.exitCode = FAILURE_EXIT_CODE
|
|
68
126
|
}
|
|
69
127
|
|
|
70
128
|
const git_error = {
|
|
71
129
|
handle,
|
|
72
|
-
display_branch_mismatch_error,
|
|
73
130
|
}
|
|
74
131
|
|
|
75
|
-
export { git_error }
|
|
132
|
+
export { git_error, BranchMismatchError, OperationCancelledError }
|
package/scripts/git/git-issue.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { git_gh_issue_read } from '#scripts/gh/git-gh-issue-read'
|
|
1
2
|
import { lane_paths } from '#scripts/lane/lane-paths'
|
|
2
3
|
import { SEPARATOR_LINE } from './constants'
|
|
3
|
-
import { git_gh_issue_read } from './git-gh-issue-read'
|
|
4
4
|
import { git_prompt } from './git-prompt'
|
|
5
5
|
|
|
6
6
|
interface IssueInfo {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { git_gh_command } from '#scripts/gh/git-gh-command'
|
|
2
|
+
import { git_pr } from '#scripts/gh/git-pr'
|
|
1
3
|
import { error_text } from '#scripts/lib/error-message'
|
|
2
4
|
import { live_evidence } from '#scripts/review/live-evidence'
|
|
3
5
|
import { changed_paths } from './changed-paths'
|
|
4
6
|
import { git_branch } from './git-branch'
|
|
5
7
|
import { git_command } from './git-command'
|
|
6
|
-
import { git_gh_command } from './git-gh-command'
|
|
7
8
|
import { git_issue, type IssueInfo } from './git-issue'
|
|
8
|
-
import { git_pr } from './git-pr'
|
|
9
9
|
|
|
10
10
|
// joshuafolkken/kit#2817. A first `josh git -y` was refused once per unmet precondition — the title's
|
|
11
11
|
// issue number, the branch name, the issue's release classification — each only after the stage
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { stdin as input, stdout as output } from 'node:process'
|
|
2
2
|
import { createInterface, type Interface } from 'node:readline/promises'
|
|
3
|
+
import { OperationCancelledError } from './git-error'
|
|
3
4
|
import { git_prompt_display } from './git-prompt-display'
|
|
4
5
|
|
|
5
|
-
const OPERATION_CANCELLED_MESSAGE = '💡 Operation cancelled.'
|
|
6
|
-
|
|
7
6
|
const PROMPT_MESSAGES = {
|
|
8
7
|
unstaged_files: '💬 Unstaged files found. Continue anyway? (y/n): ',
|
|
9
8
|
package_json_not_staged: '💬 package.json is not staged. Continue anyway? (y/n): ',
|
|
@@ -85,16 +84,10 @@ async function with_prompt<T>(callback: PromptCallback<T>, fallback_value?: T):
|
|
|
85
84
|
}
|
|
86
85
|
}
|
|
87
86
|
|
|
88
|
-
async function
|
|
87
|
+
async function confirm_or_cancel(should_continue: () => Promise<boolean>): Promise<void> {
|
|
89
88
|
const is_confirmed = await should_continue()
|
|
90
89
|
|
|
91
|
-
if (is_confirmed)
|
|
92
|
-
return
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
console.info(OPERATION_CANCELLED_MESSAGE)
|
|
96
|
-
console.info('')
|
|
97
|
-
process.exit(1)
|
|
90
|
+
if (!is_confirmed) throw new OperationCancelledError()
|
|
98
91
|
}
|
|
99
92
|
|
|
100
93
|
function create_confirm_function(message: string): () => Promise<boolean> {
|
|
@@ -112,11 +105,11 @@ async function confirm_without_package_json(): Promise<boolean> {
|
|
|
112
105
|
}
|
|
113
106
|
|
|
114
107
|
async function confirm_unstaged_files(): Promise<void> {
|
|
115
|
-
await
|
|
108
|
+
await confirm_or_cancel(confirm_continue)
|
|
116
109
|
}
|
|
117
110
|
|
|
118
111
|
async function confirm_missing_package_json(): Promise<void> {
|
|
119
|
-
await
|
|
112
|
+
await confirm_or_cancel(confirm_without_package_json)
|
|
120
113
|
}
|
|
121
114
|
|
|
122
115
|
async function confirm_version_not_updated(): Promise<boolean> {
|
|
@@ -124,19 +117,7 @@ async function confirm_version_not_updated(): Promise<boolean> {
|
|
|
124
117
|
}
|
|
125
118
|
|
|
126
119
|
async function confirm_without_version_update(): Promise<void> {
|
|
127
|
-
await
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
async function confirm_commit(): Promise<boolean> {
|
|
131
|
-
return await create_confirm_function(PROMPT_MESSAGES.commit)()
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
async function confirm_push(): Promise<boolean> {
|
|
135
|
-
return await create_confirm_function(PROMPT_MESSAGES.push)()
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
async function confirm_pr(): Promise<boolean> {
|
|
139
|
-
return await create_confirm_function(PROMPT_MESSAGES.pr)()
|
|
120
|
+
await confirm_or_cancel(confirm_version_not_updated)
|
|
140
121
|
}
|
|
141
122
|
|
|
142
123
|
async function ask_issue_info(prompt: Interface, question: string): Promise<string> {
|
|
@@ -190,15 +171,9 @@ async function confirm_workflow_steps(): Promise<WorkflowConfirmations> {
|
|
|
190
171
|
}
|
|
191
172
|
|
|
192
173
|
const git_prompt = {
|
|
193
|
-
confirm_continue,
|
|
194
174
|
confirm_unstaged_files,
|
|
195
|
-
confirm_without_package_json,
|
|
196
175
|
confirm_missing_package_json,
|
|
197
|
-
confirm_version_not_updated,
|
|
198
176
|
confirm_without_version_update,
|
|
199
|
-
confirm_commit,
|
|
200
|
-
confirm_push,
|
|
201
|
-
confirm_pr,
|
|
202
177
|
get_issue_info,
|
|
203
178
|
confirm_workflow_steps,
|
|
204
179
|
}
|
package/scripts/git/git-push.ts
CHANGED