@joshuafolkken/kit 1.1178.0 → 1.1240.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/.claude-plugin/plugin.json +1 -1
- package/.claude/settings.json +2 -2
- package/.claude/skills/dependency-update/SKILL.md +4 -8
- package/.claude/skills/epic-commands/SKILL.md +2 -2
- package/.claude/skills/epic-commands/epic-bundle.md +1 -1
- package/.claude/skills/workflow-commands/SKILL.md +2 -4
- package/.claude/skills/workflow-commands/backlogrun-child.md +6 -4
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +7 -3
- package/.claude/skills/workflow-commands/backlogrun-park.md +23 -2
- package/.claude/skills/workflow-commands/backlogrun-progress.md +9 -4
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +4 -3
- package/.claude/skills/workflow-commands/backlogrun-steps.md +21 -13
- package/.claude/skills/workflow-commands/chain-rule.md +1 -1
- package/.claude/skills/workflow-commands/delegation.md +2 -2
- package/.claude/skills/workflow-commands/followup.md +10 -0
- package/.claude/skills/workflow-commands/fullrun-steps.md +1 -1
- package/.claude/skills/workflow-commands/halfrun.md +1 -1
- package/.claude/skills/workflow-commands/issue-scout.md +1 -1
- package/.claude/skills/workflow-commands/kickoff.md +2 -1
- package/.claude/skills/workflow-commands/latest-gate.md +1 -1
- package/.claude/skills/workflow-commands/observation-ledger.md +3 -3
- package/.claude/skills/workflow-commands/pre-gate-cut.md +6 -1
- package/.claude/skills/workflow-commands/prerequisite.md +2 -2
- package/.claude/skills/workflow-commands/progress-watcher.md +1 -1
- package/.claude/skills/workflow-commands/working-tree-hold.md +1 -1
- package/.codex/hooks.json +2 -2
- package/.cursorrules +6 -41
- package/.github/actions/setup-node/action.yml +1 -1
- package/.github/workflows/auto-tag.yml +3 -4
- package/.github/workflows/ci.yml +32 -31
- package/.github/workflows/dependabot-auto-merge.yml +13 -6
- package/.github/workflows/publish.yml +50 -4
- package/.github/workflows/sonar-qube.yml +3 -0
- package/.pnpmfile.mjs +4 -3
- package/.prettierignore +8 -2
- package/CLAUDE.md +18 -20
- package/README.md +44 -38
- package/SECURITY.md +15 -1
- package/dist/CLAUDE.md +18 -20
- package/dist/commands/document-section-cli.js +734 -0
- package/dist/hooks/audit-provision.js +346 -0
- package/dist/hooks/batch-guard.js +5 -4
- package/dist/hooks/{chunk-G6KRCKEC.js → chunk-4TZVB44A.js} +496 -378
- package/dist/hooks/chunk-5VNDSNG3.js +12 -0
- package/dist/hooks/chunk-CDY4NFQG.js +15 -0
- package/dist/hooks/chunk-ELCN5LCH.js +135 -0
- package/dist/hooks/{chunk-VQLLNFNT.js → chunk-F3ELQ2AF.js} +3 -3
- package/dist/hooks/{chunk-I4XSL4TT.js → chunk-GPTFMK5E.js} +1 -1
- package/dist/hooks/{chunk-3V37IID6.js → chunk-JBBMAPC4.js} +23 -14
- package/dist/hooks/{chunk-UAGLLIGZ.js → chunk-KHGB5S3Y.js} +7 -6
- package/dist/hooks/{chunk-GDS5N2KB.js → chunk-KHX4U3BG.js} +735 -683
- package/dist/hooks/{chunk-VESKRQOF.js → chunk-KRBERBBI.js} +3 -3
- package/dist/hooks/{chunk-DO6NWWHU.js → chunk-QVSWU24O.js} +4 -4
- package/dist/hooks/{chunk-S6X6WYKR.js → chunk-WK2XSHSI.js} +1643 -923
- package/dist/hooks/{chunk-ZAL3NRGL.js → chunk-XZYKEM6J.js} +25 -10
- package/dist/hooks/{chunk-32GQTL4F.js → chunk-ZQGD4GBY.js} +4 -2
- package/dist/hooks/codex-hook-adapter.js +14 -12
- package/dist/hooks/duplicate-read-guard.js +6 -5
- package/dist/hooks/format-edited.js +4 -3
- package/dist/hooks/inputs.json +203 -179
- package/dist/hooks/investigation-guard.js +6 -5
- package/dist/hooks/pretool-guard.js +12 -10
- package/dist/hooks/session-lang.js +2 -4
- package/dist/hooks/stop-guard.js +66 -72
- package/dist/josh.js +1088 -78
- package/dist/version/index.d.ts +7 -2
- package/dist/version/index.js +152 -75
- package/eslint/base.js +23 -1
- package/eslint/rules/code-quality.js +3 -0
- package/eslint/rules/early-return-one-liner.js +98 -0
- package/eslint/rules/unicorn.js +16 -1
- package/package.json +7 -6
- package/pnpm-workspace.yaml +9 -4
- package/prettier/basic.d.ts +3 -1
- package/prettier/index.d.ts +3 -1
- package/prettier/static.d.ts +3 -1
- package/prompts/coding-standards.md +1 -1
- package/prompts/collaboration-workflow/file-edits.md +4 -4
- package/prompts/collaboration-workflow/glossary.md +1 -1
- package/prompts/collaboration-workflow/issue-template.md +1 -0
- package/prompts/collaboration-workflow/operating-rules.md +17 -9
- package/prompts/collaboration-workflow/overview.md +2 -2
- package/prompts/collaboration-workflow/principles.md +14 -12
- package/prompts/collaboration-workflow/report-format.md +1 -1
- package/prompts/collaboration-workflow/residency.md +1 -1
- package/prompts/collaboration-workflow/rule-delivery.md +6 -6
- package/prompts/collaboration-workflow/shell-body.md +6 -6
- package/prompts/collaboration-workflow/turn-batching.md +1 -1
- package/prompts/collaboration-workflow/upstream-interrupt.md +12 -2
- package/prompts/collaboration-workflow/wip-cap.md +10 -10
- package/prompts/review-rubric.md +1 -2
- package/prompts/review.md +1 -1
- package/scripts/agent/agent-headless.ts +29 -0
- package/scripts/agent/agent-launch-environment.ts +6 -2
- package/scripts/agent/codex-agent-argv.ts +2 -1
- package/scripts/auto-ok/auto-ok-cli.ts +1 -1
- package/scripts/backlog/backlog-arrival.ts +3 -3
- package/scripts/backlog/backlog-budget.ts +1 -1
- package/scripts/backlog/backlog-drive-args.ts +135 -0
- package/scripts/backlog/backlog-drive-cli.ts +11 -137
- package/scripts/backlog/backlog-drive-launch.ts +39 -0
- package/scripts/backlog/backlog-drive-named-offer.ts +3 -5
- package/scripts/backlog/backlog-drive-named.ts +3 -3
- package/scripts/backlog/backlog-drive-offer-argv.ts +1 -1
- package/scripts/backlog/backlog-drive-owner.ts +1 -1
- package/scripts/backlog/backlog-drive-restore.ts +1 -1
- package/scripts/backlog/backlog-drive-retrospective.ts +1 -1
- package/scripts/backlog/backlog-drive.ts +1 -1
- package/scripts/backlog/backlog-next.ts +16 -5
- package/scripts/backlog/backlog-offer-cli.ts +6 -6
- package/scripts/backlog/backlog-offer.ts +1 -1
- package/scripts/backlog/backlog-plan-cli.ts +1 -1
- package/scripts/backlog/backlog-pool.ts +57 -11
- package/scripts/backlog/backlog-ready.ts +1 -1
- package/scripts/backlog/backlog-scope.ts +1 -1
- package/scripts/backlog/backlog-stalled-detect.ts +2 -2
- package/scripts/backlog/backlog-stalled.ts +1 -1
- package/scripts/build/build-codex-hooks.ts +3 -1
- package/scripts/build/build-commands.ts +66 -0
- package/scripts/build/build-hooks.ts +2 -1
- package/scripts/build/build-library.ts +12 -3
- package/scripts/build/build.ts +70 -0
- package/scripts/build/local-bin.ts +3 -13
- package/scripts/delegation/investigation-reads.ts +3 -1
- package/scripts/discovery/repo-origin.ts +5 -5
- package/scripts/doctor/doctor-consumer.ts +2 -2
- package/scripts/doctor/doctor-io.ts +2 -3
- package/scripts/document/capped-print-part.ts +30 -0
- package/scripts/document/capped-print.ts +3 -4
- package/scripts/document/document-byte-budget.ts +11 -2
- package/scripts/document/document-scan.ts +117 -0
- package/scripts/document/document-section.ts +143 -16
- package/scripts/document/entry-read-budget.ts +5 -3
- package/scripts/document/entry-read-set.ts +10 -89
- package/scripts/document/read-set-cost.ts +98 -0
- package/scripts/epic/epic-add-body.ts +1 -0
- package/scripts/epic/epic-audit-checks.ts +1 -1
- package/scripts/epic/epic-audit-rationale.ts +4 -3
- package/scripts/epic/epic-bundle-cli.ts +14 -3
- package/scripts/epic/epic-bundle-poll.ts +41 -0
- package/scripts/epic/epic-busy.ts +1 -1
- package/scripts/epic/epic-candidate-confirm.ts +3 -2
- package/scripts/epic/epic-classify.ts +1 -1
- package/scripts/epic/epic-cli-argv.ts +78 -46
- package/scripts/epic/epic-cli-remove.ts +11 -19
- package/scripts/epic/epic-cli.ts +74 -73
- package/scripts/epic/epic-close-comment.ts +1 -1
- package/scripts/epic/epic-close.ts +1 -1
- package/scripts/epic/epic-cross-repo.ts +5 -5
- package/scripts/epic/epic-graph.ts +1 -1
- package/scripts/epic/epic-index.ts +1 -1
- package/scripts/epic/epic-issue.ts +2 -6
- package/scripts/epic/epic-lane-offer.ts +2 -2
- package/scripts/epic/epic-next.ts +29 -42
- package/scripts/epic/epic-solo-stale.ts +1 -1
- package/scripts/epic/epic-triage.ts +8 -4
- package/scripts/epic/epic-validate.ts +1 -1
- package/scripts/followup/git-followup-finish.ts +2 -2
- package/scripts/followup/git-followup-label.ts +2 -2
- package/scripts/followup/git-followup-merged.ts +2 -2
- package/scripts/followup/git-pr-followup-checks.ts +142 -0
- package/scripts/followup/git-pr-followup.ts +4 -129
- package/scripts/gate/core-admission.ts +162 -0
- package/scripts/gate/core-budget.ts +190 -68
- package/scripts/gate/gate-plan.ts +80 -7
- package/scripts/gate/gate-report.ts +28 -9
- package/scripts/gate/gate-skip.ts +38 -7
- package/scripts/gate/hook-gate-reuse.ts +12 -10
- package/scripts/gate/machine-capacity.ts +175 -0
- package/scripts/gate/pre-commit-type-check.ts +4 -1
- package/scripts/gate/project-checks.ts +6 -9
- package/scripts/gate/type-check-step.ts +2 -3
- package/scripts/gate/verification-gate.ts +34 -10
- package/scripts/gh/git-gh-api-path.ts +2 -2
- package/scripts/gh/git-gh-issue-rest.ts +3 -3
- package/scripts/gh/git-gh-issue-write.ts +53 -7
- package/scripts/gh/git-gh-pr-read.ts +64 -19
- package/scripts/gh/git-gh-pr-rest.ts +1 -1
- package/scripts/gh/git-gh-pr.ts +5 -1
- package/scripts/gh/git-pr-ai-review.ts +1 -1
- package/scripts/gh/git-pr-checks-eval.ts +1 -3
- package/scripts/gh/git-pr-checks-parse.ts +1 -1
- package/scripts/gh/git-pr-checks-watch.ts +6 -5
- package/scripts/gh/git-pr-checks.ts +7 -5
- package/scripts/gh/git-pr-coderabbit.ts +1 -1
- package/scripts/gh/git-pr-error.ts +1 -3
- package/scripts/gh/git-pr.ts +9 -13
- package/scripts/gh/github-issue-url.ts +2 -2
- package/scripts/git/constants.ts +2 -6
- package/scripts/git/git-command.ts +20 -218
- package/scripts/git/git-diff-reads.ts +225 -0
- package/scripts/git/git-error.ts +4 -12
- package/scripts/git/git-pre-push-hook.ts +139 -0
- package/scripts/git/git-prompt.ts +2 -6
- package/scripts/git/git-spawn-sync.ts +3 -1
- package/scripts/git/git-spawn.ts +1 -1
- package/scripts/git/git-staging.ts +4 -6
- package/scripts/git/git-status.ts +3 -9
- package/scripts/hooks/codex-hook-adapter.ts +1 -1
- package/scripts/hooks/edited-cspell.ts +2 -4
- package/scripts/hooks/format-edited-file.ts +3 -12
- package/scripts/hooks/pre-push-unit.ts +31 -9
- package/scripts/hooks/reserved-run.ts +2 -2
- package/scripts/hooks/run-hook.sh +5 -4
- package/scripts/hooks/stop-guard.ts +5 -3
- package/scripts/init/init-actions.ts +0 -5
- package/scripts/init/init-ai-copy.ts +13 -2
- package/scripts/init/init-logic-json-merge.ts +19 -0
- package/scripts/init/init-logic-secretlint.ts +7 -7
- package/scripts/init/init-logic-workspace.ts +41 -2
- package/scripts/init/init-logic.ts +16 -26
- package/scripts/init/init.ts +10 -16
- package/scripts/init/initial-commit.ts +4 -4
- package/scripts/init/kit-development-versions.ts +40 -0
- package/scripts/init/kit-setup-state.ts +2 -2
- package/scripts/init/package-manager-pin.ts +35 -0
- package/scripts/init/start-exec.ts +68 -19
- package/scripts/init/start-setup-pr.ts +9 -9
- package/scripts/init/start-steps.ts +6 -10
- package/scripts/issue/defect-rate-cli.ts +1 -1
- package/scripts/issue/git-next-issues.ts +1 -1
- package/scripts/issue/issue-auto-ok.ts +32 -7
- package/scripts/issue/issue-backlinks-cli.ts +2 -2
- package/scripts/issue/issue-backlinks.ts +9 -9
- package/scripts/issue/issue-comment-cli.ts +19 -13
- package/scripts/issue/issue-file-cli.ts +72 -22
- package/scripts/issue/issue-file.ts +29 -1
- package/scripts/issue/issue-labels.ts +13 -0
- package/scripts/issue/issue-release-cli.ts +155 -0
- package/scripts/issue/issue-release.ts +58 -0
- package/scripts/issue/issue-scout-closed.ts +1 -1
- package/scripts/issue/issue-state-cli.ts +30 -74
- package/scripts/josh/josh-command-map.ts +2 -0
- package/scripts/josh/josh-command-types.ts +14 -0
- package/scripts/josh/josh-commands-ai.ts +4 -4
- package/scripts/josh/josh-commands-backlog.ts +4 -1
- package/scripts/josh/josh-commands-development.ts +18 -0
- package/scripts/josh/josh-commands-document.ts +1 -0
- package/scripts/josh/josh-commands-issue.ts +8 -1
- package/scripts/josh/josh-commands-lane.ts +24 -1
- package/scripts/josh/josh-commands-maintenance.ts +6 -6
- package/scripts/josh/josh-commands-run.ts +12 -7
- package/scripts/josh/josh-in-process.ts +28 -9
- package/scripts/josh/josh-logic.ts +34 -15
- package/scripts/josh/process-identity.ts +1 -3
- package/scripts/josh/session-language-cli.ts +3 -4
- package/scripts/lane/lane-await.ts +5 -1
- package/scripts/lane/lane-child-invocation.ts +2 -2
- package/scripts/lane/lane-cli.ts +12 -4
- package/scripts/lane/lane-dispatch.ts +14 -10
- package/scripts/lane/lane-environment.ts +5 -1
- package/scripts/lane/lane-handoff.ts +1 -1
- package/scripts/lane/lane-install.ts +2 -13
- package/scripts/lane/lane-launch-cli.ts +15 -1
- package/scripts/lane/lane-ledger.ts +145 -0
- package/scripts/lane/lane-leftover.ts +44 -30
- package/scripts/lane/lane-load.ts +108 -0
- package/scripts/lane/lane-measure-cli.ts +149 -0
- package/scripts/lane/lane-occupancy.ts +3 -0
- package/scripts/lane/lane-open.ts +5 -5
- package/scripts/lane/lane-paths.ts +13 -0
- package/scripts/lane/lane-reap.ts +1 -3
- package/scripts/lane/lane-registry.ts +11 -0
- package/scripts/lane/lane-relaunch.ts +1 -1
- package/scripts/lane/lane-stats.ts +224 -0
- package/scripts/lane/lane-stray.ts +140 -0
- package/scripts/lane/lane-vacant.ts +36 -0
- package/scripts/lane/openai-lane-ship.ts +2 -2
- package/scripts/lane/openai-lane-supervisor-owner.ts +180 -0
- package/scripts/lane/openai-lane-supervisor.ts +7 -165
- package/scripts/lane/openai-review-broker.ts +2 -4
- package/scripts/lib/ancestor-directories.ts +35 -0
- package/scripts/lib/animation-helpers.ts +2 -2
- package/scripts/lib/buffered-process.ts +3 -7
- package/scripts/lib/cli-flags.ts +71 -1
- package/scripts/lib/spawn-exit.ts +2 -2
- package/scripts/lib/timeouts.ts +35 -2
- package/scripts/lines/line-budget.ts +4 -6
- package/scripts/notify/telegram-test.ts +6 -0
- package/scripts/observations/observation-ledger-line.ts +6 -6
- package/scripts/observations/observation-ledger-migrate.ts +55 -4
- package/scripts/observations/observation-ledger.ts +26 -7
- package/scripts/overrides/lockfile-overrides.ts +1 -1
- package/scripts/overrides/overrides-logic.ts +1 -1
- package/scripts/propagate/propagate-git.ts +1 -1
- package/scripts/propagate/propagate-publish.ts +2 -2
- package/scripts/propagate/propagate-steps.ts +20 -15
- package/scripts/propagate/propagate.ts +36 -27
- package/scripts/refactor/import-graph.ts +18 -1
- package/scripts/refactor/refactor-lint.ts +4 -4
- package/scripts/release/github-release-environment.ts +1 -0
- package/scripts/release/github-release-runs.ts +115 -0
- package/scripts/release/github-release.ts +13 -67
- package/scripts/repo/repository-labels.ts +2 -2
- package/scripts/repo/required-checks-logic.ts +1 -3
- package/scripts/review/live-evidence.ts +2 -4
- package/scripts/review/review-brief-cli.ts +1 -1
- package/scripts/review/review-finding-ledger.ts +1 -1
- package/scripts/review/review-findings-cli.ts +1 -3
- package/scripts/rules/decision-oracle-batch.ts +128 -0
- package/scripts/rules/decision-oracle-tokens.ts +21 -0
- package/scripts/rules/decision-oracle.ts +8 -120
- package/scripts/rules/delivered-rules.ts +26 -182
- package/scripts/rules/direct-filing.ts +1 -1
- package/scripts/rules/early-heartbeat.ts +3 -3
- package/scripts/rules/git-argv.ts +1 -1
- package/scripts/rules/git-force.ts +1 -1
- package/scripts/rules/implementation-cut.ts +2 -2
- package/scripts/rules/index-guard.ts +1 -1
- package/scripts/rules/issue-comments.ts +118 -0
- package/scripts/rules/{issue-fold.ts → issue-fold-rule.ts} +2 -2
- package/scripts/rules/lane-background.ts +2 -2
- package/scripts/rules/lane-park.ts +18 -0
- package/scripts/rules/lane-split-park.ts +128 -0
- package/scripts/rules/oracle-firing.ts +1 -1
- package/scripts/rules/poll-loop.ts +1 -1
- package/scripts/rules/pre-gate-cut.ts +1 -1
- package/scripts/rules/protected-files.ts +59 -4
- package/scripts/rules/{run-tail.ts → run-tail-rule.ts} +2 -2
- package/scripts/rules/shell-body-trigger.ts +1 -1
- package/scripts/rules/stop-rules.ts +18 -7
- package/scripts/rules/test-declared-commit.ts +4 -4
- package/scripts/rules/wip-cap.ts +63 -0
- package/scripts/run/{run-carry-args.ts → carry/run-carry-args.ts} +37 -13
- package/scripts/run/{run-carry-change.ts → carry/run-carry-change.ts} +29 -7
- package/scripts/run/{run-carry-cli.ts → carry/run-carry-cli.ts} +4 -6
- package/scripts/run/{run-carry.ts → carry/run-carry.ts} +1 -1
- package/scripts/run/{run-cut-args.ts → cut/run-cut-args.ts} +1 -1
- package/scripts/run/{run-cut-cli.ts → cut/run-cut-cli.ts} +18 -5
- package/scripts/run/{run-cut.ts → cut/run-cut.ts} +1 -1
- package/scripts/run/{run-entry-cli.ts → entry/run-entry-cli.ts} +11 -11
- package/scripts/run/{run-entry.ts → entry/run-entry.ts} +2 -2
- package/scripts/run/{run-event-render.ts → event/run-event-render.ts} +1 -0
- package/scripts/run/{run-event-scope.ts → event/run-event-scope.ts} +1 -1
- package/scripts/run/{run-event-stream-emit.ts → event/run-event-stream-emit.ts} +1 -1
- package/scripts/run/{run-event-stream.ts → event/run-event-stream.ts} +20 -2
- package/scripts/run/{run-hold-cli.ts → hold/run-hold-cli.ts} +5 -5
- package/scripts/run/{run-merge-cli.ts → merge/run-merge-cli.ts} +10 -5
- package/scripts/run/{run-merge-steps.ts → merge/run-merge-steps.ts} +53 -5
- package/scripts/run/{run-merge.ts → merge/run-merge.ts} +1 -1
- package/scripts/run/{run-progress-cli.ts → progress/run-progress-cli.ts} +1 -1
- package/scripts/run/{run-progress-config.ts → progress/run-progress-config.ts} +2 -17
- package/scripts/run/{run-progress-read.ts → progress/run-progress-read.ts} +5 -5
- package/scripts/run/{run-progress.ts → progress/run-progress.ts} +1 -1
- package/scripts/run/{run-review-steps.ts → review/run-review-steps.ts} +2 -3
- package/scripts/run/run-ending.ts +2 -2
- package/scripts/run/run-halfrun-resume.ts +6 -1
- package/scripts/run/run-headless.ts +1 -1
- package/scripts/run/run-invocation.ts +85 -84
- package/scripts/run/run-liveness.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +1 -1
- package/scripts/run/run-preflight.ts +6 -6
- package/scripts/run/run-prep-cli.ts +1 -1
- package/scripts/run/run-prrun-resume.ts +1 -1
- package/scripts/run/run-report-cli.ts +4 -4
- package/scripts/run/run-report.ts +2 -2
- package/scripts/run/run-status-cli.ts +1 -1
- package/scripts/run/run-step-cli.ts +3 -3
- package/scripts/run/run-step.ts +7 -4
- package/scripts/run/run-stop-notify.ts +1 -1
- package/scripts/run/run-stranded-detect.ts +4 -4
- package/scripts/run/run-stranded.ts +2 -2
- package/scripts/run/run-watcher-guard-cli.ts +1 -1
- package/scripts/run/run-watcher-guard.ts +5 -3
- package/scripts/run/run-watcher-hook.ts +1 -1
- package/scripts/run/{run-ship-cli.ts → ship/run-ship-cli.ts} +2 -2
- package/scripts/run/{run-ship-detach.ts → ship/run-ship-detach.ts} +3 -3
- package/scripts/run/ship/run-ship-lock.ts +50 -0
- package/scripts/run/{run-ship-preflight.ts → ship/run-ship-preflight.ts} +6 -2
- package/scripts/run/{run-ship-probe.ts → ship/run-ship-probe.ts} +2 -2
- package/scripts/run/{run-ship-return.ts → ship/run-ship-return.ts} +4 -3
- package/scripts/run/{run-ship-review-steps.ts → ship/run-ship-review-steps.ts} +3 -3
- package/scripts/run/{run-ship-scoped.ts → ship/run-ship-scoped.ts} +10 -1
- package/scripts/run/{run-ship-steps.ts → ship/run-ship-steps.ts} +11 -12
- package/scripts/run/ship/run-ship-stop-text.ts +13 -0
- package/scripts/run/{run-ship-sync.ts → ship/run-ship-sync.ts} +25 -11
- package/scripts/run/{run-tidy-lanes.ts → tidy/run-tidy-lanes.ts} +1 -1
- package/scripts/run/{run-wake-cli.ts → wake/run-wake-cli.ts} +25 -11
- package/scripts/run/{run-wake-describe.ts → wake/run-wake-describe.ts} +58 -7
- package/scripts/run/{run-wake-driver.ts → wake/run-wake-driver.ts} +59 -8
- package/scripts/run/{run-wake-handoff.ts → wake/run-wake-handoff.ts} +1 -1
- package/scripts/run/{run-wake-loop.ts → wake/run-wake-loop.ts} +13 -15
- package/scripts/run/wake/run-wake-restart.ts +58 -0
- package/scripts/run/{run-wake-session.ts → wake/run-wake-session.ts} +3 -3
- package/scripts/run/{run-wake.ts → wake/run-wake.ts} +16 -65
- package/scripts/safe-chain/preinstall-command.ts +20 -21
- package/scripts/safe-chain/project-config.ts +19 -15
- package/scripts/sync/sync-ai-files.ts +1 -1
- package/scripts/sync/sync-configs.ts +2 -1
- package/scripts/sync/sync.ts +15 -2
- package/scripts/test/unit-worker-share.ts +1 -0
- package/scripts/time-runtime/time-background.ts +5 -1
- package/scripts/time-runtime/time-instant.ts +3 -1
- package/scripts/time-runtime/time-spans.ts +6 -139
- package/scripts/time-runtime/time-tool-call.ts +160 -0
- package/scripts/version/effective-upstream.ts +2 -20
- package/scripts/version/latest-corepack.ts +124 -93
- package/scripts/version/latest-regression.ts +1 -1
- package/scripts/version/latest-update.ts +4 -4
- package/scripts/version/npm-registry.ts +20 -5
- package/scripts/version/publishable-range-check.ts +2 -2
- package/scripts/version/publishable-range.ts +1 -1
- package/scripts/version/release-age.ts +48 -38
- package/scripts/version/release-hold.ts +1 -1
- package/scripts/version/safe-chain-version-update.ts +40 -0
- package/scripts/version/upgrade-shell-command.ts +48 -8
- package/scripts/version/version-check-logic.ts +23 -14
- package/scripts/version/version-commands.ts +23 -11
- package/scripts/version/version-remote.ts +28 -13
- package/templates/pnpm-workspace.basic.yaml +4 -0
- package/templates/workflows/dependabot-auto-merge.yml +5 -5
- package/templates/workflows/github-release.yml +6 -0
- package/scripts/build/build-config-merge.ts +0 -27
- package/scripts/build/build-managed-marker.ts +0 -27
- package/scripts/build/build-self-sync-guard.ts +0 -27
- package/scripts/build/build-version.ts +0 -26
- package/scripts/version/preinstall-version-update.ts +0 -86
- /package/scripts/git/{schemas.ts → git-schemas.ts} +0 -0
- /package/scripts/overrides/{schemas.ts → overrides-schemas.ts} +0 -0
- /package/scripts/run/{run-carry-conversation.ts → carry/run-carry-conversation.ts} +0 -0
- /package/scripts/run/{run-carry-reclaim.ts → carry/run-carry-reclaim.ts} +0 -0
- /package/scripts/run/{run-carry-stash.ts → carry/run-carry-stash.ts} +0 -0
- /package/scripts/run/{run-carry-streak.ts → carry/run-carry-streak.ts} +0 -0
- /package/scripts/run/{run-cut-handoff.ts → cut/run-cut-handoff.ts} +0 -0
- /package/scripts/run/{run-cut-report.ts → cut/run-cut-report.ts} +0 -0
- /package/scripts/run/{run-entry-stop.ts → entry/run-entry-stop.ts} +0 -0
- /package/scripts/run/{run-event-cli.ts → event/run-event-cli.ts} +0 -0
- /package/scripts/run/{run-event-follow.ts → event/run-event-follow.ts} +0 -0
- /package/scripts/run/{run-event-watch.ts → event/run-event-watch.ts} +0 -0
- /package/scripts/run/{run-hold.ts → hold/run-hold.ts} +0 -0
- /package/scripts/run/{run-progress-args.ts → progress/run-progress-args.ts} +0 -0
- /package/scripts/run/{run-progress-clock.ts → progress/run-progress-clock.ts} +0 -0
- /package/scripts/run/{run-review-cli.ts → review/run-review-cli.ts} +0 -0
- /package/scripts/run/{run-review.ts → review/run-review.ts} +0 -0
- /package/scripts/run/{run-ship-next.ts → ship/run-ship-next.ts} +0 -0
- /package/scripts/run/{run-ship-pre-detach.ts → ship/run-ship-pre-detach.ts} +0 -0
- /package/scripts/run/{run-ship-review.ts → ship/run-ship-review.ts} +0 -0
- /package/scripts/run/{run-ship-stage.ts → ship/run-ship-stage.ts} +0 -0
- /package/scripts/run/{run-ship.ts → ship/run-ship.ts} +0 -0
- /package/scripts/run/{run-tidy-cli.ts → tidy/run-tidy-cli.ts} +0 -0
- /package/scripts/run/{run-tidy-stashes.ts → tidy/run-tidy-stashes.ts} +0 -0
- /package/scripts/run/{run-tidy.ts → tidy/run-tidy.ts} +0 -0
package/dist/hooks/stop-guard.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
2
|
import {
|
|
3
|
-
FETCH_TIMEOUT_MS,
|
|
4
3
|
RUN_LANE_LABEL,
|
|
5
4
|
RUN_SOLO_LABEL,
|
|
5
|
+
agent_headless,
|
|
6
6
|
agent_role_profile,
|
|
7
7
|
backlog_budget,
|
|
8
8
|
filing_cap,
|
|
@@ -15,8 +15,6 @@ import {
|
|
|
15
15
|
lane_handoff,
|
|
16
16
|
lane_park,
|
|
17
17
|
lane_registry,
|
|
18
|
-
process_identity,
|
|
19
|
-
process_owner_schema,
|
|
20
18
|
repo_party,
|
|
21
19
|
run_carry,
|
|
22
20
|
run_cut,
|
|
@@ -25,24 +23,32 @@ import {
|
|
|
25
23
|
run_headless,
|
|
26
24
|
run_hold,
|
|
27
25
|
run_invocation
|
|
28
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-KHX4U3BG.js";
|
|
29
27
|
import {
|
|
30
28
|
session_language
|
|
31
29
|
} from "./chunk-6V5OPIUU.js";
|
|
30
|
+
import {
|
|
31
|
+
timed_fetch
|
|
32
|
+
} from "./chunk-5VNDSNG3.js";
|
|
33
|
+
import "./chunk-CDY4NFQG.js";
|
|
32
34
|
import {
|
|
33
35
|
hook_decision,
|
|
34
36
|
lane_child_marker
|
|
35
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-ZQGD4GBY.js";
|
|
36
38
|
import {
|
|
37
|
-
PROJECT_ROOT,
|
|
38
39
|
json_value,
|
|
39
|
-
|
|
40
|
+
process_identity,
|
|
41
|
+
process_owner_schema,
|
|
40
42
|
time_density_hook,
|
|
41
43
|
time_hook_transcript,
|
|
42
44
|
time_reported_failure
|
|
43
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-WK2XSHSI.js";
|
|
44
46
|
import "./chunk-WPALEIRX.js";
|
|
45
47
|
import "./chunk-RKUAD3I6.js";
|
|
48
|
+
import {
|
|
49
|
+
PROJECT_ROOT,
|
|
50
|
+
stamp_file
|
|
51
|
+
} from "./chunk-ELCN5LCH.js";
|
|
46
52
|
|
|
47
53
|
// scripts/hooks/stop-guard.ts
|
|
48
54
|
import { text } from "node:stream/consumers";
|
|
@@ -244,10 +250,12 @@ var issue_citation = {
|
|
|
244
250
|
|
|
245
251
|
// scripts/epic/epic-triage.ts
|
|
246
252
|
var TRIAGE_VERDICT = "triage";
|
|
247
|
-
function
|
|
248
|
-
const { labels } = child;
|
|
253
|
+
function has_triage_label(labels) {
|
|
249
254
|
return has_label_name(labels, RUN_SOLO_LABEL) || has_label_name(labels, RUN_LANE_LABEL);
|
|
250
255
|
}
|
|
256
|
+
function is_triaged(child) {
|
|
257
|
+
return has_triage_label(child.labels);
|
|
258
|
+
}
|
|
251
259
|
function untriaged(children) {
|
|
252
260
|
return children.filter((child) => !is_triaged(child));
|
|
253
261
|
}
|
|
@@ -258,7 +266,7 @@ function message(children, repo) {
|
|
|
258
266
|
repo
|
|
259
267
|
);
|
|
260
268
|
}
|
|
261
|
-
var epic_triage = { TRIAGE_VERDICT, is_triaged, message, untriaged };
|
|
269
|
+
var epic_triage = { TRIAGE_VERDICT, has_triage_label, is_triaged, message, untriaged };
|
|
262
270
|
|
|
263
271
|
// scripts/backlog/backlog-stalled.ts
|
|
264
272
|
var STALL_THRESHOLD_MINUTES = 10;
|
|
@@ -411,11 +419,6 @@ function get_repo_name_with_owner_within(timeout_ms) {
|
|
|
411
419
|
}
|
|
412
420
|
var gh_spawn = { get_repo_name_with_owner, get_repo_name_with_owner_within };
|
|
413
421
|
|
|
414
|
-
// scripts/lib/timed-fetch.ts
|
|
415
|
-
async function timed_fetch(url, init = {}, timeout_ms = FETCH_TIMEOUT_MS) {
|
|
416
|
-
return await fetch(url, { ...init, signal: AbortSignal.timeout(timeout_ms) });
|
|
417
|
-
}
|
|
418
|
-
|
|
419
422
|
// scripts/notify/telegram-notify.ts
|
|
420
423
|
import { z } from "zod";
|
|
421
424
|
var TELEGRAM_API_BASE = "https://api.telegram.org";
|
|
@@ -860,7 +863,7 @@ var FILING_OFFER_REASON = '\u26D4 filing offer: your reply offers to file an Iss
|
|
|
860
863
|
var HEADLESS_WAIT_MARKER = "\u26D4 headless parent:";
|
|
861
864
|
var HEADLESS_REFUSAL_CAP = 3;
|
|
862
865
|
var HEADLESS_WAIT_CALLS = ['"command":"pnpm josh lane:await'];
|
|
863
|
-
var HEADLESS_WAIT_BODY = ' this is a `claude -p` `backlogrun` parent (`JOSH_RUN_HEADLESS`) with lanes still in flight, and ending this turn ends the process \u2014 its background waits are killed with it and the lanes are left without a parent.
|
|
866
|
+
var HEADLESS_WAIT_BODY = ' this is a `claude -p` `backlogrun` parent (`JOSH_RUN_HEADLESS`) with lanes still in flight, and ending this turn ends the process \u2014 its background waits are killed with it and the lanes are left without a parent. Do not watch them yourself: the `run:wake` supervisor\'s driver watches the lanes and wakes a session only for a branch that needs judging. Hand the loop back with `pnpm josh run:carry --cut --owner "$PPID"` (or `--end` when the run is over), then end the turn (`backlogrun-progress.md` \u2192 "Picking the lanes up in the fresh session").';
|
|
864
867
|
var HEADLESS_WAIT_REASON = `${HEADLESS_WAIT_MARKER}${HEADLESS_WAIT_BODY}`;
|
|
865
868
|
var INDEX_COMMAND_PATTERN = /git (?:add|stage|rm --cached|restore --staged|restore -S)\b/u;
|
|
866
869
|
var PERMISSION_PATTERN = /許可|承認|permission|approve|approval|authorization/iu;
|
|
@@ -899,9 +902,13 @@ function citation_reason(context) {
|
|
|
899
902
|
if (references.length === 0) return void 0;
|
|
900
903
|
return build_citation_reason(references);
|
|
901
904
|
}
|
|
905
|
+
function wording_reason(context) {
|
|
906
|
+
if (context.headless_agent) return void 0;
|
|
907
|
+
return citation_reason(context) ?? language_reason(context);
|
|
908
|
+
}
|
|
902
909
|
function reply_reason(context) {
|
|
903
910
|
if (needs_filing(context)) return FILING_OFFER_REASON;
|
|
904
|
-
return
|
|
911
|
+
return wording_reason(context);
|
|
905
912
|
}
|
|
906
913
|
function is_headless_held(context) {
|
|
907
914
|
if (!context.headless_waiting) return false;
|
|
@@ -1018,45 +1025,7 @@ var run_halfrun_resume = {
|
|
|
1018
1025
|
take_over
|
|
1019
1026
|
};
|
|
1020
1027
|
|
|
1021
|
-
// scripts/run/run-
|
|
1022
|
-
var RECOVERY_COMMAND = "pnpm josh run:wake --start";
|
|
1023
|
-
var LIVE = "live";
|
|
1024
|
-
var GONE = "gone";
|
|
1025
|
-
var UNKNOWN = "unknown";
|
|
1026
|
-
var STRANDED = "stranded";
|
|
1027
|
-
var OK2 = "ok";
|
|
1028
|
-
function supervisor_liveness(wake, same_process = process_identity.is_same_process) {
|
|
1029
|
-
if (wake === void 0) return GONE;
|
|
1030
|
-
const is_same = same_process(wake.pid, wake.process_start);
|
|
1031
|
-
if (is_same === void 0) return UNKNOWN;
|
|
1032
|
-
return is_same ? LIVE : GONE;
|
|
1033
|
-
}
|
|
1034
|
-
function is_stranded(input) {
|
|
1035
|
-
if (input.read.kind !== "carried" || input.read.carry.is_handed_off !== true || input.is_owner_live) {
|
|
1036
|
-
return false;
|
|
1037
|
-
}
|
|
1038
|
-
return input.supervisor === GONE;
|
|
1039
|
-
}
|
|
1040
|
-
function describe2(carry) {
|
|
1041
|
-
return `Run stranded \u2014 ${run_carry.describe_carry(carry)}. The owner is gone, no cut successor claimed the budget, and no supervisor is watching.`;
|
|
1042
|
-
}
|
|
1043
|
-
function verdict_of(is_run_stranded) {
|
|
1044
|
-
return is_run_stranded ? STRANDED : OK2;
|
|
1045
|
-
}
|
|
1046
|
-
var run_stranded = {
|
|
1047
|
-
GONE,
|
|
1048
|
-
LIVE,
|
|
1049
|
-
OK: OK2,
|
|
1050
|
-
RECOVERY_COMMAND,
|
|
1051
|
-
STRANDED,
|
|
1052
|
-
UNKNOWN,
|
|
1053
|
-
describe: describe2,
|
|
1054
|
-
is_stranded,
|
|
1055
|
-
supervisor_liveness,
|
|
1056
|
-
verdict_of
|
|
1057
|
-
};
|
|
1058
|
-
|
|
1059
|
-
// scripts/run/run-wake.ts
|
|
1028
|
+
// scripts/run/wake/run-wake.ts
|
|
1060
1029
|
import { z as z4 } from "zod";
|
|
1061
1030
|
var WAKE_PREFIX = "josh-run-wake-";
|
|
1062
1031
|
var WAKE_LOG_PREFIX = "josh-run-wake-log-";
|
|
@@ -1070,7 +1039,6 @@ var WAKE_DECISION = { kind: "wake" };
|
|
|
1070
1039
|
var IDLE_DECISION = { kind: "idle" };
|
|
1071
1040
|
var WAIT_DECISION = { kind: "wait" };
|
|
1072
1041
|
var PENDING_DECISION = { kind: "pending" };
|
|
1073
|
-
var HOLD_DECISION = { kind: "hold" };
|
|
1074
1042
|
var FAILED_DECISION = { kind: "failed" };
|
|
1075
1043
|
var STOP_REASONS = {
|
|
1076
1044
|
none: "ended",
|
|
@@ -1087,7 +1055,6 @@ var run_wake_schema = process_owner_schema.extend({
|
|
|
1087
1055
|
// reads as "no attempt has been made yet" and would restart the retry count on every pass.
|
|
1088
1056
|
attempts: z4.number().optional(),
|
|
1089
1057
|
woke_pid: z4.number().optional(),
|
|
1090
|
-
held_at: z4.string().optional(),
|
|
1091
1058
|
spawned: z4.array(z4.string()).optional(),
|
|
1092
1059
|
idle_since: z4.string().optional(),
|
|
1093
1060
|
profile: agent_role_profile.PROFILE_SCHEMA.optional()
|
|
@@ -1111,14 +1078,9 @@ function decide_not_handed_off(input) {
|
|
|
1111
1078
|
if (input.is_owner_live) return WAIT_DECISION;
|
|
1112
1079
|
return decide_launch(input);
|
|
1113
1080
|
}
|
|
1114
|
-
function is_predecessor_exiting(input) {
|
|
1115
|
-
if (input.woke_at !== void 0 || !input.is_owner_live) return false;
|
|
1116
|
-
return input.held_at === void 0 || !is_overdue(input.held_at, input.now);
|
|
1117
|
-
}
|
|
1118
1081
|
function decide(input) {
|
|
1119
1082
|
if (input.read.kind !== "carried") return { kind: "stop", reason: STOP_REASONS[input.read.kind] };
|
|
1120
1083
|
if (input.read.carry.is_handed_off !== true) return decide_not_handed_off(input);
|
|
1121
|
-
if (is_predecessor_exiting(input)) return HOLD_DECISION;
|
|
1122
1084
|
return decide_launch(input);
|
|
1123
1085
|
}
|
|
1124
1086
|
function wake_path(git_directory) {
|
|
@@ -1163,7 +1125,6 @@ function carried_state(existing, invocation) {
|
|
|
1163
1125
|
woke_at: existing.woke_at,
|
|
1164
1126
|
attempts: existing.attempts,
|
|
1165
1127
|
woke_pid: existing.woke_pid,
|
|
1166
|
-
held_at: existing.held_at,
|
|
1167
1128
|
// **`spawned` carries across too, or a restart mid-run would lose the ids of every session it
|
|
1168
1129
|
// already started** (joshuafolkken/kit#2407) — and `josh time --run`, reading the record after
|
|
1169
1130
|
// the restart, would under-count the whiffs and read the loss as a saving.
|
|
@@ -1197,13 +1158,9 @@ function count_wake(wake, now, pid, session_id) {
|
|
|
1197
1158
|
spawned,
|
|
1198
1159
|
woke_at,
|
|
1199
1160
|
woke_pid: pid,
|
|
1200
|
-
held_at: void 0,
|
|
1201
1161
|
idle_since: void 0
|
|
1202
1162
|
};
|
|
1203
1163
|
}
|
|
1204
|
-
function mark_wait(wake, now) {
|
|
1205
|
-
return wake.held_at === void 0 ? { ...wake, held_at: now.toISOString() } : wake;
|
|
1206
|
-
}
|
|
1207
1164
|
function mark_idle(wake, now) {
|
|
1208
1165
|
return wake.idle_since === void 0 ? { ...wake, idle_since: now.toISOString() } : wake;
|
|
1209
1166
|
}
|
|
@@ -1214,7 +1171,6 @@ function count_claim(wake) {
|
|
|
1214
1171
|
woke,
|
|
1215
1172
|
woke_at: void 0,
|
|
1216
1173
|
attempts: void 0,
|
|
1217
|
-
held_at: void 0,
|
|
1218
1174
|
idle_since: void 0
|
|
1219
1175
|
};
|
|
1220
1176
|
}
|
|
@@ -1248,7 +1204,6 @@ var run_wake = {
|
|
|
1248
1204
|
fresh_wake,
|
|
1249
1205
|
is_supervisor_live,
|
|
1250
1206
|
mark_idle,
|
|
1251
|
-
mark_wait,
|
|
1252
1207
|
parse_wake,
|
|
1253
1208
|
read_own_wake,
|
|
1254
1209
|
read_wake,
|
|
@@ -1260,6 +1215,44 @@ var run_wake = {
|
|
|
1260
1215
|
write_wake
|
|
1261
1216
|
};
|
|
1262
1217
|
|
|
1218
|
+
// scripts/run/run-stranded.ts
|
|
1219
|
+
var RECOVERY_COMMAND = "pnpm josh run:wake --start";
|
|
1220
|
+
var LIVE = "live";
|
|
1221
|
+
var GONE = "gone";
|
|
1222
|
+
var UNKNOWN = "unknown";
|
|
1223
|
+
var STRANDED = "stranded";
|
|
1224
|
+
var OK2 = "ok";
|
|
1225
|
+
function supervisor_liveness(wake, same_process = process_identity.is_same_process) {
|
|
1226
|
+
if (wake === void 0) return GONE;
|
|
1227
|
+
const is_same = same_process(wake.pid, wake.process_start);
|
|
1228
|
+
if (is_same === void 0) return UNKNOWN;
|
|
1229
|
+
return is_same ? LIVE : GONE;
|
|
1230
|
+
}
|
|
1231
|
+
function is_stranded(input) {
|
|
1232
|
+
if (input.read.kind !== "carried" || input.read.carry.is_handed_off !== true || input.is_owner_live) {
|
|
1233
|
+
return false;
|
|
1234
|
+
}
|
|
1235
|
+
return input.supervisor === GONE;
|
|
1236
|
+
}
|
|
1237
|
+
function describe2(carry) {
|
|
1238
|
+
return `Run stranded \u2014 ${run_carry.describe_carry(carry)}. The owner is gone, no cut successor claimed the budget, and no supervisor is watching.`;
|
|
1239
|
+
}
|
|
1240
|
+
function verdict_of(is_run_stranded) {
|
|
1241
|
+
return is_run_stranded ? STRANDED : OK2;
|
|
1242
|
+
}
|
|
1243
|
+
var run_stranded = {
|
|
1244
|
+
GONE,
|
|
1245
|
+
LIVE,
|
|
1246
|
+
OK: OK2,
|
|
1247
|
+
RECOVERY_COMMAND,
|
|
1248
|
+
STRANDED,
|
|
1249
|
+
UNKNOWN,
|
|
1250
|
+
describe: describe2,
|
|
1251
|
+
is_stranded,
|
|
1252
|
+
supervisor_liveness,
|
|
1253
|
+
verdict_of
|
|
1254
|
+
};
|
|
1255
|
+
|
|
1263
1256
|
// scripts/run/run-stranded-detect.ts
|
|
1264
1257
|
var STRAND_RECOVERY = `Restart supervision with \`${run_stranded.RECOVERY_COMMAND}\` \u2014 it wakes a fresh successor to claim the budget; the cutting session must not resume it itself.`;
|
|
1265
1258
|
async function real_resolve_targets() {
|
|
@@ -1347,7 +1340,8 @@ async function build_context(transcript_path, payload_tail) {
|
|
|
1347
1340
|
background_pending: lane_background.pending_background_ids(tail).length > 0,
|
|
1348
1341
|
agent_pending: lane_background.pending_agent_ids(tail).length > 0,
|
|
1349
1342
|
handed_off: lane_handoff.is_handed_off(process.cwd()),
|
|
1350
|
-
session_lang: session_lang()
|
|
1343
|
+
session_lang: session_lang(),
|
|
1344
|
+
headless_agent: agent_headless.is_headless()
|
|
1351
1345
|
};
|
|
1352
1346
|
}
|
|
1353
1347
|
async function stop_outcome_for_payload(raw_payload) {
|