@ai-matrx/desktop-protocol 0.21.15 → 0.21.17

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/client.cjs CHANGED
@@ -144,7 +144,7 @@ var import_zod2 = require("zod");
144
144
  var import_zod = require("zod");
145
145
  var import_uuid = require("@ai-matrx/kit/uuid");
146
146
  var PROTOCOL_MAJOR = 1;
147
- var PROTOCOL_MINOR = 22;
147
+ var PROTOCOL_MINOR = 24;
148
148
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
149
149
  var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
150
150
  var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -448,6 +448,23 @@ var SysinfoGetResult = import_zod5.z.strictObject({
448
448
  })
449
449
  )
450
450
  });
451
+ var SysinfoHardwareParams = import_zod5.z.strictObject({});
452
+ var SysinfoHardwareResult = import_zod5.z.strictObject({
453
+ /** "Mac Studio", "MacBook Pro", "ThinkPad X1 Carbon". */
454
+ model_name: import_zod5.z.string().max(128).nullable(),
455
+ /** What tells two of that model apart: "M3 Ultra, 2025", "14-inch, Nov 2023". */
456
+ model_detail: import_zod5.z.string().max(128).nullable(),
457
+ /** "Mac15,14", the vendor's model number. */
458
+ model_identifier: import_zod5.z.string().max(128).nullable(),
459
+ /** "Apple M3 Ultra", "Intel Core i7-1185G7". */
460
+ chip: import_zod5.z.string().max(128).nullable(),
461
+ serial_number: import_zod5.z.string().max(128).nullable(),
462
+ /** The OS's own name with its release name: "macOS Tahoe", "Windows 11 Pro", "Ubuntu". */
463
+ os_name: import_zod5.z.string().max(64).nullable(),
464
+ /** "26.6.2". */
465
+ os_version: import_zod5.z.string().max(64).nullable(),
466
+ os_build: import_zod5.z.string().max(64).nullable()
467
+ });
451
468
 
452
469
  // src/schema/fs.ts
453
470
  var import_zod6 = require("zod");
@@ -980,164 +997,257 @@ var WebBrowserFetchResult = import_zod13.z.strictObject({
980
997
  });
981
998
  var ToolsServiceProgress = import_zod13.z.strictObject({ phase: import_zod13.z.enum(["fetching", "installing"]), done: nonNegInt, total: nonNegInt });
982
999
 
983
- // src/schema/proc.ts
1000
+ // src/schema/account.ts
984
1001
  var import_zod14 = require("zod");
