@ai-matrx/desktop-protocol 0.21.29 → 0.21.31

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 = 37;
147
+ var PROTOCOL_MINOR = 41;
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_-]+$/);
@@ -427,8 +427,17 @@ var OsPermissionName = import_zod5.z.enum([
427
427
  "location",
428
428
  "local_network",
429
429
  "bluetooth",
430
- "notifications"
430
+ "notifications",
431
+ // (1.41) Matrx Local's remaining kinds, checked on every OS (its permissions checker): a peer
432
+ // older than 1.41 is never sent these rows (versioning.ts PERMISSIONS_SINCE).
433
+ "reminders",
434
+ "speech_recognition",
435
+ "messages",
436
+ "mail",
437
+ "wifi"
431
438
  ]);
439
+ var OsGrantState = import_zod5.z.enum(["granted", "denied", "not_determined", "not_applicable"]);
440
+ var OsRequirementName = import_zod5.z.enum(["secret_storage", "tray", "display_server", "helper_programs", "smart_app_control", "path_length"]);
432
441
  var SysinfoGetParams = import_zod5.z.strictObject({});
433
442
  var SysinfoGetResult = import_zod5.z.strictObject({
434
443
  device_id: DeviceId,
@@ -458,9 +467,20 @@ var SysinfoGetResult = import_zod5.z.strictObject({
458
467
  import_zod5.z.strictObject({
459
468
  name: OsPermissionName,
460
469
  state: import_zod5.z.enum(["granted", "denied", "not_determined", "not_applicable"]),
461
- settings_url: import_zod5.z.string().max(512).nullable()
470
+ settings_url: import_zod5.z.string().max(512).nullable(),
471
+ /** (1.41) One short fact when the state alone does not say it ("No camera", "Bluetooth is off"); absent when there is none. */
472
+ detail: import_zod5.z.string().max(256).optional()
462
473
  })
463
- )
474
+ ),
475
+ /** (1.41) The requirements beyond the grants (OsRequirementName), each read when asked. */
476
+ requirements: import_zod5.z.array(
477
+ import_zod5.z.strictObject({
478
+ name: OsRequirementName,
479
+ state: OsGrantState,
480
+ settings_url: import_zod5.z.string().max(512).nullable(),
481
+ detail: import_zod5.z.string().max(256).nullable()
482
+ })
483
+ ).optional()
464
484
  });
465
485
  var SysinfoHardwareParams = import_zod5.z.strictObject({});
