deepcell-cli 0.6.2__tar.gz → 0.6.3__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.
Files changed (109) hide show
  1. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/PKG-INFO +4 -4
  2. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/README.md +3 -3
  3. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/pyproject.toml +5 -7
  4. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/__init__.py +1 -1
  5. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/client.py +10 -1
  6. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/config.py +1 -1
  7. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/mcp_server.py +1 -1
  8. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/oauth_provider.py +12 -4
  9. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli.egg-info/PKG-INFO +4 -4
  10. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_config.py +1 -1
  11. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_mcp_auth.py +11 -11
  12. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_mcp_server.py +1 -1
  13. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/setup.cfg +0 -0
  14. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/__main__.py +0 -0
  15. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/_findings.py +0 -0
  16. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/capabilities.py +0 -0
  17. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/capability-contract.json +0 -0
  18. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/__init__.py +0 -0
  19. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/_batch_input.py +0 -0
  20. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/_datatypes.py +0 -0
  21. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/_negative_args.py +0 -0
  22. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/_swapped_args.py +0 -0
  23. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/_version_display.py +0 -0
  24. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/_write_opts.py +0 -0
  25. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/account.py +0 -0
  26. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/auth.py +0 -0
  27. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/changes.py +0 -0
  28. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/deck.py +0 -0
  29. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/defs.py +0 -0
  30. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/describe.py +0 -0
  31. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/doc.py +0 -0
  32. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/doctor.py +0 -0
  33. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/download.py +0 -0
  34. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/edit.py +0 -0
  35. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/example.py +0 -0
  36. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/export.py +0 -0
  37. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/export_docx.py +0 -0
  38. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/export_pdf.py +0 -0
  39. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/export_pptx.py +0 -0
  40. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/files.py +0 -0
  41. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/grep.py +0 -0
  42. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/guide.py +0 -0
  43. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/help_cmd.py +0 -0
  44. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/impact.py +0 -0
  45. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/import_cmd.py +0 -0
  46. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/ingest.py +0 -0
  47. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/merge.py +0 -0
  48. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/query.py +0 -0
  49. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/reasoning.py +0 -0
  50. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/ref.py +0 -0
  51. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/replace.py +0 -0
  52. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/rules.py +0 -0
  53. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/share.py +0 -0
  54. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/sync.py +0 -0
  55. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/upgrade.py +0 -0
  56. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/variant.py +0 -0
  57. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/version.py +0 -0
  58. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/viewer.py +0 -0
  59. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/commands/workspace.py +0 -0
  60. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/context.py +0 -0
  61. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/errors.py +0 -0
  62. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/logging_setup.py +0 -0
  63. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/main.py +0 -0
  64. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/output.py +0 -0
  65. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/revision.py +0 -0
  66. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/stages.py +0 -0
  67. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/surface.py +0 -0
  68. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/sync_state.py +0 -0
  69. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/upgrade_check.py +0 -0
  70. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli/xml_replace.py +0 -0
  71. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli.egg-info/SOURCES.txt +0 -0
  72. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli.egg-info/dependency_links.txt +0 -0
  73. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli.egg-info/entry_points.txt +0 -0
  74. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli.egg-info/requires.txt +0 -0
  75. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/src/deepcell_cli.egg-info/top_level.txt +0 -0
  76. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_anon.py +0 -0
  77. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_claim_strength.py +0 -0
  78. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_client.py +0 -0
  79. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_client_surface_header.py +0 -0
  80. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_conflict_reason.py +0 -0
  81. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_deck_help_contract.py +0 -0
  82. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_deck_op_shape.py +0 -0
  83. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_docs_catalog.py +0 -0
  84. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_doctor.py +0 -0
  85. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_download.py +0 -0
  86. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_findings_provenance.py +0 -0
  87. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_guide_eval_a4_a7.py +0 -0
  88. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_guide_flag_drift.py +0 -0
  89. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_help_flag_drift.py +0 -0
  90. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_impact_commands.py +0 -0
  91. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_ingest_command.py +0 -0
  92. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_logging_setup.py +0 -0
  93. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_op_reachability.py +0 -0
  94. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_openapi_route_parity.py +0 -0
  95. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_output_export_notes.py +0 -0
  96. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_output_keeps_the_answer.py +0 -0
  97. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_reasoning_commands.py +0 -0
  98. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_reasoning_diff_command.py +0 -0
  99. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_ref_flag_drift.py +0 -0
  100. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_round6_signal_regressions.py +0 -0
  101. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_search_reach.py +0 -0
  102. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_shed_retry.py +0 -0
  103. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_stages.py +0 -0
  104. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_surface_examples.py +0 -0
  105. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_surface_walker.py +0 -0
  106. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_upgrade_check.py +0 -0
  107. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_version_parity.py +0 -0
  108. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_write_message_rule.py +0 -0
  109. {deepcell_cli-0.6.2 → deepcell_cli-0.6.3}/tests/test_xml_replace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepcell-cli
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: Build and revise .deepcell documents from a terminal — the reasoning, the calculations, the document and the deck, with the links between them
5
5
  Author-email: DeepCell <hello@deepcell.net>
