adhdev 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.js CHANGED
@@ -861,6 +861,7 @@ var init_manager = __esm({
861
861
  // Connected page title
862
862
  _targetFilter;
863
863
  // Provider-configurable target selection
864
+ _lastDiscoveredTargets;
864
865
  constructor(port = 9333, logFn, targetId, targetFilter) {
865
866
  this.port = port;
866
867
  this._targetId = targetId || null;
@@ -1581,11 +1582,14 @@ var init_manager = __esm({
1581
1582
  agentType: known.agentType,
1582
1583
  url: url2
1583
1584
  });
1584
- this.log(`[CDP] Found agent: ${known.agentType} (${target.targetId})`);
1585
+ if (!this._lastDiscoveredTargets?.has(target.targetId)) {
1586
+ this.log(`[CDP] Found agent: ${known.agentType} (${target.targetId})`);
1587
+ }
1585
1588
  break;
1586
1589
  }
1587
1590
  }
1588
1591
  }
1592
+ this._lastDiscoveredTargets = new Set(agents.map((a) => a.targetId));
1589
1593
  return agents;
1590
1594
  } catch (e) {
1591
1595
  this.log(`[CDP] discoverAgentWebviews error: ${e.message}`);
@@ -5781,14 +5785,22 @@ var init_provider_loader = __esm({
5781
5785
  } else {
5782
5786
  v = JSON.stringify(v);
5783
5787
  }
5784
- content = content.replace(new RegExp(`\\$\\{${key}\\}`, "g"), String(v));
5788
+ const re = new RegExp(`\\$\\{\\s*${key}\\s*\\}`, "g");
5789
+ content = content.replace(re, String(v));
5785
5790
  }
5791
+ } else if (typeof args[0] === "string") {
5792
+ const re = new RegExp(`\\$\\{\\s*MESSAGE\\s*\\}`, "g");
5793
+ let v = args[0];
5794
+ if (!v.startsWith('"') && !v.startsWith("'") && !v.startsWith("`")) {
5795
+ v = JSON.stringify(v);
5796
+ }
5797
+ content = content.replace(re, String(v));
5786
5798
  } else if (args[0] !== void 0) {
5787
5799
  let v = String(args[0]);
5788
5800
  if (!v.startsWith('"') && !v.startsWith("'") && !v.startsWith("`")) {
5789
5801
  v = JSON.stringify(v);
5790
5802
  }
5791
- content = content.replace(/\$\{MESSAGE\}/g, v);
5803
+ content = content.replace(new RegExp(`\\$\\{\\s*MESSAGE\\s*\\}`, "g"), v);
5792
5804
  }
5793
5805
  return content;
5794
5806
  } catch {
@@ -6792,14 +6804,14 @@ var init_reporter = __esm({
6792
6804
  const cliSummary = cliStates.map((s) => `${s.type}(${s.status})`).join(", ");
6793
6805
  const acpSummary = acpStates.map((s) => `${s.type}(${s.status})`).join(", ");
6794
6806
  const logLevel = opts?.p2pOnly ? "debug" : "info";
6795
- const summary = `\u2192${target} IDE: ${ideStates.length} [${ideSummary}] CLI: ${cliStates.length} [${cliSummary}] ACP: ${acpStates.length} [${acpSummary}]`;
6796
- const summaryChanged = summary !== this.lastStatusSummary;
6807
+ const baseSummary = `IDE: ${ideStates.length} [${ideSummary}] CLI: ${cliStates.length} [${cliSummary}] ACP: ${acpStates.length} [${acpSummary}]`;
6808
+ const summaryChanged = baseSummary !== this.lastStatusSummary;
6797
6809
  if (summaryChanged) {
6798
- this.lastStatusSummary = summary;
6810
+ this.lastStatusSummary = baseSummary;
6799
6811
  if (logLevel === "debug") {
6800
- LOG.debug("StatusReport", summary);
6812
+ LOG.debug("StatusReport", `\u2192${target} ${baseSummary}`);
6801
6813
  } else {
6802
- LOG.info("StatusReport", summary);
6814
+ LOG.info("StatusReport", `\u2192${target} ${baseSummary}`);
6803
6815
  }
6804
6816
  }
6805
6817
  const { managedIdes, managedClis, managedAcps } = buildAllManagedEntries(
@@ -25611,7 +25623,7 @@ var init_manager2 = __esm({
25611
25623
  try {
25612
25624
  const evaluate = (expr, timeout) => cdp.evaluateInSessionFrame(agent.sessionId, expr, timeout);
25613
25625
  const state = await agent.adapter.readChat(evaluate);
25614
- this.logFn(`[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") : ""}`);
25626
+ 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") : ""}`);
25615
25627
  agent.lastState = state;
25616
25628
  agent.lastError = null;
25617
25629
  if (state.status === "panel_hidden") {
@@ -26637,6 +26649,7 @@ var init_dev_server = __esm({
26637
26649
  { method: "GET", pattern: /^\/api\/providers\/([^/]+)\/source$/, handler: (q, s, p) => this.handleSource(p[0], q, s) },
26638
26650
  { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/save$/, handler: (q, s, p) => this.handleSave(p[0], q, s) },
26639
26651
  { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/typeAndSend$/, handler: (q, s, p) => this.handleTypeAndSend(p[0], q, s) },
26652
+ { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/typeAndSendAt$/, handler: (q, s, p) => this.handleTypeAndSendAt(p[0], q, s) },
26640
26653
  { method: "GET", pattern: /^\/api\/providers\/([^/]+)\/config$/, handler: (q, s, p) => this.handleProviderConfig(p[0], q, s) },
26641
26654
  { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/dom-context$/, handler: (q, s, p) => this.handleDomContext(p[0], q, s) },
26642
26655
  { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/auto-implement$/, handler: (q, s, p) => this.handleAutoImplement(p[0], q, s) },
@@ -27378,6 +27391,25 @@ var init_dev_server = __esm({
27378
27391
  this.json(res, 500, { error: e.message });
27379
27392
  }
27380
27393
  }
27394
+ async handleTypeAndSendAt(type, req, res) {
27395
+ const body = await this.readBody(req);
27396
+ const { x, y, text } = body;
27397
+ if (typeof x !== "number" || typeof y !== "number" || !text || typeof text !== "string") {
27398
+ this.json(res, 400, { error: "x, y numbers and text string required" });
27399
+ return;
27400
+ }
27401
+ const cdp = this.getCdp(type);
27402
+ if (!cdp) {
27403
+ this.json(res, 503, { error: `CDP not connected for '${type}'` });
27404
+ return;
27405
+ }
27406
+ try {
27407
+ const sent = await cdp.typeAndSendAt(x, y, text);
27408
+ this.json(res, 200, { sent });
27409
+ } catch (e) {
27410
+ this.json(res, 500, { error: e.message });
27411
+ }
27412
+ }
27381
27413
  async handleScriptHints(type, _req, res) {
27382
27414
  const dir = this.findProviderDir(type);
27383
27415
  if (!dir) {
@@ -30830,7 +30862,7 @@ var init_adhdev_daemon = __esm({
30830
30862
  fs11 = __toESM(require("fs"));
30831
30863
  path14 = __toESM(require("path"));
30832
30864
  import_chalk2 = __toESM(require("chalk"));
30833
- pkgVersion = "0.6.39";
30865
+ pkgVersion = "0.6.41";
30834
30866
  if (pkgVersion === "unknown") {
30835
30867
  try {
30836
30868
  const possiblePaths = [