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