@adhdev/daemon-core 0.6.39 → 0.6.41
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.d.ts +2 -0
- package/dist/index.js +41 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/agent-stream/manager.ts +1 -1
- package/src/cdp/manager.ts +6 -1
- package/src/daemon/dev-server.ts +19 -0
- package/src/providers/provider-loader.ts +11 -2
- package/src/status/reporter.ts +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1269,6 +1269,7 @@ declare class DaemonCdpManager {
|
|
|
1269
1269
|
private _targetId;
|
|
1270
1270
|
private _pageTitle;
|
|
1271
1271
|
private _targetFilter;
|
|
1272
|
+
private _lastDiscoveredTargets?;
|
|
1272
1273
|
constructor(port?: number, logFn?: (msg: string) => void, targetId?: string, targetFilter?: CdpTargetFilter);
|
|
1273
1274
|
/** Set target filter (can be updated after construction) */
|
|
1274
1275
|
setTargetFilter(filter: CdpTargetFilter): void;
|
|
@@ -2834,6 +2835,7 @@ declare class DevServer {
|
|
|
2834
2835
|
private handleSource;
|
|
2835
2836
|
private handleSave;
|
|
2836
2837
|
private handleTypeAndSend;
|
|
2838
|
+
private handleTypeAndSendAt;
|
|
2837
2839
|
private handleScriptHints;
|
|
2838
2840
|
private handleValidate;
|
|
2839
2841
|
private handleAcpChat;
|
package/dist/index.js
CHANGED
|
@@ -1547,6 +1547,7 @@ var DaemonCdpManager = class {
|
|
|
1547
1547
|
// Connected page title
|
|
1548
1548
|
_targetFilter;
|
|
1549
1549
|
// Provider-configurable target selection
|
|
1550
|
+
_lastDiscoveredTargets;
|
|
1550
1551
|
constructor(port = 9333, logFn, targetId, targetFilter) {
|
|
1551
1552
|
this.port = port;
|
|
1552
1553
|
this._targetId = targetId || null;
|
|
@@ -2267,11 +2268,14 @@ var DaemonCdpManager = class {
|
|
|
2267
2268
|
agentType: known.agentType,
|
|
2268
2269
|
url
|
|
2269
2270
|
});
|
|
2270
|
-
this.
|
|
2271
|
+
if (!this._lastDiscoveredTargets?.has(target.targetId)) {
|
|
2272
|
+
this.log(`[CDP] Found agent: ${known.agentType} (${target.targetId})`);
|
|
2273
|
+
}
|
|
2271
2274
|
break;
|
|
2272
2275
|
}
|
|
2273
2276
|
}
|
|
2274
2277
|
}
|
|
2278
|
+
this._lastDiscoveredTargets = new Set(agents.map((a) => a.targetId));
|
|
2275
2279
|
return agents;
|
|
2276
2280
|
} catch (e) {
|
|
2277
2281
|
this.log(`[CDP] discoverAgentWebviews error: ${e.message}`);
|
|
@@ -6531,14 +6535,22 @@ var ProviderLoader = class _ProviderLoader {
|
|
|
6531
6535
|
} else {
|
|
6532
6536
|
v = JSON.stringify(v);
|
|
6533
6537
|
}
|
|
6534
|
-
|
|
6538
|
+
const re = new RegExp(`\\$\\{\\s*${key}\\s*\\}`, "g");
|
|
6539
|
+
content = content.replace(re, String(v));
|
|
6535
6540
|
}
|
|
6541
|
+
} else if (typeof args[0] === "string") {
|
|
6542
|
+
const re = new RegExp(`\\$\\{\\s*MESSAGE\\s*\\}`, "g");
|
|
6543
|
+
let v = args[0];
|
|
6544
|
+
if (!v.startsWith('"') && !v.startsWith("'") && !v.startsWith("`")) {
|
|
6545
|
+
v = JSON.stringify(v);
|
|
6546
|
+
}
|
|
6547
|
+
content = content.replace(re, String(v));
|
|
6536
6548
|
} else if (args[0] !== void 0) {
|
|
6537
6549
|
let v = String(args[0]);
|
|
6538
6550
|
if (!v.startsWith('"') && !v.startsWith("'") && !v.startsWith("`")) {
|
|
6539
6551
|
v = JSON.stringify(v);
|
|
6540
6552
|
}
|
|
6541
|
-
content = content.replace(
|
|
6553
|
+
content = content.replace(new RegExp(`\\$\\{\\s*MESSAGE\\s*\\}`, "g"), v);
|
|
6542
6554
|
}
|
|
6543
6555
|
return content;
|
|
6544
6556
|
} catch {
|
|
@@ -7533,14 +7545,14 @@ var DaemonStatusReporter = class {
|
|
|
7533
7545
|
const cliSummary = cliStates.map((s) => `${s.type}(${s.status})`).join(", ");
|
|
7534
7546
|
const acpSummary = acpStates.map((s) => `${s.type}(${s.status})`).join(", ");
|
|
7535
7547
|
const logLevel = opts?.p2pOnly ? "debug" : "info";
|
|
7536
|
-
const
|
|
7537
|
-
const summaryChanged =
|
|
7548
|
+
const baseSummary = `IDE: ${ideStates.length} [${ideSummary}] CLI: ${cliStates.length} [${cliSummary}] ACP: ${acpStates.length} [${acpSummary}]`;
|
|
7549
|
+
const summaryChanged = baseSummary !== this.lastStatusSummary;
|
|
7538
7550
|
if (summaryChanged) {
|
|
7539
|
-
this.lastStatusSummary =
|
|
7551
|
+
this.lastStatusSummary = baseSummary;
|
|
7540
7552
|
if (logLevel === "debug") {
|
|
7541
|
-
LOG.debug("StatusReport",
|
|
7553
|
+
LOG.debug("StatusReport", `\u2192${target} ${baseSummary}`);
|
|
7542
7554
|
} else {
|
|
7543
|
-
LOG.info("StatusReport",
|
|
7555
|
+
LOG.info("StatusReport", `\u2192${target} ${baseSummary}`);
|
|
7544
7556
|
}
|
|
7545
7557
|
}
|
|
7546
7558
|
const { managedIdes, managedClis, managedAcps } = buildAllManagedEntries(
|
|
@@ -9371,7 +9383,7 @@ var DaemonAgentStreamManager = class {
|
|
|
9371
9383
|
try {
|
|
9372
9384
|
const evaluate = (expr, timeout) => cdp.evaluateInSessionFrame(agent.sessionId, expr, timeout);
|
|
9373
9385
|
const state = await agent.adapter.readChat(evaluate);
|
|
9374
|
-
|
|
9386
|
+
LOG.debug("AgentStream", `[AgentStream] readChat(${type}) result: status=${state.status} msgs=${state.messages?.length || 0} model=${state.model || ""}${state.status === "error" ? " error=" + JSON.stringify(state.error || state._error || "unknown") : ""}`);
|
|
9375
9387
|
agent.lastState = state;
|
|
9376
9388
|
agent.lastError = null;
|
|
9377
9389
|
if (state.status === "panel_hidden") {
|
|
@@ -10349,6 +10361,7 @@ var DevServer = class _DevServer {
|
|
|
10349
10361
|
{ method: "GET", pattern: /^\/api\/providers\/([^/]+)\/source$/, handler: (q, s, p) => this.handleSource(p[0], q, s) },
|
|
10350
10362
|
{ method: "POST", pattern: /^\/api\/providers\/([^/]+)\/save$/, handler: (q, s, p) => this.handleSave(p[0], q, s) },
|
|
10351
10363
|
{ method: "POST", pattern: /^\/api\/providers\/([^/]+)\/typeAndSend$/, handler: (q, s, p) => this.handleTypeAndSend(p[0], q, s) },
|
|
10364
|
+
{ method: "POST", pattern: /^\/api\/providers\/([^/]+)\/typeAndSendAt$/, handler: (q, s, p) => this.handleTypeAndSendAt(p[0], q, s) },
|
|
10352
10365
|
{ method: "GET", pattern: /^\/api\/providers\/([^/]+)\/config$/, handler: (q, s, p) => this.handleProviderConfig(p[0], q, s) },
|
|
10353
10366
|
{ method: "POST", pattern: /^\/api\/providers\/([^/]+)\/dom-context$/, handler: (q, s, p) => this.handleDomContext(p[0], q, s) },
|
|
10354
10367
|
{ method: "POST", pattern: /^\/api\/providers\/([^/]+)\/auto-implement$/, handler: (q, s, p) => this.handleAutoImplement(p[0], q, s) },
|
|
@@ -11090,6 +11103,25 @@ var DevServer = class _DevServer {
|
|
|
11090
11103
|
this.json(res, 500, { error: e.message });
|
|
11091
11104
|
}
|
|
11092
11105
|
}
|
|
11106
|
+
async handleTypeAndSendAt(type, req, res) {
|
|
11107
|
+
const body = await this.readBody(req);
|
|
11108
|
+
const { x, y, text } = body;
|
|
11109
|
+
if (typeof x !== "number" || typeof y !== "number" || !text || typeof text !== "string") {
|
|
11110
|
+
this.json(res, 400, { error: "x, y numbers and text string required" });
|
|
11111
|
+
return;
|
|
11112
|
+
}
|
|
11113
|
+
const cdp = this.getCdp(type);
|
|
11114
|
+
if (!cdp) {
|
|
11115
|
+
this.json(res, 503, { error: `CDP not connected for '${type}'` });
|
|
11116
|
+
return;
|
|
11117
|
+
}
|
|
11118
|
+
try {
|
|
11119
|
+
const sent = await cdp.typeAndSendAt(x, y, text);
|
|
11120
|
+
this.json(res, 200, { sent });
|
|
11121
|
+
} catch (e) {
|
|
11122
|
+
this.json(res, 500, { error: e.message });
|
|
11123
|
+
}
|
|
11124
|
+
}
|
|
11093
11125
|
async handleScriptHints(type, _req, res) {
|
|
11094
11126
|
const dir = this.findProviderDir(type);
|
|
11095
11127
|
if (!dir) {
|