@ai-matrx/desktop-protocol 0.17.13 → 0.19.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/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.19.0 (protocol 1.19)
4
+
5
+ - **A whole project into one window.** `apps.projects.to_window {app_key, project_id, window, take_off, group, dry_run}` puts every chat of a project into one window in one pass. `take_off` also takes each off its other side windows where safe (never main, the holder, a window where it is open, or its last place); every chat left alone comes back in `skipped` with the window and the reason. `group` files them under a sidebar group named after the project in that window (only while it is closed; `group.reason` says why not). `dry_run` returns the plan and writes nothing. Additive; older peers never call it.
6
+ - Includes protocol 1.18 (a local server's `cpu_percent`, `memory_bytes`).
7
+
8
+ **Consumer action:** none (new op).
9
+
10
+ ## 0.18.0
11
+
12
+ The three UUID-shaped ids (`DeviceId`, the desktop app profile id, a coding session's `user_id`) take their pattern from `@ai-matrx/kit/uuid`'s `UUID_SHAPE_PATTERN` instead of spelling the regex. The generated JSON Schema and Pydantic models are byte-identical (`generate --check` contract hash unchanged). New dependency: `@ai-matrx/kit`.
13
+
14
+ **Consumer action:** none.
15
+
3
16
  ## 0.17.13
4
17
  ### Unreleased
5
18
  ### (protocol 1.17)
package/dist/client.cjs CHANGED
@@ -142,13 +142,14 @@ var import_zod2 = require("zod");
142
142
 
143
143
  // src/schema/primitives.ts
144
144
  var import_zod = require("zod");
145
+ var import_uuid = require("@ai-matrx/kit/uuid");
145
146
  var PROTOCOL_MAJOR = 1;
146
- var PROTOCOL_MINOR = 17;
147
+ var PROTOCOL_MINOR = 19;
147
148
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
148
149
  var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
149
150
  var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
150
151
  var ResourceId = import_zod.z.string().regex(/^(pty|watch)_[A-Za-z0-9]{16,40}$/);
151
- var DeviceId = import_zod.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}$/);
152
+ var DeviceId = import_zod.z.string().regex(import_uuid.UUID_SHAPE_PATTERN);
152
153
  var AbsPath = import_zod.z.string().min(1).max(4096).regex(/^(\/|[A-Za-z]:\/)[^\\\u0000]*$/);
153
154
  var u32 = import_zod.z.int().min(0).max(4294967295);
154
155
  var nonNegInt = import_zod.z.int().min(0);
@@ -1324,7 +1325,11 @@ var StackServer = import_zod20.z.strictObject({
1324
1325
  started_at_ms: epochMs.nullable(),
1325
1326
  restarts: nonNegInt,
1326
1327
  exit_code: import_zod20.z.int().nullable(),
1327
- pid: import_zod20.z.int().nullable()
1328
+ pid: import_zod20.z.int().nullable(),
1329
+ /** (1.18) CPU of the server's process and everything under it, in percent of one core; absent when it is not running. */
1330
+ cpu_percent: import_zod20.z.number().min(0).optional(),
1331
+ /** (1.18) Memory of the same processes: the physical footprint (Activity Monitor's Memory) summed; absent when it is not running. */
1332
+ memory_bytes: nonNegInt.optional()
1328
1333
  });
