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