@ai-matrx/desktop-protocol 0.17.3 → 0.17.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.17.5
4
+ ### (protocol 1.9)
5
+
6
+ - `apps.chats.place` (place / take_off / hold, with the engine's guards), `apps.projects.file_many`,
7
+ `apps.projects.update` (rename, archive, restore), `apps.projects.copy`; event
8
+ `apps.chats.watch_state {app_key, live, updating, reason}`; `apps.chats.list` gains optional
9
+ `updating` and `live`, stripped for peers below 1.9 (guard: versioning.test.ts "apps chats 1.9").
10
+
11
+ Consumer action: none for older peers.
12
+
13
+ ## 0.17.4
14
+ ### (protocol 1.8)
15
+
16
+ - **A coding app's chats, live.** New ops `apps.chats.list` (windows, projects, chat rows with
17
+ places, pins, hidden-in reasons, running, last use and cache warmth; all or only `ids`),
18
+ `apps.chats.watch` (resource; event `apps.chats.changed {app_key, version, ids, all}`),
19
+ `apps.chats.star`, `apps.projects.file` (a project or a new one by name) and
20
+ `apps.projects.unfile`. Generic per `app_key`; Claude is the first adapter. New ops only, so
21
+ older peers are unaffected.
22
+
23
+ Consumer action: none (Matrx 2 core serves the ops; its Code › Chats and Projects screens read them).
24
+
3
25
  ## 0.17.3
4
26
  ### (protocol 1.7)
5
27
 
package/dist/client.cjs CHANGED
@@ -143,7 +143,7 @@ var import_zod2 = require("zod");
143
143
  // src/schema/primitives.ts
144
144
  var import_zod = require("zod");
145
145
  var PROTOCOL_MAJOR = 1;
146
- var PROTOCOL_MINOR = 7;
146
+ var PROTOCOL_MINOR = 9;
147
147
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
148
148
  var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
149
149
  var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -1433,6 +1433,150 @@ var AppsOpenResult = import_zod23.z.strictObject({
1433
1433
  folder: AbsPath.nullable()
1434
1434
  });
1435
1435
 
