dsh-click 0.3.27 → 0.3.29

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/lib/index.js CHANGED
@@ -623,7 +623,7 @@ var ObservationStore = class {
623
623
  * @module dsh-click/version
624
624
  */
625
625
  /** Plugin version advertised in the helper-protocol handshake. */
626
- const VERSION = "0.3.27";
626
+ const VERSION = "0.3.29";
627
627
  /** The helper protocol revision; bump only on incompatible wire changes. */
628
628
  const HELPER_PROTOCOL_VERSION = 1;
629
629
  //#endregion
@@ -668,12 +668,16 @@ function expectWindow(value, op) {
668
668
  const processId = typeof processIdRaw === "number" ? processIdRaw : null;
669
669
  const executablePath = record["executablePath"];
670
670
  if (executablePath !== null && typeof executablePath !== "string") throw new DshClickError(`helper "${op}" returned malformed executablePath`, "BAD_HELPER_RESPONSE");
671
+ const minimized = record["minimized"] === true;
672
+ const rectValue = record["rect"];
673
+ if (rectValue !== null && minimized) throw new DshClickError(`helper "${op}" returned a rect for a minimized window`, "BAD_HELPER_RESPONSE");
671
674
  return {
672
675
  windowId: expectNumber(record, "windowId", op),
673
676
  processId,
674
677
  title: expectString(record, "title", op),
675
678
  className: expectString(record, "className", op),
676
- rect: expectRect(record["rect"], op),
679
+ rect: rectValue === null ? null : expectRect(rectValue, op),
680
+ minimized,
677
681
  executablePath,
678
682
  visible: record["visible"] !== false
679
683
  };
@@ -696,6 +700,18 @@ function expectSnapshot(value, op) {
696
700
  elementCount: expectNumber(record, "elementCount", op)
697
701
  };
698
702
  }
703
+ /** Validate the helper's capture-path report. */
704
+ function expectCaptureMethod(record, op) {
705
+ const value = expectString(record, "captureMethod", op);
706
+ if (value !== "printwindow-fullcontent" && value !== "printwindow" && value !== "copyfromscreen") throw new DshClickError(`helper "${op}" returned an unknown captureMethod`, "BAD_HELPER_RESPONSE");
707
+ return value;
708
+ }
709
+ /** Validate the helper's capture-scope report. */
710
+ function expectCaptureScope(record, op) {
711
+ const value = expectString(record, "scope", op);
712
+ if (value !== "window" && value !== "primary" && value !== "virtual") throw new DshClickError(`helper "${op}" returned an unknown scope`, "BAD_HELPER_RESPONSE");
713
+ return value;
714
+ }
699
715
  /** Validate one helper element record. */
700
716
  function expectElement(value, op) {
701
717
  const record = expectRecordValue(value, op);
@@ -820,10 +836,11 @@ var HelperBackend = class {
820
836
  if (!Array.isArray(result)) throw new DshClickError("helper \"windows\" returned a non-array result", "BAD_HELPER_RESPONSE");
821
837
  return result.map((item) => expectWindow(item, "windows"));
822
838
  }
823
- async shot(ref, maxSide, signal) {
839
+ async shot(ref, maxSide, scope, signal) {
824
840
  const record = expectRecordValue(await this.invoke("shot", {
825
841
  target: ref,
826
842
  maxSide,
843
+ scope,
827
844
  maxElements: this.config.maxElements,
828
845
  maxDepth: this.config.maxTreeDepth
829
846
  }, signal), "shot");
@@ -831,6 +848,8 @@ var HelperBackend = class {
831
848
  pngBase64: expectString(record, "pngBase64", "shot"),
832
849
  width: expectNumber(record, "width", "shot"),
833
850
  height: expectNumber(record, "height", "shot"),
851
+ captureMethod: expectCaptureMethod(record, "shot"),
852
+ scope: expectCaptureScope(record, "shot"),
834
853
  snapshot: expectSnapshot(record["snapshot"], "shot")
835
854
  };
836
855
  }
@@ -1251,7 +1270,8 @@ function observedWindowInfo(info, maxTextLength) {
1251
1270
  processId: info.processId,
1252
1271
  title: sanitizeVisible(info.title, maxTextLength),
1253
1272
  className: sanitizeVisible(info.className, maxTextLength),
1254
- rect: info.rect,
1273
+ rect: info.rect === null ? null : { ...info.rect },
1274
+ minimized: info.minimized,
1255
1275
  executablePath: info.executablePath === null ? null : sanitizePath(info.executablePath, maxTextLength),
1256
1276
  visible: info.visible
1257
1277
  };
@@ -1279,8 +1299,8 @@ function backendGuard(services) {
1279
1299
  if (!services.backend.available) throw new Error(`dsh-click backend unavailable on ${services.backend.platform}: ${services.backend.unavailableReason ?? "unknown reason"}`);
1280
1300
  }
1281
1301
  /** Plain-text fallback description for a captured screenshot. */
1282
- function shotDescription(window, width, height) {
1283
- return `${width}x${height} screenshot of ${windowLine(window)}; run screen_read on the same window for the structured element list and pixel positions.`;
1302
+ function shotDescription(window, width, height, captureMethod) {
1303
+ return `${width}x${height} bitmap via ${captureMethod} of ${windowLine(window)}; the bitmap is downscaled to the requested longest side, while the window rectangle is ${window.rect.width}x${window.rect.height} physical pixels (snapshot.rect) - map screen coordinates with rect.width/width. Run screen_read on the same window for the structured element list and pixel positions.`;
1284
1304
  }
1285
1305
  /**
1286
1306
  * `screen_shot` — capture the addressed window (or the primary screen).
@@ -1295,11 +1315,11 @@ function screenShotTool(services) {
1295
1315
  const { ctx, config, backend, observations } = services;
1296
1316
  return defineTool({
1297
1317
  name: "screen_shot",
1298
- description: "Capture a screenshot of a desktop window (or the primary screen when no window is given). Returns an observationId that later actions cite in `basedOn`. When the current model accepts images the result includes the image; otherwise it includes a text description. Read-only: never needs approval.",
1318
+ description: "Capture a screenshot of a desktop window, or of the primary screen when no target is given (a target-less shot never captures the foreground window). Window captures ask the window to paint itself with PrintWindow(PW_RENDERFULLCONTENT) first, so they are independent of other windows stacked on top; captureMethod reports which path produced the pixels. Returns an observationId that later actions cite in `basedOn`. When the current model accepts images the result includes the image; otherwise it includes a text description. Read-only: never needs approval.",
1299
1319
  parameters: {
1300
1320
  target: {
1301
1321
  type: "object",
1302
- description: "Which window to capture (windowId, windowTitle, or processId); omitted = the foreground window.",
1322
+ description: "Which window to capture (windowId, windowTitle, or processId); omitted = the primary screen.",
1303
1323
  properties: {
1304
1324
  windowId: {
1305
1325
  type: "integer",
@@ -1316,9 +1336,14 @@ function screenShotTool(services) {
1316
1336
  },
1317
1337
  additionalProperties: false
1318
1338
  },
1339
+ scope: {
1340
+ type: "string",
1341
+ enum: ["primary", "virtual"],
1342
+ description: "Only used without a target: capture the primary screen (default) or the whole virtual desktop (experimental - multi-monitor and negative-origin geometry are not fully verified)."
1343
+ },
1319
1344
  maxSide: {
1320
1345
  type: "integer",
1321
- description: "Longest side in pixels; larger captures are downscaled."
1346
+ description: "Longest side of the bitmap; larger captures are downscaled (the window rectangle in snapshot.rect stays in physical pixels)."
1322
1347
  }
1323
1348
  },
1324
1349
  output: {
@@ -1364,6 +1389,22 @@ function screenShotTool(services) {
1364
1389
  },
1365
1390
  additionalProperties: false
1366
1391
  },
1392
+ captureMethod: {
1393
+ type: "string",
1394
+ enum: [
1395
+ "printwindow-fullcontent",
1396
+ "printwindow",
1397
+ "copyfromscreen"
1398
+ ]
1399
+ },
1400
+ scope: {
1401
+ type: "string",
1402
+ enum: [
1403
+ "window",
1404
+ "primary",
1405
+ "virtual"
1406
+ ]
1407
+ },
1367
1408
  description: { type: "string" }
1368
1409
  },
1369
1410
  additionalProperties: false
@@ -1384,13 +1425,14 @@ function screenShotTool(services) {
1384
1425
  timeoutMs: config.helperTimeoutMs + 15e3,
1385
1426
  async execute(args, exec) {
1386
1427
  backendGuard(services);
1387
- const target = args.target ?? {};
1388
- const requestedSide = args.maxSide;
1428
+ const parsed = args;
1429
+ const target = parsed.target ?? {};
1430
+ const requestedSide = parsed.maxSide;
1389
1431
  const maxSide = requestedSide === void 0 ? config.maxScreenshotSide : Math.min(requestedSide, config.maxScreenshotSide);
1390
- const shot = await backend.shot(target, maxSide, exec.signal);
1432
+ const shot = await backend.shot(target, maxSide, parsed.scope ?? "primary", exec.signal);
1391
1433
  const sanitized = observedWindow(shot.snapshot, config.maxTextLength);
1392
1434
  const record = observations.record(shot.snapshot);
1393
- const description = shotDescription(sanitized, shot.width, shot.height);
1435
+ const description = shotDescription(sanitized, shot.width, shot.height, shot.captureMethod);
1394
1436
  let image;
1395
1437
  const attachments = ctx.get("attachments");
1396
1438
  if (config.imageMode !== "text" && attachments !== void 0 && await sessionAcceptsImages(exec.agent, ctx, exec.signal)) try {
@@ -1422,6 +1464,8 @@ function screenShotTool(services) {
1422
1464
  observationId: record.id,
1423
1465
  window: sanitized,
1424
1466
  ...image !== void 0 ? { image } : {},
1467
+ captureMethod: shot.captureMethod,
1468
+ scope: shot.scope,
1425
1469
  description
1426
1470
  };
1427
1471
  }
@@ -1603,7 +1647,7 @@ function screenFindTool(services) {
1603
1647
  parameters: {
1604
1648
  target: {
1605
1649
  type: "object",
1606
- description: "Which window to search (windowId, windowTitle, or processId); omitted = the foreground window.",
1650
+ description: "Which window to search (windowId, windowTitle, or processId); omitted = the primary screen (a target-less capture never uses the foreground window).",
1607
1651
  properties: {
1608
1652
  windowId: {
1609
1653
  type: "integer",
@@ -1626,7 +1670,7 @@ function screenFindTool(services) {
1626
1670
  },
1627
1671
  maxSide: {
1628
1672
  type: "integer",
1629
- description: "Longest side in pixels; larger captures are downscaled."
1673
+ description: "Longest side of the bitmap; larger captures are downscaled (coordinates returned are still screen pixels)."
1630
1674
  }
1631
1675
  },
1632
1676
  output: {
@@ -1705,7 +1749,7 @@ function screenFindTool(services) {
1705
1749
  const parsed = args;
1706
1750
  const requestedSide = parsed.maxSide;
1707
1751
  const maxSide = requestedSide === void 0 ? config.maxScreenshotSide : Math.min(requestedSide, config.maxScreenshotSide);
1708
- const shot = await backend.shot(parsed.target ?? {}, maxSide, exec.signal);
1752
+ const shot = await backend.shot(parsed.target ?? {}, maxSide, "primary", exec.signal);
1709
1753
  const sanitized = observedWindow(shot.snapshot, config.maxTextLength);
1710
1754
  const record = observations.record(shot.snapshot);
1711
1755
  const targets = [];
@@ -2095,7 +2139,7 @@ function appListTool(services) {
2095
2139
  const { config, backend } = services;
2096
2140
  return defineTool({
2097
2141
  name: "app_list",
2098
- description: "List running desktop applications and their visible windows (windowId, title, process id, executable path). Read-only: never needs approval. Use the returned windowIds as screen_shot/screen_read targets.",
2142
+ description: "List running desktop applications and their visible windows (windowId, title, process id, executable path). Read-only: never needs approval. Use the returned windowIds as screen_shot/screen_read targets. Minimized windows are listed with minimized: true and no rect (Windows reports a -32000 placeholder while iconified); restore them before capturing.",
2099
2143
  parameters: {},
2100
2144
  output: {
2101
2145
  schema: {
@@ -2122,7 +2166,7 @@ function appListTool(services) {
2122
2166
  processId: { oneOf: [{ type: "integer" }, { type: "null" }] },
2123
2167
  title: { type: "string" },
2124
2168
  className: { type: "string" },
2125
- rect: {
2169
+ rect: { oneOf: [{
2126
2170
  type: "object",
2127
2171
  properties: {
2128
2172
  x: { type: "integer" },
@@ -2131,7 +2175,8 @@ function appListTool(services) {
2131
2175
  height: { type: "integer" }
2132
2176
  },
2133
2177
  additionalProperties: false
2134
- },
2178
+ }, { type: "null" }] },
2179
+ minimized: { type: "boolean" },
2135
2180
  executablePath: { oneOf: [{ type: "string" }, { type: "null" }] },
2136
2181
  visible: { type: "boolean" }
2137
2182
  },
@@ -2150,7 +2195,10 @@ function appListTool(services) {
2150
2195
  const lines = [`${result.apps.length} running application(s) with windows:`];
2151
2196
  for (const app of result.apps) {
2152
2197
  lines.push(`- ${app.name} (pid ${app.processId}, ${app.executablePath ?? "unknown executable"})`);
2153
- for (const window of app.windows) lines.push(` - [windowId ${window.windowId}] ${JSON.stringify(window.title)} at (${window.rect.x}, ${window.rect.y}) ${window.rect.width}x${window.rect.height}`);
2198
+ for (const window of app.windows) {
2199
+ const where = window.minimized ? "minimized (no rect; screen_shot refuses it until restored)" : window.rect === null ? "no rect reported" : `at (${window.rect.x}, ${window.rect.y}) ${window.rect.width}x${window.rect.height}`;
2200
+ lines.push(` - [windowId ${window.windowId}] ${JSON.stringify(window.title)} ${where}`);
2201
+ }
2154
2202
  }
2155
2203
  return [{
2156
2204
  type: "text",
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import type { SubprocessRuntime } from '@deepseek-ai/dsh-subprocess';
12
12
  import type { ResolvedConfig } from '../config.js';
13
- import { type ActionOutcome, type AppInfo, type ClickRequest, type DesktopBackend, type KeyRequest, type LaunchOutcome, type Screenshot, type ScrollRequest, type Tree, type WindowInfo, type WindowRef, type WindowSnapshot, type TypeRequest } from './types.js';
13
+ import { type ActionOutcome, type AppInfo, type ClickRequest, type DesktopBackend, type KeyRequest, type LaunchOutcome, type Screenshot, type ScreenScope, type ScrollRequest, type Tree, type WindowInfo, type WindowRef, type WindowSnapshot, type TypeRequest } from './types.js';
14
14
  /** The Windows helper backend over `ctx.subprocess`. */
15
15
  export declare class HelperBackend implements DesktopBackend {
16
16
  private readonly config;
@@ -27,7 +27,7 @@ export declare class HelperBackend implements DesktopBackend {
27
27
  /** Resolve (and cache) the powershell executable through the subprocess seam. */
28
28
  private resolvePowershell;
29
29
  listWindows(signal?: AbortSignal): Promise<WindowInfo[]>;
30
- shot(ref: WindowRef, maxSide: number, signal?: AbortSignal): Promise<Screenshot>;
30
+ shot(ref: WindowRef, maxSide: number, scope: ScreenScope, signal?: AbortSignal): Promise<Screenshot>;
31
31
  tree(ref: WindowRef, maxElements: number, maxDepth: number, includePixels: boolean, signal?: AbortSignal): Promise<Tree>;
32
32
  snapshot(windowId: number, signal?: AbortSignal): Promise<WindowSnapshot>;
33
33
  click(request: ClickRequest, focusFallback: boolean, signal?: AbortSignal): Promise<ActionOutcome>;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/platform/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,cAAc,EAInB,KAAK,UAAU,EACf,KAAK,aAAa,EAGlB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAA;AA6HnB,wDAAwD;AACxD,qBAAa,aAAc,YAAW,cAAc;IAShD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAT7B,gEAAgE;IAChE,OAAO,CAAC,UAAU,CAA6B;IAE/C,QAAQ,CAAC,SAAS,QAAO;IAEzB,mEAAmE;IACnE,uEAAuE;gBAEpD,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,iBAAiB;IAGhD,QAAQ,CAAC,QAAQ,WAAU;IAE3B,wEAAwE;YAC1D,MAAM;IAsDpB,iFAAiF;IACjF,OAAO,CAAC,iBAAiB;IAanB,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAMxD,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBhF,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAexH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IASzE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKlG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKhG,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKpG,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAK9F,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAoB9C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAYlG"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/platform/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,OAAO,EAGZ,KAAK,YAAY,EACjB,KAAK,cAAc,EAInB,KAAK,UAAU,EACf,KAAK,aAAa,EAGlB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAA;AAuJnB,wDAAwD;AACxD,qBAAa,aAAc,YAAW,cAAc;IAShD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAT7B,gEAAgE;IAChE,OAAO,CAAC,UAAU,CAA6B;IAE/C,QAAQ,CAAC,SAAS,QAAO;IAEzB,mEAAmE;IACnE,uEAAuE;gBAEpD,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,iBAAiB;IAGhD,QAAQ,CAAC,QAAQ,WAAU;IAE3B,wEAAwE;YAC1D,MAAM;IAsDpB,iFAAiF;IACjF,OAAO,CAAC,iBAAiB;IAanB,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAMxD,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBpG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAexH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IASzE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKlG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKhG,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKpG,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAK9F,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAoB9C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAYlG"}
@@ -24,6 +24,20 @@ export interface WindowRef {
24
24
  /** Owning process id. */
25
25
  processId?: number;
26
26
  }
27
+ /** Which screen region a target-less capture covers. */
28
+ export type ScreenScope = 'primary' | 'virtual';
29
+ /** What a capture actually covered: one window, the primary screen, or the virtual desktop. */
30
+ export type CaptureScope = 'window' | ScreenScope;
31
+ /**
32
+ * Which helper path produced the pixels.
33
+ *
34
+ * `printwindow-fullcontent` is `PrintWindow(hwnd, hdc, PW_RENDERFULLCONTENT)`:
35
+ * the window paints itself, so the image does not depend on what is stacked on
36
+ * top of it. `printwindow` is the legacy flag-0 call (some old windows only
37
+ * paint through it). `copyfromscreen` is the last-resort screen-region copy and
38
+ * is only correct while the window is unobscured.
39
+ */
40
+ export type CaptureMethod = 'printwindow-fullcontent' | 'printwindow' | 'copyfromscreen';
27
41
  /** Screen-space rectangle, integer pixel coordinates. */
28
42
  export interface Rect {
29
43
  x: number;
@@ -37,7 +51,14 @@ export interface WindowInfo {
37
51
  processId: number | null;
38
52
  title: string;
39
53
  className: string;
40
- rect: Rect;
54
+ /**
55
+ * Physical screen rectangle, or `null` for a minimized window: Windows reports
56
+ * the `CW_USEDEFAULT` placeholder (`-32000,-32000 314x50`) while iconified,
57
+ * which must never reach coordinate math.
58
+ */
59
+ rect: Rect | null;
60
+ /** True while the window is iconified (`IsIconic`); such a window cannot be captured. */
61
+ minimized: boolean;
41
62
  executablePath: string | null;
42
63
  visible: boolean;
43
64
  }
@@ -90,8 +111,18 @@ export interface WindowSnapshot {
90
111
  export interface Screenshot {
91
112
  /** PNG bytes, base64-encoded. */
92
113
  pngBase64: string;
114
+ /**
115
+ * Bitmap width after the `maxSide` downscale. This is NOT the window width:
116
+ * `snapshot.rect` always carries the physical window/screen rectangle, so a
117
+ * screen-to-bitmap mapping is `bitmapX = (screenX - rect.x) * width / rect.width`.
118
+ */
93
119
  width: number;
120
+ /** Bitmap height after the `maxSide` downscale (see {@link width}). */
94
121
  height: number;
122
+ /** Which capture path produced the pixels. */
123
+ captureMethod: CaptureMethod;
124
+ /** What was captured. `virtual` is experimental (multi-monitor geometry untested). */
125
+ scope: CaptureScope;
95
126
  snapshot: WindowSnapshot;
96
127
  }
97
128
  /** An accessibility tree read plus pixel hints. */
@@ -169,8 +200,12 @@ export interface DesktopBackend {
169
200
  readonly unavailableReason?: string;
170
201
  /** List every visible top-level window across running applications. */
171
202
  listWindows(signal?: AbortSignal): Promise<WindowInfo[]>;
172
- /** Capture a screenshot of the addressed window (or the primary screen). */
173
- shot(ref: WindowRef, maxSide: number, signal?: AbortSignal): Promise<Screenshot>;
203
+ /**
204
+ * Capture a screenshot of the addressed window, or of a screen region when
205
+ * the ref names no window (the helper never substitutes the foreground
206
+ * window here; the primary screen is the target-less default).
207
+ */
208
+ shot(ref: WindowRef, maxSide: number, scope: ScreenScope, signal?: AbortSignal): Promise<Screenshot>;
174
209
  /** Read the accessibility tree plus pixel hints of the addressed window. */
175
210
  tree(ref: WindowRef, maxElements: number, maxDepth: number, includePixels: boolean, signal?: AbortSignal): Promise<Tree>;
176
211
  /** Re-capture fresh identity + hashes for one window (the stale check). */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/platform/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/platform/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAG/C,OAAO,EAA0B,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC1G,OAAO,KAAK,EAAE,cAAc,EAA0B,IAAI,EAAyC,MAAM,qBAAqB,CAAA;AAE9H,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;IACrB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAA;IACvC,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAA;CAC5C;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;CACpB;AAyFD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,mDAoIpD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,mDA+IpD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,mDAsJpD;AAiED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,YAAY,mDAoD/C;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,mDAyC9C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,YAAY,mDA0ChD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,YAAY,mDAkC7C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,mDA+EjD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,mDAwCnD;AAED,oDAAoD;AACpD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,qDAY9C"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAG/C,OAAO,EAA0B,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC1G,OAAO,KAAK,EAAE,cAAc,EAA0B,IAAI,EAAyC,MAAM,qBAAqB,CAAA;AAE9H,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;IACrB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAA;IACvC,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAA;CAC5C;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;CACpB;AA0FD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,mDAiJpD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,mDA+IpD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,mDAsJpD;AAiED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,YAAY,mDAoD/C;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,mDAyC9C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,YAAY,mDA0ChD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,YAAY,mDAkC7C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,mDAuFjD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,mDAwCnD;AAED,oDAAoD;AACpD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,qDAY9C"}
@@ -7,7 +7,7 @@
7
7
  * @module dsh-click/version
8
8
  */
9
9
  /** Plugin version advertised in the helper-protocol handshake. */
10
- export declare const VERSION = "0.3.27";
10
+ export declare const VERSION = "0.3.29";
11
11
  /** The helper protocol revision; bump only on incompatible wire changes. */
12
12
  export declare const HELPER_PROTOCOL_VERSION = 1;
13
13
  //# sourceMappingURL=version.d.ts.map