deepctl 0.3.0__tar.gz → 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepctl
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Official Deepgram CLI for speech recognition and audio intelligence
5
5
  Author-email: Deepgram <devrel@deepgram.com>
6
6
  Maintainer-email: Deepgram <devrel@deepgram.com>
@@ -27,25 +27,25 @@ Description-Content-Type: text/markdown
27
27
  License-File: LICENSE
28
28
  Requires-Dist: click>=8.0.0
29
29
  Requires-Dist: deepgram-sdk<8,>=7.7.0
30
- Requires-Dist: deepctl-core>=0.2.16
31
- Requires-Dist: deepctl-cmd-login>=0.1.17
30
+ Requires-Dist: deepctl-core>=0.2.17
31
+ Requires-Dist: deepctl-cmd-login>=0.1.18
32
32
  Requires-Dist: deepctl-cmd-projects>=0.2.0
33
- Requires-Dist: deepctl-cmd-transcribe>=0.1.10
33
+ Requires-Dist: deepctl-cmd-transcribe>=0.1.12
34
34
  Requires-Dist: deepctl-cmd-usage>=0.2.0
35
35
  Requires-Dist: deepctl-cmd-mcp>=0.1.15
36
- Requires-Dist: deepctl-cmd-api>=0.0.1
37
- Requires-Dist: deepctl-cmd-debug>=0.1.10
38
- Requires-Dist: deepctl-cmd-debug-browser>=0.1.10
39
- Requires-Dist: deepctl-cmd-debug-network>=0.1.10
40
- Requires-Dist: deepctl-cmd-debug-audio>=0.1.10
41
- Requires-Dist: deepctl-cmd-debug-probe>=0.0.1
42
- Requires-Dist: deepctl-cmd-debug-toolkit>=0.0.1
43
- Requires-Dist: deepctl-cmd-ffprobe>=0.0.1
44
- Requires-Dist: deepctl-cmd-update>=0.2.6
45
- Requires-Dist: deepctl-cmd-plugin>=0.1.10
46
- Requires-Dist: deepctl-cmd-skills>=0.0.7
47
- Requires-Dist: deepctl-cmd-init>=0.0.1
48
- Requires-Dist: deepctl-cmd-models>=0.1.0
36
+ Requires-Dist: deepctl-cmd-api>=0.0.2
37
+ Requires-Dist: deepctl-cmd-debug>=0.1.12
38
+ Requires-Dist: deepctl-cmd-debug-browser>=0.1.12
39
+ Requires-Dist: deepctl-cmd-debug-network>=0.1.12
40
+ Requires-Dist: deepctl-cmd-debug-audio>=0.1.13
41
+ Requires-Dist: deepctl-cmd-debug-probe>=0.0.2
42
+ Requires-Dist: deepctl-cmd-debug-toolkit>=0.1.0
43
+ Requires-Dist: deepctl-cmd-ffprobe>=0.0.2
44
+ Requires-Dist: deepctl-cmd-update>=0.2.7
45
+ Requires-Dist: deepctl-cmd-plugin>=0.1.13
46
+ Requires-Dist: deepctl-cmd-skills>=0.0.8
47
+ Requires-Dist: deepctl-cmd-init>=0.0.4
48
+ Requires-Dist: deepctl-cmd-models>=0.1.1
49
49
  Requires-Dist: deepctl-cmd-speak>=0.0.4
50
50
  Requires-Dist: deepctl-cmd-keys>=0.1.0
51
51
  Requires-Dist: deepctl-cmd-read>=0.1.0
@@ -53,8 +53,8 @@ Requires-Dist: deepctl-cmd-listen>=0.0.14
53
53
  Requires-Dist: deepctl-cmd-requests>=0.1.0
54
54
  Requires-Dist: deepctl-cmd-billing>=0.1.0
55
55
  Requires-Dist: deepctl-cmd-members>=0.1.0
56
- Requires-Dist: deepctl-cmd-completion>=0.0.1
57
- Requires-Dist: deepctl-shared-utils>=0.1.10
56
+ Requires-Dist: deepctl-cmd-completion>=0.0.3
57
+ Requires-Dist: deepctl-shared-utils>=0.1.12
58
58
  Requires-Dist: deepctl-telemetry>=0.0.6
