@joshuafolkken/kit 1.1240.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 +19 -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 +26 -16
- package/.claude/skills/workflow-commands/latest-gate.md +17 -28
- 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/.vscode/tasks.json +14 -0
- package/CLAUDE.md +10 -61
- package/README.md +29 -47
- 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-KHGB5S3Y.js → chunk-43G45XJF.js} +18 -20
- package/dist/hooks/{chunk-4TZVB44A.js → chunk-4TW4MQUL.js} +284 -362
- package/dist/hooks/{chunk-XZYKEM6J.js → chunk-76RK6E3H.js} +13 -11
- package/dist/hooks/{chunk-F3ELQ2AF.js → chunk-DZWZ3DKY.js} +4 -4
- package/dist/hooks/{chunk-5VNDSNG3.js → chunk-FZ6FUSBM.js} +1 -1
- package/dist/hooks/{chunk-GPTFMK5E.js → chunk-GG72ANKI.js} +1 -1
- package/dist/hooks/{chunk-ZQGD4GBY.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-QVSWU24O.js → chunk-NZBHG6FW.js} +7 -5
- package/dist/hooks/chunk-NZN2UFI6.js +2409 -0
- package/dist/hooks/{chunk-KRBERBBI.js → chunk-R6CRQEAL.js} +4 -4
- package/dist/hooks/chunk-SYSRHRWU.js +1589 -0
- package/dist/hooks/{chunk-WK2XSHSI.js → chunk-TLJYAGZK.js} +549 -874
- 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 +216 -202
- 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 -187
- package/dist/josh.js +281 -94
- 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 +3 -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 +2 -2
- package/scripts/gate/core-budget.ts +15 -26
- package/scripts/gate/gate-ledger.ts +114 -0
- package/scripts/gate/gate-log.ts +7 -9
- package/scripts/gate/gate-plan.ts +70 -35
- package/scripts/gate/gate-report.ts +14 -15
- 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 +168 -30
- 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 +53 -51
- 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 +7 -7
- 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 +1 -1
- 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 +24 -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 +52 -15
- package/scripts/issue/issue-file-fold.ts +155 -0
- package/scripts/issue/issue-file.ts +9 -6
- package/scripts/issue/issue-fold-cli.ts +14 -9
- package/scripts/issue/issue-fold.ts +23 -8
- package/scripts/issue/issue-labels.ts +34 -38
- 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 +17 -7
- package/scripts/issue/issue-release.ts +3 -3
- 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 +30 -35
- 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 +25 -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 +4 -5
- package/scripts/josh/josh-commands-lane.ts +14 -4
- package/scripts/josh/josh-commands-lint.ts +1 -1
- 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 +6 -7
- 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 +12 -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 +2 -2
- 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 +20 -19
- package/scripts/lane/lane-output.ts +4 -3
- package/scripts/lane/lane-paths.ts +12 -11
- package/scripts/lane/lane-phase.ts +33 -0
- package/scripts/lane/lane-reap.ts +2 -2
- package/scripts/lane/lane-registry.ts +16 -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 +1 -1
- 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-runs.ts +1 -1
- 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 +54 -36
- 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 +9 -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 +171 -46
- 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 +58 -47
- 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 -32
- package/scripts/run/wake/run-wake-describe.ts +24 -28
- 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 +9 -9
- 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 -279
- 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 +26 -26
- 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/dist/hooks/chunk-KHX4U3BG.js +0 -6400
- 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
package/dist/josh.js
CHANGED
|
@@ -82,10 +82,16 @@ function parse_or_undefined(text) {
|
|
|
82
82
|
return void 0;
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
+
function parse_with(text, schema) {
|
|
86
|
+
const value = parse_or_undefined(text);
|
|
87
|
+
if (value === void 0) return void 0;
|
|
88
|
+
const parsed = schema.safeParse(value);
|
|
89
|
+
return parsed.success ? parsed.data : void 0;
|
|
90
|
+
}
|
|
85
91
|
function is_record(value) {
|
|
86
92
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
87
93
|
}
|
|
88
|
-
var json_value = { parse_or_undefined, is_record };
|
|
94
|
+
var json_value = { parse_or_undefined, parse_with, is_record };
|
|
89
95
|
|
|
90
96
|
// scripts/lib/read-file.ts
|
|
91
97
|
import { readFileSync } from "node:fs";
|
|
@@ -365,7 +371,10 @@ var BEACON_PREFIX = `josh-process-identity-${String(process.getuid?.() ?? "")}-`
|
|
|
365
371
|
var BEACON_ID_LENGTH = 36;
|
|
366
372
|
var BEACON_ID_PATTERN = /^[\da-f-]+$/u;
|
|
367
373
|
var WINDOWS_PLATFORM3 = "win32";
|
|
368
|
-
var
|
|
374
|
+
var BEACON_LIVE_STATUS = 0;
|
|
375
|
+
var BEACON_UNKNOWN_STATUS = 1;
|
|
376
|
+
var BEACON_GONE_STATUS = 2;
|
|
377
|
+
var SOCKET_PROBE_SOURCE = `const net=require('node:net');const socket=net.createConnection(process.argv[1]);socket.once('connect',()=>process.exit(${String(BEACON_LIVE_STATUS)}));socket.once('error',(error)=>process.exit(['ECONNREFUSED','ENOENT'].includes(error.code)?${String(BEACON_GONE_STATUS)}:${String(BEACON_UNKNOWN_STATUS)}));socket.setTimeout(1000,()=>process.exit(${String(BEACON_UNKNOWN_STATUS)}));`;
|
|
369
378
|
var beacons = /* @__PURE__ */ new Map();
|
|
370
379
|
var exit_cleanup = { is_registered: false };
|
|
371
380
|
function is_live_pid(pid) {
|
|
@@ -469,11 +478,16 @@ function beacon_target(token) {
|
|
|
469
478
|
if (path4.dirname(target) !== PLATFORM_TEMP_ROOT) return void 0;
|
|
470
479
|
return is_valid_beacon_name(path4.basename(target)) ? target : void 0;
|
|
471
480
|
}
|
|
472
|
-
function
|
|
481
|
+
function run_socket_probe(target) {
|
|
473
482
|
return spawnSync(process.execPath, ["-e", SOCKET_PROBE_SOURCE, target], {
|
|
474
483
|
stdio: "ignore",
|
|
475
484
|
timeout: PROBE_TIMEOUT_MS
|
|
476
|
-
}).status
|
|
485
|
+
}).status ?? void 0;
|
|
486
|
+
}
|
|
487
|
+
function is_live_beacon(target, probe = run_socket_probe) {
|
|
488
|
+
const status = probe(target);
|
|
489
|
+
if (status === BEACON_LIVE_STATUS) return true;
|
|
490
|
+
return status === BEACON_GONE_STATUS ? false : void 0;
|
|
477
491
|
}
|
|
478
492
|
function has_matching_start(pid, recorded_start, read2) {
|
|
479
493
|
const observed = read2(pid);
|
|
@@ -502,6 +516,7 @@ function is_own_process(pid, recorded_start) {
|
|
|
502
516
|
}
|
|
503
517
|
var process_identity = {
|
|
504
518
|
close_beacon,
|
|
519
|
+
is_live_beacon,
|
|
505
520
|
is_live_pid,
|
|
506
521
|
is_own_process,
|
|
507
522
|
is_same_process,
|
|
@@ -554,19 +569,35 @@ function write_exclusively(target, content) {
|
|
|
554
569
|
function write_stamp(target, payload) {
|
|
555
570
|
return write_exclusively(target, JSON.stringify(payload));
|
|
556
571
|
}
|
|
557
|
-
function
|
|
572
|
+
function is_own_regular_file(source) {
|
|
573
|
+
const stats = lstatSync(source);
|
|
574
|
+
if (!stats.isFile()) return false;
|
|
575
|
+
const uid = process.getuid?.();
|
|
576
|
+
return uid === void 0 || stats.uid === uid;
|
|
577
|
+
}
|
|
578
|
+
function is_foreign_file(target) {
|
|
579
|
+
try {
|
|
580
|
+
return lstatSync(target).isFile() && !is_own_regular_file(target);
|
|
581
|
+
} catch {
|
|
582
|
+
return false;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
function replace_text_stamp(target, text) {
|
|
586
|
+
if (is_foreign_file(target)) {
|
|
587
|
+
throw new Error(`refusing to replace another account's file: ${target}`);
|
|
588
|
+
}
|
|
558
589
|
const temporary = `${target}.${String(process.pid)}.${randomUUID2()}`;
|
|
559
590
|
try {
|
|
560
|
-
writeFileSync(temporary,
|
|
561
|
-
flag: STAMP_CREATE_FLAG,
|
|
562
|
-
mode: STAMP_FILE_MODE
|
|
563
|
-
});
|
|
591
|
+
writeFileSync(temporary, text, { flag: STAMP_CREATE_FLAG, mode: STAMP_FILE_MODE });
|
|
564
592
|
renameSync(temporary, target);
|
|
565
593
|
return target;
|
|
566
594
|
} finally {
|
|
567
595
|
rmSync2(temporary, { force: true });
|
|
568
596
|
}
|
|
569
597
|
}
|
|
598
|
+
function replace_stamp(target, payload) {
|
|
599
|
+
return replace_text_stamp(target, JSON.stringify(payload));
|
|
600
|
+
}
|
|
570
601
|
function write_text_stamp(target, text) {
|
|
571
602
|
return write_exclusively(target, text);
|
|
572
603
|
}
|
|
@@ -585,12 +616,6 @@ function create_stamp(target, payload) {
|
|
|
585
616
|
function remove_stamp(target) {
|
|
586
617
|
rmSync2(target, { force: true });
|
|
587
618
|
}
|
|
588
|
-
function is_own_regular_file(source) {
|
|
589
|
-
const stats = lstatSync(source);
|
|
590
|
-
if (!stats.isFile()) return false;
|
|
591
|
-
const uid = process.getuid?.();
|
|
592
|
-
return uid === void 0 || stats.uid === uid;
|
|
593
|
-
}
|
|
594
619
|
function read_stamp_text(source) {
|
|
595
620
|
try {
|
|
596
621
|
if (!is_own_regular_file(source)) return void 0;
|
|
@@ -605,6 +630,7 @@ var stamp_file = {
|
|
|
605
630
|
is_own_regular_file,
|
|
606
631
|
read_stamp_text,
|
|
607
632
|
replace_stamp,
|
|
633
|
+
replace_text_stamp,
|
|
608
634
|
remove_stamp,
|
|
609
635
|
stamp_path,
|
|
610
636
|
write_stamp,
|
|
@@ -794,9 +820,18 @@ var BYTES_PER_MB = 1048576;
|
|
|
794
820
|
var KB_PER_MB = 1024;
|
|
795
821
|
var PERCENT = 100;
|
|
796
822
|
var MEMINFO_PATH = "/proc/meminfo";
|
|
823
|
+
var VMSTAT_PATH = "/proc/vmstat";
|
|
797
824
|
var LINUX_AVAILABLE = /^MemAvailable:\s+(?<kb>\d+) kB/mu;
|
|
798
|
-
var
|
|
799
|
-
var
|
|
825
|
+
var LINUX_SWAP_IN = /^pswpin (?<pages>\d+)$/mu;
|
|
826
|
+
var LINUX_SWAP_OUT = /^pswpout (?<pages>\d+)$/mu;
|
|
827
|
+
var PAGE_SIZE_ARGUMENTS = ["PAGESIZE"];
|
|
828
|
+
var LEVEL_NAME = "kern.memorystatus_level";
|
|
829
|
+
var SWAP_IN_NAME = "vm.compressor.swapper.swapins_total";
|
|
830
|
+
var SWAP_OUT_NAME = "vm.compressor.swapper.swapouts_total";
|
|
831
|
+
var PAGE_SIZE_NAME = "hw.pagesize";
|
|
832
|
+
var PRESSURE_NAME = "kern.memorystatus_vm_pressure_level";
|
|
833
|
+
var SYSCTL_ARGUMENTS = [LEVEL_NAME, SWAP_IN_NAME, SWAP_OUT_NAME, PAGE_SIZE_NAME, PRESSURE_NAME];
|
|
834
|
+
var SYSCTL_LINE = /^(?<name>[\w.]+): (?<value>\d+)$/gmu;
|
|
800
835
|
function cpu_times() {
|
|
801
836
|
let busy = 0;
|
|
802
837
|
let idle = 0;
|
|
@@ -806,31 +841,96 @@ function cpu_times() {
|
|
|
806
841
|
}
|
|
807
842
|
return { busy, total: busy + idle };
|
|
808
843
|
}
|
|
809
|
-
function
|
|
844
|
+
function busy_share_between(before, after) {
|
|
810
845
|
const total = after.total - before.total;
|
|
811
846
|
if (total <= 0) return void 0;
|
|
812
|
-
return (after.busy - before.busy) / total
|
|
847
|
+
return (after.busy - before.busy) / total;
|
|
848
|
+
}
|
|
849
|
+
function busy_cores_between(before, after, cores) {
|
|
850
|
+
const share = busy_share_between(before, after);
|
|
851
|
+
return share === void 0 ? void 0 : share * cores;
|
|
852
|
+
}
|
|
853
|
+
function sysctl_values(output) {
|
|
854
|
+
const values = [...output.matchAll(SYSCTL_LINE)].map(
|
|
855
|
+
(match) => [match.groups?.["name"] ?? "", Number(match.groups?.["value"])]
|
|
856
|
+
);
|
|
857
|
+
return new Map(values);
|
|
813
858
|
}
|
|
814
|
-
function
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
859
|
+
function swapped_pages(pages_in, pages_out) {
|
|
860
|
+
return pages_in === void 0 || pages_out === void 0 ? void 0 : pages_in + pages_out;
|
|
861
|
+
}
|
|
862
|
+
function swapped_mb(pages, page_bytes) {
|
|
863
|
+
if (pages === void 0 || page_bytes === void 0) return void 0;
|
|
864
|
+
return pages * page_bytes / BYTES_PER_MB;
|
|
865
|
+
}
|
|
866
|
+
function swapped_between(from, to) {
|
|
867
|
+
if (from === void 0 || to === void 0) return void 0;
|
|
868
|
+
return Math.max(0, to - from);
|
|
869
|
+
}
|
|
870
|
+
function parse_darwin_memory(output, total_bytes) {
|
|
871
|
+
const values = sysctl_values(output);
|
|
872
|
+
const level = values.get(LEVEL_NAME);
|
|
873
|
+
return {
|
|
874
|
+
available_mb: level === void 0 ? void 0 : level / PERCENT * (total_bytes / BYTES_PER_MB),
|
|
875
|
+
swapped_mb: swapped_mb(
|
|
876
|
+
swapped_pages(values.get(SWAP_IN_NAME), values.get(SWAP_OUT_NAME)),
|
|
877
|
+
values.get(PAGE_SIZE_NAME)
|
|
878
|
+
),
|
|
879
|
+
pressure_level: values.get(PRESSURE_NAME)
|
|
880
|
+
};
|
|
818
881
|
}
|
|
819
882
|
function parse_linux_available(meminfo) {
|
|
820
883
|
const kb = LINUX_AVAILABLE.exec(meminfo)?.groups?.["kb"];
|
|
821
884
|
return kb === void 0 ? void 0 : Number(kb) / KB_PER_MB;
|
|
822
885
|
}
|
|
823
|
-
|
|
886
|
+
function pages_of(pattern, vmstat) {
|
|
887
|
+
const pages = pattern.exec(vmstat)?.groups?.["pages"];
|
|
888
|
+
return pages === void 0 ? void 0 : Number(pages);
|
|
889
|
+
}
|
|
890
|
+
function parse_linux_swapped(vmstat, page_bytes) {
|
|
891
|
+
const pages = swapped_pages(pages_of(LINUX_SWAP_IN, vmstat), pages_of(LINUX_SWAP_OUT, vmstat));
|
|
892
|
+
return swapped_mb(pages, page_bytes);
|
|
893
|
+
}
|
|
894
|
+
async function settled(read2) {
|
|
824
895
|
try {
|
|
825
|
-
|
|
826
|
-
const { stdout } = await execa("sysctl", PRESSURE_ARGUMENTS);
|
|
827
|
-
return parse_darwin_pressure(stdout, totalmem());
|
|
828
|
-
}
|
|
829
|
-
return platform2 === "linux" ? parse_linux_available(await readFile(MEMINFO_PATH, "utf8")) : void 0;
|
|
896
|
+
return await read2();
|
|
830
897
|
} catch {
|
|
831
898
|
return void 0;
|
|
832
899
|
}
|
|
833
900
|
}
|
|
901
|
+
async function read_darwin_memory() {
|
|
902
|
+
const { stdout } = await execa("sysctl", SYSCTL_ARGUMENTS, {
|
|
903
|
+
reject: false,
|
|
904
|
+
timeout: PROBE_TIMEOUT_MS
|
|
905
|
+
});
|
|
906
|
+
return parse_darwin_memory(stdout, totalmem());
|
|
907
|
+
}
|
|
908
|
+
async function read_page_size() {
|
|
909
|
+
const { stdout } = await execa("getconf", PAGE_SIZE_ARGUMENTS, { timeout: PROBE_TIMEOUT_MS });
|
|
910
|
+
return stdout;
|
|
911
|
+
}
|
|
912
|
+
async function read_linux_memory() {
|
|
913
|
+
const [meminfo, vmstat, page_size] = await Promise.all([
|
|
914
|
+
settled(async () => await readFile(MEMINFO_PATH, "utf8")),
|
|
915
|
+
settled(async () => await readFile(VMSTAT_PATH, "utf8")),
|
|
916
|
+
settled(read_page_size)
|
|
917
|
+
]);
|
|
918
|
+
const page_bytes = page_size === void 0 ? void 0 : Number(page_size);
|
|
919
|
+
return {
|
|
920
|
+
available_mb: meminfo === void 0 ? void 0 : parse_linux_available(meminfo),
|
|
921
|
+
swapped_mb: vmstat === void 0 || page_bytes === void 0 ? void 0 : parse_linux_swapped(vmstat, page_bytes),
|
|
922
|
+
pressure_level: void 0
|
|
923
|
+
};
|
|
924
|
+
}
|
|
925
|
+
var UNREAD_MEMORY = {
|
|
926
|
+
available_mb: void 0,
|
|
927
|
+
swapped_mb: void 0,
|
|
928
|
+
pressure_level: void 0
|
|
929
|
+
};
|
|
930
|
+
async function read_memory() {
|
|
931
|
+
if (process.platform === "darwin") return await settled(read_darwin_memory) ?? UNREAD_MEMORY;
|
|
932
|
+
return process.platform === "linux" ? await read_linux_memory() : UNREAD_MEMORY;
|
|
933
|
+
}
|
|
834
934
|
function is_unquoted() {
|
|
835
935
|
return cpus().length > 0 && cpus().length === availableParallelism2();
|
|
836
936
|
}
|
|
@@ -841,9 +941,12 @@ async function default_sleep(ms) {
|
|
|
841
941
|
}
|
|
842
942
|
async function read_machine(sleep = default_sleep) {
|
|
843
943
|
const before = cpu_times();
|
|
844
|
-
const [
|
|
944
|
+
const [memory] = await Promise.all([read_memory(), sleep(SAMPLE_WINDOW_MS)]);
|
|
845
945
|
const busy_cores = is_unquoted() ? busy_cores_between(before, cpu_times(), cpus().length) : void 0;
|
|
846
|
-
return { busy_cores, available_mb };
|
|
946
|
+
return { busy_cores, available_mb: memory.available_mb };
|
|
947
|
+
}
|
|
948
|
+
async function read_sample() {
|
|
949
|
+
return { cpu: cpu_times(), memory: await read_memory(), total_mb: totalmem() / BYTES_PER_MB };
|
|
847
950
|
}
|
|
848
951
|
function external_cores(busy_cores, ledger_cores) {
|
|
849
952
|
if (busy_cores === void 0) return 0;
|
|
@@ -858,10 +961,16 @@ function machine_budget(cores, reading, ledger) {
|
|
|
858
961
|
var machine_capacity = {
|
|
859
962
|
BASELINE_CORES,
|
|
860
963
|
busy_cores_between,
|
|
964
|
+
busy_share_between,
|
|
965
|
+
external_cores,
|
|
861
966
|
machine_budget,
|
|
862
|
-
|
|
967
|
+
parse_darwin_memory,
|
|
863
968
|
parse_linux_available,
|
|
864
|
-
|
|
969
|
+
parse_linux_swapped,
|
|
970
|
+
read_machine,
|
|
971
|
+
read_memory,
|
|
972
|
+
read_sample,
|
|
973
|
+
swapped_between
|
|
865
974
|
};
|
|
866
975
|
|
|
867
976
|
// scripts/gate/core-budget.ts
|
|
@@ -900,12 +1009,7 @@ function is_running2(reservation) {
|
|
|
900
1009
|
function read_reservation(source) {
|
|
901
1010
|
const raw = stamp_file.read_stamp_text(source);
|
|
902
1011
|
if (raw === void 0) return void 0;
|
|
903
|
-
|
|
904
|
-
const parsed = reservation_schema.safeParse(JSON.parse(raw));
|
|
905
|
-
return parsed.success ? parsed.data : void 0;
|
|
906
|
-
} catch {
|
|
907
|
-
return void 0;
|
|
908
|
-
}
|
|
1012
|
+
return json_value.parse_with(raw, reservation_schema);
|
|
909
1013
|
}
|
|
910
1014
|
function sweep_marker2(source) {
|
|
911
1015
|
try {
|
|
@@ -1136,6 +1240,17 @@ var CSPELL_CACHE_FLAGS = content_cache_flags(CSPELL_CACHE_FILE);
|
|
|
1136
1240
|
|
|
1137
1241
|
// scripts/josh/josh-commands-backlog.ts
|
|
1138
1242
|
var BACKLOG_COMMANDS = {
|
|
1243
|
+
// Started from a terminal: the `backlogrun` keyword's launcher, and the board.
|
|
1244
|
+
backlogrun: {
|
|
1245
|
+
script: "scripts/backlog/backlogrun-cli.ts",
|
|
1246
|
+
description: "Start a backlogrun in the background and show its board; with one already running, only show the board",
|
|
1247
|
+
category: "AI tools",
|
|
1248
|
+
reference: [
|
|
1249
|
+
"[#<n>...] [--only] [--max <n>] [--idle <minutes>] [--agent claude|codex]",
|
|
1250
|
+
"developer",
|
|
1251
|
+
["files", "network", "processes"]
|
|
1252
|
+
]
|
|
1253
|
+
},
|
|
1139
1254
|
"backlog:next": {
|
|
1140
1255
|
script: "scripts/backlog/backlog-next.ts",
|
|
1141
1256
|
description: "Order the whole opted-in backlog: auto-ok issues and the descendants of auto-ok epics, transitively through nested epics",
|
|
@@ -1166,7 +1281,7 @@ var BACKLOG_COMMANDS = {
|
|
|
1166
1281
|
},
|
|
1167
1282
|
"backlog:stalled": {
|
|
1168
1283
|
script: "scripts/backlog/backlog-stalled-cli.ts",
|
|
1169
|
-
// A stall sends one Telegram warning
|
|
1284
|
+
// A stall sends one Telegram warning. The `Stop` hook calls the detector
|
|
1170
1285
|
// directly, so this flag costs only the manual command its in-process dispatch.
|
|
1171
1286
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
1172
1287
|
description: "Report whether ready backlog work is sitting undispatched with a free lane and no recent dispatch",
|
|
@@ -1261,7 +1376,7 @@ var ISSUE_COMMANDS = {
|
|
|
1261
1376
|
},
|
|
1262
1377
|
"defect:rate": {
|
|
1263
1378
|
script: "scripts/issue/defect-rate-cli.ts",
|
|
1264
|
-
description: "Print the defect rate of merged work: defects filed per
|
|
1379
|
+
description: "Print the defect rate of merged work: defects filed per enhancement completed",
|
|
1265
1380
|
category: "AI tools",
|
|
1266
1381
|
reference: ["[--days <n>]", "automation", ["network"]]
|
|
1267
1382
|
},
|
|
@@ -1291,10 +1406,10 @@ var ISSUE_COMMANDS = {
|
|
|
1291
1406
|
},
|
|
1292
1407
|
"issue:file": {
|
|
1293
1408
|
script: "scripts/issue/issue-file-cli.ts",
|
|
1294
|
-
description: "File an Issue with every filing step: lint, Origin, WIP cap, duplicate scout, labels, then epic:bundle",
|
|
1409
|
+
description: "File an Issue with every filing step: lint, Origin, fold, WIP cap, duplicate scout, labels, then epic:bundle",
|
|
1295
1410
|
category: "AI tools",
|
|
1296
1411
|
reference: [
|
|
1297
|
-
"<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,\u2026>] [--over-cap] [--no-auto-ok] [--release]",
|
|
1412
|
+
"<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,\u2026>] [--over-cap] [--no-auto-ok] [--requested] [--release]",
|
|
1298
1413
|
"automation",
|
|
1299
1414
|
["network"]
|
|
1300
1415
|
]
|
|
@@ -1371,18 +1486,27 @@ var LANE_COMMANDS = {
|
|
|
1371
1486
|
category: "AI tools",
|
|
1372
1487
|
reference: ["<issue> [--stash <message>]", "automation", ["files", "git", "processes"]]
|
|
1373
1488
|
},
|
|
1374
|
-
//
|
|
1489
|
+
// A live run's lane limit: `.env` is read so the bare form reports the
|
|
1490
|
+
// `JOSH_LANE_LIMIT` a person set there when no override stands.
|
|
1491
|
+
"lane:limit": {
|
|
1492
|
+
script: "scripts/lane/lane-limit-cli.ts",
|
|
1493
|
+
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
1494
|
+
description: "Change a live backlogrun\u2019s lane limit without stopping it, or print the limit, lanes in use and free lanes",
|
|
1495
|
+
category: "AI tools",
|
|
1496
|
+
reference: ["[<limit>] [--reset]", "developer", ["files"]]
|
|
1497
|
+
},
|
|
1498
|
+
// The lane-limit measurement: `.env` is read so `lane:stats` labels the row
|
|
1375
1499
|
// with the `JOSH_LANE_LIMIT` a person set there.
|
|
1376
1500
|
"lane:sample": {
|
|
1377
1501
|
...MEASURE_ARGUMENTS,
|
|
1378
|
-
description: "Record the machine load (load average, swap, free memory, working lanes) to the lane ledger",
|
|
1502
|
+
description: "Record the machine load (load average, swap, free memory, working lanes) to the lane ledger \u2014 a backlogrun samples itself, this is for a reading outside one",
|
|
1379
1503
|
category: "AI tools",
|
|
1380
1504
|
reference: ["[--every <seconds>]", "maintainer", ["files"]],
|
|
1381
1505
|
default_script_arguments: ["sample"]
|
|
1382
1506
|
},
|
|
1383
1507
|
"lane:stats": {
|
|
1384
1508
|
...MEASURE_ARGUMENTS,
|
|
1385
|
-
description: "Print one table row of lane throughput, gate duration and machine load over a period",
|
|
1509
|
+
description: "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",
|
|
1386
1510
|
category: "AI tools",
|
|
1387
1511
|
reference: ["--period <days> [--limit <lane-limit>]", "maintainer", ["none"]],
|
|
1388
1512
|
default_script_arguments: ["stats"]
|
|
@@ -1414,12 +1538,18 @@ var RUN_COMMANDS = {
|
|
|
1414
1538
|
"run:carry": {
|
|
1415
1539
|
script: "scripts/run/carry/run-carry-cli.ts",
|
|
1416
1540
|
// `--stopped` sends the stop confirmation, so the Telegram credentials come from `.env` as for
|
|
1417
|
-
// `run:wake` below
|
|
1541
|
+
// `run:wake` below.
|
|
1418
1542
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
1419
1543
|
description: "Carry one invocation\u2019s budget across its own session cuts",
|
|
1420
1544
|
category: "AI tools",
|
|
1421
1545
|
reference: ["<operation> [arguments...]", "automation", ["files"]]
|
|
1422
1546
|
},
|
|
1547
|
+
"run:add": {
|
|
1548
|
+
script: "scripts/run/add/run-add-cli.ts",
|
|
1549
|
+
description: "Add issues to a live backlogrun, ahead of the queue unless --no-priority",
|
|
1550
|
+
category: "AI tools",
|
|
1551
|
+
reference: ["<issue...> [--no-priority]", "automation", ["network", "files"]]
|
|
1552
|
+
},
|
|
1423
1553
|
"run:wake": {
|
|
1424
1554
|
script: "scripts/run/wake/run-wake-cli.ts",
|
|
1425
1555
|
// `.env` rather than the ambient environment:
|
|
@@ -1458,18 +1588,26 @@ var RUN_COMMANDS = {
|
|
|
1458
1588
|
["files"]
|
|
1459
1589
|
]
|
|
1460
1590
|
},
|
|
1591
|
+
"run:board": {
|
|
1592
|
+
script: "scripts/run/board/run-board-cli.ts",
|
|
1593
|
+
// `--every` pushes its frame as a Telegram, so the credentials come from `.env` as for `run:carry`.
|
|
1594
|
+
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
1595
|
+
description: "Draw a live board of the running backlogrun, redrawn every second",
|
|
1596
|
+
category: "AI tools",
|
|
1597
|
+
reference: ["[--once | --chat | --every <minutes>]", "automation", ["files", "network"]]
|
|
1598
|
+
},
|
|
1461
1599
|
"run:prep": {
|
|
1462
1600
|
script: "scripts/run/run-prep-cli.ts",
|
|
1463
1601
|
description: "Bundle a run\u2019s pre-edit reads: body, comments, state, dependency scope",
|
|
1464
1602
|
category: "AI tools",
|
|
1465
1603
|
reference: ["<issue>", "automation", ["network"]]
|
|
1466
1604
|
},
|
|
1467
|
-
// The entry sequence a lane opened on, folded into one call
|
|
1605
|
+
// The entry sequence a lane opened on, folded into one call: claim the tree,
|
|
1468
1606
|
// read the budget, gather the issue reads and decide the pre-implementation step. `run:hold`,
|
|
1469
1607
|
// `cost --cut`, `run:prep` and `run:step` were four round trips re-billing a lane's full context each.
|
|
1470
1608
|
"run:entry": {
|
|
1471
1609
|
script: "scripts/run/entry/run-entry-cli.ts",
|
|
1472
|
-
// A `busy` hold or an `over` budget sends the stop confirmation
|
|
1610
|
+
// A `busy` hold or an `over` budget sends the stop confirmation.
|
|
1473
1611
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
1474
1612
|
description: "Open a run in one call: claim the tree, read the budget, bundle the reads, decide the pre-implementation step",
|
|
1475
1613
|
category: "AI tools",
|
|
@@ -1572,12 +1710,12 @@ var AI_COMMANDS = {
|
|
|
1572
1710
|
reference: ["[options]", "maintainer", ["none"]],
|
|
1573
1711
|
// Kit-only: it measures kit's own development runs and its report modules live under the
|
|
1574
1712
|
// undistributed `scripts/time/`, so it means nothing in a consumer project and is dropped from a
|
|
1575
|
-
// consumer's help
|
|
1713
|
+
// consumer's help. The runtime analysis hooks and guards rely on stays
|
|
1576
1714
|
// distributed under `scripts/time-runtime/`.
|
|
1577
1715
|
is_kit_only: true
|
|
1578
1716
|
},
|
|
1579
1717
|
// The tool-calls-per-round-trip density the batching guard is measured on, aggregated across the
|
|
1580
|
-
// recent lane sessions
|
|
1718
|
+
// recent lane sessions. Kit-only for the same reason `time` is: it reads
|
|
1581
1719
|
// kit's own lane transcripts and means nothing in a consumer project.
|
|
1582
1720
|
"time:density": {
|
|
1583
1721
|
script: "scripts/time/time-density-cli.ts",
|
|
@@ -1593,7 +1731,7 @@ var AI_COMMANDS = {
|
|
|
1593
1731
|
reference: ["", "maintainer", ["none"]],
|
|
1594
1732
|
// Kit-only: it reads kit's own development run — the transcript store, the review ledger and the
|
|
1595
1733
|
// run event stream — so it means nothing in a consumer project and is dropped from a consumer's
|
|
1596
|
-
// help
|
|
1734
|
+
// help, through the same declaration `josh time` uses for the same reason.
|
|
1597
1735
|
is_kit_only: true
|
|
1598
1736
|
},
|
|
1599
1737
|
"review:brief": {
|
|
@@ -1645,7 +1783,7 @@ var AI_COMMANDS = {
|
|
|
1645
1783
|
category: "AI tools",
|
|
1646
1784
|
reference: ["[--join]", "automation", ["processes", "files"]]
|
|
1647
1785
|
},
|
|
1648
|
-
// The post-merge sequence a run closed on, folded into one call
|
|
1786
|
+
// The post-merge sequence a run closed on, folded into one call: commit the
|
|
1649
1787
|
// observation ledger, read the completion citations and decide the release scope. `observations:flush`,
|
|
1650
1788
|
// `issue:cite` and `release:scope` were three round trips re-billing the run's full context each.
|
|
1651
1789
|
"run:tail": {
|
|
@@ -1654,7 +1792,7 @@ var AI_COMMANDS = {
|
|
|
1654
1792
|
category: "AI tools",
|
|
1655
1793
|
reference: ["[<issue> ...]", "automation", ["git", "network"]]
|
|
1656
1794
|
},
|
|
1657
|
-
// The commit-to-report region a run ships a change on, folded into one call
|
|
1795
|
+
// The commit-to-report region a run ships a change on, folded into one call:
|
|
1658
1796
|
// the gate, the commit/push/PR (`git -y`), the CI-wait merge (`followup`) and the report bookkeeping
|
|
1659
1797
|
// (`run:tail`) were four round trips re-billing the run's full context each. It stops at the first
|
|
1660
1798
|
// failed step and names it, so the run reads only the step to fix.
|
|
@@ -1714,7 +1852,7 @@ var AI_COMMANDS = {
|
|
|
1714
1852
|
category: "AI tools",
|
|
1715
1853
|
reference: ["[scenario...]", "maintainer", ["processes", "network"]],
|
|
1716
1854
|
// Kit-only: it replays kit's own distributed rules against real Claude sessions, so it means
|
|
1717
|
-
// nothing in a consumer project and is dropped from a consumer's help
|
|
1855
|
+
// nothing in a consumer project and is dropped from a consumer's help.
|
|
1718
1856
|
is_kit_only: true
|
|
1719
1857
|
}
|
|
1720
1858
|
};
|
|
@@ -1778,6 +1916,7 @@ var LINT_LABEL = "lint";
|
|
|
1778
1916
|
var TYPE_CHECK_LABEL = "check";
|
|
1779
1917
|
var UNIT_LABEL = "test:unit";
|
|
1780
1918
|
var BEHAVIOR_LABEL = "behavior";
|
|
1919
|
+
var METRICS_LABEL = "metrics";
|
|
1781
1920
|
var WARNING_CHECKER_LABELS = [LINT_LABEL, TYPE_CHECK_LABEL];
|
|
1782
1921
|
var STATIC_CHECKS = [
|
|
1783
1922
|
{
|
|
@@ -1799,18 +1938,31 @@ var STATIC_CHECKS = [
|
|
|
1799
1938
|
memory_mb: core_budget.MEMORY_MB.spell_check
|
|
1800
1939
|
},
|
|
1801
1940
|
{ label: BEHAVIOR_LABEL, target: BEHAVIOR_LABEL, reserved_cores: 0 },
|
|
1802
|
-
// **The unused-member check reserves no core
|
|
1941
|
+
// **The unused-member check reserves no core**: it builds one TypeScript
|
|
1803
1942
|
// program and walks it for about 5s, and it is over well before lint and the type check. A
|
|
1804
1943
|
// reservation would only take a place from the four-core CI runner's fan-out and a worker from the
|
|
1805
1944
|
// unit suite for the whole gate.
|
|
1806
|
-
{ label: "exports", target: "exports:unused", reserved_cores: 0 }
|
|
1945
|
+
{ label: "exports", target: "exports:unused", reserved_cores: 0 },
|
|
1946
|
+
// **The metrics ratchet is kit's own**: it holds kit's repository-wide
|
|
1947
|
+
// totals to the merge-base's. It is one in-process eslint pass with only `max-lines` enabled, over
|
|
1948
|
+
// in a few seconds, so it reserves no core for the reason the unused-member check above does not.
|
|
1949
|
+
// It times no startup here: beside the unit suite that reads the load, not josh.
|
|
1950
|
+
{
|
|
1951
|
+
label: METRICS_LABEL,
|
|
1952
|
+
target: METRICS_LABEL,
|
|
1953
|
+
args: ["--no-startup"],
|
|
1954
|
+
reserved_cores: 0,
|
|
1955
|
+
memory_mb: core_budget.MEMORY_MB.eslint_scan,
|
|
1956
|
+
is_kit_only: true
|
|
1957
|
+
}
|
|
1807
1958
|
];
|
|
1808
1959
|
var GATE_CHECKS = [
|
|
1809
1960
|
...STATIC_CHECKS,
|
|
1810
1961
|
{ label: UNIT_LABEL, target: UNIT_LABEL, reserved_cores: 0 }
|
|
1811
1962
|
];
|
|
1812
|
-
function select_gate_checks(is_unit_included) {
|
|
1813
|
-
|
|
1963
|
+
function select_gate_checks(is_unit_included, is_kit_repository = true) {
|
|
1964
|
+
const checks = is_unit_included ? GATE_CHECKS : STATIC_CHECKS;
|
|
1965
|
+
return is_kit_repository ? checks : checks.filter((check) => check.is_kit_only !== true);
|
|
1814
1966
|
}
|
|
1815
1967
|
function has_unit_check(checks) {
|
|
1816
1968
|
return checks.some((check) => check.label === UNIT_LABEL);
|
|
@@ -1864,15 +2016,19 @@ function direct_unit_weight(available_cores = availableParallelism4(), live_runs
|
|
|
1864
2016
|
function direct_unit_memory() {
|
|
1865
2017
|
return unit_memory(direct_unit_weight());
|
|
1866
2018
|
}
|
|
2019
|
+
function unit_cap_for(checks, available_cores, concurrent_runs) {
|
|
2020
|
+
if (!has_unit_check(checks)) return void 0;
|
|
2021
|
+
return resolve_unit_worker_cap(available_cores, concurrent_runs);
|
|
2022
|
+
}
|
|
1867
2023
|
function plan_of(concurrency, unit_worker_cap, checks = GATE_CHECKS) {
|
|
1868
2024
|
return { checks, concurrency, unit_worker_cap };
|
|
1869
2025
|
}
|
|
1870
|
-
function resolve_gate_plan(available_cores = availableParallelism4(), concurrent_runs = unit_worker_share.SOLO_RUNS, is_unit_included = true) {
|
|
1871
|
-
const checks = select_gate_checks(is_unit_included);
|
|
2026
|
+
function resolve_gate_plan(available_cores = availableParallelism4(), concurrent_runs = unit_worker_share.SOLO_RUNS, is_unit_included = true, is_kit_repository = true) {
|
|
2027
|
+
const checks = select_gate_checks(is_unit_included, is_kit_repository);
|
|
1872
2028
|
return {
|
|
1873
2029
|
checks,
|
|
1874
2030
|
concurrency: resolve_concurrency(available_cores, concurrent_runs, checks),
|
|
1875
|
-
unit_worker_cap:
|
|
2031
|
+
unit_worker_cap: unit_cap_for(checks, available_cores, concurrent_runs)
|
|
1876
2032
|
};
|
|
1877
2033
|
}
|
|
1878
2034
|
function format_machine(available_cores, concurrent_runs) {
|
|
@@ -1896,6 +2052,7 @@ var gate_plan = {
|
|
|
1896
2052
|
GATE_CHECKS,
|
|
1897
2053
|
LINT_LABEL,
|
|
1898
2054
|
MEASURED_CORES,
|
|
2055
|
+
METRICS_LABEL,
|
|
1899
2056
|
RESERVED_CORES,
|
|
1900
2057
|
STATIC_CHECKS,
|
|
1901
2058
|
TYPE_CHECK_LABEL,
|
|
@@ -1958,6 +2115,19 @@ var DEV_COMMANDS = {
|
|
|
1958
2115
|
core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
|
|
1959
2116
|
memory_mb: core_budget.MEMORY_MB.eslint_scan
|
|
1960
2117
|
},
|
|
2118
|
+
metrics: {
|
|
2119
|
+
script: "scripts/metrics/metrics-command.ts",
|
|
2120
|
+
description: "Print repository-wide quality totals and durations, and fail when a total grew past the merge-base or a duration past its baseline",
|
|
2121
|
+
category: "Development",
|
|
2122
|
+
reference: [
|
|
2123
|
+
'[--no-startup | --totals-only | --accept --reason "<why>"]',
|
|
2124
|
+
"developer",
|
|
2125
|
+
["files"]
|
|
2126
|
+
],
|
|
2127
|
+
core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
|
|
2128
|
+
memory_mb: core_budget.MEMORY_MB.eslint_scan,
|
|
2129
|
+
is_kit_only: true
|
|
2130
|
+
},
|
|
1961
2131
|
"refactor:scan": {
|
|
1962
2132
|
script: "scripts/refactor/refactor-scan-cli.ts",
|
|
1963
2133
|
description: "List refactoring candidates in the changed scope by category and answer clear/candidates",
|
|
@@ -1978,6 +2148,12 @@ var DEV_COMMANDS = {
|
|
|
1978
2148
|
category: "AI tools",
|
|
1979
2149
|
reference: ["[--refresh]", "developer", ["files"]]
|
|
1980
2150
|
},
|
|
2151
|
+
"rule:list": {
|
|
2152
|
+
script: "scripts/rules/rule-list.ts",
|
|
2153
|
+
description: "Print the trigger-delivered rules \u2014 each one's source, firing call and silent turn \u2014 from the guard rows",
|
|
2154
|
+
category: "AI tools",
|
|
2155
|
+
reference: ["", "automation", ["none"]]
|
|
2156
|
+
},
|
|
1981
2157
|
format: {
|
|
1982
2158
|
script: "scripts/lint/format.ts",
|
|
1983
2159
|
description: "Format code with prettier and eslint (skips a tool a basic project lacks)",
|
|
@@ -1998,8 +2174,8 @@ var DEV_COMMANDS = {
|
|
|
1998
2174
|
// **No `tsx_arguments`, deliberately.** `JOSH_BATCH_GUARD` is a per-machine preference kept in
|
|
1999
2175
|
// `.env`, which every other command reads through `OPTIONAL_ENV_FILE_FLAGS` — but declaring any
|
|
2000
2176
|
// `tsx_arguments` disqualifies a command from in-process dispatch (`josh-in-process.ts`), and
|
|
2001
|
-
// this one runs before every `Bash` call
|
|
2002
|
-
//
|
|
2177
|
+
// this one runs before every `Bash` call, where a second ~0.16 s tsx start is not affordable.
|
|
2178
|
+
// The script calls `process.loadEnvFile` itself instead, which is
|
|
2003
2179
|
// node's own `--env-file` parser with node's own precedence.
|
|
2004
2180
|
},
|
|
2005
2181
|
"pretool:guard": {
|
|
@@ -2023,7 +2199,7 @@ var DEV_COMMANDS = {
|
|
|
2023
2199
|
},
|
|
2024
2200
|
"session:lang": {
|
|
2025
2201
|
script: "scripts/josh/session-language-cli.ts",
|
|
2026
|
-
description: "Claude Code hook: print
|
|
2202
|
+
description: "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)",
|
|
2027
2203
|
category: "Development",
|
|
2028
2204
|
reference: ["", "automation", ["none"]]
|
|
2029
2205
|
// **No `tsx_arguments`, deliberately**, the same as `batch:guard` above: this runs on every
|
|
@@ -2036,7 +2212,7 @@ var DEV_COMMANDS = {
|
|
|
2036
2212
|
category: "Development",
|
|
2037
2213
|
reference: ["<pretool|posttool>", "automation", ["none"]]
|
|
2038
2214
|
// The live-source fallback `scripts/hooks/run-hook.sh` derives from the `codex-hook-adapter`
|
|
2039
|
-
// bundle name
|
|
2215
|
+
// bundle name. **No `tsx_arguments`**, the same as `pretool:guard`
|
|
2040
2216
|
// above: it runs before every guarded Codex call.
|
|
2041
2217
|
},
|
|
2042
2218
|
"cspell:dot": {
|
|
@@ -2390,16 +2566,16 @@ var VERSIONING_COMMANDS = {
|
|
|
2390
2566
|
category: "Versioning",
|
|
2391
2567
|
reference: ["", "developer", ["network"]]
|
|
2392
2568
|
},
|
|
2393
|
-
// The one place that decides a version
|
|
2569
|
+
// The one place that decides a version. A `script` entry for the same
|
|
2394
2570
|
// reason `ranges` is one: script paths resolve against the kit package root, so it keeps working
|
|
2395
2571
|
// from a consumer repository where the file lives under node_modules.
|
|
2396
2572
|
release: {
|
|
2397
2573
|
script: "scripts/release/release-cli.ts",
|
|
2398
2574
|
description: "Release the merges main has taken since the version last changed",
|
|
2399
2575
|
category: "Versioning",
|
|
2400
|
-
reference: ["[
|
|
2576
|
+
reference: ["[--dry-run]", "maintainer", ["git", "network", "release"]]
|
|
2401
2577
|
},
|
|
2402
|
-
// The read-only half of the one above
|
|
2578
|
+
// The read-only half of the one above. `release --dry-run` cannot
|
|
2403
2579
|
// answer this question: it refuses off the default branch and on a dirty tree, which is every
|
|
2404
2580
|
// position a run asks it from. A `script` entry for the same reason `release` is one.
|
|
2405
2581
|
"release:scope": {
|
|
@@ -2408,8 +2584,8 @@ var VERSIONING_COMMANDS = {
|
|
|
2408
2584
|
category: "Versioning",
|
|
2409
2585
|
reference: ["[--json]", "automation", ["none"]]
|
|
2410
2586
|
},
|
|
2411
|
-
// Run by the release workflows, kit's and the one sync distributes, after a tag has published
|
|
2412
|
-
//
|
|
2587
|
+
// Run by the release workflows, kit's and the one sync distributes, after a tag has published.
|
|
2588
|
+
// Settings come from the environment, so the workflow decides them.
|
|
2413
2589
|
"release:github": {
|
|
2414
2590
|
script: "scripts/release/github-release-cli.ts",
|
|
2415
2591
|
description: "Create the GitHub Release for a published tag, with generated notes",
|
|
@@ -2437,20 +2613,17 @@ var WORKFLOW_COMMANDS = {
|
|
|
2437
2613
|
reference: ["<message>", "developer", ["network"]],
|
|
2438
2614
|
default_script_arguments: ["-y", "--skip-commit", "--skip-push"]
|
|
2439
2615
|
},
|
|
2440
|
-
// **The optional form, on both
|
|
2441
|
-
//
|
|
2442
|
-
//
|
|
2443
|
-
//
|
|
2444
|
-
// session, and `followup` with them the merge step of every `fullrun` there. `doctor` was moved to
|
|
2445
|
-
// this form for the same reason in joshuafolkken/kit#869.
|
|
2616
|
+
// **The optional form, on both**. The mandatory `--env-file=.env` is resolved by node before the
|
|
2617
|
+
// script's first line: on a machine with no `.env` it dies as `.env: not found` with exit code 9,
|
|
2618
|
+
// even where `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` exist as real environment variables — a
|
|
2619
|
+
// cloud session, and `followup` with them the merge step of every `fullrun` there.
|
|
2446
2620
|
//
|
|
2447
2621
|
// Nothing is lost by relaxing it: both scripts already load `.env` through `josh_environment_file`
|
|
2448
2622
|
// themselves, so the file is read either way and node's precedence — an existing environment
|
|
2449
2623
|
// variable wins over the file — is node's own in both spellings.
|
|
2450
2624
|
//
|
|
2451
|
-
// **
|
|
2452
|
-
//
|
|
2453
|
-
// `josh notify` exits non-zero instead of warning and answering 0.
|
|
2625
|
+
// **A missing credential still fails loudly**: `telegram_notify.send` throws on missing credentials
|
|
2626
|
+
// and on a failed send, so `josh notify` exits non-zero instead of warning and answering 0.
|
|
2454
2627
|
followup: {
|
|
2455
2628
|
script: "scripts/followup/git-followup-workflow.ts",
|
|
2456
2629
|
description: "Follow-up git workflow",
|
|
@@ -2466,11 +2639,23 @@ var WORKFLOW_COMMANDS = {
|
|
|
2466
2639
|
script: "scripts/notify/telegram-test.ts",
|
|
2467
2640
|
description: "Send Telegram notification",
|
|
2468
2641
|
category: "Workflow",
|
|
2469
|
-
reference: [
|
|
2642
|
+
reference: [
|
|
2643
|
+
"[--task-type <type>] [--body <text> | --body-file <path>] [--issue-url <url>] [--pr-url <url>] [--issue-title <text>] [--repo-name <name>]",
|
|
2644
|
+
"automation",
|
|
2645
|
+
["notifications"]
|
|
2646
|
+
],
|
|
2470
2647
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS
|
|
2471
2648
|
},
|
|
2472
|
-
//
|
|
2473
|
-
//
|
|
2649
|
+
// One observation-ledger sighting: the key's count, the append and the second-sighting verdict,
|
|
2650
|
+
// which a run used to type as a `cat | grep -c` and judge by hand.
|
|
2651
|
+
"observation:record": {
|
|
2652
|
+
script: "scripts/observations/observation-record-cli.ts",
|
|
2653
|
+
description: "Record an observation sighting and answer whether it is now filed",
|
|
2654
|
+
category: "Workflow",
|
|
2655
|
+
reference: ["<key> <depth> <where> <what> [--checkout <path>]", "automation", ["files"]]
|
|
2656
|
+
},
|
|
2657
|
+
// The observation ledger's commit path for the lines no run's own commit carried:
|
|
2658
|
+
// a lane's lines sit in the primary checkout, which
|
|
2474
2659
|
// its commit cannot see, and the recurrence count the promotion rule reads is a count of main.
|
|
2475
2660
|
"observations:flush": {
|
|
2476
2661
|
script: "scripts/observations/observations-flush-cli.ts",
|
|
@@ -2478,8 +2663,8 @@ var WORKFLOW_COMMANDS = {
|
|
|
2478
2663
|
category: "Workflow",
|
|
2479
2664
|
reference: ["", "automation", ["git", "network"]]
|
|
2480
2665
|
},
|
|
2481
|
-
// The one write path for a `/code-review` round's findings
|
|
2482
|
-
// `--check` gate `followup` runs before it merges
|
|
2666
|
+
// The one write path for a `/code-review` round's findings, plus the
|
|
2667
|
+
// `--check` gate `followup` runs before it merges. It appends a `- rf:`
|
|
2483
2668
|
// line per finding — or one zero-finding line for a clean round — to the observation ledger, so
|
|
2484
2669
|
// `observations:flush` commits them and the recurrence count survives the run.
|
|
2485
2670
|
"review:record": {
|
|
@@ -2487,12 +2672,12 @@ var WORKFLOW_COMMANDS = {
|
|
|
2487
2672
|
description: "Record a review round\u2019s findings, or check a round was recorded",
|
|
2488
2673
|
category: "Workflow",
|
|
2489
2674
|
reference: [
|
|
2490
|
-
"--issue <N> [<category>:<severity>:<file> ...] | --check --issue <N>",
|
|
2675
|
+
"--issue <N> [--comment] [<category>:<severity>:<file> ...] | --check --issue <N>",
|
|
2491
2676
|
"automation",
|
|
2492
|
-
["files"]
|
|
2677
|
+
["files", "network"]
|
|
2493
2678
|
]
|
|
2494
2679
|
},
|
|
2495
|
-
// The reader over what `review:record` wrote
|
|
2680
|
+
// The reader over what `review:record` wrote: each recurring category’s
|
|
2496
2681
|
// count, and the number of zero-finding rounds that distinguishes a quiet category from an unwatched one.
|
|
2497
2682
|
"review:findings": {
|
|
2498
2683
|
script: "scripts/review/review-findings-cli.ts",
|
|
@@ -2501,7 +2686,7 @@ var WORKFLOW_COMMANDS = {
|
|
|
2501
2686
|
reference: ["", "developer", ["files"]]
|
|
2502
2687
|
},
|
|
2503
2688
|
// After a behavior-change Issue merges, re-run its declared baseline and print before/after; a value
|
|
2504
|
-
// that did not move appends a refuted-premise line to the observation ledger
|
|
2689
|
+
// that did not move appends a refuted-premise line to the observation ledger.
|
|
2505
2690
|
"measure:rerun": {
|
|
2506
2691
|
script: "scripts/issue/measure-rerun-cli.ts",
|
|
2507
2692
|
description: "Re-run a merged issue\u2019s baseline command and print the before/after pair",
|
|
@@ -2509,7 +2694,7 @@ var WORKFLOW_COMMANDS = {
|
|
|
2509
2694
|
reference: ["<issue-number>", "automation", ["network", "processes", "files"]]
|
|
2510
2695
|
},
|
|
2511
2696
|
// A script rather than an `sh -c` chain, because it has a precondition to enforce: run inside a
|
|
2512
|
-
// linked work tree it would hijack the default branch from every other one
|
|
2697
|
+
// linked work tree it would hijack the default branch from every other one.
|
|
2513
2698
|
"main:sync": {
|
|
2514
2699
|
script: "scripts/git/main-sync.ts",
|
|
2515
2700
|
description: "Checkout default branch, pull latest, and prune merged remote-gone branches (refuses inside a lane)",
|
|
@@ -2517,9 +2702,8 @@ var WORKFLOW_COMMANDS = {
|
|
|
2517
2702
|
reference: ["", "developer", ["git", "network"]]
|
|
2518
2703
|
},
|
|
2519
2704
|
// A script rather than an `sh -c` chain, because the strategy has to be named rather than left to
|
|
2520
|
-
// the caller's git configuration:
|
|
2521
|
-
//
|
|
2522
|
-
// (joshuafolkken/kit#1659).
|
|
2705
|
+
// the caller's git configuration: a bare `git pull` aborts with `Need to specify how to reconcile
|
|
2706
|
+
// divergent branches` on exactly the diverged branch the command exists for.
|
|
2523
2707
|
"main:merge": {
|
|
2524
2708
|
script: "scripts/git/main-merge.ts",
|
|
2525
2709
|
description: "Merge origin default branch into the current branch",
|
|
@@ -2555,6 +2739,7 @@ var ALIASES = {
|
|
|
2555
2739
|
lr: "lint:related",
|
|
2556
2740
|
ln: "lines",
|
|
2557
2741
|
by: "bytes",
|
|
2742
|
+
mt: "metrics",
|
|
2558
2743
|
f: "format",
|
|
2559
2744
|
sd: "cspell:dot",
|
|
2560
2745
|
bh: "behavior",
|
|
@@ -2597,7 +2782,9 @@ var ALIASES = {
|
|
|
2597
2782
|
ruv: "rule:value",
|
|
2598
2783
|
ev: "eval",
|
|
2599
2784
|
lsm: "lane:sample",
|
|
2600
|
-
lst: "lane:stats"
|
|
2785
|
+
lst: "lane:stats",
|
|
2786
|
+
lli: "lane:limit",
|
|
2787
|
+
blr: "backlogrun"
|
|
2601
2788
|
};
|
|
2602
2789
|
|
|
2603
2790
|
// scripts/josh/josh-composite-arguments.ts
|