466
486
  var SysinfoHardwareResult = import_zod5.z.strictObject({
@@ -1007,10 +1027,12 @@ var GitCloneParams = import_zod12.z.strictObject({
1007
1027
  });
1008
1028
 
1009
1029
  // src/schema/web.ts
1030
+ var import_uuid2 = require("@ai-matrx/kit/uuid");
1010
1031
  var import_zod13 = require("zod");
1011
1032
  var WEB_MAX_TEXT_CHARS = 524288;
1012
1033
  var WebUrl = import_zod13.z.string().min(1).max(8192).regex(/^https?:\/\//);
1013
1034
  var WebText = import_zod13.z.string().max(WEB_MAX_TEXT_CHARS);
1035
+ var OrgId = import_zod13.z.string().regex(import_uuid2.UUID_SHAPE_PATTERN);
1014
1036
  var WebHeader = import_zod13.z.strictObject({ name: import_zod13.z.string().min(1).max(256), value: import_zod13.z.string().max(8192) });
1015
1037
  var WebFetchParams = import_zod13.z.strictObject({
1016
1038
  url: WebUrl,
@@ -1032,10 +1054,65 @@ var WebFetchResult = import_zod13.z.strictObject({
1032
1054
  bytes: nonNegInt,
1033
1055
  elapsed_ms: nonNegInt
1034
1056
  });
1057
+ var WebAttachTarget = import_zod13.z.strictObject({
1058
+ entity_type: import_zod13.z.string().min(1).max(64),
1059
+ entity_id: import_zod13.z.string().min(1).max(128),
1060
+ label: import_zod13.z.string().max(200).optional()
1061
+ });
1062
+ var WebLand = import_zod13.z.strictObject({
1063
+ /** The organization the page is saved in; absent: this computer's active organization. */
1064
+ organization_id: OrgId.optional(),
1065
+ /** Keep it: AI processing starts (chunks, search). Unkept pages are saved and wait. */
1066
+ keep: import_zod13.z.boolean().default(false),
1067
+ attach_to: import_zod13.z.array(WebAttachTarget).max(8).default([])
1068
+ });
1069
+ var WebNotSavedReason = import_zod13.z.enum([
1070
+ /** Nobody is signed in on this computer. Saved on sign-in. */
1071
+ "signed_out",
1072
+ /** AI Matrx could not be reached. Retried on its own. */
1073
+ "offline",
1074
+ /** AI Matrx refused it (the message says why). Kept until the person retries or discards it. */
1075
+ "rejected",
1076
+ /** Waiting its turn behind other pages (retried on its own). */
1077
+ "queued"
1078
+ ]);
1079
+ var WebSourceNotice = import_zod13.z.strictObject({ code: import_zod13.z.string().max(120), message: import_zod13.z.string().max(2e3), remedy: import_zod13.z.string().max(120) });
1080
+ var WebSourceState = import_zod13.z.discriminatedUnion("state", [
1081
+ import_zod13.z.strictObject({
1082
+ state: import_zod13.z.literal("saved"),
1083
+ processed_document_id: import_zod13.z.string().min(1).max(64),
1084
+ source_id: import_zod13.z.string().min(1).max(128),
1085
+ /** The page was already saved and nothing changed ("Already saved, no change"). */
1086
+ reused_existing: import_zod13.z.boolean(),
1087
+ /** The page changed: this is a new version of that Source. */
1088
+ new_version_of: import_zod13.z.string().max(64).nullable(),
1089
+ kept: import_zod13.z.boolean(),
1090
+ intelligence: import_zod13.z.enum(["queued", "deferred", "never"]),
1091
+ /** The original page as captured, kept by AI Matrx (null: the organization keeps none). */
1092
+ original_file_id: import_zod13.z.string().max(128).nullable(),
1093
+ /** The organization it was saved in. */
1094
+ organization_id: OrgId,
1095
+ notices: import_zod13.z.array(WebSourceNotice).max(20)
1096
+ }),
1097
+ import_zod13.z.strictObject({
1098
+ state: import_zod13.z.literal("not_saved"),
1099
+ outbox_id: import_zod13.z.string().min(1).max(64),
1100
+ reason: WebNotSavedReason,
1101
+ message: import_zod13.z.string().max(2e3)
1102
+ })
1103
+ ]);
1035
1104
  var WebScrapeParams = import_zod13.z.strictObject({
1036
1105
  urls: import_zod13.z.array(WebUrl).min(1).max(20),
1037
1106
  use_cache: import_zod13.z.boolean().default(true),
1038
- get_links: import_zod13.z.boolean().default(false)
1107
+ get_links: import_zod13.z.boolean().default(false),
1108
+ /**
1109
+ * Since 1.38. `auto` (absent): this computer's scraper (HTTP, its browser only when a page needs
1110
+ * it). `browser`: this computer's own browser renders every page. `server`: AI Matrx's servers
1111
+ * read it (their connection, not this computer's; saved there as a web capture).
1112
+ */
1113
+ engine: import_zod13.z.enum(["auto", "browser", "server"]).optional(),
1114
+ /** Since 1.38: where the pages are saved (see WebLand). */
1115
+ land: WebLand.optional()
1039
1116
  });
1040
1117
  var WebScrapePage = import_zod13.z.strictObject({
1041
1118
  url: import_zod13.z.string(),
@@ -1050,7 +1127,9 @@ var WebScrapePage = import_zod13.z.strictObject({
1050
1127
  /** Why the page failed (blocked, timeout, not found…), in the scraper's words; null when ok. */
1051
1128
  error: import_zod13.z.string().nullable(),
1052
1129
  /** How the page was fetched (http, browser, cache). */
1053
- via: import_zod13.z.string().nullable()
1130
+ via: import_zod13.z.string().nullable(),
1131
+ /** Since 1.38: the page's Source (absent from a 1.37 core, and for a page that failed). */
1132
+ source: WebSourceState.optional()
1054
1133
  });
1055
1134
  var WebScrapeResult = import_zod13.z.strictObject({ pages: import_zod13.z.array(WebScrapePage), elapsed_ms: nonNegInt });
1056
1135
  var WebSearchParams = import_zod13.z.strictObject({
@@ -1074,7 +1153,9 @@ var WebBrowserFetchParams = import_zod13.z.strictObject({
1074
1153
  wait_for: import_zod13.z.string().max(1024).optional(),
1075
1154
  wait_timeout_ms: import_zod13.z.int().min(100).max(12e4).default(3e4),
1076
1155
  /** true: readable text; false: the rendered HTML. */
1077
- extract_text: import_zod13.z.boolean().default(true)
1156
+ extract_text: import_zod13.z.boolean().default(true),
1157
+ /** Since 1.38: where the rendered page is saved (see WebLand). */
1158
+ land: WebLand.optional()
1078
1159
  });
1079
1160
  var WebBrowserFetchResult = import_zod13.z.strictObject({
1080
1161
  url: import_zod13.z.string(),
@@ -1082,14 +1163,144 @@ var WebBrowserFetchResult = import_zod13.z.strictObject({
1082
1163
  title: import_zod13.z.string().nullable(),
1083
1164
  content: WebText,
1084
1165
  truncated: import_zod13.z.boolean(),
1085
- elapsed_ms: nonNegInt
1166
+ elapsed_ms: nonNegInt,
1167
+ /** Since 1.38: the rendered page's Source (absent from a 1.37 core). */
1168
+ source: WebSourceState.optional()
1169
+ });
1170
+ var ToolsParseFile = import_zod13.z.strictObject({
1171
+ /** Absolute path of the gzipped JSON the core reads, saves and then removes. */
1172
+ path: import_zod13.z.string().min(1).max(4096),
1173
+ bytes: nonNegInt
1174
+ });
1175
+ var ToolsWebScrapeParams = import_zod13.z.strictObject({
1176
+ urls: import_zod13.z.array(WebUrl).min(1).max(20),
1177
+ use_cache: import_zod13.z.boolean().default(true),
1178
+ get_links: import_zod13.z.boolean().default(false),
1179
+ /** `browser`: render every page in this computer's browser, then parse it. */
1180
+ engine: import_zod13.z.enum(["auto", "browser"]).default("auto"),
1181
+ /** Pages read at once (desktop.web/scrape_concurrency). */
1182
+ concurrency: import_zod13.z.int().min(1).max(20).default(5),
1183
+ /** The wait between pages from the same site (desktop.web/request_delay_ms). */
1184
+ delay_ms: import_zod13.z.int().min(0).max(3e4).default(0),
1185
+ /** Where the parse files go (the core's spool folder). */
1186
+ spool_dir: import_zod13.z.string().min(1).max(4096)
1187
+ });
1188
+ var ToolsWebScrapePage = import_zod13.z.strictObject({
1189
+ page: WebScrapePage,
1190
+ /** The page's whole parse, for the door; null when the page failed or had no words. */
1191
+ parse: ToolsParseFile.nullable(),
1192
+ /** The page as fetched, for research (rendered HTML or the HTTP body); null when not kept. */
1193
+ html: ToolsParseFile.nullable()
1194
+ });
1195
+ var ToolsWebScrapeResult = import_zod13.z.strictObject({ pages: import_zod13.z.array(ToolsWebScrapePage), elapsed_ms: nonNegInt });
1196
+ var ToolsWebBrowserFetchParams = import_zod13.z.strictObject({
1197
+ url: WebUrl,
1198
+ wait_for: import_zod13.z.string().max(1024).optional(),
1199
+ wait_timeout_ms: import_zod13.z.int().min(100).max(12e4).default(3e4),
1200
+ extract_text: import_zod13.z.boolean().default(true),
1201
+ spool_dir: import_zod13.z.string().min(1).max(4096)
1202
+ });
1203
+ var ToolsWebBrowserFetchResult = import_zod13.z.strictObject({ result: WebBrowserFetchResult, parse: ToolsParseFile.nullable() });
1204
+ var WebRuntimeStateName = import_zod13.z.enum(["not_installed", "installing", "installed", "failed"]);
1205
+ var WebRuntimeParams = import_zod13.z.strictObject({});
1206
+ var WebRuntimeState = import_zod13.z.strictObject({
1207
+ state: WebRuntimeStateName,
1208
+ /** Why it failed, in the installer's words; null otherwise. */
1209
+ error: import_zod13.z.string().max(2e3).nullable(),
1210
+ /** Bytes the browser takes on this computer (its packages and Chromium); null when unknown. */
1211
+ size_bytes: nonNegInt.nullable(),
1212
+ /** Whether it can show a window while it works (false: only the headless shell is installed). */
1213
+ can_show_window: import_zod13.z.boolean()
1214
+ });
1215
+ var WebOutboxItem = import_zod13.z.strictObject({
1216
+ outbox_id: import_zod13.z.string().min(1).max(64),
1217
+ url: import_zod13.z.string().max(8192),
1218
+ title: import_zod13.z.string().max(500).nullable(),
1219
+ organization_id: OrgId.nullable(),
1220
+ reason: WebNotSavedReason,
1221
+ message: import_zod13.z.string().max(2e3),
1222
+ attempts: nonNegInt,
1223
+ created_at_ms: nonNegInt,
1224
+ last_attempt_at_ms: nonNegInt.nullable(),
1225
+ bytes: nonNegInt
1226
+ });
1227
+ var WebOutboxListParams = import_zod13.z.strictObject({});
1228
+ var WebOutboxListResult = import_zod13.z.strictObject({
1229
+ items: import_zod13.z.array(WebOutboxItem),
1230
+ bytes: nonNegInt,
1231
+ /** The most the outbox holds; past it the oldest pages are dropped (and the log says so). */
1232
+ cap_bytes: nonNegInt
1233
+ });
1234
+ var WebOutboxRetryParams = import_zod13.z.strictObject({ outbox_id: import_zod13.z.string().min(1).max(64).optional() });
1235
+ var WebOutboxRetryResult = import_zod13.z.strictObject({ saved: nonNegInt, waiting: nonNegInt });
1236
+ var WebOutboxDiscardParams = import_zod13.z.strictObject({ outbox_id: import_zod13.z.string().min(1).max(64) });
1237
+ var WebOutboxDiscardResult = import_zod13.z.strictObject({ discarded: import_zod13.z.boolean() });
1238
+ var WebLogVia = import_zod13.z.enum(["this_computer", "browser", "server"]);
1239
+ var WebLogCaller = import_zod13.z.enum(["person", "agent", "research", "phone", "other"]);
1240
+ var WebLogResult = import_zod13.z.enum(["saved", "not_saved", "failed", "blocked", "read"]);
1241
+ var WebLogEntry = import_zod13.z.strictObject({
1242
+ id: import_zod13.z.string().min(1).max(64),
1243
+ at_ms: nonNegInt,
1244
+ caller: WebLogCaller,
1245
+ url: import_zod13.z.string().max(8192),
1246
+ title: import_zod13.z.string().max(500).nullable(),
1247
+ result: WebLogResult,
1248
+ /** One sentence: why it failed or was blocked, or the save's notice. Never page text. */
1249
+ detail: import_zod13.z.string().max(1e3).nullable(),
1250
+ via: WebLogVia,
1251
+ duration_ms: nonNegInt,
1252
+ processed_document_id: import_zod13.z.string().max(64).nullable()
1253
+ });
1254
+ var WebLogListParams = import_zod13.z.strictObject({ since_ms: nonNegInt.optional(), limit: import_zod13.z.int().min(1).max(1e3).default(200) });
1255
+ var WebLogListResult = import_zod13.z.strictObject({ entries: import_zod13.z.array(WebLogEntry) });
1256
+ var WebLogClearParams = import_zod13.z.strictObject({});
1257
+ var WebLogClearResult = import_zod13.z.strictObject({ cleared: nonNegInt });
1258
+ var WebProgressEvent = import_zod13.z.strictObject({
1259
+ request_id: RequestId,
1260
+ phase: import_zod13.z.enum(["installing", "fetching", "saving"]),
1261
+ done: nonNegInt,
1262
+ total: nonNegInt
1263
+ });
1264
+ var WebResearchItemState = import_zod13.z.enum(["waiting", "fetching", "saved", "thin", "failed", "cannot_edit", "blocked"]);
1265
+ var WebResearchItem = import_zod13.z.strictObject({
1266
+ topic_id: import_zod13.z.string().min(1).max(64),
1267
+ topic_name: import_zod13.z.string().max(500),
1268
+ source_id: import_zod13.z.string().min(1).max(64),
1269
+ url: import_zod13.z.string().max(8192),
1270
+ title: import_zod13.z.string().max(500).nullable(),
1271
+ /** The capture level this computer would try (1 quick, 2 scroll); 3+ is the extension's. */
1272
+ level: import_zod13.z.int().min(1).max(4),
1273
+ last_failure: import_zod13.z.string().max(1e3).nullable(),
1274
+ state: WebResearchItemState,
1275
+ /** One sentence after a fetch: what happened. */
1276
+ message: import_zod13.z.string().max(1e3).nullable()
1277
+ });
1278
+ var WebResearchQueueParams = import_zod13.z.strictObject({ topic_id: import_zod13.z.string().min(1).max(64).optional() });
1279
+ var WebResearchQueueResult = import_zod13.z.strictObject({
1280
+ state: import_zod13.z.enum(["ready", "signed_out", "unavailable"]),
1281
+ problem: import_zod13.z.string().max(1e3).nullable(),
1282
+ /** L1/L2 items on topics this person can edit: what this computer can fetch. */
1283
+ items: import_zod13.z.array(WebResearchItem),
1284
+ /** Items on topics the person can view but not add to (shown, never fetched). */
1285
+ view_only: nonNegInt
1286
+ });
1287
+ var WebResearchFetchParams = import_zod13.z.strictObject({
1288
+ topic_id: import_zod13.z.string().min(1).max(64).optional(),
1289
+ source_ids: import_zod13.z.array(import_zod13.z.string().min(1).max(64)).max(200).optional()
1290
+ });
1291
+ var WebResearchFetchResult = import_zod13.z.strictObject({
1292
+ items: import_zod13.z.array(WebResearchItem),
1293
+ saved: nonNegInt,
1294
+ thin: nonNegInt,
1295
+ failed: nonNegInt,
1296
+ cannot_edit: nonNegInt
1086
1297
  });
1087
1298
  var ToolsServiceProgress = import_zod13.z.strictObject({ phase: import_zod13.z.enum(["fetching", "installing"]), done: nonNegInt, total: nonNegInt });
1088
1299
 
1089
1300
  // src/schema/account.ts
1090
1301
  var import_zod14 = require("zod");
1091
- var import_uuid2 = require("@ai-matrx/kit/uuid");
1092
- var AccountRowId = import_zod14.z.string().regex(import_uuid2.UUID_SHAPE_PATTERN);
1302
+ var import_uuid3 = require("@ai-matrx/kit/uuid");
1303
+ var AccountRowId = import_zod14.z.string().regex(import_uuid3.UUID_SHAPE_PATTERN);
1093
1304
  var AccountReadState = import_zod14.z.enum(["ok", "signed_out", "unavailable"]);
1094
1305
  var AccountAgent = import_zod14.z.strictObject({
1095
1306
  id: AccountRowId,
@@ -1106,7 +1317,22 @@ var AccountAgent = import_zod14.z.strictObject({
1106
1317
  shared_by: import_zod14.z.string().max(320).nullable(),
1107
1318
  /** The organization it belongs to. */
1108
1319
  organization: import_zod14.z.string().max(200).nullable(),
1109
- updated_at_ms: epochMs
1320
+ updated_at_ms: epochMs,
1321
+ // 1.39: the catalogue's own row (agx_get_list_full, read whole through @ai-matrx/agents/catalog).
1322
+ /** The agent's tags (the library's search and its inspector). */
1323
+ tags: import_zod14.z.array(import_zod14.z.string().max(120)).max(50).optional(),
1324
+ /** The model it runs (a model catalogue id); absent when it names none. */
1325
+ model_id: AccountRowId.optional(),
1326
+ /** The person's access: owner, admin, editor, viewer or system (the database's own words); absent when unknown. */
1327
+ access_level: import_zod14.z.string().min(1).max(40).optional(),
1328
+ /** The organization's id (the label is `organization`); absent when it has none. */
1329
+ organization_id: AccountRowId.optional(),
1330
+ /** Whose it is: the person's own, shared with them, or one AI Matrx ships (Gallery). */
1331
+ origin: import_zod14.z.enum(["mine", "shared", "system"]).optional(),
1332
+ /** Archived (the catalogue's archive filter decides whether the library lists it). */
1333
+ is_archived: import_zod14.z.boolean().optional(),
1334
+ /** An orchestra: it conducts other agents. */
1335
+ orchestra: import_zod14.z.boolean().optional()
1110
1336
  });
1111
1337
  var AccountAgentsListParams = import_zod14.z.strictObject({});
1112
1338
  var AccountAgentsListResult = import_zod14.z.strictObject({
@@ -1115,6 +1341,70 @@ var AccountAgentsListResult = import_zod14.z.strictObject({
1115
1341
  problem: import_zod14.z.string().max(300).nullable(),
1116
1342
  agents: import_zod14.z.array(AccountAgent).max(2e3)
1117
1343
  });
1344
+ var AccountAgentVariable = import_zod14.z.strictObject({
1345
+ name: import_zod14.z.string().min(1).max(200),
1346
+ /** The default value as text ("" when it has none). */
1347
+ default_value: import_zod14.z.string().max(4e3),
1348
+ required: import_zod14.z.boolean(),
1349
+ help: import_zod14.z.string().max(1e3)
1350
+ });
1351
+ var AccountAgentDetail = import_zod14.z.strictObject({
1352
+ agent: AccountAgent,
1353
+ /** The inputs a run asks for (the agent's variables). */
1354
+ variables: import_zod14.z.array(AccountAgentVariable).max(100),
1355
+ /** How many tools, custom tools, skills and connections it may use. */
1356
+ tool_count: import_zod14.z.int().min(0),
1357
+ custom_tool_count: import_zod14.z.int().min(0),
1358
+ skill_count: import_zod14.z.int().min(0),
1359
+ connection_count: import_zod14.z.int().min(0),
1360
+ /** The model's display name when the catalogue knows it. */
1361
+ model_name: import_zod14.z.string().max(200).nullable()
1362
+ });
1363
+ var AccountAgentsGetParams = import_zod14.z.strictObject({ agent_id: AccountRowId });
1364
+ var AccountAgentsGetResult = import_zod14.z.strictObject({
1365
+ state: AccountReadState,
1366
+ problem: import_zod14.z.string().max(300).nullable(),
1367
+ /** Null when the person cannot open it (not theirs, not shared with them, or gone). */
1368
+ detail: AccountAgentDetail.nullable()
1369
+ });
1370
+ var AccountAgentRunStatus = import_zod14.z.enum(["succeeded", "warned", "failed", "stopped", "waiting", "running"]);
1371
+ var AccountAgentRun = import_zod14.z.strictObject({
1372
+ run_id: AccountRowId,
1373
+ status: AccountAgentRunStatus,
1374
+ started_at_ms: epochMs,
1375
+ completed_at_ms: epochMs.nullable(),
1376
+ duration_ms: import_zod14.z.int().min(0).nullable(),
1377
+ cost: import_zod14.z.number().min(0).nullable(),
1378
+ tokens: import_zod14.z.int().min(0).nullable(),
1379
+ /** One line of the answer (at most 240 characters), when the run kept one. */
1380
+ output_preview: import_zod14.z.string().max(240).nullable(),
1381
+ /** The run's error, one line. */
1382
+ error: import_zod14.z.string().max(300).nullable(),
1383
+ /** The mandate it served, when one named it. */
1384
+ mandate_key: import_zod14.z.string().max(200).nullable(),
1385
+ organization: import_zod14.z.string().max(200).nullable(),
1386
+ /** The conversation that holds its transcript, when it kept one. */
1387
+ conversation_id: AccountRowId.nullable(),
1388
+ has_transcript: import_zod14.z.boolean()
1389
+ });
1390
+ var AccountAgentRunSort = import_zod14.z.enum(["started_at", "duration", "cost", "status"]);
1391
+ var AccountAgentsRunsParams = import_zod14.z.strictObject({
1392
+ agent_id: AccountRowId,
1393
+ status: AccountAgentRunStatus.optional(),
1394
+ sort: AccountAgentRunSort.optional(),
1395
+ descending: import_zod14.z.boolean().optional(),
1396
+ offset: import_zod14.z.int().min(0).max(1e5).optional(),
1397
+ limit: import_zod14.z.int().min(1).max(100).optional()
1398
+ });
1399
+ var AccountAgentsRunsResult = import_zod14.z.strictObject({
1400
+ state: AccountReadState,
1401
+ problem: import_zod14.z.string().max(300).nullable(),
1402
+ /** Every run of this agent the person may see (rows is one page of it). */
1403
+ total: import_zod14.z.int().min(0),
1404
+ rows: import_zod14.z.array(AccountAgentRun).max(100)
1405
+ });
1406
+ var AccountAgentsFavoriteParams = import_zod14.z.strictObject({ agent_id: AccountRowId, favorite: import_zod14.z.boolean() });
1407
+ var AccountAgentsFavoriteResult = import_zod14.z.strictObject({ favorite: import_zod14.z.boolean() });
1118
1408
  var VaultItemKind = import_zod14.z.enum(["login", "passkey", "key", "other"]);
1119
1409
  var VaultFieldSummary = import_zod14.z.strictObject({
1120
1410
  key: import_zod14.z.string().min(1).max(120),
@@ -1244,7 +1534,27 @@ var SystemSettingsPane = import_zod16.z.enum([
1244
1534
  "storage",
1245
1535
  "system_report",
1246
1536
  /** (1.35) Privacy & Security › Microphone: where the person allows Matrx 2 the microphone. */
1247
- "microphone"
1537
+ "microphone",
1538
+ // (1.41) Each other privacy grant's own page (Settings › Permissions and privacy's buttons), named
1539
+ // as sysinfo's OsPermissionName so a row opens its pane by its own name. A 1.40 core refuses these
1540
+ // as INVALID_PARAMS, so a client asks only a 1.41 core for them.
1541
+ "full_disk_access",
1542
+ "accessibility",
1543
+ "screen_recording",
1544
+ "camera",
1545
+ "automation",
1546
+ "contacts",
1547
+ "calendars",
1548
+ "reminders",
1549
+ "photos",
1550
+ "location",
1551
+ "local_network",
1552
+ "bluetooth",
1553
+ "wifi",
1554
+ "notifications",
1555
+ "speech_recognition",
1556
+ "messages",
1557
+ "mail"
1248
1558
  ]);
1249
1559
  var SystemOpenSettingsParams = import_zod16.z.strictObject({ pane: SystemSettingsPane });
1250
1560
  var SystemOpenSettingsResult = import_zod16.z.strictObject({ pane: SystemSettingsPane });
@@ -1950,10 +2260,10 @@ var ExecJobListResult = import_zod26.z.strictObject({ jobs: import_zod26.z.array
1950
2260
 
1951
2261
  // src/schema/coding.ts
1952
2262
  var import_zod27 = require("zod");
1953
- var import_uuid3 = require("@ai-matrx/kit/uuid");
2263
+ var import_uuid4 = require("@ai-matrx/kit/uuid");
1954
2264
  var CodingServiceCredentials = import_zod27.z.strictObject({
1955
2265
  access_token: import_zod27.z.string().min(16).max(16384),
1956
- user_id: import_zod27.z.string().regex(import_uuid3.UUID_SHAPE_PATTERN),
2266
+ user_id: import_zod27.z.string().regex(import_uuid4.UUID_SHAPE_PATTERN),
1957
2267
  /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
1958
2268
  server_url: import_zod27.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
1959
2269
  });
@@ -2024,24 +2334,389 @@ var CodingHistoryProgressEvent = import_zod27.z.strictObject({
2024
2334
  failed: nonNegInt
2025
2335
  });
2026
2336
 
2027
- // src/schema/apps.ts
2337
+ // src/schema/coding-sessions.ts
2028
2338
  var import_zod28 = require("zod");
2029
- var import_uuid4 = require("@ai-matrx/kit/uuid");
2030
- var AppKey = import_zod28.z.string().regex(/^[a-z][a-z0-9_-]{0,39}$/);
2031
- var AppProfileId = import_zod28.z.string().regex(import_uuid4.UUID_SHAPE_PATTERN);
2032
- 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}$/);
2033
- var AppSupport = import_zod28.z.enum(["supported", "partial", "unsupported"]);
2034
- var AppFeatureStatus = import_zod28.z.strictObject({
2339
+ var CodingProviderName = import_zod28.z.enum(["claude", "codex"]);
2340
+ var CodingRunStatus = import_zod28.z.enum(["starting", "running", "completed", "stopped", "failed"]);
2341
+ var SessionKey = import_zod28.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/);
2342
+ var IsoTime = import_zod28.z.string().min(10).max(40);
2343
+ var LocalPath = import_zod28.z.string().min(1).max(4096);
2344
+ var CodingClientRequestId = import_zod28.z.string().regex(/^[A-Za-z0-9_-]{8,64}$/);
2345
+ var ShortText = import_zod28.z.string().max(500);
2346
+ var CodingRunUsage = import_zod28.z.strictObject({
2347
+ inputTokens: nonNegInt,
2348
+ outputTokens: nonNegInt,
2349
+ cachedInputTokens: nonNegInt
2350
+ });
2351
+ var CodingStartedBy = import_zod28.z.strictObject({
2352
+ kind: import_zod28.z.enum(["this_computer", "web", "phone", "agent", "other"]),
2353
+ label: import_zod28.z.string().min(1).max(80)
2354
+ });
2355
+ var CodingRunRecord = import_zod28.z.strictObject({
2356
+ runId: import_zod28.z.string().min(1).max(64),
2357
+ sessionId: SessionKey,
2358
+ provider: CodingProviderName,
2359
+ cwd: LocalPath,
2360
+ prompt: import_zod28.z.string().max(1048576),
2361
+ model: import_zod28.z.string().max(200).nullable(),
2362
+ status: CodingRunStatus,
2363
+ startedAt: IsoTime,
2364
+ endedAt: IsoTime.nullable(),
2365
+ error: import_zod28.z.string().max(65536).nullable(),
2366
+ usage: CodingRunUsage.nullable(),
2367
+ costUsd: import_zod28.z.number().nullable(),
2368
+ billing: import_zod28.z.enum(["subscription", "api", "unknown"]).nullable(),
2369
+ startedBy: CodingStartedBy.nullable()
2370
+ });
2371
+ var CodingSessionAgentPart = import_zod28.z.strictObject({
2372
+ part: import_zod28.z.enum(["instructions", "skills", "tools"]),
2373
+ loaded: nonNegInt,
2374
+ total: nonNegInt
2375
+ });
2376
+ var CodingSessionAgent = import_zod28.z.strictObject({
2377
+ agentId: import_zod28.z.string().min(1).max(64),
2378
+ versionId: import_zod28.z.string().max(64).nullable(),
2379
+ versionNumber: nonNegInt.nullable(),
2380
+ name: import_zod28.z.string().max(300),
2381
+ definitionHash: import_zod28.z.string().max(200),
2382
+ loaded: import_zod28.z.array(CodingSessionAgentPart).max(3),
2383
+ unavailable: import_zod28.z.array(import_zod28.z.strictObject({ kind: import_zod28.z.string().max(60), name: import_zod28.z.string().max(300), reason: ShortText })).max(500),
2384
+ skills: import_zod28.z.array(import_zod28.z.string().max(300)).max(500),
2385
+ tools: import_zod28.z.array(import_zod28.z.string().max(300)).max(500),
2386
+ variables: import_zod28.z.record(import_zod28.z.string().max(200), import_zod28.z.unknown()),
2387
+ blockDue: import_zod28.z.boolean(),
2388
+ deliveredAt: IsoTime.nullable(),
2389
+ replaces: import_zod28.z.string().max(300).nullable()
2390
+ });
2391
+ var CodingSessionRecord = import_zod28.z.strictObject({
2392
+ id: SessionKey,
2393
+ provider: CodingProviderName,
2394
+ providerSessionId: SessionKey.nullable(),
2395
+ cwd: LocalPath,
2396
+ title: import_zod28.z.string().max(500),
2397
+ model: import_zod28.z.string().max(200).nullable(),
2398
+ effort: import_zod28.z.string().max(40).nullable(),
2399
+ origin: import_zod28.z.enum(["started", "takeover"]),
2400
+ createdAt: IsoTime,
2401
+ updatedAt: IsoTime,
2402
+ lastRunId: import_zod28.z.string().max(64).nullable(),
2403
+ lastRunStatus: CodingRunStatus.nullable(),
2404
+ queued: import_zod28.z.array(import_zod28.z.string().max(1048576)).max(100),
2405
+ agent: CodingSessionAgent.nullable(),
2406
+ agentRemovedDue: import_zod28.z.boolean()
2407
+ });
2408
+ var CodingActiveElsewhere = import_zod28.z.strictObject({
2409
+ reason: import_zod28.z.enum(["process", "recent-write", "open-tool-call", "open"]),
2410
+ message: ShortText,
2411
+ /** The process driving it, when the evidence is a process (re-checked before any stop). */
2412
+ pid: import_zod28.z.int().min(1).nullable()
2413
+ });
2414
+ var CodingTitleSource = import_zod28.z.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt", "unknown"]);
2415
+ var CodingDiscoveredChat = import_zod28.z.strictObject({
2416
+ provider: CodingProviderName,
2417
+ providerSessionId: SessionKey,
2418
+ cwd: LocalPath.nullable(),
2419
+ title: import_zod28.z.string().max(500),
2420
+ titleSource: CodingTitleSource.optional(),
2421
+ titlePending: import_zod28.z.boolean().optional(),
2422
+ archived: import_zod28.z.boolean().optional(),
2423
+ scheduled: import_zod28.z.boolean().optional(),
2424
+ unlisted: import_zod28.z.boolean().optional(),
2425
+ unavailable: ShortText.nullable(),
2426
+ updatedAt: IsoTime,
2427
+ source: import_zod28.z.string().max(60).nullable(),
2428
+ activeElsewhere: CodingActiveElsewhere.nullable()
2429
+ });
2430
+ var CodingTranscriptItem = import_zod28.z.discriminatedUnion("kind", [
2431
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("user"), id: import_zod28.z.string().max(200), text: import_zod28.z.string(), at: IsoTime.nullable() }),
2432
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("text"), id: import_zod28.z.string().max(200), text: import_zod28.z.string() }),
2433
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("text-delta"), id: import_zod28.z.string().max(200), text: import_zod28.z.string() }),
2434
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("reasoning"), id: import_zod28.z.string().max(200), text: import_zod28.z.string() }),
2435
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("tool-call"), id: import_zod28.z.string().max(200), name: import_zod28.z.string().max(300), input: import_zod28.z.unknown() }),
2436
+ import_zod28.z.strictObject({
2437
+ kind: import_zod28.z.literal("tool-result"),
2438
+ id: import_zod28.z.string().max(200),
2439
+ output: import_zod28.z.string(),
2440
+ isError: import_zod28.z.boolean(),
2441
+ /** The output's full size when only its start is here; `coding.item.full` reads the rest. */
2442
+ fullBytes: nonNegInt.optional()
2443
+ }),
2444
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("usage"), usage: CodingRunUsage, costUsd: import_zod28.z.number().nullable() }),
2445
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("notice"), id: import_zod28.z.string().max(200), level: import_zod28.z.enum(["info", "warning"]), text: import_zod28.z.string() }),
2446
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("error"), id: import_zod28.z.string().max(200), text: import_zod28.z.string() })
2447
+ ]);
2448
+ var CodingHistoryRecord = import_zod28.z.strictObject({
2449
+ items: import_zod28.z.array(CodingTranscriptItem),
2450
+ /** Only the end of the chat is here; "Show earlier" reads more (a bigger `max_bytes`). */
2451
+ truncated: import_zod28.z.boolean(),
2452
+ unavailable: ShortText.nullable(),
2453
+ /** The last live item `seq` this read already contains; a watch applies only newer ones. */
2454
+ seq: nonNegInt
2455
+ });
2456
+ var CodingQuotaWindow = import_zod28.z.strictObject({
2457
+ label: import_zod28.z.string().max(120),
2458
+ usedPercent: import_zod28.z.number().nullable(),
2459
+ resetsAt: import_zod28.z.string().max(80).nullable(),
2460
+ valueLabel: import_zod28.z.string().max(120).nullable()
2461
+ });
2462
+ var CodingProviderProblem = import_zod28.z.strictObject({
2463
+ kind: import_zod28.z.enum(["usage-limit", "signed-out"]),
2464
+ message: import_zod28.z.string().max(2e3),
2465
+ until: import_zod28.z.string().max(120).nullable(),
2466
+ at: IsoTime
2467
+ });
2468
+ var CodingProviderBinary = import_zod28.z.strictObject({
2469
+ path: LocalPath,
2470
+ version: import_zod28.z.string().max(80).nullable(),
2471
+ source: import_zod28.z.enum(["desktop-app", "path", "npm-global", "configured"]),
2472
+ sourceLabel: import_zod28.z.string().max(120),
2473
+ newer: import_zod28.z.strictObject({ path: LocalPath, version: import_zod28.z.string().max(80), sourceLabel: import_zod28.z.string().max(120) }).nullable()
2474
+ });
2475
+ var CodingProviderStatus = import_zod28.z.strictObject({
2476
+ provider: CodingProviderName,
2477
+ label: import_zod28.z.string().max(60),
2478
+ installed: import_zod28.z.boolean(),
2479
+ version: import_zod28.z.string().max(80).nullable(),
2480
+ loggedIn: import_zod28.z.boolean(),
2481
+ billing: import_zod28.z.enum(["subscription", "api", "unknown"]),
2482
+ plan: import_zod28.z.string().max(80).nullable(),
2483
+ account: import_zod28.z.string().max(320).nullable(),
2484
+ problem: ShortText.nullable(),
2485
+ fix: ShortText.nullable(),
2486
+ ready: import_zod28.z.boolean(),
2487
+ lastProblem: CodingProviderProblem.nullable(),
2488
+ quota: import_zod28.z.array(CodingQuotaWindow).max(20),
2489
+ models: import_zod28.z.array(import_zod28.z.strictObject({ id: import_zod28.z.string().max(200), label: import_zod28.z.string().max(200) })).max(200),
2490
+ efforts: import_zod28.z.array(import_zod28.z.string().max(40)).max(20),
2491
+ defaultModel: import_zod28.z.strictObject({ id: import_zod28.z.string().max(200), source: import_zod28.z.enum(["settings", "driver"]) }).nullable(),
2492
+ defaultEffort: import_zod28.z.string().max(40).nullable(),
2493
+ binary: CodingProviderBinary.nullable()
2494
+ });
2495
+ var CodingChatPreference = import_zod28.z.strictObject({
2496
+ title: import_zod28.z.string().max(500).nullable(),
2497
+ pinned: import_zod28.z.boolean(),
2498
+ hidden: import_zod28.z.boolean(),
2499
+ /** When the person last had this chat open on any screen of this computer (the "New output" dot). */
2500
+ lastSeenAt: IsoTime.nullable(),
2501
+ updatedAt: IsoTime.nullable()
2502
+ });
2503
+ var CodingTitleStatus = import_zod28.z.strictObject({
2504
+ owner: import_zod28.z.boolean(),
2505
+ pending: import_zod28.z.boolean(),
2506
+ problem: ShortText.nullable(),
2507
+ renames: ShortText.nullable()
2508
+ });
2509
+ var CodingRecentRow = import_zod28.z.strictObject({
2510
+ target: import_zod28.z.string().min(3).max(200),
2511
+ title: import_zod28.z.string().max(500),
2512
+ provider: CodingProviderName,
2513
+ sessionId: SessionKey.nullable(),
2514
+ providerSessionId: SessionKey.nullable(),
2515
+ cwd: LocalPath.nullable(),
2516
+ updatedAt: IsoTime,
2517
+ state: import_zod28.z.enum(["running", "needs_attention", "new_output", "elsewhere", "idle"]),
2518
+ stateLabel: import_zod28.z.string().max(120).nullable(),
2519
+ pinned: import_zod28.z.boolean(),
2520
+ startedBy: CodingStartedBy.nullable()
2521
+ });
2522
+ var CodingFolderCheck = import_zod28.z.strictObject({
2523
+ path: import_zod28.z.string().max(4096),
2524
+ exists: import_zod28.z.boolean(),
2525
+ isDirectory: import_zod28.z.boolean()
2526
+ });
2527
+ var CodingRecentFolder = import_zod28.z.strictObject({ path: LocalPath, lastUsedAt: IsoTime, exists: import_zod28.z.boolean() });
2528
+ var CodingAgentSelectionParams = import_zod28.z.strictObject({
2529
+ agent_id: import_zod28.z.string().min(1).max(64),
2530
+ version_id: import_zod28.z.string().min(1).max(64).optional(),
2531
+ variables: import_zod28.z.record(import_zod28.z.string().max(200), import_zod28.z.unknown()).optional()
2532
+ });
2533
+ var CodingSendResult = import_zod28.z.strictObject({
2534
+ session: CodingSessionRecord,
2535
+ run: CodingRunRecord.nullable(),
2536
+ /** The prompt waits behind a live run (it shows as a queued bubble). */
2537
+ queued: import_zod28.z.boolean()
2538
+ });
2539
+ var CodingProvidersParams = import_zod28.z.strictObject({});
2540
+ var CodingProvidersResult = import_zod28.z.strictObject({ providers: import_zod28.z.array(CodingProviderStatus).max(4) });
2541
+ var CodingSessionsListParams = import_zod28.z.strictObject({});
2542
+ var CodingSessionsListResult = import_zod28.z.strictObject({
2543
+ sessions: import_zod28.z.array(CodingSessionRecord),
2544
+ /** The latest run of each session, by session id. */
2545
+ runs: import_zod28.z.record(import_zod28.z.string().max(128), CodingRunRecord),
2546
+ recent: import_zod28.z.array(CodingRecentRow),
2547
+ title_status: CodingTitleStatus
2548
+ });
2549
+ var CodingDiscoverParams = import_zod28.z.strictObject({ limit: import_zod28.z.int().min(1).max(1e3).optional() });
2550
+ var CodingDiscoverResult = import_zod28.z.strictObject({ chats: import_zod28.z.array(CodingDiscoveredChat) });
2551
+ var CodingRunsListParams = import_zod28.z.strictObject({ session_id: SessionKey });
2552
+ var CodingRunsListResult = import_zod28.z.strictObject({ runs: import_zod28.z.array(CodingRunRecord) });
2553
+ var CodingHistoryParams = import_zod28.z.strictObject({ session_id: SessionKey, max_bytes: import_zod28.z.int().min(1024).max(209715200).optional() });
2554
+ var CodingHistoryResult = CodingHistoryRecord;
2555
+ var CodingTranscriptReadParams = import_zod28.z.strictObject({
2556
+ provider: CodingProviderName,
2557
+ provider_session_id: SessionKey,
2558
+ max_bytes: import_zod28.z.int().min(1024).max(209715200).optional()
2559
+ });
2560
+ var CodingTranscriptReadResult = CodingHistoryRecord;
2561
+ var CodingItemFullParams = import_zod28.z.strictObject({
2562
+ provider: CodingProviderName,
2563
+ provider_session_id: SessionKey,
2564
+ item_id: import_zod28.z.string().min(1).max(200)
2565
+ });
2566
+ var CodingItemFullResult = import_zod28.z.strictObject({ output: import_zod28.z.string(), bytes: nonNegInt });
2567
+ var CodingActivityParams = import_zod28.z.strictObject({ provider: CodingProviderName, provider_session_id: SessionKey });
2568
+ var CodingActivityResult = import_zod28.z.strictObject({ active: CodingActiveElsewhere.nullable() });
2569
+ var CodingFoldersRecentParams = import_zod28.z.strictObject({});
2570
+ var CodingFoldersRecentResult = import_zod28.z.strictObject({ folders: import_zod28.z.array(CodingRecentFolder).max(100) });
2571
+ var CodingFoldersCheckParams = import_zod28.z.strictObject({ path: import_zod28.z.string().min(1).max(4096) });
2572
+ var CodingFoldersCheckResult = CodingFolderCheck;
2573
+ var CodingFoldersCreateParams = import_zod28.z.strictObject({ path: import_zod28.z.string().min(1).max(4096) });
2574
+ var CodingFoldersCreateResult = CodingFolderCheck;
2575
+ var CodingStartParams = import_zod28.z.strictObject({
2576
+ provider: CodingProviderName,
2577
+ cwd: import_zod28.z.string().min(1).max(4096),
2578
+ prompt: import_zod28.z.string().min(1).max(1048576),
2579
+ model: import_zod28.z.string().min(1).max(200).optional(),
2580
+ effort: import_zod28.z.string().min(1).max(40).optional(),
2581
+ agent: CodingAgentSelectionParams.optional(),
2582
+ /** One of the person's coding accounts on this computer (Accounts); absent = the default login. */
2583
+ account_profile_id: import_zod28.z.string().min(1).max(64).optional(),
2584
+ client_request_id: CodingClientRequestId
2585
+ });
2586
+ var CodingStartResult = CodingSendResult;
2587
+ var CodingTakeoverParams = import_zod28.z.strictObject({
2588
+ provider: CodingProviderName,
2589
+ provider_session_id: SessionKey,
2590
+ cwd: import_zod28.z.string().min(1).max(4096),
2591
+ title: import_zod28.z.string().max(500).optional(),
2592
+ agent: CodingAgentSelectionParams.optional(),
2593
+ confirm_elsewhere: import_zod28.z.boolean().optional()
2594
+ });
2595
+ var CodingTakeoverResult = import_zod28.z.strictObject({ session: CodingSessionRecord });
2596
+ var CodingSendParams = import_zod28.z.strictObject({
2597
+ session_id: SessionKey,
2598
+ prompt: import_zod28.z.string().min(1).max(1048576),
2599
+ client_request_id: CodingClientRequestId
2600
+ });
2601
+ var CodingStopParams = import_zod28.z.strictObject({ run_id: import_zod28.z.string().min(1).max(64) });
2602
+ var CodingStopResult = import_zod28.z.strictObject({ run: CodingRunRecord.nullable() });
2603
+ var CodingStopElsewhereParams = import_zod28.z.strictObject({
2604
+ provider: CodingProviderName,
2605
+ provider_session_id: SessionKey,
2606
+ pid: import_zod28.z.int().min(1)
2607
+ });
2608
+ var CodingStopElsewhereResult = import_zod28.z.strictObject({ stopped: import_zod28.z.boolean(), message: ShortText });
2609
+ var CodingOptionsSetParams = import_zod28.z.strictObject({
2610
+ session_id: SessionKey,
2611
+ model: import_zod28.z.string().max(200).optional(),
2612
+ effort: import_zod28.z.string().max(40).optional()
2613
+ });
2614
+ var CodingOptionsSetResult = import_zod28.z.strictObject({ session: CodingSessionRecord });
2615
+ var CodingAgentSetParams = import_zod28.z.strictObject({ session_id: SessionKey, agent: CodingAgentSelectionParams.optional() });
2616
+ var CodingAgentSetResult = import_zod28.z.strictObject({ session: CodingSessionRecord });
2617
+ var CodingAgentsAccessParams = import_zod28.z.strictObject({});
2618
+ var CodingAgentsAccessResult = import_zod28.z.strictObject({
2619
+ signedIn: import_zod28.z.boolean(),
2620
+ userId: import_zod28.z.string().max(64).nullable(),
2621
+ organizationId: import_zod28.z.string().max(64).nullable(),
2622
+ configured: import_zod28.z.boolean()
2623
+ });
2624
+ var CodingTitlesStatusParams = import_zod28.z.strictObject({});
2625
+ var CodingTitlesStatusResult = CodingTitleStatus;
2626
+ var CodingPrefsListParams = import_zod28.z.strictObject({});
2627
+ var CodingPrefsListResult = import_zod28.z.strictObject({ preferences: import_zod28.z.record(import_zod28.z.string().max(200), CodingChatPreference) });
2628
+ var CodingPrefsSetParams = import_zod28.z.strictObject({
2629
+ key: import_zod28.z.string().min(1).max(200),
2630
+ title: import_zod28.z.string().min(1).max(500).optional(),
2631
+ clear_title: import_zod28.z.boolean().optional(),
2632
+ pinned: import_zod28.z.boolean().optional(),
2633
+ hidden: import_zod28.z.boolean().optional()
2634
+ });
2635
+ var CodingPrefsSetResult = CodingPrefsListResult;
2636
+ var CodingRecentSeenParams = import_zod28.z.strictObject({ target: import_zod28.z.string().min(3).max(200) });
2637
+ var CodingRecentSeenResult = import_zod28.z.strictObject({ recent: import_zod28.z.array(CodingRecentRow) });
2638
+ var CodingSearchParams = import_zod28.z.strictObject({
2639
+ query: import_zod28.z.string().min(1).max(500),
2640
+ cursor: nonNegInt.optional(),
2641
+ limit: import_zod28.z.int().min(1).max(100).optional()
2642
+ });
2643
+ var CodingSearchResult = import_zod28.z.strictObject({
2644
+ query: import_zod28.z.string().max(500),
2645
+ hits: import_zod28.z.array(
2646
+ import_zod28.z.strictObject({
2647
+ provider: CodingProviderName,
2648
+ providerSessionId: SessionKey,
2649
+ title: import_zod28.z.string().max(500),
2650
+ cwd: LocalPath.nullable(),
2651
+ updatedAt: IsoTime,
2652
+ where: import_zod28.z.enum(["title", "content"]),
2653
+ snippet: import_zod28.z.string().max(2e3).nullable()
2654
+ })
2655
+ ),
2656
+ scanned: nonNegInt,
2657
+ total: nonNegInt,
2658
+ nextCursor: nonNegInt.nullable()
2659
+ });
2660
+ var CodingReconcileParams = import_zod28.z.strictObject({ provider: CodingProviderName, provider_session_id: SessionKey });
2661
+ var CodingReconcileResult = import_zod28.z.strictObject({
2662
+ state: import_zod28.z.enum(["done", "blocked", "nothing_to_do"]),
2663
+ summary: import_zod28.z.string().max(400)
2664
+ });
2665
+ var CodingTranscriptRawParams = import_zod28.z.strictObject({ provider: CodingProviderName, provider_session_id: SessionKey });
2666
+ var CodingTranscriptRawResult = import_zod28.z.strictObject({
2667
+ available: import_zod28.z.boolean(),
2668
+ reason: ShortText.nullable(),
2669
+ file_name: import_zod28.z.string().max(300).nullable(),
2670
+ bytes: nonNegInt,
2671
+ /** The opt-in cloud backup was refreshed (false: off, unchanged, or signed out). */
2672
+ backup_refreshed: import_zod28.z.boolean(),
2673
+ /** Subagent transcripts beside the chat (Claude Code), downloaded separately. */
2674
+ subagents: nonNegInt
2675
+ });
2676
+ var CodingWatchParams = import_zod28.z.strictObject({});
2677
+ var CodingWatchResult = import_zod28.z.strictObject({ resource_id: ResourceId });
2678
+ var CodingSessionWatchParams = import_zod28.z.strictObject({ session_id: SessionKey, since_seq: nonNegInt.optional() });
2679
+ var CodingSessionWatchResult = import_zod28.z.strictObject({
2680
+ resource_id: ResourceId,
2681
+ /** The newest item seq the device has for this session right now. */
2682
+ seq: nonNegInt
2683
+ });
2684
+ var CodingChangedEvent = import_zod28.z.discriminatedUnion("kind", [
2685
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("session"), session: CodingSessionRecord }),
2686
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("run"), run: CodingRunRecord }),
2687
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("preferences"), preferences: import_zod28.z.record(import_zod28.z.string().max(200), CodingChatPreference) }),
2688
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("titles") }),
2689
+ import_zod28.z.strictObject({ kind: import_zod28.z.literal("recent"), recent: import_zod28.z.array(CodingRecentRow) })
2690
+ ]);
2691
+ var CodingWatchStateEvent = import_zod28.z.strictObject({ live: import_zod28.z.boolean(), reason: ShortText.nullable(), beat_ms: import_zod28.z.int().min(1e3) });
2692
+ var CodingItemEvent = import_zod28.z.strictObject({
2693
+ session_id: SessionKey,
2694
+ run_id: import_zod28.z.string().min(1).max(64),
2695
+ seq: nonNegInt,
2696
+ item: CodingTranscriptItem
2697
+ });
2698
+ var CodingGapEvent = import_zod28.z.strictObject({ session_id: SessionKey, since_seq: nonNegInt, seq: nonNegInt });
2699
+ var SessionIdentifyParams = import_zod28.z.strictObject({ label: import_zod28.z.string().min(1).max(60) });
2700
+ var SessionIdentifyResult = import_zod28.z.strictObject({ label: import_zod28.z.string().max(60) });
2701
+
2702
+ // src/schema/apps.ts
2703
+ var import_zod29 = require("zod");
2704
+ var import_uuid5 = require("@ai-matrx/kit/uuid");
2705
+ var AppKey = import_zod29.z.string().regex(/^[a-z][a-z0-9_-]{0,39}$/);
2706
+ var AppProfileId = import_zod29.z.string().regex(import_uuid5.UUID_SHAPE_PATTERN);
2707
+ var AppProfileLocator = import_zod29.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}$/);
2708
+ var AppSupport = import_zod29.z.enum(["supported", "partial", "unsupported"]);
2709
+ var AppFeatureStatus = import_zod29.z.strictObject({
2035
2710
  status: AppSupport,
2036
2711
  /** One line, set whenever status is not "supported". */
2037
- reason: import_zod28.z.string().max(140).nullable()
2712
+ reason: import_zod29.z.string().max(140).nullable()
2038
2713
  });