6
6
  License-Expression: MIT
@@ -36,12 +36,12 @@ Command-line interface for **DeepCell** — a versionable `.deepcell` document t
36
36
 
37
37
  ```bash
38
38
  # macOS / Linux
39
- curl -LsSf https://beta.deepcell.net/install.sh | sh
39
+ curl -LsSf https://deepcell.net/install.sh | sh
40
40
  ```
41
41
 
42
42
  ```powershell
43
43
  # Windows (PowerShell)
44
- irm https://beta.deepcell.net/install.ps1 | iex
44
+ irm https://deepcell.net/install.ps1 | iex
45
45
  ```
46
46
 
47
47
  ```bash
@@ -251,7 +251,7 @@ Interactive and sync commands (`login`, `clone`, `push`, …) are blocked inside
251
251
 
252
252
  | Variable | Purpose | Default |
253
253
  |----------|---------|---------|
254
- | `DEEPCELL_API_URL` | API endpoint | `https://beta.deepcell.net/api/jingwei` |
254
+ | `DEEPCELL_API_URL` | API endpoint | `https://deepcell.net/api/jingwei` |
255
255
  | `DEEPCELL_PROJECT` | Override active project | _(none)_ |
256
256
  | `DEEPCELL_ACCESS_TOKEN` | Auth token for CI/headless use | _(none)_ |
257
257
  | `DEEPCELL_CONFIG` | Alternate `config.json` path (session-scoped) | `~/.deepcell/config.json` |
@@ -4,12 +4,12 @@ Command-line interface for **DeepCell** — a versionable `.deepcell` document t
4
4
 
5
5
  ```bash
6
6
  # macOS / Linux
7
- curl -LsSf https://beta.deepcell.net/install.sh | sh
7
+ curl -LsSf https://deepcell.net/install.sh | sh
8
8
  ```
9
9
 
10
10
  ```powershell
11
11
  # Windows (PowerShell)
12
- irm https://beta.deepcell.net/install.ps1 | iex
12
+ irm https://deepcell.net/install.ps1 | iex
13
13
  ```
14
14
 
15
15
  ```bash
@@ -219,7 +219,7 @@ Interactive and sync commands (`login`, `clone`, `push`, …) are blocked inside
219
219
 
220
220
  | Variable | Purpose | Default |
221
221
  |----------|---------|---------|
222
- | `DEEPCELL_API_URL` | API endpoint | `https://beta.deepcell.net/api/jingwei` |
222
+ | `DEEPCELL_API_URL` | API endpoint | `https://deepcell.net/api/jingwei` |
223
223
  | `DEEPCELL_PROJECT` | Override active project | _(none)_ |
224
224
  | `DEEPCELL_ACCESS_TOKEN` | Auth token for CI/headless use | _(none)_ |
225
225
  | `DEEPCELL_CONFIG` | Alternate `config.json` path (session-scoped) | `~/.deepcell/config.json` |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "deepcell-cli"