1329
1334
  var StackEvent = import_zod20.z.strictObject({
1330
1335
  at_ms: epochMs,
@@ -1467,9 +1472,10 @@ var ExecJobListResult = import_zod22.z.strictObject({ jobs: import_zod22.z.array
1467
1472
 
1468
1473
  // src/schema/coding.ts
1469
1474
  var import_zod23 = require("zod");
1475
+ var import_uuid2 = require("@ai-matrx/kit/uuid");
1470
1476
  var CodingServiceCredentials = import_zod23.z.strictObject({
1471
1477
  access_token: import_zod23.z.string().min(16).max(16384),
1472
- user_id: import_zod23.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}$/),
1478
+ user_id: import_zod23.z.string().regex(import_uuid2.UUID_SHAPE_PATTERN),
1473
1479
  /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
1474
1480
  server_url: import_zod23.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1475
1481
  });
@@ -1542,8 +1548,9 @@ var CodingHistoryProgressEvent = import_zod23.z.strictObject({
1542
1548
 
1543
1549
  // src/schema/apps.ts
1544
1550
  var import_zod24 = require("zod");
1551
+ var import_uuid3 = require("@ai-matrx/kit/uuid");
1545
1552
  var AppKey = import_zod24.z.string().regex(/^[a-z][a-z0-9_-]{0,39}$/);
1546
- var AppProfileId = import_zod24.z.string().regex(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/);
1553
+ var AppProfileId = import_zod24.z.string().regex(import_uuid3.UUID_SHAPE_PATTERN);
1547
1554
  var AppProfileLocator = import_zod24.z.string().min(1).max(512).regex(/^[A-Za-z0-9 _()+@,-][A-Za-z0-9 ._()+@,-]{0,127}(\/[A-Za-z0-9 _()+@,-][A-Za-z0-9 ._()+@,-]{0,127}){0,7}$/);
1548
1555
  var AppSupport = import_zod24.z.enum(["supported", "partial", "unsupported"]);
1549
1556
  var AppFeatureStatus = import_zod24.z.strictObject({
@@ -1896,6 +1903,43 @@ var AppsProjectsCreateParams = import_zod26.z.strictObject({ app_key: AppKey, na
1896
1903
  var AppsProjectsCreateResult = import_zod26.z.strictObject({ project: ChatProject });
1897
1904
  var AppsProjectsImportPinsParams = import_zod26.z.strictObject({ app_key: AppKey });
1898
1905
  var AppsProjectsImportPinsResult = import_zod26.z.strictObject({ message: import_zod26.z.string().max(400) });
1906
+ var ProjectMoveChat = import_zod26.z.strictObject({ chat_id: ChatId, title: import_zod26.z.string().max(300) });
1907
+ var ProjectMoveSkip = import_zod26.z.strictObject({ chat_id: ChatId, title: import_zod26.z.string().max(300), window: ChatPlace.nullable(), reason: import_zod26.z.string().max(400) });
1908
+ var ProjectMoveGroup = import_zod26.z.strictObject({
1909
+ ok: import_zod26.z.boolean(),
1910
+ name: import_zod26.z.string().max(200),
1911
+ /** Why it is not (or was not) grouped — e.g. the window is open. */
1912
+ reason: import_zod26.z.string().max(400).optional(),
1913
+ /** Chats that get (or got) the group; already in it; taken from another group of the window. */
1914
+ assign: nonNegInt.optional(),
1915
+ already: nonNegInt.optional(),
1916
+ from_other_groups: nonNegInt.optional(),
1917
+ /** A group of that name was already there (reused, never doubled). */
1918
+ group_exists: import_zod26.z.boolean().optional()
1919
+ });
1920
+ var AppsProjectsToWindowParams = import_zod26.z.strictObject({
1921
+ app_key: AppKey,
1922
+ project_id: ChatProjectId,
1923
+ window: ChatPlace,
1924
+ /** Also take each chat off its other side windows where safe (never main, the holder, an open window). */
1925
+ take_off: import_zod26.z.boolean().default(false),
1926
+ /** Also group them under the project's name in that window's sidebar (closed windows only). */
1927
+ group: import_zod26.z.boolean().default(false),
1928
+ dry_run: import_zod26.z.boolean().default(false)
1929
+ });
1930
+ var AppsProjectsToWindowResult = import_zod26.z.strictObject({
1931
+ project_id: ChatProjectId,
1932
+ window: ChatPlace,
1933
+ dry_run: import_zod26.z.boolean(),
1934
+ place: import_zod26.z.array(ProjectMoveChat).max(5e3),
1935
+ already: import_zod26.z.array(ProjectMoveChat).max(5e3),
1936
+ take_off: import_zod26.z.array(ProjectMoveChat.extend({ window: ChatPlace })).max(2e4),
1937
+ skipped: import_zod26.z.array(ProjectMoveSkip).max(2e4),
1938
+ /** Chats of the project from other apps (no windows to place into), left as they are. */
1939
+ other_apps: nonNegInt,
1940
+ group: ProjectMoveGroup.nullable(),
1941
+ message: import_zod26.z.string().max(400)
1942
+ });
1899
1943
  var ColdChat = import_zod26.z.strictObject({
1900
1944
  id: ChatId,
1901
1945
  title: import_zod26.z.string().max(1e3),
@@ -2054,6 +2098,7 @@ var OPS = {
2054
2098
  "apps.projects.move": { params: AppsProjectsMoveParams, result: AppsProjectsMoveResult, kind: "unary", since: "1.10", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2055
2099
  "apps.projects.create": { params: AppsProjectsCreateParams, result: AppsProjectsCreateResult, kind: "unary", since: "1.10", errors: ["INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2056
2100
  "apps.projects.import_pins": { params: AppsProjectsImportPinsParams, result: AppsProjectsImportPinsResult, kind: "unary", since: "1.10", errors: ["CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2101
+ "apps.projects.to_window": { params: AppsProjectsToWindowParams, result: AppsProjectsToWindowResult, kind: "unary", since: "1.19", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2057
2102
  // 1.11: Going cold, Spend, sync health, windows upkeep.
2058
2103
  "apps.chats.cold": { params: AppsChatsColdParams, result: AppsChatsColdResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2059
2104
  "apps.chats.open": { params: AppsChatsOpenParams, result: AppsWindowActionResult, kind: "unary", since: "1.11", errors: ["NOT_FOUND", "CONFLICT", "TIMEOUT", "PLATFORM_UNSUPPORTED", "INTERNAL"] },