@agentdocumentformat/cli 0.8.3 → 0.8.5

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 (129) hide show
  1. package/README.md +55 -4
  2. package/dist/adf.mjs +16 -13
  3. package/dist/chunks/{App-UHLJRFZJ.mjs → App-XOPHZTGN.mjs} +336 -296
  4. package/dist/chunks/{auth-manager-TBNKCJ45.mjs → auth-manager-2YHTYI3C.mjs} +2 -1
  5. package/dist/chunks/{build-QF5W473T.mjs → build-BFOCXM5S.mjs} +1 -1
  6. package/dist/chunks/{chunk-RHBGCOS3.mjs → chunk-22ZGZFOV.mjs} +5 -16
  7. package/dist/chunks/chunk-26RK7T5L.mjs +20 -0
  8. package/dist/chunks/{chunk-D7A77SNL.mjs → chunk-3FWPIWYM.mjs} +1 -1
  9. package/dist/chunks/chunk-4T745GJA.mjs +431 -0
  10. package/dist/chunks/{chunk-WPT3FAFX.mjs → chunk-7ADDKFT5.mjs} +3 -30
  11. package/dist/chunks/chunk-A53XYNJL.mjs +26 -0
  12. package/dist/chunks/{chunk-MZRXFWPQ.mjs → chunk-AN6USKYQ.mjs} +40 -8
  13. package/dist/chunks/{chunk-2Z7X3UUR.mjs → chunk-DHO5Z6HP.mjs} +14 -12
  14. package/dist/chunks/{chunk-F5ELW46V.mjs → chunk-GJYMGPH4.mjs} +1 -0
  15. package/dist/chunks/chunk-HONGRUAE.mjs +175 -0
  16. package/dist/chunks/{chunk-KCIRFUZH.mjs → chunk-IHARCBZH.mjs} +10 -3
  17. package/dist/chunks/{chunk-AEAJDCVK.mjs → chunk-IM5JKLXO.mjs} +1 -1
  18. package/dist/chunks/chunk-J2N63ZUD.mjs +12 -0
  19. package/dist/chunks/{chunk-FUQRYTGX.mjs → chunk-JK6K2BMV.mjs} +9 -35
  20. package/dist/chunks/{chunk-75DC5EWN.mjs → chunk-KBXC5EHK.mjs} +1 -0
  21. package/dist/chunks/chunk-NRTRTR7C.mjs +43 -0
  22. package/dist/chunks/{chunk-BS3USVEA.mjs → chunk-P4G5ZEBI.mjs} +1 -1
  23. package/dist/chunks/{chunk-E7LC6SHP.mjs → chunk-RIAB37IS.mjs} +4 -2
  24. package/dist/chunks/{chunk-LVF2DRBR.mjs → chunk-TBMQOM7Y.mjs} +247 -610
  25. package/dist/chunks/{chunk-SOSPQPEN.mjs → chunk-TDRQG5UO.mjs} +1 -162
  26. package/dist/chunks/{chunk-OHTB4UW4.mjs → chunk-TPA2ITKV.mjs} +32 -18
  27. package/dist/chunks/{chunk-BHY7QDCM.mjs → chunk-UBWWGUMU.mjs} +1 -0
  28. package/dist/chunks/{chunk-3AT7IIP7.mjs → chunk-WZ6S3SQP.mjs} +1 -1
  29. package/dist/chunks/chunk-X6R32YVE.mjs +43 -0
  30. package/dist/chunks/chunk-XJWGENZ5.mjs +5903 -0
  31. package/dist/chunks/{chunk-F3WSCAJD.mjs → chunk-XP4U4A2W.mjs} +1 -1
  32. package/dist/chunks/chunk-XS46KYYY.mjs +31 -0
  33. package/dist/chunks/{chunk-HBOFZRUS.mjs → chunk-XZQVDY3U.mjs} +9 -1
  34. package/dist/chunks/chunk-ZECGH3LT.mjs +88 -0
  35. package/dist/chunks/{claude-subscription-EB4LAAVV.mjs → claude-subscription-X5EVR3Q4.mjs} +4 -3
  36. package/dist/chunks/{cli-UVIJAGRZ.mjs → cli-JPRYEY4J.mjs} +22 -7
  37. package/dist/chunks/{commands-KOMPXJZS.mjs → commands-TZW2FSXG.mjs} +5 -2
  38. package/dist/chunks/context-AZOIJOUG.mjs +5933 -0
  39. package/dist/chunks/{daemon-YHD7PUQI.mjs → daemon-YRG2QUF4.mjs} +3362 -6724
  40. package/dist/chunks/{daemon-control-MKN7G5M3.mjs → daemon-control-U4OGCAAJ.mjs} +4 -4
  41. package/dist/chunks/{devtools-H7CI2ZVG.mjs → devtools-AUZWFIPL.mjs} +1 -1
  42. package/dist/chunks/firewall-service-7RGJN4LD.mjs +163 -0
  43. package/dist/chunks/{open-3OR6WT4T.mjs → open-T3VGLWGF.mjs} +6 -5
  44. package/dist/chunks/{pipeline-executor-DRYEEFDR.mjs → pipeline-executor-MHRI7ODL.mjs} +6 -3
  45. package/dist/chunks/{remote-access-cli-GLEEP7DI.mjs → remote-access-cli-EFVCXFOY.mjs} +22 -6
  46. package/dist/chunks/{store-D2WLXEY2.mjs → store-37YHXFJ6.mjs} +4 -3
  47. package/dist/chunks/{tui-ZEI2NAQV.mjs → tui-NJKGFAKU.mjs} +12 -11
  48. package/dist/chunks/web-F4XHDGUX.mjs +149 -0
  49. package/dist/chunks/{whatsapp-YJFFVN4Q.mjs → whatsapp-J7PX7TKT.mjs} +1 -1
  50. package/package.json +4 -3
  51. package/web/assets/EditorPanel-YXnanvaL.js +161 -0
  52. package/web/assets/MeshGraphView-BZV40eAE.css +1 -0
  53. package/web/assets/MeshGraphView-ChgwUT3O.js +23 -0
  54. package/web/assets/SettingsPage-BTu2-Yon.js +6 -0
  55. package/web/assets/agent-window-DlJbRHzy.js +3 -0
  56. package/web/assets/agent.store-CGzsE0VA.js +1 -0
  57. package/web/assets/app.store-hw-ZYpyz.js +1 -0
  58. package/web/assets/core-DVezgdzc.js +12 -0
  59. package/web/assets/css-Z72CF80r.js +1 -0
  60. package/web/assets/diff-D97Zzqfu.js +1 -0
  61. package/web/assets/document.store-BcN3UW-e.js +1 -0
  62. package/web/assets/edit-recovery-uWM2umPk.js +3 -0
  63. package/web/assets/engine-javascript-CuxHA8oH.js +141 -0
  64. package/web/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
  65. package/web/assets/github-light-DAi9KRSo.js +1 -0
  66. package/web/assets/go-C27-OAKa.js +1 -0
  67. package/web/assets/html-BlS82ilI.js +1 -0
  68. package/web/assets/index-B0BKR-7b.js +1 -0
  69. package/web/assets/index-Ba28S-D0.js +1 -0
  70. package/web/assets/index-BxmMf4oH.js +2 -0
  71. package/web/assets/index-BxrG4na5.js +1 -0
  72. package/web/assets/index-C0ujp8ua.js +1 -0
  73. package/web/assets/index-CBCcou8F.js +13 -0
  74. package/web/assets/index-CuTaWSEs.css +1 -0
  75. package/web/assets/index-Cuc6TCV0.js +1 -0
  76. package/web/assets/index-DlQ8IXY2.js +3 -0
  77. package/web/assets/index-Dms-d0wP.js +1 -0
  78. package/web/assets/index-LwIi-F1W.js +11 -0
  79. package/web/assets/index-mW7p_CTU.js +6 -0
  80. package/web/assets/inter-tight-cyrillic-ext-wght-italic-BJqtfpQe.woff2 +0 -0
  81. package/web/assets/inter-tight-cyrillic-ext-wght-normal-okcGN4Nq.woff2 +0 -0
  82. package/web/assets/inter-tight-cyrillic-wght-italic-HmhN1gQv.woff2 +0 -0
  83. package/web/assets/inter-tight-cyrillic-wght-normal-BS41q_Tv.woff2 +0 -0
  84. package/web/assets/inter-tight-greek-ext-wght-italic-B_3RbJza.woff2 +0 -0
  85. package/web/assets/inter-tight-greek-ext-wght-normal-DQgQPNk4.woff2 +0 -0
  86. package/web/assets/inter-tight-greek-wght-italic-Bb1BGCmL.woff2 +0 -0
  87. package/web/assets/inter-tight-greek-wght-normal-sS1B39LI.woff2 +0 -0
  88. package/web/assets/inter-tight-latin-ext-wght-italic-DYqsmiDd.woff2 +0 -0
  89. package/web/assets/inter-tight-latin-ext-wght-normal-B4u9PlvR.woff2 +0 -0
  90. package/web/assets/inter-tight-latin-wght-italic-DiXukCDG.woff2 +0 -0
  91. package/web/assets/inter-tight-latin-wght-normal-DX-nOvPD.woff2 +0 -0
  92. package/web/assets/inter-tight-vietnamese-wght-italic-CiVF0Juh.woff2 +0 -0
  93. package/web/assets/inter-tight-vietnamese-wght-normal-TKKdAiBA.woff2 +0 -0
  94. package/web/assets/javascript-wDzz0qaB.js +1 -0
  95. package/web/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  96. package/web/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  97. package/web/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  98. package/web/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  99. package/web/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  100. package/web/assets/json-Cp-IABpG.js +1 -0
  101. package/web/assets/jsx-g9-lgVsj.js +1 -0
  102. package/web/assets/main-CR7cfmOT.js +319 -0
  103. package/web/assets/main-Zf3qnQYd.css +1 -0
  104. package/web/assets/markdown-Cvjx9yec.js +1 -0
  105. package/web/assets/message-queue.store-BMjJTJTP.js +2 -0
  106. package/web/assets/module-RjUF93sV.js +716 -0
  107. package/web/assets/native-48B9X9Wg.js +1 -0
  108. package/web/assets/orbital-render.worker-BovOTauk.js +1 -0
  109. package/web/assets/python-B6aJPvgy.js +1 -0
  110. package/web/assets/react-wKFncLeZ.js +1 -0
  111. package/web/assets/rust-DPvrY3IQ.js +1 -0
  112. package/web/assets/shellscript-Yzrsuije.js +1 -0
  113. package/web/assets/sql-DkvoVjww.js +1 -0
  114. package/web/assets/stix-two-text-cyrillic-wght-italic-BzL1BdzR.woff2 +0 -0
  115. package/web/assets/stix-two-text-cyrillic-wght-normal-CcrOj1MU.woff2 +0 -0
  116. package/web/assets/stix-two-text-greek-wght-italic-glgrbyRu.woff2 +0 -0
  117. package/web/assets/stix-two-text-greek-wght-normal-DAdwyhkq.woff2 +0 -0
  118. package/web/assets/stix-two-text-latin-ext-wght-italic--XhV508b.woff2 +0 -0
  119. package/web/assets/stix-two-text-latin-ext-wght-normal-BUpo8gM0.woff2 +0 -0
  120. package/web/assets/stix-two-text-latin-wght-italic-BDl6bBME.woff2 +0 -0
  121. package/web/assets/stix-two-text-latin-wght-normal-BTZaHlTl.woff2 +0 -0
  122. package/web/assets/stix-two-text-vietnamese-wght-italic-B1jFRJrJ.woff2 +0 -0
  123. package/web/assets/stix-two-text-vietnamese-wght-normal-CfS0RdBA.woff2 +0 -0
  124. package/web/assets/tsx-COt5Ahok.js +1 -0
  125. package/web/assets/typescript-BPQ3VLAy.js +1 -0
  126. package/web/assets/window-kind-35FHmfEB.js +1 -0
  127. package/web/assets/with-selector-CBB0rjuB.js +1 -0
  128. package/web/assets/yaml-Buea-lGh.js +1 -0
  129. package/web/index.html +15 -0
