adhdev 0.6.40 → 0.6.42

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 CHANGED
@@ -868,6 +868,7 @@ var init_manager = __esm({
868
868
  // Connected page title
869
869
  _targetFilter;
870
870
  // Provider-configurable target selection
871
+ _lastDiscoveredTargets;
871
872
  constructor(port = 9333, logFn, targetId, targetFilter) {
872
873
  this.port = port;
873
874
  this._targetId = targetId || null;
@@ -1588,11 +1589,14 @@ var init_manager = __esm({
1588
1589
  agentType: known.agentType,
1589
1590
  url: url2
1590
1591
  });
1591
- this.log(`[CDP] Found agent: ${known.agentType} (${target.targetId})`);
1592
+ if (!this._lastDiscoveredTargets?.has(target.targetId)) {
1593
+ this.log(`[CDP] Found agent: ${known.agentType} (${target.targetId})`);
1594
+ }
1592
1595
  break;
1593
1596
  }
1594
1597
  }
1595
1598
  }
1599
+ this._lastDiscoveredTargets = new Set(agents.map((a) => a.targetId));
1596
1600
  return agents;
1597
1601
  } catch (e) {
1598
1602
  this.log(`[CDP] discoverAgentWebviews error: ${e.message}`);
@@ -5949,14 +5953,22 @@ var init_provider_loader = __esm({
5949
5953
  } else {
5950
5954
  v = JSON.stringify(v);
5951
5955
  }
5952
- content = content.replace(new RegExp(`\\$\\{${key}\\}`, "g"), String(v));
5956
+ const re = new RegExp(`\\$\\{\\s*${key}\\s*\\}`, "g");
5957
+ content = content.replace(re, String(v));
5953
5958
  }
5959
+ } else if (typeof args[0] === "string") {
5960
+ const re = new RegExp(`\\$\\{\\s*MESSAGE\\s*\\}`, "g");
5961
+ let v = args[0];
5962
+ if (!v.startsWith('"') && !v.startsWith("'") && !v.startsWith("`")) {
5963
+ v = JSON.stringify(v);
5964
+ }
5965
+ content = content.replace(re, String(v));
5954
5966
  } else if (args[0] !== void 0) {
5955
5967
  let v = String(args[0]);
5956
5968
  if (!v.startsWith('"') && !v.startsWith("'") && !v.startsWith("`")) {
5957
5969
  v = JSON.stringify(v);
5958
5970
  }
5959
- content = content.replace(/\$\{MESSAGE\}/g, v);
5971
+ content = content.replace(new RegExp(`\\$\\{\\s*MESSAGE\\s*\\}`, "g"), v);
5960
5972
  }
5961
5973
  return content;
5962
5974
  } catch {
@@ -6988,14 +7000,14 @@ var init_reporter = __esm({
6988
7000
  const cliSummary = cliStates.map((s) => `${s.type}(${s.status})`).join(", ");
6989
7001
  const acpSummary = acpStates.map((s) => `${s.type}(${s.status})`).join(", ");
6990
7002
  const logLevel = opts?.p2pOnly ? "debug" : "info";
6991
- const summary = `\u2192${target} IDE: ${ideStates.length} [${ideSummary}] CLI: ${cliStates.length} [${cliSummary}] ACP: ${acpStates.length} [${acpSummary}]`;
6992
- const summaryChanged = summary !== this.lastStatusSummary;
7003
+ const baseSummary = `IDE: ${ideStates.length} [${ideSummary}] CLI: ${cliStates.length} [${cliSummary}] ACP: ${acpStates.length} [${acpSummary}]`;
7004
+ const summaryChanged = baseSummary !== this.lastStatusSummary;
6993
7005
  if (summaryChanged) {
6994
- this.lastStatusSummary = summary;
7006
+ this.lastStatusSummary = baseSummary;
6995
7007
  if (logLevel === "debug") {
6996
- LOG.debug("StatusReport", summary);
7008
+ LOG.debug("StatusReport", `\u2192${target} ${baseSummary}`);
6997
7009
  } else {
6998
- LOG.info("StatusReport", summary);
7010
+ LOG.info("StatusReport", `\u2192${target} ${baseSummary}`);
6999
7011
  }
7000
7012
  }
7001
7013
  const { managedIdes, managedClis, managedAcps } = buildAllManagedEntries(
@@ -25808,7 +25820,7 @@ var init_manager2 = __esm({
25808
25820
  try {
25809
25821
  const evaluate = (expr, timeout) => cdp.evaluateInSessionFrame(agent.sessionId, expr, timeout);
25810
25822
  const state = await agent.adapter.readChat(evaluate);
25811
- 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") : ""}`);
25823
+ 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") : ""}`);
25812
25824
  agent.lastState = state;
25813
25825
  agent.lastError = null;
25814
25826
  if (state.status === "panel_hidden") {
@@ -26834,6 +26846,7 @@ var init_dev_server = __esm({
26834
26846
  { method: "GET", pattern: /^\/api\/providers\/([^/]+)\/source$/, handler: (q, s, p) => this.handleSource(p[0], q, s) },
26835
26847
  { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/save$/, handler: (q, s, p) => this.handleSave(p[0], q, s) },
26836
26848
  { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/typeAndSend$/, handler: (q, s, p) => this.handleTypeAndSend(p[0], q, s) },
26849
+ { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/typeAndSendAt$/, handler: (q, s, p) => this.handleTypeAndSendAt(p[0], q, s) },
26837
26850
  { method: "GET", pattern: /^\/api\/providers\/([^/]+)\/config$/, handler: (q, s, p) => this.handleProviderConfig(p[0], q, s) },
26838
26851
  { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/dom-context$/, handler: (q, s, p) => this.handleDomContext(p[0], q, s) },
26839
26852
  { method: "POST", pattern: /^\/api\/providers\/([^/]+)\/auto-implement$/, handler: (q, s, p) => this.handleAutoImplement(p[0], q, s) },
@@ -27575,6 +27588,25 @@ var init_dev_server = __esm({
27575
27588
  this.json(res, 500, { error: e.message });
27576
27589
  }
27577
27590
  }
27591
+ async handleTypeAndSendAt(type, req, res) {
27592
+ const body = await this.readBody(req);
27593
+ const { x, y, text } = body;
27594
+ if (typeof x !== "number" || typeof y !== "number" || !text || typeof text !== "string") {
27595
+ this.json(res, 400, { error: "x, y numbers and text string required" });
27596
+ return;
27597
+ }
27598
+ const cdp = this.getCdp(type);
27599
+ if (!cdp) {
27600
+ this.json(res, 503, { error: `CDP not connected for '${type}'` });
27601
+ return;
27602
+ }
27603
+ try {
27604
+ const sent = await cdp.typeAndSendAt(x, y, text);
27605
+ this.json(res, 200, { sent });
27606
+ } catch (e) {
27607
+ this.json(res, 500, { error: e.message });
27608
+ }
27609
+ }
27578
27610
  async handleScriptHints(type, _req, res) {
27579
27611
  const dir = this.findProviderDir(type);
27580
27612
  if (!dir) {
@@ -31270,7 +31302,7 @@ var init_adhdev_daemon = __esm({
31270
31302
  fs11 = __toESM(require("fs"));
31271
31303
  path14 = __toESM(require("path"));
31272
31304
  import_chalk2 = __toESM(require("chalk"));
31273
- pkgVersion = "0.6.40";
31305
+ pkgVersion = "0.6.42";
31274
31306
  if (pkgVersion === "unknown") {
31275
31307
  try {
31276
31308
  const possiblePaths = [