@ai-matrx/desktop-protocol 0.17.3 → 0.17.4

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
@@ -29,6 +29,13 @@ __export(src_exports, {
29
29
  AppProfileLocator: () => AppProfileLocator,
30
30
  AppSupport: () => AppSupport,
31
31
  AppUsageReading: () => AppUsageReading,
32
+ AppsChatsChangedEvent: () => AppsChatsChangedEvent,
33
+ AppsChatsListParams: () => AppsChatsListParams,
34
+ AppsChatsListResult: () => AppsChatsListResult,
35
+ AppsChatsStarParams: () => AppsChatsStarParams,
36
+ AppsChatsStarResult: () => AppsChatsStarResult,
37
+ AppsChatsWatchParams: () => AppsChatsWatchParams,
38
+ AppsChatsWatchResult: () => AppsChatsWatchResult,
32
39
  AppsListParams: () => AppsListParams,
33
40
  AppsListResult: () => AppsListResult,
34
41
  AppsOpenParams: () => AppsOpenParams,
@@ -39,6 +46,10 @@ __export(src_exports, {
39
46
  AppsProfilesRemoveResult: () => AppsProfilesRemoveResult,
40
47
  AppsProfilesSaveParams: () => AppsProfilesSaveParams,
41
48
  AppsProfilesSaveResult: () => AppsProfilesSaveResult,
49
+ AppsProjectsFileParams: () => AppsProjectsFileParams,
50
+ AppsProjectsFileResult: () => AppsProjectsFileResult,
51
+ AppsProjectsUnfileParams: () => AppsProjectsUnfileParams,
52
+ AppsProjectsUnfileResult: () => AppsProjectsUnfileResult,
42
53
  AudioDevice: () => AudioDevice,
43
54
  AudioDevicesParams: () => AudioDevicesParams,
44
55
  AudioDevicesResult: () => AudioDevicesResult,
@@ -51,6 +62,16 @@ __export(src_exports, {
51
62
  CLOSE_RULES: () => CLOSE_RULES,
52
63
  CONTRACT_SHA256: () => CONTRACT_SHA256,
53
64
  CancelMsg: () => CancelMsg,
65
+ ChatHidden: () => ChatHidden,
66
+ ChatId: () => ChatId,
67
+ ChatLastUse: () => ChatLastUse,
68
+ ChatPin: () => ChatPin,
69
+ ChatPlace: () => ChatPlace,
70
+ ChatProject: () => ChatProject,
71
+ ChatProjectId: () => ChatProjectId,
72
+ ChatRow: () => ChatRow,
73
+ ChatRunning: () => ChatRunning,
74
+ ChatWindow: () => ChatWindow,
54
75
  ClientToCoreMsg: () => ClientToCoreMsg,
55
76
  ClientType: () => ClientType,
56
77
  ClipboardReadParams: () => ClipboardReadParams,
@@ -332,7 +353,7 @@ module.exports = __toCommonJS(src_exports);
332
353
  // src/schema/primitives.ts
333
354
  var import_zod = require("zod");
334
355
  var PROTOCOL_MAJOR = 1;
335
- var PROTOCOL_MINOR = 7;
356
+ var PROTOCOL_MINOR = 8;
336
357
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
337
358
  var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
338
359
  var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -1222,250 +1243,358 @@ var AppsOpenResult = import_zod11.z.strictObject({
1222
1243
  folder: AbsPath.nullable()
1223
1244
  });
1224
1245
 
1225
- // src/schema/service.ts
1246
+ // src/schema/apps-chats.ts
1226
1247
  var import_zod12 = require("zod");
1248
+ var ChatId = import_zod12.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/);
1249
+ var ChatPlace = import_zod12.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/);
1250
+ var ChatProjectId = import_zod12.z.string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/);
1251
+ var ChatWindow = import_zod12.z.strictObject({
1252
+ key: ChatPlace,
1253
+ /** The app's default profile (Claude: the main window, which lists every account's chats). */
1254
+ main: import_zod12.z.boolean(),
1255
+ /** The account the window is signed into, when known. */
1256
+ account: import_zod12.z.string().max(320).nullable()
1257
+ });
1258
+ var ChatProject = import_zod12.z.strictObject({
1259
+ id: ChatProjectId,
1260
+ name: import_zod12.z.string().min(1).max(200),
1261
+ archived: import_zod12.z.boolean(),
1262
+ /** Chats in it. */
1263
+ count: nonNegInt
1264
+ });
1265
+ var ChatPin = import_zod12.z.strictObject({
1266
+ /** The window whose account pins it; an account with no window of its own is named by its email. */
1267
+ window: import_zod12.z.string().min(1).max(320),
1268
+ /** When that account's pin list was last read; null when the reading has no time. */
1269
+ observed_at_ms: epochMs.nullable()
1270
+ });
1271
+ var ChatRunning = import_zod12.z.strictObject({
1272
+ window: ChatPlace,
1273
+ /** process: a live process resumed this chat there (exact); activity: that window's own record moved in the last 3 minutes. */
1274
+ how: import_zod12.z.enum(["process", "activity"])
1275
+ });
1276
+ var ChatHidden = import_zod12.z.strictObject({
1277
+ window: ChatPlace,
1278
+ reason: import_zod12.z.string().max(200)
1279
+ });
1280
+ var ChatLastUse = import_zod12.z.strictObject({
1281
+ /** The conversation's last reply. */
1282
+ at_ms: epochMs,
1283
+ window: ChatPlace.nullable(),
1284
+ account: import_zod12.z.string().max(320).nullable(),
1285
+ /** How the window was decided (one short line). */
1286
+ how: import_zod12.z.string().max(120).nullable(),
1287
+ /** The account's 1-hour prompt cache is still warm. */
1288
+ cache_warm: import_zod12.z.boolean(),
1289
+ cache_minutes_left: nonNegInt
1290
+ });
1291
+ var ChatRow = import_zod12.z.strictObject({
1292
+ id: ChatId,
1293
+ /** The short id people see (the listing's first 8 characters). */
1294
+ short_id: import_zod12.z.string().max(16),
1295
+ /** The listing's own name (Claude: local_<id>), null for a chat only in the holder. */
1296
+ record: import_zod12.z.string().max(160).nullable(),
1297
+ title: import_zod12.z.string().max(1e3),
1298
+ last_active_ms: epochMs.nullable(),
1299
+ created_ms: epochMs.nullable(),
1300
+ projects: import_zod12.z.array(ChatProjectId).max(500),
1301
+ starred: import_zod12.z.boolean(),
1302
+ pinned_in: import_zod12.z.array(ChatPin).max(200),
1303
+ /** Every place it is listed now: window keys, plus "holder". */
1304
+ places: import_zod12.z.array(ChatPlace).max(200),
1305
+ held: import_zod12.z.boolean(),
1306
+ running: import_zod12.z.array(ChatRunning).max(200),
1307
+ hidden_in: import_zod12.z.array(ChatHidden).max(200),
1308
+ /** Kept out of the main window on purpose. */
1309
+ hidden_from_main: import_zod12.z.boolean(),
1310
+ /** Listed in a side window and not yet copied into main. */
1311
+ main_pending: import_zod12.z.boolean(),
1312
+ /** A scheduled routine's run (its task id). */
1313
+ scheduled: import_zod12.z.string().max(200).nullable(),
1314
+ /** Created recently and in no project: offered for filing. */
1315
+ new_unfiled: import_zod12.z.boolean(),
1316
+ warnings: import_zod12.z.array(import_zod12.z.string().max(400)).max(20),
1317
+ last_use: ChatLastUse.nullable()
1318
+ });
1319
+ var AppsChatsListParams = import_zod12.z.strictObject({
1320
+ app_key: AppKey,
1321
+ /** Only these chats (a live update re-reads just what changed). */
1322
+ ids: import_zod12.z.array(ChatId).max(500).optional()
1323
+ });
1324
+ var AppsChatsListResult = import_zod12.z.strictObject({
1325
+ app_key: AppKey,
1326
+ /** Bumps on every change the index sees; `apps.chats.changed` carries the same number. */
1327
+ version: nonNegInt,
1328
+ windows: import_zod12.z.array(ChatWindow).max(200),
1329
+ projects: import_zod12.z.array(ChatProject).max(5e3),
1330
+ chats: import_zod12.z.array(ChatRow).max(2e4),
1331
+ /** How long a chat in no project counts as new. */
1332
+ new_window_ms: nonNegInt
1333
+ });
1334
+ var AppsChatsWatchParams = import_zod12.z.strictObject({ app_key: AppKey });
1335
+ var AppsChatsWatchResult = import_zod12.z.strictObject({ resource_id: ResourceId, version: nonNegInt });
1336
+ var AppsChatsChangedEvent = import_zod12.z.strictObject({
1337
+ app_key: AppKey,
1338
+ version: nonNegInt,
1339
+ ids: import_zod12.z.array(ChatId).max(1e3),
1340
+ all: import_zod12.z.boolean()
1341
+ });
1342
+ var AppsProjectsFileParams = import_zod12.z.strictObject({
1343
+ app_key: AppKey,
1344
+ chat_id: ChatId,
1345
+ project_id: ChatProjectId.optional(),
1346
+ new_project_name: import_zod12.z.string().min(1).max(200).optional()
1347
+ });
1348
+ var AppsProjectsFileResult = import_zod12.z.strictObject({ chat: ChatRow, project: ChatProject });
1349
+ var AppsProjectsUnfileParams = import_zod12.z.strictObject({ app_key: AppKey, chat_id: ChatId, project_id: ChatProjectId });
1350
+ var AppsProjectsUnfileResult = import_zod12.z.strictObject({ chat: ChatRow });
1351
+ var AppsChatsStarParams = import_zod12.z.strictObject({ app_key: AppKey, chat_id: ChatId, starred: import_zod12.z.boolean() });
1352
+ var AppsChatsStarResult = import_zod12.z.strictObject({ chat: ChatRow });
1353
+
1354
+ // src/schema/service.ts
1355
+ var import_zod13 = require("zod");
1227
1356
  var SERVICE_MAX_FRAME_BYTES = 16777216;
1228
- var ServiceName = import_zod12.z.enum(["ml", "coding"]);
1229
- var ContractHash = import_zod12.z.string().regex(/^[0-9a-f]{64}$/);
1230
- var ServiceToken = import_zod12.z.string().regex(/^[A-Za-z0-9_-]{43}$/);
1357
+ var ServiceName = import_zod13.z.enum(["ml", "coding"]);
1358
+ var ContractHash = import_zod13.z.string().regex(/^[0-9a-f]{64}$/);
1359
+ var ServiceToken = import_zod13.z.string().regex(/^[A-Za-z0-9_-]{43}$/);
1231
1360
  var ServiceRequestId = u32;
1232
- var ServiceHello = import_zod12.z.strictObject({ type: import_zod12.z.literal("hello"), token: ServiceToken, contract: ContractHash });
1233
- var ServiceWelcome = import_zod12.z.strictObject({
1234
- type: import_zod12.z.literal("welcome"),
1361
+ var ServiceHello = import_zod13.z.strictObject({ type: import_zod13.z.literal("hello"), token: ServiceToken, contract: ContractHash });
1362
+ var ServiceWelcome = import_zod13.z.strictObject({
1363
+ type: import_zod13.z.literal("welcome"),
1235
1364
  service: ServiceName,
1236
1365
  contract: ContractHash,
1237
1366
  pid: nonNegInt,
1238
1367
  /** The interpreter's version, e.g. "3.13.15". */
1239
- python: import_zod12.z.string().max(32),
1368
+ python: import_zod13.z.string().max(32),
1240
1369
  /** Every op this service serves; must equal SERVICES[service] exactly. */
1241
- ops: import_zod12.z.array(import_zod12.z.string().min(1).max(64)).max(64)
1370
+ ops: import_zod13.z.array(import_zod13.z.string().min(1).max(64)).max(64)
1242
1371
  });
1243
- var ServiceRequest = import_zod12.z.strictObject({
1244
- type: import_zod12.z.literal("request"),
1372
+ var ServiceRequest = import_zod13.z.strictObject({
1373
+ type: import_zod13.z.literal("request"),
1245
1374
  id: ServiceRequestId,
1246
- op: import_zod12.z.string().min(1).max(64),
1247
- params: import_zod12.z.unknown()
1375
+ op: import_zod13.z.string().min(1).max(64),
1376
+ params: import_zod13.z.unknown()
1248
1377
  // validated by the service against SERVICES[service][op].params
1249
1378
  });
1250
- var ServiceResponse = import_zod12.z.strictObject({
1251
- type: import_zod12.z.literal("response"),
1379
+ var ServiceResponse = import_zod13.z.strictObject({
1380
+ type: import_zod13.z.literal("response"),
1252
1381
  id: ServiceRequestId,
1253
- result: import_zod12.z.unknown()
1382
+ result: import_zod13.z.unknown()
1254
1383
  // validated by the core against SERVICES[service][op].result
1255
1384
  });
1256
- var ServiceErrorMsg = import_zod12.z.strictObject({ type: import_zod12.z.literal("error"), id: ServiceRequestId, error: ProtocolErrorBody });
1257
- var ServiceProgressMsg = import_zod12.z.strictObject({ type: import_zod12.z.literal("progress"), id: ServiceRequestId, progress: import_zod12.z.unknown() });
1258
- var ServiceCancel = import_zod12.z.strictObject({ type: import_zod12.z.literal("cancel"), id: ServiceRequestId });
1259
- var ServicePing = import_zod12.z.strictObject({ type: import_zod12.z.literal("ping"), id: ServiceRequestId });
1260
- var ServicePong = import_zod12.z.strictObject({
1261
- type: import_zod12.z.literal("pong"),
1385
+ var ServiceErrorMsg = import_zod13.z.strictObject({ type: import_zod13.z.literal("error"), id: ServiceRequestId, error: ProtocolErrorBody });
1386
+ var ServiceProgressMsg = import_zod13.z.strictObject({ type: import_zod13.z.literal("progress"), id: ServiceRequestId, progress: import_zod13.z.unknown() });
1387
+ var ServiceCancel = import_zod13.z.strictObject({ type: import_zod13.z.literal("cancel"), id: ServiceRequestId });
1388
+ var ServicePing = import_zod13.z.strictObject({ type: import_zod13.z.literal("ping"), id: ServiceRequestId });
1389
+ var ServicePong = import_zod13.z.strictObject({
1390
+ type: import_zod13.z.literal("pong"),
1262
1391
  id: ServiceRequestId,
1263
1392
  /** Requests running now. */
1264
1393
  busy: nonNegInt
1265
1394
  });
1266
- var ServiceShutdown = import_zod12.z.strictObject({ type: import_zod12.z.literal("shutdown") });
1267
- var CoreToServiceMsg = import_zod12.z.discriminatedUnion("type", [ServiceHello, ServiceRequest, ServiceCancel, ServicePing, ServiceShutdown]);
1268
- var ServiceToCoreMsg = import_zod12.z.discriminatedUnion("type", [ServiceWelcome, ServiceResponse, ServiceErrorMsg, ServiceProgressMsg, ServicePong]);
1395
+ var ServiceShutdown = import_zod13.z.strictObject({ type: import_zod13.z.literal("shutdown") });
1396
+ var CoreToServiceMsg = import_zod13.z.discriminatedUnion("type", [ServiceHello, ServiceRequest, ServiceCancel, ServicePing, ServiceShutdown]);
1397
+ var ServiceToCoreMsg = import_zod13.z.discriminatedUnion("type", [ServiceWelcome, ServiceResponse, ServiceErrorMsg, ServiceProgressMsg, ServicePong]);
1269
1398
 
1270
1399
  // src/schema/tools.ts
1271
- var import_zod13 = require("zod");
1272
- var ToolLevel = import_zod13.z.enum(["programmatic", "protocol", "chat"]);
1273
- var ToolOutcome = import_zod13.z.enum(["pass", "fail", "skip"]);
1274
- var ToolPlatform = import_zod13.z.enum(["darwin", "win32", "linux"]);
1275
- var ToolTransport = import_zod13.z.enum(["in_process", "localhost", "relay", "agent"]);
1276
- var ToolName = import_zod13.z.string().min(1).max(64).regex(/^[a-z][a-z0-9_]*$/);
1277
- var ToolLevelResult = import_zod13.z.strictObject({
1400
+ var import_zod14 = require("zod");
1401
+ var ToolLevel = import_zod14.z.enum(["programmatic", "protocol", "chat"]);
1402
+ var ToolOutcome = import_zod14.z.enum(["pass", "fail", "skip"]);
1403
+ var ToolPlatform = import_zod14.z.enum(["darwin", "win32", "linux"]);
1404
+ var ToolTransport = import_zod14.z.enum(["in_process", "localhost", "relay", "agent"]);
1405
+ var ToolName = import_zod14.z.string().min(1).max(64).regex(/^[a-z][a-z0-9_]*$/);
1406
+ var ToolLevelResult = import_zod14.z.strictObject({
1278
1407
  tool: ToolName,
1279
1408
  level: ToolLevel,
1280
1409
  platform: ToolPlatform,
1281
1410
  transport: ToolTransport,
1282
1411
  outcome: ToolOutcome,
1283
1412
  /** True when the caller sat on a different network from the device (a phone on cellular, CI). */
1284
- remote_network: import_zod13.z.boolean(),
1413
+ remote_network: import_zod14.z.boolean(),
1285
1414
  /** One line: what was asserted, or why it failed. Never a token, a file's contents or a path under a real home. */
1286
- detail: import_zod13.z.string().max(500),
1415
+ detail: import_zod14.z.string().max(500),
1287
1416
  /** The harness that produced it, e.g. `matrx-desktop test/tools/programmatic.test.ts`. */
1288
- suite: import_zod13.z.string().min(1).max(200),
1417
+ suite: import_zod14.z.string().min(1).max(200),
1289
1418
  /** The test case inside the suite. */
1290
- test: import_zod13.z.string().min(1).max(300),
1291
- run_at_ms: import_zod13.z.int().min(0)
1419
+ test: import_zod14.z.string().min(1).max(300),
1420
+ run_at_ms: import_zod14.z.int().min(0)
1292
1421
  });
1293
- var ToolResultsFile = import_zod13.z.strictObject({
1294
- schema: import_zod13.z.literal("matrx.tool-results.v1"),
1422
+ var ToolResultsFile = import_zod14.z.strictObject({
1423
+ schema: import_zod14.z.literal("matrx.tool-results.v1"),
1295
1424
  /** The producing repo's commit (short or full SHA). */
1296
- commit: import_zod13.z.string().min(4).max(64),
1297
- results: import_zod13.z.array(ToolLevelResult).max(1e4)
1425
+ commit: import_zod14.z.string().min(4).max(64),
1426
+ results: import_zod14.z.array(ToolLevelResult).max(1e4)
1298
1427
  });
1299
1428
 
1300
1429
  // src/schema/proc.ts
1301
- var import_zod14 = require("zod");
1302
- var ProcSort = import_zod14.z.enum(["cpu", "memory", "pid", "name"]);
1303
- var ProcListParams = import_zod14.z.strictObject({
1430
+ var import_zod15 = require("zod");
1431
+ var ProcSort = import_zod15.z.enum(["cpu", "memory", "pid", "name"]);
1432
+ var ProcListParams = import_zod15.z.strictObject({
1304
1433
  /** Case-insensitive substring of the process name or its command line. */
1305
- name: import_zod14.z.string().min(1).max(128).optional(),
1434
+ name: import_zod15.z.string().min(1).max(128).optional(),
1306
1435
  sort: ProcSort.default("cpu"),
1307
- limit: import_zod14.z.int().min(1).max(500).default(50)
1436
+ limit: import_zod15.z.int().min(1).max(500).default(50)
1308
1437
  });
1309
- var ProcInfo = import_zod14.z.strictObject({
1310
- pid: import_zod14.z.int().min(0),
1438
+ var ProcInfo = import_zod15.z.strictObject({
1439
+ pid: import_zod15.z.int().min(0),
1311
1440
  /** Parent process id; null where the OS does not report it. */
1312
- ppid: import_zod14.z.int().min(0).nullable(),
1313
- name: import_zod14.z.string().max(256),
1441
+ ppid: import_zod15.z.int().min(0).nullable(),
1442
+ name: import_zod15.z.string().max(256),
1314
1443
  /** The command line, cut to 1024 characters. */
1315
- command: import_zod14.z.string().max(1024),
1444
+ command: import_zod15.z.string().max(1024),
1316
1445
  /** Share of one core, as `ps` and Task Manager report it; null where the OS does not say. */
1317
- cpu_percent: import_zod14.z.number().min(0).nullable(),
1446
+ cpu_percent: import_zod15.z.number().min(0).nullable(),
1318
1447
  memory_bytes: nonNegInt.nullable(),
1319
- user: import_zod14.z.string().max(128).nullable()
1448
+ user: import_zod15.z.string().max(128).nullable()
1320
1449
  });
1321
- var ProcListResult = import_zod14.z.strictObject({
1322
- processes: import_zod14.z.array(ProcInfo).max(500),
1450
+ var ProcListResult = import_zod15.z.strictObject({
1451
+ processes: import_zod15.z.array(ProcInfo).max(500),
1323
1452
  /** Processes that matched before `limit`. */
1324
1453
  total: nonNegInt,
1325
- truncated: import_zod14.z.boolean()
1454
+ truncated: import_zod15.z.boolean()
1326
1455
  });
1327
- var ProcPortsParams = import_zod14.z.strictObject({
1456
+ var ProcPortsParams = import_zod15.z.strictObject({
1328
1457
  /** Only this port. */
1329
- port: import_zod14.z.int().min(1).max(65535).optional()
1458
+ port: import_zod15.z.int().min(1).max(65535).optional()
1330
1459
  });
1331
- var ProcPort = import_zod14.z.strictObject({
1332
- port: import_zod14.z.int().min(1).max(65535),
1333
- protocol: import_zod14.z.enum(["tcp", "udp"]),
1460
+ var ProcPort = import_zod15.z.strictObject({
1461
+ port: import_zod15.z.int().min(1).max(65535),
1462
+ protocol: import_zod15.z.enum(["tcp", "udp"]),
1334
1463
  /** The local address it listens on ("127.0.0.1", "*", "::"). */
1335
- address: import_zod14.z.string().max(64),
1336
- pid: import_zod14.z.int().min(0).nullable(),
1337
- process: import_zod14.z.string().max(256).nullable()
1464
+ address: import_zod15.z.string().max(64),
1465
+ pid: import_zod15.z.int().min(0).nullable(),
1466
+ process: import_zod15.z.string().max(256).nullable()
1338
1467
  });
1339
- var ProcPortsResult = import_zod14.z.strictObject({ ports: import_zod14.z.array(ProcPort).max(4e3) });
1340
- var ProcKillParams = import_zod14.z.strictObject({
1341
- pid: import_zod14.z.int().min(1),
1468
+ var ProcPortsResult = import_zod15.z.strictObject({ ports: import_zod15.z.array(ProcPort).max(4e3) });
1469
+ var ProcKillParams = import_zod15.z.strictObject({
1470
+ pid: import_zod15.z.int().min(1),
1342
1471
  /** Kill outright (SIGKILL; on Windows the same /F) instead of asking it to quit. */
1343
- force: import_zod14.z.boolean().default(false)
1472
+ force: import_zod15.z.boolean().default(false)
1344
1473
  });
1345
- var ProcKillResult = import_zod14.z.strictObject({
1346
- pid: import_zod14.z.int().min(1),
1347
- signal: import_zod14.z.enum(["SIGTERM", "SIGKILL"]),
1474
+ var ProcKillResult = import_zod15.z.strictObject({
1475
+ pid: import_zod15.z.int().min(1),
1476
+ signal: import_zod15.z.enum(["SIGTERM", "SIGKILL"]),
1348
1477
  /** True when the process was gone within 3 s. */
1349
- exited: import_zod14.z.boolean()
1478
+ exited: import_zod15.z.boolean()
1350
1479
  });
1351
1480
 
1352
1481
  // src/schema/clipboard.ts
1353
- var import_zod15 = require("zod");
1354
- var ClipboardReadParams = import_zod15.z.strictObject({});
1355
- var ClipboardReadResult = import_zod15.z.strictObject({
1482
+ var import_zod16 = require("zod");
1483
+ var ClipboardReadParams = import_zod16.z.strictObject({});
1484
+ var ClipboardReadResult = import_zod16.z.strictObject({
1356
1485
  /** The clipboard's text ("" when it holds none), cut to 1 MiB. */
1357
- text: import_zod15.z.string().max(1048576),
1358
- truncated: import_zod15.z.boolean()
1486
+ text: import_zod16.z.string().max(1048576),
1487
+ truncated: import_zod16.z.boolean()
1359
1488
  });
1360
- var ClipboardWriteParams = import_zod15.z.strictObject({ text: import_zod15.z.string().max(1048576) });
1361
- var ClipboardWriteResult = import_zod15.z.strictObject({ bytes: nonNegInt });
1489
+ var ClipboardWriteParams = import_zod16.z.strictObject({ text: import_zod16.z.string().max(1048576) });
1490
+ var ClipboardWriteResult = import_zod16.z.strictObject({ bytes: nonNegInt });
1362
1491
 
1363
1492
  // src/schema/system.ts
1364
- var import_zod16 = require("zod");
1365
- var SystemOpenUrlParams = import_zod16.z.strictObject({
1493
+ var import_zod17 = require("zod");
1494
+ var SystemOpenUrlParams = import_zod17.z.strictObject({
1366
1495
  /** http, https or mailto; opened in the person's default app for it. */
1367
- url: import_zod16.z.string().min(1).max(4096)
1496
+ url: import_zod17.z.string().min(1).max(4096)
1368
1497
  });
1369
- var SystemOpenUrlResult = import_zod16.z.strictObject({ url: import_zod16.z.string().max(4096) });
1370
- var SystemOpenPathParams = import_zod16.z.strictObject({
1498
+ var SystemOpenUrlResult = import_zod17.z.strictObject({ url: import_zod17.z.string().max(4096) });
1499
+ var SystemOpenPathParams = import_zod17.z.strictObject({
1371
1500
  path: AbsPath,
1372
1501
  /** Show it in the file manager (Finder, Explorer) instead of opening it. */
1373
- reveal: import_zod16.z.boolean().default(false)
1502
+ reveal: import_zod17.z.boolean().default(false)
1374
1503
  });
1375
- var SystemOpenPathResult = import_zod16.z.strictObject({ path: AbsPath, revealed: import_zod16.z.boolean() });
1376
- var SystemNotifyParams = import_zod16.z.strictObject({
1377
- title: import_zod16.z.string().min(1).max(128),
1378
- body: import_zod16.z.string().max(1024).default("")
1504
+ var SystemOpenPathResult = import_zod17.z.strictObject({ path: AbsPath, revealed: import_zod17.z.boolean() });
1505
+ var SystemNotifyParams = import_zod17.z.strictObject({
1506
+ title: import_zod17.z.string().min(1).max(128),
1507
+ body: import_zod17.z.string().max(1024).default("")
1379
1508
  });
1380
- var SystemNotifyResult = import_zod16.z.strictObject({
1509
+ var SystemNotifyResult = import_zod17.z.strictObject({
1381
1510
  /** False when this computer has no notification service to show it (a bare Linux box). */
1382
- shown: import_zod16.z.boolean()
1511
+ shown: import_zod17.z.boolean()
1383
1512
  });
1384
1513
 
1385
1514
  // src/schema/screen.ts
1386
- var import_zod17 = require("zod");
1387
- var ScreenDisplay = import_zod17.z.strictObject({
1515
+ var import_zod18 = require("zod");
1516
+ var ScreenDisplay = import_zod18.z.strictObject({
1388
1517
  /** The OS's display id; pass it to screen.capture. */
1389
1518
  id: nonNegInt,
1390
- name: import_zod17.z.string().max(128),
1519
+ name: import_zod18.z.string().max(128),
1391
1520
  /** Position and size in the OS's logical points (x and y may be negative left of or above the main display). */
1392
- x: import_zod17.z.int(),
1393
- y: import_zod17.z.int(),
1394
- width: import_zod17.z.int().min(1),
1395
- height: import_zod17.z.int().min(1),
1521
+ x: import_zod18.z.int(),
1522
+ y: import_zod18.z.int(),
1523
+ width: import_zod18.z.int().min(1),
1524
+ height: import_zod18.z.int().min(1),
1396
1525
  /** Pixels per point (2 on a Retina display). */
1397
- scale: import_zod17.z.number().min(0.1).max(8),
1398
- primary: import_zod17.z.boolean()
1526
+ scale: import_zod18.z.number().min(0.1).max(8),
1527
+ primary: import_zod18.z.boolean()
1399
1528
  });
1400
- var ScreenListParams = import_zod17.z.strictObject({});
1401
- var ScreenListResult = import_zod17.z.strictObject({ displays: import_zod17.z.array(ScreenDisplay).max(32) });
1402
- var ScreenCaptureParams = import_zod17.z.strictObject({
1529
+ var ScreenListParams = import_zod18.z.strictObject({});
1530
+ var ScreenListResult = import_zod18.z.strictObject({ displays: import_zod18.z.array(ScreenDisplay).max(32) });
1531
+ var ScreenCaptureParams = import_zod18.z.strictObject({
1403
1532
  /** The display (from screen.list); the primary display when absent. */
1404
1533
  display_id: nonNegInt.optional(),
1405
- format: import_zod17.z.enum(["jpeg", "png"]).default("jpeg"),
1534
+ format: import_zod18.z.enum(["jpeg", "png"]).default("jpeg"),
1406
1535
  /** Scale the picture down to at most this width in pixels (kept when already smaller). */
1407
- max_width: import_zod17.z.int().min(160).max(7680).default(1600)
1536
+ max_width: import_zod18.z.int().min(160).max(7680).default(1600)
1408
1537
  });
1409
- var ScreenCaptureResult = import_zod17.z.strictObject({
1538
+ var ScreenCaptureResult = import_zod18.z.strictObject({
1410
1539
  display_id: nonNegInt,
1411
- mime_type: import_zod17.z.enum(["image/jpeg", "image/png"]),
1412
- width: import_zod17.z.int().min(1),
1413
- height: import_zod17.z.int().min(1),
1540
+ mime_type: import_zod18.z.enum(["image/jpeg", "image/png"]),
1541
+ width: import_zod18.z.int().min(1),
1542
+ height: import_zod18.z.int().min(1),
1414
1543
  /** The display's full resolution in pixels, before scaling. */
1415
- source_width: import_zod17.z.int().min(1),
1416
- source_height: import_zod17.z.int().min(1),
1544
+ source_width: import_zod18.z.int().min(1),
1545
+ source_height: import_zod18.z.int().min(1),
1417
1546
  /** The image, base64 (at most 6 MiB of text). */
1418
- data_base64: import_zod17.z.string().max(6291456)
1547
+ data_base64: import_zod18.z.string().max(6291456)
1419
1548
  });
1420
1549
 
1421
1550
  // src/schema/window.ts
1422
- var import_zod18 = require("zod");
1423
- var WindowInfo = import_zod18.z.strictObject({
1551
+ var import_zod19 = require("zod");
1552
+ var WindowInfo = import_zod19.z.strictObject({
1424
1553
  /** The OS's window handle (macOS window number, Windows HWND, X11 window id). */
1425
1554
  id: nonNegInt,
1426
- title: import_zod18.z.string().max(512),
1555
+ title: import_zod19.z.string().max(512),
1427
1556
  /** Position and size in logical points. */
1428
- x: import_zod18.z.int(),
1429
- y: import_zod18.z.int(),
1430
- width: import_zod18.z.int().min(0),
1431
- height: import_zod18.z.int().min(0),
1557
+ x: import_zod19.z.int(),
1558
+ y: import_zod19.z.int(),
1559
+ width: import_zod19.z.int().min(0),
1560
+ height: import_zod19.z.int().min(0),
1432
1561
  /**
1433
1562
  * The application that owns the window, by the name the OS shows people; absent when the OS does
1434
1563
  * not say. Optional (never null, the schema rule) because it was added in protocol 1.7: an older
1435
1564
  * app's answer has no such field (FIELDS_SINCE).
1436
1565
  */
1437
- app: import_zod18.z.string().max(256).optional(),
1566
+ app: import_zod19.z.string().max(256).optional(),
1438
1567
  /** The owning process id; absent when the OS does not say. Added in protocol 1.7. */
1439
- pid: import_zod18.z.int().min(0).optional()
1568
+ pid: import_zod19.z.int().min(0).optional()
1440
1569
  });
1441
- var WindowListParams = import_zod18.z.strictObject({
1570
+ var WindowListParams = import_zod19.z.strictObject({
1442
1571
  /** Case-insensitive substring of the window title. */
1443
- title: import_zod18.z.string().min(1).max(256).optional(),
1444
- limit: import_zod18.z.int().min(1).max(500).default(100)
1572
+ title: import_zod19.z.string().min(1).max(256).optional(),
1573
+ limit: import_zod19.z.int().min(1).max(500).default(100)
1445
1574
  });
1446
- var WindowListResult = import_zod18.z.strictObject({
1447
- windows: import_zod18.z.array(WindowInfo).max(500),
1575
+ var WindowListResult = import_zod19.z.strictObject({
1576
+ windows: import_zod19.z.array(WindowInfo).max(500),
1448
1577
  total: nonNegInt,
1449
- truncated: import_zod18.z.boolean()
1578
+ truncated: import_zod19.z.boolean()
1450
1579
  });
1451
- var WindowFocusParams = import_zod18.z.strictObject({ id: nonNegInt });
1452
- var WindowFocusResult = import_zod18.z.strictObject({ window: WindowInfo });
1453
- var WindowMoveParams = import_zod18.z.strictObject({
1580
+ var WindowFocusParams = import_zod19.z.strictObject({ id: nonNegInt });
1581
+ var WindowFocusResult = import_zod19.z.strictObject({ window: WindowInfo });
1582
+ var WindowMoveParams = import_zod19.z.strictObject({
1454
1583
  id: nonNegInt,
1455
1584
  /** New top-left corner; unchanged when absent. */
1456
- x: import_zod18.z.int().optional(),
1457
- y: import_zod18.z.int().optional(),
1585
+ x: import_zod19.z.int().optional(),
1586
+ y: import_zod19.z.int().optional(),
1458
1587
  /** New size; unchanged when absent. */
1459
- width: import_zod18.z.int().min(50).max(16384).optional(),
1460
- height: import_zod18.z.int().min(50).max(16384).optional()
1588
+ width: import_zod19.z.int().min(50).max(16384).optional(),
1589
+ height: import_zod19.z.int().min(50).max(16384).optional()
1461
1590
  });
1462
- var WindowMoveResult = import_zod18.z.strictObject({ window: WindowInfo });
1463
- var WindowMinimizeParams = import_zod18.z.strictObject({ id: nonNegInt });
1464
- var WindowMinimizeResult = import_zod18.z.strictObject({ id: nonNegInt });
1591
+ var WindowMoveResult = import_zod19.z.strictObject({ window: WindowInfo });
1592
+ var WindowMinimizeParams = import_zod19.z.strictObject({ id: nonNegInt });
1593
+ var WindowMinimizeResult = import_zod19.z.strictObject({ id: nonNegInt });
1465
1594
 
1466
1595
  // src/schema/input.ts
1467
- var import_zod19 = require("zod");
1468
- var InputKey = import_zod19.z.enum([
1596
+ var import_zod20 = require("zod");
1597
+ var InputKey = import_zod20.z.enum([
1469
1598
  "cmd",
1470
1599
  "ctrl",
1471
1600
  "alt",
@@ -1545,203 +1674,203 @@ var InputKey = import_zod19.z.enum([
1545
1674
  "backslash",
1546
1675
  "grave"
1547
1676
  ]);
1548
- var InputTypeTextParams = import_zod19.z.strictObject({ text: import_zod19.z.string().min(1).max(1e4) });
1549
- var InputTypeTextResult = import_zod19.z.strictObject({ characters: import_zod19.z.int().min(1) });
1550
- var InputHotkeyParams = import_zod19.z.strictObject({
1677
+ var InputTypeTextParams = import_zod20.z.strictObject({ text: import_zod20.z.string().min(1).max(1e4) });
1678
+ var InputTypeTextResult = import_zod20.z.strictObject({ characters: import_zod20.z.int().min(1) });
1679
+ var InputHotkeyParams = import_zod20.z.strictObject({
1551
1680
  /** Pressed together in order and released in reverse: ["cmd", "shift", "t"]. */
1552
- keys: import_zod19.z.array(InputKey).min(1).max(6)
1681
+ keys: import_zod20.z.array(InputKey).min(1).max(6)
1553
1682
  });
1554
- var InputHotkeyResult = import_zod19.z.strictObject({ keys: import_zod19.z.array(InputKey) });
1555
- var InputPoint = import_zod19.z.strictObject({ x: import_zod19.z.int(), y: import_zod19.z.int() });
1556
- var InputMouseMoveParams = import_zod19.z.strictObject({
1683
+ var InputHotkeyResult = import_zod20.z.strictObject({ keys: import_zod20.z.array(InputKey) });
1684
+ var InputPoint = import_zod20.z.strictObject({ x: import_zod20.z.int(), y: import_zod20.z.int() });
1685
+ var InputMouseMoveParams = import_zod20.z.strictObject({
1557
1686
  /** Screen position in logical points (the coordinates screen.list and window.list report). */
1558
- x: import_zod19.z.int(),
1559
- y: import_zod19.z.int()
1687
+ x: import_zod20.z.int(),
1688
+ y: import_zod20.z.int()
1560
1689
  });
1561
- var InputMouseMoveResult = import_zod19.z.strictObject({
1690
+ var InputMouseMoveResult = import_zod20.z.strictObject({
1562
1691
  /** Where the pointer is now, read back from the OS. */
1563
1692
  position: InputPoint
1564
1693
  });
1565
- var InputMouseClickParams = import_zod19.z.strictObject({
1694
+ var InputMouseClickParams = import_zod20.z.strictObject({
1566
1695
  /** Move here first; clicks where the pointer is when absent. */
1567
- x: import_zod19.z.int().optional(),
1568
- y: import_zod19.z.int().optional(),
1569
- button: import_zod19.z.enum(["left", "right", "middle"]).default("left"),
1570
- double: import_zod19.z.boolean().default(false)
1696
+ x: import_zod20.z.int().optional(),
1697
+ y: import_zod20.z.int().optional(),
1698
+ button: import_zod20.z.enum(["left", "right", "middle"]).default("left"),
1699
+ double: import_zod20.z.boolean().default(false)
1571
1700
  });
1572
- var InputMouseClickResult = import_zod19.z.strictObject({
1701
+ var InputMouseClickResult = import_zod20.z.strictObject({
1573
1702
  position: InputPoint,
1574
- button: import_zod19.z.enum(["left", "right", "middle"]),
1575
- double: import_zod19.z.boolean()
1703
+ button: import_zod20.z.enum(["left", "right", "middle"]),
1704
+ double: import_zod20.z.boolean()
1576
1705
  });
1577
1706
 
1578
1707
  // src/schema/power.ts
1579
- var import_zod20 = require("zod");
1580
- var PowerStatusParams = import_zod20.z.strictObject({});
1581
- var PowerStatusResult = import_zod20.z.strictObject({
1582
- has_battery: import_zod20.z.boolean(),
1708
+ var import_zod21 = require("zod");
1709
+ var PowerStatusParams = import_zod21.z.strictObject({});
1710
+ var PowerStatusResult = import_zod21.z.strictObject({
1711
+ has_battery: import_zod21.z.boolean(),
1583
1712
  /** 0–100; null without a battery. */
1584
- percent: import_zod20.z.number().min(0).max(100).nullable(),
1585
- charging: import_zod20.z.boolean().nullable(),
1713
+ percent: import_zod21.z.number().min(0).max(100).nullable(),
1714
+ charging: import_zod21.z.boolean().nullable(),
1586
1715
  /** On wall power; null where the OS does not say. */
1587
- plugged_in: import_zod20.z.boolean().nullable(),
1716
+ plugged_in: import_zod21.z.boolean().nullable(),
1588
1717
  /** Minutes of battery left; null when charging, unknown or without a battery. */
1589
1718
  minutes_left: nonNegInt.nullable(),
1590
1719
  /** Matrx 2 is keeping the computer awake (power.prevent_sleep) until this time; null when it is not. */
1591
1720
  awake_until_ms: epochMs.nullable()
1592
1721
  });
1593
- var PowerPreventSleepParams = import_zod20.z.strictObject({
1722
+ var PowerPreventSleepParams = import_zod21.z.strictObject({
1594
1723
  /** Keep the computer awake this long; 0 lets it sleep again now. */
1595
- seconds: import_zod20.z.int().min(0).max(86400),
1724
+ seconds: import_zod21.z.int().min(0).max(86400),
1596
1725
  /** Shown where the OS lists what keeps it awake. */
1597
- reason: import_zod20.z.string().min(1).max(128).default("Matrx 2 is working")
1726
+ reason: import_zod21.z.string().min(1).max(128).default("Matrx 2 is working")
1598
1727
  });
1599
- var PowerPreventSleepResult = import_zod20.z.strictObject({
1728
+ var PowerPreventSleepResult = import_zod21.z.strictObject({
1600
1729
  /** When it may sleep again; null after seconds 0. */
1601
1730
  awake_until_ms: epochMs.nullable()
1602
1731
  });
1603
1732
 
1604
1733
  // src/schema/resources.ts
1605
- var import_zod21 = require("zod");
1606
- var ResourcesDisk = import_zod21.z.strictObject({
1734
+ var import_zod22 = require("zod");
1735
+ var ResourcesDisk = import_zod22.z.strictObject({
1607
1736
  /** Where it is mounted ("/", "C:"). */
1608
- mount: import_zod21.z.string().max(512),
1737
+ mount: import_zod22.z.string().max(512),
1609
1738
  /** The file system ("apfs", "NTFS", "ext4"). */
1610
- fs: import_zod21.z.string().max(64),
1739
+ fs: import_zod22.z.string().max(64),
1611
1740
  size_bytes: nonNegInt,
1612
1741
  used_bytes: nonNegInt,
1613
1742
  available_bytes: nonNegInt
1614
1743
  });
1615
- var ResourcesSnapshotParams = import_zod21.z.strictObject({});
1616
- var ResourcesSnapshotResult = import_zod21.z.strictObject({
1617
- cpu: import_zod21.z.strictObject({
1744
+ var ResourcesSnapshotParams = import_zod22.z.strictObject({});
1745
+ var ResourcesSnapshotResult = import_zod22.z.strictObject({
1746
+ cpu: import_zod22.z.strictObject({
1618
1747
  /** Busy share of all cores, 0–100, measured now. */
1619
- percent: import_zod21.z.number().min(0).max(100),
1620
- cores: import_zod21.z.int().min(1),
1748
+ percent: import_zod22.z.number().min(0).max(100),
1749
+ cores: import_zod22.z.int().min(1),
1621
1750
  /** 1, 5 and 15 minute load averages; null on Windows. */
1622
- load: import_zod21.z.array(import_zod21.z.number().min(0)).length(3).nullable()
1751
+ load: import_zod22.z.array(import_zod22.z.number().min(0)).length(3).nullable()
1623
1752
  }),
1624
- memory: import_zod21.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
1625
- swap: import_zod21.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
1626
- disks: import_zod21.z.array(ResourcesDisk).max(64),
1753
+ memory: import_zod22.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
1754
+ swap: import_zod22.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
1755
+ disks: import_zod22.z.array(ResourcesDisk).max(64),
1627
1756
  uptime_seconds: nonNegInt
1628
1757
  });
1629
1758
 
1630
1759
  // src/schema/audio.ts
1631
- var import_zod22 = require("zod");
1632
- var AudioDevice = import_zod22.z.strictObject({
1760
+ var import_zod23 = require("zod");
1761
+ var AudioDevice = import_zod23.z.strictObject({
1633
1762
  /** The OS's name for it, as audio.record takes it. */
1634
- id: import_zod22.z.string().min(1).max(256),
1635
- name: import_zod22.z.string().max(256),
1636
- default: import_zod22.z.boolean()
1763
+ id: import_zod23.z.string().min(1).max(256),
1764
+ name: import_zod23.z.string().max(256),
1765
+ default: import_zod23.z.boolean()
1637
1766
  });
1638
- var AudioDevicesParams = import_zod22.z.strictObject({});
1639
- var AudioDevicesResult = import_zod22.z.strictObject({
1640
- inputs: import_zod22.z.array(AudioDevice).max(64),
1641
- outputs: import_zod22.z.array(AudioDevice).max(64)
1767
+ var AudioDevicesParams = import_zod23.z.strictObject({});
1768
+ var AudioDevicesResult = import_zod23.z.strictObject({
1769
+ inputs: import_zod23.z.array(AudioDevice).max(64),
1770
+ outputs: import_zod23.z.array(AudioDevice).max(64)
1642
1771
  });
1643
- var AudioRecordParams = import_zod22.z.strictObject({
1644
- seconds: import_zod22.z.number().min(0.5).max(600),
1772
+ var AudioRecordParams = import_zod23.z.strictObject({
1773
+ seconds: import_zod23.z.number().min(0.5).max(600),
1645
1774
  /** The microphone (from audio.devices); the default input when absent. */
1646
- device_id: import_zod22.z.string().min(1).max(256).optional(),
1775
+ device_id: import_zod23.z.string().min(1).max(256).optional(),
1647
1776
  /** Where the WAV file goes; a new file in the temp folder when absent. */
1648
1777
  path: AbsPath.optional()
1649
1778
  });
1650
- var AudioRecordResult = import_zod22.z.strictObject({
1779
+ var AudioRecordResult = import_zod23.z.strictObject({
1651
1780
  path: AbsPath,
1652
- seconds: import_zod22.z.number().min(0),
1781
+ seconds: import_zod23.z.number().min(0),
1653
1782
  bytes: nonNegInt,
1654
1783
  /** Loudest sample, 0–1: 0 means the device gave silence. */
1655
- peak: import_zod22.z.number().min(0).max(1)
1784
+ peak: import_zod23.z.number().min(0).max(1)
1656
1785
  });
1657
- var AudioPlayParams = import_zod22.z.strictObject({ path: AbsPath });
1658
- var AudioPlayResult = import_zod22.z.strictObject({ path: AbsPath, seconds: import_zod22.z.number().min(0) });
1786
+ var AudioPlayParams = import_zod23.z.strictObject({ path: AbsPath });
1787
+ var AudioPlayResult = import_zod23.z.strictObject({ path: AbsPath, seconds: import_zod23.z.number().min(0) });
1659
1788
 
1660
1789
  // src/schema/fs-watch.ts
1661
- var import_zod23 = require("zod");
1662
- var FsWatchId = import_zod23.z.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
1663
- var FsWatchStartParams = import_zod23.z.strictObject({
1790
+ var import_zod24 = require("zod");
1791
+ var FsWatchId = import_zod24.z.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
1792
+ var FsWatchStartParams = import_zod24.z.strictObject({
1664
1793
  path: AbsPath,
1665
- recursive: import_zod23.z.boolean().default(true),
1794
+ recursive: import_zod24.z.boolean().default(true),
1666
1795
  /** Globs relative to `path` whose changes are not reported (".git/**", "node_modules/**"). */
1667
- ignore: import_zod23.z.array(import_zod23.z.string().max(256)).max(64).default([])
1796
+ ignore: import_zod24.z.array(import_zod24.z.string().max(256)).max(64).default([])
1668
1797
  });
1669
- var FsWatchStartResult = import_zod23.z.strictObject({
1798
+ var FsWatchStartResult = import_zod24.z.strictObject({
1670
1799
  watch_id: FsWatchId,
1671
1800
  path: AbsPath,
1672
1801
  /** The watch ends by itself if nobody reads it for 30 minutes. */
1673
1802
  expires_at_ms: epochMs
1674
1803
  });
1675
- var FsWatchEventsParams = import_zod23.z.strictObject({
1804
+ var FsWatchEventsParams = import_zod24.z.strictObject({
1676
1805
  watch_id: FsWatchId,
1677
1806
  /** Wait up to this long for a first change when none is waiting (0 answers at once). */
1678
- wait_ms: import_zod23.z.int().min(0).max(25e3).default(0)
1807
+ wait_ms: import_zod24.z.int().min(0).max(25e3).default(0)
1679
1808
  });
1680
- var FsWatchEventsResult = import_zod23.z.strictObject({
1809
+ var FsWatchEventsResult = import_zod24.z.strictObject({
1681
1810
  /** What changed since the last read, oldest first; re-checked against the disk when read. */
1682
- changes: import_zod23.z.array(FsChange).max(1e3),
1811
+ changes: import_zod24.z.array(FsChange).max(1e3),
1683
1812
  /** Changes were dropped (more than 1000 waited): list the folder again. */
1684
- overflow: import_zod23.z.boolean(),
1813
+ overflow: import_zod24.z.boolean(),
1685
1814
  expires_at_ms: epochMs
1686
1815
  });
1687
- var FsWatchStopParams = import_zod23.z.strictObject({ watch_id: FsWatchId });
1688
- var FsWatchStopResult = import_zod23.z.strictObject({ watch_id: FsWatchId });
1816
+ var FsWatchStopParams = import_zod24.z.strictObject({ watch_id: FsWatchId });
1817
+ var FsWatchStopResult = import_zod24.z.strictObject({ watch_id: FsWatchId });
1689
1818
 
1690
1819
  // src/schema/exec-job.ts
1691
- var import_zod24 = require("zod");
1692
- var ExecJobId = import_zod24.z.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
1693
- var ExecJobStartParams = import_zod24.z.strictObject({
1694
- command: import_zod24.z.string().min(1).max(131072),
1820
+ var import_zod25 = require("zod");
1821
+ var ExecJobId = import_zod25.z.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
1822
+ var ExecJobStartParams = import_zod25.z.strictObject({
1823
+ command: import_zod25.z.string().min(1).max(131072),
1695
1824
  /** The folder it runs in; the home folder when absent. */
1696
1825
  cwd: AbsPath.optional(),
1697
- env: import_zod24.z.record(import_zod24.z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), import_zod24.z.string().max(32768)).optional()
1826
+ env: import_zod25.z.record(import_zod25.z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), import_zod25.z.string().max(32768)).optional()
1698
1827
  });
1699
- var ExecJobStartResult = import_zod24.z.strictObject({ job_id: ExecJobId, pid: import_zod24.z.int().min(1), cwd: AbsPath });
1700
- var ExecJobOutputParams = import_zod24.z.strictObject({
1828
+ var ExecJobStartResult = import_zod25.z.strictObject({ job_id: ExecJobId, pid: import_zod25.z.int().min(1), cwd: AbsPath });
1829
+ var ExecJobOutputParams = import_zod25.z.strictObject({
1701
1830
  job_id: ExecJobId,
1702
1831
  /** Byte offset into the job's output to read from (next_offset of the last read; 0 = the start). */
1703
1832
  offset: nonNegInt.default(0),
1704
1833
  /** Wait up to this long for new output or the exit when none is waiting (0 answers at once). */
1705
- wait_ms: import_zod24.z.int().min(0).max(25e3).default(0),
1706
- max_bytes: import_zod24.z.int().min(1024).max(1048576).default(65536)
1834
+ wait_ms: import_zod25.z.int().min(0).max(25e3).default(0),
1835
+ max_bytes: import_zod25.z.int().min(1024).max(1048576).default(65536)
1707
1836
  });
1708
- var ExecJobOutputResult = import_zod24.z.strictObject({
1837
+ var ExecJobOutputResult = import_zod25.z.strictObject({
1709
1838
  /** stdout and stderr interleaved as they arrived (UTF-8). */
1710
- output: import_zod24.z.string(),
1839
+ output: import_zod25.z.string(),
1711
1840
  next_offset: nonNegInt,
1712
1841
  /** Bytes before `offset` that are gone (the job keeps its last 4 MiB). */
1713
1842
  dropped_bytes: nonNegInt,
1714
- running: import_zod24.z.boolean(),
1715
- exit_code: import_zod24.z.int().nullable()
1843
+ running: import_zod25.z.boolean(),
1844
+ exit_code: import_zod25.z.int().nullable()
1716
1845
  });
1717
- var ExecJobStopParams = import_zod24.z.strictObject({
1846
+ var ExecJobStopParams = import_zod25.z.strictObject({
1718
1847
  job_id: ExecJobId,
1719
1848
  /** End it at once (SIGKILL; on Windows the whole tree with /F) instead of asking it to quit. */
1720
- force: import_zod24.z.boolean().default(false)
1849
+ force: import_zod25.z.boolean().default(false)
1721
1850
  });
1722
- var ExecJobStopResult = import_zod24.z.strictObject({ job_id: ExecJobId, exited: import_zod24.z.boolean(), exit_code: import_zod24.z.int().nullable() });
1723
- var ExecJobInfo = import_zod24.z.strictObject({
1851
+ var ExecJobStopResult = import_zod25.z.strictObject({ job_id: ExecJobId, exited: import_zod25.z.boolean(), exit_code: import_zod25.z.int().nullable() });
1852
+ var ExecJobInfo = import_zod25.z.strictObject({
1724
1853
  job_id: ExecJobId,
1725
- command: import_zod24.z.string().max(1024),
1726
- pid: import_zod24.z.int().min(1),
1854
+ command: import_zod25.z.string().max(1024),
1855
+ pid: import_zod25.z.int().min(1),
1727
1856
  cwd: AbsPath,
1728
- running: import_zod24.z.boolean(),
1729
- exit_code: import_zod24.z.int().nullable(),
1857
+ running: import_zod25.z.boolean(),
1858
+ exit_code: import_zod25.z.int().nullable(),
1730
1859
  started_at_ms: epochMs,
1731
1860
  output_bytes: nonNegInt
1732
1861
  });
1733
- var ExecJobListParams = import_zod24.z.strictObject({});
1734
- var ExecJobListResult = import_zod24.z.strictObject({ jobs: import_zod24.z.array(ExecJobInfo).max(64) });
1862
+ var ExecJobListParams = import_zod25.z.strictObject({});
1863
+ var ExecJobListResult = import_zod25.z.strictObject({ jobs: import_zod25.z.array(ExecJobInfo).max(64) });
1735
1864
 
1736
1865
  // src/schema/coding.ts
1737
- var import_zod25 = require("zod");
1738
- var CodingServiceCredentials = import_zod25.z.strictObject({
1739
- access_token: import_zod25.z.string().min(16).max(16384),
1740
- user_id: import_zod25.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}$/),
1866
+ var import_zod26 = require("zod");
1867
+ var CodingServiceCredentials = import_zod26.z.strictObject({
1868
+ access_token: import_zod26.z.string().min(16).max(16384),
1869
+ user_id: import_zod26.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}$/),
1741
1870
  /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
1742
- server_url: import_zod25.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1871
+ server_url: import_zod26.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1743
1872
  });
1744
- var CodingHistoryBlocked = import_zod25.z.enum([
1873
+ var CodingHistoryBlocked = import_zod26.z.enum([
1745
1874
  "signed_out",
1746
1875
  "offline",
1747
1876
  "organization_required",
@@ -1749,11 +1878,11 @@ var CodingHistoryBlocked = import_zod25.z.enum([
1749
1878
  "cloud_list_unavailable",
1750
1879
  "history_too_large"
1751
1880
  ]);
1752
- var CodingHistoryFailure = import_zod25.z.strictObject({
1753
- session_id: import_zod25.z.string().max(64),
1754
- reason: import_zod25.z.string().max(300)
1881
+ var CodingHistoryFailure = import_zod26.z.strictObject({
1882
+ session_id: import_zod26.z.string().max(64),
1883
+ reason: import_zod26.z.string().max(300)
1755
1884
  });
1756
- var CodingHistoryRun = import_zod25.z.strictObject({
1885
+ var CodingHistoryRun = import_zod26.z.strictObject({
1757
1886
  /** Claude Code sessions found on this computer. */
1758
1887
  local_sessions: nonNegInt,
1759
1888
  /** Of those, already complete in AI Matrx. */
@@ -1768,39 +1897,39 @@ var CodingHistoryRun = import_zod25.z.strictObject({
1768
1897
  /** Changed while being read; a later run takes them. */
1769
1898
  changed: nonNegInt,
1770
1899
  failed: nonNegInt,
1771
- failures: import_zod25.z.array(CodingHistoryFailure).max(20),
1900
+ failures: import_zod26.z.array(CodingHistoryFailure).max(20),
1772
1901
  /** Candidates not reached yet. */
1773
1902
  remaining: nonNegInt,
1774
1903
  /** The one line a person reads, e.g. "Imported 12 of 14 sessions. 140 already in AI Matrx." */
1775
- summary: import_zod25.z.string().max(400)
1904
+ summary: import_zod26.z.string().max(400)
1776
1905
  });
1777
- var CodingHistoryStep = import_zod25.z.strictObject({
1906
+ var CodingHistoryStep = import_zod26.z.strictObject({
1778
1907
  /** Null when the run could not start (blocked before a plan existed). */
1779
- plan_id: import_zod25.z.string().regex(/^[0-9a-f]{32}$/).nullable(),
1780
- finished: import_zod25.z.boolean(),
1908
+ plan_id: import_zod26.z.string().regex(/^[0-9a-f]{32}$/).nullable(),
1909
+ finished: import_zod26.z.boolean(),
1781
1910
  blocked: CodingHistoryBlocked.nullable(),
1782
1911
  run: CodingHistoryRun
1783
1912
  });
1784
- var CodingPlanMissingParams = import_zod25.z.strictObject({ credentials: CodingServiceCredentials.nullable() });
1785
- var CodingImportNextParams = import_zod25.z.strictObject({
1786
- plan_id: import_zod25.z.string().regex(/^[0-9a-f]{32}$/),
1913
+ var CodingPlanMissingParams = import_zod26.z.strictObject({ credentials: CodingServiceCredentials.nullable() });
1914
+ var CodingImportNextParams = import_zod26.z.strictObject({
1915
+ plan_id: import_zod26.z.string().regex(/^[0-9a-f]{32}$/),
1787
1916
  credentials: CodingServiceCredentials.nullable()
1788
1917
  });
1789
- var CodingServiceProgress = import_zod25.z.strictObject({
1790
- phase: import_zod25.z.enum(["checking", "importing"]),
1918
+ var CodingServiceProgress = import_zod26.z.strictObject({
1919
+ phase: import_zod26.z.enum(["checking", "importing"]),
1791
1920
  done: nonNegInt,
1792
1921
  total: nonNegInt
1793
1922
  });
1794
- var CodingHistoryImportMissingParams = import_zod25.z.strictObject({});
1795
- var CodingHistoryImportMissingResult = import_zod25.z.strictObject({
1796
- state: import_zod25.z.enum(["done", "blocked", "cancelled"]),
1923
+ var CodingHistoryImportMissingParams = import_zod26.z.strictObject({});
1924
+ var CodingHistoryImportMissingResult = import_zod26.z.strictObject({
1925
+ state: import_zod26.z.enum(["done", "blocked", "cancelled"]),
1797
1926
  blocked: CodingHistoryBlocked.nullable(),
1798
1927
  run: CodingHistoryRun,
1799
1928
  elapsed_ms: nonNegInt
1800
1929
  });
1801
- var CodingHistoryProgressEvent = import_zod25.z.strictObject({
1930
+ var CodingHistoryProgressEvent = import_zod26.z.strictObject({
1802
1931
  request_id: RequestId,
1803
- phase: import_zod25.z.enum(["checking", "importing"]),
1932
+ phase: import_zod26.z.enum(["checking", "importing"]),
1804
1933
  /** Sessions settled so far, of `total` candidates (0 of 0 while checking). */
1805
1934
  done: nonNegInt,
1806
1935
  total: nonNegInt,
@@ -1845,6 +1974,11 @@ var OPS = {
1845
1974
  "apps.profiles.save": { params: AppsProfilesSaveParams, result: AppsProfilesSaveResult, kind: "unary", since: "1.2", errors: ["AUTH_REQUIRED", "AUTH_FORBIDDEN", "NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "DEVICE_OFFLINE", "INTERNAL"] },
1846
1975
  "apps.profiles.remove": { params: AppsProfilesRemoveParams, result: AppsProfilesRemoveResult, kind: "unary", since: "1.2", errors: ["AUTH_REQUIRED", "AUTH_FORBIDDEN", "NOT_FOUND", "DEVICE_OFFLINE", "INTERNAL"] },
1847
1976
  "apps.open": { params: AppsOpenParams, result: AppsOpenResult, kind: "unary", since: "1.2", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "AUTH_REQUIRED", "DEVICE_OFFLINE", "INTERNAL"] },
1977
+ "apps.chats.list": { params: AppsChatsListParams, result: AppsChatsListResult, kind: "unary", since: "1.8", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1978
+ "apps.chats.watch": { params: AppsChatsWatchParams, result: AppsChatsWatchResult, kind: "resource", since: "1.8", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "RESOURCE_BUSY", "INTERNAL"] },
1979
+ "apps.chats.star": { params: AppsChatsStarParams, result: AppsChatsStarResult, kind: "unary", since: "1.8", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1980
+ "apps.projects.file": { params: AppsProjectsFileParams, result: AppsProjectsFileResult, kind: "unary", since: "1.8", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1981
+ "apps.projects.unfile": { params: AppsProjectsUnfileParams, result: AppsProjectsUnfileResult, kind: "unary", since: "1.8", errors: ["NOT_FOUND", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1848
1982
  "proc.list": { params: ProcListParams, result: ProcListResult, kind: "unary", since: "1.3", errors: ["INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1849
1983
  "proc.ports": { params: ProcPortsParams, result: ProcPortsResult, kind: "unary", since: "1.3", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1850
1984
  "proc.kill": { params: ProcKillParams, result: ProcKillResult, kind: "unary", since: "1.3", errors: ["NOT_FOUND", "AUTH_FORBIDDEN", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "INTERNAL"] },
@@ -1881,6 +2015,7 @@ var OPS = {
1881
2015
  };
1882
2016
  var EVENTS = {
1883
2017
  "fs.changed": FsChangedEvent,
2018
+ "apps.chats.changed": AppsChatsChangedEvent,
1884
2019
  "exec.exited": ExecExitedEvent,
1885
2020
  "exec.title": ExecTitleEvent,
1886
2021
  "exec.cwd": ExecCwdEvent,
@@ -2145,7 +2280,28 @@ var NAMED_SCHEMAS = {
2145
2280
  AppsProfilesRemoveParams,
2146
2281
  AppsProfilesRemoveResult,
2147
2282
  AppsOpenParams,
2148
- AppsOpenResult
2283
+ AppsOpenResult,
2284
+ ChatId,
2285
+ ChatPlace,
2286
+ ChatProjectId,
2287
+ ChatWindow,
2288
+ ChatProject,
2289
+ ChatPin,
2290
+ ChatRunning,
2291
+ ChatHidden,
2292
+ ChatLastUse,
2293
+ ChatRow,
2294
+ AppsChatsListParams,
2295
+ AppsChatsListResult,
2296
+ AppsChatsWatchParams,
2297
+ AppsChatsWatchResult,
2298
+ AppsChatsChangedEvent,
2299
+ AppsChatsStarParams,
2300
+ AppsChatsStarResult,
2301
+ AppsProjectsFileParams,
2302
+ AppsProjectsFileResult,
2303
+ AppsProjectsUnfileParams,
2304
+ AppsProjectsUnfileResult
2149
2305
  };
2150
2306
 
2151
2307
  // src/versioning.ts
@@ -2248,7 +2404,7 @@ function forPeer(op, part, value, version) {
2248
2404
  var VERSIONED_RESULT_OPS = [...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys()];
2249
2405
 
2250
2406
  // src/contract.ts
2251
- var CONTRACT_SHA256 = "5525674072a767340a8bd75a4e4b98c588577a866b4d381edeb377401729e14d";
2407
+ var CONTRACT_SHA256 = "7a5b3712fe3200b8f1051edb1cc9702e696a8d24b2033f9ea73e1a422f52dd33";
2252
2408
 
2253
2409
  // src/close-policy.ts
2254
2410
  var CLOSE_RULES = {