Skip to main content

logbrew_cli/
help.rs

1//! CLI help text kept separate from command parsing.
2
3use crate::HelpTopic;
4
5/// Returns user-facing help for a topic.
6#[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::ReadTraces => READ_TRACES_HELP,
26        HelpTopic::ReadTrace => READ_TRACE_HELP,
27        HelpTopic::ReadIssue => READ_ISSUE_HELP,
28        HelpTopic::Watch => WATCH_HELP,
29        HelpTopic::Explain => EXPLAIN_HELP,
30        HelpTopic::Investigate => INVESTIGATE_HELP,
31        HelpTopic::NativeDebugArtifacts => NATIVE_DEBUG_ARTIFACTS_HELP,
32        HelpTopic::Set => SET_HELP,
33        HelpTopic::Support => SUPPORT_HELP,
34    }
35}
36
37/// Root command help text.
38const ROOT_HELP: &str = "\
39LogBrew CLI
40
41Usage:
42  logbrew login [--no-open] [--json]
43  logbrew logout [--json]
44  logbrew setup [--auto] [--yes] [--json]
45  logbrew projects [--json]
46  logbrew usage [--json]
47  logbrew status [--json]
48  logbrew health [--json]
49  logbrew doctor [--json]
50  logbrew doctor --project <project_id> [--json]
51  logbrew whoami [--json]
52  logbrew me [--json]
53  logbrew version [--json]
54  logbrew support create --category <category> --title <title> --description <description> [--json]
55  logbrew support list [--status <status>] [--category <category>] [--json]
56  logbrew support show <ticket_id> [--json]
57  logbrew support context <ticket_id> [--json]
58  logbrew support reply <ticket_id> --context <text> --retry-key <key> [--diagnostics] [--json]
59  logbrew support close <ticket_id> [--json]
60  logbrew support reopen <ticket_id> [--json]
61  logbrew read logs [--severity error] [--search checkout] [--release <release>] [--environment \
62                         production] [--since 24h] [--json]
63  logbrew logs checkout failed [--severity error] [--release <release>] [--environment \
64                         production] [--json]
65  logbrew logs error checkout failed [--release <release>] [--environment production] [--json]
66  logbrew search checkout [--release <release>] [--environment production] [--json]
67  logbrew find checkout [--release <release>] [--environment production] [--json]
68  logbrew grep checkout [--release <release>] [--environment production] [--json]
69  logbrew show logs [--release <release>] [--environment production] [--json]
70  logbrew latest logs [--limit 20] [--json]
71  logbrew last 10 logs [--json]
72  logbrew last 5 open issues [--json]
73  logbrew list issues [--status unresolved] [--json]
74  logbrew issues open [--release <release>] [--environment production] [--json]
75  logbrew issue open [--release <release>] [--environment production] [--json]
76  logbrew open issues [--release <release>] [--environment production] [--json]
77  logbrew open issue [--release <release>] [--environment production] [--json]
78  logbrew errors closed [--release <release>] [--environment production] [--json]
79  logbrew get issue <issue_id> [--json]
80  logbrew read issues [--release <release>] [--environment production] [--status unresolved] \
81                         [--json]
82  logbrew read actions [--release <release>] [--environment production] [--name checkout_failed] \
83                         [--json]
84  logbrew events checkout_failed [--release <release>] [--environment production] [--json]
85  logbrew read releases [--environment production] [--json]
86  logbrew traces [--service <service_name>] [--status error] [--since 24h] [--json]
87  logbrew read trace <trace_id> [--release <release>] [--environment production] [--json]
88  logbrew trace <trace_id> [--release <release>] [--environment production] [--json]
89  logbrew issue <issue_id> [--json]
90  logbrew issue <issue_id> explain [--json]
91  logbrew trace <trace_id> explain [--json]
92  logbrew explain issue <issue_id> [--json]
93  logbrew explain trace <trace_id> [--json]
94  logbrew explain <issue_id_or_trace_id> [--json]
95  logbrew investigate issue <issue_id> [--json]
96  logbrew debug-artifacts upload <path> --project <project_id> --release <release> --environment \
97                         <environment> --service <service> [--expect-image-uuid <uuid>]... \
98                         [--dry-run] [--json]
99  logbrew debug-artifacts lookup --project <project_id> --release <release> --environment \
100                         <environment> --service <service> --image-uuid <uuid> --architecture \
101                         <architecture> [--json]
102  logbrew <issue_id_or_trace_id> explain [--json]
103  logbrew set issue <issue_id> resolved [--json]
104  logbrew resolve <issue_id> [--json]
105  logbrew close <issue_id> [--json]
106  logbrew ignore <issue_id> [--json]
107  logbrew reopen <issue_id> [--json]
108
109Popular terms: auth, status, health, setup, projects, usage, logs, issues, errors, traces, spans, \
110                         actions, events, releases, environments, support.
111Health aliases: logbrew status, logbrew health, logbrew ping, logbrew doctor.
112Setup aliases (non-mutating plan): logbrew init, logbrew install, logbrew configure, logbrew sdk.
113Shortcuts: logbrew auth, logbrew whoami, logbrew me, logbrew log, logbrew logs, logbrew issues, \
114                         logbrew logs checkout failed, logbrew logs error checkout, logbrew \
115                         search checkout, logbrew find checkout, logbrew grep checkout, logbrew \
116                         errors, logbrew actions, logbrew events, logbrew events checkout_failed, \
117                         logbrew release, logbrew releases, logbrew trace <id>, logbrew issue \
118                         <id>, logbrew resolve <id>, logbrew close <id>, logbrew ignore <id>, \
119                         logbrew reopen <id>.
120Read verbs: logbrew show logs, logbrew latest logs, logbrew last 10 logs, logbrew recent issues, \
121                         logbrew list issues, logbrew get issue <id>.
122Singular read aliases: logbrew read log, read release, show log, list issue, get release.
123Pasted IDs: logbrew issue_123 or logbrew <trace_id>.
124Examples: logbrew examples.
125Topic help: logbrew logs --help, logbrew help logs, logbrew help read logs, or logbrew help json.
126JSON mode: logbrew --json status and logbrew status --json both work.
127Use --json for stable machine-readable output.";
128
129/// Login command help text.
130const LOGIN_HELP: &str = "\
131Usage:
132  logbrew login [--no-open] [--json]
133
134Starts browser login for the native CLI and stores a private local access/refresh pair.
135Authenticated commands refresh local auth once after an expired-token response.
136Use --no-open to print the URL without opening a browser.
137--json prints the auth handoff without opening a browser.";
138
139/// Logout command help text.
140const LOGOUT_HELP: &str = "\
141Usage:
142  logbrew logout [--json]
143
144Attempts to revoke the stored server session, then always removes both local CLI credentials.
145If LOGBREW_TOKEN is set, unset it separately to fully log out.";
146
147/// Setup command help text.
148const SETUP_HELP: &str = "\
149Usage:
150  logbrew setup [--auto] [--yes] [--json]
151
152Detects supported project manifests and prints a non-mutating SDK setup plan.
153No files are changed. Install: not ready.
154Aliases (same non-mutating plan): logbrew init, logbrew install, logbrew configure, logbrew sdk.
155Options: --auto records automatic detection preference; --yes records confirmation preference; \
156                          --json prints stable setup JSON.
157Supported manifests: package.json, pyproject.toml, Pipfile, Cargo.toml, Package.swift, \
158                          project.yml, project.yaml, .xcodeproj, .xcworkspace, go.mod, \
159                          composer.json.
160Package managers: npm, pnpm, yarn, bun, pip, uv, poetry, pipenv, cargo, SwiftPM, XcodeGen, Go, \
161                          Composer.";
162
163/// Status command help text.
164const STATUS_HELP: &str = "\
165Usage:
166  logbrew status [--json]
167  logbrew health [--json]
168  logbrew ping [--json]
169  logbrew doctor [--json]
170  logbrew doctor --project <project_id> [--json]
171  logbrew whoami [--json]
172  logbrew me [--json]
173  logbrew auth status [--json]
174
175Checks local auth and API reachability.
176Identity aliases: logbrew whoami, logbrew me, logbrew auth status.";
177
178/// Version command help text.
179const VERSION_HELP: &str = "\
180Usage:
181  logbrew version [--json]
182  logbrew --version [--json]
183
184Prints the installed CLI version.
185The CLI is a native Rust binary.";
186
187/// Auth workflow help text.
188const AUTH_HELP: &str = "\
189Usage:
190  logbrew login [--no-open] [--json]
191  logbrew auth login [--no-open] [--json]
192  logbrew status [--json]
193  logbrew auth status [--json]
194  logbrew auth whoami [--json]
195  logbrew auth me [--json]
196  logbrew whoami [--json]
197  logbrew me [--json]
198  logbrew logout [--json]
199  logbrew auth logout [--json]
200
201Use login once, status/whoami/me to verify API/auth state, and logout to revoke the stored
202server session when possible and always remove local credentials.
203Use --json for agent-readable auth checks.";
204
205/// JSON output help text.
206const JSON_HELP: &str = "\
207Usage:
208  logbrew --json status
209  logbrew status --json
210  logbrew logs --json
211  logbrew help json --json
212
213Use --json before or after commands for stable machine-readable output.
214Stable JSON keeps server response shapes for reads and mutations.
215Errors include ok, error, message, and next.";
216
217/// First-run examples and common workflows.
218const EXAMPLES_HELP: &str = "\
219Usage:
220  logbrew examples
221  logbrew help examples
222
223First run:
224  logbrew status
225  logbrew login
226  logbrew setup
227
228Troubleshoot:
229  logbrew logs error checkout failed --release checkout@1 --environment production
230  logbrew issues open --release checkout@1 --environment production
231  logbrew issue issue_123
232  logbrew explain issue issue_123
233  logbrew trace <trace_id>
234
235Live:
236  logbrew watch --json
237  logbrew watch --severity error,critical --json
238
239Agent JSON:
240  logbrew --json status
241  logbrew logs checkout failed --json
242  logbrew explain trace <trace_id> --json
243
244More help:
245  logbrew help logs
246  logbrew help issues
247  logbrew help watch
248  logbrew help json";
249
250/// Backend-owned project setup help text.
251const PROJECTS_HELP: &str = "\
252Usage:
253  logbrew projects [--json]
254  logbrew project [--json]
255  logbrew projects create <name> --ingest-key-file <path> [--runtime <runtime>] \
256                           [--environment <environment>] [--abandon-retry] [--json]
257  logbrew setup --create-project [--json]
258  logbrew projects setup <project_id> [--runtime <runtime>] [--source api|cli|sdk] \
259[--environment <environment>] [--json]
260
261Project creation, setup status, and project-scoped ingest credentials are backend-owned.
262Project creation stores the one-time ingest key in a new owner-only file before reporting success;
263it never prints the one-time ingest key or its file path. An ambiguous attempt reuses the pending retry key only for the exact same request; --abandon-retry starts a new explicit attempt.
264Builds that cannot prove owner-only file permissions fail before sending the create request.
265No local install, quota, or usage state is created.
266Project setup uses POST /api/projects/{project_id}/setup/seen and preserves backend setup status JSON.
267Project-scoped SDK/ingest credentials are shown only when backend returns one-time credentials.
268Never use an account bearer token as SDK or ingest configuration.
269Next: run logbrew setup for the current non-mutating local plan.";
270
271/// Backend-owned usage and quota help text.
272const USAGE_HELP: &str = "\
273Usage:
274  logbrew usage [--json]
275  logbrew account usage [--json]
276
277Reads authenticated account usage, configured limits, quota state, and reset dates without mutating \
278account or billing state.
279Human output is bounded to plan, state, totals, limits, the driving limit, and one next step. JSON \
280preserves the exact validated account-usage object for agents.
281The CLI does not calculate or persist usage/quota state from local files.
282Next: run logbrew usage to inspect current account usage.";
283
284/// Read command help text.
285const READ_HELP: &str = "\
286Usage:
287  logbrew read logs [filters] [--json]
288  logbrew read log [filters] [--json]
289  logbrew show logs [filters] [--json]
290  logbrew list issues [filters] [--json]
291  logbrew get issue <issue_id> [--json]
292  logbrew read issues [filters] [--json]
293  logbrew read actions [filters] [--json]
294  logbrew read releases [filters] [--json]
295  logbrew read release [filters] [--json]
296  logbrew read traces [filters] [--json]
297  logbrew read trace <trace_id> [--json]
298  logbrew read issue <issue_id> [--json]
299
300Reads historical observability data for agents and developers.
301Singular read aliases: logbrew read log, read release, show log, list issue, get release.
302Recency counts are limit shortcuts: logbrew last 10 logs or logbrew recent 5 issues.
303Use --environment <environment> with logs, issues, actions, releases, or traces.
304Use --service <service_name> with logs, issues, actions, or releases.
305Filter aliases: --service-name, --env, --project-id, --trace-id, and --distinct-id.";
306
307/// Read logs help text.
308const READ_LOGS_HELP: &str = "\
309Usage:
310  logbrew read logs [--severity error] [--search checkout] [--release <release>] [--environment \
311                              production] [--service <service_name>] [--since 24h] [--trace \
312                              <trace_id>] [--project <project_id>] [--pagination cursor] [--limit \
313                              100] [--json]
314  logbrew read logs [filters] --pagination cursor --cursor-time <RFC3339> --cursor-id <uuid> \
315                              [--limit 100] [--json]
316  logbrew logs checkout failed [--severity error] [--release <release>] [--environment \
317                              production] [--json]
318  logbrew logs error checkout failed [--release <release>] [--environment production] [--json]
319
320Reads structured logs. Severity values are info, warning, error, and critical.
321Legacy severity aliases are accepted on input and normalized.
322Severity matching is case-insensitive. --level is accepted as a compatibility alias for \
323                              --severity.
324The logs shortcut accepts obvious multi-word search text, such as logbrew logs checkout failed.
325Shortcut levels can include search text, such as logbrew logs error checkout failed.
326Recency counts are limit shortcuts, such as logbrew last 10 logs.
327Explicit filters accept unquoted search text too, such as logbrew logs --severity warning checkout \
328                              failed or logbrew logs --search checkout failed.
329Use -- before literal flag-looking search text, such as logbrew logs -- --timeout --json.
330Filter by severity, message search, release, or trace_id to correlate logs with spans.
331--service-name <service_name> is accepted as an alias for --service <service_name>.
332Cursor pagination preserves JSON as {logs,next_cursor}; next_cursor is either {time,id} or null.
333Use --pagination cursor alone for the first page. Continue with --cursor-time and --cursor-id from \
334                              next_cursor.
335Keep the same active filters and pagination limit on every continuation page.
336Limit must be a positive whole number.";
337
338/// Read issues help text.
339const READ_ISSUES_HELP: &str = "\
340Usage:
341  logbrew read issues [--release <release>] [--environment production] [--status unresolved] \
342                                [--service <service_name>] [--since <24h|7d|RFC3339>] [--project \
343                                <project_id>] [--pagination cursor] [--limit 100] [--json]
344  logbrew read issues [filters] --pagination cursor --cursor-time <RFC3339> --cursor-id <uuid> \
345                                [--limit 100] [--json]
346  logbrew issues open [--release <release>] [--environment production] [--json]
347  logbrew issue open [--release <release>] [--environment production] [--json]
348  logbrew open issues [--release <release>] [--environment production] [--json]
349  logbrew open issue [--release <release>] [--environment production] [--json]
350  logbrew last 5 open issues [--json]
351  logbrew errors closed [--release <release>] [--environment production] [--json]
352
353Reads grouped issues across releases and environments.
354Status accepts unresolved/open, resolved/closed, or ignored, case-insensitively.
355Issue shortcuts accept status words, such as logbrew issues open, logbrew issue open, logbrew open \
356                                issues, logbrew open issue, or logbrew errors closed.
357Recency issue shortcuts can include status and count, such as logbrew last 5 open issues.
358--service-name <service_name> is accepted as an alias for --service <service_name>.
359Since accepts positive compact durations such as 24h or 7d, or an RFC3339 timestamp such as \
360                                2026-05-01T00:00:00Z.
361Cursor pagination preserves JSON as {issues,next_cursor}; next_cursor is either {time,id} or null.
362Use --pagination cursor alone for the first page. Continue with --cursor-time and --cursor-id from \
363                                next_cursor.
364Keep the same active filters and pagination limit on every continuation page.
365Limit must be a positive whole number.";
366
367/// Read actions help text.
368const READ_ACTIONS_HELP: &str = "\
369Usage:
370  logbrew read actions [--release <release>] [--environment production] [--name checkout_failed] \
371                                 [--user <distinct_id>] [--service <service_name>] [--since 24h] \
372                                 [--project <project_id>] [--pagination cursor] [--limit 100] \
373                                 [--json]
374  logbrew read actions [filters] --pagination cursor --cursor-time <RFC3339> --cursor-id <uuid> \
375                                 [--limit 100] [--json]
376  logbrew events checkout_failed [--release <release>] [--environment production] [--json]
377
378Reads product actions. Use distinct_id to follow one actor or session.
379Action/event aliases accept one positional name as the same filter as --name.
380--service-name <service_name> is accepted as an alias for --service <service_name>.
381Cursor pagination preserves JSON as {actions,next_cursor}; next_cursor is either {time,id} or null.
382Use --pagination cursor alone for the first page. Continue with --cursor-time and --cursor-id from \
383                                 next_cursor.
384Keep the same active filters and pagination limit on every continuation page.
385Limit must be a positive whole number.";
386
387/// Read releases help text.
388const READ_RELEASES_HELP: &str = "\
389Usage:
390  logbrew read releases [--release <release>] [--environment production] [--service \
391                                  <service_name>] [--since <24h|7d|RFC3339>] [--project \
392                                  <project_id>] [--limit 100] [--json]
393
394Reads release summaries with counts for issues, logs, trace spans, and actions.
395--service-name <service_name> is accepted as an alias for --service <service_name>.
396Since accepts positive compact durations such as 24h or 7d, or an RFC3339 timestamp such as \
397                                  2026-05-01T00:00:00Z.
398Limit must be a positive whole number.";
399
400/// Recent trace discovery help text.
401const READ_TRACES_HELP: &str = "\
402Usage:
403  logbrew traces [--project <project_id>] [--service <service_name>] [--release <release>] \
404                               [--environment <environment>] [--status <error|ok>] \
405                               [--since <24h|7d|RFC3339>] \
406                               [--min-duration-ms <milliseconds>] [--limit 100] [--json]
407  logbrew spans [filters] [--json]
408  logbrew latest traces [--limit 100] [--json]
409
410Lists recent distributed traces for incident investigation. JSON preserves the backend bare array.
411Status accepts error or ok, case-insensitively. Minimum duration is a non-negative whole number.
412Since accepts positive compact durations such as 24h or 7d, or an RFC3339 timestamp such as \
413                               2026-05-01T00:00:00Z.
414The backend defaults limit to 100 and clamps it to 1..500.
415CLI aliases --project-id, --service-name, and --env still serialize only canonical API query keys.
416Next: run logbrew trace <trace_id> or logbrew explain trace <trace_id>.";
417
418/// Read trace help text.
419const READ_TRACE_HELP: &str = "\
420Usage:
421  logbrew read trace <trace_id> [--release <release>] [--environment production] [--project \
422                               <project_id>] [--json]
423  logbrew trace <trace_id> [--release <release>] [--environment production] [--project \
424                          <project_id>] [--json]
425
426Reads spans for one distributed trace.";
427
428/// Read issue help text.
429const READ_ISSUE_HELP: &str = "\
430Usage:
431  logbrew read issue <issue_id> [--json]
432
433Reads one grouped issue with status, release, environment, and occurrence counts.";
434
435/// Watch command help text.
436const WATCH_HELP: &str = "\
437Usage:
438  logbrew watch --json
439  logbrew watch logs [--json]
440  logbrew watch issues [--json]
441  logbrew watch actions [--json]
442  logbrew watch --severity error,critical --json
443
444Aliases: tail, follow, and stream use the same live watch flow.
445Live watch uses a short-lived feed ticket and WebSocket stream.
446Transient disconnects reconnect with a fresh ticket and backoff.
447Server-side live filters are not sent yet; severity filtering is applied client-side.";
448
449/// Explain command help text.
450const EXPLAIN_HELP: &str = "\
451Usage:
452  logbrew explain issue <issue_id> [--json]
453  logbrew explain trace <trace_id> [--json]
454  logbrew explain <issue_id_or_trace_id> [--json]
455  logbrew issue <issue_id> explain [--json]
456  logbrew trace <trace_id> explain [--json]
457  logbrew <issue_id_or_trace_id> explain [--json]
458
459Fetches enough context for an AI agent to explain what happened.
460Pasted UUID/issue_* values are treated as issues; 32-hex/trace_* values are treated as traces.";
461
462/// Server-directed issue investigation help text.
463const INVESTIGATE_HELP: &str = "\
464Usage:
465  logbrew investigate issue <issue_id> [--json]
466
467Reads the issue first, then follows only its public trace-summary or related-log next action.
468The command is read-only and preserves issue scope in the directed request.
469JSON preserves the issue and exactly one directed result in a stable four-key envelope.";
470
471/// Apple native debug-artifact command help text.
472const NATIVE_DEBUG_ARTIFACTS_HELP: &str = "\
473Usage:
474  logbrew debug-artifacts upload <path> --project <project_id> --release <release> \
475                         --environment <environment> --service <service> \
476                         [--expect-image-uuid <uuid>]... [--dry-run] [--json]
477  logbrew debug-artifacts lookup --project <project_id> --release <release> \
478                         --environment <environment> --service <service> --image-uuid <uuid> \
479                         --architecture <arm64|arm64e|x86_64> [--json]
480
481Discovers and validates Apple dSYM, ZIP, or Mach-O debug objects locally, uploads every supported \
482exact identity, and verifies each identity with an authenticated lookup. Optional repeated \
483--expect-image-uuid values require an exact discovered UUID set for release automation. --dry-run \
484performs the same local validation without authentication or network access. Local paths and \
485filenames are never included in output or API metadata.";
486
487/// Set command help text.
488const SET_HELP: &str = "\
489Usage:
490  logbrew set issue <issue_id> unresolved [--json]
491  logbrew set issue <issue_id> resolved [--json]
492  logbrew set issue <issue_id> ignored [--json]
493  logbrew resolve <issue_id> [--json]
494  logbrew close <issue_id> [--json]
495  logbrew ignore <issue_id> [--json]
496  logbrew reopen <issue_id> [--json]
497  logbrew issue <issue_id> resolve [--json]
498  logbrew issue <issue_id> close [--json]
499  logbrew issue <issue_id> ignore [--json]
500  logbrew issue <issue_id> reopen [--json]
501  logbrew <issue_id> resolve [--json]
502  logbrew resolved <issue_id> [--json]
503  logbrew closed <issue_id> [--json]
504  logbrew ignored <issue_id> [--json]
505  logbrew open <issue_id> [--json]
506  logbrew unresolved <issue_id> [--json]
507
508Updates grouped issue status. Resolve/close map to resolved; ignore maps to ignored; reopen maps \
509                        to unresolved.
510Close is an alias for resolved.
511Issue-first, pasted-ID, and status-first aliases are useful after reading issue detail.
512Status values are case-insensitive.";
513
514/// Support-ticket workflow help text.
515const SUPPORT_HELP: &str = "\
516Usage:
517  logbrew support create --category <category> --title <title> --description <description> \
518                           [--project <project_id>] [--environment <environment>] \
519                           [--runtime <runtime>] [--framework <framework>] \
520                           [--sdk-package <package>] [--sdk-version <version>] \
521                           [--release <release>] [--trace-id <trace_id>] [--event-id <event_id>] \
522                           [--diagnostics] [--json]
523  logbrew support list [--project <project_id>] [--status <status>] [--source <source>] \
524                         [--category <category>] [--release <release>] [--limit 100] \
525                         [--pagination cursor] [--json]
526  logbrew support list [filters] --pagination cursor --cursor-time <RFC3339> \
527                         --cursor-id <ticket_id> [--json]
528  logbrew support show <ticket_id> [--json]
529  logbrew support context <ticket_id> [--json]
530  logbrew support reply <ticket_id> --context <text> --retry-key <key> [--diagnostics] [--json]
531  logbrew support close <ticket_id> [--json]
532  logbrew support reopen <ticket_id> [--json]
533
534Creates, reads, adds requested context to, closes, and reopens authenticated account support \
535                         tickets. Creation source is \
536                         always cli.
537Categories: sdk_install_failure, ingest_failure, auth_failure, project_setup, dashboard_issue, \
538                         docs_confusion, cli_issue, mobile_issue, billing_question, other.
539--diagnostics adds only binary, CLI version, operating system, and architecture. It never reads \
540                         arbitrary environment variables or files.
541Cursor continuations repeat --pagination cursor, all active filters, and the paired cursor from \
542                         next_cursor. JSON preserves the server response exactly.
543Context replies require a retry key. Reuse the key only when retrying the exact same context. \
544                         Chat, messages, and internal notes are not part of this command.";