1436
+ // src/schema/apps-chats.ts
1437
+ var import_zod24 = require("zod");
1438
+ var ChatId = import_zod24.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/);
1439
+ var ChatPlace = import_zod24.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/);
1440
+ var ChatProjectId = import_zod24.z.string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/);
1441
+ var ChatWindow = import_zod24.z.strictObject({
1442
+ key: ChatPlace,
1443
+ /** The app's default profile (Claude: the main window, which lists every account's chats). */
1444
+ main: import_zod24.z.boolean(),
1445
+ /** The account the window is signed into, when known. */
1446
+ account: import_zod24.z.string().max(320).nullable()
1447
+ });
1448
+ var ChatProject = import_zod24.z.strictObject({
1449
+ id: ChatProjectId,
1450
+ name: import_zod24.z.string().min(1).max(200),
1451
+ archived: import_zod24.z.boolean(),
1452
+ /** Chats in it. */
1453
+ count: nonNegInt
1454
+ });
1455
+ var ChatPin = import_zod24.z.strictObject({
1456
+ /** The window whose account pins it; an account with no window of its own is named by its email. */
1457
+ window: import_zod24.z.string().min(1).max(320),
1458
+ /** When that account's pin list was last read; null when the reading has no time. */
1459
+ observed_at_ms: epochMs.nullable()
1460
+ });
1461
+ var ChatRunning = import_zod24.z.strictObject({
1462
+ window: ChatPlace,
1463
+ /** process: a live process resumed this chat there (exact); activity: that window's own record moved in the last 3 minutes. */
1464
+ how: import_zod24.z.enum(["process", "activity"])
1465
+ });
1466
+ var ChatHidden = import_zod24.z.strictObject({
1467
+ window: ChatPlace,
1468
+ reason: import_zod24.z.string().max(200)
1469
+ });
1470
+ var ChatLastUse = import_zod24.z.strictObject({
1471
+ /** The conversation's last reply. */
1472
+ at_ms: epochMs,
1473
+ window: ChatPlace.nullable(),
1474
+ account: import_zod24.z.string().max(320).nullable(),
1475
+ /** How the window was decided (one short line). */
1476
+ how: import_zod24.z.string().max(120).nullable(),
1477
+ /** The account's 1-hour prompt cache is still warm. */
1478
+ cache_warm: import_zod24.z.boolean(),
1479
+ cache_minutes_left: nonNegInt
1480
+ });
1481
+ var ChatRow = import_zod24.z.strictObject({
1482
+ id: ChatId,
1483
+ /** The short id people see (the listing's first 8 characters). */
1484
+ short_id: import_zod24.z.string().max(16),
1485
+ /** The listing's own name (Claude: local_<id>), null for a chat only in the holder. */
1486
+ record: import_zod24.z.string().max(160).nullable(),
1487
+ title: import_zod24.z.string().max(1e3),
1488
+ last_active_ms: epochMs.nullable(),
1489
+ created_ms: epochMs.nullable(),
1490
+ projects: import_zod24.z.array(ChatProjectId).max(500),
1491
+ starred: import_zod24.z.boolean(),
1492
+ pinned_in: import_zod24.z.array(ChatPin).max(200),
1493
+ /** Every place it is listed now: window keys, plus "holder". */
1494
+ places: import_zod24.z.array(ChatPlace).max(200),
1495
+ held: import_zod24.z.boolean(),
1496
+ running: import_zod24.z.array(ChatRunning).max(200),
1497
+ hidden_in: import_zod24.z.array(ChatHidden).max(200),
1498
+ /** Kept out of the main window on purpose. */
1499
+ hidden_from_main: import_zod24.z.boolean(),
1500
+ /** Listed in a side window and not yet copied into main. */
1501
+ main_pending: import_zod24.z.boolean(),
1502
+ /** A scheduled routine's run (its task id). */
1503
+ scheduled: import_zod24.z.string().max(200).nullable(),
1504
+ /** Created recently and in no project: offered for filing. */
1505
+ new_unfiled: import_zod24.z.boolean(),
1506
+ warnings: import_zod24.z.array(import_zod24.z.string().max(400)).max(20),
1507
+ last_use: ChatLastUse.nullable()
1508
+ });
1509
+ var AppsChatsListParams = import_zod24.z.strictObject({
1510
+ app_key: AppKey,
1511
+ /** Only these chats (a live update re-reads just what changed). */
1512
+ ids: import_zod24.z.array(ChatId).max(500).optional()
1513
+ });
1514
+ var AppsChatsListResult = import_zod24.z.strictObject({
1515
+ app_key: AppKey,
1516
+ /** Bumps on every change the index sees; `apps.chats.changed` carries the same number. */
1517
+ version: nonNegInt,
1518
+ windows: import_zod24.z.array(ChatWindow).max(200),
1519
+ projects: import_zod24.z.array(ChatProject).max(5e3),
1520
+ chats: import_zod24.z.array(ChatRow).max(2e4),
1521
+ /** How long a chat in no project counts as new. */
1522
+ new_window_ms: nonNegInt,
1523
+ /** 1.9: this is the copy saved at the last read, shown while everything is read again. */
1524
+ updating: import_zod24.z.boolean().optional(),
1525
+ /** 1.9: false while the folder watches are down (changes are not arriving); `apps.chats.watch_state` says when it changes. */
1526
+ live: import_zod24.z.boolean().optional()
1527
+ });
1528
+ var AppsChatsWatchParams = import_zod24.z.strictObject({ app_key: AppKey });
1529
+ var AppsChatsWatchResult = import_zod24.z.strictObject({ resource_id: ResourceId, version: nonNegInt });
1530
+ var AppsChatsChangedEvent = import_zod24.z.strictObject({
1531
+ app_key: AppKey,
1532
+ version: nonNegInt,
1533
+ ids: import_zod24.z.array(ChatId).max(1e3),
1534
+ all: import_zod24.z.boolean()
1535
+ });
1536
+ var AppsChatsWatchStateEvent = import_zod24.z.strictObject({
1537
+ app_key: AppKey,
1538
+ live: import_zod24.z.boolean(),
1539
+ updating: import_zod24.z.boolean(),
1540
+ reason: import_zod24.z.string().max(300).nullable()
1541
+ });
1542
+ var AppsChatsPlaceParams = import_zod24.z.strictObject({
1543
+ app_key: AppKey,
1544
+ chat_id: ChatId,
1545
+ action: import_zod24.z.enum(["place", "take_off", "hold"]),
1546
+ /** The window (for place and take_off). */
1547
+ window: ChatPlace.optional(),
1548
+ /** take_off where it is open: stop it there first (the person confirmed). */
1549
+ stop_if_open: import_zod24.z.boolean().default(false)
1550
+ });
1551
+ var AppsChatsPlaceResult = import_zod24.z.strictObject({ chat: ChatRow, message: import_zod24.z.string().max(400) });
1552
+ var AppsProjectsFileManyParams = import_zod24.z.strictObject({
1553
+ app_key: AppKey,
1554
+ chat_ids: import_zod24.z.array(ChatId).min(1).max(500),
1555
+ project_id: ChatProjectId.optional(),
1556
+ new_project_name: import_zod24.z.string().min(1).max(200).optional()
1557
+ });
1558
+ var AppsProjectsFileManyResult = import_zod24.z.strictObject({ chats: import_zod24.z.array(ChatRow).max(500), project: ChatProject });
1559
+ var AppsProjectsUpdateParams = import_zod24.z.strictObject({
1560
+ app_key: AppKey,
1561
+ project_id: ChatProjectId,
1562
+ name: import_zod24.z.string().min(1).max(200).optional(),
1563
+ archived: import_zod24.z.boolean().optional()
1564
+ });
1565
+ var AppsProjectsUpdateResult = import_zod24.z.strictObject({ project: ChatProject });
1566
+ var AppsProjectsCopyParams = import_zod24.z.strictObject({ app_key: AppKey, project_id: ChatProjectId, new_project_name: import_zod24.z.string().min(1).max(200) });
1567
+ var AppsProjectsCopyResult = import_zod24.z.strictObject({ project: ChatProject });
1568
+ var AppsProjectsFileParams = import_zod24.z.strictObject({
1569
+ app_key: AppKey,
1570
+ chat_id: ChatId,
1571
+ project_id: ChatProjectId.optional(),
1572
+ new_project_name: import_zod24.z.string().min(1).max(200).optional()
1573
+ });
1574
+ var AppsProjectsFileResult = import_zod24.z.strictObject({ chat: ChatRow, project: ChatProject });
1575
+ var AppsProjectsUnfileParams = import_zod24.z.strictObject({ app_key: AppKey, chat_id: ChatId, project_id: ChatProjectId });
1576
+ var AppsProjectsUnfileResult = import_zod24.z.strictObject({ chat: ChatRow });
1577
+ var AppsChatsStarParams = import_zod24.z.strictObject({ app_key: AppKey, chat_id: ChatId, starred: import_zod24.z.boolean() });
1578
+ var AppsChatsStarResult = import_zod24.z.strictObject({ chat: ChatRow });
1579
+
1436
1580
  // src/schema/registry.ts
