@adhdev/daemon-core 0.9.82-rc.129 → 0.9.82-rc.130
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 +174 -121
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +178 -125
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/commands/chat-commands.ts +85 -6
package/dist/index.js
CHANGED
|
@@ -2153,19 +2153,19 @@ function resolveCommandPath(command) {
|
|
|
2153
2153
|
return null;
|
|
2154
2154
|
}
|
|
2155
2155
|
function execAsync(cmd, timeoutMs = 5e3) {
|
|
2156
|
-
return new Promise((
|
|
2156
|
+
return new Promise((resolve18) => {
|
|
2157
2157
|
const child = (0, import_child_process.exec)(cmd, {
|
|
2158
2158
|
encoding: "utf-8",
|
|
2159
2159
|
timeout: timeoutMs,
|
|
2160
2160
|
...process.platform === "win32" ? { windowsHide: true } : {}
|
|
2161
2161
|
}, (err, stdout) => {
|
|
2162
2162
|
if (err || !stdout?.trim()) {
|
|
2163
|
-
|
|
2163
|
+
resolve18(null);
|
|
2164
2164
|
} else {
|
|
2165
|
-
|
|
2165
|
+
resolve18(stdout.trim());
|
|
2166
2166
|
}
|
|
2167
2167
|
});
|
|
2168
|
-
child.on("error", () =>
|
|
2168
|
+
child.on("error", () => resolve18(null));
|
|
2169
2169
|
});
|
|
2170
2170
|
}
|
|
2171
2171
|
async function detectCLIs(providerLoader, options) {
|
|
@@ -5384,7 +5384,7 @@ ${lastSnapshot}`;
|
|
|
5384
5384
|
`[${this.cliType}] Waiting for interactive prompt: status=${status} stableMs=${stableMs} recentOutputMs=${recentlyOutput} screen=${JSON.stringify(summarizeCliTraceText(screenText, 220)).slice(0, 260)}`
|
|
5385
5385
|
);
|
|
5386
5386
|
}
|
|
5387
|
-
await new Promise((
|
|
5387
|
+
await new Promise((resolve18) => setTimeout(resolve18, 50));
|
|
5388
5388
|
}
|
|
5389
5389
|
const finalScreenText = this.terminalScreen.getText() || "";
|
|
5390
5390
|
LOG.warn(
|
|
@@ -6629,7 +6629,7 @@ ${lastSnapshot}`;
|
|
|
6629
6629
|
const deadline = Date.now() + 1e4;
|
|
6630
6630
|
while (this.startupParseGate && Date.now() < deadline) {
|
|
6631
6631
|
this.resolveStartupState("send_wait");
|
|
6632
|
-
await new Promise((
|
|
6632
|
+
await new Promise((resolve18) => setTimeout(resolve18, 50));
|
|
6633
6633
|
}
|
|
6634
6634
|
}
|
|
6635
6635
|
const parsedStatusBeforeSend = !allowInputDuringGeneration ? (() => {
|
|
@@ -6726,13 +6726,13 @@ ${lastSnapshot}`;
|
|
|
6726
6726
|
}
|
|
6727
6727
|
this.responseEpoch += 1;
|
|
6728
6728
|
this.responseSettleIgnoreUntil = Date.now() + submitDelayMs + this.timeouts.outputSettle + 250;
|
|
6729
|
-
await new Promise((
|
|
6729
|
+
await new Promise((resolve18, reject) => {
|
|
6730
6730
|
let resolved = false;
|
|
6731
6731
|
const completion = {
|
|
6732
6732
|
resolveOnce: () => {
|
|
6733
6733
|
if (resolved) return;
|
|
6734
6734
|
resolved = true;
|
|
6735
|
-
|
|
6735
|
+
resolve18();
|
|
6736
6736
|
},
|
|
6737
6737
|
rejectOnce: (error) => {
|
|
6738
6738
|
if (resolved) return;
|
|
@@ -6890,17 +6890,17 @@ ${lastSnapshot}`;
|
|
|
6890
6890
|
}
|
|
6891
6891
|
}
|
|
6892
6892
|
waitForStopped(timeoutMs) {
|
|
6893
|
-
return new Promise((
|
|
6893
|
+
return new Promise((resolve18) => {
|
|
6894
6894
|
const startedAt = Date.now();
|
|
6895
6895
|
const timer = setInterval(() => {
|
|
6896
6896
|
if (!this.ptyProcess || this.currentStatus === "stopped") {
|
|
6897
6897
|
clearInterval(timer);
|
|
6898
|
-
|
|
6898
|
+
resolve18(true);
|
|
6899
6899
|
return;
|
|
6900
6900
|
}
|
|
6901
6901
|
if (Date.now() - startedAt >= timeoutMs) {
|
|
6902
6902
|
clearInterval(timer);
|
|
6903
|
-
|
|
6903
|
+
resolve18(false);
|
|
6904
6904
|
}
|
|
6905
6905
|
}, 100);
|
|
6906
6906
|
});
|
|
@@ -11026,7 +11026,7 @@ var DaemonCdpManager = class {
|
|
|
11026
11026
|
* Returns multiple entries if multiple IDE windows are open on same port
|
|
11027
11027
|
*/
|
|
11028
11028
|
static listAllTargets(port) {
|
|
11029
|
-
return new Promise((
|
|
11029
|
+
return new Promise((resolve18) => {
|
|
11030
11030
|
const req = http.get(`http://127.0.0.1:${port}/json`, (res) => {
|
|
11031
11031
|
let data = "";
|
|
11032
11032
|
res.on("data", (chunk) => data += chunk.toString());
|
|
@@ -11042,16 +11042,16 @@ var DaemonCdpManager = class {
|
|
|
11042
11042
|
(t) => !isNonMain(t.title || "") && t.url?.includes("workbench.html") && !t.url?.includes("agent")
|
|
11043
11043
|
);
|
|
11044
11044
|
const fallbackPages = pages.filter((t) => !isNonMain(t.title || ""));
|
|
11045
|
-
|
|
11045
|
+
resolve18(mainPages.length > 0 ? mainPages : fallbackPages);
|
|
11046
11046
|
} catch {
|
|
11047
|
-
|
|
11047
|
+
resolve18([]);
|
|
11048
11048
|
}
|
|
11049
11049
|
});
|
|
11050
11050
|
});
|
|
11051
|
-
req.on("error", () =>
|
|
11051
|
+
req.on("error", () => resolve18([]));
|
|
11052
11052
|
req.setTimeout(2e3, () => {
|
|
11053
11053
|
req.destroy();
|
|
11054
|
-
|
|
11054
|
+
resolve18([]);
|
|
11055
11055
|
});
|
|
11056
11056
|
});
|
|
11057
11057
|
}
|
|
@@ -11091,7 +11091,7 @@ var DaemonCdpManager = class {
|
|
|
11091
11091
|
}
|
|
11092
11092
|
}
|
|
11093
11093
|
findTargetOnPort(port) {
|
|
11094
|
-
return new Promise((
|
|
11094
|
+
return new Promise((resolve18) => {
|
|
11095
11095
|
const req = http.get(`http://127.0.0.1:${port}/json`, (res) => {
|
|
11096
11096
|
let data = "";
|
|
11097
11097
|
res.on("data", (chunk) => data += chunk.toString());
|
|
@@ -11102,7 +11102,7 @@ var DaemonCdpManager = class {
|
|
|
11102
11102
|
(t) => (t.type === "page" || t.type === "browser" || t.type === "Page") && t.webSocketDebuggerUrl
|
|
11103
11103
|
);
|
|
11104
11104
|
if (pages.length === 0) {
|
|
11105
|
-
|
|
11105
|
+
resolve18(targets.find((t) => t.webSocketDebuggerUrl) || null);
|
|
11106
11106
|
return;
|
|
11107
11107
|
}
|
|
11108
11108
|
const titleFilteredPages = pages.filter((t) => !this.isNonMainTitle(t.title || ""));
|
|
@@ -11121,25 +11121,25 @@ var DaemonCdpManager = class {
|
|
|
11121
11121
|
this._targetId = selected.target.id;
|
|
11122
11122
|
}
|
|
11123
11123
|
this._pageTitle = selected.target.title || "";
|
|
11124
|
-
|
|
11124
|
+
resolve18(selected.target);
|
|
11125
11125
|
return;
|
|
11126
11126
|
}
|
|
11127
11127
|
if (previousTargetId) {
|
|
11128
11128
|
this.log(`[CDP] Target ${previousTargetId} not found in page list`);
|
|
11129
|
-
|
|
11129
|
+
resolve18(null);
|
|
11130
11130
|
return;
|
|
11131
11131
|
}
|
|
11132
11132
|
this._pageTitle = list[0]?.title || "";
|
|
11133
|
-
|
|
11133
|
+
resolve18(list[0]);
|
|
11134
11134
|
} catch {
|
|
11135
|
-
|
|
11135
|
+
resolve18(null);
|
|
11136
11136
|
}
|
|
11137
11137
|
});
|
|
11138
11138
|
});
|
|
11139
|
-
req.on("error", () =>
|
|
11139
|
+
req.on("error", () => resolve18(null));
|
|
11140
11140
|
req.setTimeout(2e3, () => {
|
|
11141
11141
|
req.destroy();
|
|
11142
|
-
|
|
11142
|
+
resolve18(null);
|
|
11143
11143
|
});
|
|
11144
11144
|
});
|
|
11145
11145
|
}
|
|
@@ -11150,7 +11150,7 @@ var DaemonCdpManager = class {
|
|
|
11150
11150
|
this.extensionProviders = providers;
|
|
11151
11151
|
}
|
|
11152
11152
|
connectToTarget(wsUrl) {
|
|
11153
|
-
return new Promise((
|
|
11153
|
+
return new Promise((resolve18) => {
|
|
11154
11154
|
this.ws = new import_ws.default(wsUrl);
|
|
11155
11155
|
this.ws.on("open", async () => {
|
|
11156
11156
|
this._connected = true;
|
|
@@ -11160,17 +11160,17 @@ var DaemonCdpManager = class {
|
|
|
11160
11160
|
}
|
|
11161
11161
|
this.connectBrowserWs().catch(() => {
|
|
11162
11162
|
});
|
|
11163
|
-
|
|
11163
|
+
resolve18(true);
|
|
11164
11164
|
});
|
|
11165
11165
|
this.ws.on("message", (data) => {
|
|
11166
11166
|
try {
|
|
11167
11167
|
const msg = JSON.parse(data.toString());
|
|
11168
11168
|
if (msg.id && this.pending.has(msg.id)) {
|
|
11169
|
-
const { resolve:
|
|
11169
|
+
const { resolve: resolve19, reject } = this.pending.get(msg.id);
|
|
11170
11170
|
this.pending.delete(msg.id);
|
|
11171
11171
|
this.failureCount = 0;
|
|
11172
11172
|
if (msg.error) reject(new Error(msg.error.message));
|
|
11173
|
-
else
|
|
11173
|
+
else resolve19(msg.result);
|
|
11174
11174
|
} else if (msg.method === "Runtime.executionContextCreated") {
|
|
11175
11175
|
this.contexts.add(msg.params.context.id);
|
|
11176
11176
|
} else if (msg.method === "Runtime.executionContextDestroyed") {
|
|
@@ -11193,7 +11193,7 @@ var DaemonCdpManager = class {
|
|
|
11193
11193
|
this.ws.on("error", (err) => {
|
|
11194
11194
|
this.log(`[CDP] WebSocket error: ${err.message}`);
|
|
11195
11195
|
this._connected = false;
|
|
11196
|
-
|
|
11196
|
+
resolve18(false);
|
|
11197
11197
|
});
|
|
11198
11198
|
});
|
|
11199
11199
|
}
|
|
@@ -11207,7 +11207,7 @@ var DaemonCdpManager = class {
|
|
|
11207
11207
|
return;
|
|
11208
11208
|
}
|
|
11209
11209
|
this.log(`[CDP] Connecting browser WS for target discovery...`);
|
|
11210
|
-
await new Promise((
|
|
11210
|
+
await new Promise((resolve18, reject) => {
|
|
11211
11211
|
this.browserWs = new import_ws.default(browserWsUrl);
|
|
11212
11212
|
this.browserWs.on("open", async () => {
|
|
11213
11213
|
this._browserConnected = true;
|
|
@@ -11217,16 +11217,16 @@ var DaemonCdpManager = class {
|
|
|
11217
11217
|
} catch (e) {
|
|
11218
11218
|
this.log(`[CDP] setDiscoverTargets failed: ${e.message}`);
|
|
11219
11219
|
}
|
|
11220
|
-
|
|
11220
|
+
resolve18();
|
|
11221
11221
|
});
|
|
11222
11222
|
this.browserWs.on("message", (data) => {
|
|
11223
11223
|
try {
|
|
11224
11224
|
const msg = JSON.parse(data.toString());
|
|
11225
11225
|
if (msg.id && this.browserPending.has(msg.id)) {
|
|
11226
|
-
const { resolve:
|
|
11226
|
+
const { resolve: resolve19, reject: reject2 } = this.browserPending.get(msg.id);
|
|
11227
11227
|
this.browserPending.delete(msg.id);
|
|
11228
11228
|
if (msg.error) reject2(new Error(msg.error.message));
|
|
11229
|
-
else
|
|
11229
|
+
else resolve19(msg.result);
|
|
11230
11230
|
}
|
|
11231
11231
|
} catch {
|
|
11232
11232
|
}
|
|
@@ -11246,31 +11246,31 @@ var DaemonCdpManager = class {
|
|
|
11246
11246
|
}
|
|
11247
11247
|
}
|
|
11248
11248
|
getBrowserWsUrl() {
|
|
11249
|
-
return new Promise((
|
|
11249
|
+
return new Promise((resolve18) => {
|
|
11250
11250
|
const req = http.get(`http://127.0.0.1:${this.port}/json/version`, (res) => {
|
|
11251
11251
|
let data = "";
|
|
11252
11252
|
res.on("data", (chunk) => data += chunk.toString());
|
|
11253
11253
|
res.on("end", () => {
|
|
11254
11254
|
try {
|
|
11255
11255
|
const info = JSON.parse(data);
|
|
11256
|
-
|
|
11256
|
+
resolve18(info.webSocketDebuggerUrl || null);
|
|
11257
11257
|
} catch {
|
|
11258
|
-
|
|
11258
|
+
resolve18(null);
|
|
11259
11259
|
}
|
|
11260
11260
|
});
|
|
11261
11261
|
});
|
|
11262
|
-
req.on("error", () =>
|
|
11262
|
+
req.on("error", () => resolve18(null));
|
|
11263
11263
|
req.setTimeout(3e3, () => {
|
|
11264
11264
|
req.destroy();
|
|
11265
|
-
|
|
11265
|
+
resolve18(null);
|
|
11266
11266
|
});
|
|
11267
11267
|
});
|
|
11268
11268
|
}
|
|
11269
11269
|
sendBrowser(method, params = {}, timeoutMs = 15e3) {
|
|
11270
|
-
return new Promise((
|
|
11270
|
+
return new Promise((resolve18, reject) => {
|
|
11271
11271
|
if (!this.browserWs || !this._browserConnected) return reject(new Error("Browser WS not connected"));
|
|
11272
11272
|
const id = this.browserMsgId++;
|
|
11273
|
-
this.browserPending.set(id, { resolve:
|
|
11273
|
+
this.browserPending.set(id, { resolve: resolve18, reject });
|
|
11274
11274
|
this.browserWs.send(JSON.stringify({ id, method, params }));
|
|
11275
11275
|
setTimeout(() => {
|
|
11276
11276
|
if (this.browserPending.has(id)) {
|
|
@@ -11310,11 +11310,11 @@ var DaemonCdpManager = class {
|
|
|
11310
11310
|
}
|
|
11311
11311
|
// ─── CDP Protocol ────────────────────────────────────────
|
|
11312
11312
|
sendInternal(method, params = {}, timeoutMs = 15e3) {
|
|
11313
|
-
return new Promise((
|
|
11313
|
+
return new Promise((resolve18, reject) => {
|
|
11314
11314
|
if (!this.ws || !this._connected) return reject(new Error("CDP not connected"));
|
|
11315
11315
|
if (this.ws.readyState !== import_ws.default.OPEN) return reject(new Error("WebSocket not open"));
|
|
11316
11316
|
const id = this.msgId++;
|
|
11317
|
-
this.pending.set(id, { resolve:
|
|
11317
|
+
this.pending.set(id, { resolve: resolve18, reject });
|
|
11318
11318
|
this.ws.send(JSON.stringify({ id, method, params }));
|
|
11319
11319
|
setTimeout(() => {
|
|
11320
11320
|
if (this.pending.has(id)) {
|
|
@@ -11563,7 +11563,7 @@ var DaemonCdpManager = class {
|
|
|
11563
11563
|
const browserWs = this.browserWs;
|
|
11564
11564
|
let msgId = this.browserMsgId;
|
|
11565
11565
|
const sendWs = (method, params = {}, sessionId) => {
|
|
11566
|
-
return new Promise((
|
|
11566
|
+
return new Promise((resolve18, reject) => {
|
|
11567
11567
|
const mid = msgId++;
|
|
11568
11568
|
this.browserMsgId = msgId;
|
|
11569
11569
|
const handler = (raw) => {
|
|
@@ -11572,7 +11572,7 @@ var DaemonCdpManager = class {
|
|
|
11572
11572
|
if (msg.id === mid) {
|
|
11573
11573
|
browserWs.removeListener("message", handler);
|
|
11574
11574
|
if (msg.error) reject(new Error(msg.error.message || JSON.stringify(msg.error)));
|
|
11575
|
-
else
|
|
11575
|
+
else resolve18(msg.result);
|
|
11576
11576
|
}
|
|
11577
11577
|
} catch {
|
|
11578
11578
|
}
|
|
@@ -11773,14 +11773,14 @@ var DaemonCdpManager = class {
|
|
|
11773
11773
|
if (!ws || ws.readyState !== import_ws.default.OPEN) {
|
|
11774
11774
|
throw new Error("CDP not connected");
|
|
11775
11775
|
}
|
|
11776
|
-
return new Promise((
|
|
11776
|
+
return new Promise((resolve18, reject) => {
|
|
11777
11777
|
const id = getNextId();
|
|
11778
11778
|
pendingMap.set(id, {
|
|
11779
11779
|
resolve: (result) => {
|
|
11780
11780
|
if (result?.result?.subtype === "error") {
|
|
11781
11781
|
reject(new Error(result.result.description));
|
|
11782
11782
|
} else {
|
|
11783
|
-
|
|
11783
|
+
resolve18(result?.result?.value);
|
|
11784
11784
|
}
|
|
11785
11785
|
},
|
|
11786
11786
|
reject
|
|
@@ -11812,10 +11812,10 @@ var DaemonCdpManager = class {
|
|
|
11812
11812
|
throw new Error("CDP not connected");
|
|
11813
11813
|
}
|
|
11814
11814
|
const sendViaSession = (method, params = {}) => {
|
|
11815
|
-
return new Promise((
|
|
11815
|
+
return new Promise((resolve18, reject) => {
|
|
11816
11816
|
const pendingMap = this._browserConnected ? this.browserPending : this.pending;
|
|
11817
11817
|
const id = this._browserConnected ? this.browserMsgId++ : this.msgId++;
|
|
11818
|
-
pendingMap.set(id, { resolve:
|
|
11818
|
+
pendingMap.set(id, { resolve: resolve18, reject });
|
|
11819
11819
|
ws.send(JSON.stringify({ id, sessionId, method, params }));
|
|
11820
11820
|
setTimeout(() => {
|
|
11821
11821
|
if (pendingMap.has(id)) {
|
|
@@ -16921,7 +16921,7 @@ function getSendChatInputEnvelope(args) {
|
|
|
16921
16921
|
return normalizeInputEnvelope(args?.input ? { input: args.input } : args);
|
|
16922
16922
|
}
|
|
16923
16923
|
function sleep(ms) {
|
|
16924
|
-
return new Promise((
|
|
16924
|
+
return new Promise((resolve18) => setTimeout(resolve18, ms));
|
|
16925
16925
|
}
|
|
16926
16926
|
async function waitOnceForFreshHermesCliStart(adapter, log) {
|
|
16927
16927
|
if (adapter.cliType !== "hermes-cli") return;
|
|
@@ -17161,6 +17161,39 @@ function readExactRuntimeMirrorMessages(args) {
|
|
|
17161
17161
|
return historySessionId === targetSessionId || instanceId === targetSessionId;
|
|
17162
17162
|
});
|
|
17163
17163
|
}
|
|
17164
|
+
function normalizeComparableWorkspace(value) {
|
|
17165
|
+
const text = typeof value === "string" ? value.trim() : "";
|
|
17166
|
+
if (!text) return "";
|
|
17167
|
+
return path12.resolve(text);
|
|
17168
|
+
}
|
|
17169
|
+
function isCurrentRuntimePtySafelyAttributed(args) {
|
|
17170
|
+
if (args.adapter.cliType !== "codex-cli") return false;
|
|
17171
|
+
if (!Array.isArray(args.ptyMessages) || args.ptyMessages.length === 0) return false;
|
|
17172
|
+
const targetSessionId = typeof args.readChatArgs?.targetSessionId === "string" ? args.readChatArgs.targetSessionId.trim() : "";
|
|
17173
|
+
const currentSession = args.helpers.currentSession;
|
|
17174
|
+
const currentSessionId = typeof currentSession?.sessionId === "string" ? currentSession.sessionId.trim() : "";
|
|
17175
|
+
if (!targetSessionId || !currentSessionId || targetSessionId !== currentSessionId) return false;
|
|
17176
|
+
const runtimeMeta = typeof args.adapter.getRuntimeMetadata === "function" ? args.adapter.getRuntimeMetadata() : null;
|
|
17177
|
+
const runtimeId = typeof runtimeMeta?.runtimeId === "string" ? runtimeMeta.runtimeId.trim() : "";
|
|
17178
|
+
if (!runtimeId || runtimeId !== targetSessionId) return false;
|
|
17179
|
+
const surfaceKind = typeof runtimeMeta?.surfaceKind === "string" ? runtimeMeta.surfaceKind : "";
|
|
17180
|
+
if (surfaceKind === "inactive_record" || surfaceKind === "recovery_snapshot") return false;
|
|
17181
|
+
const sessionWorkspace = normalizeComparableWorkspace(args.sessionWorkspace);
|
|
17182
|
+
const adapterWorkspace = normalizeComparableWorkspace(args.adapter.workingDir);
|
|
17183
|
+
if (!sessionWorkspace || !adapterWorkspace || sessionWorkspace !== adapterWorkspace) return false;
|
|
17184
|
+
const intendedWorkspace = normalizeComparableWorkspace(args.intendedWorkspace);
|
|
17185
|
+
if (intendedWorkspace && intendedWorkspace !== sessionWorkspace) return false;
|
|
17186
|
+
const registryEntry = args.helpers.ctx?.sessionRegistry?.get?.(targetSessionId);
|
|
17187
|
+
const registryInstanceKey = typeof registryEntry?.adapterKey === "string" && registryEntry.adapterKey.trim() ? registryEntry.adapterKey.trim() : typeof registryEntry?.instanceKey === "string" && registryEntry.instanceKey.trim() ? registryEntry.instanceKey.trim() : "";
|
|
17188
|
+
if (registryInstanceKey) {
|
|
17189
|
+
const targetInstance = args.helpers.ctx?.instanceManager?.getInstance?.(registryInstanceKey);
|
|
17190
|
+
if (targetInstance) {
|
|
17191
|
+
const instanceType = typeof targetInstance.type === "string" ? targetInstance.type : "";
|
|
17192
|
+
if (instanceType && instanceType !== args.adapter.cliType) return false;
|
|
17193
|
+
}
|
|
17194
|
+
}
|
|
17195
|
+
return true;
|
|
17196
|
+
}
|
|
17164
17197
|
function supportsCliNativeTranscript(providerType, provider) {
|
|
17165
17198
|
if (CLI_NATIVE_TRANSCRIPT_PROVIDERS.has(providerType)) return true;
|
|
17166
17199
|
return provider?.category === "cli" && isNativeSourceCanonicalHistory(provider?.canonicalHistory);
|
|
@@ -17778,7 +17811,7 @@ function getCliVisibleTranscriptCount(adapter) {
|
|
|
17778
17811
|
async function getStableExtensionBaseline(h) {
|
|
17779
17812
|
const first = await readExtensionChatState(h);
|
|
17780
17813
|
if (getStateMessageCount(first) > 0 || getStateLastSignature(first)) return first;
|
|
17781
|
-
await new Promise((
|
|
17814
|
+
await new Promise((resolve18) => setTimeout(resolve18, 150));
|
|
17782
17815
|
const second = await readExtensionChatState(h);
|
|
17783
17816
|
return getStateMessageCount(second) >= getStateMessageCount(first) ? second : first;
|
|
17784
17817
|
}
|
|
@@ -17786,7 +17819,7 @@ async function verifyExtensionSendObserved(h, before) {
|
|
|
17786
17819
|
const beforeCount = getStateMessageCount(before);
|
|
17787
17820
|
const beforeSignature = getStateLastSignature(before);
|
|
17788
17821
|
for (let attempt = 0; attempt < 12; attempt += 1) {
|
|
17789
|
-
await new Promise((
|
|
17822
|
+
await new Promise((resolve18) => setTimeout(resolve18, 250));
|
|
17790
17823
|
const state = await readExtensionChatState(h);
|
|
17791
17824
|
if (state?.status === "waiting_approval") return true;
|
|
17792
17825
|
const afterCount = getStateMessageCount(state);
|
|
@@ -18009,8 +18042,16 @@ async function handleReadChat(h, args) {
|
|
|
18009
18042
|
freshEnough
|
|
18010
18043
|
});
|
|
18011
18044
|
const unsafeNativeFallback = adapter.cliType === "codex-cli" && isUnsafeNativeTranscriptFallback(fallbackReason);
|
|
18012
|
-
const
|
|
18013
|
-
|
|
18045
|
+
const safeCurrentRuntimePtyMessages = unsafeNativeFallback && isCurrentRuntimePtySafelyAttributed({
|
|
18046
|
+
adapter,
|
|
18047
|
+
helpers: h,
|
|
18048
|
+
readChatArgs: args,
|
|
18049
|
+
sessionWorkspace,
|
|
18050
|
+
intendedWorkspace,
|
|
18051
|
+
ptyMessages: returnedMessages
|
|
18052
|
+
});
|
|
18053
|
+
const safeRuntimeAckMessages = unsafeNativeFallback && !safeCurrentRuntimePtyMessages ? selectRuntimeInputAckMessages(returnedMessages) : [];
|
|
18054
|
+
const exactRuntimeMirrorMessages = unsafeNativeFallback && !safeCurrentRuntimePtyMessages && safeRuntimeAckMessages.length === 0 ? readExactRuntimeMirrorMessages({
|
|
18014
18055
|
providerType,
|
|
18015
18056
|
targetSessionId: typeof args?.targetSessionId === "string" ? args.targetSessionId : void 0,
|
|
18016
18057
|
currentSessionId: typeof h.currentSession?.sessionId === "string" ? h.currentSession.sessionId : void 0,
|
|
@@ -18019,10 +18060,17 @@ async function handleReadChat(h, args) {
|
|
|
18019
18060
|
}) : [];
|
|
18020
18061
|
const safeDaemonMessages = safeRuntimeAckMessages.length > 0 ? safeRuntimeAckMessages : exactRuntimeMirrorMessages;
|
|
18021
18062
|
if (unsafeNativeFallback) {
|
|
18022
|
-
|
|
18023
|
-
|
|
18024
|
-
|
|
18025
|
-
|
|
18063
|
+
if (safeCurrentRuntimePtyMessages) {
|
|
18064
|
+
selectedMessages = returnedMessages;
|
|
18065
|
+
selectedTranscriptAuthority = "daemon";
|
|
18066
|
+
selectedCoverage = coverage || "current-turn";
|
|
18067
|
+
selectedStatus = returnedStatus;
|
|
18068
|
+
} else {
|
|
18069
|
+
selectedMessages = safeDaemonMessages;
|
|
18070
|
+
selectedTranscriptAuthority = safeDaemonMessages.length > 0 ? "daemon" : void 0;
|
|
18071
|
+
selectedCoverage = safeDaemonMessages.length > 0 ? "tail" : void 0;
|
|
18072
|
+
selectedStatus = coerceUnsafeNativeFallbackStatus(returnedStatus, activeModal);
|
|
18073
|
+
}
|
|
18026
18074
|
}
|
|
18027
18075
|
messageSource = buildCliMessageSourceProvenance({
|
|
18028
18076
|
selected: "pty-parser",
|
|
@@ -18040,11 +18088,16 @@ async function handleReadChat(h, args) {
|
|
|
18040
18088
|
unavailableReason,
|
|
18041
18089
|
nativeMessages,
|
|
18042
18090
|
ptyMessages: returnedMessages,
|
|
18043
|
-
returnedMessages: unsafeNativeFallback ? safeDaemonMessages : returnedMessages,
|
|
18091
|
+
returnedMessages: unsafeNativeFallback && !safeCurrentRuntimePtyMessages ? safeDaemonMessages : returnedMessages,
|
|
18044
18092
|
safeMapping,
|
|
18045
18093
|
freshEnough,
|
|
18046
|
-
ptyStatusApprovalOnly: unsafeNativeFallback
|
|
18094
|
+
ptyStatusApprovalOnly: unsafeNativeFallback && !safeCurrentRuntimePtyMessages
|
|
18047
18095
|
});
|
|
18096
|
+
if (safeCurrentRuntimePtyMessages) {
|
|
18097
|
+
messageSource.selectedDaemonSource = "current-runtime-pty";
|
|
18098
|
+
messageSource.transcriptAuthority = "daemon";
|
|
18099
|
+
messageSource.runtimeMappingSafe = true;
|
|
18100
|
+
}
|
|
18048
18101
|
if (unsafeNativeFallback && exactRuntimeMirrorMessages.length > 0) {
|
|
18049
18102
|
messageSource.selectedDaemonSource = "exact-runtime-mirror";
|
|
18050
18103
|
messageSource.transcriptAuthority = "daemon";
|
|
@@ -19727,7 +19780,7 @@ async function executeProviderScript(h, args, scriptName) {
|
|
|
19727
19780
|
const enterCount = cliCommand.enterCount || 1;
|
|
19728
19781
|
await adapter.writeRaw(cliCommand.text + "\r");
|
|
19729
19782
|
for (let i = 1; i < enterCount; i += 1) {
|
|
19730
|
-
await new Promise((
|
|
19783
|
+
await new Promise((resolve18) => setTimeout(resolve18, 50));
|
|
19731
19784
|
await adapter.writeRaw("\r");
|
|
19732
19785
|
}
|
|
19733
19786
|
}
|
|
@@ -20416,7 +20469,7 @@ var DaemonCommandHandler = class {
|
|
|
20416
20469
|
try {
|
|
20417
20470
|
const http3 = await import("http");
|
|
20418
20471
|
const postData = JSON.stringify(body);
|
|
20419
|
-
const result = await new Promise((
|
|
20472
|
+
const result = await new Promise((resolve18, reject) => {
|
|
20420
20473
|
const req = http3.request({
|
|
20421
20474
|
hostname: "127.0.0.1",
|
|
20422
20475
|
port: 19280,
|
|
@@ -20428,9 +20481,9 @@ var DaemonCommandHandler = class {
|
|
|
20428
20481
|
res.on("data", (chunk) => data += chunk);
|
|
20429
20482
|
res.on("end", () => {
|
|
20430
20483
|
try {
|
|
20431
|
-
|
|
20484
|
+
resolve18(JSON.parse(data));
|
|
20432
20485
|
} catch {
|
|
20433
|
-
|
|
20486
|
+
resolve18({ raw: data });
|
|
20434
20487
|
}
|
|
20435
20488
|
});
|
|
20436
20489
|
});
|
|
@@ -20448,15 +20501,15 @@ var DaemonCommandHandler = class {
|
|
|
20448
20501
|
if (!providerType) return { success: false, error: "providerType required" };
|
|
20449
20502
|
try {
|
|
20450
20503
|
const http3 = await import("http");
|
|
20451
|
-
const result = await new Promise((
|
|
20504
|
+
const result = await new Promise((resolve18, reject) => {
|
|
20452
20505
|
http3.get(`http://127.0.0.1:19280/api/providers/${providerType}/${endpoint}`, (res) => {
|
|
20453
20506
|
let data = "";
|
|
20454
20507
|
res.on("data", (chunk) => data += chunk);
|
|
20455
20508
|
res.on("end", () => {
|
|
20456
20509
|
try {
|
|
20457
|
-
|
|
20510
|
+
resolve18(JSON.parse(data));
|
|
20458
20511
|
} catch {
|
|
20459
|
-
|
|
20512
|
+
resolve18({ raw: data });
|
|
20460
20513
|
}
|
|
20461
20514
|
});
|
|
20462
20515
|
}).on("error", reject);
|
|
@@ -20470,7 +20523,7 @@ var DaemonCommandHandler = class {
|
|
|
20470
20523
|
try {
|
|
20471
20524
|
const http3 = await import("http");
|
|
20472
20525
|
const postData = JSON.stringify(args || {});
|
|
20473
|
-
const result = await new Promise((
|
|
20526
|
+
const result = await new Promise((resolve18, reject) => {
|
|
20474
20527
|
const req = http3.request({
|
|
20475
20528
|
hostname: "127.0.0.1",
|
|
20476
20529
|
port: 19280,
|
|
@@ -20482,9 +20535,9 @@ var DaemonCommandHandler = class {
|
|
|
20482
20535
|
res.on("data", (chunk) => data += chunk);
|
|
20483
20536
|
res.on("end", () => {
|
|
20484
20537
|
try {
|
|
20485
|
-
|
|
20538
|
+
resolve18(JSON.parse(data));
|
|
20486
20539
|
} catch {
|
|
20487
|
-
|
|
20540
|
+
resolve18({ raw: data });
|
|
20488
20541
|
}
|
|
20489
20542
|
});
|
|
20490
20543
|
});
|
|
@@ -20728,7 +20781,7 @@ async function waitForCliAdapterReady(adapter, options) {
|
|
|
20728
20781
|
if (status === "stopped") {
|
|
20729
20782
|
throw new Error("CLI runtime stopped before it became ready");
|
|
20730
20783
|
}
|
|
20731
|
-
await new Promise((
|
|
20784
|
+
await new Promise((resolve18) => setTimeout(resolve18, pollMs));
|
|
20732
20785
|
}
|
|
20733
20786
|
throw new Error(`CLI runtime did not become ready within ${timeoutMs}ms`);
|
|
20734
20787
|
}
|
|
@@ -21126,7 +21179,7 @@ var CliProviderInstance = class {
|
|
|
21126
21179
|
const enterCount = cliCommand.enterCount || 1;
|
|
21127
21180
|
await this.adapter.writeRaw(cliCommand.text + "\r");
|
|
21128
21181
|
for (let i = 1; i < enterCount; i += 1) {
|
|
21129
|
-
await new Promise((
|
|
21182
|
+
await new Promise((resolve18) => setTimeout(resolve18, 50));
|
|
21130
21183
|
await this.adapter.writeRaw("\r");
|
|
21131
21184
|
}
|
|
21132
21185
|
}
|
|
@@ -22563,13 +22616,13 @@ var AcpProviderInstance = class {
|
|
|
22563
22616
|
}
|
|
22564
22617
|
this.currentStatus = "waiting_approval";
|
|
22565
22618
|
this.detectStatusTransition();
|
|
22566
|
-
const approved = await new Promise((
|
|
22567
|
-
this.permissionResolvers.push(
|
|
22619
|
+
const approved = await new Promise((resolve18) => {
|
|
22620
|
+
this.permissionResolvers.push(resolve18);
|
|
22568
22621
|
setTimeout(() => {
|
|
22569
|
-
const idx = this.permissionResolvers.indexOf(
|
|
22622
|
+
const idx = this.permissionResolvers.indexOf(resolve18);
|
|
22570
22623
|
if (idx >= 0) {
|
|
22571
22624
|
this.permissionResolvers.splice(idx, 1);
|
|
22572
|
-
|
|
22625
|
+
resolve18(false);
|
|
22573
22626
|
}
|
|
22574
22627
|
}, 3e5);
|
|
22575
22628
|
});
|
|
@@ -23278,7 +23331,7 @@ async function waitForZeroMessageStartingLaunch(adapter) {
|
|
|
23278
23331
|
} catch {
|
|
23279
23332
|
return false;
|
|
23280
23333
|
}
|
|
23281
|
-
await new Promise((
|
|
23334
|
+
await new Promise((resolve18) => setTimeout(resolve18, ZERO_MESSAGE_STARTING_SEND_WAIT_MS));
|
|
23282
23335
|
try {
|
|
23283
23336
|
return hasZeroMessageStartingLaunch(adapter);
|
|
23284
23337
|
} catch {
|
|
@@ -25378,7 +25431,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
25378
25431
|
return { updated: false };
|
|
25379
25432
|
}
|
|
25380
25433
|
try {
|
|
25381
|
-
const etag = await new Promise((
|
|
25434
|
+
const etag = await new Promise((resolve18, reject) => {
|
|
25382
25435
|
const options = {
|
|
25383
25436
|
method: "HEAD",
|
|
25384
25437
|
hostname: "github.com",
|
|
@@ -25396,7 +25449,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
25396
25449
|
headers: { "User-Agent": "adhdev-launcher" },
|
|
25397
25450
|
timeout: 1e4
|
|
25398
25451
|
}, (res2) => {
|
|
25399
|
-
|
|
25452
|
+
resolve18(res2.headers.etag || res2.headers["last-modified"] || "");
|
|
25400
25453
|
});
|
|
25401
25454
|
req2.on("error", reject);
|
|
25402
25455
|
req2.on("timeout", () => {
|
|
@@ -25405,7 +25458,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
25405
25458
|
});
|
|
25406
25459
|
req2.end();
|
|
25407
25460
|
} else {
|
|
25408
|
-
|
|
25461
|
+
resolve18(res.headers.etag || res.headers["last-modified"] || "");
|
|
25409
25462
|
}
|
|
25410
25463
|
});
|
|
25411
25464
|
req.on("error", reject);
|
|
@@ -25469,7 +25522,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
25469
25522
|
downloadFile(url, destPath) {
|
|
25470
25523
|
const https = require("https");
|
|
25471
25524
|
const http3 = require("http");
|
|
25472
|
-
return new Promise((
|
|
25525
|
+
return new Promise((resolve18, reject) => {
|
|
25473
25526
|
const doRequest = (reqUrl, redirectCount = 0) => {
|
|
25474
25527
|
if (redirectCount > 5) {
|
|
25475
25528
|
reject(new Error("Too many redirects"));
|
|
@@ -25489,7 +25542,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
25489
25542
|
res.pipe(ws);
|
|
25490
25543
|
ws.on("finish", () => {
|
|
25491
25544
|
ws.close();
|
|
25492
|
-
|
|
25545
|
+
resolve18();
|
|
25493
25546
|
});
|
|
25494
25547
|
ws.on("error", reject);
|
|
25495
25548
|
});
|
|
@@ -25992,10 +26045,10 @@ function findMacAppProcessPids(psOutput, appPaths) {
|
|
|
25992
26045
|
|
|
25993
26046
|
// src/launch.ts
|
|
25994
26047
|
async function execQuiet(command, options = {}) {
|
|
25995
|
-
return new Promise((
|
|
26048
|
+
return new Promise((resolve18) => {
|
|
25996
26049
|
(0, import_child_process6.exec)(command, options, (error, stdout) => {
|
|
25997
|
-
if (error) return
|
|
25998
|
-
|
|
26050
|
+
if (error) return resolve18("");
|
|
26051
|
+
resolve18(stdout.toString());
|
|
25999
26052
|
});
|
|
26000
26053
|
});
|
|
26001
26054
|
}
|
|
@@ -26076,17 +26129,17 @@ async function findFreePort(ports) {
|
|
|
26076
26129
|
throw new Error("No free port found");
|
|
26077
26130
|
}
|
|
26078
26131
|
function checkPortFree(port) {
|
|
26079
|
-
return new Promise((
|
|
26132
|
+
return new Promise((resolve18) => {
|
|
26080
26133
|
const server = net.createServer();
|
|
26081
26134
|
server.unref();
|
|
26082
|
-
server.on("error", () =>
|
|
26135
|
+
server.on("error", () => resolve18(false));
|
|
26083
26136
|
server.listen(port, "127.0.0.1", () => {
|
|
26084
|
-
server.close(() =>
|
|
26137
|
+
server.close(() => resolve18(true));
|
|
26085
26138
|
});
|
|
26086
26139
|
});
|
|
26087
26140
|
}
|
|
26088
26141
|
async function isCdpActive(port) {
|
|
26089
|
-
return new Promise((
|
|
26142
|
+
return new Promise((resolve18) => {
|
|
26090
26143
|
const req = require("http").get(`http://127.0.0.1:${port}/json/version`, {
|
|
26091
26144
|
timeout: 2e3
|
|
26092
26145
|
}, (res) => {
|
|
@@ -26095,16 +26148,16 @@ async function isCdpActive(port) {
|
|
|
26095
26148
|
res.on("end", () => {
|
|
26096
26149
|
try {
|
|
26097
26150
|
const info = JSON.parse(data);
|
|
26098
|
-
|
|
26151
|
+
resolve18(!!info["WebKit-Version"] || !!info["Browser"]);
|
|
26099
26152
|
} catch {
|
|
26100
|
-
|
|
26153
|
+
resolve18(false);
|
|
26101
26154
|
}
|
|
26102
26155
|
});
|
|
26103
26156
|
});
|
|
26104
|
-
req.on("error", () =>
|
|
26157
|
+
req.on("error", () => resolve18(false));
|
|
26105
26158
|
req.on("timeout", () => {
|
|
26106
26159
|
req.destroy();
|
|
26107
|
-
|
|
26160
|
+
resolve18(false);
|
|
26108
26161
|
});
|
|
26109
26162
|
});
|
|
26110
26163
|
}
|
|
@@ -27354,7 +27407,7 @@ async function waitForPidExit(pid, timeoutMs) {
|
|
|
27354
27407
|
while (Date.now() - start < timeoutMs) {
|
|
27355
27408
|
try {
|
|
27356
27409
|
process.kill(pid, 0);
|
|
27357
|
-
await new Promise((
|
|
27410
|
+
await new Promise((resolve18) => setTimeout(resolve18, 250));
|
|
27358
27411
|
} catch {
|
|
27359
27412
|
return;
|
|
27360
27413
|
}
|
|
@@ -27465,7 +27518,7 @@ async function runDaemonUpgradeHelper(payload) {
|
|
|
27465
27518
|
appendUpgradeLog(installOutput.trim());
|
|
27466
27519
|
}
|
|
27467
27520
|
if (process.platform === "win32") {
|
|
27468
|
-
await new Promise((
|
|
27521
|
+
await new Promise((resolve18) => setTimeout(resolve18, 500));
|
|
27469
27522
|
cleanupStaleGlobalInstallDirs(payload.packageName, installCommand.surface);
|
|
27470
27523
|
appendUpgradeLog("Post-install staging cleanup complete");
|
|
27471
27524
|
}
|
|
@@ -31663,7 +31716,7 @@ var DaemonCommandRouter = class {
|
|
|
31663
31716
|
const setupPromise = finishWorktreeSetup();
|
|
31664
31717
|
const setupResult = await Promise.race([
|
|
31665
31718
|
setupPromise.then((value) => ({ completed: true, value })),
|
|
31666
|
-
new Promise((
|
|
31719
|
+
new Promise((resolve18) => setTimeout(() => resolve18({ completed: false }), setupWaitMs))
|
|
31667
31720
|
]);
|
|
31668
31721
|
if (!setupResult.completed) {
|
|
31669
31722
|
setupPromise.catch((error) => {
|
|
@@ -33061,7 +33114,7 @@ var ProviderStreamAdapter = class {
|
|
|
33061
33114
|
const beforeCount = this.messageCount(before);
|
|
33062
33115
|
const beforeSignature = this.lastMessageSignature(before);
|
|
33063
33116
|
for (let attempt = 0; attempt < 12; attempt += 1) {
|
|
33064
|
-
await new Promise((
|
|
33117
|
+
await new Promise((resolve18) => setTimeout(resolve18, 250));
|
|
33065
33118
|
let state;
|
|
33066
33119
|
try {
|
|
33067
33120
|
state = await this.readChat(evaluate);
|
|
@@ -33083,7 +33136,7 @@ var ProviderStreamAdapter = class {
|
|
|
33083
33136
|
if (this.messageCount(first) > 0 || this.lastMessageSignature(first)) {
|
|
33084
33137
|
return first;
|
|
33085
33138
|
}
|
|
33086
|
-
await new Promise((
|
|
33139
|
+
await new Promise((resolve18) => setTimeout(resolve18, 150));
|
|
33087
33140
|
const second = await this.readChat(evaluate);
|
|
33088
33141
|
return this.messageCount(second) >= this.messageCount(first) ? second : first;
|
|
33089
33142
|
}
|
|
@@ -33234,7 +33287,7 @@ var ProviderStreamAdapter = class {
|
|
|
33234
33287
|
if (typeof data.error === "string" && data.error.trim()) return false;
|
|
33235
33288
|
}
|
|
33236
33289
|
for (let attempt = 0; attempt < 6; attempt += 1) {
|
|
33237
|
-
await new Promise((
|
|
33290
|
+
await new Promise((resolve18) => setTimeout(resolve18, 250));
|
|
33238
33291
|
const state = await this.readChat(evaluate);
|
|
33239
33292
|
const title = this.getStateTitle(state);
|
|
33240
33293
|
if (this.titlesMatch(title, sessionId)) return true;
|
|
@@ -34162,13 +34215,13 @@ var VersionArchive = class {
|
|
|
34162
34215
|
}
|
|
34163
34216
|
};
|
|
34164
34217
|
async function runCommand(cmd, timeout = 1e4) {
|
|
34165
|
-
return new Promise((
|
|
34218
|
+
return new Promise((resolve18) => {
|
|
34166
34219
|
(0, import_child_process9.exec)(cmd, {
|
|
34167
34220
|
encoding: "utf-8",
|
|
34168
34221
|
timeout
|
|
34169
34222
|
}, (error, stdout) => {
|
|
34170
|
-
if (error) return
|
|
34171
|
-
|
|
34223
|
+
if (error) return resolve18(null);
|
|
34224
|
+
resolve18(stdout.trim());
|
|
34172
34225
|
});
|
|
34173
34226
|
});
|
|
34174
34227
|
}
|
|
@@ -35857,7 +35910,7 @@ function getCliTargetBundle(ctx, type, instanceId) {
|
|
|
35857
35910
|
return { target, instance, adapter };
|
|
35858
35911
|
}
|
|
35859
35912
|
function sleep2(ms) {
|
|
35860
|
-
return new Promise((
|
|
35913
|
+
return new Promise((resolve18) => setTimeout(resolve18, ms));
|
|
35861
35914
|
}
|
|
35862
35915
|
async function waitForCliReady(ctx, type, instanceId, timeoutMs) {
|
|
35863
35916
|
const startedAt = Date.now();
|
|
@@ -38112,15 +38165,15 @@ var DevServer = class _DevServer {
|
|
|
38112
38165
|
this.json(res, 500, { error: e.message });
|
|
38113
38166
|
}
|
|
38114
38167
|
});
|
|
38115
|
-
return new Promise((
|
|
38168
|
+
return new Promise((resolve18, reject) => {
|
|
38116
38169
|
this.server.listen(port, "127.0.0.1", () => {
|
|
38117
38170
|
this.log(`Dev server listening on http://127.0.0.1:${port}`);
|
|
38118
|
-
|
|
38171
|
+
resolve18();
|
|
38119
38172
|
});
|
|
38120
38173
|
this.server.on("error", (e) => {
|
|
38121
38174
|
if (e.code === "EADDRINUSE") {
|
|
38122
38175
|
this.log(`Port ${port} in use, skipping dev server`);
|
|
38123
|
-
|
|
38176
|
+
resolve18();
|
|
38124
38177
|
} else {
|
|
38125
38178
|
reject(e);
|
|
38126
38179
|
}
|
|
@@ -38202,20 +38255,20 @@ var DevServer = class _DevServer {
|
|
|
38202
38255
|
child.stderr?.on("data", (d) => {
|
|
38203
38256
|
stderr += d.toString().slice(0, 2e3);
|
|
38204
38257
|
});
|
|
38205
|
-
await new Promise((
|
|
38258
|
+
await new Promise((resolve18) => {
|
|
38206
38259
|
const timer = setTimeout(() => {
|
|
38207
38260
|
child.kill();
|
|
38208
|
-
|
|
38261
|
+
resolve18();
|
|
38209
38262
|
}, 3e3);
|
|
38210
38263
|
child.on("exit", () => {
|
|
38211
38264
|
clearTimeout(timer);
|
|
38212
|
-
|
|
38265
|
+
resolve18();
|
|
38213
38266
|
});
|
|
38214
38267
|
child.stdout?.once("data", () => {
|
|
38215
38268
|
setTimeout(() => {
|
|
38216
38269
|
child.kill();
|
|
38217
38270
|
clearTimeout(timer);
|
|
38218
|
-
|
|
38271
|
+
resolve18();
|
|
38219
38272
|
}, 500);
|
|
38220
38273
|
});
|
|
38221
38274
|
});
|
|
@@ -38718,14 +38771,14 @@ var DevServer = class _DevServer {
|
|
|
38718
38771
|
child.stderr?.on("data", (d) => {
|
|
38719
38772
|
stderr += d.toString();
|
|
38720
38773
|
});
|
|
38721
|
-
await new Promise((
|
|
38774
|
+
await new Promise((resolve18) => {
|
|
38722
38775
|
const timer = setTimeout(() => {
|
|
38723
38776
|
child.kill();
|
|
38724
|
-
|
|
38777
|
+
resolve18();
|
|
38725
38778
|
}, timeout);
|
|
38726
38779
|
child.on("exit", () => {
|
|
38727
38780
|
clearTimeout(timer);
|
|
38728
|
-
|
|
38781
|
+
resolve18();
|
|
38729
38782
|
});
|
|
38730
38783
|
});
|
|
38731
38784
|
const elapsed = Date.now() - start;
|
|
@@ -39395,14 +39448,14 @@ data: ${JSON.stringify(msg.data)}
|
|
|
39395
39448
|
res.end(JSON.stringify(data, null, 2));
|
|
39396
39449
|
}
|
|
39397
39450
|
async readBody(req) {
|
|
39398
|
-
return new Promise((
|
|
39451
|
+
return new Promise((resolve18) => {
|
|
39399
39452
|
let body = "";
|
|
39400
39453
|
req.on("data", (chunk) => body += chunk);
|
|
39401
39454
|
req.on("end", () => {
|
|
39402
39455
|
try {
|
|
39403
|
-
|
|
39456
|
+
resolve18(JSON.parse(body));
|
|
39404
39457
|
} catch {
|
|
39405
|
-
|
|
39458
|
+
resolve18({});
|
|
39406
39459
|
}
|
|
39407
39460
|
});
|
|
39408
39461
|
});
|
|
@@ -39940,7 +39993,7 @@ async function waitForReady(endpoint, timeoutMs = STARTUP_TIMEOUT_MS, requiredRe
|
|
|
39940
39993
|
const deadline = Date.now() + timeoutMs;
|
|
39941
39994
|
while (Date.now() < deadline) {
|
|
39942
39995
|
if (await canConnect(endpoint, requiredRequestTypes)) return;
|
|
39943
|
-
await new Promise((
|
|
39996
|
+
await new Promise((resolve18) => setTimeout(resolve18, STARTUP_POLL_MS));
|
|
39944
39997
|
}
|
|
39945
39998
|
throw new Error(`Session host did not become ready within ${timeoutMs}ms`);
|
|
39946
39999
|
}
|
|
@@ -40120,10 +40173,10 @@ async function installExtension(ide, extension) {
|
|
|
40120
40173
|
const buffer = Buffer.from(await res.arrayBuffer());
|
|
40121
40174
|
const fs17 = await import("fs");
|
|
40122
40175
|
fs17.writeFileSync(vsixPath, buffer);
|
|
40123
|
-
return new Promise((
|
|
40176
|
+
return new Promise((resolve18) => {
|
|
40124
40177
|
const cmd = `"${ide.cliCommand}" --install-extension "${vsixPath}" --force`;
|
|
40125
40178
|
(0, import_child_process10.exec)(cmd, { timeout: 6e4 }, (error, _stdout, stderr) => {
|
|
40126
|
-
|
|
40179
|
+
resolve18({
|
|
40127
40180
|
extensionId: extension.id,
|
|
40128
40181
|
marketplaceId: extension.marketplaceId,
|
|
40129
40182
|
success: !error,
|
|
@@ -40136,11 +40189,11 @@ async function installExtension(ide, extension) {
|
|
|
40136
40189
|
} catch (e) {
|
|
40137
40190
|
}
|
|
40138
40191
|
}
|
|
40139
|
-
return new Promise((
|
|
40192
|
+
return new Promise((resolve18) => {
|
|
40140
40193
|
const cmd = `"${ide.cliCommand}" --install-extension ${extension.marketplaceId} --force`;
|
|
40141
40194
|
(0, import_child_process10.exec)(cmd, { timeout: 6e4 }, (error, stdout, stderr) => {
|
|
40142
40195
|
if (error) {
|
|
40143
|
-
|
|
40196
|
+
resolve18({
|
|
40144
40197
|
extensionId: extension.id,
|
|
40145
40198
|
marketplaceId: extension.marketplaceId,
|
|
40146
40199
|
success: false,
|
|
@@ -40148,7 +40201,7 @@ async function installExtension(ide, extension) {
|
|
|
40148
40201
|
error: stderr || error.message
|
|
40149
40202
|
});
|
|
40150
40203
|
} else {
|
|
40151
|
-
|
|
40204
|
+
resolve18({
|
|
40152
40205
|
extensionId: extension.id,
|
|
40153
40206
|
marketplaceId: extension.marketplaceId,
|
|
40154
40207
|
success: true,
|