@agentknight/client 0.9.43 → 0.9.45

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/cli.js CHANGED
@@ -484,7 +484,7 @@ ${environmentAssignment("AGENTKNIGHT_HOME", persistedHome)}
484
484
  }
485
485
 
486
486
  // src/config.ts
487
- import { z as z28 } from "zod";
487
+ import { z as z29 } from "zod";
488
488
 
489
489
  // ../../shared/protocol/dist/common/version.js
490
490
  import { z } from "zod";
@@ -1230,33 +1230,52 @@ var A2aRelayResponseSchema = z11.object({
1230
1230
  body: z11.string().max(A2A_BODY_MAX_LENGTH)
1231
1231
  }).strict();
1232
1232
 
1233
- // ../../shared/protocol/dist/sessions/session-communication.js
1233
+ // ../../shared/protocol/dist/transport/browser-open-url.js
1234
1234
  import { z as z12 } from "zod";
1235
- var SessionCommunicationIdSchema = z12.string().min(1).max(256).refine((value) => value === value.trim(), "Expected an unpadded identity");
1235
+ var BROWSER_OPEN_URL_MAX_LENGTH = 8192;
1236
+ var BrowserOpenUrlParamsSchema = z12.strictObject({
1237
+ url: z12.string().min(1).max(BROWSER_OPEN_URL_MAX_LENGTH).refine((value) => {
1238
+ if (!/^https?:\/\//i.test(value) || /[\s\p{Cc}\\]/u.test(value) || /%(?![0-9a-f]{2})/i.test(value))
1239
+ return false;
1240
+ const authority = value.split(/[/?#]/)[2];
1241
+ if (!authority || /[@%]|[^\x21-\x7e]/.test(authority))
1242
+ return false;
1243
+ try {
1244
+ return new URL(value).hostname.length > 0;
1245
+ } catch {
1246
+ return false;
1247
+ }
1248
+ }, "Expected an absolute HTTP(S) URL without credentials or whitespace")
1249
+ });
1250
+ var BrowserOpenUrlResultSchema = z12.strictObject({ opened: z12.literal(true) });
1251
+
1252
+ // ../../shared/protocol/dist/sessions/session-communication.js
1253
+ import { z as z13 } from "zod";
1254
+ var SessionCommunicationIdSchema = z13.string().min(1).max(256).refine((value) => value === value.trim(), "Expected an unpadded identity");
1236
1255
  var SessionCommunicationIdentityShape = {
1237
1256
  requestId: SessionCommunicationIdSchema,
1238
1257
  machineId: SessionCommunicationIdSchema,
1239
1258
  sessionId: SessionCommunicationIdSchema,
1240
- operation: z12.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$/u),
1241
- version: z12.number().int().positive().max(2147483647)
1259
+ operation: z13.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$/u),
1260
+ version: z13.number().int().positive().max(2147483647)
1242
1261
  };
1243
- var SessionCommunicationDataSchema = z12.record(z12.string(), z12.json());
1244
- var SessionCommunicationRequestSchema = z12.object({
1262
+ var SessionCommunicationDataSchema = z13.record(z13.string(), z13.json());
1263
+ var SessionCommunicationRequestSchema = z13.object({
1245
1264
  ...SessionCommunicationIdentityShape,
1246
- kind: z12.literal("request"),
1265
+ kind: z13.literal("request"),
1247
1266
  data: SessionCommunicationDataSchema
1248
1267
  }).strict();
1249
- var SessionCommunicationResponseSchema = z12.object({
1268
+ var SessionCommunicationResponseSchema = z13.object({
1250
1269
  ...SessionCommunicationIdentityShape,
1251
- kind: z12.literal("response"),
1270
+ kind: z13.literal("response"),
1252
1271
  data: SessionCommunicationDataSchema
1253
1272
  }).strict();
1254
- var SessionCommunicationErrorSchema = z12.object({
1273
+ var SessionCommunicationErrorSchema = z13.object({
1255
1274
  ...SessionCommunicationIdentityShape,
1256
- kind: z12.literal("error"),
1275
+ kind: z13.literal("error"),
1257
1276
  error: ProtocolFailureSchema
1258
1277
  }).strict();
1259
- var SessionCommunicationSchema = z12.discriminatedUnion("kind", [
1278
+ var SessionCommunicationSchema = z13.discriminatedUnion("kind", [
1260
1279
  SessionCommunicationRequestSchema,
1261
1280
  SessionCommunicationResponseSchema,
1262
1281
  SessionCommunicationErrorSchema
@@ -1266,7 +1285,7 @@ function sessionCommunicationOperationCapability(operation, version) {
1266
1285
  }
1267
1286
 
1268
1287
  // ../../shared/protocol/dist/sessions/session-workspace.js
1269
- import { z as z13 } from "zod";
1288
+ import { z as z14 } from "zod";
1270
1289
  var SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH = 32768;
1271
1290
  var SESSION_PROJECT_IDENTITY_MAX_RESPONSE_BYTES = 640 * 1024;
1272
1291
  var SESSION_DIRECTORY_MAX_PATH_LENGTH = 1024;
@@ -1307,47 +1326,47 @@ function isSafeSessionDirectoryPath(path) {
1307
1326
  const segments = path.split("/");
1308
1327
  return segments.length <= SESSION_DIRECTORY_MAX_DEPTH && segments.every((segment) => segment.length > 0 && segment.length <= 255 && segment !== "." && segment !== ".." && !/[\\:<>"|?*\u0000-\u001f\u007f]/u.test(segment) && !/[. ]$/u.test(segment) && !/~[0-9]/u.test(segment) && !/^(?:con|prn|aux|nul|com[0-9¹²³]|lpt[0-9¹²³])(?:[ .]|$)/iu.test(segment) && !/^(?:conin\$|conout\$)$/iu.test(segment));
1309
1328
  }
1310
- var SessionDirectoryListRequestSchema = z13.object({
1329
+ var SessionDirectoryListRequestSchema = z14.object({
1311
1330
  requestId: IdSchema,
1312
1331
  machineId: IdSchema,
1313
1332
  sessionId: IdSchema,
1314
- path: z13.string().max(SESSION_DIRECTORY_MAX_PATH_LENGTH)
1333
+ path: z14.string().max(SESSION_DIRECTORY_MAX_PATH_LENGTH)
1315
1334
  }).strict();
1316
- var SessionDirectoryEntrySchema = z13.object({
1317
- name: z13.string().min(1).max(255),
1318
- kind: z13.enum(["directory", "file", "blocked"])
1335
+ var SessionDirectoryEntrySchema = z14.object({
1336
+ name: z14.string().min(1).max(255),
1337
+ kind: z14.enum(["directory", "file", "blocked"])
1319
1338
  }).strict();
1320
1339
  var SessionDirectoryListDataSchema = SessionDirectoryListRequestSchema.pick({ path: true });
1321
- var SessionDirectoryListResultDataSchema = z13.object({
1322
- path: z13.string().max(SESSION_DIRECTORY_MAX_PATH_LENGTH),
1323
- rootRevision: z13.string().min(1).max(128),
1324
- entries: z13.array(SessionDirectoryEntrySchema).max(SESSION_DIRECTORY_MAX_ENTRIES)
1340
+ var SessionDirectoryListResultDataSchema = z14.object({
1341
+ path: z14.string().max(SESSION_DIRECTORY_MAX_PATH_LENGTH),
1342
+ rootRevision: z14.string().min(1).max(128),
1343
+ entries: z14.array(SessionDirectoryEntrySchema).max(SESSION_DIRECTORY_MAX_ENTRIES)
1325
1344
  }).strict();
1326
1345
  var SessionDirectoryListResponseSchema = SessionDirectoryListRequestSchema.extend({
1327
- rootRevision: z13.string().min(1).max(128).optional(),
1328
- entries: z13.array(SessionDirectoryEntrySchema).max(SESSION_DIRECTORY_MAX_ENTRIES).optional(),
1346
+ rootRevision: z14.string().min(1).max(128).optional(),
1347
+ entries: z14.array(SessionDirectoryEntrySchema).max(SESSION_DIRECTORY_MAX_ENTRIES).optional(),
1329
1348
  error: ProtocolFailureSchema.optional()
1330
1349
  }).superRefine((response, context) => {
1331
1350
  if (response.error === void 0 ? response.entries === void 0 || response.rootRevision === void 0 : response.entries !== void 0 || response.rootRevision !== void 0) {
1332
1351
  context.addIssue({ code: "custom", message: "Expected directory success or failure" });
1333
1352
  }
1334
1353
  });
1335
- var SessionFileReadDataSchema = z13.object({
1336
- path: z13.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
1337
- rootRevision: z13.string().regex(/^[A-Za-z0-9_-]{43}$/u)
1354
+ var SessionFileReadDataSchema = z14.object({
1355
+ path: z14.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
1356
+ rootRevision: z14.string().regex(/^[A-Za-z0-9_-]{43}$/u)
1338
1357
  }).strict();
1339
1358
  function fileResultSchema(mediaTypes, extended) {
1340
1359
  const maxOriginal = extended ? SESSION_FILE_V2_MAX_ORIGINAL_BYTES : SESSION_FILE_MAX_ORIGINAL_BYTES;
1341
1360
  const maxTransfer = extended ? SESSION_FILE_V2_MAX_TRANSFER_BYTES : SESSION_FILE_MAX_TRANSFER_BYTES;
1342
- return z13.object({
1361
+ return z14.object({
1343
1362
  path: SessionFileReadDataSchema.shape.path,
1344
1363
  rootRevision: SessionFileReadDataSchema.shape.rootRevision,
1345
- mediaType: z13.enum(mediaTypes),
1346
- originalByteLength: z13.number().int().min(0).max(maxOriginal),
1364
+ mediaType: z14.enum(mediaTypes),
1365
+ originalByteLength: z14.number().int().min(0).max(maxOriginal),
1347
1366
  // Canonical length after decompression, not the length of the transport bytes.
1348
- byteLength: z13.number().int().min(0).max(maxOriginal),
1349
- encoding: z13.enum(["identity", "gzip"]),
1350
- data: z13.string().max(extended ? SESSION_FILE_V2_MAX_BASE64_LENGTH : SESSION_FILE_MAX_BASE64_LENGTH)
1367
+ byteLength: z14.number().int().min(0).max(maxOriginal),
1368
+ encoding: z14.enum(["identity", "gzip"]),
1369
+ data: z14.string().max(extended ? SESSION_FILE_V2_MAX_BASE64_LENGTH : SESSION_FILE_MAX_BASE64_LENGTH)
1351
1370
  }).strict().superRefine((result, context) => {
1352
1371
  const invalid = () => context.addIssue({ code: "custom", message: "Invalid file content" });
1353
1372
  if (result.encoding === "gzip" !== result.originalByteLength >= SESSION_FILE_GZIP_THRESHOLD_BYTES)
@@ -1367,19 +1386,19 @@ var SessionFileReadResultDataSchema = fileResultSchema(SESSION_FILE_MEDIA_TYPES,
1367
1386
  var SessionFileReadV2ResultDataSchema = fileResultSchema(SESSION_FILE_V2_MEDIA_TYPES, true);
1368
1387
  var SessionFileDownloadDataSchema = SessionFileReadDataSchema;
1369
1388
  var SessionFileDownloadResultDataSchema = fileResultSchema(["application/octet-stream"], true);
1370
- var SessionGitProjectSchema = z13.object({
1371
- localRepositoryKey: z13.string().length(43).regex(/^[A-Za-z0-9_-]{43}$/),
1372
- worktreeRoot: z13.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH),
1373
- mainWorktreeRoot: z13.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH).optional(),
1374
- gitRemoteUrl: z13.string().max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH).optional()
1389
+ var SessionGitProjectSchema = z14.object({
1390
+ localRepositoryKey: z14.string().length(43).regex(/^[A-Za-z0-9_-]{43}$/),
1391
+ worktreeRoot: z14.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH),
1392
+ mainWorktreeRoot: z14.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH).optional(),
1393
+ gitRemoteUrl: z14.string().max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH).optional()
1375
1394
  }).strict();
1376
- var SessionProjectIdentityRequestDataSchema = z13.object({}).strict();
1377
- var SessionProjectIdentityResultDataSchema = z13.object({
1395
+ var SessionProjectIdentityRequestDataSchema = z14.object({}).strict();
1396
+ var SessionProjectIdentityResultDataSchema = z14.object({
1378
1397
  project: SessionGitProjectSchema.optional()
1379
1398
  }).strict();
1380
1399
 
1381
1400
  // ../../shared/protocol/dist/sessions/session-git-diff.js
1382
- import { z as z14 } from "zod";
1401
+ import { z as z15 } from "zod";
1383
1402
  var SESSION_GIT_DIFF_GZIP_MIN_BYTES = 2 * 1024;
1384
1403
  var SESSION_GIT_DIFF_MAX_FILES = 500;
1385
1404
  var SESSION_GIT_DIFF_MAX_PATCH_BYTES = 128 * 1024;
@@ -1387,24 +1406,24 @@ var SESSION_GIT_DIFF_MAX_RESPONSE_BYTES = 512 * 1024;
1387
1406
  var SESSION_GIT_DIFF_MAX_TRANSFER_BYTES = SESSION_GIT_DIFF_MAX_RESPONSE_BYTES + 1024;
1388
1407
  var SESSION_GIT_DIFF_MAX_BASE64_LENGTH = Math.ceil(SESSION_GIT_DIFF_MAX_TRANSFER_BYTES / 3) * 4;
1389
1408
  var SESSION_GIT_DIFF_MAX_GZIP_RESPONSE_BYTES = SESSION_GIT_DIFF_MAX_BASE64_LENGTH + 1024;
1390
- var commitSchema = z14.string().regex(/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u);
1391
- var SessionGitDiffDataSchema = z14.object({
1409
+ var commitSchema = z15.string().regex(/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u);
1410
+ var SessionGitDiffDataSchema = z15.object({
1392
1411
  rootRevision: SessionFileReadDataSchema.shape.rootRevision,
1393
1412
  path: SessionFileReadDataSchema.shape.path.optional(),
1394
1413
  baseCommit: commitSchema.optional()
1395
1414
  }).strict().refine((value) => value.path === void 0 === (value.baseCommit === void 0), "A file diff must identify its listed base commit");
1396
- var SessionGitDiffEntrySchema = z14.object({
1415
+ var SessionGitDiffEntrySchema = z15.object({
1397
1416
  path: SessionFileReadDataSchema.shape.path,
1398
- status: z14.enum(["added", "modified", "deleted", "untracked"])
1417
+ status: z15.enum(["added", "modified", "deleted", "untracked"])
1399
1418
  }).strict();
1400
- var SessionGitDiffResultDataSchema = z14.object({
1419
+ var SessionGitDiffResultDataSchema = z15.object({
1401
1420
  rootRevision: SessionFileReadDataSchema.shape.rootRevision,
1402
- baseRef: z14.enum(["origin/main", "main"]),
1421
+ baseRef: z15.enum(["origin/main", "main"]),
1403
1422
  baseCommit: commitSchema,
1404
- files: z14.array(SessionGitDiffEntrySchema).max(SESSION_GIT_DIFF_MAX_FILES).optional(),
1423
+ files: z15.array(SessionGitDiffEntrySchema).max(SESSION_GIT_DIFF_MAX_FILES).optional(),
1405
1424
  path: SessionFileReadDataSchema.shape.path.optional(),
1406
- patch: z14.string().max(SESSION_GIT_DIFF_MAX_PATCH_BYTES).optional(),
1407
- binary: z14.boolean().optional()
1425
+ patch: z15.string().max(SESSION_GIT_DIFF_MAX_PATCH_BYTES).optional(),
1426
+ binary: z15.boolean().optional()
1408
1427
  }).strict().superRefine((value, context) => {
1409
1428
  const encoder = new TextEncoder();
1410
1429
  if (value.patch !== void 0 && encoder.encode(value.patch).length > SESSION_GIT_DIFF_MAX_PATCH_BYTES || encoder.encode(JSON.stringify(value)).length > SESSION_GIT_DIFF_MAX_RESPONSE_BYTES) {
@@ -1418,10 +1437,26 @@ var SessionGitDiffResultDataSchema = z14.object({
1418
1437
  context.addIssue({ code: "custom", message: "Expected a text patch or an explicit binary change" });
1419
1438
  }
1420
1439
  });
1421
- var SessionGitDiffGzipResultDataSchema = z14.object({
1422
- encoding: z14.literal("gzip"),
1423
- byteLength: z14.number().int().min(1).max(SESSION_GIT_DIFF_MAX_RESPONSE_BYTES),
1424
- data: z14.string().max(SESSION_GIT_DIFF_MAX_BASE64_LENGTH).regex(/^[A-Za-z0-9+/]*={0,2}$/u)
1440
+ var SessionGitDiffFileErrorSchema = z15.object({
1441
+ code: z15.enum(["DIFF_BLOCKED", "DIFF_FILE_UNAVAILABLE"]),
1442
+ message: z15.string().min(1).max(512)
1443
+ }).strict();
1444
+ var SessionGitDiffPartialEntrySchema = SessionGitDiffEntrySchema.extend({
1445
+ // Error paths are display-only: they must never be used for file requests.
1446
+ path: z15.string().min(1).max(32768).refine((value) => !value.includes("\0")),
1447
+ error: SessionGitDiffFileErrorSchema.optional()
1448
+ }).superRefine((value, context) => {
1449
+ if (value.error === void 0 && !SessionGitDiffEntrySchema.shape.path.safeParse(value.path).success) {
1450
+ context.addIssue({ code: "custom", message: "A readable diff entry must have a safe path" });
1451
+ }
1452
+ });
1453
+ var SessionGitDiffPartialResultDataSchema = SessionGitDiffResultDataSchema.safeExtend({
1454
+ files: z15.array(SessionGitDiffPartialEntrySchema).max(SESSION_GIT_DIFF_MAX_FILES).optional()
1455
+ });
1456
+ var SessionGitDiffGzipResultDataSchema = z15.object({
1457
+ encoding: z15.literal("gzip"),
1458
+ byteLength: z15.number().int().min(1).max(SESSION_GIT_DIFF_MAX_RESPONSE_BYTES),
1459
+ data: z15.string().max(SESSION_GIT_DIFF_MAX_BASE64_LENGTH).regex(/^[A-Za-z0-9+/]*={0,2}$/u)
1425
1460
  }).strict().superRefine((value, context) => {
1426
1461
  const padding = value.data.endsWith("==") ? 2 : value.data.endsWith("=") ? 1 : 0;
1427
1462
  const bytes = value.data.length / 4 * 3 - padding;
@@ -1431,13 +1466,13 @@ var SessionGitDiffGzipResultDataSchema = z14.object({
1431
1466
  context.addIssue({ code: "custom", message: "Invalid gzip transfer" });
1432
1467
  }
1433
1468
  });
1434
- var SessionGitDiffV2ResultDataSchema = z14.union([
1469
+ var SessionGitDiffV2ResultDataSchema = z15.union([
1435
1470
  SessionGitDiffResultDataSchema,
1436
1471
  SessionGitDiffGzipResultDataSchema
1437
1472
  ]);
1438
1473
 
1439
1474
  // ../../shared/protocol/dist/sessions/session-resource.js
1440
- import { z as z15 } from "zod";
1475
+ import { z as z16 } from "zod";
1441
1476
  var SESSION_RESOURCE_MAX_ORIGINAL_BYTES = 499999;
1442
1477
  var SESSION_RESOURCE_GZIP_THRESHOLD_BYTES = 20 * 1024;
1443
1478
  var SESSION_RESOURCE_MAX_IMAGE_PIXELS = 16 * 1024 * 1024;
@@ -1451,18 +1486,18 @@ var SESSION_RESOURCE_MEDIA_TYPES = [
1451
1486
  "text/css",
1452
1487
  "text/javascript"
1453
1488
  ];
1454
- var SessionResourceReadDataSchema = z15.object({
1455
- path: z15.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
1456
- rootRevision: z15.string().regex(/^[A-Za-z0-9_-]{43}$/u)
1489
+ var SessionResourceReadDataSchema = z16.object({
1490
+ path: z16.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
1491
+ rootRevision: z16.string().regex(/^[A-Za-z0-9_-]{43}$/u)
1457
1492
  }).strict();
1458
- var SessionResourceReadResultDataSchema = z15.object({
1493
+ var SessionResourceReadResultDataSchema = z16.object({
1459
1494
  path: SessionResourceReadDataSchema.shape.path,
1460
1495
  rootRevision: SessionResourceReadDataSchema.shape.rootRevision,
1461
- mediaType: z15.enum(SESSION_RESOURCE_MEDIA_TYPES),
1462
- originalByteLength: z15.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
1463
- byteLength: z15.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
1464
- encoding: z15.enum(["identity", "gzip"]),
1465
- data: z15.string().max(SESSION_RESOURCE_MAX_BASE64_LENGTH)
1496
+ mediaType: z16.enum(SESSION_RESOURCE_MEDIA_TYPES),
1497
+ originalByteLength: z16.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
1498
+ byteLength: z16.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
1499
+ encoding: z16.enum(["identity", "gzip"]),
1500
+ data: z16.string().max(SESSION_RESOURCE_MAX_BASE64_LENGTH)
1466
1501
  }).strict().superRefine((result, context) => {
1467
1502
  const invalid = () => context.addIssue({ code: "custom", message: "Invalid resource content" });
1468
1503
  if (result.encoding === "gzip" !== result.originalByteLength >= SESSION_RESOURCE_GZIP_THRESHOLD_BYTES || result.byteLength !== result.originalByteLength || result.mediaType.startsWith("image/") && result.byteLength === 0)
@@ -1475,115 +1510,115 @@ var SessionResourceReadResultDataSchema = z15.object({
1475
1510
  });
1476
1511
 
1477
1512
  // ../../shared/protocol/dist/sessions/session-images.js
1478
- import { z as z16 } from "zod";
1513
+ import { z as z17 } from "zod";
1479
1514
  var SESSION_IMAGE_MAX_BYTES = 3 * 1024 * 1024;
1480
1515
  var SESSION_IMAGE_MAX_PIXELS = 16 * 1024 * 1024;
1481
- var SessionImageIdSchema = z16.uuid();
1482
- var SessionImageTransferModeSchema = z16.enum(["direct", "proxy"]);
1483
- var DirectUrlSchema = z16.string().regex(/^https:\/\/[^/?#@\\\s\x00-\x1f\x7f]+(?:[/?][^#\\\s\x00-\x1f\x7f]*)?$/u).refine((raw) => {
1516
+ var SessionImageIdSchema = z17.uuid();
1517
+ var SessionImageTransferModeSchema = z17.enum(["direct", "proxy"]);
1518
+ var DirectUrlSchema = z17.string().regex(/^https:\/\/[^/?#@\\\s\x00-\x1f\x7f]+(?:[/?][^#\\\s\x00-\x1f\x7f]*)?$/u).refine((raw) => {
1484
1519
  if (!URL.canParse(raw))
1485
1520
  return false;
1486
1521
  const url = new URL(raw);
1487
1522
  return url.protocol === "https:" && url.username === "" && url.password === "" && url.hash === "";
1488
1523
  }, "Direct transfers require HTTPS without userinfo, fragments or unsafe characters");
1489
- var ProxyUrlSchema = z16.string().regex(/^\/api\/v3\/session-images\/[0-9a-f-]+\/content\?[^#\\\s\x00-\x1f\x7f]+$/u);
1490
- var SessionImageTransferHeadersSchema = z16.record(z16.string().regex(/^(?:content-type|if-none-match|x-ms-blob-type)$/u), z16.string().min(1).max(256).regex(/^[\x20-\x7e]+$/u));
1491
- var SessionImageUploadRequestSchema = z16.object({
1524
+ var ProxyUrlSchema = z17.string().regex(/^\/api\/v3\/session-images\/[0-9a-f-]+\/content\?[^#\\\s\x00-\x1f\x7f]+$/u);
1525
+ var SessionImageTransferHeadersSchema = z17.record(z17.string().regex(/^(?:content-type|if-none-match|x-ms-blob-type)$/u), z17.string().min(1).max(256).regex(/^[\x20-\x7e]+$/u));
1526
+ var SessionImageUploadRequestSchema = z17.object({
1492
1527
  machineId: IdSchema,
1493
1528
  sessionId: IdSchema,
1494
- sizeBytes: z16.number().int().min(1).max(SESSION_IMAGE_MAX_BYTES)
1529
+ sizeBytes: z17.number().int().min(1).max(SESSION_IMAGE_MAX_BYTES)
1495
1530
  }).strict();
1496
- var SessionImageScopeSchema = z16.object({
1531
+ var SessionImageScopeSchema = z17.object({
1497
1532
  machineId: IdSchema,
1498
1533
  sessionId: IdSchema
1499
1534
  }).strict();
1500
1535
  var UploadResultFields = {
1501
1536
  imageId: SessionImageIdSchema,
1502
- uploadExpiresAt: z16.number().int().positive(),
1503
- method: z16.literal("PUT"),
1504
- contentType: z16.literal("image/webp"),
1537
+ uploadExpiresAt: z17.number().int().positive(),
1538
+ method: z17.literal("PUT"),
1539
+ contentType: z17.literal("image/webp"),
1505
1540
  headers: SessionImageTransferHeadersSchema.refine((headers) => headers["content-type"] === "image/webp")
1506
1541
  };
1507
- var SessionImageUploadResultSchema = z16.discriminatedUnion("mode", [
1508
- z16.object({ ...UploadResultFields, mode: z16.literal("direct"), uploadUrl: DirectUrlSchema }).strict(),
1509
- z16.object({ ...UploadResultFields, mode: z16.literal("proxy"), uploadUrl: ProxyUrlSchema }).strict()
1542
+ var SessionImageUploadResultSchema = z17.discriminatedUnion("mode", [
1543
+ z17.object({ ...UploadResultFields, mode: z17.literal("direct"), uploadUrl: DirectUrlSchema }).strict(),
1544
+ z17.object({ ...UploadResultFields, mode: z17.literal("proxy"), uploadUrl: ProxyUrlSchema }).strict()
1510
1545
  ]);
1511
- var SessionImageCommitResultSchema = z16.object({
1546
+ var SessionImageCommitResultSchema = z17.object({
1512
1547
  imageId: SessionImageIdSchema,
1513
1548
  machineId: IdSchema,
1514
1549
  sessionId: IdSchema,
1515
- sizeBytes: z16.number().int().min(1).max(SESSION_IMAGE_MAX_BYTES),
1516
- width: z16.number().int().positive(),
1517
- height: z16.number().int().positive(),
1518
- sha256: z16.string().regex(/^[a-f0-9]{64}$/u),
1519
- expiresAt: z16.number().int().positive()
1550
+ sizeBytes: z17.number().int().min(1).max(SESSION_IMAGE_MAX_BYTES),
1551
+ width: z17.number().int().positive(),
1552
+ height: z17.number().int().positive(),
1553
+ sha256: z17.string().regex(/^[a-f0-9]{64}$/u),
1554
+ expiresAt: z17.number().int().positive()
1520
1555
  }).strict();
1521
1556
  var DownloadResultFields = {
1522
1557
  image: SessionImageCommitResultSchema,
1523
- downloadExpiresAt: z16.number().int().positive(),
1524
- method: z16.literal("GET"),
1558
+ downloadExpiresAt: z17.number().int().positive(),
1559
+ method: z17.literal("GET"),
1525
1560
  headers: SessionImageTransferHeadersSchema
1526
1561
  };
1527
- var SessionImageDownloadResultSchema = z16.discriminatedUnion("mode", [
1528
- z16.object({ ...DownloadResultFields, mode: z16.literal("direct"), downloadUrl: DirectUrlSchema }).strict(),
1529
- z16.object({ ...DownloadResultFields, mode: z16.literal("proxy"), downloadUrl: ProxyUrlSchema }).strict()
1562
+ var SessionImageDownloadResultSchema = z17.discriminatedUnion("mode", [
1563
+ z17.object({ ...DownloadResultFields, mode: z17.literal("direct"), downloadUrl: DirectUrlSchema }).strict(),
1564
+ z17.object({ ...DownloadResultFields, mode: z17.literal("proxy"), downloadUrl: ProxyUrlSchema }).strict()
1530
1565
  ]);
1531
- var TimelineImageBlobRequestSchema = z16.object({
1532
- sha256: z16.string().regex(/^[a-f0-9]{64}$/u)
1566
+ var TimelineImageBlobRequestSchema = z17.object({
1567
+ sha256: z17.string().regex(/^[a-f0-9]{64}$/u)
1533
1568
  }).strict();
1534
- var TimelineImageBlobResultSchema = z16.object({
1569
+ var TimelineImageBlobResultSchema = z17.object({
1535
1570
  sha256: TimelineImageBlobRequestSchema.shape.sha256,
1536
1571
  image: SessionImageCommitResultSchema
1537
1572
  }).strict();
1538
1573
 
1539
1574
  // ../../shared/protocol/dist/sessions/session-rename.js
1540
- import { z as z17 } from "zod";
1575
+ import { z as z18 } from "zod";
1541
1576
  var SESSION_RENAME_OPERATION = "session.rename";
1542
1577
  var SESSION_RENAME_VERSION = 1;
1543
1578
  var SESSION_RENAME_CAPABILITY = sessionCommunicationOperationCapability(SESSION_RENAME_OPERATION, SESSION_RENAME_VERSION);
1544
1579
  var SESSION_NAME_MAX_LENGTH = 100;
1545
- var SessionNameSchema = z17.string().regex(/^[^\u0000-\u001f\u007f]*$/u).trim().min(1).max(SESSION_NAME_MAX_LENGTH);
1546
- var SessionRenameDataSchema = z17.object({ name: SessionNameSchema }).strict();
1547
- var SessionRenameResultDataSchema = z17.object({ name: SessionNameSchema }).strict();
1580
+ var SessionNameSchema = z18.string().regex(/^[^\u0000-\u001f\u007f]*$/u).trim().min(1).max(SESSION_NAME_MAX_LENGTH);
1581
+ var SessionRenameDataSchema = z18.object({ name: SessionNameSchema }).strict();
1582
+ var SessionRenameResultDataSchema = z18.object({ name: SessionNameSchema }).strict();
1548
1583
 
1549
1584
  // ../../shared/protocol/dist/sessions/sessions.js
1550
- import { z as z18 } from "zod";
1551
- var GroupChatParticipantSchema = z18.object({
1585
+ import { z as z19 } from "zod";
1586
+ var GroupChatParticipantSchema = z19.object({
1552
1587
  sessionId: IdSchema,
1553
- title: z18.string().trim().min(1).max(260)
1588
+ title: z19.string().trim().min(1).max(260)
1554
1589
  }).strict();
1555
- var GroupChatInfoSchema = z18.object({
1556
- participants: z18.array(GroupChatParticipantSchema).length(2).refine((participants) => new Set(participants.map((participant) => participant.sessionId)).size === 2, "A group requires two different sessions"),
1557
- state: z18.enum(["ready", "running", "paused", "blocked"])
1590
+ var GroupChatInfoSchema = z19.object({
1591
+ participants: z19.array(GroupChatParticipantSchema).length(2).refine((participants) => new Set(participants.map((participant) => participant.sessionId)).size === 2, "A group requires two different sessions"),
1592
+ state: z19.enum(["ready", "running", "paused", "blocked"])
1558
1593
  }).strict();
1559
- var SessionSummarySchema = z18.object({
1594
+ var SessionSummarySchema = z19.object({
1560
1595
  userId: IdSchema,
1561
1596
  sessionId: IdSchema,
1562
1597
  machineId: IdSchema,
1563
- summary: z18.string().max(4096).optional(),
1564
- renameSupported: z18.boolean().optional(),
1565
- workingDirectory: z18.string().max(32768).optional(),
1566
- gitRoot: z18.string().max(32768).optional(),
1567
- repository: z18.string().max(1024).optional(),
1568
- gitRemoteUrl: z18.string().max(32768).optional(),
1569
- branch: z18.string().max(1024).optional(),
1570
- isRemote: z18.boolean(),
1598
+ summary: z19.string().max(4096).optional(),
1599
+ renameSupported: z19.boolean().optional(),
1600
+ workingDirectory: z19.string().max(32768).optional(),
1601
+ gitRoot: z19.string().max(32768).optional(),
1602
+ repository: z19.string().max(1024).optional(),
1603
+ gitRemoteUrl: z19.string().max(32768).optional(),
1604
+ branch: z19.string().max(1024).optional(),
1605
+ isRemote: z19.boolean(),
1571
1606
  createdAt: IsoDateSchema,
1572
1607
  modifiedAt: IsoDateSchema,
1573
1608
  groupChat: GroupChatInfoSchema.optional()
1574
1609
  });
1575
- var SessionsSnapshotSchema = z18.object({
1610
+ var SessionsSnapshotSchema = z19.object({
1576
1611
  userId: IdSchema,
1577
1612
  machineId: IdSchema,
1578
- machineName: z18.string().trim().min(1).max(120),
1579
- platform: z18.string().trim().min(1).max(64),
1613
+ machineName: z19.string().trim().min(1).max(120),
1614
+ platform: z19.string().trim().min(1).max(64),
1580
1615
  agentRunId: IdSchema,
1581
- sequence: z18.number().int().positive(),
1616
+ sequence: z19.number().int().positive(),
1582
1617
  generatedAt: IsoDateSchema,
1583
- complete: z18.boolean(),
1584
- totalCount: z18.number().int().nonnegative(),
1585
- nextCursor: z18.string().min(1).max(1024).optional(),
1586
- sessions: z18.array(SessionSummarySchema)
1618
+ complete: z19.boolean(),
1619
+ totalCount: z19.number().int().nonnegative(),
1620
+ nextCursor: z19.string().min(1).max(1024).optional(),
1621
+ sessions: z19.array(SessionSummarySchema)
1587
1622
  }).superRefine((snapshot, context) => {
1588
1623
  if (snapshot.totalCount < snapshot.sessions.length) {
1589
1624
  context.addIssue({
@@ -1625,47 +1660,47 @@ var SessionsSnapshotSchema = z18.object({
1625
1660
  sessionIds.add(session.sessionId);
1626
1661
  }
1627
1662
  });
1628
- var SessionListRequestSchema = z18.object({
1663
+ var SessionListRequestSchema = z19.object({
1629
1664
  requestId: IdSchema,
1630
1665
  machineId: IdSchema,
1631
- cursor: z18.string().min(1).max(1024).optional()
1666
+ cursor: z19.string().min(1).max(1024).optional()
1632
1667
  });
1633
- var SessionListResultSchema = z18.discriminatedUnion("ok", [
1634
- z18.object({
1635
- ok: z18.literal(true),
1668
+ var SessionListResultSchema = z19.discriminatedUnion("ok", [
1669
+ z19.object({
1670
+ ok: z19.literal(true),
1636
1671
  requestId: IdSchema,
1637
1672
  machineId: IdSchema,
1638
1673
  snapshot: SessionsSnapshotSchema
1639
1674
  }),
1640
- z18.object({
1641
- ok: z18.literal(false),
1675
+ z19.object({
1676
+ ok: z19.literal(false),
1642
1677
  requestId: IdSchema,
1643
1678
  machineId: IdSchema,
1644
1679
  error: ProtocolFailureSchema
1645
1680
  })
1646
1681
  ]);
1647
- var SessionAgentModeSchema = z18.enum([
1682
+ var SessionAgentModeSchema = z19.enum([
1648
1683
  "interactive",
1649
1684
  "plan",
1650
1685
  "autopilot"
1651
1686
  ]);
1652
- var AgentConfigurationOptionSchema = z18.object({
1687
+ var AgentConfigurationOptionSchema = z19.object({
1653
1688
  id: IdSchema,
1654
- name: z18.string().trim().min(1).max(260),
1655
- value: z18.string().min(1).max(256),
1656
- options: z18.array(z18.object({
1657
- value: z18.string().min(1).max(256),
1658
- name: z18.string().trim().min(1).max(260)
1689
+ name: z19.string().trim().min(1).max(260),
1690
+ value: z19.string().min(1).max(256),
1691
+ options: z19.array(z19.object({
1692
+ value: z19.string().min(1).max(256),
1693
+ name: z19.string().trim().min(1).max(260)
1659
1694
  }).strict()).min(1).max(100)
1660
1695
  }).strict();
1661
- var AgentConfigurationChangeSchema = z18.object({
1696
+ var AgentConfigurationChangeSchema = z19.object({
1662
1697
  id: IdSchema,
1663
- value: z18.string().min(1).max(256)
1698
+ value: z19.string().min(1).max(256)
1664
1699
  }).strict();
1665
- var WorkspaceOptionSchema = z18.object({
1700
+ var WorkspaceOptionSchema = z19.object({
1666
1701
  id: IdSchema,
1667
- name: z18.string().trim().min(1).max(260),
1668
- path: z18.string().trim().min(1).max(32768)
1702
+ name: z19.string().trim().min(1).max(260),
1703
+ path: z19.string().trim().min(1).max(32768)
1669
1704
  });
1670
1705
  var REASONING_EFFORTS = [
1671
1706
  "low",
@@ -1674,113 +1709,113 @@ var REASONING_EFFORTS = [
1674
1709
  "xhigh",
1675
1710
  "max"
1676
1711
  ];
1677
- var ReasoningEffortSchema = z18.enum(REASONING_EFFORTS);
1678
- var CopilotModelOptionSchema = z18.object({
1712
+ var ReasoningEffortSchema = z19.enum(REASONING_EFFORTS);
1713
+ var CopilotModelOptionSchema = z19.object({
1679
1714
  id: IdSchema,
1680
- name: z18.string().trim().min(1).max(260),
1681
- isDefault: z18.boolean(),
1682
- supportedReasoningEfforts: z18.array(ReasoningEffortSchema).optional(),
1715
+ name: z19.string().trim().min(1).max(260),
1716
+ isDefault: z19.boolean(),
1717
+ supportedReasoningEfforts: z19.array(ReasoningEffortSchema).optional(),
1683
1718
  defaultReasoningEffort: ReasoningEffortSchema.optional(),
1684
- creation: z18.object({
1719
+ creation: z19.object({
1685
1720
  agentId: IdSchema,
1686
- agentName: z18.string().trim().min(1).max(260),
1687
- modelName: z18.string().trim().min(1).max(260),
1688
- agentModes: z18.array(SessionAgentModeSchema).min(1),
1689
- reasoningEffortConfigurationSupported: z18.boolean(),
1690
- isDefault: z18.boolean()
1721
+ agentName: z19.string().trim().min(1).max(260),
1722
+ modelName: z19.string().trim().min(1).max(260),
1723
+ agentModes: z19.array(SessionAgentModeSchema).min(1),
1724
+ reasoningEffortConfigurationSupported: z19.boolean(),
1725
+ isDefault: z19.boolean()
1691
1726
  }).strict().optional()
1692
1727
  });
1693
- var SessionReasoningEffortSchema = z18.enum([
1728
+ var SessionReasoningEffortSchema = z19.enum([
1694
1729
  "default",
1695
1730
  ...REASONING_EFFORTS
1696
1731
  ]);
1697
- var CurrentReasoningEffortSchema = z18.string().trim().min(1).max(64);
1698
- var SessionToolInfoSchema = z18.object({
1699
- name: z18.string().trim().min(1).max(260),
1700
- description: z18.string().trim().min(1).max(4096).optional(),
1701
- deferred: z18.boolean().optional()
1732
+ var CurrentReasoningEffortSchema = z19.string().trim().min(1).max(64);
1733
+ var SessionToolInfoSchema = z19.object({
1734
+ name: z19.string().trim().min(1).max(260),
1735
+ description: z19.string().trim().min(1).max(4096).optional(),
1736
+ deferred: z19.boolean().optional()
1702
1737
  });
1703
- var SessionSlashCommandInfoSchema = z18.object({
1704
- name: z18.string().trim().min(1).max(260),
1705
- description: z18.string().trim().min(1).max(4096).optional(),
1706
- kind: z18.enum(["builtin", "skill", "client"])
1738
+ var SessionSlashCommandInfoSchema = z19.object({
1739
+ name: z19.string().trim().min(1).max(260),
1740
+ description: z19.string().trim().min(1).max(4096).optional(),
1741
+ kind: z19.enum(["builtin", "skill", "client"])
1707
1742
  });
1708
- var SessionSkillInfoSchema = z18.object({
1709
- name: z18.string().trim().min(1).max(260),
1710
- description: z18.string().trim().min(1).max(4096).optional(),
1711
- source: z18.string().trim().min(1).max(260),
1712
- enabled: z18.boolean(),
1713
- userInvocable: z18.boolean(),
1714
- commandName: z18.string().trim().min(1).max(260).optional()
1743
+ var SessionSkillInfoSchema = z19.object({
1744
+ name: z19.string().trim().min(1).max(260),
1745
+ description: z19.string().trim().min(1).max(4096).optional(),
1746
+ source: z19.string().trim().min(1).max(260),
1747
+ enabled: z19.boolean(),
1748
+ userInvocable: z19.boolean(),
1749
+ commandName: z19.string().trim().min(1).max(260).optional()
1715
1750
  });
1716
- var SessionEnvironmentInfoSchema = z18.object({
1717
- tools: z18.array(SessionToolInfoSchema).max(512),
1718
- slashCommands: z18.array(SessionSlashCommandInfoSchema).max(512),
1719
- skills: z18.array(SessionSkillInfoSchema).max(512)
1751
+ var SessionEnvironmentInfoSchema = z19.object({
1752
+ tools: z19.array(SessionToolInfoSchema).max(512),
1753
+ slashCommands: z19.array(SessionSlashCommandInfoSchema).max(512),
1754
+ skills: z19.array(SessionSkillInfoSchema).max(512)
1720
1755
  });
1721
- var SessionOptionsRequestSchema = z18.object({
1756
+ var SessionOptionsRequestSchema = z19.object({
1722
1757
  requestId: IdSchema,
1723
1758
  machineId: IdSchema,
1724
1759
  sessionId: IdSchema.optional(),
1725
1760
  workspaceId: IdSchema.optional(),
1726
- capabilities: z18.array(IdSchema).max(64).optional()
1761
+ capabilities: z19.array(IdSchema).max(64).optional()
1727
1762
  });
1728
- var SessionOptionsResultSchema = z18.discriminatedUnion("ok", [
1729
- z18.object({
1730
- ok: z18.literal(true),
1763
+ var SessionOptionsResultSchema = z19.discriminatedUnion("ok", [
1764
+ z19.object({
1765
+ ok: z19.literal(true),
1731
1766
  requestId: IdSchema,
1732
1767
  machineId: IdSchema,
1733
1768
  sessionId: IdSchema.optional(),
1734
- workspaces: z18.array(WorkspaceOptionSchema),
1735
- models: z18.array(CopilotModelOptionSchema).min(1),
1736
- modelRefreshError: z18.string().min(1).max(4096).optional(),
1737
- agentModes: z18.array(SessionAgentModeSchema).min(1),
1738
- reasoningEffortConfigurationSupported: z18.literal(true).optional(),
1739
- fileAttachmentsSupported: z18.boolean().optional(),
1740
- worktreeCreationSupported: z18.literal(true).optional(),
1741
- worktreeBranches: z18.array(z18.string().min(1).max(1024)).optional(),
1742
- worktreeCurrentBranch: z18.string().min(1).max(1024).optional(),
1769
+ workspaces: z19.array(WorkspaceOptionSchema),
1770
+ models: z19.array(CopilotModelOptionSchema).min(1),
1771
+ modelRefreshError: z19.string().min(1).max(4096).optional(),
1772
+ agentModes: z19.array(SessionAgentModeSchema).min(1),
1773
+ reasoningEffortConfigurationSupported: z19.literal(true).optional(),
1774
+ fileAttachmentsSupported: z19.boolean().optional(),
1775
+ worktreeCreationSupported: z19.literal(true).optional(),
1776
+ worktreeBranches: z19.array(z19.string().min(1).max(1024)).optional(),
1777
+ worktreeCurrentBranch: z19.string().min(1).max(1024).optional(),
1743
1778
  currentModelId: IdSchema.optional(),
1744
1779
  currentAgentMode: SessionAgentModeSchema.optional(),
1745
1780
  currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
1746
1781
  environment: SessionEnvironmentInfoSchema.optional(),
1747
- environmentPending: z18.literal(true).optional(),
1748
- agentName: z18.string().trim().min(1).max(260).optional(),
1749
- configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
1782
+ environmentPending: z19.literal(true).optional(),
1783
+ agentName: z19.string().trim().min(1).max(260).optional(),
1784
+ configOptions: z19.array(AgentConfigurationOptionSchema).max(32).optional()
1750
1785
  }),
1751
- z18.object({
1752
- ok: z18.literal(false),
1786
+ z19.object({
1787
+ ok: z19.literal(false),
1753
1788
  requestId: IdSchema,
1754
1789
  machineId: IdSchema,
1755
1790
  sessionId: IdSchema.optional(),
1756
1791
  error: ProtocolFailureSchema,
1757
- failureStage: z18.enum(["models", "configuration", "workspaces"]).optional(),
1758
- models: z18.array(CopilotModelOptionSchema).min(1).optional(),
1759
- agentModes: z18.array(SessionAgentModeSchema).min(1).optional(),
1760
- reasoningEffortConfigurationSupported: z18.literal(true).optional(),
1761
- fileAttachmentsSupported: z18.boolean().optional(),
1792
+ failureStage: z19.enum(["models", "configuration", "workspaces"]).optional(),
1793
+ models: z19.array(CopilotModelOptionSchema).min(1).optional(),
1794
+ agentModes: z19.array(SessionAgentModeSchema).min(1).optional(),
1795
+ reasoningEffortConfigurationSupported: z19.literal(true).optional(),
1796
+ fileAttachmentsSupported: z19.boolean().optional(),
1762
1797
  currentModelId: IdSchema.optional(),
1763
1798
  currentAgentMode: SessionAgentModeSchema.optional(),
1764
1799
  currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
1765
- agentName: z18.string().trim().min(1).max(260).optional(),
1766
- configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
1800
+ agentName: z19.string().trim().min(1).max(260).optional(),
1801
+ configOptions: z19.array(AgentConfigurationOptionSchema).max(32).optional()
1767
1802
  })
1768
1803
  ]);
1769
- var SessionCreateRequestSchema = z18.object({
1804
+ var SessionCreateRequestSchema = z19.object({
1770
1805
  requestId: IdSchema,
1771
1806
  machineId: IdSchema,
1772
1807
  workspaceId: IdSchema,
1773
1808
  modelId: IdSchema,
1774
1809
  agentMode: SessionAgentModeSchema,
1775
1810
  reasoningEffort: SessionReasoningEffortSchema.optional(),
1776
- worktree: z18.object({
1777
- branchName: z18.string().trim().min(1).max(120).optional(),
1778
- baseBranch: z18.string().trim().min(1).max(1024).optional()
1811
+ worktree: z19.object({
1812
+ branchName: z19.string().trim().min(1).max(120).optional(),
1813
+ baseBranch: z19.string().trim().min(1).max(1024).optional()
1779
1814
  }).strict().optional()
1780
1815
  });
1781
- var SessionCreateResultSchema = z18.discriminatedUnion("ok", [
1782
- z18.object({
1783
- ok: z18.literal(true),
1816
+ var SessionCreateResultSchema = z19.discriminatedUnion("ok", [
1817
+ z19.object({
1818
+ ok: z19.literal(true),
1784
1819
  requestId: IdSchema,
1785
1820
  machineId: IdSchema,
1786
1821
  session: SessionSummarySchema,
@@ -1788,34 +1823,34 @@ var SessionCreateResultSchema = z18.discriminatedUnion("ok", [
1788
1823
  agentMode: SessionAgentModeSchema,
1789
1824
  reasoningEffort: SessionReasoningEffortSchema.optional()
1790
1825
  }),
1791
- z18.object({
1792
- ok: z18.literal(false),
1826
+ z19.object({
1827
+ ok: z19.literal(false),
1793
1828
  requestId: IdSchema,
1794
1829
  machineId: IdSchema,
1795
1830
  error: ProtocolFailureSchema
1796
1831
  })
1797
1832
  ]);
1798
- var SessionDeleteRequestSchema = z18.object({
1833
+ var SessionDeleteRequestSchema = z19.object({
1799
1834
  requestId: IdSchema,
1800
1835
  machineId: IdSchema,
1801
1836
  sessionId: IdSchema
1802
1837
  }).strict();
1803
- var SessionDeleteResultSchema = z18.discriminatedUnion("ok", [
1804
- z18.object({
1805
- ok: z18.literal(true),
1838
+ var SessionDeleteResultSchema = z19.discriminatedUnion("ok", [
1839
+ z19.object({
1840
+ ok: z19.literal(true),
1806
1841
  requestId: IdSchema,
1807
1842
  machineId: IdSchema,
1808
1843
  sessionId: IdSchema
1809
1844
  }).strict(),
1810
- z18.object({
1811
- ok: z18.literal(false),
1845
+ z19.object({
1846
+ ok: z19.literal(false),
1812
1847
  requestId: IdSchema,
1813
1848
  machineId: IdSchema,
1814
1849
  sessionId: IdSchema,
1815
1850
  error: ProtocolFailureSchema
1816
1851
  }).strict()
1817
1852
  ]);
1818
- var SessionConfigureRequestSchema = z18.object({
1853
+ var SessionConfigureRequestSchema = z19.object({
1819
1854
  requestId: IdSchema,
1820
1855
  machineId: IdSchema,
1821
1856
  sessionId: IdSchema,
@@ -1824,59 +1859,59 @@ var SessionConfigureRequestSchema = z18.object({
1824
1859
  reasoningEffort: SessionReasoningEffortSchema.optional(),
1825
1860
  configOption: AgentConfigurationChangeSchema.optional()
1826
1861
  }).refine((request) => request.modelId !== void 0 || request.agentMode !== void 0 || request.reasoningEffort !== void 0 || request.configOption !== void 0, { message: "A modelId, agentMode, reasoningEffort, or configOption change is required" });
1827
- var SessionConfigureResultSchema = z18.discriminatedUnion("ok", [
1828
- z18.object({
1829
- ok: z18.literal(true),
1862
+ var SessionConfigureResultSchema = z19.discriminatedUnion("ok", [
1863
+ z19.object({
1864
+ ok: z19.literal(true),
1830
1865
  requestId: IdSchema,
1831
1866
  machineId: IdSchema,
1832
1867
  sessionId: IdSchema,
1833
1868
  modelId: IdSchema.optional(),
1834
1869
  agentMode: SessionAgentModeSchema,
1835
1870
  reasoningEffort: CurrentReasoningEffortSchema.optional(),
1836
- configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
1871
+ configOptions: z19.array(AgentConfigurationOptionSchema).max(32).optional()
1837
1872
  }),
1838
- z18.object({
1839
- ok: z18.literal(false),
1873
+ z19.object({
1874
+ ok: z19.literal(false),
1840
1875
  requestId: IdSchema,
1841
1876
  machineId: IdSchema,
1842
1877
  sessionId: IdSchema,
1843
1878
  error: ProtocolFailureSchema
1844
1879
  })
1845
1880
  ]);
1846
- var SessionRemoteActionSchema = z18.enum([
1881
+ var SessionRemoteActionSchema = z19.enum([
1847
1882
  "status",
1848
1883
  "enable",
1849
1884
  "disable"
1850
1885
  ]);
1851
- var SessionRemoteStateSchema = z18.enum([
1886
+ var SessionRemoteStateSchema = z19.enum([
1852
1887
  "off",
1853
1888
  "connecting",
1854
1889
  "active",
1855
1890
  "error"
1856
1891
  ]);
1857
- var SessionRemoteRequestSchema = z18.object({
1892
+ var SessionRemoteRequestSchema = z19.object({
1858
1893
  requestId: IdSchema,
1859
1894
  machineId: IdSchema,
1860
1895
  sessionId: IdSchema,
1861
1896
  action: SessionRemoteActionSchema
1862
1897
  });
1863
- var SessionRemoteStatusSchema = z18.object({
1898
+ var SessionRemoteStatusSchema = z19.object({
1864
1899
  state: SessionRemoteStateSchema,
1865
1900
  attachedSessionId: IdSchema.optional(),
1866
- url: z18.url().max(32768).optional(),
1867
- steerable: z18.boolean(),
1901
+ url: z19.url().max(32768).optional(),
1902
+ steerable: z19.boolean(),
1868
1903
  error: ProtocolFailureSchema.optional()
1869
1904
  });
1870
- var SessionRemoteResultSchema = z18.discriminatedUnion("ok", [
1871
- z18.object({
1872
- ok: z18.literal(true),
1905
+ var SessionRemoteResultSchema = z19.discriminatedUnion("ok", [
1906
+ z19.object({
1907
+ ok: z19.literal(true),
1873
1908
  requestId: IdSchema,
1874
1909
  machineId: IdSchema,
1875
1910
  sessionId: IdSchema,
1876
1911
  status: SessionRemoteStatusSchema
1877
1912
  }),
1878
- z18.object({
1879
- ok: z18.literal(false),
1913
+ z19.object({
1914
+ ok: z19.literal(false),
1880
1915
  requestId: IdSchema,
1881
1916
  machineId: IdSchema,
1882
1917
  sessionId: IdSchema,
@@ -1885,42 +1920,42 @@ var SessionRemoteResultSchema = z18.discriminatedUnion("ok", [
1885
1920
  ]);
1886
1921
 
1887
1922
  // ../../shared/protocol/dist/sessions/group-chat.js
1888
- import { z as z19 } from "zod";
1923
+ import { z as z20 } from "zod";
1889
1924
  var GROUP_CHAT_CREATE_OPERATION = "group-chat.create";
1890
1925
  var GROUP_CHAT_CREATE_VERSION = 1;
1891
1926
  var GROUP_CHAT_CREATE_CAPABILITY = sessionCommunicationOperationCapability(GROUP_CHAT_CREATE_OPERATION, GROUP_CHAT_CREATE_VERSION);
1892
- var GroupChatCreateDataSchema = z19.object({
1927
+ var GroupChatCreateDataSchema = z20.object({
1893
1928
  peerSessionId: IdSchema
1894
1929
  }).strict();
1895
- var GroupChatCreateResultDataSchema = z19.object({
1930
+ var GroupChatCreateResultDataSchema = z20.object({
1896
1931
  session: SessionSummarySchema.refine((session) => session.groupChat !== void 0, "Group creation must return a virtual group session")
1897
1932
  }).strict();
1898
1933
 
1899
1934
  // ../../shared/protocol/dist/sessions/prompts.js
1900
- import { z as z23 } from "zod";
1935
+ import { z as z24 } from "zod";
1901
1936
 
1902
1937
  // ../../shared/protocol/dist/conversation/attachments.js
1903
- import { z as z20 } from "zod";
1938
+ import { z as z21 } from "zod";
1904
1939
  var MAX_INLINE_IMAGE_BYTES = 3 * 1024 * 1024;
1905
1940
  var MAX_INLINE_HTML_BYTES = 512 * 1024;
1906
1941
  var MAX_PROMPT_FILE_BYTES = 1024 * 1024;
1907
- var InlineImageMimeTypeSchema = z20.enum([
1942
+ var InlineImageMimeTypeSchema = z21.enum([
1908
1943
  "image/gif",
1909
1944
  "image/jpeg",
1910
1945
  "image/png",
1911
1946
  "image/webp"
1912
1947
  ]);
1913
- var Base64DataSchema = z20.string().min(4).max(Math.ceil(MAX_INLINE_IMAGE_BYTES / 3) * 4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/, "Expected canonical base64 data");
1914
- var Sha256Schema = z20.string().regex(/^[a-f0-9]{64}$/);
1948
+ var Base64DataSchema = z21.string().min(4).max(Math.ceil(MAX_INLINE_IMAGE_BYTES / 3) * 4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/, "Expected canonical base64 data");
1949
+ var Sha256Schema = z21.string().regex(/^[a-f0-9]{64}$/);
1915
1950
  function decodedBase64ByteLength(value) {
1916
1951
  const padding = value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0;
1917
1952
  return value.length / 4 * 3 - padding;
1918
1953
  }
1919
- var PromptImageAttachmentSchema = z20.object({
1920
- name: z20.string().trim().min(1).max(255),
1921
- mimeType: z20.enum(["image/jpeg", "image/png", "image/webp"]),
1954
+ var PromptImageAttachmentSchema = z21.object({
1955
+ name: z21.string().trim().min(1).max(255),
1956
+ mimeType: z21.enum(["image/jpeg", "image/png", "image/webp"]),
1922
1957
  data: Base64DataSchema,
1923
- byteLength: z20.number().int().positive().max(MAX_INLINE_IMAGE_BYTES),
1958
+ byteLength: z21.number().int().positive().max(MAX_INLINE_IMAGE_BYTES),
1924
1959
  sha256: Sha256Schema
1925
1960
  }).strict().superRefine((attachment, context) => {
1926
1961
  if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
@@ -1931,11 +1966,11 @@ var PromptImageAttachmentSchema = z20.object({
1931
1966
  });
1932
1967
  }
1933
1968
  });
1934
- var PromptFileAttachmentSchema = z20.object({
1935
- name: z20.string().trim().min(1).max(255).regex(/^[^\\/\x00-\x1f\x7f]+$/).refine((name) => name !== "." && name !== "..", "Expected a filename"),
1936
- mimeType: z20.string().max(256).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
1969
+ var PromptFileAttachmentSchema = z21.object({
1970
+ name: z21.string().trim().min(1).max(255).regex(/^[^\\/\x00-\x1f\x7f]+$/).refine((name) => name !== "." && name !== "..", "Expected a filename"),
1971
+ mimeType: z21.string().max(256).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
1937
1972
  data: Base64DataSchema.max(Math.ceil(MAX_PROMPT_FILE_BYTES / 3) * 4),
1938
- byteLength: z20.number().int().positive().max(MAX_PROMPT_FILE_BYTES),
1973
+ byteLength: z21.number().int().positive().max(MAX_PROMPT_FILE_BYTES),
1939
1974
  sha256: Sha256Schema
1940
1975
  }).strict().superRefine((attachment, context) => {
1941
1976
  if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
@@ -1946,8 +1981,8 @@ var PromptFileAttachmentSchema = z20.object({
1946
1981
  });
1947
1982
  }
1948
1983
  });
1949
- var ConversationAttachmentSchema = z20.object({
1950
- kind: z20.enum([
1984
+ var ConversationAttachmentSchema = z21.object({
1985
+ kind: z21.enum([
1951
1986
  "file",
1952
1987
  "image",
1953
1988
  "html",
@@ -1955,13 +1990,13 @@ var ConversationAttachmentSchema = z20.object({
1955
1990
  "github-reference",
1956
1991
  "unknown"
1957
1992
  ]),
1958
- name: z20.string().trim().min(1).max(1024),
1959
- mimeType: z20.string().trim().min(1).max(256).optional(),
1960
- uri: z20.string().trim().min(1).max(32768).optional(),
1993
+ name: z21.string().trim().min(1).max(1024),
1994
+ mimeType: z21.string().trim().min(1).max(256).optional(),
1995
+ uri: z21.string().trim().min(1).max(32768).optional(),
1961
1996
  data: Base64DataSchema.optional(),
1962
- byteLength: z20.number().int().positive().max(MAX_INLINE_IMAGE_BYTES).optional(),
1997
+ byteLength: z21.number().int().positive().max(MAX_INLINE_IMAGE_BYTES).optional(),
1963
1998
  sha256: Sha256Schema.optional(),
1964
- imageRef: z20.literal("sha256").optional()
1999
+ imageRef: z21.literal("sha256").optional()
1965
2000
  }).strict().superRefine((attachment, context) => {
1966
2001
  if (attachment.imageRef !== void 0) {
1967
2002
  if (attachment.kind !== "image" || attachment.data !== void 0 || attachment.sha256 === void 0 || attachment.byteLength === void 0 || !InlineImageMimeTypeSchema.safeParse(attachment.mimeType).success) {
@@ -2019,20 +2054,20 @@ var ConversationAttachmentSchema = z20.object({
2019
2054
  });
2020
2055
 
2021
2056
  // ../../shared/protocol/dist/conversation/timeline.js
2022
- import { z as z22 } from "zod";
2057
+ import { z as z23 } from "zod";
2023
2058
 
2024
2059
  // ../../shared/protocol/dist/conversation/conversation.js
2025
- import { z as z21 } from "zod";
2060
+ import { z as z22 } from "zod";
2026
2061
  var CONVERSATION_ACTIVITY_STEP_LIMIT = 1e3;
2027
2062
  var CONVERSATION_SOURCE_ID_LIMIT = 1e3;
2028
2063
  var ConversationItemBaseShape = {
2029
2064
  id: IdSchema,
2030
- revision: z21.number().int().positive(),
2065
+ revision: z22.number().int().positive(),
2031
2066
  turnId: IdSchema,
2032
2067
  timestamp: IsoDateSchema,
2033
- sourceEventIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT),
2034
- sourceMessageIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional(),
2035
- sourceInteractionIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional()
2068
+ sourceEventIds: z22.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT),
2069
+ sourceMessageIds: z22.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional(),
2070
+ sourceInteractionIds: z22.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional()
2036
2071
  };
2037
2072
  var MAX_INLINE_IMAGE_MESSAGE_BYTES = 3 * 1024 * 1024;
2038
2073
  var MAX_INLINE_IMAGES_PER_MESSAGE = 4;
@@ -2040,67 +2075,67 @@ var ActivityStepTimeShape = {
2040
2075
  // First observed event time; completion updates must not move an existing call.
2041
2076
  timestamp: IsoDateSchema.optional()
2042
2077
  };
2043
- var ConversationToolStepSchema = z21.object({
2078
+ var ConversationToolStepSchema = z22.object({
2044
2079
  id: IdSchema,
2045
- kind: z21.literal("tool"),
2046
- name: z21.string().trim().min(1).max(256),
2047
- status: z21.enum(["running", "completed", "failed"]),
2080
+ kind: z22.literal("tool"),
2081
+ name: z22.string().trim().min(1).max(256),
2082
+ status: z22.enum(["running", "completed", "failed"]),
2048
2083
  ...ActivityStepTimeShape
2049
2084
  }).strict();
2050
- var ConversationSkillStepSchema = z21.object({
2085
+ var ConversationSkillStepSchema = z22.object({
2051
2086
  id: IdSchema,
2052
- kind: z21.literal("skill"),
2053
- name: z21.string().trim().min(1).max(256),
2054
- status: z21.literal("completed"),
2055
- description: z21.string().trim().min(1).max(2048).optional(),
2056
- source: z21.string().trim().min(1).max(256).optional(),
2087
+ kind: z22.literal("skill"),
2088
+ name: z22.string().trim().min(1).max(256),
2089
+ status: z22.literal("completed"),
2090
+ description: z22.string().trim().min(1).max(2048).optional(),
2091
+ source: z22.string().trim().min(1).max(256).optional(),
2057
2092
  ...ActivityStepTimeShape
2058
2093
  }).strict();
2059
- var ConversationSubagentStepSchema = z21.object({
2094
+ var ConversationSubagentStepSchema = z22.object({
2060
2095
  id: IdSchema,
2061
- kind: z21.literal("subagent"),
2062
- name: z21.string().trim().min(1).max(256),
2063
- status: z21.enum(["running", "completed", "failed"]),
2064
- description: z21.string().trim().min(1).max(2048).optional(),
2065
- model: z21.string().trim().min(1).max(256).optional(),
2066
- durationMs: z21.number().int().nonnegative().optional(),
2067
- resultSummary: z21.string().max(4096).optional(),
2068
- error: z21.string().max(4096).optional(),
2096
+ kind: z22.literal("subagent"),
2097
+ name: z22.string().trim().min(1).max(256),
2098
+ status: z22.enum(["running", "completed", "failed"]),
2099
+ description: z22.string().trim().min(1).max(2048).optional(),
2100
+ model: z22.string().trim().min(1).max(256).optional(),
2101
+ durationMs: z22.number().int().nonnegative().optional(),
2102
+ resultSummary: z22.string().max(4096).optional(),
2103
+ error: z22.string().max(4096).optional(),
2069
2104
  ...ActivityStepTimeShape
2070
2105
  }).strict();
2071
- var ConversationPermissionStepSchema = z21.object({
2106
+ var ConversationPermissionStepSchema = z22.object({
2072
2107
  id: IdSchema,
2073
- kind: z21.literal("permission"),
2074
- name: z21.string().trim().min(1).max(256),
2075
- status: z21.enum(["running", "completed", "failed"]),
2076
- description: z21.string().trim().min(1).max(2048).optional(),
2077
- resultSummary: z21.string().max(4096).optional(),
2078
- error: z21.string().max(4096).optional(),
2108
+ kind: z22.literal("permission"),
2109
+ name: z22.string().trim().min(1).max(256),
2110
+ status: z22.enum(["running", "completed", "failed"]),
2111
+ description: z22.string().trim().min(1).max(2048).optional(),
2112
+ resultSummary: z22.string().max(4096).optional(),
2113
+ error: z22.string().max(4096).optional(),
2079
2114
  ...ActivityStepTimeShape
2080
2115
  }).strict();
2081
- var ConversationActivityStepSchema = z21.discriminatedUnion("kind", [
2116
+ var ConversationActivityStepSchema = z22.discriminatedUnion("kind", [
2082
2117
  ConversationToolStepSchema,
2083
2118
  ConversationSkillStepSchema,
2084
2119
  ConversationSubagentStepSchema,
2085
2120
  ConversationPermissionStepSchema
2086
2121
  ]);
2087
- var ConversationHumanMessageSchema = z21.object({
2122
+ var ConversationHumanMessageSchema = z22.object({
2088
2123
  ...ConversationItemBaseShape,
2089
- kind: z21.literal("human-message"),
2090
- actor: z21.literal("human"),
2091
- content: z21.string().max(1e5),
2092
- attachments: z21.array(ConversationAttachmentSchema).max(100),
2124
+ kind: z22.literal("human-message"),
2125
+ actor: z22.literal("human"),
2126
+ content: z22.string().max(1e5),
2127
+ attachments: z22.array(ConversationAttachmentSchema).max(100),
2093
2128
  operationId: IdSchema.optional()
2094
2129
  }).strict();
2095
- var ConversationAssistantMessageSchema = z21.object({
2130
+ var ConversationAssistantMessageSchema = z22.object({
2096
2131
  ...ConversationItemBaseShape,
2097
- kind: z21.literal("assistant-message"),
2098
- actor: z21.enum(["assistant", "subagent"]),
2099
- content: z21.string().max(5e5),
2100
- attachments: z21.array(ConversationAttachmentSchema).max(100).optional(),
2101
- model: z21.string().trim().min(1).max(256).optional(),
2132
+ kind: z22.literal("assistant-message"),
2133
+ actor: z22.enum(["assistant", "subagent"]),
2134
+ content: z22.string().max(5e5),
2135
+ attachments: z22.array(ConversationAttachmentSchema).max(100).optional(),
2136
+ model: z22.string().trim().min(1).max(256).optional(),
2102
2137
  agentId: IdSchema.optional(),
2103
- final: z21.boolean()
2138
+ final: z22.boolean()
2104
2139
  }).strict().superRefine((message, context) => {
2105
2140
  const inlineImages = message.attachments?.filter((attachment) => attachment.kind === "image" && attachment.data !== void 0) ?? [];
2106
2141
  if (inlineImages.length > MAX_INLINE_IMAGES_PER_MESSAGE) {
@@ -2119,166 +2154,166 @@ var ConversationAssistantMessageSchema = z21.object({
2119
2154
  });
2120
2155
  }
2121
2156
  });
2122
- var ConversationActivityGroupSchema = z21.object({
2157
+ var ConversationActivityGroupSchema = z22.object({
2123
2158
  ...ConversationItemBaseShape,
2124
- kind: z21.literal("activity-group"),
2125
- actor: z21.enum(["assistant", "subagent"]),
2126
- status: z21.enum(["running", "completed", "failed"]),
2127
- steps: z21.array(ConversationActivityStepSchema).max(CONVERSATION_ACTIVITY_STEP_LIMIT)
2159
+ kind: z22.literal("activity-group"),
2160
+ actor: z22.enum(["assistant", "subagent"]),
2161
+ status: z22.enum(["running", "completed", "failed"]),
2162
+ steps: z22.array(ConversationActivityStepSchema).max(CONVERSATION_ACTIVITY_STEP_LIMIT)
2128
2163
  }).strict();
2129
- var ConversationNoticeSchema = z21.object({
2164
+ var ConversationNoticeSchema = z22.object({
2130
2165
  ...ConversationItemBaseShape,
2131
- kind: z21.literal("notice"),
2132
- actor: z21.enum(["system", "assistant", "subagent"]),
2133
- severity: z21.enum(["info", "success", "warning", "error"]),
2134
- title: z21.string().trim().min(1).max(256),
2135
- content: z21.string().max(4096),
2136
- presentation: z21.literal("compact").optional()
2166
+ kind: z22.literal("notice"),
2167
+ actor: z22.enum(["system", "assistant", "subagent"]),
2168
+ severity: z22.enum(["info", "success", "warning", "error"]),
2169
+ title: z22.string().trim().min(1).max(256),
2170
+ content: z22.string().max(4096),
2171
+ presentation: z22.literal("compact").optional()
2137
2172
  }).strict();
2138
- var ConversationPlanTodoSchema = z21.object({
2173
+ var ConversationPlanTodoSchema = z22.object({
2139
2174
  id: IdSchema,
2140
- title: z21.string().trim().min(1).max(1024),
2141
- description: z21.string().max(4096).optional(),
2142
- status: z21.string().trim().min(1).max(64),
2143
- dependsOn: z21.array(IdSchema).max(100)
2175
+ title: z22.string().trim().min(1).max(1024),
2176
+ description: z22.string().max(4096).optional(),
2177
+ status: z22.string().trim().min(1).max(64),
2178
+ dependsOn: z22.array(IdSchema).max(100)
2144
2179
  }).strict();
2145
- var ConversationPlanUpdateSchema = z21.object({
2180
+ var ConversationPlanUpdateSchema = z22.object({
2146
2181
  ...ConversationItemBaseShape,
2147
- kind: z21.literal("plan-update"),
2148
- actor: z21.enum(["assistant", "subagent"]),
2149
- operation: z21.enum(["created", "updated", "deleted"]),
2150
- content: z21.string().max(1e5),
2151
- todos: z21.array(ConversationPlanTodoSchema).max(1e3)
2182
+ kind: z22.literal("plan-update"),
2183
+ actor: z22.enum(["assistant", "subagent"]),
2184
+ operation: z22.enum(["created", "updated", "deleted"]),
2185
+ content: z22.string().max(1e5),
2186
+ todos: z22.array(ConversationPlanTodoSchema).max(1e3)
2152
2187
  }).strict();
2153
- var ConversationItemSchema = z21.discriminatedUnion("kind", [
2188
+ var ConversationItemSchema = z22.discriminatedUnion("kind", [
2154
2189
  ConversationHumanMessageSchema,
2155
2190
  ConversationAssistantMessageSchema,
2156
2191
  ConversationActivityGroupSchema,
2157
2192
  ConversationNoticeSchema,
2158
2193
  ConversationPlanUpdateSchema
2159
2194
  ]);
2160
- var ConversationItemUpsertSchema = z21.object({
2195
+ var ConversationItemUpsertSchema = z22.object({
2161
2196
  userId: IdSchema,
2162
2197
  machineId: IdSchema,
2163
2198
  sessionId: IdSchema,
2164
2199
  item: ConversationItemSchema
2165
2200
  });
2166
- var ConversationActivityStepUpsertSchema = z21.object({
2201
+ var ConversationActivityStepUpsertSchema = z22.object({
2167
2202
  userId: IdSchema,
2168
2203
  machineId: IdSchema,
2169
2204
  sessionId: IdSchema,
2170
2205
  activityId: IdSchema,
2171
- revision: z21.number().int().positive(),
2206
+ revision: z22.number().int().positive(),
2172
2207
  turnId: IdSchema,
2173
2208
  timestamp: IsoDateSchema,
2174
- actor: z21.enum(["assistant", "subagent"]),
2175
- status: z21.enum(["running", "completed", "failed"]),
2209
+ actor: z22.enum(["assistant", "subagent"]),
2210
+ status: z22.enum(["running", "completed", "failed"]),
2176
2211
  sourceEventId: IdSchema,
2177
2212
  step: ConversationActivityStepSchema
2178
2213
  }).strict();
2179
2214
 
2180
2215
  // ../../shared/protocol/dist/conversation/timeline.js
2181
- var SessionUserPreviewSchema = z22.object({
2216
+ var SessionUserPreviewSchema = z23.object({
2182
2217
  id: IdSchema,
2183
- revision: z22.number().int().positive(),
2218
+ revision: z23.number().int().positive(),
2184
2219
  timestamp: IsoDateSchema,
2185
- text: z22.string().max(4096)
2220
+ text: z23.string().max(4096)
2186
2221
  });
2187
- var SessionAssistantPreviewSchema = z22.object({
2222
+ var SessionAssistantPreviewSchema = z23.object({
2188
2223
  id: IdSchema,
2189
- revision: z22.number().int().positive(),
2224
+ revision: z23.number().int().positive(),
2190
2225
  timestamp: IsoDateSchema,
2191
- sourceEventIds: z22.array(IdSchema).min(1).max(1e3),
2192
- text: z22.string().max(4096),
2193
- final: z22.boolean(),
2194
- attachments: z22.array(ConversationAttachmentSchema.refine((attachment) => attachment.kind === "image" && attachment.imageRef === "sha256", "Assistant previews contain image references only")).max(4),
2195
- kind: z22.enum(["assistant-message", "task-completion"]).optional()
2226
+ sourceEventIds: z23.array(IdSchema).min(1).max(1e3),
2227
+ text: z23.string().max(4096),
2228
+ final: z23.boolean(),
2229
+ attachments: z23.array(ConversationAttachmentSchema.refine((attachment) => attachment.kind === "image" && attachment.imageRef === "sha256", "Assistant previews contain image references only")).max(4),
2230
+ kind: z23.enum(["assistant-message", "task-completion"]).optional()
2196
2231
  });
2197
2232
  var SESSION_TIMELINE_PAGE_SIZE = 100;
2198
- var SessionTimelinePageRequestSchema = z22.object({
2233
+ var SessionTimelinePageRequestSchema = z23.object({
2199
2234
  requestId: IdSchema,
2200
2235
  machineId: IdSchema,
2201
2236
  sessionId: IdSchema,
2202
- cursor: z22.string().max(32768).optional(),
2203
- metadataOnly: z22.boolean().optional(),
2204
- acceptContentEncodings: z22.array(z22.string().min(1).max(32)).max(8).optional(),
2205
- imageReferences: z22.boolean().optional(),
2206
- pageSize: z22.number().int().min(1).max(SESSION_TIMELINE_PAGE_SIZE).default(SESSION_TIMELINE_PAGE_SIZE),
2207
- assistantPreview: z22.boolean().optional()
2237
+ cursor: z23.string().max(32768).optional(),
2238
+ metadataOnly: z23.boolean().optional(),
2239
+ acceptContentEncodings: z23.array(z23.string().min(1).max(32)).max(8).optional(),
2240
+ imageReferences: z23.boolean().optional(),
2241
+ pageSize: z23.number().int().min(1).max(SESSION_TIMELINE_PAGE_SIZE).default(SESSION_TIMELINE_PAGE_SIZE),
2242
+ assistantPreview: z23.boolean().optional()
2208
2243
  });
2209
- var SessionWatchRequestSchema = z22.object({
2244
+ var SessionWatchRequestSchema = z23.object({
2210
2245
  requestId: IdSchema,
2211
2246
  machineId: IdSchema,
2212
2247
  sessionId: IdSchema,
2213
- watching: z22.boolean()
2248
+ watching: z23.boolean()
2214
2249
  }).strict();
2215
- var SessionWatchResultSchema = z22.discriminatedUnion("ok", [
2216
- z22.object({
2217
- ok: z22.literal(true),
2250
+ var SessionWatchResultSchema = z23.discriminatedUnion("ok", [
2251
+ z23.object({
2252
+ ok: z23.literal(true),
2218
2253
  requestId: IdSchema,
2219
2254
  machineId: IdSchema,
2220
2255
  sessionId: IdSchema,
2221
- watching: z22.boolean()
2256
+ watching: z23.boolean()
2222
2257
  }).strict(),
2223
- z22.object({
2224
- ok: z22.literal(false),
2258
+ z23.object({
2259
+ ok: z23.literal(false),
2225
2260
  requestId: IdSchema,
2226
2261
  machineId: IdSchema,
2227
2262
  sessionId: IdSchema,
2228
- watching: z22.boolean(),
2263
+ watching: z23.boolean(),
2229
2264
  error: ProtocolFailureSchema
2230
2265
  }).strict()
2231
2266
  ]);
2232
- var SessionTimelinePageSchema = z22.object({
2233
- items: z22.array(ConversationItemSchema).max(SESSION_TIMELINE_PAGE_SIZE),
2234
- cursor: z22.string().max(32768),
2235
- hasMore: z22.boolean(),
2236
- cursorStatus: z22.enum(["ok", "expired"]),
2267
+ var SessionTimelinePageSchema = z23.object({
2268
+ items: z23.array(ConversationItemSchema).max(SESSION_TIMELINE_PAGE_SIZE),
2269
+ cursor: z23.string().max(32768),
2270
+ hasMore: z23.boolean(),
2271
+ cursorStatus: z23.enum(["ok", "expired"]),
2237
2272
  assistantPreview: SessionAssistantPreviewSchema.optional(),
2238
2273
  userPreview: SessionUserPreviewSchema.optional(),
2239
- previewsComplete: z22.boolean().optional()
2274
+ previewsComplete: z23.boolean().optional()
2240
2275
  });
2241
- var SessionTimelinePageResultSchema = z22.discriminatedUnion("ok", [
2242
- z22.object({
2243
- ok: z22.literal(true),
2276
+ var SessionTimelinePageResultSchema = z23.discriminatedUnion("ok", [
2277
+ z23.object({
2278
+ ok: z23.literal(true),
2244
2279
  requestId: IdSchema,
2245
2280
  machineId: IdSchema,
2246
2281
  sessionId: IdSchema,
2247
2282
  page: SessionTimelinePageSchema
2248
2283
  }),
2249
- z22.object({
2250
- ok: z22.literal(false),
2284
+ z23.object({
2285
+ ok: z23.literal(false),
2251
2286
  requestId: IdSchema,
2252
2287
  machineId: IdSchema,
2253
2288
  sessionId: IdSchema,
2254
2289
  error: ProtocolFailureSchema
2255
2290
  })
2256
2291
  ]);
2257
- var SessionTimelineInvalidatedSchema = z22.object({
2292
+ var SessionTimelineInvalidatedSchema = z23.object({
2258
2293
  userId: IdSchema,
2259
2294
  machineId: IdSchema,
2260
2295
  sessionId: IdSchema,
2261
- reason: z22.enum(["clear", "rewind"]),
2296
+ reason: z23.enum(["clear", "rewind"]),
2262
2297
  sourceEventId: IdSchema,
2263
2298
  timestamp: IsoDateSchema
2264
2299
  }).strict();
2265
2300
 
2266
2301
  // ../../shared/protocol/dist/sessions/prompts.js
2267
- var SessionAvatarPersonaSchema = z23.object({
2268
- role: z23.enum(["designer", "filmmaker", "developer", "secretary", "default"]),
2269
- displayName: z23.string().trim().min(1).max(40).regex(/^[^\u0000-\u001f\u007f-\u009f]*$/).optional()
2302
+ var SessionAvatarPersonaSchema = z24.object({
2303
+ role: z24.enum(["designer", "filmmaker", "developer", "secretary", "default"]),
2304
+ displayName: z24.string().trim().min(1).max(40).regex(/^[^\u0000-\u001f\u007f-\u009f]*$/).optional()
2270
2305
  }).strict().refine((value) => value.role === "default" ? value.displayName === void 0 : value.displayName !== void 0, { message: "A role requires a display name; default must not include one" });
2271
2306
  var MAX_PROMPT_IMAGE_BYTES = 3 * 1024 * 1024;
2272
- var SessionPromptRequestSchema = z23.object({
2307
+ var SessionPromptRequestSchema = z24.object({
2273
2308
  requestId: IdSchema,
2274
2309
  operationId: IdSchema,
2275
2310
  machineId: IdSchema,
2276
2311
  sessionId: IdSchema,
2277
- prompt: z23.string().trim().max(1e5),
2278
- attachments: z23.array(PromptImageAttachmentSchema).max(4).optional(),
2279
- fileAttachments: z23.array(PromptFileAttachmentSchema).max(4).optional(),
2312
+ prompt: z24.string().trim().max(1e5),
2313
+ attachments: z24.array(PromptImageAttachmentSchema).max(4).optional(),
2314
+ fileAttachments: z24.array(PromptFileAttachmentSchema).max(4).optional(),
2280
2315
  avatarPersona: SessionAvatarPersonaSchema.optional(),
2281
- mode: z23.enum(["enqueue", "immediate"]).default("enqueue")
2316
+ mode: z24.enum(["enqueue", "immediate"]).default("enqueue")
2282
2317
  }).strict().superRefine((request, context) => {
2283
2318
  if (request.prompt.length === 0 && (request.attachments?.length ?? 0) === 0 && (request.fileAttachments?.length ?? 0) === 0) {
2284
2319
  context.addIssue({
@@ -2304,22 +2339,22 @@ var SessionPromptRequestSchema = z23.object({
2304
2339
  });
2305
2340
  }
2306
2341
  });
2307
- var SessionPromptResultSchema = z23.discriminatedUnion("ok", [
2308
- z23.object({
2309
- ok: z23.literal(true),
2342
+ var SessionPromptResultSchema = z24.discriminatedUnion("ok", [
2343
+ z24.object({
2344
+ ok: z24.literal(true),
2310
2345
  requestId: IdSchema,
2311
2346
  operationId: IdSchema,
2312
2347
  machineId: IdSchema,
2313
2348
  sessionId: IdSchema,
2314
2349
  messageId: IdSchema,
2315
- mode: z23.enum(["enqueue", "immediate"]),
2316
- deliveryState: z23.enum(["queued", "processing"]),
2350
+ mode: z24.enum(["enqueue", "immediate"]),
2351
+ deliveryState: z24.enum(["queued", "processing"]),
2317
2352
  // Negotiated lower bound from the native event clock. Exact text and history
2318
2353
  // ownership checks still apply; this is not an identity or proof of persistence.
2319
2354
  submittedAt: IsoDateSchema.optional()
2320
2355
  }),
2321
- z23.object({
2322
- ok: z23.literal(false),
2356
+ z24.object({
2357
+ ok: z24.literal(false),
2323
2358
  requestId: IdSchema,
2324
2359
  operationId: IdSchema,
2325
2360
  machineId: IdSchema,
@@ -2327,29 +2362,29 @@ var SessionPromptResultSchema = z23.discriminatedUnion("ok", [
2327
2362
  error: ProtocolFailureSchema
2328
2363
  })
2329
2364
  ]);
2330
- var SessionActivityUpdateSchema = z23.object({
2365
+ var SessionActivityUpdateSchema = z24.object({
2331
2366
  userId: IdSchema,
2332
2367
  machineId: IdSchema,
2333
2368
  sessionId: IdSchema,
2334
- state: z23.enum(["working", "idle"]),
2369
+ state: z24.enum(["working", "idle"]),
2335
2370
  occurredAt: IsoDateSchema,
2336
2371
  assistantPreview: SessionAssistantPreviewSchema.optional(),
2337
2372
  userPreview: SessionUserPreviewSchema.optional()
2338
2373
  });
2339
- var SessionAbortRequestSchema = z23.object({
2374
+ var SessionAbortRequestSchema = z24.object({
2340
2375
  requestId: IdSchema,
2341
2376
  machineId: IdSchema,
2342
2377
  sessionId: IdSchema
2343
2378
  });
2344
- var SessionAbortResultSchema = z23.discriminatedUnion("ok", [
2345
- z23.object({
2346
- ok: z23.literal(true),
2379
+ var SessionAbortResultSchema = z24.discriminatedUnion("ok", [
2380
+ z24.object({
2381
+ ok: z24.literal(true),
2347
2382
  requestId: IdSchema,
2348
2383
  machineId: IdSchema,
2349
2384
  sessionId: IdSchema
2350
2385
  }),
2351
- z23.object({
2352
- ok: z23.literal(false),
2386
+ z24.object({
2387
+ ok: z24.literal(false),
2353
2388
  requestId: IdSchema,
2354
2389
  machineId: IdSchema,
2355
2390
  sessionId: IdSchema,
@@ -2358,12 +2393,12 @@ var SessionAbortResultSchema = z23.discriminatedUnion("ok", [
2358
2393
  ]);
2359
2394
 
2360
2395
  // ../../shared/protocol/dist/sessions/interactions.js
2361
- import { z as z24 } from "zod";
2362
- var InteractionFormFieldSchema = z24.object({
2396
+ import { z as z25 } from "zod";
2397
+ var InteractionFormFieldSchema = z25.object({
2363
2398
  id: IdSchema,
2364
- label: z24.string().trim().min(1).max(1024),
2365
- description: z24.string().max(2048).optional(),
2366
- inputType: z24.enum([
2399
+ label: z25.string().trim().min(1).max(1024),
2400
+ description: z25.string().max(2048).optional(),
2401
+ inputType: z25.enum([
2367
2402
  "text",
2368
2403
  "number",
2369
2404
  "integer",
@@ -2371,77 +2406,77 @@ var InteractionFormFieldSchema = z24.object({
2371
2406
  "select",
2372
2407
  "multi-select"
2373
2408
  ]),
2374
- required: z24.boolean(),
2375
- options: z24.array(z24.string().max(1024)).max(100),
2376
- defaultValue: z24.union([
2377
- z24.string().max(4096),
2378
- z24.number().finite(),
2379
- z24.boolean(),
2380
- z24.array(z24.string().max(1024)).max(100)
2409
+ required: z25.boolean(),
2410
+ options: z25.array(z25.string().max(1024)).max(100),
2411
+ defaultValue: z25.union([
2412
+ z25.string().max(4096),
2413
+ z25.number().finite(),
2414
+ z25.boolean(),
2415
+ z25.array(z25.string().max(1024)).max(100)
2381
2416
  ]).optional(),
2382
- minimum: z24.number().finite().optional(),
2383
- maximum: z24.number().finite().optional(),
2384
- minLength: z24.number().int().nonnegative().max(1e6).optional(),
2385
- maxLength: z24.number().int().nonnegative().max(1e6).optional(),
2386
- minItems: z24.number().int().nonnegative().max(100).optional(),
2387
- maxItems: z24.number().int().nonnegative().max(100).optional(),
2388
- format: z24.enum(["email", "uri", "date", "date-time"]).optional()
2417
+ minimum: z25.number().finite().optional(),
2418
+ maximum: z25.number().finite().optional(),
2419
+ minLength: z25.number().int().nonnegative().max(1e6).optional(),
2420
+ maxLength: z25.number().int().nonnegative().max(1e6).optional(),
2421
+ minItems: z25.number().int().nonnegative().max(100).optional(),
2422
+ maxItems: z25.number().int().nonnegative().max(100).optional(),
2423
+ format: z25.enum(["email", "uri", "date", "date-time"]).optional()
2389
2424
  }).strict();
2390
- var InteractionPermissionRequestSchema = z24.object({
2391
- kind: z24.literal("permission"),
2425
+ var InteractionPermissionRequestSchema = z25.object({
2426
+ kind: z25.literal("permission"),
2392
2427
  permissionKind: IdSchema,
2393
- title: z24.string().trim().min(1).max(256),
2394
- description: z24.string().max(4096),
2395
- canApproveSession: z24.boolean(),
2396
- canApproveAlways: z24.boolean().optional(),
2397
- approvalScope: z24.string().trim().min(1).max(4096).optional()
2428
+ title: z25.string().trim().min(1).max(256),
2429
+ description: z25.string().max(4096),
2430
+ canApproveSession: z25.boolean(),
2431
+ canApproveAlways: z25.boolean().optional(),
2432
+ approvalScope: z25.string().trim().min(1).max(4096).optional()
2398
2433
  }).strict();
2399
- var InteractionUserInputRequestSchema = z24.object({
2400
- kind: z24.literal("user_input"),
2401
- question: z24.string().trim().min(1).max(4096),
2402
- choices: z24.array(z24.string().max(1024)).max(100),
2403
- allowFreeform: z24.boolean()
2434
+ var InteractionUserInputRequestSchema = z25.object({
2435
+ kind: z25.literal("user_input"),
2436
+ question: z25.string().trim().min(1).max(4096),
2437
+ choices: z25.array(z25.string().max(1024)).max(100),
2438
+ allowFreeform: z25.boolean()
2404
2439
  }).strict();
2405
- var InteractionElicitationRequestSchema = z24.object({
2406
- kind: z24.literal("elicitation"),
2407
- message: z24.string().trim().min(1).max(4096),
2408
- mode: z24.enum(["form", "url"]),
2409
- source: z24.string().trim().min(1).max(256).optional(),
2410
- url: z24.url().max(32768).optional(),
2411
- fields: z24.array(InteractionFormFieldSchema).max(100)
2440
+ var InteractionElicitationRequestSchema = z25.object({
2441
+ kind: z25.literal("elicitation"),
2442
+ message: z25.string().trim().min(1).max(4096),
2443
+ mode: z25.enum(["form", "url"]),
2444
+ source: z25.string().trim().min(1).max(256).optional(),
2445
+ url: z25.url().max(32768).optional(),
2446
+ fields: z25.array(InteractionFormFieldSchema).max(100)
2412
2447
  }).strict();
2413
- var InteractionMcpOauthRequestSchema = z24.object({
2414
- kind: z24.literal("mcp_oauth"),
2415
- serverName: z24.string().trim().min(1).max(256),
2416
- serverUrl: z24.url().max(32768),
2417
- reason: z24.enum(["initial", "refresh", "reauth", "upscope"]),
2418
- responseMode: z24.literal("cancel-only")
2448
+ var InteractionMcpOauthRequestSchema = z25.object({
2449
+ kind: z25.literal("mcp_oauth"),
2450
+ serverName: z25.string().trim().min(1).max(256),
2451
+ serverUrl: z25.url().max(32768),
2452
+ reason: z25.enum(["initial", "refresh", "reauth", "upscope"]),
2453
+ responseMode: z25.literal("cancel-only")
2419
2454
  }).strict();
2420
- var InteractionMcpHeadersRequestSchema = z24.object({
2421
- kind: z24.literal("mcp_headers"),
2422
- serverName: z24.string().trim().min(1).max(256),
2423
- serverUrl: z24.url().max(32768),
2424
- reason: z24.string().trim().min(1).max(256),
2425
- responseMode: z24.literal("none-only")
2455
+ var InteractionMcpHeadersRequestSchema = z25.object({
2456
+ kind: z25.literal("mcp_headers"),
2457
+ serverName: z25.string().trim().min(1).max(256),
2458
+ serverUrl: z25.url().max(32768),
2459
+ reason: z25.string().trim().min(1).max(256),
2460
+ responseMode: z25.literal("none-only")
2426
2461
  }).strict();
2427
- var InteractionAutoModeSwitchRequestSchema = z24.object({
2428
- kind: z24.literal("auto_mode_switch"),
2462
+ var InteractionAutoModeSwitchRequestSchema = z25.object({
2463
+ kind: z25.literal("auto_mode_switch"),
2429
2464
  errorCode: IdSchema.optional(),
2430
- retryAfterSeconds: z24.number().int().nonnegative().optional()
2465
+ retryAfterSeconds: z25.number().int().nonnegative().optional()
2431
2466
  }).strict();
2432
- var InteractionSessionLimitsRequestSchema = z24.object({
2433
- kind: z24.literal("session_limits"),
2434
- maxAiCredits: z24.number().finite().nonnegative(),
2435
- usedAiCredits: z24.number().finite().nonnegative()
2467
+ var InteractionSessionLimitsRequestSchema = z25.object({
2468
+ kind: z25.literal("session_limits"),
2469
+ maxAiCredits: z25.number().finite().nonnegative(),
2470
+ usedAiCredits: z25.number().finite().nonnegative()
2436
2471
  }).strict();
2437
- var InteractionExitPlanRequestSchema = z24.object({
2438
- kind: z24.literal("exit_plan"),
2439
- summary: z24.string().max(4096),
2440
- planContent: z24.string().max(1e5).optional(),
2441
- actions: z24.array(IdSchema).min(1).max(20),
2472
+ var InteractionExitPlanRequestSchema = z25.object({
2473
+ kind: z25.literal("exit_plan"),
2474
+ summary: z25.string().max(4096),
2475
+ planContent: z25.string().max(1e5).optional(),
2476
+ actions: z25.array(IdSchema).min(1).max(20),
2442
2477
  recommendedAction: IdSchema
2443
2478
  }).strict();
2444
- var InteractionRequestSchema = z24.discriminatedUnion("kind", [
2479
+ var InteractionRequestSchema = z25.discriminatedUnion("kind", [
2445
2480
  InteractionPermissionRequestSchema,
2446
2481
  InteractionUserInputRequestSchema,
2447
2482
  InteractionElicitationRequestSchema,
@@ -2451,81 +2486,81 @@ var InteractionRequestSchema = z24.discriminatedUnion("kind", [
2451
2486
  InteractionSessionLimitsRequestSchema,
2452
2487
  InteractionExitPlanRequestSchema
2453
2488
  ]);
2454
- var InteractionPermissionResponseSchema = z24.object({
2455
- kind: z24.literal("permission"),
2456
- decision: z24.enum(["approve-once", "approve-for-session", "approve-always", "reject"]),
2457
- feedback: z24.string().trim().min(1).max(2048).optional()
2489
+ var InteractionPermissionResponseSchema = z25.object({
2490
+ kind: z25.literal("permission"),
2491
+ decision: z25.enum(["approve-once", "approve-for-session", "approve-always", "reject"]),
2492
+ feedback: z25.string().trim().min(1).max(2048).optional()
2458
2493
  }).strict();
2459
- var InteractionUserInputResponseSchema = z24.object({
2460
- kind: z24.literal("user_input"),
2461
- answer: z24.string().max(1e5),
2462
- wasFreeform: z24.boolean()
2494
+ var InteractionUserInputResponseSchema = z25.object({
2495
+ kind: z25.literal("user_input"),
2496
+ answer: z25.string().max(1e5),
2497
+ wasFreeform: z25.boolean()
2463
2498
  }).strict();
2464
- var InteractionFieldValueSchema = z24.union([
2465
- z24.string().max(4096),
2466
- z24.number(),
2467
- z24.boolean(),
2468
- z24.array(z24.string().max(1024)).max(100)
2499
+ var InteractionFieldValueSchema = z25.union([
2500
+ z25.string().max(4096),
2501
+ z25.number(),
2502
+ z25.boolean(),
2503
+ z25.array(z25.string().max(1024)).max(100)
2469
2504
  ]);
2470
- var InteractionElicitationResponseSchema = z24.object({
2471
- kind: z24.literal("elicitation"),
2472
- action: z24.enum(["accept", "decline", "cancel"]),
2473
- values: z24.record(z24.string().max(256), InteractionFieldValueSchema)
2505
+ var InteractionElicitationResponseSchema = z25.object({
2506
+ kind: z25.literal("elicitation"),
2507
+ action: z25.enum(["accept", "decline", "cancel"]),
2508
+ values: z25.record(z25.string().max(256), InteractionFieldValueSchema)
2474
2509
  }).strict();
2475
- var InteractionMcpOauthResponseSchema = z24.object({
2476
- kind: z24.literal("mcp_oauth"),
2477
- action: z24.literal("cancel")
2510
+ var InteractionMcpOauthResponseSchema = z25.object({
2511
+ kind: z25.literal("mcp_oauth"),
2512
+ action: z25.literal("cancel")
2478
2513
  }).strict();
2479
- var InteractionMcpHeadersResponseSchema = z24.object({
2480
- kind: z24.literal("mcp_headers"),
2481
- action: z24.literal("none")
2514
+ var InteractionMcpHeadersResponseSchema = z25.object({
2515
+ kind: z25.literal("mcp_headers"),
2516
+ action: z25.literal("none")
2482
2517
  }).strict();
2483
- var InteractionAutoModeSwitchResponseSchema = z24.object({
2484
- kind: z24.literal("auto_mode_switch"),
2485
- action: z24.enum(["yes", "yes_always", "no"])
2518
+ var InteractionAutoModeSwitchResponseSchema = z25.object({
2519
+ kind: z25.literal("auto_mode_switch"),
2520
+ action: z25.enum(["yes", "yes_always", "no"])
2486
2521
  }).strict();
2487
- var InteractionSessionLimitsResponseSchema = z24.object({
2488
- kind: z24.literal("session_limits"),
2489
- action: z24.enum(["add", "set", "unset", "cancel"]),
2490
- additionalAiCredits: z24.number().positive().optional(),
2491
- maxAiCredits: z24.number().positive().optional()
2522
+ var InteractionSessionLimitsResponseSchema = z25.object({
2523
+ kind: z25.literal("session_limits"),
2524
+ action: z25.enum(["add", "set", "unset", "cancel"]),
2525
+ additionalAiCredits: z25.number().positive().optional(),
2526
+ maxAiCredits: z25.number().positive().optional()
2492
2527
  }).strict().superRefine((response, context) => {
2493
2528
  if (response.action === "add" && response.additionalAiCredits === void 0) {
2494
2529
  context.addIssue({
2495
- code: z24.ZodIssueCode.custom,
2530
+ code: z25.ZodIssueCode.custom,
2496
2531
  path: ["additionalAiCredits"],
2497
2532
  message: "additionalAiCredits is required for add"
2498
2533
  });
2499
2534
  }
2500
2535
  if (response.action === "set" && response.maxAiCredits === void 0) {
2501
2536
  context.addIssue({
2502
- code: z24.ZodIssueCode.custom,
2537
+ code: z25.ZodIssueCode.custom,
2503
2538
  path: ["maxAiCredits"],
2504
2539
  message: "maxAiCredits is required for set"
2505
2540
  });
2506
2541
  }
2507
2542
  if (response.action !== "add" && response.additionalAiCredits !== void 0) {
2508
2543
  context.addIssue({
2509
- code: z24.ZodIssueCode.custom,
2544
+ code: z25.ZodIssueCode.custom,
2510
2545
  path: ["additionalAiCredits"],
2511
2546
  message: "additionalAiCredits is only valid for add"
2512
2547
  });
2513
2548
  }
2514
2549
  if (response.action !== "set" && response.maxAiCredits !== void 0) {
2515
2550
  context.addIssue({
2516
- code: z24.ZodIssueCode.custom,
2551
+ code: z25.ZodIssueCode.custom,
2517
2552
  path: ["maxAiCredits"],
2518
2553
  message: "maxAiCredits is only valid for set"
2519
2554
  });
2520
2555
  }
2521
2556
  });
2522
- var InteractionExitPlanResponseSchema = z24.object({
2523
- kind: z24.literal("exit_plan"),
2524
- approved: z24.boolean(),
2557
+ var InteractionExitPlanResponseSchema = z25.object({
2558
+ kind: z25.literal("exit_plan"),
2559
+ approved: z25.boolean(),
2525
2560
  selectedAction: IdSchema.optional(),
2526
- feedback: z24.string().trim().min(1).max(4096).optional()
2561
+ feedback: z25.string().trim().min(1).max(4096).optional()
2527
2562
  }).strict();
2528
- var InteractionResponseSchema = z24.discriminatedUnion("kind", [
2563
+ var InteractionResponseSchema = z25.discriminatedUnion("kind", [
2529
2564
  InteractionPermissionResponseSchema,
2530
2565
  InteractionUserInputResponseSchema,
2531
2566
  InteractionElicitationResponseSchema,
@@ -2535,30 +2570,30 @@ var InteractionResponseSchema = z24.discriminatedUnion("kind", [
2535
2570
  InteractionSessionLimitsResponseSchema,
2536
2571
  InteractionExitPlanResponseSchema
2537
2572
  ]);
2538
- var InteractionRequestPayloadSchema = z24.object({
2573
+ var InteractionRequestPayloadSchema = z25.object({
2539
2574
  interactionRequestId: IdSchema,
2540
2575
  userId: IdSchema,
2541
2576
  machineId: IdSchema,
2542
2577
  sessionId: IdSchema,
2543
2578
  request: InteractionRequestSchema
2544
2579
  }).strict();
2545
- var InteractionRespondRequestSchema = z24.object({
2580
+ var InteractionRespondRequestSchema = z25.object({
2546
2581
  requestId: IdSchema,
2547
2582
  interactionRequestId: IdSchema,
2548
2583
  machineId: IdSchema,
2549
2584
  sessionId: IdSchema,
2550
2585
  response: InteractionResponseSchema
2551
2586
  }).strict();
2552
- var InteractionRespondResultSchema = z24.discriminatedUnion("ok", [
2553
- z24.object({
2554
- ok: z24.literal(true),
2587
+ var InteractionRespondResultSchema = z25.discriminatedUnion("ok", [
2588
+ z25.object({
2589
+ ok: z25.literal(true),
2555
2590
  requestId: IdSchema,
2556
2591
  interactionRequestId: IdSchema,
2557
2592
  machineId: IdSchema,
2558
2593
  sessionId: IdSchema
2559
2594
  }).strict(),
2560
- z24.object({
2561
- ok: z24.literal(false),
2595
+ z25.object({
2596
+ ok: z25.literal(false),
2562
2597
  requestId: IdSchema,
2563
2598
  interactionRequestId: IdSchema,
2564
2599
  machineId: IdSchema,
@@ -2566,31 +2601,31 @@ var InteractionRespondResultSchema = z24.discriminatedUnion("ok", [
2566
2601
  error: ProtocolFailureSchema
2567
2602
  }).strict()
2568
2603
  ]);
2569
- var PermissionRequestPayloadSchema = z24.object({
2604
+ var PermissionRequestPayloadSchema = z25.object({
2570
2605
  permissionRequestId: IdSchema,
2571
2606
  userId: IdSchema,
2572
2607
  machineId: IdSchema,
2573
2608
  sessionId: IdSchema,
2574
- request: z24.record(z24.string(), z24.unknown())
2609
+ request: z25.record(z25.string(), z25.unknown())
2575
2610
  });
2576
- var PermissionRespondRequestSchema = z24.object({
2611
+ var PermissionRespondRequestSchema = z25.object({
2577
2612
  requestId: IdSchema,
2578
2613
  permissionRequestId: IdSchema,
2579
2614
  machineId: IdSchema,
2580
2615
  sessionId: IdSchema,
2581
- decision: z24.enum(["approve-once", "reject"]),
2582
- feedback: z24.string().trim().min(1).max(2048).optional()
2616
+ decision: z25.enum(["approve-once", "reject"]),
2617
+ feedback: z25.string().trim().min(1).max(2048).optional()
2583
2618
  });
2584
- var PermissionRespondResultSchema = z24.discriminatedUnion("ok", [
2585
- z24.object({
2586
- ok: z24.literal(true),
2619
+ var PermissionRespondResultSchema = z25.discriminatedUnion("ok", [
2620
+ z25.object({
2621
+ ok: z25.literal(true),
2587
2622
  requestId: IdSchema,
2588
2623
  permissionRequestId: IdSchema,
2589
2624
  machineId: IdSchema,
2590
2625
  sessionId: IdSchema
2591
2626
  }),
2592
- z24.object({
2593
- ok: z24.literal(false),
2627
+ z25.object({
2628
+ ok: z25.literal(false),
2594
2629
  requestId: IdSchema,
2595
2630
  permissionRequestId: IdSchema,
2596
2631
  machineId: IdSchema,
@@ -2600,42 +2635,42 @@ var PermissionRespondResultSchema = z24.discriminatedUnion("ok", [
2600
2635
  ]);
2601
2636
 
2602
2637
  // ../../shared/protocol/dist/conversation/timeline-sync.js
2603
- import { z as z25 } from "zod";
2638
+ import { z as z26 } from "zod";
2604
2639
  var TIMELINE_SYNC_MAX_EVENTS = 128;
2605
2640
  var TIMELINE_SYNC_MAX_BYTES = 6 * 1024 * 1024;
2606
2641
  var TIMELINE_IMAGE_CHUNK_BYTES = 48 * 1024;
2607
2642
  var TIMELINE_IMAGE_MAX_BYTES = 3 * 1024 * 1024;
2608
- var identity = z25.string().min(1).max(256);
2609
- var sequence = z25.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
2610
- var hash = z25.string().regex(/^[a-f0-9]{64}$/u);
2611
- var TimelineWatermarkSchema = z25.object({
2643
+ var identity = z26.string().min(1).max(256);
2644
+ var sequence = z26.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
2645
+ var hash = z26.string().regex(/^[a-f0-9]{64}$/u);
2646
+ var TimelineWatermarkSchema = z26.object({
2612
2647
  epoch: identity,
2613
2648
  sequence
2614
2649
  }).strict();
2615
- var TimelineSyncRequestSchema = z25.object({
2650
+ var TimelineSyncRequestSchema = z26.object({
2616
2651
  watermark: TimelineWatermarkSchema.optional(),
2617
- waitMs: z25.number().int().min(0).max(2e4).optional(),
2618
- resume: z25.boolean().optional()
2652
+ waitMs: z26.number().int().min(0).max(2e4).optional(),
2653
+ resume: z26.boolean().optional()
2619
2654
  }).strict();
2620
- var TimelineTextAppendSchema = z25.object({
2655
+ var TimelineTextAppendSchema = z26.object({
2621
2656
  itemId: identity,
2622
- baseRevision: z25.number().int().positive(),
2623
- revision: z25.number().int().positive(),
2624
- appendText: z25.string().min(1).max(5e5),
2625
- sourceEventIds: z25.array(identity).min(1).max(1e3).optional(),
2626
- sourceMessageIds: z25.array(identity).min(1).max(1e3).optional(),
2627
- sourceInteractionIds: z25.array(identity).min(1).max(1e3).optional()
2657
+ baseRevision: z26.number().int().positive(),
2658
+ revision: z26.number().int().positive(),
2659
+ appendText: z26.string().min(1).max(5e5),
2660
+ sourceEventIds: z26.array(identity).min(1).max(1e3).optional(),
2661
+ sourceMessageIds: z26.array(identity).min(1).max(1e3).optional(),
2662
+ sourceInteractionIds: z26.array(identity).min(1).max(1e3).optional()
2628
2663
  }).strict();
2629
- var TimelineSyncEventSchema = z25.discriminatedUnion("kind", [
2630
- z25.object({ kind: z25.literal("upsert"), sequence, item: ConversationItemSchema }).strict(),
2631
- z25.object({ kind: z25.literal("append"), sequence, append: TimelineTextAppendSchema }).strict(),
2632
- z25.object({
2633
- kind: z25.literal("step"),
2664
+ var TimelineSyncEventSchema = z26.discriminatedUnion("kind", [
2665
+ z26.object({ kind: z26.literal("upsert"), sequence, item: ConversationItemSchema }).strict(),
2666
+ z26.object({ kind: z26.literal("append"), sequence, append: TimelineTextAppendSchema }).strict(),
2667
+ z26.object({
2668
+ kind: z26.literal("step"),
2634
2669
  sequence,
2635
2670
  upsert: ConversationActivityStepUpsertSchema
2636
2671
  }).strict()
2637
2672
  ]);
2638
- var TimelineResyncReasonSchema = z25.enum([
2673
+ var TimelineResyncReasonSchema = z26.enum([
2639
2674
  "initial",
2640
2675
  "epoch-changed",
2641
2676
  "evicted",
@@ -2644,36 +2679,36 @@ var TimelineResyncReasonSchema = z25.enum([
2644
2679
  "rewind",
2645
2680
  "oversized"
2646
2681
  ]);
2647
- var TimelineSyncResponseSchema = z25.discriminatedUnion("status", [
2648
- z25.object({
2649
- status: z25.literal("snapshot"),
2682
+ var TimelineSyncResponseSchema = z26.discriminatedUnion("status", [
2683
+ z26.object({
2684
+ status: z26.literal("snapshot"),
2650
2685
  watermark: TimelineWatermarkSchema,
2651
2686
  page: SessionTimelinePageSchema
2652
2687
  }).strict(),
2653
- z25.object({
2654
- status: z25.literal("replay"),
2688
+ z26.object({
2689
+ status: z26.literal("replay"),
2655
2690
  watermark: TimelineWatermarkSchema,
2656
2691
  afterSequence: sequence,
2657
- events: z25.array(TimelineSyncEventSchema).max(TIMELINE_SYNC_MAX_EVENTS),
2658
- hasMore: z25.boolean()
2692
+ events: z26.array(TimelineSyncEventSchema).max(TIMELINE_SYNC_MAX_EVENTS),
2693
+ hasMore: z26.boolean()
2659
2694
  }).strict(),
2660
- z25.object({
2661
- status: z25.literal("resync"),
2695
+ z26.object({
2696
+ status: z26.literal("resync"),
2662
2697
  epoch: identity,
2663
2698
  reason: TimelineResyncReasonSchema
2664
2699
  }).strict()
2665
2700
  ]);
2666
- var TimelineImageRequestSchema = z25.object({
2701
+ var TimelineImageRequestSchema = z26.object({
2667
2702
  sha256: hash,
2668
- offset: z25.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1)
2703
+ offset: z26.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1)
2669
2704
  }).strict();
2670
- var TimelineImageChunkSchema = z25.object({
2705
+ var TimelineImageChunkSchema = z26.object({
2671
2706
  sha256: hash,
2672
- offset: z25.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1),
2673
- totalBytes: z25.number().int().positive().max(TIMELINE_IMAGE_MAX_BYTES),
2674
- mimeType: z25.enum(["image/gif", "image/jpeg", "image/png", "image/webp"]),
2675
- data: z25.string().min(4).max(Math.ceil(TIMELINE_IMAGE_CHUNK_BYTES / 3) * 4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u),
2676
- eof: z25.boolean()
2707
+ offset: z26.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1),
2708
+ totalBytes: z26.number().int().positive().max(TIMELINE_IMAGE_MAX_BYTES),
2709
+ mimeType: z26.enum(["image/gif", "image/jpeg", "image/png", "image/webp"]),
2710
+ data: z26.string().min(4).max(Math.ceil(TIMELINE_IMAGE_CHUNK_BYTES / 3) * 4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u),
2711
+ eof: z26.boolean()
2677
2712
  }).strict().superRefine((chunk, context) => {
2678
2713
  const padding = chunk.data.endsWith("==") ? 2 : chunk.data.endsWith("=") ? 1 : 0;
2679
2714
  const length = chunk.data.length / 4 * 3 - padding;
@@ -2684,10 +2719,10 @@ var TimelineImageChunkSchema = z25.object({
2684
2719
  });
2685
2720
 
2686
2721
  // ../../shared/protocol/dist/workbench.js
2687
- import { z as z27 } from "zod";
2722
+ import { z as z28 } from "zod";
2688
2723
 
2689
2724
  // ../../shared/protocol/dist/schedules.js
2690
- import { z as z26 } from "zod";
2725
+ import { z as z27 } from "zod";
2691
2726
  var SCHEDULE_OPERATIONS = [
2692
2727
  "schedule.snapshot",
2693
2728
  "schedule.create",
@@ -2695,90 +2730,90 @@ var SCHEDULE_OPERATIONS = [
2695
2730
  "schedule.draft.dismiss",
2696
2731
  "schedule.resume"
2697
2732
  ];
2698
- var Id = z26.string().min(1).max(256);
2699
- var NativeId = z26.number().int().positive().max(Number.MAX_SAFE_INTEGER);
2700
- var Time = z26.iso.datetime({ offset: true });
2701
- var WorkbenchScheduleRuleSchema = z26.discriminatedUnion("kind", [
2702
- z26.object({ kind: z26.literal("once"), at: Time }).strict(),
2703
- z26.object({
2704
- kind: z26.literal("interval"),
2705
- seconds: z26.number().int().min(10).max(86400),
2706
- recurring: z26.boolean().optional()
2733
+ var Id = z27.string().min(1).max(256);
2734
+ var NativeId = z27.number().int().positive().max(Number.MAX_SAFE_INTEGER);
2735
+ var Time = z27.iso.datetime({ offset: true });
2736
+ var WorkbenchScheduleRuleSchema = z27.discriminatedUnion("kind", [
2737
+ z27.object({ kind: z27.literal("once"), at: Time }).strict(),
2738
+ z27.object({
2739
+ kind: z27.literal("interval"),
2740
+ seconds: z27.number().int().min(10).max(86400),
2741
+ recurring: z27.boolean().optional()
2707
2742
  }).strict(),
2708
- z26.object({
2709
- kind: z26.literal("cron"),
2710
- expression: z26.string().trim().min(9).max(256).regex(/^\S+(?: +\S+){4}$/),
2711
- timezone: z26.string().min(1).max(128).regex(/^[A-Za-z0-9_+./-]+$/)
2743
+ z27.object({
2744
+ kind: z27.literal("cron"),
2745
+ expression: z27.string().trim().min(9).max(256).regex(/^\S+(?: +\S+){4}$/),
2746
+ timezone: z27.string().min(1).max(128).regex(/^[A-Za-z0-9_+./-]+$/)
2712
2747
  }).strict()
2713
2748
  ]);
2714
2749
  var Content = {
2715
2750
  rule: WorkbenchScheduleRuleSchema,
2716
- prompt: z26.string().max(16e3).describe("The execution prompt, or ONLY the user's exact arguments when skill is set. Do not include the skill name, slash prefix, scheduling instructions, or extra explanation in skill arguments."),
2717
- skill: z26.string().min(1).max(256).regex(/^[A-Za-z0-9][A-Za-z0-9_.:-]*$/).optional().describe("A genuine callable skill name from this session, without the leading slash. Set this field when the user requests a skill; put only its exact arguments in prompt.")
2751
+ prompt: z27.string().max(16e3).describe("The execution prompt, or ONLY the user's exact arguments when skill is set. Do not include the skill name, slash prefix, scheduling instructions, or extra explanation in skill arguments."),
2752
+ skill: z27.string().min(1).max(256).regex(/^[A-Za-z0-9][A-Za-z0-9_.:-]*$/).optional().describe("A genuine callable skill name from this session, without the leading slash. Set this field when the user requests a skill; put only its exact arguments in prompt.")
2718
2753
  };
2719
- var WorkbenchScheduleProposalSchema = z26.object(Content).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2720
- var WorkbenchScheduleDraftSchema = z26.object({
2721
- id: z26.uuid(),
2754
+ var WorkbenchScheduleProposalSchema = z27.object(Content).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2755
+ var WorkbenchScheduleDraftSchema = z27.object({
2756
+ id: z27.uuid(),
2722
2757
  createdAt: Time,
2723
2758
  ...Content
2724
2759
  }).strict();
2725
- var WorkbenchScheduleEntrySchema = z26.object({
2760
+ var WorkbenchScheduleEntrySchema = z27.object({
2726
2761
  id: NativeId,
2727
- prompt: z26.string().max(1e5),
2728
- displayPrompt: z26.string().max(1e5).optional(),
2729
- recurring: z26.boolean(),
2762
+ prompt: z27.string().max(1e5),
2763
+ displayPrompt: z27.string().max(1e5).optional(),
2764
+ recurring: z27.boolean(),
2730
2765
  nextRunAt: Time,
2731
- intervalMs: z26.number().int().positive().optional(),
2732
- cron: z26.string().max(256).optional(),
2733
- timezone: z26.string().max(128).optional(),
2766
+ intervalMs: z27.number().int().positive().optional(),
2767
+ cron: z27.string().max(256).optional(),
2768
+ timezone: z27.string().max(128).optional(),
2734
2769
  at: Time.optional()
2735
2770
  }).strict();
2736
- var WorkbenchScheduleResultSchema = z26.object({
2771
+ var WorkbenchScheduleResultSchema = z27.object({
2737
2772
  id: Id,
2738
2773
  scheduleId: NativeId,
2739
2774
  triggerEventId: Id,
2740
2775
  time: Time,
2741
- prompt: z26.string().max(16e3),
2742
- status: z26.enum(["reply", "error", "merged", "pending", "unknown"]),
2743
- reply: z26.string().max(16e3).optional(),
2776
+ prompt: z27.string().max(16e3),
2777
+ status: z27.enum(["reply", "error", "merged", "pending", "unknown"]),
2778
+ reply: z27.string().max(16e3).optional(),
2744
2779
  replyEventId: Id.optional(),
2745
- error: z26.string().max(1024).optional()
2780
+ error: z27.string().max(1024).optional()
2746
2781
  }).strict();
2747
- var WorkbenchScheduleSnapshotSchema = z26.object({
2748
- state: z26.enum(["active", "needs-resume"]),
2749
- workingDirectory: z26.string().max(32768).optional(),
2750
- timezone: z26.string().max(128).optional(),
2751
- entries: z26.array(WorkbenchScheduleEntrySchema).max(256),
2752
- drafts: z26.array(WorkbenchScheduleDraftSchema).max(100),
2753
- results: z26.array(WorkbenchScheduleResultSchema).max(100),
2754
- historyTruncated: z26.boolean(),
2782
+ var WorkbenchScheduleSnapshotSchema = z27.object({
2783
+ state: z27.enum(["active", "needs-resume"]),
2784
+ workingDirectory: z27.string().max(32768).optional(),
2785
+ timezone: z27.string().max(128).optional(),
2786
+ entries: z27.array(WorkbenchScheduleEntrySchema).max(256),
2787
+ drafts: z27.array(WorkbenchScheduleDraftSchema).max(100),
2788
+ results: z27.array(WorkbenchScheduleResultSchema).max(100),
2789
+ historyTruncated: z27.boolean(),
2755
2790
  sampledAt: Time
2756
2791
  }).strict();
2757
2792
  var Submission = {
2758
- operationId: z26.uuid(),
2759
- operationCreatedAt: z26.iso.datetime(),
2793
+ operationId: z27.uuid(),
2794
+ operationCreatedAt: z27.iso.datetime(),
2760
2795
  expectedAgentRunId: Id
2761
2796
  };
2762
- var WorkbenchScheduleCreateRequestSchema = z26.object({
2797
+ var WorkbenchScheduleCreateRequestSchema = z27.object({
2763
2798
  ...Submission,
2764
2799
  ...Content,
2765
- draftId: z26.uuid().optional()
2800
+ draftId: z27.uuid().optional()
2766
2801
  }).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2767
- var WorkbenchScheduleCreateResultSchema = z26.object({
2802
+ var WorkbenchScheduleCreateResultSchema = z27.object({
2768
2803
  snapshot: WorkbenchScheduleSnapshotSchema,
2769
- verified: z26.boolean()
2804
+ verified: z27.boolean()
2770
2805
  }).strict();
2771
- var WorkbenchScheduleDeleteRequestSchema = z26.object({
2806
+ var WorkbenchScheduleDeleteRequestSchema = z27.object({
2772
2807
  ...Submission,
2773
2808
  id: NativeId
2774
2809
  }).strict();
2775
- var WorkbenchScheduleDeleteResultSchema = z26.object({
2810
+ var WorkbenchScheduleDeleteResultSchema = z27.object({
2776
2811
  snapshot: WorkbenchScheduleSnapshotSchema,
2777
- removed: z26.boolean()
2812
+ removed: z27.boolean()
2778
2813
  }).strict();
2779
- var WorkbenchScheduleDraftDismissRequestSchema = z26.object({
2814
+ var WorkbenchScheduleDraftDismissRequestSchema = z27.object({
2780
2815
  ...Submission,
2781
- draftId: z26.uuid()
2816
+ draftId: z27.uuid()
2782
2817
  }).strict();
2783
2818
  var ScheduleAndroidSchemas = {
2784
2819
  WorkbenchScheduleRule: WorkbenchScheduleRuleSchema,
@@ -2795,10 +2830,10 @@ var ScheduleAndroidSchemas = {
2795
2830
  };
2796
2831
 
2797
2832
  // ../../shared/protocol/dist/workbench.js
2798
- var Id2 = z27.string().trim().min(1).max(256);
2799
- var Text = z27.string().max(1e5);
2800
- var Count = z27.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
2801
- var Failure = z27.object({ code: Id2, message: z27.string().min(1).max(1024) }).strict();
2833
+ var Id2 = z28.string().trim().min(1).max(256);
2834
+ var Text = z28.string().max(1e5);
2835
+ var Count = z28.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
2836
+ var Failure = z28.object({ code: Id2, message: z28.string().min(1).max(1024) }).strict();
2802
2837
  var WORKBENCH_OPERATIONS = [
2803
2838
  "operation.get",
2804
2839
  "question.ask",
@@ -2817,104 +2852,104 @@ var WORKBENCH_OPERATIONS = [
2817
2852
  ...SCHEDULE_OPERATIONS
2818
2853
  ];
2819
2854
  var Submission2 = {
2820
- operationId: z27.uuid(),
2821
- operationCreatedAt: z27.iso.datetime(),
2855
+ operationId: z28.uuid(),
2856
+ operationCreatedAt: z28.iso.datetime(),
2822
2857
  expectedAgentRunId: Id2
2823
2858
  };
2824
- var WorkbenchOperationGetSchema = z27.object({ operationId: z27.uuid() }).strict();
2825
- var WorkbenchOperationStatusSchema = z27.object({
2826
- operationId: z27.uuid(),
2827
- operation: z27.enum(WORKBENCH_OPERATIONS),
2859
+ var WorkbenchOperationGetSchema = z28.object({ operationId: z28.uuid() }).strict();
2860
+ var WorkbenchOperationStatusSchema = z28.object({
2861
+ operationId: z28.uuid(),
2862
+ operation: z28.enum(WORKBENCH_OPERATIONS),
2828
2863
  agentRunId: Id2,
2829
- state: z27.enum(["running", "succeeded", "failed", "uncertain", "result-expired"]),
2830
- result: z27.record(z27.string(), z27.json()).optional(),
2864
+ state: z28.enum(["running", "succeeded", "failed", "uncertain", "result-expired"]),
2865
+ result: z28.record(z28.string(), z28.json()).optional(),
2831
2866
  error: Failure.optional()
2832
2867
  }).strict().superRefine((value, context) => {
2833
2868
  if (value.state === "succeeded" !== (value.result !== void 0) || (value.state === "failed" || value.state === "uncertain") !== (value.error !== void 0)) {
2834
2869
  context.addIssue({ code: "custom", message: "Invalid operation state payload" });
2835
2870
  }
2836
2871
  });
2837
- var WorkbenchAskRequestSchema = z27.object({
2872
+ var WorkbenchAskRequestSchema = z28.object({
2838
2873
  ...Submission2,
2839
- question: z27.string().trim().min(1).max(16e3)
2874
+ question: z28.string().trim().min(1).max(16e3)
2840
2875
  }).strict();
2841
- var WorkbenchAskResultSchema = z27.object({ answer: Text }).strict();
2842
- var WorkbenchEmptyRequestSchema = z27.object({}).strict();
2843
- var WorkbenchSubmitRequestSchema = z27.object(Submission2).strict();
2844
- var WorkbenchResearchCreateRequestSchema = z27.object({
2876
+ var WorkbenchAskResultSchema = z28.object({ answer: Text }).strict();
2877
+ var WorkbenchEmptyRequestSchema = z28.object({}).strict();
2878
+ var WorkbenchSubmitRequestSchema = z28.object(Submission2).strict();
2879
+ var WorkbenchResearchCreateRequestSchema = z28.object({
2845
2880
  ...Submission2,
2846
- title: z27.string().trim().min(1).max(120),
2847
- question: z27.string().trim().min(1).max(16e3),
2881
+ title: z28.string().trim().min(1).max(120),
2882
+ question: z28.string().trim().min(1).max(16e3),
2848
2883
  sourceItemId: Id2.optional(),
2849
- deferInitialPrompt: z27.literal(true).optional()
2884
+ deferInitialPrompt: z28.literal(true).optional()
2850
2885
  }).strict();
2851
- var WorkbenchResearchThreadSchema = z27.object({
2886
+ var WorkbenchResearchThreadSchema = z28.object({
2852
2887
  sessionId: Id2,
2853
2888
  parentSessionId: Id2,
2854
- title: z27.string().min(1).max(120),
2855
- createdAt: z27.iso.datetime(),
2889
+ title: z28.string().min(1).max(120),
2890
+ createdAt: z28.iso.datetime(),
2856
2891
  contextAnchor: Id2.optional(),
2857
- contextTruncated: z27.boolean(),
2858
- detached: z27.boolean(),
2859
- state: z27.enum(["creating", "ready", "failed"])
2892
+ contextTruncated: z28.boolean(),
2893
+ detached: z28.boolean(),
2894
+ state: z28.enum(["creating", "ready", "failed"])
2860
2895
  }).strict();
2861
- var WorkbenchResearchCreateResultSchema = z27.object({
2896
+ var WorkbenchResearchCreateResultSchema = z28.object({
2862
2897
  thread: WorkbenchResearchThreadSchema
2863
2898
  }).strict();
2864
- var WorkbenchResearchListResultSchema = z27.object({
2865
- threads: z27.array(WorkbenchResearchThreadSchema).max(100)
2899
+ var WorkbenchResearchListResultSchema = z28.object({
2900
+ threads: z28.array(WorkbenchResearchThreadSchema).max(100)
2866
2901
  }).strict();
2867
- var WorkbenchResearchTimelineRequestSchema = z27.object({
2902
+ var WorkbenchResearchTimelineRequestSchema = z28.object({
2868
2903
  cursor: Id2.optional()
2869
2904
  }).strict();
2870
- var WorkbenchResearchSendRequestSchema = z27.object({
2905
+ var WorkbenchResearchSendRequestSchema = z28.object({
2871
2906
  ...Submission2,
2872
- prompt: z27.string().trim().min(1).max(16e3)
2907
+ prompt: z28.string().trim().min(1).max(16e3)
2873
2908
  }).strict();
2874
- var WorkbenchResearchSendResultSchema = z27.object({ messageId: Id2 }).strict();
2875
- var WorkbenchCompletedResultSchema = z27.object({ completed: z27.boolean() }).strict();
2876
- var WorkbenchCommandSchema = z27.object({
2877
- name: z27.string().min(1).max(260),
2878
- description: z27.string().max(4096),
2879
- argumentHint: z27.string().max(1024).optional(),
2880
- kind: z27.enum(["builtin", "skill", "client"]),
2881
- allowDuringExecution: z27.boolean(),
2882
- supported: z27.boolean(),
2883
- reason: z27.string().max(1024).optional()
2909
+ var WorkbenchResearchSendResultSchema = z28.object({ messageId: Id2 }).strict();
2910
+ var WorkbenchCompletedResultSchema = z28.object({ completed: z28.boolean() }).strict();
2911
+ var WorkbenchCommandSchema = z28.object({
2912
+ name: z28.string().min(1).max(260),
2913
+ description: z28.string().max(4096),
2914
+ argumentHint: z28.string().max(1024).optional(),
2915
+ kind: z28.enum(["builtin", "skill", "client"]),
2916
+ allowDuringExecution: z28.boolean(),
2917
+ supported: z28.boolean(),
2918
+ reason: z28.string().max(1024).optional()
2884
2919
  }).strict();
2885
- var WorkbenchCommandListResultSchema = z27.object({
2886
- commands: z27.array(WorkbenchCommandSchema).max(512)
2920
+ var WorkbenchCommandListResultSchema = z28.object({
2921
+ commands: z28.array(WorkbenchCommandSchema).max(512)
2887
2922
  }).strict();
2888
- var WorkbenchCommandInvokeRequestSchema = z27.object({
2923
+ var WorkbenchCommandInvokeRequestSchema = z28.object({
2889
2924
  ...Submission2,
2890
- name: z27.string().trim().min(1).max(260),
2891
- input: z27.string().max(16e3)
2925
+ name: z28.string().trim().min(1).max(260),
2926
+ input: z28.string().max(16e3)
2892
2927
  }).strict();
2893
- var WorkbenchCommandChoiceSchema = z27.object({
2894
- name: z27.string().min(1).max(260),
2895
- label: z27.string().min(1).max(1024),
2896
- input: z27.string().max(16e3)
2928
+ var WorkbenchCommandChoiceSchema = z28.object({
2929
+ name: z28.string().min(1).max(260),
2930
+ label: z28.string().min(1).max(1024),
2931
+ input: z28.string().max(16e3)
2897
2932
  }).strict();
2898
- var WorkbenchCommandResultSchema = z27.discriminatedUnion("kind", [
2899
- z27.object({ kind: z27.literal("text"), text: Text }).strict(),
2900
- z27.object({ kind: z27.literal("completed") }).strict(),
2901
- z27.object({ kind: z27.literal("sent"), messageId: Id2 }).strict(),
2902
- z27.object({
2903
- kind: z27.literal("select-subcommand"),
2904
- choices: z27.array(WorkbenchCommandChoiceSchema).min(1).max(100)
2933
+ var WorkbenchCommandResultSchema = z28.discriminatedUnion("kind", [
2934
+ z28.object({ kind: z28.literal("text"), text: Text }).strict(),
2935
+ z28.object({ kind: z28.literal("completed") }).strict(),
2936
+ z28.object({ kind: z28.literal("sent"), messageId: Id2 }).strict(),
2937
+ z28.object({
2938
+ kind: z28.literal("select-subcommand"),
2939
+ choices: z28.array(WorkbenchCommandChoiceSchema).min(1).max(100)
2905
2940
  }).strict()
2906
2941
  ]);
2907
- var WorkbenchQueueItemSchema = z27.object({
2942
+ var WorkbenchQueueItemSchema = z28.object({
2908
2943
  id: Id2,
2909
- kind: z27.string().min(1).max(64),
2910
- texts: z27.array(z27.string().max(1e5)).min(1).max(100),
2911
- actions: z27.array(z27.enum(["edit", "remove", "move", "send-now"])).max(4)
2944
+ kind: z28.string().min(1).max(64),
2945
+ texts: z28.array(z28.string().max(1e5)).min(1).max(100),
2946
+ actions: z28.array(z28.enum(["edit", "remove", "move", "send-now"])).max(4)
2912
2947
  }).strict();
2913
- var WorkbenchQueueSnapshotSchema = z27.object({
2948
+ var WorkbenchQueueSnapshotSchema = z28.object({
2914
2949
  generation: Id2,
2915
2950
  revision: Id2,
2916
- items: z27.array(WorkbenchQueueItemSchema).max(512),
2917
- steeringMessages: z27.array(z27.string().max(1e5)).max(512)
2951
+ items: z28.array(WorkbenchQueueItemSchema).max(512),
2952
+ steeringMessages: z28.array(z28.string().max(1e5)).max(512)
2918
2953
  }).strict();
2919
2954
  var QueueMutation = {
2920
2955
  ...Submission2,
@@ -2922,48 +2957,48 @@ var QueueMutation = {
2922
2957
  revision: Id2,
2923
2958
  id: Id2
2924
2959
  };
2925
- var WorkbenchQueueMutationRequestSchema = z27.discriminatedUnion("action", [
2926
- z27.object({ ...QueueMutation, action: z27.literal("edit"), prompt: z27.string().trim().min(1).max(1e5) }).strict(),
2927
- z27.object({ ...QueueMutation, action: z27.literal("remove") }).strict(),
2928
- z27.object({ ...QueueMutation, action: z27.literal("move"), toPosition: z27.number().int().min(0).max(511) }).strict(),
2929
- z27.object({ ...QueueMutation, action: z27.literal("send-now") }).strict()
2960
+ var WorkbenchQueueMutationRequestSchema = z28.discriminatedUnion("action", [
2961
+ z28.object({ ...QueueMutation, action: z28.literal("edit"), prompt: z28.string().trim().min(1).max(1e5) }).strict(),
2962
+ z28.object({ ...QueueMutation, action: z28.literal("remove") }).strict(),
2963
+ z28.object({ ...QueueMutation, action: z28.literal("move"), toPosition: z28.number().int().min(0).max(511) }).strict(),
2964
+ z28.object({ ...QueueMutation, action: z28.literal("send-now") }).strict()
2930
2965
  ]);
2931
- var WorkbenchQueueMutationResultSchema = z27.object({
2932
- changed: z27.boolean(),
2966
+ var WorkbenchQueueMutationResultSchema = z28.object({
2967
+ changed: z28.boolean(),
2933
2968
  snapshot: WorkbenchQueueSnapshotSchema
2934
2969
  }).strict();
2935
- var WorkbenchTokenMetricSchema = z27.object({
2936
- kind: z27.string().min(1).max(128),
2970
+ var WorkbenchTokenMetricSchema = z28.object({
2971
+ kind: z28.string().min(1).max(128),
2937
2972
  count: Count
2938
2973
  }).strict();
2939
- var WorkbenchModelUsageSchema = z27.object({
2974
+ var WorkbenchModelUsageSchema = z28.object({
2940
2975
  model: Id2,
2941
2976
  requests: Count,
2942
- premiumRequestCost: z27.number().finite().nonnegative(),
2943
- tokens: z27.array(WorkbenchTokenMetricSchema).max(32)
2977
+ premiumRequestCost: z28.number().finite().nonnegative(),
2978
+ tokens: z28.array(WorkbenchTokenMetricSchema).max(32)
2944
2979
  }).strict();
2945
- var WorkbenchContextSchema = z27.object({
2980
+ var WorkbenchContextSchema = z28.object({
2946
2981
  currentTokens: Count,
2947
2982
  tokenLimit: Count,
2948
2983
  systemTokens: Count.optional(),
2949
2984
  conversationTokens: Count.optional(),
2950
2985
  toolTokens: Count.optional()
2951
2986
  }).strict();
2952
- var WorkbenchInsightsSchema = z27.object({
2953
- sampledAt: z27.iso.datetime(),
2987
+ var WorkbenchInsightsSchema = z28.object({
2988
+ sampledAt: z28.iso.datetime(),
2954
2989
  generation: Id2,
2955
2990
  model: Id2.optional(),
2956
2991
  totalUserRequests: Count,
2957
- premiumRequestCost: z27.number().finite().nonnegative(),
2958
- nanoAiu: z27.string().regex(/^\d+$/).max(40).optional(),
2959
- tokens: z27.array(WorkbenchTokenMetricSchema).max(32),
2960
- models: z27.array(WorkbenchModelUsageSchema).max(100),
2992
+ premiumRequestCost: z28.number().finite().nonnegative(),
2993
+ nanoAiu: z28.string().regex(/^\d+$/).max(40).optional(),
2994
+ tokens: z28.array(WorkbenchTokenMetricSchema).max(32),
2995
+ models: z28.array(WorkbenchModelUsageSchema).max(100),
2961
2996
  context: WorkbenchContextSchema.optional(),
2962
- canCompact: z27.boolean(),
2963
- compactUnavailableReason: z27.string().max(1024).optional()
2997
+ canCompact: z28.boolean(),
2998
+ compactUnavailableReason: z28.string().max(1024).optional()
2964
2999
  }).strict();
2965
- var WorkbenchCompactResultSchema = z27.object({
2966
- success: z27.boolean(),
3000
+ var WorkbenchCompactResultSchema = z28.object({
3001
+ success: z28.boolean(),
2967
3002
  tokensRemoved: Count,
2968
3003
  messagesRemoved: Count
2969
3004
  }).strict();
@@ -2999,6 +3034,8 @@ var WorkbenchAndroidSchemas = {
2999
3034
 
3000
3035
  // ../../shared/protocol/dist/codegen/android-schemas.js
3001
3036
  var AndroidProtocolSchemas = {
3037
+ BrowserOpenUrlParams: BrowserOpenUrlParamsSchema,
3038
+ BrowserOpenUrlResult: BrowserOpenUrlResultSchema,
3002
3039
  TimelineImageBlobRequest: TimelineImageBlobRequestSchema,
3003
3040
  TimelineImageBlobResult: TimelineImageBlobResultSchema,
3004
3041
  SessionImageUploadRequest: SessionImageUploadRequestSchema,
@@ -3010,8 +3047,9 @@ var AndroidProtocolSchemas = {
3010
3047
  ...ScheduleAndroidSchemas,
3011
3048
  SessionCommunication: SessionCommunicationSchema,
3012
3049
  SessionGitDiffData: SessionGitDiffDataSchema,
3013
- SessionGitDiffEntry: SessionGitDiffEntrySchema,
3014
- SessionGitDiffResultData: SessionGitDiffResultDataSchema,
3050
+ SessionGitDiffEntry: SessionGitDiffPartialEntrySchema,
3051
+ SessionGitDiffResultData: SessionGitDiffPartialResultDataSchema,
3052
+ SessionGitDiffFileError: SessionGitDiffFileErrorSchema,
3015
3053
  SessionGitDiffGzipResultData: SessionGitDiffGzipResultDataSchema,
3016
3054
  SessionRenameData: SessionRenameDataSchema,
3017
3055
  SessionRenameResultData: SessionRenameResultDataSchema,
@@ -3117,49 +3155,49 @@ import {
3117
3155
  SessionImageRelayUrlSchema,
3118
3156
  SessionImagesConfigSchema
3119
3157
  } from "@agentknight/sdk";
3120
- var BooleanStringSchema = z28.enum(["true", "false"]).default("false").transform((value) => value === "true");
3121
- var EnabledBooleanStringSchema = z28.enum(["true", "false"]).default("true").transform((value) => value === "true");
3122
- var OptionalPathSchema = z28.preprocess(
3158
+ var BooleanStringSchema = z29.enum(["true", "false"]).default("false").transform((value) => value === "true");
3159
+ var EnabledBooleanStringSchema = z29.enum(["true", "false"]).default("true").transform((value) => value === "true");
3160
+ var OptionalPathSchema = z29.preprocess(
3123
3161
  (value) => typeof value === "string" && value.trim() === "" ? void 0 : value,
3124
- z28.string().trim().min(1).optional()
3162
+ z29.string().trim().min(1).optional()
3125
3163
  );
3126
- var AcpArgumentsSchema = z28.string().default("[]").transform((value, context) => {
3164
+ var AcpArgumentsSchema = z29.string().default("[]").transform((value, context) => {
3127
3165
  let decoded;
3128
3166
  try {
3129
3167
  decoded = JSON.parse(value);
3130
3168
  } catch (error) {
3131
3169
  if (!(error instanceof SyntaxError)) throw error;
3132
3170
  context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
3133
- return z28.NEVER;
3171
+ return z29.NEVER;
3134
3172
  }
3135
- const parsed = z28.array(z28.string()).max(128).safeParse(decoded);
3173
+ const parsed = z29.array(z29.string()).max(128).safeParse(decoded);
3136
3174
  if (!parsed.success) {
3137
3175
  context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
3138
- return z28.NEVER;
3176
+ return z29.NEVER;
3139
3177
  }
3140
3178
  return parsed.data;
3141
3179
  });
3142
- var EnvironmentSchema = z28.object({
3143
- RELAY_URL: z28.url(),
3144
- RELAY_TOKEN: z28.string().min(24).optional(),
3145
- RELAY_AUTH: z28.enum(["token", "microsoft"]).optional(),
3146
- USER_ID: z28.string().trim().min(1).max(256).default("admin"),
3147
- AGENTKNIGHT_MACHINE_NAME: z28.string().trim().min(1).max(120).optional(),
3148
- AGENTKNIGHT_HOME: z28.string().trim().min(1).optional(),
3149
- AGENTKNIGHT_WORKSPACE_ROOT: z28.string().trim().min(1).optional(),
3150
- AGENTKNIGHT_CODING_AGENT: z28.enum(["managed", ...CODING_AGENT_IDS2]).default("managed"),
3180
+ var EnvironmentSchema = z29.object({
3181
+ RELAY_URL: z29.url(),
3182
+ RELAY_TOKEN: z29.string().min(24).optional(),
3183
+ RELAY_AUTH: z29.enum(["token", "microsoft"]).optional(),
3184
+ USER_ID: z29.string().trim().min(1).max(256).default("admin"),
3185
+ AGENTKNIGHT_MACHINE_NAME: z29.string().trim().min(1).max(120).optional(),
3186
+ AGENTKNIGHT_HOME: z29.string().trim().min(1).optional(),
3187
+ AGENTKNIGHT_WORKSPACE_ROOT: z29.string().trim().min(1).optional(),
3188
+ AGENTKNIGHT_CODING_AGENT: z29.enum(["managed", ...CODING_AGENT_IDS2]).default("managed"),
3151
3189
  AGENTKNIGHT_GROUP_CHAT_ENABLED: EnabledBooleanStringSchema,
3152
3190
  AGENTKNIGHT_PEER_CHAT_ENABLED: EnabledBooleanStringSchema,
3153
3191
  PI_CODING_AGENT_DIR: OptionalPathSchema,
3154
3192
  AGENTKNIGHT_CODEX_COMMAND: OptionalPathSchema,
3155
3193
  AGENTKNIGHT_ACP_COMMAND: OptionalPathSchema,
3156
3194
  AGENTKNIGHT_ACP_ARGS: AcpArgumentsSchema,
3157
- SESSION_REFRESH_INTERVAL_MS: z28.coerce.number().int().min(5e3).max(36e5).default(3e4),
3158
- HEARTBEAT_INTERVAL_MS: z28.coerce.number().int().min(5e3).max(12e4).default(15e3),
3159
- LOG_LEVEL: z28.enum(["fatal", "error", "warn", "info", "debug", "trace", "silent"]).default("info"),
3195
+ SESSION_REFRESH_INTERVAL_MS: z29.coerce.number().int().min(5e3).max(36e5).default(3e4),
3196
+ HEARTBEAT_INTERVAL_MS: z29.coerce.number().int().min(5e3).max(12e4).default(15e3),
3197
+ LOG_LEVEL: z29.enum(["fatal", "error", "warn", "info", "debug", "trace", "silent"]).default("info"),
3160
3198
  SHOW_PAIRING_QR: BooleanStringSchema,
3161
3199
  PAIRING_PAGE_ENABLED: EnabledBooleanStringSchema,
3162
- PAIRING_PAGE_PORT: z28.coerce.number().int().min(1024).max(65535).default(defaultPairingPagePort),
3200
+ PAIRING_PAGE_PORT: z29.coerce.number().int().min(1024).max(65535).default(defaultPairingPagePort),
3163
3201
  PC_AGENT_EXIT_AFTER_SNAPSHOT: BooleanStringSchema,
3164
3202
  SNAPSHOT_SUPPRESSION_ENABLED: EnabledBooleanStringSchema,
3165
3203
  TIMELINE_COMPRESSION_ENABLED: BooleanStringSchema,
@@ -3167,7 +3205,7 @@ var EnvironmentSchema = z28.object({
3167
3205
  SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE: EnabledBooleanStringSchema,
3168
3206
  SESSION_IMAGES_STORAGE_ACCOUNT: SessionImagesConfigSchema.shape.storageAccount.default("agentknightimagesbsp09"),
3169
3207
  SESSION_IMAGES_STORAGE_CONTAINER: SessionImagesConfigSchema.shape.storageContainer.optional(),
3170
- SECURE_MESSAGE_PACKET_BUDGET: z28.coerce.number().int().min(2048).max(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH).default(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH)
3208
+ SECURE_MESSAGE_PACKET_BUDGET: z29.coerce.number().int().min(2048).max(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH).default(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH)
3171
3209
  }).superRefine((value, context) => {
3172
3210
  if (value.SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE) {
3173
3211
  if (!SessionImageRelayUrlSchema.safeParse(value.RELAY_URL).success) {
@@ -3235,8 +3273,8 @@ function loadConfig(environment = process.env, options = {}) {
3235
3273
  }
3236
3274
  return {
3237
3275
  ...settings2,
3238
- relayToken: z28.string().min(32).max(4096).parse(options.relayCredential.token),
3239
- userId: z28.string().min(1).max(256).parse(options.relayCredential.user.userId)
3276
+ relayToken: z29.string().min(32).max(4096).parse(options.relayCredential.token),
3277
+ userId: z29.string().min(1).max(256).parse(options.relayCredential.user.userId)
3240
3278
  };
3241
3279
  }
3242
3280
  function loadStartupConfig(environment = process.env, options = {}) {
@@ -4418,7 +4456,7 @@ import { createHash as createHash3, randomBytes as randomBytes2, timingSafeEqual
4418
4456
  import { createHash as createHash2 } from "node:crypto";
4419
4457
  import { platform } from "node:os";
4420
4458
  import { brotliCompressSync, brotliDecompressSync } from "node:zlib";
4421
- import { z as z29 } from "zod";
4459
+ import { z as z30 } from "zod";
4422
4460
  var STORE_MESSAGES = {
4423
4461
  unavailable: "Unlock your operating system credential store and restart AgentKnight. No file-based credential fallback is available.",
4424
4462
  invalid: "The saved Relay credential is invalid. Recover it in your operating system credential manager before signing in.",
@@ -4451,30 +4489,30 @@ function normalizeRelayOrigin(value) {
4451
4489
  throw new RelayCredentialStoreError("address");
4452
4490
  }
4453
4491
  }
4454
- var ConfirmationSchema = z29.discriminatedUnion("status", [
4455
- z29.object({
4456
- status: z29.literal("pending"),
4457
- confirmBy: z29.number().int().positive(),
4492
+ var ConfirmationSchema = z30.discriminatedUnion("status", [
4493
+ z30.object({
4494
+ status: z30.literal("pending"),
4495
+ confirmBy: z30.number().int().positive(),
4458
4496
  enrollmentId: PcEnrollmentIdSchema,
4459
4497
  verifier: PcEnrollmentVerifierRequestSchema.shape.verifier
4460
4498
  }).strict(),
4461
- z29.object({
4462
- status: z29.literal("confirmed"),
4463
- confirmBy: z29.number().int().positive()
4499
+ z30.object({
4500
+ status: z30.literal("confirmed"),
4501
+ confirmBy: z30.number().int().positive()
4464
4502
  }).strict()
4465
4503
  ]);
4466
- var RelayCredentialSchema = z29.object({
4467
- version: z29.literal(1),
4468
- relayUrl: z29.string().max(2048),
4504
+ var RelayCredentialSchema = z30.object({
4505
+ version: z30.literal(1),
4506
+ relayUrl: z30.string().max(2048),
4469
4507
  machineId: PcEnrollmentStartRequestSchema.shape.machineId,
4470
- token: z29.string().min(32).max(4096),
4471
- tokenId: z29.string().min(1).max(256),
4472
- grantId: z29.uuid(),
4508
+ token: z30.string().min(32).max(4096),
4509
+ tokenId: z30.string().min(1).max(256),
4510
+ grantId: z30.uuid(),
4473
4511
  user: AuthUserSchema,
4474
4512
  confirmation: ConfirmationSchema
4475
4513
  }).strict();
4476
- var SlotsSchema = z29.object({
4477
- version: z29.literal(1),
4514
+ var SlotsSchema = z30.object({
4515
+ version: z30.literal(1),
4478
4516
  pending: RelayCredentialSchema.optional(),
4479
4517
  confirmed: RelayCredentialSchema.optional()
4480
4518
  }).strict();
@@ -5360,7 +5398,7 @@ import { mkdtemp, rm as rm2 } from "node:fs/promises";
5360
5398
  import { createConnection, createServer as createServer2 } from "node:net";
5361
5399
  import { tmpdir } from "node:os";
5362
5400
  import { join as join4, resolve as resolve3 } from "node:path";
5363
- import { z as z31 } from "zod";
5401
+ import { z as z32 } from "zod";
5364
5402
  import { DataDirectoryLease } from "@agentknight/sdk/runtime";
5365
5403
  import {
5366
5404
  PEER_CHAT_TIMEOUT_MS,
@@ -5372,16 +5410,16 @@ import {
5372
5410
  import { randomUUID } from "node:crypto";
5373
5411
  import { mkdir as mkdir2, readFile as readFile2, rename, rm, writeFile as writeFile2 } from "node:fs/promises";
5374
5412
  import { dirname as dirname2, join as join3 } from "node:path";
5375
- import { z as z30 } from "zod";
5376
- var UpgradeStateSchema = z30.object({
5377
- id: z30.uuid(),
5378
- phase: z30.enum(["preparing", "ready", "waiting-idle", "switching", "verifying", "succeeded", "rolled-back", "failed"]),
5379
- fromVersion: z30.string(),
5380
- toVersion: z30.string(),
5381
- updatedAt: z30.iso.datetime(),
5382
- error: z30.string().optional()
5413
+ import { z as z31 } from "zod";
5414
+ var UpgradeStateSchema = z31.object({
5415
+ id: z31.uuid(),
5416
+ phase: z31.enum(["preparing", "ready", "waiting-idle", "switching", "verifying", "succeeded", "rolled-back", "failed"]),
5417
+ fromVersion: z31.string(),
5418
+ toVersion: z31.string(),
5419
+ updatedAt: z31.iso.datetime(),
5420
+ error: z31.string().optional()
5383
5421
  });
5384
- var UpgradeSuccessSchema = z30.object({ version: z30.string(), upgradedAt: z30.iso.datetime() });
5422
+ var UpgradeSuccessSchema = z31.object({ version: z31.string(), upgradedAt: z31.iso.datetime() });
5385
5423
  async function readOptionalJson(path) {
5386
5424
  try {
5387
5425
  return JSON.parse(await readFile2(path, "utf8"));
@@ -5411,39 +5449,39 @@ async function readLastUpgrade(directory) {
5411
5449
  }
5412
5450
 
5413
5451
  // src/runtime.ts
5414
- var RuntimeDescriptorSchema = z31.object({
5415
- pid: z31.number().int().positive(),
5416
- instanceId: z31.uuid(),
5417
- endpoint: z31.string().min(1),
5418
- token: z31.string().min(32),
5419
- upgradeId: z31.uuid().optional()
5452
+ var RuntimeDescriptorSchema = z32.object({
5453
+ pid: z32.number().int().positive(),
5454
+ instanceId: z32.uuid(),
5455
+ endpoint: z32.string().min(1),
5456
+ token: z32.string().min(32),
5457
+ upgradeId: z32.uuid().optional()
5420
5458
  });
5421
- var RuntimeStatusSchema = z31.object({
5422
- version: z31.string().min(1),
5423
- pid: z31.number().int().positive(),
5424
- instanceId: z31.uuid(),
5425
- ready: z31.boolean(),
5426
- busy: z31.boolean(),
5427
- relayUrl: z31.string().url(),
5428
- identityHash: z31.string().min(1),
5429
- configPath: z31.string().optional(),
5430
- configHash: z31.string().optional(),
5431
- executable: z31.string().min(1),
5432
- cliPath: z31.string().min(1),
5433
- cwd: z31.string().min(1),
5434
- args: z31.array(z31.string()),
5435
- canRestart: z31.boolean().default(false),
5436
- restartEnvironment: z31.record(z31.string(), z31.string()).default({}),
5437
- upgradeId: z31.uuid().optional(),
5438
- stopping: z31.boolean().optional()
5459
+ var RuntimeStatusSchema = z32.object({
5460
+ version: z32.string().min(1),
5461
+ pid: z32.number().int().positive(),
5462
+ instanceId: z32.uuid(),
5463
+ ready: z32.boolean(),
5464
+ busy: z32.boolean(),
5465
+ relayUrl: z32.string().url(),
5466
+ identityHash: z32.string().min(1),
5467
+ configPath: z32.string().optional(),
5468
+ configHash: z32.string().optional(),
5469
+ executable: z32.string().min(1),
5470
+ cliPath: z32.string().min(1),
5471
+ cwd: z32.string().min(1),
5472
+ args: z32.array(z32.string()),
5473
+ canRestart: z32.boolean().default(false),
5474
+ restartEnvironment: z32.record(z32.string(), z32.string()).default({}),
5475
+ upgradeId: z32.uuid().optional(),
5476
+ stopping: z32.boolean().optional()
5439
5477
  });
5440
- var RequestSchema = z31.discriminatedUnion("command", [
5441
- z31.object({ token: z31.string(), command: z31.enum(["status", "prepare", "cancel", "stop"]) }),
5442
- z31.object({ token: z31.string(), command: z31.literal("peer-chat"), payload: PeerChatRequestSchema2 })
5478
+ var RequestSchema = z32.discriminatedUnion("command", [
5479
+ z32.object({ token: z32.string(), command: z32.enum(["status", "prepare", "cancel", "stop"]) }),
5480
+ z32.object({ token: z32.string(), command: z32.literal("peer-chat"), payload: PeerChatRequestSchema2 })
5443
5481
  ]);
5444
- var ResponseSchema = z31.discriminatedUnion("ok", [
5445
- z31.object({ ok: z31.literal(true), status: RuntimeStatusSchema.optional(), reply: PeerChatResultSchema.optional() }),
5446
- z31.object({ ok: z31.literal(false), error: z31.string() })
5482
+ var ResponseSchema = z32.discriminatedUnion("ok", [
5483
+ z32.object({ ok: z32.literal(true), status: RuntimeStatusSchema.optional(), reply: PeerChatResultSchema.optional() }),
5484
+ z32.object({ ok: z32.literal(false), error: z32.string() })
5447
5485
  ]);
5448
5486
  var MAX_MESSAGE_BYTES = 32 * 1024;
5449
5487
  var MAX_PEER_REQUEST_BYTES = 128 * 1024;
@@ -5706,7 +5744,7 @@ import { randomUUID as randomUUID2 } from "node:crypto";
5706
5744
  import { copyFile as copyFile2, mkdir as mkdir5, open as open2, realpath as realpath2, rm as rm6 } from "node:fs/promises";
5707
5745
  import { dirname as dirname5, join as join9, resolve as resolve8 } from "node:path";
5708
5746
  import { fileURLToPath as fileURLToPath2 } from "node:url";
5709
- import { z as z35 } from "zod";
5747
+ import { z as z36 } from "zod";
5710
5748
 
5711
5749
  // src/upgrade-packages.ts
5712
5750
  import { execFile as execFile2, spawn as spawn2 } from "node:child_process";
@@ -5720,7 +5758,7 @@ import { createHash as createHash5 } from "node:crypto";
5720
5758
  import { open } from "node:fs/promises";
5721
5759
  import { join as join5 } from "node:path";
5722
5760
  import { promisify } from "node:util";
5723
- import { z as z32 } from "zod";
5761
+ import { z as z33 } from "zod";
5724
5762
 
5725
5763
  // src/restart-environment.ts
5726
5764
  import { resolve as resolve4 } from "node:path";
@@ -5758,10 +5796,10 @@ function restartEnvironment(effective, persisted, dataDirectory) {
5758
5796
 
5759
5797
  // src/upgrade-supervisor.ts
5760
5798
  var execute = promisify(execFile);
5761
- var SupervisorSchema = z32.discriminatedUnion("kind", [
5762
- z32.object({ kind: z32.literal("process") }),
5763
- z32.object({ kind: z32.literal("windows-task"), name: z32.string(), path: z32.string(), definitionHash: z32.string() }),
5764
- z32.object({ kind: z32.literal("launchd"), domain: z32.string(), label: z32.string(), plist: z32.string() })
5799
+ var SupervisorSchema = z33.discriminatedUnion("kind", [
5800
+ z33.object({ kind: z33.literal("process") }),
5801
+ z33.object({ kind: z33.literal("windows-task"), name: z33.string(), path: z33.string(), definitionHash: z33.string() }),
5802
+ z33.object({ kind: z33.literal("launchd"), domain: z33.string(), label: z33.string(), plist: z33.string() })
5765
5803
  ]);
5766
5804
  function globalPackageDirectory(prefix) {
5767
5805
  return process.platform === "win32" ? join5(prefix, "node_modules", "@agentknight", "client") : join5(prefix, "lib", "node_modules", "@agentknight", "client");
@@ -5789,7 +5827,7 @@ async function assertInstallationIdle(prefix, allowedPid) {
5789
5827
  } | ForEach-Object { [int]$_.ProcessId });
5790
5828
  ConvertTo-Json -InputObject $ids -Compress
5791
5829
  `);
5792
- pids = z32.array(z32.number().int().positive()).parse(JSON.parse(result));
5830
+ pids = z33.array(z33.number().int().positive()).parse(JSON.parse(result));
5793
5831
  } else {
5794
5832
  const result = await execute("ps", ["-eo", "pid=,args="], { timeout: 1e4 });
5795
5833
  pids = result.stdout.split("\n").flatMap((line) => {
@@ -5825,7 +5863,7 @@ async function detectSupervisor(runtime) {
5825
5863
  if($matches.Count -gt 1) { throw 'Multiple scheduled tasks match this Agent. Refusing to choose.' };
5826
5864
  if($matches.Count -eq 1) { $matches[0] | ConvertTo-Json -Compress } else { 'null' }
5827
5865
  `);
5828
- const task = z32.object({ name: z32.string(), path: z32.string(), xml: z32.string() }).nullable().parse(JSON.parse(result));
5866
+ const task = z33.object({ name: z33.string(), path: z33.string(), xml: z33.string() }).nullable().parse(JSON.parse(result));
5829
5867
  return task === null ? { kind: "process" } : {
5830
5868
  kind: "windows-task",
5831
5869
  name: task.name,
@@ -6345,13 +6383,13 @@ async function prepareUpgradePackages(options) {
6345
6383
  import { mkdir as mkdir4, readFile as readFile4, rm as rm5, stat } from "node:fs/promises";
6346
6384
  import { createHash as createHash7 } from "node:crypto";
6347
6385
  import { join as join8, resolve as resolve7 } from "node:path";
6348
- import { z as z34 } from "zod";
6386
+ import { z as z35 } from "zod";
6349
6387
 
6350
6388
  // src/upgrade-startup.ts
6351
6389
  import { rename as rename2, rm as rm4 } from "node:fs/promises";
6352
6390
  import { basename, dirname as dirname4, join as join7, resolve as resolve6 } from "node:path";
6353
- import { z as z33 } from "zod";
6354
- var PermitSchema = z33.object({ id: z33.uuid(), version: z33.string(), cliPath: z33.string() });
6391
+ import { z as z34 } from "zod";
6392
+ var PermitSchema = z34.object({ id: z34.uuid(), version: z34.string(), cliPath: z34.string() });
6355
6393
  function globalUpgradeLockPath(cliPath) {
6356
6394
  const packageDirectory = dirname4(dirname4(cliPath));
6357
6395
  const scope = dirname4(packageDirectory);
@@ -6365,14 +6403,14 @@ async function claimUpgradeStartup(directory, version, cliPath) {
6365
6403
  const globalPath = globalUpgradeLockPath(cliPath);
6366
6404
  const globalLock = globalPath === void 0 ? void 0 : await readOptionalJson(globalPath);
6367
6405
  if (globalLock !== void 0) {
6368
- const globalOwner = z33.object({ id: z33.uuid(), dataDirectory: z33.string() }).parse(globalLock);
6406
+ const globalOwner = z34.object({ id: z34.uuid(), dataDirectory: z34.string() }).parse(globalLock);
6369
6407
  if (lock === void 0 || resolve6(globalOwner.dataDirectory) !== resolve6(directory)) {
6370
6408
  throw new Error("This global installation is being upgraded for another data directory. Wait for that upgrade to finish.");
6371
6409
  }
6372
6410
  }
6373
6411
  if (lock === void 0) return void 0;
6374
- const owner = z33.object({ id: z33.uuid() }).parse(lock);
6375
- if (globalLock !== void 0 && z33.object({ id: z33.uuid() }).parse(globalLock).id !== owner.id) {
6412
+ const owner = z34.object({ id: z34.uuid() }).parse(lock);
6413
+ if (globalLock !== void 0 && z34.object({ id: z34.uuid() }).parse(globalLock).id !== owner.id) {
6376
6414
  throw new Error("Local and global upgrade ownership disagree; inspect the interrupted upgrade before starting.");
6377
6415
  }
6378
6416
  const path = join7(directory, "run", "upgrade-start.json");
@@ -6389,24 +6427,24 @@ async function claimUpgradeStartup(directory, version, cliPath) {
6389
6427
  }
6390
6428
 
6391
6429
  // src/upgrade-job.ts
6392
- var PreparedPackagesSchema = z34.object({
6393
- targetArchive: z34.string(),
6394
- rollbackArchive: z34.string(),
6395
- cacheDirectory: z34.string(),
6396
- registry: z34.string().url()
6430
+ var PreparedPackagesSchema = z35.object({
6431
+ targetArchive: z35.string(),
6432
+ rollbackArchive: z35.string(),
6433
+ cacheDirectory: z35.string(),
6434
+ registry: z35.string().url()
6397
6435
  });
6398
- var UpgradePlanSchema = z34.object({
6399
- id: z34.uuid(),
6400
- dataDirectory: z34.string(),
6401
- directory: z34.string(),
6402
- prefix: z34.string(),
6403
- currentVersion: z34.string(),
6404
- targetVersion: z34.string(),
6436
+ var UpgradePlanSchema = z35.object({
6437
+ id: z35.uuid(),
6438
+ dataDirectory: z35.string(),
6439
+ directory: z35.string(),
6440
+ prefix: z35.string(),
6441
+ currentVersion: z35.string(),
6442
+ targetVersion: z35.string(),
6405
6443
  packages: PreparedPackagesSchema,
6406
6444
  runtime: RuntimeStatusSchema.optional(),
6407
6445
  supervisor: SupervisorSchema,
6408
- taskName: z34.string(),
6409
- configHash: z34.string().optional()
6446
+ taskName: z35.string(),
6447
+ configHash: z35.string().optional()
6410
6448
  });
6411
6449
  async function fileHash(path) {
6412
6450
  return createHash7("sha256").update(await readFile4(path)).digest("hex");
@@ -6489,7 +6527,7 @@ async function upgrade(options) {
6489
6527
  const lockPath = join9(root, "upgrade.lock");
6490
6528
  const existing = await readOptionalJson(lockPath);
6491
6529
  if (existing !== void 0) {
6492
- const owner = z35.object({ pid: z35.number().int().positive() }).parse(existing);
6530
+ const owner = z36.object({ pid: z36.number().int().positive() }).parse(existing);
6493
6531
  if (processExists(owner.pid)) throw new Error("Another upgrade is already running. Use agentknight status.");
6494
6532
  throw new Error(`An interrupted upgrade needs review. Read ${join9(root, "status.json")} before removing ${lockPath}.`);
6495
6533
  }
@@ -6787,17 +6825,17 @@ import { initialize, supportsAgentSelection } from "@agentknight/sdk";
6787
6825
 
6788
6826
  // src/chat-settings.ts
6789
6827
  import { join as join11 } from "node:path";
6790
- import { z as z36 } from "zod";
6828
+ import { z as z37 } from "zod";
6791
6829
  var settings = {
6792
6830
  groupChatEnabled: {
6793
6831
  file: "group-chat-settings.json",
6794
6832
  label: "Group chat",
6795
- schema: z36.object({ groupChatEnabled: z36.boolean() }).strict().transform((value) => value.groupChatEnabled)
6833
+ schema: z37.object({ groupChatEnabled: z37.boolean() }).strict().transform((value) => value.groupChatEnabled)
6796
6834
  },
6797
6835
  peerChatEnabled: {
6798
6836
  file: "peer-chat-settings.json",
6799
6837
  label: "Peer chat",
6800
- schema: z36.object({ peerChatEnabled: z36.boolean() }).strict().transform((value) => value.peerChatEnabled)
6838
+ schema: z37.object({ peerChatEnabled: z37.boolean() }).strict().transform((value) => value.peerChatEnabled)
6801
6839
  }
6802
6840
  };
6803
6841
  var ChatSettings = class _ChatSettings {
@@ -6845,14 +6883,14 @@ import { randomUUID as randomUUID3 } from "node:crypto";
6845
6883
  import { link, lstat as lstat2, mkdir as mkdir6, readFile as readFile5, readlink, rename as rename3, rm as rm7, writeFile as writeFile4 } from "node:fs/promises";
6846
6884
  import { homedir as homedir3, hostname } from "node:os";
6847
6885
  import { dirname as dirname6, join as join12, resolve as resolve9 } from "node:path";
6848
- import { z as z37 } from "zod";
6886
+ import { z as z38 } from "zod";
6849
6887
  import { DeviceIdentitySchema, LEGACY_CLIENT_STATE_DIRECTORY } from "@agentknight/sdk";
6850
6888
  import { DeviceIdentitySchema as DeviceIdentitySchema2 } from "@agentknight/sdk";
6851
- var LegacyDeviceIdentitySchema = z37.object({
6852
- schemaVersion: z37.literal(1),
6853
- machineId: z37.uuid(),
6854
- machineName: z37.string().trim().min(1).max(120),
6855
- createdAt: z37.iso.datetime({ offset: true })
6889
+ var LegacyDeviceIdentitySchema = z38.object({
6890
+ schemaVersion: z38.literal(1),
6891
+ machineId: z38.uuid(),
6892
+ machineName: z38.string().trim().min(1).max(120),
6893
+ createdAt: z38.iso.datetime({ offset: true })
6856
6894
  });
6857
6895
  function resolveMachineName(environment = process.env, fallback = hostname()) {
6858
6896
  const computerName = environment.COMPUTERNAME?.trim();
@@ -6873,7 +6911,7 @@ async function readStableDeviceId(path) {
6873
6911
  const info = await optionalStat(path);
6874
6912
  if (info === void 0) return void 0;
6875
6913
  if (!info.isFile()) throw new Error(`Device ID must be a regular file, not a link: ${path}`);
6876
- const parsed = z37.uuid().safeParse((await readFile5(path, "utf8")).trim());
6914
+ const parsed = z38.uuid().safeParse((await readFile5(path, "utf8")).trim());
6877
6915
  if (!parsed.success) throw new Error(`Invalid device ID in ${path}`, { cause: parsed.error });
6878
6916
  return parsed.data;
6879
6917
  }
@@ -6936,7 +6974,7 @@ async function loadOrCreateDeviceIdentity(dataDirectory, currentMachineName = re
6936
6974
  await requireDirectory(dataDirectory);
6937
6975
  let existing;
6938
6976
  try {
6939
- existing = z37.union([DeviceIdentitySchema, LegacyDeviceIdentitySchema]).parse(
6977
+ existing = z38.union([DeviceIdentitySchema, LegacyDeviceIdentitySchema]).parse(
6940
6978
  JSON.parse(await readFile5(path, "utf8"))
6941
6979
  );
6942
6980
  } catch (error) {