985
- var ProcSort = import_zod14.z.enum(["cpu", "memory", "pid", "name"]);
986
- var ProcListParams = import_zod14.z.strictObject({
1002
+ var import_uuid2 = require("@ai-matrx/kit/uuid");
1003
+ var AccountRowId = import_zod14.z.string().regex(import_uuid2.UUID_SHAPE_PATTERN);
1004
+ var AccountReadState = import_zod14.z.enum(["ok", "signed_out", "unavailable"]);
1005
+ var AccountAgent = import_zod14.z.strictObject({
1006
+ id: AccountRowId,
1007
+ name: import_zod14.z.string().min(1).max(200),
1008
+ description: import_zod14.z.string().max(2e3),
1009
+ /** The agent's category ("" when it has none): the library's folders. */
1010
+ category: import_zod14.z.string().max(120),
1011
+ /** The agent's kind as the platform names it (user, builtin, orchestra…). */
1012
+ agent_type: import_zod14.z.string().max(40),
1013
+ is_favorite: import_zod14.z.boolean(),
1014
+ /** The person owns it (false: shared with them). */
1015
+ is_owner: import_zod14.z.boolean(),
1016
+ /** Who shared it, when it is shared with the person. */
1017
+ shared_by: import_zod14.z.string().max(320).nullable(),
1018
+ /** The organization it belongs to. */
1019
+ organization: import_zod14.z.string().max(200).nullable(),
1020
+ updated_at_ms: epochMs
1021
+ });
1022
+ var AccountAgentsListParams = import_zod14.z.strictObject({});
1023
+ var AccountAgentsListResult = import_zod14.z.strictObject({
1024
+ state: AccountReadState,
1025
+ /** One line when state is not "ok" (what went wrong, in plain words); null otherwise. */
1026
+ problem: import_zod14.z.string().max(300).nullable(),
1027
+ agents: import_zod14.z.array(AccountAgent).max(2e3)
1028
+ });
1029
+ var VaultItemKind = import_zod14.z.enum(["login", "passkey", "key", "other"]);
1030
+ var VaultFieldSummary = import_zod14.z.strictObject({
1031
+ key: import_zod14.z.string().min(1).max(120),
1032
+ /** visible: shown as written; revealable: copyable on request; sealed: never leaves the server. */
1033
+ handling: import_zod14.z.enum(["visible", "revealable", "sealed"]),
1034
+ /** The masked hint the server keeps ("••••ab12"), or "" when it keeps none. */
1035
+ hint: import_zod14.z.string().max(200)
1036
+ });
1037
+ var VaultItemSummary = import_zod14.z.strictObject({
1038
+ id: AccountRowId,
1039
+ name: import_zod14.z.string().min(1).max(200),
1040
+ kind: VaultItemKind,
1041
+ /** The platform's definition ("website_login", "native_passkey", "custom"…). */
1042
+ definition: import_zod14.z.string().max(80),
1043
+ /** The sign-in's user name hint (its "username" field's hint); null when it has none. */
1044
+ username: import_zod14.z.string().max(200).nullable(),
1045
+ /** The sites a sign-in is for. */
1046
+ urls: import_zod14.z.array(import_zod14.z.string().max(2048)).max(20),
1047
+ notes: import_zod14.z.string().max(4e3).nullable(),
1048
+ fields: import_zod14.z.array(VaultFieldSummary).max(50),
1049
+ /** Shared with the person by someone else (Passwords' shared groups). */
1050
+ shared: import_zod14.z.boolean(),
1051
+ /** active, or the server's other states (a deleted item waits in "deleted"). */
1052
+ status: import_zod14.z.string().max(40),
1053
+ created_at_ms: epochMs,
1054
+ updated_at_ms: epochMs
1055
+ });
1056
+ var AccountVaultListParams = import_zod14.z.strictObject({});
1057
+ var AccountVaultListResult = import_zod14.z.strictObject({
1058
+ state: AccountReadState,
1059
+ problem: import_zod14.z.string().max(300).nullable(),
1060
+ items: import_zod14.z.array(VaultItemSummary).max(5e3)
1061
+ });
1062
+ var AccountVaultCopyParams = import_zod14.z.strictObject({
1063
+ item_id: AccountRowId,
1064
+ field_key: import_zod14.z.string().min(1).max(120)
1065
+ });
1066
+ var AccountVaultCopyResult = import_zod14.z.strictObject({
1067
+ copied: import_zod14.z.boolean(),
1068
+ /** When the clipboard is cleared again if it still holds the value (Passwords clears a copied password). */
1069
+ clears_at_ms: epochMs
1070
+ });
1071
+
1072
+ // src/schema/proc.ts
1073
+ var import_zod15 = require("zod");
1074
+ var ProcSort = import_zod15.z.enum(["cpu", "memory", "pid", "name"]);
1075
+ var ProcListParams = import_zod15.z.strictObject({
987
1076
  /** Case-insensitive substring of the process name or its command line. */
988
- name: import_zod14.z.string().min(1).max(128).optional(),
1077
+ name: import_zod15.z.string().min(1).max(128).optional(),
989
1078
  sort: ProcSort.default("cpu"),
990
- limit: import_zod14.z.int().min(1).max(500).default(50)
1079
+ limit: import_zod15.z.int().min(1).max(500).default(50)
991
1080
  });
992
- var ProcInfo = import_zod14.z.strictObject({
993
- pid: import_zod14.z.int().min(0),
1081
+ var ProcInfo = import_zod15.z.strictObject({
1082
+ pid: import_zod15.z.int().min(0),
994
1083
  /** Parent process id; null where the OS does not report it. */
995
- ppid: import_zod14.z.int().min(0).nullable(),
996
- name: import_zod14.z.string().max(256),
1084
+ ppid: import_zod15.z.int().min(0).nullable(),
1085
+ name: import_zod15.z.string().max(256),
997
1086
  /** The command line, cut to 1024 characters. */
998
- command: import_zod14.z.string().max(1024),
1087
+ command: import_zod15.z.string().max(1024),
999
1088
  /** Share of one core, as `ps` and Task Manager report it; null where the OS does not say. */
1000
- cpu_percent: import_zod14.z.number().min(0).nullable(),
1089
+ cpu_percent: import_zod15.z.number().min(0).nullable(),
1001
1090
  memory_bytes: nonNegInt.nullable(),
1002
- user: import_zod14.z.string().max(128).nullable()
1091
+ user: import_zod15.z.string().max(128).nullable()
1003
1092
  });
1004
- var ProcListResult = import_zod14.z.strictObject({
1005
- processes: import_zod14.z.array(ProcInfo).max(500),
1093
+ var ProcListResult = import_zod15.z.strictObject({
1094
+ processes: import_zod15.z.array(ProcInfo).max(500),
1006
1095
  /** Processes that matched before `limit`. */
1007
1096
  total: nonNegInt,
1008
- truncated: import_zod14.z.boolean()
1097
+ truncated: import_zod15.z.boolean()
1009
1098
  });
1010
- var ProcPortsParams = import_zod14.z.strictObject({
1099
+ var ProcPortsParams = import_zod15.z.strictObject({
1011
1100
  /** Only this port. */
1012
- port: import_zod14.z.int().min(1).max(65535).optional()
1101
+ port: import_zod15.z.int().min(1).max(65535).optional()
1013
1102
  });
1014
- var ProcPort = import_zod14.z.strictObject({
1015
- port: import_zod14.z.int().min(1).max(65535),
1016
- protocol: import_zod14.z.enum(["tcp", "udp"]),
1103
+ var ProcPort = import_zod15.z.strictObject({
1104
+ port: import_zod15.z.int().min(1).max(65535),
1105
+ protocol: import_zod15.z.enum(["tcp", "udp"]),
1017
1106
  /** The local address it listens on ("127.0.0.1", "*", "::"). */
1018
- address: import_zod14.z.string().max(64),
1019
- pid: import_zod14.z.int().min(0).nullable(),
1020
- process: import_zod14.z.string().max(256).nullable()
1107
+ address: import_zod15.z.string().max(64),
1108
+ pid: import_zod15.z.int().min(0).nullable(),
1109
+ process: import_zod15.z.string().max(256).nullable()
1021
1110
  });
1022
- var ProcPortsResult = import_zod14.z.strictObject({ ports: import_zod14.z.array(ProcPort).max(4e3) });
1023
- var ProcKillParams = import_zod14.z.strictObject({
1024
- pid: import_zod14.z.int().min(1),
1111
+ var ProcPortsResult = import_zod15.z.strictObject({ ports: import_zod15.z.array(ProcPort).max(4e3) });
1112
+ var ProcKillParams = import_zod15.z.strictObject({
1113
+ pid: import_zod15.z.int().min(1),
1025
1114
  /** Kill outright (SIGKILL; on Windows the same /F) instead of asking it to quit. */
1026
- force: import_zod14.z.boolean().default(false)
1115
+ force: import_zod15.z.boolean().default(false)
1027
1116
  });
1028
- var ProcKillResult = import_zod14.z.strictObject({
1029
- pid: import_zod14.z.int().min(1),
1030
- signal: import_zod14.z.enum(["SIGTERM", "SIGKILL"]),
1117
+ var ProcKillResult = import_zod15.z.strictObject({
1118
+ pid: import_zod15.z.int().min(1),
1119
+ signal: import_zod15.z.enum(["SIGTERM", "SIGKILL"]),
1031
1120
  /** True when the process was gone within 3 s. */
1032
- exited: import_zod14.z.boolean()
1121
+ exited: import_zod15.z.boolean()
1033
1122
  });
1034
1123
 
1035
1124
  // src/schema/system.ts
1036
- var import_zod15 = require("zod");
1037
- var SystemOpenUrlParams = import_zod15.z.strictObject({
1125
+ var import_zod16 = require("zod");
1126
+ var SystemOpenUrlParams = import_zod16.z.strictObject({
1038
1127
  /** http, https or mailto; opened in the person's default app for it. */
1039
- url: import_zod15.z.string().min(1).max(4096)
1128
+ url: import_zod16.z.string().min(1).max(4096)
1040
1129
  });
1041
- var SystemOpenUrlResult = import_zod15.z.strictObject({ url: import_zod15.z.string().max(4096) });
1042
- var SystemOpenPathParams = import_zod15.z.strictObject({
1130
+ var SystemOpenUrlResult = import_zod16.z.strictObject({ url: import_zod16.z.string().max(4096) });
1131
+ var SystemOpenPathParams = import_zod16.z.strictObject({
1043
1132
  path: AbsPath,
1044
1133
  /** Show it in the file manager (Finder, Explorer) instead of opening it. */
1045
- reveal: import_zod15.z.boolean().default(false)
1134
+ reveal: import_zod16.z.boolean().default(false)
1046
1135
  });
1047
- var SystemOpenPathResult = import_zod15.z.strictObject({ path: AbsPath, revealed: import_zod15.z.boolean() });
1048
- var SystemNotifyParams = import_zod15.z.strictObject({
1049
- title: import_zod15.z.string().min(1).max(128),
1050
- body: import_zod15.z.string().max(1024).default("")
1136
+ var SystemOpenPathResult = import_zod16.z.strictObject({ path: AbsPath, revealed: import_zod16.z.boolean() });
1137
+ var SystemNotifyParams = import_zod16.z.strictObject({
1138
+ title: import_zod16.z.string().min(1).max(128),
1139
+ body: import_zod16.z.string().max(1024).default("")
1051
1140
  });
1052
- var SystemNotifyResult = import_zod15.z.strictObject({
1141
+ var SystemNotifyResult = import_zod16.z.strictObject({
1053
1142
  /** False when this computer has no notification service to show it (a bare Linux box). */
1054
- shown: import_zod15.z.boolean()
1055
- });
1143
+ shown: import_zod16.z.boolean()
1144
+ });
1145
+ var SystemSettingsPane = import_zod16.z.enum([
1146
+ "displays",
1147
+ "night_shift",
1148
+ "sound",
1149
+ "keyboard",
1150
+ "keyboard_shortcuts",
1151
+ "text_input",
1152
+ "dictation",
1153
+ "energy",
1154
+ "about",
1155
+ "storage",
1156
+ "system_report"
1157
+ ]);
1158
+ var SystemOpenSettingsParams = import_zod16.z.strictObject({ pane: SystemSettingsPane });
1159
+ var SystemOpenSettingsResult = import_zod16.z.strictObject({ pane: SystemSettingsPane });
1056
1160
 
1057
1161
  // src/schema/screen.ts
1058
- var import_zod16 = require("zod");
1059
- var ScreenDisplay = import_zod16.z.strictObject({
1162
+ var import_zod17 = require("zod");
1163
+ var ScreenDisplay = import_zod17.z.strictObject({
1060
1164
  /** The OS's display id; pass it to screen.capture. */
1061
1165
  id: nonNegInt,
1062
- name: import_zod16.z.string().max(128),
1166
+ name: import_zod17.z.string().max(128),
1063
1167
  /** Position and size in the OS's logical points (x and y may be negative left of or above the main display). */
1064
- x: import_zod16.z.int(),
1065
- y: import_zod16.z.int(),
1066
- width: import_zod16.z.int().min(1),
1067
- height: import_zod16.z.int().min(1),
1168
+ x: import_zod17.z.int(),
1169
+ y: import_zod17.z.int(),
1170
+ width: import_zod17.z.int().min(1),
1171
+ height: import_zod17.z.int().min(1),
1068
1172
  /** Pixels per point (2 on a Retina display). */
1069
- scale: import_zod16.z.number().min(0.1).max(8),
1070
- primary: import_zod16.z.boolean()
1071
- });
1072
- var ScreenListParams = import_zod16.z.strictObject({});
1073
- var ScreenListResult = import_zod16.z.strictObject({ displays: import_zod16.z.array(ScreenDisplay).max(32) });
1074
- var ScreenCaptureParams = import_zod16.z.strictObject({
1173
+ scale: import_zod17.z.number().min(0.1).max(8),
1174
+ primary: import_zod17.z.boolean(),
1175
+ /** (1.24) Clockwise rotation in degrees (Displays' Rotation: 0 is Standard). */
1176
+ rotation: import_zod17.z.int().min(0).max(359).optional(),
1177
+ /** (1.24) Refresh rate in hertz; absent where the OS does not say. */
1178
+ refresh_hz: import_zod17.z.number().min(0).max(1e3).optional(),
1179
+ /** (1.24) The computer's own screen (a laptop's), not one plugged in. */
1180
+ builtin: import_zod17.z.boolean().optional()
1181
+ });
1182
+ var ScreenListParams = import_zod17.z.strictObject({});
1183
+ var ScreenListResult = import_zod17.z.strictObject({ displays: import_zod17.z.array(ScreenDisplay).max(32) });
1184
+ var ScreenCaptureParams = import_zod17.z.strictObject({
1075
1185
  /** The display (from screen.list); the primary display when absent. */
1076
1186
  display_id: nonNegInt.optional(),
1077
- format: import_zod16.z.enum(["jpeg", "png"]).default("jpeg"),
1187
+ format: import_zod17.z.enum(["jpeg", "png"]).default("jpeg"),
1078
1188
  /** Scale the picture down to at most this width in pixels (kept when already smaller). */
1079
- max_width: import_zod16.z.int().min(160).max(7680).default(1600)
1189
+ max_width: import_zod17.z.int().min(160).max(7680).default(1600)
1080
1190
  });
1081
- var ScreenCaptureResult = import_zod16.z.strictObject({
1191
+ var ScreenCaptureResult = import_zod17.z.strictObject({
1082
1192
  display_id: nonNegInt,
1083
- mime_type: import_zod16.z.enum(["image/jpeg", "image/png"]),
1084
- width: import_zod16.z.int().min(1),
1085
- height: import_zod16.z.int().min(1),
1193
+ mime_type: import_zod17.z.enum(["image/jpeg", "image/png"]),
1194
+ width: import_zod17.z.int().min(1),
1195
+ height: import_zod17.z.int().min(1),
1086
1196
  /** The display's full resolution in pixels, before scaling. */
1087
- source_width: import_zod16.z.int().min(1),
1088
- source_height: import_zod16.z.int().min(1),
1197
+ source_width: import_zod17.z.int().min(1),
1198
+ source_height: import_zod17.z.int().min(1),
1089
1199
  /** The image, base64 (at most 6 MiB of text). */
1090
- data_base64: import_zod16.z.string().max(6291456)
1200
+ data_base64: import_zod17.z.string().max(6291456)
1091
1201
  });
1092
1202
 
1093
1203
  // src/schema/window.ts
1094
- var import_zod17 = require("zod");
1095
- var WindowInfo = import_zod17.z.strictObject({
1204
+ var import_zod18 = require("zod");
1205
+ var WindowInfo = import_zod18.z.strictObject({
1096
1206
  /** The OS's window handle (macOS window number, Windows HWND, X11 window id). */
1097
1207
  id: nonNegInt,
1098
- title: import_zod17.z.string().max(512),
1208
+ title: import_zod18.z.string().max(512),
1099
1209
  /** Position and size in logical points. */
1100
- x: import_zod17.z.int(),
1101
- y: import_zod17.z.int(),
1102
- width: import_zod17.z.int().min(0),
1103
- height: import_zod17.z.int().min(0),
1210
+ x: import_zod18.z.int(),
1211
+ y: import_zod18.z.int(),
1212
+ width: import_zod18.z.int().min(0),
1213
+ height: import_zod18.z.int().min(0),
1104
1214
  /**
1105
1215
  * The application that owns the window, by the name the OS shows people; absent when the OS does
1106
1216
  * not say. Optional (never null, the schema rule) because it was added in protocol 1.7: an older
1107
1217
  * app's answer has no such field (FIELDS_SINCE).
1108
1218
  */
1109
- app: import_zod17.z.string().max(256).optional(),
1219
+ app: import_zod18.z.string().max(256).optional(),
1110
1220
  /** The owning process id; absent when the OS does not say. Added in protocol 1.7. */
1111
- pid: import_zod17.z.int().min(0).optional()
1221
+ pid: import_zod18.z.int().min(0).optional()
1112
1222
  });
1113
- var WindowListParams = import_zod17.z.strictObject({
1223
+ var WindowListParams = import_zod18.z.strictObject({
1114
1224
  /** Case-insensitive substring of the window title. */
1115
- title: import_zod17.z.string().min(1).max(256).optional(),
1116
- limit: import_zod17.z.int().min(1).max(500).default(100)
1225
+ title: import_zod18.z.string().min(1).max(256).optional(),
1226
+ limit: import_zod18.z.int().min(1).max(500).default(100)
1117
1227
  });
1118
- var WindowListResult = import_zod17.z.strictObject({
1119
- windows: import_zod17.z.array(WindowInfo).max(500),
1228
+ var WindowListResult = import_zod18.z.strictObject({
1229
+ windows: import_zod18.z.array(WindowInfo).max(500),
1120
1230
  total: nonNegInt,
1121
- truncated: import_zod17.z.boolean()
1231
+ truncated: import_zod18.z.boolean()
1122
1232
  });
1123
- var WindowFocusParams = import_zod17.z.strictObject({ id: nonNegInt });
1124
- var WindowFocusResult = import_zod17.z.strictObject({ window: WindowInfo });
1125
- var WindowMoveParams = import_zod17.z.strictObject({
1233
+ var WindowFocusParams = import_zod18.z.strictObject({ id: nonNegInt });
1234
+ var WindowFocusResult = import_zod18.z.strictObject({ window: WindowInfo });
1235
+ var WindowMoveParams = import_zod18.z.strictObject({
1126
1236
  id: nonNegInt,
1127
1237
  /** New top-left corner; unchanged when absent. */
1128
- x: import_zod17.z.int().optional(),
1129
- y: import_zod17.z.int().optional(),
1238
+ x: import_zod18.z.int().optional(),
1239
+ y: import_zod18.z.int().optional(),
1130
1240
  /** New size; unchanged when absent. */
1131
- width: import_zod17.z.int().min(50).max(16384).optional(),
1132
- height: import_zod17.z.int().min(50).max(16384).optional()
1241
+ width: import_zod18.z.int().min(50).max(16384).optional(),
1242
+ height: import_zod18.z.int().min(50).max(16384).optional()
1133
1243
  });
1134
- var WindowMoveResult = import_zod17.z.strictObject({ window: WindowInfo });
1135
- var WindowMinimizeParams = import_zod17.z.strictObject({ id: nonNegInt });
1136
- var WindowMinimizeResult = import_zod17.z.strictObject({ id: nonNegInt });
1244
+ var WindowMoveResult = import_zod18.z.strictObject({ window: WindowInfo });
1245
+ var WindowMinimizeParams = import_zod18.z.strictObject({ id: nonNegInt });
1246
+ var WindowMinimizeResult = import_zod18.z.strictObject({ id: nonNegInt });
1137
1247
 
1138
1248
  // src/schema/input.ts
1139
- var import_zod18 = require("zod");
1140
- var InputKey = import_zod18.z.enum([
1249
+ var import_zod19 = require("zod");
1250
+ var InputKey = import_zod19.z.enum([
1141
1251
  "cmd",
1142
1252
  "ctrl",
1143
1253
  "alt",
@@ -1217,181 +1327,240 @@ var InputKey = import_zod18.z.enum([
1217
1327
  "backslash",
1218
1328
  "grave"
1219
1329
  ]);
1220
- var InputTypeTextParams = import_zod18.z.strictObject({ text: import_zod18.z.string().min(1).max(1e4) });
1221
- var InputTypeTextResult = import_zod18.z.strictObject({ characters: import_zod18.z.int().min(1) });
1222
- var InputHotkeyParams = import_zod18.z.strictObject({
1330
+ var InputTypeTextParams = import_zod19.z.strictObject({ text: import_zod19.z.string().min(1).max(1e4) });
1331
+ var InputTypeTextResult = import_zod19.z.strictObject({ characters: import_zod19.z.int().min(1) });
1332
+ var InputHotkeyParams = import_zod19.z.strictObject({
1223
1333
  /** Pressed together in order and released in reverse: ["cmd", "shift", "t"]. */
1224
- keys: import_zod18.z.array(InputKey).min(1).max(6)
1334
+ keys: import_zod19.z.array(InputKey).min(1).max(6)
1225
1335
  });
1226
- var InputHotkeyResult = import_zod18.z.strictObject({ keys: import_zod18.z.array(InputKey) });
1227
- var InputPoint = import_zod18.z.strictObject({ x: import_zod18.z.int(), y: import_zod18.z.int() });
1228
- var InputMouseMoveParams = import_zod18.z.strictObject({
1336
+ var InputHotkeyResult = import_zod19.z.strictObject({ keys: import_zod19.z.array(InputKey) });
1337
+ var InputPoint = import_zod19.z.strictObject({ x: import_zod19.z.int(), y: import_zod19.z.int() });
1338
+ var InputMouseMoveParams = import_zod19.z.strictObject({
1229
1339
  /** Screen position in logical points (the coordinates screen.list and window.list report). */
1230
- x: import_zod18.z.int(),
1231
- y: import_zod18.z.int()
1340
+ x: import_zod19.z.int(),
1341
+ y: import_zod19.z.int()
1232
1342
  });
1233
- var InputMouseMoveResult = import_zod18.z.strictObject({
1343
+ var InputMouseMoveResult = import_zod19.z.strictObject({
1234
1344
  /** Where the pointer is now, read back from the OS. */
1235
1345
  position: InputPoint
1236
1346
  });
1237
- var InputMouseClickParams = import_zod18.z.strictObject({
1347
+ var InputMouseClickParams = import_zod19.z.strictObject({
1238
1348
  /** Move here first; clicks where the pointer is when absent. */
1239
- x: import_zod18.z.int().optional(),
1240
- y: import_zod18.z.int().optional(),
1241
- button: import_zod18.z.enum(["left", "right", "middle"]).default("left"),
1242
- double: import_zod18.z.boolean().default(false)
1349
+ x: import_zod19.z.int().optional(),
1350
+ y: import_zod19.z.int().optional(),
1351
+ button: import_zod19.z.enum(["left", "right", "middle"]).default("left"),
1352
+ double: import_zod19.z.boolean().default(false)
1243
1353
  });
1244
- var InputMouseClickResult = import_zod18.z.strictObject({
1354
+ var InputMouseClickResult = import_zod19.z.strictObject({
1245
1355
  position: InputPoint,
1246
- button: import_zod18.z.enum(["left", "right", "middle"]),
1247
- double: import_zod18.z.boolean()
1356
+ button: import_zod19.z.enum(["left", "right", "middle"]),
1357
+ double: import_zod19.z.boolean()
1358
+ });
1359
+ var InputKeyboardSettingsParams = import_zod19.z.strictObject({});
1360
+ var InputKeyboardSettingsResult = import_zod19.z.strictObject({
1361
+ /** Key repeat is off (a held key types once). */
1362
+ repeat_off: import_zod19.z.boolean().nullable(),
1363
+ /** Time between repeats while a key is held (Key repeat rate: shorter is faster). */
1364
+ repeat_interval_ms: nonNegInt.nullable(),
1365
+ /** Time a key is held before it starts repeating (Delay until repeat). */
1366
+ repeat_delay_ms: nonNegInt.nullable(),
1367
+ /** What the fn / globe key does alone. */
1368
+ fn_key: import_zod19.z.enum(["nothing", "input_source", "emoji", "dictation"]).nullable(),
1369
+ /** Tab moves focus between every control. */
1370
+ keyboard_navigation: import_zod19.z.boolean().nullable(),
1371
+ /** The enabled input sources by name ("U.S.", "ABC – Extended"). */
1372
+ input_sources: import_zod19.z.array(import_zod19.z.string().max(128)).max(64),
1373
+ /** A key repeat change takes effect only after the person logs out and in again (macOS). */
1374
+ applies_after_login: import_zod19.z.boolean()
1375
+ });
1376
+ var InputSetKeyboardSettingsParams = import_zod19.z.strictObject({
1377
+ repeat_off: import_zod19.z.boolean().optional(),
1378
+ repeat_interval_ms: import_zod19.z.int().min(15).max(2e3).optional(),
1379
+ repeat_delay_ms: import_zod19.z.int().min(150).max(2e3).optional(),
1380
+ keyboard_navigation: import_zod19.z.boolean().optional()
1248
1381
  });
1249
1382
 
1250
1383
  // src/schema/power.ts
1251
- var import_zod19 = require("zod");
1252
- var PowerStatusParams = import_zod19.z.strictObject({});
1253
- var PowerStatusResult = import_zod19.z.strictObject({
1254
- has_battery: import_zod19.z.boolean(),
1384
+ var import_zod20 = require("zod");
1385
+ var PowerEnergy = import_zod20.z.strictObject({
1386
+ display_sleep_minutes: nonNegInt.nullable(),
1387
+ /** The computer itself sleeps after this long idle; null = never (Prevent automatic sleeping). */
1388
+ sleep_minutes: nonNegInt.nullable(),
1389
+ /** Hard disks sleep after this long; null = never. */
1390
+ disk_sleep_minutes: nonNegInt.nullable(),
1391
+ wake_for_network: import_zod20.z.boolean().nullable(),
1392
+ restart_after_power_failure: import_zod20.z.boolean().nullable(),
1393
+ /** Low Power Mode (Energy Mode "Low Power"). */
1394
+ low_power_mode: import_zod20.z.boolean().nullable()
1395
+ });
1396
+ var PowerStatusParams = import_zod20.z.strictObject({});
1397
+ var PowerStatusResult = import_zod20.z.strictObject({
1398
+ has_battery: import_zod20.z.boolean(),
1255
1399
  /** 0–100; null without a battery. */
1256
- percent: import_zod19.z.number().min(0).max(100).nullable(),
1257
- charging: import_zod19.z.boolean().nullable(),
1400
+ percent: import_zod20.z.number().min(0).max(100).nullable(),
1401
+ charging: import_zod20.z.boolean().nullable(),
1258
1402
  /** On wall power; null where the OS does not say. */
1259
- plugged_in: import_zod19.z.boolean().nullable(),
1403
+ plugged_in: import_zod20.z.boolean().nullable(),
1260
1404
  /** Minutes of battery left; null when charging, unknown or without a battery. */
1261
1405
  minutes_left: nonNegInt.nullable(),
1262
1406
  /** Matrx 2 is keeping the computer awake (power.prevent_sleep) until this time; null when it is not. */
1263
- awake_until_ms: epochMs.nullable()
1407
+ awake_until_ms: epochMs.nullable(),
1408
+ /** (1.24) The OS's own energy settings; absent where it keeps none Matrx 2 can read. */
1409
+ energy: PowerEnergy.optional()
1264
1410
  });
1265
- var PowerPreventSleepParams = import_zod19.z.strictObject({
1411
+ var PowerHistoryParams = import_zod20.z.strictObject({});
1412
+ var PowerHistoryPoint = import_zod20.z.strictObject({ at_ms: epochMs, percent: import_zod20.z.number().min(0).max(100), plugged_in: import_zod20.z.boolean() });
1413
+ var PowerHistoryResult = import_zod20.z.strictObject({
1414
+ /** Oldest first; empty without a battery or where the OS keeps no log. */
1415
+ points: import_zod20.z.array(PowerHistoryPoint).max(5e3)
1416
+ });
1417
+ var PowerPreventSleepParams = import_zod20.z.strictObject({
1266
1418
  /** Keep the computer awake this long; 0 lets it sleep again now. */
1267
- seconds: import_zod19.z.int().min(0).max(86400),
1419
+ seconds: import_zod20.z.int().min(0).max(86400),
1268
1420
  /** Shown where the OS lists what keeps it awake. */
1269
- reason: import_zod19.z.string().min(1).max(128).default("Matrx 2 is working")
1421
+ reason: import_zod20.z.string().min(1).max(128).default("Matrx 2 is working")
1270
1422
  });
1271
- var PowerPreventSleepResult = import_zod19.z.strictObject({
1423
+ var PowerPreventSleepResult = import_zod20.z.strictObject({
1272
1424
  /** When it may sleep again; null after seconds 0. */
1273
1425
  awake_until_ms: epochMs.nullable()
1274
1426
  });
1275
1427
 
1276
1428
  // src/schema/audio.ts
1277
- var import_zod20 = require("zod");
1278
- var AudioDevice = import_zod20.z.strictObject({
1429
+ var import_zod21 = require("zod");
1430
+ var AudioDevice = import_zod21.z.strictObject({
1279
1431
  /** The OS's name for it, as audio.record takes it. */
1280
- id: import_zod20.z.string().min(1).max(256),
1281
- name: import_zod20.z.string().max(256),
1282
- default: import_zod20.z.boolean()
1283
- });
1284
- var AudioDevicesParams = import_zod20.z.strictObject({});
1285
- var AudioDevicesResult = import_zod20.z.strictObject({
1286
- inputs: import_zod20.z.array(AudioDevice).max(64),
1287
- outputs: import_zod20.z.array(AudioDevice).max(64)
1288
- });
1289
- var AudioRecordParams = import_zod20.z.strictObject({
1290
- seconds: import_zod20.z.number().min(0.5).max(600),
1432
+ id: import_zod21.z.string().min(1).max(256),
1433
+ name: import_zod21.z.string().max(256),
1434
+ default: import_zod21.z.boolean(),
1435
+ /** (1.24) How it is connected, as Sound's Type column says it: "Built-in", "USB", "Bluetooth",
1436
+ * "DisplayPort", "HDMI", "AirPlay", "Virtual". Absent where the OS does not say. */
1437
+ kind: import_zod21.z.string().max(64).optional()
1438
+ });
1439
+ var AudioDevicesParams = import_zod21.z.strictObject({});
1440
+ var AudioDevicesResult = import_zod21.z.strictObject({
1441
+ inputs: import_zod21.z.array(AudioDevice).max(64),
1442
+ outputs: import_zod21.z.array(AudioDevice).max(64)
1443
+ });
1444
+ var AudioRecordParams = import_zod21.z.strictObject({
1445
+ seconds: import_zod21.z.number().min(0.5).max(600),
1291
1446
  /** The microphone (from audio.devices); the default input when absent. */
1292
- device_id: import_zod20.z.string().min(1).max(256).optional(),
1447
+ device_id: import_zod21.z.string().min(1).max(256).optional(),
1293
1448
  /** Where the WAV file goes; a new file in the temp folder when absent. */
1294
1449
  path: AbsPath.optional()
1295
1450
  });
1296
- var AudioRecordResult = import_zod20.z.strictObject({
1451
+ var AudioRecordResult = import_zod21.z.strictObject({
1297
1452
  path: AbsPath,
1298
- seconds: import_zod20.z.number().min(0),
1453
+ seconds: import_zod21.z.number().min(0),
1299
1454
  bytes: nonNegInt,
1300
1455
  /** Loudest sample, 0–1: 0 means the device gave silence. */
1301
- peak: import_zod20.z.number().min(0).max(1)
1456
+ peak: import_zod21.z.number().min(0).max(1)
1457
+ });
1458
+ var AudioPlayParams = import_zod21.z.strictObject({ path: AbsPath });
1459
+ var AudioPlayResult = import_zod21.z.strictObject({ path: AbsPath, seconds: import_zod21.z.number().min(0) });
1460
+ var AudioLevelsParams = import_zod21.z.strictObject({});
1461
+ var AudioLevelsResult = import_zod21.z.strictObject({
1462
+ output_volume: import_zod21.z.number().min(0).max(100).nullable(),
1463
+ output_muted: import_zod21.z.boolean().nullable(),
1464
+ input_volume: import_zod21.z.number().min(0).max(100).nullable(),
1465
+ /** The alert (beep) volume, a share of the output volume. */
1466
+ alert_volume: import_zod21.z.number().min(0).max(100).nullable()
1467
+ });
1468
+ var AudioSetLevelsParams = import_zod21.z.strictObject({
1469
+ output_volume: import_zod21.z.number().min(0).max(100).optional(),
1470
+ output_muted: import_zod21.z.boolean().optional(),
1471
+ input_volume: import_zod21.z.number().min(0).max(100).optional(),
1472
+ alert_volume: import_zod21.z.number().min(0).max(100).optional()
1302
1473
  });
1303
- var AudioPlayParams = import_zod20.z.strictObject({ path: AbsPath });
1304
- var AudioPlayResult = import_zod20.z.strictObject({ path: AbsPath, seconds: import_zod20.z.number().min(0) });
1305
1474
 
1306
1475
  // src/schema/resources.ts
1307
- var import_zod21 = require("zod");
1308
- var ResourcesDisk = import_zod21.z.strictObject({
1476
+ var import_zod22 = require("zod");
1477
+ var ResourcesDisk = import_zod22.z.strictObject({
1309
1478
  /** Where it is mounted ("/", "C:"). */
1310
- mount: import_zod21.z.string().max(512),
1479
+ mount: import_zod22.z.string().max(512),
1311
1480
  /** The volume's name as the file manager shows it ("Macintosh HD", "Local Disk (C:)"). Since 1.17. */
1312
- name: import_zod21.z.string().max(256).optional(),
1481
+ name: import_zod22.z.string().max(256).optional(),
1313
1482
  /** The file system ("apfs", "NTFS", "ext4"). */
1314
- fs: import_zod21.z.string().max(64),
1483
+ fs: import_zod22.z.string().max(64),
1315
1484
  size_bytes: nonNegInt,
1316
1485
  used_bytes: nonNegInt,
1317
1486
  available_bytes: nonNegInt
1318
1487
  });
1319
- var ResourcesSnapshotParams = import_zod21.z.strictObject({});
1320
- var ResourcesSnapshotResult = import_zod21.z.strictObject({
1321
- cpu: import_zod21.z.strictObject({
1488
+ var ResourcesSnapshotParams = import_zod22.z.strictObject({});
1489
+ var ResourcesSnapshotResult = import_zod22.z.strictObject({
1490
+ cpu: import_zod22.z.strictObject({
1322
1491
  /** Busy share of all cores, 0–100, measured now. */
1323
- percent: import_zod21.z.number().min(0).max(100),
1324
- cores: import_zod21.z.int().min(1),
1492
+ percent: import_zod22.z.number().min(0).max(100),
1493
+ cores: import_zod22.z.int().min(1),
1325
1494
  /** 1, 5 and 15 minute load averages; null on Windows. */
1326
- load: import_zod21.z.array(import_zod21.z.number().min(0)).length(3).nullable()
1495
+ load: import_zod22.z.array(import_zod22.z.number().min(0)).length(3).nullable()
1327
1496
  }),
1328
- memory: import_zod21.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
1329
- swap: import_zod21.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
1330
- disks: import_zod21.z.array(ResourcesDisk).max(64),
1497
+ memory: import_zod22.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
1498
+ swap: import_zod22.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
1499
+ disks: import_zod22.z.array(ResourcesDisk).max(64),
1331
1500
  uptime_seconds: nonNegInt
1332
1501
  });
1333
- var ResourcesJobKind = import_zod21.z.enum(["type-check", "tests", "build", "lint", "dev server", "language server", "search"]);
1334
- var ResourcesStrain = import_zod21.z.enum(["good", "strain", "overloaded"]);
1335
- var ResourcesPressure = import_zod21.z.enum(["normal", "warning", "critical"]);
1336
- var ResourcesJob = import_zod21.z.strictObject({
1502
+ var ResourcesJobKind = import_zod22.z.enum(["type-check", "tests", "build", "lint", "dev server", "language server", "search"]);
1503
+ var ResourcesStrain = import_zod22.z.enum(["good", "strain", "overloaded"]);
1504
+ var ResourcesPressure = import_zod22.z.enum(["normal", "warning", "critical"]);
1505
+ var ResourcesJob = import_zod22.z.strictObject({
1337
1506
  /** The job's root process (Stop takes its whole tree). */
1338
- pid: import_zod21.z.int().min(0),
1507
+ pid: import_zod22.z.int().min(0),
1339
1508
  kind: ResourcesJobKind,
1340
1509
  /** Its heaviest process's command line, shortened ("…/lib/tsc --noEmit -p tsconfig.json"). */
1341
- command: import_zod21.z.string().max(256),
1510
+ command: import_zod22.z.string().max(256),
1342
1511
  /** Who started it: "Claude Code", "Codex", "Cursor", "VS Code", "Terminal", "local stack", "detached"; null when unknown. */
1343
- started_by: import_zod21.z.string().max(64).nullable(),
1512
+ started_by: import_zod22.z.string().max(64).nullable(),
1344
1513
  /** Whatever started it is gone and nothing waits for it. */
1345
- orphan: import_zod21.z.boolean(),
1514
+ orphan: import_zod22.z.boolean(),
1346
1515
  /** A type-check queued for its turn (no compiler running yet). */
1347
- waiting: import_zod21.z.boolean(),
1516
+ waiting: import_zod22.z.boolean(),
1348
1517
  /** The project folder it runs in ("matrx-frontend"); null when not in one. */
1349
- folder: import_zod21.z.string().max(256).nullable(),
1518
+ folder: import_zod22.z.string().max(256).nullable(),
1350
1519
  /** The same command in the same folder, running this many times (1 = no duplicate). */
1351
- duplicates: import_zod21.z.int().min(1),
1352
- processes: import_zod21.z.int().min(1),
1520
+ duplicates: import_zod22.z.int().min(1),
1521
+ processes: import_zod22.z.int().min(1),
1353
1522
  /** Sum over the tree, as `ps` reports it: 100 = one full core. */
1354
- cpu_percent: import_zod21.z.number().min(0),
1523
+ cpu_percent: import_zod22.z.number().min(0),
1355
1524
  /** Real memory (macOS: the physical footprint Activity Monitor shows, compressed included). */
1356
1525
  memory_bytes: nonNegInt,
1357
1526
  started_at_ms: epochMs.nullable(),
1358
1527
  /** False for an app, an agent session, a terminal, a system process, the local stack or Matrx 2 itself. */
1359
- stoppable: import_zod21.z.boolean()
1528
+ stoppable: import_zod22.z.boolean()
1360
1529
  });
1361
- var ResourcesProcess = import_zod21.z.strictObject({
1362
- pid: import_zod21.z.int().min(0),
1530
+ var ResourcesProcess = import_zod22.z.strictObject({
1531
+ pid: import_zod22.z.int().min(0),
1363
1532
  /** The command line, shortened. */
1364
- name: import_zod21.z.string().max(256),
1365
- cpu_percent: import_zod21.z.number().min(0),
1533
+ name: import_zod22.z.string().max(256),
1534
+ cpu_percent: import_zod22.z.number().min(0),
1366
1535
  memory_bytes: nonNegInt,
1367
- started_by: import_zod21.z.string().max(64).nullable(),
1536
+ started_by: import_zod22.z.string().max(64).nullable(),
1368
1537
  /** The job it belongs to ("type-check in aidream"); null when none. */
1369
- job: import_zod21.z.string().max(256).nullable(),
1538
+ job: import_zod22.z.string().max(256).nullable(),
1370
1539
  started_at_ms: epochMs.nullable()
1371
1540
  });
1372
- var ResourcesVerdict = import_zod21.z.strictObject({
1541
+ var ResourcesVerdict = import_zod22.z.strictObject({
1373
1542
  level: ResourcesStrain,
1374
1543
  /** One sentence ("Your Mac is under strain. 3 type-checks are running at once."). */
1375
- text: import_zod21.z.string().max(256),
1544
+ text: import_zod22.z.string().max(256),
1376
1545
  /** The biggest jobs behind it; null when all is well. */
1377
- cause: import_zod21.z.string().max(1024).nullable()
1546
+ cause: import_zod22.z.string().max(1024).nullable()
1378
1547
  });
1379
- var ResourcesSample = import_zod21.z.strictObject({
1548
+ var ResourcesSample = import_zod22.z.strictObject({
1380
1549
  at_ms: epochMs,
1381
1550
  /** The 1-minute load average. */
1382
- load: import_zod21.z.number().min(0),
1551
+ load: import_zod22.z.number().min(0),
1383
1552
  memory_used_bytes: nonNegInt,
1384
1553
  typechecks: nonNegInt
1385
1554
  });
1386
- var ResourcesActivityParams = import_zod21.z.strictObject({});
1387
- var ResourcesActivityResult = import_zod21.z.strictObject({
1555
+ var ResourcesActivityParams = import_zod22.z.strictObject({});
1556
+ var ResourcesActivityResult = import_zod22.z.strictObject({
1388
1557
  /** False until the first reading (a second or two after start). */
1389
- ready: import_zod21.z.boolean(),
1558
+ ready: import_zod22.z.boolean(),
1390
1559
  sampled_at_ms: epochMs.nullable(),
1391
- cores: import_zod21.z.int().min(1),
1560
+ cores: import_zod22.z.int().min(1),
1392
1561
  /** 1, 5 and 15 minute load averages. */
1393
- load: import_zod21.z.array(import_zod21.z.number().min(0)).length(3),
1394
- memory: import_zod21.z.strictObject({
1562
+ load: import_zod22.z.array(import_zod22.z.number().min(0)).length(3),
1563
+ memory: import_zod22.z.strictObject({
1395
1564
  total_bytes: nonNegInt,
1396
1565
  /** Activity Monitor's Memory Used: app memory + wired + compressed. */
1397
1566
  used_bytes: nonNegInt,
@@ -1402,49 +1571,49 @@ var ResourcesActivityResult = import_zod21.z.strictObject({
1402
1571
  pressure: ResourcesPressure.nullable()
1403
1572
  }),
1404
1573
  verdict: ResourcesVerdict,
1405
- typechecks: import_zod21.z.strictObject({ running: nonNegInt, waiting: nonNegInt, comfort: nonNegInt }),
1574
+ typechecks: import_zod22.z.strictObject({ running: nonNegInt, waiting: nonNegInt, comfort: nonNegInt }),
1406
1575
  /** Heaviest first (1 GB weighs as much as 16 % of a core). */
1407
- jobs: import_zod21.z.array(ResourcesJob).max(200),
1576
+ jobs: import_zod22.z.array(ResourcesJob).max(200),
1408
1577
  /** The 15 heaviest by memory and the 15 busiest by CPU, together. */
1409
- top: import_zod21.z.array(ResourcesProcess).max(30),
1578
+ top: import_zod22.z.array(ResourcesProcess).max(30),
1410
1579
  /** The last hour, oldest first. */
1411
- history: import_zod21.z.array(ResourcesSample).max(1200)
1580
+ history: import_zod22.z.array(ResourcesSample).max(1200)
1412
1581
  });
1413
- var ResourcesStopJobParams = import_zod21.z.strictObject({ pid: import_zod21.z.int().min(1) });
1414
- var ResourcesStopJobResult = import_zod21.z.strictObject({
1582
+ var ResourcesStopJobParams = import_zod22.z.strictObject({ pid: import_zod22.z.int().min(1) });
1583
+ var ResourcesStopJobResult = import_zod22.z.strictObject({
1415
1584
  /** Processes signalled; whatever is still running 5 seconds later is force-stopped. */
1416
1585
  processes: nonNegInt,
1417
1586
  /** It had finished before the request arrived. */
1418
- already_finished: import_zod21.z.boolean()
1587
+ already_finished: import_zod22.z.boolean()
1419
1588
  });
1420
- var ResourcesIncident = import_zod21.z.strictObject({
1589
+ var ResourcesIncident = import_zod22.z.strictObject({
1421
1590
  at_ms: epochMs,
1422
1591
  verdict: ResourcesVerdict,
1423
- load: import_zod21.z.number().min(0),
1592
+ load: import_zod22.z.number().min(0),
1424
1593
  memory_used_bytes: nonNegInt,
1425
1594
  compressed_bytes: nonNegInt,
1426
1595
  pressure: ResourcesPressure.nullable(),
1427
- jobs: import_zod21.z.array(
1428
- import_zod21.z.strictObject({
1596
+ jobs: import_zod22.z.array(
1597
+ import_zod22.z.strictObject({
1429
1598
  kind: ResourcesJobKind,
1430
- started_by: import_zod21.z.string().max(64).nullable(),
1431
- folder: import_zod21.z.string().max(256).nullable(),
1432
- command: import_zod21.z.string().max(256),
1433
- cpu_percent: import_zod21.z.number().min(0),
1599
+ started_by: import_zod22.z.string().max(64).nullable(),
1600
+ folder: import_zod22.z.string().max(256).nullable(),
1601
+ command: import_zod22.z.string().max(256),
1602
+ cpu_percent: import_zod22.z.number().min(0),
1434
1603
  memory_bytes: nonNegInt,
1435
- duplicates: import_zod21.z.int().min(1)
1604
+ duplicates: import_zod22.z.int().min(1)
1436
1605
  })
1437
1606
  ).max(8)
1438
1607
  });
1439
- var ResourcesIncidentsParams = import_zod21.z.strictObject({ limit: import_zod21.z.int().min(1).max(200).default(50) });
1440
- var ResourcesIncidentsResult = import_zod21.z.strictObject({
1608
+ var ResourcesIncidentsParams = import_zod22.z.strictObject({ limit: import_zod22.z.int().min(1).max(200).default(50) });
1609
+ var ResourcesIncidentsResult = import_zod22.z.strictObject({
1441
1610
  /** Newest first; at most one a minute is written. */
1442
- incidents: import_zod21.z.array(ResourcesIncident).max(200)
1611
+ incidents: import_zod22.z.array(ResourcesIncident).max(200)
1443
1612
  });
1444
1613
 
1445
1614
  // src/schema/diag.ts
1446
- var import_zod22 = require("zod");
1447
- var DiagProcess = import_zod22.z.enum([
1615
+ var import_zod23 = require("zod");
1616
+ var DiagProcess = import_zod23.z.enum([
1448
1617
  "main",
1449
1618
  "renderer",
1450
1619
  "hosted_page",
@@ -1457,7 +1626,7 @@ var DiagProcess = import_zod22.z.enum([
1457
1626
  "coding_sessions",
1458
1627
  "claude_accounts"
1459
1628
  ]);
1460
- var DiagErrorKind = import_zod22.z.enum([
1629
+ var DiagErrorKind = import_zod23.z.enum([
1461
1630
  "uncaught_exception",
1462
1631
  "unhandled_rejection",
1463
1632
  "renderer_crash",
@@ -1469,235 +1638,235 @@ var DiagErrorKind = import_zod22.z.enum([
1469
1638
  "banner",
1470
1639
  "logged_error"
1471
1640
  ]);
1472
- var DiagErrorStatus = import_zod22.z.enum(["waiting", "sent", "resolved"]);
1473
- var DiagErrorEntry = import_zod22.z.strictObject({
1641
+ var DiagErrorStatus = import_zod23.z.enum(["waiting", "sent", "resolved"]);
1642
+ var DiagErrorEntry = import_zod23.z.strictObject({
1474
1643
  /** sha256 prefix over process, kind, source, code and the normalized message. */
1475
- signature: import_zod22.z.string().regex(/^[0-9a-f]{32}$/),
1644
+ signature: import_zod23.z.string().regex(/^[0-9a-f]{32}$/),
1476
1645
  process: DiagProcess,
1477
1646
  kind: DiagErrorKind,
1478
1647
  /** Where: a cap.op, a log event, a screen or page name. */
1479
- source: import_zod22.z.string().min(1).max(128),
1648
+ source: import_zod23.z.string().min(1).max(128),
1480
1649
  /** An ErrorCode, an exit code or signal, an error class; null when there is none. */
1481
- code: import_zod22.z.string().max(64).nullable(),
1650
+ code: import_zod23.z.string().max(64).nullable(),
1482
1651
  /** The first occurrence's message, personal data removed. */
1483
- message: import_zod22.z.string().max(500),
1652
+ message: import_zod23.z.string().max(500),
1484
1653
  count: nonNegInt,
1485
1654
  first_seen_ms: epochMs,
1486
1655
  last_seen_ms: epochMs,
1487
1656
  status: DiagErrorStatus,
1488
1657
  /** What the agent who resolved it wrote; null until resolved. */
1489
- resolution_note: import_zod22.z.string().max(500).nullable(),
1490
- app_version: import_zod22.z.string().max(64)
1658
+ resolution_note: import_zod23.z.string().max(500).nullable(),
1659
+ app_version: import_zod23.z.string().max(64)
1491
1660
  });
1492
- var DiagErrorsListParams = import_zod22.z.strictObject({
1661
+ var DiagErrorsListParams = import_zod23.z.strictObject({
1493
1662
  /** open = waiting or sent; all includes resolved. */
1494
- status: import_zod22.z.enum(["open", "all"]).default("open"),
1495
- limit: import_zod22.z.int().min(1).max(500).default(200)
1663
+ status: import_zod23.z.enum(["open", "all"]).default("open"),
1664
+ limit: import_zod23.z.int().min(1).max(500).default(200)
1496
1665
  });
1497
- var DiagErrorsListResult = import_zod22.z.strictObject({
1666
+ var DiagErrorsListResult = import_zod23.z.strictObject({
1498
1667
  /** Newest last_seen first. */
1499
- entries: import_zod22.z.array(DiagErrorEntry).max(500),
1668
+ entries: import_zod23.z.array(DiagErrorEntry).max(500),
1500
1669
  total_signatures: nonNegInt,
1501
1670
  total_occurrences: nonNegInt,
1502
1671
  /** Signatures with occurrences not yet delivered. */
1503
1672
  waiting: nonNegInt,
1504
1673
  /** signed_out = kept until sign-in; ok = the last delivery worked; failing = the last delivery failed (kept, retried). */
1505
- delivery: import_zod22.z.enum(["signed_out", "ok", "failing"]),
1674
+ delivery: import_zod23.z.enum(["signed_out", "ok", "failing"]),
1506
1675
  last_delivery_ms: epochMs.nullable()
1507
1676
  });
1508
- var DiagErrorsReportParams = import_zod22.z.strictObject({
1509
- process: import_zod22.z.enum(["renderer", "hosted_page"]),
1510
- kind: import_zod22.z.enum(["uncaught_exception", "unhandled_rejection", "console_error", "banner"]),
1677
+ var DiagErrorsReportParams = import_zod23.z.strictObject({
1678
+ process: import_zod23.z.enum(["renderer", "hosted_page"]),
1679
+ kind: import_zod23.z.enum(["uncaught_exception", "unhandled_rejection", "console_error", "banner"]),
1511
1680
  /** The screen or page, e.g. "code.chats". */
1512
- source: import_zod22.z.string().min(1).max(128),
1513
- message: import_zod22.z.string().min(1).max(2e3),
1514
- code: import_zod22.z.string().max(64).optional(),
1515
- stack: import_zod22.z.string().max(8e3).optional()
1681
+ source: import_zod23.z.string().min(1).max(128),
1682
+ message: import_zod23.z.string().min(1).max(2e3),
1683
+ code: import_zod23.z.string().max(64).optional(),
1684
+ stack: import_zod23.z.string().max(8e3).optional()
1516
1685
  });
1517
- var DiagErrorsReportResult = import_zod22.z.strictObject({
1518
- signature: import_zod22.z.string().regex(/^[0-9a-f]{32}$/)
1686
+ var DiagErrorsReportResult = import_zod23.z.strictObject({
1687
+ signature: import_zod23.z.string().regex(/^[0-9a-f]{32}$/)
1519
1688
  });
1520
- var DiagErrorsChangedEvent = import_zod22.z.strictObject({
1689
+ var DiagErrorsChangedEvent = import_zod23.z.strictObject({
1521
1690
  total_signatures: nonNegInt,
1522
1691
  waiting: nonNegInt
1523
1692
  });
1524
1693
 
1525
1694
  // src/schema/stack.ts
1526
- var import_zod23 = require("zod");
1527
- var StackServerName = import_zod23.z.string().regex(/^[a-z0-9_-]{1,64}$/);
1528
- var StackTone = import_zod23.z.enum(["good", "wait", "bad", "off"]);
1529
- var StackServer = import_zod23.z.strictObject({
1695
+ var import_zod24 = require("zod");
1696
+ var StackServerName = import_zod24.z.string().regex(/^[a-z0-9_-]{1,64}$/);
1697
+ var StackTone = import_zod24.z.enum(["good", "wait", "bad", "off"]);
1698
+ var StackServer = import_zod24.z.strictObject({
1530
1699
  name: StackServerName,
1531
1700
  /** One word: Healthy, Starting, Unhealthy, Restarting, Stopping, Waiting, Stopped, Crashed, Off. */
1532
- label: import_zod23.z.string().max(32),
1701
+ label: import_zod24.z.string().max(32),
1533
1702
  tone: StackTone,
1534
1703
  /** What is going on, in one or two plain sentences. */
1535
- sentence: import_zod23.z.string().max(2e3),
1704
+ sentence: import_zod24.z.string().max(2e3),
1536
1705
  /** The config's own description of the server. */
1537
- description: import_zod23.z.string().max(512),
1706
+ description: import_zod24.z.string().max(512),
1538
1707
  /** Where the server answers, when its description names an address. */
1539
- open_url: import_zod23.z.string().max(2048).nullable(),
1540
- log_file: import_zod23.z.string().max(4096),
1708
+ open_url: import_zod24.z.string().max(2048).nullable(),
1709
+ log_file: import_zod24.z.string().max(4096),
1541
1710
  /** When its log file was last written. */
1542
1711
  last_output_at_ms: epochMs.nullable(),
1543
1712
  started_at_ms: epochMs.nullable(),
1544
1713
  restarts: nonNegInt,
1545
- exit_code: import_zod23.z.int().nullable(),
1546
- pid: import_zod23.z.int().nullable(),
1714
+ exit_code: import_zod24.z.int().nullable(),
1715
+ pid: import_zod24.z.int().nullable(),
1547
1716
  /** (1.18) CPU of the server's process and everything under it, in percent of one core; absent when it is not running. */
1548
- cpu_percent: import_zod23.z.number().min(0).optional(),
1717
+ cpu_percent: import_zod24.z.number().min(0).optional(),
1549
1718
  /** (1.18) Memory of the same processes: the physical footprint (Activity Monitor's Memory) summed; absent when it is not running. */
1550
1719
  memory_bytes: nonNegInt.optional()
1551
1720
  });
1552
- var StackEvent = import_zod23.z.strictObject({
1721
+ var StackEvent = import_zod24.z.strictObject({
1553
1722
  at_ms: epochMs,
1554
1723
  /** A server name, or "stack" for the stack as a whole. */
1555
- server: import_zod23.z.string().max(64),
1724
+ server: import_zod24.z.string().max(64),
1556
1725
  /** started · stopped · healthy · unhealthy · crashed · exited · restarting · stopping · action · action-done · action-failed · setup · error */
1557
- kind: import_zod23.z.string().max(32),
1558
- text: import_zod23.z.string().max(4e3)
1726
+ kind: import_zod24.z.string().max(32),
1727
+ text: import_zod24.z.string().max(4e3)
1559
1728
  });
1560
- var StackStateParams = import_zod23.z.strictObject({});
1561
- var StackStateResult = import_zod23.z.strictObject({
1729
+ var StackStateParams = import_zod24.z.strictObject({});
1730
+ var StackStateResult = import_zod24.z.strictObject({
1562
1731
  /** The stack's config file, when found. */
1563
- config_path: import_zod23.z.string().max(4096).nullable(),
1732
+ config_path: import_zod24.z.string().max(4096).nullable(),
1564
1733
  /** Why the stack cannot be run from here (no config, no process-compose), else null. */
1565
- problem: import_zod23.z.string().max(1e3).nullable(),
1566
- stack_up: import_zod23.z.boolean(),
1734
+ problem: import_zod24.z.string().max(1e3).nullable(),
1735
+ stack_up: import_zod24.z.boolean(),
1567
1736
  stack_started_at_ms: epochMs.nullable(),
1568
- servers: import_zod23.z.array(StackServer).max(64),
1737
+ servers: import_zod24.z.array(StackServer).max(64),
1569
1738
  /** One line about the one-shot setup steps ("Docker Desktop: running."), or null. */
1570
- setup_note: import_zod23.z.string().max(500).nullable(),
1739
+ setup_note: import_zod24.z.string().max(500).nullable(),
1571
1740
  /** Start everything / Stop everything in flight. */
1572
- pending: import_zod23.z.strictObject({ verb: import_zod23.z.enum(["start", "stop"]), label: import_zod23.z.string().max(64), since_ms: epochMs }).nullable(),
1741
+ pending: import_zod24.z.strictObject({ verb: import_zod24.z.enum(["start", "stop"]), label: import_zod24.z.string().max(64), since_ms: epochMs }).nullable(),
1573
1742
  /** The newest entries last. */
1574
- events: import_zod23.z.array(StackEvent).max(300)
1743
+ events: import_zod24.z.array(StackEvent).max(300)
1575
1744
  });
1576
- var StackStartParams = import_zod23.z.strictObject({});
1577
- var StackStopParams = import_zod23.z.strictObject({});
1578
- var StackRunResult = import_zod23.z.strictObject({ accepted: import_zod23.z.boolean() });
1579
- var StackServerActionParams = import_zod23.z.strictObject({
1745
+ var StackStartParams = import_zod24.z.strictObject({});
1746
+ var StackStopParams = import_zod24.z.strictObject({});
1747
+ var StackRunResult = import_zod24.z.strictObject({ accepted: import_zod24.z.boolean() });
1748
+ var StackServerActionParams = import_zod24.z.strictObject({
1580
1749
  name: StackServerName,
1581
- verb: import_zod23.z.enum(["start", "stop", "restart"])
1750
+ verb: import_zod24.z.enum(["start", "stop", "restart"])
1582
1751
  });
1583
- var StackServerActionResult = import_zod23.z.strictObject({ message: import_zod23.z.string().max(1e3) });
1584
- var StackLogsParams = import_zod23.z.strictObject({
1752
+ var StackServerActionResult = import_zod24.z.strictObject({ message: import_zod24.z.string().max(1e3) });
1753
+ var StackLogsParams = import_zod24.z.strictObject({
1585
1754
  name: StackServerName,
1586
1755
  /** Without `offset`: the last this-many complete lines. With it: new lines after it, at most this many. */
1587
- lines: import_zod23.z.int().min(1).max(2e5).default(2e3),
1756
+ lines: import_zod24.z.int().min(1).max(2e5).default(2e3),
1588
1757
  /** Byte offset the last read ended at: answer only what was written after it (follow). */
1589
1758
  offset: nonNegInt.optional(),
1590
1759
  /** A "Clear" point: the lines written after this byte offset (no `offset`). */
1591
1760
  since: nonNegInt.optional(),
1592
1761
  /** With `offset`: wait up to this long for a new line when none is waiting (0 answers at once). */
1593
- wait_ms: import_zod23.z.int().min(0).max(25e3).default(0)
1762
+ wait_ms: import_zod24.z.int().min(0).max(25e3).default(0)
1594
1763
  });
1595
- var StackLogsResult = import_zod23.z.strictObject({
1764
+ var StackLogsResult = import_zod24.z.strictObject({
1596
1765
  /** Complete lines, colour codes removed. */
1597
- lines: import_zod23.z.array(import_zod23.z.string().max(65536)).max(2e5),
1766
+ lines: import_zod24.z.array(import_zod24.z.string().max(65536)).max(2e5),
1598
1767
  /** Where these lines end: pass it back as `offset` to follow. */
1599
1768
  offset: nonNegInt,
1600
1769
  /** False when `since` no longer exists (the log rotated): the lines are the plain tail instead. */
1601
- since_valid: import_zod23.z.boolean(),
1770
+ since_valid: import_zod24.z.boolean(),
1602
1771
  /** The log was rotated or truncated since `offset`: these lines start the file again. */
1603
- reset: import_zod23.z.boolean(),
1604
- log_file: import_zod23.z.string().max(4096)
1772
+ reset: import_zod24.z.boolean(),
1773
+ log_file: import_zod24.z.string().max(4096)
1605
1774
  });
1606
- var StackErrorsParams = import_zod23.z.strictObject({
1607
- window_minutes: import_zod23.z.int().min(1).max(1440).default(60)
1775
+ var StackErrorsParams = import_zod24.z.strictObject({
1776
+ window_minutes: import_zod24.z.int().min(1).max(1440).default(60)
1608
1777
  });
1609
- var StackErrorsResult = import_zod23.z.strictObject({
1778
+ var StackErrorsResult = import_zod24.z.strictObject({
1610
1779
  /** Per server: a heading line ("=== aidream — errors in the last 60 minutes (<file>) ===") and each error with the 10 lines after it. */
1611
- sections: import_zod23.z.array(import_zod23.z.strictObject({ name: StackServerName, heading: import_zod23.z.string().max(4096), lines: import_zod23.z.array(import_zod23.z.string().max(65536)).max(5e3) })).max(64),
1612
- window_minutes: import_zod23.z.int().min(1).max(1440)
1780
+ sections: import_zod24.z.array(import_zod24.z.strictObject({ name: StackServerName, heading: import_zod24.z.string().max(4096), lines: import_zod24.z.array(import_zod24.z.string().max(65536)).max(5e3) })).max(64),
1781
+ window_minutes: import_zod24.z.int().min(1).max(1440)
1613
1782
  });
1614
1783
 
1615
1784
  // src/schema/fs-watch.ts
1616
- var import_zod24 = require("zod");
1617
- var FsWatchId = import_zod24.z.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
1618
- var FsWatchStartParams = import_zod24.z.strictObject({
1785
+ var import_zod25 = require("zod");
1786
+ var FsWatchId = import_zod25.z.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
1787
+ var FsWatchStartParams = import_zod25.z.strictObject({
1619
1788
  path: AbsPath,
1620
- recursive: import_zod24.z.boolean().default(true),
1789
+ recursive: import_zod25.z.boolean().default(true),
1621
1790
  /** Globs relative to `path` whose changes are not reported (".git/**", "node_modules/**"). */
1622
- ignore: import_zod24.z.array(import_zod24.z.string().max(256)).max(64).default([])
1791
+ ignore: import_zod25.z.array(import_zod25.z.string().max(256)).max(64).default([])
1623
1792
  });
1624
- var FsWatchStartResult = import_zod24.z.strictObject({
1793
+ var FsWatchStartResult = import_zod25.z.strictObject({
1625
1794
  watch_id: FsWatchId,
1626
1795
  path: AbsPath,
1627
1796
  /** The watch ends by itself if nobody reads it for 30 minutes. */
1628
1797
  expires_at_ms: epochMs
1629
1798
  });
1630
- var FsWatchEventsParams = import_zod24.z.strictObject({
1799
+ var FsWatchEventsParams = import_zod25.z.strictObject({
1631
1800
  watch_id: FsWatchId,
1632
1801
  /** Wait up to this long for a first change when none is waiting (0 answers at once). */
1633
- wait_ms: import_zod24.z.int().min(0).max(25e3).default(0)
1802
+ wait_ms: import_zod25.z.int().min(0).max(25e3).default(0)
1634
1803
  });
1635
- var FsWatchEventsResult = import_zod24.z.strictObject({
1804
+ var FsWatchEventsResult = import_zod25.z.strictObject({
1636
1805
  /** What changed since the last read, oldest first; re-checked against the disk when read. */
1637
- changes: import_zod24.z.array(FsChange).max(1e3),
1806
+ changes: import_zod25.z.array(FsChange).max(1e3),
1638
1807
  /** Changes were dropped (more than 1000 waited): list the folder again. */
1639
- overflow: import_zod24.z.boolean(),
1808
+ overflow: import_zod25.z.boolean(),
1640
1809
  expires_at_ms: epochMs
1641
1810
  });
1642
- var FsWatchStopParams = import_zod24.z.strictObject({ watch_id: FsWatchId });
1643
- var FsWatchStopResult = import_zod24.z.strictObject({ watch_id: FsWatchId });
1811
+ var FsWatchStopParams = import_zod25.z.strictObject({ watch_id: FsWatchId });
1812
+ var FsWatchStopResult = import_zod25.z.strictObject({ watch_id: FsWatchId });
1644
1813
 
1645
1814
  // src/schema/exec-job.ts
1646
- var import_zod25 = require("zod");
1647
- var ExecJobId = import_zod25.z.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
1648
- var ExecJobStartParams = import_zod25.z.strictObject({
1649
- command: import_zod25.z.string().min(1).max(131072),
1815
+ var import_zod26 = require("zod");
1816
+ var ExecJobId = import_zod26.z.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
1817
+ var ExecJobStartParams = import_zod26.z.strictObject({
1818
+ command: import_zod26.z.string().min(1).max(131072),
1650
1819
  /** The folder it runs in; the home folder when absent. */
1651
1820
  cwd: AbsPath.optional(),
1652
- 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()
1821
+ env: import_zod26.z.record(import_zod26.z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), import_zod26.z.string().max(32768)).optional()
1653
1822
  });
1654
- var ExecJobStartResult = import_zod25.z.strictObject({ job_id: ExecJobId, pid: import_zod25.z.int().min(1), cwd: AbsPath });
1655
- var ExecJobOutputParams = import_zod25.z.strictObject({
1823
+ var ExecJobStartResult = import_zod26.z.strictObject({ job_id: ExecJobId, pid: import_zod26.z.int().min(1), cwd: AbsPath });
1824
+ var ExecJobOutputParams = import_zod26.z.strictObject({
1656
1825
  job_id: ExecJobId,
1657
1826
  /** Byte offset into the job's output to read from (next_offset of the last read; 0 = the start). */
1658
1827
  offset: nonNegInt.default(0),
1659
1828
  /** Wait up to this long for new output or the exit when none is waiting (0 answers at once). */
1660
- wait_ms: import_zod25.z.int().min(0).max(25e3).default(0),
1661
- max_bytes: import_zod25.z.int().min(1024).max(1048576).default(65536)
1829
+ wait_ms: import_zod26.z.int().min(0).max(25e3).default(0),
1830
+ max_bytes: import_zod26.z.int().min(1024).max(1048576).default(65536)
1662
1831
  });
1663
- var ExecJobOutputResult = import_zod25.z.strictObject({
1832
+ var ExecJobOutputResult = import_zod26.z.strictObject({
1664
1833
  /** stdout and stderr interleaved as they arrived (UTF-8). */
1665
- output: import_zod25.z.string(),
1834
+ output: import_zod26.z.string(),
1666
1835
  next_offset: nonNegInt,
1667
1836
  /** Bytes before `offset` that are gone (the job keeps its last 4 MiB). */
1668
1837
  dropped_bytes: nonNegInt,
1669
- running: import_zod25.z.boolean(),
1670
- exit_code: import_zod25.z.int().nullable()
1838
+ running: import_zod26.z.boolean(),
1839
+ exit_code: import_zod26.z.int().nullable()
1671
1840
  });
1672
- var ExecJobStopParams = import_zod25.z.strictObject({
1841
+ var ExecJobStopParams = import_zod26.z.strictObject({
1673
1842
  job_id: ExecJobId,
1674
1843
  /** End it at once (SIGKILL; on Windows the whole tree with /F) instead of asking it to quit. */
1675
- force: import_zod25.z.boolean().default(false)
1844
+ force: import_zod26.z.boolean().default(false)
1676
1845
  });
1677
- var ExecJobStopResult = import_zod25.z.strictObject({ job_id: ExecJobId, exited: import_zod25.z.boolean(), exit_code: import_zod25.z.int().nullable() });
1678
- var ExecJobInfo = import_zod25.z.strictObject({
1846
+ var ExecJobStopResult = import_zod26.z.strictObject({ job_id: ExecJobId, exited: import_zod26.z.boolean(), exit_code: import_zod26.z.int().nullable() });
1847
+ var ExecJobInfo = import_zod26.z.strictObject({
1679
1848
  job_id: ExecJobId,
1680
- command: import_zod25.z.string().max(1024),
1681
- pid: import_zod25.z.int().min(1),
1849
+ command: import_zod26.z.string().max(1024),
1850
+ pid: import_zod26.z.int().min(1),
1682
1851
  cwd: AbsPath,
1683
- running: import_zod25.z.boolean(),
1684
- exit_code: import_zod25.z.int().nullable(),
1852
+ running: import_zod26.z.boolean(),
1853
+ exit_code: import_zod26.z.int().nullable(),
1685
1854
  started_at_ms: epochMs,
1686
1855
  output_bytes: nonNegInt
1687
1856
  });
1688
- var ExecJobListParams = import_zod25.z.strictObject({});
1689
- var ExecJobListResult = import_zod25.z.strictObject({ jobs: import_zod25.z.array(ExecJobInfo).max(64) });
1857
+ var ExecJobListParams = import_zod26.z.strictObject({});
1858
+ var ExecJobListResult = import_zod26.z.strictObject({ jobs: import_zod26.z.array(ExecJobInfo).max(64) });
1690
1859
 
1691
1860
  // src/schema/coding.ts
1692
- var import_zod26 = require("zod");
1693
- var import_uuid2 = require("@ai-matrx/kit/uuid");
1694
- var CodingServiceCredentials = import_zod26.z.strictObject({
1695
- access_token: import_zod26.z.string().min(16).max(16384),
1696
- user_id: import_zod26.z.string().regex(import_uuid2.UUID_SHAPE_PATTERN),
1861
+ var import_zod27 = require("zod");
1862
+ var import_uuid3 = require("@ai-matrx/kit/uuid");
1863
+ var CodingServiceCredentials = import_zod27.z.strictObject({
1864
+ access_token: import_zod27.z.string().min(16).max(16384),
1865
+ user_id: import_zod27.z.string().regex(import_uuid3.UUID_SHAPE_PATTERN),
1697
1866
  /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
1698
- server_url: import_zod26.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1867
+ server_url: import_zod27.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1699
1868
  });
1700
- var CodingHistoryBlocked = import_zod26.z.enum([
1869
+ var CodingHistoryBlocked = import_zod27.z.enum([
1701
1870
  "signed_out",
1702
1871
  "offline",
1703
1872
  "organization_required",
@@ -1705,11 +1874,11 @@ var CodingHistoryBlocked = import_zod26.z.enum([
1705
1874
  "cloud_list_unavailable",
1706
1875
  "history_too_large"
1707
1876
  ]);
1708
- var CodingHistoryFailure = import_zod26.z.strictObject({
1709
- session_id: import_zod26.z.string().max(64),
1710
- reason: import_zod26.z.string().max(300)
1877
+ var CodingHistoryFailure = import_zod27.z.strictObject({
1878
+ session_id: import_zod27.z.string().max(64),
1879
+ reason: import_zod27.z.string().max(300)
1711
1880
  });
1712
- var CodingHistoryRun = import_zod26.z.strictObject({
1881
+ var CodingHistoryRun = import_zod27.z.strictObject({
1713
1882
  /** Claude Code sessions found on this computer. */
1714
1883
  local_sessions: nonNegInt,
1715
1884
  /** Of those, already complete in AI Matrx. */
@@ -1724,39 +1893,39 @@ var CodingHistoryRun = import_zod26.z.strictObject({
1724
1893
  /** Changed while being read; a later run takes them. */
1725
1894
  changed: nonNegInt,
1726
1895
  failed: nonNegInt,
1727
- failures: import_zod26.z.array(CodingHistoryFailure).max(20),
1896
+ failures: import_zod27.z.array(CodingHistoryFailure).max(20),
1728
1897
  /** Candidates not reached yet. */
1729
1898
  remaining: nonNegInt,
1730
1899
  /** The one line a person reads, e.g. "Imported 12 of 14 sessions. 140 already in AI Matrx." */
1731
- summary: import_zod26.z.string().max(400)
1900
+ summary: import_zod27.z.string().max(400)
1732
1901
  });
1733
- var CodingHistoryStep = import_zod26.z.strictObject({
1902
+ var CodingHistoryStep = import_zod27.z.strictObject({
1734
1903
  /** Null when the run could not start (blocked before a plan existed). */
1735
- plan_id: import_zod26.z.string().regex(/^[0-9a-f]{32}$/).nullable(),
1736
- finished: import_zod26.z.boolean(),
1904
+ plan_id: import_zod27.z.string().regex(/^[0-9a-f]{32}$/).nullable(),
1905
+ finished: import_zod27.z.boolean(),
1737
1906
  blocked: CodingHistoryBlocked.nullable(),
1738
1907
  run: CodingHistoryRun
1739
1908
  });
1740
- var CodingPlanMissingParams = import_zod26.z.strictObject({ credentials: CodingServiceCredentials.nullable() });
1741
- var CodingImportNextParams = import_zod26.z.strictObject({
1742
- plan_id: import_zod26.z.string().regex(/^[0-9a-f]{32}$/),
1909
+ var CodingPlanMissingParams = import_zod27.z.strictObject({ credentials: CodingServiceCredentials.nullable() });
1910
+ var CodingImportNextParams = import_zod27.z.strictObject({
1911
+ plan_id: import_zod27.z.string().regex(/^[0-9a-f]{32}$/),
1743
1912
  credentials: CodingServiceCredentials.nullable()
1744
1913
  });
1745
- var CodingServiceProgress = import_zod26.z.strictObject({
1746
- phase: import_zod26.z.enum(["checking", "importing"]),
1914
+ var CodingServiceProgress = import_zod27.z.strictObject({
1915
+ phase: import_zod27.z.enum(["checking", "importing"]),
1747
1916
  done: nonNegInt,
1748
1917
  total: nonNegInt
1749
1918
  });
1750
- var CodingHistoryImportMissingParams = import_zod26.z.strictObject({});
1751
- var CodingHistoryImportMissingResult = import_zod26.z.strictObject({
1752
- state: import_zod26.z.enum(["done", "blocked", "cancelled"]),
1919
+ var CodingHistoryImportMissingParams = import_zod27.z.strictObject({});
1920
+ var CodingHistoryImportMissingResult = import_zod27.z.strictObject({
1921
+ state: import_zod27.z.enum(["done", "blocked", "cancelled"]),
1753
1922
  blocked: CodingHistoryBlocked.nullable(),
1754
1923
  run: CodingHistoryRun,
1755
1924
  elapsed_ms: nonNegInt
1756
1925
  });
1757
- var CodingHistoryProgressEvent = import_zod26.z.strictObject({
1926
+ var CodingHistoryProgressEvent = import_zod27.z.strictObject({
1758
1927
  request_id: RequestId,
1759
- phase: import_zod26.z.enum(["checking", "importing"]),
1928
+ phase: import_zod27.z.enum(["checking", "importing"]),
1760
1929
  /** Sessions settled so far, of `total` candidates (0 of 0 while checking). */
1761
1930
  done: nonNegInt,
1762
1931
  total: nonNegInt,
@@ -1765,23 +1934,23 @@ var CodingHistoryProgressEvent = import_zod26.z.strictObject({
1765
1934
  });
1766
1935
 
1767
1936
  // src/schema/apps.ts
1768
- var import_zod27 = require("zod");
1769
- var import_uuid3 = require("@ai-matrx/kit/uuid");
1770
- var AppKey = import_zod27.z.string().regex(/^[a-z][a-z0-9_-]{0,39}$/);
1771
- var AppProfileId = import_zod27.z.string().regex(import_uuid3.UUID_SHAPE_PATTERN);
1772
- var AppProfileLocator = import_zod27.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}$/);
1773
- var AppSupport = import_zod27.z.enum(["supported", "partial", "unsupported"]);
1774
- var AppFeatureStatus = import_zod27.z.strictObject({
1937
+ var import_zod28 = require("zod");
1938
+ var import_uuid4 = require("@ai-matrx/kit/uuid");
1939
+ var AppKey = import_zod28.z.string().regex(/^[a-z][a-z0-9_-]{0,39}$/);
1940
+ var AppProfileId = import_zod28.z.string().regex(import_uuid4.UUID_SHAPE_PATTERN);
1941
+ var AppProfileLocator = import_zod28.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}$/);
1942
+ var AppSupport = import_zod28.z.enum(["supported", "partial", "unsupported"]);
1943
+ var AppFeatureStatus = import_zod28.z.strictObject({
1775
1944
  status: AppSupport,
1776
1945
  /** One line, set whenever status is not "supported". */
1777
- reason: import_zod27.z.string().max(140).nullable()
1946
+ reason: import_zod28.z.string().max(140).nullable()
1778
1947
  });
1779
- var AppInfo = import_zod27.z.strictObject({
1948
+ var AppInfo = import_zod28.z.strictObject({
1780
1949
  app_key: AppKey,
1781
- name: import_zod27.z.string().max(64),
1782
- installed: import_zod27.z.boolean(),
1950
+ name: import_zod28.z.string().max(64),
1951
+ installed: import_zod28.z.boolean(),
1783
1952
  /** The app's own version string, or null when it is not installed or does not say. */
1784
- version: import_zod27.z.string().max(64).nullable(),
1953
+ version: import_zod28.z.string().max(64).nullable(),
1785
1954
  /** The install found (an .app bundle, an .exe, a binary), or null. */
1786
1955
  location: AbsPath.nullable(),
1787
1956
  /** Open the app at all on this OS. */
@@ -1791,148 +1960,148 @@ var AppInfo = import_zod27.z.strictObject({
1791
1960
  /** Plan usage read from the app's own files on this OS. */
1792
1961
  usage: AppFeatureStatus
1793
1962
  });
1794
- var AppUsageReading = import_zod27.z.strictObject({
1795
- window: import_zod27.z.enum(["five_hour", "weekly", "extra"]),
1963
+ var AppUsageReading = import_zod28.z.strictObject({
1964
+ window: import_zod28.z.enum(["five_hour", "weekly", "extra"]),
1796
1965
  /** 0–100 for five_hour and weekly; extra-usage spend as a percent of its cap (may pass 100). */
1797
- percent: import_zod27.z.number().min(0).max(1e4),
1966
+ percent: import_zod28.z.number().min(0).max(1e4),
1798
1967
  /** When the app recorded it. */
1799
1968
  sampled_at_ms: epochMs,
1800
1969
  /** True when the window has rolled over since the sample, so the figure has reset. */
1801
- reset_since: import_zod27.z.boolean()
1970
+ reset_since: import_zod28.z.boolean()
1802
1971
  });
1803
- var AppProfile = import_zod27.z.strictObject({
1972
+ var AppProfile = import_zod28.z.strictObject({
1804
1973
  /** The row's id; null for a folder found on disk that no row names yet. */
1805
1974
  id: AppProfileId.nullable(),
1806
1975
  app_key: AppKey,
1807
- display_name: import_zod27.z.string().min(1).max(120),
1976
+ display_name: import_zod28.z.string().min(1).max(120),
1808
1977
  /** The account the person means to be signed in here; null when not stated (never guessed). */
1809
- account_identity: import_zod27.z.string().min(3).max(320).nullable(),
1978
+ account_identity: import_zod28.z.string().min(3).max(320).nullable(),
1810
1979
  profile_locator: AppProfileLocator.nullable(),
1811
1980
  /** The device the row is tied to; null when the row names none. */
1812
1981
  device_id: DeviceId.nullable(),
1813
1982
  /** The folder this profile resolves to on this device; null for a row tied to another device. */
1814
1983
  folder: AbsPath.nullable(),
1815
1984
  /** The folder exists on this device. */
1816
- on_disk: import_zod27.z.boolean(),
1985
+ on_disk: import_zod28.z.boolean(),
1817
1986
  /** An instance with this profile is running; null when it could not be determined. */
1818
- running: import_zod27.z.boolean().nullable(),
1987
+ running: import_zod28.z.boolean().nullable(),
1819
1988
  /** Usage the app recorded for this profile; null when the app exposes none here. */
1820
- usage: import_zod27.z.array(AppUsageReading).nullable(),
1989
+ usage: import_zod28.z.array(AppUsageReading).nullable(),
1821
1990
  last_opened_ms: epochMs.nullable()
1822
1991
  });
1823
- var AppsListParams = import_zod27.z.strictObject({});
1824
- var AppsListResult = import_zod27.z.strictObject({ apps: import_zod27.z.array(AppInfo) });
1825
- var AppsProfilesListParams = import_zod27.z.strictObject({
1992
+ var AppsListParams = import_zod28.z.strictObject({});
1993
+ var AppsListResult = import_zod28.z.strictObject({ apps: import_zod28.z.array(AppInfo) });
1994
+ var AppsProfilesListParams = import_zod28.z.strictObject({
1826
1995
  /** Only this app's profiles; every app's when absent. */
1827
1996
  app_key: AppKey.optional()
1828
1997
  });
1829
- var AppsProfilesListResult = import_zod27.z.strictObject({
1830
- profiles: import_zod27.z.array(AppProfile),
1998
+ var AppsProfilesListResult = import_zod28.z.strictObject({
1999
+ profiles: import_zod28.z.array(AppProfile),
1831
2000
  /**
1832
2001
  * Whether the saved rows could be read: false while signed out or offline, when only folders
1833
2002
  * found on disk are listed.
1834
2003
  */
1835
- registry: import_zod27.z.enum(["ok", "signed_out", "unavailable"])
2004
+ registry: import_zod28.z.enum(["ok", "signed_out", "unavailable"])
1836
2005
  });
1837
- var AppsProfilesSaveParams = import_zod27.z.strictObject({
2006
+ var AppsProfilesSaveParams = import_zod28.z.strictObject({
1838
2007
  id: AppProfileId.optional(),
1839
2008
  app_key: AppKey,
1840
- display_name: import_zod27.z.string().min(1).max(120),
1841
- account_identity: import_zod27.z.string().min(3).max(320).nullable(),
2009
+ display_name: import_zod28.z.string().min(1).max(120),
2010
+ account_identity: import_zod28.z.string().min(3).max(320).nullable(),
1842
2011
  /** On create: the folder to use (one found on disk), or null for the app's default profile. Ignored on update. */
1843
2012
  profile_locator: AppProfileLocator.nullable(),
1844
2013
  /** On create with profile_locator null: make a new folder named after display_name instead. */
1845
- new_folder: import_zod27.z.boolean().default(false)
2014
+ new_folder: import_zod28.z.boolean().default(false)
1846
2015
  });
1847
2016
  var AppsProfilesSaveResult = AppProfile;
1848
- var AppsProfilesRemoveParams = import_zod27.z.strictObject({ id: AppProfileId });
1849
- var AppsProfilesRemoveResult = import_zod27.z.strictObject({ removed: import_zod27.z.boolean() });
1850
- var AppsOpenParams = import_zod27.z.strictObject({
2017
+ var AppsProfilesRemoveParams = import_zod28.z.strictObject({ id: AppProfileId });
2018
+ var AppsProfilesRemoveResult = import_zod28.z.strictObject({ removed: import_zod28.z.boolean() });
2019
+ var AppsOpenParams = import_zod28.z.strictObject({
1851
2020
  app_key: AppKey,
1852
2021
  profile_id: AppProfileId.optional()
1853
2022
  });
1854
- var AppsOpenResult = import_zod27.z.strictObject({
2023
+ var AppsOpenResult = import_zod28.z.strictObject({
1855
2024
  /** True when an instance with this profile was already running; it is brought forward. */
1856
- already_running: import_zod27.z.boolean(),
2025
+ already_running: import_zod28.z.boolean(),
1857
2026
  folder: AbsPath.nullable()
1858
2027
  });
1859
2028
 
1860
2029
  // src/schema/apps-chats.ts
1861
- var import_zod28 = require("zod");
1862
- var ChatId = import_zod28.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/);
1863
- var ChatPlace = import_zod28.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/);
1864
- var ChatProjectId = import_zod28.z.string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/);
1865
- var ChatWindow = import_zod28.z.strictObject({
2030
+ var import_zod29 = require("zod");
2031
+ var ChatId = import_zod29.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/);
2032
+ var ChatPlace = import_zod29.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/);
2033
+ var ChatProjectId = import_zod29.z.string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/);
2034
+ var ChatWindow = import_zod29.z.strictObject({
1866
2035
  key: ChatPlace,
1867
2036
  /** The app's default profile (Claude: the main window, which lists every account's chats). */
1868
- main: import_zod28.z.boolean(),
2037
+ main: import_zod29.z.boolean(),
1869
2038
  /** The account the window is signed into, when known. */
1870
- account: import_zod28.z.string().max(320).nullable()
2039
+ account: import_zod29.z.string().max(320).nullable()
1871
2040
  });
1872
- var ChatProject = import_zod28.z.strictObject({
2041
+ var ChatProject = import_zod29.z.strictObject({
1873
2042
  id: ChatProjectId,
1874
- name: import_zod28.z.string().min(1).max(200),
1875
- archived: import_zod28.z.boolean(),
2043
+ name: import_zod29.z.string().min(1).max(200),
2044
+ archived: import_zod29.z.boolean(),
1876
2045
  /** Chats in it. */
1877
2046
  count: nonNegInt
1878
2047
  });
1879
- var ChatPin = import_zod28.z.strictObject({
2048
+ var ChatPin = import_zod29.z.strictObject({
1880
2049
  /** The window whose account pins it; an account with no window of its own is named by its email. */
1881
- window: import_zod28.z.string().min(1).max(320),
2050
+ window: import_zod29.z.string().min(1).max(320),
1882
2051
  /** When that account's pin list was last read; null when the reading has no time. */
1883
2052
  observed_at_ms: epochMs.nullable()
1884
2053
  });
1885
- var ChatRunning = import_zod28.z.strictObject({
2054
+ var ChatRunning = import_zod29.z.strictObject({
1886
2055
  window: ChatPlace,
1887
2056
  /** process: a live process resumed this chat there (exact); activity: that window's own record moved in the last 3 minutes. */
1888
- how: import_zod28.z.enum(["process", "activity"])
2057
+ how: import_zod29.z.enum(["process", "activity"])
1889
2058
  });
1890
- var ChatHidden = import_zod28.z.strictObject({
2059
+ var ChatHidden = import_zod29.z.strictObject({
1891
2060
  window: ChatPlace,
1892
- reason: import_zod28.z.string().max(200)
2061
+ reason: import_zod29.z.string().max(200)
1893
2062
  });
1894
- var ChatLastUse = import_zod28.z.strictObject({
2063
+ var ChatLastUse = import_zod29.z.strictObject({
1895
2064
  /** The conversation's last reply. */
1896
2065
  at_ms: epochMs,
1897
2066
  window: ChatPlace.nullable(),
1898
- account: import_zod28.z.string().max(320).nullable(),
2067
+ account: import_zod29.z.string().max(320).nullable(),
1899
2068
  /** How the window was decided (one short line). */
1900
- how: import_zod28.z.string().max(120).nullable(),
2069
+ how: import_zod29.z.string().max(120).nullable(),
1901
2070
  /** The account's 1-hour prompt cache is still warm. */
1902
- cache_warm: import_zod28.z.boolean(),
2071
+ cache_warm: import_zod29.z.boolean(),
1903
2072
  cache_minutes_left: nonNegInt
1904
2073
  });
1905
- var ChatAppProject = import_zod28.z.strictObject({
1906
- id: import_zod28.z.string().min(1).max(200),
1907
- name: import_zod28.z.string().max(200)
2074
+ var ChatAppProject = import_zod29.z.strictObject({
2075
+ id: import_zod29.z.string().min(1).max(200),
2076
+ name: import_zod29.z.string().max(200)
1908
2077
  });
1909
- var ChatTitleSource = import_zod28.z.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt"]);
1910
- var ChatRow = import_zod28.z.strictObject({
2078
+ var ChatTitleSource = import_zod29.z.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt"]);
2079
+ var ChatRow = import_zod29.z.strictObject({
1911
2080
  id: ChatId,
1912
2081
  /** The short id people see (the listing's first 8 characters). */
1913
- short_id: import_zod28.z.string().max(16),
2082
+ short_id: import_zod29.z.string().max(16),
1914
2083
  /** The listing's own name (Claude: local_<id>), null for a chat only in the holder. */
1915
- record: import_zod28.z.string().max(160).nullable(),
1916
- title: import_zod28.z.string().max(1e3),
2084
+ record: import_zod29.z.string().max(160).nullable(),
2085
+ title: import_zod29.z.string().max(1e3),
1917
2086
  last_active_ms: epochMs.nullable(),
1918
2087
  created_ms: epochMs.nullable(),
1919
- projects: import_zod28.z.array(ChatProjectId).max(500),
1920
- starred: import_zod28.z.boolean(),
1921
- pinned_in: import_zod28.z.array(ChatPin).max(200),
2088
+ projects: import_zod29.z.array(ChatProjectId).max(500),
2089
+ starred: import_zod29.z.boolean(),
2090
+ pinned_in: import_zod29.z.array(ChatPin).max(200),
1922
2091
  /** Every place it is listed now: window keys, plus "holder". */
1923
- places: import_zod28.z.array(ChatPlace).max(200),
1924
- held: import_zod28.z.boolean(),
1925
- running: import_zod28.z.array(ChatRunning).max(200),
1926
- hidden_in: import_zod28.z.array(ChatHidden).max(200),
2092
+ places: import_zod29.z.array(ChatPlace).max(200),
2093
+ held: import_zod29.z.boolean(),
2094
+ running: import_zod29.z.array(ChatRunning).max(200),
2095
+ hidden_in: import_zod29.z.array(ChatHidden).max(200),
1927
2096
  /** Kept out of the main window on purpose. */
1928
- hidden_from_main: import_zod28.z.boolean(),
2097
+ hidden_from_main: import_zod29.z.boolean(),
1929
2098
  /** Listed in a side window and not yet copied into main. */
1930
- main_pending: import_zod28.z.boolean(),
2099
+ main_pending: import_zod29.z.boolean(),
1931
2100
  /** A scheduled routine's run (its task id). */
1932
- scheduled: import_zod28.z.string().max(200).nullable(),
2101
+ scheduled: import_zod29.z.string().max(200).nullable(),
1933
2102
  /** Created recently and in no project: offered for filing. */
1934
- new_unfiled: import_zod28.z.boolean(),
1935
- warnings: import_zod28.z.array(import_zod28.z.string().max(400)).max(20),
2103
+ new_unfiled: import_zod29.z.boolean(),
2104
+ warnings: import_zod29.z.array(import_zod29.z.string().max(400)).max(20),
1936
2105
  last_use: ChatLastUse.nullable(),
1937
2106
  /** 1.13: the app's own project the chat is grouped under in the app (Codex), read only; absent = none or not an app that groups. */
1938
2107
  app_project: ChatAppProject.optional(),
@@ -1942,340 +2111,344 @@ var ChatRow = import_zod28.z.strictObject({
1942
2111
  * 1.14: the chat's own title before the person's rename (the one title rule, `@ai-matrx/coding-sessions/sessions`);
1943
2112
  * `title` is what to show (`title_override` when set, else this).
1944
2113
  */
1945
- original_title: import_zod28.z.string().max(1e3).optional(),
2114
+ original_title: import_zod29.z.string().max(1e3).optional(),
1946
2115
  /** 1.14: where `original_title` came from (the one rule's sources, strongest first; 1.15: a closed set). */
1947
2116
  title_source: ChatTitleSource.optional(),
1948
2117
  /** 1.14: the person's rename inside Matrx (Coding Sessions), applied once by the row builder; absent = none. */
1949
- title_override: import_zod28.z.string().min(1).max(300).optional(),
2118
+ title_override: import_zod29.z.string().min(1).max(300).optional(),
1950
2119
  /** 1.15: the app itself archived it (hidden_in says where and why, in words for people; this is the typed fact). */
1951
- archived: import_zod28.z.boolean().optional()
2120
+ archived: import_zod29.z.boolean().optional()
1952
2121
  });
1953
- var ChatFamily = import_zod28.z.strictObject({
2122
+ var ChatFamily = import_zod29.z.strictObject({
1954
2123
  id: ChatId,
1955
2124
  fork_of: ChatId.nullable(),
1956
2125
  copy_of: ChatId.nullable()
1957
2126
  });
1958
- var AppsChatsListParams = import_zod28.z.strictObject({
2127
+ var AppsChatsListParams = import_zod29.z.strictObject({
1959
2128
  app_key: AppKey,
1960
2129
  /** Only these chats (a live update re-reads just what changed). */
1961
- ids: import_zod28.z.array(ChatId).max(500).optional()
2130
+ ids: import_zod29.z.array(ChatId).max(500).optional()
1962
2131
  });
1963
- var AppsChatsListResult = import_zod28.z.strictObject({
2132
+ var AppsChatsListResult = import_zod29.z.strictObject({
1964
2133
  app_key: AppKey,
1965
2134
  /** Bumps on every change the index sees; `apps.chats.changed` carries the same number. */
1966
2135
  version: nonNegInt,
1967
- windows: import_zod28.z.array(ChatWindow).max(200),
1968
- projects: import_zod28.z.array(ChatProject).max(5e3),
1969
- chats: import_zod28.z.array(ChatRow).max(2e4),
2136
+ windows: import_zod29.z.array(ChatWindow).max(200),
2137
+ projects: import_zod29.z.array(ChatProject).max(5e3),
2138
+ chats: import_zod29.z.array(ChatRow).max(2e4),
1970
2139
  /** How long a chat in no project counts as new. */
1971
2140
  new_window_ms: nonNegInt,
1972
2141
  /** 1.9: this is the copy saved at the last read, shown while everything is read again. */
1973
- updating: import_zod28.z.boolean().optional(),
2142
+ updating: import_zod29.z.boolean().optional(),
1974
2143
  /** 1.9: false while the folder watches are down (changes are not arriving); `apps.chats.watch_state` says when it changes. */
1975
- live: import_zod28.z.boolean().optional(),
2144
+ live: import_zod29.z.boolean().optional(),
1976
2145
  /** 1.10: every listed chat that is a fork or a copy of another (read from the conversations' first lines). */
1977
- families: import_zod28.z.array(ChatFamily).max(2e4).optional()
2146
+ families: import_zod29.z.array(ChatFamily).max(2e4).optional()
1978
2147
  });
1979
- var AppsChatsWatchParams = import_zod28.z.strictObject({ app_key: AppKey });
1980
- var AppsChatsWatchResult = import_zod28.z.strictObject({ resource_id: ResourceId, version: nonNegInt });
1981
- var AppsChatsChangedEvent = import_zod28.z.strictObject({
2148
+ var AppsChatsWatchParams = import_zod29.z.strictObject({ app_key: AppKey });
2149
+ var AppsChatsWatchResult = import_zod29.z.strictObject({ resource_id: ResourceId, version: nonNegInt });
2150
+ var AppsChatsChangedEvent = import_zod29.z.strictObject({
1982
2151
  app_key: AppKey,
1983
2152
  version: nonNegInt,
1984
- ids: import_zod28.z.array(ChatId).max(1e3),
1985
- all: import_zod28.z.boolean()
2153
+ ids: import_zod29.z.array(ChatId).max(1e3),
2154
+ all: import_zod29.z.boolean()
1986
2155
  });
1987
- var AppsChatsWatchStateEvent = import_zod28.z.strictObject({
2156
+ var AppsChatsWatchStateEvent = import_zod29.z.strictObject({
1988
2157
  app_key: AppKey,
1989
- live: import_zod28.z.boolean(),
1990
- updating: import_zod28.z.boolean(),
1991
- reason: import_zod28.z.string().max(300).nullable()
2158
+ live: import_zod29.z.boolean(),
2159
+ updating: import_zod29.z.boolean(),
2160
+ reason: import_zod29.z.string().max(300).nullable()
1992
2161
  });
1993
- var AppsChatsPlaceParams = import_zod28.z.strictObject({
2162
+ var AppsChatsPlaceParams = import_zod29.z.strictObject({
1994
2163
  app_key: AppKey,
1995
2164
  chat_id: ChatId,
1996
- action: import_zod28.z.enum(["place", "take_off", "hold"]),
2165
+ action: import_zod29.z.enum(["place", "take_off", "hold"]),
1997
2166
  /** The window (for place and take_off). */
1998
2167
  window: ChatPlace.optional(),
1999
2168
  /** take_off where it is open: stop it there first (the person confirmed). */
2000
- stop_if_open: import_zod28.z.boolean().default(false)
2169
+ stop_if_open: import_zod29.z.boolean().default(false)
2001
2170
  });
2002
- var AppsChatsPlaceResult = import_zod28.z.strictObject({ chat: ChatRow, message: import_zod28.z.string().max(400) });
2003
- var AppsProjectsFileManyParams = import_zod28.z.strictObject({
2171
+ var AppsChatsPlaceResult = import_zod29.z.strictObject({ chat: ChatRow, message: import_zod29.z.string().max(400) });
2172
+ var AppsProjectsFileManyParams = import_zod29.z.strictObject({
2004
2173
  app_key: AppKey,
2005
- chat_ids: import_zod28.z.array(ChatId).min(1).max(500),
2174
+ chat_ids: import_zod29.z.array(ChatId).min(1).max(500),
2006
2175
  project_id: ChatProjectId.optional(),
2007
- new_project_name: import_zod28.z.string().min(1).max(200).optional()
2176
+ new_project_name: import_zod29.z.string().min(1).max(200).optional()
2008
2177
  });
2009
- var AppsProjectsFileManyResult = import_zod28.z.strictObject({ chats: import_zod28.z.array(ChatRow).max(500), project: ChatProject });
2010
- var AppsProjectsUpdateParams = import_zod28.z.strictObject({
2178
+ var AppsProjectsFileManyResult = import_zod29.z.strictObject({ chats: import_zod29.z.array(ChatRow).max(500), project: ChatProject });
2179
+ var AppsProjectsUpdateParams = import_zod29.z.strictObject({
2011
2180
  app_key: AppKey,
2012
2181
  project_id: ChatProjectId,
2013
- name: import_zod28.z.string().min(1).max(200).optional(),
2014
- archived: import_zod28.z.boolean().optional()
2182
+ name: import_zod29.z.string().min(1).max(200).optional(),
2183
+ archived: import_zod29.z.boolean().optional()
2015
2184
  });
2016
- var AppsProjectsUpdateResult = import_zod28.z.strictObject({ project: ChatProject });
2017
- var AppsProjectsCopyParams = import_zod28.z.strictObject({ app_key: AppKey, project_id: ChatProjectId, new_project_name: import_zod28.z.string().min(1).max(200) });
2018
- var AppsProjectsCopyResult = import_zod28.z.strictObject({ project: ChatProject });
2019
- var AppsProjectsFileParams = import_zod28.z.strictObject({
2185
+ var AppsProjectsUpdateResult = import_zod29.z.strictObject({ project: ChatProject });
2186
+ var AppsProjectsCopyParams = import_zod29.z.strictObject({ app_key: AppKey, project_id: ChatProjectId, new_project_name: import_zod29.z.string().min(1).max(200) });
2187
+ var AppsProjectsCopyResult = import_zod29.z.strictObject({ project: ChatProject });
2188
+ var AppsProjectsFileParams = import_zod29.z.strictObject({
2020
2189
  app_key: AppKey,
2021
2190
  chat_id: ChatId,
2022
2191
  project_id: ChatProjectId.optional(),
2023
- new_project_name: import_zod28.z.string().min(1).max(200).optional()
2192
+ new_project_name: import_zod29.z.string().min(1).max(200).optional()
2024
2193
  });
2025
- var AppsProjectsFileResult = import_zod28.z.strictObject({ chat: ChatRow, project: ChatProject });
2026
- var AppsProjectsUnfileParams = import_zod28.z.strictObject({ app_key: AppKey, chat_id: ChatId, project_id: ChatProjectId });
2027
- var AppsProjectsUnfileResult = import_zod28.z.strictObject({ chat: ChatRow });
2028
- var AppsChatsStarParams = import_zod28.z.strictObject({ app_key: AppKey, chat_id: ChatId, starred: import_zod28.z.boolean() });
2029
- var AppsChatsStarResult = import_zod28.z.strictObject({ chat: ChatRow });
2194
+ var AppsProjectsFileResult = import_zod29.z.strictObject({ chat: ChatRow, project: ChatProject });
2195
+ var AppsProjectsUnfileParams = import_zod29.z.strictObject({ app_key: AppKey, chat_id: ChatId, project_id: ChatProjectId });
2196
+ var AppsProjectsUnfileResult = import_zod29.z.strictObject({ chat: ChatRow });
2197
+ var AppsChatsStarParams = import_zod29.z.strictObject({ app_key: AppKey, chat_id: ChatId, starred: import_zod29.z.boolean() });
2198
+ var AppsChatsStarResult = import_zod29.z.strictObject({ chat: ChatRow });
2030
2199
 
2031
2200
  // src/schema/apps-accounts.ts
2032
- var import_zod29 = require("zod");
2033
- var AppWindowInfo = import_zod29.z.strictObject({
2201
+ var import_zod30 = require("zod");
2202
+ var AppWindowInfo = import_zod30.z.strictObject({
2034
2203
  key: ChatPlace,
2035
2204
  /** The app's default profile (Claude: main, which may sign into any account). */
2036
- main: import_zod29.z.boolean(),
2205
+ main: import_zod30.z.boolean(),
2037
2206
  /** The account the window is meant for (null for main). */
2038
- account: import_zod29.z.string().max(320).nullable(),
2207
+ account: import_zod30.z.string().max(320).nullable(),
2039
2208
  /** The account signed in there now: an email, or the account id while it has no saved name. */
2040
- signed_in: import_zod29.z.string().max(320).nullable(),
2041
- signed_in_is_email: import_zod29.z.boolean(),
2209
+ signed_in: import_zod30.z.string().max(320).nullable(),
2210
+ signed_in_is_email: import_zod30.z.boolean(),
2042
2211
  /** Signed into another account than the one it is meant for. */
2043
- mismatch: import_zod29.z.boolean(),
2212
+ mismatch: import_zod30.z.boolean(),
2044
2213
  /** Its folder exists. */
2045
- created: import_zod29.z.boolean(),
2214
+ created: import_zod30.z.boolean(),
2046
2215
  /** Open now. */
2047
- running: import_zod29.z.boolean(),
2216
+ running: import_zod30.z.boolean(),
2048
2217
  /** Chats open in it now (a process resuming each one). */
2049
2218
  open_chats: nonNegInt
2050
2219
  });
2051
- var AccountUsage = import_zod29.z.strictObject({
2220
+ var AccountUsage = import_zod30.z.strictObject({
2052
2221
  /** The account's email, or "org <8 chars>" when no window has ever sampled that org. */
2053
- account: import_zod29.z.string().max(320),
2054
- org: import_zod29.z.string().max(80).nullable(),
2222
+ account: import_zod30.z.string().max(320),
2223
+ org: import_zod30.z.string().max(80).nullable(),
2055
2224
  /** False when the org was sampled in several accounts' windows and the vote is not clear (≥ 75 %). */
2056
- account_certain: import_zod29.z.boolean(),
2225
+ account_certain: import_zod30.z.boolean(),
2057
2226
  /** 5-hour use in percent (0 once the reading is over 5 hours old). */
2058
- five_hour: import_zod29.z.number().nullable(),
2059
- five_hour_reset_since: import_zod29.z.boolean(),
2227
+ five_hour: import_zod30.z.number().nullable(),
2228
+ five_hour_reset_since: import_zod30.z.boolean(),
2060
2229
  /** Weekly use in percent (0 once the week reset after the reading). */
2061
- weekly: import_zod29.z.number().nullable(),
2062
- weekly_reset_since: import_zod29.z.boolean(),
2230
+ weekly: import_zod30.z.number().nullable(),
2231
+ weekly_reset_since: import_zod30.z.boolean(),
2063
2232
  /** Extra-usage spend in percent of its cap, when on. */
2064
- extra_usage: import_zod29.z.number().nullable(),
2233
+ extra_usage: import_zod30.z.number().nullable(),
2065
2234
  extra_usage_as_of_ms: epochMs.nullable(),
2066
2235
  as_of_ms: epochMs,
2067
2236
  /** The windows meant for this account (and main when main took the reading). */
2068
- windows: import_zod29.z.array(ChatPlace).max(200),
2237
+ windows: import_zod30.z.array(ChatPlace).max(200),
2069
2238
  /** The window that took the reading is open now and the reading is under 30 minutes old. */
2070
- live: import_zod29.z.boolean(),
2239
+ live: import_zod30.z.boolean(),
2071
2240
  /** The next weekly reset, when known. */
2072
2241
  weekly_resets_at_ms: epochMs.nullable(),
2073
2242
  /** That reset time is Claude's own (its reading, or a reset seen in its usage history). */
2074
- weekly_reset_official: import_zod29.z.boolean().nullable(),
2243
+ weekly_reset_official: import_zod30.z.boolean().nullable(),
2075
2244
  /** 1.13: the account's plan as the app names it (Codex: "pro", "prolite"), when recorded. */
2076
- plan: import_zod29.z.string().max(80).optional(),
2245
+ plan: import_zod30.z.string().max(80).optional(),
2077
2246
  /** 1.13: the account's credit balance as the app records it (Codex), when recorded. */
2078
- credits: import_zod29.z.string().max(40).optional()
2247
+ credits: import_zod30.z.string().max(40).optional()
2079
2248
  });
2080
- var AccountReset = import_zod29.z.strictObject({
2249
+ var AccountReset = import_zod30.z.strictObject({
2081
2250
  window: ChatPlace,
2082
- account: import_zod29.z.string().max(320).nullable(),
2251
+ account: import_zod30.z.string().max(320).nullable(),
2083
2252
  next_reset_ms: epochMs.nullable(),
2084
2253
  /** claude: the app's own reading; usage_history: a weekly drop seen in its usage record; your_list: the person's own entry. */
2085
- source: import_zod29.z.enum(["claude", "usage_history", "your_list"]).nullable(),
2254
+ source: import_zod30.z.enum(["claude", "usage_history", "your_list"]).nullable(),
2086
2255
  /** claude or usage_history. */
2087
- official: import_zod29.z.boolean(),
2256
+ official: import_zod30.z.boolean(),
2088
2257
  /** Set when the person's list disagrees with the official time. */
2089
- note: import_zod29.z.string().max(200).nullable()
2258
+ note: import_zod30.z.string().max(200).nullable()
2090
2259
  });
2091
- var AppsWindowsListParams = import_zod29.z.strictObject({ app_key: AppKey });
2092
- var AppsWindowsListResult = import_zod29.z.strictObject({ app_key: AppKey, windows: import_zod29.z.array(AppWindowInfo).max(200) });
2093
- var AppsAccountsUsageParams = import_zod29.z.strictObject({ app_key: AppKey });
2094
- var AppsAccountsUsageResult = import_zod29.z.strictObject({
2260
+ var AppsWindowsListParams = import_zod30.z.strictObject({ app_key: AppKey });
2261
+ var AppsWindowsListResult = import_zod30.z.strictObject({ app_key: AppKey, windows: import_zod30.z.array(AppWindowInfo).max(200) });
2262
+ var AppsAccountsUsageParams = import_zod30.z.strictObject({ app_key: AppKey });
2263
+ var AppsAccountsUsageResult = import_zod30.z.strictObject({
2095
2264
  app_key: AppKey,
2096
- accounts: import_zod29.z.array(AccountUsage).max(500),
2265
+ accounts: import_zod30.z.array(AccountUsage).max(500),
2097
2266
  /** 1.12: the rows are right but something around them failed (a newly read reset time could not be saved); shown, never hidden. */
2098
- problem: import_zod29.z.string().max(400).optional()
2267
+ problem: import_zod30.z.string().max(400).optional()
2099
2268
  });
2100
- var AppsAccountsResetsParams = import_zod29.z.strictObject({ app_key: AppKey });
2101
- var AppsAccountsResetsResult = import_zod29.z.strictObject({
2269
+ var AppsAccountsResetsParams = import_zod30.z.strictObject({ app_key: AppKey });
2270
+ var AppsAccountsResetsResult = import_zod30.z.strictObject({
2102
2271
  app_key: AppKey,
2103
- resets: import_zod29.z.array(AccountReset).max(200),
2272
+ resets: import_zod30.z.array(AccountReset).max(200),
2104
2273
  /** 1.12: as on `apps.accounts.usage`. */
2105
- problem: import_zod29.z.string().max(400).optional()
2274
+ problem: import_zod30.z.string().max(400).optional()
2106
2275
  });
2107
- var AppsWindowActionResult = import_zod29.z.strictObject({ message: import_zod29.z.string().max(400) });
2108
- var AppsWindowsOpenParams = import_zod29.z.strictObject({ app_key: AppKey, window: ChatPlace });
2109
- var AppsWindowsReloadParams = import_zod29.z.strictObject({ app_key: AppKey, window: ChatPlace });
2110
- var ShownSection = import_zod29.z.strictObject({
2111
- title: import_zod29.z.string().max(300),
2276
+ var AppsWindowActionResult = import_zod30.z.strictObject({ message: import_zod30.z.string().max(400) });
2277
+ var AppsWindowsOpenParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace });
2278
+ var AppsWindowsReloadParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace });
2279
+ var ShownSection = import_zod30.z.strictObject({
2280
+ title: import_zod30.z.string().max(300),
2112
2281
  /** Rows drawn under it (a collapsed section draws none). */
2113
- rows: import_zod29.z.number().int().nonnegative(),
2114
- expanded: import_zod29.z.boolean()
2282
+ rows: import_zod30.z.number().int().nonnegative(),
2283
+ expanded: import_zod30.z.boolean()
2115
2284
  });
2116
- var AppsWindowsShownParams = import_zod29.z.strictObject({ app_key: AppKey, window: ChatPlace });
2117
- var AppsWindowsShownResult = import_zod29.z.strictObject({
2285
+ var AppsWindowsShownParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace });
2286
+ var AppsWindowsShownResult = import_zod30.z.strictObject({
2118
2287
  window: ChatPlace,
2119
- open: import_zod29.z.boolean(),
2120
- sections: import_zod29.z.array(ShownSection).max(200),
2121
- problem: import_zod29.z.string().max(400).nullable()
2288
+ open: import_zod30.z.boolean(),
2289
+ sections: import_zod30.z.array(ShownSection).max(200),
2290
+ problem: import_zod30.z.string().max(400).nullable()
2122
2291
  });
2123
- var AppsWindowsRestartParams = import_zod29.z.strictObject({ app_key: AppKey, window: ChatPlace, force: import_zod29.z.boolean().default(false) });
2124
- var AppsWindowsRefreshUsageParams = import_zod29.z.strictObject({ app_key: AppKey, window: ChatPlace });
2125
- var AppsProjectsMoveParams = import_zod29.z.strictObject({
2292
+ var AppsWindowsRestartParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace, force: import_zod30.z.boolean().default(false) });
2293
+ var AppsWindowsRefreshUsageParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace });
2294
+ var AppsProjectsMoveParams = import_zod30.z.strictObject({
2126
2295
  app_key: AppKey,
2127
2296
  chat_id: ChatId,
2128
2297
  from_project_id: ChatProjectId,
2129
2298
  to_project_id: ChatProjectId.optional(),
2130
- new_project_name: import_zod29.z.string().min(1).max(200).optional()
2131
- });
2132
- var AppsProjectsMoveResult = import_zod29.z.strictObject({ chat: ChatRow, project: ChatProject });
2133
- var AppsProjectsCreateParams = import_zod29.z.strictObject({ app_key: AppKey, name: import_zod29.z.string().min(1).max(200) });
2134
- var AppsProjectsCreateResult = import_zod29.z.strictObject({ project: ChatProject });
2135
- var AppsProjectsImportPinsParams = import_zod29.z.strictObject({ app_key: AppKey });
2136
- var AppsProjectsImportPinsResult = import_zod29.z.strictObject({ message: import_zod29.z.string().max(400) });
2137
- var ProjectMoveChat = import_zod29.z.strictObject({ chat_id: ChatId, title: import_zod29.z.string().max(300) });
2138
- var ProjectMoveSkip = import_zod29.z.strictObject({ chat_id: ChatId, title: import_zod29.z.string().max(300), window: ChatPlace.nullable(), reason: import_zod29.z.string().max(400) });
2139
- var ProjectMoveGroup = import_zod29.z.strictObject({
2140
- ok: import_zod29.z.boolean(),
2141
- name: import_zod29.z.string().max(200),
2299
+ new_project_name: import_zod30.z.string().min(1).max(200).optional()
2300
+ });
2301
+ var AppsProjectsMoveResult = import_zod30.z.strictObject({ chat: ChatRow, project: ChatProject });
2302
+ var AppsProjectsCreateParams = import_zod30.z.strictObject({ app_key: AppKey, name: import_zod30.z.string().min(1).max(200) });
2303
+ var AppsProjectsCreateResult = import_zod30.z.strictObject({ project: ChatProject });
2304
+ var AppsProjectsImportPinsParams = import_zod30.z.strictObject({ app_key: AppKey });
2305
+ var AppsProjectsImportPinsResult = import_zod30.z.strictObject({ message: import_zod30.z.string().max(400) });
2306
+ var ProjectMoveChat = import_zod30.z.strictObject({ chat_id: ChatId, title: import_zod30.z.string().max(300) });
2307
+ var ProjectMoveSkip = import_zod30.z.strictObject({ chat_id: ChatId, title: import_zod30.z.string().max(300), window: ChatPlace.nullable(), reason: import_zod30.z.string().max(400) });
2308
+ var ProjectMoveGroup = import_zod30.z.strictObject({
2309
+ ok: import_zod30.z.boolean(),
2310
+ name: import_zod30.z.string().max(200),
2142
2311
  /** Why it is not (or was not) grouped — e.g. the window is open. */
2143
- reason: import_zod29.z.string().max(400).optional(),
2312
+ reason: import_zod30.z.string().max(400).optional(),
2144
2313
  /** Chats that get (or got) the group; already in it; taken from another group of the window. */
2145
2314
  assign: nonNegInt.optional(),
2146
2315
  already: nonNegInt.optional(),
2147
2316
  from_other_groups: nonNegInt.optional(),
2148
2317
  /** A group of that name was already there (reused, never doubled). */
2149
- group_exists: import_zod29.z.boolean().optional()
2318
+ group_exists: import_zod30.z.boolean().optional()
2150
2319
  });
2151
- var AppsProjectsToWindowParams = import_zod29.z.strictObject({
2320
+ var AppsProjectsToWindowParams = import_zod30.z.strictObject({
2152
2321
  app_key: AppKey,
2153
2322
  project_id: ChatProjectId,
2154
2323
  window: ChatPlace,
2155
2324
  /** Also take each chat off its other side windows where safe (never main, the holder, an open window). */
2156
- take_off: import_zod29.z.boolean().default(false),
2325
+ take_off: import_zod30.z.boolean().default(false),
2157
2326
  /** Also group them under the project's name in that window's sidebar (closed windows only). */
2158
- group: import_zod29.z.boolean().default(false),
2159
- dry_run: import_zod29.z.boolean().default(false)
2327
+ group: import_zod30.z.boolean().default(false),
2328
+ dry_run: import_zod30.z.boolean().default(false)
2160
2329
  });
2161
- var AppsProjectsToWindowResult = import_zod29.z.strictObject({
2330
+ var AppsProjectsToWindowResult = import_zod30.z.strictObject({
2162
2331
  project_id: ChatProjectId,
2163
2332
  window: ChatPlace,
2164
- dry_run: import_zod29.z.boolean(),
2165
- place: import_zod29.z.array(ProjectMoveChat).max(5e3),
2166
- already: import_zod29.z.array(ProjectMoveChat).max(5e3),
2167
- take_off: import_zod29.z.array(ProjectMoveChat.extend({ window: ChatPlace })).max(2e4),
2168
- skipped: import_zod29.z.array(ProjectMoveSkip).max(2e4),
2333
+ dry_run: import_zod30.z.boolean(),
2334
+ place: import_zod30.z.array(ProjectMoveChat).max(5e3),
2335
+ already: import_zod30.z.array(ProjectMoveChat).max(5e3),
2336
+ take_off: import_zod30.z.array(ProjectMoveChat.extend({ window: ChatPlace })).max(2e4),
2337
+ skipped: import_zod30.z.array(ProjectMoveSkip).max(2e4),
2169
2338
  /** Chats of the project from other apps (no windows to place into), left as they are. */
2170
2339
  other_apps: nonNegInt,
2171
2340
  group: ProjectMoveGroup.nullable(),
2172
- message: import_zod29.z.string().max(400)
2341
+ message: import_zod30.z.string().max(400)
2173
2342
  });
2174
- var ColdChat = import_zod29.z.strictObject({
2343
+ var ColdChat = import_zod30.z.strictObject({
2175
2344
  id: ChatId,
2176
- title: import_zod29.z.string().max(1e3),
2177
- repo: import_zod29.z.string().max(200).nullable(),
2178
- window: import_zod29.z.string().max(64).nullable(),
2179
- account: import_zod29.z.string().max(320).nullable(),
2180
- model_name: import_zod29.z.string().max(120).nullable(),
2345
+ title: import_zod30.z.string().max(1e3),
2346
+ repo: import_zod30.z.string().max(200).nullable(),
2347
+ window: import_zod30.z.string().max(64).nullable(),
2348
+ account: import_zod30.z.string().max(320).nullable(),
2349
+ model_name: import_zod30.z.string().max(120).nullable(),
2181
2350
  context_tokens: nonNegInt,
2182
2351
  cold_at_ms: epochMs,
2183
2352
  /** Waking it once the cache is cold. */
2184
- cold_cost: import_zod29.z.number().nullable(),
2353
+ cold_cost: import_zod30.z.number().nullable(),
2185
2354
  /** Waking it while the cache is warm. */
2186
- warm_cost: import_zod29.z.number().nullable(),
2355
+ warm_cost: import_zod30.z.number().nullable(),
2187
2356
  /** Its account is on extra usage (a 5-minute cache, and real money). */
2188
- extra_usage: import_zod29.z.boolean(),
2357
+ extra_usage: import_zod30.z.boolean(),
2189
2358
  /** A scheduled routine's run. */
2190
- scheduled: import_zod29.z.boolean(),
2359
+ scheduled: import_zod30.z.boolean(),
2191
2360
  /** It can be shown in its window (started in the desktop app). */
2192
- openable: import_zod29.z.boolean(),
2361
+ openable: import_zod30.z.boolean(),
2193
2362
  /** How its window was decided, or why it can't be opened. */
2194
- how: import_zod29.z.string().max(200).nullable()
2363
+ how: import_zod30.z.string().max(200).nullable()
2195
2364
  });
2196
- var AppsChatsColdParams = import_zod29.z.strictObject({ app_key: AppKey });
2197
- var AppsChatsColdResult = import_zod29.z.strictObject({
2365
+ var AppsChatsColdParams = import_zod30.z.strictObject({ app_key: AppKey });
2366
+ var AppsChatsColdResult = import_zod30.z.strictObject({
2198
2367
  app_key: AppKey,
2199
2368
  /** Waiting for the person with a warm cache, most urgent first. */
2200
- waiting: import_zod29.z.array(ColdChat).max(2e3),
2369
+ waiting: import_zod30.z.array(ColdChat).max(2e3),
2201
2370
  /** Went cold in the last while. */
2202
- recently_cold: import_zod29.z.array(ColdChat).max(2e3),
2371
+ recently_cold: import_zod30.z.array(ColdChat).max(2e3),
2203
2372
  /** Chats working right now (not waiting). */
2204
2373
  working: nonNegInt
2205
2374
  });
2206
- var AppsChatsOpenParams = import_zod29.z.strictObject({ app_key: AppKey, chat_id: ChatId, window: ChatPlace.optional() });
2207
- var SpendSplit = import_zod29.z.strictObject({ main: import_zod29.z.number(), helpers: import_zod29.z.number() });
2208
- var SpendScopes = import_zod29.z.strictObject({ today: SpendSplit, week: SpendSplit });
2209
- var SpendAccount = import_zod29.z.strictObject({
2210
- account: import_zod29.z.string().max(320),
2375
+ var AppsChatsOpenParams = import_zod30.z.strictObject({ app_key: AppKey, chat_id: ChatId, window: ChatPlace.optional() });
2376
+ var SpendSplit = import_zod30.z.strictObject({ main: import_zod30.z.number(), helpers: import_zod30.z.number() });
2377
+ var SpendScopes = import_zod30.z.strictObject({ today: SpendSplit, week: SpendSplit });
2378
+ var SpendAccount = import_zod30.z.strictObject({
2379
+ account: import_zod30.z.string().max(320),
2211
2380
  spend: SpendScopes,
2212
- last_hour: import_zod29.z.number().nullable(),
2213
- last_5h: import_zod29.z.number().nullable(),
2214
- five_hour: import_zod29.z.number().nullable(),
2215
- weekly: import_zod29.z.number().nullable(),
2381
+ last_hour: import_zod30.z.number().nullable(),
2382
+ last_5h: import_zod30.z.number().nullable(),
2383
+ five_hour: import_zod30.z.number().nullable(),
2384
+ weekly: import_zod30.z.number().nullable(),
2216
2385
  as_of_ms: epochMs.nullable(),
2217
2386
  weekly_resets_at_ms: epochMs.nullable(),
2218
2387
  /** When the 5-hour or weekly limit is projected to be reached at the current burn. */
2219
2388
  five_hour_full_at_ms: epochMs.nullable(),
2220
2389
  weekly_full_at_ms: epochMs.nullable(),
2221
2390
  /** The reading is too old to project. */
2222
- stale: import_zod29.z.boolean()
2391
+ stale: import_zod30.z.boolean()
2223
2392
  });
2224
- var SpendModel = import_zod29.z.strictObject({ model: import_zod29.z.string().max(120), name: import_zod29.z.string().max(120), spend: SpendScopes });
2225
- var SpendChat = import_zod29.z.strictObject({
2393
+ var SpendModel = import_zod30.z.strictObject({ model: import_zod30.z.string().max(120), name: import_zod30.z.string().max(120), spend: SpendScopes });
2394
+ var SpendChat = import_zod30.z.strictObject({
2226
2395
  id: ChatId,
2227
- title: import_zod29.z.string().max(1e3),
2228
- repo: import_zod29.z.string().max(200).nullable(),
2229
- window: import_zod29.z.string().max(64).nullable(),
2396
+ title: import_zod30.z.string().max(1e3),
2397
+ repo: import_zod30.z.string().max(200).nullable(),
2398
+ window: import_zod30.z.string().max(64).nullable(),
2230
2399
  spend: SpendScopes,
2231
2400
  helpers: nonNegInt
2232
2401
  });
2233
- var SpendHelper = import_zod29.z.strictObject({ model: import_zod29.z.string().max(120), steps: nonNegInt, over_steps: import_zod29.z.boolean(), description: import_zod29.z.string().max(400) });
2234
- var SpendLive = import_zod29.z.strictObject({ id: ChatId, title: import_zod29.z.string().max(1e3), window: import_zod29.z.string().max(64).nullable(), helpers: import_zod29.z.array(SpendHelper).max(200) });
2235
- var SpendIdleScope = import_zod29.z.strictObject({ count: nonNegInt, tokens: nonNegInt, cost: import_zod29.z.number(), avoidable: import_zod29.z.number() });
2236
- var SpendIdle = import_zod29.z.strictObject({ id: ChatId, chat: import_zod29.z.string().max(1e3), who: import_zod29.z.string().max(400), today: SpendIdleScope, week: SpendIdleScope, last_ms: epochMs });
2237
- var SpendStart = import_zod29.z.strictObject({ repo: import_zod29.z.string().max(200), count: nonNegInt, median: nonNegInt, latest: import_zod29.z.array(nonNegInt).max(20), alarm: import_zod29.z.string().max(400).nullable() });
2238
- var AppsSpendParams = import_zod29.z.strictObject({ app_key: AppKey });
2239
- var AppsSpendResult = import_zod29.z.strictObject({
2402
+ var SpendHelper = import_zod30.z.strictObject({ model: import_zod30.z.string().max(120), steps: nonNegInt, over_steps: import_zod30.z.boolean(), description: import_zod30.z.string().max(400) });
2403
+ var SpendLive = import_zod30.z.strictObject({ id: ChatId, title: import_zod30.z.string().max(1e3), window: import_zod30.z.string().max(64).nullable(), helpers: import_zod30.z.array(SpendHelper).max(200) });
2404
+ var SpendIdleScope = import_zod30.z.strictObject({ count: nonNegInt, tokens: nonNegInt, cost: import_zod30.z.number(), avoidable: import_zod30.z.number() });
2405
+ var SpendIdle = import_zod30.z.strictObject({ id: ChatId, chat: import_zod30.z.string().max(1e3), who: import_zod30.z.string().max(400), today: SpendIdleScope, week: SpendIdleScope, last_ms: epochMs });
2406
+ var SpendStart = import_zod30.z.strictObject({ repo: import_zod30.z.string().max(200), count: nonNegInt, median: nonNegInt, latest: import_zod30.z.array(nonNegInt).max(20), alarm: import_zod30.z.string().max(400).nullable() });
2407
+ var SpendDay = import_zod30.z.strictObject({ date: import_zod30.z.string().regex(/^\d{4}-\d{2}-\d{2}$/), main: import_zod30.z.number(), helpers: import_zod30.z.number() });
2408
+ var AppsSpendParams = import_zod30.z.strictObject({ app_key: AppKey });
2409
+ var AppsSpendResult = import_zod30.z.strictObject({
2240
2410
  app_key: AppKey,
2241
2411
  /** False while older chats are still being read. */
2242
- complete: import_zod29.z.boolean(),
2243
- today_total: import_zod29.z.number(),
2244
- week_total: import_zod29.z.number(),
2245
- idle_today: import_zod29.z.number(),
2246
- idle_week: import_zod29.z.number(),
2412
+ complete: import_zod30.z.boolean(),
2413
+ today_total: import_zod30.z.number(),
2414
+ week_total: import_zod30.z.number(),
2415
+ idle_today: import_zod30.z.number(),
2416
+ idle_week: import_zod30.z.number(),
2247
2417
  /** Models with no known list price. */
2248
- unpriced: import_zod29.z.array(import_zod29.z.string().max(120)).max(100),
2418
+ unpriced: import_zod30.z.array(import_zod30.z.string().max(120)).max(100),
2249
2419
  /** Helpers past their step budget, unusual starting sizes. */
2250
- alarms: import_zod29.z.array(import_zod29.z.string().max(400)).max(200),
2251
- live: import_zod29.z.array(SpendLive).max(200),
2252
- accounts: import_zod29.z.array(SpendAccount).max(200),
2253
- models: import_zod29.z.array(SpendModel).max(100),
2254
- chats: import_zod29.z.array(SpendChat).max(500),
2255
- idle: import_zod29.z.array(SpendIdle).max(500),
2256
- starts: import_zod29.z.array(SpendStart).max(200)
2257
- });
2258
- var AppsSyncStatusParams = import_zod29.z.strictObject({ app_key: AppKey });
2259
- var AppsSyncStatusResult = import_zod29.z.strictObject({
2260
- healthy: import_zod29.z.boolean(),
2261
- summary: import_zod29.z.string().max(400),
2262
- problems: import_zod29.z.array(import_zod29.z.string().max(400)).max(200),
2263
- warnings: import_zod29.z.array(import_zod29.z.string().max(400)).max(200),
2420
+ alarms: import_zod30.z.array(import_zod30.z.string().max(400)).max(200),
2421
+ live: import_zod30.z.array(SpendLive).max(200),
2422
+ accounts: import_zod30.z.array(SpendAccount).max(200),
2423
+ models: import_zod30.z.array(SpendModel).max(100),
2424
+ /** (1.24) The last 7 days, oldest first (today last). */
2425
+ days: import_zod30.z.array(SpendDay).max(14).optional(),
2426
+ chats: import_zod30.z.array(SpendChat).max(500),
2427
+ idle: import_zod30.z.array(SpendIdle).max(500),
2428
+ starts: import_zod30.z.array(SpendStart).max(200)
2429
+ });
2430
+ var AppsSyncStatusParams = import_zod30.z.strictObject({ app_key: AppKey });
2431
+ var AppsSyncStatusResult = import_zod30.z.strictObject({
2432
+ healthy: import_zod30.z.boolean(),
2433
+ summary: import_zod30.z.string().max(400),
2434
+ problems: import_zod30.z.array(import_zod30.z.string().max(400)).max(200),
2435
+ warnings: import_zod30.z.array(import_zod30.z.string().max(400)).max(200),
2264
2436
  /** Accounts seen with no saved name yet (Save account names fixes them). */
2265
- unnamed_accounts: import_zod29.z.array(import_zod29.z.string().max(80)).max(200),
2437
+ unnamed_accounts: import_zod30.z.array(import_zod30.z.string().max(80)).max(200),
2266
2438
  /** The full report. */
2267
- output: import_zod29.z.string().max(2e5)
2439
+ output: import_zod30.z.string().max(2e5)
2268
2440
  });
2269
- var AppsSyncRunParams = import_zod29.z.strictObject({ app_key: AppKey });
2270
- var AppsWindowsProcessesParams = import_zod29.z.strictObject({ app_key: AppKey });
2271
- var AppsWindowsProcessesResult = import_zod29.z.strictObject({ processes: import_zod29.z.array(import_zod29.z.string().max(2e3)).max(2e3) });
2272
- var AppsWindowsAddParams = import_zod29.z.strictObject({ app_key: AppKey, window: ChatPlace, email: import_zod29.z.string().min(3).max(320) });
2273
- var AppsWindowsSaveNamesParams = import_zod29.z.strictObject({ app_key: AppKey });
2441
+ var AppsSyncRunParams = import_zod30.z.strictObject({ app_key: AppKey });
2442
+ var AppsWindowsProcessesParams = import_zod30.z.strictObject({ app_key: AppKey });
2443
+ var AppsWindowsProcessesResult = import_zod30.z.strictObject({ processes: import_zod30.z.array(import_zod30.z.string().max(2e3)).max(2e3) });
2444
+ var AppsWindowsAddParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace, email: import_zod30.z.string().min(3).max(320) });
2445
+ var AppsWindowsSaveNamesParams = import_zod30.z.strictObject({ app_key: AppKey });
2274
2446
 
2275
2447
  // src/schema/registry.ts
2276
2448
  var FS_ERR = ["NOT_FOUND", "PERMISSION_DENIED_OS", "INVALID_PARAMS", "RESOURCE_BUSY", "INTERNAL"];
2277
2449
  var OPS = {
2278
2450
  "sysinfo.get": { params: SysinfoGetParams, result: SysinfoGetResult, kind: "unary", since: "1.0", errors: ["INTERNAL"] },
2451
+ "sysinfo.hardware": { params: SysinfoHardwareParams, result: SysinfoHardwareResult, kind: "unary", since: "1.24", errors: ["INTERNAL"] },
2279
2452
  "fs.list": { params: FsListParams, result: FsListResult, kind: "unary", since: "1.0", errors: FS_ERR },
2280
2453
  "fs.stat": { params: FsStatParams, result: FsStatResult, kind: "unary", since: "1.0", errors: FS_ERR },
2281
2454
  "fs.read": { params: FsReadParams, result: FsReadResult, kind: "unary", since: "1.0", errors: [...FS_ERR, "PAYLOAD_TOO_LARGE"] },
@@ -2352,6 +2525,7 @@ var OPS = {
2352
2525
  "exec.job.stop": { params: ExecJobStopParams, result: ExecJobStopResult, kind: "unary", since: "1.4", errors: ["RESOURCE_GONE", "INVALID_PARAMS", "INTERNAL"] },
2353
2526
  "exec.job.list": { params: ExecJobListParams, result: ExecJobListResult, kind: "unary", since: "1.4", errors: ["INTERNAL"] },
2354
2527
  "system.open_url": { params: SystemOpenUrlParams, result: SystemOpenUrlResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2528
+ "system.open_settings": { params: SystemOpenSettingsParams, result: SystemOpenSettingsResult, kind: "unary", since: "1.24", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
2355
2529
  "system.open_path": { params: SystemOpenPathParams, result: SystemOpenPathResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2356
2530
  "system.notify": { params: SystemNotifyParams, result: SystemNotifyResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "INTERNAL"] },
2357
2531
  "screen.list": { params: ScreenListParams, result: ScreenListResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
@@ -2361,16 +2535,21 @@ var OPS = {
2361
2535
  "window.move": { params: WindowMoveParams, result: WindowMoveResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2362
2536
  "window.minimize": { params: WindowMinimizeParams, result: WindowMinimizeResult, kind: "unary", since: "1.4", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2363
2537
  "input.type_text": { params: InputTypeTextParams, result: InputTypeTextResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2538
+ "input.keyboard_settings": { params: InputKeyboardSettingsParams, result: InputKeyboardSettingsResult, kind: "unary", since: "1.24", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
2539
+ "input.set_keyboard_settings": { params: InputSetKeyboardSettingsParams, result: InputKeyboardSettingsResult, kind: "unary", since: "1.24", errors: ["INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2364
2540
  "input.hotkey": { params: InputHotkeyParams, result: InputHotkeyResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2365
2541
  "input.mouse_move": { params: InputMouseMoveParams, result: InputMouseMoveResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2366
2542
  "input.mouse_click": { params: InputMouseClickParams, result: InputMouseClickResult, kind: "unary", since: "1.4", errors: ["INVALID_PARAMS", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2367
2543
  "power.status": { params: PowerStatusParams, result: PowerStatusResult, kind: "unary", since: "1.4", errors: ["INTERNAL"] },
2544
+ "power.history": { params: PowerHistoryParams, result: PowerHistoryResult, kind: "unary", since: "1.24", errors: ["INTERNAL"] },
2368
2545
  "power.prevent_sleep": { params: PowerPreventSleepParams, result: PowerPreventSleepResult, kind: "unary", since: "1.4", errors: ["PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2369
2546
  "resources.snapshot": { params: ResourcesSnapshotParams, result: ResourcesSnapshotResult, kind: "unary", since: "1.4", errors: ["INTERNAL"] },
2370
2547
  "resources.activity": { params: ResourcesActivityParams, result: ResourcesActivityResult, kind: "unary", since: "1.17", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
2371
2548
  "resources.stop_job": { params: ResourcesStopJobParams, result: ResourcesStopJobResult, kind: "unary", since: "1.17", errors: ["NOT_FOUND", "CONFLICT", "AUTH_FORBIDDEN", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2372
2549
  "resources.incidents": { params: ResourcesIncidentsParams, result: ResourcesIncidentsResult, kind: "unary", since: "1.17", errors: ["INTERNAL"] },
2373
2550
  "audio.devices": { params: AudioDevicesParams, result: AudioDevicesResult, kind: "unary", since: "1.6", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
2551
+ "audio.levels": { params: AudioLevelsParams, result: AudioLevelsResult, kind: "unary", since: "1.24", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
2552
+ "audio.set_levels": { params: AudioSetLevelsParams, result: AudioLevelsResult, kind: "unary", since: "1.24", errors: ["INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2374
2553
  "audio.record": { params: AudioRecordParams, result: AudioRecordResult, kind: "unary", since: "1.6", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "RESOURCE_BUSY", "INTERNAL"] },
2375
2554
  "audio.play": { params: AudioPlayParams, result: AudioPlayResult, kind: "unary", since: "1.6", errors: ["NOT_FOUND", "INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2376
2555
  // The local AI Matrx servers (aidream's process-compose stack), supervised from Matrx 2's core.
@@ -2402,7 +2581,11 @@ var OPS = {
2402
2581
  "web.fetch": { params: WebFetchParams, result: WebFetchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
2403
2582
  "web.scrape": { params: WebScrapeParams, result: WebScrapeResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
2404
2583
  "web.search": { params: WebSearchParams, result: WebSearchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
2405
- "web.fetch_with_browser": { params: WebBrowserFetchParams, result: WebBrowserFetchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] }
2584
+ "web.fetch_with_browser": { params: WebBrowserFetchParams, result: WebBrowserFetchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
2585
+ // 1.23: the signed-in person's own agents and Vault, read as them (the desktop's Agents library and Vault).
2586
+ "account.agents.list": { params: AccountAgentsListParams, result: AccountAgentsListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
2587
+ "account.vault.list": { params: AccountVaultListParams, result: AccountVaultListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
2588
+ "account.vault.copy": { params: AccountVaultCopyParams, result: AccountVaultCopyResult, kind: "unary", since: "1.23", errors: ["AUTH_REQUIRED", "AUTH_FORBIDDEN", "NOT_FOUND", "INVALID_PARAMS", "DEVICE_OFFLINE", "INTERNAL"] }
2406
2589
  };
2407
2590
  var EVENTS = {
2408
2591
  "fs.changed": FsChangedEvent,