@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.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/schema/primitives.ts
2
2
  import { z } from "zod";
3
3
  var PROTOCOL_MAJOR = 1;
4
- var PROTOCOL_MINOR = 3;
4
+ var PROTOCOL_MINOR = 5;
5
5
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
6
6
  var ProtocolVersion = z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
7
7
  var RequestId = z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -877,7 +877,7 @@ var AppsOpenResult = z11.strictObject({
877
877
  // src/schema/service.ts
878
878
  import { z as z12 } from "zod";
879
879
  var SERVICE_MAX_FRAME_BYTES = 16777216;
880
- var ServiceName = z12.enum(["ml"]);
880
+ var ServiceName = z12.enum(["ml", "coding"]);
881
881
  var ContractHash = z12.string().regex(/^[0-9a-f]{64}$/);
882
882
  var ServiceToken = z12.string().regex(/^[A-Za-z0-9_-]{43}$/);
883
883
  var ServiceRequestId = u32;
@@ -1012,6 +1012,416 @@ var ClipboardReadResult = z15.strictObject({
1012
1012
  var ClipboardWriteParams = z15.strictObject({ text: z15.string().max(1048576) });
1013
1013
  var ClipboardWriteResult = z15.strictObject({ bytes: nonNegInt });
1014
1014
 
1015
+ // src/schema/system.ts
1016
+ import { z as z16 } from "zod";
1017
+ var SystemOpenUrlParams = z16.strictObject({
1018
+ /** http, https or mailto; opened in the person's default app for it. */
1019
+ url: z16.string().min(1).max(4096)
1020
+ });
1021
+ var SystemOpenUrlResult = z16.strictObject({ url: z16.string().max(4096) });
1022
+ var SystemOpenPathParams = z16.strictObject({
1023
+ path: AbsPath,
1024
+ /** Show it in the file manager (Finder, Explorer) instead of opening it. */
1025
+ reveal: z16.boolean().default(false)
1026
+ });
1027
+ var SystemOpenPathResult = z16.strictObject({ path: AbsPath, revealed: z16.boolean() });
1028
+ var SystemNotifyParams = z16.strictObject({
1029
+ title: z16.string().min(1).max(128),
1030
+ body: z16.string().max(1024).default("")
1031
+ });
1032
+ var SystemNotifyResult = z16.strictObject({
1033
+ /** False when this computer has no notification service to show it (a bare Linux box). */
1034
+ shown: z16.boolean()
1035
+ });
1036
+
1037
+ // src/schema/screen.ts
1038
+ import { z as z17 } from "zod";
1039
+ var ScreenDisplay = z17.strictObject({
1040
+ /** The OS's display id; pass it to screen.capture. */
1041
+ id: nonNegInt,
1042
+ name: z17.string().max(128),
1043
+ /** Position and size in the OS's logical points (x and y may be negative left of or above the main display). */
1044
+ x: z17.int(),
1045
+ y: z17.int(),
1046
+ width: z17.int().min(1),
1047
+ height: z17.int().min(1),
1048
+ /** Pixels per point (2 on a Retina display). */
1049
+ scale: z17.number().min(0.1).max(8),
1050
+ primary: z17.boolean()
1051
+ });
1052
+ var ScreenListParams = z17.strictObject({});
1053
+ var ScreenListResult = z17.strictObject({ displays: z17.array(ScreenDisplay).max(32) });
1054
+ var ScreenCaptureParams = z17.strictObject({
1055
+ /** The display (from screen.list); the primary display when absent. */
1056
+ display_id: nonNegInt.optional(),
1057
+ format: z17.enum(["jpeg", "png"]).default("jpeg"),
1058
+ /** Scale the picture down to at most this width in pixels (kept when already smaller). */
1059
+ max_width: z17.int().min(160).max(7680).default(1600)
1060
+ });
1061
+ var ScreenCaptureResult = z17.strictObject({
1062
+ display_id: nonNegInt,
1063
+ mime_type: z17.enum(["image/jpeg", "image/png"]),
1064
+ width: z17.int().min(1),
1065
+ height: z17.int().min(1),
1066
+ /** The display's full resolution in pixels, before scaling. */
1067
+ source_width: z17.int().min(1),
1068
+ source_height: z17.int().min(1),
1069
+ /** The image, base64 (at most 6 MiB of text). */
1070
+ data_base64: z17.string().max(6291456)
1071
+ });
1072
+
1073
+ // src/schema/window.ts
1074
+ import { z as z18 } from "zod";
1075
+ var WindowInfo = z18.strictObject({
1076
+ /** The OS's window handle (macOS window number, Windows HWND, X11 window id). */
1077
+ id: nonNegInt,
1078
+ title: z18.string().max(512),
1079
+ /** Position and size in logical points. */
1080
+ x: z18.int(),
1081
+ y: z18.int(),
1082
+ width: z18.int().min(0),
1083
+ height: z18.int().min(0)
1084
+ });
1085
+ var WindowListParams = z18.strictObject({
1086
+ /** Case-insensitive substring of the window title. */
1087
+ title: z18.string().min(1).max(256).optional(),
1088
+ limit: z18.int().min(1).max(500).default(100)
1089
+ });
1090
+ var WindowListResult = z18.strictObject({
1091
+ windows: z18.array(WindowInfo).max(500),
1092
+ total: nonNegInt,
1093
+ truncated: z18.boolean()
1094
+ });
1095
+ var WindowFocusParams = z18.strictObject({ id: nonNegInt });
1096
+ var WindowFocusResult = z18.strictObject({ window: WindowInfo });
1097
+ var WindowMoveParams = z18.strictObject({
1098
+ id: nonNegInt,
1099
+ /** New top-left corner; unchanged when absent. */
1100
+ x: z18.int().optional(),
1101
+ y: z18.int().optional(),
1102
+ /** New size; unchanged when absent. */
1103
+ width: z18.int().min(50).max(16384).optional(),
1104
+ height: z18.int().min(50).max(16384).optional()
1105
+ });
1106
+ var WindowMoveResult = z18.strictObject({ window: WindowInfo });
1107
+ var WindowMinimizeParams = z18.strictObject({ id: nonNegInt });
1108
+ var WindowMinimizeResult = z18.strictObject({ id: nonNegInt });
1109
+
1110
+ // src/schema/input.ts
1111
+ import { z as z19 } from "zod";
1112
+ var InputKey = z19.enum([
1113
+ "cmd",
1114
+ "ctrl",
1115
+ "alt",
1116
+ "shift",
1117
+ "meta",
1118
+ "a",
1119
+ "b",
1120
+ "c",
1121
+ "d",
1122
+ "e",
1123
+ "f",
1124
+ "g",
1125
+ "h",
1126
+ "i",
1127
+ "j",
1128
+ "k",
1129
+ "l",
1130
+ "m",
1131
+ "n",
1132
+ "o",
1133
+ "p",
1134
+ "q",
1135
+ "r",
1136
+ "s",
1137
+ "t",
1138
+ "u",
1139
+ "v",
1140
+ "w",
1141
+ "x",
1142
+ "y",
1143
+ "z",
1144
+ "0",
1145
+ "1",
1146
+ "2",
1147
+ "3",
1148
+ "4",
1149
+ "5",
1150
+ "6",
1151
+ "7",
1152
+ "8",
1153
+ "9",
1154
+ "f1",
1155
+ "f2",
1156
+ "f3",
1157
+ "f4",
1158
+ "f5",
1159
+ "f6",
1160
+ "f7",
1161
+ "f8",
1162
+ "f9",
1163
+ "f10",
1164
+ "f11",
1165
+ "f12",
1166
+ "enter",
1167
+ "tab",
1168
+ "escape",
1169
+ "space",
1170
+ "backspace",
1171
+ "delete",
1172
+ "up",
1173
+ "down",
1174
+ "left",
1175
+ "right",
1176
+ "home",
1177
+ "end",
1178
+ "pageup",
1179
+ "pagedown",
1180
+ "minus",
1181
+ "equal",
1182
+ "comma",
1183
+ "period",
1184
+ "slash",
1185
+ "semicolon",
1186
+ "quote",
1187
+ "bracketleft",
1188
+ "bracketright",
1189
+ "backslash",
1190
+ "grave"
1191
+ ]);
1192
+ var InputTypeTextParams = z19.strictObject({ text: z19.string().min(1).max(1e4) });
1193
+ var InputTypeTextResult = z19.strictObject({ characters: z19.int().min(1) });
1194
+ var InputHotkeyParams = z19.strictObject({
1195
+ /** Pressed together in order and released in reverse: ["cmd", "shift", "t"]. */
1196
+ keys: z19.array(InputKey).min(1).max(6)
1197
+ });
1198
+ var InputHotkeyResult = z19.strictObject({ keys: z19.array(InputKey) });
1199
+ var InputPoint = z19.strictObject({ x: z19.int(), y: z19.int() });
1200
+ var InputMouseMoveParams = z19.strictObject({
1201
+ /** Screen position in logical points (the coordinates screen.list and window.list report). */
1202
+ x: z19.int(),
1203
+ y: z19.int()
1204
+ });
1205
+ var InputMouseMoveResult = z19.strictObject({
1206
+ /** Where the pointer is now, read back from the OS. */
1207
+ position: InputPoint
1208
+ });
1209
+ var InputMouseClickParams = z19.strictObject({
1210
+ /** Move here first; clicks where the pointer is when absent. */
1211
+ x: z19.int().optional(),
1212
+ y: z19.int().optional(),
1213
+ button: z19.enum(["left", "right", "middle"]).default("left"),
1214
+ double: z19.boolean().default(false)
1215
+ });
1216
+ var InputMouseClickResult = z19.strictObject({
1217
+ position: InputPoint,
1218
+ button: z19.enum(["left", "right", "middle"]),
1219
+ double: z19.boolean()
1220
+ });
1221
+
1222
+ // src/schema/power.ts
1223
+ import { z as z20 } from "zod";
1224
+ var PowerStatusParams = z20.strictObject({});
1225
+ var PowerStatusResult = z20.strictObject({
1226
+ has_battery: z20.boolean(),
1227
+ /** 0–100; null without a battery. */
1228
+ percent: z20.number().min(0).max(100).nullable(),
1229
+ charging: z20.boolean().nullable(),
1230
+ /** On wall power; null where the OS does not say. */
1231
+ plugged_in: z20.boolean().nullable(),
1232
+ /** Minutes of battery left; null when charging, unknown or without a battery. */
1233
+ minutes_left: nonNegInt.nullable(),
1234
+ /** Matrx 2 is keeping the computer awake (power.prevent_sleep) until this time; null when it is not. */
1235
+ awake_until_ms: epochMs.nullable()
1236
+ });
1237
+ var PowerPreventSleepParams = z20.strictObject({
1238
+ /** Keep the computer awake this long; 0 lets it sleep again now. */
1239
+ seconds: z20.int().min(0).max(86400),
1240
+ /** Shown where the OS lists what keeps it awake. */
1241
+ reason: z20.string().min(1).max(128).default("Matrx 2 is working")
1242
+ });
1243
+ var PowerPreventSleepResult = z20.strictObject({
1244
+ /** When it may sleep again; null after seconds 0. */
1245
+ awake_until_ms: epochMs.nullable()
1246
+ });
1247
+
1248
+ // src/schema/resources.ts
1249
+ import { z as z21 } from "zod";
1250
+ var ResourcesDisk = z21.strictObject({
1251
+ /** Where it is mounted ("/", "C:"). */
1252
+ mount: z21.string().max(512),
1253
+ /** The file system ("apfs", "NTFS", "ext4"). */
1254
+ fs: z21.string().max(64),
1255
+ size_bytes: nonNegInt,
1256
+ used_bytes: nonNegInt,
1257
+ available_bytes: nonNegInt
1258
+ });
1259
+ var ResourcesSnapshotParams = z21.strictObject({});
1260
+ var ResourcesSnapshotResult = z21.strictObject({
1261
+ cpu: z21.strictObject({
1262
+ /** Busy share of all cores, 0–100, measured now. */
1263
+ percent: z21.number().min(0).max(100),
1264
+ cores: z21.int().min(1),
1265
+ /** 1, 5 and 15 minute load averages; null on Windows. */
1266
+ load: z21.array(z21.number().min(0)).length(3).nullable()
1267
+ }),
1268
+ memory: z21.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
1269
+ swap: z21.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
1270
+ disks: z21.array(ResourcesDisk).max(64),
1271
+ uptime_seconds: nonNegInt
1272
+ });
1273
+
1274
+ // src/schema/fs-watch.ts
1275
+ import { z as z22 } from "zod";
1276
+ var FsWatchId = z22.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
1277
+ var FsWatchStartParams = z22.strictObject({
1278
+ path: AbsPath,
1279
+ recursive: z22.boolean().default(true),
1280
+ /** Globs relative to `path` whose changes are not reported (".git/**", "node_modules/**"). */
1281
+ ignore: z22.array(z22.string().max(256)).max(64).default([])
1282
+ });
1283
+ var FsWatchStartResult = z22.strictObject({
1284
+ watch_id: FsWatchId,
1285
+ path: AbsPath,
1286
+ /** The watch ends by itself if nobody reads it for 30 minutes. */
1287
+ expires_at_ms: epochMs
1288
+ });
1289
+ var FsWatchEventsParams = z22.strictObject({
1290
+ watch_id: FsWatchId,
1291
+ /** Wait up to this long for a first change when none is waiting (0 answers at once). */
1292
+ wait_ms: z22.int().min(0).max(25e3).default(0)
1293
+ });
1294
+ var FsWatchEventsResult = z22.strictObject({
1295
+ /** What changed since the last read, oldest first; re-checked against the disk when read. */
1296
+ changes: z22.array(FsChange).max(1e3),
1297
+ /** Changes were dropped (more than 1000 waited): list the folder again. */
1298
+ overflow: z22.boolean(),
1299
+ expires_at_ms: epochMs
1300
+ });
1301
+ var FsWatchStopParams = z22.strictObject({ watch_id: FsWatchId });
1302
+ var FsWatchStopResult = z22.strictObject({ watch_id: FsWatchId });
1303
+
1304
+ // src/schema/exec-job.ts
1305
+ import { z as z23 } from "zod";
1306
+ var ExecJobId = z23.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
1307
+ var ExecJobStartParams = z23.strictObject({
1308
+ command: z23.string().min(1).max(131072),
1309
+ /** The folder it runs in; the home folder when absent. */
1310
+ cwd: AbsPath.optional(),
1311
+ env: z23.record(z23.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), z23.string().max(32768)).optional()
1312
+ });
1313
+ var ExecJobStartResult = z23.strictObject({ job_id: ExecJobId, pid: z23.int().min(1), cwd: AbsPath });
1314
+ var ExecJobOutputParams = z23.strictObject({
1315
+ job_id: ExecJobId,
1316
+ /** Byte offset into the job's output to read from (next_offset of the last read; 0 = the start). */
1317
+ offset: nonNegInt.default(0),
1318
+ /** Wait up to this long for new output or the exit when none is waiting (0 answers at once). */
1319
+ wait_ms: z23.int().min(0).max(25e3).default(0),
1320
+ max_bytes: z23.int().min(1024).max(1048576).default(65536)
1321
+ });
1322
+ var ExecJobOutputResult = z23.strictObject({
1323
+ /** stdout and stderr interleaved as they arrived (UTF-8). */
1324
+ output: z23.string(),
1325
+ next_offset: nonNegInt,
1326
+ /** Bytes before `offset` that are gone (the job keeps its last 4 MiB). */
1327
+ dropped_bytes: nonNegInt,
1328
+ running: z23.boolean(),
1329
+ exit_code: z23.int().nullable()
1330
+ });
1331
+ var ExecJobStopParams = z23.strictObject({
1332
+ job_id: ExecJobId,
1333
+ /** End it at once (SIGKILL; on Windows the whole tree with /F) instead of asking it to quit. */
1334
+ force: z23.boolean().default(false)
1335
+ });
1336
+ var ExecJobStopResult = z23.strictObject({ job_id: ExecJobId, exited: z23.boolean(), exit_code: z23.int().nullable() });
1337
+ var ExecJobInfo = z23.strictObject({
1338
+ job_id: ExecJobId,
1339
+ command: z23.string().max(1024),
1340
+ pid: z23.int().min(1),
1341
+ cwd: AbsPath,
1342
+ running: z23.boolean(),
1343
+ exit_code: z23.int().nullable(),
1344
+ started_at_ms: epochMs,
1345
+ output_bytes: nonNegInt
1346
+ });
1347
+ var ExecJobListParams = z23.strictObject({});
1348
+ var ExecJobListResult = z23.strictObject({ jobs: z23.array(ExecJobInfo).max(64) });
1349
+
1350
+ // src/schema/coding.ts
1351
+ import { z as z24 } from "zod";
1352
+ var CodingServiceCredentials = z24.strictObject({
1353
+ access_token: z24.string().min(16).max(16384),
1354
+ user_id: z24.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}$/),
1355
+ /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
1356
+ server_url: z24.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1357
+ });
1358
+ var CodingHistoryBlocked = z24.enum([
1359
+ "signed_out",
1360
+ "offline",
1361
+ "organization_required",
1362
+ "claude_unavailable",
1363
+ "cloud_list_unavailable",
1364
+ "history_too_large"
1365
+ ]);
1366
+ var CodingHistoryFailure = z24.strictObject({
1367
+ session_id: z24.string().max(64),
1368
+ reason: z24.string().max(300)
1369
+ });
1370
+ var CodingHistoryRun = z24.strictObject({
1371
+ /** Claude Code sessions found on this computer. */
1372
+ local_sessions: nonNegInt,
1373
+ /** Of those, already complete in AI Matrx. */
1374
+ in_cloud: nonNegInt,
1375
+ /** In AI Matrx under neither of its identities. */
1376
+ missing: nonNegInt,
1377
+ /** In AI Matrx, but changed here after the last turn AI Matrx received (turns the hook lost). */
1378
+ behind: nonNegInt,
1379
+ /** Over the importer's size cap; never imported. */
1380
+ too_large: nonNegInt,
1381
+ imported: nonNegInt,
1382
+ /** Changed while being read; a later run takes them. */
1383
+ changed: nonNegInt,
1384
+ failed: nonNegInt,
1385
+ failures: z24.array(CodingHistoryFailure).max(20),
1386
+ /** Candidates not reached yet. */
1387
+ remaining: nonNegInt,
1388
+ /** The one line a person reads, e.g. "Imported 12 of 14 sessions. 140 already in AI Matrx." */
1389
+ summary: z24.string().max(400)
1390
+ });
1391
+ var CodingHistoryStep = z24.strictObject({
1392
+ /** Null when the run could not start (blocked before a plan existed). */
1393
+ plan_id: z24.string().regex(/^[0-9a-f]{32}$/).nullable(),
1394
+ finished: z24.boolean(),
1395
+ blocked: CodingHistoryBlocked.nullable(),
1396
+ run: CodingHistoryRun
1397
+ });
1398
+ var CodingPlanMissingParams = z24.strictObject({ credentials: CodingServiceCredentials });
1399
+ var CodingImportNextParams = z24.strictObject({
1400
+ plan_id: z24.string().regex(/^[0-9a-f]{32}$/),
1401
+ credentials: CodingServiceCredentials
1402
+ });
1403
+ var CodingServiceProgress = z24.strictObject({
1404
+ phase: z24.enum(["checking", "importing"]),
1405
+ done: nonNegInt,
1406
+ total: nonNegInt
1407
+ });
1408
+ var CodingHistoryImportMissingParams = z24.strictObject({});
1409
+ var CodingHistoryImportMissingResult = z24.strictObject({
1410
+ state: z24.enum(["done", "blocked", "cancelled"]),
1411
+ blocked: CodingHistoryBlocked.nullable(),
1412
+ run: CodingHistoryRun,
1413
+ elapsed_ms: nonNegInt
1414
+ });
1415
+ var CodingHistoryProgressEvent = z24.strictObject({
1416
+ request_id: RequestId,
1417
+ phase: z24.enum(["checking", "importing"]),
1418
+ /** Sessions settled so far, of `total` candidates (0 of 0 while checking). */
1419
+ done: nonNegInt,
1420
+ total: nonNegInt,
1421
+ imported: nonNegInt,
1422
+ failed: nonNegInt
1423
+ });
1424
+
1015
1425
  // src/schema/registry.ts
1016
1426
  var FS_ERR = ["NOT_FOUND", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "RESOURCE_BUSY", "INTERNAL"];
1017
1427
  var OPS = {
@@ -1053,7 +1463,32 @@ var OPS = {
1053
1463
  "proc.ports": { params: ProcPortsParams, result: ProcPortsResult, kind: "unary", since: "1.3", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1054
1464
  "proc.kill": { params: ProcKillParams, result: ProcKillResult, kind: "unary", since: "1.3", errors: ["NOT_FOUND", "AUTH_FORBIDDEN", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "INTERNAL"] },
1055
1465
  "clipboard.read": { params: ClipboardReadParams, result: ClipboardReadResult, kind: "unary", since: "1.3", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
1056
- "clipboard.write": { params: ClipboardWriteParams, result: ClipboardWriteResult, kind: "unary", since: "1.3", errors: ["PLATFORM_UNSUPPORTED", "PAYLOAD_TOO_LARGE", "INTERNAL"] }
1466
+ "clipboard.write": { params: ClipboardWriteParams, result: ClipboardWriteResult, kind: "unary", since: "1.3", errors: ["PLATFORM_UNSUPPORTED", "PAYLOAD_TOO_LARGE", "INTERNAL"] },
1467
+ "fs.watch.start": { params: FsWatchStartParams, result: FsWatchStartResult, kind: "unary", since: "1.4", errors: [...FS_ERR, "RATE_LIMITED"] },
1468
+ "fs.watch.events": { params: FsWatchEventsParams, result: FsWatchEventsResult, kind: "unary", since: "1.4", errors: ["RESOURCE_GONE", "INVALID_PARAMS", "INTERNAL"] },
1469
+ "fs.watch.stop": { params: FsWatchStopParams, result: FsWatchStopResult, kind: "unary", since: "1.4", errors: ["RESOURCE_GONE", "INVALID_PARAMS"] },
1470
+ "exec.job.start": { params: ExecJobStartParams, result: ExecJobStartResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "NOT_FOUND", "RATE_LIMITED", "INTERNAL"] },
1471
+ "exec.job.output": { params: ExecJobOutputParams, result: ExecJobOutputResult, kind: "unary", since: "1.4", errors: ["RESOURCE_GONE", "INVALID_PARAMS"] },
1472
+ "exec.job.stop": { params: ExecJobStopParams, result: ExecJobStopResult, kind: "unary", since: "1.4", errors: ["RESOURCE_GONE", "INVALID_PARAMS", "INTERNAL"] },
1473
+ "exec.job.list": { params: ExecJobListParams, result: ExecJobListResult, kind: "unary", since: "1.4", errors: ["INTERNAL"] },
1474
+ "system.open_url": { params: SystemOpenUrlParams, result: SystemOpenUrlResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1475
+ "system.open_path": { params: SystemOpenPathParams, result: SystemOpenPathResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1476
+ "system.notify": { params: SystemNotifyParams, result: SystemNotifyResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "INTERNAL"] },
1477
+ "screen.list": { params: ScreenListParams, result: ScreenListResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1478
+ "screen.capture": { params: ScreenCaptureParams, result: ScreenCaptureResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "PAYLOAD_TOO_LARGE", "INTERNAL"] },
1479
+ "window.list": { params: WindowListParams, result: WindowListResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1480
+ "window.focus": { params: WindowFocusParams, result: WindowFocusResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1481
+ "window.move": { params: WindowMoveParams, result: WindowMoveResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1482
+ "window.minimize": { params: WindowMinimizeParams, result: WindowMinimizeResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1483
+ "input.type_text": { params: InputTypeTextParams, result: InputTypeTextResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1484
+ "input.hotkey": { params: InputHotkeyParams, result: InputHotkeyResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1485
+ "input.mouse_move": { params: InputMouseMoveParams, result: InputMouseMoveResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1486
+ "input.mouse_click": { params: InputMouseClickParams, result: InputMouseClickResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1487
+ "power.status": { params: PowerStatusParams, result: PowerStatusResult, kind: "unary", since: "1.4", errors: ["INTERNAL"] },
1488
+ "power.prevent_sleep": { params: PowerPreventSleepParams, result: PowerPreventSleepResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1489
+ "resources.snapshot": { params: ResourcesSnapshotParams, result: ResourcesSnapshotResult, kind: "unary", since: "1.4", errors: ["INTERNAL"] },
1490
+ // Claude Code history (SPEC §6 coding): served by the `coding` Python service through SERVICES below.
1491
+ "coding.history.import_missing": { params: CodingHistoryImportMissingParams, result: CodingHistoryImportMissingResult, kind: "unary", since: "1.5", errors: ["RESOURCE_BUSY", "RESOURCE_GONE", "CANCELLED", "INTERNAL"] }
1057
1492
  };
1058
1493
  var EVENTS = {
1059
1494
  "fs.changed": FsChangedEvent,
@@ -1062,6 +1497,7 @@ var EVENTS = {
1062
1497
  "exec.cwd": ExecCwdEvent,
1063
1498
  "session.control_changed": SessionControlChangedEvent,
1064
1499
  "models.progress": ModelsProgressEvent,
1500
+ "coding.history.progress": CodingHistoryProgressEvent,
1065
1501
  "relay.device_status": RelayDeviceStatusEvent,
1066
1502
  "relay.auth_expiring": RelayAuthExpiringEvent
1067
1503
  };
@@ -1073,6 +1509,13 @@ var SERVICES = {
1073
1509
  "ml.install": { params: ModelsInstallParams, result: ModelsInstallResult },
1074
1510
  "ml.transcribe": { params: ModelsTranscribeParams, result: ModelsTranscribeResult }
1075
1511
  }
1512
+ },
1513
+ coding: {
1514
+ progress: CodingServiceProgress,
1515
+ ops: {
1516
+ "coding.plan_missing": { params: CodingPlanMissingParams, result: CodingHistoryStep },
1517
+ "coding.import_next": { params: CodingImportNextParams, result: CodingHistoryStep }
1518
+ }
1076
1519
  }
1077
1520
  };
1078
1521
  var NAMED_SCHEMAS = {
@@ -1181,6 +1624,17 @@ var NAMED_SCHEMAS = {
1181
1624
  ModelsStatusParams,
1182
1625
  ModelsStatusResult,
1183
1626
  ModelsProgressEvent,
1627
+ CodingServiceCredentials,
1628
+ CodingHistoryBlocked,
1629
+ CodingHistoryFailure,
1630
+ CodingHistoryRun,
1631
+ CodingHistoryStep,
1632
+ CodingPlanMissingParams,
1633
+ CodingImportNextParams,
1634
+ CodingServiceProgress,
1635
+ CodingHistoryImportMissingParams,
1636
+ CodingHistoryImportMissingResult,
1637
+ CodingHistoryProgressEvent,
1184
1638
  ServiceName,
1185
1639
  ContractHash,
1186
1640
  ServiceToken,
@@ -1218,6 +1672,60 @@ var NAMED_SCHEMAS = {
1218
1672
  ClipboardReadResult,
1219
1673
  ClipboardWriteParams,
1220
1674
  ClipboardWriteResult,
1675
+ SystemOpenUrlParams,
1676
+ SystemOpenUrlResult,
1677
+ SystemOpenPathParams,
1678
+ SystemOpenPathResult,
1679
+ SystemNotifyParams,
1680
+ SystemNotifyResult,
1681
+ ScreenDisplay,
1682
+ ScreenListParams,
1683
+ ScreenListResult,
1684
+ ScreenCaptureParams,
1685
+ ScreenCaptureResult,
1686
+ WindowInfo,
1687
+ WindowListParams,
1688
+ WindowListResult,
1689
+ WindowFocusParams,
1690
+ WindowFocusResult,
1691
+ WindowMoveParams,
1692
+ WindowMoveResult,
1693
+ WindowMinimizeParams,
1694
+ WindowMinimizeResult,
1695
+ InputKey,
1696
+ InputPoint,
1697
+ InputTypeTextParams,
1698
+ InputTypeTextResult,
1699
+ InputHotkeyParams,
1700
+ InputHotkeyResult,
1701
+ InputMouseMoveParams,
1702
+ InputMouseMoveResult,
1703
+ InputMouseClickParams,
1704
+ InputMouseClickResult,
1705
+ PowerStatusParams,
1706
+ PowerStatusResult,
1707
+ PowerPreventSleepParams,
1708
+ PowerPreventSleepResult,
1709
+ ResourcesDisk,
1710
+ ResourcesSnapshotParams,
1711
+ ResourcesSnapshotResult,
1712
+ FsWatchId,
1713
+ FsWatchStartParams,
1714
+ FsWatchStartResult,
1715
+ FsWatchEventsParams,
1716
+ FsWatchEventsResult,
1717
+ FsWatchStopParams,
1718
+ FsWatchStopResult,
1719
+ ExecJobId,
1720
+ ExecJobStartParams,
1721
+ ExecJobStartResult,
1722
+ ExecJobOutputParams,
1723
+ ExecJobOutputResult,
1724
+ ExecJobStopParams,
1725
+ ExecJobStopResult,
1726
+ ExecJobInfo,
1727
+ ExecJobListParams,
1728
+ ExecJobListResult,
1221
1729
  ToolLevel,
1222
1730
  ToolOutcome,
1223
1731
  ToolPlatform,
@@ -1323,7 +1831,7 @@ function forPeer(op, part, value, version) {
1323
1831
  var VERSIONED_RESULT_OPS = [...RESULT_PATH.keys()];
1324
1832
 
1325
1833
  // src/contract.ts
1326
- var CONTRACT_SHA256 = "0354e634fd50ffdc4c83b7ede7f9c31f3b2c877c4574557a6b264d2998470fd6";
1834
+ var CONTRACT_SHA256 = "c536cb055d02ce0704cee4693f08b4af9e83a38e00e6879160037c1006f2e72e";
1327
1835
 
1328
1836
  // src/close-policy.ts
1329
1837
  var CLOSE_RULES = {
@@ -1372,19 +1880,19 @@ var TOOL_CATALOG = [
1372
1880
  { 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" },
1373
1881
  { name: "shell_execute", group: "files_shell", state: "built", path: "sandbox_proxy", ops: ["exec.run"], platforms: ALL, summary: "Run a command; cd carries over" },
1374
1882
  { name: "shell_python", group: "files_shell", state: "built", path: "sandbox_proxy", ops: ["exec.run"], platforms: ALL, summary: "Run a Python script" },
1375
- { 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" },
1883
+ { 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" },
1376
1884
  // ── 2. Computer control (TS owners) ──────────────────────────────────────────────────────────
1377
1885
  { 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" },
1378
- { 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" },
1379
- { 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" },
1886
+ { 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" },
1887
+ { 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" },
1380
1888
  { 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" },
1381
- { name: "desktop_screen", group: "os_control", state: "planned", path: "device_op", ops: ["screen.list", "screen.capture"], platforms: ALL, summary: "Displays and screenshots" },
1382
- { 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" },
1383
- { 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" },
1889
+ { name: "desktop_screen", group: "os_control", state: "built", path: "device_op", ops: ["screen.list", "screen.capture"], platforms: ALL, summary: "Displays and screenshots" },
1890
+ { 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" },
1891
+ { 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" },
1384
1892
  { 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" },
1385
- { name: "desktop_power", group: "os_control", state: "planned", path: "device_op", ops: ["power.status", "power.prevent_sleep"], platforms: ALL, summary: "Battery and keep awake" },
1386
- { name: "desktop_resources", group: "os_control", state: "planned", path: "device_op", ops: ["resources.snapshot", "resources.top"], platforms: ALL, summary: "CPU, memory and disk use" },
1387
- { name: "fs_watch", group: "os_control", state: "planned", path: "device_op", ops: ["fs.watch"], platforms: ALL, summary: "Watch a folder for changes" },
1893
+ { name: "desktop_power", group: "os_control", state: "built", path: "device_op", ops: ["power.status", "power.prevent_sleep"], platforms: ALL, summary: "Battery and keep awake" },
1894
+ { name: "desktop_resources", group: "os_control", state: "built", path: "device_op", ops: ["resources.snapshot"], platforms: ALL, summary: "CPU, memory and disk use" },
1895
+ { 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" },
1388
1896
  // ── 3. Personal apps and automation ──────────────────────────────────────────────────────────
1389
1897
  { 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" },
1390
1898
  { name: "desktop_mail", group: "personal_automation", state: "planned", path: "device_op", ops: ["mail.accounts", "mail.list", "mail.send"], platforms: ["darwin"], summary: "The Mail app" },
@@ -1485,7 +1993,7 @@ var LEGACY_ACTIONS = {
1485
1993
  "local_monitor.resources": tool("desktop_resources"),
1486
1994
  "local_monitor.battery": tool("desktop_power"),
1487
1995
  "local_monitor.disk_usage": tool("desktop_resources"),
1488
- "local_monitor.top_processes": tool("desktop_resources"),
1996
+ "local_monitor.top_processes": tool("desktop_process"),
1489
1997
  "local_monitor.watch_directory": tool("fs_watch"),
1490
1998
  "local_monitor.watch_events": tool("fs_watch"),
1491
1999
  "local_monitor.stop_watch": tool("fs_watch"),
@@ -1695,6 +2203,17 @@ export {
1695
2203
  ClipboardWriteResult,
1696
2204
  CloseCode,
1697
2205
  CloseCodeValue,
2206
+ CodingHistoryBlocked,
2207
+ CodingHistoryFailure,
2208
+ CodingHistoryImportMissingParams,
2209
+ CodingHistoryImportMissingResult,
2210
+ CodingHistoryProgressEvent,
2211
+ CodingHistoryRun,
2212
+ CodingHistoryStep,
2213
+ CodingImportNextParams,
2214
+ CodingPlanMissingParams,
2215
+ CodingServiceCredentials,
2216
+ CodingServiceProgress,
1698
2217
  ContractHash,
1699
2218
  CoreToClientMsg,
1700
2219
  CoreToServiceMsg,
@@ -1714,6 +2233,16 @@ export {
1714
2233
  EventMsg,
1715
2234
  ExecCwdEvent,
1716
2235
  ExecExitedEvent,
2236
+ ExecJobId,
2237
+ ExecJobInfo,
2238
+ ExecJobListParams,
2239
+ ExecJobListResult,
2240
+ ExecJobOutputParams,
2241
+ ExecJobOutputResult,
2242
+ ExecJobStartParams,
2243
+ ExecJobStartResult,
2244
+ ExecJobStopParams,
2245
+ ExecJobStopResult,
1717
2246
  ExecListParams,
1718
2247
  ExecListResult,
1719
2248
  ExecPtyKillParams,
@@ -1763,11 +2292,28 @@ export {
1763
2292
  FsSearchPathsResult,
1764
2293
  FsStatParams,
1765
2294
  FsStatResult,
2295
+ FsWatchEventsParams,
2296
+ FsWatchEventsResult,
2297
+ FsWatchId,
1766
2298
  FsWatchParams,
1767
2299
  FsWatchResult,
2300
+ FsWatchStartParams,
2301
+ FsWatchStartResult,
2302
+ FsWatchStopParams,
2303
+ FsWatchStopResult,
1768
2304
  FsWriteParams,
1769
2305
  FsWriteResult,
1770
2306
  HelloMsg,
2307
+ InputHotkeyParams,
2308
+ InputHotkeyResult,
2309
+ InputKey,
2310
+ InputMouseClickParams,
2311
+ InputMouseClickResult,
2312
+ InputMouseMoveParams,
2313
+ InputMouseMoveResult,
2314
+ InputPoint,
2315
+ InputTypeTextParams,
2316
+ InputTypeTextResult,
1771
2317
  LEGACY_ACTIONS,
1772
2318
  LEGACY_DISPATCHERS,
1773
2319
  Limits,
@@ -1796,6 +2342,10 @@ export {
1796
2342
  PROTOCOL_MAJOR,
1797
2343
  PROTOCOL_MINOR,
1798
2344
  PROTOCOL_VERSION,
2345
+ PowerPreventSleepParams,
2346
+ PowerPreventSleepResult,
2347
+ PowerStatusParams,
2348
+ PowerStatusResult,
1799
2349
  ProcInfo,
1800
2350
  ProcKillParams,
1801
2351
  ProcKillResult,
@@ -1826,10 +2376,18 @@ export {
1826
2376
  RequestMsg,
1827
2377
  ResourceId,
1828
2378
  ResourceInfo,
2379
+ ResourcesDisk,
2380
+ ResourcesSnapshotParams,
2381
+ ResourcesSnapshotResult,
1829
2382
  ResponseMsg,
1830
2383
  SERVICES,
1831
2384
  SERVICE_MAX_FRAME_BYTES,
1832
2385
  SUBPROTOCOL,
2386
+ ScreenCaptureParams,
2387
+ ScreenCaptureResult,
2388
+ ScreenDisplay,
2389
+ ScreenListParams,
2390
+ ScreenListResult,
1833
2391
  ServiceCancel,
1834
2392
  ServiceErrorMsg,
1835
2393
  ServiceHello,
@@ -1857,6 +2415,12 @@ export {
1857
2415
  StreamMsg,
1858
2416
  SysinfoGetParams,
1859
2417
  SysinfoGetResult,
2418
+ SystemNotifyParams,
2419
+ SystemNotifyResult,
2420
+ SystemOpenPathParams,
2421
+ SystemOpenPathResult,
2422
+ SystemOpenUrlParams,
2423
+ SystemOpenUrlResult,
1860
2424
  TOOL_CATALOG,
1861
2425
  TOOL_GROUPS,
1862
2426
  TOOL_LEVELS,
@@ -1873,6 +2437,15 @@ export {
1873
2437
  TranscriptionModelInfo,
1874
2438
  VERSIONED_RESULT_OPS,
1875
2439
  Welcome,
2440
+ WindowFocusParams,
2441
+ WindowFocusResult,
2442
+ WindowInfo,
2443
+ WindowListParams,
2444
+ WindowListResult,
2445
+ WindowMinimizeParams,
2446
+ WindowMinimizeResult,
2447
+ WindowMoveParams,
2448
+ WindowMoveResult,
1876
2449
  announcedVersion,
1877
2450
  assertFrameHeader,
1878
2451
  buildToolStatus,