@agentknight/client 0.9.38 → 0.9.40

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,113 @@ 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
+ environmentPending: z18.literal(true).optional(),
1734
+ agentName: z18.string().trim().min(1).max(260).optional(),
1735
+ configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
1658
1736
  }),
1659
- z17.object({
1660
- ok: z17.literal(false),
1737
+ z18.object({
1738
+ ok: z18.literal(false),
1661
1739
  requestId: IdSchema,
1662
1740
  machineId: IdSchema,
1663
1741
  sessionId: IdSchema.optional(),
1664
1742
  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(),
1743
+ failureStage: z18.enum(["models", "configuration", "workspaces"]).optional(),
1744
+ models: z18.array(CopilotModelOptionSchema).min(1).optional(),
1745
+ agentModes: z18.array(SessionAgentModeSchema).min(1).optional(),
1746
+ reasoningEffortConfigurationSupported: z18.literal(true).optional(),
1747
+ fileAttachmentsSupported: z18.boolean().optional(),
1670
1748
  currentModelId: IdSchema.optional(),
1671
1749
  currentAgentMode: SessionAgentModeSchema.optional(),
1672
1750
  currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
1673
- agentName: z17.string().trim().min(1).max(260).optional(),
1674
- configOptions: z17.array(AgentConfigurationOptionSchema).max(32).optional()
1751
+ agentName: z18.string().trim().min(1).max(260).optional(),
1752
+ configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
1675
1753
  })
1676
1754
  ]);
