@joshuafolkken/kit 1.1471.0 → 1.1514.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +6 -6
- package/.claude/skills/epic-commands/SKILL.md +2 -14
- package/.claude/skills/epic-commands/epic-bundle.md +9 -5
- package/.claude/skills/epic-commands/execution-waves.md +1 -2
- package/.claude/skills/verify-ui/SKILL.md +1 -2
- package/.claude/skills/workflow-commands/SKILL.md +7 -9
- package/.claude/skills/workflow-commands/background-commands.md +3 -7
- package/.claude/skills/workflow-commands/backlogrun-child.md +3 -10
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +6 -15
- package/.claude/skills/workflow-commands/backlogrun-park.md +2 -8
- package/.claude/skills/workflow-commands/backlogrun-progress.md +10 -19
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +8 -8
- package/.claude/skills/workflow-commands/backlogrun-steps.md +2 -10
- package/.claude/skills/workflow-commands/backlogrun.md +31 -50
- package/.claude/skills/workflow-commands/chain-rule.md +7 -6
- package/.claude/skills/workflow-commands/delegation.md +12 -8
- package/.claude/skills/workflow-commands/entry-sequence.md +1 -3
- package/.claude/skills/workflow-commands/followup.md +3 -6
- package/.claude/skills/workflow-commands/fullrun-steps.md +3 -5
- package/.claude/skills/workflow-commands/fullrun.md +4 -6
- package/.claude/skills/workflow-commands/halfrun.md +3 -7
- package/.claude/skills/workflow-commands/into-target.md +1 -2
- package/.claude/skills/workflow-commands/issue-comments.md +3 -3
- package/.claude/skills/workflow-commands/issue-scout.md +3 -2
- package/.claude/skills/workflow-commands/latest-gate.md +2 -6
- package/.claude/skills/workflow-commands/needs-human-review.md +2 -5
- package/.claude/skills/workflow-commands/observation-filing.md +0 -14
- package/.claude/skills/workflow-commands/observation-ledger.md +4 -9
- package/.claude/skills/workflow-commands/pre-gate-cut.md +11 -16
- package/.claude/skills/workflow-commands/prerequisite.md +1 -2
- package/.claude/skills/workflow-commands/progress-watcher.md +2 -7
- package/.claude/skills/workflow-commands/prrun.md +3 -5
- package/.claude/skills/workflow-commands/retrospective.md +4 -4
- package/.claude/skills/workflow-commands/split-assessment.md +1 -3
- package/.claude/skills/workflow-commands/target-repository.md +1 -2
- package/.claude/skills/workflow-commands/working-tree-hold.md +2 -4
- package/.codex/hooks.json +6 -6
- package/.github/actions/setup-node/action.yml +1 -1
- package/.github/workflows/ci.yml +1 -1
- package/.github/workflows/publish.yml +2 -2
- package/CLAUDE.md +1 -1
- package/cspell/index.yaml +7 -0
- package/dist/CLAUDE.md +1 -1
- package/dist/commands/document-section-cli.js +67 -34
- package/dist/hooks/batch-guard.js +6 -6
- package/dist/hooks/chunk-4KKD2UTK.js +66 -0
- package/dist/hooks/{chunk-J47HU5H5.js → chunk-6TS2JD6D.js} +3 -3
- package/dist/hooks/chunk-7DSBJVFH.js +50 -0
- package/dist/hooks/{chunk-YHBZAJSV.js → chunk-A65Y4YOR.js} +3 -3
- package/dist/hooks/{chunk-E7OIKX5Z.js → chunk-APUO6U4J.js} +85 -7
- package/dist/hooks/{chunk-IX6TTTI6.js → chunk-EFXE6C37.js} +8 -22
- package/dist/hooks/chunk-GP4IEC4O.js +20 -0
- package/dist/hooks/{chunk-SHGPANFB.js → chunk-JP45SOCJ.js} +3 -3
- package/dist/hooks/{chunk-K4EOONYM.js → chunk-LAOV7NLM.js} +1 -1
- package/dist/hooks/chunk-M4HGZV7U.js +83 -0
- package/dist/hooks/{chunk-KC5AK2GF.js → chunk-O6GDRNJB.js} +3 -3
- package/dist/hooks/{chunk-YYPI7SJZ.js → chunk-PF2NZL2A.js} +5 -5
- package/dist/hooks/{chunk-H5HVWYXK.js → chunk-PTICX4OL.js} +3 -4
- package/dist/hooks/{chunk-IIGFYXKC.js → chunk-RT27QRJW.js} +581 -1438
- package/dist/hooks/{chunk-43ZHT22P.js → chunk-SYOTDYCI.js} +1127 -1089
- package/dist/hooks/{chunk-AS74OU3D.js → chunk-TNUMY6NL.js} +1507 -1336
- package/dist/hooks/chunk-UPUZF3AN.js +279 -0
- package/dist/hooks/{chunk-EUMACUK2.js → chunk-WK6SMBIC.js} +1948 -806
- package/dist/hooks/codex-hook-adapter.js +17 -14
- package/dist/hooks/duplicate-read-guard.js +7 -7
- package/dist/hooks/format-edited.js +5 -4
- package/dist/hooks/inputs.json +317 -264
- package/dist/hooks/investigation-guard.js +8 -11
- package/dist/hooks/pretool-guard.js +16 -13
- package/dist/hooks/session-lang.js +370 -25
- package/dist/hooks/stop-guard.js +2576 -176
- package/dist/josh.js +2124 -277
- package/lefthook/base.yml +5 -3
- package/package.json +12 -10
- package/prompts/collaboration-workflow/file-edits.md +1 -3
- package/prompts/collaboration-workflow/gh-rest.md +1 -2
- package/prompts/collaboration-workflow/issue-citation.md +2 -4
- package/prompts/collaboration-workflow/issue-template.md +10 -2
- package/prompts/collaboration-workflow/lane-instructions.md +35 -0
- package/prompts/collaboration-workflow/operating-rules.md +2 -6
- package/prompts/collaboration-workflow/output-bounds.md +3 -3
- package/prompts/collaboration-workflow/overview.md +1 -1
- package/prompts/collaboration-workflow/principles.md +14 -8
- package/prompts/collaboration-workflow/report-format.md +9 -0
- package/prompts/collaboration-workflow/residency.md +12 -8
- package/prompts/collaboration-workflow/rule-delivery.md +3 -11
- package/prompts/collaboration-workflow/shell-body.md +6 -6
- package/prompts/collaboration-workflow/turn-batching.md +5 -5
- package/prompts/collaboration-workflow/upstream-interrupt.md +2 -2
- package/prompts/collaboration-workflow/wip-cap.md +6 -6
- package/prompts/collaboration-workflow.md +1 -0
- package/prompts/review.md +4 -5
- package/prompts/testing-guide.md +2 -2
- package/scripts/agent/agent-argv.ts +20 -4
- package/scripts/agent/agent-role-profile.ts +101 -45
- package/scripts/agent/agent-safe-text.ts +60 -0
- package/scripts/agent/claude-agent-argv.ts +14 -0
- package/scripts/agent/codex-agent-argv.ts +2 -0
- package/scripts/agent/lane-instructions.ts +144 -0
- package/scripts/backlog/backlog-budget.ts +4 -4
- package/scripts/backlog/backlog-drive-named.ts +1 -1
- package/scripts/backlog/backlog-drive-restore.ts +9 -1
- package/scripts/backlog/backlog-occupied.ts +56 -0
- package/scripts/backlog/backlog-ready.ts +47 -10
- package/scripts/delegation/duplicate-read-guard.ts +2 -2
- package/scripts/delegation/investigation-guard.ts +15 -65
- package/scripts/delegation/investigation-reads.ts +0 -1
- package/scripts/document/document-byte-budget.ts +6 -5
- package/scripts/document/document-section-cli.ts +17 -5
- package/scripts/document/entry-read-budget.ts +2 -2
- package/scripts/document/read-set-cli.ts +4 -1
- package/scripts/epic/epic-audit-orphans.ts +5 -8
- package/scripts/epic/epic-audit.ts +52 -1
- package/scripts/epic/epic-bundle-evidence.ts +49 -26
- package/scripts/epic/epic-bundle-referenced.ts +14 -3
- package/scripts/epic/epic-bundle.ts +17 -9
- package/scripts/followup/git-followup-workflow.ts +19 -1
- package/scripts/gate/check-inputs.ts +129 -0
- package/scripts/gate/check-reuse.ts +162 -0
- package/scripts/gate/core-budget.ts +93 -44
- package/scripts/gate/core-wait.ts +130 -0
- package/scripts/gate/free-cores.ts +49 -0
- package/scripts/gate/gate-ledger.ts +17 -3
- package/scripts/gate/gate-plan.ts +23 -1
- package/scripts/gate/gate-report.ts +15 -2
- package/scripts/gate/gate-run-steps.ts +150 -0
- package/scripts/gate/held-mark.ts +55 -0
- package/scripts/gate/machine-capacity.ts +70 -11
- package/scripts/gate/pre-commit-type-check.ts +14 -1
- package/scripts/gate/verification-gate.ts +58 -125
- package/scripts/gh/git-gh-issue-rest.ts +1 -0
- package/scripts/gh/git-gh-issue-write.ts +24 -2
- package/scripts/gh/git-pr.ts +13 -1
- package/scripts/git/main-merge-regenerate.ts +78 -0
- package/scripts/git/main-merge.ts +14 -5
- package/scripts/hooks/batch-guard.ts +5 -8
- package/scripts/hooks/pre-commit-lint.ts +91 -0
- package/scripts/hooks/pre-push-unit.ts +1 -1
- package/scripts/hooks/pretool-guard.ts +27 -52
- package/scripts/hooks/reserved-run.ts +1 -0
- package/scripts/hooks/run-hook.sh +10 -12
- package/scripts/hooks/stop-actions.ts +204 -0
- package/scripts/hooks/stop-guard.ts +62 -21
- package/scripts/init/hook-launch.ts +12 -7
- package/scripts/issue/expected-effect-lint.ts +59 -0
- package/scripts/issue/issue-cite-cli.ts +35 -15
- package/scripts/issue/issue-classification.ts +1 -1
- package/scripts/issue/issue-lint-cli.ts +5 -3
- package/scripts/issue/issue-scout-cli.ts +19 -14
- package/scripts/issue/markdown-section.ts +19 -5
- package/scripts/josh/command-usage.ts +110 -0
- package/scripts/josh/josh-command-map.ts +2 -0
- package/scripts/josh/josh-command-types.ts +55 -9
- package/scripts/josh/josh-commands-ai.ts +13 -0
- package/scripts/josh/josh-commands-development.ts +1 -1
- package/scripts/josh/josh-commands-hooks.ts +6 -0
- package/scripts/josh/josh-commands-lane.ts +10 -1
- package/scripts/josh/josh-commands-workflow.ts +5 -0
- package/scripts/josh/josh-logic.ts +6 -15
- package/scripts/josh/josh-usage-automation.ts +121 -0
- package/scripts/josh/josh-usage-backlog.ts +180 -0
- package/scripts/josh/josh-usage-developer.ts +230 -0
- package/scripts/josh/josh-usage-hooks.ts +38 -0
- package/scripts/josh/josh-usage-issue.ts +205 -0
- package/scripts/josh/josh-usage-review.ts +101 -0
- package/scripts/josh/josh-usage-run.ts +252 -0
- package/scripts/josh/josh-usage-session.ts +238 -0
- package/scripts/josh/josh-usage-workflow.ts +212 -0
- package/scripts/josh/josh.ts +14 -5
- package/scripts/josh/package-directory.ts +20 -0
- package/scripts/lane/lane-capacity.ts +8 -2
- package/scripts/lane/lane-check-stats.ts +56 -0
- package/scripts/lane/lane-child-invocation.ts +35 -4
- package/scripts/lane/lane-dispatch.ts +3 -3
- package/scripts/lane/lane-guard-policy.ts +2 -2
- package/scripts/lane/lane-handoff.ts +8 -1
- package/scripts/lane/lane-install.ts +12 -4
- package/scripts/lane/lane-ledger.ts +43 -1
- package/scripts/lane/lane-limit-cli.ts +8 -9
- package/scripts/lane/lane-measure-cli.ts +2 -0
- package/scripts/lane/lane-preserve.ts +29 -1
- package/scripts/lane/lane-registry.ts +9 -7
- package/scripts/lane/lane-restart.ts +5 -26
- package/scripts/lane/lane-session-action.ts +146 -0
- package/scripts/lane/lane-session-broker.ts +57 -138
- package/scripts/lane/lane-withdraw-cli.ts +71 -0
- package/scripts/lane/lane-withdraw.ts +182 -0
- package/scripts/lint/format.ts +4 -4
- package/scripts/lint/lint-parallel.ts +10 -3
- package/scripts/lint/lint-related-scope.ts +4 -1
- package/scripts/notify/telegram-test.ts +10 -5
- package/scripts/report/report-format-reference.ts +2 -0
- package/scripts/review/acceptance-map-check.ts +61 -0
- package/scripts/review/acceptance-map.ts +205 -0
- package/scripts/review/review-brief-cli.ts +1 -1
- package/scripts/rules/agent-model.ts +59 -0
- package/scripts/rules/delivered-rules.ts +11 -2
- package/scripts/rules/filing-cap.ts +1 -0
- package/scripts/rules/firing-point.ts +6 -5
- package/scripts/rules/guard-remedy.ts +117 -0
- package/scripts/rules/issue-comments.ts +67 -6
- package/scripts/rules/last-prompt.ts +50 -5
- package/scripts/rules/oracle-list-cli.ts +7 -0
- package/scripts/rules/piped-verification.ts +3 -1
- package/scripts/rules/rule-list.ts +4 -1
- package/scripts/rules/rule-registry-rows.ts +10 -0
- package/scripts/rules/rule-registry.ts +7 -4
- package/scripts/rules/rule-rewrite.ts +114 -0
- package/scripts/rules/rule-value.ts +7 -1
- package/scripts/rules/shell-segments.ts +15 -0
- package/scripts/rules/stop-decision.ts +77 -0
- package/scripts/rules/stop-rules.ts +147 -47
- package/scripts/rules/tail-commands.ts +15 -1
- package/scripts/run/board/run-board-cli.ts +2 -0
- package/scripts/run/board/run-board-closed.ts +8 -2
- package/scripts/run/board/run-board-github.ts +9 -1
- package/scripts/run/board/run-board-header.ts +4 -1
- package/scripts/run/board/run-board-labels.ts +2 -0
- package/scripts/run/board/run-board-layout.ts +1 -1
- package/scripts/run/board/run-board-read.ts +16 -0
- package/scripts/run/board/run-board-reason.ts +10 -1
- package/scripts/run/board/run-board-render-legend.ts +1 -0
- package/scripts/run/board/run-board-render-slot.ts +1 -1
- package/scripts/run/board/run-board-render-waits.ts +41 -0
- package/scripts/run/board/run-board-render.ts +6 -1
- package/scripts/run/board/run-board-row-yield.ts +1 -0
- package/scripts/run/board/run-board-state.ts +5 -0
- package/scripts/run/board/run-board-status.ts +72 -21
- package/scripts/run/board/run-board-tick.ts +5 -1
- package/scripts/run/cut/run-cut-cli.ts +3 -2
- package/scripts/run/cut/run-cut-report.ts +16 -0
- package/scripts/run/detached-launch.ts +23 -4
- package/scripts/run/entry/run-entry-cli.ts +8 -1
- package/scripts/run/event/run-event-render.ts +1 -0
- package/scripts/run/event/run-event-scope.ts +19 -1
- package/scripts/run/event/run-event-stream-emit.ts +13 -6
- package/scripts/run/event/run-event-stream.ts +4 -0
- package/scripts/run/hold/run-hold-session.ts +46 -0
- package/scripts/run/hold/run-hold.ts +7 -1
- package/scripts/run/launch-priority.ts +32 -0
- package/scripts/run/merge/run-merge-cli.ts +16 -65
- package/scripts/run/merge/run-merge-signals.ts +99 -0
- package/scripts/run/merge/run-merge-steps.ts +11 -1
- package/scripts/run/merge/run-merge.ts +21 -9
- package/scripts/run/run-liveness.ts +1 -1
- package/scripts/run/run-poll-hook.ts +157 -0
- package/scripts/run/run-step-cli.ts +22 -15
- package/scripts/run/run-step-section.ts +85 -0
- package/scripts/run/ship/run-ship-cli.ts +5 -12
- package/scripts/run/ship/run-ship-detach.ts +9 -0
- package/scripts/run/ship/run-ship-next.ts +10 -2
- package/scripts/run/ship/run-ship-overlap.ts +195 -0
- package/scripts/run/ship/run-ship-pre-detach.ts +33 -15
- package/scripts/run/ship/run-ship-preflight.ts +28 -2
- package/scripts/run/ship/run-ship-return.ts +31 -7
- package/scripts/run/ship/run-ship-review-steps.ts +12 -10
- package/scripts/run/ship/run-ship-steps.ts +1 -1
- package/scripts/run/ship/run-ship-stop-context.ts +206 -0
- package/scripts/run/ship/run-ship-sync.ts +14 -6
- package/scripts/test/test-e2e-guard.ts +30 -5
- package/scripts/test/test-unit-guard.ts +16 -1
- package/scripts/test/unit-worker-share.ts +26 -4
- package/scripts/time-runtime/time-shell.ts +29 -4
- package/scripts/time-runtime/time-spans.ts +1 -0
- package/scripts/time-runtime/time-tool-call.ts +7 -0
- package/templates/gitignore +6 -2
- package/dist/hooks/chunk-K4LMBQC2.js +0 -68
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import type { CommandUsage } from './josh-command-types'
|
|
2
|
+
|
|
3
|
+
// The usage of the issue commands `docs/josh-commands-backlog.md` documents under "Issues", keyed by
|
|
4
|
+
// command name. The page's usage blocks are generated from this table and `josh help <command>`
|
|
5
|
+
// prints it, so an example or a flag is written once, here (#3938). The epic and backlog commands are
|
|
6
|
+
// `josh-usage-backlog.ts`, the review and delegation commands `josh-usage-review.ts`.
|
|
7
|
+
const REPO = '--repo <owner/repo>'
|
|
8
|
+
const BODY_FILE = '--body-file <path>'
|
|
9
|
+
const CONCURRENT = 'several numbers, read concurrently'
|
|
10
|
+
const REPO_FLAG = {
|
|
11
|
+
names: [REPO],
|
|
12
|
+
description: 'read a child in another repository; applies to every number.',
|
|
13
|
+
}
|
|
14
|
+
const JSON_FLAG = { names: ['--json'], description: 'print the verdict and reason as JSON.' }
|
|
15
|
+
|
|
16
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
17
|
+
const ISSUE_USAGE: Readonly<Record<string, CommandUsage>> = {
|
|
18
|
+
'issue:read': {
|
|
19
|
+
examples: [{ arguments: '1715' }, { arguments: '1715 1567 1605', note: CONCURRENT }],
|
|
20
|
+
},
|
|
21
|
+
'issue:ack': { examples: [{ arguments: '3773' }] },
|
|
22
|
+
'issue:state': {
|
|
23
|
+
examples: [
|
|
24
|
+
{ arguments: '42', note: 'single-number shape' },
|
|
25
|
+
{ arguments: '42 43 44', note: 'each block headed by `issue:`' },
|
|
26
|
+
{ arguments: '42 43 --repo joshuafolkken/app-kit', note: 'a child in another repo' },
|
|
27
|
+
],
|
|
28
|
+
flags: [REPO_FLAG],
|
|
29
|
+
},
|
|
30
|
+
'issue:release': {
|
|
31
|
+
examples: [
|
|
32
|
+
{ arguments: '3360' },
|
|
33
|
+
{ arguments: '3716 --wait', note: 'blocked by the release issue instead' },
|
|
34
|
+
],
|
|
35
|
+
flags: [
|
|
36
|
+
{
|
|
37
|
+
names: ['--wait'],
|
|
38
|
+
description:
|
|
39
|
+
'the issue is blocked by the release issue instead, so `backlog:next` offers it again once the release ships (`.claude/skills/workflow-commands/prerequisite.md`).',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
'issue:scout': {
|
|
44
|
+
examples: [
|
|
45
|
+
{ arguments: '"Stop the gate re-running after every edit"' },
|
|
46
|
+
{ arguments: '"<title>" --body "parent: #1246"' },
|
|
47
|
+
{ arguments: '"<title>" --body-file draft.md' },
|
|
48
|
+
],
|
|
49
|
+
flags: [
|
|
50
|
+
{
|
|
51
|
+
names: ['--body "<text>"'],
|
|
52
|
+
description:
|
|
53
|
+
'supply references (`#N`) in a `parent: #N` line or an acceptance-criteria section so the epic half has a number to work from; without one there (a background mention does not count) it prints `Epic: not asked`.',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
names: [BODY_FILE],
|
|
57
|
+
description:
|
|
58
|
+
'pass the whole draft, including its purpose, requirements and acceptance criteria. A file that cannot be read ends the command rather than being treated as "no candidates".',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
'issue:file': {
|
|
63
|
+
examples: [
|
|
64
|
+
{ arguments: '"<title>" --body-file body.md --depth 1' },
|
|
65
|
+
{
|
|
66
|
+
arguments:
|
|
67
|
+
'"<title>" --body-file body.md --depth 0 --route tier-a --repo joshuafolkken/kit',
|
|
68
|
+
},
|
|
69
|
+
{ arguments: '"<title>" --body-file body.md --depth 1 --distinct 2801,2795' },
|
|
70
|
+
],
|
|
71
|
+
flags: [
|
|
72
|
+
{ names: [BODY_FILE], description: 'the body. Required.' },
|
|
73
|
+
{
|
|
74
|
+
names: ['--depth <0|1|2>'],
|
|
75
|
+
description:
|
|
76
|
+
'the depth label. Required. The criteria are `.claude/skills/workflow-commands/observation-filing.md` → "The depth test".',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
names: ['--route <tier-a|split|interrupt|review-cap>'],
|
|
80
|
+
description:
|
|
81
|
+
'the `route:` label naming the filing route. Omit it for a filing with no route.',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
names: ['--label <name>'],
|
|
85
|
+
description: 'an extra label (for example `epic`). Repeatable.',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
names: [REPO],
|
|
89
|
+
description: 'the target repository. Defaults to this repository.',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
names: ['--distinct <N,…>'],
|
|
93
|
+
description: 'duplicate candidates you read and judged distinct.',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
names: ['--over-cap'],
|
|
97
|
+
description: 'the run is blocked by this filing; the cap lets it through.',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
names: ['--no-auto-ok'],
|
|
101
|
+
description: "needs a person's judgement (Tier B / C); no `auto-ok`.",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
names: ['--release'],
|
|
105
|
+
description:
|
|
106
|
+
"a consumer can use the change only once it is published. The filed issue becomes a blocker of the target's release issue (step 10).",
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
'issue:fold-existing': { examples: [{ arguments: 'assessment.json --json' }] },
|
|
111
|
+
'issue:fold': {
|
|
112
|
+
examples: [
|
|
113
|
+
{
|
|
114
|
+
arguments: '"First finding" "Second finding"',
|
|
115
|
+
note: 'fold | separate | no-fold-needed | undetermined',
|
|
116
|
+
},
|
|
117
|
+
{ arguments: '"a" "b" --not-separable', note: 'the pair is really one deliverable → fold' },
|
|
118
|
+
{ arguments: '"a" "b" --json', note: 'the verdict and reason, machine-readable' },
|
|
119
|
+
],
|
|
120
|
+
flags: [
|
|
121
|
+
{
|
|
122
|
+
names: ['--not-separable'],
|
|
123
|
+
description:
|
|
124
|
+
'declare the judgement half: the findings are one deliverable, so they fold whatever their size.',
|
|
125
|
+
},
|
|
126
|
+
JSON_FLAG,
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
'issue:cite': {
|
|
130
|
+
examples: [
|
|
131
|
+
{ arguments: '2220' },
|
|
132
|
+
{ arguments: '2220 1758 1252', note: CONCURRENT },
|
|
133
|
+
{ arguments: '45 --repo joshuafolkken/app-kit', note: 'bare numbers in another repository' },
|
|
134
|
+
{ arguments: 'joshuafolkken/app-kit#45 2220', note: 'per-token owner/repo#N notation' },
|
|
135
|
+
],
|
|
136
|
+
flags: [
|
|
137
|
+
{
|
|
138
|
+
names: [REPO],
|
|
139
|
+
description:
|
|
140
|
+
'the repository for every bare number; a token written `owner/repo#N` overrides it for itself.',
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
},
|
|
144
|
+
'issue:comment': {
|
|
145
|
+
examples: [
|
|
146
|
+
{
|
|
147
|
+
arguments: '2304 --body-file .claude/tmp/park.md',
|
|
148
|
+
note: 'the body from a file — no shell evaluates it',
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
arguments: '2304 --body "a short note"',
|
|
152
|
+
note: 'inline, for a body with no backticks or $',
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
flags: [
|
|
156
|
+
{
|
|
157
|
+
names: ['--body <text>'],
|
|
158
|
+
description: 'the comment body, inline. Trimmed, with `\\n` expanded to a newline.',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
names: [BODY_FILE],
|
|
162
|
+
description:
|
|
163
|
+
'read the body from a file, or from stdin with `-`. The safe form the rule steers every caller toward.',
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
'pkg:scout': {
|
|
168
|
+
examples: [{ arguments: '"date formatting" --size 5' }],
|
|
169
|
+
flags: [
|
|
170
|
+
{ names: ['--size <n>'], description: 'how many candidates to fetch and rank (default 10).' },
|
|
171
|
+
],
|
|
172
|
+
},
|
|
173
|
+
'issue:lint': { examples: [{ arguments: '.claude/tmp/issue-body.md' }] },
|
|
174
|
+
'defect:rate': {
|
|
175
|
+
examples: [{ arguments: '', note: 'the last 14 days' }, { arguments: '--days 30' }],
|
|
176
|
+
flags: [
|
|
177
|
+
{
|
|
178
|
+
names: ['--days <n>'],
|
|
179
|
+
description:
|
|
180
|
+
'the window in whole days (default 14, at most 3650). Anything else prints the usage and exits 1.',
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
'issue:backlinks': { examples: [{ arguments: '2123' }] },
|
|
185
|
+
'report:lint': { examples: [{ arguments: '< summary.md' }] },
|
|
186
|
+
'stash:pop': {
|
|
187
|
+
examples: [
|
|
188
|
+
{ arguments: '"backlogrun: parked #2028"' },
|
|
189
|
+
{
|
|
190
|
+
arguments: '"backlogrun: josh latest before lanes" --dir "$dir"',
|
|
191
|
+
note: "into a lane's work tree",
|
|
192
|
+
},
|
|
193
|
+
],
|
|
194
|
+
flags: [
|
|
195
|
+
{
|
|
196
|
+
names: ['--dir <path>'],
|
|
197
|
+
description:
|
|
198
|
+
'applies the pop in that work tree (`git -C <path>`); without it the pop lands in the current checkout. The stack is shared, so it reads the same either way.',
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
},
|
|
202
|
+
}
|
|
203
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
204
|
+
|
|
205
|
+
export { ISSUE_USAGE }
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { CommandUsage } from './josh-command-types'
|
|
2
|
+
|
|
3
|
+
// The usage of the review, delegation and oracle commands `docs/josh-commands-backlog.md` documents
|
|
4
|
+
// under "Review, delegation and oracles", keyed by command name. The page's usage blocks are generated
|
|
5
|
+
// from this table and `josh help <command>` prints it, so an example or a flag is written once, here
|
|
6
|
+
// (#3938).
|
|
7
|
+
const MACHINE_READABLE = 'the verdict and the reason, machine-readable'
|
|
8
|
+
const LEVEL_ONLY = '--level-only'
|
|
9
|
+
const JSON_FLAG = '--json'
|
|
10
|
+
const CHECK = '--check'
|
|
11
|
+
const ROUND_1_CLOSED = '--round-1-closed'
|
|
12
|
+
|
|
13
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
14
|
+
const REVIEW_USAGE: Readonly<Record<string, CommandUsage>> = {
|
|
15
|
+
'review:brief': {
|
|
16
|
+
examples: [
|
|
17
|
+
{ arguments: '', note: 'round 1' },
|
|
18
|
+
{ arguments: '--round 2', note: 'verification pass, scoped to the fix delta' },
|
|
19
|
+
{ arguments: LEVEL_ONLY, note: 'the level alone (pre-commit review)' },
|
|
20
|
+
{ arguments: '--level-only --json', note: 'level and reason, machine-readable' },
|
|
21
|
+
],
|
|
22
|
+
flags: [
|
|
23
|
+
{
|
|
24
|
+
names: ['--round 2'],
|
|
25
|
+
description:
|
|
26
|
+
"target is round 1's fixes and nothing else (widened back to the whole change when the record's change base no longer matches).",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
names: [LEVEL_ONLY],
|
|
30
|
+
description:
|
|
31
|
+
'print the level alone (level to stdout, reason to stderr); bypasses the scoped-green refusal.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
names: ['--staged', '--json'],
|
|
35
|
+
description: 'the staged diff; machine-readable level and reason.',
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
'review:round2': {
|
|
40
|
+
examples: [
|
|
41
|
+
{ arguments: '', note: '→ required' },
|
|
42
|
+
{ arguments: ROUND_1_CLOSED, note: '→ required | skip' },
|
|
43
|
+
{ arguments: JSON_FLAG, note: MACHINE_READABLE },
|
|
44
|
+
],
|
|
45
|
+
flags: [
|
|
46
|
+
{
|
|
47
|
+
names: [ROUND_1_CLOSED],
|
|
48
|
+
description:
|
|
49
|
+
'the caller states every round-1 High/Medium finding closed and none was filed or deferred; its absence answers `required`.',
|
|
50
|
+
},
|
|
51
|
+
{ names: [JSON_FLAG], description: 'machine-readable verdict and reason.' },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
disposition: { examples: [{ arguments: '<path...>', note: '→ runtime | non-runtime' }] },
|
|
55
|
+
'review:attest': {
|
|
56
|
+
examples: [
|
|
57
|
+
{ arguments: '<nonce>', note: 'run by the review, from the checkout it read' },
|
|
58
|
+
{ arguments: CHECK, note: 'run by the run, before it acts on the review' },
|
|
59
|
+
],
|
|
60
|
+
flags: [
|
|
61
|
+
{ names: ['<nonce>'], description: 'attest the checkout the review read.' },
|
|
62
|
+
{
|
|
63
|
+
names: [CHECK],
|
|
64
|
+
description: 'verify before acting; `josh followup` asks again before merging.',
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
delegate: {
|
|
69
|
+
examples: [
|
|
70
|
+
{ arguments: 'gate-fix', note: '→ delegate' },
|
|
71
|
+
{ arguments: 'review', note: '→ keep' },
|
|
72
|
+
{ arguments: '--list', note: 'the enumeration, and what was rejected and why' },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
fanout: {
|
|
76
|
+
examples: [
|
|
77
|
+
{ arguments: 'scripts/a.ts,scripts/a.test.ts scripts/b.ts', note: '→ parallel' },
|
|
78
|
+
{
|
|
79
|
+
arguments: 'scripts/a.ts,shared.ts scripts/b.ts,shared.ts',
|
|
80
|
+
note: '→ serial (units share shared.ts)',
|
|
81
|
+
},
|
|
82
|
+
{ arguments: 'scripts/a.ts', note: '→ serial (fewer than two units)' },
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
'split:assess': {
|
|
86
|
+
examples: [
|
|
87
|
+
{ arguments: '', note: '→ single' },
|
|
88
|
+
{ arguments: JSON_FLAG, note: MACHINE_READABLE },
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
'oracle:list': { examples: [{ arguments: '' }] },
|
|
92
|
+
'clone:scan': { examples: [{ arguments: '' }] },
|
|
93
|
+
cases: {
|
|
94
|
+
examples: [
|
|
95
|
+
{ arguments: 'scripts/a.ts scripts/b.ts', note: 'the boundaries these paths cross' },
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
}
|
|
99
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
100
|
+
|
|
101
|
+
export { REVIEW_USAGE }
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import type { CommandUsage } from './josh-command-types'
|
|
2
|
+
|
|
3
|
+
// The usage of the run-lifecycle commands `docs/josh-commands-run.md` documents, keyed by command
|
|
4
|
+
// name. The page's usage blocks are generated from this table and `josh help <command>` prints it, so
|
|
5
|
+
// an example or a flag is written once, here (#3937). The page from `run:progress` on is
|
|
6
|
+
// `josh-usage-session.ts`.
|
|
7
|
+
const ISSUE = { arguments: '<N>' }
|
|
8
|
+
const OUTPUT = '--output <path>'
|
|
9
|
+
const OWNER = '--owner <pid>'
|
|
10
|
+
const REPO_FLAG = { names: ['--repo <owner/name>'], description: 'a child in another repository.' }
|
|
11
|
+
|
|
12
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
13
|
+
const RUN_USAGE: Readonly<Record<string, CommandUsage>> = {
|
|
14
|
+
'run:hold': {
|
|
15
|
+
examples: [
|
|
16
|
+
{ arguments: '1091', note: 'claim for issue 1091' },
|
|
17
|
+
{ arguments: '1091 --fullrun', note: 'claim as `fullrun #1091` (what `run:entry` runs)' },
|
|
18
|
+
],
|
|
19
|
+
flags: [
|
|
20
|
+
{ names: ['--fullrun'], description: "marks the record as `fullrun #N`'s." },
|
|
21
|
+
{
|
|
22
|
+
names: ['--halfrun-stop'],
|
|
23
|
+
description: 'marks a `halfrun` stop for `run:entry` to adopt.',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
names: ['--prrun-stop'],
|
|
27
|
+
description: 'marks a `prrun` stop with the commit its pull request is on.',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
'run:release': {
|
|
32
|
+
examples: [
|
|
33
|
+
{ arguments: '1091', note: "release this run's own record" },
|
|
34
|
+
{ arguments: '--force', note: 'clear a record left by a run that has ended' },
|
|
35
|
+
],
|
|
36
|
+
flags: [
|
|
37
|
+
{
|
|
38
|
+
names: ['--force'],
|
|
39
|
+
description: "removes a record this run did not write, clearing another run's stale claim.",
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
'run:tidy': { examples: [{ arguments: '' }] },
|
|
44
|
+
'run:carry': {
|
|
45
|
+
examples: [
|
|
46
|
+
{ arguments: '--begin "backlogrun --max 5" --owner "$PPID"' },
|
|
47
|
+
{ arguments: '--json', note: 'read the record back in a resumed session' },
|
|
48
|
+
{ arguments: '--cut --owner "$PPID"', note: 'hand the record off before a cut' },
|
|
49
|
+
{
|
|
50
|
+
arguments:
|
|
51
|
+
'--retrospective --summary "0 filed; dropped #2240 already merged" --owner "$PPID"',
|
|
52
|
+
note: 'close the end-of-run retrospective',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
arguments: '--resume "backlogrun --max 5" --owner "$PPID"',
|
|
56
|
+
note: 'adopt a record no cut handed off',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
arguments: '--end --stopped "epic #2126: everything is blocked behind parked #2118"',
|
|
60
|
+
note: 'end + push',
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
flags: [
|
|
64
|
+
{
|
|
65
|
+
names: [OWNER],
|
|
66
|
+
description:
|
|
67
|
+
'the long-lived process spending the budget (`$PPID` under a loop); required by counts and `--begin` / `--resume`. A live PID stays `busy` if probes fail.',
|
|
68
|
+
},
|
|
69
|
+
{ names: ['--done <issue>'], description: "shrinks a named-issue run's `remaining` list." },
|
|
70
|
+
{
|
|
71
|
+
names: ['--merged <issue>'],
|
|
72
|
+
description:
|
|
73
|
+
'names the merged issue and counts it once against `merged_issues`, so a merge `run:merge` already recorded is not counted twice.',
|
|
74
|
+
},
|
|
75
|
+
{ names: ['--filed', '--cut'], description: 'increments, never totals.' },
|
|
76
|
+
{
|
|
77
|
+
names: ['--retrospective'],
|
|
78
|
+
description:
|
|
79
|
+
"marks the end-of-run retrospective run, once per invocation, and requires `--summary <text>` — the same close writes that result as one `retrospective` event on the run's event stream (best-effort), so a run that filed zero improvements reads apart from one whose retrospective never ran. Either flag without the other is refused.",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
names: ['--stopped <reason>'],
|
|
83
|
+
description:
|
|
84
|
+
'rides on `--end`: the run stopped rather than finished, so one ⏸️ confirmation is pushed with the reason.',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
names: ['--end'],
|
|
88
|
+
description:
|
|
89
|
+
'over a live record flushes pending ledger lines once (a failed flush goes to stderr and the record is still cleared); first collects each lane the run launched whose issue merged, exactly as `run:merge` would; keeps the run it removes as the last ended run — its invocation, start and end, one record overwritten by the next `--end` — so `run:board` can still draw a finished run.',
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
'run:add': {
|
|
94
|
+
examples: [
|
|
95
|
+
{ arguments: '101 102', note: 'ahead of the rest of the queue (`#N` works too)' },
|
|
96
|
+
{ arguments: '101 --no-priority', note: 'at the end of the queue' },
|
|
97
|
+
],
|
|
98
|
+
},
|
|
99
|
+
'run:wake': {
|
|
100
|
+
examples: [
|
|
101
|
+
{ arguments: '--start', note: 'launch the detached supervisor' },
|
|
102
|
+
{ arguments: '--list', note: 'supervisor state, cut/wake counts, latest progress line' },
|
|
103
|
+
{ arguments: '--stop', note: 'stop the supervisor alone' },
|
|
104
|
+
{ arguments: '--loop --interval 30', note: 'run the loop body in the foreground' },
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
'run:cut': {
|
|
108
|
+
examples: [
|
|
109
|
+
{ arguments: '1839', note: 'take the cut and hand it to a fresh process' },
|
|
110
|
+
{
|
|
111
|
+
arguments: '--impl 1839 --handoff .claude/tmp/handoff-1839.json',
|
|
112
|
+
note: 'cut mid-implementation, carrying the instruction',
|
|
113
|
+
},
|
|
114
|
+
{ arguments: '--resume 1839', note: "a fresh process's entry check" },
|
|
115
|
+
{ arguments: '--end', note: 'clear the record' },
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
'run:liveness': {
|
|
119
|
+
examples: [
|
|
120
|
+
{ arguments: '1169 --output <path>' },
|
|
121
|
+
{ arguments: '1169 --output <path> --window 45 --gap 2 --repo joshuafolkken/app-kit' },
|
|
122
|
+
],
|
|
123
|
+
flags: [
|
|
124
|
+
{
|
|
125
|
+
names: [OUTPUT],
|
|
126
|
+
description:
|
|
127
|
+
'absolute, under the home or temp directory; a symlink is followed and size compared as well as mtime.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
names: ['--process alive | none'],
|
|
131
|
+
description:
|
|
132
|
+
"overrides the process trace, which the command otherwise reads itself: the child's own command line (`fullrun #<N>`) or its detached ship supervisor.",
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
names: ['--window <min>'],
|
|
136
|
+
description: 'silent window the file must be frozen for (default 30).',
|
|
137
|
+
},
|
|
138
|
+
{ names: ['--gap <sec>'], description: 'spacing between samples (default 5).' },
|
|
139
|
+
REPO_FLAG,
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
'run:ending': {
|
|
143
|
+
examples: [
|
|
144
|
+
{ arguments: '2118 --output <path>' },
|
|
145
|
+
{ arguments: '2118 --output <path> --repo joshuafolkken/app-kit' },
|
|
146
|
+
],
|
|
147
|
+
flags: [
|
|
148
|
+
{
|
|
149
|
+
names: [OUTPUT],
|
|
150
|
+
description:
|
|
151
|
+
"the child's transcript, absolute and under the home or temp directory (validated the same way `run:liveness --output` is).",
|
|
152
|
+
},
|
|
153
|
+
REPO_FLAG,
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
'run:prep': { examples: [ISSUE] },
|
|
157
|
+
'run:entry': {
|
|
158
|
+
examples: [
|
|
159
|
+
{ arguments: '<N>', note: 'a `fullrun`' },
|
|
160
|
+
{ arguments: '<N> --to halfrun', note: 'a run that goes as far as `halfrun`' },
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
'run:status': {
|
|
164
|
+
examples: [ISSUE, { arguments: '<N> --repo <owner/repo>', note: 'a cross-repo child' }],
|
|
165
|
+
},
|
|
166
|
+
'run:next': { examples: [ISSUE] },
|
|
167
|
+
'run:step': {
|
|
168
|
+
examples: [
|
|
169
|
+
{ arguments: '<N>', note: "the run's next action for issue <N>" },
|
|
170
|
+
{ arguments: '', note: "the `backlogrun` parent's next action" },
|
|
171
|
+
],
|
|
172
|
+
},
|
|
173
|
+
'run:merge': {
|
|
174
|
+
examples: [
|
|
175
|
+
{
|
|
176
|
+
arguments: '<N> --epic <E> --repo <owner/repo> --owner "$PPID" --output <path>',
|
|
177
|
+
note: 'prints the next child number, or a verdict',
|
|
178
|
+
},
|
|
179
|
+
{ arguments: '<N> --owner "$PPID"', note: 'backlog offer (no epic)' },
|
|
180
|
+
],
|
|
181
|
+
flags: [
|
|
182
|
+
{
|
|
183
|
+
names: ['--epic <E>', '--repo <owner/repo>'],
|
|
184
|
+
description: "offer the epic's next children; omit both for the opted-in backlog.",
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
names: [OWNER],
|
|
188
|
+
description: "the parent's process, so the carry count respects the ownership guard.",
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
names: [OUTPUT],
|
|
192
|
+
description: 'the transcript the outage split reads; absent, it is off.',
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
'run:review': {
|
|
197
|
+
examples: [
|
|
198
|
+
{
|
|
199
|
+
arguments: '',
|
|
200
|
+
note: 'detach the gate, print the brief; then launch the /code-review subagent',
|
|
201
|
+
},
|
|
202
|
+
{ arguments: '--join', note: 'after the review returns: join the gate, check its verdict' },
|
|
203
|
+
],
|
|
204
|
+
},
|
|
205
|
+
'run:tail': {
|
|
206
|
+
examples: [
|
|
207
|
+
{ arguments: '<N>', note: 'the closed issue' },
|
|
208
|
+
{ arguments: '<N> <follow-up-N>', note: 'and a follow-up filed this run' },
|
|
209
|
+
],
|
|
210
|
+
},
|
|
211
|
+
ship: {
|
|
212
|
+
examples: [
|
|
213
|
+
{ arguments: '"<title> #<N>" --body-file <evidence.md>' },
|
|
214
|
+
{ arguments: '"<title> #<N>" --review', note: 'both review rounds inside the ship' },
|
|
215
|
+
{ arguments: '--detach "<title> #<N>"', note: 'hand the ship to a supervisor' },
|
|
216
|
+
{ arguments: '--log <N>', note: "a detached ship's log" },
|
|
217
|
+
],
|
|
218
|
+
flags: [
|
|
219
|
+
{
|
|
220
|
+
names: ['--body-file <path>'],
|
|
221
|
+
description:
|
|
222
|
+
'the PR body carrying the live-execution evidence `followup` gates on; forwarded to `git -y` alone.',
|
|
223
|
+
},
|
|
224
|
+
{ names: ['--notify-message <text>'], description: 'forwarded to `followup` alone.' },
|
|
225
|
+
{
|
|
226
|
+
names: ['--review'],
|
|
227
|
+
description:
|
|
228
|
+
'runs review round 1 beside the gate, and round 2 after the commit when `review:round2` requires it; a High or an unfixed Medium stops the ship.',
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
names: ['--detach'],
|
|
232
|
+
description:
|
|
233
|
+
'hands the ship to a supervisor (implied in a lane child); a stop emits `ship-stop` (`--log <N>`). The preflight, type check, unused exports, cspell and guard tests run before the hand-off; a stop returns to the same session.',
|
|
234
|
+
},
|
|
235
|
+
],
|
|
236
|
+
},
|
|
237
|
+
'run:report': {
|
|
238
|
+
examples: [{ arguments: '', note: 'print the report; the same text josh notify sends' }],
|
|
239
|
+
},
|
|
240
|
+
'run:event': {
|
|
241
|
+
examples: [
|
|
242
|
+
{ arguments: '--append <kind> <text>', note: 'append one event; prints its position' },
|
|
243
|
+
{ arguments: '--from <position>', note: 'every event after <position>, in order (JSON)' },
|
|
244
|
+
{ arguments: '--follow <position>', note: 'new events, waiting for one; position on stderr' },
|
|
245
|
+
{ arguments: '--watch [<position>]', note: 'every new event, rendered, until interrupted' },
|
|
246
|
+
{ arguments: '--last', note: 'the newest event alone' },
|
|
247
|
+
],
|
|
248
|
+
},
|
|
249
|
+
}
|
|
250
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
251
|
+
|
|
252
|
+
export { RUN_USAGE }
|