@joshuafolkken/kit 1.1229.0 → 1.1370.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 -0
- package/.claude/settings.json +4 -0
- package/.claude/skills/dependency-update/SKILL.md +5 -3
- package/.claude/skills/epic-commands/SKILL.md +82 -113
- package/.claude/skills/epic-commands/epic-bundle.md +38 -63
- package/.claude/skills/epic-commands/execution-waves.md +30 -51
- package/.claude/skills/verify-ui/SKILL.md +13 -20
- package/.claude/skills/workflow-commands/SKILL.md +10 -10
- package/.claude/skills/workflow-commands/background-commands.md +4 -4
- package/.claude/skills/workflow-commands/backlogrun-child.md +30 -105
- package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +29 -0
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +45 -131
- package/.claude/skills/workflow-commands/backlogrun-park.md +36 -53
- package/.claude/skills/workflow-commands/backlogrun-progress.md +81 -331
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +29 -83
- package/.claude/skills/workflow-commands/backlogrun-steps.md +105 -424
- package/.claude/skills/workflow-commands/backlogrun.md +50 -61
- package/.claude/skills/workflow-commands/chain-rule.md +36 -40
- package/.claude/skills/workflow-commands/entry-sequence.md +6 -6
- package/.claude/skills/workflow-commands/followup.md +24 -20
- package/.claude/skills/workflow-commands/fullrun-steps.md +23 -27
- package/.claude/skills/workflow-commands/fullrun.md +10 -10
- package/.claude/skills/workflow-commands/halfrun.md +9 -8
- package/.claude/skills/workflow-commands/into-target.md +12 -18
- package/.claude/skills/workflow-commands/issue-comments.md +11 -26
- package/.claude/skills/workflow-commands/kickoff.md +27 -16
- package/.claude/skills/workflow-commands/latest-gate.md +18 -29
- package/.claude/skills/workflow-commands/needs-human-review.md +13 -24
- package/.claude/skills/workflow-commands/observation-filing.md +37 -28
- package/.claude/skills/workflow-commands/observation-ledger.md +48 -38
- package/.claude/skills/workflow-commands/pre-gate-cut.md +9 -9
- package/.claude/skills/workflow-commands/prerequisite.md +23 -15
- package/.claude/skills/workflow-commands/progress-watcher.md +17 -11
- package/.claude/skills/workflow-commands/prrun.md +3 -3
- package/.claude/skills/workflow-commands/retrospective.md +13 -18
- package/.claude/skills/workflow-commands/split-assessment.md +6 -4
- package/.claude/skills/workflow-commands/target-repository.md +25 -28
- package/.claude/skills/workflow-commands/working-tree-hold.md +11 -17
- package/.gitattributes +2 -1
- package/.github/workflows/ci.yml +14 -0
- package/.github/workflows/publish.yml +2 -0
- package/.vscode/tasks.json +14 -0
- package/CLAUDE.md +10 -61
- package/README.md +38 -57
- package/SECURITY.md +1 -1
- package/dist/CLAUDE.md +10 -61
- package/dist/commands/document-section-cli.js +42 -10
- package/dist/config-merge/index.js +11 -2
- package/dist/hooks/audit-provision.js +2 -2
- package/dist/hooks/batch-guard.js +7 -7
- package/dist/hooks/{chunk-FIVDHQGT.js → chunk-43G45XJF.js} +18 -20
- package/dist/hooks/{chunk-JUDKDCDP.js → chunk-4TW4MQUL.js} +284 -362
- package/dist/hooks/{chunk-5VMKCCC4.js → chunk-76RK6E3H.js} +13 -11
- package/dist/hooks/{chunk-RNWHN5BP.js → chunk-DZWZ3DKY.js} +4 -4
- package/dist/hooks/{chunk-5VNDSNG3.js → chunk-FZ6FUSBM.js} +1 -1
- package/dist/hooks/{chunk-VC3PZPZO.js → chunk-GG72ANKI.js} +1 -1
- package/dist/hooks/{chunk-6HJJXRBX.js → chunk-KPM4YIIX.js} +8 -44
- package/dist/hooks/chunk-MXVQMLDP.js +3705 -0
- package/dist/hooks/{chunk-ELCN5LCH.js → chunk-NEC4AT4Z.js} +34 -12
- package/dist/hooks/{chunk-TQNPDZNH.js → chunk-NZBHG6FW.js} +7 -5
- package/dist/hooks/chunk-NZN2UFI6.js +2409 -0
- package/dist/hooks/{chunk-F56MFS4B.js → chunk-R6CRQEAL.js} +4 -4
- package/dist/hooks/chunk-SYSRHRWU.js +1589 -0
- package/dist/hooks/{chunk-55HHG5PX.js → chunk-TLJYAGZK.js} +799 -903
- package/dist/hooks/chunk-Z5TMJIPW.js +45 -0
- package/dist/hooks/codex-hook-adapter.js +26 -21
- package/dist/hooks/duplicate-read-guard.js +8 -8
- package/dist/hooks/format-edited.js +4 -4
- package/dist/hooks/inputs.json +213 -197
- package/dist/hooks/investigation-guard.js +8 -8
- package/dist/hooks/pretool-guard.js +15 -15
- package/dist/hooks/session-lang.js +406 -8
- package/dist/hooks/stop-guard.js +122 -201
- package/dist/josh.js +540 -137
- package/dist/version/index.js +15 -13
- package/eslint/base.js +43 -5
- package/eslint/rules/english-only-prose.js +3 -3
- package/eslint/rules/import.js +12 -0
- package/eslint/rules/namespace-object-export.js +2 -2
- package/package.json +16 -10
- package/pnpm-workspace.yaml +2 -4
- package/prompts/coding-standards.md +14 -48
- package/prompts/collaboration-workflow/file-edits.md +1 -1
- package/prompts/collaboration-workflow/issue-citation.md +1 -1
- package/prompts/collaboration-workflow/issue-template.md +4 -10
- package/prompts/collaboration-workflow/operating-rules.md +7 -8
- package/prompts/collaboration-workflow/output-bounds.md +1 -1
- package/prompts/collaboration-workflow/overview.md +1 -1
- package/prompts/collaboration-workflow/plan-comment.md +2 -1
- package/prompts/collaboration-workflow/principles.md +21 -3
- package/prompts/collaboration-workflow/report-format.md +16 -29
- package/prompts/collaboration-workflow/residency.md +1 -1
- package/prompts/collaboration-workflow/rule-delivery.md +7 -95
- package/prompts/collaboration-workflow/shell-body.md +3 -23
- package/prompts/collaboration-workflow/turn-batching.md +4 -13
- package/prompts/collaboration-workflow/wip-cap.md +5 -11
- package/prompts/refactoring.md +1 -1
- package/prompts/review-rubric.md +3 -22
- package/prompts/review.md +15 -38
- package/prompts/testing-guide.md +2 -4
- package/scripts/adopt/adopt-logic.ts +5 -5
- package/scripts/adopt/adopt-toolkits.ts +4 -5
- package/scripts/adopt/adopt.ts +2 -3
- package/scripts/agent/agent-argv.ts +7 -7
- package/scripts/agent/agent-diagnostics.ts +2 -2
- package/scripts/agent/agent-exit-record.ts +1 -1
- package/scripts/agent/agent-headless.ts +1 -1
- package/scripts/agent/agent-launch-environment.ts +6 -1
- package/scripts/agent/agent-role-profile.ts +49 -22
- package/scripts/agent/agent-session-role.ts +32 -0
- package/scripts/agent/api-outage.ts +1 -1
- package/scripts/agent/claude-agent-argv.ts +4 -4
- package/scripts/agent/claude-result-event.ts +4 -4
- package/scripts/agent/codex-hooks.ts +2 -2
- package/scripts/agent/interactive-ask.ts +3 -6
- package/scripts/auto-ok/auto-ok-cli.ts +46 -60
- package/scripts/backlog/backlog-arrival-added.ts +34 -0
- package/scripts/backlog/backlog-arrival.ts +54 -17
- package/scripts/backlog/backlog-budget-cli.ts +34 -6
- package/scripts/backlog/backlog-budget.ts +17 -24
- package/scripts/backlog/backlog-defect-priority.ts +1 -1
- package/scripts/backlog/backlog-drive-args.ts +5 -4
- package/scripts/backlog/backlog-drive-cli.ts +14 -10
- package/scripts/backlog/backlog-drive-epic.ts +85 -0
- package/scripts/backlog/backlog-drive-launch.ts +1 -1
- package/scripts/backlog/backlog-drive-named-offer.ts +60 -9
- package/scripts/backlog/backlog-drive-named.ts +39 -9
- package/scripts/backlog/backlog-drive-offer-argv.ts +1 -1
- package/scripts/backlog/backlog-drive-restore.ts +1 -1
- package/scripts/backlog/backlog-drive-retrospective.ts +2 -2
- package/scripts/backlog/backlog-drive.ts +43 -28
- package/scripts/backlog/backlog-idle.ts +88 -0
- package/scripts/backlog/backlog-named.ts +11 -15
- package/scripts/backlog/backlog-next.ts +26 -30
- package/scripts/backlog/backlog-offer-cli.ts +28 -23
- package/scripts/backlog/backlog-offer.ts +7 -7
- package/scripts/backlog/backlog-overlap.ts +178 -0
- package/scripts/backlog/backlog-plan-cli.ts +14 -90
- package/scripts/backlog/backlog-plan-read.ts +111 -0
- package/scripts/backlog/backlog-plan.ts +11 -10
- package/scripts/backlog/backlog-pool.ts +13 -14
- package/scripts/backlog/backlog-rank.ts +11 -11
- package/scripts/backlog/backlog-ready.ts +15 -10
- package/scripts/backlog/backlog-scope.ts +14 -15
- package/scripts/backlog/backlog-stalled-cli.ts +2 -2
- package/scripts/backlog/backlog-stalled-detect.ts +4 -4
- package/scripts/backlog/backlog-stalled.ts +5 -6
- package/scripts/backlog/backlog-waves.ts +4 -4
- package/scripts/backlog/backlogrun-args.ts +74 -0
- package/scripts/backlog/backlogrun-cli.ts +113 -0
- package/scripts/backlog/backlogrun-launch.ts +178 -0
- package/scripts/behavior/behavior-assertion.ts +6 -8
- package/scripts/behavior/behavior-cli.ts +1 -1
- package/scripts/behavior/behavior-rules.ts +3 -3
- package/scripts/build/build-claude-md.ts +4 -4
- package/scripts/build/build-codex-hooks.ts +2 -2
- package/scripts/build/build-commands.ts +1 -1
- package/scripts/build/build-hooks.ts +5 -5
- package/scripts/build/build.ts +1 -1
- package/scripts/build/hook-bundle-stamp.ts +109 -7
- package/scripts/build/local-bin.ts +2 -2
- package/scripts/cases/cases-cli.ts +1 -1
- package/scripts/cases/cases-logic.ts +2 -2
- package/scripts/ci/composite-actions.ts +1 -2
- package/scripts/ci/pr-classification.ts +2 -2
- package/scripts/claude/workflow-destination.ts +1 -1
- package/scripts/clone/clone-aggregate.ts +1 -1
- package/scripts/clone/clone-fingerprint.ts +1 -1
- package/scripts/clone/clone-scan-cli.ts +1 -1
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/config-merge/index.ts +1 -1
- package/scripts/config-merge/json-format.ts +1 -3
- package/scripts/config-merge/patch-json-array.ts +90 -0
- package/scripts/config-merge/patch-json-key.ts +6 -3
- package/scripts/config-merge/patch-json-list.ts +1 -1
- package/scripts/cost-runtime/codex-usage.ts +1 -1
- package/scripts/cost-runtime/context-cut-payback.ts +4 -5
- package/scripts/cost-runtime/context-cut-threshold.ts +4 -6
- package/scripts/cost-runtime/cost-attribute.ts +3 -3
- package/scripts/cost-runtime/cost-blocks.ts +3 -4
- package/scripts/cost-runtime/cost-cli.ts +14 -11
- package/scripts/cost-runtime/cost-corpus.ts +11 -11
- package/scripts/cost-runtime/cost-pricing.ts +4 -4
- package/scripts/cost-runtime/cost-tokens.ts +1 -2
- package/scripts/cost-runtime/cost-transcript.ts +29 -29
- package/scripts/cost-runtime/cost-usage.ts +6 -7
- package/scripts/cost-runtime/cost-verdict.ts +10 -11
- package/scripts/cost-runtime/own-session.ts +1 -1
- package/scripts/cost-runtime/transcript-cwd.ts +2 -2
- package/scripts/delegation/delegation-cli.ts +4 -4
- package/scripts/delegation/delegation-policy.ts +13 -15
- package/scripts/delegation/duplicate-read-guard.ts +9 -10
- package/scripts/delegation/fanout-cli.ts +1 -1
- package/scripts/delegation/fanout.ts +1 -1
- package/scripts/delegation/investigation-guard.ts +18 -22
- package/scripts/delegation/investigation-reads.ts +48 -238
- package/scripts/discovery/repo-discovery.ts +1 -1
- package/scripts/discovery/repo-map-logic.ts +1 -2
- package/scripts/discovery/repo-origin.ts +3 -3
- package/scripts/discovery/repo-party-cli.ts +2 -2
- package/scripts/discovery/repo-party.ts +2 -2
- package/scripts/doctor/doctor-consumer.ts +1 -1
- package/scripts/doctor/doctor-io.ts +6 -7
- package/scripts/doctor/doctor-logic.ts +1 -1
- package/scripts/doctor/doctor-ports.ts +1 -1
- package/scripts/doctor/doctor.ts +8 -9
- package/scripts/document/backlogrun-parent-read-set.ts +5 -6
- package/scripts/document/bash-output-cap.ts +5 -7
- package/scripts/document/capped-print-part.ts +1 -1
- package/scripts/document/capped-print.ts +1 -1
- package/scripts/document/document-byte-budget.ts +33 -64
- package/scripts/document/document-byte-check.ts +4 -4
- package/scripts/document/document-reachability.ts +7 -8
- package/scripts/document/document-read-cli.ts +2 -2
- package/scripts/document/document-scan.ts +26 -2
- package/scripts/document/document-section-cli.ts +6 -8
- package/scripts/document/document-section.ts +8 -12
- package/scripts/document/edit-files-cli.ts +3 -4
- package/scripts/document/entry-read-budget.ts +8 -70
- package/scripts/document/entry-read-set.ts +51 -34
- package/scripts/document/lane-child-read-set.ts +9 -9
- package/scripts/document/read-files-cli.ts +1 -2
- package/scripts/document/read-set-cli.ts +16 -19
- package/scripts/document/read-set-cost.ts +4 -4
- package/scripts/document/read-set-point-of-use.ts +28 -38
- package/scripts/document/read-set-pricing.ts +1 -1
- package/scripts/document/read-set-trim.ts +3 -3
- package/scripts/document/resident-budget.ts +8 -10
- package/scripts/epic/epic-add-body.ts +15 -18
- package/scripts/epic/epic-add-plan.ts +26 -28
- package/scripts/epic/epic-add.ts +32 -25
- package/scripts/epic/epic-audit-checks.ts +27 -37
- package/scripts/epic/epic-audit-cli.ts +21 -22
- package/scripts/epic/epic-audit-orphans.ts +16 -17
- package/scripts/epic/epic-audit-rationale.ts +10 -15
- package/scripts/epic/epic-audit-report.ts +2 -5
- package/scripts/epic/epic-audit.ts +18 -14
- package/scripts/epic/epic-body.ts +10 -10
- package/scripts/epic/epic-bundle-cli.ts +36 -34
- package/scripts/epic/epic-bundle-evidence.ts +5 -5
- package/scripts/epic/epic-bundle-gaps.ts +6 -9
- package/scripts/epic/epic-bundle-poll.ts +1 -1
- package/scripts/epic/epic-bundle-referenced.ts +11 -14
- package/scripts/epic/epic-bundle.ts +19 -20
- package/scripts/epic/epic-busy.ts +44 -21
- package/scripts/epic/epic-candidate-confirm.ts +15 -18
- package/scripts/epic/epic-chains.ts +18 -23
- package/scripts/epic/epic-classify.ts +11 -12
- package/scripts/epic/epic-cli-argv.ts +5 -6
- package/scripts/epic/epic-cli-remove.ts +9 -4
- package/scripts/epic/epic-cli.ts +38 -26
- package/scripts/epic/epic-close-comment.ts +14 -15
- package/scripts/epic/epic-close.ts +25 -29
- package/scripts/epic/epic-cross-repo.ts +18 -21
- package/scripts/epic/epic-decision.ts +14 -18
- package/scripts/epic/epic-fetch.ts +25 -31
- package/scripts/epic/epic-graph.ts +15 -17
- package/scripts/epic/epic-index.ts +14 -16
- package/scripts/epic/epic-issue.ts +9 -11
- package/scripts/epic/epic-label-age.ts +74 -0
- package/scripts/epic/epic-lane-offer.ts +35 -24
- package/scripts/epic/epic-nested.ts +1 -1
- package/scripts/epic/epic-next-read.ts +8 -8
- package/scripts/epic/epic-next-views.ts +12 -12
- package/scripts/epic/epic-next.ts +29 -33
- package/scripts/epic/epic-outside-blocker.ts +11 -10
- package/scripts/epic/epic-parse.ts +22 -24
- package/scripts/epic/epic-promote.ts +3 -2
- package/scripts/epic/epic-rank.ts +1 -1
- package/scripts/epic/epic-read.ts +10 -8
- package/scripts/epic/epic-reconcile.ts +8 -6
- package/scripts/epic/epic-reference.ts +5 -4
- package/scripts/epic/epic-relation-recheck.ts +10 -11
- package/scripts/epic/epic-relations.ts +9 -8
- package/scripts/epic/epic-remove-plan.ts +4 -5
- package/scripts/epic/epic-remove.ts +7 -5
- package/scripts/epic/epic-report.ts +18 -20
- package/scripts/epic/epic-run.ts +6 -5
- package/scripts/epic/epic-sections.ts +2 -2
- package/scripts/epic/epic-shape.ts +3 -3
- package/scripts/epic/epic-solo-stale.ts +3 -2
- package/scripts/epic/epic-solo.ts +8 -8
- package/scripts/epic/epic-triage.ts +5 -4
- package/scripts/epic/epic-validate.ts +8 -7
- package/scripts/epic/epic.ts +5 -5
- package/scripts/exports/unused-members-cli.ts +1 -1
- package/scripts/followup/followup-issue-number.ts +1 -2
- package/scripts/followup/git-followup-cleanup.ts +6 -7
- package/scripts/followup/git-followup-finish.ts +11 -13
- package/scripts/followup/git-followup-flush.ts +11 -7
- package/scripts/followup/git-followup-issue-close.ts +16 -13
- package/scripts/followup/git-followup-label.ts +9 -6
- package/scripts/followup/git-followup-merged.ts +1 -1
- package/scripts/followup/git-followup-pending.ts +7 -9
- package/scripts/followup/git-followup-stages.ts +28 -17
- package/scripts/followup/git-followup-workflow.ts +19 -21
- package/scripts/followup/git-pr-followup-checks.ts +13 -20
- package/scripts/followup/git-pr-followup-wrapup.ts +7 -7
- package/scripts/followup/git-pr-followup.ts +18 -17
- package/scripts/gate/core-admission.ts +162 -0
- package/scripts/gate/core-budget.ts +134 -91
- package/scripts/gate/gate-ledger.ts +114 -0
- package/scripts/gate/gate-log.ts +7 -9
- package/scripts/gate/gate-plan.ts +103 -35
- package/scripts/gate/gate-report.ts +39 -21
- package/scripts/gate/gate-skip.ts +11 -13
- package/scripts/gate/gate-steps.ts +5 -1
- package/scripts/gate/gate-tree.ts +3 -4
- package/scripts/gate/hook-gate-reuse.ts +9 -9
- package/scripts/gate/machine-capacity.ts +313 -0
- package/scripts/gate/pre-commit-type-check.ts +4 -4
- package/scripts/gate/project-checks.ts +12 -4
- package/scripts/gate/scoped-green.ts +11 -18
- package/scripts/gate/type-check-command.ts +2 -2
- package/scripts/gate/type-check-step.ts +4 -4
- package/scripts/gate/verification-gate.ts +60 -53
- package/scripts/gh/gh-spawn.ts +2 -2
- package/scripts/gh/git-ai-review-scan.ts +3 -2
- package/scripts/gh/git-gh-api-path.ts +10 -11
- package/scripts/gh/git-gh-exec.ts +43 -48
- package/scripts/gh/git-gh-failure.ts +6 -9
- package/scripts/gh/git-gh-helpers.ts +1 -1
- package/scripts/gh/git-gh-issue-list.ts +15 -19
- package/scripts/gh/git-gh-issue-read.ts +43 -60
- package/scripts/gh/git-gh-issue-rest.ts +14 -15
- package/scripts/gh/git-gh-issue-write.ts +52 -40
- package/scripts/gh/git-gh-issue.ts +23 -24
- package/scripts/gh/git-gh-pr-auto-merge.ts +3 -3
- package/scripts/gh/git-gh-pr-read.ts +46 -50
- package/scripts/gh/git-gh-pr-rest.ts +23 -26
- package/scripts/gh/git-gh-pr-review.ts +2 -2
- package/scripts/gh/git-gh-pr-rollup.ts +4 -4
- package/scripts/gh/git-gh-pr-snapshot.ts +8 -10
- package/scripts/gh/git-gh-pr.ts +16 -16
- package/scripts/gh/git-gh-reachability.ts +11 -12
- package/scripts/gh/git-gh-repo.ts +2 -3
- package/scripts/gh/git-gh-rest-state.ts +1 -1
- package/scripts/gh/git-pr-ai-review.ts +6 -5
- package/scripts/gh/git-pr-checks-eval.ts +28 -30
- package/scripts/gh/git-pr-checks-parse.ts +14 -16
- package/scripts/gh/git-pr-checks-watch.ts +17 -17
- package/scripts/gh/git-pr-checks.ts +20 -23
- package/scripts/gh/git-pr-coderabbit.ts +8 -6
- package/scripts/gh/git-pr-confirmation.ts +5 -5
- package/scripts/gh/git-pr-managed-config.ts +7 -9
- package/scripts/gh/git-pr-messages.ts +1 -1
- package/scripts/gh/git-pr.ts +15 -16
- package/scripts/gh/github-issue-url.ts +8 -9
- package/scripts/git/base-tree.ts +66 -0
- package/scripts/git/change-base.ts +42 -2
- package/scripts/git/changed-file-scope.ts +5 -5
- package/scripts/git/changed-paths.ts +1 -2
- package/scripts/git/constants.ts +2 -2
- package/scripts/git/git-branch.ts +1 -1
- package/scripts/git/git-closes-keyword.ts +3 -3
- package/scripts/git/git-command.ts +53 -41
- package/scripts/git/git-common-directory.ts +3 -3
- package/scripts/git/git-diff-reads.ts +14 -15
- package/scripts/git/git-error.ts +1 -1
- package/scripts/git/git-execa-error.ts +1 -2
- package/scripts/git/git-issue.ts +10 -8
- package/scripts/git/git-location-environment.ts +3 -4
- package/scripts/git/git-ls-remote.ts +6 -8
- package/scripts/git/git-pre-push-hook.ts +11 -10
- package/scripts/git/git-preflight.ts +5 -5
- package/scripts/git/git-push-transport.ts +2 -2
- package/scripts/git/git-remote-branch.ts +1 -2
- package/scripts/git/git-schemas.ts +16 -23
- package/scripts/git/git-spawn-sync.ts +1 -1
- package/scripts/git/git-spawn.ts +37 -14
- package/scripts/git/git-ssh-keepalive.ts +12 -5
- package/scripts/git/git-staging.ts +7 -8
- package/scripts/git/git-workflow.ts +1 -1
- package/scripts/git/git-worktree.ts +35 -27
- package/scripts/git/gone-branch.ts +2 -2
- package/scripts/git/listing-cutoff.ts +1 -2
- package/scripts/git/lockfile-sync.ts +65 -0
- package/scripts/git/main-merge-guard.ts +1 -2
- package/scripts/git/main-merge.ts +7 -7
- package/scripts/git/main-sync.ts +23 -8
- package/scripts/git/parse-json-array.ts +18 -23
- package/scripts/git/repository-lock.ts +34 -2
- package/scripts/git/stash/git-stash.ts +4 -5
- package/scripts/git/stash/stash-orphans.ts +5 -3
- package/scripts/git/stash/stash-pop-args.ts +1 -1
- package/scripts/git/stash/stash-pop-cli.ts +3 -3
- package/scripts/git/stash/stash-sweep-lock.ts +2 -2
- package/scripts/hooks/batch-guard.ts +11 -13
- package/scripts/hooks/check-commit-message.ts +12 -9
- package/scripts/hooks/codex-hook-adapter.ts +16 -10
- package/scripts/hooks/edited-cspell.ts +3 -4
- package/scripts/hooks/format-edited-cli.ts +1 -1
- package/scripts/hooks/format-edited-file.ts +11 -17
- package/scripts/hooks/format-rewrite-notice.ts +19 -17
- package/scripts/hooks/pre-push-unit.ts +10 -14
- package/scripts/hooks/pretool-guard-cli.ts +4 -4
- package/scripts/hooks/pretool-guard.ts +93 -18
- package/scripts/hooks/reserved-run.ts +2 -2
- package/scripts/hooks/step-zero-notice.ts +1 -1
- package/scripts/hooks/stop-guard.ts +21 -10
- package/scripts/init/basic-path-migration.ts +2 -2
- package/scripts/init/claude-kit-only-settings.ts +2 -2
- package/scripts/init/claude-plugin-config.ts +2 -2
- package/scripts/init/distributed-paths.ts +4 -4
- package/scripts/init/hook-command-rewrite.ts +3 -3
- package/scripts/init/hook-launch.ts +5 -5
- package/scripts/init/init-actions.ts +13 -0
- package/scripts/init/init-ai-copy.ts +11 -11
- package/scripts/init/init-bootstrap.ts +3 -3
- package/scripts/init/init-copy-content.ts +4 -4
- package/scripts/init/init-logic-json-merge.ts +7 -9
- package/scripts/init/init-logic-migrate.ts +1 -1
- package/scripts/init/init-logic-templates.ts +1 -1
- package/scripts/init/init-logic-workspace.ts +4 -4
- package/scripts/init/init-logic-yaml-merge.ts +2 -2
- package/scripts/init/init-logic.ts +19 -22
- package/scripts/init/init.ts +12 -8
- package/scripts/init/kit-base-preset.ts +1 -1
- package/scripts/init/kit-setup-state.ts +1 -1
- package/scripts/init/kit-written-paths.ts +1 -2
- package/scripts/init/package-manager-pin.ts +35 -0
- package/scripts/init/project-profile-cli.ts +1 -1
- package/scripts/init/project-profile.ts +3 -3
- package/scripts/init/session-language-environment.ts +1 -1
- package/scripts/init/start-exec.ts +3 -4
- package/scripts/init/start-plan.ts +2 -2
- package/scripts/init/start-setup-pr.ts +3 -2
- package/scripts/init/start-steps.ts +2 -2
- package/scripts/init/tsconfig-preset-migration.ts +1 -1
- package/scripts/init/vscode-tasks.ts +62 -0
- package/scripts/issue/baseline-measure.ts +2 -2
- package/scripts/issue/behavior-change-lint.ts +2 -2
- package/scripts/issue/defect-rate-cli.ts +6 -7
- package/scripts/issue/defect-rate.ts +37 -27
- package/scripts/issue/git-next-issues.ts +9 -8
- package/scripts/issue/issue-auto-ok.ts +49 -11
- package/scripts/issue/issue-backlinks-cli.ts +5 -5
- package/scripts/issue/issue-backlinks.ts +6 -6
- package/scripts/issue/issue-cite-cli.ts +20 -18
- package/scripts/issue/issue-cite.ts +18 -8
- package/scripts/issue/issue-closing-pr.ts +4 -4
- package/scripts/issue/issue-comment-cli.ts +6 -4
- package/scripts/issue/issue-file-cli.ts +75 -15
- package/scripts/issue/issue-file-fold.ts +155 -0
- package/scripts/issue/issue-file.ts +14 -6
- package/scripts/issue/issue-fold-cli.ts +14 -9
- package/scripts/issue/issue-fold.ts +23 -8
- package/scripts/issue/issue-labels.ts +46 -37
- package/scripts/issue/issue-lint-cli.ts +2 -2
- package/scripts/issue/issue-lint.ts +1 -1
- package/scripts/issue/issue-merged.ts +10 -4
- package/scripts/issue/issue-number-shape.ts +27 -0
- package/scripts/issue/issue-rank.ts +1 -1
- package/scripts/issue/issue-read-cli.ts +4 -5
- package/scripts/issue/issue-read.ts +4 -5
- package/scripts/issue/issue-reference.ts +5 -5
- package/scripts/issue/issue-release-cli.ts +165 -0
- package/scripts/issue/issue-release.ts +58 -0
- package/scripts/issue/issue-report-failures.ts +7 -4
- package/scripts/issue/issue-scout-cli.ts +11 -11
- package/scripts/issue/issue-scout-closed.ts +4 -4
- package/scripts/issue/issue-scout.ts +4 -5
- package/scripts/issue/issue-state-cli.ts +17 -10
- package/scripts/issue/issue-state.ts +12 -13
- package/scripts/issue/issue-wip.ts +7 -7
- package/scripts/issue/markdown-section.ts +3 -3
- package/scripts/issue/measure-rerun-cli.ts +10 -9
- package/scripts/issue/reproduction-measure.ts +3 -3
- package/scripts/issue/session-cite.ts +56 -0
- package/scripts/josh/agent-session-environment.ts +10 -8
- package/scripts/josh/cli-body.ts +2 -2
- package/scripts/josh/command-suggest.ts +1 -1
- package/scripts/josh/file-map-stamp.ts +20 -23
- package/scripts/josh/hook-decision.ts +24 -28
- package/scripts/josh/josh-command-map.ts +4 -1
- package/scripts/josh/josh-command-types.ts +32 -34
- package/scripts/josh/josh-commands-ai.ts +6 -6
- package/scripts/josh/josh-commands-backlog.ts +15 -3
- package/scripts/josh/josh-commands-clone.ts +1 -1
- package/scripts/josh/josh-commands-development.ts +33 -4
- package/scripts/josh/josh-commands-document.ts +3 -3
- package/scripts/josh/josh-commands-guard.ts +3 -3
- package/scripts/josh/josh-commands-issue.ts +11 -5
- package/scripts/josh/josh-commands-lane.ts +16 -5
- package/scripts/josh/josh-commands-lint.ts +1 -1
- package/scripts/josh/josh-commands-maintenance.ts +2 -2
- package/scripts/josh/josh-commands-run.ts +20 -6
- package/scripts/josh/josh-commands-split.ts +1 -2
- package/scripts/josh/josh-commands-versioning.ts +5 -5
- package/scripts/josh/josh-commands-workflow.ts +30 -22
- package/scripts/josh/josh-environment-file.ts +1 -1
- package/scripts/josh/josh-in-process.ts +3 -3
- package/scripts/josh/josh-logic.ts +10 -10
- package/scripts/josh/josh-run.ts +3 -3
- package/scripts/josh/josh-verdict.ts +9 -12
- package/scripts/josh/josh.ts +3 -3
- package/scripts/josh/kit-only.ts +2 -2
- package/scripts/josh/path-decision.ts +3 -3
- package/scripts/josh/platform-temporary.ts +7 -5
- package/scripts/josh/process-identity.ts +24 -6
- package/scripts/josh/process-owner.ts +4 -4
- package/scripts/josh/session-language-cli.ts +53 -11
- package/scripts/josh/session-language.ts +1 -1
- package/scripts/josh/stamp-file.ts +48 -29
- package/scripts/josh/stamp-record.ts +57 -0
- package/scripts/lane/lane-await.ts +35 -11
- package/scripts/lane/lane-cache.ts +6 -6
- package/scripts/lane/lane-capacity.ts +32 -17
- package/scripts/lane/lane-child-invocation.ts +17 -15
- package/scripts/lane/lane-child-marker.ts +12 -12
- package/scripts/lane/lane-cli.ts +20 -13
- package/scripts/lane/lane-close.ts +6 -6
- package/scripts/lane/lane-dispatch.ts +61 -72
- package/scripts/lane/lane-environment.ts +5 -5
- package/scripts/lane/lane-guard-policy.ts +7 -21
- package/scripts/lane/lane-handoff.ts +2 -2
- package/scripts/lane/lane-install.ts +9 -10
- package/scripts/lane/lane-launch-cli.ts +13 -8
- package/scripts/lane/lane-ledger.ts +73 -11
- package/scripts/lane/lane-leftover.ts +44 -30
- package/scripts/lane/lane-limit-cli.ts +160 -0
- package/scripts/lane/lane-limit-override.ts +74 -0
- package/scripts/lane/lane-load.ts +19 -68
- package/scripts/lane/lane-measure-cli.ts +15 -25
- package/scripts/lane/lane-occupancy.ts +6 -4
- package/scripts/lane/lane-open.ts +25 -24
- package/scripts/lane/lane-output.ts +4 -3
- package/scripts/lane/lane-paths.ts +22 -8
- package/scripts/lane/lane-phase.ts +33 -0
- package/scripts/lane/lane-reap.ts +2 -2
- package/scripts/lane/lane-registry.ts +27 -15
- package/scripts/lane/lane-relaunch.ts +9 -9
- package/scripts/lane/lane-report.ts +5 -4
- package/scripts/lane/lane-resume.ts +2 -2
- package/scripts/lane/lane-sampler.ts +55 -0
- package/scripts/lane/lane-seed.ts +7 -7
- package/scripts/lane/lane-stage-stats.ts +135 -0
- package/scripts/lane/lane-start-point.ts +8 -11
- package/scripts/lane/lane-stats.ts +60 -15
- package/scripts/lane/lane-stray.ts +140 -0
- package/scripts/lane/lane-vacant.ts +1 -1
- package/scripts/lane/openai-lane-supervisor-decision.ts +3 -7
- package/scripts/lane/openai-lane-supervisor-owner.ts +3 -9
- package/scripts/lane/openai-review-broker.ts +2 -4
- package/scripts/lib/ancestor-directories.ts +1 -1
- package/scripts/lib/bounded-pool.ts +2 -2
- package/scripts/lib/buffered-process.ts +4 -6
- package/scripts/lib/caddy-logs.sh +0 -0
- package/scripts/lib/cli-flags.ts +39 -6
- package/scripts/lib/error-message.ts +1 -1
- package/scripts/lib/json-value.ts +17 -3
- package/scripts/lib/poll.ts +1 -1
- package/scripts/lib/status-icons.ts +3 -3
- package/scripts/lib/timed-fetch.ts +1 -1
- package/scripts/lib/timeouts.ts +1 -1
- package/scripts/lines/bytes-command.ts +3 -4
- package/scripts/lines/effective-limit.ts +25 -12
- package/scripts/lines/line-budget.ts +47 -55
- package/scripts/lines/line-targets.ts +6 -2
- package/scripts/lines/lines-command.ts +3 -3
- package/scripts/lint/cspell-cached.ts +1 -1
- package/scripts/lint/cycle-recheck.ts +122 -0
- package/scripts/lint/format.ts +1 -2
- package/scripts/lint/lint-parallel.ts +34 -19
- package/scripts/lint/lint-related-scope.ts +25 -15
- package/scripts/lint/lint-related.ts +6 -7
- package/scripts/managed-marker/index.ts +1 -1
- package/scripts/managed-marker/managed-marker-logic.ts +1 -2
- package/scripts/notify/git-notify.ts +9 -7
- package/scripts/notify/telegram-notify.ts +53 -37
- package/scripts/notify/telegram-test-logic.ts +3 -3
- package/scripts/notify/telegram-test.ts +45 -30
- package/scripts/observations/observation-ledger-home.ts +14 -8
- package/scripts/observations/observation-ledger-line.ts +3 -2
- package/scripts/observations/observation-ledger-migrate.ts +3 -4
- package/scripts/observations/observation-ledger-prepare.ts +4 -4
- package/scripts/observations/observation-ledger.ts +14 -15
- package/scripts/observations/observation-record-cli.ts +83 -0
- package/scripts/observations/observation-record.ts +91 -0
- package/scripts/observations/observations-flush-cli.ts +1 -1
- package/scripts/observations/observations-flush-landing.ts +7 -6
- package/scripts/observations/observations-flush.ts +26 -27
- package/scripts/overrides/overrides-check.ts +18 -8
- package/scripts/package/package-scout-cli.ts +1 -1
- package/scripts/package/package-scout-format.ts +2 -2
- package/scripts/package/package-scout.ts +1 -1
- package/scripts/propagate/propagate-git-failure.ts +1 -1
- package/scripts/propagate/propagate-git.ts +7 -7
- package/scripts/propagate/propagate-plan.ts +2 -2
- package/scripts/propagate/propagate-publish.ts +2 -3
- package/scripts/propagate/propagate-run.ts +5 -7
- package/scripts/propagate/propagate-select.ts +1 -1
- package/scripts/propagate/propagate-steps.ts +19 -20
- package/scripts/propagate/propagate-targets.ts +6 -10
- package/scripts/propagate/propagate.ts +5 -5
- package/scripts/refactor/import-graph.ts +1 -1
- package/scripts/refactor/refactor-lint.ts +4 -10
- package/scripts/refactor/refactor-scan-cli.ts +1 -1
- package/scripts/refactor/refactor-scan.ts +2 -2
- package/scripts/refactor/refactor-targets.ts +1 -1
- package/scripts/release/github-release-cli.ts +25 -3
- package/scripts/release/github-release-environment.ts +1 -0
- package/scripts/release/github-release-runs.ts +115 -0
- package/scripts/release/github-release.ts +13 -67
- package/scripts/release/release-cli.ts +21 -4
- package/scripts/release/release-history.ts +6 -10
- package/scripts/release/release-plan.ts +3 -3
- package/scripts/release/release-progress.ts +3 -4
- package/scripts/release/release-publish.ts +8 -9
- package/scripts/release/release-scope-cli.ts +8 -10
- package/scripts/release/release-tag.ts +6 -8
- package/scripts/release/release-worktree.ts +5 -5
- package/scripts/repo/auto-merge-setting-logic.ts +7 -9
- package/scripts/repo/auto-merge-setting.ts +1 -1
- package/scripts/repo/repo-setting.ts +4 -4
- package/scripts/repo/repository-labels.ts +1 -1
- package/scripts/repo/required-checks-logic.ts +3 -3
- package/scripts/repo/required-checks-report.ts +1 -1
- package/scripts/repo/ruleset-check-cli.ts +1 -1
- package/scripts/repo/ruleset-check.ts +1 -1
- package/scripts/report/report-format-reference.ts +26 -0
- package/scripts/report/report-lint-cli.ts +2 -2
- package/scripts/report/report-lint.ts +16 -2
- package/scripts/review/disposition-cli.ts +2 -2
- package/scripts/review/disposition-logic.ts +1 -1
- package/scripts/review/live-evidence.ts +9 -6
- package/scripts/review/review-attest-cli.ts +1 -2
- package/scripts/review/review-attest.ts +3 -3
- package/scripts/review/review-brief-cli.ts +19 -20
- package/scripts/review/review-brief.ts +29 -32
- package/scripts/review/review-checkout.ts +2 -2
- package/scripts/review/review-diff-parts.ts +3 -5
- package/scripts/review/review-diff-write.ts +1 -1
- package/scripts/review/review-finding-ledger.ts +7 -4
- package/scripts/review/review-findings-cli.ts +2 -2
- package/scripts/review/review-level.ts +4 -7
- package/scripts/review/review-record-cli.ts +73 -16
- package/scripts/review/review-record.ts +5 -4
- package/scripts/review/review-round2-cli.ts +2 -3
- package/scripts/review/review-round2.ts +13 -21
- package/scripts/review/review-stamps.ts +9 -71
- package/scripts/review/review-tree.ts +4 -5
- package/scripts/rules/bash-triggers.ts +4 -4
- package/scripts/rules/decision-oracle-batch.ts +5 -6
- package/scripts/rules/decision-oracle-stage.ts +1 -1
- package/scripts/rules/decision-oracle-tokens.ts +1 -2
- package/scripts/rules/decision-oracle.ts +2 -2
- package/scripts/rules/delivered-rules.ts +61 -406
- package/scripts/rules/destructive-command.ts +2 -2
- package/scripts/rules/direct-filing.ts +4 -4
- package/scripts/rules/direct-pr-create.ts +2 -2
- package/scripts/rules/early-heartbeat.ts +15 -19
- package/scripts/rules/file-body.ts +5 -6
- package/scripts/rules/filing-cap.ts +6 -7
- package/scripts/rules/filing-offer.ts +1 -1
- package/scripts/rules/firing-point.ts +6 -6
- package/scripts/rules/gh-api.ts +2 -2
- package/scripts/rules/git-argv.ts +3 -3
- package/scripts/rules/git-force.ts +2 -2
- package/scripts/rules/hook-context-line.ts +31 -0
- package/scripts/rules/implementation-cut-verdict.ts +5 -8
- package/scripts/rules/implementation-cut.ts +35 -32
- package/scripts/rules/index-guard.ts +2 -2
- package/scripts/rules/issue-citation.ts +7 -7
- package/scripts/rules/issue-comments.ts +21 -13
- package/scripts/rules/josh-git-bare.ts +2 -2
- package/scripts/rules/lane-background.ts +14 -16
- package/scripts/rules/lane-carry-conflict.ts +41 -5
- package/scripts/rules/lane-interactive-ask.ts +6 -9
- package/scripts/rules/lane-park.ts +12 -16
- package/scripts/rules/lane-split-park.ts +1 -2
- package/scripts/rules/lane-switch-main.ts +10 -13
- package/scripts/rules/last-prompt.ts +1 -1
- package/scripts/rules/oracle-consulted.ts +5 -5
- package/scripts/rules/oracle-firing.ts +6 -9
- package/scripts/rules/oracle-list-cli.ts +2 -2
- package/scripts/rules/permission-guards.ts +2 -2
- package/scripts/rules/piped-verification.ts +79 -9
- package/scripts/rules/poll-loop.ts +9 -11
- package/scripts/rules/pre-gate-cut.ts +33 -30
- package/scripts/rules/prior-comment-read.ts +3 -3
- package/scripts/rules/protected-files.ts +25 -13
- package/scripts/rules/raw-field-body.ts +3 -4
- package/scripts/rules/reply-language.ts +1 -1
- package/scripts/rules/rule-body-guard.ts +10 -12
- package/scripts/rules/rule-guard.ts +1 -1
- package/scripts/rules/rule-list.ts +51 -0
- package/scripts/rules/rule-registry-rows.ts +282 -0
- package/scripts/rules/rule-registry.ts +109 -0
- package/scripts/rules/rule-value-cache.ts +2 -2
- package/scripts/rules/rule-value-cli.ts +6 -4
- package/scripts/rules/rule-value.ts +61 -22
- package/scripts/rules/run-tail-rule.ts +11 -15
- package/scripts/rules/shell-body-trigger.ts +7 -7
- package/scripts/rules/shell-segments.ts +2 -4
- package/scripts/rules/stop-rules.ts +54 -41
- package/scripts/rules/tail-commands.ts +1 -1
- package/scripts/rules/test-declared-commit.ts +2 -2
- package/scripts/rules/third-party-write.ts +3 -3
- package/scripts/rules/worktree-guard.ts +12 -5
- package/scripts/run/add/run-add-cli.ts +165 -0
- package/scripts/run/add/run-add.ts +124 -0
- package/scripts/run/board/run-board-cli.ts +207 -0
- package/scripts/run/board/run-board-closed.ts +95 -0
- package/scripts/run/board/run-board-every.ts +60 -0
- package/scripts/run/board/run-board-fetch.ts +38 -0
- package/scripts/run/board/run-board-fit.ts +219 -0
- package/scripts/run/board/run-board-github.ts +162 -0
- package/scripts/run/board/run-board-header.ts +275 -0
- package/scripts/run/board/run-board-kind.ts +35 -0
- package/scripts/run/board/run-board-labels.ts +299 -0
- package/scripts/run/board/run-board-layout.ts +222 -0
- package/scripts/run/board/run-board-link.ts +31 -0
- package/scripts/run/board/run-board-machine.ts +198 -0
- package/scripts/run/board/run-board-notes.ts +103 -0
- package/scripts/run/board/run-board-phase.ts +136 -0
- package/scripts/run/board/run-board-plan.ts +129 -0
- package/scripts/run/board/run-board-read.ts +62 -0
- package/scripts/run/board/run-board-render-legend.ts +82 -0
- package/scripts/run/board/run-board-render-notes.ts +77 -0
- package/scripts/run/board/run-board-render-slot.ts +50 -0
- package/scripts/run/board/run-board-render.ts +407 -0
- package/scripts/run/board/run-board-scope.ts +17 -0
- package/scripts/run/board/run-board-screen.ts +43 -0
- package/scripts/run/board/run-board-span.ts +66 -0
- package/scripts/run/board/run-board-spin.ts +115 -0
- package/scripts/run/board/run-board-state.ts +113 -0
- package/scripts/run/board/run-board-status.ts +279 -0
- package/scripts/run/board/run-board-tick.ts +210 -0
- package/scripts/run/board/run-board-track.ts +22 -0
- package/scripts/run/board/run-board-usage-read.ts +255 -0
- package/scripts/run/board/run-board-usage-rusage.ts +124 -0
- package/scripts/run/board/run-board-usage-text.ts +80 -0
- package/scripts/run/board/run-board-usage.ts +165 -0
- package/scripts/run/carry/run-carry-added.ts +62 -0
- package/scripts/run/carry/run-carry-args.ts +25 -22
- package/scripts/run/carry/run-carry-change.ts +1 -1
- package/scripts/run/carry/run-carry-cli.ts +71 -48
- package/scripts/run/carry/run-carry-conversation.ts +6 -7
- package/scripts/run/carry/run-carry-ended.ts +85 -0
- package/scripts/run/carry/run-carry-reclaim.ts +1 -1
- package/scripts/run/carry/run-carry-stash.ts +3 -2
- package/scripts/run/carry/run-carry-streak.ts +8 -10
- package/scripts/run/carry/run-carry.ts +85 -89
- package/scripts/run/cut/run-cut-args.ts +7 -7
- package/scripts/run/cut/run-cut-cli.ts +68 -37
- package/scripts/run/cut/run-cut-handoff.ts +15 -15
- package/scripts/run/cut/run-cut-report.ts +37 -16
- package/scripts/run/cut/run-cut.ts +63 -77
- package/scripts/run/detached-launch.ts +35 -50
- package/scripts/run/entry/run-entry-cli.ts +48 -27
- package/scripts/run/entry/run-entry-stop.ts +7 -9
- package/scripts/run/entry/run-entry.ts +5 -6
- package/scripts/run/event/run-event-cli.ts +5 -6
- package/scripts/run/event/run-event-filed.ts +69 -0
- package/scripts/run/event/run-event-follow.ts +3 -3
- package/scripts/run/event/run-event-plan.ts +38 -0
- package/scripts/run/event/run-event-render.ts +10 -4
- package/scripts/run/event/run-event-scope.ts +47 -18
- package/scripts/run/event/run-event-stream-emit.ts +64 -11
- package/scripts/run/event/run-event-stream.ts +172 -43
- package/scripts/run/event/run-event-watch.ts +4 -6
- package/scripts/run/hold/run-hold-cli.ts +65 -62
- package/scripts/run/hold/run-hold.ts +88 -46
- package/scripts/run/merge/run-merge-cli.ts +116 -77
- package/scripts/run/merge/run-merge-collect.ts +107 -0
- package/scripts/run/merge/run-merge-steps.ts +112 -65
- package/scripts/run/merge/run-merge-token.ts +30 -0
- package/scripts/run/merge/run-merge.ts +31 -22
- package/scripts/run/progress/run-progress-args.ts +4 -4
- package/scripts/run/progress/run-progress-cli.ts +39 -50
- package/scripts/run/progress/run-progress-clock.ts +25 -32
- package/scripts/run/progress/run-progress-config.ts +6 -9
- package/scripts/run/progress/run-progress-read.ts +9 -10
- package/scripts/run/progress/run-progress.ts +48 -53
- package/scripts/run/review/run-review-cli.ts +6 -6
- package/scripts/run/review/run-review-steps.ts +6 -6
- package/scripts/run/review/run-review.ts +9 -11
- package/scripts/run/run-cli-fault.ts +29 -0
- package/scripts/run/run-ending-cli.ts +3 -3
- package/scripts/run/run-ending.ts +10 -14
- package/scripts/run/run-halfrun-resume.ts +6 -8
- package/scripts/run/run-headless.ts +25 -12
- package/scripts/run/run-invocation.ts +17 -22
- package/scripts/run/run-label.ts +7 -5
- package/scripts/run/run-liveness-cli.ts +19 -6
- package/scripts/run/run-liveness.ts +27 -38
- package/scripts/run/run-next-cli.ts +5 -9
- package/scripts/run/run-next.ts +4 -5
- package/scripts/run/run-parent-cut-hook.ts +10 -12
- package/scripts/run/run-preflight.ts +25 -29
- package/scripts/run/run-prep-cli.ts +17 -13
- package/scripts/run/run-prep-locate.ts +4 -5
- package/scripts/run/run-prep.ts +7 -10
- package/scripts/run/run-prrun-resume.ts +2 -2
- package/scripts/run/run-report-cli.ts +4 -4
- package/scripts/run/run-report.ts +9 -14
- package/scripts/run/run-retrospective.ts +3 -3
- package/scripts/run/run-section.ts +42 -0
- package/scripts/run/run-stage-read.ts +2 -2
- package/scripts/run/run-stage.ts +6 -4
- package/scripts/run/run-status-cli.ts +7 -5
- package/scripts/run/run-status.ts +6 -7
- package/scripts/run/run-step-cli.ts +13 -15
- package/scripts/run/run-step.ts +62 -48
- package/scripts/run/run-stop-notify.ts +7 -8
- package/scripts/run/run-stranded-cli.ts +1 -1
- package/scripts/run/run-stranded-detect.ts +4 -4
- package/scripts/run/run-stranded.ts +11 -13
- package/scripts/run/run-tail-cli.ts +15 -16
- package/scripts/run/run-tail.ts +14 -33
- package/scripts/run/run-watcher-guard-cli.ts +3 -4
- package/scripts/run/run-watcher-guard.ts +11 -12
- package/scripts/run/run-watcher-hook.ts +6 -12
- package/scripts/run/ship/run-ship-cli.ts +67 -33
- package/scripts/run/ship/run-ship-detach.ts +15 -13
- package/scripts/run/ship/run-ship-lock.ts +1 -1
- package/scripts/run/ship/run-ship-next.ts +7 -8
- package/scripts/run/ship/run-ship-pre-detach.ts +27 -11
- package/scripts/run/ship/run-ship-preflight.ts +10 -11
- package/scripts/run/ship/run-ship-probe.ts +4 -4
- package/scripts/run/ship/run-ship-return.ts +1 -1
- package/scripts/run/ship/run-ship-review-steps.ts +43 -24
- package/scripts/run/ship/run-ship-review.ts +12 -14
- package/scripts/run/ship/run-ship-scoped.ts +15 -6
- package/scripts/run/ship/run-ship-stage.ts +80 -26
- package/scripts/run/ship/run-ship-steps.ts +26 -16
- package/scripts/run/ship/run-ship-stop-text.ts +4 -2
- package/scripts/run/ship/run-ship-sync.ts +9 -8
- package/scripts/run/ship/run-ship.ts +17 -32
- package/scripts/run/tidy/run-tidy-cli.ts +9 -5
- package/scripts/run/tidy/run-tidy-lanes.ts +18 -7
- package/scripts/run/tidy/run-tidy-stashes.ts +8 -8
- package/scripts/run/tidy/run-tidy.ts +4 -3
- package/scripts/run/wake/run-wake-cli.ts +27 -33
- package/scripts/run/wake/run-wake-describe.ts +76 -29
- package/scripts/run/wake/run-wake-driver.ts +14 -14
- package/scripts/run/wake/run-wake-handoff.ts +6 -6
- package/scripts/run/wake/run-wake-loop.ts +13 -21
- package/scripts/run/wake/run-wake-restart.ts +4 -5
- package/scripts/run/wake/run-wake-session.ts +23 -27
- package/scripts/run/wake/run-wake.ts +57 -328
- package/scripts/safe-chain/ci-installer-pin.ts +3 -3
- package/scripts/safe-chain/pack-hook.ts +2 -2
- package/scripts/safe-chain/preinstall-command.ts +2 -2
- package/scripts/security/security-audit-logic.ts +1 -1
- package/scripts/security/security-audit-provision-logic.ts +1 -1
- package/scripts/security/security-audit-provision.ts +2 -2
- package/scripts/security/security-audit.ts +5 -5
- package/scripts/security/security-updates-logic.ts +2 -3
- package/scripts/security/security-updates.ts +2 -4
- package/scripts/self-sync-guard/index.ts +1 -1
- package/scripts/self-sync-guard/self-sync-guard-logic.ts +2 -2
- package/scripts/self-sync-guard/self-sync-refusal.ts +1 -1
- package/scripts/sonar/sonar-hotspots-cli.ts +1 -1
- package/scripts/sonar/sonar-hotspots.ts +1 -1
- package/scripts/sonar/sonar-new-code-cli.ts +1 -1
- package/scripts/sonar/sonar-new-code.ts +1 -1
- package/scripts/sonar/sonar-project.ts +1 -1
- package/scripts/split/split-assess-cli.ts +1 -1
- package/scripts/split/split-assess.ts +3 -3
- package/scripts/sync/directory-copy-guard.ts +2 -3
- package/scripts/sync/managed-config-scope-cli.ts +1 -2
- package/scripts/sync/managed-config-scope.ts +4 -4
- package/scripts/sync/plugin-skill-directories.ts +2 -2
- package/scripts/sync/reconcile-templates.ts +17 -8
- package/scripts/sync/removed-skill-manifest.ts +2 -3
- package/scripts/sync/sync-ai-files.ts +7 -7
- package/scripts/sync/sync-configs.ts +30 -3
- package/scripts/sync/sync-hook-safety.ts +2 -2
- package/scripts/sync/sync.ts +23 -10
- package/scripts/sync/synced-paths.ts +2 -1
- package/scripts/sync/workflow-pin-logic.ts +1 -1
- package/scripts/test/test-declared-changed.ts +4 -4
- package/scripts/test/test-declared-logic.ts +2 -3
- package/scripts/test/test-declared-match.ts +25 -4
- package/scripts/test/test-declared.ts +26 -9
- package/scripts/test/test-red-commit.ts +3 -2
- package/scripts/test/test-red-logic.ts +7 -14
- package/scripts/test/test-red.ts +12 -47
- package/scripts/test/test-related-scope.ts +2 -3
- package/scripts/test/test-related.ts +3 -3
- package/scripts/test/test-type-logic.ts +1 -2
- package/scripts/test/test-unit-guard.ts +13 -17
- package/scripts/test/unit-worker-share.ts +7 -8
- package/scripts/time-runtime/time-agent-bundles.ts +2 -4
- package/scripts/time-runtime/time-background.ts +17 -21
- package/scripts/time-runtime/time-batch-guard.ts +67 -342
- package/scripts/time-runtime/time-bundle-call.ts +26 -28
- package/scripts/time-runtime/time-bundles.ts +11 -12
- package/scripts/time-runtime/time-call-identity.ts +1 -1
- package/scripts/time-runtime/time-command-key.ts +2 -2
- package/scripts/time-runtime/time-density-hook.ts +8 -11
- package/scripts/time-runtime/time-density.ts +5 -5
- package/scripts/time-runtime/time-followup-stage.ts +7 -7
- package/scripts/time-runtime/time-format.ts +5 -5
- package/scripts/time-runtime/time-hook-transcript.ts +3 -3
- package/scripts/time-runtime/time-instant.ts +1 -1
- package/scripts/time-runtime/time-markers.ts +15 -19
- package/scripts/time-runtime/time-phase-names.ts +3 -3
- package/scripts/time-runtime/time-reported-failure.ts +15 -19
- package/scripts/time-runtime/time-round-trips.ts +20 -23
- package/scripts/time-runtime/time-shell.ts +8 -8
- package/scripts/time-runtime/time-single-check.ts +1 -2
- package/scripts/time-runtime/time-spans.ts +35 -40
- package/scripts/time-runtime/time-tool-call.ts +15 -16
- package/scripts/time-runtime/time-transcript-line.ts +53 -34
- package/scripts/time-runtime/time-writes.ts +5 -5
- package/scripts/ui/ui-routes-cli.ts +1 -2
- package/scripts/ui/ui-routes.ts +1 -2
- package/scripts/version/bump-version.ts +1 -1
- package/scripts/version/fresh-metadata-cache.ts +2 -2
- package/scripts/version/latest-corepack.ts +129 -98
- package/scripts/version/latest-lane-guard.ts +1 -1
- package/scripts/version/latest-scope-cli.ts +2 -2
- package/scripts/version/latest-stamp.ts +1 -2
- package/scripts/version/latest-update.ts +2 -2
- package/scripts/version/npm-registry.ts +2 -2
- package/scripts/version/package-manager-version.ts +18 -0
- package/scripts/version/publishable-range-check.ts +2 -1
- package/scripts/version/publishable-range.ts +1 -1
- package/scripts/version/release-age.ts +11 -11
- package/scripts/version/release-hold.ts +2 -2
- package/scripts/version/safe-chain-version-update.ts +3 -3
- package/scripts/version/version-check-logic.ts +2 -3
- package/scripts/version/version-check.ts +1 -2
- package/scripts/version/version-command-config.ts +2 -2
- package/scripts/version/version-commands.ts +3 -3
- package/scripts/version/version-remote.ts +4 -4
- package/scripts/version/version-targets.ts +2 -2
- package/templates/gitignore +7 -0
- package/templates/workflows/github-release.yml +4 -0
- package/dist/hooks/chunk-NV2JRZZO.js +0 -6385
- package/dist/hooks/chunk-RKUAD3I6.js +0 -90
- package/dist/hooks/chunk-WPALEIRX.js +0 -18
- package/scripts/backlog/backlog-restructure.ts +0 -152
- package/scripts/rules/issue-fold-rule.ts +0 -72
- package/scripts/rules/wip-cap.ts +0 -63
- package/scripts/run/run-issue-number.ts +0 -19
|
@@ -28,6 +28,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
28
28
|
category: 'Development',
|
|
29
29
|
reference: ['', 'developer', ['processes']],
|
|
30
30
|
core_weight: core_budget.CORE_WEIGHTS.lint,
|
|
31
|
+
memory_mb: core_budget.MEMORY_MB.lint,
|
|
31
32
|
},
|
|
32
33
|
'lint:related': {
|
|
33
34
|
script: 'scripts/lint/lint-related.ts',
|
|
@@ -35,6 +36,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
35
36
|
category: 'Development',
|
|
36
37
|
reference: [FILE_ARGUMENTS, 'developer', ['processes']],
|
|
37
38
|
core_weight: core_budget.CORE_WEIGHTS.lint,
|
|
39
|
+
memory_mb: core_budget.MEMORY_MB.lint,
|
|
38
40
|
},
|
|
39
41
|
lines: {
|
|
40
42
|
script: 'scripts/lines/lines-command.ts',
|
|
@@ -42,6 +44,21 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
42
44
|
category: 'Development',
|
|
43
45
|
reference: [REQUIRED_FILE_ARGUMENTS, 'developer', ['none']],
|
|
44
46
|
core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
|
|
47
|
+
memory_mb: core_budget.MEMORY_MB.eslint_scan,
|
|
48
|
+
},
|
|
49
|
+
metrics: {
|
|
50
|
+
script: 'scripts/metrics/metrics-command.ts',
|
|
51
|
+
description:
|
|
52
|
+
'Print repository-wide quality totals and durations, and fail when a total grew past the merge-base or a duration past its baseline',
|
|
53
|
+
category: 'Development',
|
|
54
|
+
reference: [
|
|
55
|
+
'[--no-startup | --totals-only | --accept --reason "<why>"]',
|
|
56
|
+
'developer',
|
|
57
|
+
['files'],
|
|
58
|
+
],
|
|
59
|
+
core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
|
|
60
|
+
memory_mb: core_budget.MEMORY_MB.eslint_scan,
|
|
61
|
+
is_kit_only: true,
|
|
45
62
|
},
|
|
46
63
|
'refactor:scan': {
|
|
47
64
|
script: 'scripts/refactor/refactor-scan-cli.ts',
|
|
@@ -50,6 +67,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
50
67
|
category: 'Development',
|
|
51
68
|
reference: ['', 'automation', ['processes']],
|
|
52
69
|
core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
|
|
70
|
+
memory_mb: core_budget.MEMORY_MB.eslint_scan,
|
|
53
71
|
},
|
|
54
72
|
bytes: {
|
|
55
73
|
script: 'scripts/lines/bytes-command.ts',
|
|
@@ -65,6 +83,13 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
65
83
|
category: 'AI tools',
|
|
66
84
|
reference: ['[--refresh]', 'developer', ['files']],
|
|
67
85
|
},
|
|
86
|
+
'rule:list': {
|
|
87
|
+
script: 'scripts/rules/rule-list.ts',
|
|
88
|
+
description:
|
|
89
|
+
"Print the trigger-delivered rules — each one's source, firing call and silent turn — from the guard rows",
|
|
90
|
+
category: 'AI tools',
|
|
91
|
+
reference: ['', 'automation', ['none']],
|
|
92
|
+
},
|
|
68
93
|
format: {
|
|
69
94
|
script: 'scripts/lint/format.ts',
|
|
70
95
|
description: 'Format code with prettier and eslint (skips a tool a basic project lacks)',
|
|
@@ -86,8 +111,8 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
86
111
|
// **No `tsx_arguments`, deliberately.** `JOSH_BATCH_GUARD` is a per-machine preference kept in
|
|
87
112
|
// `.env`, which every other command reads through `OPTIONAL_ENV_FILE_FLAGS` — but declaring any
|
|
88
113
|
// `tsx_arguments` disqualifies a command from in-process dispatch (`josh-in-process.ts`), and
|
|
89
|
-
// this one runs before every `Bash` call
|
|
90
|
-
//
|
|
114
|
+
// this one runs before every `Bash` call, where a second ~0.16 s tsx start is not affordable.
|
|
115
|
+
// The script calls `process.loadEnvFile` itself instead, which is
|
|
91
116
|
// node's own `--env-file` parser with node's own precedence.
|
|
92
117
|
},
|
|
93
118
|
'pretool:guard': {
|
|
@@ -114,7 +139,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
114
139
|
'session:lang': {
|
|
115
140
|
script: 'scripts/josh/session-language-cli.ts',
|
|
116
141
|
description:
|
|
117
|
-
'Claude Code hook: print
|
|
142
|
+
'Claude Code hook: print a non-default JOSH_SESSION_LANG for the session context, and the run:board reply rule while a backlogrun is live (otherwise nothing)',
|
|
118
143
|
category: 'Development',
|
|
119
144
|
reference: ['', 'automation', ['none']],
|
|
120
145
|
// **No `tsx_arguments`, deliberately**, the same as `batch:guard` above: this runs on every
|
|
@@ -128,7 +153,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
128
153
|
category: 'Development',
|
|
129
154
|
reference: ['<pretool|posttool>', 'automation', ['none']],
|
|
130
155
|
// The live-source fallback `scripts/hooks/run-hook.sh` derives from the `codex-hook-adapter`
|
|
131
|
-
// bundle name
|
|
156
|
+
// bundle name. **No `tsx_arguments`**, the same as `pretool:guard`
|
|
132
157
|
// above: it runs before every guarded Codex call.
|
|
133
158
|
},
|
|
134
159
|
'cspell:dot': {
|
|
@@ -137,6 +162,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
137
162
|
category: 'Development',
|
|
138
163
|
reference: ['', 'developer', ['processes']],
|
|
139
164
|
core_weight: core_budget.CORE_WEIGHTS.spell_check,
|
|
165
|
+
memory_mb: core_budget.MEMORY_MB.spell_check,
|
|
140
166
|
},
|
|
141
167
|
behavior: {
|
|
142
168
|
script: 'scripts/behavior/behavior-cli.ts',
|
|
@@ -159,6 +185,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
159
185
|
category: 'Development',
|
|
160
186
|
reference: [FILTER_ARGUMENTS, 'developer', ['processes']],
|
|
161
187
|
core_weight: gate_plan.direct_unit_weight,
|
|
188
|
+
memory_mb: gate_plan.direct_unit_memory,
|
|
162
189
|
},
|
|
163
190
|
'test:related': {
|
|
164
191
|
script: 'scripts/test/test-related.ts',
|
|
@@ -166,6 +193,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
166
193
|
category: 'Development',
|
|
167
194
|
reference: [FILE_ARGUMENTS, 'developer', ['processes']],
|
|
168
195
|
core_weight: gate_plan.direct_unit_weight,
|
|
196
|
+
memory_mb: gate_plan.direct_unit_memory,
|
|
169
197
|
},
|
|
170
198
|
'test:declared': {
|
|
171
199
|
script: 'scripts/test/test-declared.ts',
|
|
@@ -213,6 +241,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
213
241
|
category: 'Development',
|
|
214
242
|
reference: ['[arguments...]', 'developer', ['processes']],
|
|
215
243
|
core_weight: core_budget.CORE_WEIGHTS.type_check,
|
|
244
|
+
memory_mb: core_budget.MEMORY_MB.type_check,
|
|
216
245
|
},
|
|
217
246
|
port: {
|
|
218
247
|
script: 'scripts/ports/port-command.ts',
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { CommandEntry } from './josh-command-types'
|
|
2
2
|
|
|
3
3
|
// The document-reading and -editing command registry, split out of `josh-commands-ai.ts` so that file
|
|
4
|
-
// stays under its 300-code-line limit, exactly as `SPLIT_COMMANDS` was for the same reason
|
|
5
|
-
//
|
|
4
|
+
// stays under its 300-code-line limit, exactly as `SPLIT_COMMANDS` was for the same reason.
|
|
5
|
+
// It is spread into
|
|
6
6
|
// `AI_COMMANDS` so the commands stay grouped under the 'AI tools' category. `read:files` and
|
|
7
|
-
// `edit:files` are the read/write halves of the round-trip fold
|
|
7
|
+
// `edit:files` are the read/write halves of the round-trip fold.
|
|
8
8
|
|
|
9
9
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
10
10
|
const DOCUMENT_COMMANDS: Record<string, CommandEntry> = {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { CommandEntry } from './josh-command-types'
|
|
2
2
|
|
|
3
3
|
// The `PreToolUse` guard registry, split out of `josh-commands-ai.ts` so that file stays under its
|
|
4
|
-
// 300-code-line limit, exactly as `LANE_COMMANDS` and `SPLIT_COMMANDS` were for the same reason
|
|
5
|
-
//
|
|
4
|
+
// 300-code-line limit, exactly as `LANE_COMMANDS` and `SPLIT_COMMANDS` were for the same reason.
|
|
5
|
+
// It is spread into
|
|
6
6
|
// `AI_COMMANDS` so the guards stay grouped with the other AI tools.
|
|
7
7
|
//
|
|
8
|
-
// **None declare `tsx_arguments`, for the reason `batch:guard` declares none
|
|
8
|
+
// **None declare `tsx_arguments`, for the reason `batch:guard` declares none**:
|
|
9
9
|
// declaring any disqualifies a command from in-process dispatch, and these run in front of every read
|
|
10
10
|
// or shell call. Each script calls `process.loadEnvFile` itself instead, through `hook-decision.ts`.
|
|
11
11
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CommandEntry } from './josh-command-types'
|
|
2
2
|
|
|
3
3
|
// The issue-reading and issue-citation commands, split out of `josh-commands-ai.ts` when the mandated
|
|
4
|
-
// `issue:cite` section pushed that file past its 300-line ceiling
|
|
4
|
+
// `issue:cite` section pushed that file past its 300-line ceiling — the same
|
|
5
5
|
// group-per-file shape `LANE_COMMANDS` and `SPLIT_COMMANDS` already take. `COMMAND_MAP` spreads this
|
|
6
6
|
// in, so nothing downstream sees where an entry lives.
|
|
7
7
|
|
|
@@ -33,8 +33,7 @@ const ISSUE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
33
33
|
},
|
|
34
34
|
'defect:rate': {
|
|
35
35
|
script: 'scripts/issue/defect-rate-cli.ts',
|
|
36
|
-
description:
|
|
37
|
-
'Print the defect rate of merged work: defects filed per behavior change completed',
|
|
36
|
+
description: 'Print the defect rate of merged work: defects filed per enhancement completed',
|
|
38
37
|
category: 'AI tools',
|
|
39
38
|
reference: ['[--days <n>]', 'automation', ['network']],
|
|
40
39
|
},
|
|
@@ -66,14 +65,21 @@ const ISSUE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
66
65
|
'issue:file': {
|
|
67
66
|
script: 'scripts/issue/issue-file-cli.ts',
|
|
68
67
|
description:
|
|
69
|
-
'File an Issue with every filing step: lint, Origin, WIP cap, duplicate scout, labels, then epic:bundle',
|
|
68
|
+
'File an Issue with every filing step: lint, Origin, fold, WIP cap, duplicate scout, labels, then epic:bundle',
|
|
70
69
|
category: 'AI tools',
|
|
71
70
|
reference: [
|
|
72
|
-
'<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,…>] [--over-cap] [--no-auto-ok]',
|
|
71
|
+
'<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,…>] [--over-cap] [--no-auto-ok] [--requested] [--release]',
|
|
73
72
|
'automation',
|
|
74
73
|
['network'],
|
|
75
74
|
],
|
|
76
75
|
},
|
|
76
|
+
'issue:release': {
|
|
77
|
+
script: 'scripts/issue/issue-release-cli.ts',
|
|
78
|
+
description:
|
|
79
|
+
"Link an Issue to the repository's open release Issue as its blocker, filing one when none is open",
|
|
80
|
+
category: 'AI tools',
|
|
81
|
+
reference: ['<issue>', 'automation', ['network']],
|
|
82
|
+
},
|
|
77
83
|
}
|
|
78
84
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
79
85
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
|
|
2
2
|
|
|
3
3
|
// The `lane:*` command registry, split out of `josh-commands-ai.ts` so that file stays under its line
|
|
4
|
-
// limit
|
|
4
|
+
// limit. One script answers `lane:open` / `lane:close` / `lane:list` /
|
|
5
5
|
// `lane:prune` / `lane:output` / `lane:dispatch` / `lane:await`, told apart by the verb below;
|
|
6
6
|
// `lane:launch` is the composite that opens, pops-and-installs on the first lane, and dispatches.
|
|
7
7
|
const LANE_SCRIPT = 'scripts/lane/lane-cli.ts'
|
|
@@ -39,7 +39,8 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
39
39
|
},
|
|
40
40
|
'lane:prune': {
|
|
41
41
|
...LANE_ARGUMENTS,
|
|
42
|
-
description:
|
|
42
|
+
description:
|
|
43
|
+
'Close every lane an interruption left without its work tree, then sweep unregistered leftovers under the lanes root',
|
|
43
44
|
category: 'AI tools',
|
|
44
45
|
reference: ['', 'automation', ['files', 'git']],
|
|
45
46
|
default_script_arguments: ['prune'],
|
|
@@ -73,12 +74,22 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
73
74
|
category: 'AI tools',
|
|
74
75
|
reference: ['<issue> [--stash <message>]', 'automation', ['files', 'git', 'processes']],
|
|
75
76
|
},
|
|
76
|
-
//
|
|
77
|
+
// A live run's lane limit: `.env` is read so the bare form reports the
|
|
78
|
+
// `JOSH_LANE_LIMIT` a person set there when no override stands.
|
|
79
|
+
'lane:limit': {
|
|
80
|
+
script: 'scripts/lane/lane-limit-cli.ts',
|
|
81
|
+
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
82
|
+
description:
|
|
83
|
+
'Change a live backlogrun’s lane limit without stopping it, or print the limit, lanes in use and free lanes',
|
|
84
|
+
category: 'AI tools',
|
|
85
|
+
reference: ['[<limit>] [--reset]', 'developer', ['files']],
|
|
86
|
+
},
|
|
87
|
+
// The lane-limit measurement: `.env` is read so `lane:stats` labels the row
|
|
77
88
|
// with the `JOSH_LANE_LIMIT` a person set there.
|
|
78
89
|
'lane:sample': {
|
|
79
90
|
...MEASURE_ARGUMENTS,
|
|
80
91
|
description:
|
|
81
|
-
'Record the machine load (load average, swap, free memory, working lanes) to the lane ledger',
|
|
92
|
+
'Record the machine load (load average, swap, free memory, working lanes) to the lane ledger — a backlogrun samples itself, this is for a reading outside one',
|
|
82
93
|
category: 'AI tools',
|
|
83
94
|
reference: ['[--every <seconds>]', 'maintainer', ['files']],
|
|
84
95
|
default_script_arguments: ['sample'],
|
|
@@ -86,7 +97,7 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
86
97
|
'lane:stats': {
|
|
87
98
|
...MEASURE_ARGUMENTS,
|
|
88
99
|
description:
|
|
89
|
-
'Print one table row of lane throughput, gate duration and machine load over a period',
|
|
100
|
+
'Print one table row of lane throughput, gate duration and machine load over a period, and the per-stage durations of a lane under it',
|
|
90
101
|
category: 'AI tools',
|
|
91
102
|
reference: ['--period <days> [--limit <lane-limit>]', 'maintainer', ['none']],
|
|
92
103
|
default_script_arguments: ['stats'],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CommandEntry } from './josh-command-types'
|
|
2
2
|
|
|
3
|
-
// The linters for the fixed-shape artifacts a run writes by hand
|
|
3
|
+
// The linters for the fixed-shape artifacts a run writes by hand. They are
|
|
4
4
|
// `AI tools` by category, like every other automation command, but live in their own file so
|
|
5
5
|
// `josh-commands-ai.ts` stays under its line ceiling.
|
|
6
6
|
|
|
@@ -45,9 +45,9 @@ const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
45
45
|
shell: [
|
|
46
46
|
'sh',
|
|
47
47
|
'-c',
|
|
48
|
-
'export NODE_AUTH_TOKEN=$(gh auth token) && pnpm josh latest:guard && pnpm josh latest:
|
|
48
|
+
'export NODE_AUTH_TOKEN=$(gh auth token) && pnpm josh latest:guard && pnpm josh latest:update && pnpm josh ranges && pnpm josh audit && pnpm josh latest:corepack && pnpm josh latest:scope --record',
|
|
49
49
|
],
|
|
50
|
-
description: 'Update
|
|
50
|
+
description: 'Update dependencies, run security audit, then update pnpm',
|
|
51
51
|
category: 'Maintenance',
|
|
52
52
|
reference: ['', 'developer', ['files', 'network', 'processes']],
|
|
53
53
|
argument_targets: ['latest:corepack', 'latest:update', 'audit'],
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
|
|
2
2
|
|
|
3
3
|
// The run-lifecycle registry (`run:hold` through `run:step`), split out of `josh-commands-ai.ts` so
|
|
4
|
-
// that file stays under its 300-code-line limit, as `BACKLOG_COMMANDS` and `LANE_COMMANDS`
|
|
5
|
-
//
|
|
6
|
-
//
|
|
4
|
+
// that file stays under its 300-code-line limit, as `BACKLOG_COMMANDS` and `LANE_COMMANDS` are. It
|
|
5
|
+
// is spread into `AI_COMMANDS` at the place the entries belong, so the generated catalog keeps their
|
|
6
|
+
// order.
|
|
7
7
|
|
|
8
8
|
// One script answers both `run:hold` and `run:release`; the flag below is what tells them apart.
|
|
9
9
|
const RUN_HOLD_SCRIPT = 'scripts/run/hold/run-hold-cli.ts'
|
|
@@ -32,12 +32,18 @@ const RUN_COMMANDS: Record<string, CommandEntry> = {
|
|
|
32
32
|
'run:carry': {
|
|
33
33
|
script: 'scripts/run/carry/run-carry-cli.ts',
|
|
34
34
|
// `--stopped` sends the stop confirmation, so the Telegram credentials come from `.env` as for
|
|
35
|
-
// `run:wake` below
|
|
35
|
+
// `run:wake` below.
|
|
36
36
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
37
37
|
description: 'Carry one invocation’s budget across its own session cuts',
|
|
38
38
|
category: 'AI tools',
|
|
39
39
|
reference: ['<operation> [arguments...]', 'automation', ['files']],
|
|
40
40
|
},
|
|
41
|
+
'run:add': {
|
|
42
|
+
script: 'scripts/run/add/run-add-cli.ts',
|
|
43
|
+
description: 'Add issues to a live backlogrun, ahead of the queue unless --no-priority',
|
|
44
|
+
category: 'AI tools',
|
|
45
|
+
reference: ['<issue...> [--no-priority]', 'automation', ['network', 'files']],
|
|
46
|
+
},
|
|
41
47
|
'run:wake': {
|
|
42
48
|
script: 'scripts/run/wake/run-wake-cli.ts',
|
|
43
49
|
// `.env` rather than the ambient environment:
|
|
@@ -76,18 +82,26 @@ const RUN_COMMANDS: Record<string, CommandEntry> = {
|
|
|
76
82
|
['files'],
|
|
77
83
|
],
|
|
78
84
|
},
|
|
85
|
+
'run:board': {
|
|
86
|
+
script: 'scripts/run/board/run-board-cli.ts',
|
|
87
|
+
// `--every` pushes its frame as a Telegram, so the credentials come from `.env` as for `run:carry`.
|
|
88
|
+
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
89
|
+
description: 'Draw a live board of the running backlogrun, redrawn every second',
|
|
90
|
+
category: 'AI tools',
|
|
91
|
+
reference: ['[--once | --chat | --every <minutes>]', 'automation', ['files', 'network']],
|
|
92
|
+
},
|
|
79
93
|
'run:prep': {
|
|
80
94
|
script: 'scripts/run/run-prep-cli.ts',
|
|
81
95
|
description: 'Bundle a run’s pre-edit reads: body, comments, state, dependency scope',
|
|
82
96
|
category: 'AI tools',
|
|
83
97
|
reference: ['<issue>', 'automation', ['network']],
|
|
84
98
|
},
|
|
85
|
-
// The entry sequence a lane opened on, folded into one call
|
|
99
|
+
// The entry sequence a lane opened on, folded into one call: claim the tree,
|
|
86
100
|
// read the budget, gather the issue reads and decide the pre-implementation step. `run:hold`,
|
|
87
101
|
// `cost --cut`, `run:prep` and `run:step` were four round trips re-billing a lane's full context each.
|
|
88
102
|
'run:entry': {
|
|
89
103
|
script: 'scripts/run/entry/run-entry-cli.ts',
|
|
90
|
-
// A `busy` hold or an `over` budget sends the stop confirmation
|
|
104
|
+
// A `busy` hold or an `over` budget sends the stop confirmation.
|
|
91
105
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
92
106
|
description:
|
|
93
107
|
'Open a run in one call: claim the tree, read the budget, bundle the reads, decide the pre-implementation step',
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { CommandEntry } from './josh-command-types'
|
|
2
2
|
|
|
3
3
|
// The `split:assess` command registry, split out of `josh-commands-ai.ts` so that file stays under its
|
|
4
|
-
// 300-code-line limit, exactly as `LANE_COMMANDS` was for the same reason
|
|
5
|
-
// joshuafolkken/kit#2218). It is spread into `AI_COMMANDS` so the command stays grouped with the other
|
|
4
|
+
// 300-code-line limit, exactly as `LANE_COMMANDS` was for the same reason. It is spread into `AI_COMMANDS` so the command stays grouped with the other
|
|
6
5
|
// decision oracles under the 'AI tools' category.
|
|
7
6
|
|
|
8
7
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
@@ -24,16 +24,16 @@ const VERSIONING_COMMANDS: Record<string, CommandEntry> = {
|
|
|
24
24
|
category: 'Versioning',
|
|
25
25
|
reference: ['', 'developer', ['network']],
|
|
26
26
|
},
|
|
27
|
-
// The one place that decides a version
|
|
27
|
+
// The one place that decides a version. A `script` entry for the same
|
|
28
28
|
// reason `ranges` is one: script paths resolve against the kit package root, so it keeps working
|
|
29
29
|
// from a consumer repository where the file lives under node_modules.
|
|
30
30
|
release: {
|
|
31
31
|
script: 'scripts/release/release-cli.ts',
|
|
32
32
|
description: 'Release the merges main has taken since the version last changed',
|
|
33
33
|
category: 'Versioning',
|
|
34
|
-
reference: ['[
|
|
34
|
+
reference: ['[--dry-run]', 'maintainer', ['git', 'network', 'release']],
|
|
35
35
|
},
|
|
36
|
-
// The read-only half of the one above
|
|
36
|
+
// The read-only half of the one above. `release --dry-run` cannot
|
|
37
37
|
// answer this question: it refuses off the default branch and on a dirty tree, which is every
|
|
38
38
|
// position a run asks it from. A `script` entry for the same reason `release` is one.
|
|
39
39
|
'release:scope': {
|
|
@@ -42,8 +42,8 @@ const VERSIONING_COMMANDS: Record<string, CommandEntry> = {
|
|
|
42
42
|
category: 'Versioning',
|
|
43
43
|
reference: ['[--json]', 'automation', ['none']],
|
|
44
44
|
},
|
|
45
|
-
// Run by the release workflows, kit's and the one sync distributes, after a tag has published
|
|
46
|
-
//
|
|
45
|
+
// Run by the release workflows, kit's and the one sync distributes, after a tag has published.
|
|
46
|
+
// Settings come from the environment, so the workflow decides them.
|
|
47
47
|
'release:github': {
|
|
48
48
|
script: 'scripts/release/github-release-cli.ts',
|
|
49
49
|
description: 'Create the GitHub Release for a published tag, with generated notes',
|
|
@@ -20,20 +20,17 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
20
20
|
reference: ['<message>', 'developer', ['network']],
|
|
21
21
|
default_script_arguments: ['-y', '--skip-commit', '--skip-push'],
|
|
22
22
|
},
|
|
23
|
-
// **The optional form, on both
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
// session, and `followup` with them the merge step of every `fullrun` there. `doctor` was moved to
|
|
28
|
-
// this form for the same reason in joshuafolkken/kit#869.
|
|
23
|
+
// **The optional form, on both**. The mandatory `--env-file=.env` is resolved by node before the
|
|
24
|
+
// script's first line: on a machine with no `.env` it dies as `.env: not found` with exit code 9,
|
|
25
|
+
// even where `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` exist as real environment variables — a
|
|
26
|
+
// cloud session, and `followup` with them the merge step of every `fullrun` there.
|
|
29
27
|
//
|
|
30
28
|
// Nothing is lost by relaxing it: both scripts already load `.env` through `josh_environment_file`
|
|
31
29
|
// themselves, so the file is read either way and node's precedence — an existing environment
|
|
32
30
|
// variable wins over the file — is node's own in both spellings.
|
|
33
31
|
//
|
|
34
|
-
// **
|
|
35
|
-
//
|
|
36
|
-
// `josh notify` exits non-zero instead of warning and answering 0.
|
|
32
|
+
// **A missing credential still fails loudly**: `telegram_notify.send` throws on missing credentials
|
|
33
|
+
// and on a failed send, so `josh notify` exits non-zero instead of warning and answering 0.
|
|
37
34
|
followup: {
|
|
38
35
|
script: 'scripts/followup/git-followup-workflow.ts',
|
|
39
36
|
description: 'Follow-up git workflow',
|
|
@@ -49,11 +46,23 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
49
46
|
script: 'scripts/notify/telegram-test.ts',
|
|
50
47
|
description: 'Send Telegram notification',
|
|
51
48
|
category: 'Workflow',
|
|
52
|
-
reference: [
|
|
49
|
+
reference: [
|
|
50
|
+
'[--task-type <type>] [--body <text> | --body-file <path>] [--issue-url <url>] [--pr-url <url>] [--issue-title <text>] [--repo-name <name>]',
|
|
51
|
+
'automation',
|
|
52
|
+
['notifications'],
|
|
53
|
+
],
|
|
53
54
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
54
55
|
},
|
|
55
|
-
//
|
|
56
|
-
//
|
|
56
|
+
// One observation-ledger sighting: the key's count, the append and the second-sighting verdict,
|
|
57
|
+
// which a run used to type as a `cat | grep -c` and judge by hand.
|
|
58
|
+
'observation:record': {
|
|
59
|
+
script: 'scripts/observations/observation-record-cli.ts',
|
|
60
|
+
description: 'Record an observation sighting and answer whether it is now filed',
|
|
61
|
+
category: 'Workflow',
|
|
62
|
+
reference: ['<key> <depth> <where> <what> [--checkout <path>]', 'automation', ['files']],
|
|
63
|
+
},
|
|
64
|
+
// The observation ledger's commit path for the lines no run's own commit carried:
|
|
65
|
+
// a lane's lines sit in the primary checkout, which
|
|
57
66
|
// its commit cannot see, and the recurrence count the promotion rule reads is a count of main.
|
|
58
67
|
'observations:flush': {
|
|
59
68
|
script: 'scripts/observations/observations-flush-cli.ts',
|
|
@@ -61,8 +70,8 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
61
70
|
category: 'Workflow',
|
|
62
71
|
reference: ['', 'automation', ['git', 'network']],
|
|
63
72
|
},
|
|
64
|
-
// The one write path for a `/code-review` round's findings
|
|
65
|
-
// `--check` gate `followup` runs before it merges
|
|
73
|
+
// The one write path for a `/code-review` round's findings, plus the
|
|
74
|
+
// `--check` gate `followup` runs before it merges. It appends a `- rf:`
|
|
66
75
|
// line per finding — or one zero-finding line for a clean round — to the observation ledger, so
|
|
67
76
|
// `observations:flush` commits them and the recurrence count survives the run.
|
|
68
77
|
'review:record': {
|
|
@@ -70,12 +79,12 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
70
79
|
description: 'Record a review round’s findings, or check a round was recorded',
|
|
71
80
|
category: 'Workflow',
|
|
72
81
|
reference: [
|
|
73
|
-
'--issue <N> [<category>:<severity>:<file> ...] | --check --issue <N>',
|
|
82
|
+
'--issue <N> [--comment] [<category>:<severity>:<file> ...] | --check --issue <N>',
|
|
74
83
|
'automation',
|
|
75
|
-
['files'],
|
|
84
|
+
['files', 'network'],
|
|
76
85
|
],
|
|
77
86
|
},
|
|
78
|
-
// The reader over what `review:record` wrote
|
|
87
|
+
// The reader over what `review:record` wrote: each recurring category’s
|
|
79
88
|
// count, and the number of zero-finding rounds that distinguishes a quiet category from an unwatched one.
|
|
80
89
|
'review:findings': {
|
|
81
90
|
script: 'scripts/review/review-findings-cli.ts',
|
|
@@ -84,7 +93,7 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
84
93
|
reference: ['', 'developer', ['files']],
|
|
85
94
|
},
|
|
86
95
|
// After a behavior-change Issue merges, re-run its declared baseline and print before/after; a value
|
|
87
|
-
// that did not move appends a refuted-premise line to the observation ledger
|
|
96
|
+
// that did not move appends a refuted-premise line to the observation ledger.
|
|
88
97
|
'measure:rerun': {
|
|
89
98
|
script: 'scripts/issue/measure-rerun-cli.ts',
|
|
90
99
|
description: 'Re-run a merged issue’s baseline command and print the before/after pair',
|
|
@@ -92,7 +101,7 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
92
101
|
reference: ['<issue-number>', 'automation', ['network', 'processes', 'files']],
|
|
93
102
|
},
|
|
94
103
|
// A script rather than an `sh -c` chain, because it has a precondition to enforce: run inside a
|
|
95
|
-
// linked work tree it would hijack the default branch from every other one
|
|
104
|
+
// linked work tree it would hijack the default branch from every other one.
|
|
96
105
|
'main:sync': {
|
|
97
106
|
script: 'scripts/git/main-sync.ts',
|
|
98
107
|
description:
|
|
@@ -101,9 +110,8 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
101
110
|
reference: ['', 'developer', ['git', 'network']],
|
|
102
111
|
},
|
|
103
112
|
// A script rather than an `sh -c` chain, because the strategy has to be named rather than left to
|
|
104
|
-
// the caller's git configuration:
|
|
105
|
-
//
|
|
106
|
-
// (joshuafolkken/kit#1659).
|
|
113
|
+
// the caller's git configuration: a bare `git pull` aborts with `Need to specify how to reconcile
|
|
114
|
+
// divergent branches` on exactly the diverged branch the command exists for.
|
|
107
115
|
'main:merge': {
|
|
108
116
|
script: 'scripts/git/main-merge.ts',
|
|
109
117
|
description: 'Merge origin default branch into the current branch',
|
|
@@ -4,7 +4,7 @@ import { ENV_FILE_NAME } from '#ports'
|
|
|
4
4
|
//
|
|
5
5
|
// **The flag form is what most commands use, and it is not free.** Declaring any `tsx_arguments`
|
|
6
6
|
// disqualifies a command from in-process dispatch (`josh-in-process.ts`), which puts a second
|
|
7
|
-
// ~0.16 s tsx start in front of every call
|
|
7
|
+
// ~0.16 s tsx start in front of every call. A
|
|
8
8
|
// command a hook fires on every `Bash` call, or one an unattended `epicrun` polls every sixty
|
|
9
9
|
// seconds, cannot pay that, so it reads the file itself instead.
|
|
10
10
|
//
|
|
@@ -5,8 +5,8 @@ import type { CommandEntry } from './josh-command-types'
|
|
|
5
5
|
|
|
6
6
|
// `pnpm josh <script command>` started tsx twice — once for this dispatcher, once for the script it
|
|
7
7
|
// spawned. Measured on 2026-09-04, the second start was about 0.16 s of the 0.55 s a
|
|
8
|
-
// `pnpm josh format:edited` took, and the edit/Bash hook pays it 60–90 times in a single run
|
|
9
|
-
//
|
|
8
|
+
// `pnpm josh format:edited` took, and the edit/Bash hook pays it 60–90 times in a single run.
|
|
9
|
+
// The script is ordinary TypeScript and a TypeScript loader is already
|
|
10
10
|
// installed by the time this file runs, so the dispatcher evaluates the script itself instead.
|
|
11
11
|
const TYPESCRIPT_EXTENSION = '.ts'
|
|
12
12
|
const JAVASCRIPT_EXTENSION = '.js'
|
|
@@ -21,7 +21,7 @@ function is_typescript_dispatcher(dispatcher_url: string): boolean {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
// A command marked `is_bundled` is pre-built to `dist/commands/<script basename>.js` by
|
|
24
|
-
// `scripts/build/build-commands.ts
|
|
24
|
+
// `scripts/build/build-commands.ts`. The path is derived here, in a module
|
|
25
25
|
// the dispatcher bundle already carries, so the build and the dispatcher cannot name two locations.
|
|
26
26
|
function bundled_script_path(package_directory: string, script: string): string {
|
|
27
27
|
const name = `${path.basename(script, TYPESCRIPT_EXTENSION)}${JAVASCRIPT_EXTENSION}`
|
|
@@ -59,7 +59,7 @@ function resolve_tsx_executable(): string {
|
|
|
59
59
|
|
|
60
60
|
// Locating the CLI entry through tsx's own manifest never consults pnpm's generated shim, which
|
|
61
61
|
// hardcodes a store path a later bump prunes. The resolution itself is `resolve_package_bin` —
|
|
62
|
-
// shared with the format hook's eslint route rather than written twice
|
|
62
|
+
// shared with the format hook's eslint route rather than written twice.
|
|
63
63
|
function resolve_tsx_cli_entry(): string | undefined {
|
|
64
64
|
for (const base_directory of [PACKAGE_DIR, process.cwd()]) {
|
|
65
65
|
const cli_entry = resolve_package_bin(base_directory, TSX_PACKAGE, TSX_BIN)
|
|
@@ -157,7 +157,7 @@ function format_help(is_all = false, is_consumer = false): string {
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
// Every name a user could type — the canonical commands and their aliases — ranked by edit distance
|
|
160
|
-
// so `josh gat` points at `gate
|
|
160
|
+
// so `josh gat` points at `gate`.
|
|
161
161
|
function all_command_names(): Array<string> {
|
|
162
162
|
return [...Object.keys(COMMAND_MAP), ...Object.keys(ALIASES)]
|
|
163
163
|
}
|
|
@@ -219,7 +219,7 @@ function spawn_script_entry(
|
|
|
219
219
|
|
|
220
220
|
// Only the in-process branch is genuinely asynchronous; the spawning one answers the moment the
|
|
221
221
|
// child exits. Both are reported as a promise so every caller has one shape to handle, and
|
|
222
|
-
// `josh.ts` awaits it either way
|
|
222
|
+
// `josh.ts` awaits it either way.
|
|
223
223
|
async function run_script_entry(
|
|
224
224
|
entry: CommandEntry,
|
|
225
225
|
subcommand_arguments: Array<string>,
|
|
@@ -242,8 +242,7 @@ function github_prerequisite_exit(resolved: string, is_consumer: boolean): numbe
|
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
// The exit a command answers with before it runs, or `undefined` to go ahead: a consumer is refused a
|
|
245
|
-
// kit-only command with guidance, and a composite command rejects extra arguments
|
|
246
|
-
// (joshuafolkken/kit#1988).
|
|
245
|
+
// kit-only command with guidance, and a composite command rejects extra arguments.
|
|
247
246
|
function pre_dispatch_exit(
|
|
248
247
|
resolved: string,
|
|
249
248
|
entry: CommandEntry,
|
|
@@ -279,25 +278,26 @@ async function run_entry(
|
|
|
279
278
|
return await run_script_entry(entry, subcommand_arguments)
|
|
280
279
|
}
|
|
281
280
|
|
|
282
|
-
function
|
|
283
|
-
return typeof
|
|
281
|
+
function declared(value: number | (() => number) | undefined): number | undefined {
|
|
282
|
+
return typeof value === 'function' ? value() : value
|
|
284
283
|
}
|
|
285
284
|
|
|
286
|
-
// **Every command passes through here, so this is where a declared weight is reserved
|
|
287
|
-
//
|
|
285
|
+
// **Every command passes through here, so this is where a declared weight is reserved**.
|
|
286
|
+
// A heavy command run directly, outside `josh gate`, used to start its tools
|
|
288
287
|
// without claiming a place. A command under a parent that already holds its cores claims nothing:
|
|
289
288
|
// `core_budget.with_command_reservation` reads the mark that parent set.
|
|
290
289
|
async function dispatch_entry(
|
|
291
290
|
entry: CommandEntry,
|
|
292
291
|
subcommand_arguments: Array<string>,
|
|
293
292
|
): Promise<number> {
|
|
294
|
-
const weight =
|
|
293
|
+
const weight = declared(entry.core_weight)
|
|
295
294
|
|
|
296
295
|
if (weight === undefined) return await run_entry(entry, subcommand_arguments)
|
|
297
296
|
|
|
298
297
|
return await core_budget.with_command_reservation(
|
|
299
298
|
weight,
|
|
300
299
|
async () => await run_entry(entry, subcommand_arguments),
|
|
300
|
+
{ memory_mb: declared(entry.memory_mb) },
|
|
301
301
|
)
|
|
302
302
|
}
|
|
303
303
|
|
package/scripts/josh/josh-run.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { execa } from 'execa'
|
|
2
2
|
|
|
3
|
-
// One captured `pnpm josh` subprocess
|
|
3
|
+
// One captured `pnpm josh` subprocess. A composite command that collapses a
|
|
4
4
|
// sequence of `pnpm josh` calls into one — `run:merge`, `backlog:offer`, `lane:launch` — reads each
|
|
5
5
|
// step's output back rather than inheriting it, so the step's own report logic is reused rather than
|
|
6
6
|
// cloned and only the composite's own token reaches the caller's stdout. This is that read, single-
|
|
@@ -11,11 +11,11 @@ import { execa } from 'execa'
|
|
|
11
11
|
// a person sees it, so a composite streams it through; `run:merge` keeps it piped, because it composes
|
|
12
12
|
// its own report from the captured values instead.
|
|
13
13
|
//
|
|
14
|
-
// **Forwarded stderr is captured as well
|
|
14
|
+
// **Forwarded stderr is captured as well**: a composite that writes a report
|
|
15
15
|
// of its own — `run:tail` — puts a failed step's reason in that report, where a detached run's log
|
|
16
16
|
// otherwise showed only pnpm's `ELIFECYCLE` line.
|
|
17
17
|
//
|
|
18
|
-
// **`timeout_ms` bounds a read made from inside a loop
|
|
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
20
|
|
|
21
21
|
const PNPM = 'pnpm'
|