1677
- var SessionCreateRequestSchema = z17.object({
1755
+ var SessionCreateRequestSchema = z18.object({
1678
1756
  requestId: IdSchema,
1679
1757
  machineId: IdSchema,
1680
1758
  workspaceId: IdSchema,
1681
1759
  modelId: IdSchema,
1682
1760
  agentMode: SessionAgentModeSchema,
1683
1761
  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()
1762
+ worktree: z18.object({
1763
+ branchName: z18.string().trim().min(1).max(120).optional(),
1764
+ baseBranch: z18.string().trim().min(1).max(1024).optional()
1687
1765
  }).strict().optional()
1688
1766
  });
1689
- var SessionCreateResultSchema = z17.discriminatedUnion("ok", [
1690
- z17.object({
1691
- ok: z17.literal(true),
1767
+ var SessionCreateResultSchema = z18.discriminatedUnion("ok", [
1768
+ z18.object({
1769
+ ok: z18.literal(true),
1692
1770
  requestId: IdSchema,
1693
1771
  machineId: IdSchema,
1694
1772
  session: SessionSummarySchema,
@@ -1696,34 +1774,34 @@ var SessionCreateResultSchema = z17.discriminatedUnion("ok", [
1696
1774
  agentMode: SessionAgentModeSchema,
1697
1775
  reasoningEffort: SessionReasoningEffortSchema.optional()
1698
1776
  }),
1699
- z17.object({
1700
- ok: z17.literal(false),
1777
+ z18.object({
1778
+ ok: z18.literal(false),
1701
1779
  requestId: IdSchema,
1702
1780
  machineId: IdSchema,
1703
1781
  error: ProtocolFailureSchema
1704
1782
  })
1705
1783
  ]);
1706
- var SessionDeleteRequestSchema = z17.object({
1784
+ var SessionDeleteRequestSchema = z18.object({
1707
1785
  requestId: IdSchema,
1708
1786
  machineId: IdSchema,
1709
1787
  sessionId: IdSchema
1710
1788
  }).strict();
1711
- var SessionDeleteResultSchema = z17.discriminatedUnion("ok", [
1712
- z17.object({
1713
- ok: z17.literal(true),
1789
+ var SessionDeleteResultSchema = z18.discriminatedUnion("ok", [
1790
+ z18.object({
1791
+ ok: z18.literal(true),
1714
1792
  requestId: IdSchema,
1715
1793
  machineId: IdSchema,
1716
1794
  sessionId: IdSchema
1717
1795
  }).strict(),
1718
- z17.object({
1719
- ok: z17.literal(false),
1796
+ z18.object({
1797
+ ok: z18.literal(false),
1720
1798
  requestId: IdSchema,
1721
1799
  machineId: IdSchema,
1722
1800
  sessionId: IdSchema,
1723
1801
  error: ProtocolFailureSchema
1724
1802
  }).strict()
1725
1803
  ]);
1726
- var SessionConfigureRequestSchema = z17.object({
1804
+ var SessionConfigureRequestSchema = z18.object({
1727
1805
  requestId: IdSchema,
1728
1806
  machineId: IdSchema,
1729
1807
  sessionId: IdSchema,
@@ -1732,59 +1810,59 @@ var SessionConfigureRequestSchema = z17.object({
1732
1810
  reasoningEffort: SessionReasoningEffortSchema.optional(),
1733
1811
  configOption: AgentConfigurationChangeSchema.optional()
1734
1812
  }).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),
1813
+ var SessionConfigureResultSchema = z18.discriminatedUnion("ok", [
1814
+ z18.object({
1815
+ ok: z18.literal(true),
1738
1816
  requestId: IdSchema,
1739
1817
  machineId: IdSchema,
1740
1818
  sessionId: IdSchema,
1741
1819
  modelId: IdSchema.optional(),
1742
1820
  agentMode: SessionAgentModeSchema,
1743
1821
  reasoningEffort: CurrentReasoningEffortSchema.optional(),
1744
- configOptions: z17.array(AgentConfigurationOptionSchema).max(32).optional()
1822
+ configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
1745
1823
  }),
1746
- z17.object({
1747
- ok: z17.literal(false),
1824
+ z18.object({
1825
+ ok: z18.literal(false),
1748
1826
  requestId: IdSchema,
1749
1827
  machineId: IdSchema,
1750
1828
  sessionId: IdSchema,
1751
1829
  error: ProtocolFailureSchema
1752
1830
  })
1753
1831
  ]);
1754
- var SessionRemoteActionSchema = z17.enum([
1832
+ var SessionRemoteActionSchema = z18.enum([
1755
1833
  "status",
1756
1834
  "enable",
1757
1835
  "disable"
1758
1836
  ]);
1759
- var SessionRemoteStateSchema = z17.enum([
1837
+ var SessionRemoteStateSchema = z18.enum([
1760
1838
  "off",
1761
1839
  "connecting",
1762
1840
  "active",
1763
1841
  "error"
1764
1842
  ]);
1765
- var SessionRemoteRequestSchema = z17.object({
1843
+ var SessionRemoteRequestSchema = z18.object({
1766
1844
  requestId: IdSchema,
1767
1845
  machineId: IdSchema,
1768
1846
  sessionId: IdSchema,
1769
1847
  action: SessionRemoteActionSchema
1770
1848
  });
1771
- var SessionRemoteStatusSchema = z17.object({
1849
+ var SessionRemoteStatusSchema = z18.object({
1772
1850
  state: SessionRemoteStateSchema,
1773
1851
  attachedSessionId: IdSchema.optional(),
1774
- url: z17.url().max(32768).optional(),
1775
- steerable: z17.boolean(),
1852
+ url: z18.url().max(32768).optional(),
1853
+ steerable: z18.boolean(),
1776
1854
  error: ProtocolFailureSchema.optional()
1777
1855
  });
1778
- var SessionRemoteResultSchema = z17.discriminatedUnion("ok", [
1779
- z17.object({
1780
- ok: z17.literal(true),
1856
+ var SessionRemoteResultSchema = z18.discriminatedUnion("ok", [
1857
+ z18.object({
1858
+ ok: z18.literal(true),
1781
1859
  requestId: IdSchema,
1782
1860
  machineId: IdSchema,
1783
1861
  sessionId: IdSchema,
1784
1862
  status: SessionRemoteStatusSchema
1785
1863
  }),
1786
- z17.object({
1787
- ok: z17.literal(false),
1864
+ z18.object({
1865
+ ok: z18.literal(false),
1788
1866
  requestId: IdSchema,
1789
1867
  machineId: IdSchema,
1790
1868
  sessionId: IdSchema,
@@ -1793,42 +1871,42 @@ var SessionRemoteResultSchema = z17.discriminatedUnion("ok", [
1793
1871
  ]);
1794
1872
 
1795
1873
  // ../../shared/protocol/dist/sessions/group-chat.js
1796
- import { z as z18 } from "zod";
1874
+ import { z as z19 } from "zod";
1797
1875
  var GROUP_CHAT_CREATE_OPERATION = "group-chat.create";
1798
1876
  var GROUP_CHAT_CREATE_VERSION = 1;
1799
1877
  var GROUP_CHAT_CREATE_CAPABILITY = sessionCommunicationOperationCapability(GROUP_CHAT_CREATE_OPERATION, GROUP_CHAT_CREATE_VERSION);
1800
- var GroupChatCreateDataSchema = z18.object({
1878
+ var GroupChatCreateDataSchema = z19.object({
1801
1879
  peerSessionId: IdSchema
1802
1880
  }).strict();
1803
- var GroupChatCreateResultDataSchema = z18.object({
1881
+ var GroupChatCreateResultDataSchema = z19.object({
1804
1882
  session: SessionSummarySchema.refine((session) => session.groupChat !== void 0, "Group creation must return a virtual group session")
1805
1883
  }).strict();
1806
1884
 
1807
1885
  // ../../shared/protocol/dist/sessions/prompts.js
1808
- import { z as z22 } from "zod";
1886
+ import { z as z23 } from "zod";
1809
1887
 
1810
1888
  // ../../shared/protocol/dist/conversation/attachments.js
1811
- import { z as z19 } from "zod";
1889
+ import { z as z20 } from "zod";
1812
1890
  var MAX_INLINE_IMAGE_BYTES = 3 * 1024 * 1024;
1813
1891
  var MAX_INLINE_HTML_BYTES = 512 * 1024;
1814
1892
  var MAX_PROMPT_FILE_BYTES = 1024 * 1024;
1815
- var InlineImageMimeTypeSchema = z19.enum([
1893
+ var InlineImageMimeTypeSchema = z20.enum([
1816
1894
  "image/gif",
1817
1895
  "image/jpeg",
1818
1896
  "image/png",
1819
1897
  "image/webp"
1820
1898
  ]);
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}$/);
1899
+ 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");
1900
+ var Sha256Schema = z20.string().regex(/^[a-f0-9]{64}$/);
1823
1901
  function decodedBase64ByteLength(value) {
1824
1902
  const padding = value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0;
1825
1903
  return value.length / 4 * 3 - padding;
1826
1904
  }
1827
- var PromptImageAttachmentSchema = z19.object({
1828
- name: z19.string().trim().min(1).max(255),
1829
- mimeType: z19.enum(["image/jpeg", "image/png", "image/webp"]),
1905
+ var PromptImageAttachmentSchema = z20.object({
1906
+ name: z20.string().trim().min(1).max(255),
1907
+ mimeType: z20.enum(["image/jpeg", "image/png", "image/webp"]),
1830
1908
  data: Base64DataSchema,
1831
- byteLength: z19.number().int().positive().max(MAX_INLINE_IMAGE_BYTES),
1909
+ byteLength: z20.number().int().positive().max(MAX_INLINE_IMAGE_BYTES),
1832
1910
  sha256: Sha256Schema
1833
1911
  }).strict().superRefine((attachment, context) => {
1834
1912
  if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
@@ -1839,11 +1917,11 @@ var PromptImageAttachmentSchema = z19.object({
1839
1917
  });
1840
1918
  }
1841
1919
  });
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!#$&^_.+-]+$/),
1920
+ var PromptFileAttachmentSchema = z20.object({
1921
+ name: z20.string().trim().min(1).max(255).regex(/^[^\\/\x00-\x1f\x7f]+$/).refine((name) => name !== "." && name !== "..", "Expected a filename"),
1922
+ mimeType: z20.string().max(256).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
1845
1923
  data: Base64DataSchema.max(Math.ceil(MAX_PROMPT_FILE_BYTES / 3) * 4),
1846
- byteLength: z19.number().int().positive().max(MAX_PROMPT_FILE_BYTES),
1924
+ byteLength: z20.number().int().positive().max(MAX_PROMPT_FILE_BYTES),
1847
1925
  sha256: Sha256Schema
1848
1926
  }).strict().superRefine((attachment, context) => {
1849
1927
  if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
@@ -1854,8 +1932,8 @@ var PromptFileAttachmentSchema = z19.object({
1854
1932
  });
1855
1933
  }
1856
1934
  });
1857
- var ConversationAttachmentSchema = z19.object({
1858
- kind: z19.enum([
1935
+ var ConversationAttachmentSchema = z20.object({
1936
+ kind: z20.enum([
1859
1937
  "file",
1860
1938
  "image",
1861
1939
  "html",
@@ -1863,13 +1941,13 @@ var ConversationAttachmentSchema = z19.object({
1863
1941
  "github-reference",
1864
1942
  "unknown"
1865
1943
  ]),
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(),
1944
+ name: z20.string().trim().min(1).max(1024),
1945
+ mimeType: z20.string().trim().min(1).max(256).optional(),
1946
+ uri: z20.string().trim().min(1).max(32768).optional(),
1869
1947
  data: Base64DataSchema.optional(),
1870
- byteLength: z19.number().int().positive().max(MAX_INLINE_IMAGE_BYTES).optional(),
1948
+ byteLength: z20.number().int().positive().max(MAX_INLINE_IMAGE_BYTES).optional(),
1871
1949
  sha256: Sha256Schema.optional(),
1872
- imageRef: z19.literal("sha256").optional()
1950
+ imageRef: z20.literal("sha256").optional()
1873
1951
  }).strict().superRefine((attachment, context) => {
1874
1952
  if (attachment.imageRef !== void 0) {
1875
1953
  if (attachment.kind !== "image" || attachment.data !== void 0 || attachment.sha256 === void 0 || attachment.byteLength === void 0 || !InlineImageMimeTypeSchema.safeParse(attachment.mimeType).success) {
@@ -1927,20 +2005,20 @@ var ConversationAttachmentSchema = z19.object({
1927
2005
  });
1928
2006
 
1929
2007
  // ../../shared/protocol/dist/conversation/timeline.js
1930
- import { z as z21 } from "zod";
2008
+ import { z as z22 } from "zod";
1931
2009
 
1932
2010
  // ../../shared/protocol/dist/conversation/conversation.js
1933
- import { z as z20 } from "zod";
2011
+ import { z as z21 } from "zod";
1934
2012
  var CONVERSATION_ACTIVITY_STEP_LIMIT = 1e3;
1935
2013
  var CONVERSATION_SOURCE_ID_LIMIT = 1e3;
1936
2014
  var ConversationItemBaseShape = {
1937
2015
  id: IdSchema,
1938
- revision: z20.number().int().positive(),
2016
+ revision: z21.number().int().positive(),
1939
2017
  turnId: IdSchema,
1940
2018
  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()
2019
+ sourceEventIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT),
2020
+ sourceMessageIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional(),
2021
+ sourceInteractionIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional()
1944
2022
  };
1945
2023
  var MAX_INLINE_IMAGE_MESSAGE_BYTES = 3 * 1024 * 1024;
1946
2024
  var MAX_INLINE_IMAGES_PER_MESSAGE = 4;
@@ -1948,67 +2026,67 @@ var ActivityStepTimeShape = {
1948
2026
  // First observed event time; completion updates must not move an existing call.
1949
2027
  timestamp: IsoDateSchema.optional()
1950
2028
  };
1951
- var ConversationToolStepSchema = z20.object({
2029
+ var ConversationToolStepSchema = z21.object({
1952
2030
  id: IdSchema,
1953
- kind: z20.literal("tool"),
1954
- name: z20.string().trim().min(1).max(256),
1955
- status: z20.enum(["running", "completed", "failed"]),
2031
+ kind: z21.literal("tool"),
2032
+ name: z21.string().trim().min(1).max(256),
2033
+ status: z21.enum(["running", "completed", "failed"]),
1956
2034
  ...ActivityStepTimeShape
1957
2035
  }).strict();
1958
- var ConversationSkillStepSchema = z20.object({
2036
+ var ConversationSkillStepSchema = z21.object({
1959
2037
  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(),
2038
+ kind: z21.literal("skill"),
2039
+ name: z21.string().trim().min(1).max(256),
2040
+ status: z21.literal("completed"),
2041
+ description: z21.string().trim().min(1).max(2048).optional(),
2042
+ source: z21.string().trim().min(1).max(256).optional(),
1965
2043
  ...ActivityStepTimeShape
1966
2044
  }).strict();
1967
- var ConversationSubagentStepSchema = z20.object({
2045
+ var ConversationSubagentStepSchema = z21.object({
1968
2046
  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(),
2047
+ kind: z21.literal("subagent"),
2048
+ name: z21.string().trim().min(1).max(256),
2049
+ status: z21.enum(["running", "completed", "failed"]),
2050
+ description: z21.string().trim().min(1).max(2048).optional(),
2051
+ model: z21.string().trim().min(1).max(256).optional(),
2052
+ durationMs: z21.number().int().nonnegative().optional(),
2053
+ resultSummary: z21.string().max(4096).optional(),
2054
+ error: z21.string().max(4096).optional(),
1977
2055
  ...ActivityStepTimeShape
1978
2056
  }).strict();
1979
- var ConversationPermissionStepSchema = z20.object({
2057
+ var ConversationPermissionStepSchema = z21.object({
1980
2058
  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(),
2059
+ kind: z21.literal("permission"),
2060
+ name: z21.string().trim().min(1).max(256),
2061
+ status: z21.enum(["running", "completed", "failed"]),
2062
+ description: z21.string().trim().min(1).max(2048).optional(),
2063
+ resultSummary: z21.string().max(4096).optional(),
2064
+ error: z21.string().max(4096).optional(),
1987
2065
  ...ActivityStepTimeShape
1988
2066
  }).strict();
1989
- var ConversationActivityStepSchema = z20.discriminatedUnion("kind", [
2067
+ var ConversationActivityStepSchema = z21.discriminatedUnion("kind", [
1990
2068
  ConversationToolStepSchema,
1991
2069
  ConversationSkillStepSchema,
1992
2070
  ConversationSubagentStepSchema,
1993
2071
  ConversationPermissionStepSchema
1994
2072
  ]);
1995
- var ConversationHumanMessageSchema = z20.object({
2073
+ var ConversationHumanMessageSchema = z21.object({
1996
2074
  ...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),
2075
+ kind: z21.literal("human-message"),
2076
+ actor: z21.literal("human"),
2077
+ content: z21.string().max(1e5),
2078
+ attachments: z21.array(ConversationAttachmentSchema).max(100),
2001
2079
  operationId: IdSchema.optional()
2002
2080
  }).strict();
2003
- var ConversationAssistantMessageSchema = z20.object({
2081
+ var ConversationAssistantMessageSchema = z21.object({
2004
2082
  ...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(),
2083
+ kind: z21.literal("assistant-message"),
2084
+ actor: z21.enum(["assistant", "subagent"]),
2085
+ content: z21.string().max(5e5),
2086
+ attachments: z21.array(ConversationAttachmentSchema).max(100).optional(),
2087
+ model: z21.string().trim().min(1).max(256).optional(),
2010
2088
  agentId: IdSchema.optional(),
2011
- final: z20.boolean()
2089
+ final: z21.boolean()
2012
2090
  }).strict().superRefine((message, context) => {
2013
2091
  const inlineImages = message.attachments?.filter((attachment) => attachment.kind === "image" && attachment.data !== void 0) ?? [];
2014
2092
  if (inlineImages.length > MAX_INLINE_IMAGES_PER_MESSAGE) {
@@ -2027,160 +2105,166 @@ var ConversationAssistantMessageSchema = z20.object({
2027
2105
  });
2028
2106
  }
2029
2107
  });
2030
- var ConversationActivityGroupSchema = z20.object({
2108
+ var ConversationActivityGroupSchema = z21.object({
2031
2109
  ...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)
2110
+ kind: z21.literal("activity-group"),
2111
+ actor: z21.enum(["assistant", "subagent"]),
2112
+ status: z21.enum(["running", "completed", "failed"]),
2113
+ steps: z21.array(ConversationActivityStepSchema).max(CONVERSATION_ACTIVITY_STEP_LIMIT)
2036
2114
  }).strict();
2037
- var ConversationNoticeSchema = z20.object({
2115
+ var ConversationNoticeSchema = z21.object({
2038
2116
  ...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()
2117
+ kind: z21.literal("notice"),
2118
+ actor: z21.enum(["system", "assistant", "subagent"]),
2119
+ severity: z21.enum(["info", "success", "warning", "error"]),
2120
+ title: z21.string().trim().min(1).max(256),
2121
+ content: z21.string().max(4096),
2122
+ presentation: z21.literal("compact").optional()
2045
2123
  }).strict();
2046
- var ConversationPlanTodoSchema = z20.object({
2124
+ var ConversationPlanTodoSchema = z21.object({
2047
2125
  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)
2126
+ title: z21.string().trim().min(1).max(1024),
2127
+ description: z21.string().max(4096).optional(),
2128
+ status: z21.string().trim().min(1).max(64),
2129
+ dependsOn: z21.array(IdSchema).max(100)
2052
2130
  }).strict();
2053
- var ConversationPlanUpdateSchema = z20.object({
2131
+ var ConversationPlanUpdateSchema = z21.object({
2054
2132
  ...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)
2133
+ kind: z21.literal("plan-update"),
2134
+ actor: z21.enum(["assistant", "subagent"]),
2135
+ operation: z21.enum(["created", "updated", "deleted"]),
2136
+ content: z21.string().max(1e5),
2137
+ todos: z21.array(ConversationPlanTodoSchema).max(1e3)
2060
2138
  }).strict();
2061
- var ConversationItemSchema = z20.discriminatedUnion("kind", [
2139
+ var ConversationItemSchema = z21.discriminatedUnion("kind", [
2062
2140
  ConversationHumanMessageSchema,
2063
2141
  ConversationAssistantMessageSchema,
2064
2142
  ConversationActivityGroupSchema,
2065
2143
  ConversationNoticeSchema,
2066
2144
  ConversationPlanUpdateSchema
2067
2145
  ]);
2068
- var ConversationItemUpsertSchema = z20.object({
2146
+ var ConversationItemUpsertSchema = z21.object({
2069
2147
  userId: IdSchema,
2070
2148
  machineId: IdSchema,
2071
2149
  sessionId: IdSchema,
2072
2150
  item: ConversationItemSchema
2073
2151
  });
2074
- var ConversationActivityStepUpsertSchema = z20.object({
2152
+ var ConversationActivityStepUpsertSchema = z21.object({
2075
2153
  userId: IdSchema,
2076
2154
  machineId: IdSchema,
2077
2155
  sessionId: IdSchema,
2078
2156
  activityId: IdSchema,
2079
- revision: z20.number().int().positive(),
2157
+ revision: z21.number().int().positive(),
2080
2158
  turnId: IdSchema,
2081
2159
  timestamp: IsoDateSchema,
2082
- actor: z20.enum(["assistant", "subagent"]),
2083
- status: z20.enum(["running", "completed", "failed"]),
2160
+ actor: z21.enum(["assistant", "subagent"]),
2161
+ status: z21.enum(["running", "completed", "failed"]),
2084
2162
  sourceEventId: IdSchema,
2085
2163
  step: ConversationActivityStepSchema
2086
2164
  }).strict();
2087
2165
 
2088
2166
  // ../../shared/protocol/dist/conversation/timeline.js
2089
- var SessionUserPreviewSchema = z21.object({
2167
+ var SessionUserPreviewSchema = z22.object({
2090
2168
  id: IdSchema,
2091
- revision: z21.number().int().positive(),
2169
+ revision: z22.number().int().positive(),
2092
2170
  timestamp: IsoDateSchema,
2093
- text: z21.string().max(4096)
2171
+ text: z22.string().max(4096)
2094
2172
  });
2095
- var SessionAssistantPreviewSchema = z21.object({
2173
+ var SessionAssistantPreviewSchema = z22.object({
2096
2174
  id: IdSchema,
2097
- revision: z21.number().int().positive(),
2175
+ revision: z22.number().int().positive(),
2098
2176
  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)
2177
+ sourceEventIds: z22.array(IdSchema).min(1).max(1e3),
2178
+ text: z22.string().max(4096),
2179
+ final: z22.boolean(),
2180
+ attachments: z22.array(ConversationAttachmentSchema.refine((attachment) => attachment.kind === "image" && attachment.imageRef === "sha256", "Assistant previews contain image references only")).max(4),
2181
+ kind: z22.enum(["assistant-message", "task-completion"]).optional()
2103
2182
  });
2104
2183
  var SESSION_TIMELINE_PAGE_SIZE = 100;
2105
- var SessionTimelinePageRequestSchema = z21.object({
2184
+ var SessionTimelinePageRequestSchema = z22.object({
2106
2185
  requestId: IdSchema,
2107
2186
  machineId: IdSchema,
2108
2187
  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()
2188
+ cursor: z22.string().max(32768).optional(),
2189
+ metadataOnly: z22.boolean().optional(),
2190
+ acceptContentEncodings: z22.array(z22.string().min(1).max(32)).max(8).optional(),
2191
+ imageReferences: z22.boolean().optional(),
2192
+ pageSize: z22.number().int().min(1).max(SESSION_TIMELINE_PAGE_SIZE).default(SESSION_TIMELINE_PAGE_SIZE),
2193
+ assistantPreview: z22.boolean().optional()
2115
2194
  });
2116
- var SessionWatchRequestSchema = z21.object({
2195
+ var SessionWatchRequestSchema = z22.object({
2117
2196
  requestId: IdSchema,
2118
2197
  machineId: IdSchema,
2119
2198
  sessionId: IdSchema,
2120
- watching: z21.boolean()
2199
+ watching: z22.boolean()
2121
2200
  }).strict();
2122
- var SessionWatchResultSchema = z21.discriminatedUnion("ok", [
2123
- z21.object({
2124
- ok: z21.literal(true),
2201
+ var SessionWatchResultSchema = z22.discriminatedUnion("ok", [
2202
+ z22.object({
2203
+ ok: z22.literal(true),
2125
2204
  requestId: IdSchema,
2126
2205
  machineId: IdSchema,
2127
2206
  sessionId: IdSchema,
2128
- watching: z21.boolean()
2207
+ watching: z22.boolean()
2129
2208
  }).strict(),
2130
- z21.object({
2131
- ok: z21.literal(false),
2209
+ z22.object({
2210
+ ok: z22.literal(false),
2132
2211
  requestId: IdSchema,
2133
2212
  machineId: IdSchema,
2134
2213
  sessionId: IdSchema,
2135
- watching: z21.boolean(),
2214
+ watching: z22.boolean(),
2136
2215
  error: ProtocolFailureSchema
2137
2216
  }).strict()
2138
2217
  ]);
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"]),
2218
+ var SessionTimelinePageSchema = z22.object({
2219
+ items: z22.array(ConversationItemSchema).max(SESSION_TIMELINE_PAGE_SIZE),
2220
+ cursor: z22.string().max(32768),
2221
+ hasMore: z22.boolean(),
2222
+ cursorStatus: z22.enum(["ok", "expired"]),
2144
2223
  assistantPreview: SessionAssistantPreviewSchema.optional(),
2145
2224
  userPreview: SessionUserPreviewSchema.optional(),
2146
- previewsComplete: z21.boolean().optional()
2225
+ previewsComplete: z22.boolean().optional()
2147
2226
  });
2148
- var SessionTimelinePageResultSchema = z21.discriminatedUnion("ok", [
2149
- z21.object({
2150
- ok: z21.literal(true),
2227
+ var SessionTimelinePageResultSchema = z22.discriminatedUnion("ok", [
2228
+ z22.object({
2229
+ ok: z22.literal(true),
2151
2230
  requestId: IdSchema,
2152
2231
  machineId: IdSchema,
2153
2232
  sessionId: IdSchema,
2154
2233
  page: SessionTimelinePageSchema
2155
2234
  }),
2156
- z21.object({
2157
- ok: z21.literal(false),
2235
+ z22.object({
2236
+ ok: z22.literal(false),
2158
2237
  requestId: IdSchema,
2159
2238
  machineId: IdSchema,
2160
2239
  sessionId: IdSchema,
2161
2240
  error: ProtocolFailureSchema
2162
2241
  })
2163
2242
  ]);
2164
- var SessionTimelineInvalidatedSchema = z21.object({
2243
+ var SessionTimelineInvalidatedSchema = z22.object({
2165
2244
  userId: IdSchema,
2166
2245
  machineId: IdSchema,
2167
2246
  sessionId: IdSchema,
2168
- reason: z21.enum(["clear", "rewind"]),
2247
+ reason: z22.enum(["clear", "rewind"]),
2169
2248
  sourceEventId: IdSchema,
2170
2249
  timestamp: IsoDateSchema
2171
2250
  }).strict();
2172
2251
 
2173
2252
  // ../../shared/protocol/dist/sessions/prompts.js
2253
+ var SessionAvatarPersonaSchema = z23.object({
2254
+ role: z23.enum(["designer", "filmmaker", "developer", "secretary", "default"]),
2255
+ displayName: z23.string().trim().min(1).max(40).regex(/^[^\u0000-\u001f\u007f-\u009f]*$/).optional()
2256
+ }).strict().refine((value) => value.role === "default" ? value.displayName === void 0 : value.displayName !== void 0, { message: "A role requires a display name; default must not include one" });
2174
2257
  var MAX_PROMPT_IMAGE_BYTES = 3 * 1024 * 1024;
2175
- var SessionPromptRequestSchema = z22.object({
2258
+ var SessionPromptRequestSchema = z23.object({
2176
2259
  requestId: IdSchema,
2177
2260
  operationId: IdSchema,
2178
2261
  machineId: IdSchema,
2179
2262
  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")
2263
+ prompt: z23.string().trim().max(1e5),
2264
+ attachments: z23.array(PromptImageAttachmentSchema).max(4).optional(),
2265
+ fileAttachments: z23.array(PromptFileAttachmentSchema).max(4).optional(),
2266
+ avatarPersona: SessionAvatarPersonaSchema.optional(),
2267
+ mode: z23.enum(["enqueue", "immediate"]).default("enqueue")
2184
2268
  }).strict().superRefine((request, context) => {
2185
2269
  if (request.prompt.length === 0 && (request.attachments?.length ?? 0) === 0 && (request.fileAttachments?.length ?? 0) === 0) {
2186
2270
  context.addIssue({
@@ -2206,22 +2290,22 @@ var SessionPromptRequestSchema = z22.object({
2206
2290
  });
2207
2291
  }
2208
2292
  });
2209
- var SessionPromptResultSchema = z22.discriminatedUnion("ok", [
2210
- z22.object({
2211
- ok: z22.literal(true),
2293
+ var SessionPromptResultSchema = z23.discriminatedUnion("ok", [
2294
+ z23.object({
2295
+ ok: z23.literal(true),
2212
2296
  requestId: IdSchema,
2213
2297
  operationId: IdSchema,
2214
2298
  machineId: IdSchema,
2215
2299
  sessionId: IdSchema,
2216
2300
  messageId: IdSchema,
2217
- mode: z22.enum(["enqueue", "immediate"]),
2218
- deliveryState: z22.enum(["queued", "processing"]),
2301
+ mode: z23.enum(["enqueue", "immediate"]),
2302
+ deliveryState: z23.enum(["queued", "processing"]),
2219
2303
  // Negotiated lower bound from the native event clock. Exact text and history
2220
2304
  // ownership checks still apply; this is not an identity or proof of persistence.
2221
2305
  submittedAt: IsoDateSchema.optional()
2222
2306
  }),
2223
- z22.object({
2224
- ok: z22.literal(false),
2307
+ z23.object({
2308
+ ok: z23.literal(false),
2225
2309
  requestId: IdSchema,
2226
2310
  operationId: IdSchema,
2227
2311
  machineId: IdSchema,
@@ -2229,29 +2313,29 @@ var SessionPromptResultSchema = z22.discriminatedUnion("ok", [
2229
2313
  error: ProtocolFailureSchema
2230
2314
  })
2231
2315
  ]);
2232
- var SessionActivityUpdateSchema = z22.object({
2316
+ var SessionActivityUpdateSchema = z23.object({
2233
2317
  userId: IdSchema,
2234
2318
  machineId: IdSchema,
2235
2319
  sessionId: IdSchema,
2236
- state: z22.enum(["working", "idle"]),
2320
+ state: z23.enum(["working", "idle"]),
2237
2321
  occurredAt: IsoDateSchema,
2238
2322
  assistantPreview: SessionAssistantPreviewSchema.optional(),
2239
2323
  userPreview: SessionUserPreviewSchema.optional()
2240
2324
  });
2241
- var SessionAbortRequestSchema = z22.object({
2325
+ var SessionAbortRequestSchema = z23.object({
2242
2326
  requestId: IdSchema,
2243
2327
  machineId: IdSchema,
2244
2328
  sessionId: IdSchema
2245
2329
  });
2246
- var SessionAbortResultSchema = z22.discriminatedUnion("ok", [
2247
- z22.object({
2248
- ok: z22.literal(true),
2330
+ var SessionAbortResultSchema = z23.discriminatedUnion("ok", [
2331
+ z23.object({
2332
+ ok: z23.literal(true),
2249
2333
  requestId: IdSchema,
2250
2334
  machineId: IdSchema,
2251
2335
  sessionId: IdSchema
2252
2336
  }),
2253
- z22.object({
2254
- ok: z22.literal(false),
2337
+ z23.object({
2338
+ ok: z23.literal(false),
2255
2339
  requestId: IdSchema,
2256
2340
  machineId: IdSchema,
2257
2341
  sessionId: IdSchema,
@@ -2260,12 +2344,12 @@ var SessionAbortResultSchema = z22.discriminatedUnion("ok", [
2260
2344
  ]);
2261
2345
 
2262
2346
  // ../../shared/protocol/dist/sessions/interactions.js
2263
- import { z as z23 } from "zod";
2264
- var InteractionFormFieldSchema = z23.object({
2347
+ import { z as z24 } from "zod";
2348
+ var InteractionFormFieldSchema = z24.object({
2265
2349
  id: IdSchema,
2266
- label: z23.string().trim().min(1).max(1024),
2267
- description: z23.string().max(2048).optional(),
2268
- inputType: z23.enum([
2350
+ label: z24.string().trim().min(1).max(1024),
2351
+ description: z24.string().max(2048).optional(),
2352
+ inputType: z24.enum([
2269
2353
  "text",
2270
2354
  "number",
2271
2355
  "integer",
@@ -2273,77 +2357,77 @@ var InteractionFormFieldSchema = z23.object({
2273
2357
  "select",
2274
2358
  "multi-select"
2275
2359
  ]),
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)
2360
+ required: z24.boolean(),
2361
+ options: z24.array(z24.string().max(1024)).max(100),
2362
+ defaultValue: z24.union([
2363
+ z24.string().max(4096),
2364
+ z24.number().finite(),
2365
+ z24.boolean(),
2366
+ z24.array(z24.string().max(1024)).max(100)
2283
2367
  ]).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()
2368
+ minimum: z24.number().finite().optional(),
2369
+ maximum: z24.number().finite().optional(),
2370
+ minLength: z24.number().int().nonnegative().max(1e6).optional(),
2371
+ maxLength: z24.number().int().nonnegative().max(1e6).optional(),
2372
+ minItems: z24.number().int().nonnegative().max(100).optional(),
2373
+ maxItems: z24.number().int().nonnegative().max(100).optional(),
2374
+ format: z24.enum(["email", "uri", "date", "date-time"]).optional()
2291
2375
  }).strict();
2292
- var InteractionPermissionRequestSchema = z23.object({
2293
- kind: z23.literal("permission"),
2376
+ var InteractionPermissionRequestSchema = z24.object({
2377
+ kind: z24.literal("permission"),
2294
2378
  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()
2379
+ title: z24.string().trim().min(1).max(256),
2380
+ description: z24.string().max(4096),
2381
+ canApproveSession: z24.boolean(),
2382
+ canApproveAlways: z24.boolean().optional(),
2383
+ approvalScope: z24.string().trim().min(1).max(4096).optional()
2300
2384
  }).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()
2385
+ var InteractionUserInputRequestSchema = z24.object({
2386
+ kind: z24.literal("user_input"),
2387
+ question: z24.string().trim().min(1).max(4096),
2388
+ choices: z24.array(z24.string().max(1024)).max(100),
2389
+ allowFreeform: z24.boolean()
2306
2390
  }).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)
2391
+ var InteractionElicitationRequestSchema = z24.object({
2392
+ kind: z24.literal("elicitation"),
2393
+ message: z24.string().trim().min(1).max(4096),
2394
+ mode: z24.enum(["form", "url"]),
2395
+ source: z24.string().trim().min(1).max(256).optional(),
2396
+ url: z24.url().max(32768).optional(),
2397
+ fields: z24.array(InteractionFormFieldSchema).max(100)
2314
2398
  }).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")
2399
+ var InteractionMcpOauthRequestSchema = z24.object({
2400
+ kind: z24.literal("mcp_oauth"),
2401
+ serverName: z24.string().trim().min(1).max(256),
2402
+ serverUrl: z24.url().max(32768),
2403
+ reason: z24.enum(["initial", "refresh", "reauth", "upscope"]),
2404
+ responseMode: z24.literal("cancel-only")
2321
2405
  }).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")
2406
+ var InteractionMcpHeadersRequestSchema = z24.object({
2407
+ kind: z24.literal("mcp_headers"),
2408
+ serverName: z24.string().trim().min(1).max(256),
2409
+ serverUrl: z24.url().max(32768),
2410
+ reason: z24.string().trim().min(1).max(256),
2411
+ responseMode: z24.literal("none-only")
2328
2412
  }).strict();
2329
- var InteractionAutoModeSwitchRequestSchema = z23.object({
2330
- kind: z23.literal("auto_mode_switch"),
2413
+ var InteractionAutoModeSwitchRequestSchema = z24.object({
2414
+ kind: z24.literal("auto_mode_switch"),
2331
2415
  errorCode: IdSchema.optional(),
2332
- retryAfterSeconds: z23.number().int().nonnegative().optional()
2416
+ retryAfterSeconds: z24.number().int().nonnegative().optional()
2333
2417
  }).strict();
2334
- var InteractionSessionLimitsRequestSchema = z23.object({
2335
- kind: z23.literal("session_limits"),
2336
- maxAiCredits: z23.number().finite().nonnegative(),
2337
- usedAiCredits: z23.number().finite().nonnegative()
2418
+ var InteractionSessionLimitsRequestSchema = z24.object({
2419
+ kind: z24.literal("session_limits"),
2420
+ maxAiCredits: z24.number().finite().nonnegative(),
2421
+ usedAiCredits: z24.number().finite().nonnegative()
2338
2422
  }).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),
2423
+ var InteractionExitPlanRequestSchema = z24.object({
2424
+ kind: z24.literal("exit_plan"),
2425
+ summary: z24.string().max(4096),
2426
+ planContent: z24.string().max(1e5).optional(),
2427
+ actions: z24.array(IdSchema).min(1).max(20),
2344
2428
  recommendedAction: IdSchema
2345
2429
  }).strict();
2346
- var InteractionRequestSchema = z23.discriminatedUnion("kind", [
2430
+ var InteractionRequestSchema = z24.discriminatedUnion("kind", [
2347
2431
  InteractionPermissionRequestSchema,
2348
2432
  InteractionUserInputRequestSchema,
2349
2433
  InteractionElicitationRequestSchema,
@@ -2353,81 +2437,81 @@ var InteractionRequestSchema = z23.discriminatedUnion("kind", [
2353
2437
  InteractionSessionLimitsRequestSchema,
2354
2438
  InteractionExitPlanRequestSchema
2355
2439
  ]);
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()
2440
+ var InteractionPermissionResponseSchema = z24.object({
2441
+ kind: z24.literal("permission"),
2442
+ decision: z24.enum(["approve-once", "approve-for-session", "approve-always", "reject"]),
2443
+ feedback: z24.string().trim().min(1).max(2048).optional()
2360
2444
  }).strict();
2361
- var InteractionUserInputResponseSchema = z23.object({
2362
- kind: z23.literal("user_input"),
2363
- answer: z23.string().max(1e5),
2364
- wasFreeform: z23.boolean()
2445
+ var InteractionUserInputResponseSchema = z24.object({
2446
+ kind: z24.literal("user_input"),
2447
+ answer: z24.string().max(1e5),
2448
+ wasFreeform: z24.boolean()
2365
2449
  }).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)
2450
+ var InteractionFieldValueSchema = z24.union([
2451
+ z24.string().max(4096),
2452
+ z24.number(),
2453
+ z24.boolean(),
2454
+ z24.array(z24.string().max(1024)).max(100)
2371
2455
  ]);
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)
2456
+ var InteractionElicitationResponseSchema = z24.object({
2457
+ kind: z24.literal("elicitation"),
2458
+ action: z24.enum(["accept", "decline", "cancel"]),
2459
+ values: z24.record(z24.string().max(256), InteractionFieldValueSchema)
2376
2460
  }).strict();
2377
- var InteractionMcpOauthResponseSchema = z23.object({
2378
- kind: z23.literal("mcp_oauth"),
2379
- action: z23.literal("cancel")
2461
+ var InteractionMcpOauthResponseSchema = z24.object({
2462
+ kind: z24.literal("mcp_oauth"),
2463
+ action: z24.literal("cancel")
2380
2464
  }).strict();
2381
- var InteractionMcpHeadersResponseSchema = z23.object({
2382
- kind: z23.literal("mcp_headers"),
2383
- action: z23.literal("none")
2465
+ var InteractionMcpHeadersResponseSchema = z24.object({
2466
+ kind: z24.literal("mcp_headers"),
2467
+ action: z24.literal("none")
2384
2468
  }).strict();
2385
- var InteractionAutoModeSwitchResponseSchema = z23.object({
2386
- kind: z23.literal("auto_mode_switch"),
2387
- action: z23.enum(["yes", "yes_always", "no"])
2469
+ var InteractionAutoModeSwitchResponseSchema = z24.object({
2470
+ kind: z24.literal("auto_mode_switch"),
2471
+ action: z24.enum(["yes", "yes_always", "no"])
2388
2472
  }).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()
2473
+ var InteractionSessionLimitsResponseSchema = z24.object({
2474
+ kind: z24.literal("session_limits"),
2475
+ action: z24.enum(["add", "set", "unset", "cancel"]),
2476
+ additionalAiCredits: z24.number().positive().optional(),
2477
+ maxAiCredits: z24.number().positive().optional()
2394
2478
  }).strict().superRefine((response, context) => {
2395
2479
  if (response.action === "add" && response.additionalAiCredits === void 0) {
2396
2480
  context.addIssue({
2397
- code: z23.ZodIssueCode.custom,
2481
+ code: z24.ZodIssueCode.custom,
2398
2482
  path: ["additionalAiCredits"],
2399
2483
  message: "additionalAiCredits is required for add"
2400
2484
  });
2401
2485
  }
2402
2486
  if (response.action === "set" && response.maxAiCredits === void 0) {
2403
2487
  context.addIssue({
2404
- code: z23.ZodIssueCode.custom,
2488
+ code: z24.ZodIssueCode.custom,
2405
2489
  path: ["maxAiCredits"],
2406
2490
  message: "maxAiCredits is required for set"
2407
2491
  });
2408
2492
  }
2409
2493
  if (response.action !== "add" && response.additionalAiCredits !== void 0) {
2410
2494
  context.addIssue({
2411
- code: z23.ZodIssueCode.custom,
2495
+ code: z24.ZodIssueCode.custom,
2412
2496
  path: ["additionalAiCredits"],
2413
2497
  message: "additionalAiCredits is only valid for add"
2414
2498
  });
2415
2499
  }
2416
2500
  if (response.action !== "set" && response.maxAiCredits !== void 0) {
2417
2501
  context.addIssue({
2418
- code: z23.ZodIssueCode.custom,
2502
+ code: z24.ZodIssueCode.custom,
2419
2503
  path: ["maxAiCredits"],
2420
2504
  message: "maxAiCredits is only valid for set"
2421
2505
  });
2422
2506
  }
2423
2507
  });
2424
- var InteractionExitPlanResponseSchema = z23.object({
2425
- kind: z23.literal("exit_plan"),
2426
- approved: z23.boolean(),
2508
+ var InteractionExitPlanResponseSchema = z24.object({
2509
+ kind: z24.literal("exit_plan"),
2510
+ approved: z24.boolean(),
2427
2511
  selectedAction: IdSchema.optional(),
2428
- feedback: z23.string().trim().min(1).max(4096).optional()
2512
+ feedback: z24.string().trim().min(1).max(4096).optional()
2429
2513
  }).strict();
2430
- var InteractionResponseSchema = z23.discriminatedUnion("kind", [
2514
+ var InteractionResponseSchema = z24.discriminatedUnion("kind", [
2431
2515
  InteractionPermissionResponseSchema,
2432
2516
  InteractionUserInputResponseSchema,
2433
2517
  InteractionElicitationResponseSchema,
@@ -2437,30 +2521,30 @@ var InteractionResponseSchema = z23.discriminatedUnion("kind", [
2437
2521
  InteractionSessionLimitsResponseSchema,
2438
2522
  InteractionExitPlanResponseSchema
2439
2523
  ]);
2440
- var InteractionRequestPayloadSchema = z23.object({
2524
+ var InteractionRequestPayloadSchema = z24.object({
2441
2525
  interactionRequestId: IdSchema,
2442
2526
  userId: IdSchema,
2443
2527
  machineId: IdSchema,
2444
2528
  sessionId: IdSchema,
2445
2529
  request: InteractionRequestSchema
2446
2530
  }).strict();
2447
- var InteractionRespondRequestSchema = z23.object({
2531
+ var InteractionRespondRequestSchema = z24.object({
2448
2532
  requestId: IdSchema,
2449
2533
  interactionRequestId: IdSchema,
2450
2534
  machineId: IdSchema,
2451
2535
  sessionId: IdSchema,
2452
2536
  response: InteractionResponseSchema
2453
2537
  }).strict();
2454
- var InteractionRespondResultSchema = z23.discriminatedUnion("ok", [
2455
- z23.object({
2456
- ok: z23.literal(true),
2538
+ var InteractionRespondResultSchema = z24.discriminatedUnion("ok", [
2539
+ z24.object({
2540
+ ok: z24.literal(true),
2457
2541
  requestId: IdSchema,
2458
2542
  interactionRequestId: IdSchema,
2459
2543
  machineId: IdSchema,
2460
2544
  sessionId: IdSchema
2461
2545
  }).strict(),
2462
- z23.object({
2463
- ok: z23.literal(false),
2546
+ z24.object({
2547
+ ok: z24.literal(false),
2464
2548
  requestId: IdSchema,
2465
2549
  interactionRequestId: IdSchema,
2466
2550
  machineId: IdSchema,
@@ -2468,31 +2552,31 @@ var InteractionRespondResultSchema = z23.discriminatedUnion("ok", [
2468
2552
  error: ProtocolFailureSchema
2469
2553
  }).strict()
2470
2554
  ]);
2471
- var PermissionRequestPayloadSchema = z23.object({
2555
+ var PermissionRequestPayloadSchema = z24.object({
2472
2556
  permissionRequestId: IdSchema,
2473
2557
  userId: IdSchema,
2474
2558
  machineId: IdSchema,
2475
2559
  sessionId: IdSchema,
2476
- request: z23.record(z23.string(), z23.unknown())
2560
+ request: z24.record(z24.string(), z24.unknown())
2477
2561
  });
2478
- var PermissionRespondRequestSchema = z23.object({
2562
+ var PermissionRespondRequestSchema = z24.object({
2479
2563
  requestId: IdSchema,
2480
2564
  permissionRequestId: IdSchema,
2481
2565
  machineId: IdSchema,
2482
2566
  sessionId: IdSchema,
2483
- decision: z23.enum(["approve-once", "reject"]),
2484
- feedback: z23.string().trim().min(1).max(2048).optional()
2567
+ decision: z24.enum(["approve-once", "reject"]),
2568
+ feedback: z24.string().trim().min(1).max(2048).optional()
2485
2569
  });
2486
- var PermissionRespondResultSchema = z23.discriminatedUnion("ok", [
2487
- z23.object({
2488
- ok: z23.literal(true),
2570
+ var PermissionRespondResultSchema = z24.discriminatedUnion("ok", [
2571
+ z24.object({
2572
+ ok: z24.literal(true),
2489
2573
  requestId: IdSchema,
2490
2574
  permissionRequestId: IdSchema,
2491
2575
  machineId: IdSchema,
2492
2576
  sessionId: IdSchema
2493
2577
  }),
2494
- z23.object({
2495
- ok: z23.literal(false),
2578
+ z24.object({
2579
+ ok: z24.literal(false),
2496
2580
  requestId: IdSchema,
2497
2581
  permissionRequestId: IdSchema,
2498
2582
  machineId: IdSchema,
@@ -2502,42 +2586,42 @@ var PermissionRespondResultSchema = z23.discriminatedUnion("ok", [
2502
2586
  ]);
2503
2587
 
2504
2588
  // ../../shared/protocol/dist/conversation/timeline-sync.js
2505
- import { z as z24 } from "zod";
2589
+ import { z as z25 } from "zod";
2506
2590
  var TIMELINE_SYNC_MAX_EVENTS = 128;
2507
2591
  var TIMELINE_SYNC_MAX_BYTES = 6 * 1024 * 1024;
2508
2592
  var TIMELINE_IMAGE_CHUNK_BYTES = 48 * 1024;
2509
2593
  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({
2594
+ var identity = z25.string().min(1).max(256);
2595
+ var sequence = z25.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
2596
+ var hash = z25.string().regex(/^[a-f0-9]{64}$/u);
2597
+ var TimelineWatermarkSchema = z25.object({
2514
2598
  epoch: identity,
2515
2599
  sequence
2516
2600
  }).strict();
2517
- var TimelineSyncRequestSchema = z24.object({
2601
+ var TimelineSyncRequestSchema = z25.object({
2518
2602
  watermark: TimelineWatermarkSchema.optional(),
2519
- waitMs: z24.number().int().min(0).max(2e4).optional(),
2520
- resume: z24.boolean().optional()
2603
+ waitMs: z25.number().int().min(0).max(2e4).optional(),
2604
+ resume: z25.boolean().optional()
2521
2605
  }).strict();
2522
- var TimelineTextAppendSchema = z24.object({
2606
+ var TimelineTextAppendSchema = z25.object({
2523
2607
  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()
2608
+ baseRevision: z25.number().int().positive(),
2609
+ revision: z25.number().int().positive(),
2610
+ appendText: z25.string().min(1).max(5e5),
2611
+ sourceEventIds: z25.array(identity).min(1).max(1e3).optional(),
2612
+ sourceMessageIds: z25.array(identity).min(1).max(1e3).optional(),
2613
+ sourceInteractionIds: z25.array(identity).min(1).max(1e3).optional()
2530
2614
  }).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"),
2615
+ var TimelineSyncEventSchema = z25.discriminatedUnion("kind", [
2616
+ z25.object({ kind: z25.literal("upsert"), sequence, item: ConversationItemSchema }).strict(),
2617
+ z25.object({ kind: z25.literal("append"), sequence, append: TimelineTextAppendSchema }).strict(),
2618
+ z25.object({
2619
+ kind: z25.literal("step"),
2536
2620
  sequence,
2537
2621
  upsert: ConversationActivityStepUpsertSchema
2538
2622
  }).strict()
2539
2623
  ]);
2540
- var TimelineResyncReasonSchema = z24.enum([
2624
+ var TimelineResyncReasonSchema = z25.enum([
2541
2625
  "initial",
2542
2626
  "epoch-changed",
2543
2627
  "evicted",
@@ -2546,36 +2630,36 @@ var TimelineResyncReasonSchema = z24.enum([
2546
2630
  "rewind",
2547
2631
  "oversized"
2548
2632
  ]);
2549
- var TimelineSyncResponseSchema = z24.discriminatedUnion("status", [
2550
- z24.object({
2551
- status: z24.literal("snapshot"),
2633
+ var TimelineSyncResponseSchema = z25.discriminatedUnion("status", [
2634
+ z25.object({
2635
+ status: z25.literal("snapshot"),
2552
2636
  watermark: TimelineWatermarkSchema,
2553
2637
  page: SessionTimelinePageSchema
2554
2638
  }).strict(),
2555
- z24.object({
2556
- status: z24.literal("replay"),
2639
+ z25.object({
2640
+ status: z25.literal("replay"),
2557
2641
  watermark: TimelineWatermarkSchema,
2558
2642
  afterSequence: sequence,
2559
- events: z24.array(TimelineSyncEventSchema).max(TIMELINE_SYNC_MAX_EVENTS),
2560
- hasMore: z24.boolean()
2643
+ events: z25.array(TimelineSyncEventSchema).max(TIMELINE_SYNC_MAX_EVENTS),
2644
+ hasMore: z25.boolean()
2561
2645
  }).strict(),
2562
- z24.object({
2563
- status: z24.literal("resync"),
2646
+ z25.object({
2647
+ status: z25.literal("resync"),
2564
2648
  epoch: identity,
2565
2649
  reason: TimelineResyncReasonSchema
2566
2650
  }).strict()
2567
2651
  ]);
2568
- var TimelineImageRequestSchema = z24.object({
2652
+ var TimelineImageRequestSchema = z25.object({
2569
2653
  sha256: hash,
2570
- offset: z24.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1)
2654
+ offset: z25.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1)
2571
2655
  }).strict();
2572
- var TimelineImageChunkSchema = z24.object({
2656
+ var TimelineImageChunkSchema = z25.object({
2573
2657
  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()
2658
+ offset: z25.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1),
2659
+ totalBytes: z25.number().int().positive().max(TIMELINE_IMAGE_MAX_BYTES),
2660
+ mimeType: z25.enum(["image/gif", "image/jpeg", "image/png", "image/webp"]),
2661
+ 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),
2662
+ eof: z25.boolean()
2579
2663
  }).strict().superRefine((chunk, context) => {
2580
2664
  const padding = chunk.data.endsWith("==") ? 2 : chunk.data.endsWith("=") ? 1 : 0;
2581
2665
  const length = chunk.data.length / 4 * 3 - padding;
@@ -2586,10 +2670,10 @@ var TimelineImageChunkSchema = z24.object({
2586
2670
  });
2587
2671
 
2588
2672
  // ../../shared/protocol/dist/workbench.js
2589
- import { z as z26 } from "zod";
2673
+ import { z as z27 } from "zod";
2590
2674
 
2591
2675
  // ../../shared/protocol/dist/schedules.js
2592
- import { z as z25 } from "zod";
2676
+ import { z as z26 } from "zod";
2593
2677
  var SCHEDULE_OPERATIONS = [
2594
2678
  "schedule.snapshot",
2595
2679
  "schedule.create",
@@ -2597,90 +2681,90 @@ var SCHEDULE_OPERATIONS = [
2597
2681
  "schedule.draft.dismiss",
2598
2682
  "schedule.resume"
2599
2683
  ];
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()
2684
+ var Id = z26.string().min(1).max(256);
2685
+ var NativeId = z26.number().int().positive().max(Number.MAX_SAFE_INTEGER);
2686
+ var Time = z26.iso.datetime({ offset: true });
2687
+ var WorkbenchScheduleRuleSchema = z26.discriminatedUnion("kind", [
2688
+ z26.object({ kind: z26.literal("once"), at: Time }).strict(),
2689
+ z26.object({
2690
+ kind: z26.literal("interval"),
2691
+ seconds: z26.number().int().min(10).max(86400),
2692
+ recurring: z26.boolean().optional()
2609
2693
  }).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_+./-]+$/)
2694
+ z26.object({
2695
+ kind: z26.literal("cron"),
2696
+ expression: z26.string().trim().min(9).max(256).regex(/^\S+(?: +\S+){4}$/),
2697
+ timezone: z26.string().min(1).max(128).regex(/^[A-Za-z0-9_+./-]+$/)
2614
2698
  }).strict()
2615
2699
  ]);
2616
2700
  var Content = {
2617
2701
  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.")
2702
+ 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."),
2703
+ 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
2704
  };
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(),
2705
+ var WorkbenchScheduleProposalSchema = z26.object(Content).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2706
+ var WorkbenchScheduleDraftSchema = z26.object({
2707
+ id: z26.uuid(),
2624
2708
  createdAt: Time,
2625
2709
  ...Content
2626
2710
  }).strict();
2627
- var WorkbenchScheduleEntrySchema = z25.object({
2711
+ var WorkbenchScheduleEntrySchema = z26.object({
2628
2712
  id: NativeId,
2629
- prompt: z25.string().max(1e5),
2630
- displayPrompt: z25.string().max(1e5).optional(),
2631
- recurring: z25.boolean(),
2713
+ prompt: z26.string().max(1e5),
2714
+ displayPrompt: z26.string().max(1e5).optional(),
2715
+ recurring: z26.boolean(),
2632
2716
  nextRunAt: Time,
2633
- intervalMs: z25.number().int().positive().optional(),
2634
- cron: z25.string().max(256).optional(),
2635
- timezone: z25.string().max(128).optional(),
2717
+ intervalMs: z26.number().int().positive().optional(),
2718
+ cron: z26.string().max(256).optional(),
2719
+ timezone: z26.string().max(128).optional(),
2636
2720
  at: Time.optional()
2637
2721
  }).strict();
2638
- var WorkbenchScheduleResultSchema = z25.object({
2722
+ var WorkbenchScheduleResultSchema = z26.object({
2639
2723
  id: Id,
2640
2724
  scheduleId: NativeId,
2641
2725
  triggerEventId: Id,
2642
2726
  time: Time,
2643
- prompt: z25.string().max(16e3),
2644
- status: z25.enum(["reply", "error", "merged", "pending", "unknown"]),
2645
- reply: z25.string().max(16e3).optional(),
2727
+ prompt: z26.string().max(16e3),
2728
+ status: z26.enum(["reply", "error", "merged", "pending", "unknown"]),
2729
+ reply: z26.string().max(16e3).optional(),
2646
2730
  replyEventId: Id.optional(),
2647
- error: z25.string().max(1024).optional()
2731
+ error: z26.string().max(1024).optional()
2648
2732
  }).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(),
2733
+ var WorkbenchScheduleSnapshotSchema = z26.object({
2734
+ state: z26.enum(["active", "needs-resume"]),
2735
+ workingDirectory: z26.string().max(32768).optional(),
2736
+ timezone: z26.string().max(128).optional(),
2737
+ entries: z26.array(WorkbenchScheduleEntrySchema).max(256),
2738
+ drafts: z26.array(WorkbenchScheduleDraftSchema).max(100),
2739
+ results: z26.array(WorkbenchScheduleResultSchema).max(100),
2740
+ historyTruncated: z26.boolean(),
2657
2741
  sampledAt: Time
2658
2742
  }).strict();
2659
2743
  var Submission = {
2660
- operationId: z25.uuid(),
2661
- operationCreatedAt: z25.iso.datetime(),
2744
+ operationId: z26.uuid(),
2745
+ operationCreatedAt: z26.iso.datetime(),
2662
2746
  expectedAgentRunId: Id
2663
2747
  };
2664
- var WorkbenchScheduleCreateRequestSchema = z25.object({
2748
+ var WorkbenchScheduleCreateRequestSchema = z26.object({
2665
2749
  ...Submission,
2666
2750
  ...Content,
2667
- draftId: z25.uuid().optional()
2751
+ draftId: z26.uuid().optional()
2668
2752
  }).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2669
- var WorkbenchScheduleCreateResultSchema = z25.object({
2753
+ var WorkbenchScheduleCreateResultSchema = z26.object({
2670
2754
  snapshot: WorkbenchScheduleSnapshotSchema,
2671
- verified: z25.boolean()
2755
+ verified: z26.boolean()
2672
2756
  }).strict();
2673
- var WorkbenchScheduleDeleteRequestSchema = z25.object({
2757
+ var WorkbenchScheduleDeleteRequestSchema = z26.object({
2674
2758
  ...Submission,
2675
2759
  id: NativeId
2676
2760
  }).strict();
2677
- var WorkbenchScheduleDeleteResultSchema = z25.object({
2761
+ var WorkbenchScheduleDeleteResultSchema = z26.object({
2678
2762
  snapshot: WorkbenchScheduleSnapshotSchema,
2679
- removed: z25.boolean()
2763
+ removed: z26.boolean()
2680
2764
  }).strict();
2681
- var WorkbenchScheduleDraftDismissRequestSchema = z25.object({
2765
+ var WorkbenchScheduleDraftDismissRequestSchema = z26.object({
2682
2766
  ...Submission,
2683
- draftId: z25.uuid()
2767
+ draftId: z26.uuid()
2684
2768
  }).strict();
2685
2769
  var ScheduleAndroidSchemas = {
2686
2770
  WorkbenchScheduleRule: WorkbenchScheduleRuleSchema,
@@ -2697,10 +2781,10 @@ var ScheduleAndroidSchemas = {
2697
2781
  };
2698
2782
 
2699
2783
  // ../../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();
2784
+ var Id2 = z27.string().trim().min(1).max(256);
2785
+ var Text = z27.string().max(1e5);
2786
+ var Count = z27.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
2787
+ var Failure = z27.object({ code: Id2, message: z27.string().min(1).max(1024) }).strict();
2704
2788
  var WORKBENCH_OPERATIONS = [
2705
2789
  "operation.get",
2706
2790
  "question.ask",
@@ -2719,104 +2803,104 @@ var WORKBENCH_OPERATIONS = [
2719
2803
  ...SCHEDULE_OPERATIONS
2720
2804
  ];
2721
2805
  var Submission2 = {
2722
- operationId: z26.uuid(),
2723
- operationCreatedAt: z26.iso.datetime(),
2806
+ operationId: z27.uuid(),
2807
+ operationCreatedAt: z27.iso.datetime(),
2724
2808
  expectedAgentRunId: Id2
2725
2809
  };
2726
- var WorkbenchOperationGetSchema = z26.object({ operationId: z26.uuid() }).strict();
2727
- var WorkbenchOperationStatusSchema = z26.object({
2728
- operationId: z26.uuid(),
2729
- operation: z26.enum(WORKBENCH_OPERATIONS),
2810
+ var WorkbenchOperationGetSchema = z27.object({ operationId: z27.uuid() }).strict();
2811
+ var WorkbenchOperationStatusSchema = z27.object({
2812
+ operationId: z27.uuid(),
2813
+ operation: z27.enum(WORKBENCH_OPERATIONS),
2730
2814
  agentRunId: Id2,
2731
- state: z26.enum(["running", "succeeded", "failed", "uncertain", "result-expired"]),
2732
- result: z26.record(z26.string(), z26.json()).optional(),
2815
+ state: z27.enum(["running", "succeeded", "failed", "uncertain", "result-expired"]),
2816
+ result: z27.record(z27.string(), z27.json()).optional(),
2733
2817
  error: Failure.optional()
2734
2818
  }).strict().superRefine((value, context) => {
2735
2819
  if (value.state === "succeeded" !== (value.result !== void 0) || (value.state === "failed" || value.state === "uncertain") !== (value.error !== void 0)) {
2736
2820
  context.addIssue({ code: "custom", message: "Invalid operation state payload" });
2737
2821
  }
2738
2822
  });
2739
- var WorkbenchAskRequestSchema = z26.object({
2823
+ var WorkbenchAskRequestSchema = z27.object({
2740
2824
  ...Submission2,
2741
- question: z26.string().trim().min(1).max(16e3)
2825
+ question: z27.string().trim().min(1).max(16e3)
2742
2826
  }).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({
2827
+ var WorkbenchAskResultSchema = z27.object({ answer: Text }).strict();
2828
+ var WorkbenchEmptyRequestSchema = z27.object({}).strict();
2829
+ var WorkbenchSubmitRequestSchema = z27.object(Submission2).strict();
2830
+ var WorkbenchResearchCreateRequestSchema = z27.object({
2747
2831
  ...Submission2,
2748
- title: z26.string().trim().min(1).max(120),
2749
- question: z26.string().trim().min(1).max(16e3),
2832
+ title: z27.string().trim().min(1).max(120),
2833
+ question: z27.string().trim().min(1).max(16e3),
2750
2834
  sourceItemId: Id2.optional(),
2751
- deferInitialPrompt: z26.literal(true).optional()
2835
+ deferInitialPrompt: z27.literal(true).optional()
2752
2836
  }).strict();
2753
- var WorkbenchResearchThreadSchema = z26.object({
2837
+ var WorkbenchResearchThreadSchema = z27.object({
2754
2838
  sessionId: Id2,
2755
2839
  parentSessionId: Id2,
2756
- title: z26.string().min(1).max(120),
2757
- createdAt: z26.iso.datetime(),
2840
+ title: z27.string().min(1).max(120),
2841
+ createdAt: z27.iso.datetime(),
2758
2842
  contextAnchor: Id2.optional(),
2759
- contextTruncated: z26.boolean(),
2760
- detached: z26.boolean(),
2761
- state: z26.enum(["creating", "ready", "failed"])
2843
+ contextTruncated: z27.boolean(),
2844
+ detached: z27.boolean(),
2845
+ state: z27.enum(["creating", "ready", "failed"])
2762
2846
  }).strict();
2763
- var WorkbenchResearchCreateResultSchema = z26.object({
2847
+ var WorkbenchResearchCreateResultSchema = z27.object({
2764
2848
  thread: WorkbenchResearchThreadSchema
2765
2849
  }).strict();
2766
- var WorkbenchResearchListResultSchema = z26.object({
2767
- threads: z26.array(WorkbenchResearchThreadSchema).max(100)
2850
+ var WorkbenchResearchListResultSchema = z27.object({
2851
+ threads: z27.array(WorkbenchResearchThreadSchema).max(100)
2768
2852
  }).strict();
2769
- var WorkbenchResearchTimelineRequestSchema = z26.object({
2853
+ var WorkbenchResearchTimelineRequestSchema = z27.object({
2770
2854
  cursor: Id2.optional()
2771
2855
  }).strict();
2772
- var WorkbenchResearchSendRequestSchema = z26.object({
2856
+ var WorkbenchResearchSendRequestSchema = z27.object({
2773
2857
  ...Submission2,
2774
- prompt: z26.string().trim().min(1).max(16e3)
2858
+ prompt: z27.string().trim().min(1).max(16e3)
2775
2859
  }).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()
2860
+ var WorkbenchResearchSendResultSchema = z27.object({ messageId: Id2 }).strict();
2861
+ var WorkbenchCompletedResultSchema = z27.object({ completed: z27.boolean() }).strict();
2862
+ var WorkbenchCommandSchema = z27.object({
2863
+ name: z27.string().min(1).max(260),
2864
+ description: z27.string().max(4096),
2865
+ argumentHint: z27.string().max(1024).optional(),
2866
+ kind: z27.enum(["builtin", "skill", "client"]),
2867
+ allowDuringExecution: z27.boolean(),
2868
+ supported: z27.boolean(),
2869
+ reason: z27.string().max(1024).optional()
2786
2870
  }).strict();
2787
- var WorkbenchCommandListResultSchema = z26.object({
2788
- commands: z26.array(WorkbenchCommandSchema).max(512)
2871
+ var WorkbenchCommandListResultSchema = z27.object({
2872
+ commands: z27.array(WorkbenchCommandSchema).max(512)
2789
2873
  }).strict();
2790
- var WorkbenchCommandInvokeRequestSchema = z26.object({
2874
+ var WorkbenchCommandInvokeRequestSchema = z27.object({
2791
2875
  ...Submission2,
2792
- name: z26.string().trim().min(1).max(260),
2793
- input: z26.string().max(16e3)
2876
+ name: z27.string().trim().min(1).max(260),
2877
+ input: z27.string().max(16e3)
2794
2878
  }).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)
2879
+ var WorkbenchCommandChoiceSchema = z27.object({
2880
+ name: z27.string().min(1).max(260),
2881
+ label: z27.string().min(1).max(1024),
2882
+ input: z27.string().max(16e3)
2799
2883
  }).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)
2884
+ var WorkbenchCommandResultSchema = z27.discriminatedUnion("kind", [
2885
+ z27.object({ kind: z27.literal("text"), text: Text }).strict(),
2886
+ z27.object({ kind: z27.literal("completed") }).strict(),
2887
+ z27.object({ kind: z27.literal("sent"), messageId: Id2 }).strict(),
2888
+ z27.object({
2889
+ kind: z27.literal("select-subcommand"),
2890
+ choices: z27.array(WorkbenchCommandChoiceSchema).min(1).max(100)
2807
2891
  }).strict()
2808
2892
  ]);
2809
- var WorkbenchQueueItemSchema = z26.object({
2893
+ var WorkbenchQueueItemSchema = z27.object({
2810
2894
  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)
2895
+ kind: z27.string().min(1).max(64),
2896
+ texts: z27.array(z27.string().max(1e5)).min(1).max(100),
2897
+ actions: z27.array(z27.enum(["edit", "remove", "move", "send-now"])).max(4)
2814
2898
  }).strict();
2815
- var WorkbenchQueueSnapshotSchema = z26.object({
2899
+ var WorkbenchQueueSnapshotSchema = z27.object({
2816
2900
  generation: Id2,
2817
2901
  revision: Id2,
2818
- items: z26.array(WorkbenchQueueItemSchema).max(512),
2819
- steeringMessages: z26.array(z26.string().max(1e5)).max(512)
2902
+ items: z27.array(WorkbenchQueueItemSchema).max(512),
2903
+ steeringMessages: z27.array(z27.string().max(1e5)).max(512)
2820
2904
  }).strict();
2821
2905
  var QueueMutation = {
2822
2906
  ...Submission2,
@@ -2824,48 +2908,48 @@ var QueueMutation = {
2824
2908
  revision: Id2,
2825
2909
  id: Id2
2826
2910
  };
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()
2911
+ var WorkbenchQueueMutationRequestSchema = z27.discriminatedUnion("action", [
2912
+ z27.object({ ...QueueMutation, action: z27.literal("edit"), prompt: z27.string().trim().min(1).max(1e5) }).strict(),
2913
+ z27.object({ ...QueueMutation, action: z27.literal("remove") }).strict(),
2914
+ z27.object({ ...QueueMutation, action: z27.literal("move"), toPosition: z27.number().int().min(0).max(511) }).strict(),
2915
+ z27.object({ ...QueueMutation, action: z27.literal("send-now") }).strict()
2832
2916
  ]);
2833
- var WorkbenchQueueMutationResultSchema = z26.object({
2834
- changed: z26.boolean(),
2917
+ var WorkbenchQueueMutationResultSchema = z27.object({
2918
+ changed: z27.boolean(),
2835
2919
  snapshot: WorkbenchQueueSnapshotSchema
2836
2920
  }).strict();
2837
- var WorkbenchTokenMetricSchema = z26.object({
2838
- kind: z26.string().min(1).max(128),
2921
+ var WorkbenchTokenMetricSchema = z27.object({
2922
+ kind: z27.string().min(1).max(128),
2839
2923
  count: Count
2840
2924
  }).strict();
2841
- var WorkbenchModelUsageSchema = z26.object({
2925
+ var WorkbenchModelUsageSchema = z27.object({
2842
2926
  model: Id2,
2843
2927
  requests: Count,
2844
- premiumRequestCost: z26.number().finite().nonnegative(),
2845
- tokens: z26.array(WorkbenchTokenMetricSchema).max(32)
2928
+ premiumRequestCost: z27.number().finite().nonnegative(),
2929
+ tokens: z27.array(WorkbenchTokenMetricSchema).max(32)
2846
2930
  }).strict();
2847
- var WorkbenchContextSchema = z26.object({
2931
+ var WorkbenchContextSchema = z27.object({
2848
2932
  currentTokens: Count,
2849
2933
  tokenLimit: Count,
2850
2934
  systemTokens: Count.optional(),
2851
2935
  conversationTokens: Count.optional(),
2852
2936
  toolTokens: Count.optional()
2853
2937
  }).strict();
2854
- var WorkbenchInsightsSchema = z26.object({
2855
- sampledAt: z26.iso.datetime(),
2938
+ var WorkbenchInsightsSchema = z27.object({
2939
+ sampledAt: z27.iso.datetime(),
2856
2940
  generation: Id2,
2857
2941
  model: Id2.optional(),
2858
2942
  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),
2943
+ premiumRequestCost: z27.number().finite().nonnegative(),
2944
+ nanoAiu: z27.string().regex(/^\d+$/).max(40).optional(),
2945
+ tokens: z27.array(WorkbenchTokenMetricSchema).max(32),
2946
+ models: z27.array(WorkbenchModelUsageSchema).max(100),
2863
2947
  context: WorkbenchContextSchema.optional(),
2864
- canCompact: z26.boolean(),
2865
- compactUnavailableReason: z26.string().max(1024).optional()
2948
+ canCompact: z27.boolean(),
2949
+ compactUnavailableReason: z27.string().max(1024).optional()
2866
2950
  }).strict();
2867
- var WorkbenchCompactResultSchema = z26.object({
2868
- success: z26.boolean(),
2951
+ var WorkbenchCompactResultSchema = z27.object({
2952
+ success: z27.boolean(),
2869
2953
  tokensRemoved: Count,
2870
2954
  messagesRemoved: Count
2871
2955
  }).strict();
@@ -2901,6 +2985,13 @@ var WorkbenchAndroidSchemas = {
2901
2985
 
2902
2986
  // ../../shared/protocol/dist/codegen/android-schemas.js
2903
2987
  var AndroidProtocolSchemas = {
2988
+ TimelineImageBlobRequest: TimelineImageBlobRequestSchema,
2989
+ TimelineImageBlobResult: TimelineImageBlobResultSchema,
2990
+ SessionImageUploadRequest: SessionImageUploadRequestSchema,
2991
+ SessionImageScope: SessionImageScopeSchema,
2992
+ SessionImageUploadResult: SessionImageUploadResultSchema,
2993
+ SessionImageCommitResult: SessionImageCommitResultSchema,
2994
+ SessionImageDownloadResult: SessionImageDownloadResultSchema,
2904
2995
  ...WorkbenchAndroidSchemas,
2905
2996
  ...ScheduleAndroidSchemas,
2906
2997
  SessionCommunication: SessionCommunicationSchema,
@@ -2914,6 +3005,7 @@ var AndroidProtocolSchemas = {
2914
3005
  SessionDirectoryListResultData: SessionDirectoryListResultDataSchema,
2915
3006
  SessionFileReadData: SessionFileReadDataSchema,
2916
3007
  SessionFileReadResultData: SessionFileReadResultDataSchema,
3008
+ SessionFileReadV2ResultData: SessionFileReadV2ResultDataSchema,
2917
3009
  SessionResourceReadData: SessionResourceReadDataSchema,
2918
3010
  SessionResourceReadResultData: SessionResourceReadResultDataSchema,
2919
3011
  SessionDirectoryListRequest: SessionDirectoryListRequestSchema,
@@ -3003,55 +3095,84 @@ var AndroidProtocolSchemas = {
3003
3095
  };
3004
3096
 
3005
3097
  // 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(
3098
+ import {
3099
+ AgentSelectionSchema as AgentSelectionSchema2,
3100
+ SessionImageRelayUrlSchema,
3101
+ SessionImagesConfigSchema
3102
+ } from "@agentknight/sdk";
3103
+ var BooleanStringSchema = z28.enum(["true", "false"]).default("false").transform((value) => value === "true");
3104
+ var EnabledBooleanStringSchema = z28.enum(["true", "false"]).default("true").transform((value) => value === "true");
3105
+ var OptionalPathSchema = z28.preprocess(
3010
3106
  (value) => typeof value === "string" && value.trim() === "" ? void 0 : value,
3011
- z27.string().trim().min(1).optional()
3107
+ z28.string().trim().min(1).optional()
3012
3108
  );
3013
- var AcpArgumentsSchema = z27.string().default("[]").transform((value, context) => {
3109
+ var AcpArgumentsSchema = z28.string().default("[]").transform((value, context) => {
3014
3110
  let decoded;
3015
3111
  try {
3016
3112
  decoded = JSON.parse(value);
3017
3113
  } catch (error) {
3018
3114
  if (!(error instanceof SyntaxError)) throw error;
3019
3115
  context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
3020
- return z27.NEVER;
3116
+ return z28.NEVER;
3021
3117
  }
3022
- const parsed = z27.array(z27.string()).max(128).safeParse(decoded);
3118
+ const parsed = z28.array(z28.string()).max(128).safeParse(decoded);
3023
3119
  if (!parsed.success) {
3024
3120
  context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
3025
- return z27.NEVER;
3121
+ return z28.NEVER;
3026
3122
  }
3027
3123
  return parsed.data;
3028
3124
  });
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"),
3125
+ var EnvironmentSchema = z28.object({
3126
+ RELAY_URL: z28.url(),
3127
+ RELAY_TOKEN: z28.string().min(24).optional(),
3128
+ RELAY_AUTH: z28.enum(["token", "microsoft"]).optional(),
3129
+ USER_ID: z28.string().trim().min(1).max(256).default("admin"),
3130
+ AGENTKNIGHT_MACHINE_NAME: z28.string().trim().min(1).max(120).optional(),
3131
+ AGENTKNIGHT_HOME: z28.string().trim().min(1).optional(),
3132
+ AGENTKNIGHT_WORKSPACE_ROOT: z28.string().trim().min(1).optional(),
3133
+ AGENTKNIGHT_CODING_AGENT: z28.enum(["managed", "copilot", "pi", "acp"]).default("managed"),
3038
3134
  AGENTKNIGHT_GROUP_CHAT_ENABLED: EnabledBooleanStringSchema,
3039
3135
  AGENTKNIGHT_PEER_CHAT_ENABLED: EnabledBooleanStringSchema,
3040
3136
  PI_CODING_AGENT_DIR: OptionalPathSchema,
3041
3137
  AGENTKNIGHT_ACP_COMMAND: OptionalPathSchema,
3042
3138
  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"),
3139
+ SESSION_REFRESH_INTERVAL_MS: z28.coerce.number().int().min(5e3).max(36e5).default(3e4),
3140
+ HEARTBEAT_INTERVAL_MS: z28.coerce.number().int().min(5e3).max(12e4).default(15e3),
3141
+ LOG_LEVEL: z28.enum(["fatal", "error", "warn", "info", "debug", "trace", "silent"]).default("info"),
3046
3142
  SHOW_PAIRING_QR: BooleanStringSchema,
3047
3143
  PAIRING_PAGE_ENABLED: EnabledBooleanStringSchema,
3048
- PAIRING_PAGE_PORT: z27.coerce.number().int().min(1024).max(65535).default(defaultPairingPagePort),
3144
+ PAIRING_PAGE_PORT: z28.coerce.number().int().min(1024).max(65535).default(defaultPairingPagePort),
3049
3145
  PC_AGENT_EXIT_AFTER_SNAPSHOT: BooleanStringSchema,
3050
3146
  SNAPSHOT_SUPPRESSION_ENABLED: EnabledBooleanStringSchema,
3051
3147
  TIMELINE_COMPRESSION_ENABLED: BooleanStringSchema,
3052
3148
  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)
3149
+ SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE: BooleanStringSchema,
3150
+ SESSION_IMAGES_STORAGE_ACCOUNT: SessionImagesConfigSchema.shape.storageAccount.optional(),
3151
+ SESSION_IMAGES_STORAGE_CONTAINER: SessionImagesConfigSchema.shape.storageContainer.optional(),
3152
+ SECURE_MESSAGE_PACKET_BUDGET: z28.coerce.number().int().min(2048).max(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH).default(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH)
3054
3153
  }).superRefine((value, context) => {
3154
+ if (value.SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE) {
3155
+ if (value.SESSION_IMAGES_STORAGE_ACCOUNT === void 0) {
3156
+ context.addIssue({
3157
+ code: "custom",
3158
+ path: ["SESSION_IMAGES_STORAGE_ACCOUNT"],
3159
+ message: "Session images require an independently configured Azure storage account"
3160
+ });
3161
+ }
3162
+ if (!SessionImageRelayUrlSchema.safeParse(value.RELAY_URL).success) {
3163
+ context.addIssue({
3164
+ code: "custom",
3165
+ path: ["RELAY_URL"],
3166
+ message: "Session images require an HTTPS Relay origin without a path, credentials, query or fragment"
3167
+ });
3168
+ }
3169
+ } else if (value.SESSION_IMAGES_STORAGE_ACCOUNT !== void 0 || value.SESSION_IMAGES_STORAGE_CONTAINER !== void 0) {
3170
+ context.addIssue({
3171
+ code: "custom",
3172
+ path: ["SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE"],
3173
+ message: "Session images require explicit consent to storage that is NOT end-to-end encrypted"
3174
+ });
3175
+ }
3055
3176
  if (value.RELAY_AUTH === "token" && value.RELAY_TOKEN === void 0) {
3056
3177
  context.addIssue({ code: "custom", path: ["RELAY_TOKEN"], message: "Token authentication requires RELAY_TOKEN" });
3057
3178
  }
@@ -3101,8 +3222,8 @@ function loadConfig(environment = process.env, options = {}) {
3101
3222
  }
3102
3223
  return {
3103
3224
  ...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)
3225
+ relayToken: z28.string().min(32).max(4096).parse(options.relayCredential.token),
3226
+ userId: z28.string().min(1).max(256).parse(options.relayCredential.user.userId)
3106
3227
  };
3107
3228
  }
3108
3229
  function loadStartupConfig(environment = process.env, options = {}) {
@@ -3130,7 +3251,14 @@ function loadStartupConfig(environment = process.env, options = {}) {
3130
3251
  snapshotSuppressionEnabled: parsed.SNAPSHOT_SUPPRESSION_ENABLED,
3131
3252
  timelineCompressionEnabled: parsed.TIMELINE_COMPRESSION_ENABLED,
3132
3253
  timelineIncrementalEnabled: parsed.TIMELINE_INCREMENTAL_ENABLED,
3133
- secureMessagePacketBudget: parsed.SECURE_MESSAGE_PACKET_BUDGET
3254
+ secureMessagePacketBudget: parsed.SECURE_MESSAGE_PACKET_BUDGET,
3255
+ ...parsed.SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE ? {
3256
+ sessionImages: SessionImagesConfigSchema.parse({
3257
+ allowUnencryptedStorage: true,
3258
+ storageAccount: parsed.SESSION_IMAGES_STORAGE_ACCOUNT,
3259
+ storageContainer: parsed.SESSION_IMAGES_STORAGE_CONTAINER ?? "session-images"
3260
+ })
3261
+ } : {}
3134
3262
  };
3135
3263
  }
3136
3264
 
@@ -4200,7 +4328,7 @@ import { createHash as createHash3, randomBytes as randomBytes2, timingSafeEqual
4200
4328
  import { createHash as createHash2 } from "node:crypto";
4201
4329
  import { platform } from "node:os";
4202
4330
  import { brotliCompressSync, brotliDecompressSync } from "node:zlib";
4203
- import { z as z28 } from "zod";
4331
+ import { z as z29 } from "zod";
4204
4332
  var STORE_MESSAGES = {
4205
4333
  unavailable: "Unlock your operating system credential store and restart AgentKnight. No file-based credential fallback is available.",
4206
4334
  invalid: "The saved Relay credential is invalid. Recover it in your operating system credential manager before signing in.",
@@ -4233,30 +4361,30 @@ function normalizeRelayOrigin(value) {
4233
4361
  throw new RelayCredentialStoreError("address");
4234
4362
  }
4235
4363
  }
4236
- var ConfirmationSchema = z28.discriminatedUnion("status", [
4237
- z28.object({
4238
- status: z28.literal("pending"),
4239
- confirmBy: z28.number().int().positive(),
4364
+ var ConfirmationSchema = z29.discriminatedUnion("status", [
4365
+ z29.object({
4366
+ status: z29.literal("pending"),
4367
+ confirmBy: z29.number().int().positive(),
4240
4368
  enrollmentId: PcEnrollmentIdSchema,
4241
4369
  verifier: PcEnrollmentVerifierRequestSchema.shape.verifier
4242
4370
  }).strict(),
4243
- z28.object({
4244
- status: z28.literal("confirmed"),
4245
- confirmBy: z28.number().int().positive()
4371
+ z29.object({
4372
+ status: z29.literal("confirmed"),
4373
+ confirmBy: z29.number().int().positive()
4246
4374
  }).strict()
4247
4375
  ]);
4248
- var RelayCredentialSchema = z28.object({
4249
- version: z28.literal(1),
4250
- relayUrl: z28.string().max(2048),
4376
+ var RelayCredentialSchema = z29.object({
4377
+ version: z29.literal(1),
4378
+ relayUrl: z29.string().max(2048),
4251
4379
  machineId: PcEnrollmentStartRequestSchema.shape.machineId,
4252
- token: z28.string().min(32).max(4096),
4253
- tokenId: z28.string().min(1).max(256),
4254
- grantId: z28.uuid(),
4380
+ token: z29.string().min(32).max(4096),
4381
+ tokenId: z29.string().min(1).max(256),
4382
+ grantId: z29.uuid(),
4255
4383
  user: AuthUserSchema,
4256
4384
  confirmation: ConfirmationSchema
4257
4385
  }).strict();
4258
- var SlotsSchema = z28.object({
4259
- version: z28.literal(1),
4386
+ var SlotsSchema = z29.object({
4387
+ version: z29.literal(1),
4260
4388
  pending: RelayCredentialSchema.optional(),
4261
4389
  confirmed: RelayCredentialSchema.optional()
4262
4390
  }).strict();
@@ -5142,7 +5270,7 @@ import { mkdtemp, rm as rm2 } from "node:fs/promises";
5142
5270
  import { createConnection, createServer as createServer2 } from "node:net";
5143
5271
  import { tmpdir } from "node:os";
5144
5272
  import { join as join4, resolve as resolve3 } from "node:path";
5145
- import { z as z30 } from "zod";
5273
+ import { z as z31 } from "zod";
5146
5274
  import { DataDirectoryLease } from "@agentknight/sdk/runtime";
5147
5275
  import {
5148
5276
  PEER_CHAT_TIMEOUT_MS,
@@ -5154,16 +5282,16 @@ import {
5154
5282
  import { randomUUID } from "node:crypto";
5155
5283
  import { mkdir as mkdir2, readFile as readFile2, rename, rm, writeFile as writeFile2 } from "node:fs/promises";
5156
5284
  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()
5285
+ import { z as z30 } from "zod";
5286
+ var UpgradeStateSchema = z30.object({
5287
+ id: z30.uuid(),
5288
+ phase: z30.enum(["preparing", "ready", "waiting-idle", "switching", "verifying", "succeeded", "rolled-back", "failed"]),
5289
+ fromVersion: z30.string(),
5290
+ toVersion: z30.string(),
5291
+ updatedAt: z30.iso.datetime(),
5292
+ error: z30.string().optional()
5165
5293
  });
5166
- var UpgradeSuccessSchema = z29.object({ version: z29.string(), upgradedAt: z29.iso.datetime() });
5294
+ var UpgradeSuccessSchema = z30.object({ version: z30.string(), upgradedAt: z30.iso.datetime() });
5167
5295
  async function readOptionalJson(path) {
5168
5296
  try {
5169
5297
  return JSON.parse(await readFile2(path, "utf8"));
@@ -5193,39 +5321,39 @@ async function readLastUpgrade(directory) {
5193
5321
  }
5194
5322
 
5195
5323
  // 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()
5324
+ var RuntimeDescriptorSchema = z31.object({
5325
+ pid: z31.number().int().positive(),
5326
+ instanceId: z31.uuid(),
5327
+ endpoint: z31.string().min(1),
5328
+ token: z31.string().min(32),
5329
+ upgradeId: z31.uuid().optional()
5202
5330
  });
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()
5331
+ var RuntimeStatusSchema = z31.object({
5332
+ version: z31.string().min(1),
5333
+ pid: z31.number().int().positive(),
5334
+ instanceId: z31.uuid(),
5335
+ ready: z31.boolean(),
5336
+ busy: z31.boolean(),
5337
+ relayUrl: z31.string().url(),
5338
+ identityHash: z31.string().min(1),
5339
+ configPath: z31.string().optional(),
5340
+ configHash: z31.string().optional(),
5341
+ executable: z31.string().min(1),
5342
+ cliPath: z31.string().min(1),
5343
+ cwd: z31.string().min(1),
5344
+ args: z31.array(z31.string()),
5345
+ canRestart: z31.boolean().default(false),
5346
+ restartEnvironment: z31.record(z31.string(), z31.string()).default({}),
5347
+ upgradeId: z31.uuid().optional(),
5348
+ stopping: z31.boolean().optional()
5221
5349
  });
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 })
5350
+ var RequestSchema = z31.discriminatedUnion("command", [
5351
+ z31.object({ token: z31.string(), command: z31.enum(["status", "prepare", "cancel", "stop"]) }),
5352
+ z31.object({ token: z31.string(), command: z31.literal("peer-chat"), payload: PeerChatRequestSchema2 })
5225
5353
  ]);
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() })
5354
+ var ResponseSchema = z31.discriminatedUnion("ok", [
5355
+ z31.object({ ok: z31.literal(true), status: RuntimeStatusSchema.optional(), reply: PeerChatResultSchema.optional() }),
5356
+ z31.object({ ok: z31.literal(false), error: z31.string() })
5229
5357
  ]);
5230
5358
  var MAX_MESSAGE_BYTES = 32 * 1024;
5231
5359
  var MAX_PEER_REQUEST_BYTES = 128 * 1024;
@@ -5488,7 +5616,7 @@ import { randomUUID as randomUUID2 } from "node:crypto";
5488
5616
  import { copyFile as copyFile2, mkdir as mkdir5, open as open2, realpath as realpath2, rm as rm6 } from "node:fs/promises";
5489
5617
  import { dirname as dirname5, join as join9, resolve as resolve8 } from "node:path";
5490
5618
  import { fileURLToPath as fileURLToPath2 } from "node:url";
5491
- import { z as z34 } from "zod";
5619
+ import { z as z35 } from "zod";
5492
5620
 
5493
5621
  // src/upgrade-packages.ts
5494
5622
  import { execFile as execFile2, spawn as spawn2 } from "node:child_process";
@@ -5502,7 +5630,7 @@ import { createHash as createHash5 } from "node:crypto";
5502
5630
  import { open } from "node:fs/promises";
5503
5631
  import { join as join5 } from "node:path";
5504
5632
  import { promisify } from "node:util";
5505
- import { z as z31 } from "zod";
5633
+ import { z as z32 } from "zod";
5506
5634
 
5507
5635
  // src/restart-environment.ts
5508
5636
  import { resolve as resolve4 } from "node:path";
@@ -5540,10 +5668,10 @@ function restartEnvironment(effective, persisted, dataDirectory) {
5540
5668
 
5541
5669
  // src/upgrade-supervisor.ts
5542
5670
  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() })
5671
+ var SupervisorSchema = z32.discriminatedUnion("kind", [
5672
+ z32.object({ kind: z32.literal("process") }),
5673
+ z32.object({ kind: z32.literal("windows-task"), name: z32.string(), path: z32.string(), definitionHash: z32.string() }),
5674
+ z32.object({ kind: z32.literal("launchd"), domain: z32.string(), label: z32.string(), plist: z32.string() })
5547
5675
  ]);
5548
5676
  function globalPackageDirectory(prefix) {
5549
5677
  return process.platform === "win32" ? join5(prefix, "node_modules", "@agentknight", "client") : join5(prefix, "lib", "node_modules", "@agentknight", "client");
@@ -5571,7 +5699,7 @@ async function assertInstallationIdle(prefix, allowedPid) {
5571
5699
  } | ForEach-Object { [int]$_.ProcessId });
5572
5700
  ConvertTo-Json -InputObject $ids -Compress
5573
5701
  `);
5574
- pids = z31.array(z31.number().int().positive()).parse(JSON.parse(result));
5702
+ pids = z32.array(z32.number().int().positive()).parse(JSON.parse(result));
5575
5703
  } else {
5576
5704
  const result = await execute("ps", ["-eo", "pid=,args="], { timeout: 1e4 });
5577
5705
  pids = result.stdout.split("\n").flatMap((line) => {
@@ -5607,7 +5735,7 @@ async function detectSupervisor(runtime) {
5607
5735
  if($matches.Count -gt 1) { throw 'Multiple scheduled tasks match this Agent. Refusing to choose.' };
5608
5736
  if($matches.Count -eq 1) { $matches[0] | ConvertTo-Json -Compress } else { 'null' }
5609
5737
  `);
5610
- const task = z31.object({ name: z31.string(), path: z31.string(), xml: z31.string() }).nullable().parse(JSON.parse(result));
5738
+ const task = z32.object({ name: z32.string(), path: z32.string(), xml: z32.string() }).nullable().parse(JSON.parse(result));
5611
5739
  return task === null ? { kind: "process" } : {
5612
5740
  kind: "windows-task",
5613
5741
  name: task.name,
@@ -6127,13 +6255,13 @@ async function prepareUpgradePackages(options) {
6127
6255
  import { mkdir as mkdir4, readFile as readFile4, rm as rm5, stat } from "node:fs/promises";
6128
6256
  import { createHash as createHash7 } from "node:crypto";
6129
6257
  import { join as join8, resolve as resolve7 } from "node:path";
6130
- import { z as z33 } from "zod";
6258
+ import { z as z34 } from "zod";
6131
6259
 
6132
6260
  // src/upgrade-startup.ts
6133
6261
  import { rename as rename2, rm as rm4 } from "node:fs/promises";
6134
6262
  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() });
6263
+ import { z as z33 } from "zod";
6264
+ var PermitSchema = z33.object({ id: z33.uuid(), version: z33.string(), cliPath: z33.string() });
6137
6265
  function globalUpgradeLockPath(cliPath) {
6138
6266
  const packageDirectory = dirname4(dirname4(cliPath));
6139
6267
  const scope = dirname4(packageDirectory);
@@ -6147,14 +6275,14 @@ async function claimUpgradeStartup(directory, version, cliPath) {
6147
6275
  const globalPath = globalUpgradeLockPath(cliPath);
6148
6276
  const globalLock = globalPath === void 0 ? void 0 : await readOptionalJson(globalPath);
6149
6277
  if (globalLock !== void 0) {
6150
- const globalOwner = z32.object({ id: z32.uuid(), dataDirectory: z32.string() }).parse(globalLock);
6278
+ const globalOwner = z33.object({ id: z33.uuid(), dataDirectory: z33.string() }).parse(globalLock);
6151
6279
  if (lock === void 0 || resolve6(globalOwner.dataDirectory) !== resolve6(directory)) {
6152
6280
  throw new Error("This global installation is being upgraded for another data directory. Wait for that upgrade to finish.");
6153
6281
  }
6154
6282
  }
6155
6283
  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) {
6284
+ const owner = z33.object({ id: z33.uuid() }).parse(lock);
6285
+ if (globalLock !== void 0 && z33.object({ id: z33.uuid() }).parse(globalLock).id !== owner.id) {
6158
6286
  throw new Error("Local and global upgrade ownership disagree; inspect the interrupted upgrade before starting.");
6159
6287
  }
6160
6288
  const path = join7(directory, "run", "upgrade-start.json");
@@ -6171,24 +6299,24 @@ async function claimUpgradeStartup(directory, version, cliPath) {
6171
6299
  }
6172
6300
 
6173
6301
  // 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()
6302
+ var PreparedPackagesSchema = z34.object({
6303
+ targetArchive: z34.string(),
6304
+ rollbackArchive: z34.string(),
6305
+ cacheDirectory: z34.string(),
6306
+ registry: z34.string().url()
6179
6307
  });
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(),
6308
+ var UpgradePlanSchema = z34.object({
6309
+ id: z34.uuid(),
6310
+ dataDirectory: z34.string(),
6311
+ directory: z34.string(),
6312
+ prefix: z34.string(),
6313
+ currentVersion: z34.string(),
6314
+ targetVersion: z34.string(),
6187
6315
  packages: PreparedPackagesSchema,
6188
6316
  runtime: RuntimeStatusSchema.optional(),
6189
6317
  supervisor: SupervisorSchema,
6190
- taskName: z33.string(),
6191
- configHash: z33.string().optional()
6318
+ taskName: z34.string(),
6319
+ configHash: z34.string().optional()
6192
6320
  });
6193
6321
  async function fileHash(path) {
6194
6322
  return createHash7("sha256").update(await readFile4(path)).digest("hex");
@@ -6271,7 +6399,7 @@ async function upgrade(options) {
6271
6399
  const lockPath = join9(root, "upgrade.lock");
6272
6400
  const existing = await readOptionalJson(lockPath);
6273
6401
  if (existing !== void 0) {
6274
- const owner = z34.object({ pid: z34.number().int().positive() }).parse(existing);
6402
+ const owner = z35.object({ pid: z35.number().int().positive() }).parse(existing);
6275
6403
  if (processExists(owner.pid)) throw new Error("Another upgrade is already running. Use agentknight status.");
6276
6404
  throw new Error(`An interrupted upgrade needs review. Read ${join9(root, "status.json")} before removing ${lockPath}.`);
6277
6405
  }
@@ -6569,17 +6697,17 @@ import { initialize, supportsAgentSelection } from "@agentknight/sdk";
6569
6697
 
6570
6698
  // src/chat-settings.ts
6571
6699
  import { join as join11 } from "node:path";
6572
- import { z as z35 } from "zod";
6700
+ import { z as z36 } from "zod";
6573
6701
  var settings = {
6574
6702
  groupChatEnabled: {
6575
6703
  file: "group-chat-settings.json",
6576
6704
  label: "Group chat",
6577
- schema: z35.object({ groupChatEnabled: z35.boolean() }).strict().transform((value) => value.groupChatEnabled)
6705
+ schema: z36.object({ groupChatEnabled: z36.boolean() }).strict().transform((value) => value.groupChatEnabled)
6578
6706
  },
6579
6707
  peerChatEnabled: {
6580
6708
  file: "peer-chat-settings.json",
6581
6709
  label: "Peer chat",
6582
- schema: z35.object({ peerChatEnabled: z35.boolean() }).strict().transform((value) => value.peerChatEnabled)
6710
+ schema: z36.object({ peerChatEnabled: z36.boolean() }).strict().transform((value) => value.peerChatEnabled)
6583
6711
  }
6584
6712
  };
6585
6713
  var ChatSettings = class _ChatSettings {
@@ -6627,14 +6755,14 @@ import { randomUUID as randomUUID3 } from "node:crypto";
6627
6755
  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
6756
  import { homedir as homedir3, hostname } from "node:os";
6629
6757
  import { dirname as dirname6, join as join12, resolve as resolve9 } from "node:path";
6630
- import { z as z36 } from "zod";
6758
+ import { z as z37 } from "zod";
6631
6759
  import { DeviceIdentitySchema } from "@agentknight/sdk";
6632
6760
  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 })
6761
+ var LegacyDeviceIdentitySchema = z37.object({
6762
+ schemaVersion: z37.literal(1),
6763
+ machineId: z37.uuid(),
6764
+ machineName: z37.string().trim().min(1).max(120),
6765
+ createdAt: z37.iso.datetime({ offset: true })
6638
6766
  });
6639
6767
  function resolveMachineName(environment = process.env, fallback = hostname()) {
6640
6768
  const computerName = environment.COMPUTERNAME?.trim();
@@ -6655,7 +6783,7 @@ async function readStableDeviceId(path) {
6655
6783
  const info = await optionalStat(path);
6656
6784
  if (info === void 0) return void 0;
6657
6785
  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());
6786
+ const parsed = z37.uuid().safeParse((await readFile5(path, "utf8")).trim());
6659
6787
  if (!parsed.success) throw new Error(`Invalid device ID in ${path}`, { cause: parsed.error });
6660
6788
  return parsed.data;
6661
6789
  }
@@ -6718,7 +6846,7 @@ async function loadOrCreateDeviceIdentity(dataDirectory, currentMachineName = re
6718
6846
  await requireDirectory(dataDirectory);
6719
6847
  let existing;
6720
6848
  try {
6721
- existing = z36.union([DeviceIdentitySchema, LegacyDeviceIdentitySchema]).parse(
6849
+ existing = z37.union([DeviceIdentitySchema, LegacyDeviceIdentitySchema]).parse(
6722
6850
  JSON.parse(await readFile5(path, "utf8"))
6723
6851
  );
6724
6852
  } catch (error) {