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