@agentknight/client 0.9.37 → 0.9.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +927 -744
- package/dist/upgrade-worker.js +165 -24
- 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),
|
|
@@ -1349,8 +1364,66 @@ var SessionProjectIdentityResultDataSchema = z13.object({
|
|
|
1349
1364
|
project: SessionGitProjectSchema.optional()
|
|
1350
1365
|
}).strict();
|
|
1351
1366
|
|
|
1352
|
-
// ../../shared/protocol/dist/sessions/session-
|
|
1367
|
+
// ../../shared/protocol/dist/sessions/session-git-diff.js
|
|
1353
1368
|
import { z as z14 } from "zod";
|
|
1369
|
+
var SESSION_GIT_DIFF_GZIP_MIN_BYTES = 2 * 1024;
|
|
1370
|
+
var SESSION_GIT_DIFF_MAX_FILES = 500;
|
|
1371
|
+
var SESSION_GIT_DIFF_MAX_PATCH_BYTES = 128 * 1024;
|
|
1372
|
+
var SESSION_GIT_DIFF_MAX_RESPONSE_BYTES = 512 * 1024;
|
|
1373
|
+
var SESSION_GIT_DIFF_MAX_TRANSFER_BYTES = SESSION_GIT_DIFF_MAX_RESPONSE_BYTES + 1024;
|
|
1374
|
+
var SESSION_GIT_DIFF_MAX_BASE64_LENGTH = Math.ceil(SESSION_GIT_DIFF_MAX_TRANSFER_BYTES / 3) * 4;
|
|
1375
|
+
var SESSION_GIT_DIFF_MAX_GZIP_RESPONSE_BYTES = SESSION_GIT_DIFF_MAX_BASE64_LENGTH + 1024;
|
|
1376
|
+
var commitSchema = z14.string().regex(/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u);
|
|
1377
|
+
var SessionGitDiffDataSchema = z14.object({
|
|
1378
|
+
rootRevision: SessionFileReadDataSchema.shape.rootRevision,
|
|
1379
|
+
path: SessionFileReadDataSchema.shape.path.optional(),
|
|
1380
|
+
baseCommit: commitSchema.optional()
|
|
1381
|
+
}).strict().refine((value) => value.path === void 0 === (value.baseCommit === void 0), "A file diff must identify its listed base commit");
|
|
1382
|
+
var SessionGitDiffEntrySchema = z14.object({
|
|
1383
|
+
path: SessionFileReadDataSchema.shape.path,
|
|
1384
|
+
status: z14.enum(["added", "modified", "deleted", "untracked"])
|
|
1385
|
+
}).strict();
|
|
1386
|
+
var SessionGitDiffResultDataSchema = z14.object({
|
|
1387
|
+
rootRevision: SessionFileReadDataSchema.shape.rootRevision,
|
|
1388
|
+
baseRef: z14.enum(["origin/main", "main"]),
|
|
1389
|
+
baseCommit: commitSchema,
|
|
1390
|
+
files: z14.array(SessionGitDiffEntrySchema).max(SESSION_GIT_DIFF_MAX_FILES).optional(),
|
|
1391
|
+
path: SessionFileReadDataSchema.shape.path.optional(),
|
|
1392
|
+
patch: z14.string().max(SESSION_GIT_DIFF_MAX_PATCH_BYTES).optional(),
|
|
1393
|
+
binary: z14.boolean().optional()
|
|
1394
|
+
}).strict().superRefine((value, context) => {
|
|
1395
|
+
const encoder = new TextEncoder();
|
|
1396
|
+
if (value.patch !== void 0 && encoder.encode(value.patch).length > SESSION_GIT_DIFF_MAX_PATCH_BYTES || encoder.encode(JSON.stringify(value)).length > SESSION_GIT_DIFF_MAX_RESPONSE_BYTES) {
|
|
1397
|
+
context.addIssue({ code: "custom", message: "Git diff exceeds its transfer limit" });
|
|
1398
|
+
}
|
|
1399
|
+
if (value.path === void 0) {
|
|
1400
|
+
if (value.files === void 0 || value.patch !== void 0 || value.binary !== void 0 || new Set(value.files?.map((entry) => entry.path)).size !== value.files?.length) {
|
|
1401
|
+
context.addIssue({ code: "custom", message: "Expected a unique changed-file list" });
|
|
1402
|
+
}
|
|
1403
|
+
} else if (value.files !== void 0 || value.patch === void 0 || value.binary === void 0 || value.binary && value.patch !== "") {
|
|
1404
|
+
context.addIssue({ code: "custom", message: "Expected a text patch or an explicit binary change" });
|
|
1405
|
+
}
|
|
1406
|
+
});
|
|
1407
|
+
var SessionGitDiffGzipResultDataSchema = z14.object({
|
|
1408
|
+
encoding: z14.literal("gzip"),
|
|
1409
|
+
byteLength: z14.number().int().min(1).max(SESSION_GIT_DIFF_MAX_RESPONSE_BYTES),
|
|
1410
|
+
data: z14.string().max(SESSION_GIT_DIFF_MAX_BASE64_LENGTH).regex(/^[A-Za-z0-9+/]*={0,2}$/u)
|
|
1411
|
+
}).strict().superRefine((value, context) => {
|
|
1412
|
+
const padding = value.data.endsWith("==") ? 2 : value.data.endsWith("=") ? 1 : 0;
|
|
1413
|
+
const bytes = value.data.length / 4 * 3 - padding;
|
|
1414
|
+
const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
1415
|
+
const tail = alphabet.indexOf(value.data[value.data.length - padding - 1] ?? "");
|
|
1416
|
+
if (value.data.length % 4 !== 0 || bytes < 20 || bytes > SESSION_GIT_DIFF_MAX_TRANSFER_BYTES || padding === 2 && (tail & 15) !== 0 || padding === 1 && (tail & 3) !== 0) {
|
|
1417
|
+
context.addIssue({ code: "custom", message: "Invalid gzip transfer" });
|
|
1418
|
+
}
|
|
1419
|
+
});
|
|
1420
|
+
var SessionGitDiffV2ResultDataSchema = z14.union([
|
|
1421
|
+
SessionGitDiffResultDataSchema,
|
|
1422
|
+
SessionGitDiffGzipResultDataSchema
|
|
1423
|
+
]);
|
|
1424
|
+
|
|
1425
|
+
// ../../shared/protocol/dist/sessions/session-resource.js
|
|
1426
|
+
import { z as z15 } from "zod";
|
|
1354
1427
|
var SESSION_RESOURCE_MAX_ORIGINAL_BYTES = 499999;
|
|
1355
1428
|
var SESSION_RESOURCE_GZIP_THRESHOLD_BYTES = 20 * 1024;
|
|
1356
1429
|
var SESSION_RESOURCE_MAX_IMAGE_PIXELS = 16 * 1024 * 1024;
|
|
@@ -1364,18 +1437,18 @@ var SESSION_RESOURCE_MEDIA_TYPES = [
|
|
|
1364
1437
|
"text/css",
|
|
1365
1438
|
"text/javascript"
|
|
1366
1439
|
];
|
|
1367
|
-
var SessionResourceReadDataSchema =
|
|
1368
|
-
path:
|
|
1369
|
-
rootRevision:
|
|
1440
|
+
var SessionResourceReadDataSchema = z15.object({
|
|
1441
|
+
path: z15.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
|
|
1442
|
+
rootRevision: z15.string().regex(/^[A-Za-z0-9_-]{43}$/u)
|
|
1370
1443
|
}).strict();
|
|
1371
|
-
var SessionResourceReadResultDataSchema =
|
|
1444
|
+
var SessionResourceReadResultDataSchema = z15.object({
|
|
1372
1445
|
path: SessionResourceReadDataSchema.shape.path,
|
|
1373
1446
|
rootRevision: SessionResourceReadDataSchema.shape.rootRevision,
|
|
1374
|
-
mediaType:
|
|
1375
|
-
originalByteLength:
|
|
1376
|
-
byteLength:
|
|
1377
|
-
encoding:
|
|
1378
|
-
data:
|
|
1447
|
+
mediaType: z15.enum(SESSION_RESOURCE_MEDIA_TYPES),
|
|
1448
|
+
originalByteLength: z15.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
|
|
1449
|
+
byteLength: z15.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
|
|
1450
|
+
encoding: z15.enum(["identity", "gzip"]),
|
|
1451
|
+
data: z15.string().max(SESSION_RESOURCE_MAX_BASE64_LENGTH)
|
|
1379
1452
|
}).strict().superRefine((result, context) => {
|
|
1380
1453
|
const invalid = () => context.addIssue({ code: "custom", message: "Invalid resource content" });
|
|
1381
1454
|
if (result.encoding === "gzip" !== result.originalByteLength >= SESSION_RESOURCE_GZIP_THRESHOLD_BYTES || result.byteLength !== result.originalByteLength || result.mediaType.startsWith("image/") && result.byteLength === 0)
|
|
@@ -1387,54 +1460,116 @@ var SessionResourceReadResultDataSchema = z14.object({
|
|
|
1387
1460
|
invalid();
|
|
1388
1461
|
});
|
|
1389
1462
|
|
|
1463
|
+
// ../../shared/protocol/dist/sessions/session-images.js
|
|
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
|
+
|
|
1390
1525
|
// ../../shared/protocol/dist/sessions/session-rename.js
|
|
1391
|
-
import { z as
|
|
1526
|
+
import { z as z17 } from "zod";
|
|
1392
1527
|
var SESSION_RENAME_OPERATION = "session.rename";
|
|
1393
1528
|
var SESSION_RENAME_VERSION = 1;
|
|
1394
1529
|
var SESSION_RENAME_CAPABILITY = sessionCommunicationOperationCapability(SESSION_RENAME_OPERATION, SESSION_RENAME_VERSION);
|
|
1395
1530
|
var SESSION_NAME_MAX_LENGTH = 100;
|
|
1396
|
-
var SessionNameSchema =
|
|
1397
|
-
var SessionRenameDataSchema =
|
|
1398
|
-
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();
|
|
1399
1534
|
|
|
1400
1535
|
// ../../shared/protocol/dist/sessions/sessions.js
|
|
1401
|
-
import { z as
|
|
1402
|
-
var GroupChatParticipantSchema =
|
|
1536
|
+
import { z as z18 } from "zod";
|
|
1537
|
+
var GroupChatParticipantSchema = z18.object({
|
|
1403
1538
|
sessionId: IdSchema,
|
|
1404
|
-
title:
|
|
1539
|
+
title: z18.string().trim().min(1).max(260)
|
|
1405
1540
|
}).strict();
|
|
1406
|
-
var GroupChatInfoSchema =
|
|
1407
|
-
participants:
|
|
1408
|
-
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"])
|
|
1409
1544
|
}).strict();
|
|
1410
|
-
var SessionSummarySchema =
|
|
1545
|
+
var SessionSummarySchema = z18.object({
|
|
1411
1546
|
userId: IdSchema,
|
|
1412
1547
|
sessionId: IdSchema,
|
|
1413
1548
|
machineId: IdSchema,
|
|
1414
|
-
summary:
|
|
1415
|
-
renameSupported:
|
|
1416
|
-
workingDirectory:
|
|
1417
|
-
gitRoot:
|
|
1418
|
-
repository:
|
|
1419
|
-
gitRemoteUrl:
|
|
1420
|
-
branch:
|
|
1421
|
-
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(),
|
|
1422
1557
|
createdAt: IsoDateSchema,
|
|
1423
1558
|
modifiedAt: IsoDateSchema,
|
|
1424
1559
|
groupChat: GroupChatInfoSchema.optional()
|
|
1425
1560
|
});
|
|
1426
|
-
var SessionsSnapshotSchema =
|
|
1561
|
+
var SessionsSnapshotSchema = z18.object({
|
|
1427
1562
|
userId: IdSchema,
|
|
1428
1563
|
machineId: IdSchema,
|
|
1429
|
-
machineName:
|
|
1430
|
-
platform:
|
|
1564
|
+
machineName: z18.string().trim().min(1).max(120),
|
|
1565
|
+
platform: z18.string().trim().min(1).max(64),
|
|
1431
1566
|
agentRunId: IdSchema,
|
|
1432
|
-
sequence:
|
|
1567
|
+
sequence: z18.number().int().positive(),
|
|
1433
1568
|
generatedAt: IsoDateSchema,
|
|
1434
|
-
complete:
|
|
1435
|
-
totalCount:
|
|
1436
|
-
nextCursor:
|
|
1437
|
-
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)
|
|
1438
1573
|
}).superRefine((snapshot, context) => {
|
|
1439
1574
|
if (snapshot.totalCount < snapshot.sessions.length) {
|
|
1440
1575
|
context.addIssue({
|
|
@@ -1476,47 +1611,47 @@ var SessionsSnapshotSchema = z16.object({
|
|
|
1476
1611
|
sessionIds.add(session.sessionId);
|
|
1477
1612
|
}
|
|
1478
1613
|
});
|
|
1479
|
-
var SessionListRequestSchema =
|
|
1614
|
+
var SessionListRequestSchema = z18.object({
|
|
1480
1615
|
requestId: IdSchema,
|
|
1481
1616
|
machineId: IdSchema,
|
|
1482
|
-
cursor:
|
|
1617
|
+
cursor: z18.string().min(1).max(1024).optional()
|
|
1483
1618
|
});
|
|
1484
|
-
var SessionListResultSchema =
|
|
1485
|
-
|
|
1486
|
-
ok:
|
|
1619
|
+
var SessionListResultSchema = z18.discriminatedUnion("ok", [
|
|
1620
|
+
z18.object({
|
|
1621
|
+
ok: z18.literal(true),
|
|
1487
1622
|
requestId: IdSchema,
|
|
1488
1623
|
machineId: IdSchema,
|
|
1489
1624
|
snapshot: SessionsSnapshotSchema
|
|
1490
1625
|
}),
|
|
1491
|
-
|
|
1492
|
-
ok:
|
|
1626
|
+
z18.object({
|
|
1627
|
+
ok: z18.literal(false),
|
|
1493
1628
|
requestId: IdSchema,
|
|
1494
1629
|
machineId: IdSchema,
|
|
1495
1630
|
error: ProtocolFailureSchema
|
|
1496
1631
|
})
|
|
1497
1632
|
]);
|
|
1498
|
-
var SessionAgentModeSchema =
|
|
1633
|
+
var SessionAgentModeSchema = z18.enum([
|
|
1499
1634
|
"interactive",
|
|
1500
1635
|
"plan",
|
|
1501
1636
|
"autopilot"
|
|
1502
1637
|
]);
|
|
1503
|
-
var AgentConfigurationOptionSchema =
|
|
1638
|
+
var AgentConfigurationOptionSchema = z18.object({
|
|
1504
1639
|
id: IdSchema,
|
|
1505
|
-
name:
|
|
1506
|
-
value:
|
|
1507
|
-
options:
|
|
1508
|
-
value:
|
|
1509
|
-
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)
|
|
1510
1645
|
}).strict()).min(1).max(100)
|
|
1511
1646
|
}).strict();
|
|
1512
|
-
var AgentConfigurationChangeSchema =
|
|
1647
|
+
var AgentConfigurationChangeSchema = z18.object({
|
|
1513
1648
|
id: IdSchema,
|
|
1514
|
-
value:
|
|
1649
|
+
value: z18.string().min(1).max(256)
|
|
1515
1650
|
}).strict();
|
|
1516
|
-
var WorkspaceOptionSchema =
|
|
1651
|
+
var WorkspaceOptionSchema = z18.object({
|
|
1517
1652
|
id: IdSchema,
|
|
1518
|
-
name:
|
|
1519
|
-
path:
|
|
1653
|
+
name: z18.string().trim().min(1).max(260),
|
|
1654
|
+
path: z18.string().trim().min(1).max(32768)
|
|
1520
1655
|
});
|
|
1521
1656
|
var REASONING_EFFORTS = [
|
|
1522
1657
|
"low",
|
|
@@ -1525,112 +1660,112 @@ var REASONING_EFFORTS = [
|
|
|
1525
1660
|
"xhigh",
|
|
1526
1661
|
"max"
|
|
1527
1662
|
];
|
|
1528
|
-
var ReasoningEffortSchema =
|
|
1529
|
-
var CopilotModelOptionSchema =
|
|
1663
|
+
var ReasoningEffortSchema = z18.enum(REASONING_EFFORTS);
|
|
1664
|
+
var CopilotModelOptionSchema = z18.object({
|
|
1530
1665
|
id: IdSchema,
|
|
1531
|
-
name:
|
|
1532
|
-
isDefault:
|
|
1533
|
-
supportedReasoningEfforts:
|
|
1666
|
+
name: z18.string().trim().min(1).max(260),
|
|
1667
|
+
isDefault: z18.boolean(),
|
|
1668
|
+
supportedReasoningEfforts: z18.array(ReasoningEffortSchema).optional(),
|
|
1534
1669
|
defaultReasoningEffort: ReasoningEffortSchema.optional(),
|
|
1535
|
-
creation:
|
|
1670
|
+
creation: z18.object({
|
|
1536
1671
|
agentId: IdSchema,
|
|
1537
|
-
agentName:
|
|
1538
|
-
modelName:
|
|
1539
|
-
agentModes:
|
|
1540
|
-
reasoningEffortConfigurationSupported:
|
|
1541
|
-
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()
|
|
1542
1677
|
}).strict().optional()
|
|
1543
1678
|
});
|
|
1544
|
-
var SessionReasoningEffortSchema =
|
|
1679
|
+
var SessionReasoningEffortSchema = z18.enum([
|
|
1545
1680
|
"default",
|
|
1546
1681
|
...REASONING_EFFORTS
|
|
1547
1682
|
]);
|
|
1548
|
-
var CurrentReasoningEffortSchema =
|
|
1549
|
-
var SessionToolInfoSchema =
|
|
1550
|
-
name:
|
|
1551
|
-
description:
|
|
1552
|
-
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()
|
|
1553
1688
|
});
|
|
1554
|
-
var SessionSlashCommandInfoSchema =
|
|
1555
|
-
name:
|
|
1556
|
-
description:
|
|
1557
|
-
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"])
|
|
1558
1693
|
});
|
|
1559
|
-
var SessionSkillInfoSchema =
|
|
1560
|
-
name:
|
|
1561
|
-
description:
|
|
1562
|
-
source:
|
|
1563
|
-
enabled:
|
|
1564
|
-
userInvocable:
|
|
1565
|
-
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()
|
|
1566
1701
|
});
|
|
1567
|
-
var SessionEnvironmentInfoSchema =
|
|
1568
|
-
tools:
|
|
1569
|
-
slashCommands:
|
|
1570
|
-
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)
|
|
1571
1706
|
});
|
|
1572
|
-
var SessionOptionsRequestSchema =
|
|
1707
|
+
var SessionOptionsRequestSchema = z18.object({
|
|
1573
1708
|
requestId: IdSchema,
|
|
1574
1709
|
machineId: IdSchema,
|
|
1575
1710
|
sessionId: IdSchema.optional(),
|
|
1576
1711
|
workspaceId: IdSchema.optional(),
|
|
1577
|
-
capabilities:
|
|
1712
|
+
capabilities: z18.array(IdSchema).max(64).optional()
|
|
1578
1713
|
});
|
|
1579
|
-
var SessionOptionsResultSchema =
|
|
1580
|
-
|
|
1581
|
-
ok:
|
|
1714
|
+
var SessionOptionsResultSchema = z18.discriminatedUnion("ok", [
|
|
1715
|
+
z18.object({
|
|
1716
|
+
ok: z18.literal(true),
|
|
1582
1717
|
requestId: IdSchema,
|
|
1583
1718
|
machineId: IdSchema,
|
|
1584
1719
|
sessionId: IdSchema.optional(),
|
|
1585
|
-
workspaces:
|
|
1586
|
-
models:
|
|
1587
|
-
modelRefreshError:
|
|
1588
|
-
agentModes:
|
|
1589
|
-
reasoningEffortConfigurationSupported:
|
|
1590
|
-
fileAttachmentsSupported:
|
|
1591
|
-
worktreeCreationSupported:
|
|
1592
|
-
worktreeBranches:
|
|
1593
|
-
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(),
|
|
1594
1729
|
currentModelId: IdSchema.optional(),
|
|
1595
1730
|
currentAgentMode: SessionAgentModeSchema.optional(),
|
|
1596
1731
|
currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
|
|
1597
1732
|
environment: SessionEnvironmentInfoSchema.optional(),
|
|
1598
|
-
agentName:
|
|
1599
|
-
configOptions:
|
|
1733
|
+
agentName: z18.string().trim().min(1).max(260).optional(),
|
|
1734
|
+
configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
|
|
1600
1735
|
}),
|
|
1601
|
-
|
|
1602
|
-
ok:
|
|
1736
|
+
z18.object({
|
|
1737
|
+
ok: z18.literal(false),
|
|
1603
1738
|
requestId: IdSchema,
|
|
1604
1739
|
machineId: IdSchema,
|
|
1605
1740
|
sessionId: IdSchema.optional(),
|
|
1606
1741
|
error: ProtocolFailureSchema,
|
|
1607
|
-
failureStage:
|
|
1608
|
-
models:
|
|
1609
|
-
agentModes:
|
|
1610
|
-
reasoningEffortConfigurationSupported:
|
|
1611
|
-
fileAttachmentsSupported:
|
|
1742
|
+
failureStage: z18.enum(["models", "configuration", "workspaces"]).optional(),
|
|
1743
|
+
models: z18.array(CopilotModelOptionSchema).min(1).optional(),
|
|
1744
|
+
agentModes: z18.array(SessionAgentModeSchema).min(1).optional(),
|
|
1745
|
+
reasoningEffortConfigurationSupported: z18.literal(true).optional(),
|
|
1746
|
+
fileAttachmentsSupported: z18.boolean().optional(),
|
|
1612
1747
|
currentModelId: IdSchema.optional(),
|
|
1613
1748
|
currentAgentMode: SessionAgentModeSchema.optional(),
|
|
1614
1749
|
currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
|
|
1615
|
-
agentName:
|
|
1616
|
-
configOptions:
|
|
1750
|
+
agentName: z18.string().trim().min(1).max(260).optional(),
|
|
1751
|
+
configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
|
|
1617
1752
|
})
|
|
1618
1753
|
]);
|
|
1619
|
-
var SessionCreateRequestSchema =
|
|
1754
|
+
var SessionCreateRequestSchema = z18.object({
|
|
1620
1755
|
requestId: IdSchema,
|
|
1621
1756
|
machineId: IdSchema,
|
|
1622
1757
|
workspaceId: IdSchema,
|
|
1623
1758
|
modelId: IdSchema,
|
|
1624
1759
|
agentMode: SessionAgentModeSchema,
|
|
1625
1760
|
reasoningEffort: SessionReasoningEffortSchema.optional(),
|
|
1626
|
-
worktree:
|
|
1627
|
-
branchName:
|
|
1628
|
-
baseBranch:
|
|
1761
|
+
worktree: z18.object({
|
|
1762
|
+
branchName: z18.string().trim().min(1).max(120).optional(),
|
|
1763
|
+
baseBranch: z18.string().trim().min(1).max(1024).optional()
|
|
1629
1764
|
}).strict().optional()
|
|
1630
1765
|
});
|
|
1631
|
-
var SessionCreateResultSchema =
|
|
1632
|
-
|
|
1633
|
-
ok:
|
|
1766
|
+
var SessionCreateResultSchema = z18.discriminatedUnion("ok", [
|
|
1767
|
+
z18.object({
|
|
1768
|
+
ok: z18.literal(true),
|
|
1634
1769
|
requestId: IdSchema,
|
|
1635
1770
|
machineId: IdSchema,
|
|
1636
1771
|
session: SessionSummarySchema,
|
|
@@ -1638,34 +1773,34 @@ var SessionCreateResultSchema = z16.discriminatedUnion("ok", [
|
|
|
1638
1773
|
agentMode: SessionAgentModeSchema,
|
|
1639
1774
|
reasoningEffort: SessionReasoningEffortSchema.optional()
|
|
1640
1775
|
}),
|
|
1641
|
-
|
|
1642
|
-
ok:
|
|
1776
|
+
z18.object({
|
|
1777
|
+
ok: z18.literal(false),
|
|
1643
1778
|
requestId: IdSchema,
|
|
1644
1779
|
machineId: IdSchema,
|
|
1645
1780
|
error: ProtocolFailureSchema
|
|
1646
1781
|
})
|
|
1647
1782
|
]);
|
|
1648
|
-
var SessionDeleteRequestSchema =
|
|
1783
|
+
var SessionDeleteRequestSchema = z18.object({
|
|
1649
1784
|
requestId: IdSchema,
|
|
1650
1785
|
machineId: IdSchema,
|
|
1651
1786
|
sessionId: IdSchema
|
|
1652
1787
|
}).strict();
|
|
1653
|
-
var SessionDeleteResultSchema =
|
|
1654
|
-
|
|
1655
|
-
ok:
|
|
1788
|
+
var SessionDeleteResultSchema = z18.discriminatedUnion("ok", [
|
|
1789
|
+
z18.object({
|
|
1790
|
+
ok: z18.literal(true),
|
|
1656
1791
|
requestId: IdSchema,
|
|
1657
1792
|
machineId: IdSchema,
|
|
1658
1793
|
sessionId: IdSchema
|
|
1659
1794
|
}).strict(),
|
|
1660
|
-
|
|
1661
|
-
ok:
|
|
1795
|
+
z18.object({
|
|
1796
|
+
ok: z18.literal(false),
|
|
1662
1797
|
requestId: IdSchema,
|
|
1663
1798
|
machineId: IdSchema,
|
|
1664
1799
|
sessionId: IdSchema,
|
|
1665
1800
|
error: ProtocolFailureSchema
|
|
1666
1801
|
}).strict()
|
|
1667
1802
|
]);
|
|
1668
|
-
var SessionConfigureRequestSchema =
|
|
1803
|
+
var SessionConfigureRequestSchema = z18.object({
|
|
1669
1804
|
requestId: IdSchema,
|
|
1670
1805
|
machineId: IdSchema,
|
|
1671
1806
|
sessionId: IdSchema,
|
|
@@ -1674,59 +1809,59 @@ var SessionConfigureRequestSchema = z16.object({
|
|
|
1674
1809
|
reasoningEffort: SessionReasoningEffortSchema.optional(),
|
|
1675
1810
|
configOption: AgentConfigurationChangeSchema.optional()
|
|
1676
1811
|
}).refine((request) => request.modelId !== void 0 || request.agentMode !== void 0 || request.reasoningEffort !== void 0 || request.configOption !== void 0, { message: "A modelId, agentMode, reasoningEffort, or configOption change is required" });
|
|
1677
|
-
var SessionConfigureResultSchema =
|
|
1678
|
-
|
|
1679
|
-
ok:
|
|
1812
|
+
var SessionConfigureResultSchema = z18.discriminatedUnion("ok", [
|
|
1813
|
+
z18.object({
|
|
1814
|
+
ok: z18.literal(true),
|
|
1680
1815
|
requestId: IdSchema,
|
|
1681
1816
|
machineId: IdSchema,
|
|
1682
1817
|
sessionId: IdSchema,
|
|
1683
1818
|
modelId: IdSchema.optional(),
|
|
1684
1819
|
agentMode: SessionAgentModeSchema,
|
|
1685
1820
|
reasoningEffort: CurrentReasoningEffortSchema.optional(),
|
|
1686
|
-
configOptions:
|
|
1821
|
+
configOptions: z18.array(AgentConfigurationOptionSchema).max(32).optional()
|
|
1687
1822
|
}),
|
|
1688
|
-
|
|
1689
|
-
ok:
|
|
1823
|
+
z18.object({
|
|
1824
|
+
ok: z18.literal(false),
|
|
1690
1825
|
requestId: IdSchema,
|
|
1691
1826
|
machineId: IdSchema,
|
|
1692
1827
|
sessionId: IdSchema,
|
|
1693
1828
|
error: ProtocolFailureSchema
|
|
1694
1829
|
})
|
|
1695
1830
|
]);
|
|
1696
|
-
var SessionRemoteActionSchema =
|
|
1831
|
+
var SessionRemoteActionSchema = z18.enum([
|
|
1697
1832
|
"status",
|
|
1698
1833
|
"enable",
|
|
1699
1834
|
"disable"
|
|
1700
1835
|
]);
|
|
1701
|
-
var SessionRemoteStateSchema =
|
|
1836
|
+
var SessionRemoteStateSchema = z18.enum([
|
|
1702
1837
|
"off",
|
|
1703
1838
|
"connecting",
|
|
1704
1839
|
"active",
|
|
1705
1840
|
"error"
|
|
1706
1841
|
]);
|
|
1707
|
-
var SessionRemoteRequestSchema =
|
|
1842
|
+
var SessionRemoteRequestSchema = z18.object({
|
|
1708
1843
|
requestId: IdSchema,
|
|
1709
1844
|
machineId: IdSchema,
|
|
1710
1845
|
sessionId: IdSchema,
|
|
1711
1846
|
action: SessionRemoteActionSchema
|
|
1712
1847
|
});
|
|
1713
|
-
var SessionRemoteStatusSchema =
|
|
1848
|
+
var SessionRemoteStatusSchema = z18.object({
|
|
1714
1849
|
state: SessionRemoteStateSchema,
|
|
1715
1850
|
attachedSessionId: IdSchema.optional(),
|
|
1716
|
-
url:
|
|
1717
|
-
steerable:
|
|
1851
|
+
url: z18.url().max(32768).optional(),
|
|
1852
|
+
steerable: z18.boolean(),
|
|
1718
1853
|
error: ProtocolFailureSchema.optional()
|
|
1719
1854
|
});
|
|
1720
|
-
var SessionRemoteResultSchema =
|
|
1721
|
-
|
|
1722
|
-
ok:
|
|
1855
|
+
var SessionRemoteResultSchema = z18.discriminatedUnion("ok", [
|
|
1856
|
+
z18.object({
|
|
1857
|
+
ok: z18.literal(true),
|
|
1723
1858
|
requestId: IdSchema,
|
|
1724
1859
|
machineId: IdSchema,
|
|
1725
1860
|
sessionId: IdSchema,
|
|
1726
1861
|
status: SessionRemoteStatusSchema
|
|
1727
1862
|
}),
|
|
1728
|
-
|
|
1729
|
-
ok:
|
|
1863
|
+
z18.object({
|
|
1864
|
+
ok: z18.literal(false),
|
|
1730
1865
|
requestId: IdSchema,
|
|
1731
1866
|
machineId: IdSchema,
|
|
1732
1867
|
sessionId: IdSchema,
|
|
@@ -1735,42 +1870,42 @@ var SessionRemoteResultSchema = z16.discriminatedUnion("ok", [
|
|
|
1735
1870
|
]);
|
|
1736
1871
|
|
|
1737
1872
|
// ../../shared/protocol/dist/sessions/group-chat.js
|
|
1738
|
-
import { z as
|
|
1873
|
+
import { z as z19 } from "zod";
|
|
1739
1874
|
var GROUP_CHAT_CREATE_OPERATION = "group-chat.create";
|
|
1740
1875
|
var GROUP_CHAT_CREATE_VERSION = 1;
|
|
1741
1876
|
var GROUP_CHAT_CREATE_CAPABILITY = sessionCommunicationOperationCapability(GROUP_CHAT_CREATE_OPERATION, GROUP_CHAT_CREATE_VERSION);
|
|
1742
|
-
var GroupChatCreateDataSchema =
|
|
1877
|
+
var GroupChatCreateDataSchema = z19.object({
|
|
1743
1878
|
peerSessionId: IdSchema
|
|
1744
1879
|
}).strict();
|
|
1745
|
-
var GroupChatCreateResultDataSchema =
|
|
1880
|
+
var GroupChatCreateResultDataSchema = z19.object({
|
|
1746
1881
|
session: SessionSummarySchema.refine((session) => session.groupChat !== void 0, "Group creation must return a virtual group session")
|
|
1747
1882
|
}).strict();
|
|
1748
1883
|
|
|
1749
1884
|
// ../../shared/protocol/dist/sessions/prompts.js
|
|
1750
|
-
import { z as
|
|
1885
|
+
import { z as z23 } from "zod";
|
|
1751
1886
|
|
|
1752
1887
|
// ../../shared/protocol/dist/conversation/attachments.js
|
|
1753
|
-
import { z as
|
|
1888
|
+
import { z as z20 } from "zod";
|
|
1754
1889
|
var MAX_INLINE_IMAGE_BYTES = 3 * 1024 * 1024;
|
|
1755
1890
|
var MAX_INLINE_HTML_BYTES = 512 * 1024;
|
|
1756
1891
|
var MAX_PROMPT_FILE_BYTES = 1024 * 1024;
|
|
1757
|
-
var InlineImageMimeTypeSchema =
|
|
1892
|
+
var InlineImageMimeTypeSchema = z20.enum([
|
|
1758
1893
|
"image/gif",
|
|
1759
1894
|
"image/jpeg",
|
|
1760
1895
|
"image/png",
|
|
1761
1896
|
"image/webp"
|
|
1762
1897
|
]);
|
|
1763
|
-
var Base64DataSchema =
|
|
1764
|
-
var Sha256Schema =
|
|
1898
|
+
var Base64DataSchema = z20.string().min(4).max(Math.ceil(MAX_INLINE_IMAGE_BYTES / 3) * 4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/, "Expected canonical base64 data");
|
|
1899
|
+
var Sha256Schema = z20.string().regex(/^[a-f0-9]{64}$/);
|
|
1765
1900
|
function decodedBase64ByteLength(value) {
|
|
1766
1901
|
const padding = value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0;
|
|
1767
1902
|
return value.length / 4 * 3 - padding;
|
|
1768
1903
|
}
|
|
1769
|
-
var PromptImageAttachmentSchema =
|
|
1770
|
-
name:
|
|
1771
|
-
mimeType:
|
|
1904
|
+
var PromptImageAttachmentSchema = z20.object({
|
|
1905
|
+
name: z20.string().trim().min(1).max(255),
|
|
1906
|
+
mimeType: z20.enum(["image/jpeg", "image/png", "image/webp"]),
|
|
1772
1907
|
data: Base64DataSchema,
|
|
1773
|
-
byteLength:
|
|
1908
|
+
byteLength: z20.number().int().positive().max(MAX_INLINE_IMAGE_BYTES),
|
|
1774
1909
|
sha256: Sha256Schema
|
|
1775
1910
|
}).strict().superRefine((attachment, context) => {
|
|
1776
1911
|
if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
|
|
@@ -1781,11 +1916,11 @@ var PromptImageAttachmentSchema = z18.object({
|
|
|
1781
1916
|
});
|
|
1782
1917
|
}
|
|
1783
1918
|
});
|
|
1784
|
-
var PromptFileAttachmentSchema =
|
|
1785
|
-
name:
|
|
1786
|
-
mimeType:
|
|
1919
|
+
var PromptFileAttachmentSchema = z20.object({
|
|
1920
|
+
name: z20.string().trim().min(1).max(255).regex(/^[^\\/\x00-\x1f\x7f]+$/).refine((name) => name !== "." && name !== "..", "Expected a filename"),
|
|
1921
|
+
mimeType: z20.string().max(256).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
|
|
1787
1922
|
data: Base64DataSchema.max(Math.ceil(MAX_PROMPT_FILE_BYTES / 3) * 4),
|
|
1788
|
-
byteLength:
|
|
1923
|
+
byteLength: z20.number().int().positive().max(MAX_PROMPT_FILE_BYTES),
|
|
1789
1924
|
sha256: Sha256Schema
|
|
1790
1925
|
}).strict().superRefine((attachment, context) => {
|
|
1791
1926
|
if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
|
|
@@ -1796,8 +1931,8 @@ var PromptFileAttachmentSchema = z18.object({
|
|
|
1796
1931
|
});
|
|
1797
1932
|
}
|
|
1798
1933
|
});
|
|
1799
|
-
var ConversationAttachmentSchema =
|
|
1800
|
-
kind:
|
|
1934
|
+
var ConversationAttachmentSchema = z20.object({
|
|
1935
|
+
kind: z20.enum([
|
|
1801
1936
|
"file",
|
|
1802
1937
|
"image",
|
|
1803
1938
|
"html",
|
|
@@ -1805,13 +1940,13 @@ var ConversationAttachmentSchema = z18.object({
|
|
|
1805
1940
|
"github-reference",
|
|
1806
1941
|
"unknown"
|
|
1807
1942
|
]),
|
|
1808
|
-
name:
|
|
1809
|
-
mimeType:
|
|
1810
|
-
uri:
|
|
1943
|
+
name: z20.string().trim().min(1).max(1024),
|
|
1944
|
+
mimeType: z20.string().trim().min(1).max(256).optional(),
|
|
1945
|
+
uri: z20.string().trim().min(1).max(32768).optional(),
|
|
1811
1946
|
data: Base64DataSchema.optional(),
|
|
1812
|
-
byteLength:
|
|
1947
|
+
byteLength: z20.number().int().positive().max(MAX_INLINE_IMAGE_BYTES).optional(),
|
|
1813
1948
|
sha256: Sha256Schema.optional(),
|
|
1814
|
-
imageRef:
|
|
1949
|
+
imageRef: z20.literal("sha256").optional()
|
|
1815
1950
|
}).strict().superRefine((attachment, context) => {
|
|
1816
1951
|
if (attachment.imageRef !== void 0) {
|
|
1817
1952
|
if (attachment.kind !== "image" || attachment.data !== void 0 || attachment.sha256 === void 0 || attachment.byteLength === void 0 || !InlineImageMimeTypeSchema.safeParse(attachment.mimeType).success) {
|
|
@@ -1869,20 +2004,20 @@ var ConversationAttachmentSchema = z18.object({
|
|
|
1869
2004
|
});
|
|
1870
2005
|
|
|
1871
2006
|
// ../../shared/protocol/dist/conversation/timeline.js
|
|
1872
|
-
import { z as
|
|
2007
|
+
import { z as z22 } from "zod";
|
|
1873
2008
|
|
|
1874
2009
|
// ../../shared/protocol/dist/conversation/conversation.js
|
|
1875
|
-
import { z as
|
|
2010
|
+
import { z as z21 } from "zod";
|
|
1876
2011
|
var CONVERSATION_ACTIVITY_STEP_LIMIT = 1e3;
|
|
1877
2012
|
var CONVERSATION_SOURCE_ID_LIMIT = 1e3;
|
|
1878
2013
|
var ConversationItemBaseShape = {
|
|
1879
2014
|
id: IdSchema,
|
|
1880
|
-
revision:
|
|
2015
|
+
revision: z21.number().int().positive(),
|
|
1881
2016
|
turnId: IdSchema,
|
|
1882
2017
|
timestamp: IsoDateSchema,
|
|
1883
|
-
sourceEventIds:
|
|
1884
|
-
sourceMessageIds:
|
|
1885
|
-
sourceInteractionIds:
|
|
2018
|
+
sourceEventIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT),
|
|
2019
|
+
sourceMessageIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional(),
|
|
2020
|
+
sourceInteractionIds: z21.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional()
|
|
1886
2021
|
};
|
|
1887
2022
|
var MAX_INLINE_IMAGE_MESSAGE_BYTES = 3 * 1024 * 1024;
|
|
1888
2023
|
var MAX_INLINE_IMAGES_PER_MESSAGE = 4;
|
|
@@ -1890,67 +2025,67 @@ var ActivityStepTimeShape = {
|
|
|
1890
2025
|
// First observed event time; completion updates must not move an existing call.
|
|
1891
2026
|
timestamp: IsoDateSchema.optional()
|
|
1892
2027
|
};
|
|
1893
|
-
var ConversationToolStepSchema =
|
|
2028
|
+
var ConversationToolStepSchema = z21.object({
|
|
1894
2029
|
id: IdSchema,
|
|
1895
|
-
kind:
|
|
1896
|
-
name:
|
|
1897
|
-
status:
|
|
2030
|
+
kind: z21.literal("tool"),
|
|
2031
|
+
name: z21.string().trim().min(1).max(256),
|
|
2032
|
+
status: z21.enum(["running", "completed", "failed"]),
|
|
1898
2033
|
...ActivityStepTimeShape
|
|
1899
2034
|
}).strict();
|
|
1900
|
-
var ConversationSkillStepSchema =
|
|
2035
|
+
var ConversationSkillStepSchema = z21.object({
|
|
1901
2036
|
id: IdSchema,
|
|
1902
|
-
kind:
|
|
1903
|
-
name:
|
|
1904
|
-
status:
|
|
1905
|
-
description:
|
|
1906
|
-
source:
|
|
2037
|
+
kind: z21.literal("skill"),
|
|
2038
|
+
name: z21.string().trim().min(1).max(256),
|
|
2039
|
+
status: z21.literal("completed"),
|
|
2040
|
+
description: z21.string().trim().min(1).max(2048).optional(),
|
|
2041
|
+
source: z21.string().trim().min(1).max(256).optional(),
|
|
1907
2042
|
...ActivityStepTimeShape
|
|
1908
2043
|
}).strict();
|
|
1909
|
-
var ConversationSubagentStepSchema =
|
|
2044
|
+
var ConversationSubagentStepSchema = z21.object({
|
|
1910
2045
|
id: IdSchema,
|
|
1911
|
-
kind:
|
|
1912
|
-
name:
|
|
1913
|
-
status:
|
|
1914
|
-
description:
|
|
1915
|
-
model:
|
|
1916
|
-
durationMs:
|
|
1917
|
-
resultSummary:
|
|
1918
|
-
error:
|
|
2046
|
+
kind: z21.literal("subagent"),
|
|
2047
|
+
name: z21.string().trim().min(1).max(256),
|
|
2048
|
+
status: z21.enum(["running", "completed", "failed"]),
|
|
2049
|
+
description: z21.string().trim().min(1).max(2048).optional(),
|
|
2050
|
+
model: z21.string().trim().min(1).max(256).optional(),
|
|
2051
|
+
durationMs: z21.number().int().nonnegative().optional(),
|
|
2052
|
+
resultSummary: z21.string().max(4096).optional(),
|
|
2053
|
+
error: z21.string().max(4096).optional(),
|
|
1919
2054
|
...ActivityStepTimeShape
|
|
1920
2055
|
}).strict();
|
|
1921
|
-
var ConversationPermissionStepSchema =
|
|
2056
|
+
var ConversationPermissionStepSchema = z21.object({
|
|
1922
2057
|
id: IdSchema,
|
|
1923
|
-
kind:
|
|
1924
|
-
name:
|
|
1925
|
-
status:
|
|
1926
|
-
description:
|
|
1927
|
-
resultSummary:
|
|
1928
|
-
error:
|
|
2058
|
+
kind: z21.literal("permission"),
|
|
2059
|
+
name: z21.string().trim().min(1).max(256),
|
|
2060
|
+
status: z21.enum(["running", "completed", "failed"]),
|
|
2061
|
+
description: z21.string().trim().min(1).max(2048).optional(),
|
|
2062
|
+
resultSummary: z21.string().max(4096).optional(),
|
|
2063
|
+
error: z21.string().max(4096).optional(),
|
|
1929
2064
|
...ActivityStepTimeShape
|
|
1930
2065
|
}).strict();
|
|
1931
|
-
var ConversationActivityStepSchema =
|
|
2066
|
+
var ConversationActivityStepSchema = z21.discriminatedUnion("kind", [
|
|
1932
2067
|
ConversationToolStepSchema,
|
|
1933
2068
|
ConversationSkillStepSchema,
|
|
1934
2069
|
ConversationSubagentStepSchema,
|
|
1935
2070
|
ConversationPermissionStepSchema
|
|
1936
2071
|
]);
|
|
1937
|
-
var ConversationHumanMessageSchema =
|
|
2072
|
+
var ConversationHumanMessageSchema = z21.object({
|
|
1938
2073
|
...ConversationItemBaseShape,
|
|
1939
|
-
kind:
|
|
1940
|
-
actor:
|
|
1941
|
-
content:
|
|
1942
|
-
attachments:
|
|
2074
|
+
kind: z21.literal("human-message"),
|
|
2075
|
+
actor: z21.literal("human"),
|
|
2076
|
+
content: z21.string().max(1e5),
|
|
2077
|
+
attachments: z21.array(ConversationAttachmentSchema).max(100),
|
|
1943
2078
|
operationId: IdSchema.optional()
|
|
1944
2079
|
}).strict();
|
|
1945
|
-
var ConversationAssistantMessageSchema =
|
|
2080
|
+
var ConversationAssistantMessageSchema = z21.object({
|
|
1946
2081
|
...ConversationItemBaseShape,
|
|
1947
|
-
kind:
|
|
1948
|
-
actor:
|
|
1949
|
-
content:
|
|
1950
|
-
attachments:
|
|
1951
|
-
model:
|
|
2082
|
+
kind: z21.literal("assistant-message"),
|
|
2083
|
+
actor: z21.enum(["assistant", "subagent"]),
|
|
2084
|
+
content: z21.string().max(5e5),
|
|
2085
|
+
attachments: z21.array(ConversationAttachmentSchema).max(100).optional(),
|
|
2086
|
+
model: z21.string().trim().min(1).max(256).optional(),
|
|
1952
2087
|
agentId: IdSchema.optional(),
|
|
1953
|
-
final:
|
|
2088
|
+
final: z21.boolean()
|
|
1954
2089
|
}).strict().superRefine((message, context) => {
|
|
1955
2090
|
const inlineImages = message.attachments?.filter((attachment) => attachment.kind === "image" && attachment.data !== void 0) ?? [];
|
|
1956
2091
|
if (inlineImages.length > MAX_INLINE_IMAGES_PER_MESSAGE) {
|
|
@@ -1969,160 +2104,160 @@ var ConversationAssistantMessageSchema = z19.object({
|
|
|
1969
2104
|
});
|
|
1970
2105
|
}
|
|
1971
2106
|
});
|
|
1972
|
-
var ConversationActivityGroupSchema =
|
|
2107
|
+
var ConversationActivityGroupSchema = z21.object({
|
|
1973
2108
|
...ConversationItemBaseShape,
|
|
1974
|
-
kind:
|
|
1975
|
-
actor:
|
|
1976
|
-
status:
|
|
1977
|
-
steps:
|
|
2109
|
+
kind: z21.literal("activity-group"),
|
|
2110
|
+
actor: z21.enum(["assistant", "subagent"]),
|
|
2111
|
+
status: z21.enum(["running", "completed", "failed"]),
|
|
2112
|
+
steps: z21.array(ConversationActivityStepSchema).max(CONVERSATION_ACTIVITY_STEP_LIMIT)
|
|
1978
2113
|
}).strict();
|
|
1979
|
-
var ConversationNoticeSchema =
|
|
2114
|
+
var ConversationNoticeSchema = z21.object({
|
|
1980
2115
|
...ConversationItemBaseShape,
|
|
1981
|
-
kind:
|
|
1982
|
-
actor:
|
|
1983
|
-
severity:
|
|
1984
|
-
title:
|
|
1985
|
-
content:
|
|
1986
|
-
presentation:
|
|
2116
|
+
kind: z21.literal("notice"),
|
|
2117
|
+
actor: z21.enum(["system", "assistant", "subagent"]),
|
|
2118
|
+
severity: z21.enum(["info", "success", "warning", "error"]),
|
|
2119
|
+
title: z21.string().trim().min(1).max(256),
|
|
2120
|
+
content: z21.string().max(4096),
|
|
2121
|
+
presentation: z21.literal("compact").optional()
|
|
1987
2122
|
}).strict();
|
|
1988
|
-
var ConversationPlanTodoSchema =
|
|
2123
|
+
var ConversationPlanTodoSchema = z21.object({
|
|
1989
2124
|
id: IdSchema,
|
|
1990
|
-
title:
|
|
1991
|
-
description:
|
|
1992
|
-
status:
|
|
1993
|
-
dependsOn:
|
|
2125
|
+
title: z21.string().trim().min(1).max(1024),
|
|
2126
|
+
description: z21.string().max(4096).optional(),
|
|
2127
|
+
status: z21.string().trim().min(1).max(64),
|
|
2128
|
+
dependsOn: z21.array(IdSchema).max(100)
|
|
1994
2129
|
}).strict();
|
|
1995
|
-
var ConversationPlanUpdateSchema =
|
|
2130
|
+
var ConversationPlanUpdateSchema = z21.object({
|
|
1996
2131
|
...ConversationItemBaseShape,
|
|
1997
|
-
kind:
|
|
1998
|
-
actor:
|
|
1999
|
-
operation:
|
|
2000
|
-
content:
|
|
2001
|
-
todos:
|
|
2132
|
+
kind: z21.literal("plan-update"),
|
|
2133
|
+
actor: z21.enum(["assistant", "subagent"]),
|
|
2134
|
+
operation: z21.enum(["created", "updated", "deleted"]),
|
|
2135
|
+
content: z21.string().max(1e5),
|
|
2136
|
+
todos: z21.array(ConversationPlanTodoSchema).max(1e3)
|
|
2002
2137
|
}).strict();
|
|
2003
|
-
var ConversationItemSchema =
|
|
2138
|
+
var ConversationItemSchema = z21.discriminatedUnion("kind", [
|
|
2004
2139
|
ConversationHumanMessageSchema,
|
|
2005
2140
|
ConversationAssistantMessageSchema,
|
|
2006
2141
|
ConversationActivityGroupSchema,
|
|
2007
2142
|
ConversationNoticeSchema,
|
|
2008
2143
|
ConversationPlanUpdateSchema
|
|
2009
2144
|
]);
|
|
2010
|
-
var ConversationItemUpsertSchema =
|
|
2145
|
+
var ConversationItemUpsertSchema = z21.object({
|
|
2011
2146
|
userId: IdSchema,
|
|
2012
2147
|
machineId: IdSchema,
|
|
2013
2148
|
sessionId: IdSchema,
|
|
2014
2149
|
item: ConversationItemSchema
|
|
2015
2150
|
});
|
|
2016
|
-
var ConversationActivityStepUpsertSchema =
|
|
2151
|
+
var ConversationActivityStepUpsertSchema = z21.object({
|
|
2017
2152
|
userId: IdSchema,
|
|
2018
2153
|
machineId: IdSchema,
|
|
2019
2154
|
sessionId: IdSchema,
|
|
2020
2155
|
activityId: IdSchema,
|
|
2021
|
-
revision:
|
|
2156
|
+
revision: z21.number().int().positive(),
|
|
2022
2157
|
turnId: IdSchema,
|
|
2023
2158
|
timestamp: IsoDateSchema,
|
|
2024
|
-
actor:
|
|
2025
|
-
status:
|
|
2159
|
+
actor: z21.enum(["assistant", "subagent"]),
|
|
2160
|
+
status: z21.enum(["running", "completed", "failed"]),
|
|
2026
2161
|
sourceEventId: IdSchema,
|
|
2027
2162
|
step: ConversationActivityStepSchema
|
|
2028
2163
|
}).strict();
|
|
2029
2164
|
|
|
2030
2165
|
// ../../shared/protocol/dist/conversation/timeline.js
|
|
2031
|
-
var SessionUserPreviewSchema =
|
|
2166
|
+
var SessionUserPreviewSchema = z22.object({
|
|
2032
2167
|
id: IdSchema,
|
|
2033
|
-
revision:
|
|
2168
|
+
revision: z22.number().int().positive(),
|
|
2034
2169
|
timestamp: IsoDateSchema,
|
|
2035
|
-
text:
|
|
2170
|
+
text: z22.string().max(4096)
|
|
2036
2171
|
});
|
|
2037
|
-
var SessionAssistantPreviewSchema =
|
|
2172
|
+
var SessionAssistantPreviewSchema = z22.object({
|
|
2038
2173
|
id: IdSchema,
|
|
2039
|
-
revision:
|
|
2174
|
+
revision: z22.number().int().positive(),
|
|
2040
2175
|
timestamp: IsoDateSchema,
|
|
2041
|
-
sourceEventIds:
|
|
2042
|
-
text:
|
|
2043
|
-
final:
|
|
2044
|
-
attachments:
|
|
2176
|
+
sourceEventIds: z22.array(IdSchema).min(1).max(1e3),
|
|
2177
|
+
text: z22.string().max(4096),
|
|
2178
|
+
final: z22.boolean(),
|
|
2179
|
+
attachments: z22.array(ConversationAttachmentSchema.refine((attachment) => attachment.kind === "image" && attachment.imageRef === "sha256", "Assistant previews contain image references only")).max(4)
|
|
2045
2180
|
});
|
|
2046
2181
|
var SESSION_TIMELINE_PAGE_SIZE = 100;
|
|
2047
|
-
var SessionTimelinePageRequestSchema =
|
|
2182
|
+
var SessionTimelinePageRequestSchema = z22.object({
|
|
2048
2183
|
requestId: IdSchema,
|
|
2049
2184
|
machineId: IdSchema,
|
|
2050
2185
|
sessionId: IdSchema,
|
|
2051
|
-
cursor:
|
|
2052
|
-
metadataOnly:
|
|
2053
|
-
acceptContentEncodings:
|
|
2054
|
-
imageReferences:
|
|
2055
|
-
pageSize:
|
|
2056
|
-
assistantPreview:
|
|
2186
|
+
cursor: z22.string().max(32768).optional(),
|
|
2187
|
+
metadataOnly: z22.boolean().optional(),
|
|
2188
|
+
acceptContentEncodings: z22.array(z22.string().min(1).max(32)).max(8).optional(),
|
|
2189
|
+
imageReferences: z22.boolean().optional(),
|
|
2190
|
+
pageSize: z22.number().int().min(1).max(SESSION_TIMELINE_PAGE_SIZE).default(SESSION_TIMELINE_PAGE_SIZE),
|
|
2191
|
+
assistantPreview: z22.boolean().optional()
|
|
2057
2192
|
});
|
|
2058
|
-
var SessionWatchRequestSchema =
|
|
2193
|
+
var SessionWatchRequestSchema = z22.object({
|
|
2059
2194
|
requestId: IdSchema,
|
|
2060
2195
|
machineId: IdSchema,
|
|
2061
2196
|
sessionId: IdSchema,
|
|
2062
|
-
watching:
|
|
2197
|
+
watching: z22.boolean()
|
|
2063
2198
|
}).strict();
|
|
2064
|
-
var SessionWatchResultSchema =
|
|
2065
|
-
|
|
2066
|
-
ok:
|
|
2199
|
+
var SessionWatchResultSchema = z22.discriminatedUnion("ok", [
|
|
2200
|
+
z22.object({
|
|
2201
|
+
ok: z22.literal(true),
|
|
2067
2202
|
requestId: IdSchema,
|
|
2068
2203
|
machineId: IdSchema,
|
|
2069
2204
|
sessionId: IdSchema,
|
|
2070
|
-
watching:
|
|
2205
|
+
watching: z22.boolean()
|
|
2071
2206
|
}).strict(),
|
|
2072
|
-
|
|
2073
|
-
ok:
|
|
2207
|
+
z22.object({
|
|
2208
|
+
ok: z22.literal(false),
|
|
2074
2209
|
requestId: IdSchema,
|
|
2075
2210
|
machineId: IdSchema,
|
|
2076
2211
|
sessionId: IdSchema,
|
|
2077
|
-
watching:
|
|
2212
|
+
watching: z22.boolean(),
|
|
2078
2213
|
error: ProtocolFailureSchema
|
|
2079
2214
|
}).strict()
|
|
2080
2215
|
]);
|
|
2081
|
-
var SessionTimelinePageSchema =
|
|
2082
|
-
items:
|
|
2083
|
-
cursor:
|
|
2084
|
-
hasMore:
|
|
2085
|
-
cursorStatus:
|
|
2216
|
+
var SessionTimelinePageSchema = z22.object({
|
|
2217
|
+
items: z22.array(ConversationItemSchema).max(SESSION_TIMELINE_PAGE_SIZE),
|
|
2218
|
+
cursor: z22.string().max(32768),
|
|
2219
|
+
hasMore: z22.boolean(),
|
|
2220
|
+
cursorStatus: z22.enum(["ok", "expired"]),
|
|
2086
2221
|
assistantPreview: SessionAssistantPreviewSchema.optional(),
|
|
2087
2222
|
userPreview: SessionUserPreviewSchema.optional(),
|
|
2088
|
-
previewsComplete:
|
|
2223
|
+
previewsComplete: z22.boolean().optional()
|
|
2089
2224
|
});
|
|
2090
|
-
var SessionTimelinePageResultSchema =
|
|
2091
|
-
|
|
2092
|
-
ok:
|
|
2225
|
+
var SessionTimelinePageResultSchema = z22.discriminatedUnion("ok", [
|
|
2226
|
+
z22.object({
|
|
2227
|
+
ok: z22.literal(true),
|
|
2093
2228
|
requestId: IdSchema,
|
|
2094
2229
|
machineId: IdSchema,
|
|
2095
2230
|
sessionId: IdSchema,
|
|
2096
2231
|
page: SessionTimelinePageSchema
|
|
2097
2232
|
}),
|
|
2098
|
-
|
|
2099
|
-
ok:
|
|
2233
|
+
z22.object({
|
|
2234
|
+
ok: z22.literal(false),
|
|
2100
2235
|
requestId: IdSchema,
|
|
2101
2236
|
machineId: IdSchema,
|
|
2102
2237
|
sessionId: IdSchema,
|
|
2103
2238
|
error: ProtocolFailureSchema
|
|
2104
2239
|
})
|
|
2105
2240
|
]);
|
|
2106
|
-
var SessionTimelineInvalidatedSchema =
|
|
2241
|
+
var SessionTimelineInvalidatedSchema = z22.object({
|
|
2107
2242
|
userId: IdSchema,
|
|
2108
2243
|
machineId: IdSchema,
|
|
2109
2244
|
sessionId: IdSchema,
|
|
2110
|
-
reason:
|
|
2245
|
+
reason: z22.enum(["clear", "rewind"]),
|
|
2111
2246
|
sourceEventId: IdSchema,
|
|
2112
2247
|
timestamp: IsoDateSchema
|
|
2113
2248
|
}).strict();
|
|
2114
2249
|
|
|
2115
2250
|
// ../../shared/protocol/dist/sessions/prompts.js
|
|
2116
2251
|
var MAX_PROMPT_IMAGE_BYTES = 3 * 1024 * 1024;
|
|
2117
|
-
var SessionPromptRequestSchema =
|
|
2252
|
+
var SessionPromptRequestSchema = z23.object({
|
|
2118
2253
|
requestId: IdSchema,
|
|
2119
2254
|
operationId: IdSchema,
|
|
2120
2255
|
machineId: IdSchema,
|
|
2121
2256
|
sessionId: IdSchema,
|
|
2122
|
-
prompt:
|
|
2123
|
-
attachments:
|
|
2124
|
-
fileAttachments:
|
|
2125
|
-
mode:
|
|
2257
|
+
prompt: z23.string().trim().max(1e5),
|
|
2258
|
+
attachments: z23.array(PromptImageAttachmentSchema).max(4).optional(),
|
|
2259
|
+
fileAttachments: z23.array(PromptFileAttachmentSchema).max(4).optional(),
|
|
2260
|
+
mode: z23.enum(["enqueue", "immediate"]).default("enqueue")
|
|
2126
2261
|
}).strict().superRefine((request, context) => {
|
|
2127
2262
|
if (request.prompt.length === 0 && (request.attachments?.length ?? 0) === 0 && (request.fileAttachments?.length ?? 0) === 0) {
|
|
2128
2263
|
context.addIssue({
|
|
@@ -2148,22 +2283,22 @@ var SessionPromptRequestSchema = z21.object({
|
|
|
2148
2283
|
});
|
|
2149
2284
|
}
|
|
2150
2285
|
});
|
|
2151
|
-
var SessionPromptResultSchema =
|
|
2152
|
-
|
|
2153
|
-
ok:
|
|
2286
|
+
var SessionPromptResultSchema = z23.discriminatedUnion("ok", [
|
|
2287
|
+
z23.object({
|
|
2288
|
+
ok: z23.literal(true),
|
|
2154
2289
|
requestId: IdSchema,
|
|
2155
2290
|
operationId: IdSchema,
|
|
2156
2291
|
machineId: IdSchema,
|
|
2157
2292
|
sessionId: IdSchema,
|
|
2158
2293
|
messageId: IdSchema,
|
|
2159
|
-
mode:
|
|
2160
|
-
deliveryState:
|
|
2294
|
+
mode: z23.enum(["enqueue", "immediate"]),
|
|
2295
|
+
deliveryState: z23.enum(["queued", "processing"]),
|
|
2161
2296
|
// Negotiated lower bound from the native event clock. Exact text and history
|
|
2162
2297
|
// ownership checks still apply; this is not an identity or proof of persistence.
|
|
2163
2298
|
submittedAt: IsoDateSchema.optional()
|
|
2164
2299
|
}),
|
|
2165
|
-
|
|
2166
|
-
ok:
|
|
2300
|
+
z23.object({
|
|
2301
|
+
ok: z23.literal(false),
|
|
2167
2302
|
requestId: IdSchema,
|
|
2168
2303
|
operationId: IdSchema,
|
|
2169
2304
|
machineId: IdSchema,
|
|
@@ -2171,29 +2306,29 @@ var SessionPromptResultSchema = z21.discriminatedUnion("ok", [
|
|
|
2171
2306
|
error: ProtocolFailureSchema
|
|
2172
2307
|
})
|
|
2173
2308
|
]);
|
|
2174
|
-
var SessionActivityUpdateSchema =
|
|
2309
|
+
var SessionActivityUpdateSchema = z23.object({
|
|
2175
2310
|
userId: IdSchema,
|
|
2176
2311
|
machineId: IdSchema,
|
|
2177
2312
|
sessionId: IdSchema,
|
|
2178
|
-
state:
|
|
2313
|
+
state: z23.enum(["working", "idle"]),
|
|
2179
2314
|
occurredAt: IsoDateSchema,
|
|
2180
2315
|
assistantPreview: SessionAssistantPreviewSchema.optional(),
|
|
2181
2316
|
userPreview: SessionUserPreviewSchema.optional()
|
|
2182
2317
|
});
|
|
2183
|
-
var SessionAbortRequestSchema =
|
|
2318
|
+
var SessionAbortRequestSchema = z23.object({
|
|
2184
2319
|
requestId: IdSchema,
|
|
2185
2320
|
machineId: IdSchema,
|
|
2186
2321
|
sessionId: IdSchema
|
|
2187
2322
|
});
|
|
2188
|
-
var SessionAbortResultSchema =
|
|
2189
|
-
|
|
2190
|
-
ok:
|
|
2323
|
+
var SessionAbortResultSchema = z23.discriminatedUnion("ok", [
|
|
2324
|
+
z23.object({
|
|
2325
|
+
ok: z23.literal(true),
|
|
2191
2326
|
requestId: IdSchema,
|
|
2192
2327
|
machineId: IdSchema,
|
|
2193
2328
|
sessionId: IdSchema
|
|
2194
2329
|
}),
|
|
2195
|
-
|
|
2196
|
-
ok:
|
|
2330
|
+
z23.object({
|
|
2331
|
+
ok: z23.literal(false),
|
|
2197
2332
|
requestId: IdSchema,
|
|
2198
2333
|
machineId: IdSchema,
|
|
2199
2334
|
sessionId: IdSchema,
|
|
@@ -2202,12 +2337,12 @@ var SessionAbortResultSchema = z21.discriminatedUnion("ok", [
|
|
|
2202
2337
|
]);
|
|
2203
2338
|
|
|
2204
2339
|
// ../../shared/protocol/dist/sessions/interactions.js
|
|
2205
|
-
import { z as
|
|
2206
|
-
var InteractionFormFieldSchema =
|
|
2340
|
+
import { z as z24 } from "zod";
|
|
2341
|
+
var InteractionFormFieldSchema = z24.object({
|
|
2207
2342
|
id: IdSchema,
|
|
2208
|
-
label:
|
|
2209
|
-
description:
|
|
2210
|
-
inputType:
|
|
2343
|
+
label: z24.string().trim().min(1).max(1024),
|
|
2344
|
+
description: z24.string().max(2048).optional(),
|
|
2345
|
+
inputType: z24.enum([
|
|
2211
2346
|
"text",
|
|
2212
2347
|
"number",
|
|
2213
2348
|
"integer",
|
|
@@ -2215,77 +2350,77 @@ var InteractionFormFieldSchema = z22.object({
|
|
|
2215
2350
|
"select",
|
|
2216
2351
|
"multi-select"
|
|
2217
2352
|
]),
|
|
2218
|
-
required:
|
|
2219
|
-
options:
|
|
2220
|
-
defaultValue:
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2353
|
+
required: z24.boolean(),
|
|
2354
|
+
options: z24.array(z24.string().max(1024)).max(100),
|
|
2355
|
+
defaultValue: z24.union([
|
|
2356
|
+
z24.string().max(4096),
|
|
2357
|
+
z24.number().finite(),
|
|
2358
|
+
z24.boolean(),
|
|
2359
|
+
z24.array(z24.string().max(1024)).max(100)
|
|
2225
2360
|
]).optional(),
|
|
2226
|
-
minimum:
|
|
2227
|
-
maximum:
|
|
2228
|
-
minLength:
|
|
2229
|
-
maxLength:
|
|
2230
|
-
minItems:
|
|
2231
|
-
maxItems:
|
|
2232
|
-
format:
|
|
2361
|
+
minimum: z24.number().finite().optional(),
|
|
2362
|
+
maximum: z24.number().finite().optional(),
|
|
2363
|
+
minLength: z24.number().int().nonnegative().max(1e6).optional(),
|
|
2364
|
+
maxLength: z24.number().int().nonnegative().max(1e6).optional(),
|
|
2365
|
+
minItems: z24.number().int().nonnegative().max(100).optional(),
|
|
2366
|
+
maxItems: z24.number().int().nonnegative().max(100).optional(),
|
|
2367
|
+
format: z24.enum(["email", "uri", "date", "date-time"]).optional()
|
|
2233
2368
|
}).strict();
|
|
2234
|
-
var InteractionPermissionRequestSchema =
|
|
2235
|
-
kind:
|
|
2369
|
+
var InteractionPermissionRequestSchema = z24.object({
|
|
2370
|
+
kind: z24.literal("permission"),
|
|
2236
2371
|
permissionKind: IdSchema,
|
|
2237
|
-
title:
|
|
2238
|
-
description:
|
|
2239
|
-
canApproveSession:
|
|
2240
|
-
canApproveAlways:
|
|
2241
|
-
approvalScope:
|
|
2372
|
+
title: z24.string().trim().min(1).max(256),
|
|
2373
|
+
description: z24.string().max(4096),
|
|
2374
|
+
canApproveSession: z24.boolean(),
|
|
2375
|
+
canApproveAlways: z24.boolean().optional(),
|
|
2376
|
+
approvalScope: z24.string().trim().min(1).max(4096).optional()
|
|
2242
2377
|
}).strict();
|
|
2243
|
-
var InteractionUserInputRequestSchema =
|
|
2244
|
-
kind:
|
|
2245
|
-
question:
|
|
2246
|
-
choices:
|
|
2247
|
-
allowFreeform:
|
|
2378
|
+
var InteractionUserInputRequestSchema = z24.object({
|
|
2379
|
+
kind: z24.literal("user_input"),
|
|
2380
|
+
question: z24.string().trim().min(1).max(4096),
|
|
2381
|
+
choices: z24.array(z24.string().max(1024)).max(100),
|
|
2382
|
+
allowFreeform: z24.boolean()
|
|
2248
2383
|
}).strict();
|
|
2249
|
-
var InteractionElicitationRequestSchema =
|
|
2250
|
-
kind:
|
|
2251
|
-
message:
|
|
2252
|
-
mode:
|
|
2253
|
-
source:
|
|
2254
|
-
url:
|
|
2255
|
-
fields:
|
|
2384
|
+
var InteractionElicitationRequestSchema = z24.object({
|
|
2385
|
+
kind: z24.literal("elicitation"),
|
|
2386
|
+
message: z24.string().trim().min(1).max(4096),
|
|
2387
|
+
mode: z24.enum(["form", "url"]),
|
|
2388
|
+
source: z24.string().trim().min(1).max(256).optional(),
|
|
2389
|
+
url: z24.url().max(32768).optional(),
|
|
2390
|
+
fields: z24.array(InteractionFormFieldSchema).max(100)
|
|
2256
2391
|
}).strict();
|
|
2257
|
-
var InteractionMcpOauthRequestSchema =
|
|
2258
|
-
kind:
|
|
2259
|
-
serverName:
|
|
2260
|
-
serverUrl:
|
|
2261
|
-
reason:
|
|
2262
|
-
responseMode:
|
|
2392
|
+
var InteractionMcpOauthRequestSchema = z24.object({
|
|
2393
|
+
kind: z24.literal("mcp_oauth"),
|
|
2394
|
+
serverName: z24.string().trim().min(1).max(256),
|
|
2395
|
+
serverUrl: z24.url().max(32768),
|
|
2396
|
+
reason: z24.enum(["initial", "refresh", "reauth", "upscope"]),
|
|
2397
|
+
responseMode: z24.literal("cancel-only")
|
|
2263
2398
|
}).strict();
|
|
2264
|
-
var InteractionMcpHeadersRequestSchema =
|
|
2265
|
-
kind:
|
|
2266
|
-
serverName:
|
|
2267
|
-
serverUrl:
|
|
2268
|
-
reason:
|
|
2269
|
-
responseMode:
|
|
2399
|
+
var InteractionMcpHeadersRequestSchema = z24.object({
|
|
2400
|
+
kind: z24.literal("mcp_headers"),
|
|
2401
|
+
serverName: z24.string().trim().min(1).max(256),
|
|
2402
|
+
serverUrl: z24.url().max(32768),
|
|
2403
|
+
reason: z24.string().trim().min(1).max(256),
|
|
2404
|
+
responseMode: z24.literal("none-only")
|
|
2270
2405
|
}).strict();
|
|
2271
|
-
var InteractionAutoModeSwitchRequestSchema =
|
|
2272
|
-
kind:
|
|
2406
|
+
var InteractionAutoModeSwitchRequestSchema = z24.object({
|
|
2407
|
+
kind: z24.literal("auto_mode_switch"),
|
|
2273
2408
|
errorCode: IdSchema.optional(),
|
|
2274
|
-
retryAfterSeconds:
|
|
2409
|
+
retryAfterSeconds: z24.number().int().nonnegative().optional()
|
|
2275
2410
|
}).strict();
|
|
2276
|
-
var InteractionSessionLimitsRequestSchema =
|
|
2277
|
-
kind:
|
|
2278
|
-
maxAiCredits:
|
|
2279
|
-
usedAiCredits:
|
|
2411
|
+
var InteractionSessionLimitsRequestSchema = z24.object({
|
|
2412
|
+
kind: z24.literal("session_limits"),
|
|
2413
|
+
maxAiCredits: z24.number().finite().nonnegative(),
|
|
2414
|
+
usedAiCredits: z24.number().finite().nonnegative()
|
|
2280
2415
|
}).strict();
|
|
2281
|
-
var InteractionExitPlanRequestSchema =
|
|
2282
|
-
kind:
|
|
2283
|
-
summary:
|
|
2284
|
-
planContent:
|
|
2285
|
-
actions:
|
|
2416
|
+
var InteractionExitPlanRequestSchema = z24.object({
|
|
2417
|
+
kind: z24.literal("exit_plan"),
|
|
2418
|
+
summary: z24.string().max(4096),
|
|
2419
|
+
planContent: z24.string().max(1e5).optional(),
|
|
2420
|
+
actions: z24.array(IdSchema).min(1).max(20),
|
|
2286
2421
|
recommendedAction: IdSchema
|
|
2287
2422
|
}).strict();
|
|
2288
|
-
var InteractionRequestSchema =
|
|
2423
|
+
var InteractionRequestSchema = z24.discriminatedUnion("kind", [
|
|
2289
2424
|
InteractionPermissionRequestSchema,
|
|
2290
2425
|
InteractionUserInputRequestSchema,
|
|
2291
2426
|
InteractionElicitationRequestSchema,
|
|
@@ -2295,81 +2430,81 @@ var InteractionRequestSchema = z22.discriminatedUnion("kind", [
|
|
|
2295
2430
|
InteractionSessionLimitsRequestSchema,
|
|
2296
2431
|
InteractionExitPlanRequestSchema
|
|
2297
2432
|
]);
|
|
2298
|
-
var InteractionPermissionResponseSchema =
|
|
2299
|
-
kind:
|
|
2300
|
-
decision:
|
|
2301
|
-
feedback:
|
|
2433
|
+
var InteractionPermissionResponseSchema = z24.object({
|
|
2434
|
+
kind: z24.literal("permission"),
|
|
2435
|
+
decision: z24.enum(["approve-once", "approve-for-session", "approve-always", "reject"]),
|
|
2436
|
+
feedback: z24.string().trim().min(1).max(2048).optional()
|
|
2302
2437
|
}).strict();
|
|
2303
|
-
var InteractionUserInputResponseSchema =
|
|
2304
|
-
kind:
|
|
2305
|
-
answer:
|
|
2306
|
-
wasFreeform:
|
|
2438
|
+
var InteractionUserInputResponseSchema = z24.object({
|
|
2439
|
+
kind: z24.literal("user_input"),
|
|
2440
|
+
answer: z24.string().max(1e5),
|
|
2441
|
+
wasFreeform: z24.boolean()
|
|
2307
2442
|
}).strict();
|
|
2308
|
-
var InteractionFieldValueSchema =
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2443
|
+
var InteractionFieldValueSchema = z24.union([
|
|
2444
|
+
z24.string().max(4096),
|
|
2445
|
+
z24.number(),
|
|
2446
|
+
z24.boolean(),
|
|
2447
|
+
z24.array(z24.string().max(1024)).max(100)
|
|
2313
2448
|
]);
|
|
2314
|
-
var InteractionElicitationResponseSchema =
|
|
2315
|
-
kind:
|
|
2316
|
-
action:
|
|
2317
|
-
values:
|
|
2449
|
+
var InteractionElicitationResponseSchema = z24.object({
|
|
2450
|
+
kind: z24.literal("elicitation"),
|
|
2451
|
+
action: z24.enum(["accept", "decline", "cancel"]),
|
|
2452
|
+
values: z24.record(z24.string().max(256), InteractionFieldValueSchema)
|
|
2318
2453
|
}).strict();
|
|
2319
|
-
var InteractionMcpOauthResponseSchema =
|
|
2320
|
-
kind:
|
|
2321
|
-
action:
|
|
2454
|
+
var InteractionMcpOauthResponseSchema = z24.object({
|
|
2455
|
+
kind: z24.literal("mcp_oauth"),
|
|
2456
|
+
action: z24.literal("cancel")
|
|
2322
2457
|
}).strict();
|
|
2323
|
-
var InteractionMcpHeadersResponseSchema =
|
|
2324
|
-
kind:
|
|
2325
|
-
action:
|
|
2458
|
+
var InteractionMcpHeadersResponseSchema = z24.object({
|
|
2459
|
+
kind: z24.literal("mcp_headers"),
|
|
2460
|
+
action: z24.literal("none")
|
|
2326
2461
|
}).strict();
|
|
2327
|
-
var InteractionAutoModeSwitchResponseSchema =
|
|
2328
|
-
kind:
|
|
2329
|
-
action:
|
|
2462
|
+
var InteractionAutoModeSwitchResponseSchema = z24.object({
|
|
2463
|
+
kind: z24.literal("auto_mode_switch"),
|
|
2464
|
+
action: z24.enum(["yes", "yes_always", "no"])
|
|
2330
2465
|
}).strict();
|
|
2331
|
-
var InteractionSessionLimitsResponseSchema =
|
|
2332
|
-
kind:
|
|
2333
|
-
action:
|
|
2334
|
-
additionalAiCredits:
|
|
2335
|
-
maxAiCredits:
|
|
2466
|
+
var InteractionSessionLimitsResponseSchema = z24.object({
|
|
2467
|
+
kind: z24.literal("session_limits"),
|
|
2468
|
+
action: z24.enum(["add", "set", "unset", "cancel"]),
|
|
2469
|
+
additionalAiCredits: z24.number().positive().optional(),
|
|
2470
|
+
maxAiCredits: z24.number().positive().optional()
|
|
2336
2471
|
}).strict().superRefine((response, context) => {
|
|
2337
2472
|
if (response.action === "add" && response.additionalAiCredits === void 0) {
|
|
2338
2473
|
context.addIssue({
|
|
2339
|
-
code:
|
|
2474
|
+
code: z24.ZodIssueCode.custom,
|
|
2340
2475
|
path: ["additionalAiCredits"],
|
|
2341
2476
|
message: "additionalAiCredits is required for add"
|
|
2342
2477
|
});
|
|
2343
2478
|
}
|
|
2344
2479
|
if (response.action === "set" && response.maxAiCredits === void 0) {
|
|
2345
2480
|
context.addIssue({
|
|
2346
|
-
code:
|
|
2481
|
+
code: z24.ZodIssueCode.custom,
|
|
2347
2482
|
path: ["maxAiCredits"],
|
|
2348
2483
|
message: "maxAiCredits is required for set"
|
|
2349
2484
|
});
|
|
2350
2485
|
}
|
|
2351
2486
|
if (response.action !== "add" && response.additionalAiCredits !== void 0) {
|
|
2352
2487
|
context.addIssue({
|
|
2353
|
-
code:
|
|
2488
|
+
code: z24.ZodIssueCode.custom,
|
|
2354
2489
|
path: ["additionalAiCredits"],
|
|
2355
2490
|
message: "additionalAiCredits is only valid for add"
|
|
2356
2491
|
});
|
|
2357
2492
|
}
|
|
2358
2493
|
if (response.action !== "set" && response.maxAiCredits !== void 0) {
|
|
2359
2494
|
context.addIssue({
|
|
2360
|
-
code:
|
|
2495
|
+
code: z24.ZodIssueCode.custom,
|
|
2361
2496
|
path: ["maxAiCredits"],
|
|
2362
2497
|
message: "maxAiCredits is only valid for set"
|
|
2363
2498
|
});
|
|
2364
2499
|
}
|
|
2365
2500
|
});
|
|
2366
|
-
var InteractionExitPlanResponseSchema =
|
|
2367
|
-
kind:
|
|
2368
|
-
approved:
|
|
2501
|
+
var InteractionExitPlanResponseSchema = z24.object({
|
|
2502
|
+
kind: z24.literal("exit_plan"),
|
|
2503
|
+
approved: z24.boolean(),
|
|
2369
2504
|
selectedAction: IdSchema.optional(),
|
|
2370
|
-
feedback:
|
|
2505
|
+
feedback: z24.string().trim().min(1).max(4096).optional()
|
|
2371
2506
|
}).strict();
|
|
2372
|
-
var InteractionResponseSchema =
|
|
2507
|
+
var InteractionResponseSchema = z24.discriminatedUnion("kind", [
|
|
2373
2508
|
InteractionPermissionResponseSchema,
|
|
2374
2509
|
InteractionUserInputResponseSchema,
|
|
2375
2510
|
InteractionElicitationResponseSchema,
|
|
@@ -2379,30 +2514,30 @@ var InteractionResponseSchema = z22.discriminatedUnion("kind", [
|
|
|
2379
2514
|
InteractionSessionLimitsResponseSchema,
|
|
2380
2515
|
InteractionExitPlanResponseSchema
|
|
2381
2516
|
]);
|
|
2382
|
-
var InteractionRequestPayloadSchema =
|
|
2517
|
+
var InteractionRequestPayloadSchema = z24.object({
|
|
2383
2518
|
interactionRequestId: IdSchema,
|
|
2384
2519
|
userId: IdSchema,
|
|
2385
2520
|
machineId: IdSchema,
|
|
2386
2521
|
sessionId: IdSchema,
|
|
2387
2522
|
request: InteractionRequestSchema
|
|
2388
2523
|
}).strict();
|
|
2389
|
-
var InteractionRespondRequestSchema =
|
|
2524
|
+
var InteractionRespondRequestSchema = z24.object({
|
|
2390
2525
|
requestId: IdSchema,
|
|
2391
2526
|
interactionRequestId: IdSchema,
|
|
2392
2527
|
machineId: IdSchema,
|
|
2393
2528
|
sessionId: IdSchema,
|
|
2394
2529
|
response: InteractionResponseSchema
|
|
2395
2530
|
}).strict();
|
|
2396
|
-
var InteractionRespondResultSchema =
|
|
2397
|
-
|
|
2398
|
-
ok:
|
|
2531
|
+
var InteractionRespondResultSchema = z24.discriminatedUnion("ok", [
|
|
2532
|
+
z24.object({
|
|
2533
|
+
ok: z24.literal(true),
|
|
2399
2534
|
requestId: IdSchema,
|
|
2400
2535
|
interactionRequestId: IdSchema,
|
|
2401
2536
|
machineId: IdSchema,
|
|
2402
2537
|
sessionId: IdSchema
|
|
2403
2538
|
}).strict(),
|
|
2404
|
-
|
|
2405
|
-
ok:
|
|
2539
|
+
z24.object({
|
|
2540
|
+
ok: z24.literal(false),
|
|
2406
2541
|
requestId: IdSchema,
|
|
2407
2542
|
interactionRequestId: IdSchema,
|
|
2408
2543
|
machineId: IdSchema,
|
|
@@ -2410,31 +2545,31 @@ var InteractionRespondResultSchema = z22.discriminatedUnion("ok", [
|
|
|
2410
2545
|
error: ProtocolFailureSchema
|
|
2411
2546
|
}).strict()
|
|
2412
2547
|
]);
|
|
2413
|
-
var PermissionRequestPayloadSchema =
|
|
2548
|
+
var PermissionRequestPayloadSchema = z24.object({
|
|
2414
2549
|
permissionRequestId: IdSchema,
|
|
2415
2550
|
userId: IdSchema,
|
|
2416
2551
|
machineId: IdSchema,
|
|
2417
2552
|
sessionId: IdSchema,
|
|
2418
|
-
request:
|
|
2553
|
+
request: z24.record(z24.string(), z24.unknown())
|
|
2419
2554
|
});
|
|
2420
|
-
var PermissionRespondRequestSchema =
|
|
2555
|
+
var PermissionRespondRequestSchema = z24.object({
|
|
2421
2556
|
requestId: IdSchema,
|
|
2422
2557
|
permissionRequestId: IdSchema,
|
|
2423
2558
|
machineId: IdSchema,
|
|
2424
2559
|
sessionId: IdSchema,
|
|
2425
|
-
decision:
|
|
2426
|
-
feedback:
|
|
2560
|
+
decision: z24.enum(["approve-once", "reject"]),
|
|
2561
|
+
feedback: z24.string().trim().min(1).max(2048).optional()
|
|
2427
2562
|
});
|
|
2428
|
-
var PermissionRespondResultSchema =
|
|
2429
|
-
|
|
2430
|
-
ok:
|
|
2563
|
+
var PermissionRespondResultSchema = z24.discriminatedUnion("ok", [
|
|
2564
|
+
z24.object({
|
|
2565
|
+
ok: z24.literal(true),
|
|
2431
2566
|
requestId: IdSchema,
|
|
2432
2567
|
permissionRequestId: IdSchema,
|
|
2433
2568
|
machineId: IdSchema,
|
|
2434
2569
|
sessionId: IdSchema
|
|
2435
2570
|
}),
|
|
2436
|
-
|
|
2437
|
-
ok:
|
|
2571
|
+
z24.object({
|
|
2572
|
+
ok: z24.literal(false),
|
|
2438
2573
|
requestId: IdSchema,
|
|
2439
2574
|
permissionRequestId: IdSchema,
|
|
2440
2575
|
machineId: IdSchema,
|
|
@@ -2444,42 +2579,42 @@ var PermissionRespondResultSchema = z22.discriminatedUnion("ok", [
|
|
|
2444
2579
|
]);
|
|
2445
2580
|
|
|
2446
2581
|
// ../../shared/protocol/dist/conversation/timeline-sync.js
|
|
2447
|
-
import { z as
|
|
2582
|
+
import { z as z25 } from "zod";
|
|
2448
2583
|
var TIMELINE_SYNC_MAX_EVENTS = 128;
|
|
2449
2584
|
var TIMELINE_SYNC_MAX_BYTES = 6 * 1024 * 1024;
|
|
2450
2585
|
var TIMELINE_IMAGE_CHUNK_BYTES = 48 * 1024;
|
|
2451
2586
|
var TIMELINE_IMAGE_MAX_BYTES = 3 * 1024 * 1024;
|
|
2452
|
-
var identity =
|
|
2453
|
-
var sequence =
|
|
2454
|
-
var hash =
|
|
2455
|
-
var TimelineWatermarkSchema =
|
|
2587
|
+
var identity = z25.string().min(1).max(256);
|
|
2588
|
+
var sequence = z25.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
|
|
2589
|
+
var hash = z25.string().regex(/^[a-f0-9]{64}$/u);
|
|
2590
|
+
var TimelineWatermarkSchema = z25.object({
|
|
2456
2591
|
epoch: identity,
|
|
2457
2592
|
sequence
|
|
2458
2593
|
}).strict();
|
|
2459
|
-
var TimelineSyncRequestSchema =
|
|
2594
|
+
var TimelineSyncRequestSchema = z25.object({
|
|
2460
2595
|
watermark: TimelineWatermarkSchema.optional(),
|
|
2461
|
-
waitMs:
|
|
2462
|
-
resume:
|
|
2596
|
+
waitMs: z25.number().int().min(0).max(2e4).optional(),
|
|
2597
|
+
resume: z25.boolean().optional()
|
|
2463
2598
|
}).strict();
|
|
2464
|
-
var TimelineTextAppendSchema =
|
|
2599
|
+
var TimelineTextAppendSchema = z25.object({
|
|
2465
2600
|
itemId: identity,
|
|
2466
|
-
baseRevision:
|
|
2467
|
-
revision:
|
|
2468
|
-
appendText:
|
|
2469
|
-
sourceEventIds:
|
|
2470
|
-
sourceMessageIds:
|
|
2471
|
-
sourceInteractionIds:
|
|
2601
|
+
baseRevision: z25.number().int().positive(),
|
|
2602
|
+
revision: z25.number().int().positive(),
|
|
2603
|
+
appendText: z25.string().min(1).max(5e5),
|
|
2604
|
+
sourceEventIds: z25.array(identity).min(1).max(1e3).optional(),
|
|
2605
|
+
sourceMessageIds: z25.array(identity).min(1).max(1e3).optional(),
|
|
2606
|
+
sourceInteractionIds: z25.array(identity).min(1).max(1e3).optional()
|
|
2472
2607
|
}).strict();
|
|
2473
|
-
var TimelineSyncEventSchema =
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
kind:
|
|
2608
|
+
var TimelineSyncEventSchema = z25.discriminatedUnion("kind", [
|
|
2609
|
+
z25.object({ kind: z25.literal("upsert"), sequence, item: ConversationItemSchema }).strict(),
|
|
2610
|
+
z25.object({ kind: z25.literal("append"), sequence, append: TimelineTextAppendSchema }).strict(),
|
|
2611
|
+
z25.object({
|
|
2612
|
+
kind: z25.literal("step"),
|
|
2478
2613
|
sequence,
|
|
2479
2614
|
upsert: ConversationActivityStepUpsertSchema
|
|
2480
2615
|
}).strict()
|
|
2481
2616
|
]);
|
|
2482
|
-
var TimelineResyncReasonSchema =
|
|
2617
|
+
var TimelineResyncReasonSchema = z25.enum([
|
|
2483
2618
|
"initial",
|
|
2484
2619
|
"epoch-changed",
|
|
2485
2620
|
"evicted",
|
|
@@ -2488,36 +2623,36 @@ var TimelineResyncReasonSchema = z23.enum([
|
|
|
2488
2623
|
"rewind",
|
|
2489
2624
|
"oversized"
|
|
2490
2625
|
]);
|
|
2491
|
-
var TimelineSyncResponseSchema =
|
|
2492
|
-
|
|
2493
|
-
status:
|
|
2626
|
+
var TimelineSyncResponseSchema = z25.discriminatedUnion("status", [
|
|
2627
|
+
z25.object({
|
|
2628
|
+
status: z25.literal("snapshot"),
|
|
2494
2629
|
watermark: TimelineWatermarkSchema,
|
|
2495
2630
|
page: SessionTimelinePageSchema
|
|
2496
2631
|
}).strict(),
|
|
2497
|
-
|
|
2498
|
-
status:
|
|
2632
|
+
z25.object({
|
|
2633
|
+
status: z25.literal("replay"),
|
|
2499
2634
|
watermark: TimelineWatermarkSchema,
|
|
2500
2635
|
afterSequence: sequence,
|
|
2501
|
-
events:
|
|
2502
|
-
hasMore:
|
|
2636
|
+
events: z25.array(TimelineSyncEventSchema).max(TIMELINE_SYNC_MAX_EVENTS),
|
|
2637
|
+
hasMore: z25.boolean()
|
|
2503
2638
|
}).strict(),
|
|
2504
|
-
|
|
2505
|
-
status:
|
|
2639
|
+
z25.object({
|
|
2640
|
+
status: z25.literal("resync"),
|
|
2506
2641
|
epoch: identity,
|
|
2507
2642
|
reason: TimelineResyncReasonSchema
|
|
2508
2643
|
}).strict()
|
|
2509
2644
|
]);
|
|
2510
|
-
var TimelineImageRequestSchema =
|
|
2645
|
+
var TimelineImageRequestSchema = z25.object({
|
|
2511
2646
|
sha256: hash,
|
|
2512
|
-
offset:
|
|
2647
|
+
offset: z25.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1)
|
|
2513
2648
|
}).strict();
|
|
2514
|
-
var TimelineImageChunkSchema =
|
|
2649
|
+
var TimelineImageChunkSchema = z25.object({
|
|
2515
2650
|
sha256: hash,
|
|
2516
|
-
offset:
|
|
2517
|
-
totalBytes:
|
|
2518
|
-
mimeType:
|
|
2519
|
-
data:
|
|
2520
|
-
eof:
|
|
2651
|
+
offset: z25.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1),
|
|
2652
|
+
totalBytes: z25.number().int().positive().max(TIMELINE_IMAGE_MAX_BYTES),
|
|
2653
|
+
mimeType: z25.enum(["image/gif", "image/jpeg", "image/png", "image/webp"]),
|
|
2654
|
+
data: z25.string().min(4).max(Math.ceil(TIMELINE_IMAGE_CHUNK_BYTES / 3) * 4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u),
|
|
2655
|
+
eof: z25.boolean()
|
|
2521
2656
|
}).strict().superRefine((chunk, context) => {
|
|
2522
2657
|
const padding = chunk.data.endsWith("==") ? 2 : chunk.data.endsWith("=") ? 1 : 0;
|
|
2523
2658
|
const length = chunk.data.length / 4 * 3 - padding;
|
|
@@ -2528,10 +2663,10 @@ var TimelineImageChunkSchema = z23.object({
|
|
|
2528
2663
|
});
|
|
2529
2664
|
|
|
2530
2665
|
// ../../shared/protocol/dist/workbench.js
|
|
2531
|
-
import { z as
|
|
2666
|
+
import { z as z27 } from "zod";
|
|
2532
2667
|
|
|
2533
2668
|
// ../../shared/protocol/dist/schedules.js
|
|
2534
|
-
import { z as
|
|
2669
|
+
import { z as z26 } from "zod";
|
|
2535
2670
|
var SCHEDULE_OPERATIONS = [
|
|
2536
2671
|
"schedule.snapshot",
|
|
2537
2672
|
"schedule.create",
|
|
@@ -2539,90 +2674,90 @@ var SCHEDULE_OPERATIONS = [
|
|
|
2539
2674
|
"schedule.draft.dismiss",
|
|
2540
2675
|
"schedule.resume"
|
|
2541
2676
|
];
|
|
2542
|
-
var Id =
|
|
2543
|
-
var NativeId =
|
|
2544
|
-
var Time =
|
|
2545
|
-
var WorkbenchScheduleRuleSchema =
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
kind:
|
|
2549
|
-
seconds:
|
|
2550
|
-
recurring:
|
|
2677
|
+
var Id = z26.string().min(1).max(256);
|
|
2678
|
+
var NativeId = z26.number().int().positive().max(Number.MAX_SAFE_INTEGER);
|
|
2679
|
+
var Time = z26.iso.datetime({ offset: true });
|
|
2680
|
+
var WorkbenchScheduleRuleSchema = z26.discriminatedUnion("kind", [
|
|
2681
|
+
z26.object({ kind: z26.literal("once"), at: Time }).strict(),
|
|
2682
|
+
z26.object({
|
|
2683
|
+
kind: z26.literal("interval"),
|
|
2684
|
+
seconds: z26.number().int().min(10).max(86400),
|
|
2685
|
+
recurring: z26.boolean().optional()
|
|
2551
2686
|
}).strict(),
|
|
2552
|
-
|
|
2553
|
-
kind:
|
|
2554
|
-
expression:
|
|
2555
|
-
timezone:
|
|
2687
|
+
z26.object({
|
|
2688
|
+
kind: z26.literal("cron"),
|
|
2689
|
+
expression: z26.string().trim().min(9).max(256).regex(/^\S+(?: +\S+){4}$/),
|
|
2690
|
+
timezone: z26.string().min(1).max(128).regex(/^[A-Za-z0-9_+./-]+$/)
|
|
2556
2691
|
}).strict()
|
|
2557
2692
|
]);
|
|
2558
2693
|
var Content = {
|
|
2559
2694
|
rule: WorkbenchScheduleRuleSchema,
|
|
2560
|
-
prompt:
|
|
2561
|
-
skill:
|
|
2695
|
+
prompt: z26.string().max(16e3).describe("The execution prompt, or ONLY the user's exact arguments when skill is set. Do not include the skill name, slash prefix, scheduling instructions, or extra explanation in skill arguments."),
|
|
2696
|
+
skill: z26.string().min(1).max(256).regex(/^[A-Za-z0-9][A-Za-z0-9_.:-]*$/).optional().describe("A genuine callable skill name from this session, without the leading slash. Set this field when the user requests a skill; put only its exact arguments in prompt.")
|
|
2562
2697
|
};
|
|
2563
|
-
var WorkbenchScheduleProposalSchema =
|
|
2564
|
-
var WorkbenchScheduleDraftSchema =
|
|
2565
|
-
id:
|
|
2698
|
+
var WorkbenchScheduleProposalSchema = z26.object(Content).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
|
|
2699
|
+
var WorkbenchScheduleDraftSchema = z26.object({
|
|
2700
|
+
id: z26.uuid(),
|
|
2566
2701
|
createdAt: Time,
|
|
2567
2702
|
...Content
|
|
2568
2703
|
}).strict();
|
|
2569
|
-
var WorkbenchScheduleEntrySchema =
|
|
2704
|
+
var WorkbenchScheduleEntrySchema = z26.object({
|
|
2570
2705
|
id: NativeId,
|
|
2571
|
-
prompt:
|
|
2572
|
-
displayPrompt:
|
|
2573
|
-
recurring:
|
|
2706
|
+
prompt: z26.string().max(1e5),
|
|
2707
|
+
displayPrompt: z26.string().max(1e5).optional(),
|
|
2708
|
+
recurring: z26.boolean(),
|
|
2574
2709
|
nextRunAt: Time,
|
|
2575
|
-
intervalMs:
|
|
2576
|
-
cron:
|
|
2577
|
-
timezone:
|
|
2710
|
+
intervalMs: z26.number().int().positive().optional(),
|
|
2711
|
+
cron: z26.string().max(256).optional(),
|
|
2712
|
+
timezone: z26.string().max(128).optional(),
|
|
2578
2713
|
at: Time.optional()
|
|
2579
2714
|
}).strict();
|
|
2580
|
-
var WorkbenchScheduleResultSchema =
|
|
2715
|
+
var WorkbenchScheduleResultSchema = z26.object({
|
|
2581
2716
|
id: Id,
|
|
2582
2717
|
scheduleId: NativeId,
|
|
2583
2718
|
triggerEventId: Id,
|
|
2584
2719
|
time: Time,
|
|
2585
|
-
prompt:
|
|
2586
|
-
status:
|
|
2587
|
-
reply:
|
|
2720
|
+
prompt: z26.string().max(16e3),
|
|
2721
|
+
status: z26.enum(["reply", "error", "merged", "pending", "unknown"]),
|
|
2722
|
+
reply: z26.string().max(16e3).optional(),
|
|
2588
2723
|
replyEventId: Id.optional(),
|
|
2589
|
-
error:
|
|
2724
|
+
error: z26.string().max(1024).optional()
|
|
2590
2725
|
}).strict();
|
|
2591
|
-
var WorkbenchScheduleSnapshotSchema =
|
|
2592
|
-
state:
|
|
2593
|
-
workingDirectory:
|
|
2594
|
-
timezone:
|
|
2595
|
-
entries:
|
|
2596
|
-
drafts:
|
|
2597
|
-
results:
|
|
2598
|
-
historyTruncated:
|
|
2726
|
+
var WorkbenchScheduleSnapshotSchema = z26.object({
|
|
2727
|
+
state: z26.enum(["active", "needs-resume"]),
|
|
2728
|
+
workingDirectory: z26.string().max(32768).optional(),
|
|
2729
|
+
timezone: z26.string().max(128).optional(),
|
|
2730
|
+
entries: z26.array(WorkbenchScheduleEntrySchema).max(256),
|
|
2731
|
+
drafts: z26.array(WorkbenchScheduleDraftSchema).max(100),
|
|
2732
|
+
results: z26.array(WorkbenchScheduleResultSchema).max(100),
|
|
2733
|
+
historyTruncated: z26.boolean(),
|
|
2599
2734
|
sampledAt: Time
|
|
2600
2735
|
}).strict();
|
|
2601
2736
|
var Submission = {
|
|
2602
|
-
operationId:
|
|
2603
|
-
operationCreatedAt:
|
|
2737
|
+
operationId: z26.uuid(),
|
|
2738
|
+
operationCreatedAt: z26.iso.datetime(),
|
|
2604
2739
|
expectedAgentRunId: Id
|
|
2605
2740
|
};
|
|
2606
|
-
var WorkbenchScheduleCreateRequestSchema =
|
|
2741
|
+
var WorkbenchScheduleCreateRequestSchema = z26.object({
|
|
2607
2742
|
...Submission,
|
|
2608
2743
|
...Content,
|
|
2609
|
-
draftId:
|
|
2744
|
+
draftId: z26.uuid().optional()
|
|
2610
2745
|
}).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
|
|
2611
|
-
var WorkbenchScheduleCreateResultSchema =
|
|
2746
|
+
var WorkbenchScheduleCreateResultSchema = z26.object({
|
|
2612
2747
|
snapshot: WorkbenchScheduleSnapshotSchema,
|
|
2613
|
-
verified:
|
|
2748
|
+
verified: z26.boolean()
|
|
2614
2749
|
}).strict();
|
|
2615
|
-
var WorkbenchScheduleDeleteRequestSchema =
|
|
2750
|
+
var WorkbenchScheduleDeleteRequestSchema = z26.object({
|
|
2616
2751
|
...Submission,
|
|
2617
2752
|
id: NativeId
|
|
2618
2753
|
}).strict();
|
|
2619
|
-
var WorkbenchScheduleDeleteResultSchema =
|
|
2754
|
+
var WorkbenchScheduleDeleteResultSchema = z26.object({
|
|
2620
2755
|
snapshot: WorkbenchScheduleSnapshotSchema,
|
|
2621
|
-
removed:
|
|
2756
|
+
removed: z26.boolean()
|
|
2622
2757
|
}).strict();
|
|
2623
|
-
var WorkbenchScheduleDraftDismissRequestSchema =
|
|
2758
|
+
var WorkbenchScheduleDraftDismissRequestSchema = z26.object({
|
|
2624
2759
|
...Submission,
|
|
2625
|
-
draftId:
|
|
2760
|
+
draftId: z26.uuid()
|
|
2626
2761
|
}).strict();
|
|
2627
2762
|
var ScheduleAndroidSchemas = {
|
|
2628
2763
|
WorkbenchScheduleRule: WorkbenchScheduleRuleSchema,
|
|
@@ -2639,10 +2774,10 @@ var ScheduleAndroidSchemas = {
|
|
|
2639
2774
|
};
|
|
2640
2775
|
|
|
2641
2776
|
// ../../shared/protocol/dist/workbench.js
|
|
2642
|
-
var Id2 =
|
|
2643
|
-
var Text =
|
|
2644
|
-
var Count =
|
|
2645
|
-
var Failure =
|
|
2777
|
+
var Id2 = z27.string().trim().min(1).max(256);
|
|
2778
|
+
var Text = z27.string().max(1e5);
|
|
2779
|
+
var Count = z27.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
|
|
2780
|
+
var Failure = z27.object({ code: Id2, message: z27.string().min(1).max(1024) }).strict();
|
|
2646
2781
|
var WORKBENCH_OPERATIONS = [
|
|
2647
2782
|
"operation.get",
|
|
2648
2783
|
"question.ask",
|
|
@@ -2661,104 +2796,104 @@ var WORKBENCH_OPERATIONS = [
|
|
|
2661
2796
|
...SCHEDULE_OPERATIONS
|
|
2662
2797
|
];
|
|
2663
2798
|
var Submission2 = {
|
|
2664
|
-
operationId:
|
|
2665
|
-
operationCreatedAt:
|
|
2799
|
+
operationId: z27.uuid(),
|
|
2800
|
+
operationCreatedAt: z27.iso.datetime(),
|
|
2666
2801
|
expectedAgentRunId: Id2
|
|
2667
2802
|
};
|
|
2668
|
-
var WorkbenchOperationGetSchema =
|
|
2669
|
-
var WorkbenchOperationStatusSchema =
|
|
2670
|
-
operationId:
|
|
2671
|
-
operation:
|
|
2803
|
+
var WorkbenchOperationGetSchema = z27.object({ operationId: z27.uuid() }).strict();
|
|
2804
|
+
var WorkbenchOperationStatusSchema = z27.object({
|
|
2805
|
+
operationId: z27.uuid(),
|
|
2806
|
+
operation: z27.enum(WORKBENCH_OPERATIONS),
|
|
2672
2807
|
agentRunId: Id2,
|
|
2673
|
-
state:
|
|
2674
|
-
result:
|
|
2808
|
+
state: z27.enum(["running", "succeeded", "failed", "uncertain", "result-expired"]),
|
|
2809
|
+
result: z27.record(z27.string(), z27.json()).optional(),
|
|
2675
2810
|
error: Failure.optional()
|
|
2676
2811
|
}).strict().superRefine((value, context) => {
|
|
2677
2812
|
if (value.state === "succeeded" !== (value.result !== void 0) || (value.state === "failed" || value.state === "uncertain") !== (value.error !== void 0)) {
|
|
2678
2813
|
context.addIssue({ code: "custom", message: "Invalid operation state payload" });
|
|
2679
2814
|
}
|
|
2680
2815
|
});
|
|
2681
|
-
var WorkbenchAskRequestSchema =
|
|
2816
|
+
var WorkbenchAskRequestSchema = z27.object({
|
|
2682
2817
|
...Submission2,
|
|
2683
|
-
question:
|
|
2818
|
+
question: z27.string().trim().min(1).max(16e3)
|
|
2684
2819
|
}).strict();
|
|
2685
|
-
var WorkbenchAskResultSchema =
|
|
2686
|
-
var WorkbenchEmptyRequestSchema =
|
|
2687
|
-
var WorkbenchSubmitRequestSchema =
|
|
2688
|
-
var WorkbenchResearchCreateRequestSchema =
|
|
2820
|
+
var WorkbenchAskResultSchema = z27.object({ answer: Text }).strict();
|
|
2821
|
+
var WorkbenchEmptyRequestSchema = z27.object({}).strict();
|
|
2822
|
+
var WorkbenchSubmitRequestSchema = z27.object(Submission2).strict();
|
|
2823
|
+
var WorkbenchResearchCreateRequestSchema = z27.object({
|
|
2689
2824
|
...Submission2,
|
|
2690
|
-
title:
|
|
2691
|
-
question:
|
|
2825
|
+
title: z27.string().trim().min(1).max(120),
|
|
2826
|
+
question: z27.string().trim().min(1).max(16e3),
|
|
2692
2827
|
sourceItemId: Id2.optional(),
|
|
2693
|
-
deferInitialPrompt:
|
|
2828
|
+
deferInitialPrompt: z27.literal(true).optional()
|
|
2694
2829
|
}).strict();
|
|
2695
|
-
var WorkbenchResearchThreadSchema =
|
|
2830
|
+
var WorkbenchResearchThreadSchema = z27.object({
|
|
2696
2831
|
sessionId: Id2,
|
|
2697
2832
|
parentSessionId: Id2,
|
|
2698
|
-
title:
|
|
2699
|
-
createdAt:
|
|
2833
|
+
title: z27.string().min(1).max(120),
|
|
2834
|
+
createdAt: z27.iso.datetime(),
|
|
2700
2835
|
contextAnchor: Id2.optional(),
|
|
2701
|
-
contextTruncated:
|
|
2702
|
-
detached:
|
|
2703
|
-
state:
|
|
2836
|
+
contextTruncated: z27.boolean(),
|
|
2837
|
+
detached: z27.boolean(),
|
|
2838
|
+
state: z27.enum(["creating", "ready", "failed"])
|
|
2704
2839
|
}).strict();
|
|
2705
|
-
var WorkbenchResearchCreateResultSchema =
|
|
2840
|
+
var WorkbenchResearchCreateResultSchema = z27.object({
|
|
2706
2841
|
thread: WorkbenchResearchThreadSchema
|
|
2707
2842
|
}).strict();
|
|
2708
|
-
var WorkbenchResearchListResultSchema =
|
|
2709
|
-
threads:
|
|
2843
|
+
var WorkbenchResearchListResultSchema = z27.object({
|
|
2844
|
+
threads: z27.array(WorkbenchResearchThreadSchema).max(100)
|
|
2710
2845
|
}).strict();
|
|
2711
|
-
var WorkbenchResearchTimelineRequestSchema =
|
|
2846
|
+
var WorkbenchResearchTimelineRequestSchema = z27.object({
|
|
2712
2847
|
cursor: Id2.optional()
|
|
2713
2848
|
}).strict();
|
|
2714
|
-
var WorkbenchResearchSendRequestSchema =
|
|
2849
|
+
var WorkbenchResearchSendRequestSchema = z27.object({
|
|
2715
2850
|
...Submission2,
|
|
2716
|
-
prompt:
|
|
2851
|
+
prompt: z27.string().trim().min(1).max(16e3)
|
|
2717
2852
|
}).strict();
|
|
2718
|
-
var WorkbenchResearchSendResultSchema =
|
|
2719
|
-
var WorkbenchCompletedResultSchema =
|
|
2720
|
-
var WorkbenchCommandSchema =
|
|
2721
|
-
name:
|
|
2722
|
-
description:
|
|
2723
|
-
argumentHint:
|
|
2724
|
-
kind:
|
|
2725
|
-
allowDuringExecution:
|
|
2726
|
-
supported:
|
|
2727
|
-
reason:
|
|
2853
|
+
var WorkbenchResearchSendResultSchema = z27.object({ messageId: Id2 }).strict();
|
|
2854
|
+
var WorkbenchCompletedResultSchema = z27.object({ completed: z27.boolean() }).strict();
|
|
2855
|
+
var WorkbenchCommandSchema = z27.object({
|
|
2856
|
+
name: z27.string().min(1).max(260),
|
|
2857
|
+
description: z27.string().max(4096),
|
|
2858
|
+
argumentHint: z27.string().max(1024).optional(),
|
|
2859
|
+
kind: z27.enum(["builtin", "skill", "client"]),
|
|
2860
|
+
allowDuringExecution: z27.boolean(),
|
|
2861
|
+
supported: z27.boolean(),
|
|
2862
|
+
reason: z27.string().max(1024).optional()
|
|
2728
2863
|
}).strict();
|
|
2729
|
-
var WorkbenchCommandListResultSchema =
|
|
2730
|
-
commands:
|
|
2864
|
+
var WorkbenchCommandListResultSchema = z27.object({
|
|
2865
|
+
commands: z27.array(WorkbenchCommandSchema).max(512)
|
|
2731
2866
|
}).strict();
|
|
2732
|
-
var WorkbenchCommandInvokeRequestSchema =
|
|
2867
|
+
var WorkbenchCommandInvokeRequestSchema = z27.object({
|
|
2733
2868
|
...Submission2,
|
|
2734
|
-
name:
|
|
2735
|
-
input:
|
|
2869
|
+
name: z27.string().trim().min(1).max(260),
|
|
2870
|
+
input: z27.string().max(16e3)
|
|
2736
2871
|
}).strict();
|
|
2737
|
-
var WorkbenchCommandChoiceSchema =
|
|
2738
|
-
name:
|
|
2739
|
-
label:
|
|
2740
|
-
input:
|
|
2872
|
+
var WorkbenchCommandChoiceSchema = z27.object({
|
|
2873
|
+
name: z27.string().min(1).max(260),
|
|
2874
|
+
label: z27.string().min(1).max(1024),
|
|
2875
|
+
input: z27.string().max(16e3)
|
|
2741
2876
|
}).strict();
|
|
2742
|
-
var WorkbenchCommandResultSchema =
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
kind:
|
|
2748
|
-
choices:
|
|
2877
|
+
var WorkbenchCommandResultSchema = z27.discriminatedUnion("kind", [
|
|
2878
|
+
z27.object({ kind: z27.literal("text"), text: Text }).strict(),
|
|
2879
|
+
z27.object({ kind: z27.literal("completed") }).strict(),
|
|
2880
|
+
z27.object({ kind: z27.literal("sent"), messageId: Id2 }).strict(),
|
|
2881
|
+
z27.object({
|
|
2882
|
+
kind: z27.literal("select-subcommand"),
|
|
2883
|
+
choices: z27.array(WorkbenchCommandChoiceSchema).min(1).max(100)
|
|
2749
2884
|
}).strict()
|
|
2750
2885
|
]);
|
|
2751
|
-
var WorkbenchQueueItemSchema =
|
|
2886
|
+
var WorkbenchQueueItemSchema = z27.object({
|
|
2752
2887
|
id: Id2,
|
|
2753
|
-
kind:
|
|
2754
|
-
texts:
|
|
2755
|
-
actions:
|
|
2888
|
+
kind: z27.string().min(1).max(64),
|
|
2889
|
+
texts: z27.array(z27.string().max(1e5)).min(1).max(100),
|
|
2890
|
+
actions: z27.array(z27.enum(["edit", "remove", "move", "send-now"])).max(4)
|
|
2756
2891
|
}).strict();
|
|
2757
|
-
var WorkbenchQueueSnapshotSchema =
|
|
2892
|
+
var WorkbenchQueueSnapshotSchema = z27.object({
|
|
2758
2893
|
generation: Id2,
|
|
2759
2894
|
revision: Id2,
|
|
2760
|
-
items:
|
|
2761
|
-
steeringMessages:
|
|
2895
|
+
items: z27.array(WorkbenchQueueItemSchema).max(512),
|
|
2896
|
+
steeringMessages: z27.array(z27.string().max(1e5)).max(512)
|
|
2762
2897
|
}).strict();
|
|
2763
2898
|
var QueueMutation = {
|
|
2764
2899
|
...Submission2,
|
|
@@ -2766,48 +2901,48 @@ var QueueMutation = {
|
|
|
2766
2901
|
revision: Id2,
|
|
2767
2902
|
id: Id2
|
|
2768
2903
|
};
|
|
2769
|
-
var WorkbenchQueueMutationRequestSchema =
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2904
|
+
var WorkbenchQueueMutationRequestSchema = z27.discriminatedUnion("action", [
|
|
2905
|
+
z27.object({ ...QueueMutation, action: z27.literal("edit"), prompt: z27.string().trim().min(1).max(1e5) }).strict(),
|
|
2906
|
+
z27.object({ ...QueueMutation, action: z27.literal("remove") }).strict(),
|
|
2907
|
+
z27.object({ ...QueueMutation, action: z27.literal("move"), toPosition: z27.number().int().min(0).max(511) }).strict(),
|
|
2908
|
+
z27.object({ ...QueueMutation, action: z27.literal("send-now") }).strict()
|
|
2774
2909
|
]);
|
|
2775
|
-
var WorkbenchQueueMutationResultSchema =
|
|
2776
|
-
changed:
|
|
2910
|
+
var WorkbenchQueueMutationResultSchema = z27.object({
|
|
2911
|
+
changed: z27.boolean(),
|
|
2777
2912
|
snapshot: WorkbenchQueueSnapshotSchema
|
|
2778
2913
|
}).strict();
|
|
2779
|
-
var WorkbenchTokenMetricSchema =
|
|
2780
|
-
kind:
|
|
2914
|
+
var WorkbenchTokenMetricSchema = z27.object({
|
|
2915
|
+
kind: z27.string().min(1).max(128),
|
|
2781
2916
|
count: Count
|
|
2782
2917
|
}).strict();
|
|
2783
|
-
var WorkbenchModelUsageSchema =
|
|
2918
|
+
var WorkbenchModelUsageSchema = z27.object({
|
|
2784
2919
|
model: Id2,
|
|
2785
2920
|
requests: Count,
|
|
2786
|
-
premiumRequestCost:
|
|
2787
|
-
tokens:
|
|
2921
|
+
premiumRequestCost: z27.number().finite().nonnegative(),
|
|
2922
|
+
tokens: z27.array(WorkbenchTokenMetricSchema).max(32)
|
|
2788
2923
|
}).strict();
|
|
2789
|
-
var WorkbenchContextSchema =
|
|
2924
|
+
var WorkbenchContextSchema = z27.object({
|
|
2790
2925
|
currentTokens: Count,
|
|
2791
2926
|
tokenLimit: Count,
|
|
2792
2927
|
systemTokens: Count.optional(),
|
|
2793
2928
|
conversationTokens: Count.optional(),
|
|
2794
2929
|
toolTokens: Count.optional()
|
|
2795
2930
|
}).strict();
|
|
2796
|
-
var WorkbenchInsightsSchema =
|
|
2797
|
-
sampledAt:
|
|
2931
|
+
var WorkbenchInsightsSchema = z27.object({
|
|
2932
|
+
sampledAt: z27.iso.datetime(),
|
|
2798
2933
|
generation: Id2,
|
|
2799
2934
|
model: Id2.optional(),
|
|
2800
2935
|
totalUserRequests: Count,
|
|
2801
|
-
premiumRequestCost:
|
|
2802
|
-
nanoAiu:
|
|
2803
|
-
tokens:
|
|
2804
|
-
models:
|
|
2936
|
+
premiumRequestCost: z27.number().finite().nonnegative(),
|
|
2937
|
+
nanoAiu: z27.string().regex(/^\d+$/).max(40).optional(),
|
|
2938
|
+
tokens: z27.array(WorkbenchTokenMetricSchema).max(32),
|
|
2939
|
+
models: z27.array(WorkbenchModelUsageSchema).max(100),
|
|
2805
2940
|
context: WorkbenchContextSchema.optional(),
|
|
2806
|
-
canCompact:
|
|
2807
|
-
compactUnavailableReason:
|
|
2941
|
+
canCompact: z27.boolean(),
|
|
2942
|
+
compactUnavailableReason: z27.string().max(1024).optional()
|
|
2808
2943
|
}).strict();
|
|
2809
|
-
var WorkbenchCompactResultSchema =
|
|
2810
|
-
success:
|
|
2944
|
+
var WorkbenchCompactResultSchema = z27.object({
|
|
2945
|
+
success: z27.boolean(),
|
|
2811
2946
|
tokensRemoved: Count,
|
|
2812
2947
|
messagesRemoved: Count
|
|
2813
2948
|
}).strict();
|
|
@@ -2843,15 +2978,27 @@ var WorkbenchAndroidSchemas = {
|
|
|
2843
2978
|
|
|
2844
2979
|
// ../../shared/protocol/dist/codegen/android-schemas.js
|
|
2845
2980
|
var AndroidProtocolSchemas = {
|
|
2981
|
+
TimelineImageBlobRequest: TimelineImageBlobRequestSchema,
|
|
2982
|
+
TimelineImageBlobResult: TimelineImageBlobResultSchema,
|
|
2983
|
+
SessionImageUploadRequest: SessionImageUploadRequestSchema,
|
|
2984
|
+
SessionImageScope: SessionImageScopeSchema,
|
|
2985
|
+
SessionImageUploadResult: SessionImageUploadResultSchema,
|
|
2986
|
+
SessionImageCommitResult: SessionImageCommitResultSchema,
|
|
2987
|
+
SessionImageDownloadResult: SessionImageDownloadResultSchema,
|
|
2846
2988
|
...WorkbenchAndroidSchemas,
|
|
2847
2989
|
...ScheduleAndroidSchemas,
|
|
2848
2990
|
SessionCommunication: SessionCommunicationSchema,
|
|
2991
|
+
SessionGitDiffData: SessionGitDiffDataSchema,
|
|
2992
|
+
SessionGitDiffEntry: SessionGitDiffEntrySchema,
|
|
2993
|
+
SessionGitDiffResultData: SessionGitDiffResultDataSchema,
|
|
2994
|
+
SessionGitDiffGzipResultData: SessionGitDiffGzipResultDataSchema,
|
|
2849
2995
|
SessionRenameData: SessionRenameDataSchema,
|
|
2850
2996
|
SessionRenameResultData: SessionRenameResultDataSchema,
|
|
2851
2997
|
SessionDirectoryListData: SessionDirectoryListDataSchema,
|
|
2852
2998
|
SessionDirectoryListResultData: SessionDirectoryListResultDataSchema,
|
|
2853
2999
|
SessionFileReadData: SessionFileReadDataSchema,
|
|
2854
3000
|
SessionFileReadResultData: SessionFileReadResultDataSchema,
|
|
3001
|
+
SessionFileReadV2ResultData: SessionFileReadV2ResultDataSchema,
|
|
2855
3002
|
SessionResourceReadData: SessionResourceReadDataSchema,
|
|
2856
3003
|
SessionResourceReadResultData: SessionResourceReadResultDataSchema,
|
|
2857
3004
|
SessionDirectoryListRequest: SessionDirectoryListRequestSchema,
|
|
@@ -2941,55 +3088,84 @@ var AndroidProtocolSchemas = {
|
|
|
2941
3088
|
};
|
|
2942
3089
|
|
|
2943
3090
|
// src/config.ts
|
|
2944
|
-
import {
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
3091
|
+
import {
|
|
3092
|
+
AgentSelectionSchema as AgentSelectionSchema2,
|
|
3093
|
+
SessionImageRelayUrlSchema,
|
|
3094
|
+
SessionImagesConfigSchema
|
|
3095
|
+
} from "@agentknight/sdk";
|
|
3096
|
+
var BooleanStringSchema = z28.enum(["true", "false"]).default("false").transform((value) => value === "true");
|
|
3097
|
+
var EnabledBooleanStringSchema = z28.enum(["true", "false"]).default("true").transform((value) => value === "true");
|
|
3098
|
+
var OptionalPathSchema = z28.preprocess(
|
|
2948
3099
|
(value) => typeof value === "string" && value.trim() === "" ? void 0 : value,
|
|
2949
|
-
|
|
3100
|
+
z28.string().trim().min(1).optional()
|
|
2950
3101
|
);
|
|
2951
|
-
var AcpArgumentsSchema =
|
|
3102
|
+
var AcpArgumentsSchema = z28.string().default("[]").transform((value, context) => {
|
|
2952
3103
|
let decoded;
|
|
2953
3104
|
try {
|
|
2954
3105
|
decoded = JSON.parse(value);
|
|
2955
3106
|
} catch (error) {
|
|
2956
3107
|
if (!(error instanceof SyntaxError)) throw error;
|
|
2957
3108
|
context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
|
|
2958
|
-
return
|
|
3109
|
+
return z28.NEVER;
|
|
2959
3110
|
}
|
|
2960
|
-
const parsed =
|
|
3111
|
+
const parsed = z28.array(z28.string()).max(128).safeParse(decoded);
|
|
2961
3112
|
if (!parsed.success) {
|
|
2962
3113
|
context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
|
|
2963
|
-
return
|
|
3114
|
+
return z28.NEVER;
|
|
2964
3115
|
}
|
|
2965
3116
|
return parsed.data;
|
|
2966
3117
|
});
|
|
2967
|
-
var EnvironmentSchema =
|
|
2968
|
-
RELAY_URL:
|
|
2969
|
-
RELAY_TOKEN:
|
|
2970
|
-
RELAY_AUTH:
|
|
2971
|
-
USER_ID:
|
|
2972
|
-
AGENTKNIGHT_MACHINE_NAME:
|
|
2973
|
-
AGENTKNIGHT_HOME:
|
|
2974
|
-
AGENTKNIGHT_WORKSPACE_ROOT:
|
|
2975
|
-
AGENTKNIGHT_CODING_AGENT:
|
|
3118
|
+
var EnvironmentSchema = z28.object({
|
|
3119
|
+
RELAY_URL: z28.url(),
|
|
3120
|
+
RELAY_TOKEN: z28.string().min(24).optional(),
|
|
3121
|
+
RELAY_AUTH: z28.enum(["token", "microsoft"]).optional(),
|
|
3122
|
+
USER_ID: z28.string().trim().min(1).max(256).default("admin"),
|
|
3123
|
+
AGENTKNIGHT_MACHINE_NAME: z28.string().trim().min(1).max(120).optional(),
|
|
3124
|
+
AGENTKNIGHT_HOME: z28.string().trim().min(1).optional(),
|
|
3125
|
+
AGENTKNIGHT_WORKSPACE_ROOT: z28.string().trim().min(1).optional(),
|
|
3126
|
+
AGENTKNIGHT_CODING_AGENT: z28.enum(["managed", "copilot", "pi", "acp"]).default("managed"),
|
|
2976
3127
|
AGENTKNIGHT_GROUP_CHAT_ENABLED: EnabledBooleanStringSchema,
|
|
2977
3128
|
AGENTKNIGHT_PEER_CHAT_ENABLED: EnabledBooleanStringSchema,
|
|
2978
3129
|
PI_CODING_AGENT_DIR: OptionalPathSchema,
|
|
2979
3130
|
AGENTKNIGHT_ACP_COMMAND: OptionalPathSchema,
|
|
2980
3131
|
AGENTKNIGHT_ACP_ARGS: AcpArgumentsSchema,
|
|
2981
|
-
SESSION_REFRESH_INTERVAL_MS:
|
|
2982
|
-
HEARTBEAT_INTERVAL_MS:
|
|
2983
|
-
LOG_LEVEL:
|
|
3132
|
+
SESSION_REFRESH_INTERVAL_MS: z28.coerce.number().int().min(5e3).max(36e5).default(3e4),
|
|
3133
|
+
HEARTBEAT_INTERVAL_MS: z28.coerce.number().int().min(5e3).max(12e4).default(15e3),
|
|
3134
|
+
LOG_LEVEL: z28.enum(["fatal", "error", "warn", "info", "debug", "trace", "silent"]).default("info"),
|
|
2984
3135
|
SHOW_PAIRING_QR: BooleanStringSchema,
|
|
2985
3136
|
PAIRING_PAGE_ENABLED: EnabledBooleanStringSchema,
|
|
2986
|
-
PAIRING_PAGE_PORT:
|
|
3137
|
+
PAIRING_PAGE_PORT: z28.coerce.number().int().min(1024).max(65535).default(defaultPairingPagePort),
|
|
2987
3138
|
PC_AGENT_EXIT_AFTER_SNAPSHOT: BooleanStringSchema,
|
|
2988
3139
|
SNAPSHOT_SUPPRESSION_ENABLED: EnabledBooleanStringSchema,
|
|
2989
3140
|
TIMELINE_COMPRESSION_ENABLED: BooleanStringSchema,
|
|
2990
3141
|
TIMELINE_INCREMENTAL_ENABLED: EnabledBooleanStringSchema,
|
|
2991
|
-
|
|
3142
|
+
SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE: BooleanStringSchema,
|
|
3143
|
+
SESSION_IMAGES_STORAGE_ACCOUNT: SessionImagesConfigSchema.shape.storageAccount.optional(),
|
|
3144
|
+
SESSION_IMAGES_STORAGE_CONTAINER: SessionImagesConfigSchema.shape.storageContainer.optional(),
|
|
3145
|
+
SECURE_MESSAGE_PACKET_BUDGET: z28.coerce.number().int().min(2048).max(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH).default(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH)
|
|
2992
3146
|
}).superRefine((value, context) => {
|
|
3147
|
+
if (value.SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE) {
|
|
3148
|
+
if (value.SESSION_IMAGES_STORAGE_ACCOUNT === void 0) {
|
|
3149
|
+
context.addIssue({
|
|
3150
|
+
code: "custom",
|
|
3151
|
+
path: ["SESSION_IMAGES_STORAGE_ACCOUNT"],
|
|
3152
|
+
message: "Session images require an independently configured Azure storage account"
|
|
3153
|
+
});
|
|
3154
|
+
}
|
|
3155
|
+
if (!SessionImageRelayUrlSchema.safeParse(value.RELAY_URL).success) {
|
|
3156
|
+
context.addIssue({
|
|
3157
|
+
code: "custom",
|
|
3158
|
+
path: ["RELAY_URL"],
|
|
3159
|
+
message: "Session images require an HTTPS Relay origin without a path, credentials, query or fragment"
|
|
3160
|
+
});
|
|
3161
|
+
}
|
|
3162
|
+
} else if (value.SESSION_IMAGES_STORAGE_ACCOUNT !== void 0 || value.SESSION_IMAGES_STORAGE_CONTAINER !== void 0) {
|
|
3163
|
+
context.addIssue({
|
|
3164
|
+
code: "custom",
|
|
3165
|
+
path: ["SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE"],
|
|
3166
|
+
message: "Session images require explicit consent to storage that is NOT end-to-end encrypted"
|
|
3167
|
+
});
|
|
3168
|
+
}
|
|
2993
3169
|
if (value.RELAY_AUTH === "token" && value.RELAY_TOKEN === void 0) {
|
|
2994
3170
|
context.addIssue({ code: "custom", path: ["RELAY_TOKEN"], message: "Token authentication requires RELAY_TOKEN" });
|
|
2995
3171
|
}
|
|
@@ -3039,8 +3215,8 @@ function loadConfig(environment = process.env, options = {}) {
|
|
|
3039
3215
|
}
|
|
3040
3216
|
return {
|
|
3041
3217
|
...settings2,
|
|
3042
|
-
relayToken:
|
|
3043
|
-
userId:
|
|
3218
|
+
relayToken: z28.string().min(32).max(4096).parse(options.relayCredential.token),
|
|
3219
|
+
userId: z28.string().min(1).max(256).parse(options.relayCredential.user.userId)
|
|
3044
3220
|
};
|
|
3045
3221
|
}
|
|
3046
3222
|
function loadStartupConfig(environment = process.env, options = {}) {
|
|
@@ -3068,7 +3244,14 @@ function loadStartupConfig(environment = process.env, options = {}) {
|
|
|
3068
3244
|
snapshotSuppressionEnabled: parsed.SNAPSHOT_SUPPRESSION_ENABLED,
|
|
3069
3245
|
timelineCompressionEnabled: parsed.TIMELINE_COMPRESSION_ENABLED,
|
|
3070
3246
|
timelineIncrementalEnabled: parsed.TIMELINE_INCREMENTAL_ENABLED,
|
|
3071
|
-
secureMessagePacketBudget: parsed.SECURE_MESSAGE_PACKET_BUDGET
|
|
3247
|
+
secureMessagePacketBudget: parsed.SECURE_MESSAGE_PACKET_BUDGET,
|
|
3248
|
+
...parsed.SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE ? {
|
|
3249
|
+
sessionImages: SessionImagesConfigSchema.parse({
|
|
3250
|
+
allowUnencryptedStorage: true,
|
|
3251
|
+
storageAccount: parsed.SESSION_IMAGES_STORAGE_ACCOUNT,
|
|
3252
|
+
storageContainer: parsed.SESSION_IMAGES_STORAGE_CONTAINER ?? "session-images"
|
|
3253
|
+
})
|
|
3254
|
+
} : {}
|
|
3072
3255
|
};
|
|
3073
3256
|
}
|
|
3074
3257
|
|
|
@@ -4138,7 +4321,7 @@ import { createHash as createHash3, randomBytes as randomBytes2, timingSafeEqual
|
|
|
4138
4321
|
import { createHash as createHash2 } from "node:crypto";
|
|
4139
4322
|
import { platform } from "node:os";
|
|
4140
4323
|
import { brotliCompressSync, brotliDecompressSync } from "node:zlib";
|
|
4141
|
-
import { z as
|
|
4324
|
+
import { z as z29 } from "zod";
|
|
4142
4325
|
var STORE_MESSAGES = {
|
|
4143
4326
|
unavailable: "Unlock your operating system credential store and restart AgentKnight. No file-based credential fallback is available.",
|
|
4144
4327
|
invalid: "The saved Relay credential is invalid. Recover it in your operating system credential manager before signing in.",
|
|
@@ -4171,30 +4354,30 @@ function normalizeRelayOrigin(value) {
|
|
|
4171
4354
|
throw new RelayCredentialStoreError("address");
|
|
4172
4355
|
}
|
|
4173
4356
|
}
|
|
4174
|
-
var ConfirmationSchema =
|
|
4175
|
-
|
|
4176
|
-
status:
|
|
4177
|
-
confirmBy:
|
|
4357
|
+
var ConfirmationSchema = z29.discriminatedUnion("status", [
|
|
4358
|
+
z29.object({
|
|
4359
|
+
status: z29.literal("pending"),
|
|
4360
|
+
confirmBy: z29.number().int().positive(),
|
|
4178
4361
|
enrollmentId: PcEnrollmentIdSchema,
|
|
4179
4362
|
verifier: PcEnrollmentVerifierRequestSchema.shape.verifier
|
|
4180
4363
|
}).strict(),
|
|
4181
|
-
|
|
4182
|
-
status:
|
|
4183
|
-
confirmBy:
|
|
4364
|
+
z29.object({
|
|
4365
|
+
status: z29.literal("confirmed"),
|
|
4366
|
+
confirmBy: z29.number().int().positive()
|
|
4184
4367
|
}).strict()
|
|
4185
4368
|
]);
|
|
4186
|
-
var RelayCredentialSchema =
|
|
4187
|
-
version:
|
|
4188
|
-
relayUrl:
|
|
4369
|
+
var RelayCredentialSchema = z29.object({
|
|
4370
|
+
version: z29.literal(1),
|
|
4371
|
+
relayUrl: z29.string().max(2048),
|
|
4189
4372
|
machineId: PcEnrollmentStartRequestSchema.shape.machineId,
|
|
4190
|
-
token:
|
|
4191
|
-
tokenId:
|
|
4192
|
-
grantId:
|
|
4373
|
+
token: z29.string().min(32).max(4096),
|
|
4374
|
+
tokenId: z29.string().min(1).max(256),
|
|
4375
|
+
grantId: z29.uuid(),
|
|
4193
4376
|
user: AuthUserSchema,
|
|
4194
4377
|
confirmation: ConfirmationSchema
|
|
4195
4378
|
}).strict();
|
|
4196
|
-
var SlotsSchema =
|
|
4197
|
-
version:
|
|
4379
|
+
var SlotsSchema = z29.object({
|
|
4380
|
+
version: z29.literal(1),
|
|
4198
4381
|
pending: RelayCredentialSchema.optional(),
|
|
4199
4382
|
confirmed: RelayCredentialSchema.optional()
|
|
4200
4383
|
}).strict();
|
|
@@ -5080,7 +5263,7 @@ import { mkdtemp, rm as rm2 } from "node:fs/promises";
|
|
|
5080
5263
|
import { createConnection, createServer as createServer2 } from "node:net";
|
|
5081
5264
|
import { tmpdir } from "node:os";
|
|
5082
5265
|
import { join as join4, resolve as resolve3 } from "node:path";
|
|
5083
|
-
import { z as
|
|
5266
|
+
import { z as z31 } from "zod";
|
|
5084
5267
|
import { DataDirectoryLease } from "@agentknight/sdk/runtime";
|
|
5085
5268
|
import {
|
|
5086
5269
|
PEER_CHAT_TIMEOUT_MS,
|
|
@@ -5092,16 +5275,16 @@ import {
|
|
|
5092
5275
|
import { randomUUID } from "node:crypto";
|
|
5093
5276
|
import { mkdir as mkdir2, readFile as readFile2, rename, rm, writeFile as writeFile2 } from "node:fs/promises";
|
|
5094
5277
|
import { dirname as dirname2, join as join3 } from "node:path";
|
|
5095
|
-
import { z as
|
|
5096
|
-
var UpgradeStateSchema =
|
|
5097
|
-
id:
|
|
5098
|
-
phase:
|
|
5099
|
-
fromVersion:
|
|
5100
|
-
toVersion:
|
|
5101
|
-
updatedAt:
|
|
5102
|
-
error:
|
|
5278
|
+
import { z as z30 } from "zod";
|
|
5279
|
+
var UpgradeStateSchema = z30.object({
|
|
5280
|
+
id: z30.uuid(),
|
|
5281
|
+
phase: z30.enum(["preparing", "ready", "waiting-idle", "switching", "verifying", "succeeded", "rolled-back", "failed"]),
|
|
5282
|
+
fromVersion: z30.string(),
|
|
5283
|
+
toVersion: z30.string(),
|
|
5284
|
+
updatedAt: z30.iso.datetime(),
|
|
5285
|
+
error: z30.string().optional()
|
|
5103
5286
|
});
|
|
5104
|
-
var UpgradeSuccessSchema =
|
|
5287
|
+
var UpgradeSuccessSchema = z30.object({ version: z30.string(), upgradedAt: z30.iso.datetime() });
|
|
5105
5288
|
async function readOptionalJson(path) {
|
|
5106
5289
|
try {
|
|
5107
5290
|
return JSON.parse(await readFile2(path, "utf8"));
|
|
@@ -5131,39 +5314,39 @@ async function readLastUpgrade(directory) {
|
|
|
5131
5314
|
}
|
|
5132
5315
|
|
|
5133
5316
|
// src/runtime.ts
|
|
5134
|
-
var RuntimeDescriptorSchema =
|
|
5135
|
-
pid:
|
|
5136
|
-
instanceId:
|
|
5137
|
-
endpoint:
|
|
5138
|
-
token:
|
|
5139
|
-
upgradeId:
|
|
5317
|
+
var RuntimeDescriptorSchema = z31.object({
|
|
5318
|
+
pid: z31.number().int().positive(),
|
|
5319
|
+
instanceId: z31.uuid(),
|
|
5320
|
+
endpoint: z31.string().min(1),
|
|
5321
|
+
token: z31.string().min(32),
|
|
5322
|
+
upgradeId: z31.uuid().optional()
|
|
5140
5323
|
});
|
|
5141
|
-
var RuntimeStatusSchema =
|
|
5142
|
-
version:
|
|
5143
|
-
pid:
|
|
5144
|
-
instanceId:
|
|
5145
|
-
ready:
|
|
5146
|
-
busy:
|
|
5147
|
-
relayUrl:
|
|
5148
|
-
identityHash:
|
|
5149
|
-
configPath:
|
|
5150
|
-
configHash:
|
|
5151
|
-
executable:
|
|
5152
|
-
cliPath:
|
|
5153
|
-
cwd:
|
|
5154
|
-
args:
|
|
5155
|
-
canRestart:
|
|
5156
|
-
restartEnvironment:
|
|
5157
|
-
upgradeId:
|
|
5158
|
-
stopping:
|
|
5324
|
+
var RuntimeStatusSchema = z31.object({
|
|
5325
|
+
version: z31.string().min(1),
|
|
5326
|
+
pid: z31.number().int().positive(),
|
|
5327
|
+
instanceId: z31.uuid(),
|
|
5328
|
+
ready: z31.boolean(),
|
|
5329
|
+
busy: z31.boolean(),
|
|
5330
|
+
relayUrl: z31.string().url(),
|
|
5331
|
+
identityHash: z31.string().min(1),
|
|
5332
|
+
configPath: z31.string().optional(),
|
|
5333
|
+
configHash: z31.string().optional(),
|
|
5334
|
+
executable: z31.string().min(1),
|
|
5335
|
+
cliPath: z31.string().min(1),
|
|
5336
|
+
cwd: z31.string().min(1),
|
|
5337
|
+
args: z31.array(z31.string()),
|
|
5338
|
+
canRestart: z31.boolean().default(false),
|
|
5339
|
+
restartEnvironment: z31.record(z31.string(), z31.string()).default({}),
|
|
5340
|
+
upgradeId: z31.uuid().optional(),
|
|
5341
|
+
stopping: z31.boolean().optional()
|
|
5159
5342
|
});
|
|
5160
|
-
var RequestSchema =
|
|
5161
|
-
|
|
5162
|
-
|
|
5343
|
+
var RequestSchema = z31.discriminatedUnion("command", [
|
|
5344
|
+
z31.object({ token: z31.string(), command: z31.enum(["status", "prepare", "cancel", "stop"]) }),
|
|
5345
|
+
z31.object({ token: z31.string(), command: z31.literal("peer-chat"), payload: PeerChatRequestSchema2 })
|
|
5163
5346
|
]);
|
|
5164
|
-
var ResponseSchema =
|
|
5165
|
-
|
|
5166
|
-
|
|
5347
|
+
var ResponseSchema = z31.discriminatedUnion("ok", [
|
|
5348
|
+
z31.object({ ok: z31.literal(true), status: RuntimeStatusSchema.optional(), reply: PeerChatResultSchema.optional() }),
|
|
5349
|
+
z31.object({ ok: z31.literal(false), error: z31.string() })
|
|
5167
5350
|
]);
|
|
5168
5351
|
var MAX_MESSAGE_BYTES = 32 * 1024;
|
|
5169
5352
|
var MAX_PEER_REQUEST_BYTES = 128 * 1024;
|
|
@@ -5426,7 +5609,7 @@ import { randomUUID as randomUUID2 } from "node:crypto";
|
|
|
5426
5609
|
import { copyFile as copyFile2, mkdir as mkdir5, open as open2, realpath as realpath2, rm as rm6 } from "node:fs/promises";
|
|
5427
5610
|
import { dirname as dirname5, join as join9, resolve as resolve8 } from "node:path";
|
|
5428
5611
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
5429
|
-
import { z as
|
|
5612
|
+
import { z as z35 } from "zod";
|
|
5430
5613
|
|
|
5431
5614
|
// src/upgrade-packages.ts
|
|
5432
5615
|
import { execFile as execFile2, spawn as spawn2 } from "node:child_process";
|
|
@@ -5440,7 +5623,7 @@ import { createHash as createHash5 } from "node:crypto";
|
|
|
5440
5623
|
import { open } from "node:fs/promises";
|
|
5441
5624
|
import { join as join5 } from "node:path";
|
|
5442
5625
|
import { promisify } from "node:util";
|
|
5443
|
-
import { z as
|
|
5626
|
+
import { z as z32 } from "zod";
|
|
5444
5627
|
|
|
5445
5628
|
// src/restart-environment.ts
|
|
5446
5629
|
import { resolve as resolve4 } from "node:path";
|
|
@@ -5478,10 +5661,10 @@ function restartEnvironment(effective, persisted, dataDirectory) {
|
|
|
5478
5661
|
|
|
5479
5662
|
// src/upgrade-supervisor.ts
|
|
5480
5663
|
var execute = promisify(execFile);
|
|
5481
|
-
var SupervisorSchema =
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5664
|
+
var SupervisorSchema = z32.discriminatedUnion("kind", [
|
|
5665
|
+
z32.object({ kind: z32.literal("process") }),
|
|
5666
|
+
z32.object({ kind: z32.literal("windows-task"), name: z32.string(), path: z32.string(), definitionHash: z32.string() }),
|
|
5667
|
+
z32.object({ kind: z32.literal("launchd"), domain: z32.string(), label: z32.string(), plist: z32.string() })
|
|
5485
5668
|
]);
|
|
5486
5669
|
function globalPackageDirectory(prefix) {
|
|
5487
5670
|
return process.platform === "win32" ? join5(prefix, "node_modules", "@agentknight", "client") : join5(prefix, "lib", "node_modules", "@agentknight", "client");
|
|
@@ -5509,7 +5692,7 @@ async function assertInstallationIdle(prefix, allowedPid) {
|
|
|
5509
5692
|
} | ForEach-Object { [int]$_.ProcessId });
|
|
5510
5693
|
ConvertTo-Json -InputObject $ids -Compress
|
|
5511
5694
|
`);
|
|
5512
|
-
pids =
|
|
5695
|
+
pids = z32.array(z32.number().int().positive()).parse(JSON.parse(result));
|
|
5513
5696
|
} else {
|
|
5514
5697
|
const result = await execute("ps", ["-eo", "pid=,args="], { timeout: 1e4 });
|
|
5515
5698
|
pids = result.stdout.split("\n").flatMap((line) => {
|
|
@@ -5545,7 +5728,7 @@ async function detectSupervisor(runtime) {
|
|
|
5545
5728
|
if($matches.Count -gt 1) { throw 'Multiple scheduled tasks match this Agent. Refusing to choose.' };
|
|
5546
5729
|
if($matches.Count -eq 1) { $matches[0] | ConvertTo-Json -Compress } else { 'null' }
|
|
5547
5730
|
`);
|
|
5548
|
-
const task =
|
|
5731
|
+
const task = z32.object({ name: z32.string(), path: z32.string(), xml: z32.string() }).nullable().parse(JSON.parse(result));
|
|
5549
5732
|
return task === null ? { kind: "process" } : {
|
|
5550
5733
|
kind: "windows-task",
|
|
5551
5734
|
name: task.name,
|
|
@@ -6065,13 +6248,13 @@ async function prepareUpgradePackages(options) {
|
|
|
6065
6248
|
import { mkdir as mkdir4, readFile as readFile4, rm as rm5, stat } from "node:fs/promises";
|
|
6066
6249
|
import { createHash as createHash7 } from "node:crypto";
|
|
6067
6250
|
import { join as join8, resolve as resolve7 } from "node:path";
|
|
6068
|
-
import { z as
|
|
6251
|
+
import { z as z34 } from "zod";
|
|
6069
6252
|
|
|
6070
6253
|
// src/upgrade-startup.ts
|
|
6071
6254
|
import { rename as rename2, rm as rm4 } from "node:fs/promises";
|
|
6072
6255
|
import { basename, dirname as dirname4, join as join7, resolve as resolve6 } from "node:path";
|
|
6073
|
-
import { z as
|
|
6074
|
-
var PermitSchema =
|
|
6256
|
+
import { z as z33 } from "zod";
|
|
6257
|
+
var PermitSchema = z33.object({ id: z33.uuid(), version: z33.string(), cliPath: z33.string() });
|
|
6075
6258
|
function globalUpgradeLockPath(cliPath) {
|
|
6076
6259
|
const packageDirectory = dirname4(dirname4(cliPath));
|
|
6077
6260
|
const scope = dirname4(packageDirectory);
|
|
@@ -6085,14 +6268,14 @@ async function claimUpgradeStartup(directory, version, cliPath) {
|
|
|
6085
6268
|
const globalPath = globalUpgradeLockPath(cliPath);
|
|
6086
6269
|
const globalLock = globalPath === void 0 ? void 0 : await readOptionalJson(globalPath);
|
|
6087
6270
|
if (globalLock !== void 0) {
|
|
6088
|
-
const globalOwner =
|
|
6271
|
+
const globalOwner = z33.object({ id: z33.uuid(), dataDirectory: z33.string() }).parse(globalLock);
|
|
6089
6272
|
if (lock === void 0 || resolve6(globalOwner.dataDirectory) !== resolve6(directory)) {
|
|
6090
6273
|
throw new Error("This global installation is being upgraded for another data directory. Wait for that upgrade to finish.");
|
|
6091
6274
|
}
|
|
6092
6275
|
}
|
|
6093
6276
|
if (lock === void 0) return void 0;
|
|
6094
|
-
const owner =
|
|
6095
|
-
if (globalLock !== void 0 &&
|
|
6277
|
+
const owner = z33.object({ id: z33.uuid() }).parse(lock);
|
|
6278
|
+
if (globalLock !== void 0 && z33.object({ id: z33.uuid() }).parse(globalLock).id !== owner.id) {
|
|
6096
6279
|
throw new Error("Local and global upgrade ownership disagree; inspect the interrupted upgrade before starting.");
|
|
6097
6280
|
}
|
|
6098
6281
|
const path = join7(directory, "run", "upgrade-start.json");
|
|
@@ -6109,24 +6292,24 @@ async function claimUpgradeStartup(directory, version, cliPath) {
|
|
|
6109
6292
|
}
|
|
6110
6293
|
|
|
6111
6294
|
// src/upgrade-job.ts
|
|
6112
|
-
var PreparedPackagesSchema =
|
|
6113
|
-
targetArchive:
|
|
6114
|
-
rollbackArchive:
|
|
6115
|
-
cacheDirectory:
|
|
6116
|
-
registry:
|
|
6295
|
+
var PreparedPackagesSchema = z34.object({
|
|
6296
|
+
targetArchive: z34.string(),
|
|
6297
|
+
rollbackArchive: z34.string(),
|
|
6298
|
+
cacheDirectory: z34.string(),
|
|
6299
|
+
registry: z34.string().url()
|
|
6117
6300
|
});
|
|
6118
|
-
var UpgradePlanSchema =
|
|
6119
|
-
id:
|
|
6120
|
-
dataDirectory:
|
|
6121
|
-
directory:
|
|
6122
|
-
prefix:
|
|
6123
|
-
currentVersion:
|
|
6124
|
-
targetVersion:
|
|
6301
|
+
var UpgradePlanSchema = z34.object({
|
|
6302
|
+
id: z34.uuid(),
|
|
6303
|
+
dataDirectory: z34.string(),
|
|
6304
|
+
directory: z34.string(),
|
|
6305
|
+
prefix: z34.string(),
|
|
6306
|
+
currentVersion: z34.string(),
|
|
6307
|
+
targetVersion: z34.string(),
|
|
6125
6308
|
packages: PreparedPackagesSchema,
|
|
6126
6309
|
runtime: RuntimeStatusSchema.optional(),
|
|
6127
6310
|
supervisor: SupervisorSchema,
|
|
6128
|
-
taskName:
|
|
6129
|
-
configHash:
|
|
6311
|
+
taskName: z34.string(),
|
|
6312
|
+
configHash: z34.string().optional()
|
|
6130
6313
|
});
|
|
6131
6314
|
async function fileHash(path) {
|
|
6132
6315
|
return createHash7("sha256").update(await readFile4(path)).digest("hex");
|
|
@@ -6209,7 +6392,7 @@ async function upgrade(options) {
|
|
|
6209
6392
|
const lockPath = join9(root, "upgrade.lock");
|
|
6210
6393
|
const existing = await readOptionalJson(lockPath);
|
|
6211
6394
|
if (existing !== void 0) {
|
|
6212
|
-
const owner =
|
|
6395
|
+
const owner = z35.object({ pid: z35.number().int().positive() }).parse(existing);
|
|
6213
6396
|
if (processExists(owner.pid)) throw new Error("Another upgrade is already running. Use agentknight status.");
|
|
6214
6397
|
throw new Error(`An interrupted upgrade needs review. Read ${join9(root, "status.json")} before removing ${lockPath}.`);
|
|
6215
6398
|
}
|
|
@@ -6507,17 +6690,17 @@ import { initialize, supportsAgentSelection } from "@agentknight/sdk";
|
|
|
6507
6690
|
|
|
6508
6691
|
// src/chat-settings.ts
|
|
6509
6692
|
import { join as join11 } from "node:path";
|
|
6510
|
-
import { z as
|
|
6693
|
+
import { z as z36 } from "zod";
|
|
6511
6694
|
var settings = {
|
|
6512
6695
|
groupChatEnabled: {
|
|
6513
6696
|
file: "group-chat-settings.json",
|
|
6514
6697
|
label: "Group chat",
|
|
6515
|
-
schema:
|
|
6698
|
+
schema: z36.object({ groupChatEnabled: z36.boolean() }).strict().transform((value) => value.groupChatEnabled)
|
|
6516
6699
|
},
|
|
6517
6700
|
peerChatEnabled: {
|
|
6518
6701
|
file: "peer-chat-settings.json",
|
|
6519
6702
|
label: "Peer chat",
|
|
6520
|
-
schema:
|
|
6703
|
+
schema: z36.object({ peerChatEnabled: z36.boolean() }).strict().transform((value) => value.peerChatEnabled)
|
|
6521
6704
|
}
|
|
6522
6705
|
};
|
|
6523
6706
|
var ChatSettings = class _ChatSettings {
|
|
@@ -6565,14 +6748,14 @@ import { randomUUID as randomUUID3 } from "node:crypto";
|
|
|
6565
6748
|
import { link, lstat as lstat2, mkdir as mkdir6, readFile as readFile5, readlink, rename as rename3, rm as rm7, writeFile as writeFile4 } from "node:fs/promises";
|
|
6566
6749
|
import { homedir as homedir3, hostname } from "node:os";
|
|
6567
6750
|
import { dirname as dirname6, join as join12, resolve as resolve9 } from "node:path";
|
|
6568
|
-
import { z as
|
|
6751
|
+
import { z as z37 } from "zod";
|
|
6569
6752
|
import { DeviceIdentitySchema } from "@agentknight/sdk";
|
|
6570
6753
|
import { DeviceIdentitySchema as DeviceIdentitySchema2 } from "@agentknight/sdk";
|
|
6571
|
-
var LegacyDeviceIdentitySchema =
|
|
6572
|
-
schemaVersion:
|
|
6573
|
-
machineId:
|
|
6574
|
-
machineName:
|
|
6575
|
-
createdAt:
|
|
6754
|
+
var LegacyDeviceIdentitySchema = z37.object({
|
|
6755
|
+
schemaVersion: z37.literal(1),
|
|
6756
|
+
machineId: z37.uuid(),
|
|
6757
|
+
machineName: z37.string().trim().min(1).max(120),
|
|
6758
|
+
createdAt: z37.iso.datetime({ offset: true })
|
|
6576
6759
|
});
|
|
6577
6760
|
function resolveMachineName(environment = process.env, fallback = hostname()) {
|
|
6578
6761
|
const computerName = environment.COMPUTERNAME?.trim();
|
|
@@ -6593,7 +6776,7 @@ async function readStableDeviceId(path) {
|
|
|
6593
6776
|
const info = await optionalStat(path);
|
|
6594
6777
|
if (info === void 0) return void 0;
|
|
6595
6778
|
if (!info.isFile()) throw new Error(`Device ID must be a regular file, not a link: ${path}`);
|
|
6596
|
-
const parsed =
|
|
6779
|
+
const parsed = z37.uuid().safeParse((await readFile5(path, "utf8")).trim());
|
|
6597
6780
|
if (!parsed.success) throw new Error(`Invalid device ID in ${path}`, { cause: parsed.error });
|
|
6598
6781
|
return parsed.data;
|
|
6599
6782
|
}
|
|
@@ -6656,7 +6839,7 @@ async function loadOrCreateDeviceIdentity(dataDirectory, currentMachineName = re
|
|
|
6656
6839
|
await requireDirectory(dataDirectory);
|
|
6657
6840
|
let existing;
|
|
6658
6841
|
try {
|
|
6659
|
-
existing =
|
|
6842
|
+
existing = z37.union([DeviceIdentitySchema, LegacyDeviceIdentitySchema]).parse(
|
|
6660
6843
|
JSON.parse(await readFile5(path, "utf8"))
|
|
6661
6844
|
);
|
|
6662
6845
|
} catch (error) {
|