adhdev 0.8.56 → 0.8.58
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/cli/index.js +1249 -480
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +407 -235
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/vendor/session-host-daemon/index.d.mts +1 -0
- package/vendor/session-host-daemon/index.d.ts +1 -0
- package/vendor/session-host-daemon/index.js +10 -1
- package/vendor/session-host-daemon/index.js.map +1 -1
- package/vendor/session-host-daemon/index.mjs +10 -1
- package/vendor/session-host-daemon/index.mjs.map +1 -1
- package/vendor/terminal-mux-cli/index.js +41 -10
- package/vendor/terminal-mux-cli/index.mjs +40 -5
package/dist/index.js
CHANGED
|
@@ -44,9 +44,16 @@ __export(config_exports, {
|
|
|
44
44
|
loadConfig: () => loadConfig,
|
|
45
45
|
markSetupComplete: () => markSetupComplete,
|
|
46
46
|
resetConfig: () => resetConfig,
|
|
47
|
+
resolveProviderSourceMode: () => resolveProviderSourceMode,
|
|
47
48
|
saveConfig: () => saveConfig,
|
|
48
49
|
updateConfig: () => updateConfig
|
|
49
50
|
});
|
|
51
|
+
function resolveProviderSourceMode(providerSourceMode, legacyDisableUpstream) {
|
|
52
|
+
if (providerSourceMode === "normal" || providerSourceMode === "no-upstream") {
|
|
53
|
+
return providerSourceMode;
|
|
54
|
+
}
|
|
55
|
+
return legacyDisableUpstream === true ? "no-upstream" : "normal";
|
|
56
|
+
}
|
|
50
57
|
function isPlainObject(value) {
|
|
51
58
|
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
52
59
|
}
|
|
@@ -84,7 +91,7 @@ function normalizeConfig(raw) {
|
|
|
84
91
|
registeredMachineId: asOptionalString(parsed.registeredMachineId),
|
|
85
92
|
providerSettings: isPlainObject(parsed.providerSettings) ? parsed.providerSettings : {},
|
|
86
93
|
ideSettings: isPlainObject(parsed.ideSettings) ? parsed.ideSettings : {},
|
|
87
|
-
|
|
94
|
+
providerSourceMode: resolveProviderSourceMode(parsed.providerSourceMode, parsed.disableUpstream),
|
|
88
95
|
providerDir: asOptionalString(parsed.providerDir),
|
|
89
96
|
terminalSizingMode: parsed.terminalSizingMode === "fit" ? "fit" : "measured"
|
|
90
97
|
};
|
|
@@ -233,7 +240,7 @@ var init_config = __esm({
|
|
|
233
240
|
registeredMachineId: void 0,
|
|
234
241
|
providerSettings: {},
|
|
235
242
|
ideSettings: {},
|
|
236
|
-
|
|
243
|
+
providerSourceMode: "normal",
|
|
237
244
|
terminalSizingMode: "measured"
|
|
238
245
|
};
|
|
239
246
|
MACHINE_ID_PREFIX = "mach_";
|
|
@@ -733,15 +740,15 @@ function resolveCommandPath(command) {
|
|
|
733
740
|
return null;
|
|
734
741
|
}
|
|
735
742
|
function execAsync(cmd, timeoutMs = 5e3) {
|
|
736
|
-
return new Promise((
|
|
743
|
+
return new Promise((resolve15) => {
|
|
737
744
|
const child = (0, import_child_process2.exec)(cmd, { encoding: "utf-8", timeout: timeoutMs }, (err, stdout) => {
|
|
738
745
|
if (err || !stdout?.trim()) {
|
|
739
|
-
|
|
746
|
+
resolve15(null);
|
|
740
747
|
} else {
|
|
741
|
-
|
|
748
|
+
resolve15(stdout.trim());
|
|
742
749
|
}
|
|
743
750
|
});
|
|
744
|
-
child.on("error", () =>
|
|
751
|
+
child.on("error", () => resolve15(null));
|
|
745
752
|
});
|
|
746
753
|
}
|
|
747
754
|
async function detectCLIs(providerLoader, options) {
|
|
@@ -1187,7 +1194,7 @@ var init_manager = __esm({
|
|
|
1187
1194
|
* Returns multiple entries if multiple IDE windows are open on same port
|
|
1188
1195
|
*/
|
|
1189
1196
|
static listAllTargets(port) {
|
|
1190
|
-
return new Promise((
|
|
1197
|
+
return new Promise((resolve15) => {
|
|
1191
1198
|
const req = http.get(`http://127.0.0.1:${port}/json`, (res) => {
|
|
1192
1199
|
let data = "";
|
|
1193
1200
|
res.on("data", (chunk) => data += chunk.toString());
|
|
@@ -1203,16 +1210,16 @@ var init_manager = __esm({
|
|
|
1203
1210
|
(t) => !isNonMain(t.title || "") && t.url?.includes("workbench.html") && !t.url?.includes("agent")
|
|
1204
1211
|
);
|
|
1205
1212
|
const fallbackPages = pages.filter((t) => !isNonMain(t.title || ""));
|
|
1206
|
-
|
|
1213
|
+
resolve15(mainPages.length > 0 ? mainPages : fallbackPages);
|
|
1207
1214
|
} catch {
|
|
1208
|
-
|
|
1215
|
+
resolve15([]);
|
|
1209
1216
|
}
|
|
1210
1217
|
});
|
|
1211
1218
|
});
|
|
1212
|
-
req.on("error", () =>
|
|
1219
|
+
req.on("error", () => resolve15([]));
|
|
1213
1220
|
req.setTimeout(2e3, () => {
|
|
1214
1221
|
req.destroy();
|
|
1215
|
-
|
|
1222
|
+
resolve15([]);
|
|
1216
1223
|
});
|
|
1217
1224
|
});
|
|
1218
1225
|
}
|
|
@@ -1252,7 +1259,7 @@ var init_manager = __esm({
|
|
|
1252
1259
|
}
|
|
1253
1260
|
}
|
|
1254
1261
|
findTargetOnPort(port) {
|
|
1255
|
-
return new Promise((
|
|
1262
|
+
return new Promise((resolve15) => {
|
|
1256
1263
|
const req = http.get(`http://127.0.0.1:${port}/json`, (res) => {
|
|
1257
1264
|
let data = "";
|
|
1258
1265
|
res.on("data", (chunk) => data += chunk.toString());
|
|
@@ -1263,7 +1270,7 @@ var init_manager = __esm({
|
|
|
1263
1270
|
(t) => (t.type === "page" || t.type === "browser" || t.type === "Page") && t.webSocketDebuggerUrl
|
|
1264
1271
|
);
|
|
1265
1272
|
if (pages.length === 0) {
|
|
1266
|
-
|
|
1273
|
+
resolve15(targets.find((t) => t.webSocketDebuggerUrl) || null);
|
|
1267
1274
|
return;
|
|
1268
1275
|
}
|
|
1269
1276
|
const mainPages = pages.filter((t) => !this.isNonMainTitle(t.title || ""));
|
|
@@ -1273,24 +1280,24 @@ var init_manager = __esm({
|
|
|
1273
1280
|
const specific = list.find((t) => t.id === this._targetId);
|
|
1274
1281
|
if (specific) {
|
|
1275
1282
|
this._pageTitle = specific.title || "";
|
|
1276
|
-
|
|
1283
|
+
resolve15(specific);
|
|
1277
1284
|
} else {
|
|
1278
1285
|
this.log(`[CDP] Target ${this._targetId} not found in page list`);
|
|
1279
|
-
|
|
1286
|
+
resolve15(null);
|
|
1280
1287
|
}
|
|
1281
1288
|
return;
|
|
1282
1289
|
}
|
|
1283
1290
|
this._pageTitle = list[0]?.title || "";
|
|
1284
|
-
|
|
1291
|
+
resolve15(list[0]);
|
|
1285
1292
|
} catch {
|
|
1286
|
-
|
|
1293
|
+
resolve15(null);
|
|
1287
1294
|
}
|
|
1288
1295
|
});
|
|
1289
1296
|
});
|
|
1290
|
-
req.on("error", () =>
|
|
1297
|
+
req.on("error", () => resolve15(null));
|
|
1291
1298
|
req.setTimeout(2e3, () => {
|
|
1292
1299
|
req.destroy();
|
|
1293
|
-
|
|
1300
|
+
resolve15(null);
|
|
1294
1301
|
});
|
|
1295
1302
|
});
|
|
1296
1303
|
}
|
|
@@ -1301,7 +1308,7 @@ var init_manager = __esm({
|
|
|
1301
1308
|
this.extensionProviders = providers;
|
|
1302
1309
|
}
|
|
1303
1310
|
connectToTarget(wsUrl) {
|
|
1304
|
-
return new Promise((
|
|
1311
|
+
return new Promise((resolve15) => {
|
|
1305
1312
|
this.ws = new import_ws.default(wsUrl);
|
|
1306
1313
|
this.ws.on("open", async () => {
|
|
1307
1314
|
this._connected = true;
|
|
@@ -1311,17 +1318,17 @@ var init_manager = __esm({
|
|
|
1311
1318
|
}
|
|
1312
1319
|
this.connectBrowserWs().catch(() => {
|
|
1313
1320
|
});
|
|
1314
|
-
|
|
1321
|
+
resolve15(true);
|
|
1315
1322
|
});
|
|
1316
1323
|
this.ws.on("message", (data) => {
|
|
1317
1324
|
try {
|
|
1318
1325
|
const msg = JSON.parse(data.toString());
|
|
1319
1326
|
if (msg.id && this.pending.has(msg.id)) {
|
|
1320
|
-
const { resolve:
|
|
1327
|
+
const { resolve: resolve16, reject } = this.pending.get(msg.id);
|
|
1321
1328
|
this.pending.delete(msg.id);
|
|
1322
1329
|
this.failureCount = 0;
|
|
1323
1330
|
if (msg.error) reject(new Error(msg.error.message));
|
|
1324
|
-
else
|
|
1331
|
+
else resolve16(msg.result);
|
|
1325
1332
|
} else if (msg.method === "Runtime.executionContextCreated") {
|
|
1326
1333
|
this.contexts.add(msg.params.context.id);
|
|
1327
1334
|
} else if (msg.method === "Runtime.executionContextDestroyed") {
|
|
@@ -1344,7 +1351,7 @@ var init_manager = __esm({
|
|
|
1344
1351
|
this.ws.on("error", (err) => {
|
|
1345
1352
|
this.log(`[CDP] WebSocket error: ${err.message}`);
|
|
1346
1353
|
this._connected = false;
|
|
1347
|
-
|
|
1354
|
+
resolve15(false);
|
|
1348
1355
|
});
|
|
1349
1356
|
});
|
|
1350
1357
|
}
|
|
@@ -1358,7 +1365,7 @@ var init_manager = __esm({
|
|
|
1358
1365
|
return;
|
|
1359
1366
|
}
|
|
1360
1367
|
this.log(`[CDP] Connecting browser WS for target discovery...`);
|
|
1361
|
-
await new Promise((
|
|
1368
|
+
await new Promise((resolve15, reject) => {
|
|
1362
1369
|
this.browserWs = new import_ws.default(browserWsUrl);
|
|
1363
1370
|
this.browserWs.on("open", async () => {
|
|
1364
1371
|
this._browserConnected = true;
|
|
@@ -1368,16 +1375,16 @@ var init_manager = __esm({
|
|
|
1368
1375
|
} catch (e) {
|
|
1369
1376
|
this.log(`[CDP] setDiscoverTargets failed: ${e.message}`);
|
|
1370
1377
|
}
|
|
1371
|
-
|
|
1378
|
+
resolve15();
|
|
1372
1379
|
});
|
|
1373
1380
|
this.browserWs.on("message", (data) => {
|
|
1374
1381
|
try {
|
|
1375
1382
|
const msg = JSON.parse(data.toString());
|
|
1376
1383
|
if (msg.id && this.browserPending.has(msg.id)) {
|
|
1377
|
-
const { resolve:
|
|
1384
|
+
const { resolve: resolve16, reject: reject2 } = this.browserPending.get(msg.id);
|
|
1378
1385
|
this.browserPending.delete(msg.id);
|
|
1379
1386
|
if (msg.error) reject2(new Error(msg.error.message));
|
|
1380
|
-
else
|
|
1387
|
+
else resolve16(msg.result);
|
|
1381
1388
|
}
|
|
1382
1389
|
} catch {
|
|
1383
1390
|
}
|
|
@@ -1397,31 +1404,31 @@ var init_manager = __esm({
|
|
|
1397
1404
|
}
|
|
1398
1405
|
}
|
|
1399
1406
|
getBrowserWsUrl() {
|
|
1400
|
-
return new Promise((
|
|
1407
|
+
return new Promise((resolve15) => {
|
|
1401
1408
|
const req = http.get(`http://127.0.0.1:${this.port}/json/version`, (res) => {
|
|
1402
1409
|
let data = "";
|
|
1403
1410
|
res.on("data", (chunk) => data += chunk.toString());
|
|
1404
1411
|
res.on("end", () => {
|
|
1405
1412
|
try {
|
|
1406
1413
|
const info = JSON.parse(data);
|
|
1407
|
-
|
|
1414
|
+
resolve15(info.webSocketDebuggerUrl || null);
|
|
1408
1415
|
} catch {
|
|
1409
|
-
|
|
1416
|
+
resolve15(null);
|
|
1410
1417
|
}
|
|
1411
1418
|
});
|
|
1412
1419
|
});
|
|
1413
|
-
req.on("error", () =>
|
|
1420
|
+
req.on("error", () => resolve15(null));
|
|
1414
1421
|
req.setTimeout(3e3, () => {
|
|
1415
1422
|
req.destroy();
|
|
1416
|
-
|
|
1423
|
+
resolve15(null);
|
|
1417
1424
|
});
|
|
1418
1425
|
});
|
|
1419
1426
|
}
|
|
1420
1427
|
sendBrowser(method, params = {}, timeoutMs = 15e3) {
|
|
1421
|
-
return new Promise((
|
|
1428
|
+
return new Promise((resolve15, reject) => {
|
|
1422
1429
|
if (!this.browserWs || !this._browserConnected) return reject(new Error("Browser WS not connected"));
|
|
1423
1430
|
const id = this.browserMsgId++;
|
|
1424
|
-
this.browserPending.set(id, { resolve:
|
|
1431
|
+
this.browserPending.set(id, { resolve: resolve15, reject });
|
|
1425
1432
|
this.browserWs.send(JSON.stringify({ id, method, params }));
|
|
1426
1433
|
setTimeout(() => {
|
|
1427
1434
|
if (this.browserPending.has(id)) {
|
|
@@ -1461,11 +1468,11 @@ var init_manager = __esm({
|
|
|
1461
1468
|
}
|
|
1462
1469
|
// ─── CDP Protocol ────────────────────────────────────────
|
|
1463
1470
|
sendInternal(method, params = {}, timeoutMs = 15e3) {
|
|
1464
|
-
return new Promise((
|
|
1471
|
+
return new Promise((resolve15, reject) => {
|
|
1465
1472
|
if (!this.ws || !this._connected) return reject(new Error("CDP not connected"));
|
|
1466
1473
|
if (this.ws.readyState !== import_ws.default.OPEN) return reject(new Error("WebSocket not open"));
|
|
1467
1474
|
const id = this.msgId++;
|
|
1468
|
-
this.pending.set(id, { resolve:
|
|
1475
|
+
this.pending.set(id, { resolve: resolve15, reject });
|
|
1469
1476
|
this.ws.send(JSON.stringify({ id, method, params }));
|
|
1470
1477
|
setTimeout(() => {
|
|
1471
1478
|
if (this.pending.has(id)) {
|
|
@@ -1714,7 +1721,7 @@ var init_manager = __esm({
|
|
|
1714
1721
|
const browserWs = this.browserWs;
|
|
1715
1722
|
let msgId = this.browserMsgId;
|
|
1716
1723
|
const sendWs = (method, params = {}, sessionId) => {
|
|
1717
|
-
return new Promise((
|
|
1724
|
+
return new Promise((resolve15, reject) => {
|
|
1718
1725
|
const mid = msgId++;
|
|
1719
1726
|
this.browserMsgId = msgId;
|
|
1720
1727
|
const handler = (raw) => {
|
|
@@ -1723,7 +1730,7 @@ var init_manager = __esm({
|
|
|
1723
1730
|
if (msg.id === mid) {
|
|
1724
1731
|
browserWs.removeListener("message", handler);
|
|
1725
1732
|
if (msg.error) reject(new Error(msg.error.message || JSON.stringify(msg.error)));
|
|
1726
|
-
else
|
|
1733
|
+
else resolve15(msg.result);
|
|
1727
1734
|
}
|
|
1728
1735
|
} catch {
|
|
1729
1736
|
}
|
|
@@ -1924,14 +1931,14 @@ var init_manager = __esm({
|
|
|
1924
1931
|
if (!ws || ws.readyState !== import_ws.default.OPEN) {
|
|
1925
1932
|
throw new Error("CDP not connected");
|
|
1926
1933
|
}
|
|
1927
|
-
return new Promise((
|
|
1934
|
+
return new Promise((resolve15, reject) => {
|
|
1928
1935
|
const id = getNextId();
|
|
1929
1936
|
pendingMap.set(id, {
|
|
1930
1937
|
resolve: (result) => {
|
|
1931
1938
|
if (result?.result?.subtype === "error") {
|
|
1932
1939
|
reject(new Error(result.result.description));
|
|
1933
1940
|
} else {
|
|
1934
|
-
|
|
1941
|
+
resolve15(result?.result?.value);
|
|
1935
1942
|
}
|
|
1936
1943
|
},
|
|
1937
1944
|
reject
|
|
@@ -1963,10 +1970,10 @@ var init_manager = __esm({
|
|
|
1963
1970
|
throw new Error("CDP not connected");
|
|
1964
1971
|
}
|
|
1965
1972
|
const sendViaSession = (method, params = {}) => {
|
|
1966
|
-
return new Promise((
|
|
1973
|
+
return new Promise((resolve15, reject) => {
|
|
1967
1974
|
const pendingMap = this._browserConnected ? this.browserPending : this.pending;
|
|
1968
1975
|
const id = this._browserConnected ? this.browserMsgId++ : this.msgId++;
|
|
1969
|
-
pendingMap.set(id, { resolve:
|
|
1976
|
+
pendingMap.set(id, { resolve: resolve15, reject });
|
|
1970
1977
|
ws.send(JSON.stringify({ id, sessionId, method, params }));
|
|
1971
1978
|
setTimeout(() => {
|
|
1972
1979
|
if (pendingMap.has(id)) {
|
|
@@ -2801,6 +2808,7 @@ function listSavedHistorySessions(agentType, options = {}) {
|
|
|
2801
2808
|
let lastMessageAt = 0;
|
|
2802
2809
|
let sessionTitle = "";
|
|
2803
2810
|
let preview = "";
|
|
2811
|
+
let workspace = "";
|
|
2804
2812
|
for (const file2 of files.sort()) {
|
|
2805
2813
|
const filePath = path7.join(dir, file2);
|
|
2806
2814
|
const content = fs3.readFileSync(filePath, "utf-8");
|
|
@@ -2813,6 +2821,10 @@ function listSavedHistorySessions(agentType, options = {}) {
|
|
|
2813
2821
|
parsed = null;
|
|
2814
2822
|
}
|
|
2815
2823
|
if (!parsed || parsed.historySessionId !== historySessionId) continue;
|
|
2824
|
+
if (parsed.kind === "session_start") {
|
|
2825
|
+
if (!workspace && parsed.workspace) workspace = parsed.workspace;
|
|
2826
|
+
continue;
|
|
2827
|
+
}
|
|
2816
2828
|
messageCount += 1;
|
|
2817
2829
|
if (!firstMessageAt || parsed.receivedAt < firstMessageAt) firstMessageAt = parsed.receivedAt;
|
|
2818
2830
|
if (!lastMessageAt || parsed.receivedAt > lastMessageAt) lastMessageAt = parsed.receivedAt;
|
|
@@ -2827,7 +2839,8 @@ function listSavedHistorySessions(agentType, options = {}) {
|
|
|
2827
2839
|
messageCount,
|
|
2828
2840
|
firstMessageAt,
|
|
2829
2841
|
lastMessageAt,
|
|
2830
|
-
preview: preview || void 0
|
|
2842
|
+
preview: preview || void 0,
|
|
2843
|
+
workspace: workspace || void 0
|
|
2831
2844
|
});
|
|
2832
2845
|
}
|
|
2833
2846
|
summaries.sort((a, b) => b.lastMessageAt - a.lastMessageAt);
|
|
@@ -3010,6 +3023,30 @@ var init_chat_history = __esm({
|
|
|
3010
3023
|
options.historySessionId
|
|
3011
3024
|
);
|
|
3012
3025
|
}
|
|
3026
|
+
writeSessionStart(agentType, historySessionId, workspace, instanceId) {
|
|
3027
|
+
const id = String(historySessionId || "").trim();
|
|
3028
|
+
const ws = String(workspace || "").trim();
|
|
3029
|
+
if (!id || !ws) return;
|
|
3030
|
+
try {
|
|
3031
|
+
const dir = path7.join(HISTORY_DIR, this.sanitize(agentType));
|
|
3032
|
+
fs3.mkdirSync(dir, { recursive: true });
|
|
3033
|
+
const date5 = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
3034
|
+
const filePath = path7.join(dir, `${this.sanitize(id)}_${date5}.jsonl`);
|
|
3035
|
+
const record2 = {
|
|
3036
|
+
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
3037
|
+
receivedAt: Date.now(),
|
|
3038
|
+
role: "system",
|
|
3039
|
+
kind: "session_start",
|
|
3040
|
+
content: ws,
|
|
3041
|
+
agent: agentType,
|
|
3042
|
+
instanceId,
|
|
3043
|
+
historySessionId: id,
|
|
3044
|
+
workspace: ws
|
|
3045
|
+
};
|
|
3046
|
+
fs3.appendFileSync(filePath, JSON.stringify(record2) + "\n", "utf-8");
|
|
3047
|
+
} catch {
|
|
3048
|
+
}
|
|
3049
|
+
}
|
|
3013
3050
|
promoteHistorySession(agentType, previousHistorySessionId, nextHistorySessionId) {
|
|
3014
3051
|
const fromId = String(previousHistorySessionId || "").trim();
|
|
3015
3052
|
const toId = String(nextHistorySessionId || "").trim();
|
|
@@ -5602,7 +5639,7 @@ function getStateLastSignature(state) {
|
|
|
5602
5639
|
async function getStableExtensionBaseline(h) {
|
|
5603
5640
|
const first = await readExtensionChatState(h);
|
|
5604
5641
|
if (getStateMessageCount(first) > 0 || getStateLastSignature(first)) return first;
|
|
5605
|
-
await new Promise((
|
|
5642
|
+
await new Promise((resolve15) => setTimeout(resolve15, 150));
|
|
5606
5643
|
const second = await readExtensionChatState(h);
|
|
5607
5644
|
return getStateMessageCount(second) >= getStateMessageCount(first) ? second : first;
|
|
5608
5645
|
}
|
|
@@ -5610,7 +5647,7 @@ async function verifyExtensionSendObserved(h, before) {
|
|
|
5610
5647
|
const beforeCount = getStateMessageCount(before);
|
|
5611
5648
|
const beforeSignature = getStateLastSignature(before);
|
|
5612
5649
|
for (let attempt = 0; attempt < 12; attempt += 1) {
|
|
5613
|
-
await new Promise((
|
|
5650
|
+
await new Promise((resolve15) => setTimeout(resolve15, 250));
|
|
5614
5651
|
const state = await readExtensionChatState(h);
|
|
5615
5652
|
if (state?.status === "waiting_approval") return true;
|
|
5616
5653
|
const afterCount = getStateMessageCount(state);
|
|
@@ -6820,6 +6857,32 @@ var init_cdp_commands = __esm({
|
|
|
6820
6857
|
}
|
|
6821
6858
|
});
|
|
6822
6859
|
|
|
6860
|
+
// ../../oss/packages/daemon-core/src/config/provider-source-config.ts
|
|
6861
|
+
function normalizeProviderDir(value) {
|
|
6862
|
+
if (typeof value !== "string") return void 0;
|
|
6863
|
+
const trimmed = value.trim();
|
|
6864
|
+
return trimmed ? trimmed : void 0;
|
|
6865
|
+
}
|
|
6866
|
+
function parseProviderSourceConfigUpdate(input) {
|
|
6867
|
+
const updates = {};
|
|
6868
|
+
if (Object.prototype.hasOwnProperty.call(input, "providerSourceMode")) {
|
|
6869
|
+
const { providerSourceMode } = input;
|
|
6870
|
+
if (providerSourceMode !== "normal" && providerSourceMode !== "no-upstream") {
|
|
6871
|
+
return { ok: false, error: "providerSourceMode must be 'normal' or 'no-upstream'" };
|
|
6872
|
+
}
|
|
6873
|
+
updates.providerSourceMode = providerSourceMode;
|
|
6874
|
+
}
|
|
6875
|
+
if (Object.prototype.hasOwnProperty.call(input, "providerDir")) {
|
|
6876
|
+
updates.providerDir = normalizeProviderDir(input.providerDir);
|
|
6877
|
+
}
|
|
6878
|
+
return { ok: true, updates };
|
|
6879
|
+
}
|
|
6880
|
+
var init_provider_source_config = __esm({
|
|
6881
|
+
"../../oss/packages/daemon-core/src/config/provider-source-config.ts"() {
|
|
6882
|
+
"use strict";
|
|
6883
|
+
}
|
|
6884
|
+
});
|
|
6885
|
+
|
|
6823
6886
|
// ../../oss/packages/daemon-core/src/providers/cli-script-results.ts
|
|
6824
6887
|
function parseCliScriptResult(result) {
|
|
6825
6888
|
if (typeof result === "string") {
|
|
@@ -6936,6 +6999,38 @@ async function handleSetProviderSetting(h, args) {
|
|
|
6936
6999
|
}
|
|
6937
7000
|
return { success: false, error: `Failed to set ${providerType}.${key} \u2014 invalid key, value, or not a public setting` };
|
|
6938
7001
|
}
|
|
7002
|
+
function handleGetProviderSourceConfig(h, _args) {
|
|
7003
|
+
const loader = h.ctx.providerLoader;
|
|
7004
|
+
if (!loader) return { success: false, error: "providerLoader not available" };
|
|
7005
|
+
return { success: true, ...loader.getSourceConfig() };
|
|
7006
|
+
}
|
|
7007
|
+
async function handleSetProviderSourceConfig(h, args) {
|
|
7008
|
+
const loader = h.ctx.providerLoader;
|
|
7009
|
+
if (!loader) return { success: false, error: "providerLoader not available" };
|
|
7010
|
+
const parsed = parseProviderSourceConfigUpdate(args || {});
|
|
7011
|
+
if ("error" in parsed) {
|
|
7012
|
+
return { success: false, error: parsed.error };
|
|
7013
|
+
}
|
|
7014
|
+
const currentConfig2 = loadConfig();
|
|
7015
|
+
const nextConfig = {
|
|
7016
|
+
...currentConfig2,
|
|
7017
|
+
...parsed.updates.providerSourceMode ? { providerSourceMode: parsed.updates.providerSourceMode } : {},
|
|
7018
|
+
...Object.prototype.hasOwnProperty.call(parsed.updates, "providerDir") ? { providerDir: parsed.updates.providerDir } : {}
|
|
7019
|
+
};
|
|
7020
|
+
saveConfig(nextConfig);
|
|
7021
|
+
const sourceConfig = loader.applySourceConfig({
|
|
7022
|
+
sourceMode: nextConfig.providerSourceMode,
|
|
7023
|
+
userDir: Object.prototype.hasOwnProperty.call(parsed.updates, "providerDir") ? parsed.updates.providerDir : loader.getSourceConfig().explicitProviderDir || void 0
|
|
7024
|
+
});
|
|
7025
|
+
loader.reload();
|
|
7026
|
+
loader.registerToDetector();
|
|
7027
|
+
await h.ctx.onProviderSourceConfigChanged?.();
|
|
7028
|
+
LOG.info(
|
|
7029
|
+
"Command",
|
|
7030
|
+
`[set_provider_source_config] mode=${sourceConfig.sourceMode} explicitProviderDir=${sourceConfig.explicitProviderDir || "-"} userDir=${sourceConfig.userDir}`
|
|
7031
|
+
);
|
|
7032
|
+
return { success: true, reloaded: true, ...sourceConfig };
|
|
7033
|
+
}
|
|
6939
7034
|
function normalizeProviderScriptArgs(args) {
|
|
6940
7035
|
const normalizedArgs = { ...args || {} };
|
|
6941
7036
|
for (const key of ["mode", "model", "message", "action", "button", "text", "sessionId", "value"]) {
|
|
@@ -7129,6 +7224,8 @@ function handleSetIdeExtension(h, args) {
|
|
|
7129
7224
|
var init_stream_commands = __esm({
|
|
7130
7225
|
"../../oss/packages/daemon-core/src/commands/stream-commands.ts"() {
|
|
7131
7226
|
"use strict";
|
|
7227
|
+
init_config();
|
|
7228
|
+
init_provider_source_config();
|
|
7132
7229
|
init_cli_script_results();
|
|
7133
7230
|
init_control_effects();
|
|
7134
7231
|
init_logger();
|
|
@@ -7656,6 +7753,10 @@ var init_handler = __esm({
|
|
|
7656
7753
|
return handleGetProviderSettings(this, args);
|
|
7657
7754
|
case "set_provider_setting":
|
|
7658
7755
|
return handleSetProviderSetting(this, args);
|
|
7756
|
+
case "get_provider_source_config":
|
|
7757
|
+
return handleGetProviderSourceConfig(this, args);
|
|
7758
|
+
case "set_provider_source_config":
|
|
7759
|
+
return handleSetProviderSourceConfig(this, args);
|
|
7659
7760
|
// ─── IDE Extension Settings (stream-commands.ts) ──────────
|
|
7660
7761
|
case "get_ide_extensions":
|
|
7661
7762
|
return handleGetIdeExtensions(this, args);
|
|
@@ -7695,7 +7796,7 @@ var init_handler = __esm({
|
|
|
7695
7796
|
try {
|
|
7696
7797
|
const http3 = await import("http");
|
|
7697
7798
|
const postData = JSON.stringify(body);
|
|
7698
|
-
const result = await new Promise((
|
|
7799
|
+
const result = await new Promise((resolve15, reject) => {
|
|
7699
7800
|
const req = http3.request({
|
|
7700
7801
|
hostname: "127.0.0.1",
|
|
7701
7802
|
port: 19280,
|
|
@@ -7707,9 +7808,9 @@ var init_handler = __esm({
|
|
|
7707
7808
|
res.on("data", (chunk) => data += chunk);
|
|
7708
7809
|
res.on("end", () => {
|
|
7709
7810
|
try {
|
|
7710
|
-
|
|
7811
|
+
resolve15(JSON.parse(data));
|
|
7711
7812
|
} catch {
|
|
7712
|
-
|
|
7813
|
+
resolve15({ raw: data });
|
|
7713
7814
|
}
|
|
7714
7815
|
});
|
|
7715
7816
|
});
|
|
@@ -7727,15 +7828,15 @@ var init_handler = __esm({
|
|
|
7727
7828
|
if (!providerType) return { success: false, error: "providerType required" };
|
|
7728
7829
|
try {
|
|
7729
7830
|
const http3 = await import("http");
|
|
7730
|
-
const result = await new Promise((
|
|
7831
|
+
const result = await new Promise((resolve15, reject) => {
|
|
7731
7832
|
http3.get(`http://127.0.0.1:19280/api/providers/${providerType}/${endpoint}`, (res) => {
|
|
7732
7833
|
let data = "";
|
|
7733
7834
|
res.on("data", (chunk) => data += chunk);
|
|
7734
7835
|
res.on("end", () => {
|
|
7735
7836
|
try {
|
|
7736
|
-
|
|
7837
|
+
resolve15(JSON.parse(data));
|
|
7737
7838
|
} catch {
|
|
7738
|
-
|
|
7839
|
+
resolve15({ raw: data });
|
|
7739
7840
|
}
|
|
7740
7841
|
});
|
|
7741
7842
|
}).on("error", reject);
|
|
@@ -7749,7 +7850,7 @@ var init_handler = __esm({
|
|
|
7749
7850
|
try {
|
|
7750
7851
|
const http3 = await import("http");
|
|
7751
7852
|
const postData = JSON.stringify(args || {});
|
|
7752
|
-
const result = await new Promise((
|
|
7853
|
+
const result = await new Promise((resolve15, reject) => {
|
|
7753
7854
|
const req = http3.request({
|
|
7754
7855
|
hostname: "127.0.0.1",
|
|
7755
7856
|
port: 19280,
|
|
@@ -7761,9 +7862,9 @@ var init_handler = __esm({
|
|
|
7761
7862
|
res.on("data", (chunk) => data += chunk);
|
|
7762
7863
|
res.on("end", () => {
|
|
7763
7864
|
try {
|
|
7764
|
-
|
|
7865
|
+
resolve15(JSON.parse(data));
|
|
7765
7866
|
} catch {
|
|
7766
|
-
|
|
7867
|
+
resolve15({ raw: data });
|
|
7767
7868
|
}
|
|
7768
7869
|
});
|
|
7769
7870
|
});
|
|
@@ -9947,7 +10048,7 @@ var init_provider_cli_adapter = __esm({
|
|
|
9947
10048
|
`[${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)}`
|
|
9948
10049
|
);
|
|
9949
10050
|
}
|
|
9950
|
-
await new Promise((
|
|
10051
|
+
await new Promise((resolve15) => setTimeout(resolve15, 50));
|
|
9951
10052
|
}
|
|
9952
10053
|
const finalScreenText = this.terminalScreen.getText() || "";
|
|
9953
10054
|
LOG.warn(
|
|
@@ -10520,7 +10621,7 @@ ${data.message || ""}`.trim();
|
|
|
10520
10621
|
const deadline = Date.now() + 1e4;
|
|
10521
10622
|
while (this.startupParseGate && Date.now() < deadline) {
|
|
10522
10623
|
this.resolveStartupState("send_wait");
|
|
10523
|
-
await new Promise((
|
|
10624
|
+
await new Promise((resolve15) => setTimeout(resolve15, 50));
|
|
10524
10625
|
}
|
|
10525
10626
|
}
|
|
10526
10627
|
await this.waitForInteractivePrompt();
|
|
@@ -10590,12 +10691,12 @@ ${data.message || ""}`.trim();
|
|
|
10590
10691
|
if (this.isWaitingForResponse) this.finishResponse();
|
|
10591
10692
|
}, this.timeouts.maxResponse);
|
|
10592
10693
|
};
|
|
10593
|
-
await new Promise((
|
|
10694
|
+
await new Promise((resolve15) => {
|
|
10594
10695
|
let resolved = false;
|
|
10595
10696
|
const resolveOnce = () => {
|
|
10596
10697
|
if (resolved) return;
|
|
10597
10698
|
resolved = true;
|
|
10598
|
-
|
|
10699
|
+
resolve15();
|
|
10599
10700
|
};
|
|
10600
10701
|
const submit = () => {
|
|
10601
10702
|
if (!this.ptyProcess) {
|
|
@@ -10769,17 +10870,17 @@ ${data.message || ""}`.trim();
|
|
|
10769
10870
|
}
|
|
10770
10871
|
}
|
|
10771
10872
|
waitForStopped(timeoutMs) {
|
|
10772
|
-
return new Promise((
|
|
10873
|
+
return new Promise((resolve15) => {
|
|
10773
10874
|
const startedAt = Date.now();
|
|
10774
10875
|
const timer = setInterval(() => {
|
|
10775
10876
|
if (!this.ptyProcess || this.currentStatus === "stopped") {
|
|
10776
10877
|
clearInterval(timer);
|
|
10777
|
-
|
|
10878
|
+
resolve15(true);
|
|
10778
10879
|
return;
|
|
10779
10880
|
}
|
|
10780
10881
|
if (Date.now() - startedAt >= timeoutMs) {
|
|
10781
10882
|
clearInterval(timer);
|
|
10782
|
-
|
|
10883
|
+
resolve15(false);
|
|
10783
10884
|
}
|
|
10784
10885
|
}, 100);
|
|
10785
10886
|
});
|
|
@@ -11069,6 +11170,9 @@ function getForcedNewSessionScriptName(provider, launchMode) {
|
|
|
11069
11170
|
const controls = Array.isArray(provider.controls) ? provider.controls : [];
|
|
11070
11171
|
for (const control of controls) {
|
|
11071
11172
|
if (control?.type !== "action") continue;
|
|
11173
|
+
if (typeof control?.confirmTitle === "string" && control.confirmTitle.trim()) continue;
|
|
11174
|
+
if (typeof control?.confirmMessage === "string" && control.confirmMessage.trim()) continue;
|
|
11175
|
+
if (typeof control?.confirmLabel === "string" && control.confirmLabel.trim()) continue;
|
|
11072
11176
|
const invokeScript = typeof control?.invokeScript === "string" ? control.invokeScript.trim() : "";
|
|
11073
11177
|
if (!invokeScript) continue;
|
|
11074
11178
|
const controlId = typeof control?.id === "string" ? control.id.trim() : "";
|
|
@@ -11078,6 +11182,20 @@ function getForcedNewSessionScriptName(provider, launchMode) {
|
|
|
11078
11182
|
}
|
|
11079
11183
|
return null;
|
|
11080
11184
|
}
|
|
11185
|
+
async function waitForCliAdapterReady(adapter, options) {
|
|
11186
|
+
const timeoutMs = Math.max(100, options?.timeoutMs ?? 15e3);
|
|
11187
|
+
const pollMs = Math.max(10, options?.pollMs ?? 50);
|
|
11188
|
+
const deadline = Date.now() + timeoutMs;
|
|
11189
|
+
while (Date.now() < deadline) {
|
|
11190
|
+
if (adapter?.isReady?.()) return;
|
|
11191
|
+
const status = adapter?.getStatus?.()?.status;
|
|
11192
|
+
if (status === "stopped") {
|
|
11193
|
+
throw new Error("CLI runtime stopped before it became ready");
|
|
11194
|
+
}
|
|
11195
|
+
await new Promise((resolve15) => setTimeout(resolve15, pollMs));
|
|
11196
|
+
}
|
|
11197
|
+
throw new Error(`CLI runtime did not become ready within ${timeoutMs}ms`);
|
|
11198
|
+
}
|
|
11081
11199
|
var os13, path11, crypto3, fs5, import_node_module, CachedDatabaseSync, CliProviderInstance;
|
|
11082
11200
|
var init_cli_provider_instance = __esm({
|
|
11083
11201
|
"../../oss/packages/daemon-core/src/providers/cli-provider-instance.ts"() {
|
|
@@ -11374,6 +11492,7 @@ var init_cli_provider_instance = __esm({
|
|
|
11374
11492
|
const scriptName = getForcedNewSessionScriptName(this.provider, this.launchMode);
|
|
11375
11493
|
if (!scriptName) return;
|
|
11376
11494
|
LOG.info("CLI", `[${this.type}] forcing fresh session launch via script: ${scriptName}`);
|
|
11495
|
+
await waitForCliAdapterReady(this.adapter);
|
|
11377
11496
|
const raw = await this.adapter.invokeScript(scriptName, {});
|
|
11378
11497
|
const parsed = parseCliScriptResult(raw);
|
|
11379
11498
|
if (!parsed.success) {
|
|
@@ -11723,6 +11842,7 @@ ${effect.notification.body || ""}`.trim();
|
|
|
11723
11842
|
const previousProviderSessionId = this.providerSessionId;
|
|
11724
11843
|
this.providerSessionId = nextSessionId;
|
|
11725
11844
|
this.historyWriter.promoteHistorySession(this.type, previousHistorySessionId, nextSessionId);
|
|
11845
|
+
this.historyWriter.writeSessionStart(this.type, nextSessionId, this.workingDir, this.instanceId);
|
|
11726
11846
|
this.adapter.updateRuntimeMeta({ providerSessionId: nextSessionId });
|
|
11727
11847
|
this.onProviderSessionResolved?.({
|
|
11728
11848
|
instanceId: this.instanceId,
|
|
@@ -27826,8 +27946,8 @@ var init_acp = __esm({
|
|
|
27826
27946
|
this.#requestHandler = requestHandler;
|
|
27827
27947
|
this.#notificationHandler = notificationHandler;
|
|
27828
27948
|
this.#stream = stream;
|
|
27829
|
-
this.#closedPromise = new Promise((
|
|
27830
|
-
this.#abortController.signal.addEventListener("abort", () =>
|
|
27949
|
+
this.#closedPromise = new Promise((resolve15) => {
|
|
27950
|
+
this.#abortController.signal.addEventListener("abort", () => resolve15());
|
|
27831
27951
|
});
|
|
27832
27952
|
this.#receive();
|
|
27833
27953
|
}
|
|
@@ -27976,8 +28096,8 @@ var init_acp = __esm({
|
|
|
27976
28096
|
}
|
|
27977
28097
|
async sendRequest(method, params) {
|
|
27978
28098
|
const id = this.#nextRequestId++;
|
|
27979
|
-
const responsePromise = new Promise((
|
|
27980
|
-
this.#pendingResponses.set(id, { resolve:
|
|
28099
|
+
const responsePromise = new Promise((resolve15, reject) => {
|
|
28100
|
+
this.#pendingResponses.set(id, { resolve: resolve15, reject });
|
|
27981
28101
|
});
|
|
27982
28102
|
await this.#sendMessage({ jsonrpc: "2.0", id, method, params });
|
|
27983
28103
|
return responsePromise;
|
|
@@ -28613,13 +28733,13 @@ var init_acp_provider_instance = __esm({
|
|
|
28613
28733
|
}
|
|
28614
28734
|
this.currentStatus = "waiting_approval";
|
|
28615
28735
|
this.detectStatusTransition();
|
|
28616
|
-
const approved = await new Promise((
|
|
28617
|
-
this.permissionResolvers.push(
|
|
28736
|
+
const approved = await new Promise((resolve15) => {
|
|
28737
|
+
this.permissionResolvers.push(resolve15);
|
|
28618
28738
|
setTimeout(() => {
|
|
28619
|
-
const idx = this.permissionResolvers.indexOf(
|
|
28739
|
+
const idx = this.permissionResolvers.indexOf(resolve15);
|
|
28620
28740
|
if (idx >= 0) {
|
|
28621
28741
|
this.permissionResolvers.splice(idx, 1);
|
|
28622
|
-
|
|
28742
|
+
resolve15(false);
|
|
28623
28743
|
}
|
|
28624
28744
|
}, 3e5);
|
|
28625
28745
|
});
|
|
@@ -30750,7 +30870,7 @@ var init_handler2 = __esm({
|
|
|
30750
30870
|
this._addToNodeFs(path30, initialAdd, wh, depth + 1);
|
|
30751
30871
|
}
|
|
30752
30872
|
}).on(EV.ERROR, this._boundHandleError);
|
|
30753
|
-
return new Promise((
|
|
30873
|
+
return new Promise((resolve15, reject) => {
|
|
30754
30874
|
if (!stream)
|
|
30755
30875
|
return reject();
|
|
30756
30876
|
stream.once(STR_END, () => {
|
|
@@ -30759,7 +30879,7 @@ var init_handler2 = __esm({
|
|
|
30759
30879
|
return;
|
|
30760
30880
|
}
|
|
30761
30881
|
const wasThrottled = throttler ? throttler.clear() : false;
|
|
30762
|
-
|
|
30882
|
+
resolve15(void 0);
|
|
30763
30883
|
previous.getChildren().filter((item) => {
|
|
30764
30884
|
return item !== directory && !current.has(item);
|
|
30765
30885
|
}).forEach((item) => {
|
|
@@ -31644,6 +31764,9 @@ function validateProviderDefinition(raw) {
|
|
|
31644
31764
|
warnings.push(`Unknown provider field: ${key}`);
|
|
31645
31765
|
}
|
|
31646
31766
|
}
|
|
31767
|
+
if (provider.disableUpstream !== void 0) {
|
|
31768
|
+
warnings.push("disableUpstream is deprecated in provider definitions; use machine-level provider source policy instead");
|
|
31769
|
+
}
|
|
31647
31770
|
const category = provider.category;
|
|
31648
31771
|
if (category === "cli" || category === "acp") {
|
|
31649
31772
|
const spawn6 = provider.spawn;
|
|
@@ -31773,8 +31896,11 @@ var init_provider_loader = __esm({
|
|
|
31773
31896
|
ProviderLoader = class _ProviderLoader {
|
|
31774
31897
|
providers = /* @__PURE__ */ new Map();
|
|
31775
31898
|
providerAvailability = /* @__PURE__ */ new Map();
|
|
31899
|
+
defaultProvidersDir;
|
|
31900
|
+
explicitProviderDir = null;
|
|
31776
31901
|
userDir;
|
|
31777
31902
|
upstreamDir;
|
|
31903
|
+
sourceMode = "normal";
|
|
31778
31904
|
disableUpstream;
|
|
31779
31905
|
watchers = [];
|
|
31780
31906
|
logFn;
|
|
@@ -31788,22 +31914,15 @@ var init_provider_loader = __esm({
|
|
|
31788
31914
|
static META_FILE = ".meta.json";
|
|
31789
31915
|
constructor(options) {
|
|
31790
31916
|
this.logFn = options?.logFn || LOG.forComponent("Provider").asLogFn();
|
|
31791
|
-
|
|
31792
|
-
|
|
31793
|
-
|
|
31794
|
-
|
|
31795
|
-
|
|
31796
|
-
|
|
31797
|
-
|
|
31798
|
-
|
|
31799
|
-
|
|
31800
|
-
} else {
|
|
31801
|
-
this.userDir = defaultProvidersDir;
|
|
31802
|
-
this.log(`Using default user providers directory: ${this.userDir}`);
|
|
31803
|
-
}
|
|
31804
|
-
}
|
|
31805
|
-
this.upstreamDir = path14.join(defaultProvidersDir, ".upstream");
|
|
31806
|
-
this.disableUpstream = options?.disableUpstream ?? false;
|
|
31917
|
+
this.defaultProvidersDir = path14.join(os15.homedir(), ".adhdev", "providers");
|
|
31918
|
+
this.userDir = this.defaultProvidersDir;
|
|
31919
|
+
this.upstreamDir = path14.join(this.defaultProvidersDir, ".upstream");
|
|
31920
|
+
this.disableUpstream = false;
|
|
31921
|
+
this.applySourceConfig({
|
|
31922
|
+
userDir: options?.userDir,
|
|
31923
|
+
sourceMode: options?.sourceMode,
|
|
31924
|
+
disableUpstream: options?.disableUpstream
|
|
31925
|
+
});
|
|
31807
31926
|
}
|
|
31808
31927
|
log(msg) {
|
|
31809
31928
|
this.logFn(`[ProviderLoader] ${msg}`);
|
|
@@ -31828,6 +31947,33 @@ var init_provider_loader = __esm({
|
|
|
31828
31947
|
getProviderRoots() {
|
|
31829
31948
|
return [this.userDir, this.upstreamDir];
|
|
31830
31949
|
}
|
|
31950
|
+
getSourceConfig() {
|
|
31951
|
+
return {
|
|
31952
|
+
sourceMode: this.sourceMode,
|
|
31953
|
+
disableUpstream: this.disableUpstream,
|
|
31954
|
+
explicitProviderDir: this.explicitProviderDir,
|
|
31955
|
+
userDir: this.userDir,
|
|
31956
|
+
upstreamDir: this.upstreamDir,
|
|
31957
|
+
providerRoots: this.getProviderRoots()
|
|
31958
|
+
};
|
|
31959
|
+
}
|
|
31960
|
+
applySourceConfig(options) {
|
|
31961
|
+
const nextSourceMode = options?.sourceMode === "no-upstream" ? "no-upstream" : options?.sourceMode === "normal" ? "normal" : options?.disableUpstream ? "no-upstream" : this.sourceMode || "normal";
|
|
31962
|
+
if (options && Object.prototype.hasOwnProperty.call(options, "userDir")) {
|
|
31963
|
+
this.explicitProviderDir = options.userDir?.trim() ? options.userDir : null;
|
|
31964
|
+
}
|
|
31965
|
+
this.sourceMode = nextSourceMode;
|
|
31966
|
+
this.userDir = this.explicitProviderDir || this.defaultProvidersDir;
|
|
31967
|
+
this.upstreamDir = path14.join(this.defaultProvidersDir, ".upstream");
|
|
31968
|
+
this.disableUpstream = this.sourceMode === "no-upstream";
|
|
31969
|
+
if (this.explicitProviderDir) {
|
|
31970
|
+
this.log(`Config 'providerDir' applied: ${this.userDir}`);
|
|
31971
|
+
} else {
|
|
31972
|
+
this.log(`Using default user providers directory: ${this.userDir}`);
|
|
31973
|
+
}
|
|
31974
|
+
this.log(`Provider source config: mode=${this.sourceMode} explicitProviderDir=${this.explicitProviderDir || "-"} userDir=${this.userDir} upstreamDir=${this.upstreamDir}`);
|
|
31975
|
+
return this.getSourceConfig();
|
|
31976
|
+
}
|
|
31831
31977
|
/**
|
|
31832
31978
|
* Canonical provider directory shape for a given root.
|
|
31833
31979
|
*/
|
|
@@ -31878,7 +32024,7 @@ var init_provider_loader = __esm({
|
|
|
31878
32024
|
this.log(`Loaded ${upstreamCount} upstream providers (auto-updated)`);
|
|
31879
32025
|
}
|
|
31880
32026
|
} else if (this.disableUpstream) {
|
|
31881
|
-
this.log("Upstream loading disabled (
|
|
32027
|
+
this.log("Upstream loading disabled (sourceMode=no-upstream)");
|
|
31882
32028
|
}
|
|
31883
32029
|
if (fs6.existsSync(this.userDir)) {
|
|
31884
32030
|
const userCount = this.loadDir(this.userDir, [".upstream"]);
|
|
@@ -32389,7 +32535,7 @@ var init_provider_loader = __esm({
|
|
|
32389
32535
|
*/
|
|
32390
32536
|
async fetchLatest() {
|
|
32391
32537
|
if (this.disableUpstream) {
|
|
32392
|
-
this.log("Upstream fetch skipped (
|
|
32538
|
+
this.log("Upstream fetch skipped (sourceMode=no-upstream)");
|
|
32393
32539
|
return { updated: false };
|
|
32394
32540
|
}
|
|
32395
32541
|
const https = require("https");
|
|
@@ -32411,7 +32557,7 @@ var init_provider_loader = __esm({
|
|
|
32411
32557
|
return { updated: false };
|
|
32412
32558
|
}
|
|
32413
32559
|
try {
|
|
32414
|
-
const etag = await new Promise((
|
|
32560
|
+
const etag = await new Promise((resolve15, reject) => {
|
|
32415
32561
|
const options = {
|
|
32416
32562
|
method: "HEAD",
|
|
32417
32563
|
hostname: "github.com",
|
|
@@ -32429,7 +32575,7 @@ var init_provider_loader = __esm({
|
|
|
32429
32575
|
headers: { "User-Agent": "adhdev-launcher" },
|
|
32430
32576
|
timeout: 1e4
|
|
32431
32577
|
}, (res2) => {
|
|
32432
|
-
|
|
32578
|
+
resolve15(res2.headers.etag || res2.headers["last-modified"] || "");
|
|
32433
32579
|
});
|
|
32434
32580
|
req2.on("error", reject);
|
|
32435
32581
|
req2.on("timeout", () => {
|
|
@@ -32438,7 +32584,7 @@ var init_provider_loader = __esm({
|
|
|
32438
32584
|
});
|
|
32439
32585
|
req2.end();
|
|
32440
32586
|
} else {
|
|
32441
|
-
|
|
32587
|
+
resolve15(res.headers.etag || res.headers["last-modified"] || "");
|
|
32442
32588
|
}
|
|
32443
32589
|
});
|
|
32444
32590
|
req.on("error", reject);
|
|
@@ -32502,7 +32648,7 @@ var init_provider_loader = __esm({
|
|
|
32502
32648
|
downloadFile(url2, destPath) {
|
|
32503
32649
|
const https = require("https");
|
|
32504
32650
|
const http3 = require("http");
|
|
32505
|
-
return new Promise((
|
|
32651
|
+
return new Promise((resolve15, reject) => {
|
|
32506
32652
|
const doRequest = (reqUrl, redirectCount = 0) => {
|
|
32507
32653
|
if (redirectCount > 5) {
|
|
32508
32654
|
reject(new Error("Too many redirects"));
|
|
@@ -32522,7 +32668,7 @@ var init_provider_loader = __esm({
|
|
|
32522
32668
|
res.pipe(ws);
|
|
32523
32669
|
ws.on("finish", () => {
|
|
32524
32670
|
ws.close();
|
|
32525
|
-
|
|
32671
|
+
resolve15();
|
|
32526
32672
|
});
|
|
32527
32673
|
ws.on("error", reject);
|
|
32528
32674
|
});
|
|
@@ -32998,17 +33144,17 @@ async function findFreePort(ports) {
|
|
|
32998
33144
|
throw new Error("No free port found");
|
|
32999
33145
|
}
|
|
33000
33146
|
function checkPortFree(port) {
|
|
33001
|
-
return new Promise((
|
|
33147
|
+
return new Promise((resolve15) => {
|
|
33002
33148
|
const server = net2.createServer();
|
|
33003
33149
|
server.unref();
|
|
33004
|
-
server.on("error", () =>
|
|
33150
|
+
server.on("error", () => resolve15(false));
|
|
33005
33151
|
server.listen(port, "127.0.0.1", () => {
|
|
33006
|
-
server.close(() =>
|
|
33152
|
+
server.close(() => resolve15(true));
|
|
33007
33153
|
});
|
|
33008
33154
|
});
|
|
33009
33155
|
}
|
|
33010
33156
|
async function isCdpActive(port) {
|
|
33011
|
-
return new Promise((
|
|
33157
|
+
return new Promise((resolve15) => {
|
|
33012
33158
|
const req = require("http").get(`http://127.0.0.1:${port}/json/version`, {
|
|
33013
33159
|
timeout: 2e3
|
|
33014
33160
|
}, (res) => {
|
|
@@ -33017,16 +33163,16 @@ async function isCdpActive(port) {
|
|
|
33017
33163
|
res.on("end", () => {
|
|
33018
33164
|
try {
|
|
33019
33165
|
const info = JSON.parse(data);
|
|
33020
|
-
|
|
33166
|
+
resolve15(!!info["WebKit-Version"] || !!info["Browser"]);
|
|
33021
33167
|
} catch {
|
|
33022
|
-
|
|
33168
|
+
resolve15(false);
|
|
33023
33169
|
}
|
|
33024
33170
|
});
|
|
33025
33171
|
});
|
|
33026
|
-
req.on("error", () =>
|
|
33172
|
+
req.on("error", () => resolve15(false));
|
|
33027
33173
|
req.on("timeout", () => {
|
|
33028
33174
|
req.destroy();
|
|
33029
|
-
|
|
33175
|
+
resolve15(false);
|
|
33030
33176
|
});
|
|
33031
33177
|
});
|
|
33032
33178
|
}
|
|
@@ -33772,7 +33918,7 @@ async function waitForPidExit(pid, timeoutMs) {
|
|
|
33772
33918
|
while (Date.now() - start < timeoutMs) {
|
|
33773
33919
|
try {
|
|
33774
33920
|
process.kill(pid, 0);
|
|
33775
|
-
await new Promise((
|
|
33921
|
+
await new Promise((resolve15) => setTimeout(resolve15, 250));
|
|
33776
33922
|
} catch {
|
|
33777
33923
|
return;
|
|
33778
33924
|
}
|
|
@@ -33887,7 +34033,7 @@ async function runDaemonUpgradeHelper(payload) {
|
|
|
33887
34033
|
appendUpgradeLog(installOutput.trim());
|
|
33888
34034
|
}
|
|
33889
34035
|
if (process.platform === "win32") {
|
|
33890
|
-
await new Promise((
|
|
34036
|
+
await new Promise((resolve15) => setTimeout(resolve15, 500));
|
|
33891
34037
|
cleanupStaleGlobalInstallDirs(payload.packageName);
|
|
33892
34038
|
appendUpgradeLog("Post-install staging cleanup complete");
|
|
33893
34039
|
}
|
|
@@ -34215,8 +34361,9 @@ var init_router = __esm({
|
|
|
34215
34361
|
if (!providerType) {
|
|
34216
34362
|
return { success: false, error: "providerType required" };
|
|
34217
34363
|
}
|
|
34218
|
-
const
|
|
34219
|
-
const
|
|
34364
|
+
const wantsAll = args?.all === true;
|
|
34365
|
+
const offset = wantsAll ? 0 : Math.max(0, Number(args?.offset) || 0);
|
|
34366
|
+
const limit = wantsAll ? Number.MAX_SAFE_INTEGER : Math.max(1, Math.min(100, Number(args?.limit) || 30));
|
|
34220
34367
|
const { sessions: historySessions, hasMore } = listSavedHistorySessions(providerType, { offset, limit });
|
|
34221
34368
|
const state = loadState();
|
|
34222
34369
|
const savedSessions = getSavedProviderSessions(state, { providerType, kind });
|
|
@@ -34237,13 +34384,13 @@ var init_router = __esm({
|
|
|
34237
34384
|
providerName: saved?.providerName || recent?.providerName || providerType,
|
|
34238
34385
|
kind: saved?.kind || recent?.kind || kind,
|
|
34239
34386
|
title: saved?.title || recent?.title || session.sessionTitle || session.preview || providerType,
|
|
34240
|
-
workspace: saved?.workspace || recent?.workspace,
|
|
34387
|
+
workspace: saved?.workspace || recent?.workspace || session.workspace,
|
|
34241
34388
|
currentModel: saved?.currentModel || recent?.currentModel,
|
|
34242
34389
|
preview: session.preview,
|
|
34243
34390
|
messageCount: session.messageCount,
|
|
34244
34391
|
firstMessageAt: session.firstMessageAt,
|
|
34245
34392
|
lastMessageAt: session.lastMessageAt,
|
|
34246
|
-
canResume: !!(saved?.workspace || recent?.workspace) && canResumeById
|
|
34393
|
+
canResume: !!(saved?.workspace || recent?.workspace || session.workspace) && canResumeById
|
|
34247
34394
|
};
|
|
34248
34395
|
}),
|
|
34249
34396
|
hasMore
|
|
@@ -34878,7 +35025,7 @@ var init_provider_adapter = __esm({
|
|
|
34878
35025
|
const beforeCount = this.messageCount(before);
|
|
34879
35026
|
const beforeSignature = this.lastMessageSignature(before);
|
|
34880
35027
|
for (let attempt = 0; attempt < 12; attempt += 1) {
|
|
34881
|
-
await new Promise((
|
|
35028
|
+
await new Promise((resolve15) => setTimeout(resolve15, 250));
|
|
34882
35029
|
let state;
|
|
34883
35030
|
try {
|
|
34884
35031
|
state = await this.readChat(evaluate);
|
|
@@ -34900,7 +35047,7 @@ var init_provider_adapter = __esm({
|
|
|
34900
35047
|
if (this.messageCount(first) > 0 || this.lastMessageSignature(first)) {
|
|
34901
35048
|
return first;
|
|
34902
35049
|
}
|
|
34903
|
-
await new Promise((
|
|
35050
|
+
await new Promise((resolve15) => setTimeout(resolve15, 150));
|
|
34904
35051
|
const second = await this.readChat(evaluate);
|
|
34905
35052
|
return this.messageCount(second) >= this.messageCount(first) ? second : first;
|
|
34906
35053
|
}
|
|
@@ -35040,7 +35187,7 @@ var init_provider_adapter = __esm({
|
|
|
35040
35187
|
if (typeof data.error === "string" && data.error.trim()) return false;
|
|
35041
35188
|
}
|
|
35042
35189
|
for (let attempt = 0; attempt < 6; attempt += 1) {
|
|
35043
|
-
await new Promise((
|
|
35190
|
+
await new Promise((resolve15) => setTimeout(resolve15, 250));
|
|
35044
35191
|
const state = await this.readChat(evaluate);
|
|
35045
35192
|
const title = this.getStateTitle(state);
|
|
35046
35193
|
if (this.titlesMatch(title, sessionId)) return true;
|
|
@@ -37552,7 +37699,7 @@ function getCliTargetBundle(ctx, type, instanceId) {
|
|
|
37552
37699
|
return { target, instance, adapter };
|
|
37553
37700
|
}
|
|
37554
37701
|
function sleep(ms) {
|
|
37555
|
-
return new Promise((
|
|
37702
|
+
return new Promise((resolve15) => setTimeout(resolve15, ms));
|
|
37556
37703
|
}
|
|
37557
37704
|
async function waitForCliReady(ctx, type, instanceId, timeoutMs) {
|
|
37558
37705
|
const startedAt = Date.now();
|
|
@@ -38404,18 +38551,6 @@ function resolveAutoImplWritableProviderDir(ctx, category, type, requestedDir) {
|
|
|
38404
38551
|
if (!fs13.existsSync(providerJson)) {
|
|
38405
38552
|
return { dir: null, reason: `provider.json not found in writable provider directory: ${desiredDir}` };
|
|
38406
38553
|
}
|
|
38407
|
-
try {
|
|
38408
|
-
const providerData = JSON.parse(fs13.readFileSync(providerJson, "utf-8"));
|
|
38409
|
-
if (providerData.disableUpstream !== true) {
|
|
38410
|
-
providerData.disableUpstream = true;
|
|
38411
|
-
fs13.writeFileSync(providerJson, JSON.stringify(providerData, null, 2));
|
|
38412
|
-
}
|
|
38413
|
-
} catch (error48) {
|
|
38414
|
-
return {
|
|
38415
|
-
dir: null,
|
|
38416
|
-
reason: `Failed to update provider.json in writable provider directory: ${error48.message}`
|
|
38417
|
-
};
|
|
38418
|
-
}
|
|
38419
38554
|
return { dir: desiredDir };
|
|
38420
38555
|
}
|
|
38421
38556
|
function loadAutoImplReferenceScripts(ctx, referenceType) {
|
|
@@ -39714,6 +39849,8 @@ var init_dev_server = __esm({
|
|
|
39714
39849
|
fs14 = __toESM(require("fs"));
|
|
39715
39850
|
path23 = __toESM(require("path"));
|
|
39716
39851
|
init_provider_schema();
|
|
39852
|
+
init_config();
|
|
39853
|
+
init_provider_source_config();
|
|
39717
39854
|
init_scaffold_template();
|
|
39718
39855
|
init_version_archive();
|
|
39719
39856
|
init_logger();
|
|
@@ -39728,6 +39865,7 @@ var init_dev_server = __esm({
|
|
|
39728
39865
|
cdpManagers;
|
|
39729
39866
|
instanceManager;
|
|
39730
39867
|
cliManager;
|
|
39868
|
+
onProviderSourceConfigChanged;
|
|
39731
39869
|
logFn;
|
|
39732
39870
|
sseClients = [];
|
|
39733
39871
|
watchScriptPath = null;
|
|
@@ -39744,6 +39882,7 @@ var init_dev_server = __esm({
|
|
|
39744
39882
|
this.cdpManagers = options.cdpManagers;
|
|
39745
39883
|
this.instanceManager = options.instanceManager || null;
|
|
39746
39884
|
this.cliManager = options.cliManager || null;
|
|
39885
|
+
this.onProviderSourceConfigChanged = options.onProviderSourceConfigChanged || null;
|
|
39747
39886
|
this.logFn = options.logFn || LOG.forComponent("DevServer").asLogFn();
|
|
39748
39887
|
}
|
|
39749
39888
|
log(msg) {
|
|
@@ -39753,6 +39892,8 @@ var init_dev_server = __esm({
|
|
|
39753
39892
|
routes = [
|
|
39754
39893
|
// Static routes
|
|
39755
39894
|
{ method: "GET", pattern: "/api/providers", handler: (q, s) => this.handleListProviders(q, s) },
|
|
39895
|
+
{ method: "GET", pattern: "/api/providers/source-config", handler: (q, s) => this.handleGetProviderSourceConfig(q, s) },
|
|
39896
|
+
{ method: "POST", pattern: "/api/providers/source-config", handler: (q, s) => this.handleSetProviderSourceConfig(q, s) },
|
|
39756
39897
|
{ method: "GET", pattern: "/api/providers/versions", handler: (q, s) => this.handleDetectVersions(q, s) },
|
|
39757
39898
|
{ method: "POST", pattern: "/api/providers/reload", handler: (q, s) => this.handleReload(q, s) },
|
|
39758
39899
|
{ method: "POST", pattern: "/api/cdp/evaluate", handler: (q, s) => this.handleCdpEvaluate(q, s) },
|
|
@@ -39850,15 +39991,15 @@ var init_dev_server = __esm({
|
|
|
39850
39991
|
this.json(res, 500, { error: e.message });
|
|
39851
39992
|
}
|
|
39852
39993
|
});
|
|
39853
|
-
return new Promise((
|
|
39994
|
+
return new Promise((resolve15, reject) => {
|
|
39854
39995
|
this.server.listen(port, "127.0.0.1", () => {
|
|
39855
39996
|
this.log(`Dev server listening on http://127.0.0.1:${port}`);
|
|
39856
|
-
|
|
39997
|
+
resolve15();
|
|
39857
39998
|
});
|
|
39858
39999
|
this.server.on("error", (e) => {
|
|
39859
40000
|
if (e.code === "EADDRINUSE") {
|
|
39860
40001
|
this.log(`Port ${port} in use, skipping dev server`);
|
|
39861
|
-
|
|
40002
|
+
resolve15();
|
|
39862
40003
|
} else {
|
|
39863
40004
|
reject(e);
|
|
39864
40005
|
}
|
|
@@ -39872,7 +40013,33 @@ var init_dev_server = __esm({
|
|
|
39872
40013
|
// ─── Handlers ───
|
|
39873
40014
|
async handleListProviders(_req, res) {
|
|
39874
40015
|
const providers = this.providerLoader.getAll().map(toProviderListEntry);
|
|
39875
|
-
this.json(res, 200, { providers, count: providers.length });
|
|
40016
|
+
this.json(res, 200, { providers, count: providers.length, sourceConfig: this.providerLoader.getSourceConfig() });
|
|
40017
|
+
}
|
|
40018
|
+
async handleGetProviderSourceConfig(_req, res) {
|
|
40019
|
+
this.json(res, 200, { success: true, sourceConfig: this.providerLoader.getSourceConfig() });
|
|
40020
|
+
}
|
|
40021
|
+
async handleSetProviderSourceConfig(req, res) {
|
|
40022
|
+
const body = await this.readBody(req);
|
|
40023
|
+
const parsed = parseProviderSourceConfigUpdate(body || {});
|
|
40024
|
+
if (!parsed.ok) {
|
|
40025
|
+
this.json(res, 400, { success: false, error: parsed.error });
|
|
40026
|
+
return;
|
|
40027
|
+
}
|
|
40028
|
+
const currentConfig2 = loadConfig();
|
|
40029
|
+
const nextConfig = {
|
|
40030
|
+
...currentConfig2,
|
|
40031
|
+
...parsed.updates.providerSourceMode ? { providerSourceMode: parsed.updates.providerSourceMode } : {},
|
|
40032
|
+
...Object.prototype.hasOwnProperty.call(parsed.updates, "providerDir") ? { providerDir: parsed.updates.providerDir } : {}
|
|
40033
|
+
};
|
|
40034
|
+
saveConfig(nextConfig);
|
|
40035
|
+
const sourceConfig = this.providerLoader.applySourceConfig({
|
|
40036
|
+
sourceMode: nextConfig.providerSourceMode,
|
|
40037
|
+
userDir: Object.prototype.hasOwnProperty.call(parsed.updates, "providerDir") ? parsed.updates.providerDir : this.providerLoader.getSourceConfig().explicitProviderDir || void 0
|
|
40038
|
+
});
|
|
40039
|
+
this.providerLoader.reload();
|
|
40040
|
+
this.providerLoader.registerToDetector();
|
|
40041
|
+
await this.onProviderSourceConfigChanged?.();
|
|
40042
|
+
this.json(res, 200, { success: true, reloaded: true, sourceConfig });
|
|
39876
40043
|
}
|
|
39877
40044
|
async handleProviderConfig(type, _req, res) {
|
|
39878
40045
|
const provider = this.providerLoader.resolve(type);
|
|
@@ -39914,20 +40081,20 @@ var init_dev_server = __esm({
|
|
|
39914
40081
|
child.stderr?.on("data", (d) => {
|
|
39915
40082
|
stderr += d.toString().slice(0, 2e3);
|
|
39916
40083
|
});
|
|
39917
|
-
await new Promise((
|
|
40084
|
+
await new Promise((resolve15) => {
|
|
39918
40085
|
const timer = setTimeout(() => {
|
|
39919
40086
|
child.kill();
|
|
39920
|
-
|
|
40087
|
+
resolve15();
|
|
39921
40088
|
}, 3e3);
|
|
39922
40089
|
child.on("exit", () => {
|
|
39923
40090
|
clearTimeout(timer);
|
|
39924
|
-
|
|
40091
|
+
resolve15();
|
|
39925
40092
|
});
|
|
39926
40093
|
child.stdout?.once("data", () => {
|
|
39927
40094
|
setTimeout(() => {
|
|
39928
40095
|
child.kill();
|
|
39929
40096
|
clearTimeout(timer);
|
|
39930
|
-
|
|
40097
|
+
resolve15();
|
|
39931
40098
|
}, 500);
|
|
39932
40099
|
});
|
|
39933
40100
|
});
|
|
@@ -40423,14 +40590,14 @@ var init_dev_server = __esm({
|
|
|
40423
40590
|
child.stderr?.on("data", (d) => {
|
|
40424
40591
|
stderr += d.toString();
|
|
40425
40592
|
});
|
|
40426
|
-
await new Promise((
|
|
40593
|
+
await new Promise((resolve15) => {
|
|
40427
40594
|
const timer = setTimeout(() => {
|
|
40428
40595
|
child.kill();
|
|
40429
|
-
|
|
40596
|
+
resolve15();
|
|
40430
40597
|
}, timeout);
|
|
40431
40598
|
child.on("exit", () => {
|
|
40432
40599
|
clearTimeout(timer);
|
|
40433
|
-
|
|
40600
|
+
resolve15();
|
|
40434
40601
|
});
|
|
40435
40602
|
});
|
|
40436
40603
|
const elapsed = Date.now() - start;
|
|
@@ -40575,18 +40742,6 @@ var init_dev_server = __esm({
|
|
|
40575
40742
|
if (!fs14.existsSync(providerJson)) {
|
|
40576
40743
|
return { dir: null, reason: `provider.json not found in writable provider directory: ${desiredDir}` };
|
|
40577
40744
|
}
|
|
40578
|
-
try {
|
|
40579
|
-
const providerData = JSON.parse(fs14.readFileSync(providerJson, "utf-8"));
|
|
40580
|
-
if (providerData.disableUpstream !== true) {
|
|
40581
|
-
providerData.disableUpstream = true;
|
|
40582
|
-
fs14.writeFileSync(providerJson, JSON.stringify(providerData, null, 2));
|
|
40583
|
-
}
|
|
40584
|
-
} catch (error48) {
|
|
40585
|
-
return {
|
|
40586
|
-
dir: null,
|
|
40587
|
-
reason: `Failed to update provider.json in writable provider directory: ${error48.message}`
|
|
40588
|
-
};
|
|
40589
|
-
}
|
|
40590
40745
|
return { dir: desiredDir };
|
|
40591
40746
|
}
|
|
40592
40747
|
async handleAutoImplement(type, req, res) {
|
|
@@ -41112,14 +41267,14 @@ data: ${JSON.stringify(msg.data)}
|
|
|
41112
41267
|
res.end(JSON.stringify(data, null, 2));
|
|
41113
41268
|
}
|
|
41114
41269
|
async readBody(req) {
|
|
41115
|
-
return new Promise((
|
|
41270
|
+
return new Promise((resolve15) => {
|
|
41116
41271
|
let body = "";
|
|
41117
41272
|
req.on("data", (chunk) => body += chunk);
|
|
41118
41273
|
req.on("end", () => {
|
|
41119
41274
|
try {
|
|
41120
|
-
|
|
41275
|
+
resolve15(JSON.parse(body));
|
|
41121
41276
|
} catch {
|
|
41122
|
-
|
|
41277
|
+
resolve15({});
|
|
41123
41278
|
}
|
|
41124
41279
|
});
|
|
41125
41280
|
});
|
|
@@ -41604,7 +41759,7 @@ async function waitForReady(endpoint, timeoutMs = STARTUP_TIMEOUT_MS) {
|
|
|
41604
41759
|
const deadline = Date.now() + timeoutMs;
|
|
41605
41760
|
while (Date.now() < deadline) {
|
|
41606
41761
|
if (await canConnect(endpoint)) return;
|
|
41607
|
-
await new Promise((
|
|
41762
|
+
await new Promise((resolve15) => setTimeout(resolve15, STARTUP_POLL_MS));
|
|
41608
41763
|
}
|
|
41609
41764
|
throw new Error(`Session host did not become ready within ${timeoutMs}ms`);
|
|
41610
41765
|
}
|
|
@@ -41768,10 +41923,10 @@ async function installExtension(ide, extension) {
|
|
|
41768
41923
|
const buffer = Buffer.from(await res.arrayBuffer());
|
|
41769
41924
|
const fs24 = await import("fs");
|
|
41770
41925
|
fs24.writeFileSync(vsixPath, buffer);
|
|
41771
|
-
return new Promise((
|
|
41926
|
+
return new Promise((resolve15) => {
|
|
41772
41927
|
const cmd = `"${ide.cliCommand}" --install-extension "${vsixPath}" --force`;
|
|
41773
41928
|
(0, import_child_process10.exec)(cmd, { timeout: 6e4 }, (error48, _stdout, stderr) => {
|
|
41774
|
-
|
|
41929
|
+
resolve15({
|
|
41775
41930
|
extensionId: extension.id,
|
|
41776
41931
|
marketplaceId: extension.marketplaceId,
|
|
41777
41932
|
success: !error48,
|
|
@@ -41784,11 +41939,11 @@ async function installExtension(ide, extension) {
|
|
|
41784
41939
|
} catch (e) {
|
|
41785
41940
|
}
|
|
41786
41941
|
}
|
|
41787
|
-
return new Promise((
|
|
41942
|
+
return new Promise((resolve15) => {
|
|
41788
41943
|
const cmd = `"${ide.cliCommand}" --install-extension ${extension.marketplaceId} --force`;
|
|
41789
41944
|
(0, import_child_process10.exec)(cmd, { timeout: 6e4 }, (error48, stdout, stderr) => {
|
|
41790
41945
|
if (error48) {
|
|
41791
|
-
|
|
41946
|
+
resolve15({
|
|
41792
41947
|
extensionId: extension.id,
|
|
41793
41948
|
marketplaceId: extension.marketplaceId,
|
|
41794
41949
|
success: false,
|
|
@@ -41796,7 +41951,7 @@ async function installExtension(ide, extension) {
|
|
|
41796
41951
|
error: stderr || error48.message
|
|
41797
41952
|
});
|
|
41798
41953
|
} else {
|
|
41799
|
-
|
|
41954
|
+
resolve15({
|
|
41800
41955
|
extensionId: extension.id,
|
|
41801
41956
|
marketplaceId: extension.marketplaceId,
|
|
41802
41957
|
success: true,
|
|
@@ -41990,10 +42145,11 @@ var init_registry = __esm({
|
|
|
41990
42145
|
async function initDaemonComponents(config2) {
|
|
41991
42146
|
installGlobalInterceptor();
|
|
41992
42147
|
const appConfig = loadConfig();
|
|
41993
|
-
const
|
|
42148
|
+
const providerSourceMode = appConfig.providerSourceMode || "normal";
|
|
42149
|
+
const disableUpstream = providerSourceMode === "no-upstream";
|
|
41994
42150
|
const providerLoader = new ProviderLoader({
|
|
41995
42151
|
logFn: config2.providerLogFn,
|
|
41996
|
-
|
|
42152
|
+
sourceMode: providerSourceMode,
|
|
41997
42153
|
userDir: appConfig.providerDir
|
|
41998
42154
|
});
|
|
41999
42155
|
if (!disableUpstream && !providerLoader.hasUpstream()) {
|
|
@@ -42098,6 +42254,10 @@ async function initDaemonComponents(config2) {
|
|
|
42098
42254
|
onProviderSettingChanged: async (providerType) => {
|
|
42099
42255
|
await refreshProviderAvailability(providerType);
|
|
42100
42256
|
config2.onStatusChange?.();
|
|
42257
|
+
},
|
|
42258
|
+
onProviderSourceConfigChanged: async () => {
|
|
42259
|
+
await refreshProviderAvailability();
|
|
42260
|
+
config2.onStatusChange?.();
|
|
42101
42261
|
}
|
|
42102
42262
|
});
|
|
42103
42263
|
agentStreamManager = new DaemonAgentStreamManager(
|
|
@@ -42147,7 +42307,8 @@ async function initDaemonComponents(config2) {
|
|
|
42147
42307
|
cdpInitializer,
|
|
42148
42308
|
cdpManagers,
|
|
42149
42309
|
sessionRegistry,
|
|
42150
|
-
detectedIdes: detectedIdesRef
|
|
42310
|
+
detectedIdes: detectedIdesRef,
|
|
42311
|
+
refreshProviderAvailability
|
|
42151
42312
|
};
|
|
42152
42313
|
}
|
|
42153
42314
|
async function startDaemonDevSupport(options) {
|
|
@@ -42156,7 +42317,10 @@ async function startDaemonDevSupport(options) {
|
|
|
42156
42317
|
cdpManagers: options.components.cdpManagers,
|
|
42157
42318
|
instanceManager: options.components.instanceManager,
|
|
42158
42319
|
cliManager: options.components.cliManager,
|
|
42159
|
-
logFn: options.logFn
|
|
42320
|
+
logFn: options.logFn,
|
|
42321
|
+
onProviderSourceConfigChanged: async () => {
|
|
42322
|
+
await options.components.refreshProviderAvailability();
|
|
42323
|
+
}
|
|
42160
42324
|
});
|
|
42161
42325
|
await devServer.start();
|
|
42162
42326
|
options.components.providerLoader.watch();
|
|
@@ -42306,6 +42470,7 @@ __export(src_exports, {
|
|
|
42306
42470
|
normalizeInputEnvelope: () => normalizeInputEnvelope,
|
|
42307
42471
|
normalizeManagedStatus: () => normalizeManagedStatus,
|
|
42308
42472
|
normalizeMessageParts: () => normalizeMessageParts,
|
|
42473
|
+
parseProviderSourceConfigUpdate: () => parseProviderSourceConfigUpdate,
|
|
42309
42474
|
partitionSessionHostDiagnosticsSessions: () => partitionSessionHostDiagnosticsSessions,
|
|
42310
42475
|
partitionSessionHostRecords: () => partitionSessionHostRecords,
|
|
42311
42476
|
probeCdpPort: () => probeCdpPort,
|
|
@@ -42369,6 +42534,7 @@ var init_src = __esm({
|
|
|
42369
42534
|
init_ide_provider_instance();
|
|
42370
42535
|
init_cli_provider_instance();
|
|
42371
42536
|
init_acp_provider_instance();
|
|
42537
|
+
init_provider_source_config();
|
|
42372
42538
|
init_io_contracts();
|
|
42373
42539
|
init_version_archive();
|
|
42374
42540
|
init_dev_server();
|
|
@@ -42808,7 +42974,7 @@ function routeDataChannelMessage(peerId, msg, peers, handlers) {
|
|
|
42808
42974
|
log(`pty_input: REJECTED \u2014 permission=${permission} peer=${peerId}`);
|
|
42809
42975
|
return;
|
|
42810
42976
|
}
|
|
42811
|
-
const sessionId = parsed.sessionId || parsed.cliId || parsed.cliType || "";
|
|
42977
|
+
const sessionId = parsed.sessionId || parsed.targetSessionId || parsed.cliId || parsed.cliType || "";
|
|
42812
42978
|
if (handlers.ptyInputHandler && parsed.data && sessionId) {
|
|
42813
42979
|
handlers.ptyInputHandler(sessionId, parsed.data);
|
|
42814
42980
|
}
|
|
@@ -42820,7 +42986,7 @@ function routeDataChannelMessage(peerId, msg, peers, handlers) {
|
|
|
42820
42986
|
log(`pty_resize: REJECTED \u2014 permission=${permission} peer=${peerId}`);
|
|
42821
42987
|
return;
|
|
42822
42988
|
}
|
|
42823
|
-
const sessionId = parsed.sessionId || parsed.cliId || parsed.cliType || "";
|
|
42989
|
+
const sessionId = parsed.sessionId || parsed.targetSessionId || parsed.cliId || parsed.cliType || "";
|
|
42824
42990
|
if (handlers.ptyResizeHandler && parsed.cols && parsed.rows && sessionId) {
|
|
42825
42991
|
handlers.ptyResizeHandler(sessionId, parsed.cols, parsed.rows);
|
|
42826
42992
|
}
|
|
@@ -43838,14 +44004,14 @@ var require_filesystem = __commonJS({
|
|
|
43838
44004
|
});
|
|
43839
44005
|
return buffer.subarray(0, bytesRead);
|
|
43840
44006
|
};
|
|
43841
|
-
var readFile = (path30) => new Promise((
|
|
44007
|
+
var readFile = (path30) => new Promise((resolve15, reject) => {
|
|
43842
44008
|
fs24.open(path30, "r", (err, fd) => {
|
|
43843
44009
|
if (err) {
|
|
43844
44010
|
reject(err);
|
|
43845
44011
|
} else {
|
|
43846
44012
|
const buffer = Buffer.alloc(MAX_LENGTH);
|
|
43847
44013
|
fs24.read(fd, buffer, 0, MAX_LENGTH, 0, (_2, bytesRead) => {
|
|
43848
|
-
|
|
44014
|
+
resolve15(buffer.subarray(0, bytesRead));
|
|
43849
44015
|
fs24.close(fd, () => {
|
|
43850
44016
|
});
|
|
43851
44017
|
});
|
|
@@ -43913,10 +44079,10 @@ var require_detect_libc = __commonJS({
|
|
|
43913
44079
|
var commandOut = "";
|
|
43914
44080
|
var safeCommand = () => {
|
|
43915
44081
|
if (!commandOut) {
|
|
43916
|
-
return new Promise((
|
|
44082
|
+
return new Promise((resolve15) => {
|
|
43917
44083
|
childProcess2.exec(command, (err, out) => {
|
|
43918
44084
|
commandOut = err ? " " : out;
|
|
43919
|
-
|
|
44085
|
+
resolve15(commandOut);
|
|
43920
44086
|
});
|
|
43921
44087
|
});
|
|
43922
44088
|
}
|
|
@@ -46596,14 +46762,14 @@ var require_input = __commonJS({
|
|
|
46596
46762
|
return this;
|
|
46597
46763
|
} else {
|
|
46598
46764
|
if (this._isStreamInput()) {
|
|
46599
|
-
return new Promise((
|
|
46765
|
+
return new Promise((resolve15, reject) => {
|
|
46600
46766
|
const finished = () => {
|
|
46601
46767
|
this._flattenBufferIn();
|
|
46602
46768
|
sharp.metadata(this.options, (err, metadata2) => {
|
|
46603
46769
|
if (err) {
|
|
46604
46770
|
reject(is.nativeError(err, stack));
|
|
46605
46771
|
} else {
|
|
46606
|
-
|
|
46772
|
+
resolve15(metadata2);
|
|
46607
46773
|
}
|
|
46608
46774
|
});
|
|
46609
46775
|
};
|
|
@@ -46614,12 +46780,12 @@ var require_input = __commonJS({
|
|
|
46614
46780
|
}
|
|
46615
46781
|
});
|
|
46616
46782
|
} else {
|
|
46617
|
-
return new Promise((
|
|
46783
|
+
return new Promise((resolve15, reject) => {
|
|
46618
46784
|
sharp.metadata(this.options, (err, metadata2) => {
|
|
46619
46785
|
if (err) {
|
|
46620
46786
|
reject(is.nativeError(err, stack));
|
|
46621
46787
|
} else {
|
|
46622
|
-
|
|
46788
|
+
resolve15(metadata2);
|
|
46623
46789
|
}
|
|
46624
46790
|
});
|
|
46625
46791
|
});
|
|
@@ -46652,25 +46818,25 @@ var require_input = __commonJS({
|
|
|
46652
46818
|
return this;
|
|
46653
46819
|
} else {
|
|
46654
46820
|
if (this._isStreamInput()) {
|
|
46655
|
-
return new Promise((
|
|
46821
|
+
return new Promise((resolve15, reject) => {
|
|
46656
46822
|
this.on("finish", function() {
|
|
46657
46823
|
this._flattenBufferIn();
|
|
46658
46824
|
sharp.stats(this.options, (err, stats2) => {
|
|
46659
46825
|
if (err) {
|
|
46660
46826
|
reject(is.nativeError(err, stack));
|
|
46661
46827
|
} else {
|
|
46662
|
-
|
|
46828
|
+
resolve15(stats2);
|
|
46663
46829
|
}
|
|
46664
46830
|
});
|
|
46665
46831
|
});
|
|
46666
46832
|
});
|
|
46667
46833
|
} else {
|
|
46668
|
-
return new Promise((
|
|
46834
|
+
return new Promise((resolve15, reject) => {
|
|
46669
46835
|
sharp.stats(this.options, (err, stats2) => {
|
|
46670
46836
|
if (err) {
|
|
46671
46837
|
reject(is.nativeError(err, stack));
|
|
46672
46838
|
} else {
|
|
46673
|
-
|
|
46839
|
+
resolve15(stats2);
|
|
46674
46840
|
}
|
|
46675
46841
|
});
|
|
46676
46842
|
});
|
|
@@ -50092,7 +50258,7 @@ var require_output = __commonJS({
|
|
|
50092
50258
|
return this;
|
|
50093
50259
|
} else {
|
|
50094
50260
|
if (this._isStreamInput()) {
|
|
50095
|
-
return new Promise((
|
|
50261
|
+
return new Promise((resolve15, reject) => {
|
|
50096
50262
|
this.once("finish", () => {
|
|
50097
50263
|
this._flattenBufferIn();
|
|
50098
50264
|
sharp.pipeline(this.options, (err, data, info) => {
|
|
@@ -50100,24 +50266,24 @@ var require_output = __commonJS({
|
|
|
50100
50266
|
reject(is.nativeError(err, stack));
|
|
50101
50267
|
} else {
|
|
50102
50268
|
if (this.options.resolveWithObject) {
|
|
50103
|
-
|
|
50269
|
+
resolve15({ data, info });
|
|
50104
50270
|
} else {
|
|
50105
|
-
|
|
50271
|
+
resolve15(data);
|
|
50106
50272
|
}
|
|
50107
50273
|
}
|
|
50108
50274
|
});
|
|
50109
50275
|
});
|
|
50110
50276
|
});
|
|
50111
50277
|
} else {
|
|
50112
|
-
return new Promise((
|
|
50278
|
+
return new Promise((resolve15, reject) => {
|
|
50113
50279
|
sharp.pipeline(this.options, (err, data, info) => {
|
|
50114
50280
|
if (err) {
|
|
50115
50281
|
reject(is.nativeError(err, stack));
|
|
50116
50282
|
} else {
|
|
50117
50283
|
if (this.options.resolveWithObject) {
|
|
50118
|
-
|
|
50284
|
+
resolve15({ data, info });
|
|
50119
50285
|
} else {
|
|
50120
|
-
|
|
50286
|
+
resolve15(data);
|
|
50121
50287
|
}
|
|
50122
50288
|
}
|
|
50123
50289
|
});
|
|
@@ -51677,7 +51843,7 @@ var init_adhdev_daemon = __esm({
|
|
|
51677
51843
|
import_ws3 = require("ws");
|
|
51678
51844
|
init_source2();
|
|
51679
51845
|
init_version();
|
|
51680
|
-
pkgVersion = resolvePackageVersion({ injectedVersion: "0.8.
|
|
51846
|
+
pkgVersion = resolvePackageVersion({ injectedVersion: "0.8.58" });
|
|
51681
51847
|
ACTIVE_CHAT_POLL_STATUSES = /* @__PURE__ */ new Set([
|
|
51682
51848
|
"generating",
|
|
51683
51849
|
"waiting_approval",
|
|
@@ -52185,6 +52351,8 @@ ${err?.stack || ""}`);
|
|
|
52185
52351
|
forwardAgentStreamsToIdeInstance(this.components.instanceManager, ideType, streams);
|
|
52186
52352
|
}
|
|
52187
52353
|
});
|
|
52354
|
+
const providerSourceConfig = this.components.providerLoader.getSourceConfig();
|
|
52355
|
+
LOG.info("Provider", `Source config: mode=${providerSourceConfig.sourceMode} explicitProviderDir=${providerSourceConfig.explicitProviderDir || "-"} userDir=${providerSourceConfig.userDir} upstreamDir=${providerSourceConfig.upstreamDir}`);
|
|
52188
52356
|
if (shouldAutoRestoreHostedSessionsOnStartup(process.env)) {
|
|
52189
52357
|
await this.components.cliManager.restoreHostedSessions();
|
|
52190
52358
|
}
|
|
@@ -52346,7 +52514,11 @@ ${err?.stack || ""}`);
|
|
|
52346
52514
|
providerLoader: this.components.providerLoader,
|
|
52347
52515
|
cdpManagers: this.components.cdpManagers,
|
|
52348
52516
|
instanceManager: this.components.instanceManager,
|
|
52349
|
-
cliManager: this.components.cliManager
|
|
52517
|
+
cliManager: this.components.cliManager,
|
|
52518
|
+
onProviderSourceConfigChanged: async () => {
|
|
52519
|
+
await this.components.refreshProviderAvailability();
|
|
52520
|
+
this.statusReporter?.onStatusChange();
|
|
52521
|
+
}
|
|
52350
52522
|
});
|
|
52351
52523
|
await devServer.start();
|
|
52352
52524
|
}
|
|
@@ -52543,7 +52715,7 @@ ${err?.stack || ""}`);
|
|
|
52543
52715
|
this.localWss.emit("connection", ws, req);
|
|
52544
52716
|
});
|
|
52545
52717
|
});
|
|
52546
|
-
await new Promise((
|
|
52718
|
+
await new Promise((resolve15, reject) => {
|
|
52547
52719
|
const cleanup = () => {
|
|
52548
52720
|
this.localHttpServer?.off("error", onError);
|
|
52549
52721
|
this.localHttpServer?.off("listening", onListening);
|
|
@@ -52554,7 +52726,7 @@ ${err?.stack || ""}`);
|
|
|
52554
52726
|
};
|
|
52555
52727
|
const onListening = () => {
|
|
52556
52728
|
cleanup();
|
|
52557
|
-
|
|
52729
|
+
resolve15();
|
|
52558
52730
|
};
|
|
52559
52731
|
this.localHttpServer.once("error", onError);
|
|
52560
52732
|
this.localHttpServer.once("listening", onListening);
|
|
@@ -52714,12 +52886,12 @@ ${err?.stack || ""}`);
|
|
|
52714
52886
|
this.localClients.clear();
|
|
52715
52887
|
this.localWss?.close();
|
|
52716
52888
|
this.localWss = null;
|
|
52717
|
-
await new Promise((
|
|
52889
|
+
await new Promise((resolve15) => {
|
|
52718
52890
|
if (!this.localHttpServer) {
|
|
52719
|
-
|
|
52891
|
+
resolve15();
|
|
52720
52892
|
return;
|
|
52721
52893
|
}
|
|
52722
|
-
this.localHttpServer.close(() =>
|
|
52894
|
+
this.localHttpServer.close(() => resolve15());
|
|
52723
52895
|
this.localHttpServer = null;
|
|
52724
52896
|
});
|
|
52725
52897
|
} catch {
|
|
@@ -53267,14 +53439,14 @@ var require_run_async = __commonJS({
|
|
|
53267
53439
|
return function() {
|
|
53268
53440
|
var args = arguments;
|
|
53269
53441
|
var originalThis = this;
|
|
53270
|
-
var promise2 = new Promise(function(
|
|
53442
|
+
var promise2 = new Promise(function(resolve15, reject) {
|
|
53271
53443
|
var resolved = false;
|
|
53272
53444
|
const wrappedResolve = function(value) {
|
|
53273
53445
|
if (resolved) {
|
|
53274
53446
|
console.warn("Run-async promise already resolved.");
|
|
53275
53447
|
}
|
|
53276
53448
|
resolved = true;
|
|
53277
|
-
|
|
53449
|
+
resolve15(value);
|
|
53278
53450
|
};
|
|
53279
53451
|
var rejected = false;
|
|
53280
53452
|
const wrappedReject = function(value) {
|
|
@@ -54065,7 +54237,7 @@ var require_Observable = __commonJS({
|
|
|
54065
54237
|
Observable2.prototype.forEach = function(next, promiseCtor) {
|
|
54066
54238
|
var _this = this;
|
|
54067
54239
|
promiseCtor = getPromiseCtor(promiseCtor);
|
|
54068
|
-
return new promiseCtor(function(
|
|
54240
|
+
return new promiseCtor(function(resolve15, reject) {
|
|
54069
54241
|
var subscriber = new Subscriber_1.SafeSubscriber({
|
|
54070
54242
|
next: function(value) {
|
|
54071
54243
|
try {
|
|
@@ -54076,7 +54248,7 @@ var require_Observable = __commonJS({
|
|
|
54076
54248
|
}
|
|
54077
54249
|
},
|
|
54078
54250
|
error: reject,
|
|
54079
|
-
complete:
|
|
54251
|
+
complete: resolve15
|
|
54080
54252
|
});
|
|
54081
54253
|
_this.subscribe(subscriber);
|
|
54082
54254
|
});
|
|
@@ -54098,14 +54270,14 @@ var require_Observable = __commonJS({
|
|
|
54098
54270
|
Observable2.prototype.toPromise = function(promiseCtor) {
|
|
54099
54271
|
var _this = this;
|
|
54100
54272
|
promiseCtor = getPromiseCtor(promiseCtor);
|
|
54101
|
-
return new promiseCtor(function(
|
|
54273
|
+
return new promiseCtor(function(resolve15, reject) {
|
|
54102
54274
|
var value;
|
|
54103
54275
|
_this.subscribe(function(x) {
|
|
54104
54276
|
return value = x;
|
|
54105
54277
|
}, function(err) {
|
|
54106
54278
|
return reject(err);
|
|
54107
54279
|
}, function() {
|
|
54108
|
-
return
|
|
54280
|
+
return resolve15(value);
|
|
54109
54281
|
});
|
|
54110
54282
|
});
|
|
54111
54283
|
};
|
|
@@ -56201,11 +56373,11 @@ var require_innerFrom = __commonJS({
|
|
|
56201
56373
|
"use strict";
|
|
56202
56374
|
var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
56203
56375
|
function adopt(value) {
|
|
56204
|
-
return value instanceof P ? value : new P(function(
|
|
56205
|
-
|
|
56376
|
+
return value instanceof P ? value : new P(function(resolve15) {
|
|
56377
|
+
resolve15(value);
|
|
56206
56378
|
});
|
|
56207
56379
|
}
|
|
56208
|
-
return new (P || (P = Promise))(function(
|
|
56380
|
+
return new (P || (P = Promise))(function(resolve15, reject) {
|
|
56209
56381
|
function fulfilled(value) {
|
|
56210
56382
|
try {
|
|
56211
56383
|
step(generator.next(value));
|
|
@@ -56221,7 +56393,7 @@ var require_innerFrom = __commonJS({
|
|
|
56221
56393
|
}
|
|
56222
56394
|
}
|
|
56223
56395
|
function step(result) {
|
|
56224
|
-
result.done ?
|
|
56396
|
+
result.done ? resolve15(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
56225
56397
|
}
|
|
56226
56398
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
56227
56399
|
});
|
|
@@ -56303,14 +56475,14 @@ var require_innerFrom = __commonJS({
|
|
|
56303
56475
|
}, i);
|
|
56304
56476
|
function verb(n) {
|
|
56305
56477
|
i[n] = o[n] && function(v) {
|
|
56306
|
-
return new Promise(function(
|
|
56307
|
-
v = o[n](v), settle(
|
|
56478
|
+
return new Promise(function(resolve15, reject) {
|
|
56479
|
+
v = o[n](v), settle(resolve15, reject, v.done, v.value);
|
|
56308
56480
|
});
|
|
56309
56481
|
};
|
|
56310
56482
|
}
|
|
56311
|
-
function settle(
|
|
56483
|
+
function settle(resolve15, reject, d, v) {
|
|
56312
56484
|
Promise.resolve(v).then(function(v2) {
|
|
56313
|
-
|
|
56485
|
+
resolve15({ value: v2, done: d });
|
|
56314
56486
|
}, reject);
|
|
56315
56487
|
}
|
|
56316
56488
|
};
|
|
@@ -56929,7 +57101,7 @@ var require_lastValueFrom = __commonJS({
|
|
|
56929
57101
|
var EmptyError_1 = require_EmptyError();
|
|
56930
57102
|
function lastValueFrom(source, config2) {
|
|
56931
57103
|
var hasConfig = typeof config2 === "object";
|
|
56932
|
-
return new Promise(function(
|
|
57104
|
+
return new Promise(function(resolve15, reject) {
|
|
56933
57105
|
var _hasValue = false;
|
|
56934
57106
|
var _value;
|
|
56935
57107
|
source.subscribe({
|
|
@@ -56940,9 +57112,9 @@ var require_lastValueFrom = __commonJS({
|
|
|
56940
57112
|
error: reject,
|
|
56941
57113
|
complete: function() {
|
|
56942
57114
|
if (_hasValue) {
|
|
56943
|
-
|
|
57115
|
+
resolve15(_value);
|
|
56944
57116
|
} else if (hasConfig) {
|
|
56945
|
-
|
|
57117
|
+
resolve15(config2.defaultValue);
|
|
56946
57118
|
} else {
|
|
56947
57119
|
reject(new EmptyError_1.EmptyError());
|
|
56948
57120
|
}
|
|
@@ -56964,16 +57136,16 @@ var require_firstValueFrom = __commonJS({
|
|
|
56964
57136
|
var Subscriber_1 = require_Subscriber();
|
|
56965
57137
|
function firstValueFrom(source, config2) {
|
|
56966
57138
|
var hasConfig = typeof config2 === "object";
|
|
56967
|
-
return new Promise(function(
|
|
57139
|
+
return new Promise(function(resolve15, reject) {
|
|
56968
57140
|
var subscriber = new Subscriber_1.SafeSubscriber({
|
|
56969
57141
|
next: function(value) {
|
|
56970
|
-
|
|
57142
|
+
resolve15(value);
|
|
56971
57143
|
subscriber.unsubscribe();
|
|
56972
57144
|
},
|
|
56973
57145
|
error: reject,
|
|
56974
57146
|
complete: function() {
|
|
56975
57147
|
if (hasConfig) {
|
|
56976
|
-
|
|
57148
|
+
resolve15(config2.defaultValue);
|
|
56977
57149
|
} else {
|
|
56978
57150
|
reject(new EmptyError_1.EmptyError());
|
|
56979
57151
|
}
|
|
@@ -68779,14 +68951,14 @@ var require_async_iterator = __commonJS({
|
|
|
68779
68951
|
};
|
|
68780
68952
|
}
|
|
68781
68953
|
function readAndResolve(iter) {
|
|
68782
|
-
var
|
|
68783
|
-
if (
|
|
68954
|
+
var resolve15 = iter[kLastResolve];
|
|
68955
|
+
if (resolve15 !== null) {
|
|
68784
68956
|
var data = iter[kStream].read();
|
|
68785
68957
|
if (data !== null) {
|
|
68786
68958
|
iter[kLastPromise] = null;
|
|
68787
68959
|
iter[kLastResolve] = null;
|
|
68788
68960
|
iter[kLastReject] = null;
|
|
68789
|
-
|
|
68961
|
+
resolve15(createIterResult(data, false));
|
|
68790
68962
|
}
|
|
68791
68963
|
}
|
|
68792
68964
|
}
|
|
@@ -68794,13 +68966,13 @@ var require_async_iterator = __commonJS({
|
|
|
68794
68966
|
process.nextTick(readAndResolve, iter);
|
|
68795
68967
|
}
|
|
68796
68968
|
function wrapForNext(lastPromise, iter) {
|
|
68797
|
-
return function(
|
|
68969
|
+
return function(resolve15, reject) {
|
|
68798
68970
|
lastPromise.then(function() {
|
|
68799
68971
|
if (iter[kEnded]) {
|
|
68800
|
-
|
|
68972
|
+
resolve15(createIterResult(void 0, true));
|
|
68801
68973
|
return;
|
|
68802
68974
|
}
|
|
68803
|
-
iter[kHandlePromise](
|
|
68975
|
+
iter[kHandlePromise](resolve15, reject);
|
|
68804
68976
|
}, reject);
|
|
68805
68977
|
};
|
|
68806
68978
|
}
|
|
@@ -68820,12 +68992,12 @@ var require_async_iterator = __commonJS({
|
|
|
68820
68992
|
return Promise.resolve(createIterResult(void 0, true));
|
|
68821
68993
|
}
|
|
68822
68994
|
if (this[kStream].destroyed) {
|
|
68823
|
-
return new Promise(function(
|
|
68995
|
+
return new Promise(function(resolve15, reject) {
|
|
68824
68996
|
process.nextTick(function() {
|
|
68825
68997
|
if (_this[kError]) {
|
|
68826
68998
|
reject(_this[kError]);
|
|
68827
68999
|
} else {
|
|
68828
|
-
|
|
69000
|
+
resolve15(createIterResult(void 0, true));
|
|
68829
69001
|
}
|
|
68830
69002
|
});
|
|
68831
69003
|
});
|
|
@@ -68848,13 +69020,13 @@ var require_async_iterator = __commonJS({
|
|
|
68848
69020
|
return this;
|
|
68849
69021
|
}), _defineProperty(_Object$setPrototypeO, "return", function _return() {
|
|
68850
69022
|
var _this2 = this;
|
|
68851
|
-
return new Promise(function(
|
|
69023
|
+
return new Promise(function(resolve15, reject) {
|
|
68852
69024
|
_this2[kStream].destroy(null, function(err) {
|
|
68853
69025
|
if (err) {
|
|
68854
69026
|
reject(err);
|
|
68855
69027
|
return;
|
|
68856
69028
|
}
|
|
68857
|
-
|
|
69029
|
+
resolve15(createIterResult(void 0, true));
|
|
68858
69030
|
});
|
|
68859
69031
|
});
|
|
68860
69032
|
}), _Object$setPrototypeO), AsyncIteratorPrototype);
|
|
@@ -68876,15 +69048,15 @@ var require_async_iterator = __commonJS({
|
|
|
68876
69048
|
value: stream._readableState.endEmitted,
|
|
68877
69049
|
writable: true
|
|
68878
69050
|
}), _defineProperty(_Object$create, kHandlePromise, {
|
|
68879
|
-
value: function value(
|
|
69051
|
+
value: function value(resolve15, reject) {
|
|
68880
69052
|
var data = iterator[kStream].read();
|
|
68881
69053
|
if (data) {
|
|
68882
69054
|
iterator[kLastPromise] = null;
|
|
68883
69055
|
iterator[kLastResolve] = null;
|
|
68884
69056
|
iterator[kLastReject] = null;
|
|
68885
|
-
|
|
69057
|
+
resolve15(createIterResult(data, false));
|
|
68886
69058
|
} else {
|
|
68887
|
-
iterator[kLastResolve] =
|
|
69059
|
+
iterator[kLastResolve] = resolve15;
|
|
68888
69060
|
iterator[kLastReject] = reject;
|
|
68889
69061
|
}
|
|
68890
69062
|
},
|
|
@@ -68903,12 +69075,12 @@ var require_async_iterator = __commonJS({
|
|
|
68903
69075
|
iterator[kError] = err;
|
|
68904
69076
|
return;
|
|
68905
69077
|
}
|
|
68906
|
-
var
|
|
68907
|
-
if (
|
|
69078
|
+
var resolve15 = iterator[kLastResolve];
|
|
69079
|
+
if (resolve15 !== null) {
|
|
68908
69080
|
iterator[kLastPromise] = null;
|
|
68909
69081
|
iterator[kLastResolve] = null;
|
|
68910
69082
|
iterator[kLastReject] = null;
|
|
68911
|
-
|
|
69083
|
+
resolve15(createIterResult(void 0, true));
|
|
68912
69084
|
}
|
|
68913
69085
|
iterator[kEnded] = true;
|
|
68914
69086
|
});
|
|
@@ -68923,7 +69095,7 @@ var require_async_iterator = __commonJS({
|
|
|
68923
69095
|
var require_from2 = __commonJS({
|
|
68924
69096
|
"../../node_modules/readable-stream/lib/internal/streams/from.js"(exports2, module2) {
|
|
68925
69097
|
"use strict";
|
|
68926
|
-
function asyncGeneratorStep(gen,
|
|
69098
|
+
function asyncGeneratorStep(gen, resolve15, reject, _next, _throw, key, arg) {
|
|
68927
69099
|
try {
|
|
68928
69100
|
var info = gen[key](arg);
|
|
68929
69101
|
var value = info.value;
|
|
@@ -68932,7 +69104,7 @@ var require_from2 = __commonJS({
|
|
|
68932
69104
|
return;
|
|
68933
69105
|
}
|
|
68934
69106
|
if (info.done) {
|
|
68935
|
-
|
|
69107
|
+
resolve15(value);
|
|
68936
69108
|
} else {
|
|
68937
69109
|
Promise.resolve(value).then(_next, _throw);
|
|
68938
69110
|
}
|
|
@@ -68940,13 +69112,13 @@ var require_from2 = __commonJS({
|
|
|
68940
69112
|
function _asyncToGenerator(fn) {
|
|
68941
69113
|
return function() {
|
|
68942
69114
|
var self2 = this, args = arguments;
|
|
68943
|
-
return new Promise(function(
|
|
69115
|
+
return new Promise(function(resolve15, reject) {
|
|
68944
69116
|
var gen = fn.apply(self2, args);
|
|
68945
69117
|
function _next(value) {
|
|
68946
|
-
asyncGeneratorStep(gen,
|
|
69118
|
+
asyncGeneratorStep(gen, resolve15, reject, _next, _throw, "next", value);
|
|
68947
69119
|
}
|
|
68948
69120
|
function _throw(err) {
|
|
68949
|
-
asyncGeneratorStep(gen,
|
|
69121
|
+
asyncGeneratorStep(gen, resolve15, reject, _next, _throw, "throw", err);
|
|
68950
69122
|
}
|
|
68951
69123
|
_next(void 0);
|
|
68952
69124
|
});
|
|
@@ -70885,9 +71057,9 @@ var init_base = __esm({
|
|
|
70885
71057
|
* @return {Promise}
|
|
70886
71058
|
*/
|
|
70887
71059
|
run() {
|
|
70888
|
-
return new Promise((
|
|
71060
|
+
return new Promise((resolve15, reject) => {
|
|
70889
71061
|
this._run(
|
|
70890
|
-
(value) =>
|
|
71062
|
+
(value) => resolve15(value),
|
|
70891
71063
|
(error48) => reject(error48)
|
|
70892
71064
|
);
|
|
70893
71065
|
});
|
|
@@ -77519,7 +77691,7 @@ var require_lib2 = __commonJS({
|
|
|
77519
77691
|
return matches;
|
|
77520
77692
|
};
|
|
77521
77693
|
exports2.analyse = analyse;
|
|
77522
|
-
var detectFile = (filepath, opts = {}) => new Promise((
|
|
77694
|
+
var detectFile = (filepath, opts = {}) => new Promise((resolve15, reject) => {
|
|
77523
77695
|
let fd;
|
|
77524
77696
|
const fs24 = (0, node_1.default)();
|
|
77525
77697
|
const handler = (err, buffer) => {
|
|
@@ -77529,7 +77701,7 @@ var require_lib2 = __commonJS({
|
|
|
77529
77701
|
if (err) {
|
|
77530
77702
|
reject(err);
|
|
77531
77703
|
} else if (buffer) {
|
|
77532
|
-
|
|
77704
|
+
resolve15((0, exports2.detect)(buffer));
|
|
77533
77705
|
} else {
|
|
77534
77706
|
reject(new Error("No error and no buffer received"));
|
|
77535
77707
|
}
|
|
@@ -83714,14 +83886,14 @@ var baseOpen = async (options) => {
|
|
|
83714
83886
|
}
|
|
83715
83887
|
const subprocess = import_node_child_process5.default.spawn(command, cliArguments, childProcessOptions);
|
|
83716
83888
|
if (options.wait) {
|
|
83717
|
-
return new Promise((
|
|
83889
|
+
return new Promise((resolve15, reject) => {
|
|
83718
83890
|
subprocess.once("error", reject);
|
|
83719
83891
|
subprocess.once("close", (exitCode) => {
|
|
83720
83892
|
if (!options.allowNonzeroExitCode && exitCode > 0) {
|
|
83721
83893
|
reject(new Error(`Exited with code ${exitCode}`));
|
|
83722
83894
|
return;
|
|
83723
83895
|
}
|
|
83724
|
-
|
|
83896
|
+
resolve15(subprocess);
|
|
83725
83897
|
});
|
|
83726
83898
|
});
|
|
83727
83899
|
}
|