adhdev 0.8.92 → 0.8.94

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/index.js CHANGED
@@ -982,15 +982,15 @@ function resolveCommandPath(command) {
982
982
  return null;
983
983
  }
984
984
  function execAsync(cmd, timeoutMs = 5e3) {
985
- return new Promise((resolve15) => {
985
+ return new Promise((resolve16) => {
986
986
  const child = (0, import_child_process2.exec)(cmd, { encoding: "utf-8", timeout: timeoutMs }, (err, stdout) => {
987
987
  if (err || !stdout?.trim()) {
988
- resolve15(null);
988
+ resolve16(null);
989
989
  } else {
990
- resolve15(stdout.trim());
990
+ resolve16(stdout.trim());
991
991
  }
992
992
  });
993
- child.on("error", () => resolve15(null));
993
+ child.on("error", () => resolve16(null));
994
994
  });
995
995
  }
996
996
  async function detectCLIs(providerLoader, options) {
@@ -1598,7 +1598,7 @@ var init_manager = __esm({
1598
1598
  * Returns multiple entries if multiple IDE windows are open on same port
1599
1599
  */
1600
1600
  static listAllTargets(port) {
1601
- return new Promise((resolve15) => {
1601
+ return new Promise((resolve16) => {
1602
1602
  const req = http.get(`http://127.0.0.1:${port}/json`, (res) => {
1603
1603
  let data = "";
1604
1604
  res.on("data", (chunk) => data += chunk.toString());
@@ -1614,16 +1614,16 @@ var init_manager = __esm({
1614
1614
  (t) => !isNonMain(t.title || "") && t.url?.includes("workbench.html") && !t.url?.includes("agent")
1615
1615
  );
1616
1616
  const fallbackPages = pages.filter((t) => !isNonMain(t.title || ""));
1617
- resolve15(mainPages.length > 0 ? mainPages : fallbackPages);
1617
+ resolve16(mainPages.length > 0 ? mainPages : fallbackPages);
1618
1618
  } catch {
1619
- resolve15([]);
1619
+ resolve16([]);
1620
1620
  }
1621
1621
  });
1622
1622
  });
1623
- req.on("error", () => resolve15([]));
1623
+ req.on("error", () => resolve16([]));
1624
1624
  req.setTimeout(2e3, () => {
1625
1625
  req.destroy();
1626
- resolve15([]);
1626
+ resolve16([]);
1627
1627
  });
1628
1628
  });
1629
1629
  }
@@ -1663,7 +1663,7 @@ var init_manager = __esm({
1663
1663
  }
1664
1664
  }
1665
1665
  findTargetOnPort(port) {
1666
- return new Promise((resolve15) => {
1666
+ return new Promise((resolve16) => {
1667
1667
  const req = http.get(`http://127.0.0.1:${port}/json`, (res) => {
1668
1668
  let data = "";
1669
1669
  res.on("data", (chunk) => data += chunk.toString());
@@ -1674,7 +1674,7 @@ var init_manager = __esm({
1674
1674
  (t) => (t.type === "page" || t.type === "browser" || t.type === "Page") && t.webSocketDebuggerUrl
1675
1675
  );
1676
1676
  if (pages.length === 0) {
1677
- resolve15(targets.find((t) => t.webSocketDebuggerUrl) || null);
1677
+ resolve16(targets.find((t) => t.webSocketDebuggerUrl) || null);
1678
1678
  return;
1679
1679
  }
1680
1680
  const titleFilteredPages = pages.filter((t) => !this.isNonMainTitle(t.title || ""));
@@ -1693,25 +1693,25 @@ var init_manager = __esm({
1693
1693
  this._targetId = selected.target.id;
1694
1694
  }
1695
1695
  this._pageTitle = selected.target.title || "";
1696
- resolve15(selected.target);
1696
+ resolve16(selected.target);
1697
1697
  return;
1698
1698
  }
1699
1699
  if (previousTargetId) {
1700
1700
  this.log(`[CDP] Target ${previousTargetId} not found in page list`);
1701
- resolve15(null);
1701
+ resolve16(null);
1702
1702
  return;
1703
1703
  }
1704
1704
  this._pageTitle = list[0]?.title || "";
1705
- resolve15(list[0]);
1705
+ resolve16(list[0]);
1706
1706
  } catch {
1707
- resolve15(null);
1707
+ resolve16(null);
1708
1708
  }
1709
1709
  });
1710
1710
  });
1711
- req.on("error", () => resolve15(null));
1711
+ req.on("error", () => resolve16(null));
1712
1712
  req.setTimeout(2e3, () => {
1713
1713
  req.destroy();
1714
- resolve15(null);
1714
+ resolve16(null);
1715
1715
  });
1716
1716
  });
1717
1717
  }
@@ -1722,7 +1722,7 @@ var init_manager = __esm({
1722
1722
  this.extensionProviders = providers;
1723
1723
  }
1724
1724
  connectToTarget(wsUrl) {
1725
- return new Promise((resolve15) => {
1725
+ return new Promise((resolve16) => {
1726
1726
  this.ws = new import_ws.default(wsUrl);
1727
1727
  this.ws.on("open", async () => {
1728
1728
  this._connected = true;
@@ -1732,17 +1732,17 @@ var init_manager = __esm({
1732
1732
  }
1733
1733
  this.connectBrowserWs().catch(() => {
1734
1734
  });
1735
- resolve15(true);
1735
+ resolve16(true);
1736
1736
  });
1737
1737
  this.ws.on("message", (data) => {
1738
1738
  try {
1739
1739
  const msg = JSON.parse(data.toString());
1740
1740
  if (msg.id && this.pending.has(msg.id)) {
1741
- const { resolve: resolve16, reject } = this.pending.get(msg.id);
1741
+ const { resolve: resolve17, reject } = this.pending.get(msg.id);
1742
1742
  this.pending.delete(msg.id);
1743
1743
  this.failureCount = 0;
1744
1744
  if (msg.error) reject(new Error(msg.error.message));
1745
- else resolve16(msg.result);
1745
+ else resolve17(msg.result);
1746
1746
  } else if (msg.method === "Runtime.executionContextCreated") {
1747
1747
  this.contexts.add(msg.params.context.id);
1748
1748
  } else if (msg.method === "Runtime.executionContextDestroyed") {
@@ -1765,7 +1765,7 @@ var init_manager = __esm({
1765
1765
  this.ws.on("error", (err) => {
1766
1766
  this.log(`[CDP] WebSocket error: ${err.message}`);
1767
1767
  this._connected = false;
1768
- resolve15(false);
1768
+ resolve16(false);
1769
1769
  });
1770
1770
  });
1771
1771
  }
@@ -1779,7 +1779,7 @@ var init_manager = __esm({
1779
1779
  return;
1780
1780
  }
1781
1781
  this.log(`[CDP] Connecting browser WS for target discovery...`);
1782
- await new Promise((resolve15, reject) => {
1782
+ await new Promise((resolve16, reject) => {
1783
1783
  this.browserWs = new import_ws.default(browserWsUrl);
1784
1784
  this.browserWs.on("open", async () => {
1785
1785
  this._browserConnected = true;
@@ -1789,16 +1789,16 @@ var init_manager = __esm({
1789
1789
  } catch (e) {
1790
1790
  this.log(`[CDP] setDiscoverTargets failed: ${e.message}`);
1791
1791
  }
1792
- resolve15();
1792
+ resolve16();
1793
1793
  });
1794
1794
  this.browserWs.on("message", (data) => {
1795
1795
  try {
1796
1796
  const msg = JSON.parse(data.toString());
1797
1797
  if (msg.id && this.browserPending.has(msg.id)) {
1798
- const { resolve: resolve16, reject: reject2 } = this.browserPending.get(msg.id);
1798
+ const { resolve: resolve17, reject: reject2 } = this.browserPending.get(msg.id);
1799
1799
  this.browserPending.delete(msg.id);
1800
1800
  if (msg.error) reject2(new Error(msg.error.message));
1801
- else resolve16(msg.result);
1801
+ else resolve17(msg.result);
1802
1802
  }
1803
1803
  } catch {
1804
1804
  }
@@ -1818,31 +1818,31 @@ var init_manager = __esm({
1818
1818
  }
1819
1819
  }
1820
1820
  getBrowserWsUrl() {
1821
- return new Promise((resolve15) => {
1821
+ return new Promise((resolve16) => {
1822
1822
  const req = http.get(`http://127.0.0.1:${this.port}/json/version`, (res) => {
1823
1823
  let data = "";
1824
1824
  res.on("data", (chunk) => data += chunk.toString());
1825
1825
  res.on("end", () => {
1826
1826
  try {
1827
1827
  const info = JSON.parse(data);
1828
- resolve15(info.webSocketDebuggerUrl || null);
1828
+ resolve16(info.webSocketDebuggerUrl || null);
1829
1829
  } catch {
1830
- resolve15(null);
1830
+ resolve16(null);
1831
1831
  }
1832
1832
  });
1833
1833
  });
1834
- req.on("error", () => resolve15(null));
1834
+ req.on("error", () => resolve16(null));
1835
1835
  req.setTimeout(3e3, () => {
1836
1836
  req.destroy();
1837
- resolve15(null);
1837
+ resolve16(null);
1838
1838
  });
1839
1839
  });
1840
1840
  }
1841
1841
  sendBrowser(method, params = {}, timeoutMs = 15e3) {
1842
- return new Promise((resolve15, reject) => {
1842
+ return new Promise((resolve16, reject) => {
1843
1843
  if (!this.browserWs || !this._browserConnected) return reject(new Error("Browser WS not connected"));
1844
1844
  const id = this.browserMsgId++;
1845
- this.browserPending.set(id, { resolve: resolve15, reject });
1845
+ this.browserPending.set(id, { resolve: resolve16, reject });
1846
1846
  this.browserWs.send(JSON.stringify({ id, method, params }));
1847
1847
  setTimeout(() => {
1848
1848
  if (this.browserPending.has(id)) {
@@ -1882,11 +1882,11 @@ var init_manager = __esm({
1882
1882
  }
1883
1883
  // ─── CDP Protocol ────────────────────────────────────────
1884
1884
  sendInternal(method, params = {}, timeoutMs = 15e3) {
1885
- return new Promise((resolve15, reject) => {
1885
+ return new Promise((resolve16, reject) => {
1886
1886
  if (!this.ws || !this._connected) return reject(new Error("CDP not connected"));
1887
1887
  if (this.ws.readyState !== import_ws.default.OPEN) return reject(new Error("WebSocket not open"));
1888
1888
  const id = this.msgId++;
1889
- this.pending.set(id, { resolve: resolve15, reject });
1889
+ this.pending.set(id, { resolve: resolve16, reject });
1890
1890
  this.ws.send(JSON.stringify({ id, method, params }));
1891
1891
  setTimeout(() => {
1892
1892
  if (this.pending.has(id)) {
@@ -2135,7 +2135,7 @@ var init_manager = __esm({
2135
2135
  const browserWs = this.browserWs;
2136
2136
  let msgId = this.browserMsgId;
2137
2137
  const sendWs = (method, params = {}, sessionId) => {
2138
- return new Promise((resolve15, reject) => {
2138
+ return new Promise((resolve16, reject) => {
2139
2139
  const mid = msgId++;
2140
2140
  this.browserMsgId = msgId;
2141
2141
  const handler = (raw) => {
@@ -2144,7 +2144,7 @@ var init_manager = __esm({
2144
2144
  if (msg.id === mid) {
2145
2145
  browserWs.removeListener("message", handler);
2146
2146
  if (msg.error) reject(new Error(msg.error.message || JSON.stringify(msg.error)));
2147
- else resolve15(msg.result);
2147
+ else resolve16(msg.result);
2148
2148
  }
2149
2149
  } catch {
2150
2150
  }
@@ -2345,14 +2345,14 @@ var init_manager = __esm({
2345
2345
  if (!ws || ws.readyState !== import_ws.default.OPEN) {
2346
2346
  throw new Error("CDP not connected");
2347
2347
  }
2348
- return new Promise((resolve15, reject) => {
2348
+ return new Promise((resolve16, reject) => {
2349
2349
  const id = getNextId();
2350
2350
  pendingMap.set(id, {
2351
2351
  resolve: (result) => {
2352
2352
  if (result?.result?.subtype === "error") {
2353
2353
  reject(new Error(result.result.description));
2354
2354
  } else {
2355
- resolve15(result?.result?.value);
2355
+ resolve16(result?.result?.value);
2356
2356
  }
2357
2357
  },
2358
2358
  reject
@@ -2384,10 +2384,10 @@ var init_manager = __esm({
2384
2384
  throw new Error("CDP not connected");
2385
2385
  }
2386
2386
  const sendViaSession = (method, params = {}) => {
2387
- return new Promise((resolve15, reject) => {
2387
+ return new Promise((resolve16, reject) => {
2388
2388
  const pendingMap = this._browserConnected ? this.browserPending : this.pending;
2389
2389
  const id = this._browserConnected ? this.browserMsgId++ : this.msgId++;
2390
- pendingMap.set(id, { resolve: resolve15, reject });
2390
+ pendingMap.set(id, { resolve: resolve16, reject });
2391
2391
  ws.send(JSON.stringify({ id, sessionId, method, params }));
2392
2392
  setTimeout(() => {
2393
2393
  if (pendingMap.has(id)) {
@@ -6955,7 +6955,9 @@ function getTargetInstance(h, args) {
6955
6955
  const targetSessionId = typeof args?.targetSessionId === "string" ? args.targetSessionId.trim() : "";
6956
6956
  const sessionId = targetSessionId || h.currentSession?.sessionId || "";
6957
6957
  if (!sessionId) return null;
6958
- return h.ctx.instanceManager?.getInstance(sessionId) || null;
6958
+ const session = h.ctx.sessionRegistry?.get(sessionId);
6959
+ const instanceKey = session?.adapterKey || session?.instanceKey || sessionId;
6960
+ return h.ctx.instanceManager?.getInstance(instanceKey) || null;
6959
6961
  }
6960
6962
  function getTargetTransport(h, provider) {
6961
6963
  if (h.currentSession?.transport) return h.currentSession.transport;
@@ -7252,7 +7254,7 @@ function getStateLastSignature(state) {
7252
7254
  async function getStableExtensionBaseline(h) {
7253
7255
  const first = await readExtensionChatState(h);
7254
7256
  if (getStateMessageCount(first) > 0 || getStateLastSignature(first)) return first;
7255
- await new Promise((resolve15) => setTimeout(resolve15, 150));
7257
+ await new Promise((resolve16) => setTimeout(resolve16, 150));
7256
7258
  const second = await readExtensionChatState(h);
7257
7259
  return getStateMessageCount(second) >= getStateMessageCount(first) ? second : first;
7258
7260
  }
@@ -7260,7 +7262,7 @@ async function verifyExtensionSendObserved(h, before) {
7260
7262
  const beforeCount = getStateMessageCount(before);
7261
7263
  const beforeSignature = getStateLastSignature(before);
7262
7264
  for (let attempt = 0; attempt < 12; attempt += 1) {
7263
- await new Promise((resolve15) => setTimeout(resolve15, 250));
7265
+ await new Promise((resolve16) => setTimeout(resolve16, 250));
7264
7266
  const state = await readExtensionChatState(h);
7265
7267
  if (state?.status === "waiting_approval") return true;
7266
7268
  const afterCount = getStateMessageCount(state);
@@ -8024,10 +8026,17 @@ async function handleResolveAction(h, args) {
8024
8026
  }
8025
8027
  }
8026
8028
  const status = adapter.getStatus();
8027
- if (status?.status !== "waiting_approval") {
8029
+ const targetInstance = getTargetInstance(h, args);
8030
+ const targetState = targetInstance?.getState?.();
8031
+ const surfacedModal = targetState?.activeChat?.activeModal && Array.isArray(targetState.activeChat.activeModal.buttons) && targetState.activeChat.activeModal.buttons.some((candidate) => typeof candidate === "string" && candidate.trim()) ? targetState.activeChat.activeModal : null;
8032
+ const statusModal = status?.activeModal && Array.isArray(status.activeModal.buttons) && status.activeModal.buttons.some((candidate) => typeof candidate === "string" && candidate.trim()) ? status.activeModal : null;
8033
+ const effectiveModal = statusModal || surfacedModal;
8034
+ const effectiveStatus = status?.status === "waiting_approval" || targetState?.activeChat?.status === "waiting_approval" ? "waiting_approval" : status?.status;
8035
+ LOG.info("Command", `[resolveAction] CLI PTY gate target=${String(args?.targetSessionId || "")} rawStatus=${String(status?.status || "")} effectiveStatus=${String(effectiveStatus || "")} statusModal=${statusModal ? "yes" : "no"} surfacedModal=${surfacedModal ? "yes" : "no"} instance=${targetInstance ? "yes" : "no"}`);
8036
+ if (effectiveStatus !== "waiting_approval" && !effectiveModal) {
8028
8037
  return { success: false, error: "Not in approval state" };
8029
8038
  }
8030
- const buttons = status.activeModal?.buttons || ["Allow once", "Always allow", "Deny"];
8039
+ const buttons = effectiveModal?.buttons || ["Allow once", "Always allow", "Deny"];
8031
8040
  let buttonIndex = typeof args?.buttonIndex === "number" ? args.buttonIndex : -1;
8032
8041
  if (buttonIndex < 0) {
8033
8042
  const btnLower = button.toLowerCase();
@@ -9538,7 +9547,7 @@ var init_handler = __esm({
9538
9547
  try {
9539
9548
  const http3 = await import("http");
9540
9549
  const postData = JSON.stringify(body);
9541
- const result = await new Promise((resolve15, reject) => {
9550
+ const result = await new Promise((resolve16, reject) => {
9542
9551
  const req = http3.request({
9543
9552
  hostname: "127.0.0.1",
9544
9553
  port: 19280,
@@ -9550,9 +9559,9 @@ var init_handler = __esm({
9550
9559
  res.on("data", (chunk) => data += chunk);
9551
9560
  res.on("end", () => {
9552
9561
  try {
9553
- resolve15(JSON.parse(data));
9562
+ resolve16(JSON.parse(data));
9554
9563
  } catch {
9555
- resolve15({ raw: data });
9564
+ resolve16({ raw: data });
9556
9565
  }
9557
9566
  });
9558
9567
  });
@@ -9570,15 +9579,15 @@ var init_handler = __esm({
9570
9579
  if (!providerType) return { success: false, error: "providerType required" };
9571
9580
  try {
9572
9581
  const http3 = await import("http");
9573
- const result = await new Promise((resolve15, reject) => {
9582
+ const result = await new Promise((resolve16, reject) => {
9574
9583
  http3.get(`http://127.0.0.1:19280/api/providers/${providerType}/${endpoint}`, (res) => {
9575
9584
  let data = "";
9576
9585
  res.on("data", (chunk) => data += chunk);
9577
9586
  res.on("end", () => {
9578
9587
  try {
9579
- resolve15(JSON.parse(data));
9588
+ resolve16(JSON.parse(data));
9580
9589
  } catch {
9581
- resolve15({ raw: data });
9590
+ resolve16({ raw: data });
9582
9591
  }
9583
9592
  });
9584
9593
  }).on("error", reject);
@@ -9592,7 +9601,7 @@ var init_handler = __esm({
9592
9601
  try {
9593
9602
  const http3 = await import("http");
9594
9603
  const postData = JSON.stringify(args || {});
9595
- const result = await new Promise((resolve15, reject) => {
9604
+ const result = await new Promise((resolve16, reject) => {
9596
9605
  const req = http3.request({
9597
9606
  hostname: "127.0.0.1",
9598
9607
  port: 19280,
@@ -9604,9 +9613,9 @@ var init_handler = __esm({
9604
9613
  res.on("data", (chunk) => data += chunk);
9605
9614
  res.on("end", () => {
9606
9615
  try {
9607
- resolve15(JSON.parse(data));
9616
+ resolve16(JSON.parse(data));
9608
9617
  } catch {
9609
- resolve15({ raw: data });
9618
+ resolve16({ raw: data });
9610
9619
  }
9611
9620
  });
9612
9621
  });
@@ -11843,7 +11852,7 @@ var init_provider_cli_adapter = __esm({
11843
11852
  `[${this.cliType}] Waiting for interactive prompt: hasPrompt=${hasPrompt} stableMs=${stableMs} recentOutputMs=${recentlyOutput} status=${status} startup=${startupLikelyActive} screen=${JSON.stringify(summarizeCliTraceText(screenText, 220)).slice(0, 260)}`
11844
11853
  );
11845
11854
  }
11846
- await new Promise((resolve15) => setTimeout(resolve15, 50));
11855
+ await new Promise((resolve16) => setTimeout(resolve16, 50));
11847
11856
  }
11848
11857
  const finalScreenText = this.terminalScreen.getText() || "";
11849
11858
  LOG.warn(
@@ -12431,7 +12440,7 @@ var init_provider_cli_adapter = __esm({
12431
12440
  }
12432
12441
  projectEffectiveStatus(startupModal = null) {
12433
12442
  if (this.parseErrorMessage) return "error";
12434
- if (startupModal) return "waiting_approval";
12443
+ if (startupModal || this.activeModal) return "waiting_approval";
12435
12444
  if (this.isWaitingForResponse && this.currentTurnScope && this.currentStatus === "idle") return "generating";
12436
12445
  return this.currentStatus;
12437
12446
  }
@@ -12439,12 +12448,24 @@ var init_provider_cli_adapter = __esm({
12439
12448
  getStatus() {
12440
12449
  const screenText = this.terminalScreen.getText() || "";
12441
12450
  const startupModal = this.startupParseGate ? this.getStartupConfirmationModal(screenText) : null;
12442
- const effectiveStatus = this.projectEffectiveStatus(startupModal);
12451
+ let effectiveStatus = this.projectEffectiveStatus(startupModal);
12452
+ let effectiveModal = startupModal || this.activeModal;
12453
+ if (!startupModal && !effectiveModal && typeof this.cliScripts?.parseOutput === "function") {
12454
+ try {
12455
+ const parsed = this.getScriptParsedStatus();
12456
+ const parsedModal = parsed?.activeModal && Array.isArray(parsed.activeModal.buttons) && parsed.activeModal.buttons.some((button) => typeof button === "string" && button.trim()) ? parsed.activeModal : null;
12457
+ if (parsed?.status === "waiting_approval" && parsedModal) {
12458
+ effectiveStatus = "waiting_approval";
12459
+ effectiveModal = parsedModal;
12460
+ }
12461
+ } catch {
12462
+ }
12463
+ }
12443
12464
  return {
12444
12465
  status: effectiveStatus,
12445
12466
  messages: [...this.committedMessages],
12446
12467
  workingDir: this.workingDir,
12447
- activeModal: startupModal || this.activeModal,
12468
+ activeModal: effectiveModal,
12448
12469
  errorMessage: this.parseErrorMessage || void 0,
12449
12470
  errorReason: this.parseErrorMessage ? "parse_error" : void 0
12450
12471
  };
@@ -12480,6 +12501,15 @@ var init_provider_cli_adapter = __esm({
12480
12501
  this.currentTurnScope,
12481
12502
  screenText
12482
12503
  );
12504
+ const parsedModal = parsed?.activeModal && Array.isArray(parsed.activeModal.buttons) && parsed.activeModal.buttons.some((button) => typeof button === "string" && button.trim()) ? parsed.activeModal : null;
12505
+ if (parsedModal && parsed?.status === "waiting_approval") {
12506
+ this.activeModal = parsedModal;
12507
+ this.isWaitingForResponse = true;
12508
+ if (this.currentStatus !== "waiting_approval") {
12509
+ this.setStatus("waiting_approval", "parsed_waiting_approval");
12510
+ this.onStatusChange?.();
12511
+ }
12512
+ }
12483
12513
  if (this.maybeCommitVisibleIdleTranscript(parsed)) {
12484
12514
  return this.getScriptParsedStatus();
12485
12515
  }
@@ -12684,7 +12714,7 @@ ${data.message || ""}`.trim();
12684
12714
  const deadline = Date.now() + 1e4;
12685
12715
  while (this.startupParseGate && Date.now() < deadline) {
12686
12716
  this.resolveStartupState("send_wait");
12687
- await new Promise((resolve15) => setTimeout(resolve15, 50));
12717
+ await new Promise((resolve16) => setTimeout(resolve16, 50));
12688
12718
  }
12689
12719
  }
12690
12720
  if (!allowInterventionPrompt) {
@@ -12776,12 +12806,12 @@ ${data.message || ""}`.trim();
12776
12806
  if (this.isWaitingForResponse) this.finishResponse();
12777
12807
  }, this.timeouts.maxResponse);
12778
12808
  };
12779
- await new Promise((resolve15) => {
12809
+ await new Promise((resolve16) => {
12780
12810
  let resolved = false;
12781
12811
  const resolveOnce = () => {
12782
12812
  if (resolved) return;
12783
12813
  resolved = true;
12784
- resolve15();
12814
+ resolve16();
12785
12815
  };
12786
12816
  const submit = () => {
12787
12817
  if (!this.ptyProcess) {
@@ -12955,17 +12985,17 @@ ${data.message || ""}`.trim();
12955
12985
  }
12956
12986
  }
12957
12987
  waitForStopped(timeoutMs) {
12958
- return new Promise((resolve15) => {
12988
+ return new Promise((resolve16) => {
12959
12989
  const startedAt = Date.now();
12960
12990
  const timer = setInterval(() => {
12961
12991
  if (!this.ptyProcess || this.currentStatus === "stopped") {
12962
12992
  clearInterval(timer);
12963
- resolve15(true);
12993
+ resolve16(true);
12964
12994
  return;
12965
12995
  }
12966
12996
  if (Date.now() - startedAt >= timeoutMs) {
12967
12997
  clearInterval(timer);
12968
- resolve15(false);
12998
+ resolve16(false);
12969
12999
  }
12970
13000
  }, 100);
12971
13001
  });
@@ -13130,7 +13160,22 @@ ${data.message || ""}`.trim();
13130
13160
  }
13131
13161
  resolveModal(buttonIndex) {
13132
13162
  const screenText = this.terminalScreen.getText() || "";
13133
- const modal = this.activeModal || this.getStartupConfirmationModal(screenText);
13163
+ let modal = this.activeModal || this.getStartupConfirmationModal(screenText);
13164
+ if (!modal && typeof this.cliScripts?.parseOutput === "function") {
13165
+ try {
13166
+ const parsed = this.getScriptParsedStatus();
13167
+ const parsedModal = parsed?.activeModal && Array.isArray(parsed.activeModal.buttons) && parsed.activeModal.buttons.some((button) => typeof button === "string" && button.trim()) ? parsed.activeModal : null;
13168
+ if (parsed?.status === "waiting_approval" && parsedModal) {
13169
+ modal = parsedModal;
13170
+ this.activeModal = parsedModal;
13171
+ if (this.currentStatus !== "waiting_approval") {
13172
+ this.setStatus("waiting_approval", "resolve_modal_parse");
13173
+ this.onStatusChange?.();
13174
+ }
13175
+ }
13176
+ } catch {
13177
+ }
13178
+ }
13134
13179
  if (!this.ptyProcess || this.currentStatus !== "waiting_approval" && !modal) return;
13135
13180
  this.clearIdleFinishCandidate("resolve_modal");
13136
13181
  this.recordTrace("resolve_modal", {
@@ -13309,7 +13354,7 @@ async function waitForCliAdapterReady(adapter, options) {
13309
13354
  if (status === "stopped") {
13310
13355
  throw new Error("CLI runtime stopped before it became ready");
13311
13356
  }
13312
- await new Promise((resolve15) => setTimeout(resolve15, pollMs));
13357
+ await new Promise((resolve16) => setTimeout(resolve16, pollMs));
13313
13358
  }
13314
13359
  throw new Error(`CLI runtime did not become ready within ${timeoutMs}ms`);
13315
13360
  }
@@ -30123,8 +30168,8 @@ var init_acp = __esm({
30123
30168
  this.#requestHandler = requestHandler;
30124
30169
  this.#notificationHandler = notificationHandler;
30125
30170
  this.#stream = stream;
30126
- this.#closedPromise = new Promise((resolve15) => {
30127
- this.#abortController.signal.addEventListener("abort", () => resolve15());
30171
+ this.#closedPromise = new Promise((resolve16) => {
30172
+ this.#abortController.signal.addEventListener("abort", () => resolve16());
30128
30173
  });
30129
30174
  this.#receive();
30130
30175
  }
@@ -30273,8 +30318,8 @@ var init_acp = __esm({
30273
30318
  }
30274
30319
  async sendRequest(method, params) {
30275
30320
  const id = this.#nextRequestId++;
30276
- const responsePromise = new Promise((resolve15, reject) => {
30277
- this.#pendingResponses.set(id, { resolve: resolve15, reject });
30321
+ const responsePromise = new Promise((resolve16, reject) => {
30322
+ this.#pendingResponses.set(id, { resolve: resolve16, reject });
30278
30323
  });
30279
30324
  await this.#sendMessage({ jsonrpc: "2.0", id, method, params });
30280
30325
  return responsePromise;
@@ -30945,13 +30990,13 @@ var init_acp_provider_instance = __esm({
30945
30990
  }
30946
30991
  this.currentStatus = "waiting_approval";
30947
30992
  this.detectStatusTransition();
30948
- const approved = await new Promise((resolve15) => {
30949
- this.permissionResolvers.push(resolve15);
30993
+ const approved = await new Promise((resolve16) => {
30994
+ this.permissionResolvers.push(resolve16);
30950
30995
  setTimeout(() => {
30951
- const idx = this.permissionResolvers.indexOf(resolve15);
30996
+ const idx = this.permissionResolvers.indexOf(resolve16);
30952
30997
  if (idx >= 0) {
30953
30998
  this.permissionResolvers.splice(idx, 1);
30954
- resolve15(false);
30999
+ resolve16(false);
30955
31000
  }
30956
31001
  }, 3e5);
30957
31002
  });
@@ -33174,7 +33219,7 @@ var init_handler2 = __esm({
33174
33219
  this._addToNodeFs(path29, initialAdd, wh, depth + 1);
33175
33220
  }
33176
33221
  }).on(EV.ERROR, this._boundHandleError);
33177
- return new Promise((resolve15, reject) => {
33222
+ return new Promise((resolve16, reject) => {
33178
33223
  if (!stream)
33179
33224
  return reject();
33180
33225
  stream.once(STR_END, () => {
@@ -33183,7 +33228,7 @@ var init_handler2 = __esm({
33183
33228
  return;
33184
33229
  }
33185
33230
  const wasThrottled = throttler ? throttler.clear() : false;
33186
- resolve15(void 0);
33231
+ resolve16(void 0);
33187
33232
  previous.getChildren().filter((item) => {
33188
33233
  return item !== directory && !current.has(item);
33189
33234
  }).forEach((item) => {
@@ -34274,10 +34319,75 @@ var init_provider_loader = __esm({
34274
34319
  }
34275
34320
  static GITHUB_TARBALL_URL = "https://github.com/vilmire/adhdev-providers/archive/refs/heads/main.tar.gz";
34276
34321
  static META_FILE = ".meta.json";
34322
+ static REPO_PROVIDER_DIRNAME = "adhdev-providers";
34323
+ static SIBLING_MARKER_FILE = ".adhdev-provider-root";
34324
+ static SIBLING_ENV_VAR = "ADHDEV_USE_SIBLING_PROVIDERS";
34325
+ probeStarts = [];
34326
+ siblingLogged = false;
34327
+ userDirSource = "home-default";
34328
+ /** Process-level dedup for stderr sibling-adoption notices (shared across all ProviderLoader instances). */
34329
+ static siblingStderrLogged = /* @__PURE__ */ new Set();
34330
+ static looksLikeProviderRoot(candidate) {
34331
+ try {
34332
+ if (!fs6.existsSync(candidate) || !fs6.statSync(candidate).isDirectory()) return false;
34333
+ return ["ide", "extension", "cli", "acp"].some(
34334
+ (category) => fs6.existsSync(path13.join(candidate, category))
34335
+ );
34336
+ } catch {
34337
+ return false;
34338
+ }
34339
+ }
34340
+ static hasProviderRootMarker(candidate) {
34341
+ try {
34342
+ return fs6.existsSync(path13.join(candidate, _ProviderLoader.SIBLING_MARKER_FILE));
34343
+ } catch {
34344
+ return false;
34345
+ }
34346
+ }
34347
+ detectDefaultUserDir() {
34348
+ const fallback2 = path13.join(os15.homedir(), ".adhdev", "providers");
34349
+ const envOptIn = process.env[_ProviderLoader.SIBLING_ENV_VAR] === "1";
34350
+ const visited = /* @__PURE__ */ new Set();
34351
+ for (const start of this.probeStarts) {
34352
+ let current = path13.resolve(start);
34353
+ while (!visited.has(current)) {
34354
+ visited.add(current);
34355
+ const siblingCandidate = path13.join(path13.dirname(current), _ProviderLoader.REPO_PROVIDER_DIRNAME);
34356
+ if (_ProviderLoader.looksLikeProviderRoot(siblingCandidate)) {
34357
+ const hasMarker = _ProviderLoader.hasProviderRootMarker(siblingCandidate);
34358
+ if (envOptIn || hasMarker) {
34359
+ const source = hasMarker ? "sibling-marker" : "sibling-env";
34360
+ if (!this.siblingLogged) {
34361
+ this.log(`Using sibling provider checkout (${source}): ${siblingCandidate}`);
34362
+ this.siblingLogged = true;
34363
+ }
34364
+ if (!_ProviderLoader.siblingStderrLogged.has(siblingCandidate)) {
34365
+ _ProviderLoader.siblingStderrLogged.add(siblingCandidate);
34366
+ try {
34367
+ process.stderr.write(
34368
+ `[adhdev] Using sibling adhdev-providers checkout (${source}): ${siblingCandidate}
34369
+ `
34370
+ );
34371
+ } catch {
34372
+ }
34373
+ }
34374
+ return { path: siblingCandidate, source };
34375
+ }
34376
+ }
34377
+ const parent = path13.dirname(current);
34378
+ if (parent === current) break;
34379
+ current = parent;
34380
+ }
34381
+ }
34382
+ return { path: fallback2, source: "home-default" };
34383
+ }
34277
34384
  constructor(options) {
34278
34385
  this.logFn = options?.logFn || LOG.forComponent("Provider").asLogFn();
34386
+ this.probeStarts = options?.probeStarts ?? [process.cwd(), __dirname];
34279
34387
  this.defaultProvidersDir = path13.join(os15.homedir(), ".adhdev", "providers");
34280
- this.userDir = this.defaultProvidersDir;
34388
+ const detected = this.detectDefaultUserDir();
34389
+ this.userDir = detected.path;
34390
+ this.userDirSource = detected.source;
34281
34391
  this.upstreamDir = path13.join(this.defaultProvidersDir, ".upstream");
34282
34392
  this.disableUpstream = false;
34283
34393
  this.applySourceConfig({
@@ -34315,6 +34425,7 @@ var init_provider_loader = __esm({
34315
34425
  disableUpstream: this.disableUpstream,
34316
34426
  explicitProviderDir: this.explicitProviderDir,
34317
34427
  userDir: this.userDir,
34428
+ userDirSource: this.userDirSource,
34318
34429
  upstreamDir: this.upstreamDir,
34319
34430
  providerRoots: this.getProviderRoots()
34320
34431
  };
@@ -34325,7 +34436,14 @@ var init_provider_loader = __esm({
34325
34436
  this.explicitProviderDir = options.userDir?.trim() ? options.userDir : null;
34326
34437
  }
34327
34438
  this.sourceMode = nextSourceMode;
34328
- this.userDir = this.explicitProviderDir || this.defaultProvidersDir;
34439
+ if (this.explicitProviderDir) {
34440
+ this.userDir = this.explicitProviderDir;
34441
+ this.userDirSource = "explicit";
34442
+ } else {
34443
+ const detected = this.detectDefaultUserDir();
34444
+ this.userDir = detected.path;
34445
+ this.userDirSource = detected.source;
34446
+ }
34329
34447
  this.upstreamDir = path13.join(this.defaultProvidersDir, ".upstream");
34330
34448
  this.disableUpstream = this.sourceMode === "no-upstream";
34331
34449
  if (this.explicitProviderDir) {
@@ -34919,7 +35037,7 @@ var init_provider_loader = __esm({
34919
35037
  return { updated: false };
34920
35038
  }
34921
35039
  try {
34922
- const etag = await new Promise((resolve15, reject) => {
35040
+ const etag = await new Promise((resolve16, reject) => {
34923
35041
  const options = {
34924
35042
  method: "HEAD",
34925
35043
  hostname: "github.com",
@@ -34937,7 +35055,7 @@ var init_provider_loader = __esm({
34937
35055
  headers: { "User-Agent": "adhdev-launcher" },
34938
35056
  timeout: 1e4
34939
35057
  }, (res2) => {
34940
- resolve15(res2.headers.etag || res2.headers["last-modified"] || "");
35058
+ resolve16(res2.headers.etag || res2.headers["last-modified"] || "");
34941
35059
  });
34942
35060
  req2.on("error", reject);
34943
35061
  req2.on("timeout", () => {
@@ -34946,7 +35064,7 @@ var init_provider_loader = __esm({
34946
35064
  });
34947
35065
  req2.end();
34948
35066
  } else {
34949
- resolve15(res.headers.etag || res.headers["last-modified"] || "");
35067
+ resolve16(res.headers.etag || res.headers["last-modified"] || "");
34950
35068
  }
34951
35069
  });
34952
35070
  req.on("error", reject);
@@ -35010,7 +35128,7 @@ var init_provider_loader = __esm({
35010
35128
  downloadFile(url2, destPath) {
35011
35129
  const https = require("https");
35012
35130
  const http3 = require("http");
35013
- return new Promise((resolve15, reject) => {
35131
+ return new Promise((resolve16, reject) => {
35014
35132
  const doRequest = (reqUrl, redirectCount = 0) => {
35015
35133
  if (redirectCount > 5) {
35016
35134
  reject(new Error("Too many redirects"));
@@ -35030,7 +35148,7 @@ var init_provider_loader = __esm({
35030
35148
  res.pipe(ws);
35031
35149
  ws.on("finish", () => {
35032
35150
  ws.close();
35033
- resolve15();
35151
+ resolve16();
35034
35152
  });
35035
35153
  ws.on("error", reject);
35036
35154
  });
@@ -35506,17 +35624,17 @@ async function findFreePort(ports) {
35506
35624
  throw new Error("No free port found");
35507
35625
  }
35508
35626
  function checkPortFree(port) {
35509
- return new Promise((resolve15) => {
35627
+ return new Promise((resolve16) => {
35510
35628
  const server = net2.createServer();
35511
35629
  server.unref();
35512
- server.on("error", () => resolve15(false));
35630
+ server.on("error", () => resolve16(false));
35513
35631
  server.listen(port, "127.0.0.1", () => {
35514
- server.close(() => resolve15(true));
35632
+ server.close(() => resolve16(true));
35515
35633
  });
35516
35634
  });
35517
35635
  }
35518
35636
  async function isCdpActive(port) {
35519
- return new Promise((resolve15) => {
35637
+ return new Promise((resolve16) => {
35520
35638
  const req = require("http").get(`http://127.0.0.1:${port}/json/version`, {
35521
35639
  timeout: 2e3
35522
35640
  }, (res) => {
@@ -35525,16 +35643,16 @@ async function isCdpActive(port) {
35525
35643
  res.on("end", () => {
35526
35644
  try {
35527
35645
  const info = JSON.parse(data);
35528
- resolve15(!!info["WebKit-Version"] || !!info["Browser"]);
35646
+ resolve16(!!info["WebKit-Version"] || !!info["Browser"]);
35529
35647
  } catch {
35530
- resolve15(false);
35648
+ resolve16(false);
35531
35649
  }
35532
35650
  });
35533
35651
  });
35534
- req.on("error", () => resolve15(false));
35652
+ req.on("error", () => resolve16(false));
35535
35653
  req.on("timeout", () => {
35536
35654
  req.destroy();
35537
- resolve15(false);
35655
+ resolve16(false);
35538
35656
  });
35539
35657
  });
35540
35658
  }
@@ -36344,7 +36462,7 @@ async function waitForPidExit(pid, timeoutMs) {
36344
36462
  while (Date.now() - start < timeoutMs) {
36345
36463
  try {
36346
36464
  process.kill(pid, 0);
36347
- await new Promise((resolve15) => setTimeout(resolve15, 250));
36465
+ await new Promise((resolve16) => setTimeout(resolve16, 250));
36348
36466
  } catch {
36349
36467
  return;
36350
36468
  }
@@ -36459,7 +36577,7 @@ async function runDaemonUpgradeHelper(payload) {
36459
36577
  appendUpgradeLog(installOutput.trim());
36460
36578
  }
36461
36579
  if (process.platform === "win32") {
36462
- await new Promise((resolve15) => setTimeout(resolve15, 500));
36580
+ await new Promise((resolve16) => setTimeout(resolve16, 500));
36463
36581
  cleanupStaleGlobalInstallDirs(payload.packageName);
36464
36582
  appendUpgradeLog("Post-install staging cleanup complete");
36465
36583
  }
@@ -37867,7 +37985,7 @@ var init_provider_adapter = __esm({
37867
37985
  const beforeCount = this.messageCount(before);
37868
37986
  const beforeSignature = this.lastMessageSignature(before);
37869
37987
  for (let attempt = 0; attempt < 12; attempt += 1) {
37870
- await new Promise((resolve15) => setTimeout(resolve15, 250));
37988
+ await new Promise((resolve16) => setTimeout(resolve16, 250));
37871
37989
  let state;
37872
37990
  try {
37873
37991
  state = await this.readChat(evaluate);
@@ -37889,7 +38007,7 @@ var init_provider_adapter = __esm({
37889
38007
  if (this.messageCount(first) > 0 || this.lastMessageSignature(first)) {
37890
38008
  return first;
37891
38009
  }
37892
- await new Promise((resolve15) => setTimeout(resolve15, 150));
38010
+ await new Promise((resolve16) => setTimeout(resolve16, 150));
37893
38011
  const second = await this.readChat(evaluate);
37894
38012
  return this.messageCount(second) >= this.messageCount(first) ? second : first;
37895
38013
  }
@@ -38040,7 +38158,7 @@ var init_provider_adapter = __esm({
38040
38158
  if (typeof data.error === "string" && data.error.trim()) return false;
38041
38159
  }
38042
38160
  for (let attempt = 0; attempt < 6; attempt += 1) {
38043
- await new Promise((resolve15) => setTimeout(resolve15, 250));
38161
+ await new Promise((resolve16) => setTimeout(resolve16, 250));
38044
38162
  const state = await this.readChat(evaluate);
38045
38163
  const title = this.getStateTitle(state);
38046
38164
  if (this.titlesMatch(title, sessionId)) return true;
@@ -40615,7 +40733,7 @@ function getCliTargetBundle(ctx, type, instanceId) {
40615
40733
  return { target, instance, adapter };
40616
40734
  }
40617
40735
  function sleep(ms) {
40618
- return new Promise((resolve15) => setTimeout(resolve15, ms));
40736
+ return new Promise((resolve16) => setTimeout(resolve16, ms));
40619
40737
  }
40620
40738
  async function waitForCliReady(ctx, type, instanceId, timeoutMs) {
40621
40739
  const startedAt = Date.now();
@@ -42907,15 +43025,15 @@ var init_dev_server = __esm({
42907
43025
  this.json(res, 500, { error: e.message });
42908
43026
  }
42909
43027
  });
42910
- return new Promise((resolve15, reject) => {
43028
+ return new Promise((resolve16, reject) => {
42911
43029
  this.server.listen(port, "127.0.0.1", () => {
42912
43030
  this.log(`Dev server listening on http://127.0.0.1:${port}`);
42913
- resolve15();
43031
+ resolve16();
42914
43032
  });
42915
43033
  this.server.on("error", (e) => {
42916
43034
  if (e.code === "EADDRINUSE") {
42917
43035
  this.log(`Port ${port} in use, skipping dev server`);
42918
- resolve15();
43036
+ resolve16();
42919
43037
  } else {
42920
43038
  reject(e);
42921
43039
  }
@@ -42997,20 +43115,20 @@ var init_dev_server = __esm({
42997
43115
  child.stderr?.on("data", (d) => {
42998
43116
  stderr += d.toString().slice(0, 2e3);
42999
43117
  });
43000
- await new Promise((resolve15) => {
43118
+ await new Promise((resolve16) => {
43001
43119
  const timer = setTimeout(() => {
43002
43120
  child.kill();
43003
- resolve15();
43121
+ resolve16();
43004
43122
  }, 3e3);
43005
43123
  child.on("exit", () => {
43006
43124
  clearTimeout(timer);
43007
- resolve15();
43125
+ resolve16();
43008
43126
  });
43009
43127
  child.stdout?.once("data", () => {
43010
43128
  setTimeout(() => {
43011
43129
  child.kill();
43012
43130
  clearTimeout(timer);
43013
- resolve15();
43131
+ resolve16();
43014
43132
  }, 500);
43015
43133
  });
43016
43134
  });
@@ -43526,14 +43644,14 @@ var init_dev_server = __esm({
43526
43644
  child.stderr?.on("data", (d) => {
43527
43645
  stderr += d.toString();
43528
43646
  });
43529
- await new Promise((resolve15) => {
43647
+ await new Promise((resolve16) => {
43530
43648
  const timer = setTimeout(() => {
43531
43649
  child.kill();
43532
- resolve15();
43650
+ resolve16();
43533
43651
  }, timeout);
43534
43652
  child.on("exit", () => {
43535
43653
  clearTimeout(timer);
43536
- resolve15();
43654
+ resolve16();
43537
43655
  });
43538
43656
  });
43539
43657
  const elapsed = Date.now() - start;
@@ -44203,14 +44321,14 @@ data: ${JSON.stringify(msg.data)}
44203
44321
  res.end(JSON.stringify(data, null, 2));
44204
44322
  }
44205
44323
  async readBody(req) {
44206
- return new Promise((resolve15) => {
44324
+ return new Promise((resolve16) => {
44207
44325
  let body = "";
44208
44326
  req.on("data", (chunk) => body += chunk);
44209
44327
  req.on("end", () => {
44210
44328
  try {
44211
- resolve15(JSON.parse(body));
44329
+ resolve16(JSON.parse(body));
44212
44330
  } catch {
44213
- resolve15({});
44331
+ resolve16({});
44214
44332
  }
44215
44333
  });
44216
44334
  });
@@ -44725,7 +44843,7 @@ async function waitForReady(endpoint, timeoutMs = STARTUP_TIMEOUT_MS) {
44725
44843
  const deadline = Date.now() + timeoutMs;
44726
44844
  while (Date.now() < deadline) {
44727
44845
  if (await canConnect(endpoint)) return;
44728
- await new Promise((resolve15) => setTimeout(resolve15, STARTUP_POLL_MS));
44846
+ await new Promise((resolve16) => setTimeout(resolve16, STARTUP_POLL_MS));
44729
44847
  }
44730
44848
  throw new Error(`Session host did not become ready within ${timeoutMs}ms`);
44731
44849
  }
@@ -44831,10 +44949,10 @@ async function installExtension(ide, extension) {
44831
44949
  const buffer = Buffer.from(await res.arrayBuffer());
44832
44950
  const fs24 = await import("fs");
44833
44951
  fs24.writeFileSync(vsixPath, buffer);
44834
- return new Promise((resolve15) => {
44952
+ return new Promise((resolve16) => {
44835
44953
  const cmd = `"${ide.cliCommand}" --install-extension "${vsixPath}" --force`;
44836
44954
  (0, import_child_process10.exec)(cmd, { timeout: 6e4 }, (error48, _stdout, stderr) => {
44837
- resolve15({
44955
+ resolve16({
44838
44956
  extensionId: extension.id,
44839
44957
  marketplaceId: extension.marketplaceId,
44840
44958
  success: !error48,
@@ -44847,11 +44965,11 @@ async function installExtension(ide, extension) {
44847
44965
  } catch (e) {
44848
44966
  }
44849
44967
  }
44850
- return new Promise((resolve15) => {
44968
+ return new Promise((resolve16) => {
44851
44969
  const cmd = `"${ide.cliCommand}" --install-extension ${extension.marketplaceId} --force`;
44852
44970
  (0, import_child_process10.exec)(cmd, { timeout: 6e4 }, (error48, stdout, stderr) => {
44853
44971
  if (error48) {
44854
- resolve15({
44972
+ resolve16({
44855
44973
  extensionId: extension.id,
44856
44974
  marketplaceId: extension.marketplaceId,
44857
44975
  success: false,
@@ -44859,7 +44977,7 @@ async function installExtension(ide, extension) {
44859
44977
  error: stderr || error48.message
44860
44978
  });
44861
44979
  } else {
44862
- resolve15({
44980
+ resolve16({
44863
44981
  extensionId: extension.id,
44864
44982
  marketplaceId: extension.marketplaceId,
44865
44983
  success: true,
@@ -47027,14 +47145,14 @@ var require_filesystem = __commonJS({
47027
47145
  });
47028
47146
  return buffer.subarray(0, bytesRead);
47029
47147
  };
47030
- var readFile = (path29) => new Promise((resolve15, reject) => {
47148
+ var readFile = (path29) => new Promise((resolve16, reject) => {
47031
47149
  fs24.open(path29, "r", (err, fd) => {
47032
47150
  if (err) {
47033
47151
  reject(err);
47034
47152
  } else {
47035
47153
  const buffer = Buffer.alloc(MAX_LENGTH);
47036
47154
  fs24.read(fd, buffer, 0, MAX_LENGTH, 0, (_2, bytesRead) => {
47037
- resolve15(buffer.subarray(0, bytesRead));
47155
+ resolve16(buffer.subarray(0, bytesRead));
47038
47156
  fs24.close(fd, () => {
47039
47157
  });
47040
47158
  });
@@ -47102,10 +47220,10 @@ var require_detect_libc = __commonJS({
47102
47220
  var commandOut = "";
47103
47221
  var safeCommand = () => {
47104
47222
  if (!commandOut) {
47105
- return new Promise((resolve15) => {
47223
+ return new Promise((resolve16) => {
47106
47224
  childProcess2.exec(command, (err, out) => {
47107
47225
  commandOut = err ? " " : out;
47108
- resolve15(commandOut);
47226
+ resolve16(commandOut);
47109
47227
  });
47110
47228
  });
47111
47229
  }
@@ -49785,14 +49903,14 @@ var require_input = __commonJS({
49785
49903
  return this;
49786
49904
  } else {
49787
49905
  if (this._isStreamInput()) {
49788
- return new Promise((resolve15, reject) => {
49906
+ return new Promise((resolve16, reject) => {
49789
49907
  const finished = () => {
49790
49908
  this._flattenBufferIn();
49791
49909
  sharp.metadata(this.options, (err, metadata2) => {
49792
49910
  if (err) {
49793
49911
  reject(is.nativeError(err, stack));
49794
49912
  } else {
49795
- resolve15(metadata2);
49913
+ resolve16(metadata2);
49796
49914
  }
49797
49915
  });
49798
49916
  };
@@ -49803,12 +49921,12 @@ var require_input = __commonJS({
49803
49921
  }
49804
49922
  });
49805
49923
  } else {
49806
- return new Promise((resolve15, reject) => {
49924
+ return new Promise((resolve16, reject) => {
49807
49925
  sharp.metadata(this.options, (err, metadata2) => {
49808
49926
  if (err) {
49809
49927
  reject(is.nativeError(err, stack));
49810
49928
  } else {
49811
- resolve15(metadata2);
49929
+ resolve16(metadata2);
49812
49930
  }
49813
49931
  });
49814
49932
  });
@@ -49841,25 +49959,25 @@ var require_input = __commonJS({
49841
49959
  return this;
49842
49960
  } else {
49843
49961
  if (this._isStreamInput()) {
49844
- return new Promise((resolve15, reject) => {
49962
+ return new Promise((resolve16, reject) => {
49845
49963
  this.on("finish", function() {
49846
49964
  this._flattenBufferIn();
49847
49965
  sharp.stats(this.options, (err, stats2) => {
49848
49966
  if (err) {
49849
49967
  reject(is.nativeError(err, stack));
49850
49968
  } else {
49851
- resolve15(stats2);
49969
+ resolve16(stats2);
49852
49970
  }
49853
49971
  });
49854
49972
  });
49855
49973
  });
49856
49974
  } else {
49857
- return new Promise((resolve15, reject) => {
49975
+ return new Promise((resolve16, reject) => {
49858
49976
  sharp.stats(this.options, (err, stats2) => {
49859
49977
  if (err) {
49860
49978
  reject(is.nativeError(err, stack));
49861
49979
  } else {
49862
- resolve15(stats2);
49980
+ resolve16(stats2);
49863
49981
  }
49864
49982
  });
49865
49983
  });
@@ -53281,7 +53399,7 @@ var require_output = __commonJS({
53281
53399
  return this;
53282
53400
  } else {
53283
53401
  if (this._isStreamInput()) {
53284
- return new Promise((resolve15, reject) => {
53402
+ return new Promise((resolve16, reject) => {
53285
53403
  this.once("finish", () => {
53286
53404
  this._flattenBufferIn();
53287
53405
  sharp.pipeline(this.options, (err, data, info) => {
@@ -53289,24 +53407,24 @@ var require_output = __commonJS({
53289
53407
  reject(is.nativeError(err, stack));
53290
53408
  } else {
53291
53409
  if (this.options.resolveWithObject) {
53292
- resolve15({ data, info });
53410
+ resolve16({ data, info });
53293
53411
  } else {
53294
- resolve15(data);
53412
+ resolve16(data);
53295
53413
  }
53296
53414
  }
53297
53415
  });
53298
53416
  });
53299
53417
  });
53300
53418
  } else {
53301
- return new Promise((resolve15, reject) => {
53419
+ return new Promise((resolve16, reject) => {
53302
53420
  sharp.pipeline(this.options, (err, data, info) => {
53303
53421
  if (err) {
53304
53422
  reject(is.nativeError(err, stack));
53305
53423
  } else {
53306
53424
  if (this.options.resolveWithObject) {
53307
- resolve15({ data, info });
53425
+ resolve16({ data, info });
53308
53426
  } else {
53309
- resolve15(data);
53427
+ resolve16(data);
53310
53428
  }
53311
53429
  }
53312
53430
  });
@@ -54827,7 +54945,7 @@ var init_adhdev_daemon = __esm({
54827
54945
  init_version();
54828
54946
  init_src();
54829
54947
  init_runtime_defaults();
54830
- pkgVersion = resolvePackageVersion({ injectedVersion: "0.8.92" });
54948
+ pkgVersion = resolvePackageVersion({ injectedVersion: "0.8.94" });
54831
54949
  AdhdevDaemon = class _AdhdevDaemon {
54832
54950
  localHttpServer = null;
54833
54951
  localWss = null;
@@ -55671,7 +55789,7 @@ ${err?.stack || ""}`);
55671
55789
  this.localWss.emit("connection", ws, req);
55672
55790
  });
55673
55791
  });
55674
- await new Promise((resolve15, reject) => {
55792
+ await new Promise((resolve16, reject) => {
55675
55793
  const cleanup = () => {
55676
55794
  this.localHttpServer?.off("error", onError);
55677
55795
  this.localHttpServer?.off("listening", onListening);
@@ -55682,7 +55800,7 @@ ${err?.stack || ""}`);
55682
55800
  };
55683
55801
  const onListening = () => {
55684
55802
  cleanup();
55685
- resolve15();
55803
+ resolve16();
55686
55804
  };
55687
55805
  this.localHttpServer.once("error", onError);
55688
55806
  this.localHttpServer.once("listening", onListening);
@@ -55842,12 +55960,12 @@ ${err?.stack || ""}`);
55842
55960
  this.localClients.clear();
55843
55961
  this.localWss?.close();
55844
55962
  this.localWss = null;
55845
- await new Promise((resolve15) => {
55963
+ await new Promise((resolve16) => {
55846
55964
  if (!this.localHttpServer) {
55847
- resolve15();
55965
+ resolve16();
55848
55966
  return;
55849
55967
  }
55850
- this.localHttpServer.close(() => resolve15());
55968
+ this.localHttpServer.close(() => resolve16());
55851
55969
  this.localHttpServer = null;
55852
55970
  });
55853
55971
  } catch {
@@ -56395,14 +56513,14 @@ var require_run_async = __commonJS({
56395
56513
  return function() {
56396
56514
  var args = arguments;
56397
56515
  var originalThis = this;
56398
- var promise2 = new Promise(function(resolve15, reject) {
56516
+ var promise2 = new Promise(function(resolve16, reject) {
56399
56517
  var resolved = false;
56400
56518
  const wrappedResolve = function(value) {
56401
56519
  if (resolved) {
56402
56520
  console.warn("Run-async promise already resolved.");
56403
56521
  }
56404
56522
  resolved = true;
56405
- resolve15(value);
56523
+ resolve16(value);
56406
56524
  };
56407
56525
  var rejected = false;
56408
56526
  const wrappedReject = function(value) {
@@ -57193,7 +57311,7 @@ var require_Observable = __commonJS({
57193
57311
  Observable2.prototype.forEach = function(next, promiseCtor) {
57194
57312
  var _this = this;
57195
57313
  promiseCtor = getPromiseCtor(promiseCtor);
57196
- return new promiseCtor(function(resolve15, reject) {
57314
+ return new promiseCtor(function(resolve16, reject) {
57197
57315
  var subscriber = new Subscriber_1.SafeSubscriber({
57198
57316
  next: function(value) {
57199
57317
  try {
@@ -57204,7 +57322,7 @@ var require_Observable = __commonJS({
57204
57322
  }
57205
57323
  },
57206
57324
  error: reject,
57207
- complete: resolve15
57325
+ complete: resolve16
57208
57326
  });
57209
57327
  _this.subscribe(subscriber);
57210
57328
  });
@@ -57226,14 +57344,14 @@ var require_Observable = __commonJS({
57226
57344
  Observable2.prototype.toPromise = function(promiseCtor) {
57227
57345
  var _this = this;
57228
57346
  promiseCtor = getPromiseCtor(promiseCtor);
57229
- return new promiseCtor(function(resolve15, reject) {
57347
+ return new promiseCtor(function(resolve16, reject) {
57230
57348
  var value;
57231
57349
  _this.subscribe(function(x) {
57232
57350
  return value = x;
57233
57351
  }, function(err) {
57234
57352
  return reject(err);
57235
57353
  }, function() {
57236
- return resolve15(value);
57354
+ return resolve16(value);
57237
57355
  });
57238
57356
  });
57239
57357
  };
@@ -59329,11 +59447,11 @@ var require_innerFrom = __commonJS({
59329
59447
  "use strict";
59330
59448
  var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) {
59331
59449
  function adopt(value) {
59332
- return value instanceof P ? value : new P(function(resolve15) {
59333
- resolve15(value);
59450
+ return value instanceof P ? value : new P(function(resolve16) {
59451
+ resolve16(value);
59334
59452
  });
59335
59453
  }
59336
- return new (P || (P = Promise))(function(resolve15, reject) {
59454
+ return new (P || (P = Promise))(function(resolve16, reject) {
59337
59455
  function fulfilled(value) {
59338
59456
  try {
59339
59457
  step(generator.next(value));
@@ -59349,7 +59467,7 @@ var require_innerFrom = __commonJS({
59349
59467
  }
59350
59468
  }
59351
59469
  function step(result) {
59352
- result.done ? resolve15(result.value) : adopt(result.value).then(fulfilled, rejected);
59470
+ result.done ? resolve16(result.value) : adopt(result.value).then(fulfilled, rejected);
59353
59471
  }
59354
59472
  step((generator = generator.apply(thisArg, _arguments || [])).next());
59355
59473
  });
@@ -59431,14 +59549,14 @@ var require_innerFrom = __commonJS({
59431
59549
  }, i);
59432
59550
  function verb(n) {
59433
59551
  i[n] = o[n] && function(v) {
59434
- return new Promise(function(resolve15, reject) {
59435
- v = o[n](v), settle(resolve15, reject, v.done, v.value);
59552
+ return new Promise(function(resolve16, reject) {
59553
+ v = o[n](v), settle(resolve16, reject, v.done, v.value);
59436
59554
  });
59437
59555
  };
59438
59556
  }
59439
- function settle(resolve15, reject, d, v) {
59557
+ function settle(resolve16, reject, d, v) {
59440
59558
  Promise.resolve(v).then(function(v2) {
59441
- resolve15({ value: v2, done: d });
59559
+ resolve16({ value: v2, done: d });
59442
59560
  }, reject);
59443
59561
  }
59444
59562
  };
@@ -60057,7 +60175,7 @@ var require_lastValueFrom = __commonJS({
60057
60175
  var EmptyError_1 = require_EmptyError();
60058
60176
  function lastValueFrom(source, config2) {
60059
60177
  var hasConfig = typeof config2 === "object";
60060
- return new Promise(function(resolve15, reject) {
60178
+ return new Promise(function(resolve16, reject) {
60061
60179
  var _hasValue = false;
60062
60180
  var _value;
60063
60181
  source.subscribe({
@@ -60068,9 +60186,9 @@ var require_lastValueFrom = __commonJS({
60068
60186
  error: reject,
60069
60187
  complete: function() {
60070
60188
  if (_hasValue) {
60071
- resolve15(_value);
60189
+ resolve16(_value);
60072
60190
  } else if (hasConfig) {
60073
- resolve15(config2.defaultValue);
60191
+ resolve16(config2.defaultValue);
60074
60192
  } else {
60075
60193
  reject(new EmptyError_1.EmptyError());
60076
60194
  }
@@ -60092,16 +60210,16 @@ var require_firstValueFrom = __commonJS({
60092
60210
  var Subscriber_1 = require_Subscriber();
60093
60211
  function firstValueFrom(source, config2) {
60094
60212
  var hasConfig = typeof config2 === "object";
60095
- return new Promise(function(resolve15, reject) {
60213
+ return new Promise(function(resolve16, reject) {
60096
60214
  var subscriber = new Subscriber_1.SafeSubscriber({
60097
60215
  next: function(value) {
60098
- resolve15(value);
60216
+ resolve16(value);
60099
60217
  subscriber.unsubscribe();
60100
60218
  },
60101
60219
  error: reject,
60102
60220
  complete: function() {
60103
60221
  if (hasConfig) {
60104
- resolve15(config2.defaultValue);
60222
+ resolve16(config2.defaultValue);
60105
60223
  } else {
60106
60224
  reject(new EmptyError_1.EmptyError());
60107
60225
  }
@@ -71907,14 +72025,14 @@ var require_async_iterator = __commonJS({
71907
72025
  };
71908
72026
  }
71909
72027
  function readAndResolve(iter) {
71910
- var resolve15 = iter[kLastResolve];
71911
- if (resolve15 !== null) {
72028
+ var resolve16 = iter[kLastResolve];
72029
+ if (resolve16 !== null) {
71912
72030
  var data = iter[kStream].read();
71913
72031
  if (data !== null) {
71914
72032
  iter[kLastPromise] = null;
71915
72033
  iter[kLastResolve] = null;
71916
72034
  iter[kLastReject] = null;
71917
- resolve15(createIterResult(data, false));
72035
+ resolve16(createIterResult(data, false));
71918
72036
  }
71919
72037
  }
71920
72038
  }
@@ -71922,13 +72040,13 @@ var require_async_iterator = __commonJS({
71922
72040
  process.nextTick(readAndResolve, iter);
71923
72041
  }
71924
72042
  function wrapForNext(lastPromise, iter) {
71925
- return function(resolve15, reject) {
72043
+ return function(resolve16, reject) {
71926
72044
  lastPromise.then(function() {
71927
72045
  if (iter[kEnded]) {
71928
- resolve15(createIterResult(void 0, true));
72046
+ resolve16(createIterResult(void 0, true));
71929
72047
  return;
71930
72048
  }
71931
- iter[kHandlePromise](resolve15, reject);
72049
+ iter[kHandlePromise](resolve16, reject);
71932
72050
  }, reject);
71933
72051
  };
71934
72052
  }
@@ -71948,12 +72066,12 @@ var require_async_iterator = __commonJS({
71948
72066
  return Promise.resolve(createIterResult(void 0, true));
71949
72067
  }
71950
72068
  if (this[kStream].destroyed) {
71951
- return new Promise(function(resolve15, reject) {
72069
+ return new Promise(function(resolve16, reject) {
71952
72070
  process.nextTick(function() {
71953
72071
  if (_this[kError]) {
71954
72072
  reject(_this[kError]);
71955
72073
  } else {
71956
- resolve15(createIterResult(void 0, true));
72074
+ resolve16(createIterResult(void 0, true));
71957
72075
  }
71958
72076
  });
71959
72077
  });
@@ -71976,13 +72094,13 @@ var require_async_iterator = __commonJS({
71976
72094
  return this;
71977
72095
  }), _defineProperty(_Object$setPrototypeO, "return", function _return() {
71978
72096
  var _this2 = this;
71979
- return new Promise(function(resolve15, reject) {
72097
+ return new Promise(function(resolve16, reject) {
71980
72098
  _this2[kStream].destroy(null, function(err) {
71981
72099
  if (err) {
71982
72100
  reject(err);
71983
72101
  return;
71984
72102
  }
71985
- resolve15(createIterResult(void 0, true));
72103
+ resolve16(createIterResult(void 0, true));
71986
72104
  });
71987
72105
  });
71988
72106
  }), _Object$setPrototypeO), AsyncIteratorPrototype);
@@ -72004,15 +72122,15 @@ var require_async_iterator = __commonJS({
72004
72122
  value: stream._readableState.endEmitted,
72005
72123
  writable: true
72006
72124
  }), _defineProperty(_Object$create, kHandlePromise, {
72007
- value: function value(resolve15, reject) {
72125
+ value: function value(resolve16, reject) {
72008
72126
  var data = iterator[kStream].read();
72009
72127
  if (data) {
72010
72128
  iterator[kLastPromise] = null;
72011
72129
  iterator[kLastResolve] = null;
72012
72130
  iterator[kLastReject] = null;
72013
- resolve15(createIterResult(data, false));
72131
+ resolve16(createIterResult(data, false));
72014
72132
  } else {
72015
- iterator[kLastResolve] = resolve15;
72133
+ iterator[kLastResolve] = resolve16;
72016
72134
  iterator[kLastReject] = reject;
72017
72135
  }
72018
72136
  },
@@ -72031,12 +72149,12 @@ var require_async_iterator = __commonJS({
72031
72149
  iterator[kError] = err;
72032
72150
  return;
72033
72151
  }
72034
- var resolve15 = iterator[kLastResolve];
72035
- if (resolve15 !== null) {
72152
+ var resolve16 = iterator[kLastResolve];
72153
+ if (resolve16 !== null) {
72036
72154
  iterator[kLastPromise] = null;
72037
72155
  iterator[kLastResolve] = null;
72038
72156
  iterator[kLastReject] = null;
72039
- resolve15(createIterResult(void 0, true));
72157
+ resolve16(createIterResult(void 0, true));
72040
72158
  }
72041
72159
  iterator[kEnded] = true;
72042
72160
  });
@@ -72051,7 +72169,7 @@ var require_async_iterator = __commonJS({
72051
72169
  var require_from2 = __commonJS({
72052
72170
  "../../node_modules/readable-stream/lib/internal/streams/from.js"(exports2, module2) {
72053
72171
  "use strict";
72054
- function asyncGeneratorStep(gen, resolve15, reject, _next, _throw, key, arg) {
72172
+ function asyncGeneratorStep(gen, resolve16, reject, _next, _throw, key, arg) {
72055
72173
  try {
72056
72174
  var info = gen[key](arg);
72057
72175
  var value = info.value;
@@ -72060,7 +72178,7 @@ var require_from2 = __commonJS({
72060
72178
  return;
72061
72179
  }
72062
72180
  if (info.done) {
72063
- resolve15(value);
72181
+ resolve16(value);
72064
72182
  } else {
72065
72183
  Promise.resolve(value).then(_next, _throw);
72066
72184
  }
@@ -72068,13 +72186,13 @@ var require_from2 = __commonJS({
72068
72186
  function _asyncToGenerator(fn) {
72069
72187
  return function() {
72070
72188
  var self2 = this, args = arguments;
72071
- return new Promise(function(resolve15, reject) {
72189
+ return new Promise(function(resolve16, reject) {
72072
72190
  var gen = fn.apply(self2, args);
72073
72191
  function _next(value) {
72074
- asyncGeneratorStep(gen, resolve15, reject, _next, _throw, "next", value);
72192
+ asyncGeneratorStep(gen, resolve16, reject, _next, _throw, "next", value);
72075
72193
  }
72076
72194
  function _throw(err) {
72077
- asyncGeneratorStep(gen, resolve15, reject, _next, _throw, "throw", err);
72195
+ asyncGeneratorStep(gen, resolve16, reject, _next, _throw, "throw", err);
72078
72196
  }
72079
72197
  _next(void 0);
72080
72198
  });
@@ -74013,9 +74131,9 @@ var init_base = __esm({
74013
74131
  * @return {Promise}
74014
74132
  */
74015
74133
  run() {
74016
- return new Promise((resolve15, reject) => {
74134
+ return new Promise((resolve16, reject) => {
74017
74135
  this._run(
74018
- (value) => resolve15(value),
74136
+ (value) => resolve16(value),
74019
74137
  (error48) => reject(error48)
74020
74138
  );
74021
74139
  });
@@ -80647,7 +80765,7 @@ var require_lib2 = __commonJS({
80647
80765
  return matches;
80648
80766
  };
80649
80767
  exports2.analyse = analyse;
80650
- var detectFile = (filepath, opts = {}) => new Promise((resolve15, reject) => {
80768
+ var detectFile = (filepath, opts = {}) => new Promise((resolve16, reject) => {
80651
80769
  let fd;
80652
80770
  const fs24 = (0, node_1.default)();
80653
80771
  const handler = (err, buffer) => {
@@ -80657,7 +80775,7 @@ var require_lib2 = __commonJS({
80657
80775
  if (err) {
80658
80776
  reject(err);
80659
80777
  } else if (buffer) {
80660
- resolve15((0, exports2.detect)(buffer));
80778
+ resolve16((0, exports2.detect)(buffer));
80661
80779
  } else {
80662
80780
  reject(new Error("No error and no buffer received"));
80663
80781
  }
@@ -86842,14 +86960,14 @@ var baseOpen = async (options) => {
86842
86960
  }
86843
86961
  const subprocess = import_node_child_process5.default.spawn(command, cliArguments, childProcessOptions);
86844
86962
  if (options.wait) {
86845
- return new Promise((resolve15, reject) => {
86963
+ return new Promise((resolve16, reject) => {
86846
86964
  subprocess.once("error", reject);
86847
86965
  subprocess.once("close", (exitCode) => {
86848
86966
  if (!options.allowNonzeroExitCode && exitCode > 0) {
86849
86967
  reject(new Error(`Exited with code ${exitCode}`));
86850
86968
  return;
86851
86969
  }
86852
- resolve15(subprocess);
86970
+ resolve16(subprocess);
86853
86971
  });
86854
86972
  });
86855
86973
  }