59
59
  Requires-Dist: pydantic>=2.0.0
60
60
  Requires-Dist: rich>=13.0.0
@@ -74,6 +74,7 @@ Requires-Dist: pytest-timeout<3,>=2.3.1; extra == "dev"
74
74
  Requires-Dist: responses>=0.23.0; extra == "dev"
75
75
  Requires-Dist: ruff>=0.8.0; extra == "dev"
76
76
  Requires-Dist: mypy>=1.0.0; extra == "dev"
77
+ Requires-Dist: packaging>=23.0; extra == "dev"
77
78
  Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
78
79
  Requires-Dist: types-requests>=2.31.0; extra == "dev"
79
80
  Requires-Dist: pre-commit>=3.0.0; extra == "dev"
@@ -116,8 +117,8 @@ intelligence, and project management directly into your terminal. Aliases:
116
117
  **macOS / Linux (Homebrew):**
117
118
 
118
119
  ```bash
119
- brew tap deepgram/tap
120
- brew install deepgram
120
+ # Install and trust only the Deepgram formula.
121
+ brew install deepgram/tap/deepgram
121
122
  ```
122
123
 
123
124
  Homebrew brings in `ffmpeg` and `portaudio` automatically — `dg listen --mic`, `dg debug probe`, and raw audio piping all work without further setup. To upgrade later: `brew upgrade deepgram`.
@@ -402,6 +403,24 @@ dg usage --last-week -o yaml
402
403
  When running in a non-TTY environment (pipes, CI, or AI coding tools), the CLI
403
404
  automatically switches to structured JSON output with plain-text status messages.
404
405
 
406
+ ### Exit codes
407
+
408
+ Since 0.3.0, `dg` exits non-zero when a command fails — branch on the exit
409
+ code, not on parsing output:
410
+
411
+ | Code | Meaning |
412
+ | --- | --- |
413
+ | `0` | Success |
414
+ | `1` | Error — a failed command, a crash, or a usage error (bad flag, unknown command) |
415
+ | `2` | Cancelled by the user (Ctrl-C, or declining a confirmation prompt) |
416
+
417
+ Note that `dg` reports `2` for an interrupt rather than the shell's
418
+ conventional `130`, so the code is the same whether the cancellation came from
419
+ Ctrl-C or from declining a prompt.
420
+
421
+ If a CI step relied on `dg` always exiting `0` (every command did, before
422
+ 0.3.0), it will now fail where it previously passed silently.
423
+
405
424
  ### Forcing non-interactive mode
406
425
 
407
426
  Three explicit ways to skip every prompt and run with defaults — useful from a
@@ -445,7 +464,10 @@ dg profiles --list # List profiles
445
464
  dg profiles --switch staging # Switch profile
446
465
  ```
447
466
 
448
- Output format on any command: `--output json|yaml|table|csv`
467
+ For structured output, use `--output json|yaml|table|csv` after leaf commands
468
+ that do not define their own output option, or before any command as a global
469
+ flag: `dg --output json <command>`. `dg speak --output FILE` writes audio to
470
+ `FILE`, so use `dg --output json speak ...` for Speak's structured output.
449
471
 
450
472
  ## Telemetry
451
473
 
@@ -33,8 +33,8 @@ intelligence, and project management directly into your terminal. Aliases:
33
33
  **macOS / Linux (Homebrew):**
34
34
 
35
35
  ```bash
