1use crate::HelpTopic;
4
5#[must_use]
7pub const fn help_text(topic: HelpTopic) -> &'static str {
8 match topic {
9 HelpTopic::Root => ROOT_HELP,
10 HelpTopic::Login => LOGIN_HELP,
11 HelpTopic::Logout => LOGOUT_HELP,
12 HelpTopic::Setup => SETUP_HELP,
13 HelpTopic::Status => STATUS_HELP,
14 HelpTopic::Version => VERSION_HELP,
15 HelpTopic::Auth => AUTH_HELP,
16 HelpTopic::Json => JSON_HELP,
17 HelpTopic::Examples => EXAMPLES_HELP,
18 HelpTopic::Read => READ_HELP,
19 HelpTopic::ReadLogs => READ_LOGS_HELP,
20 HelpTopic::ReadIssues => READ_ISSUES_HELP,
21 HelpTopic::ReadActions => READ_ACTIONS_HELP,
22 HelpTopic::ReadReleases => READ_RELEASES_HELP,
23 HelpTopic::ReadTrace => READ_TRACE_HELP,
24 HelpTopic::ReadIssue => READ_ISSUE_HELP,
25 HelpTopic::Watch => WATCH_HELP,
26 HelpTopic::Explain => EXPLAIN_HELP,
27 HelpTopic::Set => SET_HELP,
28 }
29}
30
31const ROOT_HELP: &str = "\
33LogBrew CLI
34
35Usage:
36 logbrew login [--no-open] [--json]
37 logbrew logout [--json]
38 logbrew setup [--auto] [--yes] [--json]
39 logbrew status [--json]
40 logbrew health [--json]
41 logbrew doctor [--json]
42 logbrew whoami [--json]
43 logbrew me [--json]
44 logbrew version [--json]
45 logbrew read logs [--severity error] [--search checkout] [--release <release>] [--environment \
46 production] [--since 24h] [--json]
47 logbrew logs checkout failed [--severity error] [--release <release>] [--environment \
48 production] [--json]
49 logbrew logs error checkout failed [--release <release>] [--environment production] [--json]
50 logbrew search checkout [--release <release>] [--environment production] [--json]
51 logbrew find checkout [--release <release>] [--environment production] [--json]
52 logbrew grep checkout [--release <release>] [--environment production] [--json]
53 logbrew show logs [--release <release>] [--environment production] [--json]
54 logbrew latest logs [--limit 20] [--json]
55 logbrew last 10 logs [--json]
56 logbrew last 5 open issues [--json]
57 logbrew list issues [--status unresolved] [--json]
58 logbrew issues open [--release <release>] [--environment production] [--json]
59 logbrew issue open [--release <release>] [--environment production] [--json]
60 logbrew open issues [--release <release>] [--environment production] [--json]
61 logbrew open issue [--release <release>] [--environment production] [--json]
62 logbrew errors closed [--release <release>] [--environment production] [--json]
63 logbrew get issue <issue_id> [--json]
64 logbrew read issues [--release <release>] [--environment production] [--status unresolved] \
65 [--json]
66 logbrew read actions [--release <release>] [--environment production] [--name checkout_failed] \
67 [--json]
68 logbrew events checkout_failed [--release <release>] [--environment production] [--json]
69 logbrew read releases [--environment production] [--json]
70 logbrew read trace <trace_id> [--release <release>] [--environment production] [--json]
71 logbrew trace <trace_id> [--release <release>] [--environment production] [--json]
72 logbrew issue <issue_id> [--json]
73 logbrew issue <issue_id> explain [--json]
74 logbrew trace <trace_id> explain [--json]
75 logbrew explain issue <issue_id> [--json]
76 logbrew explain trace <trace_id> [--json]
77 logbrew explain <issue_id_or_trace_id> [--json]
78 logbrew <issue_id_or_trace_id> explain [--json]
79 logbrew set issue <issue_id> resolved [--json]
80 logbrew resolve <issue_id> [--json]
81 logbrew close <issue_id> [--json]
82 logbrew ignore <issue_id> [--json]
83 logbrew reopen <issue_id> [--json]
84
85Popular terms: auth, status, health, logs, issues, errors, traces, spans, actions, events, \
86 releases, environments.
87Health aliases: logbrew status, logbrew health, logbrew ping, logbrew doctor.
88Setup aliases (non-mutating plan): logbrew init, logbrew install, logbrew configure, logbrew sdk.
89Shortcuts: logbrew auth, logbrew whoami, logbrew me, logbrew log, logbrew logs, logbrew issues, \
90 logbrew logs checkout failed, logbrew logs error checkout, logbrew \
91 search checkout, logbrew find checkout, logbrew grep checkout, logbrew \
92 errors, logbrew actions, logbrew events, logbrew events checkout_failed, \
93 logbrew release, logbrew releases, logbrew trace <id>, logbrew issue \
94 <id>, logbrew resolve <id>, logbrew close <id>, logbrew ignore <id>, \
95 logbrew reopen <id>.
96Read verbs: logbrew show logs, logbrew latest logs, logbrew last 10 logs, logbrew recent issues, \
97 logbrew list issues, logbrew get issue <id>.
98Singular read aliases: logbrew read log, read release, show log, list issue, get release.
99Pasted IDs: logbrew issue_123 or logbrew <trace_id>.
100Examples: logbrew examples.
101Topic help: logbrew logs --help, logbrew help logs, logbrew help read logs, or logbrew help json.
102JSON mode: logbrew --json status and logbrew status --json both work.
103Use --json for stable machine-readable output.";
104
105const LOGIN_HELP: &str = "\
107Usage:
108 logbrew login [--no-open] [--json]
109
110Starts browser login for the native CLI. Use --no-open to print the URL without opening a browser.
111--json prints the auth handoff without opening a browser.";
112
113const LOGOUT_HELP: &str = "\
115Usage:
116 logbrew logout [--json]
117
118Removes the local CLI token. If LOGBREW_TOKEN is set, unset it to fully log out.";
119
120const SETUP_HELP: &str = "\
122Usage:
123 logbrew setup [--auto] [--yes] [--json]
124
125Detects supported project manifests and prints a non-mutating SDK setup plan.
126No files are changed. Install: not ready.
127Aliases (same non-mutating plan): logbrew init, logbrew install, logbrew configure, logbrew sdk.
128Options: --auto records automatic detection preference; --yes records confirmation preference; \
129 --json prints stable setup JSON.
130Supported manifests: package.json, pyproject.toml, Pipfile, Cargo.toml, Package.swift, \
131 project.yml, project.yaml, .xcodeproj, .xcworkspace, go.mod, \
132 composer.json.
133Package managers: npm, pnpm, yarn, bun, pip, uv, poetry, pipenv, cargo, SwiftPM, XcodeGen, Go, \
134 Composer.";
135
136const STATUS_HELP: &str = "\
138Usage:
139 logbrew status [--json]
140 logbrew health [--json]
141 logbrew ping [--json]
142 logbrew doctor [--json]
143 logbrew whoami [--json]
144 logbrew me [--json]
145 logbrew auth status [--json]
146
147Checks local auth and API reachability.
148Identity aliases: logbrew whoami, logbrew me, logbrew auth status.";
149
150const VERSION_HELP: &str = "\
152Usage:
153 logbrew version [--json]
154 logbrew --version [--json]
155
156Prints the installed CLI version.
157The CLI is a native Rust binary.";
158
159const AUTH_HELP: &str = "\
161Usage:
162 logbrew login [--no-open] [--json]
163 logbrew auth login [--no-open] [--json]
164 logbrew status [--json]
165 logbrew auth status [--json]
166 logbrew auth whoami [--json]
167 logbrew auth me [--json]
168 logbrew whoami [--json]
169 logbrew me [--json]
170 logbrew logout [--json]
171 logbrew auth logout [--json]
172
173Use login once, status/whoami/me to verify API/auth state, and logout to remove the local token.
174Use --json for agent-readable auth checks.";
175
176const JSON_HELP: &str = "\
178Usage:
179 logbrew --json status
180 logbrew status --json
181 logbrew logs --json
182 logbrew help json --json
183
184Use --json before or after commands for stable machine-readable output.
185Stable JSON keeps server response shapes for reads and mutations.
186Errors include ok, error, message, and next.";
187
188const EXAMPLES_HELP: &str = "\
190Usage:
191 logbrew examples
192 logbrew help examples
193
194First run:
195 logbrew status
196 logbrew login
197 logbrew setup
198
199Troubleshoot:
200 logbrew logs error checkout failed --release checkout@1 --environment production
201 logbrew issues open --release checkout@1 --environment production
202 logbrew issue issue_123
203 logbrew explain issue issue_123
204 logbrew trace <trace_id>
205
206Live:
207 logbrew watch --json
208 logbrew watch --severity error,critical --json
209
210Agent JSON:
211 logbrew --json status
212 logbrew logs checkout failed --json
213 logbrew explain trace <trace_id> --json
214
215More help:
216 logbrew help logs
217 logbrew help issues
218 logbrew help watch
219 logbrew help json";
220
221const READ_HELP: &str = "\
223Usage:
224 logbrew read logs [filters] [--json]
225 logbrew read log [filters] [--json]
226 logbrew show logs [filters] [--json]
227 logbrew list issues [filters] [--json]
228 logbrew get issue <issue_id> [--json]
229 logbrew read issues [filters] [--json]
230 logbrew read actions [filters] [--json]
231 logbrew read releases [filters] [--json]
232 logbrew read release [filters] [--json]
233 logbrew read trace <trace_id> [--json]
234 logbrew read issue <issue_id> [--json]
235
236Reads historical observability data for agents and developers.
237Singular read aliases: logbrew read log, read release, show log, list issue, get release.
238Recency counts are limit shortcuts: logbrew last 10 logs or logbrew recent 5 issues.
239Use --environment <environment> with logs, issues, actions, releases, or traces.
240Filter aliases: --env, --project-id, --trace-id, and --distinct-id.";
241
242const READ_LOGS_HELP: &str = "\
244Usage:
245 logbrew read logs [--severity error] [--search checkout] [--release <release>] [--environment \
246 production] [--since 24h] [--trace <trace_id>] [--project \
247 <project_id>] [--limit 100] [--json]
248 logbrew logs checkout failed [--severity error] [--release <release>] [--environment \
249 production] [--json]
250 logbrew logs error checkout failed [--release <release>] [--environment production] [--json]
251
252Reads structured logs. Severity values are info, warning, error, and critical.
253Legacy severity aliases are accepted on input and normalized.
254Severity matching is case-insensitive. --level is accepted as a compatibility alias for \
255 --severity.
256The logs shortcut accepts obvious multi-word search text, such as logbrew logs checkout failed.
257Shortcut levels can include search text, such as logbrew logs error checkout failed.
258Recency counts are limit shortcuts, such as logbrew last 10 logs.
259Explicit filters accept unquoted search text too, such as logbrew logs --severity warning checkout \
260 failed or logbrew logs --search checkout failed.
261Use -- before literal flag-looking search text, such as logbrew logs -- --timeout --json.
262Filter by severity, message search, release, or trace_id to correlate logs with spans.
263Limit must be a positive whole number.";
264
265const READ_ISSUES_HELP: &str = "\
267Usage:
268 logbrew read issues [--release <release>] [--environment production] [--status unresolved] \
269 [--project <project_id>] [--limit 100] [--json]
270 logbrew issues open [--release <release>] [--environment production] [--json]
271 logbrew issue open [--release <release>] [--environment production] [--json]
272 logbrew open issues [--release <release>] [--environment production] [--json]
273 logbrew open issue [--release <release>] [--environment production] [--json]
274 logbrew last 5 open issues [--json]
275 logbrew errors closed [--release <release>] [--environment production] [--json]
276
277Reads grouped issues across releases and environments.
278Status accepts unresolved/open, resolved/closed, or ignored, case-insensitively.
279Issue shortcuts accept status words, such as logbrew issues open, logbrew issue open, logbrew open \
280 issues, logbrew open issue, or logbrew errors closed.
281Recency issue shortcuts can include status and count, such as logbrew last 5 open issues.
282Limit must be a positive whole number.";
283
284const READ_ACTIONS_HELP: &str = "\
286Usage:
287 logbrew read actions [--release <release>] [--environment production] [--name checkout_failed] \
288 [--user <distinct_id>] [--since 24h] [--project <project_id>] \
289 [--limit 100] [--json]
290 logbrew events checkout_failed [--release <release>] [--environment production] [--json]
291
292Reads product actions. Use distinct_id to follow one actor or session.
293Action/event aliases accept one positional name as the same filter as --name.
294Limit must be a positive whole number.";
295
296const READ_RELEASES_HELP: &str = "\
298Usage:
299 logbrew read releases [--release <release>] [--environment production] [--project <project_id>] \
300 [--limit 100] [--json]
301
302Reads release summaries with counts for issues, logs, trace spans, and actions.
303Limit must be a positive whole number.";
304
305const READ_TRACE_HELP: &str = "\
307Usage:
308 logbrew read trace <trace_id> [--release <release>] [--environment production] [--project \
309 <project_id>] [--json]
310
311Reads spans for one distributed trace.";
312
313const READ_ISSUE_HELP: &str = "\
315Usage:
316 logbrew read issue <issue_id> [--json]
317
318Reads one grouped issue with status, release, environment, and occurrence counts.";
319
320const WATCH_HELP: &str = "\
322Usage:
323 logbrew watch --json
324 logbrew watch logs [--json]
325 logbrew watch issues [--json]
326 logbrew watch actions [--json]
327 logbrew watch --severity error,critical --json
328
329Aliases: tail, follow, and stream use the same live watch flow.
330Live watch uses a short-lived feed ticket and WebSocket stream.
331Transient disconnects reconnect with a fresh ticket and backoff.
332Server-side live filters are not sent yet; severity filtering is applied client-side.";
333
334const EXPLAIN_HELP: &str = "\
336Usage:
337 logbrew explain issue <issue_id> [--json]
338 logbrew explain trace <trace_id> [--json]
339 logbrew explain <issue_id_or_trace_id> [--json]
340 logbrew issue <issue_id> explain [--json]
341 logbrew trace <trace_id> explain [--json]
342 logbrew <issue_id_or_trace_id> explain [--json]
343
344Fetches enough context for an AI agent to explain what happened.
345Pasted UUID/issue_* values are treated as issues; 32-hex/trace_* values are treated as traces.";
346
347const SET_HELP: &str = "\
349Usage:
350 logbrew set issue <issue_id> unresolved [--json]
351 logbrew set issue <issue_id> resolved [--json]
352 logbrew set issue <issue_id> ignored [--json]
353 logbrew resolve <issue_id> [--json]
354 logbrew close <issue_id> [--json]
355 logbrew ignore <issue_id> [--json]
356 logbrew reopen <issue_id> [--json]
357 logbrew issue <issue_id> resolve [--json]
358 logbrew issue <issue_id> close [--json]
359 logbrew issue <issue_id> ignore [--json]
360 logbrew issue <issue_id> reopen [--json]
361 logbrew <issue_id> resolve [--json]
362 logbrew resolved <issue_id> [--json]
363 logbrew closed <issue_id> [--json]
364 logbrew ignored <issue_id> [--json]
365 logbrew open <issue_id> [--json]
366 logbrew unresolved <issue_id> [--json]
367
368Updates grouped issue status. Resolve/close map to resolved; ignore maps to ignored; reopen maps \
369 to unresolved.
370Close is an alias for resolved.
371Issue-first, pasted-ID, and status-first aliases are useful after reading issue detail.
372Status values are case-insensitive.";