@boxes-dev/dvb-runtime 1.0.957 → 1.0.958

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.
package/dist/bin/dvb.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a55a831a-e9eb-5e0c-9e31-0c4bceb58a84")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8cb3e81f-1a45-5309-aca4-748b6f610d13")}catch(e){}}();
4
4
  import { createRequire as __dvbCreateRequire } from "node:module";
5
5
  import { dirname as __dvbDirname } from "node:path";
6
6
  import { fileURLToPath as __dvbFileURLToPath } from "node:url";
@@ -101145,8 +101145,8 @@ var init_otel = __esm({
101145
101145
  return trimmed && trimmed.length > 0 ? trimmed : void 0;
101146
101146
  };
101147
101147
  readBuildMetadata = () => {
101148
- const rawPackageVersion = "1.0.957";
101149
- const rawGitSha = "bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
101148
+ const rawPackageVersion = "1.0.958";
101149
+ const rawGitSha = "1436ae0e44cbd7325937bad75a389dc22a69ba80";
101150
101150
  const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
101151
101151
  const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
101152
101152
  return { packageVersion, gitSha };
@@ -133552,9 +133552,9 @@ var init_sentry = __esm({
133552
133552
  uncaughtExceptionMonitorInstalled = false;
133553
133553
  currentDevboxSentryUser = null;
133554
133554
  readBuildMetadata2 = () => {
133555
- const rawPackageVersion = "1.0.957";
133556
- const rawGitSha = "bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
133557
- const rawSentryRelease = "boxes-dev-dvb@1.0.957+bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
133555
+ const rawPackageVersion = "1.0.958";
133556
+ const rawGitSha = "1436ae0e44cbd7325937bad75a389dc22a69ba80";
133557
+ const rawSentryRelease = "boxes-dev-dvb@1.0.958+1436ae0e44cbd7325937bad75a389dc22a69ba80";
133558
133558
  const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
133559
133559
  const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
133560
133560
  const sentryRelease = typeof rawSentryRelease === "string" ? rawSentryRelease : void 0;
@@ -138717,7 +138717,7 @@ var init_packageVersion = __esm({
138717
138717
  return path17.join(process.cwd(), "dvb");
138718
138718
  };
138719
138719
  readEmbeddedPackageVersion = () => {
138720
- const raw = "1.0.957";
138720
+ const raw = "1.0.958";
138721
138721
  return trimVersion(raw);
138722
138722
  };
138723
138723
  readNearestPackageMetadata = (basePath) => {
@@ -204404,7 +204404,7 @@ var formatThreadBackendLabel, formatThreadBackendConnectingLabel, formatThreadBa
204404
204404
  var init_threadBackendLabels = __esm({
204405
204405
  "../../../../shared/threadRuntime/threadBackendLabels.ts"() {
204406
204406
  "use strict";
204407
- formatThreadBackendLabel = (backend) => backend === "codex" ? "Codex" : "Claude";
204407
+ formatThreadBackendLabel = (backend) => backend === "codex" ? "Codex" : backend === "claude_code" ? "Claude Code CLI" : "Claude Code";
204408
204408
  formatThreadBackendConnectingLabel = (backend) => `Connecting ${formatThreadBackendLabel(backend)}`;
204409
204409
  formatThreadBackendDefaultTitle = (backend) => `${formatThreadBackendLabel(backend)} thread`;
204410
204410
  }
@@ -231930,7 +231930,7 @@ var init_actionPresentation = __esm({
231930
231930
  switch (outcome.kind) {
231931
231931
  case "detached":
231932
231932
  return {
231933
- message: "Claude is still open in terminal. Press Enter to reattach.",
231933
+ message: backend === "claude_code" ? "Claude is still running. Press Enter to reattach its terminal." : "Claude is still open in terminal. Press Enter to reattach.",
231934
231934
  tone: "neutral"
231935
231935
  };
231936
231936
  case "terminal_exit":
@@ -286497,6 +286497,10 @@ var init_controller = __esm({
286497
286497
  }
286498
286498
  let target = null;
286499
286499
  if (selected.kind === "thread") {
286500
+ if (selected.target.backend === "claude_code") {
286501
+ this.setPreviewUnavailableForClaudeCode();
286502
+ return;
286503
+ }
286500
286504
  target = {
286501
286505
  selectedKey: selected.key,
286502
286506
  primaryInstanceId: selected.target.primaryInstanceId,
@@ -286515,6 +286519,10 @@ var init_controller = __esm({
286515
286519
  );
286516
286520
  return;
286517
286521
  }
286522
+ if (anchor.backend === "claude_code") {
286523
+ this.setPreviewUnavailableForClaudeCode();
286524
+ return;
286525
+ }
286518
286526
  target = {
286519
286527
  selectedKey: selected.key,
286520
286528
  primaryInstanceId: anchor.primaryInstanceId,
@@ -286602,6 +286610,11 @@ var init_controller = __esm({
286602
286610
  confirmPreviewRendered(args) {
286603
286611
  this.peekController.confirmRendered(args);
286604
286612
  }
286613
+ setPreviewUnavailableForClaudeCode() {
286614
+ this.setPreviewControlStatus(
286615
+ "Preview isn\u2019t available for Claude Code threads. Press Enter to open this thread."
286616
+ );
286617
+ }
286605
286618
  setPreviewControlStatus(message) {
286606
286619
  this.selectedActionStatusContext = null;
286607
286620
  this.snapshot = {
@@ -286886,7 +286899,7 @@ var init_controller = __esm({
286886
286899
  selected,
286887
286900
  suspendAction ?? (async (callback) => await callback())
286888
286901
  );
286889
- } else if (selected.kind === "thread" && selected.actions.enter.backend === "claude") {
286902
+ } else if (selected.kind === "thread" && (selected.actions.enter.backend === "claude" || selected.actions.enter.backend === "claude_code")) {
286890
286903
  await this.activateClaudeThread(
286891
286904
  selected,
286892
286905
  suspendAction ?? (async (callback) => await callback()),
@@ -287329,7 +287342,7 @@ var init_controller = __esm({
287329
287342
  }
287330
287343
  async activateClaudeThread(selected, suspendAction, confirmation) {
287331
287344
  const action = selected.actions.enter;
287332
- if (action.kind !== "native_thread" || action.backend !== "claude" || !this.actionDependencies.openClaude) {
287345
+ if (action.kind !== "native_thread" || action.backend !== "claude" && action.backend !== "claude_code" || !this.actionDependencies.openClaude) {
287333
287346
  return;
287334
287347
  }
287335
287348
  const claudeBackend = action.backend;
@@ -287339,7 +287352,7 @@ var init_controller = __esm({
287339
287352
  ...this.snapshot,
287340
287353
  claudeConfirmation: null,
287341
287354
  selectedActionPending: true,
287342
- selectedActionPendingLabel: confirmation !== null && confirmationWarning === "desktop_turn_active" ? "Interrupting Claude in the desktop app\u2026" : "Opening Claude in terminal\u2026",
287355
+ selectedActionPendingLabel: claudeBackend === "claude_code" ? "Opening terminal\u2026" : confirmation !== null && confirmationWarning === "desktop_turn_active" ? "Interrupting Claude in the desktop app\u2026" : "Opening Claude in terminal\u2026",
287343
287356
  selectedActionStatusMessage: null,
287344
287357
  selectedActionStatusTone: "neutral"
287345
287358
  };
@@ -292616,7 +292629,7 @@ var init_workspaceProtocol = __esm({
292616
292629
  };
292617
292630
  }
292618
292631
  if (kind === "claude") {
292619
- if (record3.backend !== "claude") {
292632
+ if (record3.backend !== "claude" && record3.backend !== "claude_code") {
292620
292633
  throw new Error("Invalid workspace Claude backend.");
292621
292634
  }
292622
292635
  return {
@@ -292789,7 +292802,7 @@ var init_workspaceActionClient = __esm({
292789
292802
  case "codex_empty":
292790
292803
  return "Codex";
292791
292804
  case "claude":
292792
- return "Claude";
292805
+ return action.backend === "claude_code" ? "Claude Code" : "Claude";
292793
292806
  case "claude_empty":
292794
292807
  return "Claude";
292795
292808
  case "shell":
@@ -357351,4 +357364,4 @@ react/cjs/react-jsx-runtime.development.js:
357351
357364
  *)
357352
357365
  */
357353
357366
 
357354
- //# debugId=a55a831a-e9eb-5e0c-9e31-0c4bceb58a84
357367
+ //# debugId=8cb3e81f-1a45-5309-aca4-748b6f610d13
package/dist/bin/dvbd.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9fe1a110-cbff-5659-8dbf-ea5f546fb817")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9693a639-b909-5aca-a5d7-5c8663346d95")}catch(e){}}();
4
4
  import { createRequire as __dvbCreateRequire } from "node:module";
5
5
  import { dirname as __dvbDirname } from "node:path";
6
6
  import { fileURLToPath as __dvbFileURLToPath } from "node:url";
@@ -96328,8 +96328,8 @@ var init_otel = __esm({
96328
96328
  return trimmed && trimmed.length > 0 ? trimmed : void 0;
96329
96329
  };
96330
96330
  readBuildMetadata = () => {
96331
- const rawPackageVersion = "1.0.957";
96332
- const rawGitSha = "bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
96331
+ const rawPackageVersion = "1.0.958";
96332
+ const rawGitSha = "1436ae0e44cbd7325937bad75a389dc22a69ba80";
96333
96333
  const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
96334
96334
  const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
96335
96335
  return { packageVersion, gitSha };
@@ -128624,9 +128624,9 @@ var init_sentry = __esm({
128624
128624
  uncaughtExceptionMonitorInstalled = false;
128625
128625
  currentDevboxSentryUser = null;
128626
128626
  readBuildMetadata2 = () => {
128627
- const rawPackageVersion = "1.0.957";
128628
- const rawGitSha = "bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
128629
- const rawSentryRelease = "boxes-dev-dvb@1.0.957+bd2eee580a498b70adca3fcd0e8c9d25eb248aaf";
128627
+ const rawPackageVersion = "1.0.958";
128628
+ const rawGitSha = "1436ae0e44cbd7325937bad75a389dc22a69ba80";
128629
+ const rawSentryRelease = "boxes-dev-dvb@1.0.958+1436ae0e44cbd7325937bad75a389dc22a69ba80";
128630
128630
  const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
128631
128631
  const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
128632
128632
  const sentryRelease = typeof rawSentryRelease === "string" ? rawSentryRelease : void 0;
@@ -130818,7 +130818,7 @@ var init_packageVersion = __esm({
130818
130818
  return path8.join(process.cwd(), "dvb");
130819
130819
  };
130820
130820
  readEmbeddedPackageVersion = () => {
130821
- const raw = "1.0.957";
130821
+ const raw = "1.0.958";
130822
130822
  return trimVersion(raw);
130823
130823
  };
130824
130824
  readNearestPackageMetadata = (basePath) => {
@@ -144013,4 +144013,4 @@ long/umd/index.js:
144013
144013
  *)
144014
144014
  */
144015
144015
 
144016
- //# debugId=9fe1a110-cbff-5659-8dbf-ea5f546fb817
144016
+ //# debugId=9693a639-b909-5aca-a5d7-5c8663346d95
@@ -199,6 +199,9 @@ another thread:
199
199
  a time. Moving it between the desktop app and the terminal asks first; the
200
200
  desktop app can continue showing progress, interrupt the terminal turn, or
201
201
  take control again.
202
+ - A Claude Code CLI thread reuses its existing persistent terminal. Moving it
203
+ to another surface disconnects the prior terminal view without restarting
204
+ Claude.
202
205
 
203
206
  In Codex, press `Ctrl+D` with an empty composer to return to the switchboard
204
207
  without interrupting a running turn. Press `Esc` to interrupt the current turn
@@ -226,7 +229,9 @@ complete key guide.
226
229
  Press Space on a Codex or Claude row to preview recent saved messages without
227
230
  waking its machine, attaching to its terminal, or moving input ownership. The
228
231
  preview clears unread only after the exact ready content is rendered. Loading,
229
- unavailable, and stale content do not clear it.
232
+ unavailable, and stale content do not clear it. Claude Code CLI preview is
233
+ deferred; Space explains that it is unavailable and Enter still reattaches the
234
+ persistent terminal normally.
230
235
 
231
236
  Use `p` to pin or unpin an eligible Template-box thread or devbox anchor, `r`
232
237
  to rename a thread, and `x` to archive or restore it. On an archived
@@ -260,8 +265,8 @@ draft or keep a non-blank draft; while waiting for `Ctrl+O`, `Esc` cancels only
260
265
  the automatic open and leaves the agent running.
261
266
 
262
267
  CLI-created Claude threads use a persistent Claude terminal but remain ordinary
263
- Claude threads in the desktop app. They do not use a separate conversation
264
- type. The desktop app can observe their progress and use the usual
268
+ Claude threads in the desktop app. They do not become separate Claude Code CLI
269
+ threads. The desktop app can observe their progress and use the usual
265
270
  interrupt-and-transfer flow when control needs to move between surfaces. They
266
271
  use the same autonomous permission mode as Claude threads started from the
267
272
  desktop app.
@@ -30,6 +30,10 @@ authority, and an unassociated box receives no targets.
30
30
 
31
31
  ## Current Box Role
32
32
 
33
+ Every managed agent, terminal, and child process receives `BOXES_DEVBOX=1` on
34
+ both Template boxes and ordinary devboxes. Use this presence flag when a tool
35
+ or skill only needs to know that it is running in a boxes.dev environment.
36
+
33
37
  An on-box agent can read whether it is running on the project's Template box or
34
38
  an ordinary devbox without contacting or waking another machine:
35
39
 
@@ -86,7 +86,8 @@ it cannot retry safely instead of risking a duplicate prompt.
86
86
  Space shows a compact read-only preview of recent saved Codex or Claude
87
87
  messages. Preview does not wake the machine, connect to the agent, or move
88
88
  Claude input ownership. Unread clears only after the exact ready attention
89
- event renders.
89
+ event renders. Claude Code CLI preview is deferred, but Enter can still
90
+ reattach its persistent terminal.
90
91
 
91
92
  The switchboard can pin or unpin eligible Template-box threads and devbox
92
93
  anchors with `p`, rename with `r`, and archive or restore with `x`. Restoring a
@@ -270,7 +271,8 @@ For eligible new Codex and Claude Code devbox drafts, typing can begin preparing
270
271
  the devbox and agent in the background. If the first prompt is sent before that
271
272
  preparation finishes, the startup area shows `Preparing devbox` while the same
272
273
  work completes. If the devbox and agent are already prepared, the prompt
273
- proceeds directly without that wait.
274
+ proceeds directly without that wait. This does not apply to Claude Code CLI
275
+ threads.
274
276
 
275
277
  On mobile, you can return to the thread list immediately after tapping Send.
276
278
  boxes.dev keeps the first prompt and its attachments while devbox and agent
@@ -416,31 +418,31 @@ catalog install and lets the turn proceed; Not now declines it. Plugin requests
416
418
  use the scope-aware actions described under **Plugins**. Pending requests
417
419
  remain visible after returning to or reloading the thread until resolved.
418
420
 
419
- ## Claude Controls
421
+ ## Claude Code Controls
420
422
 
421
- Claude threads expose model and reasoning controls when available. Claude also
422
- supports slash commands when the thread surface has command lookup
423
+ Claude Code threads expose model and reasoning controls when available. Claude
424
+ Code also supports slash commands when the thread surface has command lookup
423
425
  enabled. On desktop, `/model` opens the model picker, and `/model <model>`
424
426
  switches directly to a known model. Older supported model generations appear
425
427
  under **More models** in the picker.
426
428
 
427
- An idle Claude chat can continue in a separate chat on the same Template
429
+ An idle Claude Code chat can continue in a separate chat on the same Template
428
430
  box or devbox. Use exact `/fork` to continue from the current tip, or use the
429
431
  Split icon beneath a completed desktop response to keep history only through
430
432
  that response. Its tooltip reads **Continue in new chat**. Mobile exposes only
431
433
  exact `/fork`. The new chat shares the same files and working directory; this
432
434
  does not create or rewind a devbox, worktree, or snapshot. The original chat is
433
435
  unchanged, and both chats can continue independently. These controls appear
434
- only for managed Claude chats whose connected runtime supports chat
435
- forking.
436
+ only for managed Claude Code chats whose connected runtime supports chat
437
+ forking; Claude Code CLI threads do not expose them.
436
438
 
437
- Model and reasoning selections belong to the Claude thread. A new
439
+ Model and reasoning selections belong to the Claude Code thread. A new
438
440
  selection remains associated with that thread while it is applied, and the
439
441
  confirmed settings follow the thread when it is reopened or resumed on desktop
440
442
  or mobile. Changing one thread does not change another existing thread; the
441
443
  last-used selection can still become the starting default for a new thread.
442
444
 
443
- On a connected managed Claude thread, the desktop and mobile composers
445
+ On a connected managed Claude Code thread, the desktop and mobile composers
444
446
  also offer these modes when the runtime supports switching them:
445
447
 
446
448
  - **Full-access** is the standard boxes.dev mode and the default for every new
@@ -460,7 +462,7 @@ choice, so leaving Plan restores the prior mode. While a mode change is being
460
462
  confirmed, the selector and Send action stay disabled so a prompt cannot run
461
463
  under the previous mode.
462
464
 
463
- Claude can switch a Fable thread to Opus when Fable's safeguards decline
465
+ Claude Code can switch a Fable thread to Opus when Fable's safeguards decline
464
466
  part of the conversation and Claude retries it with a fallback model. The
465
467
  transcript shows a **Switched to Opus 4.8** notice with a link to Anthropic's
466
468
  explanation, and the model picker then shows Opus 4.8 as the thread's current
@@ -656,7 +658,7 @@ conversation, status, commands, tool output, diffs, attachments, and images, so
656
658
  review the conversation for source, credentials, or other sensitive content
657
659
  before sharing it. GUI and Terminal views share the same ordinary conversation,
658
660
  so the selected view does not change sharing eligibility. Drafts, setup threads,
659
- and conversations that have not started cannot be shared.
661
+ and legacy Claude CLI threads cannot be shared.
660
662
 
661
663
  Under **All threads**, sharing a thread that is not private takes one click:
662
664
  boxes.dev creates the link and copies it without asking for confirmation,
@@ -91,7 +91,7 @@ then retry setup.
91
91
 
92
92
  ## Agent Auth Problems
93
93
 
94
- If a Codex or Claude thread cannot start or continue because auth is
94
+ If a Codex or Claude Code thread cannot start or continue because auth is
95
95
  missing or expired, open **Configure agents** from the desktop app and reconnect
96
96
  the affected agent.
97
97
 
@@ -111,7 +111,7 @@ is shared through boxes.dev, so the same auth can be applied to all of your
111
111
  Template boxes and devboxes. To repair Codex auth from a terminal, run
112
112
  `dvb setup --agents` on your laptop.
113
113
 
114
- Codex can be connected through ChatGPT login or an API key. Claude can be
114
+ Codex can be connected through ChatGPT login or an API key. Claude Code can be
115
115
  connected through Claude login or an API key. After reconnecting, retry the
116
116
  thread or start a new one.
117
117
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boxes-dev/dvb-runtime",
3
- "version": "1.0.957",
3
+ "version": "1.0.958",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "imports": {
@@ -77,5 +77,5 @@
77
77
  "e2b": "^2.18.0",
78
78
  "ink-testing-library": "^4.0.0"
79
79
  },
80
- "devboxReleasedAt": "2026-08-26T22:05:52Z"
80
+ "devboxReleasedAt": "2026-08-26T22:43:53Z"
81
81
  }