@adhdev/daemon-core 0.5.24 → 0.5.26
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 +122 -105
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/providers/_builtin/COMPATIBILITY.md +1 -1
- package/providers/_builtin/README.md +1 -1
- package/providers/_builtin/cli/claude-cli/provider.json +2 -1
- package/providers/_builtin/docs/PROVIDER_GUIDE.md +3 -3
- package/providers/_builtin/extension/cline/provider.json +4 -2
- package/providers/_builtin/extension/codex/provider.json +4 -2
- package/providers/_builtin/extension/codex/scripts/{list_models.js → 1.0/list_models.js} +1 -0
- package/providers/_builtin/extension/codex/scripts/{read_chat.js → 1.0/read_chat.js} +36 -11
- package/providers/_builtin/extension/codex/scripts/list_modes.js +138 -0
- package/providers/_builtin/extension/codex/scripts/set_mode.js +165 -0
- package/providers/_builtin/extension/roo-code/provider.json +4 -2
- package/providers/_builtin/ide/cursor/provider.json +1 -70
- package/providers/_builtin/ide/cursor/provider.json.bak +70 -0
- package/providers/_builtin/ide/kiro/provider.json +4 -2
- package/providers/_builtin/ide/pearai/provider.json +4 -2
- package/providers/_builtin/ide/trae/provider.json +4 -2
- package/providers/_builtin/ide/windsurf/provider.json +4 -2
- package/providers/_builtin/registry.json +1 -1
- package/src/agent-stream/poller.ts +15 -0
- package/src/cli-adapters/provider-cli-adapter.ts +45 -36
- package/providers/_builtin/extension/cline/scripts.js +0 -73
- package/providers/_builtin/extension/codex/scripts.js +0 -94
- package/providers/_builtin/ide/kiro/scripts.js +0 -62
- package/providers/_builtin/ide/pearai/scripts.js +0 -74
- package/providers/_builtin/ide/trae/scripts.js +0 -57
- package/providers/_builtin/ide/windsurf/scripts.js +0 -57
- /package/providers/_builtin/extension/cline/scripts/{focus_editor.js → 1.0/focus_editor.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{list_chats.js → 1.0/list_chats.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{list_models.js → 1.0/list_models.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{list_modes.js → 1.0/list_modes.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{new_session.js → 1.0/new_session.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{open_panel.js → 1.0/open_panel.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{read_chat.js → 1.0/read_chat.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{resolve_action.js → 1.0/resolve_action.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{send_message.js → 1.0/send_message.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{set_mode.js → 1.0/set_mode.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{set_model.js → 1.0/set_model.js} +0 -0
- /package/providers/_builtin/extension/cline/scripts/{switch_session.js → 1.0/switch_session.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{click_conversation_webview.js → 1.0/click_conversation_webview.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{explore_chat_webview.js → 1.0/explore_chat_webview.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{explore_controls_webview.js → 1.0/explore_controls_webview.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{explore_dom.js → 1.0/explore_dom.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{explore_dropdown_webview.js → 1.0/explore_dropdown_webview.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{inspect_code_webview.js → 1.0/inspect_code_webview.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{message_structure_webview.js → 1.0/message_structure_webview.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{new_session.js → 1.0/new_session.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{resolve_action.js → 1.0/resolve_action.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{send_message.js → 1.0/send_message.js} +0 -0
- /package/providers/_builtin/extension/codex/scripts/{set_model.js → 1.0/set_model.js} +0 -0
- /package/providers/_builtin/extension/roo-code/{scripts.js → scripts/1.0/scripts.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{focus_editor.js → 1.0/focus_editor.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{open_panel.js → 1.0/open_panel.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{resolve_action.js → 1.0/resolve_action.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{send_message.js → 1.0/send_message.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{webview_list_models.js → 1.0/webview_list_models.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{webview_list_modes.js → 1.0/webview_list_modes.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{webview_list_sessions.js → 1.0/webview_list_sessions.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{webview_new_session.js → 1.0/webview_new_session.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{webview_read_chat.js → 1.0/webview_read_chat.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{webview_send_message.js → 1.0/webview_send_message.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{webview_set_mode.js → 1.0/webview_set_mode.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{webview_set_model.js → 1.0/webview_set_model.js} +0 -0
- /package/providers/_builtin/ide/kiro/scripts/{webview_switch_session.js → 1.0/webview_switch_session.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{focus_editor.js → 1.0/focus_editor.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{list_sessions.js → 1.0/list_sessions.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{new_session.js → 1.0/new_session.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{open_panel.js → 1.0/open_panel.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{resolve_action.js → 1.0/resolve_action.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{send_message.js → 1.0/send_message.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_list_models.js → 1.0/webview_list_models.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_list_modes.js → 1.0/webview_list_modes.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_list_sessions.js → 1.0/webview_list_sessions.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_new_session.js → 1.0/webview_new_session.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_read_chat.js → 1.0/webview_read_chat.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_resolve_action.js → 1.0/webview_resolve_action.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_send_message.js → 1.0/webview_send_message.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_set_mode.js → 1.0/webview_set_mode.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_set_model.js → 1.0/webview_set_model.js} +0 -0
- /package/providers/_builtin/ide/pearai/scripts/{webview_switch_session.js → 1.0/webview_switch_session.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{focus_editor.js → 1.0/focus_editor.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{list_chats.js → 1.0/list_chats.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{list_models.js → 1.0/list_models.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{list_modes.js → 1.0/list_modes.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{new_session.js → 1.0/new_session.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{open_panel.js → 1.0/open_panel.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{read_chat.js → 1.0/read_chat.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{resolve_action.js → 1.0/resolve_action.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{send_message.js → 1.0/send_message.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{set_mode.js → 1.0/set_mode.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{set_model.js → 1.0/set_model.js} +0 -0
- /package/providers/_builtin/ide/trae/scripts/{switch_session.js → 1.0/switch_session.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{focus_editor.js → 1.0/focus_editor.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{list_chats.js → 1.0/list_chats.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{list_models.js → 1.0/list_models.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{list_modes.js → 1.0/list_modes.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{new_session.js → 1.0/new_session.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{open_panel.js → 1.0/open_panel.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{read_chat.js → 1.0/read_chat.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{resolve_action.js → 1.0/resolve_action.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{send_message.js → 1.0/send_message.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{set_mode.js → 1.0/set_mode.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{set_model.js → 1.0/set_model.js} +0 -0
- /package/providers/_builtin/ide/windsurf/scripts/{switch_session.js → 1.0/switch_session.js} +0 -0
package/dist/index.js
CHANGED
|
@@ -569,15 +569,15 @@ async function detectIDEs() {
|
|
|
569
569
|
var import_child_process2 = require("child_process");
|
|
570
570
|
var os2 = __toESM(require("os"));
|
|
571
571
|
function execAsync(cmd, timeoutMs = 5e3) {
|
|
572
|
-
return new Promise((
|
|
572
|
+
return new Promise((resolve8) => {
|
|
573
573
|
const child = (0, import_child_process2.exec)(cmd, { encoding: "utf-8", timeout: timeoutMs }, (err, stdout) => {
|
|
574
574
|
if (err || !stdout?.trim()) {
|
|
575
|
-
|
|
575
|
+
resolve8(null);
|
|
576
576
|
} else {
|
|
577
|
-
|
|
577
|
+
resolve8(stdout.trim());
|
|
578
578
|
}
|
|
579
579
|
});
|
|
580
|
-
child.on("error", () =>
|
|
580
|
+
child.on("error", () => resolve8(null));
|
|
581
581
|
});
|
|
582
582
|
}
|
|
583
583
|
async function detectCLIs(providerLoader) {
|
|
@@ -935,7 +935,7 @@ var DaemonCdpManager = class {
|
|
|
935
935
|
* Returns multiple entries if multiple IDE windows are open on same port
|
|
936
936
|
*/
|
|
937
937
|
static listAllTargets(port) {
|
|
938
|
-
return new Promise((
|
|
938
|
+
return new Promise((resolve8) => {
|
|
939
939
|
const req = http.get(`http://127.0.0.1:${port}/json`, (res) => {
|
|
940
940
|
let data = "";
|
|
941
941
|
res.on("data", (chunk) => data += chunk.toString());
|
|
@@ -951,16 +951,16 @@ var DaemonCdpManager = class {
|
|
|
951
951
|
(t) => !isNonMain(t.title || "") && t.url?.includes("workbench.html") && !t.url?.includes("agent")
|
|
952
952
|
);
|
|
953
953
|
const fallbackPages = pages.filter((t) => !isNonMain(t.title || ""));
|
|
954
|
-
|
|
954
|
+
resolve8(mainPages.length > 0 ? mainPages : fallbackPages);
|
|
955
955
|
} catch {
|
|
956
|
-
|
|
956
|
+
resolve8([]);
|
|
957
957
|
}
|
|
958
958
|
});
|
|
959
959
|
});
|
|
960
|
-
req.on("error", () =>
|
|
960
|
+
req.on("error", () => resolve8([]));
|
|
961
961
|
req.setTimeout(2e3, () => {
|
|
962
962
|
req.destroy();
|
|
963
|
-
|
|
963
|
+
resolve8([]);
|
|
964
964
|
});
|
|
965
965
|
});
|
|
966
966
|
}
|
|
@@ -1000,7 +1000,7 @@ var DaemonCdpManager = class {
|
|
|
1000
1000
|
}
|
|
1001
1001
|
}
|
|
1002
1002
|
findTargetOnPort(port) {
|
|
1003
|
-
return new Promise((
|
|
1003
|
+
return new Promise((resolve8) => {
|
|
1004
1004
|
const req = http.get(`http://127.0.0.1:${port}/json`, (res) => {
|
|
1005
1005
|
let data = "";
|
|
1006
1006
|
res.on("data", (chunk) => data += chunk.toString());
|
|
@@ -1011,7 +1011,7 @@ var DaemonCdpManager = class {
|
|
|
1011
1011
|
(t) => (t.type === "page" || t.type === "browser" || t.type === "Page") && t.webSocketDebuggerUrl
|
|
1012
1012
|
);
|
|
1013
1013
|
if (pages.length === 0) {
|
|
1014
|
-
|
|
1014
|
+
resolve8(targets.find((t) => t.webSocketDebuggerUrl) || null);
|
|
1015
1015
|
return;
|
|
1016
1016
|
}
|
|
1017
1017
|
const mainPages = pages.filter((t) => !this.isNonMainTitle(t.title || ""));
|
|
@@ -1021,24 +1021,24 @@ var DaemonCdpManager = class {
|
|
|
1021
1021
|
const specific = list.find((t) => t.id === this._targetId);
|
|
1022
1022
|
if (specific) {
|
|
1023
1023
|
this._pageTitle = specific.title || "";
|
|
1024
|
-
|
|
1024
|
+
resolve8(specific);
|
|
1025
1025
|
} else {
|
|
1026
1026
|
this.log(`[CDP] Target ${this._targetId} not found in page list`);
|
|
1027
|
-
|
|
1027
|
+
resolve8(null);
|
|
1028
1028
|
}
|
|
1029
1029
|
return;
|
|
1030
1030
|
}
|
|
1031
1031
|
this._pageTitle = list[0]?.title || "";
|
|
1032
|
-
|
|
1032
|
+
resolve8(list[0]);
|
|
1033
1033
|
} catch {
|
|
1034
|
-
|
|
1034
|
+
resolve8(null);
|
|
1035
1035
|
}
|
|
1036
1036
|
});
|
|
1037
1037
|
});
|
|
1038
|
-
req.on("error", () =>
|
|
1038
|
+
req.on("error", () => resolve8(null));
|
|
1039
1039
|
req.setTimeout(2e3, () => {
|
|
1040
1040
|
req.destroy();
|
|
1041
|
-
|
|
1041
|
+
resolve8(null);
|
|
1042
1042
|
});
|
|
1043
1043
|
});
|
|
1044
1044
|
}
|
|
@@ -1049,7 +1049,7 @@ var DaemonCdpManager = class {
|
|
|
1049
1049
|
this.extensionProviders = providers;
|
|
1050
1050
|
}
|
|
1051
1051
|
connectToTarget(wsUrl) {
|
|
1052
|
-
return new Promise((
|
|
1052
|
+
return new Promise((resolve8) => {
|
|
1053
1053
|
this.ws = new import_ws.default(wsUrl);
|
|
1054
1054
|
this.ws.on("open", async () => {
|
|
1055
1055
|
this._connected = true;
|
|
@@ -1059,17 +1059,17 @@ var DaemonCdpManager = class {
|
|
|
1059
1059
|
}
|
|
1060
1060
|
this.connectBrowserWs().catch(() => {
|
|
1061
1061
|
});
|
|
1062
|
-
|
|
1062
|
+
resolve8(true);
|
|
1063
1063
|
});
|
|
1064
1064
|
this.ws.on("message", (data) => {
|
|
1065
1065
|
try {
|
|
1066
1066
|
const msg = JSON.parse(data.toString());
|
|
1067
1067
|
if (msg.id && this.pending.has(msg.id)) {
|
|
1068
|
-
const { resolve:
|
|
1068
|
+
const { resolve: resolve9, reject } = this.pending.get(msg.id);
|
|
1069
1069
|
this.pending.delete(msg.id);
|
|
1070
1070
|
this.failureCount = 0;
|
|
1071
1071
|
if (msg.error) reject(new Error(msg.error.message));
|
|
1072
|
-
else
|
|
1072
|
+
else resolve9(msg.result);
|
|
1073
1073
|
} else if (msg.method === "Runtime.executionContextCreated") {
|
|
1074
1074
|
this.contexts.add(msg.params.context.id);
|
|
1075
1075
|
} else if (msg.method === "Runtime.executionContextDestroyed") {
|
|
@@ -1092,7 +1092,7 @@ var DaemonCdpManager = class {
|
|
|
1092
1092
|
this.ws.on("error", (err) => {
|
|
1093
1093
|
this.log(`[CDP] WebSocket error: ${err.message}`);
|
|
1094
1094
|
this._connected = false;
|
|
1095
|
-
|
|
1095
|
+
resolve8(false);
|
|
1096
1096
|
});
|
|
1097
1097
|
});
|
|
1098
1098
|
}
|
|
@@ -1106,7 +1106,7 @@ var DaemonCdpManager = class {
|
|
|
1106
1106
|
return;
|
|
1107
1107
|
}
|
|
1108
1108
|
this.log(`[CDP] Connecting browser WS for target discovery...`);
|
|
1109
|
-
await new Promise((
|
|
1109
|
+
await new Promise((resolve8, reject) => {
|
|
1110
1110
|
this.browserWs = new import_ws.default(browserWsUrl);
|
|
1111
1111
|
this.browserWs.on("open", async () => {
|
|
1112
1112
|
this._browserConnected = true;
|
|
@@ -1116,16 +1116,16 @@ var DaemonCdpManager = class {
|
|
|
1116
1116
|
} catch (e) {
|
|
1117
1117
|
this.log(`[CDP] setDiscoverTargets failed: ${e.message}`);
|
|
1118
1118
|
}
|
|
1119
|
-
|
|
1119
|
+
resolve8();
|
|
1120
1120
|
});
|
|
1121
1121
|
this.browserWs.on("message", (data) => {
|
|
1122
1122
|
try {
|
|
1123
1123
|
const msg = JSON.parse(data.toString());
|
|
1124
1124
|
if (msg.id && this.browserPending.has(msg.id)) {
|
|
1125
|
-
const { resolve:
|
|
1125
|
+
const { resolve: resolve9, reject: reject2 } = this.browserPending.get(msg.id);
|
|
1126
1126
|
this.browserPending.delete(msg.id);
|
|
1127
1127
|
if (msg.error) reject2(new Error(msg.error.message));
|
|
1128
|
-
else
|
|
1128
|
+
else resolve9(msg.result);
|
|
1129
1129
|
}
|
|
1130
1130
|
} catch {
|
|
1131
1131
|
}
|
|
@@ -1145,31 +1145,31 @@ var DaemonCdpManager = class {
|
|
|
1145
1145
|
}
|
|
1146
1146
|
}
|
|
1147
1147
|
getBrowserWsUrl() {
|
|
1148
|
-
return new Promise((
|
|
1148
|
+
return new Promise((resolve8) => {
|
|
1149
1149
|
const req = http.get(`http://127.0.0.1:${this.port}/json/version`, (res) => {
|
|
1150
1150
|
let data = "";
|
|
1151
1151
|
res.on("data", (chunk) => data += chunk.toString());
|
|
1152
1152
|
res.on("end", () => {
|
|
1153
1153
|
try {
|
|
1154
1154
|
const info = JSON.parse(data);
|
|
1155
|
-
|
|
1155
|
+
resolve8(info.webSocketDebuggerUrl || null);
|
|
1156
1156
|
} catch {
|
|
1157
|
-
|
|
1157
|
+
resolve8(null);
|
|
1158
1158
|
}
|
|
1159
1159
|
});
|
|
1160
1160
|
});
|
|
1161
|
-
req.on("error", () =>
|
|
1161
|
+
req.on("error", () => resolve8(null));
|
|
1162
1162
|
req.setTimeout(3e3, () => {
|
|
1163
1163
|
req.destroy();
|
|
1164
|
-
|
|
1164
|
+
resolve8(null);
|
|
1165
1165
|
});
|
|
1166
1166
|
});
|
|
1167
1167
|
}
|
|
1168
1168
|
sendBrowser(method, params = {}, timeoutMs = 15e3) {
|
|
1169
|
-
return new Promise((
|
|
1169
|
+
return new Promise((resolve8, reject) => {
|
|
1170
1170
|
if (!this.browserWs || !this._browserConnected) return reject(new Error("Browser WS not connected"));
|
|
1171
1171
|
const id = this.browserMsgId++;
|
|
1172
|
-
this.browserPending.set(id, { resolve:
|
|
1172
|
+
this.browserPending.set(id, { resolve: resolve8, reject });
|
|
1173
1173
|
this.browserWs.send(JSON.stringify({ id, method, params }));
|
|
1174
1174
|
setTimeout(() => {
|
|
1175
1175
|
if (this.browserPending.has(id)) {
|
|
@@ -1209,11 +1209,11 @@ var DaemonCdpManager = class {
|
|
|
1209
1209
|
}
|
|
1210
1210
|
// ─── CDP Protocol ────────────────────────────────────────
|
|
1211
1211
|
sendInternal(method, params = {}, timeoutMs = 15e3) {
|
|
1212
|
-
return new Promise((
|
|
1212
|
+
return new Promise((resolve8, reject) => {
|
|
1213
1213
|
if (!this.ws || !this._connected) return reject(new Error("CDP not connected"));
|
|
1214
1214
|
if (this.ws.readyState !== import_ws.default.OPEN) return reject(new Error("WebSocket not open"));
|
|
1215
1215
|
const id = this.msgId++;
|
|
1216
|
-
this.pending.set(id, { resolve:
|
|
1216
|
+
this.pending.set(id, { resolve: resolve8, reject });
|
|
1217
1217
|
this.ws.send(JSON.stringify({ id, method, params }));
|
|
1218
1218
|
setTimeout(() => {
|
|
1219
1219
|
if (this.pending.has(id)) {
|
|
@@ -1422,7 +1422,7 @@ var DaemonCdpManager = class {
|
|
|
1422
1422
|
const browserWs = this.browserWs;
|
|
1423
1423
|
let msgId = this.browserMsgId;
|
|
1424
1424
|
const sendWs = (method, params = {}, sessionId) => {
|
|
1425
|
-
return new Promise((
|
|
1425
|
+
return new Promise((resolve8, reject) => {
|
|
1426
1426
|
const mid = msgId++;
|
|
1427
1427
|
this.browserMsgId = msgId;
|
|
1428
1428
|
const handler = (raw) => {
|
|
@@ -1431,7 +1431,7 @@ var DaemonCdpManager = class {
|
|
|
1431
1431
|
if (msg.id === mid) {
|
|
1432
1432
|
browserWs.removeListener("message", handler);
|
|
1433
1433
|
if (msg.error) reject(new Error(msg.error.message || JSON.stringify(msg.error)));
|
|
1434
|
-
else
|
|
1434
|
+
else resolve8(msg.result);
|
|
1435
1435
|
}
|
|
1436
1436
|
} catch {
|
|
1437
1437
|
}
|
|
@@ -1605,14 +1605,14 @@ var DaemonCdpManager = class {
|
|
|
1605
1605
|
if (!ws || ws.readyState !== import_ws.default.OPEN) {
|
|
1606
1606
|
throw new Error("CDP not connected");
|
|
1607
1607
|
}
|
|
1608
|
-
return new Promise((
|
|
1608
|
+
return new Promise((resolve8, reject) => {
|
|
1609
1609
|
const id = getNextId();
|
|
1610
1610
|
pendingMap.set(id, {
|
|
1611
1611
|
resolve: (result) => {
|
|
1612
1612
|
if (result?.result?.subtype === "error") {
|
|
1613
1613
|
reject(new Error(result.result.description));
|
|
1614
1614
|
} else {
|
|
1615
|
-
|
|
1615
|
+
resolve8(result?.result?.value);
|
|
1616
1616
|
}
|
|
1617
1617
|
},
|
|
1618
1618
|
reject
|
|
@@ -1644,10 +1644,10 @@ var DaemonCdpManager = class {
|
|
|
1644
1644
|
throw new Error("CDP not connected");
|
|
1645
1645
|
}
|
|
1646
1646
|
const sendViaSession = (method, params = {}) => {
|
|
1647
|
-
return new Promise((
|
|
1647
|
+
return new Promise((resolve8, reject) => {
|
|
1648
1648
|
const pendingMap = this._browserConnected ? this.browserPending : this.pending;
|
|
1649
1649
|
const id = this._browserConnected ? this.browserMsgId++ : this.msgId++;
|
|
1650
|
-
pendingMap.set(id, { resolve:
|
|
1650
|
+
pendingMap.set(id, { resolve: resolve8, reject });
|
|
1651
1651
|
ws.send(JSON.stringify({ id, sessionId, method, params }));
|
|
1652
1652
|
setTimeout(() => {
|
|
1653
1653
|
if (pendingMap.has(id)) {
|
|
@@ -5229,7 +5229,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
5229
5229
|
return { updated: false };
|
|
5230
5230
|
}
|
|
5231
5231
|
try {
|
|
5232
|
-
const etag = await new Promise((
|
|
5232
|
+
const etag = await new Promise((resolve8, reject) => {
|
|
5233
5233
|
const options = {
|
|
5234
5234
|
method: "HEAD",
|
|
5235
5235
|
hostname: "github.com",
|
|
@@ -5247,7 +5247,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
5247
5247
|
headers: { "User-Agent": "adhdev-launcher" },
|
|
5248
5248
|
timeout: 1e4
|
|
5249
5249
|
}, (res2) => {
|
|
5250
|
-
|
|
5250
|
+
resolve8(res2.headers.etag || res2.headers["last-modified"] || "");
|
|
5251
5251
|
});
|
|
5252
5252
|
req2.on("error", reject);
|
|
5253
5253
|
req2.on("timeout", () => {
|
|
@@ -5256,7 +5256,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
5256
5256
|
});
|
|
5257
5257
|
req2.end();
|
|
5258
5258
|
} else {
|
|
5259
|
-
|
|
5259
|
+
resolve8(res.headers.etag || res.headers["last-modified"] || "");
|
|
5260
5260
|
}
|
|
5261
5261
|
});
|
|
5262
5262
|
req.on("error", reject);
|
|
@@ -5320,7 +5320,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
5320
5320
|
downloadFile(url, destPath) {
|
|
5321
5321
|
const https = require("https");
|
|
5322
5322
|
const http3 = require("http");
|
|
5323
|
-
return new Promise((
|
|
5323
|
+
return new Promise((resolve8, reject) => {
|
|
5324
5324
|
const doRequest = (reqUrl, redirectCount = 0) => {
|
|
5325
5325
|
if (redirectCount > 5) {
|
|
5326
5326
|
reject(new Error("Too many redirects"));
|
|
@@ -5340,7 +5340,7 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
5340
5340
|
res.pipe(ws);
|
|
5341
5341
|
ws.on("finish", () => {
|
|
5342
5342
|
ws.close();
|
|
5343
|
-
|
|
5343
|
+
resolve8();
|
|
5344
5344
|
});
|
|
5345
5345
|
ws.on("error", reject);
|
|
5346
5346
|
});
|
|
@@ -5677,17 +5677,17 @@ async function findFreePort(ports) {
|
|
|
5677
5677
|
throw new Error("No free port found");
|
|
5678
5678
|
}
|
|
5679
5679
|
function checkPortFree(port) {
|
|
5680
|
-
return new Promise((
|
|
5680
|
+
return new Promise((resolve8) => {
|
|
5681
5681
|
const server = net.createServer();
|
|
5682
5682
|
server.unref();
|
|
5683
|
-
server.on("error", () =>
|
|
5683
|
+
server.on("error", () => resolve8(false));
|
|
5684
5684
|
server.listen(port, "127.0.0.1", () => {
|
|
5685
|
-
server.close(() =>
|
|
5685
|
+
server.close(() => resolve8(true));
|
|
5686
5686
|
});
|
|
5687
5687
|
});
|
|
5688
5688
|
}
|
|
5689
5689
|
async function isCdpActive(port) {
|
|
5690
|
-
return new Promise((
|
|
5690
|
+
return new Promise((resolve8) => {
|
|
5691
5691
|
const req = require("http").get(`http://127.0.0.1:${port}/json/version`, {
|
|
5692
5692
|
timeout: 2e3
|
|
5693
5693
|
}, (res) => {
|
|
@@ -5696,16 +5696,16 @@ async function isCdpActive(port) {
|
|
|
5696
5696
|
res.on("end", () => {
|
|
5697
5697
|
try {
|
|
5698
5698
|
const info = JSON.parse(data);
|
|
5699
|
-
|
|
5699
|
+
resolve8(!!info["WebKit-Version"] || !!info["Browser"]);
|
|
5700
5700
|
} catch {
|
|
5701
|
-
|
|
5701
|
+
resolve8(false);
|
|
5702
5702
|
}
|
|
5703
5703
|
});
|
|
5704
5704
|
});
|
|
5705
|
-
req.on("error", () =>
|
|
5705
|
+
req.on("error", () => resolve8(false));
|
|
5706
5706
|
req.on("timeout", () => {
|
|
5707
5707
|
req.destroy();
|
|
5708
|
-
|
|
5708
|
+
resolve8(false);
|
|
5709
5709
|
});
|
|
5710
5710
|
});
|
|
5711
5711
|
}
|
|
@@ -6650,7 +6650,7 @@ try {
|
|
|
6650
6650
|
if (os11.platform() !== "win32") {
|
|
6651
6651
|
try {
|
|
6652
6652
|
const fs10 = require("fs");
|
|
6653
|
-
const ptyDir = path9.dirname(require.resolve("node-pty"));
|
|
6653
|
+
const ptyDir = path9.resolve(path9.dirname(require.resolve("node-pty")), "..");
|
|
6654
6654
|
const arch3 = os11.arch() === "arm64" ? "darwin-arm64" : "darwin-x64";
|
|
6655
6655
|
const helper = path9.join(ptyDir, "prebuilds", arch3, "spawn-helper");
|
|
6656
6656
|
if (fs10.existsSync(helper)) {
|
|
@@ -6800,7 +6800,7 @@ var ProviderCliAdapter = class {
|
|
|
6800
6800
|
this.timeouts = {
|
|
6801
6801
|
ptyFlush: t.ptyFlush ?? 50,
|
|
6802
6802
|
dialogAccept: t.dialogAccept ?? 300,
|
|
6803
|
-
approvalCooldown: t.approvalCooldown ??
|
|
6803
|
+
approvalCooldown: t.approvalCooldown ?? 500,
|
|
6804
6804
|
generatingIdle: t.generatingIdle ?? 6e3,
|
|
6805
6805
|
idleFinish: t.idleFinish ?? 5e3,
|
|
6806
6806
|
maxResponse: t.maxResponse ?? 3e5,
|
|
@@ -6977,32 +6977,34 @@ var ProviderCliAdapter = class {
|
|
|
6977
6977
|
}
|
|
6978
6978
|
const hasApproval = patterns.approval.some((p) => p.test(this.recentOutputBuffer));
|
|
6979
6979
|
if (hasApproval && this.currentStatus !== "waiting_approval") {
|
|
6980
|
-
|
|
6981
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
|
|
6988
|
-
|
|
6989
|
-
|
|
6990
|
-
|
|
6991
|
-
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
6996
|
-
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
|
|
7001
|
-
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
6980
|
+
const inCooldown = this.lastApprovalResolvedAt && Date.now() - this.lastApprovalResolvedAt < this.timeouts.approvalCooldown;
|
|
6981
|
+
if (!inCooldown) {
|
|
6982
|
+
const ctxLines = this.recentOutputBuffer.split("\n").map((l) => l.trim()).filter((l) => l && !/^[─═╭╮╰╯│]+$/.test(l));
|
|
6983
|
+
this.isWaitingForResponse = true;
|
|
6984
|
+
this.setStatus("waiting_approval", "approval_pattern");
|
|
6985
|
+
this.recentOutputBuffer = "";
|
|
6986
|
+
this.approvalTransitionBuffer = "";
|
|
6987
|
+
this.activeModal = {
|
|
6988
|
+
message: ctxLines.slice(-5).join(" ").slice(0, 200) || "Approval required",
|
|
6989
|
+
buttons: this.cliType === "claude-cli" ? ["Yes (y)", "Always allow (a)", "Deny (Esc)"] : ["Allow once", "Always allow", "Deny"]
|
|
6990
|
+
};
|
|
6991
|
+
if (this.idleTimeout) clearTimeout(this.idleTimeout);
|
|
6992
|
+
if (this.approvalExitTimeout) clearTimeout(this.approvalExitTimeout);
|
|
6993
|
+
this.approvalExitTimeout = setTimeout(() => {
|
|
6994
|
+
if (this.currentStatus === "waiting_approval") {
|
|
6995
|
+
LOG.warn("CLI", `[${this.cliType}] Approval timeout \u2014 auto-exiting waiting_approval`);
|
|
6996
|
+
this.activeModal = null;
|
|
6997
|
+
this.lastApprovalResolvedAt = Date.now();
|
|
6998
|
+
this.recentOutputBuffer = "";
|
|
6999
|
+
this.approvalTransitionBuffer = "";
|
|
7000
|
+
this.approvalExitTimeout = null;
|
|
7001
|
+
this.setStatus(this.isWaitingForResponse ? "generating" : "idle", "approval_cleared");
|
|
7002
|
+
this.onStatusChange?.();
|
|
7003
|
+
}
|
|
7004
|
+
}, 6e4);
|
|
7005
|
+
this.onStatusChange?.();
|
|
7006
|
+
return;
|
|
7007
|
+
}
|
|
7006
7008
|
}
|
|
7007
7009
|
if (this.currentStatus === "waiting_approval") {
|
|
7008
7010
|
this.approvalTransitionBuffer = (this.approvalTransitionBuffer + cleanData).slice(-500);
|
|
@@ -7054,7 +7056,10 @@ var ProviderCliAdapter = class {
|
|
|
7054
7056
|
}
|
|
7055
7057
|
const trailingLines = cleanData.split("\n").slice(-2).join("\n");
|
|
7056
7058
|
if (patterns.prompt.some((p) => p.test(trailingLines))) {
|
|
7057
|
-
|
|
7059
|
+
const hasApprovalHere = patterns.approval.some((p) => p.test(this.recentOutputBuffer));
|
|
7060
|
+
if (!hasApprovalHere) {
|
|
7061
|
+
this.finishResponse();
|
|
7062
|
+
}
|
|
7058
7063
|
} else {
|
|
7059
7064
|
this.idleTimeout = setTimeout(() => {
|
|
7060
7065
|
if (this.isWaitingForResponse && this.responseBuffer.trim()) {
|
|
@@ -7851,13 +7856,13 @@ var AcpProviderInstance = class {
|
|
|
7851
7856
|
}
|
|
7852
7857
|
this.currentStatus = "waiting_approval";
|
|
7853
7858
|
this.detectStatusTransition();
|
|
7854
|
-
const approved = await new Promise((
|
|
7855
|
-
this.permissionResolvers.push(
|
|
7859
|
+
const approved = await new Promise((resolve8) => {
|
|
7860
|
+
this.permissionResolvers.push(resolve8);
|
|
7856
7861
|
setTimeout(() => {
|
|
7857
|
-
const idx = this.permissionResolvers.indexOf(
|
|
7862
|
+
const idx = this.permissionResolvers.indexOf(resolve8);
|
|
7858
7863
|
if (idx >= 0) {
|
|
7859
7864
|
this.permissionResolvers.splice(idx, 1);
|
|
7860
|
-
|
|
7865
|
+
resolve8(false);
|
|
7861
7866
|
}
|
|
7862
7867
|
}, 3e5);
|
|
7863
7868
|
});
|
|
@@ -9097,6 +9102,18 @@ var AgentStreamPoller = class {
|
|
|
9097
9102
|
}
|
|
9098
9103
|
}
|
|
9099
9104
|
}
|
|
9105
|
+
if (this._activeIdeType === ideType && agentStreamManager.activeAgentType) {
|
|
9106
|
+
const activeType = agentStreamManager.activeAgentType;
|
|
9107
|
+
const enabledExtTypes = new Set(
|
|
9108
|
+
providerLoader.getEnabledExtensionProviders(ideType).map((p) => p.type)
|
|
9109
|
+
);
|
|
9110
|
+
if (!enabledExtTypes.has(activeType)) {
|
|
9111
|
+
LOG.info("AgentStream", `Active agent ${activeType} was disabled for ${ideType} \u2014 detaching`);
|
|
9112
|
+
await agentStreamManager.switchActiveAgent(cdp, null);
|
|
9113
|
+
this._activeIdeType = null;
|
|
9114
|
+
this.deps.onStreamsUpdated?.(ideType, []);
|
|
9115
|
+
}
|
|
9116
|
+
}
|
|
9100
9117
|
}
|
|
9101
9118
|
if (this._activeIdeType) {
|
|
9102
9119
|
const cdp = cdpManagers.get(this._activeIdeType);
|
|
@@ -9907,15 +9924,15 @@ var DevServer = class _DevServer {
|
|
|
9907
9924
|
this.json(res, 500, { error: e.message });
|
|
9908
9925
|
}
|
|
9909
9926
|
});
|
|
9910
|
-
return new Promise((
|
|
9927
|
+
return new Promise((resolve8, reject) => {
|
|
9911
9928
|
this.server.listen(port, "127.0.0.1", () => {
|
|
9912
9929
|
this.log(`Dev server listening on http://127.0.0.1:${port}`);
|
|
9913
|
-
|
|
9930
|
+
resolve8();
|
|
9914
9931
|
});
|
|
9915
9932
|
this.server.on("error", (e) => {
|
|
9916
9933
|
if (e.code === "EADDRINUSE") {
|
|
9917
9934
|
this.log(`Port ${port} in use, skipping dev server`);
|
|
9918
|
-
|
|
9935
|
+
resolve8();
|
|
9919
9936
|
} else {
|
|
9920
9937
|
reject(e);
|
|
9921
9938
|
}
|
|
@@ -9998,20 +10015,20 @@ var DevServer = class _DevServer {
|
|
|
9998
10015
|
child.stderr?.on("data", (d) => {
|
|
9999
10016
|
stderr += d.toString().slice(0, 2e3);
|
|
10000
10017
|
});
|
|
10001
|
-
await new Promise((
|
|
10018
|
+
await new Promise((resolve8) => {
|
|
10002
10019
|
const timer = setTimeout(() => {
|
|
10003
10020
|
child.kill();
|
|
10004
|
-
|
|
10021
|
+
resolve8();
|
|
10005
10022
|
}, 3e3);
|
|
10006
10023
|
child.on("exit", () => {
|
|
10007
10024
|
clearTimeout(timer);
|
|
10008
|
-
|
|
10025
|
+
resolve8();
|
|
10009
10026
|
});
|
|
10010
10027
|
child.stdout?.once("data", () => {
|
|
10011
10028
|
setTimeout(() => {
|
|
10012
10029
|
child.kill();
|
|
10013
10030
|
clearTimeout(timer);
|
|
10014
|
-
|
|
10031
|
+
resolve8();
|
|
10015
10032
|
}, 500);
|
|
10016
10033
|
});
|
|
10017
10034
|
});
|
|
@@ -10696,14 +10713,14 @@ var DevServer = class _DevServer {
|
|
|
10696
10713
|
child.stderr?.on("data", (d) => {
|
|
10697
10714
|
stderr += d.toString();
|
|
10698
10715
|
});
|
|
10699
|
-
await new Promise((
|
|
10716
|
+
await new Promise((resolve8) => {
|
|
10700
10717
|
const timer = setTimeout(() => {
|
|
10701
10718
|
child.kill();
|
|
10702
|
-
|
|
10719
|
+
resolve8();
|
|
10703
10720
|
}, timeout);
|
|
10704
10721
|
child.on("exit", () => {
|
|
10705
10722
|
clearTimeout(timer);
|
|
10706
|
-
|
|
10723
|
+
resolve8();
|
|
10707
10724
|
});
|
|
10708
10725
|
});
|
|
10709
10726
|
const elapsed = Date.now() - start;
|
|
@@ -12105,14 +12122,14 @@ data: ${JSON.stringify(msg.data)}
|
|
|
12105
12122
|
res.end(JSON.stringify(data, null, 2));
|
|
12106
12123
|
}
|
|
12107
12124
|
async readBody(req) {
|
|
12108
|
-
return new Promise((
|
|
12125
|
+
return new Promise((resolve8) => {
|
|
12109
12126
|
let body = "";
|
|
12110
12127
|
req.on("data", (chunk) => body += chunk);
|
|
12111
12128
|
req.on("end", () => {
|
|
12112
12129
|
try {
|
|
12113
|
-
|
|
12130
|
+
resolve8(JSON.parse(body));
|
|
12114
12131
|
} catch {
|
|
12115
|
-
|
|
12132
|
+
resolve8({});
|
|
12116
12133
|
}
|
|
12117
12134
|
});
|
|
12118
12135
|
});
|
|
@@ -12481,10 +12498,10 @@ async function installExtension(ide, extension) {
|
|
|
12481
12498
|
const buffer = Buffer.from(await res.arrayBuffer());
|
|
12482
12499
|
const fs10 = await import("fs");
|
|
12483
12500
|
fs10.writeFileSync(vsixPath, buffer);
|
|
12484
|
-
return new Promise((
|
|
12501
|
+
return new Promise((resolve8) => {
|
|
12485
12502
|
const cmd = `"${ide.cliCommand}" --install-extension "${vsixPath}" --force`;
|
|
12486
12503
|
(0, import_child_process8.exec)(cmd, { timeout: 6e4 }, (error, _stdout, stderr) => {
|
|
12487
|
-
|
|
12504
|
+
resolve8({
|
|
12488
12505
|
extensionId: extension.id,
|
|
12489
12506
|
marketplaceId: extension.marketplaceId,
|
|
12490
12507
|
success: !error,
|
|
@@ -12497,11 +12514,11 @@ async function installExtension(ide, extension) {
|
|
|
12497
12514
|
} catch (e) {
|
|
12498
12515
|
}
|
|
12499
12516
|
}
|
|
12500
|
-
return new Promise((
|
|
12517
|
+
return new Promise((resolve8) => {
|
|
12501
12518
|
const cmd = `"${ide.cliCommand}" --install-extension ${extension.marketplaceId} --force`;
|
|
12502
12519
|
(0, import_child_process8.exec)(cmd, { timeout: 6e4 }, (error, stdout, stderr) => {
|
|
12503
12520
|
if (error) {
|
|
12504
|
-
|
|
12521
|
+
resolve8({
|
|
12505
12522
|
extensionId: extension.id,
|
|
12506
12523
|
marketplaceId: extension.marketplaceId,
|
|
12507
12524
|
success: false,
|
|
@@ -12509,7 +12526,7 @@ async function installExtension(ide, extension) {
|
|
|
12509
12526
|
error: stderr || error.message
|
|
12510
12527
|
});
|
|
12511
12528
|
} else {
|
|
12512
|
-
|
|
12529
|
+
resolve8({
|
|
12513
12530
|
extensionId: extension.id,
|
|
12514
12531
|
marketplaceId: extension.marketplaceId,
|
|
12515
12532
|
success: true,
|