@agentdocumentformat/cli 0.8.2 → 0.8.4

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-4AZZJNN2.mjs → App-XOPHZTGN.mjs} +515 -349
  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-KCIRFUZH.mjs → chunk-2WIFHJV2.mjs} +2 -2
  9. package/dist/chunks/{chunk-D7A77SNL.mjs → chunk-3FWPIWYM.mjs} +1 -1
  10. package/dist/chunks/chunk-4T745GJA.mjs +431 -0
  11. package/dist/chunks/{chunk-7JZXMDDF.mjs → chunk-7ADDKFT5.mjs} +105 -31
  12. package/dist/chunks/chunk-A53XYNJL.mjs +26 -0
  13. package/dist/chunks/{chunk-MZRXFWPQ.mjs → chunk-AN6USKYQ.mjs} +40 -8
  14. package/dist/chunks/{chunk-2Z7X3UUR.mjs → chunk-DHO5Z6HP.mjs} +14 -12
  15. package/dist/chunks/{chunk-F5ELW46V.mjs → chunk-GJYMGPH4.mjs} +1 -0
  16. package/dist/chunks/chunk-HONGRUAE.mjs +175 -0
  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-IMVMSU3A.mjs → chunk-JK6K2BMV.mjs} +12 -38
  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-RJDOVMM4.mjs → chunk-TPA2ITKV.mjs} +49 -33
  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-42L4YM5L.mjs} +4 -3
  36. package/dist/chunks/{cli-PCVFB6B4.mjs → cli-JPRYEY4J.mjs} +53 -13
  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-HEQ3FUYH.mjs → daemon-DK3KUDZJ.mjs} +3571 -6806
  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-55CQSAOX.mjs → store-37YHXFJ6.mjs} +4 -3
  47. package/dist/chunks/{tui-RAUVFOYY.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-5ZGWvexa.js +161 -0
  52. package/web/assets/MeshGraphView-BZV40eAE.css +1 -0
  53. package/web/assets/MeshGraphView-Vp2R5TLK.js +23 -0
  54. package/web/assets/SettingsPage-_uHkBERV.js +6 -0
  55. package/web/assets/agent-window-B8X7FV4_.js +3 -0
  56. package/web/assets/agent.store-BHweGGTh.js +1 -0
  57. package/web/assets/app.store-j_-OuVPe.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-CMD3_OM0.js +1 -0
  62. package/web/assets/edit-recovery-Ce8tPQZl.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-B5Eot_tL.js +1 -0
  69. package/web/assets/index-B5FYMbFc.js +3 -0
  70. package/web/assets/index-BQIEMvvt.js +2 -0
  71. package/web/assets/index-C_gf4L3q.js +1 -0
  72. package/web/assets/index-Ca6bEWGu.js +1 -0
  73. package/web/assets/index-CuTaWSEs.css +1 -0
  74. package/web/assets/index-DBFkrLao.js +1 -0
  75. package/web/assets/index-DF1leTEa.js +11 -0
  76. package/web/assets/index-DS9H-PJI.js +1 -0
  77. package/web/assets/index-DkhbLs9K.js +6 -0
  78. package/web/assets/index-KNnHrO8-.js +13 -0
  79. package/web/assets/index-nM_Q5x7Q.js +1 -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-Zf3qnQYd.css +1 -0
  103. package/web/assets/main-o2ocfqUC.js +319 -0
  104. package/web/assets/markdown-Cvjx9yec.js +1 -0
  105. package/web/assets/message-queue.store-ke_rFZAb.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-D-F9gHrJ.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-mxlpdE1l.js +1 -0
  127. package/web/assets/with-selector-Ot-ZoUn0.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-2WIFHJV2.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-RAUVFOYY.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) : "" };
@@ -794,6 +808,16 @@ function takeLoop(args) {
794
808
  }
795
809
  return { loop: loop && loop !== "main" ? loop : void 0, rest };
796
810
  }