1437
1581
  var FS_ERR = ["NOT_FOUND", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "RESOURCE_BUSY", "INTERNAL"];
1438
1582
  var OPS = {
@@ -1470,6 +1614,15 @@ var OPS = {
1470
1614
  "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"] },
1471
1615
  "apps.profiles.remove": { params: AppsProfilesRemoveParams, result: AppsProfilesRemoveResult, kind: "unary", since: "1.2", errors: ["AUTH_REQUIRED", "AUTH_FORBIDDEN", "NOT_FOUND", "DEVICE_OFFLINE", "INTERNAL"] },
1472
1616
  "apps.open": { params: AppsOpenParams, result: AppsOpenResult, kind: "unary", since: "1.2", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "AUTH_REQUIRED", "DEVICE_OFFLINE", "INTERNAL"] },
1617
+ "apps.chats.list": { params: AppsChatsListParams, result: AppsChatsListResult, kind: "unary", since: "1.8", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1618
+ "apps.chats.watch": { params: AppsChatsWatchParams, result: AppsChatsWatchResult, kind: "resource", since: "1.8", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "RESOURCE_BUSY", "INTERNAL"] },
1619
+ "apps.chats.star": { params: AppsChatsStarParams, result: AppsChatsStarResult, kind: "unary", since: "1.8", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1620
+ "apps.projects.file": { params: AppsProjectsFileParams, result: AppsProjectsFileResult, kind: "unary", since: "1.8", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1621
+ "apps.chats.place": { params: AppsChatsPlaceParams, result: AppsChatsPlaceResult, kind: "unary", since: "1.9", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1622
+ "apps.projects.file_many": { params: AppsProjectsFileManyParams, result: AppsProjectsFileManyResult, kind: "unary", since: "1.9", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1623
+ "apps.projects.update": { params: AppsProjectsUpdateParams, result: AppsProjectsUpdateResult, kind: "unary", since: "1.9", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1624
+ "apps.projects.copy": { params: AppsProjectsCopyParams, result: AppsProjectsCopyResult, kind: "unary", since: "1.9", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1625
+ "apps.projects.unfile": { params: AppsProjectsUnfileParams, result: AppsProjectsUnfileResult, kind: "unary", since: "1.8", errors: ["NOT_FOUND", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1473
1626
  "proc.list": { params: ProcListParams, result: ProcListResult, kind: "unary", since: "1.3", errors: ["INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1474
1627
  "proc.ports": { params: ProcPortsParams, result: ProcPortsResult, kind: "unary", since: "1.3", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
1475
1628
  "proc.kill": { params: ProcKillParams, result: ProcKillResult, kind: "unary", since: "1.3", errors: ["NOT_FOUND", "AUTH_FORBIDDEN", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "INTERNAL"] },
@@ -1506,6 +1659,8 @@ var OPS = {
1506
1659
  };
1507
1660
  var EVENTS = {
1508
1661
  "fs.changed": FsChangedEvent,
1662
+ "apps.chats.changed": AppsChatsChangedEvent,
1663
+ "apps.chats.watch_state": AppsChatsWatchStateEvent,
1509
1664
  "exec.exited": ExecExitedEvent,
1510
1665
  "exec.title": ExecTitleEvent,
1511
1666
  "exec.cwd": ExecCwdEvent,