@ai-matrx/desktop-protocol 0.19.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -93,6 +93,8 @@ __export(src_exports, {
93
93
  AppsWindowsReloadParams: () => AppsWindowsReloadParams,
94
94
  AppsWindowsRestartParams: () => AppsWindowsRestartParams,
95
95
  AppsWindowsSaveNamesParams: () => AppsWindowsSaveNamesParams,
96
+ AppsWindowsShownParams: () => AppsWindowsShownParams,
97
+ AppsWindowsShownResult: () => AppsWindowsShownResult,
96
98
  AudioDevice: () => AudioDevice,
97
99
  AudioDevicesParams: () => AudioDevicesParams,
98
100
  AudioDevicesResult: () => AudioDevicesResult,
@@ -146,6 +148,15 @@ __export(src_exports, {
146
148
  DEFAULT_WINDOW_BYTES: () => DEFAULT_WINDOW_BYTES,
147
149
  DesktopProtocolError: () => DesktopProtocolError,
148
150
  DeviceId: () => DeviceId,
151
+ DiagErrorEntry: () => DiagErrorEntry,
152
+ DiagErrorKind: () => DiagErrorKind,
153
+ DiagErrorStatus: () => DiagErrorStatus,
154
+ DiagErrorsChangedEvent: () => DiagErrorsChangedEvent,
155
+ DiagErrorsListParams: () => DiagErrorsListParams,
156
+ DiagErrorsListResult: () => DiagErrorsListResult,
157
+ DiagErrorsReportParams: () => DiagErrorsReportParams,
158
+ DiagErrorsReportResult: () => DiagErrorsReportResult,
159
+ DiagProcess: () => DiagProcess,
149
160
  EVENTS: () => EVENTS,
150
161
  EXCLUDED_TOOLS: () => EXCLUDED_TOOLS,
151
162
  EndMsg: () => EndMsg,
@@ -350,6 +361,7 @@ __export(src_exports, {
350
361
  SessionListResult: () => SessionListResult,
351
362
  SessionReleaseParams: () => SessionReleaseParams,
352
363
  SessionReleaseResult: () => SessionReleaseResult,
364
+ ShownSection: () => ShownSection,
353
365
  Signal: () => Signal,
354
366
  SpendAccount: () => SpendAccount,
355
367
  SpendChat: () => SpendChat,
@@ -442,7 +454,7 @@ module.exports = __toCommonJS(src_exports);
442
454
  var import_zod = require("zod");
443
455
  var import_uuid = require("@ai-matrx/kit/uuid");
444
456
  var PROTOCOL_MAJOR = 1;
445
- var PROTOCOL_MINOR = 19;
457
+ var PROTOCOL_MINOR = 21;
446
458
  var PROTOCOL_VERSION = `${PROTOCOL_MAJOR}.${PROTOCOL_MINOR}`;
447
459
  var ProtocolVersion = import_zod.z.string().regex(/^[1-9][0-9]{0,2}\.[0-9]{1,3}$/);
448
460
  var RequestId = import_zod.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
@@ -1583,6 +1595,19 @@ var AppsAccountsResetsResult = import_zod13.z.strictObject({
1583
1595
  var AppsWindowActionResult = import_zod13.z.strictObject({ message: import_zod13.z.string().max(400) });
1584
1596
  var AppsWindowsOpenParams = import_zod13.z.strictObject({ app_key: AppKey, window: ChatPlace });
1585
1597
  var AppsWindowsReloadParams = import_zod13.z.strictObject({ app_key: AppKey, window: ChatPlace });
1598
+ var ShownSection = import_zod13.z.strictObject({
1599
+ title: import_zod13.z.string().max(300),
1600
+ /** Rows drawn under it (a collapsed section draws none). */
1601
+ rows: import_zod13.z.number().int().nonnegative(),
1602
+ expanded: import_zod13.z.boolean()
1603
+ });
1604
+ var AppsWindowsShownParams = import_zod13.z.strictObject({ app_key: AppKey, window: ChatPlace });
1605
+ var AppsWindowsShownResult = import_zod13.z.strictObject({
1606
+ window: ChatPlace,
1607
+ open: import_zod13.z.boolean(),
1608
+ sections: import_zod13.z.array(ShownSection).max(200),
1609
+ problem: import_zod13.z.string().max(400).nullable()
1610
+ });
1586
1611
  var AppsWindowsRestartParams = import_zod13.z.strictObject({ app_key: AppKey, window: ChatPlace, force: import_zod13.z.boolean().default(false) });
1587
1612
  var AppsWindowsRefreshUsageParams = import_zod13.z.strictObject({ app_key: AppKey, window: ChatPlace });
1588
1613
  var AppsProjectsMoveParams = import_zod13.z.strictObject({
@@ -2114,95 +2139,175 @@ var PowerPreventSleepResult = import_zod22.z.strictObject({
2114
2139
  awake_until_ms: epochMs.nullable()
2115
2140
  });
2116
2141
 
2117
- // src/schema/resources.ts
2142
+ // src/schema/diag.ts
2118
2143
  var import_zod23 = require("zod");
2119
- var ResourcesDisk = import_zod23.z.strictObject({
2144
+ var DiagProcess = import_zod23.z.enum([
2145
+ "main",
2146
+ "renderer",
2147
+ "hosted_page",
2148
+ "core",
2149
+ "pty_host",
2150
+ "python_ml",
2151
+ "python_coding",
2152
+ "python_tools",
2153
+ "relay",
2154
+ "coding_sessions",
2155
+ "claude_accounts"
2156
+ ]);
2157
+ var DiagErrorKind = import_zod23.z.enum([
2158
+ "uncaught_exception",
2159
+ "unhandled_rejection",
2160
+ "renderer_crash",
2161
+ "native_crash",
2162
+ "console_error",
2163
+ "load_failed",
2164
+ "op_failed",
2165
+ "child_exit",
2166
+ "banner",
2167
+ "logged_error"
2168
+ ]);
2169
+ var DiagErrorStatus = import_zod23.z.enum(["waiting", "sent", "resolved"]);
2170
+ var DiagErrorEntry = import_zod23.z.strictObject({
2171
+ /** sha256 prefix over process, kind, source, code and the normalized message. */
2172
+ signature: import_zod23.z.string().regex(/^[0-9a-f]{32}$/),
2173
+ process: DiagProcess,
2174
+ kind: DiagErrorKind,
2175
+ /** Where: a cap.op, a log event, a screen or page name. */
2176
+ source: import_zod23.z.string().min(1).max(128),
2177
+ /** An ErrorCode, an exit code or signal, an error class; null when there is none. */
2178
+ code: import_zod23.z.string().max(64).nullable(),
2179
+ /** The first occurrence's message, personal data removed. */
2180
+ message: import_zod23.z.string().max(500),
2181
+ count: nonNegInt,
2182
+ first_seen_ms: epochMs,
2183
+ last_seen_ms: epochMs,
2184
+ status: DiagErrorStatus,
2185
+ /** What the agent who resolved it wrote; null until resolved. */
2186
+ resolution_note: import_zod23.z.string().max(500).nullable(),
2187
+ app_version: import_zod23.z.string().max(64)
2188
+ });
2189
+ var DiagErrorsListParams = import_zod23.z.strictObject({
2190
+ /** open = waiting or sent; all includes resolved. */
2191
+ status: import_zod23.z.enum(["open", "all"]).default("open"),
2192
+ limit: import_zod23.z.int().min(1).max(500).default(200)
2193
+ });
2194
+ var DiagErrorsListResult = import_zod23.z.strictObject({
2195
+ /** Newest last_seen first. */
2196
+ entries: import_zod23.z.array(DiagErrorEntry).max(500),
2197
+ total_signatures: nonNegInt,
2198
+ total_occurrences: nonNegInt,
2199
+ /** Signatures with occurrences not yet delivered. */
2200
+ waiting: nonNegInt,
2201
+ /** signed_out = kept until sign-in; ok = the last delivery worked; failing = the last delivery failed (kept, retried). */
2202
+ delivery: import_zod23.z.enum(["signed_out", "ok", "failing"]),
2203
+ last_delivery_ms: epochMs.nullable()
2204
+ });
2205
+ var DiagErrorsReportParams = import_zod23.z.strictObject({
2206
+ process: import_zod23.z.enum(["renderer", "hosted_page"]),
2207
+ kind: import_zod23.z.enum(["uncaught_exception", "unhandled_rejection", "console_error", "banner"]),
2208
+ /** The screen or page, e.g. "code.chats". */
2209
+ source: import_zod23.z.string().min(1).max(128),
2210
+ message: import_zod23.z.string().min(1).max(2e3),
2211
+ code: import_zod23.z.string().max(64).optional(),
2212
+ stack: import_zod23.z.string().max(8e3).optional()
2213
+ });
2214
+ var DiagErrorsReportResult = import_zod23.z.strictObject({
2215
+ signature: import_zod23.z.string().regex(/^[0-9a-f]{32}$/)
2216
+ });
2217
+ var DiagErrorsChangedEvent = import_zod23.z.strictObject({
2218
+ total_signatures: nonNegInt,
2219
+ waiting: nonNegInt
2220
+ });
2221
+
2222
+ // src/schema/resources.ts
2223
+ var import_zod24 = require("zod");
2224
+ var ResourcesDisk = import_zod24.z.strictObject({
2120
2225
  /** Where it is mounted ("/", "C:"). */
2121
- mount: import_zod23.z.string().max(512),
2226
+ mount: import_zod24.z.string().max(512),
2122
2227
  /** The volume's name as the file manager shows it ("Macintosh HD", "Local Disk (C:)"). Since 1.17. */
2123
- name: import_zod23.z.string().max(256).optional(),
2228
+ name: import_zod24.z.string().max(256).optional(),
2124
2229
  /** The file system ("apfs", "NTFS", "ext4"). */
2125
- fs: import_zod23.z.string().max(64),
2230
+ fs: import_zod24.z.string().max(64),
2126
2231
  size_bytes: nonNegInt,
2127
2232
  used_bytes: nonNegInt,
2128
2233
  available_bytes: nonNegInt
2129
2234
  });
2130
- var ResourcesSnapshotParams = import_zod23.z.strictObject({});
2131
- var ResourcesSnapshotResult = import_zod23.z.strictObject({
2132
- cpu: import_zod23.z.strictObject({
2235
+ var ResourcesSnapshotParams = import_zod24.z.strictObject({});
2236
+ var ResourcesSnapshotResult = import_zod24.z.strictObject({
2237
+ cpu: import_zod24.z.strictObject({
2133
2238
  /** Busy share of all cores, 0–100, measured now. */
2134
- percent: import_zod23.z.number().min(0).max(100),
2135
- cores: import_zod23.z.int().min(1),
2239
+ percent: import_zod24.z.number().min(0).max(100),
2240
+ cores: import_zod24.z.int().min(1),
2136
2241
  /** 1, 5 and 15 minute load averages; null on Windows. */
2137
- load: import_zod23.z.array(import_zod23.z.number().min(0)).length(3).nullable()
2242
+ load: import_zod24.z.array(import_zod24.z.number().min(0)).length(3).nullable()
2138
2243
  }),
2139
- memory: import_zod23.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
2140
- swap: import_zod23.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
2141
- disks: import_zod23.z.array(ResourcesDisk).max(64),
2244
+ memory: import_zod24.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt, available_bytes: nonNegInt }),
2245
+ swap: import_zod24.z.strictObject({ total_bytes: nonNegInt, used_bytes: nonNegInt }),
2246
+ disks: import_zod24.z.array(ResourcesDisk).max(64),
2142
2247
  uptime_seconds: nonNegInt
2143
2248
  });
2144
- var ResourcesJobKind = import_zod23.z.enum(["type-check", "tests", "build", "lint", "dev server", "language server", "search"]);
2145
- var ResourcesStrain = import_zod23.z.enum(["good", "strain", "overloaded"]);
2146
- var ResourcesPressure = import_zod23.z.enum(["normal", "warning", "critical"]);
2147
- var ResourcesJob = import_zod23.z.strictObject({
2249
+ var ResourcesJobKind = import_zod24.z.enum(["type-check", "tests", "build", "lint", "dev server", "language server", "search"]);
2250
+ var ResourcesStrain = import_zod24.z.enum(["good", "strain", "overloaded"]);
2251
+ var ResourcesPressure = import_zod24.z.enum(["normal", "warning", "critical"]);
2252
+ var ResourcesJob = import_zod24.z.strictObject({
2148
2253
  /** The job's root process (Stop takes its whole tree). */
2149
- pid: import_zod23.z.int().min(0),
2254
+ pid: import_zod24.z.int().min(0),
2150
2255
  kind: ResourcesJobKind,
2151
2256
  /** Its heaviest process's command line, shortened ("…/lib/tsc --noEmit -p tsconfig.json"). */
2152
- command: import_zod23.z.string().max(256),
2257
+ command: import_zod24.z.string().max(256),
2153
2258
  /** Who started it: "Claude Code", "Codex", "Cursor", "VS Code", "Terminal", "local stack", "detached"; null when unknown. */
2154
- started_by: import_zod23.z.string().max(64).nullable(),
2259
+ started_by: import_zod24.z.string().max(64).nullable(),
2155
2260
  /** Whatever started it is gone and nothing waits for it. */
2156
- orphan: import_zod23.z.boolean(),
2261
+ orphan: import_zod24.z.boolean(),
2157
2262
  /** A type-check queued for its turn (no compiler running yet). */
2158
- waiting: import_zod23.z.boolean(),
2263
+ waiting: import_zod24.z.boolean(),
2159
2264
  /** The project folder it runs in ("matrx-frontend"); null when not in one. */
2160
- folder: import_zod23.z.string().max(256).nullable(),
2265
+ folder: import_zod24.z.string().max(256).nullable(),
2161
2266
  /** The same command in the same folder, running this many times (1 = no duplicate). */
2162
- duplicates: import_zod23.z.int().min(1),
2163
- processes: import_zod23.z.int().min(1),
2267
+ duplicates: import_zod24.z.int().min(1),
2268
+ processes: import_zod24.z.int().min(1),
2164
2269
  /** Sum over the tree, as `ps` reports it: 100 = one full core. */
2165
- cpu_percent: import_zod23.z.number().min(0),
2270
+ cpu_percent: import_zod24.z.number().min(0),
2166
2271
  /** Real memory (macOS: the physical footprint Activity Monitor shows, compressed included). */
2167
2272
  memory_bytes: nonNegInt,
2168
2273
  started_at_ms: epochMs.nullable(),
2169
2274
  /** False for an app, an agent session, a terminal, a system process, the local stack or Matrx 2 itself. */
2170
- stoppable: import_zod23.z.boolean()
2275
+ stoppable: import_zod24.z.boolean()
2171
2276
  });
2172
- var ResourcesProcess = import_zod23.z.strictObject({
2173
- pid: import_zod23.z.int().min(0),
2277
+ var ResourcesProcess = import_zod24.z.strictObject({
2278
+ pid: import_zod24.z.int().min(0),
2174
2279
  /** The command line, shortened. */
2175
- name: import_zod23.z.string().max(256),
2176
- cpu_percent: import_zod23.z.number().min(0),
2280
+ name: import_zod24.z.string().max(256),
2281
+ cpu_percent: import_zod24.z.number().min(0),
2177
2282
  memory_bytes: nonNegInt,
2178
- started_by: import_zod23.z.string().max(64).nullable(),
2283
+ started_by: import_zod24.z.string().max(64).nullable(),
2179
2284
  /** The job it belongs to ("type-check in aidream"); null when none. */
2180
- job: import_zod23.z.string().max(256).nullable(),
2285
+ job: import_zod24.z.string().max(256).nullable(),
2181
2286
  started_at_ms: epochMs.nullable()
2182
2287
  });
2183
- var ResourcesVerdict = import_zod23.z.strictObject({
2288
+ var ResourcesVerdict = import_zod24.z.strictObject({
2184
2289
  level: ResourcesStrain,
2185
2290
  /** One sentence ("Your Mac is under strain. 3 type-checks are running at once."). */
2186
- text: import_zod23.z.string().max(256),
2291
+ text: import_zod24.z.string().max(256),
2187
2292
  /** The biggest jobs behind it; null when all is well. */
2188
- cause: import_zod23.z.string().max(1024).nullable()
2293
+ cause: import_zod24.z.string().max(1024).nullable()
2189
2294
  });
2190
- var ResourcesSample = import_zod23.z.strictObject({
2295
+ var ResourcesSample = import_zod24.z.strictObject({
2191
2296
  at_ms: epochMs,
2192
2297
  /** The 1-minute load average. */
2193
- load: import_zod23.z.number().min(0),
2298
+ load: import_zod24.z.number().min(0),
2194
2299
  memory_used_bytes: nonNegInt,
2195
2300
  typechecks: nonNegInt
2196
2301
  });
2197
- var ResourcesActivityParams = import_zod23.z.strictObject({});
2198
- var ResourcesActivityResult = import_zod23.z.strictObject({
2302
+ var ResourcesActivityParams = import_zod24.z.strictObject({});
2303
+ var ResourcesActivityResult = import_zod24.z.strictObject({
2199
2304
  /** False until the first reading (a second or two after start). */
2200
- ready: import_zod23.z.boolean(),
2305
+ ready: import_zod24.z.boolean(),
2201
2306
  sampled_at_ms: epochMs.nullable(),
2202
- cores: import_zod23.z.int().min(1),
2307
+ cores: import_zod24.z.int().min(1),
2203
2308
  /** 1, 5 and 15 minute load averages. */
2204
- load: import_zod23.z.array(import_zod23.z.number().min(0)).length(3),
2205
- memory: import_zod23.z.strictObject({
2309
+ load: import_zod24.z.array(import_zod24.z.number().min(0)).length(3),
2310
+ memory: import_zod24.z.strictObject({
2206
2311
  total_bytes: nonNegInt,
2207
2312
  /** Activity Monitor's Memory Used: app memory + wired + compressed. */
2208
2313
  used_bytes: nonNegInt,
@@ -2213,252 +2318,252 @@ var ResourcesActivityResult = import_zod23.z.strictObject({
2213
2318
  pressure: ResourcesPressure.nullable()
2214
2319
  }),
2215
2320
  verdict: ResourcesVerdict,
2216
- typechecks: import_zod23.z.strictObject({ running: nonNegInt, waiting: nonNegInt, comfort: nonNegInt }),
2321
+ typechecks: import_zod24.z.strictObject({ running: nonNegInt, waiting: nonNegInt, comfort: nonNegInt }),
2217
2322
  /** Heaviest first (1 GB weighs as much as 16 % of a core). */
2218
- jobs: import_zod23.z.array(ResourcesJob).max(200),
2323
+ jobs: import_zod24.z.array(ResourcesJob).max(200),
2219
2324
  /** The 15 heaviest by memory and the 15 busiest by CPU, together. */
2220
- top: import_zod23.z.array(ResourcesProcess).max(30),
2325
+ top: import_zod24.z.array(ResourcesProcess).max(30),
2221
2326
  /** The last hour, oldest first. */
2222
- history: import_zod23.z.array(ResourcesSample).max(1200)
2327
+ history: import_zod24.z.array(ResourcesSample).max(1200)
2223
2328
  });
2224
- var ResourcesStopJobParams = import_zod23.z.strictObject({ pid: import_zod23.z.int().min(1) });
2225
- var ResourcesStopJobResult = import_zod23.z.strictObject({
2329
+ var ResourcesStopJobParams = import_zod24.z.strictObject({ pid: import_zod24.z.int().min(1) });
2330
+ var ResourcesStopJobResult = import_zod24.z.strictObject({
2226
2331
  /** Processes signalled; whatever is still running 5 seconds later is force-stopped. */
2227
2332
  processes: nonNegInt,
2228
2333
  /** It had finished before the request arrived. */
2229
- already_finished: import_zod23.z.boolean()
2334
+ already_finished: import_zod24.z.boolean()
2230
2335
  });
2231
- var ResourcesIncident = import_zod23.z.strictObject({
2336
+ var ResourcesIncident = import_zod24.z.strictObject({
2232
2337
  at_ms: epochMs,
2233
2338
  verdict: ResourcesVerdict,
2234
- load: import_zod23.z.number().min(0),
2339
+ load: import_zod24.z.number().min(0),
2235
2340
  memory_used_bytes: nonNegInt,
2236
2341
  compressed_bytes: nonNegInt,
2237
2342
  pressure: ResourcesPressure.nullable(),
2238
- jobs: import_zod23.z.array(
2239
- import_zod23.z.strictObject({
2343
+ jobs: import_zod24.z.array(
2344
+ import_zod24.z.strictObject({
2240
2345
  kind: ResourcesJobKind,
2241
- started_by: import_zod23.z.string().max(64).nullable(),
2242
- folder: import_zod23.z.string().max(256).nullable(),
2243
- command: import_zod23.z.string().max(256),
2244
- cpu_percent: import_zod23.z.number().min(0),
2346
+ started_by: import_zod24.z.string().max(64).nullable(),
2347
+ folder: import_zod24.z.string().max(256).nullable(),
2348
+ command: import_zod24.z.string().max(256),
2349
+ cpu_percent: import_zod24.z.number().min(0),
2245
2350
  memory_bytes: nonNegInt,
2246
- duplicates: import_zod23.z.int().min(1)
2351
+ duplicates: import_zod24.z.int().min(1)
2247
2352
  })
2248
2353
  ).max(8)
2249
2354
  });
2250
- var ResourcesIncidentsParams = import_zod23.z.strictObject({ limit: import_zod23.z.int().min(1).max(200).default(50) });
2251
- var ResourcesIncidentsResult = import_zod23.z.strictObject({
2355
+ var ResourcesIncidentsParams = import_zod24.z.strictObject({ limit: import_zod24.z.int().min(1).max(200).default(50) });
2356
+ var ResourcesIncidentsResult = import_zod24.z.strictObject({
2252
2357
  /** Newest first; at most one a minute is written. */
2253
- incidents: import_zod23.z.array(ResourcesIncident).max(200)
2358
+ incidents: import_zod24.z.array(ResourcesIncident).max(200)
2254
2359
  });
2255
2360
 
2256
2361
  // src/schema/stack.ts
2257
- var import_zod24 = require("zod");
2258
- var StackServerName = import_zod24.z.string().regex(/^[a-z0-9_-]{1,64}$/);
2259
- var StackTone = import_zod24.z.enum(["good", "wait", "bad", "off"]);
2260
- var StackServer = import_zod24.z.strictObject({
2362
+ var import_zod25 = require("zod");
2363
+ var StackServerName = import_zod25.z.string().regex(/^[a-z0-9_-]{1,64}$/);
2364
+ var StackTone = import_zod25.z.enum(["good", "wait", "bad", "off"]);
2365
+ var StackServer = import_zod25.z.strictObject({
2261
2366
  name: StackServerName,
2262
2367
  /** One word: Healthy, Starting, Unhealthy, Restarting, Stopping, Waiting, Stopped, Crashed, Off. */
2263
- label: import_zod24.z.string().max(32),
2368
+ label: import_zod25.z.string().max(32),
2264
2369
  tone: StackTone,
2265
2370
  /** What is going on, in one or two plain sentences. */
2266
- sentence: import_zod24.z.string().max(2e3),
2371
+ sentence: import_zod25.z.string().max(2e3),
2267
2372
  /** The config's own description of the server. */
2268
- description: import_zod24.z.string().max(512),
2373
+ description: import_zod25.z.string().max(512),
2269
2374
  /** Where the server answers, when its description names an address. */
2270
- open_url: import_zod24.z.string().max(2048).nullable(),
2271
- log_file: import_zod24.z.string().max(4096),
2375
+ open_url: import_zod25.z.string().max(2048).nullable(),
2376
+ log_file: import_zod25.z.string().max(4096),
2272
2377
  /** When its log file was last written. */
2273
2378
  last_output_at_ms: epochMs.nullable(),
2274
2379
  started_at_ms: epochMs.nullable(),
2275
2380
  restarts: nonNegInt,
2276
- exit_code: import_zod24.z.int().nullable(),
2277
- pid: import_zod24.z.int().nullable(),
2381
+ exit_code: import_zod25.z.int().nullable(),
2382
+ pid: import_zod25.z.int().nullable(),
2278
2383
  /** (1.18) CPU of the server's process and everything under it, in percent of one core; absent when it is not running. */
2279
- cpu_percent: import_zod24.z.number().min(0).optional(),
2384
+ cpu_percent: import_zod25.z.number().min(0).optional(),
2280
2385
  /** (1.18) Memory of the same processes: the physical footprint (Activity Monitor's Memory) summed; absent when it is not running. */
2281
2386
  memory_bytes: nonNegInt.optional()
2282
2387
  });
2283
- var StackEvent = import_zod24.z.strictObject({
2388
+ var StackEvent = import_zod25.z.strictObject({
2284
2389
  at_ms: epochMs,
2285
2390
  /** A server name, or "stack" for the stack as a whole. */
2286
- server: import_zod24.z.string().max(64),
2391
+ server: import_zod25.z.string().max(64),
2287
2392
  /** started · stopped · healthy · unhealthy · crashed · exited · restarting · stopping · action · action-done · action-failed · setup · error */
2288
- kind: import_zod24.z.string().max(32),
2289
- text: import_zod24.z.string().max(4e3)
2393
+ kind: import_zod25.z.string().max(32),
2394
+ text: import_zod25.z.string().max(4e3)
2290
2395
  });
2291
- var StackStateParams = import_zod24.z.strictObject({});
2292
- var StackStateResult = import_zod24.z.strictObject({
2396
+ var StackStateParams = import_zod25.z.strictObject({});
2397
+ var StackStateResult = import_zod25.z.strictObject({
2293
2398
  /** The stack's config file, when found. */
2294
- config_path: import_zod24.z.string().max(4096).nullable(),
2399
+ config_path: import_zod25.z.string().max(4096).nullable(),
2295
2400
  /** Why the stack cannot be run from here (no config, no process-compose), else null. */
2296
- problem: import_zod24.z.string().max(1e3).nullable(),
2297
- stack_up: import_zod24.z.boolean(),
2401
+ problem: import_zod25.z.string().max(1e3).nullable(),
2402
+ stack_up: import_zod25.z.boolean(),
2298
2403
  stack_started_at_ms: epochMs.nullable(),
2299
- servers: import_zod24.z.array(StackServer).max(64),
2404
+ servers: import_zod25.z.array(StackServer).max(64),
2300
2405
  /** One line about the one-shot setup steps ("Docker Desktop: running."), or null. */
2301
- setup_note: import_zod24.z.string().max(500).nullable(),
2406
+ setup_note: import_zod25.z.string().max(500).nullable(),
2302
2407
  /** Start everything / Stop everything in flight. */
2303
- pending: import_zod24.z.strictObject({ verb: import_zod24.z.enum(["start", "stop"]), label: import_zod24.z.string().max(64), since_ms: epochMs }).nullable(),
2408
+ pending: import_zod25.z.strictObject({ verb: import_zod25.z.enum(["start", "stop"]), label: import_zod25.z.string().max(64), since_ms: epochMs }).nullable(),
2304
2409
  /** The newest entries last. */
2305
- events: import_zod24.z.array(StackEvent).max(300)
2410
+ events: import_zod25.z.array(StackEvent).max(300)
2306
2411
  });
2307
- var StackStartParams = import_zod24.z.strictObject({});
2308
- var StackStopParams = import_zod24.z.strictObject({});
2309
- var StackRunResult = import_zod24.z.strictObject({ accepted: import_zod24.z.boolean() });
2310
- var StackServerActionParams = import_zod24.z.strictObject({
2412
+ var StackStartParams = import_zod25.z.strictObject({});
2413
+ var StackStopParams = import_zod25.z.strictObject({});
2414
+ var StackRunResult = import_zod25.z.strictObject({ accepted: import_zod25.z.boolean() });
2415
+ var StackServerActionParams = import_zod25.z.strictObject({
2311
2416
  name: StackServerName,
2312
- verb: import_zod24.z.enum(["start", "stop", "restart"])
2417
+ verb: import_zod25.z.enum(["start", "stop", "restart"])
2313
2418
  });
2314
- var StackServerActionResult = import_zod24.z.strictObject({ message: import_zod24.z.string().max(1e3) });
2315
- var StackLogsParams = import_zod24.z.strictObject({
2419
+ var StackServerActionResult = import_zod25.z.strictObject({ message: import_zod25.z.string().max(1e3) });
2420
+ var StackLogsParams = import_zod25.z.strictObject({
2316
2421
  name: StackServerName,
2317
2422
  /** Without `offset`: the last this-many complete lines. With it: new lines after it, at most this many. */
2318
- lines: import_zod24.z.int().min(1).max(2e5).default(2e3),
2423
+ lines: import_zod25.z.int().min(1).max(2e5).default(2e3),
2319
2424
  /** Byte offset the last read ended at: answer only what was written after it (follow). */
2320
2425
  offset: nonNegInt.optional(),
2321
2426
  /** A "Clear" point: the lines written after this byte offset (no `offset`). */
2322
2427
  since: nonNegInt.optional(),
2323
2428
  /** With `offset`: wait up to this long for a new line when none is waiting (0 answers at once). */
2324
- wait_ms: import_zod24.z.int().min(0).max(25e3).default(0)
2429
+ wait_ms: import_zod25.z.int().min(0).max(25e3).default(0)
2325
2430
  });
2326
- var StackLogsResult = import_zod24.z.strictObject({
2431
+ var StackLogsResult = import_zod25.z.strictObject({
2327
2432
  /** Complete lines, colour codes removed. */
2328
- lines: import_zod24.z.array(import_zod24.z.string().max(65536)).max(2e5),
2433
+ lines: import_zod25.z.array(import_zod25.z.string().max(65536)).max(2e5),
2329
2434
  /** Where these lines end: pass it back as `offset` to follow. */
2330
2435
  offset: nonNegInt,
2331
2436
  /** False when `since` no longer exists (the log rotated): the lines are the plain tail instead. */
2332
- since_valid: import_zod24.z.boolean(),
2437
+ since_valid: import_zod25.z.boolean(),
2333
2438
  /** The log was rotated or truncated since `offset`: these lines start the file again. */
2334
- reset: import_zod24.z.boolean(),
2335
- log_file: import_zod24.z.string().max(4096)
2439
+ reset: import_zod25.z.boolean(),
2440
+ log_file: import_zod25.z.string().max(4096)
2336
2441
  });
2337
- var StackErrorsParams = import_zod24.z.strictObject({
2338
- window_minutes: import_zod24.z.int().min(1).max(1440).default(60)
2442
+ var StackErrorsParams = import_zod25.z.strictObject({
2443
+ window_minutes: import_zod25.z.int().min(1).max(1440).default(60)
2339
2444
  });
2340
- var StackErrorsResult = import_zod24.z.strictObject({
2445
+ var StackErrorsResult = import_zod25.z.strictObject({
2341
2446
  /** Per server: a heading line ("=== aidream — errors in the last 60 minutes (<file>) ===") and each error with the 10 lines after it. */
2342
- sections: import_zod24.z.array(import_zod24.z.strictObject({ name: StackServerName, heading: import_zod24.z.string().max(4096), lines: import_zod24.z.array(import_zod24.z.string().max(65536)).max(5e3) })).max(64),
2343
- window_minutes: import_zod24.z.int().min(1).max(1440)
2447
+ sections: import_zod25.z.array(import_zod25.z.strictObject({ name: StackServerName, heading: import_zod25.z.string().max(4096), lines: import_zod25.z.array(import_zod25.z.string().max(65536)).max(5e3) })).max(64),
2448
+ window_minutes: import_zod25.z.int().min(1).max(1440)
2344
2449
  });
2345
2450
 
2346
2451
  // src/schema/audio.ts
2347
- var import_zod25 = require("zod");
2348
- var AudioDevice = import_zod25.z.strictObject({
2452
+ var import_zod26 = require("zod");
2453
+ var AudioDevice = import_zod26.z.strictObject({
2349
2454
  /** The OS's name for it, as audio.record takes it. */
2350
- id: import_zod25.z.string().min(1).max(256),
2351
- name: import_zod25.z.string().max(256),
2352
- default: import_zod25.z.boolean()
2455
+ id: import_zod26.z.string().min(1).max(256),
2456
+ name: import_zod26.z.string().max(256),
2457
+ default: import_zod26.z.boolean()
2353
2458
  });
2354
- var AudioDevicesParams = import_zod25.z.strictObject({});
2355
- var AudioDevicesResult = import_zod25.z.strictObject({
2356
- inputs: import_zod25.z.array(AudioDevice).max(64),
2357
- outputs: import_zod25.z.array(AudioDevice).max(64)
2459
+ var AudioDevicesParams = import_zod26.z.strictObject({});
2460
+ var AudioDevicesResult = import_zod26.z.strictObject({
2461
+ inputs: import_zod26.z.array(AudioDevice).max(64),
2462
+ outputs: import_zod26.z.array(AudioDevice).max(64)
2358
2463
  });
2359
- var AudioRecordParams = import_zod25.z.strictObject({
2360
- seconds: import_zod25.z.number().min(0.5).max(600),
2464
+ var AudioRecordParams = import_zod26.z.strictObject({
2465
+ seconds: import_zod26.z.number().min(0.5).max(600),
2361
2466
  /** The microphone (from audio.devices); the default input when absent. */
2362
- device_id: import_zod25.z.string().min(1).max(256).optional(),
2467
+ device_id: import_zod26.z.string().min(1).max(256).optional(),
2363
2468
  /** Where the WAV file goes; a new file in the temp folder when absent. */
2364
2469
  path: AbsPath.optional()
2365
2470
  });
2366
- var AudioRecordResult = import_zod25.z.strictObject({
2471
+ var AudioRecordResult = import_zod26.z.strictObject({
2367
2472
  path: AbsPath,
2368
- seconds: import_zod25.z.number().min(0),
2473
+ seconds: import_zod26.z.number().min(0),
2369
2474
  bytes: nonNegInt,
2370
2475
  /** Loudest sample, 0–1: 0 means the device gave silence. */
2371
- peak: import_zod25.z.number().min(0).max(1)
2476
+ peak: import_zod26.z.number().min(0).max(1)
2372
2477
  });
2373
- var AudioPlayParams = import_zod25.z.strictObject({ path: AbsPath });
2374
- var AudioPlayResult = import_zod25.z.strictObject({ path: AbsPath, seconds: import_zod25.z.number().min(0) });
2478
+ var AudioPlayParams = import_zod26.z.strictObject({ path: AbsPath });
2479
+ var AudioPlayResult = import_zod26.z.strictObject({ path: AbsPath, seconds: import_zod26.z.number().min(0) });
2375
2480
 
2376
2481
  // src/schema/fs-watch.ts
2377
- var import_zod26 = require("zod");
2378
- var FsWatchId = import_zod26.z.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
2379
- var FsWatchStartParams = import_zod26.z.strictObject({
2482
+ var import_zod27 = require("zod");
2483
+ var FsWatchId = import_zod27.z.string().regex(/^fw_[A-Za-z0-9]{12,40}$/);
2484
+ var FsWatchStartParams = import_zod27.z.strictObject({
2380
2485
  path: AbsPath,
2381
- recursive: import_zod26.z.boolean().default(true),
2486
+ recursive: import_zod27.z.boolean().default(true),
2382
2487
  /** Globs relative to `path` whose changes are not reported (".git/**", "node_modules/**"). */
2383
- ignore: import_zod26.z.array(import_zod26.z.string().max(256)).max(64).default([])
2488
+ ignore: import_zod27.z.array(import_zod27.z.string().max(256)).max(64).default([])
2384
2489
  });
2385
- var FsWatchStartResult = import_zod26.z.strictObject({
2490
+ var FsWatchStartResult = import_zod27.z.strictObject({
2386
2491
  watch_id: FsWatchId,
2387
2492
  path: AbsPath,
2388
2493
  /** The watch ends by itself if nobody reads it for 30 minutes. */
2389
2494
  expires_at_ms: epochMs
2390
2495
  });
2391
- var FsWatchEventsParams = import_zod26.z.strictObject({
2496
+ var FsWatchEventsParams = import_zod27.z.strictObject({
2392
2497
  watch_id: FsWatchId,
2393
2498
  /** Wait up to this long for a first change when none is waiting (0 answers at once). */
2394
- wait_ms: import_zod26.z.int().min(0).max(25e3).default(0)
2499
+ wait_ms: import_zod27.z.int().min(0).max(25e3).default(0)
2395
2500
  });
2396
- var FsWatchEventsResult = import_zod26.z.strictObject({
2501
+ var FsWatchEventsResult = import_zod27.z.strictObject({
2397
2502
  /** What changed since the last read, oldest first; re-checked against the disk when read. */
2398
- changes: import_zod26.z.array(FsChange).max(1e3),
2503
+ changes: import_zod27.z.array(FsChange).max(1e3),
2399
2504
  /** Changes were dropped (more than 1000 waited): list the folder again. */
2400
- overflow: import_zod26.z.boolean(),
2505
+ overflow: import_zod27.z.boolean(),
2401
2506
  expires_at_ms: epochMs
2402
2507
  });
2403
- var FsWatchStopParams = import_zod26.z.strictObject({ watch_id: FsWatchId });
2404
- var FsWatchStopResult = import_zod26.z.strictObject({ watch_id: FsWatchId });
2508
+ var FsWatchStopParams = import_zod27.z.strictObject({ watch_id: FsWatchId });
2509
+ var FsWatchStopResult = import_zod27.z.strictObject({ watch_id: FsWatchId });
2405
2510
 
2406
2511
  // src/schema/exec-job.ts
2407
- var import_zod27 = require("zod");
2408
- var ExecJobId = import_zod27.z.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
2409
- var ExecJobStartParams = import_zod27.z.strictObject({
2410
- command: import_zod27.z.string().min(1).max(131072),
2512
+ var import_zod28 = require("zod");
2513
+ var ExecJobId = import_zod28.z.string().regex(/^job_[A-Za-z0-9]{12,40}$/);
2514
+ var ExecJobStartParams = import_zod28.z.strictObject({
2515
+ command: import_zod28.z.string().min(1).max(131072),
2411
2516
  /** The folder it runs in; the home folder when absent. */
2412
2517
  cwd: AbsPath.optional(),
2413
- env: import_zod27.z.record(import_zod27.z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), import_zod27.z.string().max(32768)).optional()
2518
+ env: import_zod28.z.record(import_zod28.z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(128), import_zod28.z.string().max(32768)).optional()
2414
2519
  });
2415
- var ExecJobStartResult = import_zod27.z.strictObject({ job_id: ExecJobId, pid: import_zod27.z.int().min(1), cwd: AbsPath });
2416
- var ExecJobOutputParams = import_zod27.z.strictObject({
2520
+ var ExecJobStartResult = import_zod28.z.strictObject({ job_id: ExecJobId, pid: import_zod28.z.int().min(1), cwd: AbsPath });
2521
+ var ExecJobOutputParams = import_zod28.z.strictObject({
2417
2522
  job_id: ExecJobId,
2418
2523
  /** Byte offset into the job's output to read from (next_offset of the last read; 0 = the start). */
2419
2524
  offset: nonNegInt.default(0),
2420
2525
  /** Wait up to this long for new output or the exit when none is waiting (0 answers at once). */
2421
- wait_ms: import_zod27.z.int().min(0).max(25e3).default(0),
2422
- max_bytes: import_zod27.z.int().min(1024).max(1048576).default(65536)
2526
+ wait_ms: import_zod28.z.int().min(0).max(25e3).default(0),
2527
+ max_bytes: import_zod28.z.int().min(1024).max(1048576).default(65536)
2423
2528
  });
2424
- var ExecJobOutputResult = import_zod27.z.strictObject({
2529
+ var ExecJobOutputResult = import_zod28.z.strictObject({
2425
2530
  /** stdout and stderr interleaved as they arrived (UTF-8). */
2426
- output: import_zod27.z.string(),
2531
+ output: import_zod28.z.string(),
2427
2532
  next_offset: nonNegInt,
2428
2533
  /** Bytes before `offset` that are gone (the job keeps its last 4 MiB). */
2429
2534
  dropped_bytes: nonNegInt,
2430
- running: import_zod27.z.boolean(),
2431
- exit_code: import_zod27.z.int().nullable()
2535
+ running: import_zod28.z.boolean(),
2536
+ exit_code: import_zod28.z.int().nullable()
2432
2537
  });
2433
- var ExecJobStopParams = import_zod27.z.strictObject({
2538
+ var ExecJobStopParams = import_zod28.z.strictObject({
2434
2539
  job_id: ExecJobId,
2435
2540
  /** End it at once (SIGKILL; on Windows the whole tree with /F) instead of asking it to quit. */
2436
- force: import_zod27.z.boolean().default(false)
2541
+ force: import_zod28.z.boolean().default(false)
2437
2542
  });
2438
- var ExecJobStopResult = import_zod27.z.strictObject({ job_id: ExecJobId, exited: import_zod27.z.boolean(), exit_code: import_zod27.z.int().nullable() });
2439
- var ExecJobInfo = import_zod27.z.strictObject({
2543
+ var ExecJobStopResult = import_zod28.z.strictObject({ job_id: ExecJobId, exited: import_zod28.z.boolean(), exit_code: import_zod28.z.int().nullable() });
2544
+ var ExecJobInfo = import_zod28.z.strictObject({
2440
2545
  job_id: ExecJobId,
2441
- command: import_zod27.z.string().max(1024),
2442
- pid: import_zod27.z.int().min(1),
2546
+ command: import_zod28.z.string().max(1024),
2547
+ pid: import_zod28.z.int().min(1),
2443
2548
  cwd: AbsPath,
2444
- running: import_zod27.z.boolean(),
2445
- exit_code: import_zod27.z.int().nullable(),
2549
+ running: import_zod28.z.boolean(),
2550
+ exit_code: import_zod28.z.int().nullable(),
2446
2551
  started_at_ms: epochMs,
2447
2552
  output_bytes: nonNegInt
2448
2553
  });
2449
- var ExecJobListParams = import_zod27.z.strictObject({});
2450
- var ExecJobListResult = import_zod27.z.strictObject({ jobs: import_zod27.z.array(ExecJobInfo).max(64) });
2554
+ var ExecJobListParams = import_zod28.z.strictObject({});
2555
+ var ExecJobListResult = import_zod28.z.strictObject({ jobs: import_zod28.z.array(ExecJobInfo).max(64) });
2451
2556
 
2452
2557
  // src/schema/coding.ts
2453
- var import_zod28 = require("zod");
2558
+ var import_zod29 = require("zod");
2454
2559
  var import_uuid3 = require("@ai-matrx/kit/uuid");
2455
- var CodingServiceCredentials = import_zod28.z.strictObject({
2456
- access_token: import_zod28.z.string().min(16).max(16384),
2457
- user_id: import_zod28.z.string().regex(import_uuid3.UUID_SHAPE_PATTERN),
2560
+ var CodingServiceCredentials = import_zod29.z.strictObject({
2561
+ access_token: import_zod29.z.string().min(16).max(16384),
2562
+ user_id: import_zod29.z.string().regex(import_uuid3.UUID_SHAPE_PATTERN),
2458
2563
  /** The AI Matrx server this app talks to (production, or a local server on the nightly copy). */
2459
- server_url: import_zod28.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
2564
+ server_url: import_zod29.z.string().min(1).max(2048).regex(/^https?:\/\/[^\s/?#]+(\/[^\s?#]*)?$/)
2460
2565
  });
2461
- var CodingHistoryBlocked = import_zod28.z.enum([
2566
+ var CodingHistoryBlocked = import_zod29.z.enum([
2462
2567
  "signed_out",
2463
2568
  "offline",
2464
2569
  "organization_required",
@@ -2466,11 +2571,11 @@ var CodingHistoryBlocked = import_zod28.z.enum([
2466
2571
  "cloud_list_unavailable",
2467
2572
  "history_too_large"
2468
2573
  ]);
2469
- var CodingHistoryFailure = import_zod28.z.strictObject({
2470
- session_id: import_zod28.z.string().max(64),
2471
- reason: import_zod28.z.string().max(300)
2574
+ var CodingHistoryFailure = import_zod29.z.strictObject({
2575
+ session_id: import_zod29.z.string().max(64),
2576
+ reason: import_zod29.z.string().max(300)
2472
2577
  });
2473
- var CodingHistoryRun = import_zod28.z.strictObject({
2578
+ var CodingHistoryRun = import_zod29.z.strictObject({
2474
2579
  /** Claude Code sessions found on this computer. */
2475
2580
  local_sessions: nonNegInt,
2476
2581
  /** Of those, already complete in AI Matrx. */
@@ -2485,39 +2590,39 @@ var CodingHistoryRun = import_zod28.z.strictObject({
2485
2590
  /** Changed while being read; a later run takes them. */
2486
2591
  changed: nonNegInt,
2487
2592
  failed: nonNegInt,
2488
- failures: import_zod28.z.array(CodingHistoryFailure).max(20),
2593
+ failures: import_zod29.z.array(CodingHistoryFailure).max(20),
2489
2594
  /** Candidates not reached yet. */
2490
2595
  remaining: nonNegInt,
2491
2596
  /** The one line a person reads, e.g. "Imported 12 of 14 sessions. 140 already in AI Matrx." */
2492
- summary: import_zod28.z.string().max(400)
2597
+ summary: import_zod29.z.string().max(400)
2493
2598
  });
2494
- var CodingHistoryStep = import_zod28.z.strictObject({
2599
+ var CodingHistoryStep = import_zod29.z.strictObject({
2495
2600
  /** Null when the run could not start (blocked before a plan existed). */
2496
- plan_id: import_zod28.z.string().regex(/^[0-9a-f]{32}$/).nullable(),
2497
- finished: import_zod28.z.boolean(),
2601
+ plan_id: import_zod29.z.string().regex(/^[0-9a-f]{32}$/).nullable(),
2602
+ finished: import_zod29.z.boolean(),
2498
2603
  blocked: CodingHistoryBlocked.nullable(),
2499
2604
  run: CodingHistoryRun
2500
2605
  });
2501
- var CodingPlanMissingParams = import_zod28.z.strictObject({ credentials: CodingServiceCredentials.nullable() });
2502
- var CodingImportNextParams = import_zod28.z.strictObject({
2503
- plan_id: import_zod28.z.string().regex(/^[0-9a-f]{32}$/),
2606
+ var CodingPlanMissingParams = import_zod29.z.strictObject({ credentials: CodingServiceCredentials.nullable() });
2607
+ var CodingImportNextParams = import_zod29.z.strictObject({
2608
+ plan_id: import_zod29.z.string().regex(/^[0-9a-f]{32}$/),
2504
2609
  credentials: CodingServiceCredentials.nullable()
2505
2610
  });
2506
- var CodingServiceProgress = import_zod28.z.strictObject({
2507
- phase: import_zod28.z.enum(["checking", "importing"]),
2611
+ var CodingServiceProgress = import_zod29.z.strictObject({
2612
+ phase: import_zod29.z.enum(["checking", "importing"]),
2508
2613
  done: nonNegInt,
2509
2614
  total: nonNegInt
2510
2615
  });
2511
- var CodingHistoryImportMissingParams = import_zod28.z.strictObject({});
2512
- var CodingHistoryImportMissingResult = import_zod28.z.strictObject({
2513
- state: import_zod28.z.enum(["done", "blocked", "cancelled"]),
2616
+ var CodingHistoryImportMissingParams = import_zod29.z.strictObject({});
2617
+ var CodingHistoryImportMissingResult = import_zod29.z.strictObject({
2618
+ state: import_zod29.z.enum(["done", "blocked", "cancelled"]),
2514
2619
  blocked: CodingHistoryBlocked.nullable(),
2515
2620
  run: CodingHistoryRun,
2516
2621
  elapsed_ms: nonNegInt
2517
2622
  });
2518
- var CodingHistoryProgressEvent = import_zod28.z.strictObject({
2623
+ var CodingHistoryProgressEvent = import_zod29.z.strictObject({
2519
2624
  request_id: RequestId,
2520
- phase: import_zod28.z.enum(["checking", "importing"]),
2625
+ phase: import_zod29.z.enum(["checking", "importing"]),
2521
2626
  /** Sessions settled so far, of `total` candidates (0 of 0 while checking). */
2522
2627
  done: nonNegInt,
2523
2628
  total: nonNegInt,
@@ -2633,6 +2738,11 @@ var OPS = {
2633
2738
  "stack.server.action": { params: StackServerActionParams, result: StackServerActionResult, kind: "unary", since: "1.16", errors: ["NOT_FOUND", "CONFLICT", "INTERNAL"] },
2634
2739
  "stack.logs": { params: StackLogsParams, result: StackLogsResult, kind: "unary", since: "1.16", errors: ["NOT_FOUND", "INTERNAL"] },
2635
2740
  "stack.errors": { params: StackErrorsParams, result: StackErrorsResult, kind: "unary", since: "1.16", errors: ["INTERNAL"] },
2741
+ // The device's error ledger (SPEC §3.12): every process's errors, grouped, delivered to ops.system_error.
2742
+ "diag.errors.list": { params: DiagErrorsListParams, result: DiagErrorsListResult, kind: "unary", since: "1.20", errors: ["INTERNAL"] },
2743
+ "diag.errors.report": { params: DiagErrorsReportParams, result: DiagErrorsReportResult, kind: "unary", since: "1.20", errors: ["INTERNAL"] },
2744
+ // 1.21: what a window's sidebar draws (the Move-all grouping check).
2745
+ "apps.windows.shown": { params: AppsWindowsShownParams, result: AppsWindowsShownResult, kind: "unary", since: "1.21", errors: ["NOT_FOUND", "PERMISSION_DENIED_OS", "PLATFORM_UNSUPPORTED", "INTERNAL"] },
2636
2746
  // Claude Code history (SPEC §6 coding): served by the `coding` Python service through SERVICES below.
2637
2747
  "coding.history.import_missing": { params: CodingHistoryImportMissingParams, result: CodingHistoryImportMissingResult, kind: "unary", since: "1.5", errors: ["RESOURCE_BUSY", "RESOURCE_GONE", "CANCELLED", "INTERNAL"] }
2638
2748
  };
@@ -2647,7 +2757,8 @@ var EVENTS = {
2647
2757
  "models.progress": ModelsProgressEvent,
2648
2758
  "coding.history.progress": CodingHistoryProgressEvent,
2649
2759
  "relay.device_status": RelayDeviceStatusEvent,
2650
- "relay.auth_expiring": RelayAuthExpiringEvent
2760
+ "relay.auth_expiring": RelayAuthExpiringEvent,
2761
+ "diag.errors.changed": DiagErrorsChangedEvent
2651
2762
  };
2652
2763
  var SERVICES = {
2653
2764
  ml: {
@@ -2893,6 +3004,15 @@ var NAMED_SCHEMAS = {
2893
3004
  StackLogsResult,
2894
3005
  StackErrorsParams,
2895
3006
  StackErrorsResult,
3007
+ DiagProcess,
3008
+ DiagErrorKind,
3009
+ DiagErrorStatus,
3010
+ DiagErrorEntry,
3011
+ DiagErrorsListParams,
3012
+ DiagErrorsListResult,
3013
+ DiagErrorsReportParams,
3014
+ DiagErrorsReportResult,
3015
+ DiagErrorsChangedEvent,
2896
3016
  FsWatchId,
2897
3017
  FsWatchStartParams,
2898
3018
  FsWatchStartResult,
@@ -2991,6 +3111,9 @@ var NAMED_SCHEMAS = {
2991
3111
  ProjectMoveGroup,
2992
3112
  AppsProjectsToWindowParams,
2993
3113
  AppsProjectsToWindowResult,
3114
+ ShownSection,
3115
+ AppsWindowsShownParams,
3116
+ AppsWindowsShownResult,
2994
3117
  ColdChat,
2995
3118
  AppsChatsColdParams,
2996
3119
  AppsChatsColdResult,
@@ -3159,7 +3282,7 @@ function forPeer(op, part, value, version) {
3159
3282
  var VERSIONED_RESULT_OPS = [.../* @__PURE__ */ new Set([...RESULT_PATH.keys(), ...WINDOW_RESULTS.keys(), ...NESTED_RESULTS.keys()])];
3160
3283
 
3161
3284
  // src/contract.ts
3162
- var CONTRACT_SHA256 = "4fc16cc5bdaf7d666d5a0916ad3cd362df192d0238655ea288e7ffe15e54f246";
3285
+ var CONTRACT_SHA256 = "5745ca5b70c283eadfce68d0c66c06207405b60c7e112cb75aca7ff29b15d12e";
3163
3286
 
3164
3287
  // src/close-policy.ts
3165
3288
  var CLOSE_RULES = {