811
+ function takeAnswersFlag(args) {
812
+ let rest = [], answers;
813
+ for (let i = 0; i < args.length; i++) {
814
+ let arg = args[i];
815
+ if (arg === "--answers") {
816
+ if (answers = args[++i], answers === void 0) throw new Error("--answers requires a JSON array");
817
+ } else arg.startsWith("--answers=") ? answers = arg.slice(10) : rest.push(arg);
818
+ }
819
+ return { answers, rest };
820
+ }
797
821
  function takeAttachments(args) {
798
822
  let rest = [], files = [];
799
823
  for (let i = 0; i < args.length; i++) {
@@ -871,13 +895,23 @@ async function resolveTask(io, options, args, action) {
871
895
  return io.stdout(options.json ? `${JSON.stringify(data, null, 2)}
872
896
  ` : formatTaskResolution(action, taskId, data)), 0;
873
897
  }
874
- async function answerAsk(io, options, args) {
875
- let agent = args[0], requestId = args[1], answer = args.slice(2).join(" ");
876
- if (!agent || !requestId || !answer) throw new Error("Usage: adf answer <agent> <requestId> <answer>");
898
+ var ANSWER_USAGE = "Usage: adf answer <agent> <requestId> [--loop <name>] <answer>, or --answers '<json array>' for a form";
899
+ async function answerAsk(io, options, argv) {
900
+ let { loop, rest: afterLoop } = takeLoop(argv), { answers: answersJson, rest: args } = takeAnswersFlag(afterLoop), agent = args[0], requestId = args[1], text = args.slice(2).join(" ");
901
+ if (!agent || !requestId || answersJson === void 0 == !text) throw new Error(ANSWER_USAGE);
902
+ let answers;
903
+ if (answersJson !== void 0)
904
+ try {
905
+ answers = JSON.parse(answersJson);
906
+ } catch {
907
+ throw new Error(`--answers is not valid JSON. ${ANSWER_USAGE}`);
908
+ }
909
+ else
910
+ answers = [text];
877
911
  let data = await requestJson(io, options, `/agents/${enc(agent)}/asks/${enc(requestId)}/respond`, {
878
912
  method: "POST",
879
913
  headers: { "Content-Type": "application/json" },
880
- body: JSON.stringify({ answer })
914
+ body: JSON.stringify({ answers, ...loop ? { loop } : {} })
881
915
  });
882
916
  return io.stdout(options.json ? `${JSON.stringify(data, null, 2)}
883
917
  ` : `Answered ${requestId}
@@ -1664,6 +1698,7 @@ that off). Quitting leaves it running. Another local port, such as an SSH
1664
1698
  tunnel, is never auto-started and needs --token.
1665
1699
 
1666
1700
  Commands:
1701
+ web [--port <n>] Open Browser Studio already signed in (no desktop app needed)
1667
1702
  tui The terminal app (the default)
1668
1703
  agents List loaded agents
1669
1704
  status <agent> Show runtime status
@@ -1710,8 +1745,13 @@ Commands:
1710
1745
  approve <agent> <taskId> Approve a pending task
1711
1746
  deny <agent> <taskId> [reason] Deny a pending task
1712
1747
  asks <agent> List pending ask requests
1713
- answer <agent> <requestId> <answer>
1714
- Answer a pending ask request
1748
+ answer <agent> <requestId> [--loop <name>] <answer>
1749
+ Answer a pending one-question ask
1750
+ answer <agent> <requestId> [--loop <name>] --answers '<json>'
1751
+ Answer an ask form: a JSON array with one
1752
+ entry per question, in order: text or an
1753
+ option label, an array of labels for a
1754
+ multi-pick question, or null to skip
1715
1755
  identities <agent> List identity metadata without secret values
1716
1756
  mcp [agent] Show daemon MCP registrations or agent MCP state
1717
1757
  adapters [agent] Show daemon adapter registrations or agent adapter state
@@ -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 {