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