2039
- var AppInfo = import_zod28.z.strictObject({
2714
+ var AppInfo = import_zod29.z.strictObject({
2040
2715
  app_key: AppKey,
2041
- name: import_zod28.z.string().max(64),
2042
- installed: import_zod28.z.boolean(),
2716
+ name: import_zod29.z.string().max(64),
2717
+ installed: import_zod29.z.boolean(),
2043
2718
  /** The app's own version string, or null when it is not installed or does not say. */
2044
- version: import_zod28.z.string().max(64).nullable(),
2719
+ version: import_zod29.z.string().max(64).nullable(),
2045
2720
  /** The install found (an .app bundle, an .exe, a binary), or null. */
2046
2721
  location: AbsPath.nullable(),
2047
2722
  /** Open the app at all on this OS. */
@@ -2051,148 +2726,148 @@ var AppInfo = import_zod28.z.strictObject({
2051
2726
  /** Plan usage read from the app's own files on this OS. */
2052
2727
  usage: AppFeatureStatus
2053
2728
  });
2054
- var AppUsageReading = import_zod28.z.strictObject({
2055
- window: import_zod28.z.enum(["five_hour", "weekly", "extra"]),
2729
+ var AppUsageReading = import_zod29.z.strictObject({
2730
+ window: import_zod29.z.enum(["five_hour", "weekly", "extra"]),
2056
2731
  /** 0–100 for five_hour and weekly; extra-usage spend as a percent of its cap (may pass 100). */
2057
- percent: import_zod28.z.number().min(0).max(1e4),
2732
+ percent: import_zod29.z.number().min(0).max(1e4),
2058
2733
  /** When the app recorded it. */
2059
2734
  sampled_at_ms: epochMs,
2060
2735
  /** True when the window has rolled over since the sample, so the figure has reset. */
2061
- reset_since: import_zod28.z.boolean()
2736
+ reset_since: import_zod29.z.boolean()
2062
2737
  });
2063
- var AppProfile = import_zod28.z.strictObject({
2738
+ var AppProfile = import_zod29.z.strictObject({
2064
2739
  /** The row's id; null for a folder found on disk that no row names yet. */
2065
2740
  id: AppProfileId.nullable(),
2066
2741
  app_key: AppKey,
2067
- display_name: import_zod28.z.string().min(1).max(120),
2742
+ display_name: import_zod29.z.string().min(1).max(120),
2068
2743
  /** The account the person means to be signed in here; null when not stated (never guessed). */
2069
- account_identity: import_zod28.z.string().min(3).max(320).nullable(),
2744
+ account_identity: import_zod29.z.string().min(3).max(320).nullable(),
2070
2745
  profile_locator: AppProfileLocator.nullable(),
2071
2746
  /** The device the row is tied to; null when the row names none. */
2072
2747
  device_id: DeviceId.nullable(),
2073
2748
  /** The folder this profile resolves to on this device; null for a row tied to another device. */
2074
2749
  folder: AbsPath.nullable(),
2075
2750
  /** The folder exists on this device. */
2076
- on_disk: import_zod28.z.boolean(),
2751
+ on_disk: import_zod29.z.boolean(),
2077
2752
  /** An instance with this profile is running; null when it could not be determined. */
2078
- running: import_zod28.z.boolean().nullable(),
2753
+ running: import_zod29.z.boolean().nullable(),
2079
2754
  /** Usage the app recorded for this profile; null when the app exposes none here. */
2080
- usage: import_zod28.z.array(AppUsageReading).nullable(),
2755
+ usage: import_zod29.z.array(AppUsageReading).nullable(),
2081
2756
  last_opened_ms: epochMs.nullable()
2082
2757
  });
2083
- var AppsListParams = import_zod28.z.strictObject({});
2084
- var AppsListResult = import_zod28.z.strictObject({ apps: import_zod28.z.array(AppInfo) });
2085
- var AppsProfilesListParams = import_zod28.z.strictObject({
2758
+ var AppsListParams = import_zod29.z.strictObject({});
2759
+ var AppsListResult = import_zod29.z.strictObject({ apps: import_zod29.z.array(AppInfo) });
2760
+ var AppsProfilesListParams = import_zod29.z.strictObject({
2086
2761
  /** Only this app's profiles; every app's when absent. */
2087
2762
  app_key: AppKey.optional()
2088
2763
  });
2089
- var AppsProfilesListResult = import_zod28.z.strictObject({
2090
- profiles: import_zod28.z.array(AppProfile),
2764
+ var AppsProfilesListResult = import_zod29.z.strictObject({
2765
+ profiles: import_zod29.z.array(AppProfile),
2091
2766
  /**
2092
2767
  * Whether the saved rows could be read: false while signed out or offline, when only folders
2093
2768
  * found on disk are listed.
2094
2769
  */
2095
- registry: import_zod28.z.enum(["ok", "signed_out", "unavailable"])
2770
+ registry: import_zod29.z.enum(["ok", "signed_out", "unavailable"])
2096
2771
  });
2097
- var AppsProfilesSaveParams = import_zod28.z.strictObject({
2772
+ var AppsProfilesSaveParams = import_zod29.z.strictObject({
2098
2773
  id: AppProfileId.optional(),
2099
2774
  app_key: AppKey,
2100
- display_name: import_zod28.z.string().min(1).max(120),
2101
- account_identity: import_zod28.z.string().min(3).max(320).nullable(),
2775
+ display_name: import_zod29.z.string().min(1).max(120),
2776
+ account_identity: import_zod29.z.string().min(3).max(320).nullable(),
2102
2777
  /** On create: the folder to use (one found on disk), or null for the app's default profile. Ignored on update. */
2103
2778
  profile_locator: AppProfileLocator.nullable(),
2104
2779
  /** On create with profile_locator null: make a new folder named after display_name instead. */
2105
- new_folder: import_zod28.z.boolean().default(false)
2780
+ new_folder: import_zod29.z.boolean().default(false)
2106
2781
  });
2107
2782
  var AppsProfilesSaveResult = AppProfile;
2108
- var AppsProfilesRemoveParams = import_zod28.z.strictObject({ id: AppProfileId });
2109
- var AppsProfilesRemoveResult = import_zod28.z.strictObject({ removed: import_zod28.z.boolean() });
2110
- var AppsOpenParams = import_zod28.z.strictObject({
2783
+ var AppsProfilesRemoveParams = import_zod29.z.strictObject({ id: AppProfileId });
2784
+ var AppsProfilesRemoveResult = import_zod29.z.strictObject({ removed: import_zod29.z.boolean() });
2785
+ var AppsOpenParams = import_zod29.z.strictObject({
2111
2786
  app_key: AppKey,
2112
2787
  profile_id: AppProfileId.optional()
2113
2788
  });
2114
- var AppsOpenResult = import_zod28.z.strictObject({
2789
+ var AppsOpenResult = import_zod29.z.strictObject({
2115
2790
  /** True when an instance with this profile was already running; it is brought forward. */
2116
- already_running: import_zod28.z.boolean(),
2791
+ already_running: import_zod29.z.boolean(),
2117
2792
  folder: AbsPath.nullable()
2118
2793
  });
2119
2794
 
2120
2795
  // src/schema/apps-chats.ts
2121
- var import_zod29 = require("zod");
2122
- var ChatId = import_zod29.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/);
2123
- var ChatPlace = import_zod29.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/);
2124
- var ChatProjectId = import_zod29.z.string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/);
2125
- var ChatWindow = import_zod29.z.strictObject({
2796
+ var import_zod30 = require("zod");
2797
+ var ChatId = import_zod30.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/);
2798
+ var ChatPlace = import_zod30.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/);
2799
+ var ChatProjectId = import_zod30.z.string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/);
2800
+ var ChatWindow = import_zod30.z.strictObject({
2126
2801
  key: ChatPlace,
2127
2802
  /** The app's default profile (Claude: the main window, which lists every account's chats). */
2128
- main: import_zod29.z.boolean(),
2803
+ main: import_zod30.z.boolean(),
2129
2804
  /** The account the window is signed into, when known. */
2130
- account: import_zod29.z.string().max(320).nullable()
2805
+ account: import_zod30.z.string().max(320).nullable()
2131
2806
  });
2132
- var ChatProject = import_zod29.z.strictObject({
2807
+ var ChatProject = import_zod30.z.strictObject({
2133
2808
  id: ChatProjectId,
2134
- name: import_zod29.z.string().min(1).max(200),
2135
- archived: import_zod29.z.boolean(),
2809
+ name: import_zod30.z.string().min(1).max(200),
2810
+ archived: import_zod30.z.boolean(),
2136
2811
  /** Chats in it. */
2137
2812
  count: nonNegInt
2138
2813
  });
2139
- var ChatPin = import_zod29.z.strictObject({
2814
+ var ChatPin = import_zod30.z.strictObject({
2140
2815
  /** The window whose account pins it; an account with no window of its own is named by its email. */
2141
- window: import_zod29.z.string().min(1).max(320),
2816
+ window: import_zod30.z.string().min(1).max(320),
2142
2817
  /** When that account's pin list was last read; null when the reading has no time. */
2143
2818
  observed_at_ms: epochMs.nullable()
2144
2819
  });
2145
- var ChatRunning = import_zod29.z.strictObject({
2820
+ var ChatRunning = import_zod30.z.strictObject({
2146
2821
  window: ChatPlace,
2147
2822
  /** process: a live process resumed this chat there (exact); activity: that window's own record moved in the last 3 minutes. */
2148
- how: import_zod29.z.enum(["process", "activity"])
2823
+ how: import_zod30.z.enum(["process", "activity"])
2149
2824
  });
2150
- var ChatHidden = import_zod29.z.strictObject({
2825
+ var ChatHidden = import_zod30.z.strictObject({
2151
2826
  window: ChatPlace,
2152
- reason: import_zod29.z.string().max(200)
2827
+ reason: import_zod30.z.string().max(200)
2153
2828
  });
2154
- var ChatLastUse = import_zod29.z.strictObject({
2829
+ var ChatLastUse = import_zod30.z.strictObject({
2155
2830
  /** The conversation's last reply. */
2156
2831
  at_ms: epochMs,
2157
2832
  window: ChatPlace.nullable(),
2158
- account: import_zod29.z.string().max(320).nullable(),
2833
+ account: import_zod30.z.string().max(320).nullable(),
2159
2834
  /** How the window was decided (one short line). */
2160
- how: import_zod29.z.string().max(120).nullable(),
2835
+ how: import_zod30.z.string().max(120).nullable(),
2161
2836
  /** The account's 1-hour prompt cache is still warm. */
2162
- cache_warm: import_zod29.z.boolean(),
2837
+ cache_warm: import_zod30.z.boolean(),
2163
2838
  cache_minutes_left: nonNegInt
2164
2839
  });
2165
- var ChatAppProject = import_zod29.z.strictObject({
2166
- id: import_zod29.z.string().min(1).max(200),
2167
- name: import_zod29.z.string().max(200)
2840
+ var ChatAppProject = import_zod30.z.strictObject({
2841
+ id: import_zod30.z.string().min(1).max(200),
2842
+ name: import_zod30.z.string().max(200)
2168
2843
  });
2169
- var ChatTitleSource = import_zod29.z.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt"]);
2170
- var ChatRow = import_zod29.z.strictObject({
2844
+ var ChatTitleSource = import_zod30.z.enum(["app", "app-remembered", "custom-title", "ai-title", "agent-name", "summary", "first-prompt", "last-prompt"]);
2845
+ var ChatRow = import_zod30.z.strictObject({
2171
2846
  id: ChatId,
2172
2847
  /** The short id people see (the listing's first 8 characters). */
2173
- short_id: import_zod29.z.string().max(16),
2848
+ short_id: import_zod30.z.string().max(16),
2174
2849
  /** The listing's own name (Claude: local_<id>), null for a chat only in the holder. */
2175
- record: import_zod29.z.string().max(160).nullable(),
2176
- title: import_zod29.z.string().max(1e3),
2850
+ record: import_zod30.z.string().max(160).nullable(),
2851
+ title: import_zod30.z.string().max(1e3),
2177
2852
  last_active_ms: epochMs.nullable(),
2178
2853
  created_ms: epochMs.nullable(),
2179
- projects: import_zod29.z.array(ChatProjectId).max(500),
2180
- starred: import_zod29.z.boolean(),
2181
- pinned_in: import_zod29.z.array(ChatPin).max(200),
2854
+ projects: import_zod30.z.array(ChatProjectId).max(500),
2855
+ starred: import_zod30.z.boolean(),
2856
+ pinned_in: import_zod30.z.array(ChatPin).max(200),
2182
2857
  /** Every place it is listed now: window keys, plus "holder". */
2183
- places: import_zod29.z.array(ChatPlace).max(200),
2184
- held: import_zod29.z.boolean(),
2185
- running: import_zod29.z.array(ChatRunning).max(200),
2186
- hidden_in: import_zod29.z.array(ChatHidden).max(200),
2858
+ places: import_zod30.z.array(ChatPlace).max(200),
2859
+ held: import_zod30.z.boolean(),
2860
+ running: import_zod30.z.array(ChatRunning).max(200),
2861
+ hidden_in: import_zod30.z.array(ChatHidden).max(200),
2187
2862
  /** Kept out of the main window on purpose. */
2188
- hidden_from_main: import_zod29.z.boolean(),
2863
+ hidden_from_main: import_zod30.z.boolean(),
2189
2864
  /** Listed in a side window and not yet copied into main. */
2190
- main_pending: import_zod29.z.boolean(),
2865
+ main_pending: import_zod30.z.boolean(),
2191
2866
  /** A scheduled routine's run (its task id). */
2192
- scheduled: import_zod29.z.string().max(200).nullable(),
2867
+ scheduled: import_zod30.z.string().max(200).nullable(),
2193
2868
  /** Created recently and in no project: offered for filing. */
2194
- new_unfiled: import_zod29.z.boolean(),
2195
- warnings: import_zod29.z.array(import_zod29.z.string().max(400)).max(20),
2869
+ new_unfiled: import_zod30.z.boolean(),
2870
+ warnings: import_zod30.z.array(import_zod30.z.string().max(400)).max(20),
2196
2871
  last_use: ChatLastUse.nullable(),
2197
2872
  /** 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. */
2198
2873
  app_project: ChatAppProject.optional(),
@@ -2202,140 +2877,140 @@ var ChatRow = import_zod29.z.strictObject({
2202
2877
  * 1.14: the chat's own title before the person's rename (the one title rule, `@ai-matrx/coding-sessions/sessions`);
2203
2878
  * `title` is what to show (`title_override` when set, else this).
2204
2879
  */
2205
- original_title: import_zod29.z.string().max(1e3).optional(),
2880
+ original_title: import_zod30.z.string().max(1e3).optional(),
2206
2881
  /** 1.14: where `original_title` came from (the one rule's sources, strongest first; 1.15: a closed set). */
2207
2882
  title_source: ChatTitleSource.optional(),
2208
2883
  /** 1.14: the person's rename inside Matrx (Coding Sessions), applied once by the row builder; absent = none. */
2209
- title_override: import_zod29.z.string().min(1).max(300).optional(),
2884
+ title_override: import_zod30.z.string().min(1).max(300).optional(),
2210
2885
  /** 1.15: the app itself archived it (hidden_in says where and why, in words for people; this is the typed fact). */
2211
- archived: import_zod29.z.boolean().optional()
2886
+ archived: import_zod30.z.boolean().optional()
2212
2887
  });
2213
- var ChatFamily = import_zod29.z.strictObject({
2888
+ var ChatFamily = import_zod30.z.strictObject({
2214
2889
  id: ChatId,
2215
2890
  fork_of: ChatId.nullable(),
2216
2891
  copy_of: ChatId.nullable()
2217
2892
  });
2218
- var AppsChatsListParams = import_zod29.z.strictObject({
2893
+ var AppsChatsListParams = import_zod30.z.strictObject({
2219
2894
  app_key: AppKey,
2220
2895
  /** Only these chats (a live update re-reads just what changed). */
2221
- ids: import_zod29.z.array(ChatId).max(500).optional()
2896
+ ids: import_zod30.z.array(ChatId).max(500).optional()
2222
2897
  });
2223
- var AppsChatsListResult = import_zod29.z.strictObject({
2898
+ var AppsChatsListResult = import_zod30.z.strictObject({
2224
2899
  app_key: AppKey,
2225
2900
  /** Bumps on every change the index sees; `apps.chats.changed` carries the same number. */
2226
2901
  version: nonNegInt,
2227
- windows: import_zod29.z.array(ChatWindow).max(200),
2228
- projects: import_zod29.z.array(ChatProject).max(5e3),
2229
- chats: import_zod29.z.array(ChatRow).max(2e4),
2902
+ windows: import_zod30.z.array(ChatWindow).max(200),
2903
+ projects: import_zod30.z.array(ChatProject).max(5e3),
2904
+ chats: import_zod30.z.array(ChatRow).max(2e4),
2230
2905
  /** How long a chat in no project counts as new. */
2231
2906
  new_window_ms: nonNegInt,
2232
2907
  /** 1.9: this is the copy saved at the last read, shown while everything is read again. */
2233
- updating: import_zod29.z.boolean().optional(),
2908
+ updating: import_zod30.z.boolean().optional(),
2234
2909
  /** 1.9: false while the folder watches are down (changes are not arriving); `apps.chats.watch_state` says when it changes. */
2235
- live: import_zod29.z.boolean().optional(),
2910
+ live: import_zod30.z.boolean().optional(),
2236
2911
  /** 1.10: every listed chat that is a fork or a copy of another (read from the conversations' first lines). */
2237
- families: import_zod29.z.array(ChatFamily).max(2e4).optional()
2912
+ families: import_zod30.z.array(ChatFamily).max(2e4).optional()
2238
2913
  });
2239
- var AppsChatsWatchParams = import_zod29.z.strictObject({ app_key: AppKey });
2240
- var AppsChatsWatchResult = import_zod29.z.strictObject({ resource_id: ResourceId, version: nonNegInt });
2241
- var AppsChatsChangedEvent = import_zod29.z.strictObject({
2914
+ var AppsChatsWatchParams = import_zod30.z.strictObject({ app_key: AppKey });
2915
+ var AppsChatsWatchResult = import_zod30.z.strictObject({ resource_id: ResourceId, version: nonNegInt });
2916
+ var AppsChatsChangedEvent = import_zod30.z.strictObject({
2242
2917
  app_key: AppKey,
2243
2918
  version: nonNegInt,
2244
- ids: import_zod29.z.array(ChatId).max(1e3),
2245
- all: import_zod29.z.boolean()
2919
+ ids: import_zod30.z.array(ChatId).max(1e3),
2920
+ all: import_zod30.z.boolean()
2246
2921
  });
2247
- var AppsChatsWatchStateEvent = import_zod29.z.strictObject({
2922
+ var AppsChatsWatchStateEvent = import_zod30.z.strictObject({
2248
2923
  app_key: AppKey,
2249
- live: import_zod29.z.boolean(),
2250
- updating: import_zod29.z.boolean(),
2251
- reason: import_zod29.z.string().max(300).nullable()
2924
+ live: import_zod30.z.boolean(),
2925
+ updating: import_zod30.z.boolean(),
2926
+ reason: import_zod30.z.string().max(300).nullable()
2252
2927
  });
2253
- var AppsChatsPlaceParams = import_zod29.z.strictObject({
2928
+ var AppsChatsPlaceParams = import_zod30.z.strictObject({
2254
2929
  app_key: AppKey,
2255
2930
  chat_id: ChatId,
2256
- action: import_zod29.z.enum(["place", "take_off", "hold"]),
2931
+ action: import_zod30.z.enum(["place", "take_off", "hold"]),
2257
2932
  /** The window (for place and take_off). */
2258
2933
  window: ChatPlace.optional(),
2259
2934
  /** take_off where it is open: stop it there first (the person confirmed). */
2260
- stop_if_open: import_zod29.z.boolean().default(false)
2935
+ stop_if_open: import_zod30.z.boolean().default(false)
2261
2936
  });
2262
- var AppsChatsPlaceResult = import_zod29.z.strictObject({ chat: ChatRow, message: import_zod29.z.string().max(400) });
2263
- var AppsProjectsFileManyParams = import_zod29.z.strictObject({
2937
+ var AppsChatsPlaceResult = import_zod30.z.strictObject({ chat: ChatRow, message: import_zod30.z.string().max(400) });
2938
+ var AppsProjectsFileManyParams = import_zod30.z.strictObject({
2264
2939
  app_key: AppKey,
2265
- chat_ids: import_zod29.z.array(ChatId).min(1).max(500),
2940
+ chat_ids: import_zod30.z.array(ChatId).min(1).max(500),
2266
2941
  project_id: ChatProjectId.optional(),
2267
- new_project_name: import_zod29.z.string().min(1).max(200).optional()
2942
+ new_project_name: import_zod30.z.string().min(1).max(200).optional()
2268
2943
  });
2269
- var AppsProjectsFileManyResult = import_zod29.z.strictObject({ chats: import_zod29.z.array(ChatRow).max(500), project: ChatProject });
2270
- var AppsProjectsUpdateParams = import_zod29.z.strictObject({
2944
+ var AppsProjectsFileManyResult = import_zod30.z.strictObject({ chats: import_zod30.z.array(ChatRow).max(500), project: ChatProject });
2945
+ var AppsProjectsUpdateParams = import_zod30.z.strictObject({
2271
2946
  app_key: AppKey,
2272
2947
  project_id: ChatProjectId,
2273
- name: import_zod29.z.string().min(1).max(200).optional(),
2274
- archived: import_zod29.z.boolean().optional()
2948
+ name: import_zod30.z.string().min(1).max(200).optional(),
2949
+ archived: import_zod30.z.boolean().optional()
2275
2950
  });
2276
- var AppsProjectsUpdateResult = import_zod29.z.strictObject({ project: ChatProject });
2277
- var AppsProjectsCopyParams = import_zod29.z.strictObject({ app_key: AppKey, project_id: ChatProjectId, new_project_name: import_zod29.z.string().min(1).max(200) });
2278
- var AppsProjectsCopyResult = import_zod29.z.strictObject({ project: ChatProject });
2279
- var AppsProjectsFileParams = import_zod29.z.strictObject({
2951
+ var AppsProjectsUpdateResult = import_zod30.z.strictObject({ project: ChatProject });
2952
+ var AppsProjectsCopyParams = import_zod30.z.strictObject({ app_key: AppKey, project_id: ChatProjectId, new_project_name: import_zod30.z.string().min(1).max(200) });
2953
+ var AppsProjectsCopyResult = import_zod30.z.strictObject({ project: ChatProject });
2954
+ var AppsProjectsFileParams = import_zod30.z.strictObject({
2280
2955
  app_key: AppKey,
2281
2956
  chat_id: ChatId,
2282
2957
  project_id: ChatProjectId.optional(),
2283
- new_project_name: import_zod29.z.string().min(1).max(200).optional()
2958
+ new_project_name: import_zod30.z.string().min(1).max(200).optional()
2284
2959
  });
2285
- var AppsProjectsFileResult = import_zod29.z.strictObject({ chat: ChatRow, project: ChatProject });
2286
- var AppsProjectsUnfileParams = import_zod29.z.strictObject({ app_key: AppKey, chat_id: ChatId, project_id: ChatProjectId });
2287
- var AppsProjectsUnfileResult = import_zod29.z.strictObject({ chat: ChatRow });
2288
- var AppsChatsStarParams = import_zod29.z.strictObject({ app_key: AppKey, chat_id: ChatId, starred: import_zod29.z.boolean() });
2289
- var AppsChatsStarResult = import_zod29.z.strictObject({ chat: ChatRow });
2960
+ var AppsProjectsFileResult = import_zod30.z.strictObject({ chat: ChatRow, project: ChatProject });
2961
+ var AppsProjectsUnfileParams = import_zod30.z.strictObject({ app_key: AppKey, chat_id: ChatId, project_id: ChatProjectId });
2962
+ var AppsProjectsUnfileResult = import_zod30.z.strictObject({ chat: ChatRow });
2963
+ var AppsChatsStarParams = import_zod30.z.strictObject({ app_key: AppKey, chat_id: ChatId, starred: import_zod30.z.boolean() });
2964
+ var AppsChatsStarResult = import_zod30.z.strictObject({ chat: ChatRow });
2290
2965
 
2291
2966
  // src/schema/apps-accounts.ts
2292
- var import_zod30 = require("zod");
2293
- var AppWindowInfo = import_zod30.z.strictObject({
2967
+ var import_zod31 = require("zod");
2968
+ var AppWindowInfo = import_zod31.z.strictObject({
2294
2969
  key: ChatPlace,
2295
2970
  /** The app's default profile (Claude: main, which may sign into any account). */
2296
- main: import_zod30.z.boolean(),
2971
+ main: import_zod31.z.boolean(),
2297
2972
  /** The account the window is meant for (null for main). */
2298
- account: import_zod30.z.string().max(320).nullable(),
2973
+ account: import_zod31.z.string().max(320).nullable(),
2299
2974
  /** The account signed in there now: an email, or the account id while it has no saved name. */
2300
- signed_in: import_zod30.z.string().max(320).nullable(),
2301
- signed_in_is_email: import_zod30.z.boolean(),
2975
+ signed_in: import_zod31.z.string().max(320).nullable(),
2976
+ signed_in_is_email: import_zod31.z.boolean(),
2302
2977
  /** Signed into another account than the one it is meant for. */
2303
- mismatch: import_zod30.z.boolean(),
2978
+ mismatch: import_zod31.z.boolean(),
2304
2979
  /** Its folder exists. */
2305
- created: import_zod30.z.boolean(),
2980
+ created: import_zod31.z.boolean(),
2306
2981
  /** Open now. */
2307
- running: import_zod30.z.boolean(),
2982
+ running: import_zod31.z.boolean(),
2308
2983
  /** Chats open in it now (a process resuming each one). */
2309
2984
  open_chats: nonNegInt
2310
2985
  });
2311
- var AccountUsage = import_zod30.z.strictObject({
2986
+ var AccountUsage = import_zod31.z.strictObject({
2312
2987
  /** The account's email, or "org <8 chars>" when no window has ever sampled that org. */
2313
- account: import_zod30.z.string().max(320),
2314
- org: import_zod30.z.string().max(80).nullable(),
2988
+ account: import_zod31.z.string().max(320),
2989
+ org: import_zod31.z.string().max(80).nullable(),
2315
2990
  /** False when the org was sampled in several accounts' windows and the vote is not clear (≥ 75 %). */
2316
- account_certain: import_zod30.z.boolean(),
2991
+ account_certain: import_zod31.z.boolean(),
2317
2992
  /** 5-hour use in percent (0 once the reading is over 5 hours old). */
2318
- five_hour: import_zod30.z.number().nullable(),
2319
- five_hour_reset_since: import_zod30.z.boolean(),
2993
+ five_hour: import_zod31.z.number().nullable(),
2994
+ five_hour_reset_since: import_zod31.z.boolean(),
2320
2995
  /** Weekly use in percent (0 once the week reset after the reading). */
2321
- weekly: import_zod30.z.number().nullable(),
2322
- weekly_reset_since: import_zod30.z.boolean(),
2996
+ weekly: import_zod31.z.number().nullable(),
2997
+ weekly_reset_since: import_zod31.z.boolean(),
2323
2998
  /** Extra-usage spend in percent of its cap, when on. */
2324
- extra_usage: import_zod30.z.number().nullable(),
2999
+ extra_usage: import_zod31.z.number().nullable(),
2325
3000
  extra_usage_as_of_ms: epochMs.nullable(),
2326
3001
  as_of_ms: epochMs,
2327
3002
  /** The windows meant for this account (and main when main took the reading). */
2328
- windows: import_zod30.z.array(ChatPlace).max(200),
3003
+ windows: import_zod31.z.array(ChatPlace).max(200),
2329
3004
  /** The window that took the reading is open now and the reading is under 30 minutes old. */
2330
- live: import_zod30.z.boolean(),
3005
+ live: import_zod31.z.boolean(),
2331
3006
  /** The next weekly reset, when known. */
2332
3007
  weekly_resets_at_ms: epochMs.nullable(),
2333
3008
  /** That reset time is Claude's own (its reading, or a reset seen in its usage history). */
2334
- weekly_reset_official: import_zod30.z.boolean().nullable(),
3009
+ weekly_reset_official: import_zod31.z.boolean().nullable(),
2335
3010
  /** 1.13: the account's plan as the app names it (Codex: "pro", "prolite"), when recorded. */
2336
- plan: import_zod30.z.string().max(80).optional(),
3011
+ plan: import_zod31.z.string().max(80).optional(),
2337
3012
  /** 1.13: the account's credit balance as the app records it (Codex), when recorded. */
2338
- credits: import_zod30.z.string().max(40).optional(),
3013
+ credits: import_zod31.z.string().max(40).optional(),
2339
3014
  /**
2340
3015
  * 1.25: the latest the account's 5-hour window can reset: 5 hours after the first reading of this
2341
3016
  * window's use (its usage history), so the real reset is at or before it. Absent when no 5-hour
@@ -2343,81 +3018,81 @@ var AccountUsage = import_zod30.z.strictObject({
2343
3018
  */
2344
3019
  five_hour_resets_by_ms: epochMs.optional()
2345
3020
  });
2346
- var AccountReset = import_zod30.z.strictObject({
3021
+ var AccountReset = import_zod31.z.strictObject({
2347
3022
  window: ChatPlace,
2348
- account: import_zod30.z.string().max(320).nullable(),
3023
+ account: import_zod31.z.string().max(320).nullable(),
2349
3024
  next_reset_ms: epochMs.nullable(),
2350
3025
  /** claude: the app's own reading; usage_history: a weekly drop seen in its usage record; your_list: the person's own entry. */
2351
- source: import_zod30.z.enum(["claude", "usage_history", "your_list"]).nullable(),
3026
+ source: import_zod31.z.enum(["claude", "usage_history", "your_list"]).nullable(),
2352
3027
  /** claude or usage_history. */
2353
- official: import_zod30.z.boolean(),
3028
+ official: import_zod31.z.boolean(),
2354
3029
  /** Set when the person's list disagrees with the official time. */
2355
- note: import_zod30.z.string().max(200).nullable()
3030
+ note: import_zod31.z.string().max(200).nullable()
2356
3031
  });
2357
- var AppsWindowsListParams = import_zod30.z.strictObject({ app_key: AppKey });
2358
- var AppsWindowsListResult = import_zod30.z.strictObject({ app_key: AppKey, windows: import_zod30.z.array(AppWindowInfo).max(200) });
2359
- var AppsAccountsUsageParams = import_zod30.z.strictObject({ app_key: AppKey });
2360
- var AppsAccountsUsageResult = import_zod30.z.strictObject({
3032
+ var AppsWindowsListParams = import_zod31.z.strictObject({ app_key: AppKey });
3033
+ var AppsWindowsListResult = import_zod31.z.strictObject({ app_key: AppKey, windows: import_zod31.z.array(AppWindowInfo).max(200) });
3034
+ var AppsAccountsUsageParams = import_zod31.z.strictObject({ app_key: AppKey });
3035
+ var AppsAccountsUsageResult = import_zod31.z.strictObject({
2361
3036
  app_key: AppKey,
2362
- accounts: import_zod30.z.array(AccountUsage).max(500),
3037
+ accounts: import_zod31.z.array(AccountUsage).max(500),
2363
3038
  /** 1.12: the rows are right but something around them failed (a newly read reset time could not be saved); shown, never hidden. */
2364
- problem: import_zod30.z.string().max(400).optional()
3039
+ problem: import_zod31.z.string().max(400).optional()
2365
3040
  });
2366
- var AppsAccountsResetsParams = import_zod30.z.strictObject({ app_key: AppKey });
2367
- var AppsAccountsResetsResult = import_zod30.z.strictObject({
3041
+ var AppsAccountsResetsParams = import_zod31.z.strictObject({ app_key: AppKey });
3042
+ var AppsAccountsResetsResult = import_zod31.z.strictObject({
2368
3043
  app_key: AppKey,
2369
- resets: import_zod30.z.array(AccountReset).max(200),
3044
+ resets: import_zod31.z.array(AccountReset).max(200),
2370
3045
  /** 1.12: as on `apps.accounts.usage`. */
2371
- problem: import_zod30.z.string().max(400).optional()
3046
+ problem: import_zod31.z.string().max(400).optional()
2372
3047
  });
2373
- var AppsWindowActionResult = import_zod30.z.strictObject({ message: import_zod30.z.string().max(400) });
2374
- var AppsWindowsOpenParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace });
2375
- var AppsWindowsReloadParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace });
2376
- var ShownSection = import_zod30.z.strictObject({
2377
- title: import_zod30.z.string().max(300),
3048
+ var AppsWindowActionResult = import_zod31.z.strictObject({ message: import_zod31.z.string().max(400) });
3049
+ var AppsWindowsOpenParams = import_zod31.z.strictObject({ app_key: AppKey, window: ChatPlace });
3050
+ var AppsWindowsReloadParams = import_zod31.z.strictObject({ app_key: AppKey, window: ChatPlace });
3051
+ var ShownSection = import_zod31.z.strictObject({
3052
+ title: import_zod31.z.string().max(300),
2378
3053
  /** Rows drawn under it (a collapsed section draws none). */
2379
- rows: import_zod30.z.number().int().nonnegative(),
2380
- expanded: import_zod30.z.boolean()
3054
+ rows: import_zod31.z.number().int().nonnegative(),
3055
+ expanded: import_zod31.z.boolean()
2381
3056
  });
2382
- var AppsWindowsShownParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace });
2383
- var AppsWindowsShownResult = import_zod30.z.strictObject({
3057
+ var AppsWindowsShownParams = import_zod31.z.strictObject({ app_key: AppKey, window: ChatPlace });
3058
+ var AppsWindowsShownResult = import_zod31.z.strictObject({
2384
3059
  window: ChatPlace,
2385
- open: import_zod30.z.boolean(),
2386
- sections: import_zod30.z.array(ShownSection).max(200),
2387
- problem: import_zod30.z.string().max(400).nullable()
3060
+ open: import_zod31.z.boolean(),
3061
+ sections: import_zod31.z.array(ShownSection).max(200),
3062
+ problem: import_zod31.z.string().max(400).nullable()
2388
3063
  });
2389
- var AppsWindowsRestartParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace, force: import_zod30.z.boolean().default(false) });
2390
- var AppsWindowsRefreshUsageParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace });
2391
- var AppsProjectsMoveParams = import_zod30.z.strictObject({
3064
+ var AppsWindowsRestartParams = import_zod31.z.strictObject({ app_key: AppKey, window: ChatPlace, force: import_zod31.z.boolean().default(false) });
3065
+ var AppsWindowsRefreshUsageParams = import_zod31.z.strictObject({ app_key: AppKey, window: ChatPlace });
3066
+ var AppsProjectsMoveParams = import_zod31.z.strictObject({
2392
3067
  app_key: AppKey,
2393
3068
  chat_id: ChatId,
2394
3069
  from_project_id: ChatProjectId,
2395
3070
  to_project_id: ChatProjectId.optional(),
2396
- new_project_name: import_zod30.z.string().min(1).max(200).optional()
2397
- });
2398
- var AppsProjectsMoveResult = import_zod30.z.strictObject({ chat: ChatRow, project: ChatProject });
2399
- var AppsProjectsCreateParams = import_zod30.z.strictObject({ app_key: AppKey, name: import_zod30.z.string().min(1).max(200) });
2400
- var AppsProjectsCreateResult = import_zod30.z.strictObject({ project: ChatProject });
2401
- var AppsProjectsImportPinsParams = import_zod30.z.strictObject({ app_key: AppKey });
2402
- var AppsProjectsImportPinsResult = import_zod30.z.strictObject({ message: import_zod30.z.string().max(400) });
2403
- var ProjectMoveChat = import_zod30.z.strictObject({ chat_id: ChatId, title: import_zod30.z.string().max(300) });
2404
- 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) });
2405
- var ProjectMoveGroup = import_zod30.z.strictObject({
2406
- ok: import_zod30.z.boolean(),
2407
- name: import_zod30.z.string().max(200),
3071
+ new_project_name: import_zod31.z.string().min(1).max(200).optional()
3072
+ });
3073
+ var AppsProjectsMoveResult = import_zod31.z.strictObject({ chat: ChatRow, project: ChatProject });
3074
+ var AppsProjectsCreateParams = import_zod31.z.strictObject({ app_key: AppKey, name: import_zod31.z.string().min(1).max(200) });
3075
+ var AppsProjectsCreateResult = import_zod31.z.strictObject({ project: ChatProject });
3076
+ var AppsProjectsImportPinsParams = import_zod31.z.strictObject({ app_key: AppKey });
3077
+ var AppsProjectsImportPinsResult = import_zod31.z.strictObject({ message: import_zod31.z.string().max(400) });
3078
+ var ProjectMoveChat = import_zod31.z.strictObject({ chat_id: ChatId, title: import_zod31.z.string().max(300) });
3079
+ var ProjectMoveSkip = import_zod31.z.strictObject({ chat_id: ChatId, title: import_zod31.z.string().max(300), window: ChatPlace.nullable(), reason: import_zod31.z.string().max(400) });
3080
+ var ProjectMoveGroup = import_zod31.z.strictObject({
3081
+ ok: import_zod31.z.boolean(),
3082
+ name: import_zod31.z.string().max(200),
2408
3083
  /** Why it is not (or was not) grouped — e.g. the window is open. */
2409
- reason: import_zod30.z.string().max(400).optional(),
3084
+ reason: import_zod31.z.string().max(400).optional(),
2410
3085
  /** Chats that get (or got) the group; already in it; taken from another group of the window. */
2411
3086
  assign: nonNegInt.optional(),
2412
3087
  already: nonNegInt.optional(),
2413
3088
  from_other_groups: nonNegInt.optional(),
2414
3089
  /** A group of that name was already there (reused, never doubled). */
2415
- group_exists: import_zod30.z.boolean().optional()
3090
+ group_exists: import_zod31.z.boolean().optional()
2416
3091
  });
2417
- var ProjectMovePin = import_zod30.z.strictObject({
2418
- ok: import_zod30.z.boolean(),
3092
+ var ProjectMovePin = import_zod31.z.strictObject({
3093
+ ok: import_zod31.z.boolean(),
2419
3094
  /** "now" = written into the closed window; "next_close" = queued until that window closes. */
2420
- when: import_zod30.z.enum(["now", "next_close"]),
3095
+ when: import_zod31.z.enum(["now", "next_close"]),
2421
3096
  /** Pinned by this call (dry run: would be). */
2422
3097
  pinned: nonNegInt,
2423
3098
  /** Already pinned there. */
@@ -2425,108 +3100,108 @@ var ProjectMovePin = import_zod30.z.strictObject({
2425
3100
  /** Waiting for the window to close (dry run: would wait). */
2426
3101
  queued: nonNegInt,
2427
3102
  /** Why not pinned (ok false), or why queued. */
2428
- reason: import_zod30.z.string().max(400).optional()
3103
+ reason: import_zod31.z.string().max(400).optional()
2429
3104
  });
2430
- var AppsProjectsToWindowParams = import_zod30.z.strictObject({
3105
+ var AppsProjectsToWindowParams = import_zod31.z.strictObject({
2431
3106
  app_key: AppKey,
2432
3107
  project_id: ChatProjectId,
2433
3108
  window: ChatPlace,
2434
3109
  /** Also take each chat off its other side windows where safe (never main, the holder, an open window). */
2435
- take_off: import_zod30.z.boolean().default(false),
3110
+ take_off: import_zod31.z.boolean().default(false),
2436
3111
  /** Also group them under the project's name in that window's sidebar (closed windows only). */
2437
- group: import_zod30.z.boolean().default(false),
3112
+ group: import_zod31.z.boolean().default(false),
2438
3113
  /** 1.32: also pin them in that window (now if closed, else when it next closes). */
2439
- pin: import_zod30.z.boolean().optional(),
3114
+ pin: import_zod31.z.boolean().optional(),
2440
3115
  /** 1.36: a batch: exactly these chats of the project and no other (a reused marker is a label, never a sweep). */
2441
- chat_ids: import_zod30.z.array(ChatId).min(1).max(5e3).optional(),
3116
+ chat_ids: import_zod31.z.array(ChatId).min(1).max(5e3).optional(),
2442
3117
  /** 1.36: take them off this one side window only (a Move's origin), never main or another window that lists them. */
2443
3118
  take_off_from: ChatPlace.optional(),
2444
- dry_run: import_zod30.z.boolean().default(false)
3119
+ dry_run: import_zod31.z.boolean().default(false)
2445
3120
  });
2446
- var AppsProjectsToWindowResult = import_zod30.z.strictObject({
3121
+ var AppsProjectsToWindowResult = import_zod31.z.strictObject({
2447
3122
  project_id: ChatProjectId,
2448
3123
  window: ChatPlace,
2449
- dry_run: import_zod30.z.boolean(),
2450
- place: import_zod30.z.array(ProjectMoveChat).max(5e3),
2451
- already: import_zod30.z.array(ProjectMoveChat).max(5e3),
2452
- take_off: import_zod30.z.array(ProjectMoveChat.extend({ window: ChatPlace })).max(2e4),
2453
- skipped: import_zod30.z.array(ProjectMoveSkip).max(2e4),
3124
+ dry_run: import_zod31.z.boolean(),
3125
+ place: import_zod31.z.array(ProjectMoveChat).max(5e3),
3126
+ already: import_zod31.z.array(ProjectMoveChat).max(5e3),
3127
+ take_off: import_zod31.z.array(ProjectMoveChat.extend({ window: ChatPlace })).max(2e4),
3128
+ skipped: import_zod31.z.array(ProjectMoveSkip).max(2e4),
2454
3129
  /** Chats of the project from other apps (no windows to place into), left as they are. */
2455
3130
  other_apps: nonNegInt,
2456
3131
  group: ProjectMoveGroup.nullable(),
2457
3132
  /** 1.32: the pin in the target window (absent: not asked). */
2458
3133
  pin: ProjectMovePin.optional(),
2459
- message: import_zod30.z.string().max(400)
3134
+ message: import_zod31.z.string().max(400)
2460
3135
  });
2461
- var ColdChat = import_zod30.z.strictObject({
3136
+ var ColdChat = import_zod31.z.strictObject({
2462
3137
  id: ChatId,
2463
- title: import_zod30.z.string().max(1e3),
2464
- repo: import_zod30.z.string().max(200).nullable(),
2465
- window: import_zod30.z.string().max(64).nullable(),
2466
- account: import_zod30.z.string().max(320).nullable(),
2467
- model_name: import_zod30.z.string().max(120).nullable(),
3138
+ title: import_zod31.z.string().max(1e3),
3139
+ repo: import_zod31.z.string().max(200).nullable(),
3140
+ window: import_zod31.z.string().max(64).nullable(),
3141
+ account: import_zod31.z.string().max(320).nullable(),
3142
+ model_name: import_zod31.z.string().max(120).nullable(),
2468
3143
  context_tokens: nonNegInt,
2469
3144
  cold_at_ms: epochMs,
2470
3145
  /** Waking it once the cache is cold. */
2471
- cold_cost: import_zod30.z.number().nullable(),
3146
+ cold_cost: import_zod31.z.number().nullable(),
2472
3147
  /** Waking it while the cache is warm. */
2473
- warm_cost: import_zod30.z.number().nullable(),
3148
+ warm_cost: import_zod31.z.number().nullable(),
2474
3149
  /** Its account is on extra usage (a 5-minute cache, and real money). */
2475
- extra_usage: import_zod30.z.boolean(),
3150
+ extra_usage: import_zod31.z.boolean(),
2476
3151
  /** A scheduled routine's run. */
2477
- scheduled: import_zod30.z.boolean(),
3152
+ scheduled: import_zod31.z.boolean(),
2478
3153
  /** It can be shown in its window (started in the desktop app). */
2479
- openable: import_zod30.z.boolean(),
3154
+ openable: import_zod31.z.boolean(),
2480
3155
  /** How its window was decided, or why it can't be opened. */
2481
- how: import_zod30.z.string().max(200).nullable()
3156
+ how: import_zod31.z.string().max(200).nullable()
2482
3157
  });
2483
- var AppsChatsColdParams = import_zod30.z.strictObject({ app_key: AppKey });
2484
- var AppsChatsColdResult = import_zod30.z.strictObject({
3158
+ var AppsChatsColdParams = import_zod31.z.strictObject({ app_key: AppKey });
3159
+ var AppsChatsColdResult = import_zod31.z.strictObject({
2485
3160
  app_key: AppKey,
2486
3161
  /** Waiting for the person with a warm cache, most urgent first. */
2487
- waiting: import_zod30.z.array(ColdChat).max(2e3),
3162
+ waiting: import_zod31.z.array(ColdChat).max(2e3),
2488
3163
  /** Went cold in the last while. */
2489
- recently_cold: import_zod30.z.array(ColdChat).max(2e3),
3164
+ recently_cold: import_zod31.z.array(ColdChat).max(2e3),
2490
3165
  /** Chats working right now (not waiting). */
2491
3166
  working: nonNegInt
2492
3167
  });
2493
- var TitleCopies = import_zod30.z.strictObject({
3168
+ var TitleCopies = import_zod31.z.strictObject({
2494
3169
  window: ChatPlace,
2495
3170
  /** Record copies in that window holding a different name (main keeps one per account folder). */
2496
3171
  copies: nonNegInt,
2497
- titles: import_zod30.z.array(import_zod30.z.strictObject({ title: import_zod30.z.string().max(2e3), source: import_zod30.z.string().max(32) })).max(50)
3172
+ titles: import_zod31.z.array(import_zod31.z.strictObject({ title: import_zod31.z.string().max(2e3), source: import_zod31.z.string().max(32) })).max(50)
2498
3173
  });
2499
- var TitleMismatch = import_zod30.z.strictObject({
3174
+ var TitleMismatch = import_zod31.z.strictObject({
2500
3175
  chat_id: ChatId,
2501
3176
  /** The right name: the latest one a person gave it (in any window, or in Matrx), else the newest automatic title. */
2502
- title: import_zod30.z.string().max(2e3),
2503
- title_source: import_zod30.z.enum(["user", "auto"]),
3177
+ title: import_zod31.z.string().max(2e3),
3178
+ title_source: import_zod31.z.enum(["user", "auto"]),
2504
3179
  /** Where the right name came from: a window, "matrx", or "ledger" (decided earlier). */
2505
- decided_from: import_zod30.z.string().max(64),
2506
- kind: import_zod30.z.enum(["user_vs_auto", "user_vs_user", "auto_vs_auto", "source_only"]),
2507
- windows: import_zod30.z.array(ChatPlace).max(200),
2508
- differs_in: import_zod30.z.array(TitleCopies).max(200)
3180
+ decided_from: import_zod31.z.string().max(64),
3181
+ kind: import_zod31.z.enum(["user_vs_auto", "user_vs_user", "auto_vs_auto", "source_only"]),
3182
+ windows: import_zod31.z.array(ChatPlace).max(200),
3183
+ differs_in: import_zod31.z.array(TitleCopies).max(200)
2509
3184
  });
2510
- var StaleTitleWindow = import_zod30.z.strictObject({
3185
+ var StaleTitleWindow = import_zod31.z.strictObject({
2511
3186
  window: ChatPlace,
2512
3187
  /** First and latest time (ms) it was seen writing an old name back. */
2513
3188
  since_ms: nonNegInt,
2514
3189
  last_ms: nonNegInt
2515
3190
  });
2516
- var AppsChatsTitlesCheckParams = import_zod30.z.strictObject({ app_key: AppKey });
2517
- var AppsChatsTitlesCheckResult = import_zod30.z.strictObject({
3191
+ var AppsChatsTitlesCheckParams = import_zod31.z.strictObject({ app_key: AppKey });
3192
+ var AppsChatsTitlesCheckResult = import_zod31.z.strictObject({
2518
3193
  app_key: AppKey,
2519
3194
  chats_total: nonNegInt,
2520
3195
  chats_in_several_windows: nonNegInt,
2521
3196
  /** Chats with a different name in some window (or in Matrx). */
2522
3197
  chats_with_a_different_name: nonNegInt,
2523
3198
  copies_to_write: nonNegInt,
2524
- chats: import_zod30.z.array(TitleMismatch).max(5e3),
3199
+ chats: import_zod31.z.array(TitleMismatch).max(5e3),
2525
3200
  /** Windows that keep writing old names back (each is fixed every pass; reloading it, Cmd+R, stops it). Since 1.33. */
2526
- stale_windows: import_zod30.z.array(StaleTitleWindow).max(200).optional()
3201
+ stale_windows: import_zod31.z.array(StaleTitleWindow).max(200).optional()
2527
3202
  });
2528
- var AppsChatsTitlesPushParams = import_zod30.z.strictObject({ app_key: AppKey, chat_id: ChatId.optional(), dry_run: import_zod30.z.boolean().optional() });
2529
- var AppsChatsTitlesPushResult = import_zod30.z.strictObject({
3203
+ var AppsChatsTitlesPushParams = import_zod31.z.strictObject({ app_key: AppKey, chat_id: ChatId.optional(), dry_run: import_zod31.z.boolean().optional() });
3204
+ var AppsChatsTitlesPushResult = import_zod31.z.strictObject({
2530
3205
  app_key: AppKey,
2531
3206
  /** Record files rewritten (title and titleSource only, each backed up first). */
2532
3207
  written: nonNegInt,
@@ -2536,122 +3211,122 @@ var AppsChatsTitlesPushResult = import_zod30.z.strictObject({
2536
3211
  /** Still different after the push (dry_run: would be written). */
2537
3212
  chats_with_a_different_name: nonNegInt
2538
3213
  });
2539
- var AppsChatsOpenParams = import_zod30.z.strictObject({ app_key: AppKey, chat_id: ChatId, window: ChatPlace.optional() });
2540
- var SpendSplit = import_zod30.z.strictObject({ main: import_zod30.z.number(), helpers: import_zod30.z.number() });
2541
- var SpendScopes = import_zod30.z.strictObject({ today: SpendSplit, week: SpendSplit });
2542
- var SpendAccount = import_zod30.z.strictObject({
2543
- account: import_zod30.z.string().max(320),
3214
+ var AppsChatsOpenParams = import_zod31.z.strictObject({ app_key: AppKey, chat_id: ChatId, window: ChatPlace.optional() });
3215
+ var SpendSplit = import_zod31.z.strictObject({ main: import_zod31.z.number(), helpers: import_zod31.z.number() });
3216
+ var SpendScopes = import_zod31.z.strictObject({ today: SpendSplit, week: SpendSplit });
3217
+ var SpendAccount = import_zod31.z.strictObject({
3218
+ account: import_zod31.z.string().max(320),
2544
3219
  spend: SpendScopes,
2545
- last_hour: import_zod30.z.number().nullable(),
2546
- last_5h: import_zod30.z.number().nullable(),
2547
- five_hour: import_zod30.z.number().nullable(),
2548
- weekly: import_zod30.z.number().nullable(),
3220
+ last_hour: import_zod31.z.number().nullable(),
3221
+ last_5h: import_zod31.z.number().nullable(),
3222
+ five_hour: import_zod31.z.number().nullable(),
3223
+ weekly: import_zod31.z.number().nullable(),
2549
3224
  as_of_ms: epochMs.nullable(),
2550
3225
  weekly_resets_at_ms: epochMs.nullable(),
2551
3226
  /** When the 5-hour or weekly limit is projected to be reached at the current burn. */
2552
3227
  five_hour_full_at_ms: epochMs.nullable(),
2553
3228
  weekly_full_at_ms: epochMs.nullable(),
2554
3229
  /** The reading is too old to project. */
2555
- stale: import_zod30.z.boolean()
3230
+ stale: import_zod31.z.boolean()
2556
3231
  });
2557
- var SpendModel = import_zod30.z.strictObject({ model: import_zod30.z.string().max(120), name: import_zod30.z.string().max(120), spend: SpendScopes });
2558
- var SpendChat = import_zod30.z.strictObject({
3232
+ var SpendModel = import_zod31.z.strictObject({ model: import_zod31.z.string().max(120), name: import_zod31.z.string().max(120), spend: SpendScopes });
3233
+ var SpendChat = import_zod31.z.strictObject({
2559
3234
  id: ChatId,
2560
- title: import_zod30.z.string().max(1e3),
2561
- repo: import_zod30.z.string().max(200).nullable(),
2562
- window: import_zod30.z.string().max(64).nullable(),
3235
+ title: import_zod31.z.string().max(1e3),
3236
+ repo: import_zod31.z.string().max(200).nullable(),
3237
+ window: import_zod31.z.string().max(64).nullable(),
2563
3238
  spend: SpendScopes,
2564
3239
  helpers: nonNegInt
2565
3240
  });
2566
- 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) });
2567
- 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) });
2568
- var SpendIdleScope = import_zod30.z.strictObject({ count: nonNegInt, tokens: nonNegInt, cost: import_zod30.z.number(), avoidable: import_zod30.z.number() });
2569
- 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 });
2570
- 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() });
2571
- 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() });
2572
- var AppsSpendParams = import_zod30.z.strictObject({ app_key: AppKey });
2573
- var AppsSpendResult = import_zod30.z.strictObject({
3241
+ var SpendHelper = import_zod31.z.strictObject({ model: import_zod31.z.string().max(120), steps: nonNegInt, over_steps: import_zod31.z.boolean(), description: import_zod31.z.string().max(400) });
3242
+ var SpendLive = import_zod31.z.strictObject({ id: ChatId, title: import_zod31.z.string().max(1e3), window: import_zod31.z.string().max(64).nullable(), helpers: import_zod31.z.array(SpendHelper).max(200) });
3243
+ var SpendIdleScope = import_zod31.z.strictObject({ count: nonNegInt, tokens: nonNegInt, cost: import_zod31.z.number(), avoidable: import_zod31.z.number() });
3244
+ var SpendIdle = import_zod31.z.strictObject({ id: ChatId, chat: import_zod31.z.string().max(1e3), who: import_zod31.z.string().max(400), today: SpendIdleScope, week: SpendIdleScope, last_ms: epochMs });
3245
+ var SpendStart = import_zod31.z.strictObject({ repo: import_zod31.z.string().max(200), count: nonNegInt, median: nonNegInt, latest: import_zod31.z.array(nonNegInt).max(20), alarm: import_zod31.z.string().max(400).nullable() });
3246
+ var SpendDay = import_zod31.z.strictObject({ date: import_zod31.z.string().regex(/^\d{4}-\d{2}-\d{2}$/), main: import_zod31.z.number(), helpers: import_zod31.z.number() });
3247
+ var AppsSpendParams = import_zod31.z.strictObject({ app_key: AppKey });
3248
+ var AppsSpendResult = import_zod31.z.strictObject({
2574
3249
  app_key: AppKey,
2575
3250
  /** False while older chats are still being read. */
2576
- complete: import_zod30.z.boolean(),
2577
- today_total: import_zod30.z.number(),
2578
- week_total: import_zod30.z.number(),
2579
- idle_today: import_zod30.z.number(),
2580
- idle_week: import_zod30.z.number(),
3251
+ complete: import_zod31.z.boolean(),
3252
+ today_total: import_zod31.z.number(),
3253
+ week_total: import_zod31.z.number(),
3254
+ idle_today: import_zod31.z.number(),
3255
+ idle_week: import_zod31.z.number(),
2581
3256
  /** Models with no known list price. */
2582
- unpriced: import_zod30.z.array(import_zod30.z.string().max(120)).max(100),
3257
+ unpriced: import_zod31.z.array(import_zod31.z.string().max(120)).max(100),
2583
3258
  /** Helpers past their step budget, unusual starting sizes. */
2584
- alarms: import_zod30.z.array(import_zod30.z.string().max(400)).max(200),
2585
- live: import_zod30.z.array(SpendLive).max(200),
2586
- accounts: import_zod30.z.array(SpendAccount).max(200),
2587
- models: import_zod30.z.array(SpendModel).max(100),
3259
+ alarms: import_zod31.z.array(import_zod31.z.string().max(400)).max(200),
3260
+ live: import_zod31.z.array(SpendLive).max(200),
3261
+ accounts: import_zod31.z.array(SpendAccount).max(200),
3262
+ models: import_zod31.z.array(SpendModel).max(100),
2588
3263
  /** (1.24) The last 7 days, oldest first (today last). */
2589
- days: import_zod30.z.array(SpendDay).max(14).optional(),
2590
- chats: import_zod30.z.array(SpendChat).max(500),
2591
- idle: import_zod30.z.array(SpendIdle).max(500),
2592
- starts: import_zod30.z.array(SpendStart).max(200)
2593
- });
2594
- var AppsSyncStatusParams = import_zod30.z.strictObject({ app_key: AppKey });
2595
- var AppsSyncStatusResult = import_zod30.z.strictObject({
2596
- healthy: import_zod30.z.boolean(),
2597
- summary: import_zod30.z.string().max(400),
2598
- problems: import_zod30.z.array(import_zod30.z.string().max(400)).max(200),
2599
- warnings: import_zod30.z.array(import_zod30.z.string().max(400)).max(200),
3264
+ days: import_zod31.z.array(SpendDay).max(14).optional(),
3265
+ chats: import_zod31.z.array(SpendChat).max(500),
3266
+ idle: import_zod31.z.array(SpendIdle).max(500),
3267
+ starts: import_zod31.z.array(SpendStart).max(200)
3268
+ });
3269
+ var AppsSyncStatusParams = import_zod31.z.strictObject({ app_key: AppKey });
3270
+ var AppsSyncStatusResult = import_zod31.z.strictObject({
3271
+ healthy: import_zod31.z.boolean(),
3272
+ summary: import_zod31.z.string().max(400),
3273
+ problems: import_zod31.z.array(import_zod31.z.string().max(400)).max(200),
3274
+ warnings: import_zod31.z.array(import_zod31.z.string().max(400)).max(200),
2600
3275
  /** Accounts seen with no saved name yet (Save account names fixes them). */
2601
- unnamed_accounts: import_zod30.z.array(import_zod30.z.string().max(80)).max(200),
3276
+ unnamed_accounts: import_zod31.z.array(import_zod31.z.string().max(80)).max(200),
2602
3277
  /** The full report. */
2603
- output: import_zod30.z.string().max(2e5)
2604
- });
2605
- var AppsSyncRunParams = import_zod30.z.strictObject({ app_key: AppKey });
2606
- var AppsWindowsProcessesParams = import_zod30.z.strictObject({ app_key: AppKey });
2607
- var AppsWindowsProcessesResult = import_zod30.z.strictObject({ processes: import_zod30.z.array(import_zod30.z.string().max(2e3)).max(2e3) });
2608
- var AppsWindowsAddParams = import_zod30.z.strictObject({ app_key: AppKey, window: ChatPlace, email: import_zod30.z.string().min(3).max(320) });
2609
- var AppsWindowsSaveNamesParams = import_zod30.z.strictObject({ app_key: AppKey });
2610
- var AppsWindowsUpdateStateParams = import_zod30.z.strictObject({ app_key: AppKey });
2611
- var AppsWindowsUpdateStateResult = import_zod30.z.strictObject({
3278
+ output: import_zod31.z.string().max(2e5)
3279
+ });
3280
+ var AppsSyncRunParams = import_zod31.z.strictObject({ app_key: AppKey });
3281
+ var AppsWindowsProcessesParams = import_zod31.z.strictObject({ app_key: AppKey });
3282
+ var AppsWindowsProcessesResult = import_zod31.z.strictObject({ processes: import_zod31.z.array(import_zod31.z.string().max(2e3)).max(2e3) });
3283
+ var AppsWindowsAddParams = import_zod31.z.strictObject({ app_key: AppKey, window: ChatPlace, email: import_zod31.z.string().min(3).max(320) });
3284
+ var AppsWindowsSaveNamesParams = import_zod31.z.strictObject({ app_key: AppKey });
3285
+ var AppsWindowsUpdateStateParams = import_zod31.z.strictObject({ app_key: AppKey });
3286
+ var AppsWindowsUpdateStateResult = import_zod31.z.strictObject({
2612
3287
  app_key: AppKey,
2613
- pending: import_zod30.z.boolean(),
3288
+ pending: import_zod31.z.boolean(),
2614
3289
  /** The downloaded release's name (Claude: "Claude 2.31226.1"), when the app's log names it. */
2615
- version: import_zod30.z.string().max(120).nullable(),
3290
+ version: import_zod31.z.string().max(120).nullable(),
2616
3291
  /** When the update became pending (the download's time), when known. */
2617
3292
  since_ms: epochMs.nullable(),
2618
3293
  /** Windows open when the update became pending (or last seen open) that are closed now. */
2619
- closed: import_zod30.z.array(ChatPlace).max(200),
3294
+ closed: import_zod31.z.array(ChatPlace).max(200),
2620
3295
  /**
2621
3296
  * Since 1.27: the windows in `closed` that the update itself quit (the app's log records a quit for
2622
3297
  * the update within a minute of when each was last seen running). Absent: not known.
2623
3298
  */
2624
- closed_by_update: import_zod30.z.array(ChatPlace).max(200).optional()
3299
+ closed_by_update: import_zod31.z.array(ChatPlace).max(200).optional()
2625
3300
  });
2626
- var AppsWindowsReopenParams = import_zod30.z.strictObject({ app_key: AppKey, windows: import_zod30.z.array(ChatPlace).min(1).max(200) });
2627
- var AppsWindowsReopenResult = import_zod30.z.strictObject({ message: import_zod30.z.string().max(400), opened: import_zod30.z.array(ChatPlace).max(200) });
2628
- var AppsWindowsUpdateAndReopenParams = import_zod30.z.strictObject({ app_key: AppKey, force: import_zod30.z.boolean().default(false), dry_run: import_zod30.z.boolean().default(false) });
2629
- var AppsWindowsUpdateAndReopenResult = import_zod30.z.strictObject({
2630
- message: import_zod30.z.string().max(400),
3301
+ var AppsWindowsReopenParams = import_zod31.z.strictObject({ app_key: AppKey, windows: import_zod31.z.array(ChatPlace).min(1).max(200) });
3302
+ var AppsWindowsReopenResult = import_zod31.z.strictObject({ message: import_zod31.z.string().max(400), opened: import_zod31.z.array(ChatPlace).max(200) });
3303
+ var AppsWindowsUpdateAndReopenParams = import_zod31.z.strictObject({ app_key: AppKey, force: import_zod31.z.boolean().default(false), dry_run: import_zod31.z.boolean().default(false) });
3304
+ var AppsWindowsUpdateAndReopenResult = import_zod31.z.strictObject({
3305
+ message: import_zod31.z.string().max(400),
2631
3306
  /** Windows quit (with dry_run: to be quit). */
2632
- quit: import_zod30.z.array(ChatPlace).max(200),
3307
+ quit: import_zod31.z.array(ChatPlace).max(200),
2633
3308
  /** Windows reopened (with dry_run: to be reopened), main first. */
2634
- reopened: import_zod30.z.array(ChatPlace).max(200),
3309
+ reopened: import_zod31.z.array(ChatPlace).max(200),
2635
3310
  /** The version installed, null when the install did not happen (or dry_run). */
2636
- installed_version: import_zod30.z.string().max(64).nullable()
3311
+ installed_version: import_zod31.z.string().max(64).nullable()
2637
3312
  });
2638
3313
 
2639
3314
  // src/schema/browser.ts
2640
- var import_zod31 = require("zod");
2641
- var BrowserClientInstance = import_zod31.z.string().min(1).max(64).regex(/^[A-Za-z0-9_.:-]+$/);
2642
- var BrowserKind = import_zod31.z.enum(["chrome", "edge", "brave", "arc", "opera", "vivaldi", "chromium", "firefox", "other"]);
2643
- var BrowserSessionState = import_zod31.z.enum(["connected", "different_account", "extension_signed_out", "device_signed_out", "unverified"]);
2644
- var BrowserSession = import_zod31.z.strictObject({
3315
+ var import_zod32 = require("zod");
3316
+ var BrowserClientInstance = import_zod32.z.string().min(1).max(64).regex(/^[A-Za-z0-9_.:-]+$/);
3317
+ var BrowserKind = import_zod32.z.enum(["chrome", "edge", "brave", "arc", "opera", "vivaldi", "chromium", "firefox", "other"]);
3318
+ var BrowserSessionState = import_zod32.z.enum(["connected", "different_account", "extension_signed_out", "device_signed_out", "unverified"]);
3319
+ var BrowserSession = import_zod32.z.strictObject({
2645
3320
  client_instance: BrowserClientInstance,
2646
3321
  /** What the person sees ("Chrome — Work"), set by the extension. */
2647
- client_label: import_zod31.z.string().min(1).max(128),
3322
+ client_label: import_zod32.z.string().min(1).max(128),
2648
3323
  browser: BrowserKind,
2649
- extension_version: import_zod31.z.string().min(1).max(32),
3324
+ extension_version: import_zod32.z.string().min(1).max(32),
2650
3325
  state: BrowserSessionState,
2651
3326
  /** True only for `connected`: an agent's call can reach this session. */
2652
- routable: import_zod31.z.boolean(),
3327
+ routable: import_zod32.z.boolean(),
2653
3328
  /** The extension's account email from its token (null when signed out or unknown). */
2654
- account_email: import_zod31.z.string().max(320).nullable(),
3329
+ account_email: import_zod32.z.string().max(320).nullable(),
2655
3330
  connected_at_ms: epochMs,
2656
3331
  last_call_at_ms: epochMs.nullable(),
2657
3332
  calls: nonNegInt,
@@ -2660,687 +3335,687 @@ var BrowserSession = import_zod31.z.strictObject({
2660
3335
  p50_ms: nonNegInt.nullable(),
2661
3336
  p95_ms: nonNegInt.nullable(),
2662
3337
  /** A call is waiting for the person to confirm it in the browser. */
2663
- awaiting_confirmation: import_zod31.z.boolean()
3338
+ awaiting_confirmation: import_zod32.z.boolean()
2664
3339
  });
2665
- var BrowserRegisterParams = import_zod31.z.strictObject({
3340
+ var BrowserRegisterParams = import_zod32.z.strictObject({
2666
3341
  client_instance: BrowserClientInstance,
2667
- client_label: import_zod31.z.string().min(1).max(128),
3342
+ client_label: import_zod32.z.string().min(1).max(128),
2668
3343
  browser: BrowserKind,
2669
- extension_version: import_zod31.z.string().min(1).max(32),
3344
+ extension_version: import_zod32.z.string().min(1).max(32),
2670
3345
  /** The extension's current AI Matrx access token, checked against the device owner; null when signed out. */
2671
- account_token: import_zod31.z.string().min(16).max(8192).nullable()
3346
+ account_token: import_zod32.z.string().min(16).max(8192).nullable()
2672
3347
  });
2673
- var BrowserRegisterResult = import_zod31.z.strictObject({ session: BrowserSession });
2674
- var BrowserCallError = import_zod31.z.strictObject({
2675
- message: import_zod31.z.string().max(1e3),
3348
+ var BrowserRegisterResult = import_zod32.z.strictObject({ session: BrowserSession });
3349
+ var BrowserCallError = import_zod32.z.strictObject({
3350
+ message: import_zod32.z.string().max(1e3),
2676
3351
  /** The extension's own error code, when it has one ("tool_not_found", "denied"). */
2677
- code: import_zod31.z.string().max(64).nullable()
3352
+ code: import_zod32.z.string().max(64).nullable()
2678
3353
  });
2679
- var BrowserResultParams = import_zod31.z.strictObject({
2680
- call_id: import_zod31.z.string().min(1).max(64),
2681
- ok: import_zod31.z.boolean(),
3354
+ var BrowserResultParams = import_zod32.z.strictObject({
3355
+ call_id: import_zod32.z.string().min(1).max(64),
3356
+ ok: import_zod32.z.boolean(),
2682
3357
  /** The tool's result when ok (any JSON). */
2683
- result: import_zod31.z.unknown(),
3358
+ result: import_zod32.z.unknown(),
2684
3359
  error: BrowserCallError.nullable()
2685
3360
  });
2686
- var BrowserResultResult = import_zod31.z.strictObject({ accepted: import_zod31.z.boolean() });
2687
- var BrowserCallPhase = import_zod31.z.enum(["awaiting_confirmation", "running"]);
2688
- var BrowserProgressParams = import_zod31.z.strictObject({ call_id: import_zod31.z.string().min(1).max(64), phase: BrowserCallPhase });
2689
- var BrowserProgressResult = import_zod31.z.strictObject({ accepted: import_zod31.z.boolean() });
2690
- var BrowserSessionsParams = import_zod31.z.strictObject({});
2691
- var BrowserSessionsResult = import_zod31.z.strictObject({
3361
+ var BrowserResultResult = import_zod32.z.strictObject({ accepted: import_zod32.z.boolean() });
3362
+ var BrowserCallPhase = import_zod32.z.enum(["awaiting_confirmation", "running"]);
3363
+ var BrowserProgressParams = import_zod32.z.strictObject({ call_id: import_zod32.z.string().min(1).max(64), phase: BrowserCallPhase });
3364
+ var BrowserProgressResult = import_zod32.z.strictObject({ accepted: import_zod32.z.boolean() });
3365
+ var BrowserSessionsParams = import_zod32.z.strictObject({});
3366
+ var BrowserSessionsResult = import_zod32.z.strictObject({
2692
3367
  /** The person's Browser connection switch. Off: no pairing, no extension sessions. */
2693
- enabled: import_zod31.z.boolean(),
3368
+ enabled: import_zod32.z.boolean(),
2694
3369
  /** Whether Matrx 2 is signed in (without an owner no session is routable). */
2695
- owner_signed_in: import_zod31.z.boolean(),
2696
- sessions: import_zod31.z.array(BrowserSession).max(64)
2697
- });
2698
- var BrowserDisconnectParams = import_zod31.z.strictObject({ client_instance: BrowserClientInstance });
2699
- var BrowserDisconnectResult = import_zod31.z.strictObject({ disconnected: import_zod31.z.boolean() });
2700
- var BrowserSetEnabledParams = import_zod31.z.strictObject({ enabled: import_zod31.z.boolean() });
2701
- var BrowserSetEnabledResult = import_zod31.z.strictObject({ enabled: import_zod31.z.boolean() });
2702
- var BrowserPairCodeParams = import_zod31.z.strictObject({});
2703
- var BrowserPairCodeResult = import_zod31.z.strictObject({ code: import_zod31.z.string().min(16).max(128) });
2704
- var BrowserPairResetParams = import_zod31.z.strictObject({});
2705
- var BrowserCallParams = import_zod31.z.strictObject({
2706
- tool: import_zod31.z.string().min(1).max(96).regex(/^[a-z][a-z0-9_]*$/),
2707
- args: import_zod31.z.record(import_zod31.z.string(), import_zod31.z.unknown()),
3370
+ owner_signed_in: import_zod32.z.boolean(),
3371
+ sessions: import_zod32.z.array(BrowserSession).max(64)
3372
+ });
3373
+ var BrowserDisconnectParams = import_zod32.z.strictObject({ client_instance: BrowserClientInstance });
3374
+ var BrowserDisconnectResult = import_zod32.z.strictObject({ disconnected: import_zod32.z.boolean() });
3375
+ var BrowserSetEnabledParams = import_zod32.z.strictObject({ enabled: import_zod32.z.boolean() });
3376
+ var BrowserSetEnabledResult = import_zod32.z.strictObject({ enabled: import_zod32.z.boolean() });
3377
+ var BrowserPairCodeParams = import_zod32.z.strictObject({});
3378
+ var BrowserPairCodeResult = import_zod32.z.strictObject({ code: import_zod32.z.string().min(16).max(128) });
3379
+ var BrowserPairResetParams = import_zod32.z.strictObject({});
3380
+ var BrowserCallParams = import_zod32.z.strictObject({
3381
+ tool: import_zod32.z.string().min(1).max(96).regex(/^[a-z][a-z0-9_]*$/),
3382
+ args: import_zod32.z.record(import_zod32.z.string(), import_zod32.z.unknown()),
2708
3383
  /** Which session; default: the most recently active routable one (BROWSER ambiguity → CONFLICT). */
2709
3384
  client_instance: BrowserClientInstance.optional(),
2710
3385
  /** How long to wait, including a person's confirmation; default 120 s. */
2711
- timeout_ms: import_zod31.z.int().min(1e3).max(6e5).optional()
3386
+ timeout_ms: import_zod32.z.int().min(1e3).max(6e5).optional()
2712
3387
  });
2713
- var BrowserCallResult = import_zod31.z.strictObject({
3388
+ var BrowserCallResult = import_zod32.z.strictObject({
2714
3389
  client_instance: BrowserClientInstance,
2715
- result: import_zod31.z.unknown(),
3390
+ result: import_zod32.z.unknown(),
2716
3391
  duration_ms: nonNegInt
2717
3392
  });
2718
- var BrowserToolMetricsParams = import_zod31.z.strictObject({ client_instance: BrowserClientInstance });
2719
- var BrowserToolMetric = import_zod31.z.strictObject({
2720
- tool: import_zod31.z.string().max(256),
3393
+ var BrowserToolMetricsParams = import_zod32.z.strictObject({ client_instance: BrowserClientInstance });
3394
+ var BrowserToolMetric = import_zod32.z.strictObject({
3395
+ tool: import_zod32.z.string().max(256),
2721
3396
  calls: nonNegInt,
2722
3397
  errors: nonNegInt,
2723
3398
  /** Over the last 200 answered calls; null before the first answer. */
2724
3399
  p50_ms: nonNegInt.nullable(),
2725
3400
  p95_ms: nonNegInt.nullable(),
2726
3401
  last_call_at_ms: epochMs.nullable(),
2727
- last_error: import_zod31.z.string().max(2048).nullable()
3402
+ last_error: import_zod32.z.string().max(2048).nullable()
2728
3403
  });
2729
- var BrowserToolMetricsResult = import_zod31.z.strictObject({ client_instance: import_zod31.z.string(), tools: import_zod31.z.array(BrowserToolMetric) });
2730
- var BrowserResetCountersParams = import_zod31.z.strictObject({ client_instance: BrowserClientInstance });
2731
- var BrowserResetCountersResult = import_zod31.z.strictObject({ reset: import_zod31.z.boolean() });
2732
- var BrowserLogParams = import_zod31.z.strictObject({
3404
+ var BrowserToolMetricsResult = import_zod32.z.strictObject({ client_instance: import_zod32.z.string(), tools: import_zod32.z.array(BrowserToolMetric) });
3405
+ var BrowserResetCountersParams = import_zod32.z.strictObject({ client_instance: BrowserClientInstance });
3406
+ var BrowserResetCountersResult = import_zod32.z.strictObject({ reset: import_zod32.z.boolean() });
3407
+ var BrowserLogParams = import_zod32.z.strictObject({
2733
3408
  /** Only messages after this seq (0: from the oldest kept; the core keeps the last 500). */
2734
3409
  after_seq: nonNegInt.default(0),
2735
- limit: import_zod31.z.int().min(1).max(500).default(500)
3410
+ limit: import_zod32.z.int().min(1).max(500).default(500)
2736
3411
  });
2737
- var BrowserLogMessage = import_zod31.z.strictObject({
3412
+ var BrowserLogMessage = import_zod32.z.strictObject({
2738
3413
  seq: nonNegInt,
2739
3414
  at_ms: epochMs,
2740
- direction: import_zod31.z.enum(["to_browser", "from_browser", "core"]),
2741
- client_instance: import_zod31.z.string(),
2742
- kind: import_zod31.z.enum(["register", "invoke", "result", "progress", "timeout", "closed"]),
2743
- tool: import_zod31.z.string().nullable(),
2744
- call_id: import_zod31.z.string().nullable(),
2745
- ok: import_zod31.z.boolean().nullable(),
2746
- detail: import_zod31.z.string().max(1024)
2747
- });
2748
- var BrowserLogResult = import_zod31.z.strictObject({
2749
- messages: import_zod31.z.array(BrowserLogMessage),
3415
+ direction: import_zod32.z.enum(["to_browser", "from_browser", "core"]),
3416
+ client_instance: import_zod32.z.string(),
3417
+ kind: import_zod32.z.enum(["register", "invoke", "result", "progress", "timeout", "closed"]),
3418
+ tool: import_zod32.z.string().nullable(),
3419
+ call_id: import_zod32.z.string().nullable(),
3420
+ ok: import_zod32.z.boolean().nullable(),
3421
+ detail: import_zod32.z.string().max(1024)
3422
+ });
3423
+ var BrowserLogResult = import_zod32.z.strictObject({
3424
+ messages: import_zod32.z.array(BrowserLogMessage),
2750
3425
  /** The newest seq the core has written (pass it back as after_seq to follow the log). */
2751
3426
  last_seq: nonNegInt
2752
3427
  });
2753
- var BrowserInvokeEvent = import_zod31.z.strictObject({
2754
- call_id: import_zod31.z.string().min(1).max(64),
2755
- tool: import_zod31.z.string().min(1).max(96),
2756
- args: import_zod31.z.record(import_zod31.z.string(), import_zod31.z.unknown()),
3428
+ var BrowserInvokeEvent = import_zod32.z.strictObject({
3429
+ call_id: import_zod32.z.string().min(1).max(64),
3430
+ tool: import_zod32.z.string().min(1).max(96),
3431
+ args: import_zod32.z.record(import_zod32.z.string(), import_zod32.z.unknown()),
2757
3432
  deadline_ms: epochMs
2758
3433
  });
2759
- var BrowserSessionsChangedEvent = import_zod31.z.strictObject({ count: nonNegInt, enabled: import_zod31.z.boolean() });
2760
- var BrowserProgressEvent = import_zod31.z.strictObject({
2761
- call_id: import_zod31.z.string().min(1).max(64),
3434
+ var BrowserSessionsChangedEvent = import_zod32.z.strictObject({ count: nonNegInt, enabled: import_zod32.z.boolean() });
3435
+ var BrowserProgressEvent = import_zod32.z.strictObject({
3436
+ call_id: import_zod32.z.string().min(1).max(64),
2762
3437
  client_instance: BrowserClientInstance,
2763
3438
  phase: BrowserCallPhase
2764
3439
  });
2765
- var DesktopHealth = import_zod31.z.strictObject({
2766
- status: import_zod31.z.literal("ok"),
2767
- service: import_zod31.z.literal("matrx-desktop"),
2768
- version: import_zod31.z.string().max(32),
2769
- protocol_version: import_zod31.z.string().max(16),
2770
- ws_path: import_zod31.z.literal("/v1/connect"),
2771
- device_id: import_zod31.z.string().max(64),
2772
- browser_connection: import_zod31.z.enum(["on", "off"])
2773
- });
2774
- var BrowserPairRequest = import_zod31.z.strictObject({ client_instance: BrowserClientInstance });
2775
- var BrowserPairResult = import_zod31.z.strictObject({ pair_token: import_zod31.z.string().min(16).max(128), ws_path: import_zod31.z.literal("/v1/connect") });
3440
+ var DesktopHealth = import_zod32.z.strictObject({
3441
+ status: import_zod32.z.literal("ok"),
3442
+ service: import_zod32.z.literal("matrx-desktop"),
3443
+ version: import_zod32.z.string().max(32),
3444
+ protocol_version: import_zod32.z.string().max(16),
3445
+ ws_path: import_zod32.z.literal("/v1/connect"),
3446
+ device_id: import_zod32.z.string().max(64),
3447
+ browser_connection: import_zod32.z.enum(["on", "off"])
3448
+ });
3449
+ var BrowserPairRequest = import_zod32.z.strictObject({ client_instance: BrowserClientInstance });
3450
+ var BrowserPairResult = import_zod32.z.strictObject({ pair_token: import_zod32.z.string().min(16).max(128), ws_path: import_zod32.z.literal("/v1/connect") });
2776
3451
 
2777
3452
  // src/schema/net.ts
2778
- var import_zod32 = require("zod");
2779
- var NetInfoParams = import_zod32.z.strictObject({});
2780
- var NetAddress = import_zod32.z.strictObject({
2781
- address: import_zod32.z.string(),
2782
- family: import_zod32.z.enum(["ipv4", "ipv6"]),
2783
- netmask: import_zod32.z.string().nullable(),
3453
+ var import_zod33 = require("zod");
3454
+ var NetInfoParams = import_zod33.z.strictObject({});
3455
+ var NetAddress = import_zod33.z.strictObject({
3456
+ address: import_zod33.z.string(),
3457
+ family: import_zod33.z.enum(["ipv4", "ipv6"]),
3458
+ netmask: import_zod33.z.string().nullable(),
2784
3459
  /** CIDR form ("192.168.1.20/24"); null where the OS gives no prefix. */
2785
- cidr: import_zod32.z.string().nullable()
3460
+ cidr: import_zod33.z.string().nullable()
2786
3461
  });
2787
- var NetInterface = import_zod32.z.strictObject({
2788
- name: import_zod32.z.string(),
2789
- mac: import_zod32.z.string().nullable(),
3462
+ var NetInterface = import_zod33.z.strictObject({
3463
+ name: import_zod33.z.string(),
3464
+ mac: import_zod33.z.string().nullable(),
2790
3465
  /** Loopback and other internal interfaces. */
2791
- internal: import_zod32.z.boolean(),
2792
- addresses: import_zod32.z.array(NetAddress)
3466
+ internal: import_zod33.z.boolean(),
3467
+ addresses: import_zod33.z.array(NetAddress)
2793
3468
  });
2794
- var NetInfoResult = import_zod32.z.strictObject({
2795
- hostname: import_zod32.z.string(),
2796
- interfaces: import_zod32.z.array(NetInterface),
3469
+ var NetInfoResult = import_zod33.z.strictObject({
3470
+ hostname: import_zod33.z.string(),
3471
+ interfaces: import_zod33.z.array(NetInterface),
2797
3472
  /** The default route's gateway; null when the OS does not say (or there is none). */
2798
- gateway: import_zod32.z.string().nullable(),
3473
+ gateway: import_zod33.z.string().nullable(),
2799
3474
  /** The DNS servers the OS uses; empty when it does not say. */
2800
- dns: import_zod32.z.array(import_zod32.z.string())
3475
+ dns: import_zod33.z.array(import_zod33.z.string())
2801
3476
  });
2802
- var NetWifiParams = import_zod32.z.strictObject({});
2803
- var NetWifiNetwork = import_zod32.z.strictObject({
3477
+ var NetWifiParams = import_zod33.z.strictObject({});
3478
+ var NetWifiNetwork = import_zod33.z.strictObject({
2804
3479
  /** null: the OS hides the name (macOS without Location Services for this app). */
2805
- ssid: import_zod32.z.string().nullable(),
3480
+ ssid: import_zod33.z.string().nullable(),
2806
3481
  /** dBm; null where the OS does not say. */
2807
- rssi: import_zod32.z.int().nullable(),
2808
- channel: import_zod32.z.string().nullable(),
2809
- security: import_zod32.z.string().nullable()
3482
+ rssi: import_zod33.z.int().nullable(),
3483
+ channel: import_zod33.z.string().nullable(),
3484
+ security: import_zod33.z.string().nullable()
2810
3485
  });
2811
- var NetWifiResult = import_zod32.z.strictObject({
3486
+ var NetWifiResult = import_zod33.z.strictObject({
2812
3487
  /** Whether the computer has a Wi-Fi interface at all. */
2813
- available: import_zod32.z.boolean(),
3488
+ available: import_zod33.z.boolean(),
2814
3489
  /** The network the computer is on; null when it is on none. */
2815
3490
  current: NetWifiNetwork.nullable(),
2816
3491
  /** Networks in range (may be empty where the OS lists none to apps). */
2817
- networks: import_zod32.z.array(NetWifiNetwork)
3492
+ networks: import_zod33.z.array(NetWifiNetwork)
2818
3493
  });
2819
- var NetBluetoothParams = import_zod32.z.strictObject({});
2820
- var NetBluetoothDevice = import_zod32.z.strictObject({
2821
- name: import_zod32.z.string(),
2822
- address: import_zod32.z.string().nullable(),
2823
- connected: import_zod32.z.boolean(),
3494
+ var NetBluetoothParams = import_zod33.z.strictObject({});
3495
+ var NetBluetoothDevice = import_zod33.z.strictObject({
3496
+ name: import_zod33.z.string(),
3497
+ address: import_zod33.z.string().nullable(),
3498
+ connected: import_zod33.z.boolean(),
2824
3499
  /** What it is, in the OS's words ("Headphones", "Keyboard"); null where it does not say. */
2825
- kind: import_zod32.z.string().nullable(),
3500
+ kind: import_zod33.z.string().nullable(),
2826
3501
  /** Battery percent, where the OS reports it. */
2827
- battery: import_zod32.z.int().min(0).max(100).nullable()
3502
+ battery: import_zod33.z.int().min(0).max(100).nullable()
2828
3503
  });
2829
- var NetBluetoothResult = import_zod32.z.strictObject({
3504
+ var NetBluetoothResult = import_zod33.z.strictObject({
2830
3505
  /** Bluetooth is on; null where the OS does not say. */
2831
- powered: import_zod32.z.boolean().nullable(),
2832
- devices: import_zod32.z.array(NetBluetoothDevice)
2833
- });
2834
- var NetDevicesParams = import_zod32.z.strictObject({});
2835
- var NetDevice = import_zod32.z.strictObject({
2836
- ip: import_zod32.z.string(),
2837
- mac: import_zod32.z.string().nullable(),
2838
- interface: import_zod32.z.string().nullable(),
3506
+ powered: import_zod33.z.boolean().nullable(),
3507
+ devices: import_zod33.z.array(NetBluetoothDevice)
3508
+ });
3509
+ var NetDevicesParams = import_zod33.z.strictObject({});
3510
+ var NetDevice = import_zod33.z.strictObject({
3511
+ ip: import_zod33.z.string(),
3512
+ mac: import_zod33.z.string().nullable(),
3513
+ interface: import_zod33.z.string().nullable(),
2839
3514
  /** The name the local network gives it (reverse DNS / mDNS), when the table carries one. */
2840
- hostname: import_zod32.z.string().nullable()
3515
+ hostname: import_zod33.z.string().nullable()
2841
3516
  });
2842
- var NetDevicesResult = import_zod32.z.strictObject({ devices: import_zod32.z.array(NetDevice) });
2843
- var NetMdnsParams = import_zod32.z.strictObject({
3517
+ var NetDevicesResult = import_zod33.z.strictObject({ devices: import_zod33.z.array(NetDevice) });
3518
+ var NetMdnsParams = import_zod33.z.strictObject({
2844
3519
  /** A service type ("_http._tcp"); absent lists the service types found. */
2845
- service_type: import_zod32.z.string().min(1).max(64).regex(/^_[A-Za-z0-9-]+\._(tcp|udp)$/).optional(),
3520
+ service_type: import_zod33.z.string().min(1).max(64).regex(/^_[A-Za-z0-9-]+\._(tcp|udp)$/).optional(),
2846
3521
  /** How long to listen. */
2847
- timeout_s: import_zod32.z.int().min(1).max(30).default(3)
3522
+ timeout_s: import_zod33.z.int().min(1).max(30).default(3)
2848
3523
  });
2849
- var NetMdnsService = import_zod32.z.strictObject({
2850
- name: import_zod32.z.string(),
2851
- type: import_zod32.z.string(),
2852
- domain: import_zod32.z.string(),
2853
- interface: import_zod32.z.string().nullable()
3524
+ var NetMdnsService = import_zod33.z.strictObject({
3525
+ name: import_zod33.z.string(),
3526
+ type: import_zod33.z.string(),
3527
+ domain: import_zod33.z.string(),
3528
+ interface: import_zod33.z.string().nullable()
2854
3529
  });
2855
- var NetMdnsResult = import_zod32.z.strictObject({ services: import_zod32.z.array(NetMdnsService) });
2856
- var NetScanParams = import_zod32.z.strictObject({
3530
+ var NetMdnsResult = import_zod33.z.strictObject({ services: import_zod33.z.array(NetMdnsService) });
3531
+ var NetScanParams = import_zod33.z.strictObject({
2857
3532
  /** A host name or address; a private or loopback address unless `allow_public`. */
2858
- host: import_zod32.z.string().min(1).max(253),
2859
- ports: import_zod32.z.array(import_zod32.z.int().min(1).max(65535)).min(1).max(1024),
2860
- timeout_ms: import_zod32.z.int().min(50).max(1e4).default(800),
3533
+ host: import_zod33.z.string().min(1).max(253),
3534
+ ports: import_zod33.z.array(import_zod33.z.int().min(1).max(65535)).min(1).max(1024),
3535
+ timeout_ms: import_zod33.z.int().min(50).max(1e4).default(800),
2861
3536
  /** Scanning a host on the public internet needs saying so. */
2862
- allow_public: import_zod32.z.boolean().default(false)
3537
+ allow_public: import_zod33.z.boolean().default(false)
2863
3538
  });
2864
- var NetScanResult = import_zod32.z.strictObject({
2865
- host: import_zod32.z.string(),
3539
+ var NetScanResult = import_zod33.z.strictObject({
3540
+ host: import_zod33.z.string(),
2866
3541
  /** The address the host resolved to. */
2867
- address: import_zod32.z.string(),
2868
- open: import_zod32.z.array(import_zod32.z.int().min(1).max(65535)),
3542
+ address: import_zod33.z.string(),
3543
+ open: import_zod33.z.array(import_zod33.z.int().min(1).max(65535)),
2869
3544
  closed: nonNegInt,
2870
3545
  elapsed_ms: nonNegInt
2871
3546
  });
2872
- var NetDownloadParams = import_zod32.z.strictObject({
2873
- url: import_zod32.z.string().min(1).max(8192).regex(/^https?:\/\//),
3547
+ var NetDownloadParams = import_zod33.z.strictObject({
3548
+ url: import_zod33.z.string().min(1).max(8192).regex(/^https?:\/\//),
2874
3549
  /** Where to save it: an absolute path (a folder keeps the URL's file name). */
2875
3550
  path: AbsPath,
2876
- overwrite: import_zod32.z.boolean().default(false),
2877
- timeout_s: import_zod32.z.int().min(1).max(3600).default(300),
3551
+ overwrite: import_zod33.z.boolean().default(false),
3552
+ timeout_s: import_zod33.z.int().min(1).max(3600).default(300),
2878
3553
  /** Refuse anything larger. */
2879
- max_bytes: import_zod32.z.int().min(1).max(10737418240).default(2147483648)
3554
+ max_bytes: import_zod33.z.int().min(1).max(10737418240).default(2147483648)
2880
3555
  });
2881
- var NetDownloadResult = import_zod32.z.strictObject({
2882
- path: import_zod32.z.string(),
3556
+ var NetDownloadResult = import_zod33.z.strictObject({
3557
+ path: import_zod33.z.string(),
2883
3558
  bytes: nonNegInt,
2884
- content_type: import_zod32.z.string().nullable(),
3559
+ content_type: import_zod33.z.string().nullable(),
2885
3560
  /** The final URL after redirects. */
2886
- url: import_zod32.z.string(),
3561
+ url: import_zod33.z.string(),
2887
3562
  elapsed_ms: nonNegInt
2888
3563
  });
2889
3564
 
2890
3565
  // src/schema/personal.ts
2891
- var import_zod33 = require("zod");
2892
- var Text = import_zod33.z.string().max(65536);
2893
- var AutomationScriptParams = import_zod33.z.strictObject({
3566
+ var import_zod34 = require("zod");
3567
+ var Text = import_zod34.z.string().max(65536);
3568
+ var AutomationScriptParams = import_zod34.z.strictObject({
2894
3569
  /** applescript and jxa: macOS (osascript); powershell: Windows (and pwsh where installed). */
2895
- language: import_zod33.z.enum(["applescript", "jxa", "powershell"]),
2896
- script: import_zod33.z.string().min(1).max(262144),
2897
- timeout_s: import_zod33.z.int().min(1).max(600).default(60)
2898
- });
2899
- var AutomationScriptResult = import_zod33.z.strictObject({
2900
- stdout: import_zod33.z.string(),
2901
- stderr: import_zod33.z.string(),
2902
- exit_code: import_zod33.z.int(),
2903
- timed_out: import_zod33.z.boolean(),
3570
+ language: import_zod34.z.enum(["applescript", "jxa", "powershell"]),
3571
+ script: import_zod34.z.string().min(1).max(262144),
3572
+ timeout_s: import_zod34.z.int().min(1).max(600).default(60)
3573
+ });
3574
+ var AutomationScriptResult = import_zod34.z.strictObject({
3575
+ stdout: import_zod34.z.string(),
3576
+ stderr: import_zod34.z.string(),
3577
+ exit_code: import_zod34.z.int(),
3578
+ timed_out: import_zod34.z.boolean(),
2904
3579
  /** stdout or stderr was cut at 1 MiB. */
2905
- truncated: import_zod33.z.boolean(),
3580
+ truncated: import_zod34.z.boolean(),
2906
3581
  elapsed_ms: nonNegInt
2907
3582
  });
2908
- var MailAccountsParams = import_zod33.z.strictObject({});
2909
- var MailAccount = import_zod33.z.strictObject({ name: import_zod33.z.string(), emails: import_zod33.z.array(import_zod33.z.string()), enabled: import_zod33.z.boolean() });
2910
- var MailAccountsResult = import_zod33.z.strictObject({ accounts: import_zod33.z.array(MailAccount) });
2911
- var MailListParams = import_zod33.z.strictObject({
3583
+ var MailAccountsParams = import_zod34.z.strictObject({});
3584
+ var MailAccount = import_zod34.z.strictObject({ name: import_zod34.z.string(), emails: import_zod34.z.array(import_zod34.z.string()), enabled: import_zod34.z.boolean() });
3585
+ var MailAccountsResult = import_zod34.z.strictObject({ accounts: import_zod34.z.array(MailAccount) });
3586
+ var MailListParams = import_zod34.z.strictObject({
2912
3587
  /** The account's name in Mail; absent: every account. */
2913
- account: import_zod33.z.string().min(1).max(256).optional(),
3588
+ account: import_zod34.z.string().min(1).max(256).optional(),
2914
3589
  /** The mailbox's name ("INBOX", "Sent Messages"). */
2915
- mailbox: import_zod33.z.string().min(1).max(256).default("INBOX"),
2916
- unread_only: import_zod33.z.boolean().default(false),
2917
- limit: import_zod33.z.int().min(1).max(200).default(25)
2918
- });
2919
- var MailMessage = import_zod33.z.strictObject({
2920
- id: import_zod33.z.string(),
2921
- subject: import_zod33.z.string(),
2922
- sender: import_zod33.z.string(),
3590
+ mailbox: import_zod34.z.string().min(1).max(256).default("INBOX"),
3591
+ unread_only: import_zod34.z.boolean().default(false),
3592
+ limit: import_zod34.z.int().min(1).max(200).default(25)
3593
+ });
3594
+ var MailMessage = import_zod34.z.strictObject({
3595
+ id: import_zod34.z.string(),
3596
+ subject: import_zod34.z.string(),
3597
+ sender: import_zod34.z.string(),
2923
3598
  received_at_ms: epochMs.nullable(),
2924
- read: import_zod33.z.boolean(),
2925
- account: import_zod33.z.string(),
2926
- mailbox: import_zod33.z.string(),
3599
+ read: import_zod34.z.boolean(),
3600
+ account: import_zod34.z.string(),
3601
+ mailbox: import_zod34.z.string(),
2927
3602
  /** The first lines of the message's text. */
2928
- preview: import_zod33.z.string()
3603
+ preview: import_zod34.z.string()
2929
3604
  });
2930
- var MailListResult = import_zod33.z.strictObject({ messages: import_zod33.z.array(MailMessage) });
2931
- var MailSendParams = import_zod33.z.strictObject({
2932
- to: import_zod33.z.array(import_zod33.z.string().min(3).max(320)).min(1).max(50),
2933
- cc: import_zod33.z.array(import_zod33.z.string().min(3).max(320)).max(50).default([]),
2934
- subject: import_zod33.z.string().max(998),
3605
+ var MailListResult = import_zod34.z.strictObject({ messages: import_zod34.z.array(MailMessage) });
3606
+ var MailSendParams = import_zod34.z.strictObject({
3607
+ to: import_zod34.z.array(import_zod34.z.string().min(3).max(320)).min(1).max(50),
3608
+ cc: import_zod34.z.array(import_zod34.z.string().min(3).max(320)).max(50).default([]),
3609
+ subject: import_zod34.z.string().max(998),
2935
3610
  body: Text,
2936
3611
  /** The sending account's address; absent: Mail's default. */
2937
- from: import_zod33.z.string().min(3).max(320).optional(),
3612
+ from: import_zod34.z.string().min(3).max(320).optional(),
2938
3613
  /** false leaves it open in Mail as a draft for the person to send. */
2939
- send: import_zod33.z.boolean().default(true)
2940
- });
2941
- var MailSendResult = import_zod33.z.strictObject({ sent: import_zod33.z.boolean() });
2942
- var MessagesChatsParams = import_zod33.z.strictObject({ limit: import_zod33.z.int().min(1).max(200).default(25) });
2943
- var MessagesChat = import_zod33.z.strictObject({
2944
- chat_id: import_zod33.z.string(),
2945
- name: import_zod33.z.string().nullable(),
2946
- participants: import_zod33.z.array(import_zod33.z.string()),
3614
+ send: import_zod34.z.boolean().default(true)
3615
+ });
3616
+ var MailSendResult = import_zod34.z.strictObject({ sent: import_zod34.z.boolean() });
3617
+ var MessagesChatsParams = import_zod34.z.strictObject({ limit: import_zod34.z.int().min(1).max(200).default(25) });
3618
+ var MessagesChat = import_zod34.z.strictObject({
3619
+ chat_id: import_zod34.z.string(),
3620
+ name: import_zod34.z.string().nullable(),
3621
+ participants: import_zod34.z.array(import_zod34.z.string()),
2947
3622
  last_message_at_ms: epochMs.nullable(),
2948
- service: import_zod33.z.string().nullable()
3623
+ service: import_zod34.z.string().nullable()
2949
3624
  });
2950
- var MessagesChatsResult = import_zod33.z.strictObject({ chats: import_zod33.z.array(MessagesChat) });
2951
- var MessagesListParams = import_zod33.z.strictObject({
3625
+ var MessagesChatsResult = import_zod34.z.strictObject({ chats: import_zod34.z.array(MessagesChat) });
3626
+ var MessagesListParams = import_zod34.z.strictObject({
2952
3627
  /** One chat (messages.chats' chat_id); absent: the newest across all. */
2953
- chat_id: import_zod33.z.string().min(1).max(512).optional(),
2954
- limit: import_zod33.z.int().min(1).max(500).default(50)
2955
- });
2956
- var MessagesMessage = import_zod33.z.strictObject({
2957
- id: import_zod33.z.string(),
2958
- chat_id: import_zod33.z.string().nullable(),
2959
- text: import_zod33.z.string(),
2960
- from_me: import_zod33.z.boolean(),
3628
+ chat_id: import_zod34.z.string().min(1).max(512).optional(),
3629
+ limit: import_zod34.z.int().min(1).max(500).default(50)
3630
+ });
3631
+ var MessagesMessage = import_zod34.z.strictObject({
3632
+ id: import_zod34.z.string(),
3633
+ chat_id: import_zod34.z.string().nullable(),
3634
+ text: import_zod34.z.string(),
3635
+ from_me: import_zod34.z.boolean(),
2961
3636
  /** The other person's handle (phone or email); null for the person's own messages. */
2962
- sender: import_zod33.z.string().nullable(),
3637
+ sender: import_zod34.z.string().nullable(),
2963
3638
  sent_at_ms: epochMs.nullable()
2964
3639
  });
2965
- var MessagesListResult = import_zod33.z.strictObject({ messages: import_zod33.z.array(MessagesMessage) });
2966
- var MessagesSendParams = import_zod33.z.strictObject({
3640
+ var MessagesListResult = import_zod34.z.strictObject({ messages: import_zod34.z.array(MessagesMessage) });
3641
+ var MessagesSendParams = import_zod34.z.strictObject({
2967
3642
  /** A phone number or email the person can message. */
2968
- to: import_zod33.z.string().min(3).max(320),
2969
- text: import_zod33.z.string().min(1).max(2e4)
3643
+ to: import_zod34.z.string().min(3).max(320),
3644
+ text: import_zod34.z.string().min(1).max(2e4)
2970
3645
  });
2971
- var MessagesSendResult = import_zod33.z.strictObject({ sent: import_zod33.z.boolean() });
2972
- var ContactsSearchParams = import_zod33.z.strictObject({
3646
+ var MessagesSendResult = import_zod34.z.strictObject({ sent: import_zod34.z.boolean() });
3647
+ var ContactsSearchParams = import_zod34.z.strictObject({
2973
3648
  /** Matched against names, organizations, emails and phone numbers. */
2974
- query: import_zod33.z.string().min(1).max(256),
2975
- limit: import_zod33.z.int().min(1).max(200).default(25)
3649
+ query: import_zod34.z.string().min(1).max(256),
3650
+ limit: import_zod34.z.int().min(1).max(200).default(25)
2976
3651
  });
2977
- var ContactLabeled = import_zod33.z.strictObject({ label: import_zod33.z.string().nullable(), value: import_zod33.z.string() });
2978
- var ContactSummary = import_zod33.z.strictObject({
2979
- id: import_zod33.z.string(),
2980
- name: import_zod33.z.string(),
2981
- organization: import_zod33.z.string().nullable(),
2982
- emails: import_zod33.z.array(ContactLabeled),
2983
- phones: import_zod33.z.array(ContactLabeled)
2984
- });
2985
- var ContactsSearchResult = import_zod33.z.strictObject({ contacts: import_zod33.z.array(ContactSummary) });
2986
- var ContactsGetParams = import_zod33.z.strictObject({ id: import_zod33.z.string().min(1).max(256) });
2987
- var ContactDetail = import_zod33.z.strictObject({
2988
- id: import_zod33.z.string(),
2989
- name: import_zod33.z.string(),
2990
- organization: import_zod33.z.string().nullable(),
2991
- job_title: import_zod33.z.string().nullable(),
2992
- emails: import_zod33.z.array(ContactLabeled),
2993
- phones: import_zod33.z.array(ContactLabeled),
2994
- addresses: import_zod33.z.array(ContactLabeled),
2995
- birthday: import_zod33.z.string().nullable(),
2996
- note: import_zod33.z.string().nullable()
2997
- });
2998
- var ContactsGetResult = import_zod33.z.strictObject({ contact: ContactDetail });
2999
- var CalendarListParams = import_zod33.z.strictObject({
3652
+ var ContactLabeled = import_zod34.z.strictObject({ label: import_zod34.z.string().nullable(), value: import_zod34.z.string() });
3653
+ var ContactSummary = import_zod34.z.strictObject({
3654
+ id: import_zod34.z.string(),
3655
+ name: import_zod34.z.string(),
3656
+ organization: import_zod34.z.string().nullable(),
3657
+ emails: import_zod34.z.array(ContactLabeled),
3658
+ phones: import_zod34.z.array(ContactLabeled)
3659
+ });
3660
+ var ContactsSearchResult = import_zod34.z.strictObject({ contacts: import_zod34.z.array(ContactSummary) });
3661
+ var ContactsGetParams = import_zod34.z.strictObject({ id: import_zod34.z.string().min(1).max(256) });
3662
+ var ContactDetail = import_zod34.z.strictObject({
3663
+ id: import_zod34.z.string(),
3664
+ name: import_zod34.z.string(),
3665
+ organization: import_zod34.z.string().nullable(),
3666
+ job_title: import_zod34.z.string().nullable(),
3667
+ emails: import_zod34.z.array(ContactLabeled),
3668
+ phones: import_zod34.z.array(ContactLabeled),
3669
+ addresses: import_zod34.z.array(ContactLabeled),
3670
+ birthday: import_zod34.z.string().nullable(),
3671
+ note: import_zod34.z.string().nullable()
3672
+ });
3673
+ var ContactsGetResult = import_zod34.z.strictObject({ contact: ContactDetail });
3674
+ var CalendarListParams = import_zod34.z.strictObject({
3000
3675
  from_ms: epochMs,
3001
3676
  to_ms: epochMs,
3002
3677
  /** One calendar's name; absent: every calendar. */
3003
- calendar: import_zod33.z.string().min(1).max(256).optional(),
3004
- limit: import_zod33.z.int().min(1).max(500).default(100)
3678
+ calendar: import_zod34.z.string().min(1).max(256).optional(),
3679
+ limit: import_zod34.z.int().min(1).max(500).default(100)
3005
3680
  });
3006
- var CalendarEvent = import_zod33.z.strictObject({
3007
- id: import_zod33.z.string(),
3008
- title: import_zod33.z.string(),
3681
+ var CalendarEvent = import_zod34.z.strictObject({
3682
+ id: import_zod34.z.string(),
3683
+ title: import_zod34.z.string(),
3009
3684
  start_ms: epochMs,
3010
3685
  end_ms: epochMs,
3011
- all_day: import_zod33.z.boolean(),
3012
- calendar: import_zod33.z.string(),
3013
- location: import_zod33.z.string().nullable(),
3014
- notes: import_zod33.z.string().nullable()
3015
- });
3016
- var CalendarListResult = import_zod33.z.strictObject({ events: import_zod33.z.array(CalendarEvent) });
3017
- var CalendarCreateParams = import_zod33.z.strictObject({
3018
- title: import_zod33.z.string().min(1).max(1024),
3686
+ all_day: import_zod34.z.boolean(),
3687
+ calendar: import_zod34.z.string(),
3688
+ location: import_zod34.z.string().nullable(),
3689
+ notes: import_zod34.z.string().nullable()
3690
+ });
3691
+ var CalendarListResult = import_zod34.z.strictObject({ events: import_zod34.z.array(CalendarEvent) });
3692
+ var CalendarCreateParams = import_zod34.z.strictObject({
3693
+ title: import_zod34.z.string().min(1).max(1024),
3019
3694
  start_ms: epochMs,
3020
3695
  end_ms: epochMs,
3021
- all_day: import_zod33.z.boolean().default(false),
3696
+ all_day: import_zod34.z.boolean().default(false),
3022
3697
  /** The calendar's name; absent: the first writable calendar. */
3023
- calendar: import_zod33.z.string().min(1).max(256).optional(),
3024
- location: import_zod33.z.string().max(1024).optional(),
3698
+ calendar: import_zod34.z.string().min(1).max(256).optional(),
3699
+ location: import_zod34.z.string().max(1024).optional(),
3025
3700
  notes: Text.optional()
3026
3701
  });
3027
- var CalendarCreateResult = import_zod33.z.strictObject({ id: import_zod33.z.string(), calendar: import_zod33.z.string() });
3028
- var RemindersListParams = import_zod33.z.strictObject({
3702
+ var CalendarCreateResult = import_zod34.z.strictObject({ id: import_zod34.z.string(), calendar: import_zod34.z.string() });
3703
+ var RemindersListParams = import_zod34.z.strictObject({
3029
3704
  /** One list's name; absent: every list. */
3030
- list: import_zod33.z.string().min(1).max(256).optional(),
3031
- include_completed: import_zod33.z.boolean().default(false),
3032
- limit: import_zod33.z.int().min(1).max(500).default(100)
3033
- });
3034
- var Reminder = import_zod33.z.strictObject({
3035
- id: import_zod33.z.string(),
3036
- title: import_zod33.z.string(),
3037
- list: import_zod33.z.string(),
3705
+ list: import_zod34.z.string().min(1).max(256).optional(),
3706
+ include_completed: import_zod34.z.boolean().default(false),
3707
+ limit: import_zod34.z.int().min(1).max(500).default(100)
3708
+ });
3709
+ var Reminder = import_zod34.z.strictObject({
3710
+ id: import_zod34.z.string(),
3711
+ title: import_zod34.z.string(),
3712
+ list: import_zod34.z.string(),
3038
3713
  due_ms: epochMs.nullable(),
3039
- completed: import_zod33.z.boolean(),
3040
- notes: import_zod33.z.string().nullable()
3714
+ completed: import_zod34.z.boolean(),
3715
+ notes: import_zod34.z.string().nullable()
3041
3716
  });
3042
- var RemindersListResult = import_zod33.z.strictObject({ reminders: import_zod33.z.array(Reminder) });
3043
- var RemindersCreateParams = import_zod33.z.strictObject({
3044
- title: import_zod33.z.string().min(1).max(1024),
3717
+ var RemindersListResult = import_zod34.z.strictObject({ reminders: import_zod34.z.array(Reminder) });
3718
+ var RemindersCreateParams = import_zod34.z.strictObject({
3719
+ title: import_zod34.z.string().min(1).max(1024),
3045
3720
  due_ms: epochMs.optional(),
3046
- list: import_zod33.z.string().min(1).max(256).optional(),
3721
+ list: import_zod34.z.string().min(1).max(256).optional(),
3047
3722
  notes: Text.optional()
3048
3723
  });
3049
- var RemindersCreateResult = import_zod33.z.strictObject({ id: import_zod33.z.string(), list: import_zod33.z.string() });
3050
- var PhotosSearchParams = import_zod33.z.strictObject({
3724
+ var RemindersCreateResult = import_zod34.z.strictObject({ id: import_zod34.z.string(), list: import_zod34.z.string() });
3725
+ var PhotosSearchParams = import_zod34.z.strictObject({
3051
3726
  /** Matched against file names, titles, descriptions and keywords; absent: the newest. */
3052
- query: import_zod33.z.string().min(1).max(256).optional(),
3727
+ query: import_zod34.z.string().min(1).max(256).optional(),
3053
3728
  from_ms: epochMs.optional(),
3054
3729
  to_ms: epochMs.optional(),
3055
- favorites_only: import_zod33.z.boolean().default(false),
3056
- limit: import_zod33.z.int().min(1).max(200).default(25)
3730
+ favorites_only: import_zod34.z.boolean().default(false),
3731
+ limit: import_zod34.z.int().min(1).max(200).default(25)
3057
3732
  });
3058
- var Photo = import_zod33.z.strictObject({
3059
- id: import_zod33.z.string(),
3060
- filename: import_zod33.z.string(),
3733
+ var Photo = import_zod34.z.strictObject({
3734
+ id: import_zod34.z.string(),
3735
+ filename: import_zod34.z.string(),
3061
3736
  taken_at_ms: epochMs.nullable(),
3062
3737
  width: nonNegInt.nullable(),
3063
3738
  height: nonNegInt.nullable(),
3064
- favorite: import_zod33.z.boolean(),
3065
- title: import_zod33.z.string().nullable()
3739
+ favorite: import_zod34.z.boolean(),
3740
+ title: import_zod34.z.string().nullable()
3066
3741
  });
3067
- var PhotosSearchResult = import_zod33.z.strictObject({ photos: import_zod33.z.array(Photo) });
3068
- var PhotosGetParams = import_zod33.z.strictObject({
3069
- id: import_zod33.z.string().min(1).max(256),
3742
+ var PhotosSearchResult = import_zod34.z.strictObject({ photos: import_zod34.z.array(Photo) });
3743
+ var PhotosGetParams = import_zod34.z.strictObject({
3744
+ id: import_zod34.z.string().min(1).max(256),
3070
3745
  /** Copy the original into a folder Matrx 2 owns and answer its path (then fs_read or desktop_documents reads it). */
3071
- export: import_zod33.z.boolean().default(false)
3746
+ export: import_zod34.z.boolean().default(false)
3072
3747
  });
3073
- var PhotosGetResult = import_zod33.z.strictObject({ photo: Photo, path: import_zod33.z.string().nullable() });
3074
- var LocationGetParams = import_zod33.z.strictObject({ timeout_s: import_zod33.z.int().min(1).max(60).default(15) });
3075
- var LocationGetResult = import_zod33.z.strictObject({
3076
- latitude: import_zod33.z.number().min(-90).max(90),
3077
- longitude: import_zod33.z.number().min(-180).max(180),
3748
+ var PhotosGetResult = import_zod34.z.strictObject({ photo: Photo, path: import_zod34.z.string().nullable() });
3749
+ var LocationGetParams = import_zod34.z.strictObject({ timeout_s: import_zod34.z.int().min(1).max(60).default(15) });
3750
+ var LocationGetResult = import_zod34.z.strictObject({
3751
+ latitude: import_zod34.z.number().min(-90).max(90),
3752
+ longitude: import_zod34.z.number().min(-180).max(180),
3078
3753
  /** Metres; null where the OS does not say. */
3079
- accuracy_m: import_zod33.z.number().min(0).nullable(),
3754
+ accuracy_m: import_zod34.z.number().min(0).nullable(),
3080
3755
  at_ms: epochMs,
3081
3756
  /** Who answered: the OS's own location service. */
3082
- source: import_zod33.z.enum(["corelocation", "windows", "geoclue"])
3757
+ source: import_zod34.z.enum(["corelocation", "windows", "geoclue"])
3083
3758
  });
3084
3759
 
3085
3760
  // src/schema/windows.ts
3086
- var import_zod34 = require("zod");
3087
- var RegistryKey = import_zod34.z.string().min(6).max(1024).regex(/^(HKLM|HKCU|HKCR|HKU|HKCC|HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER|HKEY_CLASSES_ROOT|HKEY_USERS|HKEY_CURRENT_CONFIG)(\\.*)?$/);
3088
- var RegistryValueType = import_zod34.z.enum(["REG_SZ", "REG_EXPAND_SZ", "REG_MULTI_SZ", "REG_DWORD", "REG_QWORD", "REG_BINARY", "REG_NONE"]);
3089
- var WindowsRegistryReadParams = import_zod34.z.strictObject({
3761
+ var import_zod35 = require("zod");
3762
+ var RegistryKey = import_zod35.z.string().min(6).max(1024).regex(/^(HKLM|HKCU|HKCR|HKU|HKCC|HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER|HKEY_CLASSES_ROOT|HKEY_USERS|HKEY_CURRENT_CONFIG)(\\.*)?$/);
3763
+ var RegistryValueType = import_zod35.z.enum(["REG_SZ", "REG_EXPAND_SZ", "REG_MULTI_SZ", "REG_DWORD", "REG_QWORD", "REG_BINARY", "REG_NONE"]);
3764
+ var WindowsRegistryReadParams = import_zod35.z.strictObject({
3090
3765
  key: RegistryKey,
3091
3766
  /** One value's name ("" is the key's default value); absent: every value and the subkeys. */
3092
- name: import_zod34.z.string().max(16383).optional()
3767
+ name: import_zod35.z.string().max(16383).optional()
3093
3768
  });
3094
- var RegistryValue = import_zod34.z.strictObject({ name: import_zod34.z.string(), type: RegistryValueType, data: import_zod34.z.string() });
3095
- var WindowsRegistryReadResult = import_zod34.z.strictObject({
3096
- key: import_zod34.z.string(),
3097
- exists: import_zod34.z.boolean(),
3098
- values: import_zod34.z.array(RegistryValue),
3099
- subkeys: import_zod34.z.array(import_zod34.z.string())
3769
+ var RegistryValue = import_zod35.z.strictObject({ name: import_zod35.z.string(), type: RegistryValueType, data: import_zod35.z.string() });
3770
+ var WindowsRegistryReadResult = import_zod35.z.strictObject({
3771
+ key: import_zod35.z.string(),
3772
+ exists: import_zod35.z.boolean(),
3773
+ values: import_zod35.z.array(RegistryValue),
3774
+ subkeys: import_zod35.z.array(import_zod35.z.string())
3100
3775
  });
3101
- var WindowsRegistryWriteParams = import_zod34.z.strictObject({
3776
+ var WindowsRegistryWriteParams = import_zod35.z.strictObject({
3102
3777
  key: RegistryKey,
3103
- name: import_zod34.z.string().max(16383),
3778
+ name: import_zod35.z.string().max(16383),
3104
3779
  type: RegistryValueType.default("REG_SZ"),
3105
3780
  /** As reg.exe takes it: text, a number, hex for binary, \\0 between the strings of a multi-string. */
3106
- data: import_zod34.z.string().max(1048576),
3781
+ data: import_zod35.z.string().max(1048576),
3107
3782
  /** Remove the value instead of writing it. */
3108
- delete: import_zod34.z.boolean().default(false)
3783
+ delete: import_zod35.z.boolean().default(false)
3109
3784
  });
3110
- var WindowsRegistryWriteResult = import_zod34.z.strictObject({ key: import_zod34.z.string(), name: import_zod34.z.string(), deleted: import_zod34.z.boolean() });
3111
- var WindowsServicesParams = import_zod34.z.strictObject({
3785
+ var WindowsRegistryWriteResult = import_zod35.z.strictObject({ key: import_zod35.z.string(), name: import_zod35.z.string(), deleted: import_zod35.z.boolean() });
3786
+ var WindowsServicesParams = import_zod35.z.strictObject({
3112
3787
  /** Matched against the service's name and display name. */
3113
- filter: import_zod34.z.string().min(1).max(256).optional(),
3114
- limit: import_zod34.z.int().min(1).max(1e3).default(200)
3788
+ filter: import_zod35.z.string().min(1).max(256).optional(),
3789
+ limit: import_zod35.z.int().min(1).max(1e3).default(200)
3115
3790
  });
3116
- var WindowsService = import_zod34.z.strictObject({
3117
- name: import_zod34.z.string(),
3118
- display_name: import_zod34.z.string(),
3791
+ var WindowsService = import_zod35.z.strictObject({
3792
+ name: import_zod35.z.string(),
3793
+ display_name: import_zod35.z.string(),
3119
3794
  /** Running, Stopped, Paused… as Windows says it. */
3120
- status: import_zod34.z.string(),
3795
+ status: import_zod35.z.string(),
3121
3796
  /** Automatic, Manual, Disabled…; null where Windows does not say. */
3122
- start_type: import_zod34.z.string().nullable()
3797
+ start_type: import_zod35.z.string().nullable()
3123
3798
  });
3124
- var WindowsServicesResult = import_zod34.z.strictObject({ services: import_zod34.z.array(WindowsService) });
3125
- var WindowsServiceControlParams = import_zod34.z.strictObject({
3126
- name: import_zod34.z.string().min(1).max(256),
3127
- action: import_zod34.z.enum(["start", "stop", "restart"])
3799
+ var WindowsServicesResult = import_zod35.z.strictObject({ services: import_zod35.z.array(WindowsService) });
3800
+ var WindowsServiceControlParams = import_zod35.z.strictObject({
3801
+ name: import_zod35.z.string().min(1).max(256),
3802
+ action: import_zod35.z.enum(["start", "stop", "restart"])
3128
3803
  });
3129
- var WindowsServiceControlResult = import_zod34.z.strictObject({ name: import_zod34.z.string(), status: import_zod34.z.string() });
3130
- var WindowsEventLogParams = import_zod34.z.strictObject({
3131
- log: import_zod34.z.string().min(1).max(256).default("System"),
3804
+ var WindowsServiceControlResult = import_zod35.z.strictObject({ name: import_zod35.z.string(), status: import_zod35.z.string() });
3805
+ var WindowsEventLogParams = import_zod35.z.strictObject({
3806
+ log: import_zod35.z.string().min(1).max(256).default("System"),
3132
3807
  /** Only these levels; absent: all. */
3133
- levels: import_zod34.z.array(import_zod34.z.enum(["critical", "error", "warning", "information", "verbose"])).max(5).optional(),
3808
+ levels: import_zod35.z.array(import_zod35.z.enum(["critical", "error", "warning", "information", "verbose"])).max(5).optional(),
3134
3809
  since_ms: epochMs.optional(),
3135
- limit: import_zod34.z.int().min(1).max(500).default(50)
3810
+ limit: import_zod35.z.int().min(1).max(500).default(50)
3136
3811
  });
3137
- var WindowsEvent = import_zod34.z.strictObject({
3138
- id: import_zod34.z.int(),
3139
- level: import_zod34.z.string(),
3140
- source: import_zod34.z.string(),
3812
+ var WindowsEvent = import_zod35.z.strictObject({
3813
+ id: import_zod35.z.int(),
3814
+ level: import_zod35.z.string(),
3815
+ source: import_zod35.z.string(),
3141
3816
  at_ms: epochMs,
3142
- message: import_zod34.z.string()
3817
+ message: import_zod35.z.string()
3143
3818
  });
3144
- var WindowsEventLogResult = import_zod34.z.strictObject({ log: import_zod34.z.string(), events: import_zod34.z.array(WindowsEvent) });
3145
- var WindowsFeaturesParams = import_zod34.z.strictObject({ filter: import_zod34.z.string().min(1).max(256).optional() });
3146
- var WindowsFeature = import_zod34.z.strictObject({ name: import_zod34.z.string(), state: import_zod34.z.string() });
3147
- var WindowsFeaturesResult = import_zod34.z.strictObject({ features: import_zod34.z.array(WindowsFeature) });
3819
+ var WindowsEventLogResult = import_zod35.z.strictObject({ log: import_zod35.z.string(), events: import_zod35.z.array(WindowsEvent) });
3820
+ var WindowsFeaturesParams = import_zod35.z.strictObject({ filter: import_zod35.z.string().min(1).max(256).optional() });
3821
+ var WindowsFeature = import_zod35.z.strictObject({ name: import_zod35.z.string(), state: import_zod35.z.string() });
3822
+ var WindowsFeaturesResult = import_zod35.z.strictObject({ features: import_zod35.z.array(WindowsFeature) });
3148
3823
 
3149
3824
  // src/schema/schedule.ts
3150
- var import_zod35 = require("zod");
3151
- var OpRef = import_zod35.z.string().min(3).max(128).regex(/^[a-z_]+(\.[a-z_]+)+$/);
3152
- var ScheduleCreateParams = import_zod35.z.strictObject({
3153
- name: import_zod35.z.string().min(1).max(200),
3825
+ var import_zod36 = require("zod");
3826
+ var OpRef = import_zod36.z.string().min(3).max(128).regex(/^[a-z_]+(\.[a-z_]+)+$/);
3827
+ var ScheduleCreateParams = import_zod36.z.strictObject({
3828
+ name: import_zod36.z.string().min(1).max(200),
3154
3829
  op: OpRef,
3155
3830
  /** The op's params, exactly as the op takes them; checked when the task is created. */
3156
- params: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.unknown()).default({}),
3157
- interval_s: import_zod35.z.int().min(10).max(2592e3),
3831
+ params: import_zod36.z.record(import_zod36.z.string(), import_zod36.z.unknown()).default({}),
3832
+ interval_s: import_zod36.z.int().min(10).max(2592e3),
3158
3833
  /** Stop after this many runs; absent: until cancelled. */
3159
- max_runs: import_zod35.z.int().min(1).max(1e5).optional(),
3834
+ max_runs: import_zod36.z.int().min(1).max(1e5).optional(),
3160
3835
  /** Run once now, before the first interval. */
3161
- run_now: import_zod35.z.boolean().default(false)
3836
+ run_now: import_zod36.z.boolean().default(false)
3162
3837
  });
3163
- var ScheduleRun = import_zod35.z.strictObject({
3838
+ var ScheduleRun = import_zod36.z.strictObject({
3164
3839
  at_ms: epochMs,
3165
- ok: import_zod35.z.boolean(),
3840
+ ok: import_zod36.z.boolean(),
3166
3841
  elapsed_ms: nonNegInt,
3167
3842
  /** The error's code and message when the run failed. */
3168
- error: import_zod35.z.string().nullable(),
3843
+ error: import_zod36.z.string().nullable(),
3169
3844
  /** The start of the answer, as JSON (cut at 4 KiB). */
3170
- result_preview: import_zod35.z.string().nullable()
3845
+ result_preview: import_zod36.z.string().nullable()
3171
3846
  });
3172
- var ScheduledTask = import_zod35.z.strictObject({
3173
- id: import_zod35.z.string(),
3174
- name: import_zod35.z.string(),
3175
- op: import_zod35.z.string(),
3176
- params: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.unknown()),
3847
+ var ScheduledTask = import_zod36.z.strictObject({
3848
+ id: import_zod36.z.string(),
3849
+ name: import_zod36.z.string(),
3850
+ op: import_zod36.z.string(),
3851
+ params: import_zod36.z.record(import_zod36.z.string(), import_zod36.z.unknown()),
3177
3852
  interval_s: nonNegInt,
3178
3853
  max_runs: nonNegInt.nullable(),
3179
3854
  runs: nonNegInt,
3180
3855
  created_at_ms: epochMs,
3181
3856
  next_run_at_ms: epochMs.nullable(),
3182
3857
  /** active, done (ran max_runs), cancelled. */
3183
- state: import_zod35.z.enum(["active", "done", "cancelled"]),
3858
+ state: import_zod36.z.enum(["active", "done", "cancelled"]),
3184
3859
  /** The newest runs, newest first (at most 10). */
3185
- recent: import_zod35.z.array(ScheduleRun)
3860
+ recent: import_zod36.z.array(ScheduleRun)
3186
3861
  });
3187
- var ScheduleCreateResult = import_zod35.z.strictObject({ task: ScheduledTask });
3188
- var ScheduleListParams = import_zod35.z.strictObject({ include_finished: import_zod35.z.boolean().default(false) });
3189
- var ScheduleListResult = import_zod35.z.strictObject({ tasks: import_zod35.z.array(ScheduledTask) });
3190
- var ScheduleCancelParams = import_zod35.z.strictObject({ id: import_zod35.z.string().min(1).max(64) });
3191
- var ScheduleCancelResult = import_zod35.z.strictObject({ task: ScheduledTask });
3862
+ var ScheduleCreateResult = import_zod36.z.strictObject({ task: ScheduledTask });
3863
+ var ScheduleListParams = import_zod36.z.strictObject({ include_finished: import_zod36.z.boolean().default(false) });
3864
+ var ScheduleListResult = import_zod36.z.strictObject({ tasks: import_zod36.z.array(ScheduledTask) });
3865
+ var ScheduleCancelParams = import_zod36.z.strictObject({ id: import_zod36.z.string().min(1).max(64) });
3866
+ var ScheduleCancelResult = import_zod36.z.strictObject({ task: ScheduledTask });
3192
3867
 
3193
3868
  // src/schema/notes.ts
3194
- var import_zod36 = require("zod");
3195
- var NoteFolder = import_zod36.z.string().min(1).max(512).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*$/);
3196
- var NotePath = import_zod36.z.string().min(4).max(1024).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*\.md$/);
3197
- var NotesFoldersParams = import_zod36.z.strictObject({});
3198
- var NotesFolder = import_zod36.z.strictObject({ folder: import_zod36.z.string(), notes: nonNegInt });
3199
- var NotesFoldersResult = import_zod36.z.strictObject({
3869
+ var import_zod37 = require("zod");
3870
+ var NoteFolder = import_zod37.z.string().min(1).max(512).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*$/);
3871
+ var NotePath = import_zod37.z.string().min(4).max(1024).regex(/^[^/\\:*?"<>|][^\\:*?"<>|]*\.md$/);
3872
+ var NotesFoldersParams = import_zod37.z.strictObject({});
3873
+ var NotesFolder = import_zod37.z.strictObject({ folder: import_zod37.z.string(), notes: nonNegInt });
3874
+ var NotesFoldersResult = import_zod37.z.strictObject({
3200
3875
  /** The notes root on this computer. */
3201
- root: import_zod36.z.string(),
3202
- folders: import_zod36.z.array(NotesFolder)
3876
+ root: import_zod37.z.string(),
3877
+ folders: import_zod37.z.array(NotesFolder)
3203
3878
  });
3204
- var NotesListParams = import_zod36.z.strictObject({
3879
+ var NotesListParams = import_zod37.z.strictObject({
3205
3880
  folder: NoteFolder.optional(),
3206
- limit: import_zod36.z.int().min(1).max(2e3).default(500)
3881
+ limit: import_zod37.z.int().min(1).max(2e3).default(500)
3207
3882
  });
3208
- var NoteEntry = import_zod36.z.strictObject({
3209
- path: import_zod36.z.string(),
3210
- label: import_zod36.z.string(),
3211
- folder: import_zod36.z.string(),
3883
+ var NoteEntry = import_zod37.z.strictObject({
3884
+ path: import_zod37.z.string(),
3885
+ label: import_zod37.z.string(),
3886
+ folder: import_zod37.z.string(),
3212
3887
  bytes: nonNegInt,
3213
3888
  modified_at_ms: epochMs
3214
3889
  });
3215
- var NotesListResult = import_zod36.z.strictObject({ root: import_zod36.z.string(), notes: import_zod36.z.array(NoteEntry), total: nonNegInt });
3216
- var NotesReadParams = import_zod36.z.strictObject({ path: NotePath });
3217
- var NotesReadResult = import_zod36.z.strictObject({
3218
- path: import_zod36.z.string(),
3219
- content: import_zod36.z.string(),
3890
+ var NotesListResult = import_zod37.z.strictObject({ root: import_zod37.z.string(), notes: import_zod37.z.array(NoteEntry), total: nonNegInt });
3891
+ var NotesReadParams = import_zod37.z.strictObject({ path: NotePath });
3892
+ var NotesReadResult = import_zod37.z.strictObject({
3893
+ path: import_zod37.z.string(),
3894
+ content: import_zod37.z.string(),
3220
3895
  bytes: nonNegInt,
3221
3896
  modified_at_ms: epochMs,
3222
3897
  /** SHA-256 of the content: pass it back as `if_hash` to write only over this version. */
3223
- hash: import_zod36.z.string()
3898
+ hash: import_zod37.z.string()
3224
3899
  });
3225
- var NotesWriteParams = import_zod36.z.strictObject({
3900
+ var NotesWriteParams = import_zod37.z.strictObject({
3226
3901
  folder: NoteFolder.default("General"),
3227
3902
  /** The note's name, without ".md". */
3228
- label: import_zod36.z.string().min(1).max(200).regex(/^[^/\\:*?"<>|]+$/),
3229
- content: import_zod36.z.string().max(10485760),
3903
+ label: import_zod37.z.string().min(1).max(200).regex(/^[^/\\:*?"<>|]+$/),
3904
+ content: import_zod37.z.string().max(10485760),
3230
3905
  /** Write only when the note is still this version (notes.read's hash); a change since answers CONFLICT. */
3231
- if_hash: import_zod36.z.string().length(64).optional()
3906
+ if_hash: import_zod37.z.string().length(64).optional()
3232
3907
  });
3233
- var NotesWriteResult = import_zod36.z.strictObject({ path: import_zod36.z.string(), bytes: nonNegInt, created: import_zod36.z.boolean(), hash: import_zod36.z.string() });
3234
- var NotesSearchParams = import_zod36.z.strictObject({
3235
- query: import_zod36.z.string().min(1).max(512),
3236
- limit: import_zod36.z.int().min(1).max(200).default(50)
3908
+ var NotesWriteResult = import_zod37.z.strictObject({ path: import_zod37.z.string(), bytes: nonNegInt, created: import_zod37.z.boolean(), hash: import_zod37.z.string() });
3909
+ var NotesSearchParams = import_zod37.z.strictObject({
3910
+ query: import_zod37.z.string().min(1).max(512),
3911
+ limit: import_zod37.z.int().min(1).max(200).default(50)
3237
3912
  });
3238
- var NotesMatch = import_zod36.z.strictObject({
3239
- path: import_zod36.z.string(),
3240
- label: import_zod36.z.string(),
3241
- folder: import_zod36.z.string(),
3913
+ var NotesMatch = import_zod37.z.strictObject({
3914
+ path: import_zod37.z.string(),
3915
+ label: import_zod37.z.string(),
3916
+ folder: import_zod37.z.string(),
3242
3917
  /** The matching lines (at most five), trimmed. */
3243
- lines: import_zod36.z.array(import_zod36.z.string())
3918
+ lines: import_zod37.z.array(import_zod37.z.string())
3244
3919
  });
3245
- var NotesSearchResult = import_zod36.z.strictObject({ matches: import_zod36.z.array(NotesMatch), total: nonNegInt });
3920
+ var NotesSearchResult = import_zod37.z.strictObject({ matches: import_zod37.z.array(NotesMatch), total: nonNegInt });
3246
3921
 
3247
3922
  // src/schema/documents.ts
3248
- var import_zod37 = require("zod");
3923
+ var import_zod38 = require("zod");
3249
3924
  var DOCUMENTS_MAX_TEXT_CHARS = 1048576;
3250
- var DocumentsPdfTextParams = import_zod37.z.strictObject({
3925
+ var DocumentsPdfTextParams = import_zod38.z.strictObject({
3251
3926
  path: AbsPath,
3252
3927
  /** 1-based, inclusive. */
3253
- first_page: import_zod37.z.int().min(1).optional(),
3254
- last_page: import_zod37.z.int().min(1).optional(),
3255
- max_chars: import_zod37.z.int().min(1).max(DOCUMENTS_MAX_TEXT_CHARS).default(2e5)
3928
+ first_page: import_zod38.z.int().min(1).optional(),
3929
+ last_page: import_zod38.z.int().min(1).optional(),
3930
+ max_chars: import_zod38.z.int().min(1).max(DOCUMENTS_MAX_TEXT_CHARS).default(2e5)
3256
3931
  });
3257
- var DocumentsPdfPage = import_zod37.z.strictObject({ page: import_zod37.z.int().min(1), text: import_zod37.z.string() });
3258
- var DocumentsPdfTextResult = import_zod37.z.strictObject({
3932
+ var DocumentsPdfPage = import_zod38.z.strictObject({ page: import_zod38.z.int().min(1), text: import_zod38.z.string() });
3933
+ var DocumentsPdfTextResult = import_zod38.z.strictObject({
3259
3934
  pages: nonNegInt,
3260
3935
  /** Each page read, in order (an image-only page has empty text: OCR it). */
3261
- read: import_zod37.z.array(DocumentsPdfPage),
3262
- truncated: import_zod37.z.boolean(),
3263
- title: import_zod37.z.string().nullable(),
3264
- author: import_zod37.z.string().nullable()
3936
+ read: import_zod38.z.array(DocumentsPdfPage),
3937
+ truncated: import_zod38.z.boolean(),
3938
+ title: import_zod38.z.string().nullable(),
3939
+ author: import_zod38.z.string().nullable()
3265
3940
  });
3266
- var DocumentsOcrParams = import_zod37.z.strictObject({
3941
+ var DocumentsOcrParams = import_zod38.z.strictObject({
3267
3942
  path: AbsPath,
3268
3943
  /** BCP-47 language hints ("en-US", "fr-FR"); absent: the OS's own choice. */
3269
- languages: import_zod37.z.array(import_zod37.z.string().min(2).max(16)).max(8).optional(),
3944
+ languages: import_zod38.z.array(import_zod38.z.string().min(2).max(16)).max(8).optional(),
3270
3945
  /** Faster, less accurate. */
3271
- fast: import_zod37.z.boolean().default(false)
3946
+ fast: import_zod38.z.boolean().default(false)
3272
3947
  });
3273
- var DocumentsOcrLine = import_zod37.z.strictObject({
3274
- text: import_zod37.z.string(),
3948
+ var DocumentsOcrLine = import_zod38.z.strictObject({
3949
+ text: import_zod38.z.string(),
3275
3950
  /** 0–1; null where the engine does not say. */
3276
- confidence: import_zod37.z.number().min(0).max(1).nullable()
3951
+ confidence: import_zod38.z.number().min(0).max(1).nullable()
3277
3952
  });
3278
- var DocumentsOcrResult = import_zod37.z.strictObject({
3279
- text: import_zod37.z.string(),
3280
- lines: import_zod37.z.array(DocumentsOcrLine),
3281
- truncated: import_zod37.z.boolean(),
3953
+ var DocumentsOcrResult = import_zod38.z.strictObject({
3954
+ text: import_zod38.z.string(),
3955
+ lines: import_zod38.z.array(DocumentsOcrLine),
3956
+ truncated: import_zod38.z.boolean(),
3282
3957
  /** Which engine read it ("vision" on macOS, "windows-ocr", "tesseract"). */
3283
- engine: import_zod37.z.string()
3958
+ engine: import_zod38.z.string()
3284
3959
  });
3285
- var DocumentsImageResizeParams = import_zod37.z.strictObject({
3960
+ var DocumentsImageResizeParams = import_zod38.z.strictObject({
3286
3961
  path: AbsPath,
3287
3962
  /** Where to write it; absent: next to the original, "<name>-resized.<ext>". */
3288
3963
  out_path: AbsPath.optional(),
3289
3964
  /** The longest side, kept in proportion; absent: the size stays (a format change only). */
3290
- max_size: import_zod37.z.int().min(1).max(32768).optional(),
3291
- format: import_zod37.z.enum(["png", "jpeg", "tiff", "heic", "bmp", "gif"]).optional(),
3292
- overwrite: import_zod37.z.boolean().default(false)
3965
+ max_size: import_zod38.z.int().min(1).max(32768).optional(),
3966
+ format: import_zod38.z.enum(["png", "jpeg", "tiff", "heic", "bmp", "gif"]).optional(),
3967
+ overwrite: import_zod38.z.boolean().default(false)
3293
3968
  });
3294
- var DocumentsImageResizeResult = import_zod37.z.strictObject({
3295
- path: import_zod37.z.string(),
3969
+ var DocumentsImageResizeResult = import_zod38.z.strictObject({
3970
+ path: import_zod38.z.string(),
3296
3971
  width: nonNegInt,
3297
3972
  height: nonNegInt,
3298
3973
  bytes: nonNegInt
3299
3974
  });
3300
- var DocumentsParagraph = import_zod37.z.strictObject({
3301
- style: import_zod37.z.enum(["title", "heading1", "heading2", "heading3", "body", "bullet", "numbered", "quote", "code"]).default("body"),
3302
- text: import_zod37.z.string().max(1e5)
3975
+ var DocumentsParagraph = import_zod38.z.strictObject({
3976
+ style: import_zod38.z.enum(["title", "heading1", "heading2", "heading3", "body", "bullet", "numbered", "quote", "code"]).default("body"),
3977
+ text: import_zod38.z.string().max(1e5)
3303
3978
  });
3304
- var DocumentsSheet = import_zod37.z.strictObject({
3305
- name: import_zod37.z.string().min(1).max(31),
3979
+ var DocumentsSheet = import_zod38.z.strictObject({
3980
+ name: import_zod38.z.string().min(1).max(31),
3306
3981
  /** Rows of cells; the first row is the header when `header` is true. */
3307
- rows: import_zod37.z.array(import_zod37.z.array(import_zod37.z.union([import_zod37.z.string().max(32767), import_zod37.z.number(), import_zod37.z.boolean(), import_zod37.z.null()])).max(16384)).max(1e5),
3308
- header: import_zod37.z.boolean().default(true)
3982
+ rows: import_zod38.z.array(import_zod38.z.array(import_zod38.z.union([import_zod38.z.string().max(32767), import_zod38.z.number(), import_zod38.z.boolean(), import_zod38.z.null()])).max(16384)).max(1e5),
3983
+ header: import_zod38.z.boolean().default(true)
3309
3984
  });
3310
- var DocumentsOfficeGenerateParams = import_zod37.z.strictObject({
3311
- kind: import_zod37.z.enum(["docx", "xlsx"]),
3985
+ var DocumentsOfficeGenerateParams = import_zod38.z.strictObject({
3986
+ kind: import_zod38.z.enum(["docx", "xlsx"]),
3312
3987
  path: AbsPath,
3313
- title: import_zod37.z.string().max(1024).optional(),
3988
+ title: import_zod38.z.string().max(1024).optional(),
3314
3989
  /** docx: the document's paragraphs, in order. */
3315
- paragraphs: import_zod37.z.array(DocumentsParagraph).max(5e4).optional(),
3990
+ paragraphs: import_zod38.z.array(DocumentsParagraph).max(5e4).optional(),
3316
3991
  /** xlsx: the workbook's sheets, in order. */
3317
- sheets: import_zod37.z.array(DocumentsSheet).min(1).max(64).optional(),
3318
- overwrite: import_zod37.z.boolean().default(false)
3992
+ sheets: import_zod38.z.array(DocumentsSheet).min(1).max(64).optional(),
3993
+ overwrite: import_zod38.z.boolean().default(false)
3319
3994
  });
3320
- var DocumentsOfficeGenerateResult = import_zod37.z.strictObject({ path: import_zod37.z.string(), bytes: nonNegInt });
3321
- var EntitiesNerParams = import_zod37.z.strictObject({
3322
- text: import_zod37.z.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
3995
+ var DocumentsOfficeGenerateResult = import_zod38.z.strictObject({ path: import_zod38.z.string(), bytes: nonNegInt });
3996
+ var EntitiesNerParams = import_zod38.z.strictObject({
3997
+ text: import_zod38.z.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
3323
3998
  /** Which kinds to keep; absent: all three. */
3324
- labels: import_zod37.z.array(import_zod37.z.enum(["person", "place", "organization"])).min(1).max(3).optional()
3999
+ labels: import_zod38.z.array(import_zod38.z.enum(["person", "place", "organization"])).min(1).max(3).optional()
3325
4000
  });
3326
- var EntitySpan = import_zod37.z.strictObject({
3327
- text: import_zod37.z.string(),
3328
- label: import_zod37.z.string(),
4001
+ var EntitySpan = import_zod38.z.strictObject({
4002
+ text: import_zod38.z.string(),
4003
+ label: import_zod38.z.string(),
3329
4004
  /** Character offsets into the text (UTF-16, as JavaScript counts). */
3330
4005
  start: nonNegInt,
3331
4006
  end: nonNegInt
3332
4007
  });
3333
- var EntitiesNerResult = import_zod37.z.strictObject({ entities: import_zod37.z.array(EntitySpan), engine: import_zod37.z.string() });
3334
- var PiiKind = import_zod37.z.enum(["email", "phone", "credit_card", "us_ssn", "iban", "ip_address", "url", "api_key"]);
3335
- var EntitiesPiiParams = import_zod37.z.strictObject({
3336
- text: import_zod37.z.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
3337
- kinds: import_zod37.z.array(PiiKind).min(1).max(8).optional(),
4008
+ var EntitiesNerResult = import_zod38.z.strictObject({ entities: import_zod38.z.array(EntitySpan), engine: import_zod38.z.string() });
4009
+ var PiiKind = import_zod38.z.enum(["email", "phone", "credit_card", "us_ssn", "iban", "ip_address", "url", "api_key"]);
4010
+ var EntitiesPiiParams = import_zod38.z.strictObject({
4011
+ text: import_zod38.z.string().min(1).max(DOCUMENTS_MAX_TEXT_CHARS),
4012
+ kinds: import_zod38.z.array(PiiKind).min(1).max(8).optional(),
3338
4013
  /** Also answer the text with each finding replaced by its kind ("[email]"). */
3339
- redact: import_zod37.z.boolean().default(false)
4014
+ redact: import_zod38.z.boolean().default(false)
3340
4015
  });
3341
- var EntitiesPiiResult = import_zod37.z.strictObject({
3342
- findings: import_zod37.z.array(import_zod37.z.strictObject({ kind: PiiKind, text: import_zod37.z.string(), start: nonNegInt, end: nonNegInt })),
3343
- redacted: import_zod37.z.string().nullable()
4016
+ var EntitiesPiiResult = import_zod38.z.strictObject({
4017
+ findings: import_zod38.z.array(import_zod38.z.strictObject({ kind: PiiKind, text: import_zod38.z.string(), start: nonNegInt, end: nonNegInt })),
4018
+ redacted: import_zod38.z.string().nullable()
3344
4019
  });
3345
4020
 
3346
4021
  // src/schema/registry.ts
@@ -3474,6 +4149,36 @@ var OPS = {
3474
4149
  "apps.windows.shown": { params: AppsWindowsShownParams, result: AppsWindowsShownResult, kind: "unary", since: "1.21", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
3475
4150
  // Claude Code history (SPEC §6 coding): served by the `coding` Python service through SERVICES below.
3476
4151
  "coding.history.import_missing": { params: CodingHistoryImportMissingParams, result: CodingHistoryImportMissingResult, kind: "unary", since: "1.5", errors: ["RESOURCE_BUSY", "RESOURCE_GONE", "CANCELLED", "INTERNAL"] },
4152
+ // Code from anywhere (1.38): the coding engine's sessions, read and driven over any transport.
4153
+ "coding.providers": { params: CodingProvidersParams, result: CodingProvidersResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
4154
+ "coding.sessions.list": { params: CodingSessionsListParams, result: CodingSessionsListResult, kind: "unary", since: "1.38", errors: ["PLATFORM_UNSUPPORTED", "INTERNAL"] },
4155
+ "coding.discover": { params: CodingDiscoverParams, result: CodingDiscoverResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
4156
+ "coding.runs.list": { params: CodingRunsListParams, result: CodingRunsListResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
4157
+ "coding.history": { params: CodingHistoryParams, result: CodingHistoryResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "INTERNAL"] },
4158
+ "coding.transcript.read": { params: CodingTranscriptReadParams, result: CodingTranscriptReadResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "INTERNAL"] },
4159
+ "coding.item.full": { params: CodingItemFullParams, result: CodingItemFullResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "PAYLOAD_TOO_LARGE", "INTERNAL"] },
4160
+ "coding.activity": { params: CodingActivityParams, result: CodingActivityResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
4161
+ "coding.folders.recent": { params: CodingFoldersRecentParams, result: CodingFoldersRecentResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
4162
+ "coding.folders.check": { params: CodingFoldersCheckParams, result: CodingFoldersCheckResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "AUTH_FORBIDDEN", "INTERNAL"] },
4163
+ "coding.folders.create": { params: CodingFoldersCreateParams, result: CodingFoldersCreateResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "AUTH_FORBIDDEN", "PERMISSION_DENIED_OS", "INTERNAL"] },
4164
+ "coding.start": { params: CodingStartParams, result: CodingStartResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "AUTH_FORBIDDEN", "RATE_LIMITED", "INTERNAL"] },
4165
+ "coding.takeover": { params: CodingTakeoverParams, result: CodingTakeoverResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "RESOURCE_BUSY", "AUTH_FORBIDDEN", "INTERNAL"] },
4166
+ "coding.send": { params: CodingSendParams, result: CodingSendResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "RATE_LIMITED", "INTERNAL"] },
4167
+ "coding.stop": { params: CodingStopParams, result: CodingStopResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
4168
+ "coding.stop_elsewhere": { params: CodingStopElsewhereParams, result: CodingStopElsewhereResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "CONFLICT", "PERMISSION_DENIED_OS", "INTERNAL"] },
4169
+ "coding.options.set": { params: CodingOptionsSetParams, result: CodingOptionsSetResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "INTERNAL"] },
4170
+ "coding.agent.set": { params: CodingAgentSetParams, result: CodingAgentSetResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "AUTH_FORBIDDEN", "INTERNAL"] },
4171
+ "coding.agents.access": { params: CodingAgentsAccessParams, result: CodingAgentsAccessResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
4172
+ "coding.titles.status": { params: CodingTitlesStatusParams, result: CodingTitlesStatusResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
4173
+ "coding.prefs.list": { params: CodingPrefsListParams, result: CodingPrefsListResult, kind: "unary", since: "1.38", errors: ["INTERNAL"] },
4174
+ "coding.prefs.set": { params: CodingPrefsSetParams, result: CodingPrefsSetResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
4175
+ "coding.recent.seen": { params: CodingRecentSeenParams, result: CodingRecentSeenResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "INTERNAL"] },
4176
+ "coding.search": { params: CodingSearchParams, result: CodingSearchResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "TIMEOUT", "INTERNAL"] },
4177
+ "coding.reconcile": { params: CodingReconcileParams, result: CodingReconcileResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "RESOURCE_BUSY", "CANCELLED", "INTERNAL"] },
4178
+ "coding.transcript.raw": { params: CodingTranscriptRawParams, result: CodingTranscriptRawResult, kind: "stream", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "CANCELLED", "INTERNAL"] },
4179
+ "coding.watch": { params: CodingWatchParams, result: CodingWatchResult, kind: "resource", since: "1.38", errors: ["PLATFORM_UNSUPPORTED", "RATE_LIMITED", "INTERNAL"] },
4180
+ "coding.session.watch": { params: CodingSessionWatchParams, result: CodingSessionWatchResult, kind: "resource", since: "1.38", errors: ["INVALID_PARAMS", "NOT_FOUND", "RATE_LIMITED", "INTERNAL"] },
4181
+ "session.identify": { params: SessionIdentifyParams, result: SessionIdentifyResult, kind: "unary", since: "1.38", errors: ["INVALID_PARAMS"] },
3477
4182
  // 1.22: git for agents (core `git`, the system git; the cloud sandbox's /git/* set, SPEC 6.1).
3478
4183
  "git.status": { params: GitStatusParams, result: GitStatusResult, kind: "unary", since: "1.22", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "TIMEOUT", "INTERNAL"] },
3479
4184
  "git.diff": { params: GitDiffParams, result: GitDiffResult, kind: "unary", since: "1.22", errors: ["NOT_FOUND", "INVALID_PARAMS", "CONFLICT", "PLATFORM_UNSUPPORTED", "TIMEOUT", "INTERNAL"] },
@@ -3490,10 +4195,24 @@ var OPS = {
3490
4195
  "web.scrape": { params: WebScrapeParams, result: WebScrapeResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
3491
4196
  "web.search": { params: WebSearchParams, result: WebSearchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
3492
4197
  "web.fetch_with_browser": { params: WebBrowserFetchParams, result: WebBrowserFetchResult, kind: "unary", since: "1.22", errors: ["INVALID_PARAMS", "TIMEOUT", "RESOURCE_BUSY", "AUTH_REQUIRED", "INTERNAL"] },
4198
+ "web.runtime.state": { params: WebRuntimeParams, result: WebRuntimeState, kind: "unary", since: "1.40", errors: ["INTERNAL"] },
4199
+ "web.runtime.install": { params: WebRuntimeParams, result: WebRuntimeState, kind: "unary", since: "1.40", errors: ["TIMEOUT", "RESOURCE_BUSY", "CANCELLED", "INTERNAL"] },
4200
+ "web.runtime.remove": { params: WebRuntimeParams, result: WebRuntimeState, kind: "unary", since: "1.40", errors: ["RESOURCE_BUSY", "INTERNAL"] },
4201
+ "web.outbox.list": { params: WebOutboxListParams, result: WebOutboxListResult, kind: "unary", since: "1.40", errors: ["INTERNAL"] },
4202
+ "web.outbox.retry": { params: WebOutboxRetryParams, result: WebOutboxRetryResult, kind: "unary", since: "1.40", errors: ["NOT_FOUND", "AUTH_REQUIRED", "INTERNAL"] },
4203
+ "web.outbox.discard": { params: WebOutboxDiscardParams, result: WebOutboxDiscardResult, kind: "unary", since: "1.40", errors: ["NOT_FOUND", "INTERNAL"] },
4204
+ "web.log.list": { params: WebLogListParams, result: WebLogListResult, kind: "unary", since: "1.40", errors: ["INVALID_PARAMS"] },
4205
+ "web.log.clear": { params: WebLogClearParams, result: WebLogClearResult, kind: "unary", since: "1.40", errors: ["INTERNAL"] },
4206
+ "web.research.queue": { params: WebResearchQueueParams, result: WebResearchQueueResult, kind: "unary", since: "1.40", errors: ["INVALID_PARAMS", "INTERNAL"] },
4207
+ "web.research.fetch": { params: WebResearchFetchParams, result: WebResearchFetchResult, kind: "unary", since: "1.40", errors: ["INVALID_PARAMS", "AUTH_REQUIRED", "RESOURCE_BUSY", "CANCELLED", "INTERNAL"] },
3493
4208
  // 1.23: the signed-in person's own agents and Vault, read as them (the desktop's Agents library and Vault).
3494
4209
  "account.agents.list": { params: AccountAgentsListParams, result: AccountAgentsListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
3495
4210
  "account.vault.list": { params: AccountVaultListParams, result: AccountVaultListResult, kind: "unary", since: "1.23", errors: ["INTERNAL"] },
3496
4211
  "account.vault.copy": { params: AccountVaultCopyParams, result: AccountVaultCopyResult, kind: "unary", since: "1.23", errors: ["AUTH_REQUIRED", "AUTH_FORBIDDEN", "NOT_FOUND", "INVALID_PARAMS", "DEVICE_OFFLINE", "INTERNAL"] },
4212
+ // 1.39: one agent opened (its inputs and what it uses), its runs (mandate.run_history, one agent at a time) and its star.
4213
+ "account.agents.get": { params: AccountAgentsGetParams, result: AccountAgentsGetResult, kind: "unary", since: "1.39", errors: ["INVALID_PARAMS", "INTERNAL"] },
4214
+ "account.agents.runs": { params: AccountAgentsRunsParams, result: AccountAgentsRunsResult, kind: "unary", since: "1.39", errors: ["INVALID_PARAMS", "INTERNAL"] },
4215
+ "account.agents.favorite": { params: AccountAgentsFavoriteParams, result: AccountAgentsFavoriteResult, kind: "unary", since: "1.39", errors: ["AUTH_REQUIRED", "NOT_FOUND", "INVALID_PARAMS", "DEVICE_OFFLINE", "INTERNAL"] },
3497
4216
  // 1.26: the app's own update (it installs only once every window quit) and bringing the windows back.
3498
4217
  "apps.windows.update_state": { params: AppsWindowsUpdateStateParams, result: AppsWindowsUpdateStateResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
3499
4218
  "apps.windows.reopen": { params: AppsWindowsReopenParams, result: AppsWindowsReopenResult, kind: "unary", since: "1.26", errors: ["NOT_FOUND", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
@@ -3567,14 +4286,60 @@ var EVENTS = {
3567
4286
  "session.control_changed": SessionControlChangedEvent,
3568
4287
  "models.progress": ModelsProgressEvent,
3569
4288
  "coding.history.progress": CodingHistoryProgressEvent,
4289
+ "coding.changed": CodingChangedEvent,
4290
+ "coding.watch_state": CodingWatchStateEvent,
4291
+ "coding.item": CodingItemEvent,
4292
+ "coding.gap": CodingGapEvent,
3570
4293
  "relay.device_status": RelayDeviceStatusEvent,
3571
4294
  "relay.auth_expiring": RelayAuthExpiringEvent,
3572
4295
  "diag.errors.changed": DiagErrorsChangedEvent,
3573
4296
  "browser.invoke": BrowserInvokeEvent,
3574
4297
  "browser.sessions_changed": BrowserSessionsChangedEvent,
3575
- "browser.progress": BrowserProgressEvent
4298
+ "browser.progress": BrowserProgressEvent,
4299
+ "web.log.entry": WebLogEntry,
4300
+ "web.progress": WebProgressEvent
3576
4301
  };
3577
4302
 
4303
+ // src/versioning.ts
4304
+ function compareVersions(a, b) {
4305
+ const [am = 0, an = 0] = a.split(".").map(Number);
4306
+ const [bm = 0, bn = 0] = b.split(".").map(Number);
4307
+ return am - bm || an - bn;
4308
+ }
4309
+ function knows(version, since) {
4310
+ return compareVersions(version, since) >= 0;
4311
+ }
4312
+ var RESULT_PATH = /* @__PURE__ */ new Map([
4313
+ ["fs.patch", "FsPatchResult"],
4314
+ ["apps.chats.list", "AppsChatsListResult"],
4315
+ ["apps.accounts.usage", "AppsAccountsUsageResult"],
4316
+ ["apps.accounts.resets", "AppsAccountsResetsResult"],
4317
+ ["apps.windows.update_state", "AppsWindowsUpdateStateResult"],
4318
+ ["web.fetch_with_browser", "WebBrowserFetchResult"],
4319
+ ["sysinfo.get", "SysinfoGetResult"]
4320
+ ]);
4321
+ var NESTED_RESULTS = /* @__PURE__ */ new Map([
4322
+ ["apps.chats.list", [["chats", "ChatRow"]]],
4323
+ ["apps.projects.file", [["chat", "ChatRow"]]],
4324
+ ["apps.projects.file_many", [["chats", "ChatRow"]]],
4325
+ ["apps.projects.unfile", [["chat", "ChatRow"]]],
4326
+ ["apps.projects.move", [["chat", "ChatRow"]]],
4327
+ ["apps.chats.star", [["chat", "ChatRow"]]],
4328
+ ["apps.chats.place", [["chat", "ChatRow"]]],
4329
+ ["apps.accounts.usage", [["accounts", "AccountUsage"]]],
4330
+ ["resources.snapshot", [["disks", "ResourcesDisk"]]],
4331
+ ["stack.state", [["servers", "StackServer"]]],
4332
+ ["account.agents.list", [["agents", "AccountAgent"]]],
4333
+ ["web.scrape", [["pages", "WebScrapePage"]]],
4334
+ ["sysinfo.get", [["permissions", "SysinfoGetResult.permissions[]"]]]
4335
+ ]);
4336
+ var WINDOW_RESULTS = /* @__PURE__ */ new Map([
4337
+ ["window.list", "windows"],
4338
+ ["window.focus", "window"],
4339
+ ["window.move", "window"]
4340
+ ]);
4341
+ var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
4342
+
3578
4343
  // src/client/client.ts
3579
4344
  var WS_OPEN = 1;
3580
4345
  var defaultTimers = {
@@ -3923,6 +4688,11 @@ function createDesktopClient(options) {
3923
4688
  backoff.markConnected();
3924
4689
  authRefusals = 0;
3925
4690
  setState({ status: "open", welcome: welcome.data, attempts: 0, retryInMs: null, lastError: null, outcome: null });
4691
+ if (options.clientLabel && knows(welcome.data.protocol_version, "1.38")) {
4692
+ void request("session.identify", { label: options.clientLabel.slice(0, 60) }).catch(
4693
+ (error) => diagnose({ kind: "handler_threw", where: "session.identify", error })
4694
+ );
4695
+ }
3926
4696
  for (const w of [...readyWaiters]) {
3927
4697
  readyWaiters.delete(w);
3928
4698
  w.resolve(welcome.data);