@@ -21,7 +21,7 @@ import {
21
21
  getCommand,
22
22
  notifyToolCallObservers,
23
23
  shellReadFile
24
- } from "./chunk-LVF2DRBR.mjs";
24
+ } from "./chunk-TBMQOM7Y.mjs";
25
25
 
26
26
  // src/main/tools/shell/executor/pipeline-executor.ts
27
27
  function vfsPath(p) {
@@ -0,0 +1,31 @@
1
+ import { createRequire as __adfCreateRequire } from 'node:module';
2
+ import { fileURLToPath as __adfFileURLToPath } from 'node:url';
3
+ import { dirname as __adfDirname } from 'node:path';
4
+ const require = __adfCreateRequire(import.meta.url);
5
+ const __filename = __adfFileURLToPath(import.meta.url);
6
+ const __dirname = __adfDirname(__filename);
7
+ import {
8
+ __export
9
+ } from "./chunk-M2RX3S2T.mjs";
10
+
11
+ // src/shared/types/resource-revision.types.ts
12
+ var resource_revision_types_exports = {};
13
+ __export(resource_revision_types_exports, {
14
+ describeWriter: () => describeWriter
15
+ });
16
+ function describeWriter(writer) {
17
+ if (!writer) return "someone else";
18
+ switch (writer.kind) {
19
+ case "agent":
20
+ return "the agent";
21
+ case "cli":
22
+ return "the CLI or another API client";
23
+ case "client":
24
+ return writer.client === "studio" ? "another Studio window" : writer.client === "tui" ? "the terminal app" : `another client (${writer.client})`;
25
+ }
26
+ }
27
+
28
+ export {
29
+ describeWriter,
30
+ resource_revision_types_exports
31
+ };
@@ -4,6 +4,11 @@ import { dirname as __adfDirname } from 'node:path';
4
4
  const require = __adfCreateRequire(import.meta.url);
5
5
  const __filename = __adfFileURLToPath(import.meta.url);
6
6
  const __dirname = __adfDirname(__filename);
7
+ import {
8
+ assertSafeBrotliRuntime,
9
+ brotliRuntimeVerdict,
10
+ refusalMessage
11
+ } from "./chunk-ZECGH3LT.mjs";
7
12
  import {
8
13
  external_exports
9
14
  } from "./chunk-ZJKXHM4Q.mjs";
@@ -388,6 +393,7 @@ function pinnedRequest(url, method, headers, body, signal, guard) {
388
393
  }
389
394
  function pinnedFetch(guard, opts = {}) {
390
395
  return (async (input, init) => {
396
+ assertSafeBrotliRuntime();
391
397
  let policy = typeof guard == "function" ? guard() : guard, request = new Request(input, init?.body != null ? { ...init, duplex: "half" } : init), signal = request.signal, stopIfAborted = () => {
392
398
  if (signal.aborted) throw abortReason(signal);
393
399
  };
@@ -459,7 +465,9 @@ async function readCapped(response, maxBytes) {
459
465
  return Buffer.concat(chunks);
460
466
  }
461
467
  async function guardedFetch(url, options) {
462
- let { maxBytes, timeoutMs } = options, maxRedirects = options.maxRedirects ?? MAX_FETCH_REDIRECTS, daemonPort = daemonGuardPort(), current;
468
+ let { maxBytes, timeoutMs } = options, maxRedirects = options.maxRedirects ?? MAX_FETCH_REDIRECTS, runtime = brotliRuntimeVerdict();
469
+ if (!runtime.safe) return { error: refusalMessage(runtime) };
470
+ let daemonPort = daemonGuardPort(), current;
463
471
  try {
464
472
  current = new URL(url).toString();
465
473
  } catch {
@@ -0,0 +1,88 @@
1
+ import { createRequire as __adfCreateRequire } from 'node:module';
2
+ import { fileURLToPath as __adfFileURLToPath } from 'node:url';
3
+ import { dirname as __adfDirname } from 'node:path';
4
+ const require = __adfCreateRequire(import.meta.url);
5
+ const __filename = __adfFileURLToPath(import.meta.url);
6
+ const __dirname = __adfDirname(__filename);
7
+ import {
8
+ compareVersions
9
+ } from "./chunk-26RK7T5L.mjs";
10
+ import {
11
+ __require
12
+ } from "./chunk-M2RX3S2T.mjs";
13
+
14
+ // src/main/utils/brotli-runtime-guard.ts
15
+ import { constants as zlibConstants } from "node:zlib";
16
+ var SAFE_NODE_RANGE = "^22.23.4 || ^24.22.1 || ^26.12.1", NODE_FLOORS = {
17
+ 22: "22.23.4",
18
+ 24: "24.22.1",
19
+ 26: "26.12.1"
20
+ }, LAST_TESTED_NODE_MAJOR = 26, ELECTRON_FLOOR = "42.0.0", CHROMIUM_FLOOR = "148.0.7751.0", BLOCK_SWITCH_ERRNO = -17, NODE_REMEDY = `Install Node.js 22.23.4+, 24.22.1+ or 26.12.1+ (${SAFE_NODE_RANGE}) from https://nodejs.org and run adf again.`, ELECTRON_REMEDY = "Update ADF Studio to the latest release; from source, run `npm ci` so node_modules has the locked Electron.";
21
+ function parseVersion(text) {
22
+ let m = /^v?((\d+)\.\d+\.\d+)(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$/.exec(text ?? "");
23
+ return m ? { v: m[1], major: Number(m[2]), pre: m[3] !== void 0 } : null;
24
+ }
25
+ function atLeast(a, floor) {
26
+ let d = compareVersions(a.v, floor);
27
+ return d > 0 || d === 0 && !a.pre;
28
+ }
29
+ function chromiumAtLeastFloor(text) {
30
+ return /^\d+\.\d+\.\d+\.\d+$/.test(text ?? "") && compareVersions(text, CHROMIUM_FLOOR) >= 0;
31
+ }
32
+ function evaluateBrotliRuntime(facts) {
33
+ let { versions } = facts;
34
+ if (versions.electron !== void 0) {
35
+ let runtime2 = `Electron ${versions.electron} (Chromium ${versions.chrome ?? "unknown"})`, electron = parseVersion(versions.electron);
36
+ return !electron || electron.pre || !atLeast(electron, ELECTRON_FLOOR) || !chromiumAtLeastFloor(versions.chrome) ? { safe: !1, runtime: runtime2, reason: `its Chromium Brotli decoder is not one verified to have the CVE-2026-111497 fix (needs a stable Electron ${ELECTRON_FLOOR}+ on Chromium ${CHROMIUM_FLOOR}+)`, remedy: ELECTRON_REMEDY } : { safe: !0, runtime: runtime2 };
37
+ }
38
+ if (versions.bun !== void 0 || versions.deno !== void 0)
39
+ return { safe: !1, runtime: versions.bun !== void 0 ? `Bun ${versions.bun}` : `Deno ${versions.deno}`, reason: "its Brotli decoder has not been verified against CVE-2026-111497", remedy: NODE_REMEDY };
40
+ let runtime = `Node.js ${versions.node ?? "unknown"}`, node = parseVersion(versions.node);
41
+ if (!node) return { safe: !1, runtime, reason: "its version could not be read", remedy: NODE_REMEDY };
42
+ if (node.pre) return { safe: !1, runtime, reason: "it is a prerelease build, which is not verified against CVE-2026-111497", remedy: NODE_REMEDY };
43
+ let { major } = node;
44
+ if (major > LAST_TESTED_NODE_MAJOR)
45
+ return { safe: !1, runtime, reason: `ADF is not tested on Node.js ${major}.x yet`, remedy: NODE_REMEDY };
46
+ let floor = NODE_FLOORS[major];
47
+ if (!floor || !atLeast(node, floor)) {
48
+ let why = floor ? `the Brotli decoder in Node.js ${major}.x is fixed from ${floor} on` : `Node.js ${major}.x never received the fix`;
49
+ return { safe: !1, runtime, reason: `it is vulnerable to CVE-2026-111497 (Brotli decoder out-of-bounds write): ${why}`, remedy: NODE_REMEDY };
50
+ }
51
+ return facts.blockSwitchErrno !== BLOCK_SWITCH_ERRNO ? { safe: !1, runtime, reason: "its zlib lacks the fixed Brotli decoder (no BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH), so it is not an official fixed build", remedy: NODE_REMEDY } : { safe: !0, runtime };
52
+ }
53
+ function currentFacts() {
54
+ let constants = zlibConstants;
55
+ return { versions: process.versions, blockSwitchErrno: constants.BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH };
56
+ }
57
+ function refusalMessage(verdict) {
58
+ return `ADF refuses to run on ${verdict.runtime}: ${verdict.reason}. ${verdict.remedy}`;
59
+ }
60
+ var UnsafeBrotliRuntimeError = class extends Error {
61
+ code = "ADF_UNSAFE_BROTLI_RUNTIME";
62
+ }, cached;
63
+ function brotliRuntimeVerdict() {
64
+ return cached ??= evaluateBrotliRuntime(currentFacts());
65
+ }
66
+ function assertSafeBrotliRuntime() {
67
+ let verdict = brotliRuntimeVerdict();
68
+ if (!verdict.safe) throw new UnsafeBrotliRuntimeError(refusalMessage(verdict));
69
+ }
70
+ function exitIfUnsafeBrotliRuntime() {
71
+ let verdict = brotliRuntimeVerdict();
72
+ if (verdict.safe) return;
73
+ let message = refusalMessage(verdict);
74
+ if (process.stderr.write(`${message}
75
+ `), process.versions.electron !== void 0 && process.type === "browser")
76
+ try {
77
+ __require("electron").dialog?.showErrorBox("ADF Studio cannot start", message);
78
+ } catch {
79
+ }
80
+ process.exit(1);
81
+ }
82
+
83
+ export {
84
+ refusalMessage,
85
+ brotliRuntimeVerdict,
86
+ assertSafeBrotliRuntime,
87
+ exitIfUnsafeBrotliRuntime
88
+ };
@@ -8,15 +8,16 @@ import {
8
8
  CLAUDE_SUBSCRIPTION_MODELS,
9
9
  createClaudeSubscriptionProvider,
10
10
  listClaudeSubscriptionModels
11
- } from "./chunk-KCIRFUZH.mjs";
12
- import "./chunk-E7LC6SHP.mjs";
11
+ } from "./chunk-IHARCBZH.mjs";
12
+ import "./chunk-RIAB37IS.mjs";
13
13
  import "./chunk-NZ7JTHEO.mjs";
14
14
  import "./chunk-JZFONJSL.mjs";
15
15
  import "./chunk-TKXIH27X.mjs";
16
16
  import "./chunk-LKFHERRV.mjs";
17
17
  import {
18
18
  getClaudeAuthManager
19
- } from "./chunk-MZRXFWPQ.mjs";
19
+ } from "./chunk-AN6USKYQ.mjs";
20
+ import "./chunk-26RK7T5L.mjs";
20
21
  import "./chunk-BR3AD5QZ.mjs";
21
22
  import "./chunk-ZJKXHM4Q.mjs";
22
23
  import "./chunk-RIX34QHC.mjs";
@@ -12,7 +12,7 @@ import {
12
12
  normalizeAuthProvider,
13
13
  openBrowser,
14
14
  submitClaudeCode
15
- } from "./chunk-BHY7QDCM.mjs";
15
+ } from "./chunk-UBWWGUMU.mjs";
16
16
  import {
17
17
  MdnsService
18
18
  } from "./chunk-DDTTSKGG.mjs";
@@ -33,8 +33,8 @@ import {
33
33
  } from "./chunk-M2F7C2UJ.mjs";
34
34
  import {
35
35
  daemonPaths
36
- } from "./chunk-RHBGCOS3.mjs";
37
- import "./chunk-D7A77SNL.mjs";
36
+ } from "./chunk-22ZGZFOV.mjs";
37
+ import "./chunk-3FWPIWYM.mjs";
38
38
  import {
39
39
  DEFAULT_DAEMON_PORT,
40
40
  DEFAULT_DAEMON_URL,
@@ -58,8 +58,8 @@ import {
58
58
  storeRemoteToken,
59
59
  tunnelTokenHint,
60
60
  updateRemotes
61
- } from "./chunk-AEAJDCVK.mjs";
62
- import "./chunk-BS3USVEA.mjs";
61
+ } from "./chunk-IM5JKLXO.mjs";
62
+ import "./chunk-P4G5ZEBI.mjs";
63
63
  import "./chunk-WJGPNHGX.mjs";
64
64
  import "./chunk-PAK5JCO2.mjs";
65
65
  import "./chunk-ZPB3HYM7.mjs";
@@ -531,7 +531,7 @@ function tuiInvocation(argv) {
531
531
  return argv.filter((a) => a !== "--json");
532
532
  }
533
533
  async function defaultLaunchTui(argv) {
534
- let { runTui } = await import("./tui-ZEI2NAQV.mjs");
534
+ let { runTui } = await import("./tui-NJKGFAKU.mjs");
535
535
  return await runTui(argv);
536
536
  }
537
537
  function urlFromArgv(argv, env) {
@@ -561,6 +561,10 @@ async function pinnedRemoteOk(io, url, explicitToken) {
561
561
  `), refusal === null;
562
562
  }
563
563
  async function runCli(argv = process.argv.slice(2), io = defaultIo) {
564
+ if (argv[0] === "web") {
565
+ let { runWebCommand } = await import("./web-F4XHDGUX.mjs");
566
+ return runWebCommand(argv.slice(1), io);
567
+ }
564
568
  let tuiArgv = tuiInvocation(argv);
565
569
  if (tuiArgv) {
566
570
  let wantsHelp = tuiArgv.includes("--help") || tuiArgv.includes("-h"), tuiUrl = "";
@@ -591,7 +595,17 @@ async function runCli(argv = process.argv.slice(2), io = defaultIo) {
591
595
  ${usage()}
592
596
  `), 2;
593
597
  }
594
- let { command, args } = parsed, talksToDaemon = !["help", "--help", "-h", "pair", "remotes"].includes(command), options;
598
+ let { command, args } = parsed;
599
+ if (command === "web") {
600
+ let { runWebCommand } = await import("./web-F4XHDGUX.mjs");
601
+ return runWebCommand([
602
+ ...args,
603
+ ...parsed.explicitUrl ? ["--url", parsed.explicitUrl] : [],
604
+ ...parsed.options.token ? ["--token", parsed.options.token] : [],
605
+ ...parsed.options.json ? ["--json"] : []
606
+ ], io);
607
+ }
608
+ let talksToDaemon = !["help", "--help", "-h", "pair", "remotes"].includes(command), options;
595
609
  try {
596
610
  let env = io.env ?? process.env;
597
611
  options = { ...parsed.options, env, daemonUrl: talksToDaemon ? resolveDaemonUrl(parsed.explicitUrl ?? void 0, env) : "" };
@@ -1684,6 +1698,7 @@ that off). Quitting leaves it running. Another local port, such as an SSH
1684
1698
  tunnel, is never auto-started and needs --token.
1685
1699
 
1686
1700
  Commands:
1701
+ web [--port <n>] Open Browser Studio already signed in (no desktop app needed)
1687
1702
  tui The terminal app (the default)
1688
1703
  agents List loaded agents
1689
1704
  status <agent> Show runtime status
@@ -9,10 +9,13 @@ import {
9
9
  getCommand,
10
10
  hasCommand,
11
11
  registry
12
- } from "./chunk-LVF2DRBR.mjs";
13
- import "./chunk-E7LC6SHP.mjs";
12
+ } from "./chunk-TBMQOM7Y.mjs";
13
+ import "./chunk-4T745GJA.mjs";
14
+ import "./chunk-RIAB37IS.mjs";
14
15
  import "./chunk-3GNIDM53.mjs";
15
16
  import "./chunk-LKFHERRV.mjs";
17
+ import "./chunk-ZECGH3LT.mjs";
18
+ import "./chunk-26RK7T5L.mjs";
16
19
  import "./chunk-BR3AD5QZ.mjs";
17
20
  import "./chunk-M2RX3S2T.mjs";
18
21
  export {