@joshuafolkken/kit 1.1035.0 → 1.1094.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +9 -8
- package/.claude/skills/epic-commands/SKILL.md +5 -7
- package/.claude/skills/verify-ui/SKILL.md +1 -1
- package/.claude/skills/workflow-commands/SKILL.md +21 -13
- package/.claude/skills/workflow-commands/background-commands.md +5 -4
- package/.claude/skills/workflow-commands/backlogrun-child.md +3 -3
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +9 -7
- package/.claude/skills/workflow-commands/backlogrun-park.md +6 -0
- package/.claude/skills/workflow-commands/backlogrun-progress.md +31 -37
- package/.claude/skills/workflow-commands/backlogrun-steps.md +25 -25
- package/.claude/skills/workflow-commands/backlogrun.md +2 -2
- package/.claude/skills/workflow-commands/chain-rule.md +6 -4
- package/.claude/skills/workflow-commands/delegation.md +3 -3
- package/.claude/skills/workflow-commands/followup-reference.md +3 -3
- package/.claude/skills/workflow-commands/followup.md +7 -3
- package/.claude/skills/workflow-commands/fullrun-steps.md +3 -2
- package/.claude/skills/workflow-commands/fullrun.md +3 -2
- package/.claude/skills/workflow-commands/halfrun.md +16 -19
- package/.claude/skills/workflow-commands/issue-comments.md +2 -2
- package/.claude/skills/workflow-commands/issue-fold-existing.md +10 -10
- package/.claude/skills/workflow-commands/issue-scout.md +1 -1
- package/.claude/skills/workflow-commands/kickoff.md +9 -4
- package/.claude/skills/workflow-commands/latest-gate.md +1 -1
- package/.claude/skills/workflow-commands/needs-human-review.md +1 -1
- package/.claude/skills/workflow-commands/observation-filing.md +44 -89
- package/.claude/skills/workflow-commands/pre-gate-cut.md +33 -36
- package/.claude/skills/workflow-commands/prerequisite.md +1 -1
- package/.claude/skills/workflow-commands/prrun.md +36 -0
- package/.claude/skills/workflow-commands/retrospective.md +1 -1
- package/.claude/skills/workflow-commands/working-tree-hold.md +24 -4
- package/.codex/hooks.json +16 -20
- package/.github/actions/setup-pnpm/action.yml +93 -0
- package/.github/dependabot.yml +5 -1
- package/.github/workflows/auto-tag.yml +21 -0
- package/.github/workflows/ci.yml +26 -128
- package/.github/workflows/pr-classification.yml +5 -41
- package/.github/workflows/publish.yml +42 -48
- package/.github/workflows/sonar-qube.yml +37 -4
- package/AGENTS.md +12 -2
- package/CLAUDE.md +15 -16
- package/GEMINI.md +14 -2
- package/README.md +59 -18
- package/SECURITY.md +36 -6
- package/cspell/index.yaml +2 -1
- package/dist/CLAUDE.md +15 -16
- package/dist/config-merge/index.js +15 -3
- package/dist/hooks/batch-guard.js +4 -4
- package/dist/hooks/{chunk-Y27M6A7X.js → chunk-3C4YCCEF.js} +5 -13
- package/dist/hooks/{chunk-D67KVGGY.js → chunk-7ZPFAVR7.js} +17 -88
- package/dist/hooks/{chunk-HOYJU5RM.js → chunk-E54KGFEQ.js} +11 -4
- package/dist/hooks/{chunk-KG6PZD72.js → chunk-IL27YTPH.js} +2 -2
- package/dist/hooks/{chunk-GJT4BNVE.js → chunk-KHWHKJOM.js} +3 -3
- package/dist/hooks/{chunk-HU66PWWL.js → chunk-M2XDCUKD.js} +1076 -509
- package/dist/hooks/{chunk-GLBDBJOK.js → chunk-NKOG3XAV.js} +199 -304
- package/dist/hooks/{chunk-ZXNE6NY3.js → chunk-O4LL4HTI.js} +2 -7
- package/dist/hooks/{chunk-XPLP27WA.js → chunk-OIZUHPJI.js} +5 -27
- package/dist/hooks/{chunk-EIFCAJRB.js → chunk-UD24EAIL.js} +2546 -1636
- package/dist/hooks/codex-hook-adapter.js +10 -11
- package/dist/hooks/duplicate-read-guard.js +5 -5
- package/dist/hooks/format-edited.js +15 -34
- package/dist/hooks/inputs.json +279 -0
- package/dist/hooks/investigation-guard.js +5 -5
- package/dist/hooks/pretool-guard.js +23 -16
- package/dist/hooks/session-lang.js +0 -1
- package/dist/hooks/stop-guard.js +188 -509
- package/dist/josh.js +166 -225
- package/dist/managed-marker/index.js +2 -1
- package/dist/version/index.js +412 -64
- package/eslint/rules/promise.js +5 -0
- package/package.json +13 -8
- package/prompts/collaboration-workflow/file-edits.md +6 -53
- package/prompts/collaboration-workflow/issue-citation.md +5 -5
- package/prompts/collaboration-workflow/operating-rules.md +4 -4
- package/prompts/collaboration-workflow/overview.md +13 -1
- package/prompts/collaboration-workflow/report-format.md +1 -1
- package/prompts/collaboration-workflow/residency.md +4 -4
- package/prompts/collaboration-workflow/rule-delivery.md +5 -36
- package/prompts/collaboration-workflow/shell-body.md +7 -9
- package/prompts/collaboration-workflow/turn-batching.md +21 -37
- package/prompts/collaboration-workflow/upstream-interrupt.md +1 -1
- package/prompts/collaboration-workflow/wip-cap.md +36 -36
- package/prompts/collaboration-workflow.md +5 -8
- package/prompts/review-rubric.md +1 -1
- package/prompts/review.md +3 -3
- package/prompts/sonar-hotspot-handling.md +12 -4
- package/prompts/testing-guide.md +3 -3
- package/scripts/adopt/adopt-toolkits.ts +2 -2
- package/scripts/adopt/adopt.ts +0 -2
- package/scripts/agent/agent-argv.ts +0 -2
- package/scripts/agent/agent-diagnostics.ts +1 -1
- package/scripts/agent/agent-role-profile.ts +0 -7
- package/scripts/agent/claude-agent-argv.ts +0 -2
- package/scripts/agent/codex-agent-argv.ts +1 -1
- package/scripts/agent/codex-hooks.ts +92 -0
- package/scripts/agent/interactive-ask.ts +1 -1
- package/scripts/auto-ok/auto-ok-cli.ts +15 -25
- package/scripts/backlog/backlog-budget.ts +0 -2
- package/scripts/backlog/backlog-defect-priority.ts +2 -2
- package/scripts/backlog/backlog-drive-cli.ts +10 -8
- package/scripts/backlog/backlog-drive-named-offer.ts +16 -3
- package/scripts/backlog/backlog-drive-named.ts +2 -1
- package/scripts/backlog/backlog-drive.ts +76 -16
- package/scripts/backlog/backlog-named.ts +0 -3
- package/scripts/backlog/backlog-next.ts +32 -22
- package/scripts/backlog/backlog-offer-cli.ts +0 -5
- package/scripts/backlog/backlog-plan-cli.ts +6 -8
- package/scripts/backlog/backlog-plan.ts +1 -1
- package/scripts/backlog/backlog-pool.ts +34 -17
- package/scripts/backlog/backlog-rank.ts +106 -0
- package/scripts/backlog/backlog-ready.ts +19 -3
- package/scripts/backlog/backlog-scope.ts +1 -3
- package/scripts/backlog/backlog-stalled-detect.ts +2 -2
- package/scripts/backlog/backlog-stalled.ts +0 -1
- package/scripts/backlog/backlog-waves.ts +47 -31
- package/scripts/behavior/behavior-cli.ts +1 -1
- package/scripts/build/build-codex-hooks.ts +26 -0
- package/scripts/build/build-hooks.ts +92 -11
- package/scripts/build/hook-bundle-stamp.ts +111 -0
- package/scripts/cases/cases-cli.ts +1 -1
- package/scripts/cases/cases-logic.ts +1 -1
- package/scripts/ci/composite-actions.ts +30 -0
- package/scripts/ci/pr-classification.ts +3 -3
- package/scripts/claude/workflow-destination.ts +10 -1
- package/scripts/clone/clone-fingerprint.ts +0 -1
- package/scripts/clone/clone-scan-cli.ts +1 -1
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/config-merge/json-format.ts +0 -1
- package/scripts/config-merge/patch-yaml-list.ts +1 -1
- package/scripts/cost-runtime/codex-usage.ts +2 -9
- package/scripts/cost-runtime/cost-attribute.ts +0 -1
- package/scripts/cost-runtime/cost-cli.ts +0 -3
- package/scripts/cost-runtime/cost-corpus.ts +0 -2
- package/scripts/cost-runtime/cost-format.ts +0 -3
- package/scripts/cost-runtime/cost-pricing.ts +0 -1
- package/scripts/cost-runtime/cost-tokens.ts +0 -1
- package/scripts/delegation/delegation-cli.ts +1 -1
- package/scripts/delegation/delegation-policy.ts +11 -1
- package/scripts/delegation/duplicate-read-guard.ts +0 -8
- package/scripts/delegation/fanout-cli.ts +1 -1
- package/scripts/delegation/fanout.ts +0 -2
- package/scripts/delegation/investigation-reads.ts +1 -164
- package/scripts/discovery/repo-map-logic.ts +0 -1
- package/scripts/discovery/repo-party-cli.ts +1 -1
- package/scripts/doctor/doctor-consumer.ts +4 -6
- package/scripts/doctor/doctor-logic.ts +0 -4
- package/scripts/doctor/doctor.ts +14 -9
- package/scripts/document/document-byte-budget.ts +8 -9
- package/scripts/document/document-byte-check.ts +0 -1
- package/scripts/document/document-read-cli.ts +0 -2
- package/scripts/document/document-section-cli.ts +1 -1
- package/scripts/document/document-section.ts +0 -3
- package/scripts/document/edit-files-cli.ts +0 -1
- package/scripts/document/entry-read-budget.ts +13 -4
- package/scripts/document/lane-child-read-set.ts +1 -6
- package/scripts/document/read-files-cli.ts +0 -4
- package/scripts/document/read-set-cli.ts +0 -2
- package/scripts/document/read-set-point-of-use.ts +1 -0
- package/scripts/document/read-set-pricing.ts +0 -1
- package/scripts/document/read-set-trim.ts +1 -1
- package/scripts/epic/epic-add.ts +1 -1
- package/scripts/epic/epic-audit-cli.ts +1 -4
- package/scripts/epic/epic-audit-orphans.ts +1 -3
- package/scripts/epic/epic-audit-rationale.ts +0 -1
- package/scripts/epic/epic-audit-report.ts +0 -2
- package/scripts/epic/epic-audit.ts +5 -4
- package/scripts/epic/epic-bundle-cli.ts +1 -1
- package/scripts/epic/epic-bundle-evidence.ts +0 -1
- package/scripts/epic/epic-bundle-referenced.ts +1 -5
- package/scripts/epic/epic-bundle.ts +0 -4
- package/scripts/epic/epic-busy.ts +4 -5
- package/scripts/epic/epic-candidate-confirm.ts +0 -5
- package/scripts/epic/epic-classify.ts +2 -2
- package/scripts/epic/epic-cli-argv.ts +0 -1
- package/scripts/epic/epic-close-comment.ts +1 -1
- package/scripts/epic/epic-close.ts +5 -2
- package/scripts/epic/epic-cross-repo.ts +2 -4
- package/scripts/epic/epic-decision.ts +0 -1
- package/scripts/epic/epic-fetch.ts +2 -2
- package/scripts/epic/epic-index.ts +2 -3
- package/scripts/epic/epic-issue.ts +1 -15
- package/scripts/epic/epic-lane-offer.ts +20 -30
- package/scripts/epic/epic-nested.ts +1 -1
- package/scripts/epic/epic-next-read.ts +1 -3
- package/scripts/epic/epic-next-views.ts +0 -1
- package/scripts/epic/epic-next.ts +1 -10
- package/scripts/epic/epic-parse.ts +0 -1
- package/scripts/epic/epic-promote.ts +0 -9
- package/scripts/epic/epic-rank.ts +37 -0
- package/scripts/epic/epic-read.ts +1 -2
- package/scripts/epic/epic-reconcile.ts +1 -1
- package/scripts/epic/epic-reference.ts +1 -13
- package/scripts/epic/epic-relation-recheck.ts +1 -1
- package/scripts/epic/epic-relations.ts +1 -1
- package/scripts/epic/epic-remove.ts +1 -1
- package/scripts/epic/epic-report.ts +0 -1
- package/scripts/epic/epic-run.ts +2 -3
- package/scripts/epic/epic-shape.ts +1 -1
- package/scripts/epic/epic-solo-stale.ts +107 -0
- package/scripts/epic/epic-solo.ts +32 -30
- package/scripts/epic/epic-triage.ts +1 -1
- package/scripts/epic/epic-validate.ts +1 -1
- package/scripts/epic/epic.ts +1 -1
- package/scripts/exports/unused-members-cli.ts +53 -0
- package/scripts/{git → followup}/followup-issue-number.ts +1 -6
- package/scripts/{git → followup}/git-followup-cleanup.ts +2 -1
- package/scripts/{git → followup}/git-followup-finish.ts +1 -3
- package/scripts/{git → followup}/git-followup-flush.ts +2 -2
- package/scripts/{git → followup}/git-followup-issue-close.ts +2 -2
- package/scripts/{git → followup}/git-followup-label.ts +4 -4
- package/scripts/followup/git-followup-merged.ts +112 -0
- package/scripts/{git → followup}/git-followup-pending.ts +1 -1
- package/scripts/{git → followup}/git-followup-workflow.ts +19 -11
- package/scripts/{git → followup}/git-pr-followup-wrapup.ts +9 -3
- package/scripts/{git → followup}/git-pr-followup.ts +53 -16
- package/scripts/gate/core-budget.ts +3 -9
- package/scripts/gate/gate-plan.ts +7 -4
- package/scripts/gate/gate-report.ts +0 -6
- package/scripts/gate/gate-tree.ts +1 -1
- package/scripts/gate/pre-commit-type-check.ts +0 -6
- package/scripts/gate/project-checks.ts +7 -8
- package/scripts/gate/scoped-green.ts +0 -1
- package/scripts/gate/type-check-step.ts +1 -1
- package/scripts/gate/verification-gate.ts +0 -2
- package/scripts/gh/fix-gh-packages.ts +15 -12
- package/scripts/gh/gh-spawn.ts +2 -2
- package/scripts/{git → gh}/git-ai-review-scan.ts +1 -5
- package/scripts/{git → gh}/git-gh-check.ts +2 -1
- package/scripts/{git → gh}/git-gh-exec.ts +1 -1
- package/scripts/{git → gh}/git-gh-failure.ts +1 -1
- package/scripts/{git → gh}/git-gh-helpers.ts +0 -1
- package/scripts/{git → gh}/git-gh-issue-list.ts +2 -0
- package/scripts/{git → gh}/git-gh-issue-read.ts +1 -1
- package/scripts/{git → gh}/git-gh-issue-rest.ts +6 -3
- package/scripts/{git → gh}/git-gh-pr-read.ts +24 -0
- package/scripts/{git → gh}/git-gh-pr-rest.ts +5 -2
- package/scripts/{git → gh}/git-gh-pr-review.ts +2 -2
- package/scripts/{git → gh}/git-gh-pr-rollup.ts +1 -3
- package/scripts/{git → gh}/git-gh-pr.ts +3 -1
- package/scripts/{git → gh}/git-pr-ai-review.ts +2 -5
- package/scripts/{git → gh}/git-pr-checks-eval.ts +0 -10
- package/scripts/{git → gh}/git-pr-checks-parse.ts +4 -20
- package/scripts/{git → gh}/git-pr-checks.ts +2 -1
- package/scripts/{git → gh}/git-pr-coderabbit.ts +2 -5
- package/scripts/{git → gh}/git-pr-confirmation.ts +1 -3
- package/scripts/{git → gh}/git-pr-managed-config.ts +2 -3
- package/scripts/{git → gh}/git-pr.ts +3 -3
- package/scripts/git/changed-file-scope.ts +0 -1
- package/scripts/git/git-branch.ts +3 -6
- package/scripts/git/git-command.ts +1 -1
- package/scripts/git/git-commit.ts +1 -1
- package/scripts/git/git-common-directory.ts +80 -24
- package/scripts/git/git-error.ts +66 -9
- package/scripts/git/git-execa-error.ts +6 -1
- package/scripts/git/git-issue.ts +1 -1
- package/scripts/git/git-preflight.ts +24 -6
- package/scripts/git/git-prompt.ts +6 -31
- package/scripts/git/git-push-transport.ts +12 -69
- package/scripts/git/git-push.ts +1 -1
- package/scripts/git/git-spawn.ts +79 -3
- package/scripts/git/git-ssh-keepalive.ts +74 -0
- package/scripts/git/git-staging.ts +1 -0
- package/scripts/git/git-status.ts +1 -1
- package/scripts/git/git-workflow.ts +1 -1
- package/scripts/git/gone-branch.ts +4 -2
- package/scripts/git/listing-cutoff.ts +1 -1
- package/scripts/git/main-merge.ts +1 -1
- package/scripts/git/main-sync.ts +19 -1
- package/scripts/git/parse-json-array.ts +0 -3
- package/scripts/git/repository-lock.ts +16 -16
- package/scripts/git/{git-stash.ts → stash/git-stash.ts} +1 -1
- package/scripts/git/{stash-pop-args.ts → stash/stash-pop-args.ts} +1 -1
- package/scripts/git/{stash-pop-cli.ts → stash/stash-pop-cli.ts} +0 -1
- package/scripts/git/{stash-sweep-lock.ts → stash/stash-sweep-lock.ts} +3 -3
- package/scripts/hooks/codex-hook-adapter.ts +0 -1
- package/scripts/hooks/edited-cspell.ts +1 -1
- package/scripts/hooks/format-edited-cli.ts +15 -0
- package/scripts/hooks/format-edited-file.ts +4 -9
- package/scripts/hooks/pre-push-unit.ts +0 -4
- package/scripts/hooks/pretool-guard-cli.ts +21 -0
- package/scripts/hooks/pretool-guard.ts +36 -19
- package/scripts/hooks/reserved-run.ts +1 -1
- package/scripts/hooks/step-zero-notice.ts +76 -0
- package/scripts/hooks/stop-guard.ts +47 -21
- package/scripts/init/claude-plugin-config.ts +4 -5
- package/scripts/init/hook-command-rewrite.ts +16 -8
- package/scripts/init/hook-launch.ts +41 -15
- package/scripts/init/init-basic.ts +2 -5
- package/scripts/init/init-logic.ts +7 -0
- package/scripts/init/init.ts +0 -3
- package/scripts/init/project-profile.ts +6 -11
- package/scripts/init/start-exec.ts +8 -2
- package/scripts/init/start-plan.ts +18 -5
- package/scripts/init/start-setup-pr.ts +52 -25
- package/scripts/init/start-steps.ts +42 -9
- package/scripts/init/start.ts +40 -10
- package/scripts/issue/behavior-change-lint.ts +0 -1
- package/scripts/issue/defect-rate-cli.ts +3 -3
- package/scripts/issue/defect-rate.ts +1 -2
- package/scripts/{git → issue}/git-next-issues.ts +37 -8
- package/scripts/issue/issue-backlinks-cli.ts +1 -5
- package/scripts/issue/issue-cite-cli.ts +2 -6
- package/scripts/issue/issue-cite.ts +19 -3
- package/scripts/issue/issue-classification.ts +1 -9
- package/scripts/issue/issue-closing-pr.ts +4 -4
- package/scripts/issue/issue-comment-cli.ts +2 -2
- package/scripts/issue/issue-file-cli.ts +5 -5
- package/scripts/issue/issue-file.ts +2 -2
- package/scripts/issue/issue-fold-cli.ts +1 -1
- package/scripts/issue/issue-fold-existing-cli.ts +1 -1
- package/scripts/{git → issue}/issue-labels.ts +20 -0
- package/scripts/issue/issue-lint-cli.ts +1 -1
- package/scripts/issue/issue-merged.ts +2 -2
- package/scripts/issue/issue-rank.ts +89 -0
- package/scripts/issue/issue-read-cli.ts +8 -47
- package/scripts/issue/issue-read.ts +0 -2
- package/scripts/issue/issue-report-failures.ts +80 -0
- package/scripts/issue/issue-scout-cli.ts +1 -7
- package/scripts/issue/issue-scout-closed.ts +2 -2
- package/scripts/issue/issue-scout.ts +0 -2
- package/scripts/issue/issue-state-cli.ts +5 -46
- package/scripts/issue/issue-state.ts +1 -5
- package/scripts/issue/markdown-section.ts +1 -1
- package/scripts/issue/measure-rerun-cli.ts +1 -1
- package/scripts/issue/reproduction-measure.ts +1 -1
- package/scripts/josh/cli-body.ts +1 -1
- package/scripts/josh/file-map-stamp.ts +0 -3
- package/scripts/josh/josh-command-map.ts +2 -102
- package/scripts/josh/josh-commands-ai.ts +9 -102
- package/scripts/josh/josh-commands-backlog.ts +5 -1
- package/scripts/josh/josh-commands-development.ts +10 -3
- package/scripts/josh/josh-commands-issue.ts +2 -2
- package/scripts/josh/josh-commands-maintenance.ts +7 -0
- package/scripts/josh/josh-commands-project.ts +7 -1
- package/scripts/josh/josh-commands-run.ts +114 -0
- package/scripts/josh/josh-commands-versioning.ts +8 -0
- package/scripts/josh/josh-commands-workflow.ts +2 -2
- package/scripts/josh/path-decision.ts +0 -3
- package/scripts/josh/process-owner.ts +16 -0
- package/scripts/josh/session-language-cli.ts +0 -1
- package/scripts/lane/lane-await.ts +3 -6
- package/scripts/lane/lane-capacity.ts +6 -3
- package/scripts/lane/lane-child-invocation.ts +20 -7
- package/scripts/lane/lane-child-marker.ts +16 -2
- package/scripts/lane/lane-cli.ts +33 -18
- package/scripts/lane/lane-close.ts +1 -3
- package/scripts/lane/lane-dispatch.ts +3 -4
- package/scripts/lane/lane-environment.ts +0 -9
- package/scripts/lane/lane-handoff.ts +38 -0
- package/scripts/lane/lane-launch-cli.ts +21 -11
- package/scripts/lane/lane-open.ts +0 -3
- package/scripts/lane/lane-output.ts +0 -1
- package/scripts/lane/lane-registry.ts +9 -0
- package/scripts/lane/lane-report.ts +10 -4
- package/scripts/lane/openai-lane-ship.ts +2 -0
- package/scripts/lane/openai-lane-supervisor-decision.ts +2 -1
- package/scripts/lane/openai-lane-supervisor.ts +6 -4
- package/scripts/lane/openai-review-broker.ts +3 -0
- package/scripts/lib/bounded-pool.ts +1 -0
- package/scripts/lib/json-value.ts +5 -4
- package/scripts/lib/poll.ts +3 -1
- package/scripts/lib/timed-fetch.ts +15 -0
- package/scripts/lib/timeouts.ts +13 -0
- package/scripts/{yaml → lib}/yaml-document.ts +3 -1
- package/scripts/{bytes → lines}/bytes-command.ts +0 -2
- package/scripts/lines/lines-command.ts +0 -1
- package/scripts/lint/lint-related-scope.ts +0 -1
- package/scripts/lint/lint-related.ts +1 -1
- package/scripts/{git → notify}/telegram-notify.ts +2 -2
- package/scripts/{git → notify}/telegram-test.ts +4 -4
- package/scripts/observations/observation-ledger-home.ts +0 -1
- package/scripts/observations/observation-ledger-line.ts +0 -1
- package/scripts/observations/observation-ledger-migrate.ts +1 -1
- package/scripts/observations/observations-flush-landing.ts +3 -3
- package/scripts/observations/observations-flush.ts +2 -2
- package/scripts/overrides/lockfile-overrides.ts +1 -1
- package/scripts/overrides/overrides-logic.ts +1 -1
- package/scripts/package/package-scout-cli.ts +2 -7
- package/scripts/package/package-scout.ts +0 -2
- package/scripts/propagate/propagate-git-failure.ts +0 -1
- package/scripts/propagate/propagate-git.ts +0 -2
- package/scripts/propagate/propagate-plan.ts +185 -0
- package/scripts/propagate/propagate-publish.ts +2 -3
- package/scripts/propagate/propagate-run.ts +5 -3
- package/scripts/propagate/propagate-steps.ts +19 -6
- package/scripts/propagate/propagate-targets.ts +13 -6
- package/scripts/propagate/propagate.ts +60 -46
- package/scripts/refactor/import-graph.ts +0 -1
- package/scripts/refactor/refactor-lint.ts +0 -2
- package/scripts/refactor/refactor-scan.ts +0 -1
- package/scripts/refactor/refactor-targets.ts +0 -1
- package/scripts/registry-migration/migrate-logic.ts +1 -2
- package/scripts/registry-migration/migrate.ts +19 -9
- package/scripts/release/github-release-cli.ts +8 -6
- package/scripts/release/github-release-environment.ts +46 -0
- package/scripts/release/github-release.ts +151 -94
- package/scripts/release/release-history.ts +0 -1
- package/scripts/release/release-plan.ts +0 -1
- package/scripts/release/release-publish.ts +2 -3
- package/scripts/release/release-scope-cli.ts +1 -2
- package/scripts/release/release-tag.ts +2 -4
- package/scripts/repo/auto-merge-setting-logic.ts +1 -4
- package/scripts/repo/repo-setting.ts +1 -1
- package/scripts/repo/repository-labels.ts +3 -3
- package/scripts/repo/required-checks-logic.ts +206 -0
- package/scripts/repo/required-checks-report.ts +71 -0
- package/scripts/repo/ruleset-check-cli.ts +53 -0
- package/scripts/repo/ruleset-check.ts +147 -0
- package/scripts/report/report-lint-cli.ts +0 -4
- package/scripts/review/disposition-cli.ts +1 -1
- package/scripts/review/live-evidence.ts +1 -1
- package/scripts/review/review-attest-cli.ts +0 -6
- package/scripts/review/review-attest.ts +48 -16
- package/scripts/review/review-brief-cli.ts +72 -8
- package/scripts/review/review-brief.ts +67 -9
- package/scripts/review/review-diff-parts.ts +89 -0
- package/scripts/review/review-diff-write.ts +97 -0
- package/scripts/review/review-finding-ledger.ts +0 -1
- package/scripts/review/review-record-cli.ts +1 -1
- package/scripts/review/review-record.ts +0 -1
- package/scripts/review/review-round2-cli.ts +1 -1
- package/scripts/review/review-stamps.ts +6 -2
- package/scripts/review/review-tree.ts +14 -2
- package/scripts/rules/decision-oracle-stage.ts +18 -0
- package/scripts/rules/decision-oracle.ts +10 -7
- package/scripts/rules/delivered-rules.ts +9 -1
- package/scripts/rules/destructive-command.ts +119 -0
- package/scripts/rules/direct-filing.ts +1 -1
- package/scripts/rules/file-body.ts +0 -3
- package/scripts/rules/filing-cap.ts +0 -2
- package/scripts/rules/gh-api.ts +7 -2
- package/scripts/rules/git-argv.ts +18 -7
- package/scripts/rules/git-force.ts +0 -2
- package/scripts/rules/implementation-cut.ts +1 -2
- package/scripts/rules/index-guard.ts +71 -0
- package/scripts/rules/issue-citation.ts +50 -25
- package/scripts/rules/issue-fold.ts +1 -2
- package/scripts/rules/lane-background.ts +15 -7
- package/scripts/rules/lane-carry-conflict.ts +1 -2
- package/scripts/rules/lane-park.ts +14 -8
- package/scripts/rules/last-prompt.ts +1 -0
- package/scripts/rules/oracle-consulted.ts +1 -1
- package/scripts/rules/oracle-firing.ts +1 -0
- package/scripts/rules/oracle-list-cli.ts +0 -3
- package/scripts/rules/permission-guards.ts +14 -0
- package/scripts/rules/pre-gate-cut.ts +2 -2
- package/scripts/rules/protected-files.ts +74 -0
- package/scripts/rules/reply-language.ts +1 -1
- package/scripts/rules/rule-body-guard.ts +0 -3
- package/scripts/rules/rule-value-cli.ts +0 -1
- package/scripts/rules/shell-body-trigger.ts +0 -1
- package/scripts/rules/shell-segments.ts +0 -1
- package/scripts/rules/stop-rules.ts +13 -5
- package/scripts/rules/tail-commands.ts +1 -1
- package/scripts/rules/test-declared-commit.ts +1 -1
- package/scripts/rules/third-party-write.ts +0 -1
- package/scripts/rules/worktree-guard.ts +26 -9
- package/scripts/run/run-carry-cli.ts +0 -2
- package/scripts/run/run-carry-stash.ts +2 -2
- package/scripts/run/run-carry-streak.ts +1 -1
- package/scripts/run/run-cut-cli.ts +0 -7
- package/scripts/run/run-cut.ts +8 -54
- package/scripts/run/run-ending-cli.ts +1 -1
- package/scripts/run/run-ending.ts +1 -4
- package/scripts/run/run-entry-cli.ts +101 -24
- package/scripts/run/run-entry.ts +0 -1
- package/scripts/run/run-event-cli.ts +0 -2
- package/scripts/run/run-event-follow.ts +1 -0
- package/scripts/run/run-event-render.ts +1 -1
- package/scripts/run/run-event-scope.ts +53 -4
- package/scripts/run/run-event-stream.ts +0 -3
- package/scripts/run/run-event-watch.ts +1 -0
- package/scripts/run/run-halfrun-resume.ts +20 -7
- package/scripts/run/run-headless.ts +24 -8
- package/scripts/run/run-hold-cli.ts +33 -10
- package/scripts/run/run-hold.ts +25 -5
- package/scripts/run/run-issue-number.ts +1 -1
- package/scripts/run/run-liveness-cli.ts +1 -1
- package/scripts/run/run-liveness.ts +2 -3
- package/scripts/run/run-merge-cli.ts +5 -13
- package/scripts/run/run-merge-steps.ts +5 -5
- package/scripts/run/run-merge.ts +1 -1
- package/scripts/run/run-next-cli.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +143 -0
- package/scripts/run/run-preflight.ts +2 -9
- package/scripts/run/run-prep-cli.ts +2 -2
- package/scripts/run/run-prep-locate.ts +1 -1
- package/scripts/run/run-progress-cli.ts +4 -7
- package/scripts/run/run-progress-clock.ts +6 -34
- package/scripts/run/run-progress-config.ts +0 -4
- package/scripts/run/run-progress-read.ts +3 -3
- package/scripts/run/run-progress.ts +22 -10
- package/scripts/run/run-prrun-resume.ts +117 -0
- package/scripts/run/run-report-cli.ts +1 -2
- package/scripts/run/run-report.ts +0 -1
- package/scripts/run/run-retrospective.ts +1 -1
- package/scripts/run/run-review-cli.ts +0 -3
- package/scripts/run/run-review-steps.ts +2 -0
- package/scripts/run/run-review.ts +0 -2
- package/scripts/run/run-ship-cli.ts +27 -77
- package/scripts/run/run-ship-detach.ts +1 -0
- package/scripts/run/run-ship-next.ts +106 -0
- package/scripts/run/run-ship-preflight.ts +87 -0
- package/scripts/run/run-ship-return.ts +8 -3
- package/scripts/run/run-ship-review-steps.ts +23 -30
- package/scripts/run/run-ship-review.ts +20 -0
- package/scripts/run/run-ship-scoped.ts +45 -0
- package/scripts/run/run-ship-stage.ts +5 -1
- package/scripts/run/run-ship-steps.ts +105 -0
- package/scripts/run/run-ship.ts +2 -1
- package/scripts/run/run-stage-read.ts +62 -0
- package/scripts/run/run-stage.ts +160 -0
- package/scripts/run/run-status-cli.ts +1 -1
- package/scripts/run/run-step-cli.ts +21 -14
- package/scripts/run/run-step.ts +1 -1
- package/scripts/run/run-stop-notify.ts +1 -3
- package/scripts/run/run-stranded-cli.ts +0 -4
- package/scripts/run/run-stranded-detect.ts +2 -2
- package/scripts/run/run-tail-cli.ts +17 -11
- package/scripts/run/run-tail.ts +2 -0
- package/scripts/run/run-tidy-lanes.ts +2 -1
- package/scripts/run/run-tidy-stashes.ts +12 -12
- package/scripts/run/run-wake-cli.ts +4 -5
- package/scripts/run/run-wake-describe.ts +19 -1
- package/scripts/run/run-wake-loop.ts +2 -2
- package/scripts/run/run-wake.ts +2 -4
- package/scripts/run/run-watcher-guard-cli.ts +0 -4
- package/scripts/run/run-watcher-guard.ts +9 -7
- package/scripts/run/run-watcher-hook.ts +1 -1
- package/scripts/safe-chain/ci-installer-pin.ts +11 -5
- package/scripts/safe-chain/project-config.ts +1 -1
- package/scripts/security/security-audit-provision-logic.ts +0 -1
- package/scripts/security/security-audit-provision.ts +3 -2
- package/scripts/security/security-audit.ts +0 -1
- package/scripts/security/security-updates-logic.ts +0 -1
- package/scripts/sonar/sonar-hotspots-cli.ts +10 -52
- package/scripts/sonar/sonar-hotspots.ts +0 -1
- package/scripts/sonar/sonar-new-code-cli.ts +150 -0
- package/scripts/sonar/sonar-new-code.ts +79 -0
- package/scripts/sonar/sonar-project.ts +97 -0
- package/scripts/split/split-assess-cli.ts +1 -1
- package/scripts/split/split-assess.ts +2 -5
- package/scripts/sync/managed-config-scope-cli.ts +1 -1
- package/scripts/sync/skill-migration.ts +0 -1
- package/scripts/sync/sync-hook-safety.ts +2 -3
- package/scripts/sync/sync.ts +1 -8
- package/scripts/sync/template-source-logic.ts +0 -1
- package/scripts/sync/workflow-pin-logic.ts +16 -28
- package/scripts/test/test-declared-logic.ts +0 -1
- package/scripts/test/test-declared.ts +0 -2
- package/scripts/test/test-red-commit.ts +2 -2
- package/scripts/test/test-red.ts +14 -7
- package/scripts/test/test-type-logic.ts +1 -1
- package/scripts/test/unit-worker-share.ts +7 -16
- package/scripts/time-runtime/time-batch-guard.ts +1 -2
- package/scripts/time-runtime/time-bundle-call.ts +2 -3
- package/scripts/time-runtime/time-bundles.ts +0 -4
- package/scripts/time-runtime/time-density-hook.ts +0 -2
- package/scripts/time-runtime/time-followup-stage.ts +1 -1
- package/scripts/time-runtime/time-format.ts +0 -73
- package/scripts/time-runtime/time-round-trips.ts +0 -4
- package/scripts/time-runtime/time-single-check.ts +1 -1
- package/scripts/time-runtime/time-spans.ts +1 -1
- package/scripts/time-runtime/time-transcript-line.ts +1 -2
- package/scripts/ui/ui-routes-cli.ts +0 -5
- package/scripts/ui/ui-routes.ts +0 -5
- package/scripts/version/effective-upstream.ts +2 -2
- package/scripts/version/latest-corepack.ts +7 -9
- package/scripts/version/latest-scope-cli.ts +0 -2
- package/scripts/version/latest-update.ts +0 -2
- package/scripts/version/npm-registry.ts +97 -0
- package/scripts/version/publishable-range-check.ts +1 -1
- package/scripts/version/release-hold.ts +0 -4
- package/scripts/version/running-binary.ts +2 -2
- package/scripts/version/version-check-logic.ts +0 -2
- package/scripts/version/version-commands.ts +5 -4
- package/scripts/version/version-remote.ts +28 -14
- package/scripts/version/version-targets.ts +4 -4
- package/templates/sonar-project.properties +28 -1
- package/templates/workflows/dependabot-auto-merge.yml +5 -3
- package/templates/workflows/github-release.yml +81 -0
- package/prompts/collaboration-workflow/cross-repo-epic.md +0 -5
- package/prompts/collaboration-workflow/epic-audit.md +0 -5
- package/prompts/collaboration-workflow/epic-bundle.md +0 -5
- package/scripts/init/plugin-install-hint.ts +0 -47
- package/scripts/version/parse-json.ts +0 -13
- /package/scripts/{git → followup}/git-followup-stages.ts +0 -0
- /package/scripts/{git → gh}/git-gh-api-path.ts +0 -0
- /package/scripts/{git → gh}/git-gh-command.ts +0 -0
- /package/scripts/{git → gh}/git-gh-issue-write.ts +0 -0
- /package/scripts/{git → gh}/git-gh-issue.ts +0 -0
- /package/scripts/{git → gh}/git-gh-pr-auto-merge.ts +0 -0
- /package/scripts/{git → gh}/git-gh-pr-snapshot.ts +0 -0
- /package/scripts/{git → gh}/git-gh-reachability.ts +0 -0
- /package/scripts/{git → gh}/git-gh-repo.ts +0 -0
- /package/scripts/{git → gh}/git-gh-rest-state.ts +0 -0
- /package/scripts/{git → gh}/git-pr-checks-watch.ts +0 -0
- /package/scripts/{git → gh}/git-pr-error.ts +0 -0
- /package/scripts/{git → gh}/git-pr-messages.ts +0 -0
- /package/scripts/{git → gh}/github-issue-url.ts +0 -0
- /package/scripts/git/{stash-orphans.ts → stash/stash-orphans.ts} +0 -0
- /package/scripts/{git → issue}/issue-reference.ts +0 -0
- /package/scripts/{git → lib}/animation-helpers.ts +0 -0
- /package/scripts/{git → lib}/git-animation.ts +0 -0
- /package/scripts/{git → notify}/git-notify.ts +0 -0
- /package/scripts/{git → notify}/telegram-test-logic.ts +0 -0
|
@@ -38,18 +38,15 @@ const ALIASES: Record<string, string> = {
|
|
|
38
38
|
ln: 'lines',
|
|
39
39
|
by: 'bytes',
|
|
40
40
|
f: 'format',
|
|
41
|
-
fd: 'format:edited',
|
|
42
|
-
bg: 'batch:guard',
|
|
43
41
|
sd: 'cspell:dot',
|
|
44
42
|
bh: 'behavior',
|
|
43
|
+
eu: 'exports:unused',
|
|
45
44
|
t: 'test',
|
|
46
45
|
tu: 'test:unit',
|
|
47
46
|
tr: 'test:related',
|
|
48
47
|
td: 'test:declared',
|
|
49
48
|
trd: 'test:red',
|
|
50
49
|
te: 'test:e2e',
|
|
51
|
-
er: 'e2e:retry-check',
|
|
52
|
-
sl: 'session:lang',
|
|
53
50
|
c: 'check',
|
|
54
51
|
pt: 'port',
|
|
55
52
|
i: 'init',
|
|
@@ -57,127 +54,30 @@ const ALIASES: Record<string, string> = {
|
|
|
57
54
|
st: 'start',
|
|
58
55
|
sy: 'sync',
|
|
59
56
|
rmi: 'registry:migrate',
|
|
60
|
-
sys: 'sync:scope',
|
|
61
57
|
g: 'git',
|
|
62
58
|
gp: 'pr',
|
|
63
|
-
prc: 'pr:classification',
|
|
64
|
-
fu: 'followup',
|
|
65
|
-
nf: 'notify',
|
|
66
|
-
obf: 'observations:flush',
|
|
67
|
-
mrr: 'measure:rerun',
|
|
68
59
|
ms: 'main:sync',
|
|
69
60
|
mm: 'main:merge',
|
|
70
61
|
bp: 'bump',
|
|
71
62
|
re: 'release',
|
|
72
|
-
res: 'release:scope',
|
|
73
63
|
v: 'version',
|
|
74
64
|
r: 'ranges',
|
|
75
65
|
dr: 'doctor',
|
|
66
|
+
rc: 'ruleset:check',
|
|
76
67
|
pg: 'propagate',
|
|
77
68
|
ad: 'adopt',
|
|
78
69
|
ov: 'overrides',
|
|
79
70
|
a: 'audit',
|
|
80
|
-
ap: 'audit:provision',
|
|
81
71
|
rt: 'reconcile-templates',
|
|
82
72
|
u: 'latest',
|
|
83
|
-
lg: 'latest:guard',
|
|
84
73
|
lc: 'latest:corepack',
|
|
85
74
|
lu: 'latest:update',
|
|
86
|
-
ls: 'latest:scope',
|
|
87
|
-
pm: 'prevent-main-commit',
|
|
88
|
-
cm: 'check-commit-message',
|
|
89
|
-
ss: 'secretlint-scan',
|
|
90
|
-
ppu: 'pre-push-unit',
|
|
91
|
-
rer: 'reserved-run',
|
|
92
|
-
ptc: 'pre-commit-type-check',
|
|
93
|
-
ird: 'issue:read',
|
|
94
|
-
ist: 'issue:state',
|
|
95
|
-
isc: 'issue:scout',
|
|
96
|
-
ifl: 'issue:file',
|
|
97
|
-
isf: 'issue:fold',
|
|
98
|
-
isfe: 'issue:fold-existing',
|
|
99
|
-
dfr: 'defect:rate',
|
|
100
|
-
ici: 'issue:cite',
|
|
101
|
-
icm: 'issue:comment',
|
|
102
|
-
pks: 'pkg:scout',
|
|
103
|
-
iln: 'issue:lint',
|
|
104
|
-
ibl: 'issue:backlinks',
|
|
105
|
-
rl: 'report:lint',
|
|
106
|
-
ep: 'epic',
|
|
107
|
-
ec: 'epic:check',
|
|
108
|
-
en: 'epic:next',
|
|
109
|
-
ea: 'epic:audit',
|
|
110
|
-
eb: 'epic:bundle',
|
|
111
|
-
ao: 'auto-ok:next',
|
|
112
|
-
bl: 'backlog:next',
|
|
113
|
-
blo: 'backlog:offer',
|
|
114
|
-
bld: 'backlog:drive',
|
|
115
|
-
blp: 'backlog:plan',
|
|
116
|
-
bls: 'backlog:stalled',
|
|
117
|
-
bb: 'backlog:budget',
|
|
118
|
-
co: 'cost',
|
|
119
|
-
ds: 'doc:section',
|
|
120
|
-
rs: 'read:set',
|
|
121
|
-
dcr: 'doc:read',
|
|
122
|
-
rf: 'read:files',
|
|
123
|
-
ef: 'edit:files',
|
|
124
|
-
rfs: 'refactor:scan',
|
|
125
75
|
tm: 'time',
|
|
126
76
|
tmd: 'time:density',
|
|
127
77
|
rtr: 'retrospective',
|
|
128
|
-
rb: 'review:brief',
|
|
129
|
-
r2: 'review:round2',
|
|
130
|
-
ra: 'review:attest',
|
|
131
|
-
rvr: 'review:record',
|
|
132
78
|
rvf: 'review:findings',
|
|
133
|
-
dp: 'disposition',
|
|
134
|
-
dg: 'delegate',
|
|
135
|
-
fo: 'fanout',
|
|
136
|
-
rh: 'run:hold',
|
|
137
|
-
rr: 'run:release',
|
|
138
|
-
rc: 'run:carry',
|
|
139
|
-
rtd: 'run:tidy',
|
|
140
|
-
rw: 'run:wake',
|
|
141
|
-
rct: 'run:cut',
|
|
142
|
-
rv: 'run:liveness',
|
|
143
|
-
red: 'run:ending',
|
|
144
|
-
rg: 'run:progress',
|
|
145
|
-
rp: 'run:prep',
|
|
146
|
-
ren: 'run:entry',
|
|
147
|
-
rtl: 'run:tail',
|
|
148
|
-
shp: 'ship',
|
|
149
|
-
rst: 'run:status',
|
|
150
|
-
rn: 'run:next',
|
|
151
|
-
rsp: 'run:step',
|
|
152
|
-
rpy: 'repo:party',
|
|
153
|
-
rmg: 'run:merge',
|
|
154
|
-
rrp: 'run:report',
|
|
155
|
-
rrv: 'run:review',
|
|
156
|
-
rev: 'run:event',
|
|
157
|
-
sp: 'stash:pop',
|
|
158
|
-
lno: 'lane:open',
|
|
159
|
-
lnc: 'lane:close',
|
|
160
|
-
lnl: 'lane:list',
|
|
161
|
-
lnp: 'lane:prune',
|
|
162
|
-
lnv: 'lane:output',
|
|
163
|
-
lnd: 'lane:dispatch',
|
|
164
|
-
lna: 'lane:await',
|
|
165
|
-
lnla: 'lane:launch',
|
|
166
|
-
rwg: 'run:watcher:guard',
|
|
167
|
-
rsd: 'run:stranded',
|
|
168
|
-
ig: 'investigation:guard',
|
|
169
|
-
drg: 'duplicate-read:guard',
|
|
170
|
-
rug: 'rule:guard',
|
|
171
79
|
ruv: 'rule:value',
|
|
172
|
-
ptg: 'pretool:guard',
|
|
173
|
-
sg: 'stop:guard',
|
|
174
80
|
ev: 'eval',
|
|
175
|
-
ol: 'oracle:list',
|
|
176
|
-
sa: 'split:assess',
|
|
177
|
-
shs: 'sonar:hotspots',
|
|
178
|
-
uir: 'ui:routes',
|
|
179
|
-
cs: 'clone:scan',
|
|
180
|
-
ca: 'cases',
|
|
181
81
|
}
|
|
182
82
|
|
|
183
83
|
// The canonical name of a `josh` subcommand: an alias expands, and anything else passes through
|
|
@@ -4,10 +4,9 @@ import { DOCUMENT_COMMANDS } from './josh-commands-document'
|
|
|
4
4
|
import { GUARD_COMMANDS } from './josh-commands-guard'
|
|
5
5
|
import { ISSUE_COMMANDS } from './josh-commands-issue'
|
|
6
6
|
import { LANE_COMMANDS } from './josh-commands-lane'
|
|
7
|
+
import { RUN_COMMANDS } from './josh-commands-run'
|
|
7
8
|
import { SPLIT_COMMANDS } from './josh-commands-split'
|
|
8
9
|
|
|
9
|
-
// One script answers both `run:hold` and `run:release`; the flag below is what tells them apart.
|
|
10
|
-
const RUN_HOLD_SCRIPT = 'scripts/run/run-hold-cli.ts'
|
|
11
10
|
const ISSUE_WITH_OPTIONS = '<issue> [options]'
|
|
12
11
|
|
|
13
12
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
@@ -21,7 +20,7 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
|
|
|
21
20
|
reference: ['<keywords> [--size <n>]', 'automation', ['network']],
|
|
22
21
|
},
|
|
23
22
|
'stash:pop': {
|
|
24
|
-
script: 'scripts/git/stash-pop-cli.ts',
|
|
23
|
+
script: 'scripts/git/stash/stash-pop-cli.ts',
|
|
25
24
|
description: 'Pop the stash matching this message, not whichever a shared stack has on top',
|
|
26
25
|
category: 'AI tools',
|
|
27
26
|
reference: ['<message>', 'automation', ['git']],
|
|
@@ -36,7 +35,7 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
|
|
|
36
35
|
script: 'scripts/epic/epic-next.ts',
|
|
37
36
|
description: "List an epic's runnable children, bundled per repository",
|
|
38
37
|
category: 'AI tools',
|
|
39
|
-
reference: ['<epic>', 'automation', ['network']],
|
|
38
|
+
reference: ['<epic>... [--repo <owner/repo>] [--lanes]', 'automation', ['network']],
|
|
40
39
|
},
|
|
41
40
|
'epic:bundle': {
|
|
42
41
|
script: 'scripts/epic/epic-bundle-cli.ts',
|
|
@@ -65,9 +64,10 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
|
|
|
65
64
|
...BACKLOG_COMMANDS,
|
|
66
65
|
cost: {
|
|
67
66
|
script: 'scripts/cost-runtime/cost-cli.ts',
|
|
68
|
-
description:
|
|
67
|
+
description:
|
|
68
|
+
'Say whether the next turn of a run crosses the context-cut threshold (--cut) or a given tokens-per-request figure (--over)',
|
|
69
69
|
category: 'AI tools',
|
|
70
|
-
reference: ['
|
|
70
|
+
reference: ['(--cut | --over <tokens-per-request>) [--path <dir>]', 'automation', ['none']],
|
|
71
71
|
},
|
|
72
72
|
...DOCUMENT_COMMANDS,
|
|
73
73
|
time: {
|
|
@@ -134,100 +134,7 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
|
|
|
134
134
|
category: 'AI tools',
|
|
135
135
|
reference: ['<unit-files> <unit-files> [<unit-files> …]', 'automation', ['none']],
|
|
136
136
|
},
|
|
137
|
-
|
|
138
|
-
script: RUN_HOLD_SCRIPT,
|
|
139
|
-
description: 'Claim this working tree for a run, or say which run already holds it',
|
|
140
|
-
category: 'AI tools',
|
|
141
|
-
reference: ['[issue]', 'automation', ['files']],
|
|
142
|
-
},
|
|
143
|
-
'run:release': {
|
|
144
|
-
script: RUN_HOLD_SCRIPT,
|
|
145
|
-
description: "Release this working tree's run record",
|
|
146
|
-
category: 'AI tools',
|
|
147
|
-
reference: ['[issue|--force]', 'automation', ['files']],
|
|
148
|
-
default_script_arguments: ['--release'],
|
|
149
|
-
},
|
|
150
|
-
'run:tidy': {
|
|
151
|
-
script: 'scripts/run/run-tidy-cli.ts',
|
|
152
|
-
description: 'Close merged lanes and drop stashes whose issues are all merged',
|
|
153
|
-
category: 'AI tools',
|
|
154
|
-
reference: ['', 'automation', ['git', 'network', 'files']],
|
|
155
|
-
},
|
|
156
|
-
'run:carry': {
|
|
157
|
-
script: 'scripts/run/run-carry-cli.ts',
|
|
158
|
-
description: 'Carry one invocation’s budget across its own session cuts',
|
|
159
|
-
category: 'AI tools',
|
|
160
|
-
reference: ['<operation> [arguments...]', 'automation', ['files']],
|
|
161
|
-
},
|
|
162
|
-
'run:wake': {
|
|
163
|
-
script: 'scripts/run/run-wake-cli.ts',
|
|
164
|
-
// `.env` rather than the ambient environment:
|
|
165
|
-
// the failure warning needs the Telegram credentials, the same
|
|
166
|
-
// reasons `notify` and `followup` carry these flags.
|
|
167
|
-
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
168
|
-
description: 'Wake the next session of a cut backlogrun from outside the conversation',
|
|
169
|
-
category: 'AI tools',
|
|
170
|
-
reference: ['[options]', 'automation', ['processes', 'notifications']],
|
|
171
|
-
},
|
|
172
|
-
'run:cut': {
|
|
173
|
-
script: 'scripts/run/run-cut-cli.ts',
|
|
174
|
-
description: 'Cut a lane child before the gate and resume a fresh process',
|
|
175
|
-
category: 'AI tools',
|
|
176
|
-
reference: ['[--resume] <issue> [--impl] [--handoff <path>]', 'automation', ['files']],
|
|
177
|
-
},
|
|
178
|
-
'run:liveness': {
|
|
179
|
-
script: 'scripts/run/run-liveness-cli.ts',
|
|
180
|
-
description: 'Say whether a delegated unit is still working, or stopped without reporting',
|
|
181
|
-
category: 'AI tools',
|
|
182
|
-
reference: ['<issue> --output <path> [options]', 'automation', ['processes']],
|
|
183
|
-
},
|
|
184
|
-
'run:ending': {
|
|
185
|
-
script: 'scripts/run/run-ending-cli.ts',
|
|
186
|
-
description: 'Classify how a dispatched lane child ended (merged, cut, abandoned, unreadable)',
|
|
187
|
-
category: 'AI tools',
|
|
188
|
-
reference: ['<issue> --output <path> [--repo <owner/repo>]', 'automation', ['network']],
|
|
189
|
-
},
|
|
190
|
-
'run:progress': {
|
|
191
|
-
script: 'scripts/run/run-progress-cli.ts',
|
|
192
|
-
description: 'Report an unattended run’s progress once it has gone quiet for an interval',
|
|
193
|
-
category: 'AI tools',
|
|
194
|
-
reference: ['[--wait|--mark]', 'automation', ['files']],
|
|
195
|
-
},
|
|
196
|
-
'run:prep': {
|
|
197
|
-
script: 'scripts/run/run-prep-cli.ts',
|
|
198
|
-
description: 'Bundle a run’s pre-edit reads: body, comments, state, dependency scope',
|
|
199
|
-
category: 'AI tools',
|
|
200
|
-
reference: ['<issue>', 'automation', ['network']],
|
|
201
|
-
},
|
|
202
|
-
// The entry sequence a lane opened on, folded into one call (joshuafolkken/kit#2372): claim the tree,
|
|
203
|
-
// read the budget, gather the issue reads and decide the pre-implementation step. `run:hold`,
|
|
204
|
-
// `cost --cut`, `run:prep` and `run:step` were four round trips re-billing a lane's full context each.
|
|
205
|
-
'run:entry': {
|
|
206
|
-
script: 'scripts/run/run-entry-cli.ts',
|
|
207
|
-
description:
|
|
208
|
-
'Open a run in one call: claim the tree, read the budget, bundle the reads, decide the pre-implementation step',
|
|
209
|
-
category: 'AI tools',
|
|
210
|
-
reference: ['<issue>', 'automation', ['git', 'network', 'files']],
|
|
211
|
-
},
|
|
212
|
-
'run:status': {
|
|
213
|
-
script: 'scripts/run/run-status-cli.ts',
|
|
214
|
-
description: 'Bundle a run’s read-only status: issue state, cost verdict, carry counters',
|
|
215
|
-
category: 'AI tools',
|
|
216
|
-
reference: ['<issue> [--repo <owner/repo>]', 'automation', ['network']],
|
|
217
|
-
},
|
|
218
|
-
'run:next': {
|
|
219
|
-
script: 'scripts/run/run-next-cli.ts',
|
|
220
|
-
description: 'Print the next step a fullrun takes, computed from the run’s state',
|
|
221
|
-
category: 'AI tools',
|
|
222
|
-
reference: ['<issue>', 'automation', ['network']],
|
|
223
|
-
},
|
|
224
|
-
'run:step': {
|
|
225
|
-
script: 'scripts/run/run-step-cli.ts',
|
|
226
|
-
description:
|
|
227
|
-
'Print the run’s next single action, computed from the event stream, carry record and issue state',
|
|
228
|
-
category: 'AI tools',
|
|
229
|
-
reference: ['<issue>', 'automation', ['network', 'files']],
|
|
230
|
-
},
|
|
137
|
+
...RUN_COMMANDS,
|
|
231
138
|
'repo:party': {
|
|
232
139
|
script: 'scripts/discovery/repo-party-cli.ts',
|
|
233
140
|
description:
|
|
@@ -255,7 +162,7 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
|
|
|
255
162
|
'run:tail': {
|
|
256
163
|
script: 'scripts/run/run-tail-cli.ts',
|
|
257
164
|
description:
|
|
258
|
-
'Close a run in one call: commit the observation ledger, read the citations, decide the release scope',
|
|
165
|
+
'Close a run in one call: return to the default branch, commit the observation ledger, read the citations, decide the release scope',
|
|
259
166
|
category: 'AI tools',
|
|
260
167
|
reference: ['[<issue> ...]', 'automation', ['git', 'network']],
|
|
261
168
|
},
|
|
@@ -269,7 +176,7 @@ const AI_COMMANDS: Record<string, CommandEntry> = {
|
|
|
269
176
|
'Ship a change in one call: gate, commit/push/PR, the CI-wait merge and the report bookkeeping, stopping at the first failed step',
|
|
270
177
|
category: 'AI tools',
|
|
271
178
|
reference: [
|
|
272
|
-
'"<title> #<N>" [<follow-up-N> ...] [--cite <N>] [--review] [--detach] [--notify-message <text> | --notify-message-file <path>] | --log <N>',
|
|
179
|
+
'"<title> #<N>" [<follow-up-N> ...] [--cite <N>] [--review] [--detach] [--body-file <path>] [--notify-message <text> | --notify-message-file <path>] | --log <N>',
|
|
273
180
|
'automation',
|
|
274
181
|
['git', 'network'],
|
|
275
182
|
],
|
|
@@ -33,7 +33,11 @@ const BACKLOG_COMMANDS: Record<string, CommandEntry> = {
|
|
|
33
33
|
description:
|
|
34
34
|
'Print the whole backlog as a plan: ready now, waiting on what, waiting on a person, out of scope',
|
|
35
35
|
category: 'AI tools',
|
|
36
|
-
reference: [
|
|
36
|
+
reference: [
|
|
37
|
+
'[issue...] [--only] [--waves] [--exclude <n>[,<n>...]]',
|
|
38
|
+
'automation',
|
|
39
|
+
['network'],
|
|
40
|
+
],
|
|
37
41
|
},
|
|
38
42
|
'backlog:stalled': {
|
|
39
43
|
script: 'scripts/backlog/backlog-stalled-cli.ts',
|
|
@@ -46,7 +46,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
46
46
|
reference: ['', 'automation', ['processes']],
|
|
47
47
|
},
|
|
48
48
|
bytes: {
|
|
49
|
-
script: 'scripts/
|
|
49
|
+
script: 'scripts/lines/bytes-command.ts',
|
|
50
50
|
description:
|
|
51
51
|
"Print an agent-read document's byte size against its ceiling and the headroom left",
|
|
52
52
|
category: 'Development',
|
|
@@ -66,7 +66,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
66
66
|
reference: ['', 'developer', ['files', 'processes']],
|
|
67
67
|
},
|
|
68
68
|
'format:edited': {
|
|
69
|
-
script: 'scripts/hooks/format-edited-
|
|
69
|
+
script: 'scripts/hooks/format-edited-cli.ts',
|
|
70
70
|
description: 'Claude Code hook: format the file just edited (reads the tool call on stdin)',
|
|
71
71
|
category: 'Development',
|
|
72
72
|
reference: ['', 'automation', ['files', 'processes']],
|
|
@@ -85,7 +85,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
85
85
|
// node's own `--env-file` parser with node's own precedence.
|
|
86
86
|
},
|
|
87
87
|
'pretool:guard': {
|
|
88
|
-
script: 'scripts/hooks/pretool-guard.ts',
|
|
88
|
+
script: 'scripts/hooks/pretool-guard-cli.ts',
|
|
89
89
|
description:
|
|
90
90
|
'Claude Code hook: the batch, investigation and rule guards in one process (reads the tool call on stdin)',
|
|
91
91
|
category: 'Development',
|
|
@@ -128,6 +128,13 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
|
|
|
128
128
|
category: 'Development',
|
|
129
129
|
reference: ['', 'developer', ['files']],
|
|
130
130
|
},
|
|
131
|
+
'exports:unused': {
|
|
132
|
+
script: 'scripts/exports/unused-members-cli.ts',
|
|
133
|
+
description:
|
|
134
|
+
'Report exported namespace members nothing reads (kit only; a consumer project skips it)',
|
|
135
|
+
category: 'Development',
|
|
136
|
+
reference: ['', 'developer', ['none']],
|
|
137
|
+
},
|
|
131
138
|
'test:unit': {
|
|
132
139
|
script: 'scripts/test/test-unit-guard.ts',
|
|
133
140
|
description:
|
|
@@ -29,7 +29,7 @@ const ISSUE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
29
29
|
description:
|
|
30
30
|
'Before filing: say whether an issue like this exists and which epic it belongs to',
|
|
31
31
|
category: 'AI tools',
|
|
32
|
-
reference: ['<title> [--body <summary>]', 'automation', ['network']],
|
|
32
|
+
reference: ['<title> [--body <summary> | --body-file <path>]', 'automation', ['network']],
|
|
33
33
|
},
|
|
34
34
|
'defect:rate': {
|
|
35
35
|
script: 'scripts/issue/defect-rate-cli.ts',
|
|
@@ -49,7 +49,7 @@ const ISSUE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
49
49
|
script: 'scripts/issue/issue-fold-existing-cli.ts',
|
|
50
50
|
description: 'Assess whether a complete draft can join an unstarted issue',
|
|
51
51
|
category: 'AI tools',
|
|
52
|
-
reference: ['<assessment.json>', 'automation', ['none']],
|
|
52
|
+
reference: ['<assessment.json> [--json]', 'automation', ['none']],
|
|
53
53
|
},
|
|
54
54
|
'issue:cite': {
|
|
55
55
|
script: 'scripts/issue/issue-cite-cli.ts',
|
|
@@ -10,6 +10,13 @@ const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
|
|
|
10
10
|
reference: ['[--fix]', 'developer', ['files']],
|
|
11
11
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
12
12
|
},
|
|
13
|
+
'ruleset:check': {
|
|
14
|
+
script: 'scripts/repo/ruleset-check-cli.ts',
|
|
15
|
+
description:
|
|
16
|
+
"Check that the default branch requires every status check kit's workflows report (--apply adds the missing ones)",
|
|
17
|
+
category: 'Maintenance',
|
|
18
|
+
reference: ['[--apply]', 'maintainer', ['network']],
|
|
19
|
+
},
|
|
13
20
|
overrides: {
|
|
14
21
|
script: 'scripts/overrides/overrides-check.ts',
|
|
15
22
|
description: 'Check pnpm overrides for drift',
|
|
@@ -17,7 +17,7 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
|
|
|
17
17
|
description: 'Set a project up for the GitHub Issue workflow, from git init to the setup PR',
|
|
18
18
|
category: 'Project',
|
|
19
19
|
reference: [
|
|
20
|
-
`${PROFILE_ARGUMENTS} [--yes] [--github] [--public]`,
|
|
20
|
+
`${PROFILE_ARGUMENTS} [--yes] [--github] [--public] [--init-command <command>]`,
|
|
21
21
|
'developer',
|
|
22
22
|
['files', 'git', 'network', 'processes'],
|
|
23
23
|
],
|
|
@@ -57,6 +57,12 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
|
|
|
57
57
|
category: 'Project',
|
|
58
58
|
reference: ['<PR>', 'automation', ['network']],
|
|
59
59
|
},
|
|
60
|
+
'sonar:new-code': {
|
|
61
|
+
script: 'scripts/sonar/sonar-new-code-cli.ts',
|
|
62
|
+
description: 'Fail when a pull request adds any new SonarCloud issue or duplicated block',
|
|
63
|
+
category: 'Project',
|
|
64
|
+
reference: ['<PR>', 'automation', ['network']],
|
|
65
|
+
},
|
|
60
66
|
'ui:routes': {
|
|
61
67
|
script: 'scripts/ui/ui-routes-cli.ts',
|
|
62
68
|
description: 'List the screenshot-target routes the current change touches',
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
|
|
2
|
+
|
|
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` were
|
|
5
|
+
// (joshuafolkken/kit#2992). It is spread into `AI_COMMANDS` at the place the entries used to sit, so
|
|
6
|
+
// the generated catalog keeps their order.
|
|
7
|
+
|
|
8
|
+
// One script answers both `run:hold` and `run:release`; the flag below is what tells them apart.
|
|
9
|
+
const RUN_HOLD_SCRIPT = 'scripts/run/run-hold-cli.ts'
|
|
10
|
+
|
|
11
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
12
|
+
const RUN_COMMANDS: Record<string, CommandEntry> = {
|
|
13
|
+
'run:hold': {
|
|
14
|
+
script: RUN_HOLD_SCRIPT,
|
|
15
|
+
description: 'Claim this working tree for a run, or say which run already holds it',
|
|
16
|
+
category: 'AI tools',
|
|
17
|
+
reference: ['[<issue> [--fullrun | --halfrun-stop | --prrun-stop]]', 'automation', ['files']],
|
|
18
|
+
},
|
|
19
|
+
'run:release': {
|
|
20
|
+
script: RUN_HOLD_SCRIPT,
|
|
21
|
+
description: "Release this working tree's run record",
|
|
22
|
+
category: 'AI tools',
|
|
23
|
+
reference: ['[issue|--force]', 'automation', ['files']],
|
|
24
|
+
default_script_arguments: ['--release'],
|
|
25
|
+
},
|
|
26
|
+
'run:tidy': {
|
|
27
|
+
script: 'scripts/run/run-tidy-cli.ts',
|
|
28
|
+
description: 'Close merged lanes and drop stashes whose issues are all merged',
|
|
29
|
+
category: 'AI tools',
|
|
30
|
+
reference: ['', 'automation', ['git', 'network', 'files']],
|
|
31
|
+
},
|
|
32
|
+
'run:carry': {
|
|
33
|
+
script: 'scripts/run/run-carry-cli.ts',
|
|
34
|
+
description: 'Carry one invocation’s budget across its own session cuts',
|
|
35
|
+
category: 'AI tools',
|
|
36
|
+
reference: ['<operation> [arguments...]', 'automation', ['files']],
|
|
37
|
+
},
|
|
38
|
+
'run:wake': {
|
|
39
|
+
script: 'scripts/run/run-wake-cli.ts',
|
|
40
|
+
// `.env` rather than the ambient environment:
|
|
41
|
+
// the failure warning needs the Telegram credentials, the same
|
|
42
|
+
// reasons `notify` and `followup` carry these flags.
|
|
43
|
+
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
44
|
+
description: 'Wake the next session of a cut backlogrun from outside the conversation',
|
|
45
|
+
category: 'AI tools',
|
|
46
|
+
reference: ['[options]', 'automation', ['processes', 'notifications']],
|
|
47
|
+
},
|
|
48
|
+
'run:cut': {
|
|
49
|
+
script: 'scripts/run/run-cut-cli.ts',
|
|
50
|
+
description: 'Cut a lane child before the gate and resume a fresh process',
|
|
51
|
+
category: 'AI tools',
|
|
52
|
+
reference: ['[--resume] <issue> [--impl] [--handoff <path>]', 'automation', ['files']],
|
|
53
|
+
},
|
|
54
|
+
'run:liveness': {
|
|
55
|
+
script: 'scripts/run/run-liveness-cli.ts',
|
|
56
|
+
description: 'Say whether a delegated unit is still working, or stopped without reporting',
|
|
57
|
+
category: 'AI tools',
|
|
58
|
+
reference: ['<issue> --output <path> [options]', 'automation', ['processes']],
|
|
59
|
+
},
|
|
60
|
+
'run:ending': {
|
|
61
|
+
script: 'scripts/run/run-ending-cli.ts',
|
|
62
|
+
description: 'Classify how a dispatched lane child ended (merged, cut, abandoned, unreadable)',
|
|
63
|
+
category: 'AI tools',
|
|
64
|
+
reference: ['<issue> --output <path> [--repo <owner/repo>]', 'automation', ['network']],
|
|
65
|
+
},
|
|
66
|
+
'run:progress': {
|
|
67
|
+
script: 'scripts/run/run-progress-cli.ts',
|
|
68
|
+
description: 'Report an unattended run’s progress once it has gone quiet for an interval',
|
|
69
|
+
category: 'AI tools',
|
|
70
|
+
reference: [
|
|
71
|
+
'[--once | --wait] [--interval <minutes>] [--hours <hours>] [--repo <owner/repo>] [--output <path>] | --mark | --path',
|
|
72
|
+
'automation',
|
|
73
|
+
['files'],
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
'run:prep': {
|
|
77
|
+
script: 'scripts/run/run-prep-cli.ts',
|
|
78
|
+
description: 'Bundle a run’s pre-edit reads: body, comments, state, dependency scope',
|
|
79
|
+
category: 'AI tools',
|
|
80
|
+
reference: ['<issue>', 'automation', ['network']],
|
|
81
|
+
},
|
|
82
|
+
// The entry sequence a lane opened on, folded into one call (joshuafolkken/kit#2372): claim the tree,
|
|
83
|
+
// read the budget, gather the issue reads and decide the pre-implementation step. `run:hold`,
|
|
84
|
+
// `cost --cut`, `run:prep` and `run:step` were four round trips re-billing a lane's full context each.
|
|
85
|
+
'run:entry': {
|
|
86
|
+
script: 'scripts/run/run-entry-cli.ts',
|
|
87
|
+
description:
|
|
88
|
+
'Open a run in one call: claim the tree, read the budget, bundle the reads, decide the pre-implementation step',
|
|
89
|
+
category: 'AI tools',
|
|
90
|
+
reference: ['<issue> [--to <command>]', 'automation', ['git', 'network', 'files']],
|
|
91
|
+
},
|
|
92
|
+
'run:status': {
|
|
93
|
+
script: 'scripts/run/run-status-cli.ts',
|
|
94
|
+
description: 'Bundle a run’s read-only status: issue state, cost verdict, carry counters',
|
|
95
|
+
category: 'AI tools',
|
|
96
|
+
reference: ['<issue> [--repo <owner/repo>]', 'automation', ['network']],
|
|
97
|
+
},
|
|
98
|
+
'run:next': {
|
|
99
|
+
script: 'scripts/run/run-next-cli.ts',
|
|
100
|
+
description: 'Print the next step a fullrun takes, computed from the run’s state',
|
|
101
|
+
category: 'AI tools',
|
|
102
|
+
reference: ['<issue>', 'automation', ['network']],
|
|
103
|
+
},
|
|
104
|
+
'run:step': {
|
|
105
|
+
script: 'scripts/run/run-step-cli.ts',
|
|
106
|
+
description:
|
|
107
|
+
'Print the run’s next single action, computed from the event stream, carry record and issue state',
|
|
108
|
+
category: 'AI tools',
|
|
109
|
+
reference: ['<issue>', 'automation', ['network', 'files']],
|
|
110
|
+
},
|
|
111
|
+
}
|
|
112
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
113
|
+
|
|
114
|
+
export { RUN_COMMANDS }
|
|
@@ -42,6 +42,14 @@ 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
|
+
// (joshuafolkken/kit#3007). Settings come from the environment, so the workflow decides them.
|
|
47
|
+
'release:github': {
|
|
48
|
+
script: 'scripts/release/github-release-cli.ts',
|
|
49
|
+
description: 'Create the GitHub Release for a published tag, with generated notes',
|
|
50
|
+
category: 'Versioning',
|
|
51
|
+
reference: ['', 'automation', ['network', 'release']],
|
|
52
|
+
},
|
|
45
53
|
}
|
|
46
54
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
47
55
|
|
|
@@ -35,7 +35,7 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
35
35
|
// than dropped: `telegram_notify.send` now throws on missing credentials and on a failed send, so
|
|
36
36
|
// `josh notify` exits non-zero instead of warning and answering 0.
|
|
37
37
|
followup: {
|
|
38
|
-
script: 'scripts/
|
|
38
|
+
script: 'scripts/followup/git-followup-workflow.ts',
|
|
39
39
|
description: 'Follow-up git workflow',
|
|
40
40
|
category: 'Workflow',
|
|
41
41
|
reference: [
|
|
@@ -46,7 +46,7 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
|
|
|
46
46
|
tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
|
|
47
47
|
},
|
|
48
48
|
notify: {
|
|
49
|
-
script: 'scripts/
|
|
49
|
+
script: 'scripts/notify/telegram-test.ts',
|
|
50
50
|
description: 'Send Telegram notification',
|
|
51
51
|
category: 'Workflow',
|
|
52
52
|
reference: ['--task-type <type> --body <text>', 'automation', ['notifications']],
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
|
|
3
|
+
// The pair a record names its writing process by, as `process_identity` reads it back
|
|
4
|
+
// (joshuafolkken/kit#1245): the pid, and the opaque start token `process_identity.own_fields` wrote
|
|
5
|
+
// beside it. Every lock, marker and ledger entry that later asks `is_same_process` carries this pair,
|
|
6
|
+
// so its shape is declared once here and each record extends it (joshuafolkken/kit#2986).
|
|
7
|
+
//
|
|
8
|
+
// `process_start` is optional because a record written before joshuafolkken/kit#1245, or on a platform
|
|
9
|
+
// whose start time cannot be read, carries only the pid — `is_same_process` has an answer of its own
|
|
10
|
+
// for that case rather than the record being rejected.
|
|
11
|
+
const process_owner_schema = z.object({ pid: z.number(), process_start: z.string().optional() })
|
|
12
|
+
|
|
13
|
+
type ProcessOwner = z.infer<typeof process_owner_schema>
|
|
14
|
+
|
|
15
|
+
export { process_owner_schema }
|
|
16
|
+
export type { ProcessOwner }
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process'
|
|
2
2
|
import { setTimeout as sleep } from 'node:timers/promises'
|
|
3
|
-
import { git_common_directory } from '#scripts/git/git-common-directory'
|
|
4
|
-
import { run_ship_detach } from '#scripts/run/run-ship-detach'
|
|
5
3
|
import { lane_child_invocation } from './lane-child-invocation'
|
|
4
|
+
import { lane_handoff } from './lane-handoff'
|
|
6
5
|
|
|
7
6
|
// Detached lane children are not harness-tracked processes, so their completion fires no
|
|
8
7
|
// re-invocation event in the parent's session. Without a blocking wait the parent notices only
|
|
@@ -52,11 +51,8 @@ function is_process_running_default(issue: string): boolean {
|
|
|
52
51
|
const result = spawnSync('pgrep', ['-f', pattern], { encoding: 'utf8' })
|
|
53
52
|
|
|
54
53
|
if (result.status === PROCESS_FOUND) return true
|
|
55
|
-
const repository = git_common_directory.repository(process.cwd())
|
|
56
54
|
|
|
57
|
-
return (
|
|
58
|
-
repository !== undefined && run_ship_detach.read_result(repository, issue)?.result === 'running'
|
|
59
|
-
)
|
|
55
|
+
return lane_handoff.is_ship_running(issue, process.cwd())
|
|
60
56
|
}
|
|
61
57
|
|
|
62
58
|
function make_initial_state(): AwaitState {
|
|
@@ -155,6 +151,7 @@ async function wait_for_any(
|
|
|
155
151
|
|
|
156
152
|
if (completed !== undefined) return completed
|
|
157
153
|
|
|
154
|
+
// eslint-disable-next-line no-await-in-loop -- polling: each read waits on the state the previous one saw
|
|
158
155
|
await sleep(config.poll_ms)
|
|
159
156
|
}
|
|
160
157
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { LaneEnvironment } from './lane-paths'
|
|
2
|
+
import { lane_seed_policy } from './lane-seed'
|
|
2
3
|
|
|
3
4
|
// How many lanes one repository may run at once, and how many of them are free
|
|
4
5
|
// (joshuafolkken/kit#1491).
|
|
@@ -54,14 +55,16 @@ function lane_limit(environment: LaneEnvironment = process.env): LimitChoice {
|
|
|
54
55
|
// Never negative: a repository holding more `in-progress` issues than the limit allows — the limit
|
|
55
56
|
// was lowered, or a stale label outlived its run — has no free lane, and a negative count read as
|
|
56
57
|
// "how many to offer" would be a slice nobody meant.
|
|
58
|
+
//
|
|
59
|
+
// **A limit above the seat count is capped at the seats** (joshuafolkken/kit#3027). `lane:open` refuses
|
|
60
|
+
// a tenth lane however high `JOSH_LANE_LIMIT` is set, so counting free lanes past the seats offers a
|
|
61
|
+
// launch that is bound to be refused.
|
|
57
62
|
function free_lanes(limit: number, occupied: number): number {
|
|
58
|
-
return Math.max(NO_LANES, limit - occupied)
|
|
63
|
+
return Math.max(NO_LANES, Math.min(limit, lane_seed_policy.LAST_LANE_SEAT) - occupied)
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
const lane_capacity = {
|
|
62
|
-
DEFAULT_LANE_LIMIT,
|
|
63
67
|
LANE_LIMIT_KEY,
|
|
64
|
-
read_limit,
|
|
65
68
|
lane_limit,
|
|
66
69
|
free_lanes,
|
|
67
70
|
}
|