3
- version = "0.6.2"
3
+ version = "0.6.3"
4
4
  description = "Build and revise .deepcell documents from a terminal — the reasoning, the calculations, the document and the deck, with the links between them"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -42,12 +42,10 @@ deepcell-mcp = "deepcell_cli.mcp_server:main"
42
42
  # deliberately no Repository or Issues entry: the CLI is developed in a private
43
43
  # repository, and a link to one nobody can open is worse than no link.
44
44
  #
45
- # deepcell.net is the canonical host the site is moving to shortly; it does not
46
- # resolve yet, so these two links go live when the domain does. That is a
47
- # deliberate trade for not stamping the outgoing beta host into the metadata of
48
- # a release that cannot be re-uploaded. The installer URLs are NOT part of it —
49
- # they stay on beta.deepcell.net, because a curl that 404s is a broken install
50
- # today rather than a link that is briefly grey.
45
+ # deepcell.net is the canonical origin and serves the site. beta.deepcell.net
46
+ # answers the same deployment and is deliberately left un-redirected, because
47
+ # every CLI already installed has it baked in as its API default — but it is
48
+ # not what anything new should hand out.
51
49
  [project.urls]
52
50
  Homepage = "https://deepcell.net"
53
51
  Documentation = "https://deepcell.net/product/cli"
@@ -9,4 +9,4 @@ same thing, and a third is stamped into ``docs/cli-surface.json`` by
9
9
  reports a version it is not, and skipping the regen lands a red build.
10
10
  """
11
11
 
12
- __version__ = "0.6.2"
12
+ __version__ = "0.6.3"
@@ -111,7 +111,16 @@ class DeepCellClient:
111
111
  # which build their own per-request headers and would otherwise be the
112
112
  # two calls a new user makes before anything else. httpx merges these
113
113
  # with per-request headers rather than replacing them.
114
- self._http = httpx.Client(timeout=_TIMEOUT, headers=client_headers())
114
+ # `follow_redirects` because httpx defaults it to False, and an installed
115
+ # CLI outlives the hostname it was built against: every copy already in
116
+ # the wild has `https://beta.deepcell.net/api/jingwei` baked in as its
117
+ # default. The day that host answers a 301 instead of serving, a client
118
+ # that does not follow redirects reports the 3xx as a hard failure and
119
+ # every one of those installs breaks at once — which is why beta is kept
120
+ # serving rather than redirected. This makes the next move survivable.
121
+ self._http = httpx.Client(
122
+ timeout=_TIMEOUT, headers=client_headers(), follow_redirects=True
123
+ )
115
124
 
116
125
  # ── Helpers ─────────────────────────────────────────────
117
126
 
@@ -19,7 +19,7 @@ _CREDS_FILE = _DIR / "credentials.json"
19
19
 
20
20
  # ── Defaults ────────────────────────────────────────────────
21
21
 
22
- DEFAULT_API_URL = "https://beta.deepcell.net/api/jingwei"
22
+ DEFAULT_API_URL = "https://deepcell.net/api/jingwei"
23
23
  DEFAULT_FORMAT = "plain"
24
24
 
25
25
  # ── Environment overrides ───────────────────────────────────
@@ -387,7 +387,7 @@ def _config_path_for_token(token: str) -> str:
387
387
  base config's ``api_url`` on creation: ``get_api_url()`` falls back to
388
388
  DEFAULT_API_URL (the public beta) when the config it reads has no
389
389
  ``api_url``, so handing a caller an empty config silently repointed a
390
- self-hosted deployment at beta.deepcell.net. ``active_workspace`` is
390
+ self-hosted deployment at deepcell.net. ``active_workspace`` is
391
391
  deliberately NOT inherited — isolating it is the whole point of this file.
392
392
  """
393
393
  import hashlib