36
- brew tap deepgram/tap
37
- brew install deepgram
36
+ # Install and trust only the Deepgram formula.
37
+ brew install deepgram/tap/deepgram
38
38
  ```
39
39
 
40
40
  Homebrew brings in `ffmpeg` and `portaudio` automatically — `dg listen --mic`, `dg debug probe`, and raw audio piping all work without further setup. To upgrade later: `brew upgrade deepgram`.
@@ -319,6 +319,24 @@ dg usage --last-week -o yaml
319
319
  When running in a non-TTY environment (pipes, CI, or AI coding tools), the CLI
320
320
  automatically switches to structured JSON output with plain-text status messages.
321
321
 
322
+ ### Exit codes
323
+
324
+ Since 0.3.0, `dg` exits non-zero when a command fails — branch on the exit
325
+ code, not on parsing output:
326
+
327
+ | Code | Meaning |
328
+ | --- | --- |
329
+ | `0` | Success |
330
+ | `1` | Error — a failed command, a crash, or a usage error (bad flag, unknown command) |
331
+ | `2` | Cancelled by the user (Ctrl-C, or declining a confirmation prompt) |
332
+
333
+ Note that `dg` reports `2` for an interrupt rather than the shell's
334
+ conventional `130`, so the code is the same whether the cancellation came from
335
+ Ctrl-C or from declining a prompt.
336
+
337
+ If a CI step relied on `dg` always exiting `0` (every command did, before
338
+ 0.3.0), it will now fail where it previously passed silently.
339
+
322
340
  ### Forcing non-interactive mode
323
341
 
324
342
  Three explicit ways to skip every prompt and run with defaults — useful from a
@@ -362,7 +380,10 @@ dg profiles --list # List profiles
362
380
  dg profiles --switch staging # Switch profile
363
381
  ```
364
382
 
365
- Output format on any command: `--output json|yaml|table|csv`
383
+ For structured output, use `--output json|yaml|table|csv` after leaf commands
384
+ that do not define their own output option, or before any command as a global
385
+ flag: `dg --output json <command>`. `dg speak --output FILE` writes audio to
386
+ `FILE`, so use `dg --output json speak ...` for Speak's structured output.
366
387
 
367
388
  ## Telemetry
368
389
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "deepctl"
7
- version = "0.3.0" # x-release-please-version
7
+ version = "0.3.1" # x-release-please-version
8
8
  description = "Official Deepgram CLI for speech recognition and audio intelligence"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -35,25 +35,25 @@ requires-python = ">=3.10"
