@joshuafolkken/kit 1.1514.0 → 1.2114.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/investigator.md +1 -1
- package/.claude/agents/reviewer-verification.md +19 -0
- package/.claude/agents/reviewer.md +19 -0
- package/.claude/settings.json +5 -6
- package/.claude/skills/dependency-update/SKILL.md +9 -10
- package/.claude/skills/epic-commands/SKILL.md +26 -65
- package/.claude/skills/epic-commands/epic-bundle.md +3 -1
- package/.claude/skills/workflow-commands/SKILL.md +11 -11
- package/.claude/skills/workflow-commands/background-commands.md +13 -10
- package/.claude/skills/workflow-commands/backlogrun-child.md +12 -8
- package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +7 -25
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +18 -14
- package/.claude/skills/workflow-commands/backlogrun-park.md +18 -24
- package/.claude/skills/workflow-commands/backlogrun-progress.md +4 -5
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +6 -6
- package/.claude/skills/workflow-commands/backlogrun-steps.md +12 -11
- package/.claude/skills/workflow-commands/backlogrun.md +1 -1
- package/.claude/skills/workflow-commands/chain-rule.md +43 -28
- package/.claude/skills/workflow-commands/delegation.md +11 -10
- package/.claude/skills/workflow-commands/entry-sequence.md +10 -10
- package/.claude/skills/workflow-commands/followup.md +16 -36
- package/.claude/skills/workflow-commands/fullrun-steps.md +38 -47
- package/.claude/skills/workflow-commands/fullrun.md +3 -3
- package/.claude/skills/workflow-commands/halfrun.md +17 -25
- package/.claude/skills/workflow-commands/issue-comments.md +25 -16
- package/.claude/skills/workflow-commands/issue-fold-existing.md +2 -1
- package/.claude/skills/workflow-commands/issue-scout.md +2 -2
- package/.claude/skills/workflow-commands/kickoff.md +24 -23
- package/.claude/skills/workflow-commands/latest-gate.md +7 -12
- package/.claude/skills/workflow-commands/needs-human-review.md +9 -14
- package/.claude/skills/workflow-commands/observation-filing.md +4 -36
- package/.claude/skills/workflow-commands/observation-ledger.md +6 -4
- package/.claude/skills/workflow-commands/pre-gate-cut.md +22 -37
- package/.claude/skills/workflow-commands/prerequisite.md +11 -16
- package/.claude/skills/workflow-commands/progress-watcher.md +1 -1
- package/.claude/skills/workflow-commands/prrun.md +3 -7
- package/.claude/skills/workflow-commands/retrospective.md +2 -2
- package/.claude/skills/workflow-commands/split-assessment.md +15 -1
- package/.claude/skills/workflow-commands/working-tree-hold.md +9 -9
- package/.codex/hooks.json +5 -5
- package/.github/actions/setup-node/action.yml +9 -0
- package/.github/actions/setup-pnpm/action.yml +10 -17
- package/.github/dependabot.yml +32 -0
- package/.github/release.yml +0 -2
- package/.github/workflows/auto-tag.yml +45 -0
- package/.github/workflows/ci.yml +267 -17
- package/.github/workflows/dependabot-auto-merge.yml +63 -4
- package/.github/workflows/production.yml +8 -0
- package/.github/workflows/publish.yml +67 -46
- package/.github/workflows/sonar-qube.yml +1 -0
- package/.prettierignore +2 -0
- package/.vscode/settings.json +19 -0
- package/.vscode/tasks.json +1 -2
- package/CLAUDE.md +7 -18
- package/README.md +4 -2
- package/SECURITY.md +3 -3
- package/dist/CLAUDE.md +7 -18
- package/dist/commands/document-read-cli.js +883 -0
- package/dist/commands/{document-section-cli.js → document-section-main.js} +81 -38
- package/dist/commands/read-set-cli.js +1927 -0
- package/dist/commands/run-prep-main.js +21174 -0
- package/dist/commands/run-step-cli.js +27733 -0
- package/dist/config-merge/index.js +5 -1
- package/dist/hooks/audit-provision.js +39 -36
- package/dist/hooks/chunk-3GKE653K.js +6204 -0
- package/dist/hooks/chunk-45CJJOO7.js +1243 -0
- package/dist/hooks/chunk-5PM2JRGV.js +7780 -0
- package/dist/hooks/chunk-7SIUNQXK.js +3591 -0
- package/dist/hooks/chunk-CQD4LJE6.js +4858 -0
- package/dist/hooks/{chunk-723HKZO5.js → chunk-OPSRGWFU.js} +1 -1
- package/dist/hooks/chunk-UJ3FPMMM.js +628 -0
- package/dist/hooks/chunk-VVNYJWEI.js +30 -0
- package/dist/hooks/chunk-Z6DQJKH3.js +2806 -0
- package/dist/hooks/codex-hook-adapter.js +10 -22
- package/dist/hooks/format-edited.js +4 -6
- package/dist/hooks/inputs.json +460 -308
- package/dist/hooks/pretool-guard.js +8 -25
- package/dist/hooks/session-lang.js +135 -299
- package/dist/hooks/stop-guard.js +6496 -1799
- package/dist/josh.js +7412 -4228
- package/dist/self-sync-guard/index.js +74 -10
- package/dist/version/index.js +276 -407
- package/eslint/base.js +1 -1
- package/eslint/rules/comment-why-only.js +108 -0
- package/lefthook/base.yml +3 -1
- package/package.json +23 -54
- package/pnpm-workspace.yaml +4 -2
- package/prompts/coding-standards.md +2 -2
- package/prompts/collaboration-workflow/file-edits.md +14 -17
- package/prompts/collaboration-workflow/issue-citation.md +0 -4
- package/prompts/collaboration-workflow/issue-template.md +54 -18
- package/prompts/collaboration-workflow/lane-instructions.md +3 -2
- package/prompts/collaboration-workflow/measurement.md +44 -0
- package/prompts/collaboration-workflow/operating-rules.md +15 -8
- package/prompts/collaboration-workflow/output-bounds.md +6 -7
- package/prompts/collaboration-workflow/plan-comment.md +3 -42
- package/prompts/collaboration-workflow/principles.md +14 -0
- package/prompts/collaboration-workflow/report-format.md +31 -60
- package/prompts/collaboration-workflow/residency.md +3 -2
- package/prompts/collaboration-workflow/rule-delivery.md +13 -1
- package/prompts/collaboration-workflow/shell-body.md +6 -16
- package/prompts/collaboration-workflow/turn-batching.md +0 -2
- package/prompts/collaboration-workflow/upstream-interrupt.md +15 -5
- package/prompts/collaboration-workflow/wip-cap.md +4 -2
- package/prompts/collaboration-workflow.md +3 -7
- package/prompts/refactoring.md +1 -1
- package/prompts/review-rubric.md +9 -2
- package/prompts/review.md +65 -36
- package/prompts/testing-guide.md +9 -43
- package/scripts/agent/agent-argv.ts +14 -16
- package/scripts/agent/agent-event.ts +15 -15
- package/scripts/agent/agent-exit-record.ts +13 -1
- package/scripts/agent/agent-provider.ts +138 -0
- package/scripts/agent/agent-role-profile.ts +108 -156
- package/scripts/agent/agent-safe-text.ts +20 -5
- package/scripts/agent/api-auth.ts +41 -0
- package/scripts/agent/api-outage.ts +1 -1
- package/scripts/agent/api-usage-limit.ts +65 -0
- package/scripts/agent/claude-agent-argv.ts +19 -9
- package/scripts/agent/codex-agent-argv.ts +118 -22
- package/scripts/agent/usage-limit-reset.ts +179 -0
- package/scripts/auth/claude-token-output.ts +2 -2
- package/scripts/auto-ok/auto-ok-author.ts +53 -0
- package/scripts/auto-ok/auto-ok-cli.ts +25 -16
- package/scripts/auto-ok/auto-ok-judge-read.ts +12 -3
- package/scripts/auto-ok/auto-ok-judge-write.ts +46 -19
- package/scripts/auto-ok/auto-ok-judge.ts +13 -2
- package/scripts/auto-ok/auto-ok-main.ts +17 -0
- package/scripts/backlog/backlog-arrival.ts +14 -3
- package/scripts/backlog/backlog-budget-cli.ts +7 -33
- package/scripts/backlog/backlog-budget-main.ts +16 -0
- package/scripts/backlog/backlog-budget.ts +2 -3
- package/scripts/backlog/backlog-defect-priority.ts +5 -4
- package/scripts/backlog/backlog-drive-adopt.ts +67 -0
- package/scripts/backlog/backlog-drive-args.ts +4 -5
- package/scripts/backlog/backlog-drive-cli.ts +118 -28
- package/scripts/backlog/backlog-drive-hold.ts +162 -0
- package/scripts/backlog/backlog-drive-idle.ts +161 -0
- package/scripts/backlog/backlog-drive-judge.ts +25 -0
- package/scripts/backlog/backlog-drive-launch-pass.ts +90 -0
- package/scripts/backlog/backlog-drive-launch.ts +8 -2
- package/scripts/backlog/backlog-drive-memory.ts +126 -0
- package/scripts/backlog/backlog-drive-named-offer.ts +73 -35
- package/scripts/backlog/backlog-drive-named.ts +81 -13
- package/scripts/backlog/backlog-drive-offer-argv.ts +3 -8
- package/scripts/backlog/backlog-drive-paused.ts +170 -0
- package/scripts/backlog/backlog-drive-restore.ts +39 -8
- package/scripts/backlog/backlog-drive-seats.ts +18 -8
- package/scripts/backlog/backlog-drive-token-handling.ts +38 -0
- package/scripts/backlog/backlog-drive.ts +96 -131
- package/scripts/backlog/backlog-gate-scope.ts +61 -0
- package/scripts/backlog/backlog-measure-close.ts +112 -0
- package/scripts/backlog/backlog-next-main.ts +16 -0
- package/scripts/backlog/backlog-next-shared.ts +73 -0
- package/scripts/backlog/backlog-next.ts +78 -56
- package/scripts/backlog/backlog-occupied.ts +52 -39
- package/scripts/backlog/backlog-offer-cli.ts +6 -21
- package/scripts/backlog/backlog-offer-exclude.ts +15 -0
- package/scripts/backlog/backlog-offer-main.ts +12 -0
- package/scripts/backlog/backlog-offer.ts +36 -3
- package/scripts/backlog/backlog-overlap.ts +62 -10
- package/scripts/backlog/backlog-plan-cli.ts +4 -1
- package/scripts/backlog/backlog-plan-comment.ts +81 -0
- package/scripts/backlog/backlog-plan-read.ts +22 -5
- package/scripts/backlog/backlog-plan.ts +18 -4
- package/scripts/backlog/backlog-pool.ts +60 -22
- package/scripts/backlog/backlog-rank.ts +70 -15
- package/scripts/backlog/backlog-ready.ts +112 -30
- package/scripts/backlog/backlog-stalled-detect.ts +110 -36
- package/scripts/backlog/backlog-stalled.ts +52 -16
- package/scripts/backlog/backlog-wait-cause.ts +86 -0
- package/scripts/backlog/backlog-waves.ts +56 -15
- package/scripts/backlog/backlogrun-args.ts +19 -7
- package/scripts/backlog/backlogrun-cli.ts +19 -5
- package/scripts/backlog/backlogrun-launch.ts +13 -4
- package/scripts/backlog/backlogrun-restart.ts +97 -0
- package/scripts/backlog/backlogrun-stop.ts +79 -7
- package/scripts/behavior/behavior-cli.ts +2 -2
- package/scripts/behavior/behavior-rules.ts +47 -24
- package/scripts/build/build-bin.ts +2 -16
- package/scripts/build/build-claude-md.ts +0 -7
- package/scripts/build/build-commands.ts +0 -13
- package/scripts/build/build-hooks.ts +49 -48
- package/scripts/build/hook-bundle-stamp.ts +29 -11
- package/scripts/build/local-bin.ts +1 -1
- package/scripts/cases/cases-cli.ts +25 -13
- package/scripts/cases/cases-interaction-scan.ts +134 -0
- package/scripts/cases/cases-interaction.ts +183 -0
- package/scripts/cases/cases-logic.ts +39 -6
- package/scripts/ci/pr-classification-main.ts +18 -0
- package/scripts/ci/pr-classification.ts +10 -17
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/cost-runtime/context-cut-payback.ts +27 -25
- package/scripts/cost-runtime/cost-blocks.ts +22 -37
- package/scripts/cost-runtime/cost-cli.ts +67 -29
- package/scripts/cost-runtime/cost-main.ts +12 -0
- package/scripts/cost-runtime/cost-pricing.ts +9 -0
- package/scripts/cost-runtime/cost-transcript.ts +1 -0
- package/scripts/cost-runtime/cost-verdict.ts +4 -1
- package/scripts/delegation/delegation-policy.ts +18 -5
- package/scripts/delegation/duplicate-read-guard.ts +1 -8
- package/scripts/delegation/investigation-guard.ts +12 -8
- package/scripts/delegation/investigation-reads.ts +48 -27
- package/scripts/dependabot/dependabot-cooldown.ts +195 -0
- package/scripts/discovery/repo-discovery.ts +24 -6
- package/scripts/discovery/repo-party.ts +80 -20
- package/scripts/discovery/session-owner-pin.ts +51 -0
- package/scripts/doctor/doctor-consumer.ts +2 -5
- package/scripts/document/capped-print.ts +1 -1
- package/scripts/document/command-reference-line-budget.ts +42 -0
- package/scripts/document/document-byte-budget.ts +18 -6
- package/scripts/document/document-checks.ts +20 -0
- package/scripts/document/document-ratchet-check.ts +101 -0
- package/scripts/document/document-scan.ts +1 -1
- package/scripts/document/document-section-cli.ts +0 -8
- package/scripts/document/document-section-main.ts +12 -0
- package/scripts/document/document-section.ts +1 -0
- package/scripts/document/entry-read-budget.ts +7 -3
- package/scripts/document/issue-citation-budget.ts +94 -0
- package/scripts/epic/epic-audit-cli.ts +12 -6
- package/scripts/epic/epic-bundle-apply.ts +137 -0
- package/scripts/epic/epic-bundle-cli.ts +32 -121
- package/scripts/epic/epic-bundle-format.ts +116 -0
- package/scripts/epic/epic-bundle-main.ts +17 -0
- package/scripts/epic/epic-busy.ts +5 -12
- package/scripts/epic/epic-classify.ts +24 -15
- package/scripts/epic/epic-cli-argv.ts +33 -2
- package/scripts/epic/epic-cli-decide.ts +42 -0
- package/scripts/epic/epic-cli.ts +6 -38
- package/scripts/epic/epic-close.ts +112 -55
- package/scripts/epic/epic-cross-repo.ts +4 -7
- package/scripts/epic/epic-decide.ts +119 -0
- package/scripts/epic/epic-decision.ts +9 -0
- package/scripts/epic/epic-fetch.ts +6 -0
- package/scripts/epic/epic-graph.ts +8 -1
- package/scripts/epic/epic-issue.ts +8 -2
- package/scripts/epic/epic-label-age.ts +1 -1
- package/scripts/epic/epic-lane-offer.ts +39 -4
- package/scripts/epic/epic-next-main.ts +24 -0
- package/scripts/epic/epic-next.ts +6 -24
- package/scripts/epic/epic-outside-blocker.ts +6 -2
- package/scripts/epic/epic-parse.ts +9 -3
- package/scripts/epic/epic-rank.ts +5 -0
- package/scripts/epic/epic-read.ts +1 -0
- package/scripts/epic/epic-reconcile.ts +39 -0
- package/scripts/epic/epic-run.ts +10 -1
- package/scripts/epic/epic-solo.ts +50 -14
- package/scripts/epic/epic.ts +41 -7
- package/scripts/exports/unused-members-check.ts +62 -0
- package/scripts/exports/unused-members-cli.ts +6 -51
- package/scripts/followup/followup-checks-event.ts +8 -3
- package/scripts/followup/followup-ci-path.ts +67 -0
- package/scripts/followup/followup-coderabbit-retrigger.ts +261 -0
- package/scripts/followup/followup-coderabbit-wait.ts +85 -0
- package/scripts/followup/followup-failed-tests.ts +160 -0
- package/scripts/followup/followup-job-needs.ts +100 -0
- package/scripts/followup/followup-job-rerun.ts +303 -0
- package/scripts/followup/followup-main-move.ts +113 -0
- package/scripts/followup/followup-review-gates.ts +81 -0
- package/scripts/followup/git-followup-finish.ts +43 -11
- package/scripts/followup/git-followup-pending.ts +3 -3
- package/scripts/followup/git-followup-stages.ts +52 -12
- package/scripts/followup/git-followup-workflow.ts +19 -66
- package/scripts/followup/git-pr-followup-checks.ts +55 -16
- package/scripts/followup/git-pr-followup-wrapup.ts +32 -18
- package/scripts/followup/git-pr-followup.ts +96 -33
- package/scripts/fresh-machine/fresh-machine-cli.ts +1 -1
- package/scripts/fresh-machine/fresh-machine-run.ts +8 -8
- package/scripts/fresh-machine/fresh-machine-script.ts +5 -9
- package/scripts/fresh-machine/specs/kit-test-backlogrun-python.json +2 -2
- package/scripts/fresh-machine/specs/kit-test-backlogrun.json +3 -3
- package/scripts/gate/busy-average.ts +90 -0
- package/scripts/gate/check-cpu.ts +60 -0
- package/scripts/gate/check-inputs.ts +39 -95
- package/scripts/gate/check-related-pinned.ts +43 -0
- package/scripts/gate/check-related-reuse.ts +64 -0
- package/scripts/gate/check-related-section.ts +57 -0
- package/scripts/gate/check-related-unplanned.ts +34 -0
- package/scripts/gate/check-related.ts +265 -0
- package/scripts/gate/check-reuse.ts +33 -54
- package/scripts/gate/command-memory.ts +192 -0
- package/scripts/gate/core-admission.ts +236 -28
- package/scripts/gate/core-budget-timing.ts +51 -0
- package/scripts/gate/core-budget.ts +111 -100
- package/scripts/gate/core-wait-record.ts +49 -0
- package/scripts/gate/core-wait.ts +62 -7
- package/scripts/gate/core-weights.ts +94 -0
- package/scripts/gate/free-cores.ts +27 -4
- package/scripts/gate/gate-labels.ts +46 -0
- package/scripts/gate/gate-ledger.ts +44 -8
- package/scripts/gate/gate-plan.ts +130 -78
- package/scripts/gate/gate-report.ts +23 -9
- package/scripts/gate/gate-run-steps.ts +77 -9
- package/scripts/gate/gate-skip.ts +57 -8
- package/scripts/gate/gate-static-group.ts +60 -0
- package/scripts/gate/gate-steps.ts +14 -2
- package/scripts/gate/gate-tree.ts +4 -2
- package/scripts/gate/hook-gate-reuse.ts +19 -2
- package/scripts/gate/input-fingerprint.ts +42 -0
- package/scripts/gate/machine-capacity.ts +65 -31
- package/scripts/gate/metrics-totals.ts +59 -0
- package/scripts/gate/moved-paths.ts +67 -0
- package/scripts/gate/project-checks.ts +5 -12
- package/scripts/gate/scoped-green.ts +76 -19
- package/scripts/gate/since-green.ts +70 -0
- package/scripts/gate/structural-checks.ts +96 -0
- package/scripts/gate/toolchain-inputs.ts +115 -0
- package/scripts/gate/verification-gate.ts +70 -32
- package/scripts/gate/verification-inputs.ts +265 -0
- package/scripts/gate/verification-tail.ts +52 -0
- package/scripts/gh/gh-author-association.ts +117 -9
- package/scripts/gh/git-ai-review-scan.ts +5 -3
- package/scripts/gh/git-gh-api-path.ts +26 -2
- package/scripts/gh/git-gh-branch-rules.ts +73 -0
- package/scripts/gh/git-gh-comments-unreadable.ts +36 -0
- package/scripts/gh/git-gh-conditional.ts +5 -2
- package/scripts/gh/git-gh-exec.ts +32 -2
- package/scripts/gh/git-gh-issue-read.ts +7 -1
- package/scripts/gh/git-gh-issue-rest.ts +1 -0
- package/scripts/gh/git-gh-issue-write.ts +75 -31
- package/scripts/gh/git-gh-issue.ts +19 -8
- package/scripts/gh/git-gh-poll-read.ts +89 -0
- package/scripts/gh/git-gh-pr-auto-merge.ts +21 -9
- package/scripts/gh/git-gh-pr-graphql-state.ts +56 -0
- package/scripts/gh/git-gh-pr-read.ts +74 -13
- package/scripts/gh/git-gh-pr-rest.ts +4 -2
- package/scripts/gh/git-gh-pr-snapshot.ts +48 -20
- package/scripts/gh/git-gh-pr-too-large.ts +20 -0
- package/scripts/gh/git-gh-pr.ts +48 -22
- package/scripts/gh/git-gh-retry.ts +141 -0
- package/scripts/gh/git-pr-ai-review.ts +15 -6
- package/scripts/gh/git-pr-checks-eval.ts +42 -7
- package/scripts/gh/git-pr-checks-parse.ts +39 -9
- package/scripts/gh/git-pr-checks.ts +5 -5
- package/scripts/gh/git-pr-merge-checked.ts +80 -0
- package/scripts/git/base-tree.ts +49 -2
- package/scripts/git/change-base.ts +4 -10
- package/scripts/git/changed-file-scope.ts +6 -4
- package/scripts/git/changed-paths-sync.ts +63 -0
- package/scripts/git/changed-paths.ts +34 -2
- package/scripts/git/git-common-directory.ts +11 -1
- package/scripts/git/git-diff-reads.ts +91 -20
- package/scripts/git/git-error.ts +9 -2
- package/scripts/git/git-grep-hits.ts +85 -0
- package/scripts/git/git-location-environment.ts +1 -1
- package/scripts/git/git-merge-conflicts.ts +83 -0
- package/scripts/git/git-preflight.ts +37 -12
- package/scripts/git/git-push-transport.ts +1 -2
- package/scripts/git/git-schemas.ts +30 -7
- package/scripts/git/git-spawn.ts +1 -2
- package/scripts/git/git-status.ts +4 -4
- package/scripts/git/git-worktree.ts +13 -0
- package/scripts/git/gone-branch.ts +4 -1
- package/scripts/git/main-merge-budget-conflict.ts +89 -0
- package/scripts/git/main-merge-guard.ts +55 -18
- package/scripts/git/main-merge-main.ts +12 -0
- package/scripts/git/main-merge-regenerate.ts +59 -25
- package/scripts/git/main-merge.ts +77 -13
- package/scripts/git/main-sync-main.ts +12 -0
- package/scripts/git/main-sync.ts +0 -9
- package/scripts/git/no-base-checkout.ts +127 -0
- package/scripts/git/stash/git-stash.ts +38 -6
- package/scripts/git/stash/{stash-pop-args.ts → stash-args.ts} +13 -10
- package/scripts/git/stash/stash-pop-cli.ts +6 -12
- package/scripts/git/stash/stash-pop-main.ts +12 -0
- package/scripts/git/stash/stash-push-cli.ts +86 -0
- package/scripts/git/stash/stash-push-main.ts +12 -0
- package/scripts/hooks/batch-guard.ts +38 -27
- package/scripts/hooks/check-commit-message-main.ts +8 -0
- package/scripts/hooks/check-commit-message.ts +4 -7
- package/scripts/hooks/edited-cspell.ts +37 -11
- package/scripts/hooks/format-edited-file.ts +29 -25
- package/scripts/hooks/lane-plan-guard.ts +50 -0
- package/scripts/hooks/pre-commit-lint-switch.ts +9 -0
- package/scripts/hooks/pre-commit-lint.ts +44 -4
- package/scripts/hooks/pre-push-related-switch.ts +10 -0
- package/scripts/hooks/pre-push-unit.ts +77 -9
- package/scripts/hooks/pretool-guard-cli.ts +1 -8
- package/scripts/hooks/pretool-guard.ts +34 -19
- package/scripts/hooks/reserved-run.ts +81 -10
- package/scripts/hooks/run-hook.sh +30 -6
- package/scripts/hooks/shell-rules-notice.ts +37 -0
- package/scripts/hooks/step-zero-notice.ts +6 -1
- package/scripts/hooks/stop-actions.ts +5 -36
- package/scripts/hooks/stop-guard.ts +20 -15
- package/scripts/init/distributed-paths.ts +1 -0
- package/scripts/init/hook-command-rewrite.ts +23 -5
- package/scripts/init/hook-launch.ts +17 -17
- package/scripts/init/init-actions.ts +0 -6
- package/scripts/init/init-ai-copy.ts +10 -36
- package/scripts/init/init-bootstrap.ts +9 -8
- package/scripts/init/init-dry-run-report.ts +1 -1
- package/scripts/init/init-dry-run.ts +1 -1
- package/scripts/init/init-file-action.ts +7 -9
- package/scripts/init/init-logic-json-merge.ts +2 -2
- package/scripts/init/init-logic-migrate.ts +9 -82
- package/scripts/init/init-logic.ts +3 -2
- package/scripts/init/init-main.ts +12 -0
- package/scripts/init/init.ts +5 -12
- package/scripts/init/kit-development-versions.ts +3 -7
- package/scripts/init/kit-written-paths.ts +2 -2
- package/scripts/init/project-profile.ts +5 -4
- package/scripts/init/tsconfig-preset-migration.ts +2 -1
- package/scripts/init/vscode-tasks.ts +1 -1
- package/scripts/issue/aggregation-split.ts +52 -0
- package/scripts/issue/defect-origin-cli.ts +106 -0
- package/scripts/issue/defect-origin-line.ts +78 -0
- package/scripts/issue/defect-origin-main.ts +11 -0
- package/scripts/issue/defect-origin.ts +114 -0
- package/scripts/issue/defect-rate-cli.ts +38 -179
- package/scripts/issue/defect-rate.ts +0 -16
- package/scripts/issue/defect-report-cli.ts +128 -0
- package/scripts/issue/defect-report-format.ts +56 -0
- package/scripts/issue/defect-report-main.ts +11 -0
- package/scripts/issue/defect-report.ts +160 -0
- package/scripts/issue/effect-audit-cli.ts +178 -0
- package/scripts/issue/effect-audit.ts +185 -0
- package/scripts/issue/expected-effect-lint.ts +65 -9
- package/scripts/issue/git-next-issues.ts +5 -0
- package/scripts/issue/issue-already-done-cli.ts +62 -0
- package/scripts/issue/issue-body-or-comment.ts +74 -0
- package/scripts/issue/issue-cite-cli.ts +1 -12
- package/scripts/issue/issue-cite-main.ts +12 -0
- package/scripts/issue/issue-classification.ts +13 -7
- package/scripts/issue/issue-closing-pr.ts +8 -1
- package/scripts/issue/issue-comment-cli.ts +10 -24
- package/scripts/issue/issue-comment-main.ts +12 -0
- package/scripts/issue/issue-evidence-exit.ts +102 -0
- package/scripts/issue/issue-file-cap.ts +58 -0
- package/scripts/issue/issue-file-cli.ts +131 -36
- package/scripts/issue/issue-file-deferral.ts +52 -0
- package/scripts/issue/issue-file-fold.ts +29 -10
- package/scripts/issue/issue-file-interrupt.ts +85 -0
- package/scripts/issue/issue-file-lane-hint.ts +30 -0
- package/scripts/issue/issue-file.ts +56 -19
- package/scripts/issue/issue-fold-cli.ts +2 -11
- package/scripts/issue/issue-fold-main.ts +12 -0
- package/scripts/issue/issue-labels.ts +97 -89
- package/scripts/issue/issue-lint-cli.ts +29 -12
- package/scripts/issue/issue-lint-main.ts +12 -0
- package/scripts/issue/issue-measured-cli.ts +34 -0
- package/scripts/issue/issue-measured-close.ts +58 -0
- package/scripts/issue/issue-merged.ts +19 -2
- package/scripts/issue/issue-not-before-label.ts +135 -0
- package/scripts/issue/issue-not-before.ts +114 -0
- package/scripts/issue/issue-number-shape.ts +15 -1
- package/scripts/issue/issue-park.ts +28 -0
- package/scripts/issue/issue-plan-cli.ts +151 -0
- package/scripts/issue/issue-priority-cli.ts +60 -0
- package/scripts/issue/issue-priority-raise.ts +55 -0
- package/scripts/issue/issue-priority.ts +282 -0
- package/scripts/issue/issue-rank.ts +27 -4
- package/scripts/issue/issue-read-cli.ts +35 -16
- package/scripts/issue/issue-read-main.ts +12 -0
- package/scripts/issue/issue-read.ts +62 -13
- package/scripts/issue/issue-release-cli.ts +0 -10
- package/scripts/issue/issue-release-main.ts +13 -0
- package/scripts/issue/issue-release.ts +7 -12
- package/scripts/issue/issue-sample-gate.ts +213 -0
- package/scripts/issue/issue-sample-prime.ts +127 -0
- package/scripts/issue/issue-sample-required.ts +57 -0
- package/scripts/issue/issue-sample-source.ts +77 -0
- package/scripts/issue/issue-scout-cli.ts +0 -11
- package/scripts/issue/issue-scout-main.ts +14 -0
- package/scripts/issue/issue-search.ts +124 -0
- package/scripts/issue/issue-state-cli.ts +0 -10
- package/scripts/issue/issue-state-main.ts +12 -0
- package/scripts/issue/issue-state.ts +13 -1
- package/scripts/issue/issue-template-section.ts +43 -0
- package/scripts/issue/issue-watch-diff.ts +87 -16
- package/scripts/issue/issue-watch-hook.ts +11 -2
- package/scripts/issue/issue-watch.ts +55 -11
- package/scripts/issue/issue-wip.ts +2 -7
- package/scripts/issue/markdown-section.ts +1 -0
- package/scripts/issue/measure-declaration.ts +121 -0
- package/scripts/issue/measure-rerun-cli.ts +7 -65
- package/scripts/issue/plan-consumers-cli.ts +39 -0
- package/scripts/issue/plan-consumers-main.ts +11 -0
- package/scripts/issue/plan-consumers-section.ts +76 -0
- package/scripts/issue/plan-consumers.ts +127 -0
- package/scripts/issue/reproduction-measure.ts +3 -1
- package/scripts/issue/size-estimate.ts +90 -0
- package/scripts/issue/trusted-measure.ts +84 -0
- package/scripts/josh/agent-session-environment.ts +1 -1
- package/scripts/josh/command-usage.ts +17 -44
- package/scripts/josh/durable-state-migrate.ts +105 -0
- package/scripts/josh/durable-state.ts +112 -0
- package/scripts/josh/file-map-stamp.ts +49 -16
- package/scripts/josh/hook-decision.ts +32 -20
- package/scripts/josh/josh-aliases.ts +95 -0
- package/scripts/josh/josh-command-map.ts +1 -79
- package/scripts/josh/josh-command-types.ts +12 -6
- package/scripts/josh/josh-commands-agent-hooks.ts +83 -0
- package/scripts/josh/josh-commands-ai.ts +160 -161
- package/scripts/josh/josh-commands-backlog.ts +82 -16
- package/scripts/josh/josh-commands-clone.ts +1 -0
- package/scripts/josh/josh-commands-development.ts +142 -101
- package/scripts/josh/josh-commands-document.ts +43 -1
- package/scripts/josh/josh-commands-epic.ts +171 -0
- package/scripts/josh/josh-commands-hooks.ts +25 -2
- package/scripts/josh/josh-commands-issue-write.ts +200 -0
- package/scripts/josh/josh-commands-issue.ts +156 -24
- package/scripts/josh/josh-commands-lane.ts +187 -3
- package/scripts/josh/josh-commands-lint.ts +34 -10
- package/scripts/josh/josh-commands-maintenance.ts +127 -4
- package/scripts/josh/josh-commands-pause.ts +29 -0
- package/scripts/josh/josh-commands-progress.ts +87 -0
- package/scripts/josh/josh-commands-project.ts +138 -9
- package/scripts/josh/josh-commands-review.ts +159 -0
- package/scripts/josh/josh-commands-run.ts +211 -23
- package/scripts/josh/josh-commands-ship.ts +217 -0
- package/scripts/josh/josh-commands-split.ts +9 -0
- package/scripts/josh/josh-commands-test-check.ts +80 -0
- package/scripts/josh/josh-commands-versioning.ts +49 -2
- package/scripts/josh/josh-commands-workflow.ts +144 -6
- package/scripts/josh/josh-environment-file.ts +43 -3
- package/scripts/josh/josh-in-process.ts +2 -2
- package/scripts/josh/josh-logic.ts +11 -16
- package/scripts/josh/josh-run.ts +19 -1
- package/scripts/josh/package-directory.ts +2 -4
- package/scripts/josh/process-identity.ts +13 -4
- package/scripts/josh/run-record-path.ts +15 -0
- package/scripts/josh/session-language-cli.ts +4 -8
- package/scripts/josh/session-language-main.ts +13 -0
- package/scripts/josh/session-language.ts +6 -1
- package/scripts/josh/shared-cache.ts +90 -0
- package/scripts/josh/stamp-file.ts +20 -17
- package/scripts/lane/lane-adopt-cli.ts +98 -0
- package/scripts/lane/lane-adopt.ts +208 -0
- package/scripts/lane/lane-await.ts +56 -20
- package/scripts/lane/lane-baseline.ts +123 -0
- package/scripts/lane/lane-breakdown-cli.ts +64 -0
- package/scripts/lane/lane-breakdown-implement.ts +170 -0
- package/scripts/lane/lane-breakdown-laps.ts +107 -0
- package/scripts/lane/lane-breakdown-pinned.ts +76 -0
- package/scripts/lane/lane-breakdown-text.ts +145 -0
- package/scripts/lane/lane-breakdown.ts +239 -0
- package/scripts/lane/lane-cache.ts +5 -30
- package/scripts/lane/lane-capacity.ts +14 -23
- package/scripts/lane/lane-check-stats.ts +84 -22
- package/scripts/lane/lane-child-invocation.ts +17 -2
- package/scripts/lane/lane-child-mark-keys.ts +12 -0
- package/scripts/lane/lane-child-marker.ts +20 -1
- package/scripts/lane/lane-ci-path-stats.ts +73 -0
- package/scripts/lane/lane-claim-stats.ts +84 -0
- package/scripts/lane/lane-cli.ts +15 -5
- package/scripts/lane/lane-close.ts +91 -18
- package/scripts/lane/lane-core-wait-stats.ts +66 -0
- package/scripts/lane/lane-dispatch-log.ts +3 -3
- package/scripts/lane/lane-dispatch.ts +26 -5
- package/scripts/lane/lane-gap-stats.ts +157 -0
- package/scripts/lane/lane-guard-policy.ts +7 -1
- package/scripts/lane/lane-handoff.ts +69 -1
- package/scripts/lane/lane-held-stats.ts +129 -0
- package/scripts/lane/lane-implement-stats.ts +207 -0
- package/scripts/lane/lane-implement-subagents.ts +90 -0
- package/scripts/lane/lane-install.ts +4 -11
- package/scripts/lane/lane-investigation-switch.ts +16 -0
- package/scripts/lane/lane-launch-cli.ts +0 -9
- package/scripts/lane/lane-launch-main.ts +12 -0
- package/scripts/lane/lane-ledger-kind.ts +31 -0
- package/scripts/lane/lane-ledger-schema-ship.ts +49 -0
- package/scripts/lane/lane-ledger-schema.ts +349 -0
- package/scripts/lane/lane-ledger-write.ts +257 -0
- package/scripts/lane/lane-ledger.ts +56 -233
- package/scripts/lane/lane-limit-cli.ts +12 -1
- package/scripts/lane/lane-load.ts +1 -1
- package/scripts/lane/lane-measure-cli.ts +193 -30
- package/scripts/lane/lane-net-read.ts +44 -0
- package/scripts/lane/lane-net-time.ts +212 -0
- package/scripts/lane/lane-open.ts +25 -8
- package/scripts/lane/lane-output.ts +2 -4
- package/scripts/lane/lane-overrun-prompt.ts +147 -0
- package/scripts/lane/lane-overrun.ts +274 -0
- package/scripts/lane/lane-parked.ts +3 -3
- package/scripts/lane/lane-paths.ts +24 -1
- package/scripts/lane/lane-pause-cli.ts +133 -0
- package/scripts/lane/lane-pause.ts +158 -0
- package/scripts/lane/lane-paused-spans.ts +97 -0
- package/scripts/lane/lane-plan-check.ts +207 -0
- package/scripts/lane/lane-plan-cli.ts +41 -0
- package/scripts/lane/lane-plan.ts +144 -0
- package/scripts/lane/lane-process-table.ts +166 -0
- package/scripts/lane/lane-reap-settle.ts +124 -0
- package/scripts/lane/lane-reap.ts +50 -15
- package/scripts/lane/lane-registry.ts +38 -4
- package/scripts/lane/lane-relaunch.ts +1 -1
- package/scripts/lane/lane-residents.ts +162 -0
- package/scripts/lane/lane-restart.ts +22 -2
- package/scripts/lane/lane-round-one-stats.ts +51 -0
- package/scripts/lane/lane-round-two-stats.ts +49 -0
- package/scripts/lane/lane-sampler.ts +26 -3
- package/scripts/lane/lane-session-action.ts +112 -23
- package/scripts/lane/lane-session-broker.ts +146 -37
- package/scripts/lane/lane-session-reread-main.ts +14 -0
- package/scripts/lane/lane-session-reread.ts +51 -0
- package/scripts/lane/lane-ship-lap-stats.ts +74 -0
- package/scripts/lane/lane-sleep.ts +58 -0
- package/scripts/lane/lane-snapshot-trace.ts +84 -0
- package/scripts/lane/lane-spans.ts +51 -0
- package/scripts/lane/lane-spent.ts +7 -4
- package/scripts/lane/lane-split-stats.ts +28 -0
- package/scripts/lane/lane-stage-stats.ts +20 -3
- package/scripts/lane/lane-state.ts +334 -0
- package/scripts/lane/lane-stats-tables.ts +58 -0
- package/scripts/lane/lane-stats.ts +74 -4
- package/scripts/lane/lane-stop-stats.ts +145 -37
- package/scripts/lane/lane-tail-stats.ts +32 -0
- package/scripts/lane/lane-test-related-stats.ts +127 -0
- package/scripts/lane/lane-transcript-calls.ts +202 -0
- package/scripts/lane/lane-transcript-stats.ts +200 -0
- package/scripts/lane/lane-vacant.ts +13 -3
- package/scripts/lane/lane-value-cell.ts +72 -0
- package/scripts/lane/lane-value.ts +118 -0
- package/scripts/lane/lane-withdraw-cli.ts +5 -4
- package/scripts/lane/lane-withdraw-closed.ts +124 -0
- package/scripts/lane/lane-withdraw.ts +149 -71
- package/scripts/lane/lane-yield.ts +85 -0
- package/scripts/lane/openai-lane-ship.ts +12 -11
- package/scripts/lane/openai-lane-supervisor-decision.ts +6 -8
- package/scripts/lane/openai-lane-supervisor-owner.ts +5 -8
- package/scripts/lane/openai-lane-supervisor.ts +5 -4
- package/scripts/lane/process-directories.ts +70 -0
- package/scripts/lane/process-lane-marks.ts +94 -0
- package/scripts/lib/atomic-write.ts +62 -0
- package/scripts/lib/buffered-process.ts +12 -5
- package/scripts/lib/cli-flags.ts +53 -0
- package/scripts/lib/figure-format.ts +63 -0
- package/scripts/lib/json-value.ts +9 -1
- package/scripts/lib/package-manifest.ts +35 -0
- package/scripts/lib/poll.ts +38 -9
- package/scripts/lib/read-file.ts +3 -1
- package/scripts/lib/settled-together.ts +10 -0
- package/scripts/lib/shell-quote.ts +21 -0
- package/scripts/lib/stamped-memo.ts +63 -0
- package/scripts/lib/stdout-on-stderr.ts +24 -0
- package/scripts/lib/timeouts.ts +9 -0
- package/scripts/lib/token-shape.ts +111 -0
- package/scripts/lib/transcript-record.ts +91 -0
- package/scripts/lines/effective-limit.ts +1 -1
- package/scripts/lint/eslint-cache-dependencies.ts +145 -0
- package/scripts/lint/eslint-daemon-sources.ts +79 -0
- package/scripts/lint/eslint-daemon.ts +304 -0
- package/scripts/lint/eslint-warm-cli.ts +7 -0
- package/scripts/lint/eslint-warm.ts +66 -0
- package/scripts/lint/format.ts +11 -2
- package/scripts/lint/import-graph.ts +409 -0
- package/scripts/lint/lint-gate-scope.ts +102 -0
- package/scripts/lint/lint-parallel-main.ts +19 -0
- package/scripts/lint/lint-parallel.ts +113 -33
- package/scripts/lint/lint-related-scope.ts +30 -24
- package/scripts/lint/lint-related.ts +183 -30
- package/scripts/lint/rename-cli.ts +179 -0
- package/scripts/lint/rename-identifier.ts +192 -0
- package/scripts/lint/type-only-imports.ts +58 -0
- package/scripts/notify/confirmation-options.ts +1 -2
- package/scripts/notify/telegram-notify.ts +32 -23
- package/scripts/notify/telegram-test-logic.ts +0 -1
- package/scripts/notify/telegram-test-main.ts +8 -0
- package/scripts/notify/telegram-test.ts +2 -6
- package/scripts/observations/observation-ledger.ts +13 -0
- package/scripts/observations/observation-record.ts +42 -16
- package/scripts/observations/observations-flush-landing.ts +5 -3
- package/scripts/observations/observations-flush.ts +38 -10
- package/scripts/overrides/overrides-check.ts +11 -6
- package/scripts/overrides/overrides-files.ts +2 -1
- package/scripts/overrides/overrides-logic.ts +3 -6
- package/scripts/package/verify-optional-eslint-install.ts +8 -6
- package/scripts/propagate/propagate-publish.ts +2 -7
- package/scripts/propagate/propagate-targets.ts +4 -12
- package/scripts/refactor/import-graph.ts +9 -7
- package/scripts/release/github-release-runs.ts +17 -6
- package/scripts/release/release-approval-prune.ts +24 -0
- package/scripts/release/release-history.ts +1 -3
- package/scripts/release/release-progress.ts +42 -22
- package/scripts/release/release-publish-run.ts +39 -0
- package/scripts/release/release-publish.ts +6 -6
- package/scripts/release/release-scope-cli.ts +0 -10
- package/scripts/release/release-scope-main.ts +12 -0
- package/scripts/repo/repo-setting.ts +3 -6
- package/scripts/repo/required-checks-logic.ts +10 -16
- package/scripts/repo/ruleset-check.ts +4 -3
- package/scripts/report/markdown-shape.ts +28 -0
- package/scripts/report/report-format-reference.ts +17 -1
- package/scripts/report/report-labels.ts +166 -0
- package/scripts/report/report-lint-child-summary.ts +94 -0
- package/scripts/report/report-lint-cli.ts +29 -7
- package/scripts/report/report-lint.ts +85 -128
- package/scripts/report/report-template-cli.ts +59 -0
- package/scripts/report/report-template.ts +112 -0
- package/scripts/review/acceptance-map.ts +1 -0
- package/scripts/review/prose-stale-cli.ts +88 -0
- package/scripts/review/prose-stale-scan.ts +152 -0
- package/scripts/review/removed-tests-check.ts +86 -0
- package/scripts/review/removed-tests.ts +149 -0
- package/scripts/review/review-attest.ts +73 -23
- package/scripts/review/review-brief-cli.ts +138 -23
- package/scripts/review/review-brief-main.ts +12 -0
- package/scripts/review/review-brief-paths.ts +22 -0
- package/scripts/review/review-brief.ts +45 -10
- package/scripts/review/review-code-tree.ts +10 -6
- package/scripts/review/review-comment-carry.ts +47 -0
- package/scripts/review/review-comment-round.ts +111 -30
- package/scripts/review/review-finding-ledger.ts +135 -18
- package/scripts/review/review-finding-text.ts +43 -0
- package/scripts/review/review-interaction.ts +105 -0
- package/scripts/review/review-lane-handover.ts +68 -0
- package/scripts/review/review-lint-cli.ts +57 -0
- package/scripts/review/review-lint-findings.ts +92 -0
- package/scripts/review/review-lint-sections.ts +80 -0
- package/scripts/review/review-lint.ts +221 -0
- package/scripts/review/review-prior-findings.ts +102 -0
- package/scripts/review/review-readers-scan.ts +165 -0
- package/scripts/review/review-record-cli.ts +236 -74
- package/scripts/review/review-record-code-round.ts +55 -0
- package/scripts/review/review-record-comment.ts +60 -0
- package/scripts/review/review-record-interaction.ts +35 -0
- package/scripts/review/review-record-main.ts +12 -0
- package/scripts/review/review-record-pinned.ts +108 -0
- package/scripts/review/review-record.ts +25 -1
- package/scripts/review/review-reviewed-tree.ts +307 -0
- package/scripts/review/review-round-one-blobs.ts +221 -0
- package/scripts/review/review-round-one-closure.ts +62 -0
- package/scripts/review/review-round-reuse.ts +106 -0
- package/scripts/review/review-round2-cli.ts +135 -36
- package/scripts/review/review-round2-skip-comment.ts +55 -0
- package/scripts/review/review-round2.ts +103 -19
- package/scripts/review/review-stamps.ts +23 -1
- package/scripts/review/review-stop-log.ts +110 -0
- package/scripts/review/review-stops-cli.ts +86 -0
- package/scripts/review/review-submit-cli.ts +101 -0
- package/scripts/review/review-tree.ts +6 -17
- package/scripts/review/review-untouched-readers.ts +146 -0
- package/scripts/review/test-titles.ts +118 -0
- package/scripts/rules/agent-model.ts +9 -1
- package/scripts/rules/bash-triggers.ts +49 -6
- package/scripts/rules/concise-reply.ts +88 -0
- package/scripts/rules/credential-body.ts +77 -0
- package/scripts/rules/decision-oracle-batch.ts +9 -1
- package/scripts/rules/decision-oracle.ts +3 -3
- package/scripts/rules/delivered-rules.ts +115 -18
- package/scripts/rules/destructive-command.ts +11 -12
- package/scripts/rules/direct-filing.ts +10 -2
- package/scripts/rules/direct-issue-comment.ts +139 -0
- package/scripts/rules/direct-issue-read.ts +191 -0
- package/scripts/rules/direct-pr-create.ts +72 -26
- package/scripts/rules/early-heartbeat.ts +4 -1
- package/scripts/rules/edit-tool.ts +27 -0
- package/scripts/rules/file-body.ts +7 -0
- package/scripts/rules/file-edit-rows.ts +17 -0
- package/scripts/rules/file-rewrite.ts +146 -0
- package/scripts/rules/firing-point.ts +3 -2
- package/scripts/rules/gh-api.ts +128 -7
- package/scripts/rules/gh-repo-selector.ts +84 -0
- package/scripts/rules/git-argv.ts +72 -14
- package/scripts/rules/git-force.ts +14 -4
- package/scripts/rules/guard-remedy.ts +17 -4
- package/scripts/rules/implementation-cut-verdict.ts +1 -1
- package/scripts/rules/implementation-cut.ts +68 -27
- package/scripts/rules/index-guard.ts +8 -1
- package/scripts/rules/investigator-foreground.ts +231 -0
- package/scripts/rules/issue-citation.ts +15 -60
- package/scripts/rules/issue-comments.ts +18 -5
- package/scripts/rules/josh-git-bare.ts +7 -0
- package/scripts/rules/lane-background.ts +103 -33
- package/scripts/rules/lane-carry-conflict.ts +6 -0
- package/scripts/rules/lane-direct-tool.ts +172 -0
- package/scripts/rules/lane-interactive-ask.ts +12 -2
- package/scripts/rules/lane-park.ts +49 -25
- package/scripts/rules/lane-spilled-read.ts +90 -0
- package/scripts/rules/lane-split-park.ts +11 -3
- package/scripts/rules/lane-switch-main.ts +11 -4
- package/scripts/rules/last-prompt.ts +20 -47
- package/scripts/rules/oracle-consulted.ts +11 -1
- package/scripts/rules/oracle-firing.ts +1 -0
- package/scripts/rules/permission-guards.ts +7 -0
- package/scripts/rules/piped-verification-shapes.ts +110 -0
- package/scripts/rules/piped-verification.ts +68 -18
- package/scripts/rules/poll-loop.ts +78 -8
- package/scripts/rules/pr-merge.ts +123 -0
- package/scripts/rules/pre-gate-cut.ts +3 -3
- package/scripts/rules/protected-files.ts +113 -22
- package/scripts/rules/raw-field-body.ts +6 -0
- package/scripts/rules/reply-language.ts +3 -17
- package/scripts/rules/reply-prose.ts +34 -0
- package/scripts/rules/repo-admin.ts +132 -0
- package/scripts/rules/reviewer-foreground.ts +88 -0
- package/scripts/rules/round-one-check-related.ts +120 -0
- package/scripts/rules/rule-body-guard.ts +13 -15
- package/scripts/rules/rule-list.ts +9 -28
- package/scripts/rules/rule-value-cache.ts +57 -14
- package/scripts/rules/rule-value-candidates.ts +84 -0
- package/scripts/rules/rule-value-cli.ts +106 -39
- package/scripts/rules/rule-value.ts +18 -5
- package/scripts/rules/run-tail-rule.ts +1 -1
- package/scripts/rules/sed-in-place.ts +196 -0
- package/scripts/rules/shell-segments.ts +43 -0
- package/scripts/rules/stop-rule-rows.ts +52 -0
- package/scripts/rules/stop-rules.ts +36 -62
- package/scripts/rules/test-declared-commit.ts +11 -1
- package/scripts/rules/third-party-write.ts +115 -21
- package/scripts/rules/timed-rerun.ts +69 -0
- package/scripts/rules/turn-filings.ts +90 -0
- package/scripts/rules/worktree-guard.ts +32 -7
- package/scripts/run/board/run-board-app-name.ts +23 -0
- package/scripts/run/board/run-board-cli.ts +65 -32
- package/scripts/run/board/run-board-earlier.ts +94 -0
- package/scripts/run/board/run-board-ending-reason.ts +71 -0
- package/scripts/run/board/run-board-estimate-schedule.ts +103 -0
- package/scripts/run/board/run-board-estimate.ts +98 -0
- package/scripts/run/board/run-board-fit.ts +177 -37
- package/scripts/run/board/run-board-fold.ts +123 -0
- package/scripts/run/board/run-board-found.ts +134 -0
- package/scripts/run/board/run-board-fresh.ts +2 -2
- package/scripts/run/board/run-board-gather-live.ts +29 -0
- package/scripts/run/board/run-board-gather-thread.ts +189 -0
- package/scripts/run/board/run-board-gather-worker.ts +29 -0
- package/scripts/run/board/run-board-gather.ts +187 -0
- package/scripts/run/board/run-board-github.ts +118 -38
- package/scripts/run/board/run-board-header.ts +90 -20
- package/scripts/run/board/run-board-keys.ts +58 -0
- package/scripts/run/board/run-board-kind.ts +20 -6
- package/scripts/run/board/run-board-labels.ts +126 -71
- package/scripts/run/board/run-board-lane-state.ts +109 -0
- package/scripts/run/board/run-board-lane-time.ts +123 -0
- package/scripts/run/board/run-board-layout.ts +239 -60
- package/scripts/run/board/run-board-length.ts +52 -0
- package/scripts/run/board/run-board-link.ts +15 -2
- package/scripts/run/board/run-board-machine.ts +8 -4
- package/scripts/run/board/run-board-main.ts +12 -0
- package/scripts/run/board/run-board-notes.ts +59 -32
- package/scripts/run/board/run-board-now.ts +1 -1
- package/scripts/run/board/run-board-operation.ts +19 -35
- package/scripts/run/board/run-board-phase.ts +3 -6
- package/scripts/run/board/run-board-plan-shared.ts +115 -0
- package/scripts/run/board/run-board-plan.ts +56 -4
- package/scripts/run/board/run-board-planning.ts +45 -0
- package/scripts/run/board/run-board-priority.ts +44 -0
- package/scripts/run/board/run-board-process-groups.ts +195 -0
- package/scripts/run/board/run-board-read.ts +197 -28
- package/scripts/run/board/run-board-reason.ts +247 -51
- package/scripts/run/board/run-board-released.ts +35 -0
- package/scripts/run/board/run-board-render-checks.ts +42 -7
- package/scripts/run/board/run-board-render-condition.ts +96 -0
- package/scripts/run/board/run-board-render-drawn.ts +78 -0
- package/scripts/run/board/run-board-render-foot.ts +59 -0
- package/scripts/run/board/run-board-render-found.ts +157 -0
- package/scripts/run/board/run-board-render-icon.ts +35 -0
- package/scripts/run/board/run-board-render-lanes.ts +145 -0
- package/scripts/run/board/run-board-render-lead.ts +89 -0
- package/scripts/run/board/run-board-render-legend.ts +136 -48
- package/scripts/run/board/run-board-render-notes.ts +156 -29
- package/scripts/run/board/run-board-render-processes.ts +196 -0
- package/scripts/run/board/run-board-render-section.ts +119 -0
- package/scripts/run/board/run-board-render-slot.ts +3 -36
- package/scripts/run/board/run-board-render-tail.ts +115 -48
- package/scripts/run/board/run-board-render-time.ts +56 -0
- package/scripts/run/board/run-board-render-title.ts +117 -24
- package/scripts/run/board/run-board-render-waits.ts +104 -20
- package/scripts/run/board/run-board-render.ts +264 -258
- package/scripts/run/board/run-board-roots.ts +54 -0
- package/scripts/run/board/run-board-row-yield.ts +9 -4
- package/scripts/run/board/run-board-setup.ts +1 -12
- package/scripts/run/board/run-board-snapshot.ts +111 -0
- package/scripts/run/board/run-board-spin.ts +3 -5
- package/scripts/run/board/run-board-state.ts +22 -33
- package/scripts/run/board/run-board-status.ts +149 -71
- package/scripts/run/board/run-board-thanks-read.ts +2 -2
- package/scripts/run/board/run-board-tick.ts +158 -114
- package/scripts/run/board/run-board-usage-board.ts +78 -0
- package/scripts/run/board/run-board-usage-lanes.ts +113 -0
- package/scripts/run/board/run-board-usage-listing.ts +93 -0
- package/scripts/run/board/run-board-usage-read.ts +120 -150
- package/scripts/run/board/run-board-usage-rusage.ts +19 -7
- package/scripts/run/board/run-board-usage-text.ts +139 -51
- package/scripts/run/board/run-board-usage-top.ts +102 -0
- package/scripts/run/board/run-board-usage.ts +89 -72
- package/scripts/run/board/run-board-usual.ts +20 -9
- package/scripts/run/carry/run-carry-args.ts +4 -7
- package/scripts/run/carry/run-carry-conversation.ts +1 -1
- package/scripts/run/carry/run-carry-ended.ts +3 -2
- package/scripts/run/carry/run-carry.ts +12 -6
- package/scripts/run/cut/run-cut-cli.ts +33 -133
- package/scripts/run/cut/run-cut-digest.ts +152 -0
- package/scripts/run/cut/run-cut-handoff.ts +54 -10
- package/scripts/run/cut/run-cut-report.ts +24 -3
- package/scripts/run/cut/run-cut-resume.ts +129 -0
- package/scripts/run/cut/run-cut-review.ts +105 -0
- package/scripts/run/cut/run-cut.ts +18 -7
- package/scripts/run/detached-launch.ts +1 -1
- package/scripts/run/entry/run-entry-cli.ts +88 -19
- package/scripts/run/entry/run-entry-spill.ts +83 -0
- package/scripts/run/entry/run-entry-stop.ts +5 -1
- package/scripts/run/entry/run-entry-trust.ts +91 -0
- package/scripts/run/event/run-event-baseline.ts +56 -0
- package/scripts/run/event/run-event-cli.ts +1 -5
- package/scripts/run/event/run-event-filed.ts +18 -6
- package/scripts/run/event/run-event-follow.ts +2 -3
- package/scripts/run/event/run-event-overrun.ts +197 -0
- package/scripts/run/event/run-event-render.ts +10 -10
- package/scripts/run/event/run-event-scope.ts +2 -2
- package/scripts/run/event/run-event-stream-emit.ts +82 -22
- package/scripts/run/event/run-event-stream.ts +58 -10
- package/scripts/run/hold/run-hold-adopt.ts +65 -0
- package/scripts/run/hold/run-hold-cli.ts +93 -22
- package/scripts/run/hold/run-hold-main.ts +12 -0
- package/scripts/run/hold/run-hold-member.ts +37 -0
- package/scripts/run/hold/run-stop-notify.ts +178 -0
- package/scripts/run/merge/run-merge-auth.ts +31 -0
- package/scripts/run/merge/run-merge-cap.ts +57 -0
- package/scripts/run/merge/run-merge-cli.ts +119 -62
- package/scripts/run/merge/run-merge-close.ts +74 -0
- package/scripts/run/merge/run-merge-collect.ts +6 -13
- package/scripts/run/merge/run-merge-driver.ts +71 -0
- package/scripts/run/merge/run-merge-main.ts +12 -0
- package/scripts/run/merge/run-merge-outcome.ts +25 -0
- package/scripts/run/merge/run-merge-restart.ts +39 -0
- package/scripts/run/merge/run-merge-ship.ts +33 -7
- package/scripts/run/merge/run-merge-signals.ts +66 -25
- package/scripts/run/merge/run-merge-steps.ts +162 -107
- package/scripts/run/merge/run-merge-usage-limit.ts +53 -0
- package/scripts/run/merge/run-merge-withdrawn.ts +53 -0
- package/scripts/run/merge/run-merge.ts +76 -48
- package/scripts/run/park/run-park-cli.ts +91 -0
- package/scripts/run/park/run-park.ts +88 -0
- package/scripts/run/park/run-stalled.ts +68 -0
- package/scripts/run/pause/run-pause-cli.ts +73 -0
- package/scripts/run/pause/run-pause.ts +251 -0
- package/scripts/run/progress/run-progress-cli.ts +4 -12
- package/scripts/run/progress/run-progress-clock.ts +1 -1
- package/scripts/run/progress/run-progress-config.ts +6 -14
- package/scripts/run/progress/run-progress-main.ts +12 -0
- package/scripts/run/progress/run-progress.ts +1 -4
- package/scripts/run/review/run-review-cli.ts +306 -20
- package/scripts/run/review/run-review-early-push.ts +121 -0
- package/scripts/run/review/run-review-join-read.ts +94 -0
- package/scripts/run/review/run-review-pinned-accepted.ts +126 -0
- package/scripts/run/review/run-review-pinned-join.ts +216 -0
- package/scripts/run/review/run-review-pinned-steps.ts +383 -0
- package/scripts/run/review/run-review-pinned-tree.ts +37 -0
- package/scripts/run/review/run-review-pinned.ts +53 -0
- package/scripts/run/review/run-review-steps.ts +70 -34
- package/scripts/run/review/run-review.ts +28 -7
- package/scripts/run/run-ending.ts +1 -0
- package/scripts/run/run-invocation.ts +5 -6
- package/scripts/run/run-liveness-cli.ts +6 -8
- package/scripts/run/run-liveness.ts +60 -29
- package/scripts/run/run-next.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +3 -4
- package/scripts/run/run-preflight.ts +18 -3
- package/scripts/run/run-prep-cli.ts +1 -10
- package/scripts/run/run-prep-locate.ts +7 -50
- package/scripts/run/run-prep-main.ts +12 -0
- package/scripts/run/run-prep.ts +7 -0
- package/scripts/run/run-report-cli.ts +101 -13
- package/scripts/run/run-report-handoff.ts +114 -0
- package/scripts/run/run-stage-read.ts +2 -6
- package/scripts/run/run-step-cli.ts +17 -5
- package/scripts/run/run-step-lane-plan.ts +27 -0
- package/scripts/run/run-step-section.ts +26 -7
- package/scripts/run/run-step.ts +6 -3
- package/scripts/run/run-stranded-detect.ts +13 -0
- package/scripts/run/run-watcher-guard-cli.ts +1 -1
- package/scripts/run/run-watcher-guard.ts +1 -1
- package/scripts/run/ship/run-ship-args.ts +140 -0
- package/scripts/run/ship/run-ship-body-draft.ts +110 -0
- package/scripts/run/ship/run-ship-brokered-review.ts +106 -0
- package/scripts/run/ship/run-ship-cli.ts +181 -166
- package/scripts/run/ship/run-ship-conflict-probe.ts +59 -0
- package/scripts/run/ship/run-ship-detach.ts +29 -12
- package/scripts/run/ship/run-ship-handover.ts +106 -0
- package/scripts/run/ship/run-ship-infra-retry.ts +74 -0
- package/scripts/run/ship/run-ship-lap.ts +63 -0
- package/scripts/run/ship/run-ship-next.ts +44 -27
- package/scripts/run/ship/run-ship-overlap.ts +49 -7
- package/scripts/run/ship/run-ship-place.ts +103 -0
- package/scripts/run/ship/run-ship-planned.ts +92 -0
- package/scripts/run/ship/run-ship-pre-detach-pinned.ts +197 -0
- package/scripts/run/ship/run-ship-pre-detach-timed.ts +42 -0
- package/scripts/run/ship/run-ship-pre-detach.ts +144 -33
- package/scripts/run/ship/run-ship-preflight.ts +150 -33
- package/scripts/run/ship/run-ship-probe.ts +28 -6
- package/scripts/run/ship/run-ship-relaunch-cap.ts +106 -0
- package/scripts/run/ship/run-ship-relaunch.ts +51 -0
- package/scripts/run/ship/run-ship-removed-rows.ts +61 -0
- package/scripts/run/ship/run-ship-return.ts +183 -25
- package/scripts/run/ship/run-ship-review-reason.ts +24 -0
- package/scripts/run/ship/run-ship-review-steps.ts +296 -171
- package/scripts/run/ship/run-ship-review.ts +222 -35
- package/scripts/run/ship/run-ship-reviewer.ts +303 -0
- package/scripts/run/ship/run-ship-scoped.ts +39 -10
- package/scripts/run/ship/run-ship-stage.ts +101 -16
- package/scripts/run/ship/run-ship-steps.ts +68 -17
- package/scripts/run/ship/run-ship-stop-cause.ts +176 -0
- package/scripts/run/ship/run-ship-stop-context.ts +50 -13
- package/scripts/run/ship/run-ship-stop-text.ts +11 -6
- package/scripts/run/ship/run-ship-sync.ts +212 -34
- package/scripts/run/ship/run-ship-synced-scope.ts +178 -0
- package/scripts/run/ship/run-ship-wait-cli.ts +145 -0
- package/scripts/run/ship/run-ship-waiter.ts +114 -0
- package/scripts/run/ship/run-ship.ts +44 -2
- package/scripts/run/tidy/run-tidy-cli.ts +0 -4
- package/scripts/run/tidy/run-tidy-lanes.ts +3 -0
- package/scripts/run/tidy/run-tidy-main.ts +8 -0
- package/scripts/run/wake/run-wake-caffeinate.ts +48 -0
- package/scripts/run/wake/run-wake-cli.ts +121 -209
- package/scripts/run/wake/run-wake-code.ts +125 -0
- package/scripts/run/wake/run-wake-driver.ts +22 -9
- package/scripts/run/wake/run-wake-finish.ts +137 -0
- package/scripts/run/wake/run-wake-loop.ts +36 -3
- package/scripts/run/wake/run-wake-main.ts +13 -0
- package/scripts/run/wake/run-wake-ports.ts +98 -0
- package/scripts/run/wake/run-wake-session.ts +2 -0
- package/scripts/run/wake/run-wake-takeover.ts +66 -0
- package/scripts/run/wake/run-wake.ts +5 -3
- package/scripts/safe-chain/ci-installer-pin.ts +49 -8
- package/scripts/safe-chain/pack-hook.ts +2 -2
- package/scripts/safe-chain/preinstall-command.ts +2 -1
- package/scripts/safe-chain/project-config.ts +6 -11
- package/scripts/security/secretlint-scan.ts +42 -9
- package/scripts/security/security-audit-main.ts +8 -0
- package/scripts/security/security-audit-provision-logic.ts +0 -11
- package/scripts/security/security-audit-provision-main.ts +20 -0
- package/scripts/security/security-audit-provision.ts +12 -27
- package/scripts/security/security-audit.ts +27 -8
- package/scripts/security/sonar-file.ts +10 -5
- package/scripts/self-sync-guard/self-sync-guard-logic.ts +6 -13
- package/scripts/split/split-assess-cli.ts +2 -2
- package/scripts/split/split-assess.ts +25 -1
- package/scripts/split/split-early-notice.ts +116 -0
- package/scripts/split/split-measure.ts +83 -0
- package/scripts/split/split-resolution.ts +107 -0
- package/scripts/sync/claude-settings-merge.ts +8 -15
- package/scripts/sync/directory-copy-guard.ts +4 -9
- package/scripts/sync/file-content.ts +78 -8
- package/scripts/sync/sync-ai-files.ts +3 -5
- package/scripts/sync/sync-configs.ts +11 -23
- package/scripts/sync/sync-hook-safety.ts +4 -10
- package/scripts/sync/sync-main.ts +11 -0
- package/scripts/sync/sync.ts +25 -37
- package/scripts/test/direct-importers.ts +185 -0
- package/scripts/test/pure-files-entries.ts +83 -0
- package/scripts/test/related-heavy-tests.ts +81 -0
- package/scripts/test/test-declared-changed.ts +2 -2
- package/scripts/test/test-declared.ts +1 -1
- package/scripts/test/test-e2e-guard.ts +25 -1
- package/scripts/test/test-e2e-stamp.ts +38 -0
- package/scripts/test/test-no-base.ts +88 -0
- package/scripts/test/test-pinned-cache-logic.ts +363 -0
- package/scripts/test/test-pinned-cache.ts +337 -0
- package/scripts/test/test-pinned-emit.ts +49 -0
- package/scripts/test/test-pinned-functions.ts +116 -0
- package/scripts/test/test-pinned-ledger.ts +80 -0
- package/scripts/test/test-pinned-logic.ts +333 -0
- package/scripts/test/test-pinned-main.ts +144 -0
- package/scripts/test/test-pinned-pool.ts +73 -0
- package/scripts/test/test-pinned-probe.ts +254 -0
- package/scripts/test/test-pinned-prune-logic.ts +118 -0
- package/scripts/test/test-pinned-reach.ts +194 -0
- package/scripts/test/test-pinned-record.ts +196 -0
- package/scripts/test/test-pinned-rewire.ts +148 -0
- package/scripts/test/test-pinned-spawn.ts +81 -0
- package/scripts/test/test-pinned-stage.ts +70 -0
- package/scripts/test/test-pinned.ts +311 -0
- package/scripts/test/test-reach-cli.ts +61 -0
- package/scripts/test/test-read-map.ts +288 -0
- package/scripts/test/test-read-recording.ts +103 -0
- package/scripts/test/test-read-trace.ts +166 -0
- package/scripts/test/test-red-logic.ts +46 -7
- package/scripts/test/test-red-main.ts +12 -0
- package/scripts/test/test-red.ts +39 -37
- package/scripts/test/test-related-claim.ts +37 -0
- package/scripts/test/test-related-main.ts +21 -0
- package/scripts/test/test-related-moved.ts +91 -0
- package/scripts/test/test-related-record.ts +139 -0
- package/scripts/test/test-related-scope.ts +292 -41
- package/scripts/test/test-related-synced.ts +135 -0
- package/scripts/test/test-related-touched.ts +84 -0
- package/scripts/test/test-related.ts +381 -19
- package/scripts/test/test-unit-guard-main.ts +15 -0
- package/scripts/test/test-unit-guard.ts +66 -25
- package/scripts/test/unit-count-file.ts +37 -0
- package/scripts/test/unit-durations.ts +41 -0
- package/scripts/test/unit-run-marker.ts +162 -0
- package/scripts/test/unit-setup-files.ts +51 -0
- package/scripts/test/unit-worker-share.ts +64 -151
- package/scripts/test/vitest-cache-directory.ts +19 -0
- package/scripts/test/vitest-cli-excludes.ts +14 -0
- package/scripts/test/vitest-failure-summary.ts +111 -0
- package/scripts/test/whole-suite-files.ts +74 -0
- package/scripts/time-runtime/time-background.ts +20 -2
- package/scripts/time-runtime/time-batch-guard.ts +42 -4
- package/scripts/time-runtime/time-bundle-call.ts +1 -1
- package/scripts/time-runtime/time-bundles.ts +40 -8
- package/scripts/time-runtime/time-density-hook.ts +8 -6
- package/scripts/time-runtime/time-followup-stage.ts +1 -3
- package/scripts/time-runtime/time-format.ts +5 -28
- package/scripts/time-runtime/time-markers.ts +12 -3
- package/scripts/time-runtime/time-search-call.ts +38 -0
- package/scripts/time-runtime/time-shell.ts +98 -11
- package/scripts/time-runtime/time-transcript-line.ts +65 -66
- package/scripts/uninstall/uninstall.ts +1 -1
- package/scripts/version/bump-version-main.ts +12 -0
- package/scripts/version/bump-version.ts +25 -25
- package/scripts/version/development-engines-verdict.ts +124 -0
- package/scripts/version/effective-upstream.ts +6 -12
- package/scripts/version/latest-corepack.ts +19 -32
- package/scripts/version/latest-if-required-cli.ts +93 -0
- package/scripts/version/latest-lane-guard-main.ts +8 -0
- package/scripts/version/latest-lane-guard.ts +0 -4
- package/scripts/version/latest-scope-cli.ts +0 -9
- package/scripts/version/latest-scope-main.ts +12 -0
- package/scripts/version/latest-update.ts +5 -5
- package/scripts/version/npm-registry.ts +44 -6
- package/scripts/version/publishable-range-check.ts +5 -16
- package/scripts/version/release-age.ts +1 -1
- package/scripts/version/release-hold.ts +1 -1
- package/scripts/version/release-window.ts +38 -0
- package/scripts/version/running-binary.ts +1 -1
- package/scripts/version/safe-chain-version-update.ts +3 -8
- package/scripts/version/version-targets.ts +6 -28
- package/templates/dependabot.yml +29 -0
- package/templates/gitignore +6 -1
- package/templates/pnpm-workspace.basic.yaml +1 -1
- package/templates/sonar-project.properties +3 -2
- package/templates/workflows/ci.yml +53 -4
- package/templates/workflows/github-release.yml +4 -0
- package/tsconfig.sonar.json +1 -1
- package/.ncurc.json +0 -3
- package/dist/hooks/batch-guard.js +0 -29
- package/dist/hooks/chunk-4KKD2UTK.js +0 -66
- package/dist/hooks/chunk-6TS2JD6D.js +0 -237
- package/dist/hooks/chunk-7DSBJVFH.js +0 -50
- package/dist/hooks/chunk-A65Y4YOR.js +0 -79
- package/dist/hooks/chunk-APUO6U4J.js +0 -2451
- package/dist/hooks/chunk-CDY4NFQG.js +0 -15
- package/dist/hooks/chunk-DGT54IH5.js +0 -161
- package/dist/hooks/chunk-EFXE6C37.js +0 -81
- package/dist/hooks/chunk-GP4IEC4O.js +0 -20
- package/dist/hooks/chunk-JP45SOCJ.js +0 -56
- package/dist/hooks/chunk-LAOV7NLM.js +0 -45
- package/dist/hooks/chunk-M4HGZV7U.js +0 -83
- package/dist/hooks/chunk-O6GDRNJB.js +0 -343
- package/dist/hooks/chunk-PF2NZL2A.js +0 -131
- package/dist/hooks/chunk-PTICX4OL.js +0 -358
- package/dist/hooks/chunk-RT27QRJW.js +0 -6247
- package/dist/hooks/chunk-SYOTDYCI.js +0 -3533
- package/dist/hooks/chunk-TNUMY6NL.js +0 -4838
- package/dist/hooks/chunk-UPUZF3AN.js +0 -279
- package/dist/hooks/chunk-WK6SMBIC.js +0 -3180
- package/dist/hooks/duplicate-read-guard.js +0 -30
- package/dist/hooks/investigation-guard.js +0 -29
- package/scripts/backlog/backlog-stalled-cli.ts +0 -30
- package/scripts/cost-runtime/context-cut-threshold.ts +0 -11
- package/scripts/cost-runtime/cost-format.ts +0 -29
- package/scripts/init/basic-path-migration.ts +0 -24
- package/scripts/issue/issue-backlinks-cli.ts +0 -93
- package/scripts/josh/josh-commands-guard.ts +0 -38
- package/scripts/josh/josh-usage-automation.ts +0 -121
- package/scripts/josh/josh-usage-backlog.ts +0 -180
- package/scripts/josh/josh-usage-developer.ts +0 -230
- package/scripts/josh/josh-usage-hooks.ts +0 -38
- package/scripts/josh/josh-usage-issue.ts +0 -205
- package/scripts/josh/josh-usage-review.ts +0 -101
- package/scripts/josh/josh-usage-run.ts +0 -252
- package/scripts/josh/josh-usage-session.ts +0 -238
- package/scripts/josh/josh-usage-workflow.ts +0 -212
- package/scripts/lint/cross-file-recheck.ts +0 -155
- package/scripts/registry-migration/migrate-logic.ts +0 -237
- package/scripts/registry-migration/migrate.ts +0 -292
- package/scripts/registry-migration/user-npmrc.ts +0 -15
- package/scripts/rules/filing-cap.ts +0 -132
- package/scripts/rules/rule-guard.ts +0 -23
- package/scripts/rules/rule-registry-rows.ts +0 -292
- package/scripts/rules/rule-registry.ts +0 -112
- package/scripts/run/run-stranded-cli.ts +0 -27
|
@@ -3,16 +3,33 @@ import type { CommandEntry } from './josh-command-types'
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
4
4
|
const VERSIONING_COMMANDS: Record<string, CommandEntry> = {
|
|
5
5
|
bump: {
|
|
6
|
-
script: 'scripts/version/bump-version.ts',
|
|
6
|
+
script: 'scripts/version/bump-version-main.ts',
|
|
7
7
|
description: 'Bump package version',
|
|
8
8
|
category: 'Versioning',
|
|
9
9
|
reference: ['[major|minor|patch]', 'maintainer', ['files']],
|
|
10
|
+
usage: { examples: [{ arguments: 'major' }, { arguments: 'minor' }, { arguments: 'patch' }] },
|
|
10
11
|
},
|
|
11
12
|
version: {
|
|
12
13
|
script: 'scripts/version/version-check.ts',
|
|
13
14
|
description: 'Show kit versions; --upgrade updates the global and project install',
|
|
14
15
|
category: 'Versioning',
|
|
15
16
|
reference: ['[--upgrade]', 'developer', ['files', 'network', 'processes']],
|
|
17
|
+
usage: {
|
|
18
|
+
examples: [
|
|
19
|
+
{ arguments: '' },
|
|
20
|
+
{
|
|
21
|
+
arguments: '--upgrade',
|
|
22
|
+
note: 'upgrade global + project to latest, then re-run fix-gh-packages',
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
flags: [
|
|
26
|
+
{
|
|
27
|
+
names: ['--upgrade'],
|
|
28
|
+
description:
|
|
29
|
+
'upgrade both the global install (`pnpm add -g`) and the project devDependency (`pnpm add -D` + `fix-gh-packages`); already-current or not-installed targets are skipped.',
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
},
|
|
16
33
|
},
|
|
17
34
|
// A `script` entry, not a shell one: script paths resolve against the kit package root, so this
|
|
18
35
|
// keeps working from a consumer repo where the file lives under node_modules. The registry
|
|
@@ -24,6 +41,7 @@ const VERSIONING_COMMANDS: Record<string, CommandEntry> = {
|
|
|
24
41
|
'Check that every published dependency range still resolves for a consumer and no peer range falls below an installed toolkit',
|
|
25
42
|
category: 'Versioning',
|
|
26
43
|
reference: ['', 'developer', ['network']],
|
|
44
|
+
usage: { examples: [{ arguments: '' }] },
|
|
27
45
|
},
|
|
28
46
|
// The one place that decides a version. A `script` entry for the same
|
|
29
47
|
// reason `ranges` is one: script paths resolve against the kit package root, so it keeps working
|
|
@@ -33,15 +51,39 @@ const VERSIONING_COMMANDS: Record<string, CommandEntry> = {
|
|
|
33
51
|
description: 'Release the merges main has taken since the version last changed',
|
|
34
52
|
category: 'Versioning',
|
|
35
53
|
reference: ['[--dry-run]', 'maintainer', ['git', 'network', 'release']],
|
|
54
|
+
usage: {
|
|
55
|
+
examples: [
|
|
56
|
+
{ arguments: '' },
|
|
57
|
+
{ arguments: '--dry-run', note: 'count and report, write nothing' },
|
|
58
|
+
],
|
|
59
|
+
flags: [
|
|
60
|
+
{
|
|
61
|
+
names: ['--dry-run'],
|
|
62
|
+
description:
|
|
63
|
+
'count and report only; writes nothing, fetches nothing, and creates no work tree.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
names: ['--help', '-h'],
|
|
67
|
+
description:
|
|
68
|
+
'print the usage line and exit 0 without fetching or releasing. Any other argument is refused with the usage line and a non-zero exit, before anything is fetched.',
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
},
|
|
36
72
|
},
|
|
37
73
|
// The read-only half of the one above. `release --dry-run` cannot
|
|
38
74
|
// answer this question: it refuses off the default branch and on a dirty tree, which is every
|
|
39
75
|
// position a run asks it from. A `script` entry for the same reason `release` is one.
|
|
40
76
|
'release:scope': {
|
|
41
|
-
script: 'scripts/release/release-scope-
|
|
77
|
+
script: 'scripts/release/release-scope-main.ts',
|
|
42
78
|
description: 'Say whether a release is owed, from the unreleased merges on main',
|
|
43
79
|
category: 'Versioning',
|
|
44
80
|
reference: ['[--json]', 'automation', ['none']],
|
|
81
|
+
usage: {
|
|
82
|
+
examples: [
|
|
83
|
+
{ arguments: '', note: '→ required | skip | unknown' },
|
|
84
|
+
{ arguments: '--json', note: '{"scope":"…","reason":"…"} on one line' },
|
|
85
|
+
],
|
|
86
|
+
},
|
|
45
87
|
},
|
|
46
88
|
// Run by the release workflows, kit's and the one sync distributes, after a tag has published.
|
|
47
89
|
// Settings come from the environment, so the workflow decides them.
|
|
@@ -50,6 +92,11 @@ const VERSIONING_COMMANDS: Record<string, CommandEntry> = {
|
|
|
50
92
|
description: 'Create the GitHub Release for a published tag, with generated notes',
|
|
51
93
|
category: 'Versioning',
|
|
52
94
|
reference: ['', 'automation', ['network', 'release']],
|
|
95
|
+
usage: {
|
|
96
|
+
examples: [
|
|
97
|
+
{ arguments: '', note: 'run by CI with GH_TOKEN, RELEASE_TAG and GITHUB_REPOSITORY set' },
|
|
98
|
+
],
|
|
99
|
+
},
|
|
53
100
|
},
|
|
54
101
|
}
|
|
55
102
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
|
|
2
2
|
|
|
3
|
+
const PR_TITLE = '"PR title #N"'
|
|
4
|
+
const BODY_FILE_NOTE =
|
|
5
|
+
'(`-` reads stdin); use this whenever the body carries a backtick or `$`. Passing both forms is refused.'
|
|
6
|
+
const ISSUE_URL = '--issue-url "https://..."'
|
|
7
|
+
const REVIEW_ISSUE = '--issue 2325'
|
|
8
|
+
const CHECK = '--check'
|
|
9
|
+
const YES = '-y'
|
|
10
|
+
const SKIP_COMMIT = '--skip-commit'
|
|
11
|
+
const SKIP_PUSH = '--skip-push'
|
|
12
|
+
|
|
3
13
|
const GIT_WORKFLOW_SCRIPT = 'scripts/git/git-workflow.ts'
|
|
4
14
|
const GIT_MESSAGE_ARGUMENTS = '[-y] <message>'
|
|
5
15
|
|
|
@@ -10,6 +20,28 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
10
20
|
description: 'Git workflow helper',
|
|
11
21
|
category: 'Workflow',
|
|
12
22
|
reference: [GIT_MESSAGE_ARGUMENTS, 'developer', ['git', 'network']],
|
|
23
|
+
usage: {
|
|
24
|
+
examples: [
|
|
25
|
+
{ arguments: '', note: 'interactive' },
|
|
26
|
+
{ arguments: YES, note: 'unattended (no TTY required)' },
|
|
27
|
+
{ arguments: '-y "title"', note: 'set commit message prefix' },
|
|
28
|
+
{ arguments: '-y "<title> #<N>"', note: 'follow-up commit on the same branch' },
|
|
29
|
+
{
|
|
30
|
+
arguments: '-y --skip-commit --skip-push',
|
|
31
|
+
note: 'open the PR without committing/pushing',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
flags: [
|
|
35
|
+
{
|
|
36
|
+
names: [YES, '--yes'],
|
|
37
|
+
description: 'run non-interactively; works without a TTY (agent or CI shell).',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
names: [SKIP_COMMIT, SKIP_PUSH],
|
|
41
|
+
description: 'recover/open a PR without a new commit or push.',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
13
45
|
},
|
|
14
46
|
pr: {
|
|
15
47
|
script: GIT_WORKFLOW_SCRIPT,
|
|
@@ -18,7 +50,8 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
18
50
|
// Not `GIT_MESSAGE_ARGUMENTS`: `-y` is already in the default arguments below, so advertising
|
|
19
51
|
// it would document a flag that cannot change what this command does.
|
|
20
52
|
reference: ['<message>', 'developer', ['network']],
|
|
21
|
-
default_script_arguments: [
|
|
53
|
+
default_script_arguments: [YES, SKIP_COMMIT, SKIP_PUSH],
|
|
54
|
+
usage: { examples: [{ arguments: '', note: 'open the PR for the current <N>-<slug> branch' }] },
|
|
22
55
|
},
|
|
23
56
|
// **The optional form, on both**. The mandatory `--env-file=.env` is resolved by node before the
|
|
24
57
|
// script's first line: on a machine with no `.env` it dies as `.env: not found` with exit code 9,
|
|
@@ -41,9 +74,37 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
41
74
|
['git', 'network', 'notifications'],
|
|
42
75
|
],
|
|
43
76
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
77
|
+
usage: {
|
|
78
|
+
examples: [
|
|
79
|
+
{ arguments: PR_TITLE, note: 'merges (default)' },
|
|
80
|
+
{ arguments: String.raw`${PR_TITLE} --notify-message "Implemented X:\n- change 1"` },
|
|
81
|
+
{ arguments: `${PR_TITLE} --notify-message-file completion.md` },
|
|
82
|
+
{ arguments: `${PR_TITLE} --ai-review-ignore-reason "false positive"` },
|
|
83
|
+
{ arguments: `${PR_TITLE} --no-merge`, note: 'do the work, leave the PR open' },
|
|
84
|
+
],
|
|
85
|
+
flags: [
|
|
86
|
+
{
|
|
87
|
+
names: ['--no-merge'],
|
|
88
|
+
description:
|
|
89
|
+
'do the follow-up work but do not merge; leaves the PR open (the only flag that stops the merge). `--merge` is a deprecated no-op. A PR already merged by hand skips the CI wait, the AI-review scan and the merge and runs only the post-merge tail; a completion report already on the Issue is not posted again.',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
names: ['--notify-message'],
|
|
93
|
+
description: 'inline completion body; `\\n` expands to newlines.',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
names: ['--notify-message-file'],
|
|
97
|
+
description: `read the completion body from a file ${BODY_FILE_NOTE}`,
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
names: ['--ai-review-ignore-reason'],
|
|
101
|
+
description: 'reason to dismiss an AI-review finding.',
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
},
|
|
44
105
|
},
|
|
45
106
|
notify: {
|
|
46
|
-
script: 'scripts/notify/telegram-test.ts',
|
|
107
|
+
script: 'scripts/notify/telegram-test-main.ts',
|
|
47
108
|
description: 'Send Telegram notification',
|
|
48
109
|
category: 'Workflow',
|
|
49
110
|
reference: [
|
|
@@ -52,6 +113,38 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
52
113
|
['notifications'],
|
|
53
114
|
],
|
|
54
115
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
116
|
+
usage: {
|
|
117
|
+
examples: [
|
|
118
|
+
{
|
|
119
|
+
arguments: String.raw`--task-type planning ${ISSUE_URL} --body="- bullet 1\n- bullet 2"`,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
arguments: `--task-type confirmation ${ISSUE_URL} --body-file r.md --recommended "Go" --alternative "Wait"`,
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
flags: [
|
|
126
|
+
{
|
|
127
|
+
names: ['--task-type'],
|
|
128
|
+
description:
|
|
129
|
+
'one of `planning` 📋, `completion` ✅, `failure` ❌, `warning` ⚠️, `kickoff_retry` 🔄, `confirmation` ⏸️. Do not send `completion` or `warning` by hand — `josh followup` sends them.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
names: ['--body', "--body=$'…'"],
|
|
133
|
+
description: "inline body; use `--body=$'…'` when it starts with `-`.",
|
|
134
|
+
},
|
|
135
|
+
{ names: ['--body-file'], description: `read the body from a file ${BODY_FILE_NOTE}` },
|
|
136
|
+
{
|
|
137
|
+
names: ['--repo-name', '--issue-url', '--pr-url'],
|
|
138
|
+
description:
|
|
139
|
+
'header repository, resolved in that order, then the working directory. The issue title is read from `--issue-url`.',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
names: ['--recommended', '--alternative'],
|
|
143
|
+
description:
|
|
144
|
+
'the choices appended under `JOSH_SESSION_LANG` headings; `--recommended` is required for `confirmation`, `--alternative` is repeatable.',
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
},
|
|
55
148
|
},
|
|
56
149
|
// One observation-ledger sighting: the key's count, the append and the second-sighting verdict,
|
|
57
150
|
// which a run used to type as a `cat | grep -c` and judge by hand.
|
|
@@ -60,6 +153,21 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
60
153
|
description: 'Record an observation sighting and answer whether it is now filed',
|
|
61
154
|
category: 'Workflow',
|
|
62
155
|
reference: ['<key> <depth> <where> <what> [--checkout <path>]', 'automation', ['files']],
|
|
156
|
+
usage: {
|
|
157
|
+
examples: [
|
|
158
|
+
{ arguments: "flaky-e2e d1 'tests/e2e/login.test.ts' 'times out on CI only'" },
|
|
159
|
+
{
|
|
160
|
+
arguments: "flaky-e2e d1 'src/app.ts' 'fails there too' --checkout ~/Development/app",
|
|
161
|
+
note: "another repository's ledger",
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
flags: [
|
|
165
|
+
{
|
|
166
|
+
names: ['--checkout <path>'],
|
|
167
|
+
description: "count and append in that repository's `.josh/observations/` instead.",
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
},
|
|
63
171
|
},
|
|
64
172
|
// The observation ledger's commit path for the lines no run's own commit carried:
|
|
65
173
|
// a lane's lines sit in the primary checkout, which
|
|
@@ -69,20 +177,46 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
69
177
|
description: 'Commit the observation ledger as a pull request of its own, and merge it',
|
|
70
178
|
category: 'Workflow',
|
|
71
179
|
reference: ['', 'automation', ['git', 'network']],
|
|
180
|
+
usage: { examples: [{ arguments: '' }] },
|
|
72
181
|
},
|
|
73
182
|
// The one write path for a `/code-review` round's findings, plus the
|
|
74
183
|
// `--check` gate `followup` runs before it merges. It appends a `- rf:`
|
|
75
184
|
// line per finding — or one zero-finding line for a clean round — to the observation ledger, so
|
|
76
185
|
// `observations:flush` commits them and the recurrence count survives the run.
|
|
77
186
|
'review:record': {
|
|
78
|
-
script: 'scripts/review/review-record-
|
|
187
|
+
script: 'scripts/review/review-record-main.ts',
|
|
79
188
|
description: 'Record a review round’s findings, or check a round was recorded',
|
|
80
189
|
category: 'Workflow',
|
|
81
190
|
reference: [
|
|
82
|
-
'--issue <N> [--comment] [<category>:<severity>:<file> ...] | --check --issue <N>',
|
|
191
|
+
'--issue <N> [--comment | --interaction] [<category>:<severity>:<file>[ — <reason>] ...] | --check [--interaction] --issue <N>',
|
|
83
192
|
'automation',
|
|
84
193
|
['files', 'network'],
|
|
85
194
|
],
|
|
195
|
+
usage: {
|
|
196
|
+
examples: [
|
|
197
|
+
{ arguments: `${REVIEW_ISSUE} bug-risks:medium:src/foo.ts:42 tests:low:a.test.ts` },
|
|
198
|
+
{ arguments: REVIEW_ISSUE, note: 'a zero-finding round — records one `none` line' },
|
|
199
|
+
{
|
|
200
|
+
arguments: `${REVIEW_ISSUE} --comment`,
|
|
201
|
+
note: 'a round that passed after the PR opened — an Issue comment, no append',
|
|
202
|
+
},
|
|
203
|
+
{ arguments: `${CHECK} ${REVIEW_ISSUE}`, note: 'the merge gate: was it recorded?' },
|
|
204
|
+
{
|
|
205
|
+
arguments: `${REVIEW_ISSUE} --interaction`,
|
|
206
|
+
note: 'the interaction review’s pass — a `- ri:` line',
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
// The reader over the durable review stop log: each finding that stopped a ship, with its file:line
|
|
212
|
+
// and first sentence, so a period's stops are classified without reading ship logs.
|
|
213
|
+
'review:stops': {
|
|
214
|
+
script: 'scripts/review/review-stops-cli.ts',
|
|
215
|
+
description:
|
|
216
|
+
'List the review findings that stopped a josh ship over a period, by kind, file:line and first sentence',
|
|
217
|
+
category: 'Workflow',
|
|
218
|
+
reference: ['[--period <days>]', 'developer', ['none']],
|
|
219
|
+
usage: { examples: [{ arguments: '--period 30', note: 'the last 30 days (default 7)' }] },
|
|
86
220
|
},
|
|
87
221
|
// The reader over what `review:record` wrote: each recurring category’s
|
|
88
222
|
// count, and the number of zero-finding rounds that distinguishes a quiet category from an unwatched one.
|
|
@@ -91,6 +225,7 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
91
225
|
description: 'Count review findings by category from the observation ledger',
|
|
92
226
|
category: 'Workflow',
|
|
93
227
|
reference: ['', 'developer', ['files']],
|
|
228
|
+
usage: { examples: [{ arguments: '' }] },
|
|
94
229
|
},
|
|
95
230
|
// After a behavior-change Issue merges, re-run its declared baseline and print before/after; a value
|
|
96
231
|
// that did not move appends a refuted-premise line to the observation ledger.
|
|
@@ -99,15 +234,17 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
99
234
|
description: 'Re-run a merged issue’s baseline command and print the before/after pair',
|
|
100
235
|
category: 'Workflow',
|
|
101
236
|
reference: ['<issue-number>', 'automation', ['network', 'processes', 'files']],
|
|
237
|
+
usage: { examples: [{ arguments: '2212' }] },
|
|
102
238
|
},
|
|
103
239
|
// A script rather than an `sh -c` chain, because it has a precondition to enforce: run inside a
|
|
104
240
|
// linked work tree it would hijack the default branch from every other one.
|
|
105
241
|
'main:sync': {
|
|
106
|
-
script: 'scripts/git/main-sync.ts',
|
|
242
|
+
script: 'scripts/git/main-sync-main.ts',
|
|
107
243
|
description:
|
|
108
244
|
'Checkout default branch, pull latest, and prune merged remote-gone branches (refuses inside a lane)',
|
|
109
245
|
category: 'Workflow',
|
|
110
246
|
reference: ['', 'developer', ['git', 'network']],
|
|
247
|
+
usage: { examples: [{ arguments: '' }] },
|
|
111
248
|
},
|
|
112
249
|
// A script rather than an `sh -c` chain, because the strategy has to be named rather than left to
|
|
113
250
|
// the caller's git configuration: a bare `git pull` aborts with `Need to specify how to reconcile
|
|
@@ -118,10 +255,11 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
118
255
|
// hooks — its regenerated catalog's commit runs them — which reserve themselves, and a weight here
|
|
119
256
|
// would set the held mark they inherit, folding the parallel hook tools into this one place.
|
|
120
257
|
'main:merge': {
|
|
121
|
-
script: 'scripts/git/main-merge.ts',
|
|
258
|
+
script: 'scripts/git/main-merge-main.ts',
|
|
122
259
|
description: 'Merge origin default branch into the current branch',
|
|
123
260
|
category: 'Workflow',
|
|
124
261
|
reference: ['', 'developer', ['git', 'network']],
|
|
262
|
+
usage: { examples: [{ arguments: '' }] },
|
|
125
263
|
},
|
|
126
264
|
}
|
|
127
265
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs'
|
|
2
|
+
import { parseEnv } from 'node:util'
|
|
1
3
|
import { ENV_FILE_NAME } from '#ports'
|
|
4
|
+
import { OPTIONAL_ENV_FILE_FLAGS } from './josh-command-types'
|
|
2
5
|
|
|
3
6
|
// Loading `.env` from inside a command, for the commands that must stay in-process.
|
|
4
7
|
//
|
|
@@ -8,23 +11,60 @@ import { ENV_FILE_NAME } from '#ports'
|
|
|
8
11
|
// command a hook fires on every `Bash` call, or one an unattended `epicrun` polls every sixty
|
|
9
12
|
// seconds, cannot pay that, so it reads the file itself instead.
|
|
10
13
|
//
|
|
11
|
-
// `
|
|
14
|
+
// `parseEnv` is node's own `--env-file` parser, and the loader keeps node's precedence: a value
|
|
12
15
|
// already in the environment wins over the file's. A missing or unreadable file is swallowed,
|
|
13
16
|
// exactly as `--env-file-if-exists` does.
|
|
14
17
|
//
|
|
18
|
+
// **A switch that turns a guard or a gate off is never taken from the file** (kit #4660): the run
|
|
19
|
+
// can write `.env`, so a switch read from it would let the run switch off the guards that bind it. It
|
|
20
|
+
// counts only from the environment the session was launched with — `JOSH_RULE_GUARD=off claude`. The
|
|
21
|
+
// flag form is loaded through the same filter (`apply_node_flags`), so a process kit starts never
|
|
22
|
+
// inherits a switch from the file either.
|
|
23
|
+
//
|
|
15
24
|
// **Call it only on the real command path** — inside the `import.meta.url` guard, or the hook's own
|
|
16
25
|
// entry — never from a function a unit test calls, so a developer's own `.env` cannot decide what
|
|
17
26
|
// the tests see.
|
|
18
|
-
|
|
27
|
+
|
|
28
|
+
// Every `JOSH_*_GUARD` switch, the hooks' `JOSH_*_FORCE` skips and the gate's `JOSH_SCOPED_GREEN`.
|
|
29
|
+
const LAUNCH_ONLY_KEY = /^JOSH_(?:\w+_GUARD|\w+_FORCE|SCOPED_GREEN)$/u
|
|
30
|
+
|
|
31
|
+
function is_launch_only_key(key: string): boolean {
|
|
32
|
+
return LAUNCH_ONLY_KEY.test(key)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function read_environment_file(): string {
|
|
19
36
|
try {
|
|
20
|
-
|
|
37
|
+
return readFileSync(ENV_FILE_NAME, 'utf8')
|
|
21
38
|
} catch {
|
|
22
39
|
// No `.env` beside this project, or one this process may not read. The caller then reads from
|
|
23
40
|
// the environment alone, which is what it did before any file existed.
|
|
41
|
+
return ''
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function load_environment_file(): void {
|
|
46
|
+
const entries = Object.entries(parseEnv(read_environment_file()))
|
|
47
|
+
|
|
48
|
+
for (const [key, value] of entries) {
|
|
49
|
+
if (!is_launch_only_key(key) && process.env[key] === undefined) process.env[key] = value
|
|
24
50
|
}
|
|
25
51
|
}
|
|
26
52
|
|
|
53
|
+
// The node flags a spawned command is started with. The `.env` flag is loaded here, into the
|
|
54
|
+
// environment the child inherits, rather than handed to node, whose own loader cannot leave the
|
|
55
|
+
// launch-only keys out.
|
|
56
|
+
function apply_node_flags(flags: ReadonlyArray<string>): ReadonlyArray<string> {
|
|
57
|
+
const [environment_flag] = OPTIONAL_ENV_FILE_FLAGS
|
|
58
|
+
|
|
59
|
+
if (!flags.includes(environment_flag ?? '')) return flags
|
|
60
|
+
|
|
61
|
+
load_environment_file()
|
|
62
|
+
|
|
63
|
+
return flags.filter((flag) => flag !== environment_flag)
|
|
64
|
+
}
|
|
65
|
+
|
|
27
66
|
const josh_environment_file = {
|
|
67
|
+
apply_node_flags,
|
|
28
68
|
load_environment_file,
|
|
29
69
|
}
|
|
30
70
|
|
|
@@ -31,8 +31,8 @@ function bundled_script_path(package_directory: string, script: string): string
|
|
|
31
31
|
|
|
32
32
|
// The file this dispatcher imports in its own process, or `undefined` to spawn tsx instead.
|
|
33
33
|
// `tsx_arguments` are node flags the script needs *before* its own code runs — today every one of
|
|
34
|
-
// them a form of `--env-file`, which
|
|
35
|
-
//
|
|
34
|
+
// them a form of `--env-file`, which the dispatcher loads into the child's environment just before
|
|
35
|
+
// it spawns (`josh_environment_file.apply_node_flags`). Those commands (`doctor`, `latest:scope`, `followup`, `notify`) keep a
|
|
36
36
|
// process of their own; each runs at most a few times per run, so none of them is where the cost
|
|
37
37
|
// this saves accumulates. Under plain node, which cannot load a `.ts` script at all, only a
|
|
38
38
|
// pre-built command runs in-process; every other one keeps spawning tsx.
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import { existsSync
|
|
1
|
+
import { existsSync } from 'node:fs'
|
|
2
2
|
import path from 'node:path'
|
|
3
3
|
import { fileURLToPath } from 'node:url'
|
|
4
4
|
import { resolve_local_bin, resolve_package_bin } from '#scripts/build/local-bin'
|
|
5
5
|
import { core_budget } from '#scripts/gate/core-budget'
|
|
6
|
+
import { package_manifest } from '#scripts/lib/package-manifest'
|
|
6
7
|
import { package_version_schema } from '#scripts/lib/schemas'
|
|
7
8
|
import { resolve_spawn_exit } from '#scripts/lib/spawn-exit'
|
|
8
9
|
import { execaSync } from 'execa'
|
|
9
10
|
import { command_suggest } from './command-suggest'
|
|
11
|
+
import { ALIASES } from './josh-aliases'
|
|
10
12
|
import {
|
|
11
|
-
ALIASES,
|
|
12
13
|
CATEGORY_ORDER,
|
|
13
14
|
COMMAND_MAP,
|
|
14
15
|
type CommandCategory,
|
|
15
16
|
type CommandEntry,
|
|
16
17
|
} from './josh-command-map'
|
|
17
18
|
import { composite_arguments, USAGE_ERROR_EXIT_CODE } from './josh-composite-arguments'
|
|
19
|
+
import { josh_environment_file } from './josh-environment-file'
|
|
18
20
|
import { josh_in_process } from './josh-in-process'
|
|
19
21
|
import { kit_only } from './kit-only'
|
|
20
22
|
import { find_package_directory } from './package-directory'
|
|
@@ -24,7 +26,6 @@ const COLUMN_WIDTH = 26
|
|
|
24
26
|
const ALIAS_PAD_WIDTH = 2
|
|
25
27
|
const TSX_BIN = 'tsx'
|
|
26
28
|
const TSX_PACKAGE = 'tsx'
|
|
27
|
-
const PACKAGE_JSON = 'package.json'
|
|
28
29
|
// Not an exit code the shell ever sees: `josh.ts` reads it as "no such command" and answers with
|
|
29
30
|
// the listing on stderr. It is named because `run_command` now reports through a promise, where a
|
|
30
31
|
// bare `-1` is one step further from the check that reads it.
|
|
@@ -71,9 +72,7 @@ function resolve_tsx_runner(): TsxRunner {
|
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
function read_package_version(): string {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return package_version_schema.parse(JSON.parse(raw)).version
|
|
75
|
+
return package_manifest.read_manifest(PACKAGE_DIR, package_version_schema).version
|
|
77
76
|
}
|
|
78
77
|
|
|
79
78
|
const HEADER = `josh v${read_package_version()} — Joshua Folkken's dev toolkit`
|
|
@@ -165,16 +164,11 @@ function format_unknown_command(cmd: string): string {
|
|
|
165
164
|
return `Unknown command: ${cmd}.${hint} Run 'josh --help' for common commands or 'josh --all' for the full list.`
|
|
166
165
|
}
|
|
167
166
|
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
function should_use_shell(executable: string): boolean {
|
|
171
|
-
return process.platform === 'win32' && executable !== process.execPath
|
|
172
|
-
}
|
|
173
|
-
|
|
167
|
+
// No `shell` option on purpose: execa runs a Windows `.cmd` shim itself and escapes the arguments
|
|
168
|
+
// for cmd.exe, which the shell would receive unescaped.
|
|
174
169
|
function spawn_script(tsx_executable: string, script_arguments: Array<string>): number {
|
|
175
170
|
const result = execaSync(tsx_executable, script_arguments, {
|
|
176
171
|
stdio: 'inherit',
|
|
177
|
-
shell: should_use_shell(tsx_executable),
|
|
178
172
|
reject: false,
|
|
179
173
|
})
|
|
180
174
|
|
|
@@ -200,7 +194,7 @@ function spawn_script_entry(
|
|
|
200
194
|
|
|
201
195
|
return spawn_script(runner.executable, [
|
|
202
196
|
...runner.leading_arguments,
|
|
203
|
-
...(entry.tsx_arguments ?? []),
|
|
197
|
+
...josh_environment_file.apply_node_flags(entry.tsx_arguments ?? []),
|
|
204
198
|
script_path,
|
|
205
199
|
...script_arguments,
|
|
206
200
|
])
|
|
@@ -287,7 +281,7 @@ async function dispatch_entry(
|
|
|
287
281
|
return await core_budget.with_command_reservation(
|
|
288
282
|
weight,
|
|
289
283
|
async () => await run_entry(entry, subcommand_arguments),
|
|
290
|
-
{ memory_mb: declared(entry.memory_mb), command },
|
|
284
|
+
{ memory_mb: declared(entry.memory_mb), command, is_unit: entry.is_unit_claim },
|
|
291
285
|
)
|
|
292
286
|
}
|
|
293
287
|
|
|
@@ -316,7 +310,8 @@ const josh_logic = {
|
|
|
316
310
|
}
|
|
317
311
|
|
|
318
312
|
export type { CommandEntry } from './josh-command-map'
|
|
319
|
-
export { ALIASES
|
|
313
|
+
export { ALIASES } from './josh-aliases'
|
|
314
|
+
export { COMMAND_MAP } from './josh-command-map'
|
|
320
315
|
export { SPAWN_ERROR_EXIT_CODE } from '#scripts/lib/spawn-exit'
|
|
321
316
|
export { composite_arguments, USAGE_ERROR_EXIT_CODE } from './josh-composite-arguments'
|
|
322
317
|
export {
|
package/scripts/josh/josh-run.ts
CHANGED
|
@@ -17,6 +17,8 @@ import { execa } from 'execa'
|
|
|
17
17
|
//
|
|
18
18
|
// **`timeout_ms` bounds a read made from inside a loop**: the step is killed and
|
|
19
19
|
// its exit reads as a failure, so a hung network call ends a pass instead of the loop around it.
|
|
20
|
+
//
|
|
21
|
+
// **`environment` adds to the inherited one** for that one step — a switch the step's hooks read.
|
|
20
22
|
|
|
21
23
|
const PNPM = 'pnpm'
|
|
22
24
|
const JOSH = 'josh'
|
|
@@ -29,15 +31,31 @@ interface JoshResult {
|
|
|
29
31
|
err?: string
|
|
30
32
|
}
|
|
31
33
|
|
|
34
|
+
interface ExtraOptions {
|
|
35
|
+
timeout?: number
|
|
36
|
+
env?: Readonly<Record<string, string>>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function extra_options(
|
|
40
|
+
timeout_ms: number | undefined,
|
|
41
|
+
environment: Readonly<Record<string, string>> | undefined,
|
|
42
|
+
): ExtraOptions {
|
|
43
|
+
return {
|
|
44
|
+
...(timeout_ms !== undefined && { timeout: timeout_ms }),
|
|
45
|
+
...(environment !== undefined && { env: environment }),
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
32
49
|
async function josh_run(
|
|
33
50
|
args: ReadonlyArray<string>,
|
|
34
51
|
should_forward_stderr = false,
|
|
35
52
|
timeout_ms?: number,
|
|
53
|
+
environment?: Readonly<Record<string, string>>,
|
|
36
54
|
): Promise<JoshResult> {
|
|
37
55
|
const result = await execa(PNPM, [JOSH, ...args], {
|
|
38
56
|
reject: false,
|
|
39
57
|
stderr: should_forward_stderr ? FORWARDED_STDERR : 'pipe',
|
|
40
|
-
...(timeout_ms
|
|
58
|
+
...extra_options(timeout_ms, environment),
|
|
41
59
|
})
|
|
42
60
|
|
|
43
61
|
return {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs'
|
|
2
|
-
import path from 'node:path'
|
|
3
2
|
import { ancestor_directories } from '#scripts/lib/ancestor-directories'
|
|
4
|
-
|
|
5
|
-
const PACKAGE_JSON = 'package.json'
|
|
3
|
+
import { package_manifest } from '#scripts/lib/package-manifest'
|
|
6
4
|
|
|
7
5
|
// Resolve the kit package root by ascending to the nearest package.json. This works both
|
|
8
6
|
// from the bundled dist/josh.js (one level under the root) and from the tsx source at
|
|
@@ -12,7 +10,7 @@ const PACKAGE_JSON = 'package.json'
|
|
|
12
10
|
function find_package_directory(start_directory: string): string {
|
|
13
11
|
return (
|
|
14
12
|
ancestor_directories.nearest(start_directory, (directory) =>
|
|
15
|
-
existsSync(
|
|
13
|
+
existsSync(package_manifest.manifest_path(directory)),
|
|
16
14
|
) ?? start_directory
|
|
17
15
|
)
|
|
18
16
|
}
|
|
@@ -3,8 +3,8 @@ import { randomUUID } from 'node:crypto'
|
|
|
3
3
|
import { readFileSync, rmSync } from 'node:fs'
|
|
4
4
|
import { createServer, type Server } from 'node:net'
|
|
5
5
|
import path from 'node:path'
|
|
6
|
+
import { PLATFORM_TEMP_ROOT } from '#scripts/josh/platform-temporary'
|
|
6
7
|
import { PROBE_TIMEOUT_MS } from '#scripts/lib/timeouts'
|
|
7
|
-
import { PLATFORM_TEMP_ROOT } from './platform-temporary'
|
|
8
8
|
|
|
9
9
|
// Whether the process a record names is still the one that wrote it.
|
|
10
10
|
//
|
|
@@ -30,7 +30,7 @@ import { PLATFORM_TEMP_ROOT } from './platform-temporary'
|
|
|
30
30
|
// `Tue Sep 8 09:15:33 2026` in one shell and `Tue Sep 8 02:15:33 2026` in another that exported
|
|
31
31
|
// `TZ=UTC` — and a writer and reader disagreeing about `TZ` would read a live process as a stranger.
|
|
32
32
|
// That failure is worse than the one this module fixes, because it fires on a gate that really is
|
|
33
|
-
// running: `unit-
|
|
33
|
+
// running: `unit-run-marker` would sweep the marker of a live run and put every suite back on the
|
|
34
34
|
// whole machine, and `bench-guard` would clear the caches out from under a running gate. The probe
|
|
35
35
|
// therefore pins `TZ` and `LC_ALL` rather than inheriting them.
|
|
36
36
|
|
|
@@ -237,11 +237,16 @@ function beacon_target(token: string): string | undefined {
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
// No status is a probe killed by its timeout or a signal — unknown, the same as its own timeout.
|
|
240
|
-
|
|
240
|
+
// `kill_after_ms` is a parameter so a test can ask what the probe itself reports for a socket
|
|
241
|
+
// without a loaded machine's slow start turning the answer into the timeout's.
|
|
242
|
+
function run_socket_probe(
|
|
243
|
+
target: string,
|
|
244
|
+
kill_after_ms: number = PROBE_TIMEOUT_MS,
|
|
245
|
+
): number | undefined {
|
|
241
246
|
return (
|
|
242
247
|
spawnSync(process.execPath, ['-e', SOCKET_PROBE_SOURCE, target], {
|
|
243
248
|
stdio: 'ignore',
|
|
244
|
-
timeout:
|
|
249
|
+
timeout: kill_after_ms,
|
|
245
250
|
}).status ?? undefined
|
|
246
251
|
)
|
|
247
252
|
}
|
|
@@ -359,6 +364,9 @@ function is_own_process(pid: number | undefined, recorded_start: string | undefi
|
|
|
359
364
|
}
|
|
360
365
|
|
|
361
366
|
const process_identity = {
|
|
367
|
+
PROBE_ENVIRONMENT,
|
|
368
|
+
START_PROBES,
|
|
369
|
+
START_TIME_FORMAT,
|
|
362
370
|
close_beacon,
|
|
363
371
|
is_live_beacon,
|
|
364
372
|
is_live_pid,
|
|
@@ -371,6 +379,7 @@ const process_identity = {
|
|
|
371
379
|
own_start,
|
|
372
380
|
read_start,
|
|
373
381
|
resolve_own_start,
|
|
382
|
+
run_socket_probe,
|
|
374
383
|
}
|
|
375
384
|
|
|
376
385
|
export { process_identity }
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// The run's own records — observations, accepted metrics — josh writes under the root `.josh/`
|
|
2
|
+
// directory. `defect-report.ts`, `scoped-green.ts`, `test-read-map.ts`, `test-pinned-cache.ts` and
|
|
3
|
+
// the background `josh test:pinned`'s tree key (`run-review-pinned-tree.ts`) read such a path as
|
|
4
|
+
// bookkeeping, not as a change to the code — no test reads it.
|
|
5
|
+
const RUN_RECORD_ROOT = '.josh/'
|
|
6
|
+
|
|
7
|
+
function is_run_record(relative: string): boolean {
|
|
8
|
+
return relative.startsWith(RUN_RECORD_ROOT)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const run_record_path = {
|
|
12
|
+
is_run_record,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { run_record_path }
|