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