35
35
  dependencies = [
36
36
  "click>=8.0.0",
37
37
  "deepgram-sdk>=7.7.0,<8",
38
- "deepctl-core>=0.2.16",
39
- "deepctl-cmd-login>=0.1.17",
38
+ "deepctl-core>=0.2.17",
39
+ "deepctl-cmd-login>=0.1.18",
40
40
  "deepctl-cmd-projects>=0.2.0",
41
- "deepctl-cmd-transcribe>=0.1.10",
41
+ "deepctl-cmd-transcribe>=0.1.12",
42
42
  "deepctl-cmd-usage>=0.2.0",
43
43
  "deepctl-cmd-mcp>=0.1.15",
44
- "deepctl-cmd-api>=0.0.1",
45
- "deepctl-cmd-debug>=0.1.10",
46
- "deepctl-cmd-debug-browser>=0.1.10",
47
- "deepctl-cmd-debug-network>=0.1.10",
48
- "deepctl-cmd-debug-audio>=0.1.10",
49
- "deepctl-cmd-debug-probe>=0.0.1",
50
- "deepctl-cmd-debug-toolkit>=0.0.1",
51
- "deepctl-cmd-ffprobe>=0.0.1",
52
- "deepctl-cmd-update>=0.2.6",
53
- "deepctl-cmd-plugin>=0.1.10",
54
- "deepctl-cmd-skills>=0.0.7",
55
- "deepctl-cmd-init>=0.0.1",
56
- "deepctl-cmd-models>=0.1.0",
44
+ "deepctl-cmd-api>=0.0.2",
45
+ "deepctl-cmd-debug>=0.1.12",
46
+ "deepctl-cmd-debug-browser>=0.1.12",
47
+ "deepctl-cmd-debug-network>=0.1.12",
48
+ "deepctl-cmd-debug-audio>=0.1.13",
49
+ "deepctl-cmd-debug-probe>=0.0.2",
50
+ "deepctl-cmd-debug-toolkit>=0.1.0",
51
+ "deepctl-cmd-ffprobe>=0.0.2",
52
+ "deepctl-cmd-update>=0.2.7",
53
+ "deepctl-cmd-plugin>=0.1.13",
54
+ "deepctl-cmd-skills>=0.0.8",
55
+ "deepctl-cmd-init>=0.0.4",
56
+ "deepctl-cmd-models>=0.1.1",
57
57
  "deepctl-cmd-speak>=0.0.4",
58
58
  "deepctl-cmd-keys>=0.1.0",
59
59
  "deepctl-cmd-read>=0.1.0",
@@ -61,8 +61,8 @@ dependencies = [
61
61
  "deepctl-cmd-requests>=0.1.0",
62
62
  "deepctl-cmd-billing>=0.1.0",
63
63
  "deepctl-cmd-members>=0.1.0",
64
- "deepctl-cmd-completion>=0.0.1",
65
- "deepctl-shared-utils>=0.1.10",
64
+ "deepctl-cmd-completion>=0.0.3",
65
+ "deepctl-shared-utils>=0.1.12",
66
66
  "deepctl-telemetry>=0.0.6",
67
67
  "pydantic>=2.0.0",
68
68
  "rich>=13.0.0",
@@ -87,6 +87,7 @@ dev = [
87
87
  # Code Quality
88
88
  "ruff>=0.8.0",
89
89
  "mypy>=1.0.0",
90
+ "packaging>=23.0",
90
91
  # Type Stubs
91
92
  "types-PyYAML>=6.0.0",
92
93
  "types-requests>=2.31.0",
@@ -128,7 +129,13 @@ include = ["deepctl*"]
128
129
  [tool.mypy]
129
130
  python_version = "3.10"
130
131
  strict = true
131
- files = "src/,packages/*/src"
132
+ files = "src/,packages/*/src,scripts/"
133
+
134
+ [[tool.mypy.overrides]]
135
+ module = ["tomli"]
136
+ # The pre-3.11 fallback for tomllib in scripts/. It is not installed, and
137
+ # mypy checks that branch because python_version is pinned to 3.10.
138
+ ignore_missing_imports = true
132
139
 
133
140
  [[tool.mypy.overrides]]
134
141
  module = "deepctl_cmd_mcp.*"
@@ -232,6 +239,10 @@ members = ["packages/*"]
232
239
  [dependency-groups]
233
240
  testing = [
234
241
  "pytest>=7.0.0",
242
+ # scripts/check_dependency_floors.py reads pyproject files; on 3.10 it
243
+ # falls back to tomli, and tests/unit/test_dependency_floors.py drives
244
+ # the real script on every version in the CI matrix.
245
+ "tomli>=2.0; python_version < '3.11'",
235
246
  "pytest-asyncio>=0.21.0",
236
247
  "pytest-cov>=4.0.0",
237
248
  "pytest-mock>=3.10.0",
@@ -244,6 +255,9 @@ dev = [
244
255
  # Code Quality
245
256
  "ruff>=0.8.0",
246
257
  "mypy>=1.0.0",
258
+ # PEP 440 comparisons in scripts/check_dependency_floors.py. Declared
259
+ # rather than leaned on as a transitive of build/twine.
260
+ "packaging>=23.0",
247
261
  # Type Stubs
248
262
  "types-pyyaml>=6.0.12.20250516",
249
263
  "types-requests>=2.32.4.20250611",
@@ -1,7 +1,7 @@
1
1
  """deepctl - Official command-line interface for Deepgram's speech
2
2
  recognition API."""
3
3
 
4
- __version__ = "0.3.0" # x-release-please-version
4
+ __version__ = "0.3.1" # x-release-please-version
5
5
  __author__ = "Deepgram"
6
6
  __email__ = "devrel@deepgram.com"
7
7
  __license__ = "MIT"
@@ -287,6 +287,38 @@ def _telemetry_transaction() -> Iterator[None]:
287
287
  yield
288
288
 
289
289
 
290
+ def _global_option_hint(message: str) -> str | None:
291
+ """Build a placement hint when a 'No such option' names a global option.
292
+
293
+ Global options belong before the subcommand (``dg -o json models``).
294
+ When one is placed after the subcommand instead (``dg models --profile
295
+ staging``), Click reports "No such option" with no explanation, which
296
+ reads as if the option does not exist at all. This looks the failing
297
+ option up on the root group and, when it is a global one, returns a
298
+ hint showing the working placement.
299
+ """
300
+ import re
301
+
302
+ match = re.search(r"[Nn]o such option:?\s*'?(--?[A-Za-z][\w-]*)'?", message)
303
+ if not match:
304
+ return None
305
+ token = match.group(1)
306
+
307
+ for param in cli.params:
308
+ opts = list(getattr(param, "opts", [])) + list(
309
+ getattr(param, "secondary_opts", [])
310
+ )
311
+ if token in opts:
312
+ takes_value = not getattr(param, "is_flag", False)
313
+ usage = f"{token} <value>" if takes_value else token
314
+ return (
315
+ f"[yellow]Hint: '{token}' is a global option and must come "
316
+ f"before the subcommand, for example: "
317
+ f"dg {usage} <command> ...[/yellow]"
318
+ )
319
+ return None
320
+
321
+
290
322
  def _safe_console_print(message: str) -> None:
291
323
  """Print a diagnostic to stderr, tolerating a closed/broken stream.
292
324
 
@@ -401,6 +433,17 @@ def main() -> None:
401
433
  # Abort, not KeyboardInterrupt. Both are user cancellation: exit 2.
402
434
  _safe_console_print("\n[yellow]Operation cancelled by user[/yellow]")
403
435
  sys.exit(2)
436
+ except click.UsageError as e:
437
+ # Keep the published exit-code contract (1 = error), but explain the
438
+ # one failure mode that reads as a lie: a *global* option placed
439
+ # after the subcommand, where Click says "No such option" about an
440
+ # option that very much exists.
441
+ message = e.format_message()
442
+ _safe_console_print(f"[red]Error: {message}[/red]")
443
+ hint = _global_option_hint(message)
444
+ if hint:
445
+ _safe_console_print(hint)
446
+ sys.exit(1)
404
447
  except Exception as e:
405
448
  _safe_console_print(f"[red]Error: {e}[/red]")
406
449
  sys.exit(1) # 1 = error; 2 is reserved for user interrupt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepctl
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Official Deepgram CLI for speech recognition and audio intelligence
5
5
  Author-email: Deepgram <devrel@deepgram.com>
6
6
  Maintainer-email: Deepgram <devrel@deepgram.com>
@@ -27,25 +27,25 @@ Description-Content-Type: text/markdown
27
27
  License-File: LICENSE
28
28
  Requires-Dist: click>=8.0.0
29
29
  Requires-Dist: deepgram-sdk<8,>=7.7.0
30
- Requires-Dist: deepctl-core>=0.2.16
31
- Requires-Dist: deepctl-cmd-login>=0.1.17
30
+ Requires-Dist: deepctl-core>=0.2.17
31
+ Requires-Dist: deepctl-cmd-login>=0.1.18
32
32
  Requires-Dist: deepctl-cmd-projects>=0.2.0
33
- Requires-Dist: deepctl-cmd-transcribe>=0.1.10
33
+ Requires-Dist: deepctl-cmd-transcribe>=0.1.12
34
34
  Requires-Dist: deepctl-cmd-usage>=0.2.0
35
35
  Requires-Dist: deepctl-cmd-mcp>=0.1.15
36
- Requires-Dist: deepctl-cmd-api>=0.0.1
37
- Requires-Dist: deepctl-cmd-debug>=0.1.10
38
- Requires-Dist: deepctl-cmd-debug-browser>=0.1.10
39
- Requires-Dist: deepctl-cmd-debug-network>=0.1.10
40
- Requires-Dist: deepctl-cmd-debug-audio>=0.1.10
41
- Requires-Dist: deepctl-cmd-debug-probe>=0.0.1
42
- Requires-Dist: deepctl-cmd-debug-toolkit>=0.0.1
43
- Requires-Dist: deepctl-cmd-ffprobe>=0.0.1
44
- Requires-Dist: deepctl-cmd-update>=0.2.6
45
- Requires-Dist: deepctl-cmd-plugin>=0.1.10
46
- Requires-Dist: deepctl-cmd-skills>=0.0.7
47
- Requires-Dist: deepctl-cmd-init>=0.0.1
48
- Requires-Dist: deepctl-cmd-models>=0.1.0
36
+ Requires-Dist: deepctl-cmd-api>=0.0.2
37
+ Requires-Dist: deepctl-cmd-debug>=0.1.12
38
+ Requires-Dist: deepctl-cmd-debug-browser>=0.1.12
39
+ Requires-Dist: deepctl-cmd-debug-network>=0.1.12
40
+ Requires-Dist: deepctl-cmd-debug-audio>=0.1.13
41
+ Requires-Dist: deepctl-cmd-debug-probe>=0.0.2
42
+ Requires-Dist: deepctl-cmd-debug-toolkit>=0.1.0
43
+ Requires-Dist: deepctl-cmd-ffprobe>=0.0.2
44
+ Requires-Dist: deepctl-cmd-update>=0.2.7
45
+ Requires-Dist: deepctl-cmd-plugin>=0.1.13
46
+ Requires-Dist: deepctl-cmd-skills>=0.0.8
47
+ Requires-Dist: deepctl-cmd-init>=0.0.4
48
+ Requires-Dist: deepctl-cmd-models>=0.1.1
49
49
  Requires-Dist: deepctl-cmd-speak>=0.0.4
50
50
  Requires-Dist: deepctl-cmd-keys>=0.1.0
51
51
  Requires-Dist: deepctl-cmd-read>=0.1.0
@@ -53,8 +53,8 @@ Requires-Dist: deepctl-cmd-listen>=0.0.14
53
53
  Requires-Dist: deepctl-cmd-requests>=0.1.0
54
54
  Requires-Dist: deepctl-cmd-billing>=0.1.0
55
55
  Requires-Dist: deepctl-cmd-members>=0.1.0
56
- Requires-Dist: deepctl-cmd-completion>=0.0.1
57
- Requires-Dist: deepctl-shared-utils>=0.1.10
56
+ Requires-Dist: deepctl-cmd-completion>=0.0.3
57
+ Requires-Dist: deepctl-shared-utils>=0.1.12
58
58
  Requires-Dist: deepctl-telemetry>=0.0.6
59
59
  Requires-Dist: pydantic>=2.0.0
60
60
  Requires-Dist: rich>=13.0.0
@@ -74,6 +74,7 @@ Requires-Dist: pytest-timeout<3,>=2.3.1; extra == "dev"
74
74
  Requires-Dist: responses>=0.23.0; extra == "dev"
75
75
  Requires-Dist: ruff>=0.8.0; extra == "dev"
76
76
  Requires-Dist: mypy>=1.0.0; extra == "dev"
77
+ Requires-Dist: packaging>=23.0; extra == "dev"
77
78
  Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
78
79
  Requires-Dist: types-requests>=2.31.0; extra == "dev"
79
80
  Requires-Dist: pre-commit>=3.0.0; extra == "dev"
@@ -116,8 +117,8 @@ intelligence, and project management directly into your terminal. Aliases:
116
117
  **macOS / Linux (Homebrew):**
117
118
 
118
119
  ```bash
119
- brew tap deepgram/tap
120
- brew install deepgram
120
+ # Install and trust only the Deepgram formula.
121
+ brew install deepgram/tap/deepgram
121
122
  ```
122
123
 
123
124
  Homebrew brings in `ffmpeg` and `portaudio` automatically — `dg listen --mic`, `dg debug probe`, and raw audio piping all work without further setup. To upgrade later: `brew upgrade deepgram`.
@@ -402,6 +403,24 @@ dg usage --last-week -o yaml
402
403
  When running in a non-TTY environment (pipes, CI, or AI coding tools), the CLI
403
404
  automatically switches to structured JSON output with plain-text status messages.
404
405
 
406
+ ### Exit codes
407
+
408
+ Since 0.3.0, `dg` exits non-zero when a command fails — branch on the exit
409
+ code, not on parsing output:
410
+
411
+ | Code | Meaning |
412
+ | --- | --- |
413
+ | `0` | Success |
414
+ | `1` | Error — a failed command, a crash, or a usage error (bad flag, unknown command) |
415
+ | `2` | Cancelled by the user (Ctrl-C, or declining a confirmation prompt) |
416
+
417
+ Note that `dg` reports `2` for an interrupt rather than the shell's
418
+ conventional `130`, so the code is the same whether the cancellation came from
419
+ Ctrl-C or from declining a prompt.
420
+
421
+ If a CI step relied on `dg` always exiting `0` (every command did, before
422
+ 0.3.0), it will now fail where it previously passed silently.
423
+
405
424
  ### Forcing non-interactive mode
406
425
 
407
426
  Three explicit ways to skip every prompt and run with defaults — useful from a
@@ -445,7 +464,10 @@ dg profiles --list # List profiles
445
464
  dg profiles --switch staging # Switch profile
446
465
  ```
447
466
 
448
- Output format on any command: `--output json|yaml|table|csv`
467
+ For structured output, use `--output json|yaml|table|csv` after leaf commands
468
+ that do not define their own output option, or before any command as a global
469
+ flag: `dg --output json <command>`. `dg speak --output FILE` writes audio to
470
+ `FILE`, so use `dg --output json speak ...` for Speak's structured output.
449
471
 
450
472
  ## Telemetry
451
473
 
@@ -1,24 +1,24 @@
1
1
  click>=8.0.0
2
2
  deepgram-sdk<8,>=7.7.0
3
- deepctl-core>=0.2.16
4
- deepctl-cmd-login>=0.1.17
3
+ deepctl-core>=0.2.17
4
+ deepctl-cmd-login>=0.1.18
5
5
  deepctl-cmd-projects>=0.2.0
6
- deepctl-cmd-transcribe>=0.1.10
6
+ deepctl-cmd-transcribe>=0.1.12
7
7
  deepctl-cmd-usage>=0.2.0
8
8
  deepctl-cmd-mcp>=0.1.15
9
- deepctl-cmd-api>=0.0.1
10
- deepctl-cmd-debug>=0.1.10
11
- deepctl-cmd-debug-browser>=0.1.10
12
- deepctl-cmd-debug-network>=0.1.10
13
- deepctl-cmd-debug-audio>=0.1.10
14
- deepctl-cmd-debug-probe>=0.0.1
15
- deepctl-cmd-debug-toolkit>=0.0.1
16
- deepctl-cmd-ffprobe>=0.0.1
17
- deepctl-cmd-update>=0.2.6
18
- deepctl-cmd-plugin>=0.1.10
19
- deepctl-cmd-skills>=0.0.7
20
- deepctl-cmd-init>=0.0.1
21
- deepctl-cmd-models>=0.1.0
9
+ deepctl-cmd-api>=0.0.2
10
+ deepctl-cmd-debug>=0.1.12
11
+ deepctl-cmd-debug-browser>=0.1.12
12
+ deepctl-cmd-debug-network>=0.1.12
13
+ deepctl-cmd-debug-audio>=0.1.13
14
+ deepctl-cmd-debug-probe>=0.0.2
15
+ deepctl-cmd-debug-toolkit>=0.1.0
16
+ deepctl-cmd-ffprobe>=0.0.2
17
+ deepctl-cmd-update>=0.2.7
18
+ deepctl-cmd-plugin>=0.1.13
19
+ deepctl-cmd-skills>=0.0.8
20
+ deepctl-cmd-init>=0.0.4
21
+ deepctl-cmd-models>=0.1.1
22
22
  deepctl-cmd-speak>=0.0.4
23
23
  deepctl-cmd-keys>=0.1.0
24
24
  deepctl-cmd-read>=0.1.0
@@ -26,8 +26,8 @@ deepctl-cmd-listen>=0.0.14
26
26
  deepctl-cmd-requests>=0.1.0
27
27
  deepctl-cmd-billing>=0.1.0
28
28
  deepctl-cmd-members>=0.1.0
29
- deepctl-cmd-completion>=0.0.1
30
- deepctl-shared-utils>=0.1.10
29
+ deepctl-cmd-completion>=0.0.3
30
+ deepctl-shared-utils>=0.1.12
31
31
  deepctl-telemetry>=0.0.6
32
32
  pydantic>=2.0.0
33
33
  rich>=13.0.0
@@ -48,6 +48,7 @@ pytest-timeout<3,>=2.3.1
48
48
  responses>=0.23.0
49
49
  ruff>=0.8.0
50
50
  mypy>=1.0.0
51
+ packaging>=23.0
51
52
  types-PyYAML>=6.0.0
52
53
  types-requests>=2.31.0
53
54
  pre-commit>=3.0.0
File without changes
File without changes