@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/hooks/stop-guard.js
CHANGED
|
@@ -2,53 +2,59 @@
|
|
|
2
2
|
import {
|
|
3
3
|
RUN_LANE_LABEL,
|
|
4
4
|
RUN_SOLO_LABEL,
|
|
5
|
-
agent_headless,
|
|
6
|
-
agent_role_profile,
|
|
7
|
-
backlog_budget,
|
|
8
5
|
filing_cap,
|
|
9
6
|
git_gh_api_path,
|
|
10
7
|
git_gh_command,
|
|
11
8
|
git_gh_exec,
|
|
12
9
|
has_label_name,
|
|
13
|
-
|
|
10
|
+
issue_citation,
|
|
14
11
|
lane_background,
|
|
15
12
|
lane_handoff,
|
|
16
13
|
lane_park,
|
|
17
|
-
lane_registry,
|
|
18
14
|
repo_party,
|
|
19
|
-
run_carry,
|
|
20
15
|
run_cut,
|
|
21
16
|
run_event_stream,
|
|
22
17
|
run_event_stream_emit,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
run_invocation
|
|
26
|
-
} from "./chunk-KHX4U3BG.js";
|
|
18
|
+
run_hold
|
|
19
|
+
} from "./chunk-MXVQMLDP.js";
|
|
27
20
|
import {
|
|
28
21
|
session_language
|
|
29
22
|
} from "./chunk-6V5OPIUU.js";
|
|
23
|
+
import {
|
|
24
|
+
agent_headless,
|
|
25
|
+
agent_role_profile,
|
|
26
|
+
issue_cite,
|
|
27
|
+
lane_registry,
|
|
28
|
+
run_headless
|
|
29
|
+
} from "./chunk-SYSRHRWU.js";
|
|
30
30
|
import {
|
|
31
31
|
timed_fetch
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-FZ6FUSBM.js";
|
|
33
33
|
import "./chunk-CDY4NFQG.js";
|
|
34
34
|
import {
|
|
35
|
-
hook_decision
|
|
35
|
+
hook_decision
|
|
36
|
+
} from "./chunk-KPM4YIIX.js";
|
|
37
|
+
import {
|
|
38
|
+
time_density_hook,
|
|
39
|
+
time_hook_transcript,
|
|
40
|
+
time_reported_failure
|
|
41
|
+
} from "./chunk-TLJYAGZK.js";
|
|
42
|
+
import {
|
|
36
43
|
lane_child_marker
|
|
37
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-Z5TMJIPW.js";
|
|
38
45
|
import {
|
|
46
|
+
backlog_budget,
|
|
47
|
+
issue_number_shape,
|
|
39
48
|
json_value,
|
|
40
49
|
process_identity,
|
|
41
50
|
process_owner_schema,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
} from "./chunk-WK2XSHSI.js";
|
|
46
|
-
import "./chunk-WPALEIRX.js";
|
|
47
|
-
import "./chunk-RKUAD3I6.js";
|
|
51
|
+
run_carry,
|
|
52
|
+
run_invocation
|
|
53
|
+
} from "./chunk-NZN2UFI6.js";
|
|
48
54
|
import {
|
|
49
55
|
PROJECT_ROOT,
|
|
50
56
|
stamp_file
|
|
51
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-NEC4AT4Z.js";
|
|
52
58
|
|
|
53
59
|
// scripts/hooks/stop-guard.ts
|
|
54
60
|
import { text } from "node:stream/consumers";
|
|
@@ -74,6 +80,44 @@ async function josh_run(args, should_forward_stderr = false, timeout_ms) {
|
|
|
74
80
|
}
|
|
75
81
|
var josh_command = { josh_run };
|
|
76
82
|
|
|
83
|
+
// scripts/lane/lane-limit-override.ts
|
|
84
|
+
var STREAM_START = 0;
|
|
85
|
+
async function carry_target() {
|
|
86
|
+
const repository = await run_carry.repository_directory();
|
|
87
|
+
return repository === void 0 ? void 0 : run_carry.carry_path(repository);
|
|
88
|
+
}
|
|
89
|
+
function live_carry(target) {
|
|
90
|
+
const read = run_carry.read_carry(target);
|
|
91
|
+
return read.kind === "carried" ? read.carry : void 0;
|
|
92
|
+
}
|
|
93
|
+
async function read_override() {
|
|
94
|
+
const target = await carry_target();
|
|
95
|
+
return target === void 0 ? void 0 : live_carry(target)?.lane_limit;
|
|
96
|
+
}
|
|
97
|
+
async function write_override(limit) {
|
|
98
|
+
const target = await carry_target();
|
|
99
|
+
const carry = target === void 0 ? void 0 : live_carry(target);
|
|
100
|
+
if (target === void 0 || carry === void 0) return false;
|
|
101
|
+
stamp_file.write_stamp(target, { ...carry, lane_limit: limit });
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
async function emit_raise(text2) {
|
|
105
|
+
await run_event_stream_emit.emit(run_event_stream.EVENT_KIND.LANE_LIMIT, text2);
|
|
106
|
+
}
|
|
107
|
+
function never_raised() {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
async function watch_raise() {
|
|
111
|
+
const target = await run_event_stream_emit.stream_target();
|
|
112
|
+
if (target === void 0) return never_raised;
|
|
113
|
+
const start = run_event_stream.read_from(target, STREAM_START).next_position;
|
|
114
|
+
return function is_raised() {
|
|
115
|
+
const { events } = run_event_stream.read_from(target, start);
|
|
116
|
+
return events.some((event) => event.kind === run_event_stream.EVENT_KIND.LANE_LIMIT);
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
var lane_limit_override = { emit_raise, read_override, watch_raise, write_override };
|
|
120
|
+
|
|
77
121
|
// scripts/lane/lane-seed.ts
|
|
78
122
|
var FIRST_LANE_SEAT = 1;
|
|
79
123
|
var LAST_LANE_SEAT = 9;
|
|
@@ -96,156 +140,31 @@ var DEFAULT_LANE_LIMIT = 6;
|
|
|
96
140
|
var LANE_LIMIT_KEY = "JOSH_LANE_LIMIT";
|
|
97
141
|
var POSITIVE_INTEGER = /^[1-9]\d*$/u;
|
|
98
142
|
var NO_LANES = 0;
|
|
99
|
-
function read_limit(raw) {
|
|
143
|
+
function read_limit(raw, name) {
|
|
100
144
|
const trimmed = raw?.trim() ?? "";
|
|
101
145
|
if (trimmed === "") return { kind: "limit", limit: DEFAULT_LANE_LIMIT };
|
|
102
146
|
if (!POSITIVE_INTEGER.test(trimmed)) {
|
|
103
|
-
return {
|
|
104
|
-
kind: "problem",
|
|
105
|
-
problem: `${LANE_LIMIT_KEY} must be a positive integer, not "${trimmed}"`
|
|
106
|
-
};
|
|
147
|
+
return { kind: "problem", problem: `${name} must be a positive integer, not "${trimmed}"` };
|
|
107
148
|
}
|
|
108
149
|
return { kind: "limit", limit: Number(trimmed) };
|
|
109
150
|
}
|
|
110
|
-
function lane_limit(environment = process.env) {
|
|
111
|
-
|
|
151
|
+
async function lane_limit(environment = process.env, read_override2 = lane_limit_override.read_override) {
|
|
152
|
+
const override = await read_override2();
|
|
153
|
+
if (override !== void 0) return { kind: "limit", limit: override };
|
|
154
|
+
return read_limit(environment[LANE_LIMIT_KEY], LANE_LIMIT_KEY);
|
|
155
|
+
}
|
|
156
|
+
function seated_limit(limit) {
|
|
157
|
+
return Math.min(limit, lane_seed_policy.LAST_LANE_SEAT);
|
|
112
158
|
}
|
|
113
159
|
function free_lanes(limit, occupied) {
|
|
114
|
-
return Math.max(NO_LANES,
|
|
160
|
+
return Math.max(NO_LANES, seated_limit(limit) - occupied);
|
|
115
161
|
}
|
|
116
162
|
var lane_capacity = {
|
|
117
163
|
LANE_LIMIT_KEY,
|
|
164
|
+
free_lanes,
|
|
118
165
|
lane_limit,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
// scripts/rules/issue-citation.ts
|
|
123
|
-
var ISSUE_NUMBER = /#\d+/gu;
|
|
124
|
-
var REFERENCE_BOUNDARY = /[\s#()[\]<>|]/u;
|
|
125
|
-
var OWNER_REPO = /^[^\s/#]+\/[^\s/#]+$/u;
|
|
126
|
-
var MARKDOWN_LINK = /\[[^[\]]*\]\([^()]*\)/gu;
|
|
127
|
-
var NUMBER_CONTINUATION = /^(?:\w|-[a-z])/iu;
|
|
128
|
-
var CONTINUATION_WIDTH = 2;
|
|
129
|
-
var GLUED_LEAD = /[&./]/u;
|
|
130
|
-
var FENCE_MARKER = /^\s*(?:`{3,}|~{3,})/u;
|
|
131
|
-
var QUOTE_LINE = /^\s*>/u;
|
|
132
|
-
var PR_PREFIX = /\b(?:pr|pull request)\s*$/iu;
|
|
133
|
-
var BACKTICK_PAIR = 2;
|
|
134
|
-
function link_covers(link, index) {
|
|
135
|
-
const start = link.index ?? 0;
|
|
136
|
-
return index >= start && index < start + link[0].length;
|
|
137
|
-
}
|
|
138
|
-
function is_linked_at(line, index) {
|
|
139
|
-
for (const link of line.matchAll(MARKDOWN_LINK)) {
|
|
140
|
-
if (link_covers(link, index)) return true;
|
|
141
|
-
}
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
function lead_token(message2, hash_index) {
|
|
145
|
-
let start = hash_index;
|
|
146
|
-
while (start > 0 && !REFERENCE_BOUNDARY.test(message2.charAt(start - 1))) start -= 1;
|
|
147
|
-
return message2.slice(start, hash_index);
|
|
148
|
-
}
|
|
149
|
-
function repo_prefix(message2, hash_index) {
|
|
150
|
-
const token = lead_token(message2, hash_index);
|
|
151
|
-
return OWNER_REPO.test(token) ? token : "";
|
|
152
|
-
}
|
|
153
|
-
function is_inline_code_at(line, index) {
|
|
154
|
-
const backticks = line.slice(0, index).split("`").length - 1;
|
|
155
|
-
return backticks % BACKTICK_PAIR === 1;
|
|
156
|
-
}
|
|
157
|
-
function is_bare_at(line, index) {
|
|
158
|
-
if (is_linked_at(line, index) || is_inline_code_at(line, index)) return false;
|
|
159
|
-
return !PR_PREFIX.test(line.slice(0, index));
|
|
160
|
-
}
|
|
161
|
-
function is_glued(line, reference) {
|
|
162
|
-
const end = reference.index + reference.text.length;
|
|
163
|
-
if (NUMBER_CONTINUATION.test(line.slice(end, end + CONTINUATION_WIDTH))) return true;
|
|
164
|
-
return reference.prefix === "" && GLUED_LEAD.test(lead_token(line, reference.index));
|
|
165
|
-
}
|
|
166
|
-
function line_references(line) {
|
|
167
|
-
const references = [];
|
|
168
|
-
for (const match of line.matchAll(ISSUE_NUMBER)) {
|
|
169
|
-
const reference = { index: match.index, prefix: repo_prefix(line, match.index), text: match[0] };
|
|
170
|
-
if (!is_glued(line, reference) && is_bare_at(line, match.index)) references.push(reference);
|
|
171
|
-
}
|
|
172
|
-
return references;
|
|
173
|
-
}
|
|
174
|
-
function collect_line_references(line, found) {
|
|
175
|
-
for (const reference of line_references(line)) found.push(`${reference.prefix}${reference.text}`);
|
|
176
|
-
}
|
|
177
|
-
function lines_outside_fences(message2) {
|
|
178
|
-
const lines = [];
|
|
179
|
-
let is_in_fence = false;
|
|
180
|
-
for (const line of message2.split("\n")) {
|
|
181
|
-
if (FENCE_MARKER.test(line)) is_in_fence = !is_in_fence;
|
|
182
|
-
else if (!is_in_fence) lines.push(line);
|
|
183
|
-
}
|
|
184
|
-
return lines;
|
|
185
|
-
}
|
|
186
|
-
function prose_lines(message2) {
|
|
187
|
-
return lines_outside_fences(message2).filter((line) => !QUOTE_LINE.test(line));
|
|
188
|
-
}
|
|
189
|
-
function bare_references(message2) {
|
|
190
|
-
const found = [];
|
|
191
|
-
for (const line of prose_lines(message2)) collect_line_references(line, found);
|
|
192
|
-
return [...new Set(found)];
|
|
193
|
-
}
|
|
194
|
-
function prompt_references(prompt) {
|
|
195
|
-
const found = /* @__PURE__ */ new Set();
|
|
196
|
-
for (const match of prompt.matchAll(ISSUE_NUMBER)) {
|
|
197
|
-
found.add(repo_prefix(prompt, match.index) + match[0]);
|
|
198
|
-
}
|
|
199
|
-
return found;
|
|
200
|
-
}
|
|
201
|
-
function unquoted_references(message2, prompt) {
|
|
202
|
-
const quoted = prompt_references(prompt);
|
|
203
|
-
return bare_references(message2).filter((reference) => !quoted.has(reference));
|
|
204
|
-
}
|
|
205
|
-
function has_bare_reference(message2) {
|
|
206
|
-
return bare_references(message2).length > 0;
|
|
207
|
-
}
|
|
208
|
-
function cite_argument(reference) {
|
|
209
|
-
return reference.startsWith("#") ? reference.slice(1) : reference;
|
|
210
|
-
}
|
|
211
|
-
function cite_arguments(references) {
|
|
212
|
-
return references.map((reference) => cite_argument(reference));
|
|
213
|
-
}
|
|
214
|
-
function reference_link(reference, default_slug) {
|
|
215
|
-
const slug = reference.prefix === "" ? default_slug : reference.prefix;
|
|
216
|
-
const number = reference.text.slice(1);
|
|
217
|
-
return `[${reference.prefix}${reference.text}](${issue_cite.issue_url(slug, number)})`;
|
|
218
|
-
}
|
|
219
|
-
function linkify_line(line, slug) {
|
|
220
|
-
let result = "";
|
|
221
|
-
let cursor = 0;
|
|
222
|
-
for (const reference of line_references(line)) {
|
|
223
|
-
const start = reference.index - reference.prefix.length;
|
|
224
|
-
result += line.slice(cursor, start) + reference_link(reference, slug);
|
|
225
|
-
cursor = reference.index + reference.text.length;
|
|
226
|
-
}
|
|
227
|
-
return result + line.slice(cursor);
|
|
228
|
-
}
|
|
229
|
-
function rewrite_line(line, slug, is_in_fence) {
|
|
230
|
-
if (is_in_fence || FENCE_MARKER.test(line) || QUOTE_LINE.test(line)) return line;
|
|
231
|
-
return linkify_line(line, slug);
|
|
232
|
-
}
|
|
233
|
-
function linkify(message2, slug) {
|
|
234
|
-
const out = [];
|
|
235
|
-
let is_in_fence = false;
|
|
236
|
-
for (const line of message2.split("\n")) {
|
|
237
|
-
if (FENCE_MARKER.test(line)) is_in_fence = !is_in_fence;
|
|
238
|
-
out.push(rewrite_line(line, slug, is_in_fence));
|
|
239
|
-
}
|
|
240
|
-
return out.join("\n");
|
|
241
|
-
}
|
|
242
|
-
var issue_citation = {
|
|
243
|
-
bare_references,
|
|
244
|
-
cite_arguments,
|
|
245
|
-
has_bare_reference,
|
|
246
|
-
linkify,
|
|
247
|
-
prose_lines,
|
|
248
|
-
unquoted_references
|
|
166
|
+
read_limit,
|
|
167
|
+
seated_limit
|
|
249
168
|
};
|
|
250
169
|
|
|
251
170
|
// scripts/epic/epic-triage.ts
|
|
@@ -260,7 +179,7 @@ function untriaged(children) {
|
|
|
260
179
|
return children.filter((child) => !is_triaged(child));
|
|
261
180
|
}
|
|
262
181
|
function message(children, repo) {
|
|
263
|
-
const numbers = children.map((child) =>
|
|
182
|
+
const numbers = children.map((child) => issue_cite.plain(child.number)).join(", ");
|
|
264
183
|
return issue_citation.linkify(
|
|
265
184
|
`Untriaged: ${numbers} carry neither \`${RUN_SOLO_LABEL}\` nor \`${RUN_LANE_LABEL}\` in ${repo}, so nothing is offered until each is judged. Read each one, record its blocked-by order and one of the two labels with a comment saying why, then ask again.`,
|
|
266
185
|
repo
|
|
@@ -300,9 +219,8 @@ function describe(reading) {
|
|
|
300
219
|
const minutes = Math.floor(reading.dispatch_age_ms / MS_PER_MINUTE);
|
|
301
220
|
return `${String(reading.ready_count)} ready, ${String(reading.free_lanes)} free lane(s), ${String(minutes)}m since the last dispatch`;
|
|
302
221
|
}
|
|
303
|
-
var NUMERIC_TOKEN = /^\d+$/u;
|
|
304
222
|
function ready_tokens(out) {
|
|
305
|
-
return out.split("\n").map((token) => token.trim()).filter((token) =>
|
|
223
|
+
return out.split("\n").map((token) => token.trim()).filter((token) => issue_number_shape.is_issue_number(token));
|
|
306
224
|
}
|
|
307
225
|
function count_ready_tokens(out) {
|
|
308
226
|
return ready_tokens(out).length;
|
|
@@ -326,18 +244,20 @@ var backlog_stalled = {
|
|
|
326
244
|
// scripts/backlog/backlog-ready.ts
|
|
327
245
|
var NO_FREE = 0;
|
|
328
246
|
var NONE2 = 0;
|
|
329
|
-
async function
|
|
247
|
+
async function live_lane_count() {
|
|
330
248
|
const lanes = await lane_registry.list_lanes();
|
|
331
|
-
|
|
332
|
-
|
|
249
|
+
return lanes.filter((lane) => !lane.is_stranded).length;
|
|
250
|
+
}
|
|
251
|
+
async function free_under(limit) {
|
|
252
|
+
return lane_capacity.free_lanes(limit, await live_lane_count());
|
|
333
253
|
}
|
|
334
254
|
async function free_lane_count() {
|
|
335
|
-
const limit = lane_capacity.lane_limit();
|
|
255
|
+
const limit = await lane_capacity.lane_limit();
|
|
336
256
|
if (limit.kind !== "limit") return NO_FREE;
|
|
337
257
|
return await free_under(limit.limit);
|
|
338
258
|
}
|
|
339
259
|
async function drive_free_lane_count() {
|
|
340
|
-
const limit = lane_capacity.lane_limit();
|
|
260
|
+
const limit = await lane_capacity.lane_limit();
|
|
341
261
|
if (limit.kind !== "limit") throw new Error(limit.problem);
|
|
342
262
|
return await free_under(limit.limit);
|
|
343
263
|
}
|
|
@@ -391,6 +311,7 @@ var backlog_ready = {
|
|
|
391
311
|
read_backlog_next,
|
|
392
312
|
print_offer_hint,
|
|
393
313
|
free_lane_count,
|
|
314
|
+
live_lane_count,
|
|
394
315
|
drive_free_lane_count,
|
|
395
316
|
drains_pool,
|
|
396
317
|
print_ready_line,
|
|
@@ -437,7 +358,8 @@ var TASK_DEFINITIONS = {
|
|
|
437
358
|
kickoff_retry: { icon: "\u{1F504}", label: "Kickoff retry" },
|
|
438
359
|
confirmation: { icon: "\u23F8\uFE0F", label: "Confirmation required" },
|
|
439
360
|
stalled: { icon: "\u23F3", label: "Ready work is sitting undispatched" },
|
|
440
|
-
stranded: { icon: "\u{1F6A8}", label: "Run stranded \u2014 nobody is driving it" }
|
|
361
|
+
stranded: { icon: "\u{1F6A8}", label: "Run stranded \u2014 nobody is driving it" },
|
|
362
|
+
progress: { icon: "\u{1F4CA}", label: "Progress" }
|
|
441
363
|
};
|
|
442
364
|
var NOTIFY_SWITCH_KEY = "JOSH_NOTIFY";
|
|
443
365
|
var NOTIFY_OFF_VALUE = "off";
|
|
@@ -622,8 +544,22 @@ async function stranded(input) {
|
|
|
622
544
|
input.recovery
|
|
623
545
|
);
|
|
624
546
|
}
|
|
547
|
+
async function progress(body) {
|
|
548
|
+
return await send_or_report(
|
|
549
|
+
{
|
|
550
|
+
task_type: "progress",
|
|
551
|
+
repo_name: gh_spawn.get_repo_name_with_owner_within(REPO_LOOKUP_TIMEOUT_MS),
|
|
552
|
+
issue_title: void 0,
|
|
553
|
+
body,
|
|
554
|
+
issue_url: void 0,
|
|
555
|
+
pr_url: void 0
|
|
556
|
+
},
|
|
557
|
+
"pnpm josh run:board --chat"
|
|
558
|
+
);
|
|
559
|
+
}
|
|
625
560
|
var telegram_notify = {
|
|
626
561
|
confirm,
|
|
562
|
+
progress,
|
|
627
563
|
send,
|
|
628
564
|
send_or_report,
|
|
629
565
|
stalled,
|
|
@@ -852,14 +788,14 @@ var stop_payload_schema = z3.object({
|
|
|
852
788
|
});
|
|
853
789
|
var NO_OUTCOME = { reason: void 0 };
|
|
854
790
|
var STOP_NOTIFY_REASON = '\u26D4 mid-workflow stop notification: this working tree is still held by a run and no `confirmation` Telegram was sent this turn, so a person is being left to wait off-screen without knowing the run paused. `CLAUDE.md` \u2192 "Mid-workflow stop notification" requires `pnpm josh notify --task-type confirmation --issue-url "<url>" --body=$\'<reason>\'` before any mid-workflow pause. Send it, then end with a one-line confirmation that it was sent \u2014 do not repeat your previous reply. This fires only while the hold is held and no notify is on the transcript, and `stop_hook_active` lets a second stop through so a run is never wedged.';
|
|
855
|
-
var HOLD_RELEASE_REASON = "\u26D4 working-tree hold not released: this working tree is clean but its `run:hold` record is still in place, so the next run here runs `
|
|
791
|
+
var HOLD_RELEASE_REASON = "\u26D4 working-tree hold not released: this working tree is clean but its `run:hold` record is still in place, so the next run here runs `pnpm josh ms` believing the tree is free while you hold it. The workflow-commands skill \u2192 `working-tree-hold.md`: a stop that leaves the tree clean releases the hold with `pnpm josh run:release <N>` (bare for a `new` entry). A `halfrun` pre-commit stop and a `needs-human-review` stop keep the hold because their tree is dirty, and a `prrun` stop keeps it by its stop mark \u2014 this row is silent there. Release it, then end with a one-line confirmation that it was released \u2014 do not repeat your previous reply.";
|
|
856
792
|
var ISSUE_CITATION_REASON = "Session-facing output cites an Issue as a number-link so the reader can click through and see which repository it is (`CLAUDE.md`, `prompts/collaboration-workflow/issue-citation.md`).";
|
|
857
793
|
function build_citation_reason(references) {
|
|
858
794
|
const numbers = references.join(", ");
|
|
859
795
|
const command = `pnpm josh issue:cite ${issue_citation.cite_arguments(references).join(" ")}`;
|
|
860
796
|
return `\u26D4 issue citation: your reply names an Issue as a bare \`#N\` (${numbers}). Run \`${command}\` to print the paste-ready citation lines, then print the corrected citation lines alone \u2014 do not repeat your previous reply. ${ISSUE_CITATION_REASON}`;
|
|
861
797
|
}
|
|
862
|
-
var FILING_OFFER_REASON = '\u26D4 filing offer: your reply offers to file an Issue instead of filing it. Filing into a first-party repository is Tier A \u2014 the trigger is the judgement that it is worth filing, not the run\'s progress (the workflow-commands skill \u2192 `observation-filing.md`). Run `pnpm josh issue:file "<title>" --body-file <path> --depth <0|1|2>` \u2014 it scouts, lints, labels and runs `epic:bundle` itself \u2014 then end with the one-line citation of what was filed; do not repeat your previous reply. If it is not worth filing after all, say so in one line instead.';
|
|
798
|
+
var FILING_OFFER_REASON = '\u26D4 filing offer: your reply offers to file an Issue instead of filing it, and this run is unattended \u2014 nobody is there to answer. Filing into a first-party repository there is Tier A \u2014 the trigger is the judgement that it is worth filing, not the run\'s progress (the workflow-commands skill \u2192 `observation-filing.md`). Run `pnpm josh issue:file "<title>" --body-file <path> --depth <0|1|2>` \u2014 it scouts, lints, labels and runs `epic:bundle` itself \u2014 then end with the one-line citation of what was filed; do not repeat your previous reply. If it is not worth filing after all, say so in one line instead.';
|
|
863
799
|
var HEADLESS_WAIT_MARKER = "\u26D4 headless parent:";
|
|
864
800
|
var HEADLESS_REFUSAL_CAP = 3;
|
|
865
801
|
var HEADLESS_WAIT_CALLS = ['"command":"pnpm josh lane:await'];
|
|
@@ -884,9 +820,12 @@ function language_reason(context) {
|
|
|
884
820
|
if (!reply_language.is_mismatch(context.message, context.session_lang)) return void 0;
|
|
885
821
|
return build_language_reason(context.session_lang);
|
|
886
822
|
}
|
|
823
|
+
function is_unattended(context) {
|
|
824
|
+
return context.headless_agent || context.lane_child || context.backlog_parent;
|
|
825
|
+
}
|
|
887
826
|
function needs_filing(context) {
|
|
888
|
-
if (context
|
|
889
|
-
return filing_offer.is_first_party_target(context.message, context.session_owner);
|
|
827
|
+
if (!is_unattended(context) || context.filed) return false;
|
|
828
|
+
return filing_offer.offers_filing(context.message) && filing_offer.is_first_party_target(context.message, context.session_owner);
|
|
890
829
|
}
|
|
891
830
|
function is_held_idle(context) {
|
|
892
831
|
return context.hold_present && !context.agent_pending && !context.handed_off;
|
|
@@ -1050,9 +989,7 @@ var run_wake_schema = process_owner_schema.extend({
|
|
|
1050
989
|
started_at: z4.string(),
|
|
1051
990
|
woke: z4.number(),
|
|
1052
991
|
woke_at: z4.string().optional(),
|
|
1053
|
-
//
|
|
1054
|
-
// declare, so a field added to the interface alone round-trips through disk as `undefined` — which
|
|
1055
|
-
// reads as "no attempt has been made yet" and would restart the retry count on every pass.
|
|
992
|
+
// Every optional `RunWake` field must be listed: `z.object` strips undeclared ones on the round trip.
|
|
1056
993
|
attempts: z4.number().optional(),
|
|
1057
994
|
woke_pid: z4.number().optional(),
|
|
1058
995
|
spawned: z4.array(z4.string()).optional(),
|
|
@@ -1090,11 +1027,7 @@ function wake_log_path(git_directory) {
|
|
|
1090
1027
|
return stamp_file.stamp_path(WAKE_LOG_PREFIX, git_directory, WAKE_LOG_SUFFIX);
|
|
1091
1028
|
}
|
|
1092
1029
|
function parse_wake(raw) {
|
|
1093
|
-
|
|
1094
|
-
return run_wake_schema.parse(JSON.parse(raw));
|
|
1095
|
-
} catch {
|
|
1096
|
-
return void 0;
|
|
1097
|
-
}
|
|
1030
|
+
return json_value.parse_with(raw, run_wake_schema);
|
|
1098
1031
|
}
|
|
1099
1032
|
function read_wake(target) {
|
|
1100
1033
|
const raw = stamp_file.read_stamp_text(target);
|
|
@@ -1125,11 +1058,7 @@ function carried_state(existing, invocation) {
|
|
|
1125
1058
|
woke_at: existing.woke_at,
|
|
1126
1059
|
attempts: existing.attempts,
|
|
1127
1060
|
woke_pid: existing.woke_pid,
|
|
1128
|
-
// **`spawned` carries across too, or a restart mid-run would lose the ids of every session it
|
|
1129
|
-
// already started** (joshuafolkken/kit#2407) — and `josh time --run`, reading the record after
|
|
1130
|
-
// the restart, would under-count the whiffs and read the loss as a saving.
|
|
1131
1061
|
spawned: existing.spawned,
|
|
1132
|
-
// And `idle_since`, or a restart would slide the idle ceiling by the time already spent idle.
|
|
1133
1062
|
idle_since: existing.idle_since,
|
|
1134
1063
|
...existing.profile && { profile: existing.profile }
|
|
1135
1064
|
};
|
|
@@ -1322,6 +1251,14 @@ function was_filed(tail) {
|
|
|
1322
1251
|
function session_lang() {
|
|
1323
1252
|
return session_language.resolve_session_lang().lang;
|
|
1324
1253
|
}
|
|
1254
|
+
async function session_role_facts() {
|
|
1255
|
+
return {
|
|
1256
|
+
headless_waiting: await run_headless.must_keep_waiting(),
|
|
1257
|
+
lane_child: lane_child_marker.is_child_of(process.cwd()),
|
|
1258
|
+
headless_agent: agent_headless.is_headless(),
|
|
1259
|
+
backlog_parent: await run_headless.is_backlog_parent()
|
|
1260
|
+
};
|
|
1261
|
+
}
|
|
1325
1262
|
async function build_context(transcript_path, payload_tail) {
|
|
1326
1263
|
const tail = transcript_tail(transcript_path);
|
|
1327
1264
|
return {
|
|
@@ -1334,14 +1271,12 @@ async function build_context(transcript_path, payload_tail) {
|
|
|
1334
1271
|
cut_pending: run_cut.carried_cut_sync() !== void 0,
|
|
1335
1272
|
filed: was_filed(tail),
|
|
1336
1273
|
session_owner: repo_party.current_owner(),
|
|
1337
|
-
|
|
1274
|
+
...await session_role_facts(),
|
|
1338
1275
|
headless_refusals: stop_rules.count_headless_refusals(tail),
|
|
1339
|
-
lane_child: lane_child_marker.is_child_of(process.cwd()),
|
|
1340
1276
|
background_pending: lane_background.pending_background_ids(tail).length > 0,
|
|
1341
1277
|
agent_pending: lane_background.pending_agent_ids(tail).length > 0,
|
|
1342
1278
|
handed_off: lane_handoff.is_handed_off(process.cwd()),
|
|
1343
|
-
session_lang: session_lang()
|
|
1344
|
-
headless_agent: agent_headless.is_headless()
|
|
1279
|
+
session_lang: session_lang()
|
|
1345
1280
|
};
|
|
1346
1281
|
}
|
|
1347
1282
|
async function stop_outcome_for_payload(raw_payload) {
|