@agentknight/client 0.9.38 → 0.9.39

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
@@ -200,7 +200,7 @@ function hasDeprecatedClientEnvironment(environment) {
200
200
  return directoryAliases.some(([legacy]) => environment[legacy] !== void 0);
201
201
  }
202
202
  function isClientConfigurationKey(key) {
203
- return directoryAliases.some(([legacy]) => key === legacy) || /^(?:RELAY_|USER_ID$|AGENTKNIGHT_|PAIRING_|SESSION_REFRESH_|HEARTBEAT_|LOG_LEVEL$|SHOW_PAIRING_|PC_AGENT_|SNAPSHOT_|TIMELINE_|SECURE_MESSAGE_)/u.test(key);
203
+ return directoryAliases.some(([legacy]) => key === legacy) || /^(?:RELAY_|USER_ID$|AGENTKNIGHT_|PAIRING_|SESSION_REFRESH_|SESSION_IMAGES_|HEARTBEAT_|LOG_LEVEL$|SHOW_PAIRING_|PC_AGENT_|SNAPSHOT_|TIMELINE_|SECURE_MESSAGE_)/u.test(key);
204
204
  }
205
205
  function clearClientConfiguration(environment) {
206
206
  for (const key of Object.keys(environment)) {
@@ -484,7 +484,7 @@ ${environmentAssignment("AGENTKNIGHT_HOME", persistedHome)}
484
484
  }
485
485
 
486
486
  // src/config.ts
487
- import { z as z27 } from "zod";
487
+ import { z as z28 } from "zod";
488
488
 
489
489
  // ../../shared/protocol/dist/common/version.js
490
490
  import { z } from "zod";
@@ -1262,12 +1262,16 @@ var SESSION_DIRECTORY_MAX_DEPTH = 32;
1262
1262
  var SESSION_DIRECTORY_MAX_ENTRIES = 500;
1263
1263
  var SESSION_DIRECTORY_MAX_RESPONSE_BYTES = 128 * 1024;
1264
1264
  var SESSION_FILE_MAX_ORIGINAL_BYTES = 500 * 1024;
1265
+ var SESSION_FILE_V2_MAX_ORIGINAL_BYTES = 1024 * 1024;
1265
1266
  var SESSION_FILE_GZIP_THRESHOLD_BYTES = 20 * 1024;
1266
1267
  var SESSION_FILE_MAX_IMAGE_BYTES = 100 * 1024;
1267
1268
  var SESSION_FILE_MAX_IMAGE_PIXELS = 16 * 1024 * 1024;
1268
1269
  var SESSION_FILE_MAX_TRANSFER_BYTES = SESSION_FILE_MAX_ORIGINAL_BYTES + 1024;
1269
1270
  var SESSION_FILE_MAX_BASE64_LENGTH = Math.ceil(SESSION_FILE_MAX_TRANSFER_BYTES / 3) * 4;
1270
1271
  var SESSION_FILE_MAX_RESPONSE_BYTES = SESSION_FILE_MAX_BASE64_LENGTH + 8192;
1272
+ var SESSION_FILE_V2_MAX_TRANSFER_BYTES = SESSION_FILE_V2_MAX_ORIGINAL_BYTES + 1024;
1273
+ var SESSION_FILE_V2_MAX_BASE64_LENGTH = Math.ceil(SESSION_FILE_V2_MAX_TRANSFER_BYTES / 3) * 4;
1274
+ var SESSION_FILE_V2_MAX_RESPONSE_BYTES = SESSION_FILE_V2_MAX_BASE64_LENGTH + 8192;
1271
1275
  var SESSION_FILE_MEDIA_TYPES = [
1272
1276
  "text/plain",
1273
1277
  "text/html",
@@ -1280,6 +1284,9 @@ var SESSION_FILE_MEDIA_TYPES = [
1280
1284
  "application/yaml",
1281
1285
  "image/webp"
1282
1286
  ];
1287
+ var SESSION_FILE_VIDEO_MEDIA_TYPES = ["video/mp4", "video/webm"];
1288
+ var SESSION_FILE_V2_MEDIA_TYPES = [...SESSION_FILE_MEDIA_TYPES, ...SESSION_FILE_VIDEO_MEDIA_TYPES];
1289
+ var SESSION_FILE_MAX_VIDEO_PIXELS = 16 * 1024 * 1024;
1283
1290
  function isSafeSessionDirectoryPath(path) {
1284
1291
  if (path === "")
1285
1292
  return true;
@@ -1317,27 +1324,35 @@ var SessionFileReadDataSchema = z13.object({
1317
1324
  path: z13.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
1318
1325
  rootRevision: z13.string().regex(/^[A-Za-z0-9_-]{43}$/u)
1319
1326
  }).strict();
1320
- var SessionFileReadResultDataSchema = z13.object({
1321
- path: SessionFileReadDataSchema.shape.path,
1322
- rootRevision: SessionFileReadDataSchema.shape.rootRevision,
1323
- mediaType: z13.enum(SESSION_FILE_MEDIA_TYPES),
1324
- originalByteLength: z13.number().int().min(0).max(SESSION_FILE_MAX_ORIGINAL_BYTES),
1325
- // Canonical length after decompression, not the length of the transport bytes.
1326
- byteLength: z13.number().int().min(0).max(SESSION_FILE_MAX_ORIGINAL_BYTES),
1327
- encoding: z13.enum(["identity", "gzip"]),
1328
- data: z13.string().max(SESSION_FILE_MAX_BASE64_LENGTH)
1329
- }).strict().superRefine((result, context) => {
1330
- const invalid = () => context.addIssue({ code: "custom", message: "Invalid file content" });
1331
- if (result.encoding === "gzip" !== result.originalByteLength >= SESSION_FILE_GZIP_THRESHOLD_BYTES)
1332
- invalid();
1333
- if (result.mediaType === "image/webp" ? result.byteLength === 0 || result.byteLength > SESSION_FILE_MAX_IMAGE_BYTES || result.originalByteLength === 0 : result.byteLength !== result.originalByteLength)
1334
- invalid();
1335
- const base64 = result.data;
1336
- const padding = base64.endsWith("==") ? 2 : base64.endsWith("=") ? 1 : 0;
1337
- const length = base64.length / 4 * 3 - padding;
1338
- if (base64.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/u.test(base64) || length > SESSION_FILE_MAX_TRANSFER_BYTES || padding === 2 && !/[AQgw]==$/u.test(base64) || padding === 1 && !/[AEIMQUYcgkosw048]=$/u.test(base64) || (result.encoding === "identity" ? length !== result.byteLength : length < 20))
1339
- invalid();
1340
- });
1327
+ function fileResultSchema(mediaTypes, extended) {
1328
+ const maxOriginal = extended ? SESSION_FILE_V2_MAX_ORIGINAL_BYTES : SESSION_FILE_MAX_ORIGINAL_BYTES;
1329
+ const maxTransfer = extended ? SESSION_FILE_V2_MAX_TRANSFER_BYTES : SESSION_FILE_MAX_TRANSFER_BYTES;
1330
+ return z13.object({
1331
+ path: SessionFileReadDataSchema.shape.path,
1332
+ rootRevision: SessionFileReadDataSchema.shape.rootRevision,
1333
+ mediaType: z13.enum(mediaTypes),
1334
+ originalByteLength: z13.number().int().min(0).max(maxOriginal),
1335
+ // Canonical length after decompression, not the length of the transport bytes.
1336
+ byteLength: z13.number().int().min(0).max(maxOriginal),
1337
+ encoding: z13.enum(["identity", "gzip"]),
1338
+ data: z13.string().max(extended ? SESSION_FILE_V2_MAX_BASE64_LENGTH : SESSION_FILE_MAX_BASE64_LENGTH)
1339
+ }).strict().superRefine((result, context) => {
1340
+ const invalid = () => context.addIssue({ code: "custom", message: "Invalid file content" });
1341
+ if (result.encoding === "gzip" !== result.originalByteLength >= SESSION_FILE_GZIP_THRESHOLD_BYTES)
1342
+ invalid();
1343
+ if (result.mediaType === "image/webp" ? result.byteLength === 0 || result.byteLength > SESSION_FILE_MAX_IMAGE_BYTES || result.originalByteLength === 0 : result.byteLength !== result.originalByteLength)
1344
+ invalid();
1345
+ if (result.mediaType.startsWith("video/") && (result.byteLength === 0 || !result.path.toLowerCase().endsWith(result.mediaType === "video/mp4" ? ".mp4" : ".webm")))
1346
+ invalid();
1347
+ const base64 = result.data;
1348
+ const padding = base64.endsWith("==") ? 2 : base64.endsWith("=") ? 1 : 0;
1349
+ const length = base64.length / 4 * 3 - padding;
1350
+ if (base64.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/u.test(base64) || length > maxTransfer || padding === 2 && !/[AQgw]==$/u.test(base64) || padding === 1 && !/[AEIMQUYcgkosw048]=$/u.test(base64) || (result.encoding === "identity" ? length !== result.byteLength : length < 20))
1351
+ invalid();
1352
+ });
1353
+ }
1354
+ var SessionFileReadResultDataSchema = fileResultSchema(SESSION_FILE_MEDIA_TYPES, false);
1355
+ var SessionFileReadV2ResultDataSchema = fileResultSchema(SESSION_FILE_V2_MEDIA_TYPES, true);
1341
1356
  var SessionGitProjectSchema = z13.object({
1342
1357
  localRepositoryKey: z13.string().length(43).regex(/^[A-Za-z0-9_-]{43}$/),
1343
1358
  worktreeRoot: z13.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH),
@@ -1445,54 +1460,116 @@ var SessionResourceReadResultDataSchema = z15.object({
1445
1460
  invalid();
1446
1461
  });
1447
1462
 
1448
- // ../../shared/protocol/dist/sessions/session-rename.js
1463
+ // ../../shared/protocol/dist/sessions/session-images.js
1449
1464
  import { z as z16 } from "zod";
1465
+ var SESSION_IMAGE_MAX_BYTES = 3 * 1024 * 1024;
1466
+ var SESSION_IMAGE_MAX_PIXELS = 16 * 1024 * 1024;
1467
+ var SessionImageIdSchema = z16.uuid();
1468
+ var SessionImageTransferModeSchema = z16.enum(["direct", "proxy"]);
1469
+ var DirectUrlSchema = z16.string().regex(/^https:\/\/[^/?#@\\\s\x00-\x1f\x7f]+(?:[/?][^#\\\s\x00-\x1f\x7f]*)?$/u).refine((raw) => {
1470
+ if (!URL.canParse(raw))
1471
+ return false;
1472
+ const url = new URL(raw);
1473
+ return url.protocol === "https:" && url.username === "" && url.password === "" && url.hash === "";
1474
+ }, "Direct transfers require HTTPS without userinfo, fragments or unsafe characters");
1475
+ var ProxyUrlSchema = z16.string().regex(/^\/api\/v3\/session-images\/[0-9a-f-]+\/content\?[^#\\\s\x00-\x1f\x7f]+$/u);
1476
+ 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));
1477
+ var SessionImageUploadRequestSchema = z16.object({
1478
+ machineId: IdSchema,
1479
+ sessionId: IdSchema,
1480
+ sizeBytes: z16.number().int().min(1).max(SESSION_IMAGE_MAX_BYTES)
1481
+ }).strict();
1482
+ var SessionImageScopeSchema = z16.object({
1483
+ machineId: IdSchema,
1484
+ sessionId: IdSchema
1485
+ }).strict();
1486
+ var UploadResultFields = {
1487
+ imageId: SessionImageIdSchema,
1488
+ uploadExpiresAt: z16.number().int().positive(),
1489
+ method: z16.literal("PUT"),
1490
+ contentType: z16.literal("image/webp"),
1491
+ headers: SessionImageTransferHeadersSchema.refine((headers) => headers["content-type"] === "image/webp")
1492
+ };
1493
+ var SessionImageUploadResultSchema = z16.discriminatedUnion("mode", [
1494
+ z16.object({ ...UploadResultFields, mode: z16.literal("direct"), uploadUrl: DirectUrlSchema }).strict(),
1495
+ z16.object({ ...UploadResultFields, mode: z16.literal("proxy"), uploadUrl: ProxyUrlSchema }).strict()
1496
+ ]);
1497
+ var SessionImageCommitResultSchema = z16.object({
1498
+ imageId: SessionImageIdSchema,
1499
+ machineId: IdSchema,
1500
+ sessionId: IdSchema,
1501
+ sizeBytes: z16.number().int().min(1).max(SESSION_IMAGE_MAX_BYTES),
1502
+ width: z16.number().int().positive(),
1503
+ height: z16.number().int().positive(),
1504
+ sha256: z16.string().regex(/^[a-f0-9]{64}$/u),
1505
+ expiresAt: z16.number().int().positive()
1506
+ }).strict();
1507
+ var DownloadResultFields = {
1508
+ image: SessionImageCommitResultSchema,
1509
+ downloadExpiresAt: z16.number().int().positive(),
1510
+ method: z16.literal("GET"),
1511
+ headers: SessionImageTransferHeadersSchema
1512
+ };
1513
+ var SessionImageDownloadResultSchema = z16.discriminatedUnion("mode", [
1514
+ z16.object({ ...DownloadResultFields, mode: z16.literal("direct"), downloadUrl: DirectUrlSchema }).strict(),
1515
+ z16.object({ ...DownloadResultFields, mode: z16.literal("proxy"), downloadUrl: ProxyUrlSchema }).strict()
1516
+ ]);
1517
+ var TimelineImageBlobRequestSchema = z16.object({
1518
+ sha256: z16.string().regex(/^[a-f0-9]{64}$/u)
1519
+ }).strict();
1520
+ var TimelineImageBlobResultSchema = z16.object({
1521
+ sha256: TimelineImageBlobRequestSchema.shape.sha256,
1522
+ image: SessionImageCommitResultSchema
1523
+ }).strict();
1524
+
1525
+ // ../../shared/protocol/dist/sessions/session-rename.js
1526
+ import { z as z17 } from "zod";
1450
1527
  var SESSION_RENAME_OPERATION = "session.rename";
1451
1528
  var SESSION_RENAME_VERSION = 1;
1452
1529
  var SESSION_RENAME_CAPABILITY = sessionCommunicationOperationCapability(SESSION_RENAME_OPERATION, SESSION_RENAME_VERSION);
1453
1530
  var SESSION_NAME_MAX_LENGTH = 100;
1454
- var SessionNameSchema = z16.string().regex(/^[^\u0000-\u001f\u007f]*$/u).trim().min(1).max(SESSION_NAME_MAX_LENGTH);
1455
- var SessionRenameDataSchema = z16.object({ name: SessionNameSchema }).strict();
1456
- var SessionRenameResultDataSchema = z16.object({ name: SessionNameSchema }).strict();
1531
+ var SessionNameSchema = z17.string().regex(/^[^\u0000-\u001f\u007f]*$/u).trim().min(1).max(SESSION_NAME_MAX_LENGTH);
1532
+ var SessionRenameDataSchema = z17.object({ name: SessionNameSchema }).strict();
1533
+ var SessionRenameResultDataSchema = z17.object({ name: SessionNameSchema }).strict();
1457
1534
 
1458
1535
  // ../../shared/protocol/dist/sessions/sessions.js
1459
- import { z as z17 } from "zod";
1460
- var GroupChatParticipantSchema = z17.object({
1536
+ import { z as z18 } from "zod";
1537
+ var GroupChatParticipantSchema = z18.object({
1461
1538
  sessionId: IdSchema,
1462
- title: z17.string().trim().min(1).max(260)
1539
+ title: z18.string().trim().min(1).max(260)
1463
1540
  }).strict();
1464
- var GroupChatInfoSchema = z17.object({
1465
- participants: z17.array(GroupChatParticipantSchema).length(2).refine((participants) => new Set(participants.map((participant) => participant.sessionId)).size === 2, "A group requires two different sessions"),
1466
- state: z17.enum(["ready", "running", "paused", "blocked"])
1541
+ var GroupChatInfoSchema = z18.object({
1542
+ participants: z18.array(GroupChatParticipantSchema).length(2).refine((participants) => new Set(participants.map((participant) => participant.sessionId)).size === 2, "A group requires two different sessions"),
1543
+ state: z18.enum(["ready", "running", "paused", "blocked"])
1467
1544
  }).strict();
1468
- var SessionSummarySchema = z17.object({
1545
+ var SessionSummarySchema = z18.object({
1469
1546
  userId: IdSchema,
1470
1547
  sessionId: IdSchema,
1471
1548
  machineId: IdSchema,
1472
- summary: z17.string().max(4096).optional(),
1473
- renameSupported: z17.boolean().optional(),
1474
- workingDirectory: z17.string().max(32768).optional(),
1475
- gitRoot: z17.string().max(32768).optional(),
1476
- repository: z17.string().max(1024).optional(),
1477
- gitRemoteUrl: z17.string().max(32768).optional(),
1478
- branch: z17.string().max(1024).optional(),
1479
- isRemote: z17.boolean(),
1549
+ summary: z18.string().max(4096).optional(),
1550
+ renameSupported: z18.boolean().optional(),
1551
+ workingDirectory: z18.string().max(32768).optional(),
1552
+ gitRoot: z18.string().max(32768).optional(),
1553
+ repository: z18.string().max(1024).optional(),
1554
+ gitRemoteUrl: z18.string().max(32768).optional(),
1555
+ branch: z18.string().max(1024).optional(),
1556
+ isRemote: z18.boolean(),
1480
1557
  createdAt: IsoDateSchema,
1481
1558
  modifiedAt: IsoDateSchema,
1482
1559
  groupChat: GroupChatInfoSchema.optional()
1483
1560
  });
1484
- var SessionsSnapshotSchema = z17.object({
1561
+ var SessionsSnapshotSchema = z18.object({
1485
1562
  userId: IdSchema,
1486
1563
  machineId: IdSchema,
1487
- machineName: z17.string().trim().min(1).max(120),
1488
- platform: z17.string().trim().min(1).max(64),
1564
+ machineName: z18.string().trim().min(1).max(120),
1565
+ platform: z18.string().trim().min(1).max(64),
1489
1566
  agentRunId: IdSchema,
1490
- sequence: z17.number().int().positive(),
1567
+ sequence: z18.number().int().positive(),
1491
1568
  generatedAt: IsoDateSchema,
1492
- complete: z17.boolean(),
1493
- totalCount: z17.number().int().nonnegative(),
1494
- nextCursor: z17.string().min(1).max(1024).optional(),
1495
- sessions: z17.array(SessionSummarySchema)
1569
+ complete: z18.boolean(),
1570
+ totalCount: z18.number().int().nonnegative(),
1571
+ nextCursor: z18.string().min(1).max(1024).optional(),
1572
+ sessions: z18.array(SessionSummarySchema)
1496
1573
  }).superRefine((snapshot, context) => {
1497
1574
  if (snapshot.totalCount < snapshot.sessions.length) {
1498
1575
  context.addIssue({
@@ -1534,47 +1611,47 @@ var SessionsSnapshotSchema = z17.object({
1534
1611
  sessionIds.add(session.sessionId);
1535
1612
  }
1536
1613
  });
1537
- var SessionListRequestSchema = z17.object({
1614
+ var SessionListRequestSchema = z18.object({
1538
1615
  requestId: IdSchema,
1539
1616
  machineId: IdSchema,
1540
- cursor: z17.string().min(1).max(1024).optional()
1617
+ cursor: z18.string().min(1).max(1024).optional()
1541
1618
  });
1542
- var SessionListResultSchema = z17.discriminatedUnion("ok", [
1543
- z17.object({
1544
- ok: z17.literal(true),
1619
+ var SessionListResultSchema = z18.discriminatedUnion("ok", [
1620
+ z18.object({
1621
+ ok: z18.literal(true),
1545
1622
  requestId: IdSchema,
1546
1623
  machineId: IdSchema,
1547
1624
  snapshot: SessionsSnapshotSchema
1548
1625
  }),
1549
- z17.object({
1550
- ok: z17.literal(false),
1626
+ z18.object({
1627
+ ok: z18.literal(false),
1551
1628
  requestId: IdSchema,
1552
1629
  machineId: IdSchema,
1553
1630
  error: ProtocolFailureSchema
1554
1631
  })
1555
1632
  ]);
1556
- var SessionAgentModeSchema = z17.enum([
1633
+ var SessionAgentModeSchema = z18.enum([
1557
1634
  "interactive",
1558
1635
  "plan",
1559
1636
  "autopilot"
1560
1637
  ]);
1561
- var AgentConfigurationOptionSchema = z17.object({
1638
+ var AgentConfigurationOptionSchema = z18.object({
1562
1639
  id: IdSchema,
1563
- name: z17.string().trim().min(1).max(260),
1564
- value: z17.string().min(1).max(256),
1565
- options: z17.array(z17.object({
1566
- value: z17.string().min(1).max(256),
1567
- name: z17.string().trim().min(1).max(260)
1640
+ name: z18.string().trim().min(1).max(260),
1641
+ value: z18.string().min(1).max(256),
1642
+ options: z18.array(z18.object({
1643
+ value: z18.string().min(1).max(256),
1644
+ name: z18.string().trim().min(1).max(260)
1568
1645
  }).strict()).min(1).max(100)
1569
1646
  }).strict();
1570
- var AgentConfigurationChangeSchema = z17.object({
1647
+ var AgentConfigurationChangeSchema = z18.object({
1571
1648
  id: IdSchema,
1572
- value: z17.string().min(1).max(256)
1649
+ value: z18.string().min(1).max(256)
1573
1650
  }).strict();
1574
- var WorkspaceOptionSchema = z17.object({
1651
+ var WorkspaceOptionSchema = z18.object({
1575
1652
  id: IdSchema,
1576
- name: z17.string().trim().min(1).max(260),
1577
- path: z17.string().trim().min(1).max(32768)
1653
+ name: z18.string().trim().min(1).max(260),
1654
+ path: z18.string().trim().min(1).max(32768)
1578
1655
  });
1579
1656
  var REASONING_EFFORTS = [
1580
1657
  "low",
@@ -1583,112 +1660,112 @@ var REASONING_EFFORTS = [
1583
1660
  "xhigh",
1584
1661
  "max"
1585
1662
  ];
1586
- var ReasoningEffortSchema = z17.enum(REASONING_EFFORTS);
1587
- var CopilotModelOptionSchema = z17.object({
1663
+ var ReasoningEffortSchema = z18.enum(REASONING_EFFORTS);
1664
+ var CopilotModelOptionSchema = z18.object({
1588
1665
  id: IdSchema,
1589
- name: z17.string().trim().min(1).max(260),
1590
- isDefault: z17.boolean(),
1591
- supportedReasoningEfforts: z17.array(ReasoningEffortSchema).optional(),
1666
+ name: z18.string().trim().min(1).max(260),
1667
+ isDefault: z18.boolean(),
1668
+ supportedReasoningEfforts: z18.array(ReasoningEffortSchema).optional(),
1592
1669
  defaultReasoningEffort: ReasoningEffortSchema.optional(),
1593
- creation: z17.object({
1670
+ creation: z18.object({
1594
1671
  agentId: IdSchema,
1595
- agentName: z17.string().trim().min(1).max(260),
1596
- modelName: z17.string().trim().min(1).max(260),
1597
- agentModes: z17.array(SessionAgentModeSchema).min(1),
1598
- reasoningEffortConfigurationSupported: z17.boolean(),
1599
- isDefault: z17.boolean()
1672
+ agentName: z18.string().trim().min(1).max(260),
1673
+ modelName: z18.string().trim().min(1).max(260),
1674
+ agentModes: z18.array(SessionAgentModeSchema).min(1),
1675
+ reasoningEffortConfigurationSupported: z18.boolean(),
1676
+ isDefault: z18.boolean()
1600
1677
  }).strict().optional()
1601
1678
  });
1602
- var SessionReasoningEffortSchema = z17.enum([
1679
+ var SessionReasoningEffortSchema = z18.enum([
1603
1680
  "default",
1604
1681
  ...REASONING_EFFORTS
1605
1682
  ]);
1606
- var CurrentReasoningEffortSchema = z17.string().trim().min(1).max(64);
1607
- var SessionToolInfoSchema = z17.object({
1608
- name: z17.string().trim().min(1).max(260),
1609
- description: z17.string().trim().min(1).max(4096).optional(),
1610
- deferred: z17.boolean().optional()
1683
+ var CurrentReasoningEffortSchema = z18.string().trim().min(1).max(64);
1684
+ var SessionToolInfoSchema = z18.object({
1685
+ name: z18.string().trim().min(1).max(260),
1686
+ description: z18.string().trim().min(1).max(4096).optional(),
1687
+ deferred: z18.boolean().optional()
1611
1688
  });
1612
- var SessionSlashCommandInfoSchema = z17.object({
1613
- name: z17.string().trim().min(1).max(260),
1614
- description: z17.string().trim().min(1).max(4096).optional(),
1615
- kind: z17.enum(["builtin", "skill", "client"])
1689
+ var SessionSlashCommandInfoSchema = z18.object({
1690
+ name: z18.string().trim().min(1).max(260),
1691
+ description: z18.string().trim().min(1).max(4096).optional(),
1692
+ kind: z18.enum(["builtin", "skill", "client"])
1616
1693
  });
1617
- var SessionSkillInfoSchema = z17.object({
1618
- name: z17.string().trim().min(1).max(260),
1619
- description: z17.string().trim().min(1).max(4096).optional(),
1620
- source: z17.string().trim().min(1).max(260),
1621
- enabled: z17.boolean(),
1622
- userInvocable: z17.boolean(),
1623
- commandName: z17.string().trim().min(1).max(260).optional()
1694
+ var SessionSkillInfoSchema = z18.object({
1695
+ name: z18.string().trim().min(1).max(260),
1696
+ description: z18.string().trim().min(1).max(4096).optional(),
1697
+ source: z18.string().trim().min(1).max(260),
1698
+ enabled: z18.boolean(),
1699
+ userInvocable: z18.boolean(),
1700
+ commandName: z18.string().trim().min(1).max(260).optional()
1624
1701
  });
1625
- var SessionEnvironmentInfoSchema = z17.object({
1626
- tools: z17.array(SessionToolInfoSchema).max(512),
1627
- slashCommands: z17.array(SessionSlashCommandInfoSchema).max(512),
1628
- skills: z17.array(SessionSkillInfoSchema).max(512)
1702
+ var SessionEnvironmentInfoSchema = z18.object({
1703
+ tools: z18.array(SessionToolInfoSchema).max(512),
1704
+ slashCommands: z18.array(SessionSlashCommandInfoSchema).max(512),
1705
+ skills: z18.array(SessionSkillInfoSchema).max(512)
1629
1706
  });
1630
- var SessionOptionsRequestSchema = z17.object({
1707
+ var SessionOptionsRequestSchema = z18.object({
1631
1708
  requestId: IdSchema,
1632
1709
  machineId: IdSchema,
1633
1710
  sessionId: IdSchema.optional(),
1634
1711
  workspaceId: IdSchema.optional(),
1635
- capabilities: z17.array(IdSchema).max(64).optional()
1712
+ capabilities: z18.array(IdSchema).max(64).optional()
1636
1713
  });
1637
- var SessionOptionsResultSchema = z17.discriminatedUnion("ok", [
1638
- z17.object({
1639
- ok: z17.literal(true),
1714
+ var SessionOptionsResultSchema = z18.discriminatedUnion("ok", [
1715
+ z18.object({
1716
+ ok: z18.literal(true),
1640
1717
  requestId: IdSchema,
1641
1718
  machineId: IdSchema,
1642
1719
  sessionId: IdSchema.optional(),
1643
- workspaces: z17.array(WorkspaceOptionSchema),
1644
- models: z17.array(CopilotModelOptionSchema).min(1),
1645
- modelRefreshError: z17.string().min(1).max(4096).optional(),
1646
- agentModes: z17.array(SessionAgentModeSchema).min(1),
1647
- reasoningEffortConfigurationSupported: z17.literal(true).optional(),
1648
- fileAttachmentsSupported: z17.boolean().optional(),
1649
- worktreeCreationSupported: z17.literal(true).optional(),
1650
- worktreeBranches: z17.array(z17.string().min(1).max(1024)).optional(),
1651
- worktreeCurrentBranch: z17.string().min(1).max(1024).optional(),
1720
+ workspaces: z18.array(WorkspaceOptionSchema),
1721
+ models: z18.array(CopilotModelOptionSchema).min(1),
1722
+ modelRefreshError: z18.string().min(1).max(4096).optional(),
1723
+ agentModes: z18.array(SessionAgentModeSchema).min(1),
1724
+ reasoningEffortConfigurationSupported: z18.literal(true).optional(),
1725
+ fileAttachmentsSupported: z18.boolean().optional(),
1726
+ worktreeCreationSupported: z18.literal(true).optional(),
1727
+ worktreeBranches: z18.array(z18.string().min(1).max(1024)).optional(),
1728
+ worktreeCurrentBranch: z18.string().min(1).max(1024).optional(),
1652
1729
  currentModelId: IdSchema.optional(),
1653
1730
  currentAgentMode: SessionAgentModeSchema.optional(),
1654
1731
  currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
1655
1732
  environment: SessionEnvironmentInfoSchema.optional(),
1656
- agentName: z17.string().trim().min(1).max(260).optional(),
1657
- configOptions: z17.array(AgentConfigurationOptionSchema).max(32).optional()
1733
+ agentName: z18.string().trim().min(1).max(260).optional(),
1734
+ configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
1658
1735
  }),
1659
- z17.object({
1660
- ok: z17.literal(false),
1736
+ z18.object({
1737
+ ok: z18.literal(false),
1661
1738
  requestId: IdSchema,
1662
1739
  machineId: IdSchema,
1663
1740
  sessionId: IdSchema.optional(),
1664
1741
  error: ProtocolFailureSchema,
1665
- failureStage: z17.enum(["models", "configuration", "workspaces"]).optional(),
1666
- models: z17.array(CopilotModelOptionSchema).min(1).optional(),
1667
- agentModes: z17.array(SessionAgentModeSchema).min(1).optional(),
1668
- reasoningEffortConfigurationSupported: z17.literal(true).optional(),
1669
- fileAttachmentsSupported: z17.boolean().optional(),
1742
+ failureStage: z18.enum(["models", "configuration", "workspaces"]).optional(),
1743
+ models: z18.array(CopilotModelOptionSchema).min(1).optional(),
1744
+ agentModes: z18.array(SessionAgentModeSchema).min(1).optional(),
1745
+ reasoningEffortConfigurationSupported: z18.literal(true).optional(),
1746
+ fileAttachmentsSupported: z18.boolean().optional(),
1670
1747
  currentModelId: IdSchema.optional(),
1671
1748
  currentAgentMode: SessionAgentModeSchema.optional(),
1672
1749
  currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
1673
- agentName: z17.string().trim().min(1).max(260).optional(),
1674
- configOptions: z17.array(AgentConfigurationOptionSchema).max(32).optional()
1750
+ agentName: z18.string().trim().min(1).max(260).optional(),
1751
+ configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
1675
1752
  })
1676
1753
  ]);
1677
- var SessionCreateRequestSchema = z17.object({
1754
+ var SessionCreateRequestSchema = z18.object({
1678
1755
  requestId: IdSchema,
1679
1756
  machineId: IdSchema,
1680
1757
  workspaceId: IdSchema,
1681
1758
  modelId: IdSchema,
1682
1759
  agentMode: SessionAgentModeSchema,
1683
1760
  reasoningEffort: SessionReasoningEffortSchema.optional(),
1684
- worktree: z17.object({
1685
- branchName: z17.string().trim().min(1).max(120).optional(),
1686
- baseBranch: z17.string().trim().min(1).max(1024).optional()
1761
+ worktree: z18.object({
1762
+ branchName: z18.string().trim().min(1).max(120).optional(),
1763
+ baseBranch: z18.string().trim().min(1).max(1024).optional()
1687
1764
  }).strict().optional()
1688
1765
  });
1689
- var SessionCreateResultSchema = z17.discriminatedUnion("ok", [
1690
- z17.object({
1691
- ok: z17.literal(true),
1766
+ var SessionCreateResultSchema = z18.discriminatedUnion("ok", [
1767
+ z18.object({
1768
+ ok: z18.literal(true),
1692
1769
  requestId: IdSchema,
1693
1770
  machineId: IdSchema,
1694
1771
  session: SessionSummarySchema,
@@ -1696,34 +1773,34 @@ var SessionCreateResultSchema = z17.discriminatedUnion("ok", [
1696
1773
  agentMode: SessionAgentModeSchema,
1697
1774
  reasoningEffort: SessionReasoningEffortSchema.optional()
1698
1775
  }),
1699
- z17.object({
1700
- ok: z17.literal(false),
1776
+ z18.object({
1777
+ ok: z18.literal(false),
1701
1778
  requestId: IdSchema,
1702
1779
  machineId: IdSchema,
1703
1780
  error: ProtocolFailureSchema
1704
1781
  })
1705
1782
  ]);
1706
- var SessionDeleteRequestSchema = z17.object({
1783
+ var SessionDeleteRequestSchema = z18.object({
1707
1784
  requestId: IdSchema,
1708
1785
  machineId: IdSchema,
1709
1786
  sessionId: IdSchema
1710
1787
  }).strict();
1711
- var SessionDeleteResultSchema = z17.discriminatedUnion("ok", [
1712
- z17.object({
1713
- ok: z17.literal(true),
1788
+ var SessionDeleteResultSchema = z18.discriminatedUnion("ok", [
1789
+ z18.object({
1790
+ ok: z18.literal(true),
1714
1791
  requestId: IdSchema,
1715
1792
  machineId: IdSchema,
1716
1793
  sessionId: IdSchema
1717
1794
  }).strict(),
1718
- z17.object({
1719
- ok: z17.literal(false),
1795
+ z18.object({
1796
+ ok: z18.literal(false),
1720
1797
  requestId: IdSchema,
1721
1798
  machineId: IdSchema,
1722
1799
  sessionId: IdSchema,
1723
1800
  error: ProtocolFailureSchema
1724
1801
  }).strict()
1725
1802
  ]);
1726
- var SessionConfigureRequestSchema = z17.object({
1803
+ var SessionConfigureRequestSchema = z18.object({
1727
1804
  requestId: IdSchema,
1728
1805
  machineId: IdSchema,
1729
1806
  sessionId: IdSchema,
@@ -1732,59 +1809,59 @@ var SessionConfigureRequestSchema = z17.object({
1732
1809
  reasoningEffort: SessionReasoningEffortSchema.optional(),
1733
1810
  configOption: AgentConfigurationChangeSchema.optional()
1734
1811
  }).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" });
1735
- var SessionConfigureResultSchema = z17.discriminatedUnion("ok", [
1736
- z17.object({
1737
- ok: z17.literal(true),
1812
+ var SessionConfigureResultSchema = z18.discriminatedUnion("ok", [
1813
+ z18.object({
1814
+ ok: z18.literal(true),
1738
1815
  requestId: IdSchema,
1739
1816
  machineId: IdSchema,
1740
1817
  sessionId: IdSchema,
1741
1818
  modelId: IdSchema.optional(),
1742
1819
  agentMode: SessionAgentModeSchema,
1743
1820
  reasoningEffort: CurrentReasoningEffortSchema.optional(),
1744
- configOptions: z17.array(AgentConfigurationOptionSchema).max(32).optional()
1821
+ configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
1745
1822
  }),
1746
- z17.object({
1747
- ok: z17.literal(false),
1823
+ z18.object({
1824
+ ok: z18.literal(false),
1748
1825
  requestId: IdSchema,
1749
1826
  machineId: IdSchema,
1750
1827
  sessionId: IdSchema,
1751
1828
  error: ProtocolFailureSchema
1752
1829
  })
1753
1830
  ]);
1754
- var SessionRemoteActionSchema = z17.enum([
1831
+ var SessionRemoteActionSchema = z18.enum([
1755
1832
  "status",
1756
1833
  "enable",
1757
1834
  "disable"
1758
1835
  ]);
1759
- var SessionRemoteStateSchema = z17.enum([
1836
+ var SessionRemoteStateSchema = z18.enum([
1760
1837
  "off",
1761
1838
  "connecting",
1762
1839
  "active",
1763
1840
  "error"
1764
1841
  ]);
1765
- var SessionRemoteRequestSchema = z17.object({
1842
+ var SessionRemoteRequestSchema = z18.object({
1766
1843
  requestId: IdSchema,
1767
1844
  machineId: IdSchema,
1768
1845
  sessionId: IdSchema,
1769
1846
  action: SessionRemoteActionSchema
1770
1847
  });
1771
- var SessionRemoteStatusSchema = z17.object({
1848
+ var SessionRemoteStatusSchema = z18.object({
1772
1849
  state: SessionRemoteStateSchema,
1773
1850
  attachedSessionId: IdSchema.optional(),
1774
- url: z17.url().max(32768).optional(),
1775
- steerable: z17.boolean(),
1851
+ url: z18.url().max(32768).optional(),
1852
+ steerable: z18.boolean(),
1776
1853
  error: ProtocolFailureSchema.optional()
1777
1854
  });
1778
- var SessionRemoteResultSchema = z17.discriminatedUnion("ok", [
1779
- z17.object({
1780
- ok: z17.literal(true),
1855
+ var SessionRemoteResultSchema = z18.discriminatedUnion("ok", [
1856
+ z18.object({
1857
+ ok: z18.literal(true),
1781
1858
  requestId: IdSchema,
1782
1859
  machineId: IdSchema,
1783
1860
  sessionId: IdSchema,
1784
1861
  status: SessionRemoteStatusSchema
1785
1862
  }),
1786
- z17.object({
1787
- ok: z17.literal(false),
1863
+ z18.object({
1864
+ ok: z18.literal(false),
1788
1865
  requestId: IdSchema,
1789
1866
  machineId: IdSchema,
1790
1867
  sessionId: IdSchema,
@@ -1793,42 +1870,42 @@ var SessionRemoteResultSchema = z17.discriminatedUnion("ok", [
1793
1870
  ]);
1794
1871
 
1795
1872
  // ../../shared/protocol/dist/sessions/group-chat.js
1796
- import { z as z18 } from "zod";
1873
+ import { z as z19 } from "zod";
1797
1874
  var GROUP_CHAT_CREATE_OPERATION = "group-chat.create";
1798
1875
  var GROUP_CHAT_CREATE_VERSION = 1;
1799
1876
  var GROUP_CHAT_CREATE_CAPABILITY = sessionCommunicationOperationCapability(GROUP_CHAT_CREATE_OPERATION, GROUP_CHAT_CREATE_VERSION);
1800
- var GroupChatCreateDataSchema = z18.object({
1877
+ var GroupChatCreateDataSchema = z19.object({
1801
1878
  peerSessionId: IdSchema
1802
1879
  }).strict();
1803
- var GroupChatCreateResultDataSchema = z18.object({
1880
+ var GroupChatCreateResultDataSchema = z19.object({
1804
1881
  session: SessionSummarySchema.refine((session) => session.groupChat !== void 0, "Group creation must return a virtual group session")
1805
1882
  }).strict();
1806
1883
 
1807
1884
  // ../../shared/protocol/dist/sessions/prompts.js
1808
- import { z as z22 } from "zod";
1885
+ import { z as z23 } from "zod";
1809
1886
 
1810
1887
  // ../../shared/protocol/dist/conversation/attachments.js
1811
- import { z as z19 } from "zod";
1888
+ import { z as z20 } from "zod";
1812
1889
  var MAX_INLINE_IMAGE_BYTES = 3 * 1024 * 1024;
1813
1890
  var MAX_INLINE_HTML_BYTES = 512 * 1024;
1814
1891
  var MAX_PROMPT_FILE_BYTES = 1024 * 1024;
1815
- var InlineImageMimeTypeSchema = z19.enum([
1892
+ var InlineImageMimeTypeSchema = z20.enum([
1816
1893
  "image/gif",
1817
1894
  "image/jpeg",
1818
1895
  "image/png",
1819
1896
  "image/webp"
1820
1897
  ]);
1821
- var Base64DataSchema = z19.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");
1822
- var Sha256Schema = z19.string().regex(/^[a-f0-9]{64}$/);
1898
+ 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");
1899
+ var Sha256Schema = z20.string().regex(/^[a-f0-9]{64}$/);
1823
1900
  function decodedBase64ByteLength(value) {
1824
1901
  const padding = value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0;
1825
1902
  return value.length / 4 * 3 - padding;
1826
1903
  }
1827
- var PromptImageAttachmentSchema = z19.object({
1828
- name: z19.string().trim().min(1).max(255),
1829
- mimeType: z19.enum(["image/jpeg", "image/png", "image/webp"]),
1904
+ var PromptImageAttachmentSchema = z20.object({
1905
+ name: z20.string().trim().min(1).max(255),
1906
+ mimeType: z20.enum(["image/jpeg", "image/png", "image/webp"]),
1830
1907
  data: Base64DataSchema,
1831
- byteLength: z19.number().int().positive().max(MAX_INLINE_IMAGE_BYTES),
1908
+ byteLength: z20.number().int().positive().max(MAX_INLINE_IMAGE_BYTES),
1832
1909
  sha256: Sha256Schema
1833
1910
  }).strict().superRefine((attachment, context) => {
1834
1911
  if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
@@ -1839,11 +1916,11 @@ var PromptImageAttachmentSchema = z19.object({
1839
1916
  });
1840
1917
  }
1841
1918
  });
1842
- var PromptFileAttachmentSchema = z19.object({
1843
- name: z19.string().trim().min(1).max(255).regex(/^[^\\/\x00-\x1f\x7f]+$/).refine((name) => name !== "." && name !== "..", "Expected a filename"),
1844
- mimeType: z19.string().max(256).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
1919
+ var PromptFileAttachmentSchema = z20.object({
1920
+ name: z20.string().trim().min(1).max(255).regex(/^[^\\/\x00-\x1f\x7f]+$/).refine((name) => name !== "." && name !== "..", "Expected a filename"),
1921
+ mimeType: z20.string().max(256).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
1845
1922
  data: Base64DataSchema.max(Math.ceil(MAX_PROMPT_FILE_BYTES / 3) * 4),
1846
- byteLength: z19.number().int().positive().max(MAX_PROMPT_FILE_BYTES),
1923
+ byteLength: z20.number().int().positive().max(MAX_PROMPT_FILE_BYTES),
1847
1924
  sha256: Sha256Schema
1848
1925
  }).strict().superRefine((attachment, context) => {
1849
1926
  if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
@@ -1854,8 +1931,8 @@ var PromptFileAttachmentSchema = z19.object({
1854
1931
  });
1855
1932
  }
1856
1933
  });
1857
- var ConversationAttachmentSchema = z19.object({
1858
- kind: z19.enum([
1934
+ var ConversationAttachmentSchema = z20.object({
1935
+ kind: z20.enum([
1859
1936
  "file",
1860
1937
  "image",
1861
1938
  "html",
@@ -1863,13 +1940,13 @@ var ConversationAttachmentSchema = z19.object({
1863
1940
  "github-reference",
1864
1941
  "unknown"
1865
1942
  ]),
1866
- name: z19.string().trim().min(1).max(1024),
1867
- mimeType: z19.string().trim().min(1).max(256).optional(),
1868
- uri: z19.string().trim().min(1).max(32768).optional(),
1943
+ name: z20.string().trim().min(1).max(1024),
1944
+ mimeType: z20.string().trim().min(1).max(256).optional(),
1945
+ uri: z20.string().trim().min(1).max(32768).optional(),
1869
1946
  data: Base64DataSchema.optional(),
1870
- byteLength: z19.number().int().positive().max(MAX_INLINE_IMAGE_BYTES).optional(),
1947
+ byteLength: z20.number().int().positive().max(MAX_INLINE_IMAGE_BYTES).optional(),
1871
1948
  sha256: Sha256Schema.optional(),
1872
- imageRef: z19.literal("sha256").optional()
1949
+ imageRef: z20.literal("sha256").optional()
1873
1950
  }).strict().superRefine((attachment, context) => {
1874
1951
  if (attachment.imageRef !== void 0) {
1875
1952
  if (attachment.kind !== "image" || attachment.data !== void 0 || attachment.sha256 === void 0 || attachment.byteLength === void 0 || !InlineImageMimeTypeSchema.safeParse(attachment.mimeType).success) {
@@ -1927,20 +2004,20 @@ var ConversationAttachmentSchema = z19.object({
1927
2004
  });
1928
2005
 
1929
2006
  // ../../shared/protocol/dist/conversation/timeline.js
1930
- import { z as z21 } from "zod";
2007
+ import { z as z22 } from "zod";
1931
2008
 
1932
2009
  // ../../shared/protocol/dist/conversation/conversation.js
1933
- import { z as z20 } from "zod";
2010
+ import { z as z21 } from "zod";
1934
2011
  var CONVERSATION_ACTIVITY_STEP_LIMIT = 1e3;
1935
2012
  var CONVERSATION_SOURCE_ID_LIMIT = 1e3;
1936
2013
  var ConversationItemBaseShape = {
1937
2014
  id: IdSchema,
1938
- revision: z20.number().int().positive(),
2015
+ revision: z21.number().int().positive(),
1939
2016
  turnId: IdSchema,
1940
2017
  timestamp: IsoDateSchema,
1941
- sourceEventIds: z20.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT),
1942
- sourceMessageIds: z20.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional(),
1943
- sourceInteractionIds: z20.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional()
2018
+ sourceEventIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT),
2019
+ sourceMessageIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional(),
2020
+ sourceInteractionIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional()
1944
2021
  };
1945
2022
  var MAX_INLINE_IMAGE_MESSAGE_BYTES = 3 * 1024 * 1024;
1946
2023
  var MAX_INLINE_IMAGES_PER_MESSAGE = 4;
@@ -1948,67 +2025,67 @@ var ActivityStepTimeShape = {
1948
2025
  // First observed event time; completion updates must not move an existing call.
1949
2026
  timestamp: IsoDateSchema.optional()
1950
2027
  };
1951
- var ConversationToolStepSchema = z20.object({
2028
+ var ConversationToolStepSchema = z21.object({
1952
2029
  id: IdSchema,
1953
- kind: z20.literal("tool"),
1954
- name: z20.string().trim().min(1).max(256),
1955
- status: z20.enum(["running", "completed", "failed"]),
2030
+ kind: z21.literal("tool"),
2031
+ name: z21.string().trim().min(1).max(256),
2032
+ status: z21.enum(["running", "completed", "failed"]),
1956
2033
  ...ActivityStepTimeShape
1957
2034
  }).strict();
1958
- var ConversationSkillStepSchema = z20.object({
2035
+ var ConversationSkillStepSchema = z21.object({
1959
2036
  id: IdSchema,
1960
- kind: z20.literal("skill"),
1961
- name: z20.string().trim().min(1).max(256),
1962
- status: z20.literal("completed"),
1963
- description: z20.string().trim().min(1).max(2048).optional(),
1964
- source: z20.string().trim().min(1).max(256).optional(),
2037
+ kind: z21.literal("skill"),
2038
+ name: z21.string().trim().min(1).max(256),
2039
+ status: z21.literal("completed"),
2040
+ description: z21.string().trim().min(1).max(2048).optional(),
2041
+ source: z21.string().trim().min(1).max(256).optional(),
1965
2042
  ...ActivityStepTimeShape
1966
2043
  }).strict();
1967
- var ConversationSubagentStepSchema = z20.object({
2044
+ var ConversationSubagentStepSchema = z21.object({
1968
2045
  id: IdSchema,
1969
- kind: z20.literal("subagent"),
1970
- name: z20.string().trim().min(1).max(256),
1971
- status: z20.enum(["running", "completed", "failed"]),
1972
- description: z20.string().trim().min(1).max(2048).optional(),
1973
- model: z20.string().trim().min(1).max(256).optional(),
1974
- durationMs: z20.number().int().nonnegative().optional(),
1975
- resultSummary: z20.string().max(4096).optional(),
1976
- error: z20.string().max(4096).optional(),
2046
+ kind: z21.literal("subagent"),
2047
+ name: z21.string().trim().min(1).max(256),
2048
+ status: z21.enum(["running", "completed", "failed"]),
2049
+ description: z21.string().trim().min(1).max(2048).optional(),
2050
+ model: z21.string().trim().min(1).max(256).optional(),
2051
+ durationMs: z21.number().int().nonnegative().optional(),
2052
+ resultSummary: z21.string().max(4096).optional(),
2053
+ error: z21.string().max(4096).optional(),
1977
2054
  ...ActivityStepTimeShape
1978
2055
  }).strict();
1979
- var ConversationPermissionStepSchema = z20.object({
2056
+ var ConversationPermissionStepSchema = z21.object({
1980
2057
  id: IdSchema,
1981
- kind: z20.literal("permission"),
1982
- name: z20.string().trim().min(1).max(256),
1983
- status: z20.enum(["running", "completed", "failed"]),
1984
- description: z20.string().trim().min(1).max(2048).optional(),
1985
- resultSummary: z20.string().max(4096).optional(),
1986
- error: z20.string().max(4096).optional(),
2058
+ kind: z21.literal("permission"),
2059
+ name: z21.string().trim().min(1).max(256),
2060
+ status: z21.enum(["running", "completed", "failed"]),
2061
+ description: z21.string().trim().min(1).max(2048).optional(),
2062
+ resultSummary: z21.string().max(4096).optional(),
2063
+ error: z21.string().max(4096).optional(),
1987
2064
  ...ActivityStepTimeShape
1988
2065
  }).strict();
1989
- var ConversationActivityStepSchema = z20.discriminatedUnion("kind", [
2066
+ var ConversationActivityStepSchema = z21.discriminatedUnion("kind", [
1990
2067
  ConversationToolStepSchema,
1991
2068
  ConversationSkillStepSchema,
1992
2069
  ConversationSubagentStepSchema,
1993
2070
  ConversationPermissionStepSchema
1994
2071
  ]);
1995
- var ConversationHumanMessageSchema = z20.object({
2072
+ var ConversationHumanMessageSchema = z21.object({
1996
2073
  ...ConversationItemBaseShape,
1997
- kind: z20.literal("human-message"),
1998
- actor: z20.literal("human"),
1999
- content: z20.string().max(1e5),
2000
- attachments: z20.array(ConversationAttachmentSchema).max(100),
2074
+ kind: z21.literal("human-message"),
2075
+ actor: z21.literal("human"),
2076
+ content: z21.string().max(1e5),
2077
+ attachments: z21.array(ConversationAttachmentSchema).max(100),
2001
2078
  operationId: IdSchema.optional()
2002
2079
  }).strict();
2003
- var ConversationAssistantMessageSchema = z20.object({
2080
+ var ConversationAssistantMessageSchema = z21.object({
2004
2081
  ...ConversationItemBaseShape,
2005
- kind: z20.literal("assistant-message"),
2006
- actor: z20.enum(["assistant", "subagent"]),
2007
- content: z20.string().max(5e5),
2008
- attachments: z20.array(ConversationAttachmentSchema).max(100).optional(),
2009
- model: z20.string().trim().min(1).max(256).optional(),
2082
+ kind: z21.literal("assistant-message"),
2083
+ actor: z21.enum(["assistant", "subagent"]),
2084
+ content: z21.string().max(5e5),
2085
+ attachments: z21.array(ConversationAttachmentSchema).max(100).optional(),
2086
+ model: z21.string().trim().min(1).max(256).optional(),
2010
2087
  agentId: IdSchema.optional(),
2011
- final: z20.boolean()
2088
+ final: z21.boolean()
2012
2089
  }).strict().superRefine((message, context) => {
2013
2090
  const inlineImages = message.attachments?.filter((attachment) => attachment.kind === "image" && attachment.data !== void 0) ?? [];
2014
2091
  if (inlineImages.length > MAX_INLINE_IMAGES_PER_MESSAGE) {
@@ -2027,160 +2104,160 @@ var ConversationAssistantMessageSchema = z20.object({
2027
2104
  });
2028
2105
  }
2029
2106
  });
2030
- var ConversationActivityGroupSchema = z20.object({
2107
+ var ConversationActivityGroupSchema = z21.object({
2031
2108
  ...ConversationItemBaseShape,
2032
- kind: z20.literal("activity-group"),
2033
- actor: z20.enum(["assistant", "subagent"]),
2034
- status: z20.enum(["running", "completed", "failed"]),
2035
- steps: z20.array(ConversationActivityStepSchema).max(CONVERSATION_ACTIVITY_STEP_LIMIT)
2109
+ kind: z21.literal("activity-group"),
2110
+ actor: z21.enum(["assistant", "subagent"]),
2111
+ status: z21.enum(["running", "completed", "failed"]),
2112
+ steps: z21.array(ConversationActivityStepSchema).max(CONVERSATION_ACTIVITY_STEP_LIMIT)
2036
2113
  }).strict();
2037
- var ConversationNoticeSchema = z20.object({
2114
+ var ConversationNoticeSchema = z21.object({
2038
2115
  ...ConversationItemBaseShape,
2039
- kind: z20.literal("notice"),
2040
- actor: z20.enum(["system", "assistant", "subagent"]),
2041
- severity: z20.enum(["info", "success", "warning", "error"]),
2042
- title: z20.string().trim().min(1).max(256),
2043
- content: z20.string().max(4096),
2044
- presentation: z20.literal("compact").optional()
2116
+ kind: z21.literal("notice"),
2117
+ actor: z21.enum(["system", "assistant", "subagent"]),
2118
+ severity: z21.enum(["info", "success", "warning", "error"]),
2119
+ title: z21.string().trim().min(1).max(256),
2120
+ content: z21.string().max(4096),
2121
+ presentation: z21.literal("compact").optional()
2045
2122
  }).strict();
2046
- var ConversationPlanTodoSchema = z20.object({
2123
+ var ConversationPlanTodoSchema = z21.object({
2047
2124
  id: IdSchema,
2048
- title: z20.string().trim().min(1).max(1024),
2049
- description: z20.string().max(4096).optional(),
2050
- status: z20.string().trim().min(1).max(64),
2051
- dependsOn: z20.array(IdSchema).max(100)
2125
+ title: z21.string().trim().min(1).max(1024),
2126
+ description: z21.string().max(4096).optional(),
2127
+ status: z21.string().trim().min(1).max(64),
2128
+ dependsOn: z21.array(IdSchema).max(100)
2052
2129
  }).strict();
2053
- var ConversationPlanUpdateSchema = z20.object({
2130
+ var ConversationPlanUpdateSchema = z21.object({
2054
2131
  ...ConversationItemBaseShape,
2055
- kind: z20.literal("plan-update"),
2056
- actor: z20.enum(["assistant", "subagent"]),
2057
- operation: z20.enum(["created", "updated", "deleted"]),
2058
- content: z20.string().max(1e5),
2059
- todos: z20.array(ConversationPlanTodoSchema).max(1e3)
2132
+ kind: z21.literal("plan-update"),
2133
+ actor: z21.enum(["assistant", "subagent"]),
2134
+ operation: z21.enum(["created", "updated", "deleted"]),
2135
+ content: z21.string().max(1e5),
2136
+ todos: z21.array(ConversationPlanTodoSchema).max(1e3)
2060
2137
  }).strict();
2061
- var ConversationItemSchema = z20.discriminatedUnion("kind", [
2138
+ var ConversationItemSchema = z21.discriminatedUnion("kind", [
2062
2139
  ConversationHumanMessageSchema,
2063
2140
  ConversationAssistantMessageSchema,
2064
2141
  ConversationActivityGroupSchema,
2065
2142
  ConversationNoticeSchema,
2066
2143
  ConversationPlanUpdateSchema
2067
2144
  ]);
2068
- var ConversationItemUpsertSchema = z20.object({
2145
+ var ConversationItemUpsertSchema = z21.object({
2069
2146
  userId: IdSchema,
2070
2147
  machineId: IdSchema,
2071
2148
  sessionId: IdSchema,
2072
2149
  item: ConversationItemSchema
2073
2150
  });
2074
- var ConversationActivityStepUpsertSchema = z20.object({
2151
+ var ConversationActivityStepUpsertSchema = z21.object({
2075
2152
  userId: IdSchema,
2076
2153
  machineId: IdSchema,
2077
2154
  sessionId: IdSchema,
2078
2155
  activityId: IdSchema,
2079
- revision: z20.number().int().positive(),
2156
+ revision: z21.number().int().positive(),
2080
2157
  turnId: IdSchema,
2081
2158
  timestamp: IsoDateSchema,
2082
- actor: z20.enum(["assistant", "subagent"]),
2083
- status: z20.enum(["running", "completed", "failed"]),
2159
+ actor: z21.enum(["assistant", "subagent"]),
2160
+ status: z21.enum(["running", "completed", "failed"]),
2084
2161
  sourceEventId: IdSchema,
2085
2162
  step: ConversationActivityStepSchema
2086
2163
  }).strict();
2087
2164
 
2088
2165
  // ../../shared/protocol/dist/conversation/timeline.js
2089
- var SessionUserPreviewSchema = z21.object({
2166
+ var SessionUserPreviewSchema = z22.object({
2090
2167
  id: IdSchema,
2091
- revision: z21.number().int().positive(),
2168
+ revision: z22.number().int().positive(),
2092
2169
  timestamp: IsoDateSchema,
2093
- text: z21.string().max(4096)
2170
+ text: z22.string().max(4096)
2094
2171
  });
2095
- var SessionAssistantPreviewSchema = z21.object({
2172
+ var SessionAssistantPreviewSchema = z22.object({
2096
2173
  id: IdSchema,
2097
- revision: z21.number().int().positive(),
2174
+ revision: z22.number().int().positive(),
2098
2175
  timestamp: IsoDateSchema,
2099
- sourceEventIds: z21.array(IdSchema).min(1).max(1e3),
2100
- text: z21.string().max(4096),
2101
- final: z21.boolean(),
2102
- attachments: z21.array(ConversationAttachmentSchema.refine((attachment) => attachment.kind === "image" && attachment.imageRef === "sha256", "Assistant previews contain image references only")).max(4)
2176
+ sourceEventIds: z22.array(IdSchema).min(1).max(1e3),
2177
+ text: z22.string().max(4096),
2178
+ final: z22.boolean(),
2179
+ attachments: z22.array(ConversationAttachmentSchema.refine((attachment) => attachment.kind === "image" && attachment.imageRef === "sha256", "Assistant previews contain image references only")).max(4)
2103
2180
  });
2104
2181
  var SESSION_TIMELINE_PAGE_SIZE = 100;
2105
- var SessionTimelinePageRequestSchema = z21.object({
2182
+ var SessionTimelinePageRequestSchema = z22.object({
2106
2183
  requestId: IdSchema,
2107
2184
  machineId: IdSchema,
2108
2185
  sessionId: IdSchema,
2109
- cursor: z21.string().max(32768).optional(),
2110
- metadataOnly: z21.boolean().optional(),
2111
- acceptContentEncodings: z21.array(z21.string().min(1).max(32)).max(8).optional(),
2112
- imageReferences: z21.boolean().optional(),
2113
- pageSize: z21.number().int().min(1).max(SESSION_TIMELINE_PAGE_SIZE).default(SESSION_TIMELINE_PAGE_SIZE),
2114
- assistantPreview: z21.boolean().optional()
2186
+ cursor: z22.string().max(32768).optional(),
2187
+ metadataOnly: z22.boolean().optional(),
2188
+ acceptContentEncodings: z22.array(z22.string().min(1).max(32)).max(8).optional(),
2189
+ imageReferences: z22.boolean().optional(),
2190
+ pageSize: z22.number().int().min(1).max(SESSION_TIMELINE_PAGE_SIZE).default(SESSION_TIMELINE_PAGE_SIZE),
2191
+ assistantPreview: z22.boolean().optional()
2115
2192
  });
2116
- var SessionWatchRequestSchema = z21.object({
2193
+ var SessionWatchRequestSchema = z22.object({
2117
2194
  requestId: IdSchema,
2118
2195
  machineId: IdSchema,
2119
2196
  sessionId: IdSchema,
2120
- watching: z21.boolean()
2197
+ watching: z22.boolean()
2121
2198
  }).strict();
2122
- var SessionWatchResultSchema = z21.discriminatedUnion("ok", [
2123
- z21.object({
2124
- ok: z21.literal(true),
2199
+ var SessionWatchResultSchema = z22.discriminatedUnion("ok", [
2200
+ z22.object({
2201
+ ok: z22.literal(true),
2125
2202
  requestId: IdSchema,
2126
2203
  machineId: IdSchema,
2127
2204
  sessionId: IdSchema,
2128
- watching: z21.boolean()
2205
+ watching: z22.boolean()
2129
2206
  }).strict(),
2130
- z21.object({
2131
- ok: z21.literal(false),
2207
+ z22.object({
2208
+ ok: z22.literal(false),
2132
2209
  requestId: IdSchema,
2133
2210
  machineId: IdSchema,
2134
2211
  sessionId: IdSchema,
2135
- watching: z21.boolean(),
2212
+ watching: z22.boolean(),
2136
2213
  error: ProtocolFailureSchema
2137
2214
  }).strict()
2138
2215
  ]);
2139
- var SessionTimelinePageSchema = z21.object({
2140
- items: z21.array(ConversationItemSchema).max(SESSION_TIMELINE_PAGE_SIZE),
2141
- cursor: z21.string().max(32768),
2142
- hasMore: z21.boolean(),
2143
- cursorStatus: z21.enum(["ok", "expired"]),
2216
+ var SessionTimelinePageSchema = z22.object({
2217
+ items: z22.array(ConversationItemSchema).max(SESSION_TIMELINE_PAGE_SIZE),
2218
+ cursor: z22.string().max(32768),
2219
+ hasMore: z22.boolean(),
2220
+ cursorStatus: z22.enum(["ok", "expired"]),
2144
2221
  assistantPreview: SessionAssistantPreviewSchema.optional(),
2145
2222
  userPreview: SessionUserPreviewSchema.optional(),
2146
- previewsComplete: z21.boolean().optional()
2223
+ previewsComplete: z22.boolean().optional()
2147
2224
  });
2148
- var SessionTimelinePageResultSchema = z21.discriminatedUnion("ok", [
2149
- z21.object({
2150
- ok: z21.literal(true),
2225
+ var SessionTimelinePageResultSchema = z22.discriminatedUnion("ok", [
2226
+ z22.object({
2227
+ ok: z22.literal(true),
2151
2228
  requestId: IdSchema,
2152
2229
  machineId: IdSchema,
2153
2230
  sessionId: IdSchema,
2154
2231
  page: SessionTimelinePageSchema
2155
2232
  }),
2156
- z21.object({
2157
- ok: z21.literal(false),
2233
+ z22.object({
2234
+ ok: z22.literal(false),
2158
2235
  requestId: IdSchema,
2159
2236
  machineId: IdSchema,
2160
2237
  sessionId: IdSchema,
2161
2238
  error: ProtocolFailureSchema
2162
2239
  })
2163
2240
  ]);
2164
- var SessionTimelineInvalidatedSchema = z21.object({
2241
+ var SessionTimelineInvalidatedSchema = z22.object({
2165
2242
  userId: IdSchema,
2166
2243
  machineId: IdSchema,
2167
2244
  sessionId: IdSchema,
2168
- reason: z21.enum(["clear", "rewind"]),
2245
+ reason: z22.enum(["clear", "rewind"]),
2169
2246
  sourceEventId: IdSchema,
2170
2247
  timestamp: IsoDateSchema
2171
2248
  }).strict();
2172
2249
 
2173
2250
  // ../../shared/protocol/dist/sessions/prompts.js
2174
2251
  var MAX_PROMPT_IMAGE_BYTES = 3 * 1024 * 1024;
2175
- var SessionPromptRequestSchema = z22.object({
2252
+ var SessionPromptRequestSchema = z23.object({
2176
2253
  requestId: IdSchema,
2177
2254
  operationId: IdSchema,
2178
2255
  machineId: IdSchema,
2179
2256
  sessionId: IdSchema,
2180
- prompt: z22.string().trim().max(1e5),
2181
- attachments: z22.array(PromptImageAttachmentSchema).max(4).optional(),
2182
- fileAttachments: z22.array(PromptFileAttachmentSchema).max(4).optional(),
2183
- mode: z22.enum(["enqueue", "immediate"]).default("enqueue")
2257
+ prompt: z23.string().trim().max(1e5),
2258
+ attachments: z23.array(PromptImageAttachmentSchema).max(4).optional(),
2259
+ fileAttachments: z23.array(PromptFileAttachmentSchema).max(4).optional(),
2260
+ mode: z23.enum(["enqueue", "immediate"]).default("enqueue")
2184
2261
  }).strict().superRefine((request, context) => {
2185
2262
  if (request.prompt.length === 0 && (request.attachments?.length ?? 0) === 0 && (request.fileAttachments?.length ?? 0) === 0) {
2186
2263
  context.addIssue({
@@ -2206,22 +2283,22 @@ var SessionPromptRequestSchema = z22.object({
2206
2283
  });
2207
2284
  }
2208
2285
  });
2209
- var SessionPromptResultSchema = z22.discriminatedUnion("ok", [
2210
- z22.object({
2211
- ok: z22.literal(true),
2286
+ var SessionPromptResultSchema = z23.discriminatedUnion("ok", [
2287
+ z23.object({
2288
+ ok: z23.literal(true),
2212
2289
  requestId: IdSchema,
2213
2290
  operationId: IdSchema,
2214
2291
  machineId: IdSchema,
2215
2292
  sessionId: IdSchema,
2216
2293
  messageId: IdSchema,
2217
- mode: z22.enum(["enqueue", "immediate"]),
2218
- deliveryState: z22.enum(["queued", "processing"]),
2294
+ mode: z23.enum(["enqueue", "immediate"]),
2295
+ deliveryState: z23.enum(["queued", "processing"]),
2219
2296
  // Negotiated lower bound from the native event clock. Exact text and history
2220
2297
  // ownership checks still apply; this is not an identity or proof of persistence.
2221
2298
  submittedAt: IsoDateSchema.optional()
2222
2299
  }),
2223
- z22.object({
2224
- ok: z22.literal(false),
2300
+ z23.object({
2301
+ ok: z23.literal(false),
2225
2302
  requestId: IdSchema,
2226
2303
  operationId: IdSchema,
2227
2304
  machineId: IdSchema,
@@ -2229,29 +2306,29 @@ var SessionPromptResultSchema = z22.discriminatedUnion("ok", [
2229
2306
  error: ProtocolFailureSchema
2230
2307
  })
2231
2308
  ]);
2232
- var SessionActivityUpdateSchema = z22.object({
2309
+ var SessionActivityUpdateSchema = z23.object({
2233
2310
  userId: IdSchema,
2234
2311
  machineId: IdSchema,
2235
2312
  sessionId: IdSchema,
2236
- state: z22.enum(["working", "idle"]),
2313
+ state: z23.enum(["working", "idle"]),
2237
2314
  occurredAt: IsoDateSchema,
2238
2315
  assistantPreview: SessionAssistantPreviewSchema.optional(),
2239
2316
  userPreview: SessionUserPreviewSchema.optional()
2240
2317
  });
2241
- var SessionAbortRequestSchema = z22.object({
2318
+ var SessionAbortRequestSchema = z23.object({
2242
2319
  requestId: IdSchema,
2243
2320
  machineId: IdSchema,
2244
2321
  sessionId: IdSchema
2245
2322
  });
2246
- var SessionAbortResultSchema = z22.discriminatedUnion("ok", [
2247
- z22.object({
2248
- ok: z22.literal(true),
2323
+ var SessionAbortResultSchema = z23.discriminatedUnion("ok", [
2324
+ z23.object({
2325
+ ok: z23.literal(true),
2249
2326
  requestId: IdSchema,
2250
2327
  machineId: IdSchema,
2251
2328
  sessionId: IdSchema
2252
2329
  }),
2253
- z22.object({
2254
- ok: z22.literal(false),
2330
+ z23.object({
2331
+ ok: z23.literal(false),
2255
2332
  requestId: IdSchema,
2256
2333
  machineId: IdSchema,
2257
2334
  sessionId: IdSchema,
@@ -2260,12 +2337,12 @@ var SessionAbortResultSchema = z22.discriminatedUnion("ok", [
2260
2337
  ]);
2261
2338
 
2262
2339
  // ../../shared/protocol/dist/sessions/interactions.js
2263
- import { z as z23 } from "zod";
2264
- var InteractionFormFieldSchema = z23.object({
2340
+ import { z as z24 } from "zod";
2341
+ var InteractionFormFieldSchema = z24.object({
2265
2342
  id: IdSchema,
2266
- label: z23.string().trim().min(1).max(1024),
2267
- description: z23.string().max(2048).optional(),
2268
- inputType: z23.enum([
2343
+ label: z24.string().trim().min(1).max(1024),
2344
+ description: z24.string().max(2048).optional(),
2345
+ inputType: z24.enum([
2269
2346
  "text",
2270
2347
  "number",
2271
2348
  "integer",
@@ -2273,77 +2350,77 @@ var InteractionFormFieldSchema = z23.object({
2273
2350
  "select",
2274
2351
  "multi-select"
2275
2352
  ]),
2276
- required: z23.boolean(),
2277
- options: z23.array(z23.string().max(1024)).max(100),
2278
- defaultValue: z23.union([
2279
- z23.string().max(4096),
2280
- z23.number().finite(),
2281
- z23.boolean(),
2282
- z23.array(z23.string().max(1024)).max(100)
2353
+ required: z24.boolean(),
2354
+ options: z24.array(z24.string().max(1024)).max(100),
2355
+ defaultValue: z24.union([
2356
+ z24.string().max(4096),
2357
+ z24.number().finite(),
2358
+ z24.boolean(),
2359
+ z24.array(z24.string().max(1024)).max(100)
2283
2360
  ]).optional(),
2284
- minimum: z23.number().finite().optional(),
2285
- maximum: z23.number().finite().optional(),
2286
- minLength: z23.number().int().nonnegative().max(1e6).optional(),
2287
- maxLength: z23.number().int().nonnegative().max(1e6).optional(),
2288
- minItems: z23.number().int().nonnegative().max(100).optional(),
2289
- maxItems: z23.number().int().nonnegative().max(100).optional(),
2290
- format: z23.enum(["email", "uri", "date", "date-time"]).optional()
2361
+ minimum: z24.number().finite().optional(),
2362
+ maximum: z24.number().finite().optional(),
2363
+ minLength: z24.number().int().nonnegative().max(1e6).optional(),
2364
+ maxLength: z24.number().int().nonnegative().max(1e6).optional(),
2365
+ minItems: z24.number().int().nonnegative().max(100).optional(),
2366
+ maxItems: z24.number().int().nonnegative().max(100).optional(),
2367
+ format: z24.enum(["email", "uri", "date", "date-time"]).optional()
2291
2368
  }).strict();
2292
- var InteractionPermissionRequestSchema = z23.object({
2293
- kind: z23.literal("permission"),
2369
+ var InteractionPermissionRequestSchema = z24.object({
2370
+ kind: z24.literal("permission"),
2294
2371
  permissionKind: IdSchema,
2295
- title: z23.string().trim().min(1).max(256),
2296
- description: z23.string().max(4096),
2297
- canApproveSession: z23.boolean(),
2298
- canApproveAlways: z23.boolean().optional(),
2299
- approvalScope: z23.string().trim().min(1).max(4096).optional()
2372
+ title: z24.string().trim().min(1).max(256),
2373
+ description: z24.string().max(4096),
2374
+ canApproveSession: z24.boolean(),
2375
+ canApproveAlways: z24.boolean().optional(),
2376
+ approvalScope: z24.string().trim().min(1).max(4096).optional()
2300
2377
  }).strict();
2301
- var InteractionUserInputRequestSchema = z23.object({
2302
- kind: z23.literal("user_input"),
2303
- question: z23.string().trim().min(1).max(4096),
2304
- choices: z23.array(z23.string().max(1024)).max(100),
2305
- allowFreeform: z23.boolean()
2378
+ var InteractionUserInputRequestSchema = z24.object({
2379
+ kind: z24.literal("user_input"),
2380
+ question: z24.string().trim().min(1).max(4096),
2381
+ choices: z24.array(z24.string().max(1024)).max(100),
2382
+ allowFreeform: z24.boolean()
2306
2383
  }).strict();
2307
- var InteractionElicitationRequestSchema = z23.object({
2308
- kind: z23.literal("elicitation"),
2309
- message: z23.string().trim().min(1).max(4096),
2310
- mode: z23.enum(["form", "url"]),
2311
- source: z23.string().trim().min(1).max(256).optional(),
2312
- url: z23.url().max(32768).optional(),
2313
- fields: z23.array(InteractionFormFieldSchema).max(100)
2384
+ var InteractionElicitationRequestSchema = z24.object({
2385
+ kind: z24.literal("elicitation"),
2386
+ message: z24.string().trim().min(1).max(4096),
2387
+ mode: z24.enum(["form", "url"]),
2388
+ source: z24.string().trim().min(1).max(256).optional(),
2389
+ url: z24.url().max(32768).optional(),
2390
+ fields: z24.array(InteractionFormFieldSchema).max(100)
2314
2391
  }).strict();
2315
- var InteractionMcpOauthRequestSchema = z23.object({
2316
- kind: z23.literal("mcp_oauth"),
2317
- serverName: z23.string().trim().min(1).max(256),
2318
- serverUrl: z23.url().max(32768),
2319
- reason: z23.enum(["initial", "refresh", "reauth", "upscope"]),
2320
- responseMode: z23.literal("cancel-only")
2392
+ var InteractionMcpOauthRequestSchema = z24.object({
2393
+ kind: z24.literal("mcp_oauth"),
2394
+ serverName: z24.string().trim().min(1).max(256),
2395
+ serverUrl: z24.url().max(32768),
2396
+ reason: z24.enum(["initial", "refresh", "reauth", "upscope"]),
2397
+ responseMode: z24.literal("cancel-only")
2321
2398
  }).strict();
2322
- var InteractionMcpHeadersRequestSchema = z23.object({
2323
- kind: z23.literal("mcp_headers"),
2324
- serverName: z23.string().trim().min(1).max(256),
2325
- serverUrl: z23.url().max(32768),
2326
- reason: z23.string().trim().min(1).max(256),
2327
- responseMode: z23.literal("none-only")
2399
+ var InteractionMcpHeadersRequestSchema = z24.object({
2400
+ kind: z24.literal("mcp_headers"),
2401
+ serverName: z24.string().trim().min(1).max(256),
2402
+ serverUrl: z24.url().max(32768),
2403
+ reason: z24.string().trim().min(1).max(256),
2404
+ responseMode: z24.literal("none-only")
2328
2405
  }).strict();
2329
- var InteractionAutoModeSwitchRequestSchema = z23.object({
2330
- kind: z23.literal("auto_mode_switch"),
2406
+ var InteractionAutoModeSwitchRequestSchema = z24.object({
2407
+ kind: z24.literal("auto_mode_switch"),
2331
2408
  errorCode: IdSchema.optional(),
2332
- retryAfterSeconds: z23.number().int().nonnegative().optional()
2409
+ retryAfterSeconds: z24.number().int().nonnegative().optional()
2333
2410
  }).strict();
2334
- var InteractionSessionLimitsRequestSchema = z23.object({
2335
- kind: z23.literal("session_limits"),
2336
- maxAiCredits: z23.number().finite().nonnegative(),
2337
- usedAiCredits: z23.number().finite().nonnegative()
2411
+ var InteractionSessionLimitsRequestSchema = z24.object({
2412
+ kind: z24.literal("session_limits"),
2413
+ maxAiCredits: z24.number().finite().nonnegative(),
2414
+ usedAiCredits: z24.number().finite().nonnegative()
2338
2415
  }).strict();
2339
- var InteractionExitPlanRequestSchema = z23.object({
2340
- kind: z23.literal("exit_plan"),
2341
- summary: z23.string().max(4096),
2342
- planContent: z23.string().max(1e5).optional(),
2343
- actions: z23.array(IdSchema).min(1).max(20),
2416
+ var InteractionExitPlanRequestSchema = z24.object({
2417
+ kind: z24.literal("exit_plan"),
2418
+ summary: z24.string().max(4096),
2419
+ planContent: z24.string().max(1e5).optional(),
2420
+ actions: z24.array(IdSchema).min(1).max(20),
2344
2421
  recommendedAction: IdSchema
2345
2422
  }).strict();
2346
- var InteractionRequestSchema = z23.discriminatedUnion("kind", [
2423
+ var InteractionRequestSchema = z24.discriminatedUnion("kind", [
2347
2424
  InteractionPermissionRequestSchema,
2348
2425
  InteractionUserInputRequestSchema,
2349
2426
  InteractionElicitationRequestSchema,
@@ -2353,81 +2430,81 @@ var InteractionRequestSchema = z23.discriminatedUnion("kind", [
2353
2430
  InteractionSessionLimitsRequestSchema,
2354
2431
  InteractionExitPlanRequestSchema
2355
2432
  ]);
2356
- var InteractionPermissionResponseSchema = z23.object({
2357
- kind: z23.literal("permission"),
2358
- decision: z23.enum(["approve-once", "approve-for-session", "approve-always", "reject"]),
2359
- feedback: z23.string().trim().min(1).max(2048).optional()
2433
+ var InteractionPermissionResponseSchema = z24.object({
2434
+ kind: z24.literal("permission"),
2435
+ decision: z24.enum(["approve-once", "approve-for-session", "approve-always", "reject"]),
2436
+ feedback: z24.string().trim().min(1).max(2048).optional()
2360
2437
  }).strict();
2361
- var InteractionUserInputResponseSchema = z23.object({
2362
- kind: z23.literal("user_input"),
2363
- answer: z23.string().max(1e5),
2364
- wasFreeform: z23.boolean()
2438
+ var InteractionUserInputResponseSchema = z24.object({
2439
+ kind: z24.literal("user_input"),
2440
+ answer: z24.string().max(1e5),
2441
+ wasFreeform: z24.boolean()
2365
2442
  }).strict();
2366
- var InteractionFieldValueSchema = z23.union([
2367
- z23.string().max(4096),
2368
- z23.number(),
2369
- z23.boolean(),
2370
- z23.array(z23.string().max(1024)).max(100)
2443
+ var InteractionFieldValueSchema = z24.union([
2444
+ z24.string().max(4096),
2445
+ z24.number(),
2446
+ z24.boolean(),
2447
+ z24.array(z24.string().max(1024)).max(100)
2371
2448
  ]);
2372
- var InteractionElicitationResponseSchema = z23.object({
2373
- kind: z23.literal("elicitation"),
2374
- action: z23.enum(["accept", "decline", "cancel"]),
2375
- values: z23.record(z23.string().max(256), InteractionFieldValueSchema)
2449
+ var InteractionElicitationResponseSchema = z24.object({
2450
+ kind: z24.literal("elicitation"),
2451
+ action: z24.enum(["accept", "decline", "cancel"]),
2452
+ values: z24.record(z24.string().max(256), InteractionFieldValueSchema)
2376
2453
  }).strict();
2377
- var InteractionMcpOauthResponseSchema = z23.object({
2378
- kind: z23.literal("mcp_oauth"),
2379
- action: z23.literal("cancel")
2454
+ var InteractionMcpOauthResponseSchema = z24.object({
2455
+ kind: z24.literal("mcp_oauth"),
2456
+ action: z24.literal("cancel")
2380
2457
  }).strict();
2381
- var InteractionMcpHeadersResponseSchema = z23.object({
2382
- kind: z23.literal("mcp_headers"),
2383
- action: z23.literal("none")
2458
+ var InteractionMcpHeadersResponseSchema = z24.object({
2459
+ kind: z24.literal("mcp_headers"),
2460
+ action: z24.literal("none")
2384
2461
  }).strict();
2385
- var InteractionAutoModeSwitchResponseSchema = z23.object({
2386
- kind: z23.literal("auto_mode_switch"),
2387
- action: z23.enum(["yes", "yes_always", "no"])
2462
+ var InteractionAutoModeSwitchResponseSchema = z24.object({
2463
+ kind: z24.literal("auto_mode_switch"),
2464
+ action: z24.enum(["yes", "yes_always", "no"])
2388
2465
  }).strict();
2389
- var InteractionSessionLimitsResponseSchema = z23.object({
2390
- kind: z23.literal("session_limits"),
2391
- action: z23.enum(["add", "set", "unset", "cancel"]),
2392
- additionalAiCredits: z23.number().positive().optional(),
2393
- maxAiCredits: z23.number().positive().optional()
2466
+ var InteractionSessionLimitsResponseSchema = z24.object({
2467
+ kind: z24.literal("session_limits"),
2468
+ action: z24.enum(["add", "set", "unset", "cancel"]),
2469
+ additionalAiCredits: z24.number().positive().optional(),
2470
+ maxAiCredits: z24.number().positive().optional()
2394
2471
  }).strict().superRefine((response, context) => {
2395
2472
  if (response.action === "add" && response.additionalAiCredits === void 0) {
2396
2473
  context.addIssue({
2397
- code: z23.ZodIssueCode.custom,
2474
+ code: z24.ZodIssueCode.custom,
2398
2475
  path: ["additionalAiCredits"],
2399
2476
  message: "additionalAiCredits is required for add"
2400
2477
  });
2401
2478
  }
2402
2479
  if (response.action === "set" && response.maxAiCredits === void 0) {
2403
2480
  context.addIssue({
2404
- code: z23.ZodIssueCode.custom,
2481
+ code: z24.ZodIssueCode.custom,
2405
2482
  path: ["maxAiCredits"],
2406
2483
  message: "maxAiCredits is required for set"
2407
2484
  });
2408
2485
  }
2409
2486
  if (response.action !== "add" && response.additionalAiCredits !== void 0) {
2410
2487
  context.addIssue({
2411
- code: z23.ZodIssueCode.custom,
2488
+ code: z24.ZodIssueCode.custom,
2412
2489
  path: ["additionalAiCredits"],
2413
2490
  message: "additionalAiCredits is only valid for add"
2414
2491
  });
2415
2492
  }
2416
2493
  if (response.action !== "set" && response.maxAiCredits !== void 0) {
2417
2494
  context.addIssue({
2418
- code: z23.ZodIssueCode.custom,
2495
+ code: z24.ZodIssueCode.custom,
2419
2496
  path: ["maxAiCredits"],
2420
2497
  message: "maxAiCredits is only valid for set"
2421
2498
  });
2422
2499
  }
2423
2500
  });
2424
- var InteractionExitPlanResponseSchema = z23.object({
2425
- kind: z23.literal("exit_plan"),
2426
- approved: z23.boolean(),
2501
+ var InteractionExitPlanResponseSchema = z24.object({
2502
+ kind: z24.literal("exit_plan"),
2503
+ approved: z24.boolean(),
2427
2504
  selectedAction: IdSchema.optional(),
2428
- feedback: z23.string().trim().min(1).max(4096).optional()
2505
+ feedback: z24.string().trim().min(1).max(4096).optional()
2429
2506
  }).strict();
2430
- var InteractionResponseSchema = z23.discriminatedUnion("kind", [
2507
+ var InteractionResponseSchema = z24.discriminatedUnion("kind", [
2431
2508
  InteractionPermissionResponseSchema,
2432
2509
  InteractionUserInputResponseSchema,
2433
2510
  InteractionElicitationResponseSchema,
@@ -2437,30 +2514,30 @@ var InteractionResponseSchema = z23.discriminatedUnion("kind", [
2437
2514
  InteractionSessionLimitsResponseSchema,
2438
2515
  InteractionExitPlanResponseSchema
2439
2516
  ]);
2440
- var InteractionRequestPayloadSchema = z23.object({
2517
+ var InteractionRequestPayloadSchema = z24.object({
2441
2518
  interactionRequestId: IdSchema,
2442
2519
  userId: IdSchema,
2443
2520
  machineId: IdSchema,
2444
2521
  sessionId: IdSchema,
2445
2522
  request: InteractionRequestSchema
2446
2523
  }).strict();
2447
- var InteractionRespondRequestSchema = z23.object({
2524
+ var InteractionRespondRequestSchema = z24.object({
2448
2525
  requestId: IdSchema,
2449
2526
  interactionRequestId: IdSchema,
2450
2527
  machineId: IdSchema,
2451
2528
  sessionId: IdSchema,
2452
2529
  response: InteractionResponseSchema
2453
2530
  }).strict();
2454
- var InteractionRespondResultSchema = z23.discriminatedUnion("ok", [
2455
- z23.object({
2456
- ok: z23.literal(true),
2531
+ var InteractionRespondResultSchema = z24.discriminatedUnion("ok", [
2532
+ z24.object({
2533
+ ok: z24.literal(true),
2457
2534
  requestId: IdSchema,
2458
2535
  interactionRequestId: IdSchema,
2459
2536
  machineId: IdSchema,
2460
2537
  sessionId: IdSchema
2461
2538
  }).strict(),
2462
- z23.object({
2463
- ok: z23.literal(false),
2539
+ z24.object({
2540
+ ok: z24.literal(false),
2464
2541
  requestId: IdSchema,
2465
2542
  interactionRequestId: IdSchema,
2466
2543
  machineId: IdSchema,
@@ -2468,31 +2545,31 @@ var InteractionRespondResultSchema = z23.discriminatedUnion("ok", [
2468
2545
  error: ProtocolFailureSchema
2469
2546
  }).strict()
2470
2547
  ]);
2471
- var PermissionRequestPayloadSchema = z23.object({
2548
+ var PermissionRequestPayloadSchema = z24.object({
2472
2549
  permissionRequestId: IdSchema,
2473
2550
  userId: IdSchema,
2474
2551
  machineId: IdSchema,
2475
2552
  sessionId: IdSchema,
2476
- request: z23.record(z23.string(), z23.unknown())
2553
+ request: z24.record(z24.string(), z24.unknown())
2477
2554
  });
2478
- var PermissionRespondRequestSchema = z23.object({
2555
+ var PermissionRespondRequestSchema = z24.object({
2479
2556
  requestId: IdSchema,
2480
2557
  permissionRequestId: IdSchema,
2481
2558
  machineId: IdSchema,
2482
2559
  sessionId: IdSchema,
2483
- decision: z23.enum(["approve-once", "reject"]),
2484
- feedback: z23.string().trim().min(1).max(2048).optional()
2560
+ decision: z24.enum(["approve-once", "reject"]),
2561
+ feedback: z24.string().trim().min(1).max(2048).optional()
2485
2562
  });
2486
- var PermissionRespondResultSchema = z23.discriminatedUnion("ok", [
2487
- z23.object({
2488
- ok: z23.literal(true),
2563
+ var PermissionRespondResultSchema = z24.discriminatedUnion("ok", [
2564
+ z24.object({
2565
+ ok: z24.literal(true),
2489
2566
  requestId: IdSchema,
2490
2567
  permissionRequestId: IdSchema,
2491
2568
  machineId: IdSchema,
2492
2569
  sessionId: IdSchema
2493
2570
  }),
2494
- z23.object({
2495
- ok: z23.literal(false),
2571
+ z24.object({
2572
+ ok: z24.literal(false),
2496
2573
  requestId: IdSchema,
2497
2574
  permissionRequestId: IdSchema,
2498
2575
  machineId: IdSchema,
@@ -2502,42 +2579,42 @@ var PermissionRespondResultSchema = z23.discriminatedUnion("ok", [
2502
2579
  ]);
2503
2580
 
2504
2581
  // ../../shared/protocol/dist/conversation/timeline-sync.js
2505
- import { z as z24 } from "zod";
2582
+ import { z as z25 } from "zod";
2506
2583
  var TIMELINE_SYNC_MAX_EVENTS = 128;
2507
2584
  var TIMELINE_SYNC_MAX_BYTES = 6 * 1024 * 1024;
2508
2585
  var TIMELINE_IMAGE_CHUNK_BYTES = 48 * 1024;
2509
2586
  var TIMELINE_IMAGE_MAX_BYTES = 3 * 1024 * 1024;
2510
- var identity = z24.string().min(1).max(256);
2511
- var sequence = z24.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
2512
- var hash = z24.string().regex(/^[a-f0-9]{64}$/u);
2513
- var TimelineWatermarkSchema = z24.object({
2587
+ var identity = z25.string().min(1).max(256);
2588
+ var sequence = z25.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
2589
+ var hash = z25.string().regex(/^[a-f0-9]{64}$/u);
2590
+ var TimelineWatermarkSchema = z25.object({
2514
2591
  epoch: identity,
2515
2592
  sequence
2516
2593
  }).strict();
2517
- var TimelineSyncRequestSchema = z24.object({
2594
+ var TimelineSyncRequestSchema = z25.object({
2518
2595
  watermark: TimelineWatermarkSchema.optional(),
2519
- waitMs: z24.number().int().min(0).max(2e4).optional(),
2520
- resume: z24.boolean().optional()
2596
+ waitMs: z25.number().int().min(0).max(2e4).optional(),
2597
+ resume: z25.boolean().optional()
2521
2598
  }).strict();
2522
- var TimelineTextAppendSchema = z24.object({
2599
+ var TimelineTextAppendSchema = z25.object({
2523
2600
  itemId: identity,
2524
- baseRevision: z24.number().int().positive(),
2525
- revision: z24.number().int().positive(),
2526
- appendText: z24.string().min(1).max(5e5),
2527
- sourceEventIds: z24.array(identity).min(1).max(1e3).optional(),
2528
- sourceMessageIds: z24.array(identity).min(1).max(1e3).optional(),
2529
- sourceInteractionIds: z24.array(identity).min(1).max(1e3).optional()
2601
+ baseRevision: z25.number().int().positive(),
2602
+ revision: z25.number().int().positive(),
2603
+ appendText: z25.string().min(1).max(5e5),
2604
+ sourceEventIds: z25.array(identity).min(1).max(1e3).optional(),
2605
+ sourceMessageIds: z25.array(identity).min(1).max(1e3).optional(),
2606
+ sourceInteractionIds: z25.array(identity).min(1).max(1e3).optional()
2530
2607
  }).strict();
2531
- var TimelineSyncEventSchema = z24.discriminatedUnion("kind", [
2532
- z24.object({ kind: z24.literal("upsert"), sequence, item: ConversationItemSchema }).strict(),
2533
- z24.object({ kind: z24.literal("append"), sequence, append: TimelineTextAppendSchema }).strict(),
2534
- z24.object({
2535
- kind: z24.literal("step"),
2608
+ var TimelineSyncEventSchema = z25.discriminatedUnion("kind", [
2609
+ z25.object({ kind: z25.literal("upsert"), sequence, item: ConversationItemSchema }).strict(),
2610
+ z25.object({ kind: z25.literal("append"), sequence, append: TimelineTextAppendSchema }).strict(),
2611
+ z25.object({
2612
+ kind: z25.literal("step"),
2536
2613
  sequence,
2537
2614
  upsert: ConversationActivityStepUpsertSchema
2538
2615
  }).strict()
2539
2616
  ]);
2540
- var TimelineResyncReasonSchema = z24.enum([
2617
+ var TimelineResyncReasonSchema = z25.enum([
2541
2618
  "initial",
2542
2619
  "epoch-changed",
2543
2620
  "evicted",
@@ -2546,36 +2623,36 @@ var TimelineResyncReasonSchema = z24.enum([
2546
2623
  "rewind",
2547
2624
  "oversized"
2548
2625
  ]);
2549
- var TimelineSyncResponseSchema = z24.discriminatedUnion("status", [
2550
- z24.object({
2551
- status: z24.literal("snapshot"),
2626
+ var TimelineSyncResponseSchema = z25.discriminatedUnion("status", [
2627
+ z25.object({
2628
+ status: z25.literal("snapshot"),
2552
2629
  watermark: TimelineWatermarkSchema,
2553
2630
  page: SessionTimelinePageSchema
2554
2631
  }).strict(),
2555
- z24.object({
2556
- status: z24.literal("replay"),
2632
+ z25.object({
2633
+ status: z25.literal("replay"),
2557
2634
  watermark: TimelineWatermarkSchema,
2558
2635
  afterSequence: sequence,
2559
- events: z24.array(TimelineSyncEventSchema).max(TIMELINE_SYNC_MAX_EVENTS),
2560
- hasMore: z24.boolean()
2636
+ events: z25.array(TimelineSyncEventSchema).max(TIMELINE_SYNC_MAX_EVENTS),
2637
+ hasMore: z25.boolean()
2561
2638
  }).strict(),
2562
- z24.object({
2563
- status: z24.literal("resync"),
2639
+ z25.object({
2640
+ status: z25.literal("resync"),
2564
2641
  epoch: identity,
2565
2642
  reason: TimelineResyncReasonSchema
2566
2643
  }).strict()
2567
2644
  ]);
2568
- var TimelineImageRequestSchema = z24.object({
2645
+ var TimelineImageRequestSchema = z25.object({
2569
2646
  sha256: hash,
2570
- offset: z24.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1)
2647
+ offset: z25.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1)
2571
2648
  }).strict();
2572
- var TimelineImageChunkSchema = z24.object({
2649
+ var TimelineImageChunkSchema = z25.object({
2573
2650
  sha256: hash,
2574
- offset: z24.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1),
2575
- totalBytes: z24.number().int().positive().max(TIMELINE_IMAGE_MAX_BYTES),
2576
- mimeType: z24.enum(["image/gif", "image/jpeg", "image/png", "image/webp"]),
2577
- data: z24.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),
2578
- eof: z24.boolean()
2651
+ offset: z25.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1),
2652
+ totalBytes: z25.number().int().positive().max(TIMELINE_IMAGE_MAX_BYTES),
2653
+ mimeType: z25.enum(["image/gif", "image/jpeg", "image/png", "image/webp"]),
2654
+ 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),
2655
+ eof: z25.boolean()
2579
2656
  }).strict().superRefine((chunk, context) => {
2580
2657
  const padding = chunk.data.endsWith("==") ? 2 : chunk.data.endsWith("=") ? 1 : 0;
2581
2658
  const length = chunk.data.length / 4 * 3 - padding;
@@ -2586,10 +2663,10 @@ var TimelineImageChunkSchema = z24.object({
2586
2663
  });
2587
2664
 
2588
2665
  // ../../shared/protocol/dist/workbench.js
2589
- import { z as z26 } from "zod";
2666
+ import { z as z27 } from "zod";
2590
2667
 
2591
2668
  // ../../shared/protocol/dist/schedules.js
2592
- import { z as z25 } from "zod";
2669
+ import { z as z26 } from "zod";
2593
2670
  var SCHEDULE_OPERATIONS = [
2594
2671
  "schedule.snapshot",
2595
2672
  "schedule.create",
@@ -2597,90 +2674,90 @@ var SCHEDULE_OPERATIONS = [
2597
2674
  "schedule.draft.dismiss",
2598
2675
  "schedule.resume"
2599
2676
  ];
2600
- var Id = z25.string().min(1).max(256);
2601
- var NativeId = z25.number().int().positive().max(Number.MAX_SAFE_INTEGER);
2602
- var Time = z25.iso.datetime({ offset: true });
2603
- var WorkbenchScheduleRuleSchema = z25.discriminatedUnion("kind", [
2604
- z25.object({ kind: z25.literal("once"), at: Time }).strict(),
2605
- z25.object({
2606
- kind: z25.literal("interval"),
2607
- seconds: z25.number().int().min(10).max(86400),
2608
- recurring: z25.boolean().optional()
2677
+ var Id = z26.string().min(1).max(256);
2678
+ var NativeId = z26.number().int().positive().max(Number.MAX_SAFE_INTEGER);
2679
+ var Time = z26.iso.datetime({ offset: true });
2680
+ var WorkbenchScheduleRuleSchema = z26.discriminatedUnion("kind", [
2681
+ z26.object({ kind: z26.literal("once"), at: Time }).strict(),
2682
+ z26.object({
2683
+ kind: z26.literal("interval"),
2684
+ seconds: z26.number().int().min(10).max(86400),
2685
+ recurring: z26.boolean().optional()
2609
2686
  }).strict(),
2610
- z25.object({
2611
- kind: z25.literal("cron"),
2612
- expression: z25.string().trim().min(9).max(256).regex(/^\S+(?: +\S+){4}$/),
2613
- timezone: z25.string().min(1).max(128).regex(/^[A-Za-z0-9_+./-]+$/)
2687
+ z26.object({
2688
+ kind: z26.literal("cron"),
2689
+ expression: z26.string().trim().min(9).max(256).regex(/^\S+(?: +\S+){4}$/),
2690
+ timezone: z26.string().min(1).max(128).regex(/^[A-Za-z0-9_+./-]+$/)
2614
2691
  }).strict()
2615
2692
  ]);
2616
2693
  var Content = {
2617
2694
  rule: WorkbenchScheduleRuleSchema,
2618
- prompt: z25.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."),
2619
- skill: z25.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.")
2695
+ 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."),
2696
+ 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.")
2620
2697
  };
2621
- var WorkbenchScheduleProposalSchema = z25.object(Content).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2622
- var WorkbenchScheduleDraftSchema = z25.object({
2623
- id: z25.uuid(),
2698
+ var WorkbenchScheduleProposalSchema = z26.object(Content).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2699
+ var WorkbenchScheduleDraftSchema = z26.object({
2700
+ id: z26.uuid(),
2624
2701
  createdAt: Time,
2625
2702
  ...Content
2626
2703
  }).strict();
2627
- var WorkbenchScheduleEntrySchema = z25.object({
2704
+ var WorkbenchScheduleEntrySchema = z26.object({
2628
2705
  id: NativeId,
2629
- prompt: z25.string().max(1e5),
2630
- displayPrompt: z25.string().max(1e5).optional(),
2631
- recurring: z25.boolean(),
2706
+ prompt: z26.string().max(1e5),
2707
+ displayPrompt: z26.string().max(1e5).optional(),
2708
+ recurring: z26.boolean(),
2632
2709
  nextRunAt: Time,
2633
- intervalMs: z25.number().int().positive().optional(),
2634
- cron: z25.string().max(256).optional(),
2635
- timezone: z25.string().max(128).optional(),
2710
+ intervalMs: z26.number().int().positive().optional(),
2711
+ cron: z26.string().max(256).optional(),
2712
+ timezone: z26.string().max(128).optional(),
2636
2713
  at: Time.optional()
2637
2714
  }).strict();
2638
- var WorkbenchScheduleResultSchema = z25.object({
2715
+ var WorkbenchScheduleResultSchema = z26.object({
2639
2716
  id: Id,
2640
2717
  scheduleId: NativeId,
2641
2718
  triggerEventId: Id,
2642
2719
  time: Time,
2643
- prompt: z25.string().max(16e3),
2644
- status: z25.enum(["reply", "error", "merged", "pending", "unknown"]),
2645
- reply: z25.string().max(16e3).optional(),
2720
+ prompt: z26.string().max(16e3),
2721
+ status: z26.enum(["reply", "error", "merged", "pending", "unknown"]),
2722
+ reply: z26.string().max(16e3).optional(),
2646
2723
  replyEventId: Id.optional(),
2647
- error: z25.string().max(1024).optional()
2724
+ error: z26.string().max(1024).optional()
2648
2725
  }).strict();
2649
- var WorkbenchScheduleSnapshotSchema = z25.object({
2650
- state: z25.enum(["active", "needs-resume"]),
2651
- workingDirectory: z25.string().max(32768).optional(),
2652
- timezone: z25.string().max(128).optional(),
2653
- entries: z25.array(WorkbenchScheduleEntrySchema).max(256),
2654
- drafts: z25.array(WorkbenchScheduleDraftSchema).max(100),
2655
- results: z25.array(WorkbenchScheduleResultSchema).max(100),
2656
- historyTruncated: z25.boolean(),
2726
+ var WorkbenchScheduleSnapshotSchema = z26.object({
2727
+ state: z26.enum(["active", "needs-resume"]),
2728
+ workingDirectory: z26.string().max(32768).optional(),
2729
+ timezone: z26.string().max(128).optional(),
2730
+ entries: z26.array(WorkbenchScheduleEntrySchema).max(256),
2731
+ drafts: z26.array(WorkbenchScheduleDraftSchema).max(100),
2732
+ results: z26.array(WorkbenchScheduleResultSchema).max(100),
2733
+ historyTruncated: z26.boolean(),
2657
2734
  sampledAt: Time
2658
2735
  }).strict();
2659
2736
  var Submission = {
2660
- operationId: z25.uuid(),
2661
- operationCreatedAt: z25.iso.datetime(),
2737
+ operationId: z26.uuid(),
2738
+ operationCreatedAt: z26.iso.datetime(),
2662
2739
  expectedAgentRunId: Id
2663
2740
  };
2664
- var WorkbenchScheduleCreateRequestSchema = z25.object({
2741
+ var WorkbenchScheduleCreateRequestSchema = z26.object({
2665
2742
  ...Submission,
2666
2743
  ...Content,
2667
- draftId: z25.uuid().optional()
2744
+ draftId: z26.uuid().optional()
2668
2745
  }).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2669
- var WorkbenchScheduleCreateResultSchema = z25.object({
2746
+ var WorkbenchScheduleCreateResultSchema = z26.object({
2670
2747
  snapshot: WorkbenchScheduleSnapshotSchema,
2671
- verified: z25.boolean()
2748
+ verified: z26.boolean()
2672
2749
  }).strict();
2673
- var WorkbenchScheduleDeleteRequestSchema = z25.object({
2750
+ var WorkbenchScheduleDeleteRequestSchema = z26.object({
2674
2751
  ...Submission,
2675
2752
  id: NativeId
2676
2753
  }).strict();
2677
- var WorkbenchScheduleDeleteResultSchema = z25.object({
2754
+ var WorkbenchScheduleDeleteResultSchema = z26.object({
2678
2755
  snapshot: WorkbenchScheduleSnapshotSchema,
2679
- removed: z25.boolean()
2756
+ removed: z26.boolean()
2680
2757
  }).strict();
2681
- var WorkbenchScheduleDraftDismissRequestSchema = z25.object({
2758
+ var WorkbenchScheduleDraftDismissRequestSchema = z26.object({
2682
2759
  ...Submission,
2683
- draftId: z25.uuid()
2760
+ draftId: z26.uuid()
2684
2761
  }).strict();
2685
2762
  var ScheduleAndroidSchemas = {
2686
2763
  WorkbenchScheduleRule: WorkbenchScheduleRuleSchema,
@@ -2697,10 +2774,10 @@ var ScheduleAndroidSchemas = {
2697
2774
  };
2698
2775
 
2699
2776
  // ../../shared/protocol/dist/workbench.js
2700
- var Id2 = z26.string().trim().min(1).max(256);
2701
- var Text = z26.string().max(1e5);
2702
- var Count = z26.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
2703
- var Failure = z26.object({ code: Id2, message: z26.string().min(1).max(1024) }).strict();
2777
+ var Id2 = z27.string().trim().min(1).max(256);
2778
+ var Text = z27.string().max(1e5);
2779
+ var Count = z27.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
2780
+ var Failure = z27.object({ code: Id2, message: z27.string().min(1).max(1024) }).strict();
2704
2781
  var WORKBENCH_OPERATIONS = [
2705
2782
  "operation.get",
2706
2783
  "question.ask",
@@ -2719,104 +2796,104 @@ var WORKBENCH_OPERATIONS = [
2719
2796
  ...SCHEDULE_OPERATIONS
2720
2797
  ];
2721
2798
  var Submission2 = {
2722
- operationId: z26.uuid(),
2723
- operationCreatedAt: z26.iso.datetime(),
2799
+ operationId: z27.uuid(),
2800
+ operationCreatedAt: z27.iso.datetime(),
2724
2801
  expectedAgentRunId: Id2
2725
2802
  };
2726
- var WorkbenchOperationGetSchema = z26.object({ operationId: z26.uuid() }).strict();
2727
- var WorkbenchOperationStatusSchema = z26.object({
2728
- operationId: z26.uuid(),
2729
- operation: z26.enum(WORKBENCH_OPERATIONS),
2803
+ var WorkbenchOperationGetSchema = z27.object({ operationId: z27.uuid() }).strict();
2804
+ var WorkbenchOperationStatusSchema = z27.object({
2805
+ operationId: z27.uuid(),
2806
+ operation: z27.enum(WORKBENCH_OPERATIONS),
2730
2807
  agentRunId: Id2,
2731
- state: z26.enum(["running", "succeeded", "failed", "uncertain", "result-expired"]),
2732
- result: z26.record(z26.string(), z26.json()).optional(),
2808
+ state: z27.enum(["running", "succeeded", "failed", "uncertain", "result-expired"]),
2809
+ result: z27.record(z27.string(), z27.json()).optional(),
2733
2810
  error: Failure.optional()
2734
2811
  }).strict().superRefine((value, context) => {
2735
2812
  if (value.state === "succeeded" !== (value.result !== void 0) || (value.state === "failed" || value.state === "uncertain") !== (value.error !== void 0)) {
2736
2813
  context.addIssue({ code: "custom", message: "Invalid operation state payload" });
2737
2814
  }
2738
2815
  });
2739
- var WorkbenchAskRequestSchema = z26.object({
2816
+ var WorkbenchAskRequestSchema = z27.object({
2740
2817
  ...Submission2,
2741
- question: z26.string().trim().min(1).max(16e3)
2818
+ question: z27.string().trim().min(1).max(16e3)
2742
2819
  }).strict();
2743
- var WorkbenchAskResultSchema = z26.object({ answer: Text }).strict();
2744
- var WorkbenchEmptyRequestSchema = z26.object({}).strict();
2745
- var WorkbenchSubmitRequestSchema = z26.object(Submission2).strict();
2746
- var WorkbenchResearchCreateRequestSchema = z26.object({
2820
+ var WorkbenchAskResultSchema = z27.object({ answer: Text }).strict();
2821
+ var WorkbenchEmptyRequestSchema = z27.object({}).strict();
2822
+ var WorkbenchSubmitRequestSchema = z27.object(Submission2).strict();
2823
+ var WorkbenchResearchCreateRequestSchema = z27.object({
2747
2824
  ...Submission2,
2748
- title: z26.string().trim().min(1).max(120),
2749
- question: z26.string().trim().min(1).max(16e3),
2825
+ title: z27.string().trim().min(1).max(120),
2826
+ question: z27.string().trim().min(1).max(16e3),
2750
2827
  sourceItemId: Id2.optional(),
2751
- deferInitialPrompt: z26.literal(true).optional()
2828
+ deferInitialPrompt: z27.literal(true).optional()
2752
2829
  }).strict();
2753
- var WorkbenchResearchThreadSchema = z26.object({
2830
+ var WorkbenchResearchThreadSchema = z27.object({
2754
2831
  sessionId: Id2,
2755
2832
  parentSessionId: Id2,
2756
- title: z26.string().min(1).max(120),
2757
- createdAt: z26.iso.datetime(),
2833
+ title: z27.string().min(1).max(120),
2834
+ createdAt: z27.iso.datetime(),
2758
2835
  contextAnchor: Id2.optional(),
2759
- contextTruncated: z26.boolean(),
2760
- detached: z26.boolean(),
2761
- state: z26.enum(["creating", "ready", "failed"])
2836
+ contextTruncated: z27.boolean(),
2837
+ detached: z27.boolean(),
2838
+ state: z27.enum(["creating", "ready", "failed"])
2762
2839
  }).strict();
2763
- var WorkbenchResearchCreateResultSchema = z26.object({
2840
+ var WorkbenchResearchCreateResultSchema = z27.object({
2764
2841
  thread: WorkbenchResearchThreadSchema
2765
2842
  }).strict();
2766
- var WorkbenchResearchListResultSchema = z26.object({
2767
- threads: z26.array(WorkbenchResearchThreadSchema).max(100)
2843
+ var WorkbenchResearchListResultSchema = z27.object({
2844
+ threads: z27.array(WorkbenchResearchThreadSchema).max(100)
2768
2845
  }).strict();
2769
- var WorkbenchResearchTimelineRequestSchema = z26.object({
2846
+ var WorkbenchResearchTimelineRequestSchema = z27.object({
2770
2847
  cursor: Id2.optional()
2771
2848
  }).strict();
2772
- var WorkbenchResearchSendRequestSchema = z26.object({
2849
+ var WorkbenchResearchSendRequestSchema = z27.object({
2773
2850
  ...Submission2,
2774
- prompt: z26.string().trim().min(1).max(16e3)
2851
+ prompt: z27.string().trim().min(1).max(16e3)
2775
2852
  }).strict();
2776
- var WorkbenchResearchSendResultSchema = z26.object({ messageId: Id2 }).strict();
2777
- var WorkbenchCompletedResultSchema = z26.object({ completed: z26.boolean() }).strict();
2778
- var WorkbenchCommandSchema = z26.object({
2779
- name: z26.string().min(1).max(260),
2780
- description: z26.string().max(4096),
2781
- argumentHint: z26.string().max(1024).optional(),
2782
- kind: z26.enum(["builtin", "skill", "client"]),
2783
- allowDuringExecution: z26.boolean(),
2784
- supported: z26.boolean(),
2785
- reason: z26.string().max(1024).optional()
2853
+ var WorkbenchResearchSendResultSchema = z27.object({ messageId: Id2 }).strict();
2854
+ var WorkbenchCompletedResultSchema = z27.object({ completed: z27.boolean() }).strict();
2855
+ var WorkbenchCommandSchema = z27.object({
2856
+ name: z27.string().min(1).max(260),
2857
+ description: z27.string().max(4096),
2858
+ argumentHint: z27.string().max(1024).optional(),
2859
+ kind: z27.enum(["builtin", "skill", "client"]),
2860
+ allowDuringExecution: z27.boolean(),
2861
+ supported: z27.boolean(),
2862
+ reason: z27.string().max(1024).optional()
2786
2863
  }).strict();
2787
- var WorkbenchCommandListResultSchema = z26.object({
2788
- commands: z26.array(WorkbenchCommandSchema).max(512)
2864
+ var WorkbenchCommandListResultSchema = z27.object({
2865
+ commands: z27.array(WorkbenchCommandSchema).max(512)
2789
2866
  }).strict();
2790
- var WorkbenchCommandInvokeRequestSchema = z26.object({
2867
+ var WorkbenchCommandInvokeRequestSchema = z27.object({
2791
2868
  ...Submission2,
2792
- name: z26.string().trim().min(1).max(260),
2793
- input: z26.string().max(16e3)
2869
+ name: z27.string().trim().min(1).max(260),
2870
+ input: z27.string().max(16e3)
2794
2871
  }).strict();
2795
- var WorkbenchCommandChoiceSchema = z26.object({
2796
- name: z26.string().min(1).max(260),
2797
- label: z26.string().min(1).max(1024),
2798
- input: z26.string().max(16e3)
2872
+ var WorkbenchCommandChoiceSchema = z27.object({
2873
+ name: z27.string().min(1).max(260),
2874
+ label: z27.string().min(1).max(1024),
2875
+ input: z27.string().max(16e3)
2799
2876
  }).strict();
2800
- var WorkbenchCommandResultSchema = z26.discriminatedUnion("kind", [
2801
- z26.object({ kind: z26.literal("text"), text: Text }).strict(),
2802
- z26.object({ kind: z26.literal("completed") }).strict(),
2803
- z26.object({ kind: z26.literal("sent"), messageId: Id2 }).strict(),
2804
- z26.object({
2805
- kind: z26.literal("select-subcommand"),
2806
- choices: z26.array(WorkbenchCommandChoiceSchema).min(1).max(100)
2877
+ var WorkbenchCommandResultSchema = z27.discriminatedUnion("kind", [
2878
+ z27.object({ kind: z27.literal("text"), text: Text }).strict(),
2879
+ z27.object({ kind: z27.literal("completed") }).strict(),
2880
+ z27.object({ kind: z27.literal("sent"), messageId: Id2 }).strict(),
2881
+ z27.object({
2882
+ kind: z27.literal("select-subcommand"),
2883
+ choices: z27.array(WorkbenchCommandChoiceSchema).min(1).max(100)
2807
2884
  }).strict()
2808
2885
  ]);
2809
- var WorkbenchQueueItemSchema = z26.object({
2886
+ var WorkbenchQueueItemSchema = z27.object({
2810
2887
  id: Id2,
2811
- kind: z26.string().min(1).max(64),
2812
- texts: z26.array(z26.string().max(1e5)).min(1).max(100),
2813
- actions: z26.array(z26.enum(["edit", "remove", "move", "send-now"])).max(4)
2888
+ kind: z27.string().min(1).max(64),
2889
+ texts: z27.array(z27.string().max(1e5)).min(1).max(100),
2890
+ actions: z27.array(z27.enum(["edit", "remove", "move", "send-now"])).max(4)
2814
2891
  }).strict();
2815
- var WorkbenchQueueSnapshotSchema = z26.object({
2892
+ var WorkbenchQueueSnapshotSchema = z27.object({
2816
2893
  generation: Id2,
2817
2894
  revision: Id2,
2818
- items: z26.array(WorkbenchQueueItemSchema).max(512),
2819
- steeringMessages: z26.array(z26.string().max(1e5)).max(512)
2895
+ items: z27.array(WorkbenchQueueItemSchema).max(512),
2896
+ steeringMessages: z27.array(z27.string().max(1e5)).max(512)
2820
2897
  }).strict();
2821
2898
  var QueueMutation = {
2822
2899
  ...Submission2,
@@ -2824,48 +2901,48 @@ var QueueMutation = {
2824
2901
  revision: Id2,
2825
2902
  id: Id2
2826
2903
  };
2827
- var WorkbenchQueueMutationRequestSchema = z26.discriminatedUnion("action", [
2828
- z26.object({ ...QueueMutation, action: z26.literal("edit"), prompt: z26.string().trim().min(1).max(1e5) }).strict(),
2829
- z26.object({ ...QueueMutation, action: z26.literal("remove") }).strict(),
2830
- z26.object({ ...QueueMutation, action: z26.literal("move"), toPosition: z26.number().int().min(0).max(511) }).strict(),
2831
- z26.object({ ...QueueMutation, action: z26.literal("send-now") }).strict()
2904
+ var WorkbenchQueueMutationRequestSchema = z27.discriminatedUnion("action", [
2905
+ z27.object({ ...QueueMutation, action: z27.literal("edit"), prompt: z27.string().trim().min(1).max(1e5) }).strict(),
2906
+ z27.object({ ...QueueMutation, action: z27.literal("remove") }).strict(),
2907
+ z27.object({ ...QueueMutation, action: z27.literal("move"), toPosition: z27.number().int().min(0).max(511) }).strict(),
2908
+ z27.object({ ...QueueMutation, action: z27.literal("send-now") }).strict()
2832
2909
  ]);
2833
- var WorkbenchQueueMutationResultSchema = z26.object({
2834
- changed: z26.boolean(),
2910
+ var WorkbenchQueueMutationResultSchema = z27.object({
2911
+ changed: z27.boolean(),
2835
2912
  snapshot: WorkbenchQueueSnapshotSchema
2836
2913
  }).strict();
2837
- var WorkbenchTokenMetricSchema = z26.object({
2838
- kind: z26.string().min(1).max(128),
2914
+ var WorkbenchTokenMetricSchema = z27.object({
2915
+ kind: z27.string().min(1).max(128),
2839
2916
  count: Count
2840
2917
  }).strict();
2841
- var WorkbenchModelUsageSchema = z26.object({
2918
+ var WorkbenchModelUsageSchema = z27.object({
2842
2919
  model: Id2,
2843
2920
  requests: Count,
2844
- premiumRequestCost: z26.number().finite().nonnegative(),
2845
- tokens: z26.array(WorkbenchTokenMetricSchema).max(32)
2921
+ premiumRequestCost: z27.number().finite().nonnegative(),
2922
+ tokens: z27.array(WorkbenchTokenMetricSchema).max(32)
2846
2923
  }).strict();
2847
- var WorkbenchContextSchema = z26.object({
2924
+ var WorkbenchContextSchema = z27.object({
2848
2925
  currentTokens: Count,
2849
2926
  tokenLimit: Count,
2850
2927
  systemTokens: Count.optional(),
2851
2928
  conversationTokens: Count.optional(),
2852
2929
  toolTokens: Count.optional()
2853
2930
  }).strict();
2854
- var WorkbenchInsightsSchema = z26.object({
2855
- sampledAt: z26.iso.datetime(),
2931
+ var WorkbenchInsightsSchema = z27.object({
2932
+ sampledAt: z27.iso.datetime(),
2856
2933
  generation: Id2,
2857
2934
  model: Id2.optional(),
2858
2935
  totalUserRequests: Count,
2859
- premiumRequestCost: z26.number().finite().nonnegative(),
2860
- nanoAiu: z26.string().regex(/^\d+$/).max(40).optional(),
2861
- tokens: z26.array(WorkbenchTokenMetricSchema).max(32),
2862
- models: z26.array(WorkbenchModelUsageSchema).max(100),
2936
+ premiumRequestCost: z27.number().finite().nonnegative(),
2937
+ nanoAiu: z27.string().regex(/^\d+$/).max(40).optional(),
2938
+ tokens: z27.array(WorkbenchTokenMetricSchema).max(32),
2939
+ models: z27.array(WorkbenchModelUsageSchema).max(100),
2863
2940
  context: WorkbenchContextSchema.optional(),
2864
- canCompact: z26.boolean(),
2865
- compactUnavailableReason: z26.string().max(1024).optional()
2941
+ canCompact: z27.boolean(),
2942
+ compactUnavailableReason: z27.string().max(1024).optional()
2866
2943
  }).strict();
2867
- var WorkbenchCompactResultSchema = z26.object({
2868
- success: z26.boolean(),
2944
+ var WorkbenchCompactResultSchema = z27.object({
2945
+ success: z27.boolean(),
2869
2946
  tokensRemoved: Count,
2870
2947
  messagesRemoved: Count
2871
2948
  }).strict();
@@ -2901,6 +2978,13 @@ var WorkbenchAndroidSchemas = {
2901
2978
 
2902
2979
  // ../../shared/protocol/dist/codegen/android-schemas.js
2903
2980
  var AndroidProtocolSchemas = {
2981
+ TimelineImageBlobRequest: TimelineImageBlobRequestSchema,
2982
+ TimelineImageBlobResult: TimelineImageBlobResultSchema,
2983
+ SessionImageUploadRequest: SessionImageUploadRequestSchema,
2984
+ SessionImageScope: SessionImageScopeSchema,
2985
+ SessionImageUploadResult: SessionImageUploadResultSchema,
2986
+ SessionImageCommitResult: SessionImageCommitResultSchema,
2987
+ SessionImageDownloadResult: SessionImageDownloadResultSchema,
2904
2988
  ...WorkbenchAndroidSchemas,
2905
2989
  ...ScheduleAndroidSchemas,
2906
2990
  SessionCommunication: SessionCommunicationSchema,
@@ -2914,6 +2998,7 @@ var AndroidProtocolSchemas = {
2914
2998
  SessionDirectoryListResultData: SessionDirectoryListResultDataSchema,
2915
2999
  SessionFileReadData: SessionFileReadDataSchema,
2916
3000
  SessionFileReadResultData: SessionFileReadResultDataSchema,
3001
+ SessionFileReadV2ResultData: SessionFileReadV2ResultDataSchema,
2917
3002
  SessionResourceReadData: SessionResourceReadDataSchema,
2918
3003
  SessionResourceReadResultData: SessionResourceReadResultDataSchema,
2919
3004
  SessionDirectoryListRequest: SessionDirectoryListRequestSchema,
@@ -3003,55 +3088,84 @@ var AndroidProtocolSchemas = {
3003
3088
  };
3004
3089
 
3005
3090
  // src/config.ts
3006
- import { AgentSelectionSchema as AgentSelectionSchema2 } from "@agentknight/sdk";
3007
- var BooleanStringSchema = z27.enum(["true", "false"]).default("false").transform((value) => value === "true");
3008
- var EnabledBooleanStringSchema = z27.enum(["true", "false"]).default("true").transform((value) => value === "true");
3009
- var OptionalPathSchema = z27.preprocess(
3091
+ import {
3092
+ AgentSelectionSchema as AgentSelectionSchema2,
3093
+ SessionImageRelayUrlSchema,
3094
+ SessionImagesConfigSchema
3095
+ } from "@agentknight/sdk";
3096
+ var BooleanStringSchema = z28.enum(["true", "false"]).default("false").transform((value) => value === "true");
3097
+ var EnabledBooleanStringSchema = z28.enum(["true", "false"]).default("true").transform((value) => value === "true");
3098
+ var OptionalPathSchema = z28.preprocess(
3010
3099
  (value) => typeof value === "string" && value.trim() === "" ? void 0 : value,
3011
- z27.string().trim().min(1).optional()
3100
+ z28.string().trim().min(1).optional()
3012
3101
  );
3013
- var AcpArgumentsSchema = z27.string().default("[]").transform((value, context) => {
3102
+ var AcpArgumentsSchema = z28.string().default("[]").transform((value, context) => {
3014
3103
  let decoded;
3015
3104
  try {
3016
3105
  decoded = JSON.parse(value);
3017
3106
  } catch (error) {
3018
3107
  if (!(error instanceof SyntaxError)) throw error;
3019
3108
  context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
3020
- return z27.NEVER;
3109
+ return z28.NEVER;
3021
3110
  }
3022
- const parsed = z27.array(z27.string()).max(128).safeParse(decoded);
3111
+ const parsed = z28.array(z28.string()).max(128).safeParse(decoded);
3023
3112
  if (!parsed.success) {
3024
3113
  context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
3025
- return z27.NEVER;
3114
+ return z28.NEVER;
3026
3115
  }
3027
3116
  return parsed.data;
3028
3117
  });
3029
- var EnvironmentSchema = z27.object({
3030
- RELAY_URL: z27.url(),
3031
- RELAY_TOKEN: z27.string().min(24).optional(),
3032
- RELAY_AUTH: z27.enum(["token", "microsoft"]).optional(),
3033
- USER_ID: z27.string().trim().min(1).max(256).default("admin"),
3034
- AGENTKNIGHT_MACHINE_NAME: z27.string().trim().min(1).max(120).optional(),
3035
- AGENTKNIGHT_HOME: z27.string().trim().min(1).optional(),
3036
- AGENTKNIGHT_WORKSPACE_ROOT: z27.string().trim().min(1).optional(),
3037
- AGENTKNIGHT_CODING_AGENT: z27.enum(["managed", "copilot", "pi", "acp"]).default("managed"),
3118
+ var EnvironmentSchema = z28.object({
3119
+ RELAY_URL: z28.url(),
3120
+ RELAY_TOKEN: z28.string().min(24).optional(),
3121
+ RELAY_AUTH: z28.enum(["token", "microsoft"]).optional(),
3122
+ USER_ID: z28.string().trim().min(1).max(256).default("admin"),
3123
+ AGENTKNIGHT_MACHINE_NAME: z28.string().trim().min(1).max(120).optional(),
3124
+ AGENTKNIGHT_HOME: z28.string().trim().min(1).optional(),
3125
+ AGENTKNIGHT_WORKSPACE_ROOT: z28.string().trim().min(1).optional(),
3126
+ AGENTKNIGHT_CODING_AGENT: z28.enum(["managed", "copilot", "pi", "acp"]).default("managed"),
3038
3127
  AGENTKNIGHT_GROUP_CHAT_ENABLED: EnabledBooleanStringSchema,
3039
3128
  AGENTKNIGHT_PEER_CHAT_ENABLED: EnabledBooleanStringSchema,
3040
3129
  PI_CODING_AGENT_DIR: OptionalPathSchema,
3041
3130
  AGENTKNIGHT_ACP_COMMAND: OptionalPathSchema,
3042
3131
  AGENTKNIGHT_ACP_ARGS: AcpArgumentsSchema,
3043
- SESSION_REFRESH_INTERVAL_MS: z27.coerce.number().int().min(5e3).max(36e5).default(3e4),
3044
- HEARTBEAT_INTERVAL_MS: z27.coerce.number().int().min(5e3).max(12e4).default(15e3),
3045
- LOG_LEVEL: z27.enum(["fatal", "error", "warn", "info", "debug", "trace", "silent"]).default("info"),
3132
+ SESSION_REFRESH_INTERVAL_MS: z28.coerce.number().int().min(5e3).max(36e5).default(3e4),
3133
+ HEARTBEAT_INTERVAL_MS: z28.coerce.number().int().min(5e3).max(12e4).default(15e3),
3134
+ LOG_LEVEL: z28.enum(["fatal", "error", "warn", "info", "debug", "trace", "silent"]).default("info"),
3046
3135
  SHOW_PAIRING_QR: BooleanStringSchema,
3047
3136
  PAIRING_PAGE_ENABLED: EnabledBooleanStringSchema,
3048
- PAIRING_PAGE_PORT: z27.coerce.number().int().min(1024).max(65535).default(defaultPairingPagePort),
3137
+ PAIRING_PAGE_PORT: z28.coerce.number().int().min(1024).max(65535).default(defaultPairingPagePort),
3049
3138
  PC_AGENT_EXIT_AFTER_SNAPSHOT: BooleanStringSchema,
3050
3139
  SNAPSHOT_SUPPRESSION_ENABLED: EnabledBooleanStringSchema,
3051
3140
  TIMELINE_COMPRESSION_ENABLED: BooleanStringSchema,
3052
3141
  TIMELINE_INCREMENTAL_ENABLED: EnabledBooleanStringSchema,
3053
- SECURE_MESSAGE_PACKET_BUDGET: z27.coerce.number().int().min(2048).max(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH).default(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH)
3142
+ SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE: BooleanStringSchema,
3143
+ SESSION_IMAGES_STORAGE_ACCOUNT: SessionImagesConfigSchema.shape.storageAccount.optional(),
3144
+ SESSION_IMAGES_STORAGE_CONTAINER: SessionImagesConfigSchema.shape.storageContainer.optional(),
3145
+ SECURE_MESSAGE_PACKET_BUDGET: z28.coerce.number().int().min(2048).max(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH).default(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH)
3054
3146
  }).superRefine((value, context) => {
3147
+ if (value.SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE) {
3148
+ if (value.SESSION_IMAGES_STORAGE_ACCOUNT === void 0) {
3149
+ context.addIssue({
3150
+ code: "custom",
3151
+ path: ["SESSION_IMAGES_STORAGE_ACCOUNT"],
3152
+ message: "Session images require an independently configured Azure storage account"
3153
+ });
3154
+ }
3155
+ if (!SessionImageRelayUrlSchema.safeParse(value.RELAY_URL).success) {
3156
+ context.addIssue({
3157
+ code: "custom",
3158
+ path: ["RELAY_URL"],
3159
+ message: "Session images require an HTTPS Relay origin without a path, credentials, query or fragment"
3160
+ });
3161
+ }
3162
+ } else if (value.SESSION_IMAGES_STORAGE_ACCOUNT !== void 0 || value.SESSION_IMAGES_STORAGE_CONTAINER !== void 0) {
3163
+ context.addIssue({
3164
+ code: "custom",
3165
+ path: ["SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE"],
3166
+ message: "Session images require explicit consent to storage that is NOT end-to-end encrypted"
3167
+ });
3168
+ }
3055
3169
  if (value.RELAY_AUTH === "token" && value.RELAY_TOKEN === void 0) {
3056
3170
  context.addIssue({ code: "custom", path: ["RELAY_TOKEN"], message: "Token authentication requires RELAY_TOKEN" });
3057
3171
  }
@@ -3101,8 +3215,8 @@ function loadConfig(environment = process.env, options = {}) {
3101
3215
  }
3102
3216
  return {
3103
3217
  ...settings2,
3104
- relayToken: z27.string().min(32).max(4096).parse(options.relayCredential.token),
3105
- userId: z27.string().min(1).max(256).parse(options.relayCredential.user.userId)
3218
+ relayToken: z28.string().min(32).max(4096).parse(options.relayCredential.token),
3219
+ userId: z28.string().min(1).max(256).parse(options.relayCredential.user.userId)
3106
3220
  };
3107
3221
  }
3108
3222
  function loadStartupConfig(environment = process.env, options = {}) {
@@ -3130,7 +3244,14 @@ function loadStartupConfig(environment = process.env, options = {}) {
3130
3244
  snapshotSuppressionEnabled: parsed.SNAPSHOT_SUPPRESSION_ENABLED,
3131
3245
  timelineCompressionEnabled: parsed.TIMELINE_COMPRESSION_ENABLED,
3132
3246
  timelineIncrementalEnabled: parsed.TIMELINE_INCREMENTAL_ENABLED,
3133
- secureMessagePacketBudget: parsed.SECURE_MESSAGE_PACKET_BUDGET
3247
+ secureMessagePacketBudget: parsed.SECURE_MESSAGE_PACKET_BUDGET,
3248
+ ...parsed.SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE ? {
3249
+ sessionImages: SessionImagesConfigSchema.parse({
3250
+ allowUnencryptedStorage: true,
3251
+ storageAccount: parsed.SESSION_IMAGES_STORAGE_ACCOUNT,
3252
+ storageContainer: parsed.SESSION_IMAGES_STORAGE_CONTAINER ?? "session-images"
3253
+ })
3254
+ } : {}
3134
3255
  };
3135
3256
  }
3136
3257
 
@@ -4200,7 +4321,7 @@ import { createHash as createHash3, randomBytes as randomBytes2, timingSafeEqual
4200
4321
  import { createHash as createHash2 } from "node:crypto";
4201
4322
  import { platform } from "node:os";
4202
4323
  import { brotliCompressSync, brotliDecompressSync } from "node:zlib";
4203
- import { z as z28 } from "zod";
4324
+ import { z as z29 } from "zod";
4204
4325
  var STORE_MESSAGES = {
4205
4326
  unavailable: "Unlock your operating system credential store and restart AgentKnight. No file-based credential fallback is available.",
4206
4327
  invalid: "The saved Relay credential is invalid. Recover it in your operating system credential manager before signing in.",
@@ -4233,30 +4354,30 @@ function normalizeRelayOrigin(value) {
4233
4354
  throw new RelayCredentialStoreError("address");
4234
4355
  }
4235
4356
  }
4236
- var ConfirmationSchema = z28.discriminatedUnion("status", [
4237
- z28.object({
4238
- status: z28.literal("pending"),
4239
- confirmBy: z28.number().int().positive(),
4357
+ var ConfirmationSchema = z29.discriminatedUnion("status", [
4358
+ z29.object({
4359
+ status: z29.literal("pending"),
4360
+ confirmBy: z29.number().int().positive(),
4240
4361
  enrollmentId: PcEnrollmentIdSchema,
4241
4362
  verifier: PcEnrollmentVerifierRequestSchema.shape.verifier
4242
4363
  }).strict(),
4243
- z28.object({
4244
- status: z28.literal("confirmed"),
4245
- confirmBy: z28.number().int().positive()
4364
+ z29.object({
4365
+ status: z29.literal("confirmed"),
4366
+ confirmBy: z29.number().int().positive()
4246
4367
  }).strict()
4247
4368
  ]);
4248
- var RelayCredentialSchema = z28.object({
4249
- version: z28.literal(1),
4250
- relayUrl: z28.string().max(2048),
4369
+ var RelayCredentialSchema = z29.object({
4370
+ version: z29.literal(1),
4371
+ relayUrl: z29.string().max(2048),
4251
4372
  machineId: PcEnrollmentStartRequestSchema.shape.machineId,
4252
- token: z28.string().min(32).max(4096),
4253
- tokenId: z28.string().min(1).max(256),
4254
- grantId: z28.uuid(),
4373
+ token: z29.string().min(32).max(4096),
4374
+ tokenId: z29.string().min(1).max(256),
4375
+ grantId: z29.uuid(),
4255
4376
  user: AuthUserSchema,
4256
4377
  confirmation: ConfirmationSchema
4257
4378
  }).strict();
4258
- var SlotsSchema = z28.object({
4259
- version: z28.literal(1),
4379
+ var SlotsSchema = z29.object({
4380
+ version: z29.literal(1),
4260
4381
  pending: RelayCredentialSchema.optional(),
4261
4382
  confirmed: RelayCredentialSchema.optional()
4262
4383
  }).strict();
@@ -5142,7 +5263,7 @@ import { mkdtemp, rm as rm2 } from "node:fs/promises";
5142
5263
  import { createConnection, createServer as createServer2 } from "node:net";
5143
5264
  import { tmpdir } from "node:os";
5144
5265
  import { join as join4, resolve as resolve3 } from "node:path";
5145
- import { z as z30 } from "zod";
5266
+ import { z as z31 } from "zod";
5146
5267
  import { DataDirectoryLease } from "@agentknight/sdk/runtime";
5147
5268
  import {
5148
5269
  PEER_CHAT_TIMEOUT_MS,
@@ -5154,16 +5275,16 @@ import {
5154
5275
  import { randomUUID } from "node:crypto";
5155
5276
  import { mkdir as mkdir2, readFile as readFile2, rename, rm, writeFile as writeFile2 } from "node:fs/promises";
5156
5277
  import { dirname as dirname2, join as join3 } from "node:path";
5157
- import { z as z29 } from "zod";
5158
- var UpgradeStateSchema = z29.object({
5159
- id: z29.uuid(),
5160
- phase: z29.enum(["preparing", "ready", "waiting-idle", "switching", "verifying", "succeeded", "rolled-back", "failed"]),
5161
- fromVersion: z29.string(),
5162
- toVersion: z29.string(),
5163
- updatedAt: z29.iso.datetime(),
5164
- error: z29.string().optional()
5278
+ import { z as z30 } from "zod";
5279
+ var UpgradeStateSchema = z30.object({
5280
+ id: z30.uuid(),
5281
+ phase: z30.enum(["preparing", "ready", "waiting-idle", "switching", "verifying", "succeeded", "rolled-back", "failed"]),
5282
+ fromVersion: z30.string(),
5283
+ toVersion: z30.string(),
5284
+ updatedAt: z30.iso.datetime(),
5285
+ error: z30.string().optional()
5165
5286
  });
5166
- var UpgradeSuccessSchema = z29.object({ version: z29.string(), upgradedAt: z29.iso.datetime() });
5287
+ var UpgradeSuccessSchema = z30.object({ version: z30.string(), upgradedAt: z30.iso.datetime() });
5167
5288
  async function readOptionalJson(path) {
5168
5289
  try {
5169
5290
  return JSON.parse(await readFile2(path, "utf8"));
@@ -5193,39 +5314,39 @@ async function readLastUpgrade(directory) {
5193
5314
  }
5194
5315
 
5195
5316
  // src/runtime.ts
5196
- var RuntimeDescriptorSchema = z30.object({
5197
- pid: z30.number().int().positive(),
5198
- instanceId: z30.uuid(),
5199
- endpoint: z30.string().min(1),
5200
- token: z30.string().min(32),
5201
- upgradeId: z30.uuid().optional()
5317
+ var RuntimeDescriptorSchema = z31.object({
5318
+ pid: z31.number().int().positive(),
5319
+ instanceId: z31.uuid(),
5320
+ endpoint: z31.string().min(1),
5321
+ token: z31.string().min(32),
5322
+ upgradeId: z31.uuid().optional()
5202
5323
  });
5203
- var RuntimeStatusSchema = z30.object({
5204
- version: z30.string().min(1),
5205
- pid: z30.number().int().positive(),
5206
- instanceId: z30.uuid(),
5207
- ready: z30.boolean(),
5208
- busy: z30.boolean(),
5209
- relayUrl: z30.string().url(),
5210
- identityHash: z30.string().min(1),
5211
- configPath: z30.string().optional(),
5212
- configHash: z30.string().optional(),
5213
- executable: z30.string().min(1),
5214
- cliPath: z30.string().min(1),
5215
- cwd: z30.string().min(1),
5216
- args: z30.array(z30.string()),
5217
- canRestart: z30.boolean().default(false),
5218
- restartEnvironment: z30.record(z30.string(), z30.string()).default({}),
5219
- upgradeId: z30.uuid().optional(),
5220
- stopping: z30.boolean().optional()
5324
+ var RuntimeStatusSchema = z31.object({
5325
+ version: z31.string().min(1),
5326
+ pid: z31.number().int().positive(),
5327
+ instanceId: z31.uuid(),
5328
+ ready: z31.boolean(),
5329
+ busy: z31.boolean(),
5330
+ relayUrl: z31.string().url(),
5331
+ identityHash: z31.string().min(1),
5332
+ configPath: z31.string().optional(),
5333
+ configHash: z31.string().optional(),
5334
+ executable: z31.string().min(1),
5335
+ cliPath: z31.string().min(1),
5336
+ cwd: z31.string().min(1),
5337
+ args: z31.array(z31.string()),
5338
+ canRestart: z31.boolean().default(false),
5339
+ restartEnvironment: z31.record(z31.string(), z31.string()).default({}),
5340
+ upgradeId: z31.uuid().optional(),
5341
+ stopping: z31.boolean().optional()
5221
5342
  });
5222
- var RequestSchema = z30.discriminatedUnion("command", [
5223
- z30.object({ token: z30.string(), command: z30.enum(["status", "prepare", "cancel", "stop"]) }),
5224
- z30.object({ token: z30.string(), command: z30.literal("peer-chat"), payload: PeerChatRequestSchema2 })
5343
+ var RequestSchema = z31.discriminatedUnion("command", [
5344
+ z31.object({ token: z31.string(), command: z31.enum(["status", "prepare", "cancel", "stop"]) }),
5345
+ z31.object({ token: z31.string(), command: z31.literal("peer-chat"), payload: PeerChatRequestSchema2 })
5225
5346
  ]);
5226
- var ResponseSchema = z30.discriminatedUnion("ok", [
5227
- z30.object({ ok: z30.literal(true), status: RuntimeStatusSchema.optional(), reply: PeerChatResultSchema.optional() }),
5228
- z30.object({ ok: z30.literal(false), error: z30.string() })
5347
+ var ResponseSchema = z31.discriminatedUnion("ok", [
5348
+ z31.object({ ok: z31.literal(true), status: RuntimeStatusSchema.optional(), reply: PeerChatResultSchema.optional() }),
5349
+ z31.object({ ok: z31.literal(false), error: z31.string() })
5229
5350
  ]);
5230
5351
  var MAX_MESSAGE_BYTES = 32 * 1024;
5231
5352
  var MAX_PEER_REQUEST_BYTES = 128 * 1024;
@@ -5488,7 +5609,7 @@ import { randomUUID as randomUUID2 } from "node:crypto";
5488
5609
  import { copyFile as copyFile2, mkdir as mkdir5, open as open2, realpath as realpath2, rm as rm6 } from "node:fs/promises";
5489
5610
  import { dirname as dirname5, join as join9, resolve as resolve8 } from "node:path";
5490
5611
  import { fileURLToPath as fileURLToPath2 } from "node:url";
5491
- import { z as z34 } from "zod";
5612
+ import { z as z35 } from "zod";
5492
5613
 
5493
5614
  // src/upgrade-packages.ts
5494
5615
  import { execFile as execFile2, spawn as spawn2 } from "node:child_process";
@@ -5502,7 +5623,7 @@ import { createHash as createHash5 } from "node:crypto";
5502
5623
  import { open } from "node:fs/promises";
5503
5624
  import { join as join5 } from "node:path";
5504
5625
  import { promisify } from "node:util";
5505
- import { z as z31 } from "zod";
5626
+ import { z as z32 } from "zod";
5506
5627
 
5507
5628
  // src/restart-environment.ts
5508
5629
  import { resolve as resolve4 } from "node:path";
@@ -5540,10 +5661,10 @@ function restartEnvironment(effective, persisted, dataDirectory) {
5540
5661
 
5541
5662
  // src/upgrade-supervisor.ts
5542
5663
  var execute = promisify(execFile);
5543
- var SupervisorSchema = z31.discriminatedUnion("kind", [
5544
- z31.object({ kind: z31.literal("process") }),
5545
- z31.object({ kind: z31.literal("windows-task"), name: z31.string(), path: z31.string(), definitionHash: z31.string() }),
5546
- z31.object({ kind: z31.literal("launchd"), domain: z31.string(), label: z31.string(), plist: z31.string() })
5664
+ var SupervisorSchema = z32.discriminatedUnion("kind", [
5665
+ z32.object({ kind: z32.literal("process") }),
5666
+ z32.object({ kind: z32.literal("windows-task"), name: z32.string(), path: z32.string(), definitionHash: z32.string() }),
5667
+ z32.object({ kind: z32.literal("launchd"), domain: z32.string(), label: z32.string(), plist: z32.string() })
5547
5668
  ]);
5548
5669
  function globalPackageDirectory(prefix) {
5549
5670
  return process.platform === "win32" ? join5(prefix, "node_modules", "@agentknight", "client") : join5(prefix, "lib", "node_modules", "@agentknight", "client");
@@ -5571,7 +5692,7 @@ async function assertInstallationIdle(prefix, allowedPid) {
5571
5692
  } | ForEach-Object { [int]$_.ProcessId });
5572
5693
  ConvertTo-Json -InputObject $ids -Compress
5573
5694
  `);
5574
- pids = z31.array(z31.number().int().positive()).parse(JSON.parse(result));
5695
+ pids = z32.array(z32.number().int().positive()).parse(JSON.parse(result));
5575
5696
  } else {
5576
5697
  const result = await execute("ps", ["-eo", "pid=,args="], { timeout: 1e4 });
5577
5698
  pids = result.stdout.split("\n").flatMap((line) => {
@@ -5607,7 +5728,7 @@ async function detectSupervisor(runtime) {
5607
5728
  if($matches.Count -gt 1) { throw 'Multiple scheduled tasks match this Agent. Refusing to choose.' };
5608
5729
  if($matches.Count -eq 1) { $matches[0] | ConvertTo-Json -Compress } else { 'null' }
5609
5730
  `);
5610
- const task = z31.object({ name: z31.string(), path: z31.string(), xml: z31.string() }).nullable().parse(JSON.parse(result));
5731
+ const task = z32.object({ name: z32.string(), path: z32.string(), xml: z32.string() }).nullable().parse(JSON.parse(result));
5611
5732
  return task === null ? { kind: "process" } : {
5612
5733
  kind: "windows-task",
5613
5734
  name: task.name,
@@ -6127,13 +6248,13 @@ async function prepareUpgradePackages(options) {
6127
6248
  import { mkdir as mkdir4, readFile as readFile4, rm as rm5, stat } from "node:fs/promises";
6128
6249
  import { createHash as createHash7 } from "node:crypto";
6129
6250
  import { join as join8, resolve as resolve7 } from "node:path";
6130
- import { z as z33 } from "zod";
6251
+ import { z as z34 } from "zod";
6131
6252
 
6132
6253
  // src/upgrade-startup.ts
6133
6254
  import { rename as rename2, rm as rm4 } from "node:fs/promises";
6134
6255
  import { basename, dirname as dirname4, join as join7, resolve as resolve6 } from "node:path";
6135
- import { z as z32 } from "zod";
6136
- var PermitSchema = z32.object({ id: z32.uuid(), version: z32.string(), cliPath: z32.string() });
6256
+ import { z as z33 } from "zod";
6257
+ var PermitSchema = z33.object({ id: z33.uuid(), version: z33.string(), cliPath: z33.string() });
6137
6258
  function globalUpgradeLockPath(cliPath) {
6138
6259
  const packageDirectory = dirname4(dirname4(cliPath));
6139
6260
  const scope = dirname4(packageDirectory);
@@ -6147,14 +6268,14 @@ async function claimUpgradeStartup(directory, version, cliPath) {
6147
6268
  const globalPath = globalUpgradeLockPath(cliPath);
6148
6269
  const globalLock = globalPath === void 0 ? void 0 : await readOptionalJson(globalPath);
6149
6270
  if (globalLock !== void 0) {
6150
- const globalOwner = z32.object({ id: z32.uuid(), dataDirectory: z32.string() }).parse(globalLock);
6271
+ const globalOwner = z33.object({ id: z33.uuid(), dataDirectory: z33.string() }).parse(globalLock);
6151
6272
  if (lock === void 0 || resolve6(globalOwner.dataDirectory) !== resolve6(directory)) {
6152
6273
  throw new Error("This global installation is being upgraded for another data directory. Wait for that upgrade to finish.");
6153
6274
  }
6154
6275
  }
6155
6276
  if (lock === void 0) return void 0;
6156
- const owner = z32.object({ id: z32.uuid() }).parse(lock);
6157
- if (globalLock !== void 0 && z32.object({ id: z32.uuid() }).parse(globalLock).id !== owner.id) {
6277
+ const owner = z33.object({ id: z33.uuid() }).parse(lock);
6278
+ if (globalLock !== void 0 && z33.object({ id: z33.uuid() }).parse(globalLock).id !== owner.id) {
6158
6279
  throw new Error("Local and global upgrade ownership disagree; inspect the interrupted upgrade before starting.");
6159
6280
  }
6160
6281
  const path = join7(directory, "run", "upgrade-start.json");
@@ -6171,24 +6292,24 @@ async function claimUpgradeStartup(directory, version, cliPath) {
6171
6292
  }
6172
6293
 
6173
6294
  // src/upgrade-job.ts
6174
- var PreparedPackagesSchema = z33.object({
6175
- targetArchive: z33.string(),
6176
- rollbackArchive: z33.string(),
6177
- cacheDirectory: z33.string(),
6178
- registry: z33.string().url()
6295
+ var PreparedPackagesSchema = z34.object({
6296
+ targetArchive: z34.string(),
6297
+ rollbackArchive: z34.string(),
6298
+ cacheDirectory: z34.string(),
6299
+ registry: z34.string().url()
6179
6300
  });
6180
- var UpgradePlanSchema = z33.object({
6181
- id: z33.uuid(),
6182
- dataDirectory: z33.string(),
6183
- directory: z33.string(),
6184
- prefix: z33.string(),
6185
- currentVersion: z33.string(),
6186
- targetVersion: z33.string(),
6301
+ var UpgradePlanSchema = z34.object({
6302
+ id: z34.uuid(),
6303
+ dataDirectory: z34.string(),
6304
+ directory: z34.string(),
6305
+ prefix: z34.string(),
6306
+ currentVersion: z34.string(),
6307
+ targetVersion: z34.string(),
6187
6308
  packages: PreparedPackagesSchema,
6188
6309
  runtime: RuntimeStatusSchema.optional(),
6189
6310
  supervisor: SupervisorSchema,
6190
- taskName: z33.string(),
6191
- configHash: z33.string().optional()
6311
+ taskName: z34.string(),
6312
+ configHash: z34.string().optional()
6192
6313
  });
6193
6314
  async function fileHash(path) {
6194
6315
  return createHash7("sha256").update(await readFile4(path)).digest("hex");
@@ -6271,7 +6392,7 @@ async function upgrade(options) {
6271
6392
  const lockPath = join9(root, "upgrade.lock");
6272
6393
  const existing = await readOptionalJson(lockPath);
6273
6394
  if (existing !== void 0) {
6274
- const owner = z34.object({ pid: z34.number().int().positive() }).parse(existing);
6395
+ const owner = z35.object({ pid: z35.number().int().positive() }).parse(existing);
6275
6396
  if (processExists(owner.pid)) throw new Error("Another upgrade is already running. Use agentknight status.");
6276
6397
  throw new Error(`An interrupted upgrade needs review. Read ${join9(root, "status.json")} before removing ${lockPath}.`);
6277
6398
  }
@@ -6569,17 +6690,17 @@ import { initialize, supportsAgentSelection } from "@agentknight/sdk";
6569
6690
 
6570
6691
  // src/chat-settings.ts
6571
6692
  import { join as join11 } from "node:path";
6572
- import { z as z35 } from "zod";
6693
+ import { z as z36 } from "zod";
6573
6694
  var settings = {
6574
6695
  groupChatEnabled: {
6575
6696
  file: "group-chat-settings.json",
6576
6697
  label: "Group chat",
6577
- schema: z35.object({ groupChatEnabled: z35.boolean() }).strict().transform((value) => value.groupChatEnabled)
6698
+ schema: z36.object({ groupChatEnabled: z36.boolean() }).strict().transform((value) => value.groupChatEnabled)
6578
6699
  },
6579
6700
  peerChatEnabled: {
6580
6701
  file: "peer-chat-settings.json",
6581
6702
  label: "Peer chat",
6582
- schema: z35.object({ peerChatEnabled: z35.boolean() }).strict().transform((value) => value.peerChatEnabled)
6703
+ schema: z36.object({ peerChatEnabled: z36.boolean() }).strict().transform((value) => value.peerChatEnabled)
6583
6704
  }
6584
6705
  };
6585
6706
  var ChatSettings = class _ChatSettings {
@@ -6627,14 +6748,14 @@ import { randomUUID as randomUUID3 } from "node:crypto";
6627
6748
  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";
6628
6749
  import { homedir as homedir3, hostname } from "node:os";
6629
6750
  import { dirname as dirname6, join as join12, resolve as resolve9 } from "node:path";
6630
- import { z as z36 } from "zod";
6751
+ import { z as z37 } from "zod";
6631
6752
  import { DeviceIdentitySchema } from "@agentknight/sdk";
6632
6753
  import { DeviceIdentitySchema as DeviceIdentitySchema2 } from "@agentknight/sdk";
6633
- var LegacyDeviceIdentitySchema = z36.object({
6634
- schemaVersion: z36.literal(1),
6635
- machineId: z36.uuid(),
6636
- machineName: z36.string().trim().min(1).max(120),
6637
- createdAt: z36.iso.datetime({ offset: true })
6754
+ var LegacyDeviceIdentitySchema = z37.object({
6755
+ schemaVersion: z37.literal(1),
6756
+ machineId: z37.uuid(),
6757
+ machineName: z37.string().trim().min(1).max(120),
6758
+ createdAt: z37.iso.datetime({ offset: true })
6638
6759
  });
6639
6760
  function resolveMachineName(environment = process.env, fallback = hostname()) {
6640
6761
  const computerName = environment.COMPUTERNAME?.trim();
@@ -6655,7 +6776,7 @@ async function readStableDeviceId(path) {
6655
6776
  const info = await optionalStat(path);
6656
6777
  if (info === void 0) return void 0;
6657
6778
  if (!info.isFile()) throw new Error(`Device ID must be a regular file, not a link: ${path}`);
6658
- const parsed = z36.uuid().safeParse((await readFile5(path, "utf8")).trim());
6779
+ const parsed = z37.uuid().safeParse((await readFile5(path, "utf8")).trim());
6659
6780
  if (!parsed.success) throw new Error(`Invalid device ID in ${path}`, { cause: parsed.error });
6660
6781
  return parsed.data;
6661
6782
  }
@@ -6718,7 +6839,7 @@ async function loadOrCreateDeviceIdentity(dataDirectory, currentMachineName = re
6718
6839
  await requireDirectory(dataDirectory);
6719
6840
  let existing;
6720
6841
  try {
6721
- existing = z36.union([DeviceIdentitySchema, LegacyDeviceIdentitySchema]).parse(
6842
+ existing = z37.union([DeviceIdentitySchema, LegacyDeviceIdentitySchema]).parse(
6722
6843
  JSON.parse(await readFile5(path, "utf8"))
6723
6844
  );
6724
6845
  } catch (error) {