@ai-matrx/desktop-protocol 0.14.0 → 0.16.0

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.cjs CHANGED
@@ -52,6 +52,17 @@ __export(src_exports, {
52
52
  ClipboardWriteResult: () => ClipboardWriteResult,
53
53
  CloseCode: () => CloseCode,
54
54
  CloseCodeValue: () => CloseCodeValue,
55
+ CodingHistoryBlocked: () => CodingHistoryBlocked,
56
+ CodingHistoryFailure: () => CodingHistoryFailure,
57
+ CodingHistoryImportMissingParams: () => CodingHistoryImportMissingParams,
58
+ CodingHistoryImportMissingResult: () => CodingHistoryImportMissingResult,
59
+ CodingHistoryProgressEvent: () => CodingHistoryProgressEvent,
60
+ CodingHistoryRun: () => CodingHistoryRun,
61
+ CodingHistoryStep: () => CodingHistoryStep,
62
+ CodingImportNextParams: () => CodingImportNextParams,
63
+ CodingPlanMissingParams: () => CodingPlanMissingParams,
64
+ CodingServiceCredentials: () => CodingServiceCredentials,
65
+ CodingServiceProgress: () => CodingServiceProgress,
55
66
  ContractHash: () => ContractHash,
56
67
  CoreToClientMsg: () => CoreToClientMsg,
57
68
  CoreToServiceMsg: () => CoreToServiceMsg,
@@ -71,6 +82,16 @@ __export(src_exports, {
71
82
  EventMsg: () => EventMsg,
72
83
  ExecCwdEvent: () => ExecCwdEvent,
73
84
  ExecExitedEvent: () => ExecExitedEvent,
85
+ ExecJobId: () => ExecJobId,
86
+ ExecJobInfo: () => ExecJobInfo,
87
+ ExecJobListParams: () => ExecJobListParams,
88
+ ExecJobListResult: () => ExecJobListResult,
89
+ ExecJobOutputParams: () => ExecJobOutputParams,
90
+ ExecJobOutputResult: () => ExecJobOutputResult,
91
+ ExecJobStartParams: () => ExecJobStartParams,
92
+ ExecJobStartResult: () => ExecJobStartResult,
93
+ ExecJobStopParams: () => ExecJobStopParams,
94
+ ExecJobStopResult: () => ExecJobStopResult,
74
95
  ExecListParams: () => ExecListParams,
75
96
  ExecListResult: () => ExecListResult,
76
97
  ExecPtyKillParams: () => ExecPtyKillParams,
@@ -120,11 +141,28 @@ __export(src_exports, {
120
141
  FsSearchPathsResult: () => FsSearchPathsResult,
121
142
  FsStatParams: () => FsStatParams,
122
143
  FsStatResult: () => FsStatResult,
144
+ FsWatchEventsParams: () => FsWatchEventsParams,
145
+ FsWatchEventsResult: () => FsWatchEventsResult,
146
+ FsWatchId: () => FsWatchId,
123
147
  FsWatchParams: () => FsWatchParams,
124
148
  FsWatchResult: () => FsWatchResult,
149
+ FsWatchStartParams: () => FsWatchStartParams,
150
+ FsWatchStartResult: () => FsWatchStartResult,
151
+ FsWatchStopParams: () => FsWatchStopParams,
152
+ FsWatchStopResult: () => FsWatchStopResult,
125
153
  FsWriteParams: () => FsWriteParams,
126
154
  FsWriteResult: () => FsWriteResult,
127
155
  HelloMsg: () => HelloMsg,
156
+ InputHotkeyParams: () => InputHotkeyParams,
157
+ InputHotkeyResult: () => InputHotkeyResult,
158
+ InputKey: () => InputKey,
159
+ InputMouseClickParams: () => InputMouseClickParams,
160
+ InputMouseClickResult: () => InputMouseClickResult,
161
+ InputMouseMoveParams: () => InputMouseMoveParams,
162
+ InputMouseMoveResult: () => InputMouseMoveResult,
163
+ InputPoint: () => InputPoint,
164
+ InputTypeTextParams: () => InputTypeTextParams,
165
+ InputTypeTextResult: () => InputTypeTextResult,
128
166
  LEGACY_ACTIONS: () => LEGACY_ACTIONS,
129
167
  LEGACY_DISPATCHERS: () => LEGACY_DISPATCHERS,
130
168
  Limits: () => Limits,
@@ -153,6 +191,10 @@ __export(src_exports, {
153
191
  PROTOCOL_MAJOR: () => PROTOCOL_MAJOR,
154
192
  PROTOCOL_MINOR: () => PROTOCOL_MINOR,
155
193
  PROTOCOL_VERSION: () => PROTOCOL_VERSION,
194
+ PowerPreventSleepParams: () => PowerPreventSleepParams,
195
+ PowerPreventSleepResult: () => PowerPreventSleepResult,
196
+ PowerStatusParams: () => PowerStatusParams,
197
+ PowerStatusResult: () => PowerStatusResult,
156
198
  ProcInfo: () => ProcInfo,
157
199
  ProcKillParams: () => ProcKillParams,
158
200
  ProcKillResult: () => ProcKillResult,
@@ -183,10 +225,18 @@ __export(src_exports, {
183
225
  RequestMsg: () => RequestMsg,
184
226
  ResourceId: () => ResourceId,
185
227
  ResourceInfo: () => ResourceInfo,
228
+ ResourcesDisk: () => ResourcesDisk,
229
+ ResourcesSnapshotParams: () => ResourcesSnapshotParams,
230
+ ResourcesSnapshotResult: () => ResourcesSnapshotResult,
186
231
  ResponseMsg: () => ResponseMsg,
187
232
  SERVICES: () => SERVICES,
188
233
  SERVICE_MAX_FRAME_BYTES: () => SERVICE_MAX_FRAME_BYTES,
189
234
  SUBPROTOCOL: () => SUBPROTOCOL,
235
+ ScreenCaptureParams: () => ScreenCaptureParams,
236
+ ScreenCaptureResult: () => ScreenCaptureResult,
237
+ ScreenDisplay: () => ScreenDisplay,
238
+ ScreenListParams: () => ScreenListParams,
239
+ ScreenListResult: () => ScreenListResult,
190
240
  ServiceCancel: () => ServiceCancel,
191
241
  ServiceErrorMsg: () => ServiceErrorMsg,
192
242
  ServiceHello: () => ServiceHello,
@@ -214,6 +264,12 @@ __export(src_exports, {
214
264
  StreamMsg: () => StreamMsg,
215
265
  SysinfoGetParams: () => SysinfoGetParams,
216
266
  SysinfoGetResult: () => SysinfoGetResult,
267
+ SystemNotifyParams: () => SystemNotifyParams,
268
+ SystemNotifyResult: () => SystemNotifyResult,
269
+ SystemOpenPathParams: () => SystemOpenPathParams,
270
+ SystemOpenPathResult: () => SystemOpenPathResult,
271
+ SystemOpenUrlParams: () => SystemOpenUrlParams,
272
+ SystemOpenUrlResult: () => SystemOpenUrlResult,
217
273
  TOOL_CATALOG: () => TOOL_CATALOG,
218
274
  TOOL_GROUPS: () => TOOL_GROUPS,
219
275
  TOOL_LEVELS: () => TOOL_LEVELS,
@@ -230,6 +286,15 @@ __export(src_exports, {
230
286
  TranscriptionModelInfo: () => TranscriptionModelInfo,
231
287
  VERSIONED_RESULT_OPS: () => VERSIONED_RESULT_OPS,
232
288
  Welcome: () => Welcome,
289
+ WindowFocusParams: () => WindowFocusParams,
290
+ WindowFocusResult: () => WindowFocusResult,
291
+ WindowInfo: () => WindowInfo,
292
+ WindowListParams: () => WindowListParams,
293
+ WindowListResult: () => WindowListResult,
294
+ WindowMinimizeParams: () => WindowMinimizeParams,
295
+ WindowMinimizeResult: () => WindowMinimizeResult,
296
+ WindowMoveParams: () => WindowMoveParams,
297
+ WindowMoveResult: () => WindowMoveResult,
233
298
  announcedVersion: () => announcedVersion,
234
299
  assertFrameHeader: () => assertFrameHeader,
235
300
  buildToolStatus: () => buildToolStatus,
@@ -260,7 +325,7 @@ module.exports = __toCommonJS(src_exports);
260
325
  // src/schema/primitives.ts
261
326
  var import_zod = require("zod");
262
327
  var PROTOCOL_MAJOR = 1;
263
- var PROTOCOL_MINOR = 3;
328
+ var PROTOCOL_MINOR = 5;
264
329
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
265
330
  var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
266
331
  var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -1136,7 +1201,7 @@ var AppsOpenResult = import_zod11.z.strictObject({
1136
1201
  // src/schema/service.ts
1137
1202
  var import_zod12 = require("zod");
1138
1203
  var SERVICE_MAX_FRAME_BYTES = 16777216;
1139
- var ServiceName = import_zod12.z.enum(["ml"]);
1204
+ var ServiceName = import_zod12.z.enum(["ml", "coding"]);
1140
1205
  var ContractHash = import_zod12.z.string().regex(/^[0-9a-f]{64}$/);
1141
1206
  var ServiceToken = import_zod12.z.string().regex(/^[A-Za-z0-9_-]{43}$/);
1142
1207
  var ServiceRequestId = u32;
@@ -1271,6 +1336,416 @@ var ClipboardReadResult = import_zod15.z.strictObject({
1271
1336
  var ClipboardWriteParams = import_zod15.z.strictObject({ text: import_zod15.z.string().max(1048576) });
1272
1337
  var ClipboardWriteResult = import_zod15.z.strictObject({ bytes: nonNegInt });
1273
1338
 
1339
+ // src/schema/system.ts
1340
+ var import_zod16 = require("zod");
1341
+ var SystemOpenUrlParams = import_zod16.z.strictObject({
1342
+ /** http, https or mailto; opened in the person's default app for it. */
1343
+ url: import_zod16.z.string().min(1).max(4096)
1344
+ });
1345
+ var SystemOpenUrlResult = import_zod16.z.strictObject({ url: import_zod16.z.string().max(4096) });
1346
+ var SystemOpenPathParams = import_zod16.z.strictObject({
1347
+ path: AbsPath,
1348
+ /** Show it in the file manager (Finder, Explorer) instead of opening it. */
1349
+ reveal: import_zod16.z.boolean().default(false)
1350
+ });
1351
+ var SystemOpenPathResult = import_zod16.z.strictObject({ path: AbsPath, revealed: import_zod16.z.boolean() });
1352
+ var SystemNotifyParams = import_zod16.z.strictObject({
1353
+ title: import_zod16.z.string().min(1).max(128),
1354
+ body: import_zod16.z.string().max(1024).default("")
1355
+ });
1356
+ var SystemNotifyResult = import_zod16.z.strictObject({
1357
+ /** False when this computer has no notification service to show it (a bare Linux box). */
1358
+ shown: import_zod16.z.boolean()
1359
+ });
1360
+
1361
+ // src/schema/screen.ts
1362
+ var import_zod17 = require("zod");
1363
+ var ScreenDisplay = import_zod17.z.strictObject({
1364
+ /** The OS's display id; pass it to screen.capture. */
1365
+ id: nonNegInt,
1366
+ name: import_zod17.z.string().max(128),
1367
+ /** Position and size in the OS's logical points (x and y may be negative left of or above the main display). */
1368
+ x: import_zod17.z.int(),
1369
+ y: import_zod17.z.int(),
1370
+ width: import_zod17.z.int().min(1),
1371
+ height: import_zod17.z.int().min(1),
1372
+ /** Pixels per point (2 on a Retina display). */
1373
+ scale: import_zod17.z.number().min(0.1).max(8),
1374
+ primary: import_zod17.z.boolean()
1375
+ });
1376
+ var ScreenListParams = import_zod17.z.strictObject({});
1377
+ var ScreenListResult = import_zod17.z.strictObject({ displays: import_zod17.z.array(ScreenDisplay).max(32) });
1378
+ var ScreenCaptureParams = import_zod17.z.strictObject({
1379
+ /** The display (from screen.list); the primary display when absent. */
1380
+ display_id: nonNegInt.optional(),
1381
+ format: import_zod17.z.enum(["jpeg", "png"]).default("jpeg"),
1382
+ /** Scale the picture down to at most this width in pixels (kept when already smaller). */
1383
+ max_width: import_zod17.z.int().min(160).max(7680).default(1600)
1384
+ });
1385
+ var ScreenCaptureResult = import_zod17.z.strictObject({
1386
+ display_id: nonNegInt,
1387
+ mime_type: import_zod17.z.enum(["image/jpeg", "image/png"]),
1388
+ width: import_zod17.z.int().min(1),
1389
+ height: import_zod17.z.int().min(1),
1390
+ /** The display's full resolution in pixels, before scaling. */
1391
+ source_width: import_zod17.z.int().min(1),
1392
+ source_height: import_zod17.z.int().min(1),
1393
+ /** The image, base64 (at most 6 MiB of text). */
1394
+ data_base64: import_zod17.z.string().max(6291456)
1395
+ });
1396
+
1397
+ // src/schema/window.ts
1398
+ var import_zod18 = require("zod");
1399
+ var WindowInfo = import_zod18.z.strictObject({
1400
+ /** The OS's window handle (macOS window number, Windows HWND, X11 window id). */
1401
+ id: nonNegInt,
1402
+ title: import_zod18.z.string().max(512),
1403
+ /** Position and size in logical points. */
1404
+ x: import_zod18.z.int(),
1405
+ y: import_zod18.z.int(),
1406
+ width: import_zod18.z.int().min(0),
1407
+ height: import_zod18.z.int().min(0)
1408
+ });
1409
+ var WindowListParams = import_zod18.z.strictObject({
1410
+ /** Case-insensitive substring of the window title. */
1411
+ title: import_zod18.z.string().min(1).max(256).optional(),
1412
+ limit: import_zod18.z.int().min(1).max(500).default(100)
1413
+ });
1414
+ var WindowListResult = import_zod18.z.strictObject({
1415
+ windows: import_zod18.z.array(WindowInfo).max(500),
1416
+ total: nonNegInt,
1417
+ truncated: import_zod18.z.boolean()
1418
+ });
1419
+ var WindowFocusParams = import_zod18.z.strictObject({ id: nonNegInt });
1420
+ var WindowFocusResult = import_zod18.z.strictObject({ window: WindowInfo });
1421
+ var WindowMoveParams = import_zod18.z.strictObject({
1422
+ id: nonNegInt,
1423
+ /** New top-left corner; unchanged when absent. */
1424
+ x: import_zod18.z.int().optional(),
1425
+ y: import_zod18.z.int().optional(),
1426
+ /** New size; unchanged when absent. */
1427
+ width: import_zod18.z.int().min(50).max(16384).optional(),
1428
+ height: import_zod18.z.int().min(50).max(16384).optional()
1429
+ });
1430
+ var WindowMoveResult = import_zod18.z.strictObject({ window: WindowInfo });
1431
+ var WindowMinimizeParams = import_zod18.z.strictObject({ id: nonNegInt });
1432
+ var WindowMinimizeResult = import_zod18.z.strictObject({ id: nonNegInt });
1433
+
1434
+ // src/schema/input.ts
1435
+ var import_zod19 = require("zod");
1436
+ var InputKey = import_zod19.z.enum([
1437
+ "cmd",
1438
+ "ctrl",
1439
+ "alt",
1440
+ "shift",
1441
+ "meta",
1442
+ "a",
1443
+ "b",
1444
+ "c",
1445
+ "d",
1446
+ "e",
1447
+ "f",
1448
+ "g",
1449
+ "h",
1450
+ "i",
1451
+ "j",
1452
+ "k",
1453
+ "l",
1454
+ "m",
1455
+ "n",
1456
+ "o",
1457
+ "p",
1458
+ "q",
1459
+ "r",
1460
+ "s",
1461
+ "t",
1462
+ "u",
1463
+ "v",
1464
+ "w",
1465
+ "x",
1466
+ "y",
1467
+ "z",
1468
+ "0",
1469
+ "1",
1470
+ "2",
1471
+ "3",
1472
+ "4",
1473
+ "5",
1474
+ "6",
1475
+ "7",
1476
+ "8",
1477
+ "9",
1478
+ "f1",
1479
+ "f2",
1480
+ "f3",
1481
+ "f4",
1482
+ "f5",
1483
+ "f6",
1484
+ "f7",
1485
+ "f8",
1486
+ "f9",
1487
+ "f10",
1488
+ "f11",
1489
+ "f12",
1490
+ "enter",
1491
+ "tab",
1492
+ "escape",
1493
+ "space",
1494
+ "backspace",
1495
+ "delete",
1496
+ "up",
1497
+ "down",
1498
+ "left",
1499
+ "right",
1500
+ "home",
1501
+ "end",
1502
+ "pageup",
1503
+ "pagedown",
1504
+ "minus",
1505
+ "equal",
1506
+ "comma",
1507
+ "period",
1508
+ "slash",
1509
+ "semicolon",
1510
+ "quote",
1511
+ "bracketleft",
1512
+ "bracketright",
1513
+ "backslash",
1514
+ "grave"
1515
+ ]);
1516
+ var InputTypeTextParams = import_zod19.z.strictObject({ text: import_zod19.z.string().min(1).max(1e4) });
1517
+ var InputTypeTextResult = import_zod19.z.strictObject({ characters: import_zod19.z.int().min(1) });
1518
+ var InputHotkeyParams = import_zod19.z.strictObject({
1519
+ /** Pressed together in order and released in reverse: ["cmd", "shift", "t"]. */
1520
+ keys: import_zod19.z.array(InputKey).min(1).max(6)
1521
+ });
1522
+ var InputHotkeyResult = import_zod19.z.strictObject({ keys: import_zod19.z.array(InputKey) });
1523
+ var InputPoint = import_zod19.z.strictObject({ x: import_zod19.z.int(), y: import_zod19.z.int() });
1524
+ var InputMouseMoveParams = import_zod19.z.strictObject({
1525
+ /** Screen position in logical points (the coordinates screen.list and window.list report). */
1526
+ x: import_zod19.z.int(),
1527
+ y: import_zod19.z.int()
1528
+ });
1529
+ var InputMouseMoveResult = import_zod19.z.strictObject({
1530
+ /** Where the pointer is now, read back from the OS. */
1531
+ position: InputPoint
1532
+ });
1533
+ var InputMouseClickParams = import_zod19.z.strictObject({
1534
+ /** Move here first; clicks where the pointer is when absent. */
1535
+ x: import_zod19.z.int().optional(),
1536
+ y: import_zod19.z.int().optional(),
1537
+ button: import_zod19.z.enum(["left", "right", "middle"]).default("left"),
1538
+ double: import_zod19.z.boolean().default(false)
1539
+ });
1540
+ var InputMouseClickResult = import_zod19.z.strictObject({
1541
+ position: InputPoint,
1542
+ button: import_zod19.z.enum(["left", "right", "middle"]),
1543
+ double: import_zod19.z.boolean()
1544
+ });
1545
+
1546
+ // src/schema/power.ts
1547
+ var import_zod20 = require("zod");
1548
+ var PowerStatusParams = import_zod20.z.strictObject({});
1549
+ var PowerStatusResult = import_zod20.z.strictObject({
1550
+ has_battery: import_zod20.z.boolean(),
1551
+ /** 0–100; null without a battery. */
1552
+ percent: import_zod20.z.number().min(0).max(100).nullable(),
1553
+ charging: import_zod20.z.boolean().nullable(),
1554
+ /** On wall power; null where the OS does not say. */
1555
+ plugged_in: import_zod20.z.boolean().nullable(),
1556
+ /** Minutes of battery left; null when charging, unknown or without a battery. */
1557
+ minutes_left: nonNegInt.nullable(),
1558
+ /** Matrx 2 is keeping the computer awake (power.prevent_sleep) until this time; null when it is not. */
1559
+ awake_until_ms: epochMs.nullable()
1560
+ });
1561
+ var PowerPreventSleepParams = import_zod20.z.strictObject({
1562
+ /** Keep the computer awake this long; 0 lets it sleep again now. */
1563
+ seconds: import_zod20.z.int().min(0).max(86400),
1564
+ /** Shown where the OS lists what keeps it awake. */
1565
+ reason: import_zod20.z.string().min(1).max(128).default("Matrx 2 is working")
1566
+ });
1567
+ var PowerPreventSleepResult = import_zod20.z.strictObject({
1568
+ /** When it may sleep again; null after seconds 0. */
1569
+ awake_until_ms: epochMs.nullable()
1570
+ });
1571
+
1572
+ // src/schema/resources.ts
1573
+ var import_zod21 = require("zod");
1574
+ var ResourcesDisk = import_zod21.z.strictObject({
1575
+ /** Where it is mounted ("/", "C:"). */
1576
+ mount: import_zod21.z.string().max(512),
1577
+ /** The file system ("apfs", "NTFS", "ext4"). */
1578
+ fs: import_zod21.z.string().max(64),
1579
+ size_bytes: nonNegInt,
1580
+ used_bytes: nonNegInt,
1581
+ available_bytes: nonNegInt
1582
+ });
1583
+ var ResourcesSnapshotParams = import_zod21.z.strictObject({});
1584
+ var ResourcesSnapshotResult = import_zod21.z.strictObject({
1585
+ cpu: import_zod21.z.strictObject({
1586
+ /** Busy share of all cores, 0–100, measured now. */
1587
+ percent: import_zod21.z.number().min(0).max(100),
1588
+ cores: import_zod21.z.int().min(1),
1589
+ /** 1, 5 and 15 minute load averages; null on Windows. */
1590
+ load: import_zod21.z.array(import_zod21.z.number().min(0)).length(3).nullable()
1591
+ }),
1592
+ memory: import_zod21.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
1593
+ swap: import_zod21.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
1594
+ disks: import_zod21.z.array(ResourcesDisk).max(64),
1595
+ uptime_seconds: nonNegInt
1596
+ });
1597
+
1598
+ // src/schema/fs-watch.ts
1599
+ var import_zod22 = require("zod");
1600
+ var FsWatchId = import_zod22.z.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
1601
+ var FsWatchStartParams = import_zod22.z.strictObject({
1602
+ path: AbsPath,
1603
+ recursive: import_zod22.z.boolean().default(true),
1604
+ /** Globs relative to `path` whose changes are not reported (".git/**", "node_modules/**"). */
1605
+ ignore: import_zod22.z.array(import_zod22.z.string().max(256)).max(64).default([])
1606
+ });
1607
+ var FsWatchStartResult = import_zod22.z.strictObject({
1608
+ watch_id: FsWatchId,
1609
+ path: AbsPath,
1610
+ /** The watch ends by itself if nobody reads it for 30 minutes. */
1611
+ expires_at_ms: epochMs
1612
+ });
1613
+ var FsWatchEventsParams = import_zod22.z.strictObject({
1614
+ watch_id: FsWatchId,
1615
+ /** Wait up to this long for a first change when none is waiting (0 answers at once). */
1616
+ wait_ms: import_zod22.z.int().min(0).max(25e3).default(0)
1617
+ });
1618
+ var FsWatchEventsResult = import_zod22.z.strictObject({
1619
+ /** What changed since the last read, oldest first; re-checked against the disk when read. */
1620
+ changes: import_zod22.z.array(FsChange).max(1e3),
1621
+ /** Changes were dropped (more than 1000 waited): list the folder again. */
1622
+ overflow: import_zod22.z.boolean(),
1623
+ expires_at_ms: epochMs
1624
+ });
1625
+ var FsWatchStopParams = import_zod22.z.strictObject({ watch_id: FsWatchId });
1626
+ var FsWatchStopResult = import_zod22.z.strictObject({ watch_id: FsWatchId });
1627
+
1628
+ // src/schema/exec-job.ts
1629
+ var import_zod23 = require("zod");
1630
+ var ExecJobId = import_zod23.z.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
1631
+ var ExecJobStartParams = import_zod23.z.strictObject({
1632
+ command: import_zod23.z.string().min(1).max(131072),
1633
+ /** The folder it runs in; the home folder when absent. */
1634
+ cwd: AbsPath.optional(),
1635
+ env: import_zod23.z.record(import_zod23.z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), import_zod23.z.string().max(32768)).optional()
1636
+ });
1637
+ var ExecJobStartResult = import_zod23.z.strictObject({ job_id: ExecJobId, pid: import_zod23.z.int().min(1), cwd: AbsPath });
1638
+ var ExecJobOutputParams = import_zod23.z.strictObject({
1639
+ job_id: ExecJobId,
1640
+ /** Byte offset into the job's output to read from (next_offset of the last read; 0 = the start). */
1641
+ offset: nonNegInt.default(0),
1642
+ /** Wait up to this long for new output or the exit when none is waiting (0 answers at once). */
1643
+ wait_ms: import_zod23.z.int().min(0).max(25e3).default(0),
1644
+ max_bytes: import_zod23.z.int().min(1024).max(1048576).default(65536)
1645
+ });
1646
+ var ExecJobOutputResult = import_zod23.z.strictObject({
1647
+ /** stdout and stderr interleaved as they arrived (UTF-8). */
1648
+ output: import_zod23.z.string(),
1649
+ next_offset: nonNegInt,
1650
+ /** Bytes before `offset` that are gone (the job keeps its last 4 MiB). */
1651
+ dropped_bytes: nonNegInt,
1652
+ running: import_zod23.z.boolean(),
1653
+ exit_code: import_zod23.z.int().nullable()
1654
+ });
1655
+ var ExecJobStopParams = import_zod23.z.strictObject({
1656
+ job_id: ExecJobId,
1657
+ /** End it at once (SIGKILL; on Windows the whole tree with /F) instead of asking it to quit. */
1658
+ force: import_zod23.z.boolean().default(false)
1659
+ });
1660
+ var ExecJobStopResult = import_zod23.z.strictObject({ job_id: ExecJobId, exited: import_zod23.z.boolean(), exit_code: import_zod23.z.int().nullable() });
1661
+ var ExecJobInfo = import_zod23.z.strictObject({
1662
+ job_id: ExecJobId,
1663
+ command: import_zod23.z.string().max(1024),
1664
+ pid: import_zod23.z.int().min(1),
1665
+ cwd: AbsPath,
1666
+ running: import_zod23.z.boolean(),
1667
+ exit_code: import_zod23.z.int().nullable(),
1668
+ started_at_ms: epochMs,
1669
+ output_bytes: nonNegInt
1670
+ });
1671
+ var ExecJobListParams = import_zod23.z.strictObject({});
1672
+ var ExecJobListResult = import_zod23.z.strictObject({ jobs: import_zod23.z.array(ExecJobInfo).max(64) });
1673
+
1674
+ // src/schema/coding.ts
1675
+ var import_zod24 = require("zod");
1676
+ var CodingServiceCredentials = import_zod24.z.strictObject({
1677
+ access_token: import_zod24.z.string().min(16).max(16384),
1678
+ user_id: import_zod24.z.string().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/),
1679
+ /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
1680
+ server_url: import_zod24.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1681
+ });
1682
+ var CodingHistoryBlocked = import_zod24.z.enum([
1683
+ "signed_out",
1684
+ "offline",
1685
+ "organization_required",
1686
+ "claude_unavailable",
1687
+ "cloud_list_unavailable",
1688
+ "history_too_large"
1689
+ ]);
1690
+ var CodingHistoryFailure = import_zod24.z.strictObject({
1691
+ session_id: import_zod24.z.string().max(64),
1692
+ reason: import_zod24.z.string().max(300)
1693
+ });
1694
+ var CodingHistoryRun = import_zod24.z.strictObject({
1695
+ /** Claude Code sessions found on this computer. */
1696
+ local_sessions: nonNegInt,
1697
+ /** Of those, already complete in AI Matrx. */
1698
+ in_cloud: nonNegInt,
1699
+ /** In AI Matrx under neither of its identities. */
1700
+ missing: nonNegInt,
1701
+ /** In AI Matrx, but changed here after the last turn AI Matrx received (turns the hook lost). */
1702
+ behind: nonNegInt,
1703
+ /** Over the importer's size cap; never imported. */
1704
+ too_large: nonNegInt,
1705
+ imported: nonNegInt,
1706
+ /** Changed while being read; a later run takes them. */
1707
+ changed: nonNegInt,
1708
+ failed: nonNegInt,
1709
+ failures: import_zod24.z.array(CodingHistoryFailure).max(20),
1710
+ /** Candidates not reached yet. */
1711
+ remaining: nonNegInt,
1712
+ /** The one line a person reads, e.g. "Imported 12 of 14 sessions. 140 already in AI Matrx." */
1713
+ summary: import_zod24.z.string().max(400)
1714
+ });
1715
+ var CodingHistoryStep = import_zod24.z.strictObject({
1716
+ /** Null when the run could not start (blocked before a plan existed). */
1717
+ plan_id: import_zod24.z.string().regex(/^[0-9a-f]{32}$/).nullable(),
1718
+ finished: import_zod24.z.boolean(),
1719
+ blocked: CodingHistoryBlocked.nullable(),
1720
+ run: CodingHistoryRun
1721
+ });
1722
+ var CodingPlanMissingParams = import_zod24.z.strictObject({ credentials: CodingServiceCredentials });
1723
+ var CodingImportNextParams = import_zod24.z.strictObject({
1724
+ plan_id: import_zod24.z.string().regex(/^[0-9a-f]{32}$/),
1725
+ credentials: CodingServiceCredentials
1726
+ });
1727
+ var CodingServiceProgress = import_zod24.z.strictObject({
1728
+ phase: import_zod24.z.enum(["checking", "importing"]),
1729
+ done: nonNegInt,
1730
+ total: nonNegInt
1731
+ });
1732
+ var CodingHistoryImportMissingParams = import_zod24.z.strictObject({});
1733
+ var CodingHistoryImportMissingResult = import_zod24.z.strictObject({
1734
+ state: import_zod24.z.enum(["done", "blocked", "cancelled"]),
1735
+ blocked: CodingHistoryBlocked.nullable(),
1736
+ run: CodingHistoryRun,
1737
+ elapsed_ms: nonNegInt
1738
+ });
1739
+ var CodingHistoryProgressEvent = import_zod24.z.strictObject({
1740
+ request_id: RequestId,
1741
+ phase: import_zod24.z.enum(["checking", "importing"]),
1742
+ /** Sessions settled so far, of `total` candidates (0 of 0 while checking). */
1743
+ done: nonNegInt,
1744
+ total: nonNegInt,
1745
+ imported: nonNegInt,
1746
+ failed: nonNegInt
1747
+ });
1748
+
1274
1749
  // src/schema/registry.ts
1275
1750
  var FS_ERR = ["NOT_FOUND", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "RESOURCE_BUSY", "INTERNAL"];
1276
1751
  var OPS = {
@@ -1312,7 +1787,32 @@ var OPS = {
1312
1787
  "proc.ports": { params: ProcPortsParams, result: ProcPortsResult, kind: "unary", since: "1.3", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1313
1788
  "proc.kill": { params: ProcKillParams, result: ProcKillResult, kind: "unary", since: "1.3", errors: ["NOT_FOUND", "AUTH_FORBIDDEN", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "INTERNAL"] },
1314
1789
  "clipboard.read": { params: ClipboardReadParams, result: ClipboardReadResult, kind: "unary", since: "1.3", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
1315
- "clipboard.write": { params: ClipboardWriteParams, result: ClipboardWriteResult, kind: "unary", since: "1.3", errors: ["PLATFORM_UNSUPPORTED", "PAYLOAD_TOO_LARGE", "INTERNAL"] }
1790
+ "clipboard.write": { params: ClipboardWriteParams, result: ClipboardWriteResult, kind: "unary", since: "1.3", errors: ["PLATFORM_UNSUPPORTED", "PAYLOAD_TOO_LARGE", "INTERNAL"] },
1791
+ "fs.watch.start": { params: FsWatchStartParams, result: FsWatchStartResult, kind: "unary", since: "1.4", errors: [...FS_ERR, "RATE_LIMITED"] },
1792
+ "fs.watch.events": { params: FsWatchEventsParams, result: FsWatchEventsResult, kind: "unary", since: "1.4", errors: ["RESOURCE_GONE", "INVALID_PARAMS", "INTERNAL"] },
1793
+ "fs.watch.stop": { params: FsWatchStopParams, result: FsWatchStopResult, kind: "unary", since: "1.4", errors: ["RESOURCE_GONE", "INVALID_PARAMS"] },
1794
+ "exec.job.start": { params: ExecJobStartParams, result: ExecJobStartResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "NOT_FOUND", "RATE_LIMITED", "INTERNAL"] },
1795
+ "exec.job.output": { params: ExecJobOutputParams, result: ExecJobOutputResult, kind: "unary", since: "1.4", errors: ["RESOURCE_GONE", "INVALID_PARAMS"] },
1796
+ "exec.job.stop": { params: ExecJobStopParams, result: ExecJobStopResult, kind: "unary", since: "1.4", errors: ["RESOURCE_GONE", "INVALID_PARAMS", "INTERNAL"] },
1797
+ "exec.job.list": { params: ExecJobListParams, result: ExecJobListResult, kind: "unary", since: "1.4", errors: ["INTERNAL"] },
1798
+ "system.open_url": { params: SystemOpenUrlParams, result: SystemOpenUrlResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1799
+ "system.open_path": { params: SystemOpenPathParams, result: SystemOpenPathResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1800
+ "system.notify": { params: SystemNotifyParams, result: SystemNotifyResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "INTERNAL"] },
1801
+ "screen.list": { params: ScreenListParams, result: ScreenListResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1802
+ "screen.capture": { params: ScreenCaptureParams, result: ScreenCaptureResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "PAYLOAD_TOO_LARGE", "INTERNAL"] },
1803
+ "window.list": { params: WindowListParams, result: WindowListResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1804
+ "window.focus": { params: WindowFocusParams, result: WindowFocusResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1805
+ "window.move": { params: WindowMoveParams, result: WindowMoveResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1806
+ "window.minimize": { params: WindowMinimizeParams, result: WindowMinimizeResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1807
+ "input.type_text": { params: InputTypeTextParams, result: InputTypeTextResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1808
+ "input.hotkey": { params: InputHotkeyParams, result: InputHotkeyResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1809
+ "input.mouse_move": { params: InputMouseMoveParams, result: InputMouseMoveResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1810
+ "input.mouse_click": { params: InputMouseClickParams, result: InputMouseClickResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1811
+ "power.status": { params: PowerStatusParams, result: PowerStatusResult, kind: "unary", since: "1.4", errors: ["INTERNAL"] },
1812
+ "power.prevent_sleep": { params: PowerPreventSleepParams, result: PowerPreventSleepResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1813
+ "resources.snapshot": { params: ResourcesSnapshotParams, result: ResourcesSnapshotResult, kind: "unary", since: "1.4", errors: ["INTERNAL"] },
1814
+ // Claude Code history (SPEC §6 coding): served by the `coding` Python service through SERVICES below.
1815
+ "coding.history.import_missing": { params: CodingHistoryImportMissingParams, result: CodingHistoryImportMissingResult, kind: "unary", since: "1.5", errors: ["RESOURCE_BUSY", "RESOURCE_GONE", "CANCELLED", "INTERNAL"] }
1316
1816
  };
1317
1817
  var EVENTS = {
1318
1818
  "fs.changed": FsChangedEvent,
@@ -1321,6 +1821,7 @@ var EVENTS = {
1321
1821
  "exec.cwd": ExecCwdEvent,
1322
1822
  "session.control_changed": SessionControlChangedEvent,
1323
1823
  "models.progress": ModelsProgressEvent,
1824
+ "coding.history.progress": CodingHistoryProgressEvent,
1324
1825
  "relay.device_status": RelayDeviceStatusEvent,
1325
1826
  "relay.auth_expiring": RelayAuthExpiringEvent
1326
1827
  };
@@ -1332,6 +1833,13 @@ var SERVICES = {
1332
1833
  "ml.install": { params: ModelsInstallParams, result: ModelsInstallResult },
1333
1834
  "ml.transcribe": { params: ModelsTranscribeParams, result: ModelsTranscribeResult }
1334
1835
  }
1836
+ },
1837
+ coding: {
1838
+ progress: CodingServiceProgress,
1839
+ ops: {
1840
+ "coding.plan_missing": { params: CodingPlanMissingParams, result: CodingHistoryStep },
1841
+ "coding.import_next": { params: CodingImportNextParams, result: CodingHistoryStep }
1842
+ }
1335
1843
  }
1336
1844
  };
1337
1845
  var NAMED_SCHEMAS = {
@@ -1440,6 +1948,17 @@ var NAMED_SCHEMAS = {
1440
1948
  ModelsStatusParams,
1441
1949
  ModelsStatusResult,
1442
1950
  ModelsProgressEvent,
1951
+ CodingServiceCredentials,
1952
+ CodingHistoryBlocked,
1953
+ CodingHistoryFailure,
1954
+ CodingHistoryRun,
1955
+ CodingHistoryStep,
1956
+ CodingPlanMissingParams,
1957
+ CodingImportNextParams,
1958
+ CodingServiceProgress,
1959
+ CodingHistoryImportMissingParams,
1960
+ CodingHistoryImportMissingResult,
1961
+ CodingHistoryProgressEvent,
1443
1962
  ServiceName,
1444
1963
  ContractHash,
1445
1964
  ServiceToken,
@@ -1477,6 +1996,60 @@ var NAMED_SCHEMAS = {
1477
1996
  ClipboardReadResult,
1478
1997
  ClipboardWriteParams,
1479
1998
  ClipboardWriteResult,
1999
+ SystemOpenUrlParams,
2000
+ SystemOpenUrlResult,
2001
+ SystemOpenPathParams,
2002
+ SystemOpenPathResult,
2003
+ SystemNotifyParams,
2004
+ SystemNotifyResult,
2005
+ ScreenDisplay,
2006
+ ScreenListParams,
2007
+ ScreenListResult,
2008
+ ScreenCaptureParams,
2009
+ ScreenCaptureResult,
2010
+ WindowInfo,
2011
+ WindowListParams,
2012
+ WindowListResult,
2013
+ WindowFocusParams,
2014
+ WindowFocusResult,
2015
+ WindowMoveParams,
2016
+ WindowMoveResult,
2017
+ WindowMinimizeParams,
2018
+ WindowMinimizeResult,
2019
+ InputKey,
2020
+ InputPoint,
2021
+ InputTypeTextParams,
2022
+ InputTypeTextResult,
2023
+ InputHotkeyParams,
2024
+ InputHotkeyResult,
2025
+ InputMouseMoveParams,
2026
+ InputMouseMoveResult,
2027
+ InputMouseClickParams,
2028
+ InputMouseClickResult,
2029
+ PowerStatusParams,
2030
+ PowerStatusResult,
2031
+ PowerPreventSleepParams,
2032
+ PowerPreventSleepResult,
2033
+ ResourcesDisk,
2034
+ ResourcesSnapshotParams,
2035
+ ResourcesSnapshotResult,
2036
+ FsWatchId,
2037
+ FsWatchStartParams,
2038
+ FsWatchStartResult,
2039
+ FsWatchEventsParams,
2040
+ FsWatchEventsResult,
2041
+ FsWatchStopParams,
2042
+ FsWatchStopResult,
2043
+ ExecJobId,
2044
+ ExecJobStartParams,
2045
+ ExecJobStartResult,
2046
+ ExecJobOutputParams,
2047
+ ExecJobOutputResult,
2048
+ ExecJobStopParams,
2049
+ ExecJobStopResult,
2050
+ ExecJobInfo,
2051
+ ExecJobListParams,
2052
+ ExecJobListResult,
1480
2053
  ToolLevel,
1481
2054
  ToolOutcome,
1482
2055
  ToolPlatform,
@@ -1582,7 +2155,7 @@ function forPeer(op, part, value, version) {
1582
2155
  var VERSIONED_RESULT_OPS = [...RESULT_PATH.keys()];
1583
2156
 
1584
2157
  // src/contract.ts
1585
- var CONTRACT_SHA256 = "0354e634fd50ffdc4c83b7ede7f9c31f3b2c877c4574557a6b264d2998470fd6";
2158
+ var CONTRACT_SHA256 = "c536cb055d02ce0704cee4693f08b4af9e83a38e00e6879160037c1006f2e72e";
1586
2159
 
1587
2160
  // src/close-policy.ts
1588
2161
  var CLOSE_RULES = {
@@ -1631,19 +2204,19 @@ var TOOL_CATALOG = [
1631
2204
  { name: "fs_search", group: "files_shell", state: "built", path: "sandbox_proxy", ops: ["fs.search_paths", "fs.search_content"], platforms: ALL, summary: "Find files by name or content" },
1632
2205
  { name: "shell_execute", group: "files_shell", state: "built", path: "sandbox_proxy", ops: ["exec.run"], platforms: ALL, summary: "Run a command; cd carries over" },
1633
2206
  { name: "shell_python", group: "files_shell", state: "built", path: "sandbox_proxy", ops: ["exec.run"], platforms: ALL, summary: "Run a Python script" },
1634
- { name: "shell_job", group: "files_shell", state: "planned", path: "device_op", ops: ["exec.job.start", "exec.job.output", "exec.job.stop"], platforms: ALL, summary: "Background commands: start, read output, stop" },
2207
+ { name: "shell_job", group: "files_shell", state: "built", path: "device_op", ops: ["exec.job.start", "exec.job.output", "exec.job.stop", "exec.job.list"], platforms: ALL, summary: "Background commands: start, read output, stop" },
1635
2208
  // ── 2. Computer control (TS owners) ──────────────────────────────────────────────────────────
1636
2209
  { name: "desktop_process", group: "os_control", state: "built", path: "device_op", ops: ["proc.list", "proc.ports", "proc.kill"], platforms: ALL, summary: "Running processes and ports; stop one" },
1637
- { name: "desktop_apps", group: "os_control", state: "planned", path: "device_op", ops: ["apps.list", "apps.open"], platforms: ALL, summary: "Installed apps; open or bring one forward" },
1638
- { name: "desktop_system", group: "os_control", state: "planned", path: "device_op", ops: ["sysinfo.get", "system.open_url", "system.open_path", "system.notify"], platforms: ALL, summary: "System facts, open, notify" },
2210
+ { name: "desktop_apps", group: "os_control", state: "built", path: "device_op", ops: ["apps.list", "apps.open"], platforms: ALL, summary: "Installed apps; open or bring one forward" },
2211
+ { name: "desktop_system", group: "os_control", state: "built", path: "device_op", ops: ["sysinfo.get", "system.open_url", "system.open_path", "system.notify"], platforms: ALL, summary: "System facts, open, notify" },
1639
2212
  { name: "desktop_clipboard", group: "os_control", state: "built", path: "device_op", ops: ["clipboard.read", "clipboard.write"], platforms: ALL, summary: "Read and write the clipboard's text" },
1640
- { name: "desktop_screen", group: "os_control", state: "planned", path: "device_op", ops: ["screen.list", "screen.capture"], platforms: ALL, summary: "Displays and screenshots" },
1641
- { name: "desktop_window", group: "os_control", state: "planned", path: "device_op", ops: ["window.list", "window.focus", "window.move", "window.minimize"], platforms: ALL, summary: "Find, focus and arrange windows" },
1642
- { name: "desktop_input", group: "os_control", state: "planned", path: "device_op", ops: ["input.type_text", "input.hotkey", "input.mouse_click", "input.mouse_move"], platforms: ALL, summary: "Keyboard and mouse" },
2213
+ { name: "desktop_screen", group: "os_control", state: "built", path: "device_op", ops: ["screen.list", "screen.capture"], platforms: ALL, summary: "Displays and screenshots" },
2214
+ { name: "desktop_window", group: "os_control", state: "built", path: "device_op", ops: ["window.list", "window.focus", "window.move", "window.minimize"], platforms: ALL, summary: "Find, focus and arrange windows" },
2215
+ { name: "desktop_input", group: "os_control", state: "built", path: "device_op", ops: ["input.type_text", "input.hotkey", "input.mouse_click", "input.mouse_move"], platforms: ALL, summary: "Keyboard and mouse" },
1643
2216
  { name: "desktop_audio", group: "os_control", state: "planned", path: "device_op", ops: ["audio.devices", "audio.record", "audio.play"], platforms: ALL, summary: "Audio devices, record, play" },
1644
- { name: "desktop_power", group: "os_control", state: "planned", path: "device_op", ops: ["power.status", "power.prevent_sleep"], platforms: ALL, summary: "Battery and keep awake" },
1645
- { name: "desktop_resources", group: "os_control", state: "planned", path: "device_op", ops: ["resources.snapshot", "resources.top"], platforms: ALL, summary: "CPU, memory and disk use" },
1646
- { name: "fs_watch", group: "os_control", state: "planned", path: "device_op", ops: ["fs.watch"], platforms: ALL, summary: "Watch a folder for changes" },
2217
+ { name: "desktop_power", group: "os_control", state: "built", path: "device_op", ops: ["power.status", "power.prevent_sleep"], platforms: ALL, summary: "Battery and keep awake" },
2218
+ { name: "desktop_resources", group: "os_control", state: "built", path: "device_op", ops: ["resources.snapshot"], platforms: ALL, summary: "CPU, memory and disk use" },
2219
+ { name: "fs_watch", group: "os_control", state: "built", path: "device_op", ops: ["fs.watch.start", "fs.watch.events", "fs.watch.stop"], platforms: ALL, summary: "Watch a folder; read what changed" },
1647
2220
  // ── 3. Personal apps and automation ──────────────────────────────────────────────────────────
1648
2221
  { name: "desktop_automation", group: "personal_automation", state: "planned", path: "device_op", ops: ["automation.script"], platforms: ["darwin", "win32"], summary: "AppleScript on a Mac, PowerShell on Windows" },
1649
2222
  { name: "desktop_mail", group: "personal_automation", state: "planned", path: "device_op", ops: ["mail.accounts", "mail.list", "mail.send"], platforms: ["darwin"], summary: "The Mail app" },
@@ -1744,7 +2317,7 @@ var LEGACY_ACTIONS = {
1744
2317
  "local_monitor.resources": tool("desktop_resources"),
1745
2318
  "local_monitor.battery": tool("desktop_power"),
1746
2319
  "local_monitor.disk_usage": tool("desktop_resources"),
1747
- "local_monitor.top_processes": tool("desktop_resources"),
2320
+ "local_monitor.top_processes": tool("desktop_process"),
1748
2321
  "local_monitor.watch_directory": tool("fs_watch"),
1749
2322
  "local_monitor.watch_events": tool("fs_watch"),
1750
2323
  "local_monitor.stop_watch": tool("fs_watch"),