@@ -275,7 +275,9 @@ class DeepCellOAuthProvider(
275
275
  Returns ``None`` when the code is unknown, expired, or still pending.
276
276
  """
277
277
  try:
278
- async with httpx.AsyncClient(timeout=10, headers=client_headers("mcp")) as client:
278
+ async with httpx.AsyncClient(
279
+ timeout=10, headers=client_headers("mcp"), follow_redirects=True
280
+ ) as client:
279
281
  resp = await client.post(
280
282
  f"{self.api_url}/auth/device/token",
281
283
  json={"device_code": device_code},
@@ -436,7 +438,9 @@ class DeepCellOAuthProvider(
436
438
  headers["Authorization"] = f"Bearer {jingwei_api_key}"
437
439
 
438
440
  try:
439
- async with httpx.AsyncClient(timeout=10, headers=client_headers("mcp")) as client:
441
+ async with httpx.AsyncClient(
442
+ timeout=10, headers=client_headers("mcp"), follow_redirects=True
443
+ ) as client:
440
444
  resp = await client.post(
441
445
  f"{self.api_url}/auth/api-keys/verify",
442
446
  json={"key": token},
@@ -514,7 +518,9 @@ class DeepCellOAuthProvider(
514
518
  # so they simply expire (15 min).
515
519
  if isinstance(token, DeepCellRefreshToken):
516
520
  try:
517
- async with httpx.AsyncClient(timeout=10, headers=client_headers("mcp")) as client:
521
+ async with httpx.AsyncClient(
522
+ timeout=10, headers=client_headers("mcp"), follow_redirects=True
523
+ ) as client:
518
524
  await client.post(
519
525
  f"{self.api_url}/auth/revoke-token",
520
526
  json={"refresh_token": token.token},
@@ -547,7 +553,9 @@ class DeepCellOAuthProvider(
547
553
  grant may still be valid, so the client should retry and keep it.
548
554
  """
549
555
  try:
550
- async with httpx.AsyncClient(timeout=10, headers=client_headers("mcp")) as client:
556
+ async with httpx.AsyncClient(
557
+ timeout=10, headers=client_headers("mcp"), follow_redirects=True
558
+ ) as client:
551
559
  resp = await client.post(
552
560
  f"{self.api_url}/auth/refresh",
553
561
  json={"refresh_token": raw_refresh_token},
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepcell-cli
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: Build and revise .deepcell documents from a terminal — the reasoning, the calculations, the document and the deck, with the links between them
5
5
  Author-email: DeepCell <hello@deepcell.net>
6
6
  License-Expression: MIT
@@ -36,12 +36,12 @@ Command-line interface for **DeepCell** — a versionable `.deepcell` document t
36
36
 
37
37
  ```bash
38
38
  # macOS / Linux
39
- curl -LsSf https://beta.deepcell.net/install.sh | sh
39
+ curl -LsSf https://deepcell.net/install.sh | sh
40
40
  ```
41
41
 
42
42
  ```powershell
43
43
  # Windows (PowerShell)
44
- irm https://beta.deepcell.net/install.ps1 | iex
44
+ irm https://deepcell.net/install.ps1 | iex
45
45
  ```
46
46
 
47
47
  ```bash
@@ -251,7 +251,7 @@ Interactive and sync commands (`login`, `clone`, `push`, …) are blocked inside
251
251
 
252
252
  | Variable | Purpose | Default |
253
253
  |----------|---------|---------|
254
- | `DEEPCELL_API_URL` | API endpoint | `https://beta.deepcell.net/api/jingwei` |
254
+ | `DEEPCELL_API_URL` | API endpoint | `https://deepcell.net/api/jingwei` |
255
255
  | `DEEPCELL_PROJECT` | Override active project | _(none)_ |
256
256
  | `DEEPCELL_ACCESS_TOKEN` | Auth token for CI/headless use | _(none)_ |
257
257
  | `DEEPCELL_CONFIG` | Alternate `config.json` path (session-scoped) | `~/.deepcell/config.json` |
@@ -87,7 +87,7 @@ def test_clear_credentials(tmp_config):
87
87
 
88
88
 
89
89
  def test_api_url_default(tmp_config):
90
- assert get_api_url() == "https://beta.deepcell.net/api/jingwei"
90
+ assert get_api_url() == "https://deepcell.net/api/jingwei"
91
91
 
92
92
 
93
93
  def test_api_url_env(tmp_config, monkeypatch):
@@ -156,41 +156,41 @@ class TestBuildServerOAuthUrls:
156
156
  def test_base_url_strips_path(self):
157
157
  from deepcell_cli.mcp_server import _build_server
158
158
 
159
- srv = _build_server(oauth_url="https://beta.deepcell.net/mcp")
159
+ srv = _build_server(oauth_url="https://deepcell.net/mcp")
160
160
  # AnyHttpUrl may add trailing slash to bare hosts
161
161
  issuer = str(srv.settings.auth.issuer_url).rstrip("/")
162
- assert issuer == "https://beta.deepcell.net"
162
+ assert issuer == "https://deepcell.net"
163
163
 
164
164
  def test_resource_url_keeps_path(self):
165
165
  from deepcell_cli.mcp_server import _build_server
166
166
 
167
- srv = _build_server(oauth_url="https://beta.deepcell.net/mcp")
167
+ srv = _build_server(oauth_url="https://deepcell.net/mcp")
168
168
  resource = str(srv.settings.auth.resource_server_url).rstrip("/")
169
- assert resource == "https://beta.deepcell.net/mcp"
169
+ assert resource == "https://deepcell.net/mcp"
170
170
 
171
171
  def test_no_path_leaves_both_equal(self):
172
172
  from deepcell_cli.mcp_server import _build_server
173
173
 
174
- srv = _build_server(oauth_url="https://beta.deepcell.net")
174
+ srv = _build_server(oauth_url="https://deepcell.net")
175
175
  issuer = str(srv.settings.auth.issuer_url).rstrip("/")
176
176
  resource = str(srv.settings.auth.resource_server_url).rstrip("/")
177
- assert issuer == "https://beta.deepcell.net"
178
- assert resource == "https://beta.deepcell.net"
177
+ assert issuer == "https://deepcell.net"
178
+ assert resource == "https://deepcell.net"
179
179
 
180
180
  def test_provider_server_url_is_base(self):
181
181
  """The OAuth provider's server_url (the issuer identity) must be the base URL."""
182
182
  from deepcell_cli.mcp_server import _build_server
183
183
 
184
- srv = _build_server(oauth_url="https://beta.deepcell.net/mcp")
184
+ srv = _build_server(oauth_url="https://deepcell.net/mcp")
185
185
  provider = srv._auth_server_provider
186
- assert provider.server_url == "https://beta.deepcell.net"
186
+ assert provider.server_url == "https://deepcell.net"
187
187
 
188
188
  def test_frontend_url_defaults_to_the_oauth_origin(self):
189
189
  """nginx serves the consent page from the same origin it proxies /mcp on."""
190
190
  from deepcell_cli.mcp_server import _build_server
191
191
 
192
- srv = _build_server(oauth_url="https://beta.deepcell.net/mcp")
193
- assert srv._auth_server_provider.frontend_url == "https://beta.deepcell.net"
192
+ srv = _build_server(oauth_url="https://deepcell.net/mcp")
193
+ assert srv._auth_server_provider.frontend_url == "https://deepcell.net"
194
194
 
195
195
  def test_frontend_url_env_override(self, monkeypatch):
196
196
  from deepcell_cli.mcp_server import _build_server
@@ -755,7 +755,7 @@ class TestPerCallerConfigPreservesDeploymentSettings:
755
755
  > DEFAULT_API_URL (the public beta). Handing an authenticated caller a
756
756
  fresh, empty config file therefore made a self-hosted deployment — whose
757
757
  api_url lives in ~/.deepcell/config.json, written by dev.sh — fall through
758
- to beta.deepcell.net for every OAuth request.
758
+ to deepcell.net for every OAuth request.
759
759
  """
760
760
 
761
761
  def test_session_config_inherits_api_url_from_the_base_config(
File without changes