@remcp/runtime 0.2.132 → 0.2.133
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/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/src/extended/desktop.mjs +21 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.133 — 2026-10-02
|
|
4
|
+
|
|
5
|
+
- Explicit `computer_action type target=window` now keeps top-level window selectors separate from semantic element selectors; `window_id` is never rewritten into the UI-element `id` before `type_text`.
|
|
6
|
+
- Auto window fallback uses the same sanitized window-only selector shape, preventing stale UI/browser selectors from hijacking window-scoped text entry.
|
|
7
|
+
- Live GNOME/AT-SPI Zenity validation returned the exact Unicode payload after the accessibility edit path. Runtime tool names and schemas are unchanged from 0.2.132.
|
|
8
|
+
|
|
3
9
|
## 0.2.132 — 2026-10-02
|
|
4
10
|
|
|
5
11
|
- `computer_action` now exposes `type`, `scroll`, `drag`, and `target=window` in its MCP schema while keeping specialist tools available when the backend is already known.
|
package/package.json
CHANGED
package/src/extended/desktop.mjs
CHANGED
|
@@ -1291,6 +1291,24 @@ function browserComputerAction(args, action) {
|
|
|
1291
1291
|
});
|
|
1292
1292
|
}
|
|
1293
1293
|
|
|
1294
|
+
export function computerActionWindowTextArgs(args = {}) {
|
|
1295
|
+
const {
|
|
1296
|
+
id: _id,
|
|
1297
|
+
label: _label,
|
|
1298
|
+
name: _name,
|
|
1299
|
+
role: _role,
|
|
1300
|
+
automation_id: _automationId,
|
|
1301
|
+
automationId: _automationIdAlias,
|
|
1302
|
+
selector: _selector,
|
|
1303
|
+
browser_text: _browserText,
|
|
1304
|
+
...windowArgs
|
|
1305
|
+
} = args;
|
|
1306
|
+
return {
|
|
1307
|
+
...windowArgs,
|
|
1308
|
+
...(args.window_title && !args.title ? { title:args.window_title } : {}),
|
|
1309
|
+
};
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1294
1312
|
export async function computerAction(args = {}) {
|
|
1295
1313
|
const legacy = ['ui','pointer','window','type','keyboard','scroll','drag','clipboard','launch_app','open_path','reveal_path','notification'];
|
|
1296
1314
|
const universal = [
|
|
@@ -1376,13 +1394,14 @@ export async function computerAction(args = {}) {
|
|
|
1376
1394
|
...(args.window_id ? { id:args.window_id } : {}),
|
|
1377
1395
|
...(args.window_title && !args.title ? { title:args.window_title } : {}),
|
|
1378
1396
|
});
|
|
1397
|
+
const windowTextTarget = () => computerActionWindowTextArgs(args);
|
|
1379
1398
|
|
|
1380
1399
|
if (action === 'type') {
|
|
1381
1400
|
if (target === 'browser') return browserComputerAction(args, 'type');
|
|
1382
1401
|
if (target === 'ocr' || target === 'coordinates') {
|
|
1383
1402
|
throw new Error('computer_action type requires a native UI, browser, or window target');
|
|
1384
1403
|
}
|
|
1385
|
-
if (target === 'window') return typeText(
|
|
1404
|
+
if (target === 'window') return typeText(windowTextTarget());
|
|
1386
1405
|
if (!automatic) return typeText({ ...args, method:args.method || 'accessibility' });
|
|
1387
1406
|
|
|
1388
1407
|
const failures = [];
|
|
@@ -1399,7 +1418,7 @@ export async function computerAction(args = {}) {
|
|
|
1399
1418
|
}
|
|
1400
1419
|
}
|
|
1401
1420
|
if (args.window_id || args.pid != null || args.app || args.window_title || args.title) {
|
|
1402
|
-
try { return await typeText(
|
|
1421
|
+
try { return await typeText(windowTextTarget()); }
|
|
1403
1422
|
catch (error) { failures.push(`window: ${String(error?.message || error).slice(0, 300)}`); }
|
|
1404
1423
|
}
|
|
1405
1424
|
if (failures.length) throw new Error(`computer_action type targeting failed: ${failures.join('; ')}`);
|