@agentknight/client 0.9.44 → 0.9.46
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 +835 -814
- package/dist/upgrade-worker.js +20 -2
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -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 z29 } from "zod";
|
|
488
488
|
|
|
489
489
|
// ../../shared/protocol/dist/common/version.js
|
|
490
490
|
import { z } from "zod";
|
|
@@ -1230,33 +1230,52 @@ var A2aRelayResponseSchema = z11.object({
|
|
|
1230
1230
|
body: z11.string().max(A2A_BODY_MAX_LENGTH)
|
|
1231
1231
|
}).strict();
|
|
1232
1232
|
|
|
1233
|
-
// ../../shared/protocol/dist/
|
|
1233
|
+
// ../../shared/protocol/dist/transport/browser-open-url.js
|
|
1234
1234
|
import { z as z12 } from "zod";
|
|
1235
|
-
var
|
|
1235
|
+
var BROWSER_OPEN_URL_MAX_LENGTH = 8192;
|
|
1236
|
+
var BrowserOpenUrlParamsSchema = z12.strictObject({
|
|
1237
|
+
url: z12.string().min(1).max(BROWSER_OPEN_URL_MAX_LENGTH).refine((value) => {
|
|
1238
|
+
if (!/^https?:\/\//i.test(value) || /[\s\p{Cc}\\]/u.test(value) || /%(?![0-9a-f]{2})/i.test(value))
|
|
1239
|
+
return false;
|
|
1240
|
+
const authority = value.split(/[/?#]/)[2];
|
|
1241
|
+
if (!authority || /[@%]|[^\x21-\x7e]/.test(authority))
|
|
1242
|
+
return false;
|
|
1243
|
+
try {
|
|
1244
|
+
return new URL(value).hostname.length > 0;
|
|
1245
|
+
} catch {
|
|
1246
|
+
return false;
|
|
1247
|
+
}
|
|
1248
|
+
}, "Expected an absolute HTTP(S) URL without credentials or whitespace")
|
|
1249
|
+
});
|
|
1250
|
+
var BrowserOpenUrlResultSchema = z12.strictObject({ opened: z12.literal(true) });
|
|
1251
|
+
|
|
1252
|
+
// ../../shared/protocol/dist/sessions/session-communication.js
|
|
1253
|
+
import { z as z13 } from "zod";
|
|
1254
|
+
var SessionCommunicationIdSchema = z13.string().min(1).max(256).refine((value) => value === value.trim(), "Expected an unpadded identity");
|
|
1236
1255
|
var SessionCommunicationIdentityShape = {
|
|
1237
1256
|
requestId: SessionCommunicationIdSchema,
|
|
1238
1257
|
machineId: SessionCommunicationIdSchema,
|
|
1239
1258
|
sessionId: SessionCommunicationIdSchema,
|
|
1240
|
-
operation:
|
|
1241
|
-
version:
|
|
1259
|
+
operation: z13.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$/u),
|
|
1260
|
+
version: z13.number().int().positive().max(2147483647)
|
|
1242
1261
|
};
|
|
1243
|
-
var SessionCommunicationDataSchema =
|
|
1244
|
-
var SessionCommunicationRequestSchema =
|
|
1262
|
+
var SessionCommunicationDataSchema = z13.record(z13.string(), z13.json());
|
|
1263
|
+
var SessionCommunicationRequestSchema = z13.object({
|
|
1245
1264
|
...SessionCommunicationIdentityShape,
|
|
1246
|
-
kind:
|
|
1265
|
+
kind: z13.literal("request"),
|
|
1247
1266
|
data: SessionCommunicationDataSchema
|
|
1248
1267
|
}).strict();
|
|
1249
|
-
var SessionCommunicationResponseSchema =
|
|
1268
|
+
var SessionCommunicationResponseSchema = z13.object({
|
|
1250
1269
|
...SessionCommunicationIdentityShape,
|
|
1251
|
-
kind:
|
|
1270
|
+
kind: z13.literal("response"),
|
|
1252
1271
|
data: SessionCommunicationDataSchema
|
|
1253
1272
|
}).strict();
|
|
1254
|
-
var SessionCommunicationErrorSchema =
|
|
1273
|
+
var SessionCommunicationErrorSchema = z13.object({
|
|
1255
1274
|
...SessionCommunicationIdentityShape,
|
|
1256
|
-
kind:
|
|
1275
|
+
kind: z13.literal("error"),
|
|
1257
1276
|
error: ProtocolFailureSchema
|
|
1258
1277
|
}).strict();
|
|
1259
|
-
var SessionCommunicationSchema =
|
|
1278
|
+
var SessionCommunicationSchema = z13.discriminatedUnion("kind", [
|
|
1260
1279
|
SessionCommunicationRequestSchema,
|
|
1261
1280
|
SessionCommunicationResponseSchema,
|
|
1262
1281
|
SessionCommunicationErrorSchema
|
|
@@ -1266,7 +1285,7 @@ function sessionCommunicationOperationCapability(operation, version) {
|
|
|
1266
1285
|
}
|
|
1267
1286
|
|
|
1268
1287
|
// ../../shared/protocol/dist/sessions/session-workspace.js
|
|
1269
|
-
import { z as
|
|
1288
|
+
import { z as z14 } from "zod";
|
|
1270
1289
|
var SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH = 32768;
|
|
1271
1290
|
var SESSION_PROJECT_IDENTITY_MAX_RESPONSE_BYTES = 640 * 1024;
|
|
1272
1291
|
var SESSION_DIRECTORY_MAX_PATH_LENGTH = 1024;
|
|
@@ -1307,47 +1326,47 @@ function isSafeSessionDirectoryPath(path) {
|
|
|
1307
1326
|
const segments = path.split("/");
|
|
1308
1327
|
return segments.length <= SESSION_DIRECTORY_MAX_DEPTH && segments.every((segment) => segment.length > 0 && segment.length <= 255 && segment !== "." && segment !== ".." && !/[\\:<>"|?*\u0000-\u001f\u007f]/u.test(segment) && !/[. ]$/u.test(segment) && !/~[0-9]/u.test(segment) && !/^(?:con|prn|aux|nul|com[0-9¹²³]|lpt[0-9¹²³])(?:[ .]|$)/iu.test(segment) && !/^(?:conin\$|conout\$)$/iu.test(segment));
|
|
1309
1328
|
}
|
|
1310
|
-
var SessionDirectoryListRequestSchema =
|
|
1329
|
+
var SessionDirectoryListRequestSchema = z14.object({
|
|
1311
1330
|
requestId: IdSchema,
|
|
1312
1331
|
machineId: IdSchema,
|
|
1313
1332
|
sessionId: IdSchema,
|
|
1314
|
-
path:
|
|
1333
|
+
path: z14.string().max(SESSION_DIRECTORY_MAX_PATH_LENGTH)
|
|
1315
1334
|
}).strict();
|
|
1316
|
-
var SessionDirectoryEntrySchema =
|
|
1317
|
-
name:
|
|
1318
|
-
kind:
|
|
1335
|
+
var SessionDirectoryEntrySchema = z14.object({
|
|
1336
|
+
name: z14.string().min(1).max(255),
|
|
1337
|
+
kind: z14.enum(["directory", "file", "blocked"])
|
|
1319
1338
|
}).strict();
|
|
1320
1339
|
var SessionDirectoryListDataSchema = SessionDirectoryListRequestSchema.pick({ path: true });
|
|
1321
|
-
var SessionDirectoryListResultDataSchema =
|
|
1322
|
-
path:
|
|
1323
|
-
rootRevision:
|
|
1324
|
-
entries:
|
|
1340
|
+
var SessionDirectoryListResultDataSchema = z14.object({
|
|
1341
|
+
path: z14.string().max(SESSION_DIRECTORY_MAX_PATH_LENGTH),
|
|
1342
|
+
rootRevision: z14.string().min(1).max(128),
|
|
1343
|
+
entries: z14.array(SessionDirectoryEntrySchema).max(SESSION_DIRECTORY_MAX_ENTRIES)
|
|
1325
1344
|
}).strict();
|
|
1326
1345
|
var SessionDirectoryListResponseSchema = SessionDirectoryListRequestSchema.extend({
|
|
1327
|
-
rootRevision:
|
|
1328
|
-
entries:
|
|
1346
|
+
rootRevision: z14.string().min(1).max(128).optional(),
|
|
1347
|
+
entries: z14.array(SessionDirectoryEntrySchema).max(SESSION_DIRECTORY_MAX_ENTRIES).optional(),
|
|
1329
1348
|
error: ProtocolFailureSchema.optional()
|
|
1330
1349
|
}).superRefine((response, context) => {
|
|
1331
1350
|
if (response.error === void 0 ? response.entries === void 0 || response.rootRevision === void 0 : response.entries !== void 0 || response.rootRevision !== void 0) {
|
|
1332
1351
|
context.addIssue({ code: "custom", message: "Expected directory success or failure" });
|
|
1333
1352
|
}
|
|
1334
1353
|
});
|
|
1335
|
-
var SessionFileReadDataSchema =
|
|
1336
|
-
path:
|
|
1337
|
-
rootRevision:
|
|
1354
|
+
var SessionFileReadDataSchema = z14.object({
|
|
1355
|
+
path: z14.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
|
|
1356
|
+
rootRevision: z14.string().regex(/^[A-Za-z0-9_-]{43}$/u)
|
|
1338
1357
|
}).strict();
|
|
1339
1358
|
function fileResultSchema(mediaTypes, extended) {
|
|
1340
1359
|
const maxOriginal = extended ? SESSION_FILE_V2_MAX_ORIGINAL_BYTES : SESSION_FILE_MAX_ORIGINAL_BYTES;
|
|
1341
1360
|
const maxTransfer = extended ? SESSION_FILE_V2_MAX_TRANSFER_BYTES : SESSION_FILE_MAX_TRANSFER_BYTES;
|
|
1342
|
-
return
|
|
1361
|
+
return z14.object({
|
|
1343
1362
|
path: SessionFileReadDataSchema.shape.path,
|
|
1344
1363
|
rootRevision: SessionFileReadDataSchema.shape.rootRevision,
|
|
1345
|
-
mediaType:
|
|
1346
|
-
originalByteLength:
|
|
1364
|
+
mediaType: z14.enum(mediaTypes),
|
|
1365
|
+
originalByteLength: z14.number().int().min(0).max(maxOriginal),
|
|
1347
1366
|
// Canonical length after decompression, not the length of the transport bytes.
|
|
1348
|
-
byteLength:
|
|
1349
|
-
encoding:
|
|
1350
|
-
data:
|
|
1367
|
+
byteLength: z14.number().int().min(0).max(maxOriginal),
|
|
1368
|
+
encoding: z14.enum(["identity", "gzip"]),
|
|
1369
|
+
data: z14.string().max(extended ? SESSION_FILE_V2_MAX_BASE64_LENGTH : SESSION_FILE_MAX_BASE64_LENGTH)
|
|
1351
1370
|
}).strict().superRefine((result, context) => {
|
|
1352
1371
|
const invalid = () => context.addIssue({ code: "custom", message: "Invalid file content" });
|
|
1353
1372
|
if (result.encoding === "gzip" !== result.originalByteLength >= SESSION_FILE_GZIP_THRESHOLD_BYTES)
|
|
@@ -1367,19 +1386,19 @@ var SessionFileReadResultDataSchema = fileResultSchema(SESSION_FILE_MEDIA_TYPES,
|
|
|
1367
1386
|
var SessionFileReadV2ResultDataSchema = fileResultSchema(SESSION_FILE_V2_MEDIA_TYPES, true);
|
|
1368
1387
|
var SessionFileDownloadDataSchema = SessionFileReadDataSchema;
|
|
1369
1388
|
var SessionFileDownloadResultDataSchema = fileResultSchema(["application/octet-stream"], true);
|
|
1370
|
-
var SessionGitProjectSchema =
|
|
1371
|
-
localRepositoryKey:
|
|
1372
|
-
worktreeRoot:
|
|
1373
|
-
mainWorktreeRoot:
|
|
1374
|
-
gitRemoteUrl:
|
|
1389
|
+
var SessionGitProjectSchema = z14.object({
|
|
1390
|
+
localRepositoryKey: z14.string().length(43).regex(/^[A-Za-z0-9_-]{43}$/),
|
|
1391
|
+
worktreeRoot: z14.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH),
|
|
1392
|
+
mainWorktreeRoot: z14.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH).optional(),
|
|
1393
|
+
gitRemoteUrl: z14.string().max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH).optional()
|
|
1375
1394
|
}).strict();
|
|
1376
|
-
var SessionProjectIdentityRequestDataSchema =
|
|
1377
|
-
var SessionProjectIdentityResultDataSchema =
|
|
1395
|
+
var SessionProjectIdentityRequestDataSchema = z14.object({}).strict();
|
|
1396
|
+
var SessionProjectIdentityResultDataSchema = z14.object({
|
|
1378
1397
|
project: SessionGitProjectSchema.optional()
|
|
1379
1398
|
}).strict();
|
|
1380
1399
|
|
|
1381
1400
|
// ../../shared/protocol/dist/sessions/session-git-diff.js
|
|
1382
|
-
import { z as
|
|
1401
|
+
import { z as z15 } from "zod";
|
|
1383
1402
|
var SESSION_GIT_DIFF_GZIP_MIN_BYTES = 2 * 1024;
|
|
1384
1403
|
var SESSION_GIT_DIFF_MAX_FILES = 500;
|
|
1385
1404
|
var SESSION_GIT_DIFF_MAX_PATCH_BYTES = 128 * 1024;
|
|
@@ -1387,24 +1406,24 @@ var SESSION_GIT_DIFF_MAX_RESPONSE_BYTES = 512 * 1024;
|
|
|
1387
1406
|
var SESSION_GIT_DIFF_MAX_TRANSFER_BYTES = SESSION_GIT_DIFF_MAX_RESPONSE_BYTES + 1024;
|
|
1388
1407
|
var SESSION_GIT_DIFF_MAX_BASE64_LENGTH = Math.ceil(SESSION_GIT_DIFF_MAX_TRANSFER_BYTES / 3) * 4;
|
|
1389
1408
|
var SESSION_GIT_DIFF_MAX_GZIP_RESPONSE_BYTES = SESSION_GIT_DIFF_MAX_BASE64_LENGTH + 1024;
|
|
1390
|
-
var commitSchema =
|
|
1391
|
-
var SessionGitDiffDataSchema =
|
|
1409
|
+
var commitSchema = z15.string().regex(/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u);
|
|
1410
|
+
var SessionGitDiffDataSchema = z15.object({
|
|
1392
1411
|
rootRevision: SessionFileReadDataSchema.shape.rootRevision,
|
|
1393
1412
|
path: SessionFileReadDataSchema.shape.path.optional(),
|
|
1394
1413
|
baseCommit: commitSchema.optional()
|
|
1395
1414
|
}).strict().refine((value) => value.path === void 0 === (value.baseCommit === void 0), "A file diff must identify its listed base commit");
|
|
1396
|
-
var SessionGitDiffEntrySchema =
|
|
1415
|
+
var SessionGitDiffEntrySchema = z15.object({
|
|
1397
1416
|
path: SessionFileReadDataSchema.shape.path,
|
|
1398
|
-
status:
|
|
1417
|
+
status: z15.enum(["added", "modified", "deleted", "untracked"])
|
|
1399
1418
|
}).strict();
|
|
1400
|
-
var SessionGitDiffResultDataSchema =
|
|
1419
|
+
var SessionGitDiffResultDataSchema = z15.object({
|
|
1401
1420
|
rootRevision: SessionFileReadDataSchema.shape.rootRevision,
|
|
1402
|
-
baseRef:
|
|
1421
|
+
baseRef: z15.enum(["origin/main", "main"]),
|
|
1403
1422
|
baseCommit: commitSchema,
|
|
1404
|
-
files:
|
|
1423
|
+
files: z15.array(SessionGitDiffEntrySchema).max(SESSION_GIT_DIFF_MAX_FILES).optional(),
|
|
1405
1424
|
path: SessionFileReadDataSchema.shape.path.optional(),
|
|
1406
|
-
patch:
|
|
1407
|
-
binary:
|
|
1425
|
+
patch: z15.string().max(SESSION_GIT_DIFF_MAX_PATCH_BYTES).optional(),
|
|
1426
|
+
binary: z15.boolean().optional()
|
|
1408
1427
|
}).strict().superRefine((value, context) => {
|
|
1409
1428
|
const encoder = new TextEncoder();
|
|
1410
1429
|
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) {
|
|
@@ -1418,13 +1437,13 @@ var SessionGitDiffResultDataSchema = z14.object({
|
|
|
1418
1437
|
context.addIssue({ code: "custom", message: "Expected a text patch or an explicit binary change" });
|
|
1419
1438
|
}
|
|
1420
1439
|
});
|
|
1421
|
-
var SessionGitDiffFileErrorSchema =
|
|
1422
|
-
code:
|
|
1423
|
-
message:
|
|
1440
|
+
var SessionGitDiffFileErrorSchema = z15.object({
|
|
1441
|
+
code: z15.enum(["DIFF_BLOCKED", "DIFF_FILE_UNAVAILABLE"]),
|
|
1442
|
+
message: z15.string().min(1).max(512)
|
|
1424
1443
|
}).strict();
|
|
1425
1444
|
var SessionGitDiffPartialEntrySchema = SessionGitDiffEntrySchema.extend({
|
|
1426
1445
|
// Error paths are display-only: they must never be used for file requests.
|
|
1427
|
-
path:
|
|
1446
|
+
path: z15.string().min(1).max(32768).refine((value) => !value.includes("\0")),
|
|
1428
1447
|
error: SessionGitDiffFileErrorSchema.optional()
|
|
1429
1448
|
}).superRefine((value, context) => {
|
|
1430
1449
|
if (value.error === void 0 && !SessionGitDiffEntrySchema.shape.path.safeParse(value.path).success) {
|
|
@@ -1432,12 +1451,12 @@ var SessionGitDiffPartialEntrySchema = SessionGitDiffEntrySchema.extend({
|
|
|
1432
1451
|
}
|
|
1433
1452
|
});
|
|
1434
1453
|
var SessionGitDiffPartialResultDataSchema = SessionGitDiffResultDataSchema.safeExtend({
|
|
1435
|
-
files:
|
|
1454
|
+
files: z15.array(SessionGitDiffPartialEntrySchema).max(SESSION_GIT_DIFF_MAX_FILES).optional()
|
|
1436
1455
|
});
|
|
1437
|
-
var SessionGitDiffGzipResultDataSchema =
|
|
1438
|
-
encoding:
|
|
1439
|
-
byteLength:
|
|
1440
|
-
data:
|
|
1456
|
+
var SessionGitDiffGzipResultDataSchema = z15.object({
|
|
1457
|
+
encoding: z15.literal("gzip"),
|
|
1458
|
+
byteLength: z15.number().int().min(1).max(SESSION_GIT_DIFF_MAX_RESPONSE_BYTES),
|
|
1459
|
+
data: z15.string().max(SESSION_GIT_DIFF_MAX_BASE64_LENGTH).regex(/^[A-Za-z0-9+/]*={0,2}$/u)
|
|
1441
1460
|
}).strict().superRefine((value, context) => {
|
|
1442
1461
|
const padding = value.data.endsWith("==") ? 2 : value.data.endsWith("=") ? 1 : 0;
|
|
1443
1462
|
const bytes = value.data.length / 4 * 3 - padding;
|
|
@@ -1447,13 +1466,13 @@ var SessionGitDiffGzipResultDataSchema = z14.object({
|
|
|
1447
1466
|
context.addIssue({ code: "custom", message: "Invalid gzip transfer" });
|
|
1448
1467
|
}
|
|
1449
1468
|
});
|
|
1450
|
-
var SessionGitDiffV2ResultDataSchema =
|
|
1469
|
+
var SessionGitDiffV2ResultDataSchema = z15.union([
|
|
1451
1470
|
SessionGitDiffResultDataSchema,
|
|
1452
1471
|
SessionGitDiffGzipResultDataSchema
|
|
1453
1472
|
]);
|
|
1454
1473
|
|
|
1455
1474
|
// ../../shared/protocol/dist/sessions/session-resource.js
|
|
1456
|
-
import { z as
|
|
1475
|
+
import { z as z16 } from "zod";
|
|
1457
1476
|
var SESSION_RESOURCE_MAX_ORIGINAL_BYTES = 499999;
|
|
1458
1477
|
var SESSION_RESOURCE_GZIP_THRESHOLD_BYTES = 20 * 1024;
|
|
1459
1478
|
var SESSION_RESOURCE_MAX_IMAGE_PIXELS = 16 * 1024 * 1024;
|
|
@@ -1467,18 +1486,18 @@ var SESSION_RESOURCE_MEDIA_TYPES = [
|
|
|
1467
1486
|
"text/css",
|
|
1468
1487
|
"text/javascript"
|
|
1469
1488
|
];
|
|
1470
|
-
var SessionResourceReadDataSchema =
|
|
1471
|
-
path:
|
|
1472
|
-
rootRevision:
|
|
1489
|
+
var SessionResourceReadDataSchema = z16.object({
|
|
1490
|
+
path: z16.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
|
|
1491
|
+
rootRevision: z16.string().regex(/^[A-Za-z0-9_-]{43}$/u)
|
|
1473
1492
|
}).strict();
|
|
1474
|
-
var SessionResourceReadResultDataSchema =
|
|
1493
|
+
var SessionResourceReadResultDataSchema = z16.object({
|
|
1475
1494
|
path: SessionResourceReadDataSchema.shape.path,
|
|
1476
1495
|
rootRevision: SessionResourceReadDataSchema.shape.rootRevision,
|
|
1477
|
-
mediaType:
|
|
1478
|
-
originalByteLength:
|
|
1479
|
-
byteLength:
|
|
1480
|
-
encoding:
|
|
1481
|
-
data:
|
|
1496
|
+
mediaType: z16.enum(SESSION_RESOURCE_MEDIA_TYPES),
|
|
1497
|
+
originalByteLength: z16.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
|
|
1498
|
+
byteLength: z16.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
|
|
1499
|
+
encoding: z16.enum(["identity", "gzip"]),
|
|
1500
|
+
data: z16.string().max(SESSION_RESOURCE_MAX_BASE64_LENGTH)
|
|
1482
1501
|
}).strict().superRefine((result, context) => {
|
|
1483
1502
|
const invalid = () => context.addIssue({ code: "custom", message: "Invalid resource content" });
|
|
1484
1503
|
if (result.encoding === "gzip" !== result.originalByteLength >= SESSION_RESOURCE_GZIP_THRESHOLD_BYTES || result.byteLength !== result.originalByteLength || result.mediaType.startsWith("image/") && result.byteLength === 0)
|
|
@@ -1491,115 +1510,115 @@ var SessionResourceReadResultDataSchema = z15.object({
|
|
|
1491
1510
|
});
|
|
1492
1511
|
|
|
1493
1512
|
// ../../shared/protocol/dist/sessions/session-images.js
|
|
1494
|
-
import { z as
|
|
1513
|
+
import { z as z17 } from "zod";
|
|
1495
1514
|
var SESSION_IMAGE_MAX_BYTES = 3 * 1024 * 1024;
|
|
1496
1515
|
var SESSION_IMAGE_MAX_PIXELS = 16 * 1024 * 1024;
|
|
1497
|
-
var SessionImageIdSchema =
|
|
1498
|
-
var SessionImageTransferModeSchema =
|
|
1499
|
-
var DirectUrlSchema =
|
|
1516
|
+
var SessionImageIdSchema = z17.uuid();
|
|
1517
|
+
var SessionImageTransferModeSchema = z17.enum(["direct", "proxy"]);
|
|
1518
|
+
var DirectUrlSchema = z17.string().regex(/^https:\/\/[^/?#@\\\s\x00-\x1f\x7f]+(?:[/?][^#\\\s\x00-\x1f\x7f]*)?$/u).refine((raw) => {
|
|
1500
1519
|
if (!URL.canParse(raw))
|
|
1501
1520
|
return false;
|
|
1502
1521
|
const url = new URL(raw);
|
|
1503
1522
|
return url.protocol === "https:" && url.username === "" && url.password === "" && url.hash === "";
|
|
1504
1523
|
}, "Direct transfers require HTTPS without userinfo, fragments or unsafe characters");
|
|
1505
|
-
var ProxyUrlSchema =
|
|
1506
|
-
var SessionImageTransferHeadersSchema =
|
|
1507
|
-
var SessionImageUploadRequestSchema =
|
|
1524
|
+
var ProxyUrlSchema = z17.string().regex(/^\/api\/v3\/session-images\/[0-9a-f-]+\/content\?[^#\\\s\x00-\x1f\x7f]+$/u);
|
|
1525
|
+
var SessionImageTransferHeadersSchema = z17.record(z17.string().regex(/^(?:content-type|if-none-match|x-ms-blob-type)$/u), z17.string().min(1).max(256).regex(/^[\x20-\x7e]+$/u));
|
|
1526
|
+
var SessionImageUploadRequestSchema = z17.object({
|
|
1508
1527
|
machineId: IdSchema,
|
|
1509
1528
|
sessionId: IdSchema,
|
|
1510
|
-
sizeBytes:
|
|
1529
|
+
sizeBytes: z17.number().int().min(1).max(SESSION_IMAGE_MAX_BYTES)
|
|
1511
1530
|
}).strict();
|
|
1512
|
-
var SessionImageScopeSchema =
|
|
1531
|
+
var SessionImageScopeSchema = z17.object({
|
|
1513
1532
|
machineId: IdSchema,
|
|
1514
1533
|
sessionId: IdSchema
|
|
1515
1534
|
}).strict();
|
|
1516
1535
|
var UploadResultFields = {
|
|
1517
1536
|
imageId: SessionImageIdSchema,
|
|
1518
|
-
uploadExpiresAt:
|
|
1519
|
-
method:
|
|
1520
|
-
contentType:
|
|
1537
|
+
uploadExpiresAt: z17.number().int().positive(),
|
|
1538
|
+
method: z17.literal("PUT"),
|
|
1539
|
+
contentType: z17.literal("image/webp"),
|
|
1521
1540
|
headers: SessionImageTransferHeadersSchema.refine((headers) => headers["content-type"] === "image/webp")
|
|
1522
1541
|
};
|
|
1523
|
-
var SessionImageUploadResultSchema =
|
|
1524
|
-
|
|
1525
|
-
|
|
1542
|
+
var SessionImageUploadResultSchema = z17.discriminatedUnion("mode", [
|
|
1543
|
+
z17.object({ ...UploadResultFields, mode: z17.literal("direct"), uploadUrl: DirectUrlSchema }).strict(),
|
|
1544
|
+
z17.object({ ...UploadResultFields, mode: z17.literal("proxy"), uploadUrl: ProxyUrlSchema }).strict()
|
|
1526
1545
|
]);
|
|
1527
|
-
var SessionImageCommitResultSchema =
|
|
1546
|
+
var SessionImageCommitResultSchema = z17.object({
|
|
1528
1547
|
imageId: SessionImageIdSchema,
|
|
1529
1548
|
machineId: IdSchema,
|
|
1530
1549
|
sessionId: IdSchema,
|
|
1531
|
-
sizeBytes:
|
|
1532
|
-
width:
|
|
1533
|
-
height:
|
|
1534
|
-
sha256:
|
|
1535
|
-
expiresAt:
|
|
1550
|
+
sizeBytes: z17.number().int().min(1).max(SESSION_IMAGE_MAX_BYTES),
|
|
1551
|
+
width: z17.number().int().positive(),
|
|
1552
|
+
height: z17.number().int().positive(),
|
|
1553
|
+
sha256: z17.string().regex(/^[a-f0-9]{64}$/u),
|
|
1554
|
+
expiresAt: z17.number().int().positive()
|
|
1536
1555
|
}).strict();
|
|
1537
1556
|
var DownloadResultFields = {
|
|
1538
1557
|
image: SessionImageCommitResultSchema,
|
|
1539
|
-
downloadExpiresAt:
|
|
1540
|
-
method:
|
|
1558
|
+
downloadExpiresAt: z17.number().int().positive(),
|
|
1559
|
+
method: z17.literal("GET"),
|
|
1541
1560
|
headers: SessionImageTransferHeadersSchema
|
|
1542
1561
|
};
|
|
1543
|
-
var SessionImageDownloadResultSchema =
|
|
1544
|
-
|
|
1545
|
-
|
|
1562
|
+
var SessionImageDownloadResultSchema = z17.discriminatedUnion("mode", [
|
|
1563
|
+
z17.object({ ...DownloadResultFields, mode: z17.literal("direct"), downloadUrl: DirectUrlSchema }).strict(),
|
|
1564
|
+
z17.object({ ...DownloadResultFields, mode: z17.literal("proxy"), downloadUrl: ProxyUrlSchema }).strict()
|
|
1546
1565
|
]);
|
|
1547
|
-
var TimelineImageBlobRequestSchema =
|
|
1548
|
-
sha256:
|
|
1566
|
+
var TimelineImageBlobRequestSchema = z17.object({
|
|
1567
|
+
sha256: z17.string().regex(/^[a-f0-9]{64}$/u)
|
|
1549
1568
|
}).strict();
|
|
1550
|
-
var TimelineImageBlobResultSchema =
|
|
1569
|
+
var TimelineImageBlobResultSchema = z17.object({
|
|
1551
1570
|
sha256: TimelineImageBlobRequestSchema.shape.sha256,
|
|
1552
1571
|
image: SessionImageCommitResultSchema
|
|
1553
1572
|
}).strict();
|
|
1554
1573
|
|
|
1555
1574
|
// ../../shared/protocol/dist/sessions/session-rename.js
|
|
1556
|
-
import { z as
|
|
1575
|
+
import { z as z18 } from "zod";
|
|
1557
1576
|
var SESSION_RENAME_OPERATION = "session.rename";
|
|
1558
1577
|
var SESSION_RENAME_VERSION = 1;
|
|
1559
1578
|
var SESSION_RENAME_CAPABILITY = sessionCommunicationOperationCapability(SESSION_RENAME_OPERATION, SESSION_RENAME_VERSION);
|
|
1560
1579
|
var SESSION_NAME_MAX_LENGTH = 100;
|
|
1561
|
-
var SessionNameSchema =
|
|
1562
|
-
var SessionRenameDataSchema =
|
|
1563
|
-
var SessionRenameResultDataSchema =
|
|
1580
|
+
var SessionNameSchema = z18.string().regex(/^[^\u0000-\u001f\u007f]*$/u).trim().min(1).max(SESSION_NAME_MAX_LENGTH);
|
|
1581
|
+
var SessionRenameDataSchema = z18.object({ name: SessionNameSchema }).strict();
|
|
1582
|
+
var SessionRenameResultDataSchema = z18.object({ name: SessionNameSchema }).strict();
|
|
1564
1583
|
|
|
1565
1584
|
// ../../shared/protocol/dist/sessions/sessions.js
|
|
1566
|
-
import { z as
|
|
1567
|
-
var GroupChatParticipantSchema =
|
|
1585
|
+
import { z as z19 } from "zod";
|
|
1586
|
+
var GroupChatParticipantSchema = z19.object({
|
|
1568
1587
|
sessionId: IdSchema,
|
|
1569
|
-
title:
|
|
1588
|
+
title: z19.string().trim().min(1).max(260)
|
|
1570
1589
|
}).strict();
|
|
1571
|
-
var GroupChatInfoSchema =
|
|
1572
|
-
participants:
|
|
1573
|
-
state:
|
|
1590
|
+
var GroupChatInfoSchema = z19.object({
|
|
1591
|
+
participants: z19.array(GroupChatParticipantSchema).length(2).refine((participants) => new Set(participants.map((participant) => participant.sessionId)).size === 2, "A group requires two different sessions"),
|
|
1592
|
+
state: z19.enum(["ready", "running", "paused", "blocked"])
|
|
1574
1593
|
}).strict();
|
|
1575
|
-
var SessionSummarySchema =
|
|
1594
|
+
var SessionSummarySchema = z19.object({
|
|
1576
1595
|
userId: IdSchema,
|
|
1577
1596
|
sessionId: IdSchema,
|
|
1578
1597
|
machineId: IdSchema,
|
|
1579
|
-
summary:
|
|
1580
|
-
renameSupported:
|
|
1581
|
-
workingDirectory:
|
|
1582
|
-
gitRoot:
|
|
1583
|
-
repository:
|
|
1584
|
-
gitRemoteUrl:
|
|
1585
|
-
branch:
|
|
1586
|
-
isRemote:
|
|
1598
|
+
summary: z19.string().max(4096).optional(),
|
|
1599
|
+
renameSupported: z19.boolean().optional(),
|
|
1600
|
+
workingDirectory: z19.string().max(32768).optional(),
|
|
1601
|
+
gitRoot: z19.string().max(32768).optional(),
|
|
1602
|
+
repository: z19.string().max(1024).optional(),
|
|
1603
|
+
gitRemoteUrl: z19.string().max(32768).optional(),
|
|
1604
|
+
branch: z19.string().max(1024).optional(),
|
|
1605
|
+
isRemote: z19.boolean(),
|
|
1587
1606
|
createdAt: IsoDateSchema,
|
|
1588
1607
|
modifiedAt: IsoDateSchema,
|
|
1589
1608
|
groupChat: GroupChatInfoSchema.optional()
|
|
1590
1609
|
});
|
|
1591
|
-
var SessionsSnapshotSchema =
|
|
1610
|
+
var SessionsSnapshotSchema = z19.object({
|
|
1592
1611
|
userId: IdSchema,
|
|
1593
1612
|
machineId: IdSchema,
|
|
1594
|
-
machineName:
|
|
1595
|
-
platform:
|
|
1613
|
+
machineName: z19.string().trim().min(1).max(120),
|
|
1614
|
+
platform: z19.string().trim().min(1).max(64),
|
|
1596
1615
|
agentRunId: IdSchema,
|
|
1597
|
-
sequence:
|
|
1616
|
+
sequence: z19.number().int().positive(),
|
|
1598
1617
|
generatedAt: IsoDateSchema,
|
|
1599
|
-
complete:
|
|
1600
|
-
totalCount:
|
|
1601
|
-
nextCursor:
|
|
1602
|
-
sessions:
|
|
1618
|
+
complete: z19.boolean(),
|
|
1619
|
+
totalCount: z19.number().int().nonnegative(),
|
|
1620
|
+
nextCursor: z19.string().min(1).max(1024).optional(),
|
|
1621
|
+
sessions: z19.array(SessionSummarySchema)
|
|
1603
1622
|
}).superRefine((snapshot, context) => {
|
|
1604
1623
|
if (snapshot.totalCount < snapshot.sessions.length) {
|
|
1605
1624
|
context.addIssue({
|
|
@@ -1641,47 +1660,47 @@ var SessionsSnapshotSchema = z18.object({
|
|
|
1641
1660
|
sessionIds.add(session.sessionId);
|
|
1642
1661
|
}
|
|
1643
1662
|
});
|
|
1644
|
-
var SessionListRequestSchema =
|
|
1663
|
+
var SessionListRequestSchema = z19.object({
|
|
1645
1664
|
requestId: IdSchema,
|
|
1646
1665
|
machineId: IdSchema,
|
|
1647
|
-
cursor:
|
|
1666
|
+
cursor: z19.string().min(1).max(1024).optional()
|
|
1648
1667
|
});
|
|
1649
|
-
var SessionListResultSchema =
|
|
1650
|
-
|
|
1651
|
-
ok:
|
|
1668
|
+
var SessionListResultSchema = z19.discriminatedUnion("ok", [
|
|
1669
|
+
z19.object({
|
|
1670
|
+
ok: z19.literal(true),
|
|
1652
1671
|
requestId: IdSchema,
|
|
1653
1672
|
machineId: IdSchema,
|
|
1654
1673
|
snapshot: SessionsSnapshotSchema
|
|
1655
1674
|
}),
|
|
1656
|
-
|
|
1657
|
-
ok:
|
|
1675
|
+
z19.object({
|
|
1676
|
+
ok: z19.literal(false),
|
|
1658
1677
|
requestId: IdSchema,
|
|
1659
1678
|
machineId: IdSchema,
|
|
1660
1679
|
error: ProtocolFailureSchema
|
|
1661
1680
|
})
|
|
1662
1681
|
]);
|
|
1663
|
-
var SessionAgentModeSchema =
|
|
1682
|
+
var SessionAgentModeSchema = z19.enum([
|
|
1664
1683
|
"interactive",
|
|
1665
1684
|
"plan",
|
|
1666
1685
|
"autopilot"
|
|
1667
1686
|
]);
|
|
1668
|
-
var AgentConfigurationOptionSchema =
|
|
1687
|
+
var AgentConfigurationOptionSchema = z19.object({
|
|
1669
1688
|
id: IdSchema,
|
|
1670
|
-
name:
|
|
1671
|
-
value:
|
|
1672
|
-
options:
|
|
1673
|
-
value:
|
|
1674
|
-
name:
|
|
1689
|
+
name: z19.string().trim().min(1).max(260),
|
|
1690
|
+
value: z19.string().min(1).max(256),
|
|
1691
|
+
options: z19.array(z19.object({
|
|
1692
|
+
value: z19.string().min(1).max(256),
|
|
1693
|
+
name: z19.string().trim().min(1).max(260)
|
|
1675
1694
|
}).strict()).min(1).max(100)
|
|
1676
1695
|
}).strict();
|
|
1677
|
-
var AgentConfigurationChangeSchema =
|
|
1696
|
+
var AgentConfigurationChangeSchema = z19.object({
|
|
1678
1697
|
id: IdSchema,
|
|
1679
|
-
value:
|
|
1698
|
+
value: z19.string().min(1).max(256)
|
|
1680
1699
|
}).strict();
|
|
1681
|
-
var WorkspaceOptionSchema =
|
|
1700
|
+
var WorkspaceOptionSchema = z19.object({
|
|
1682
1701
|
id: IdSchema,
|
|
1683
|
-
name:
|
|
1684
|
-
path:
|
|
1702
|
+
name: z19.string().trim().min(1).max(260),
|
|
1703
|
+
path: z19.string().trim().min(1).max(32768)
|
|
1685
1704
|
});
|
|
1686
1705
|
var REASONING_EFFORTS = [
|
|
1687
1706
|
"low",
|
|
@@ -1690,113 +1709,113 @@ var REASONING_EFFORTS = [
|
|
|
1690
1709
|
"xhigh",
|
|
1691
1710
|
"max"
|
|
1692
1711
|
];
|
|
1693
|
-
var ReasoningEffortSchema =
|
|
1694
|
-
var CopilotModelOptionSchema =
|
|
1712
|
+
var ReasoningEffortSchema = z19.enum(REASONING_EFFORTS);
|
|
1713
|
+
var CopilotModelOptionSchema = z19.object({
|
|
1695
1714
|
id: IdSchema,
|
|
1696
|
-
name:
|
|
1697
|
-
isDefault:
|
|
1698
|
-
supportedReasoningEfforts:
|
|
1715
|
+
name: z19.string().trim().min(1).max(260),
|
|
1716
|
+
isDefault: z19.boolean(),
|
|
1717
|
+
supportedReasoningEfforts: z19.array(ReasoningEffortSchema).optional(),
|
|
1699
1718
|
defaultReasoningEffort: ReasoningEffortSchema.optional(),
|
|
1700
|
-
creation:
|
|
1719
|
+
creation: z19.object({
|
|
1701
1720
|
agentId: IdSchema,
|
|
1702
|
-
agentName:
|
|
1703
|
-
modelName:
|
|
1704
|
-
agentModes:
|
|
1705
|
-
reasoningEffortConfigurationSupported:
|
|
1706
|
-
isDefault:
|
|
1721
|
+
agentName: z19.string().trim().min(1).max(260),
|
|
1722
|
+
modelName: z19.string().trim().min(1).max(260),
|
|
1723
|
+
agentModes: z19.array(SessionAgentModeSchema).min(1),
|
|
1724
|
+
reasoningEffortConfigurationSupported: z19.boolean(),
|
|
1725
|
+
isDefault: z19.boolean()
|
|
1707
1726
|
}).strict().optional()
|
|
1708
1727
|
});
|
|
1709
|
-
var SessionReasoningEffortSchema =
|
|
1728
|
+
var SessionReasoningEffortSchema = z19.enum([
|
|
1710
1729
|
"default",
|
|
1711
1730
|
...REASONING_EFFORTS
|
|
1712
1731
|
]);
|
|
1713
|
-
var CurrentReasoningEffortSchema =
|
|
1714
|
-
var SessionToolInfoSchema =
|
|
1715
|
-
name:
|
|
1716
|
-
description:
|
|
1717
|
-
deferred:
|
|
1732
|
+
var CurrentReasoningEffortSchema = z19.string().trim().min(1).max(64);
|
|
1733
|
+
var SessionToolInfoSchema = z19.object({
|
|
1734
|
+
name: z19.string().trim().min(1).max(260),
|
|
1735
|
+
description: z19.string().trim().min(1).max(4096).optional(),
|
|
1736
|
+
deferred: z19.boolean().optional()
|
|
1718
1737
|
});
|
|
1719
|
-
var SessionSlashCommandInfoSchema =
|
|
1720
|
-
name:
|
|
1721
|
-
description:
|
|
1722
|
-
kind:
|
|
1738
|
+
var SessionSlashCommandInfoSchema = z19.object({
|
|
1739
|
+
name: z19.string().trim().min(1).max(260),
|
|
1740
|
+
description: z19.string().trim().min(1).max(4096).optional(),
|
|
1741
|
+
kind: z19.enum(["builtin", "skill", "client"])
|
|
1723
1742
|
});
|
|
1724
|
-
var SessionSkillInfoSchema =
|
|
1725
|
-
name:
|
|
1726
|
-
description:
|
|
1727
|
-
source:
|
|
1728
|
-
enabled:
|
|
1729
|
-
userInvocable:
|
|
1730
|
-
commandName:
|
|
1743
|
+
var SessionSkillInfoSchema = z19.object({
|
|
1744
|
+
name: z19.string().trim().min(1).max(260),
|
|
1745
|
+
description: z19.string().trim().min(1).max(4096).optional(),
|
|
1746
|
+
source: z19.string().trim().min(1).max(260),
|
|
1747
|
+
enabled: z19.boolean(),
|
|
1748
|
+
userInvocable: z19.boolean(),
|
|
1749
|
+
commandName: z19.string().trim().min(1).max(260).optional()
|
|
1731
1750
|
});
|
|
1732
|
-
var SessionEnvironmentInfoSchema =
|
|
1733
|
-
tools:
|
|
1734
|
-
slashCommands:
|
|
1735
|
-
skills:
|
|
1751
|
+
var SessionEnvironmentInfoSchema = z19.object({
|
|
1752
|
+
tools: z19.array(SessionToolInfoSchema).max(512),
|
|
1753
|
+
slashCommands: z19.array(SessionSlashCommandInfoSchema).max(512),
|
|
1754
|
+
skills: z19.array(SessionSkillInfoSchema).max(512)
|
|
1736
1755
|
});
|
|
1737
|
-
var SessionOptionsRequestSchema =
|
|
1756
|
+
var SessionOptionsRequestSchema = z19.object({
|
|
1738
1757
|
requestId: IdSchema,
|
|
1739
1758
|
machineId: IdSchema,
|
|
1740
1759
|
sessionId: IdSchema.optional(),
|
|
1741
1760
|
workspaceId: IdSchema.optional(),
|
|
1742
|
-
capabilities:
|
|
1761
|
+
capabilities: z19.array(IdSchema).max(64).optional()
|
|
1743
1762
|
});
|
|
1744
|
-
var SessionOptionsResultSchema =
|
|
1745
|
-
|
|
1746
|
-
ok:
|
|
1763
|
+
var SessionOptionsResultSchema = z19.discriminatedUnion("ok", [
|
|
1764
|
+
z19.object({
|
|
1765
|
+
ok: z19.literal(true),
|
|
1747
1766
|
requestId: IdSchema,
|
|
1748
1767
|
machineId: IdSchema,
|
|
1749
1768
|
sessionId: IdSchema.optional(),
|
|
1750
|
-
workspaces:
|
|
1751
|
-
models:
|
|
1752
|
-
modelRefreshError:
|
|
1753
|
-
agentModes:
|
|
1754
|
-
reasoningEffortConfigurationSupported:
|
|
1755
|
-
fileAttachmentsSupported:
|
|
1756
|
-
worktreeCreationSupported:
|
|
1757
|
-
worktreeBranches:
|
|
1758
|
-
worktreeCurrentBranch:
|
|
1769
|
+
workspaces: z19.array(WorkspaceOptionSchema),
|
|
1770
|
+
models: z19.array(CopilotModelOptionSchema).min(1),
|
|
1771
|
+
modelRefreshError: z19.string().min(1).max(4096).optional(),
|
|
1772
|
+
agentModes: z19.array(SessionAgentModeSchema).min(1),
|
|
1773
|
+
reasoningEffortConfigurationSupported: z19.literal(true).optional(),
|
|
1774
|
+
fileAttachmentsSupported: z19.boolean().optional(),
|
|
1775
|
+
worktreeCreationSupported: z19.literal(true).optional(),
|
|
1776
|
+
worktreeBranches: z19.array(z19.string().min(1).max(1024)).optional(),
|
|
1777
|
+
worktreeCurrentBranch: z19.string().min(1).max(1024).optional(),
|
|
1759
1778
|
currentModelId: IdSchema.optional(),
|
|
1760
1779
|
currentAgentMode: SessionAgentModeSchema.optional(),
|
|
1761
1780
|
currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
|
|
1762
1781
|
environment: SessionEnvironmentInfoSchema.optional(),
|
|
1763
|
-
environmentPending:
|
|
1764
|
-
agentName:
|
|
1765
|
-
configOptions:
|
|
1782
|
+
environmentPending: z19.literal(true).optional(),
|
|
1783
|
+
agentName: z19.string().trim().min(1).max(260).optional(),
|
|
1784
|
+
configOptions: z19.array(AgentConfigurationOptionSchema).max(32).optional()
|
|
1766
1785
|
}),
|
|
1767
|
-
|
|
1768
|
-
ok:
|
|
1786
|
+
z19.object({
|
|
1787
|
+
ok: z19.literal(false),
|
|
1769
1788
|
requestId: IdSchema,
|
|
1770
1789
|
machineId: IdSchema,
|
|
1771
1790
|
sessionId: IdSchema.optional(),
|
|
1772
1791
|
error: ProtocolFailureSchema,
|
|
1773
|
-
failureStage:
|
|
1774
|
-
models:
|
|
1775
|
-
agentModes:
|
|
1776
|
-
reasoningEffortConfigurationSupported:
|
|
1777
|
-
fileAttachmentsSupported:
|
|
1792
|
+
failureStage: z19.enum(["models", "configuration", "workspaces"]).optional(),
|
|
1793
|
+
models: z19.array(CopilotModelOptionSchema).min(1).optional(),
|
|
1794
|
+
agentModes: z19.array(SessionAgentModeSchema).min(1).optional(),
|
|
1795
|
+
reasoningEffortConfigurationSupported: z19.literal(true).optional(),
|
|
1796
|
+
fileAttachmentsSupported: z19.boolean().optional(),
|
|
1778
1797
|
currentModelId: IdSchema.optional(),
|
|
1779
1798
|
currentAgentMode: SessionAgentModeSchema.optional(),
|
|
1780
1799
|
currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
|
|
1781
|
-
agentName:
|
|
1782
|
-
configOptions:
|
|
1800
|
+
agentName: z19.string().trim().min(1).max(260).optional(),
|
|
1801
|
+
configOptions: z19.array(AgentConfigurationOptionSchema).max(32).optional()
|
|
1783
1802
|
})
|
|
1784
1803
|
]);
|
|
1785
|
-
var SessionCreateRequestSchema =
|
|
1804
|
+
var SessionCreateRequestSchema = z19.object({
|
|
1786
1805
|
requestId: IdSchema,
|
|
1787
1806
|
machineId: IdSchema,
|
|
1788
1807
|
workspaceId: IdSchema,
|
|
1789
1808
|
modelId: IdSchema,
|
|
1790
1809
|
agentMode: SessionAgentModeSchema,
|
|
1791
1810
|
reasoningEffort: SessionReasoningEffortSchema.optional(),
|
|
1792
|
-
worktree:
|
|
1793
|
-
branchName:
|
|
1794
|
-
baseBranch:
|
|
1811
|
+
worktree: z19.object({
|
|
1812
|
+
branchName: z19.string().trim().min(1).max(120).optional(),
|
|
1813
|
+
baseBranch: z19.string().trim().min(1).max(1024).optional()
|
|
1795
1814
|
}).strict().optional()
|
|
1796
1815
|
});
|
|
1797
|
-
var SessionCreateResultSchema =
|
|
1798
|
-
|
|
1799
|
-
ok:
|
|
1816
|
+
var SessionCreateResultSchema = z19.discriminatedUnion("ok", [
|
|
1817
|
+
z19.object({
|
|
1818
|
+
ok: z19.literal(true),
|
|
1800
1819
|
requestId: IdSchema,
|
|
1801
1820
|
machineId: IdSchema,
|
|
1802
1821
|
session: SessionSummarySchema,
|
|
@@ -1804,34 +1823,34 @@ var SessionCreateResultSchema = z18.discriminatedUnion("ok", [
|
|
|
1804
1823
|
agentMode: SessionAgentModeSchema,
|
|
1805
1824
|
reasoningEffort: SessionReasoningEffortSchema.optional()
|
|
1806
1825
|
}),
|
|
1807
|
-
|
|
1808
|
-
ok:
|
|
1826
|
+
z19.object({
|
|
1827
|
+
ok: z19.literal(false),
|
|
1809
1828
|
requestId: IdSchema,
|
|
1810
1829
|
machineId: IdSchema,
|
|
1811
1830
|
error: ProtocolFailureSchema
|
|
1812
1831
|
})
|
|
1813
1832
|
]);
|
|
1814
|
-
var SessionDeleteRequestSchema =
|
|
1833
|
+
var SessionDeleteRequestSchema = z19.object({
|
|
1815
1834
|
requestId: IdSchema,
|
|
1816
1835
|
machineId: IdSchema,
|
|
1817
1836
|
sessionId: IdSchema
|
|
1818
1837
|
}).strict();
|
|
1819
|
-
var SessionDeleteResultSchema =
|
|
1820
|
-
|
|
1821
|
-
ok:
|
|
1838
|
+
var SessionDeleteResultSchema = z19.discriminatedUnion("ok", [
|
|
1839
|
+
z19.object({
|
|
1840
|
+
ok: z19.literal(true),
|
|
1822
1841
|
requestId: IdSchema,
|
|
1823
1842
|
machineId: IdSchema,
|
|
1824
1843
|
sessionId: IdSchema
|
|
1825
1844
|
}).strict(),
|
|
1826
|
-
|
|
1827
|
-
ok:
|
|
1845
|
+
z19.object({
|
|
1846
|
+
ok: z19.literal(false),
|
|
1828
1847
|
requestId: IdSchema,
|
|
1829
1848
|
machineId: IdSchema,
|
|
1830
1849
|
sessionId: IdSchema,
|
|
1831
1850
|
error: ProtocolFailureSchema
|
|
1832
1851
|
}).strict()
|
|
1833
1852
|
]);
|
|
1834
|
-
var SessionConfigureRequestSchema =
|
|
1853
|
+
var SessionConfigureRequestSchema = z19.object({
|
|
1835
1854
|
requestId: IdSchema,
|
|
1836
1855
|
machineId: IdSchema,
|
|
1837
1856
|
sessionId: IdSchema,
|
|
@@ -1840,59 +1859,59 @@ var SessionConfigureRequestSchema = z18.object({
|
|
|
1840
1859
|
reasoningEffort: SessionReasoningEffortSchema.optional(),
|
|
1841
1860
|
configOption: AgentConfigurationChangeSchema.optional()
|
|
1842
1861
|
}).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" });
|
|
1843
|
-
var SessionConfigureResultSchema =
|
|
1844
|
-
|
|
1845
|
-
ok:
|
|
1862
|
+
var SessionConfigureResultSchema = z19.discriminatedUnion("ok", [
|
|
1863
|
+
z19.object({
|
|
1864
|
+
ok: z19.literal(true),
|
|
1846
1865
|
requestId: IdSchema,
|
|
1847
1866
|
machineId: IdSchema,
|
|
1848
1867
|
sessionId: IdSchema,
|
|
1849
1868
|
modelId: IdSchema.optional(),
|
|
1850
1869
|
agentMode: SessionAgentModeSchema,
|
|
1851
1870
|
reasoningEffort: CurrentReasoningEffortSchema.optional(),
|
|
1852
|
-
configOptions:
|
|
1871
|
+
configOptions: z19.array(AgentConfigurationOptionSchema).max(32).optional()
|
|
1853
1872
|
}),
|
|
1854
|
-
|
|
1855
|
-
ok:
|
|
1873
|
+
z19.object({
|
|
1874
|
+
ok: z19.literal(false),
|
|
1856
1875
|
requestId: IdSchema,
|
|
1857
1876
|
machineId: IdSchema,
|
|
1858
1877
|
sessionId: IdSchema,
|
|
1859
1878
|
error: ProtocolFailureSchema
|
|
1860
1879
|
})
|
|
1861
1880
|
]);
|
|
1862
|
-
var SessionRemoteActionSchema =
|
|
1881
|
+
var SessionRemoteActionSchema = z19.enum([
|
|
1863
1882
|
"status",
|
|
1864
1883
|
"enable",
|
|
1865
1884
|
"disable"
|
|
1866
1885
|
]);
|
|
1867
|
-
var SessionRemoteStateSchema =
|
|
1886
|
+
var SessionRemoteStateSchema = z19.enum([
|
|
1868
1887
|
"off",
|
|
1869
1888
|
"connecting",
|
|
1870
1889
|
"active",
|
|
1871
1890
|
"error"
|
|
1872
1891
|
]);
|
|
1873
|
-
var SessionRemoteRequestSchema =
|
|
1892
|
+
var SessionRemoteRequestSchema = z19.object({
|
|
1874
1893
|
requestId: IdSchema,
|
|
1875
1894
|
machineId: IdSchema,
|
|
1876
1895
|
sessionId: IdSchema,
|
|
1877
1896
|
action: SessionRemoteActionSchema
|
|
1878
1897
|
});
|
|
1879
|
-
var SessionRemoteStatusSchema =
|
|
1898
|
+
var SessionRemoteStatusSchema = z19.object({
|
|
1880
1899
|
state: SessionRemoteStateSchema,
|
|
1881
1900
|
attachedSessionId: IdSchema.optional(),
|
|
1882
|
-
url:
|
|
1883
|
-
steerable:
|
|
1901
|
+
url: z19.url().max(32768).optional(),
|
|
1902
|
+
steerable: z19.boolean(),
|
|
1884
1903
|
error: ProtocolFailureSchema.optional()
|
|
1885
1904
|
});
|
|
1886
|
-
var SessionRemoteResultSchema =
|
|
1887
|
-
|
|
1888
|
-
ok:
|
|
1905
|
+
var SessionRemoteResultSchema = z19.discriminatedUnion("ok", [
|
|
1906
|
+
z19.object({
|
|
1907
|
+
ok: z19.literal(true),
|
|
1889
1908
|
requestId: IdSchema,
|
|
1890
1909
|
machineId: IdSchema,
|
|
1891
1910
|
sessionId: IdSchema,
|
|
1892
1911
|
status: SessionRemoteStatusSchema
|
|
1893
1912
|
}),
|
|
1894
|
-
|
|
1895
|
-
ok:
|
|
1913
|
+
z19.object({
|
|
1914
|
+
ok: z19.literal(false),
|
|
1896
1915
|
requestId: IdSchema,
|
|
1897
1916
|
machineId: IdSchema,
|
|
1898
1917
|
sessionId: IdSchema,
|
|
@@ -1901,42 +1920,42 @@ var SessionRemoteResultSchema = z18.discriminatedUnion("ok", [
|
|
|
1901
1920
|
]);
|
|
1902
1921
|
|
|
1903
1922
|
// ../../shared/protocol/dist/sessions/group-chat.js
|
|
1904
|
-
import { z as
|
|
1923
|
+
import { z as z20 } from "zod";
|
|
1905
1924
|
var GROUP_CHAT_CREATE_OPERATION = "group-chat.create";
|
|
1906
1925
|
var GROUP_CHAT_CREATE_VERSION = 1;
|
|
1907
1926
|
var GROUP_CHAT_CREATE_CAPABILITY = sessionCommunicationOperationCapability(GROUP_CHAT_CREATE_OPERATION, GROUP_CHAT_CREATE_VERSION);
|
|
1908
|
-
var GroupChatCreateDataSchema =
|
|
1927
|
+
var GroupChatCreateDataSchema = z20.object({
|
|
1909
1928
|
peerSessionId: IdSchema
|
|
1910
1929
|
}).strict();
|
|
1911
|
-
var GroupChatCreateResultDataSchema =
|
|
1930
|
+
var GroupChatCreateResultDataSchema = z20.object({
|
|
1912
1931
|
session: SessionSummarySchema.refine((session) => session.groupChat !== void 0, "Group creation must return a virtual group session")
|
|
1913
1932
|
}).strict();
|
|
1914
1933
|
|
|
1915
1934
|
// ../../shared/protocol/dist/sessions/prompts.js
|
|
1916
|
-
import { z as
|
|
1935
|
+
import { z as z24 } from "zod";
|
|
1917
1936
|
|
|
1918
1937
|
// ../../shared/protocol/dist/conversation/attachments.js
|
|
1919
|
-
import { z as
|
|
1938
|
+
import { z as z21 } from "zod";
|
|
1920
1939
|
var MAX_INLINE_IMAGE_BYTES = 3 * 1024 * 1024;
|
|
1921
1940
|
var MAX_INLINE_HTML_BYTES = 512 * 1024;
|
|
1922
1941
|
var MAX_PROMPT_FILE_BYTES = 1024 * 1024;
|
|
1923
|
-
var InlineImageMimeTypeSchema =
|
|
1942
|
+
var InlineImageMimeTypeSchema = z21.enum([
|
|
1924
1943
|
"image/gif",
|
|
1925
1944
|
"image/jpeg",
|
|
1926
1945
|
"image/png",
|
|
1927
1946
|
"image/webp"
|
|
1928
1947
|
]);
|
|
1929
|
-
var Base64DataSchema =
|
|
1930
|
-
var Sha256Schema =
|
|
1948
|
+
var Base64DataSchema = z21.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");
|
|
1949
|
+
var Sha256Schema = z21.string().regex(/^[a-f0-9]{64}$/);
|
|
1931
1950
|
function decodedBase64ByteLength(value) {
|
|
1932
1951
|
const padding = value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0;
|
|
1933
1952
|
return value.length / 4 * 3 - padding;
|
|
1934
1953
|
}
|
|
1935
|
-
var PromptImageAttachmentSchema =
|
|
1936
|
-
name:
|
|
1937
|
-
mimeType:
|
|
1954
|
+
var PromptImageAttachmentSchema = z21.object({
|
|
1955
|
+
name: z21.string().trim().min(1).max(255),
|
|
1956
|
+
mimeType: z21.enum(["image/jpeg", "image/png", "image/webp"]),
|
|
1938
1957
|
data: Base64DataSchema,
|
|
1939
|
-
byteLength:
|
|
1958
|
+
byteLength: z21.number().int().positive().max(MAX_INLINE_IMAGE_BYTES),
|
|
1940
1959
|
sha256: Sha256Schema
|
|
1941
1960
|
}).strict().superRefine((attachment, context) => {
|
|
1942
1961
|
if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
|
|
@@ -1947,11 +1966,11 @@ var PromptImageAttachmentSchema = z20.object({
|
|
|
1947
1966
|
});
|
|
1948
1967
|
}
|
|
1949
1968
|
});
|
|
1950
|
-
var PromptFileAttachmentSchema =
|
|
1951
|
-
name:
|
|
1952
|
-
mimeType:
|
|
1969
|
+
var PromptFileAttachmentSchema = z21.object({
|
|
1970
|
+
name: z21.string().trim().min(1).max(255).regex(/^[^\\/\x00-\x1f\x7f]+$/).refine((name) => name !== "." && name !== "..", "Expected a filename"),
|
|
1971
|
+
mimeType: z21.string().max(256).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
|
|
1953
1972
|
data: Base64DataSchema.max(Math.ceil(MAX_PROMPT_FILE_BYTES / 3) * 4),
|
|
1954
|
-
byteLength:
|
|
1973
|
+
byteLength: z21.number().int().positive().max(MAX_PROMPT_FILE_BYTES),
|
|
1955
1974
|
sha256: Sha256Schema
|
|
1956
1975
|
}).strict().superRefine((attachment, context) => {
|
|
1957
1976
|
if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
|
|
@@ -1962,8 +1981,8 @@ var PromptFileAttachmentSchema = z20.object({
|
|
|
1962
1981
|
});
|
|
1963
1982
|
}
|
|
1964
1983
|
});
|
|
1965
|
-
var ConversationAttachmentSchema =
|
|
1966
|
-
kind:
|
|
1984
|
+
var ConversationAttachmentSchema = z21.object({
|
|
1985
|
+
kind: z21.enum([
|
|
1967
1986
|
"file",
|
|
1968
1987
|
"image",
|
|
1969
1988
|
"html",
|
|
@@ -1971,13 +1990,13 @@ var ConversationAttachmentSchema = z20.object({
|
|
|
1971
1990
|
"github-reference",
|
|
1972
1991
|
"unknown"
|
|
1973
1992
|
]),
|
|
1974
|
-
name:
|
|
1975
|
-
mimeType:
|
|
1976
|
-
uri:
|
|
1993
|
+
name: z21.string().trim().min(1).max(1024),
|
|
1994
|
+
mimeType: z21.string().trim().min(1).max(256).optional(),
|
|
1995
|
+
uri: z21.string().trim().min(1).max(32768).optional(),
|
|
1977
1996
|
data: Base64DataSchema.optional(),
|
|
1978
|
-
byteLength:
|
|
1997
|
+
byteLength: z21.number().int().positive().max(MAX_INLINE_IMAGE_BYTES).optional(),
|
|
1979
1998
|
sha256: Sha256Schema.optional(),
|
|
1980
|
-
imageRef:
|
|
1999
|
+
imageRef: z21.literal("sha256").optional()
|
|
1981
2000
|
}).strict().superRefine((attachment, context) => {
|
|
1982
2001
|
if (attachment.imageRef !== void 0) {
|
|
1983
2002
|
if (attachment.kind !== "image" || attachment.data !== void 0 || attachment.sha256 === void 0 || attachment.byteLength === void 0 || !InlineImageMimeTypeSchema.safeParse(attachment.mimeType).success) {
|
|
@@ -2035,20 +2054,20 @@ var ConversationAttachmentSchema = z20.object({
|
|
|
2035
2054
|
});
|
|
2036
2055
|
|
|
2037
2056
|
// ../../shared/protocol/dist/conversation/timeline.js
|
|
2038
|
-
import { z as
|
|
2057
|
+
import { z as z23 } from "zod";
|
|
2039
2058
|
|
|
2040
2059
|
// ../../shared/protocol/dist/conversation/conversation.js
|
|
2041
|
-
import { z as
|
|
2060
|
+
import { z as z22 } from "zod";
|
|
2042
2061
|
var CONVERSATION_ACTIVITY_STEP_LIMIT = 1e3;
|
|
2043
2062
|
var CONVERSATION_SOURCE_ID_LIMIT = 1e3;
|
|
2044
2063
|
var ConversationItemBaseShape = {
|
|
2045
2064
|
id: IdSchema,
|
|
2046
|
-
revision:
|
|
2065
|
+
revision: z22.number().int().positive(),
|
|
2047
2066
|
turnId: IdSchema,
|
|
2048
2067
|
timestamp: IsoDateSchema,
|
|
2049
|
-
sourceEventIds:
|
|
2050
|
-
sourceMessageIds:
|
|
2051
|
-
sourceInteractionIds:
|
|
2068
|
+
sourceEventIds: z22.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT),
|
|
2069
|
+
sourceMessageIds: z22.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional(),
|
|
2070
|
+
sourceInteractionIds: z22.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional()
|
|
2052
2071
|
};
|
|
2053
2072
|
var MAX_INLINE_IMAGE_MESSAGE_BYTES = 3 * 1024 * 1024;
|
|
2054
2073
|
var MAX_INLINE_IMAGES_PER_MESSAGE = 4;
|
|
@@ -2056,67 +2075,67 @@ var ActivityStepTimeShape = {
|
|
|
2056
2075
|
// First observed event time; completion updates must not move an existing call.
|
|
2057
2076
|
timestamp: IsoDateSchema.optional()
|
|
2058
2077
|
};
|
|
2059
|
-
var ConversationToolStepSchema =
|
|
2078
|
+
var ConversationToolStepSchema = z22.object({
|
|
2060
2079
|
id: IdSchema,
|
|
2061
|
-
kind:
|
|
2062
|
-
name:
|
|
2063
|
-
status:
|
|
2080
|
+
kind: z22.literal("tool"),
|
|
2081
|
+
name: z22.string().trim().min(1).max(256),
|
|
2082
|
+
status: z22.enum(["running", "completed", "failed"]),
|
|
2064
2083
|
...ActivityStepTimeShape
|
|
2065
2084
|
}).strict();
|
|
2066
|
-
var ConversationSkillStepSchema =
|
|
2085
|
+
var ConversationSkillStepSchema = z22.object({
|
|
2067
2086
|
id: IdSchema,
|
|
2068
|
-
kind:
|
|
2069
|
-
name:
|
|
2070
|
-
status:
|
|
2071
|
-
description:
|
|
2072
|
-
source:
|
|
2087
|
+
kind: z22.literal("skill"),
|
|
2088
|
+
name: z22.string().trim().min(1).max(256),
|
|
2089
|
+
status: z22.literal("completed"),
|
|
2090
|
+
description: z22.string().trim().min(1).max(2048).optional(),
|
|
2091
|
+
source: z22.string().trim().min(1).max(256).optional(),
|
|
2073
2092
|
...ActivityStepTimeShape
|
|
2074
2093
|
}).strict();
|
|
2075
|
-
var ConversationSubagentStepSchema =
|
|
2094
|
+
var ConversationSubagentStepSchema = z22.object({
|
|
2076
2095
|
id: IdSchema,
|
|
2077
|
-
kind:
|
|
2078
|
-
name:
|
|
2079
|
-
status:
|
|
2080
|
-
description:
|
|
2081
|
-
model:
|
|
2082
|
-
durationMs:
|
|
2083
|
-
resultSummary:
|
|
2084
|
-
error:
|
|
2096
|
+
kind: z22.literal("subagent"),
|
|
2097
|
+
name: z22.string().trim().min(1).max(256),
|
|
2098
|
+
status: z22.enum(["running", "completed", "failed"]),
|
|
2099
|
+
description: z22.string().trim().min(1).max(2048).optional(),
|
|
2100
|
+
model: z22.string().trim().min(1).max(256).optional(),
|
|
2101
|
+
durationMs: z22.number().int().nonnegative().optional(),
|
|
2102
|
+
resultSummary: z22.string().max(4096).optional(),
|
|
2103
|
+
error: z22.string().max(4096).optional(),
|
|
2085
2104
|
...ActivityStepTimeShape
|
|
2086
2105
|
}).strict();
|
|
2087
|
-
var ConversationPermissionStepSchema =
|
|
2106
|
+
var ConversationPermissionStepSchema = z22.object({
|
|
2088
2107
|
id: IdSchema,
|
|
2089
|
-
kind:
|
|
2090
|
-
name:
|
|
2091
|
-
status:
|
|
2092
|
-
description:
|
|
2093
|
-
resultSummary:
|
|
2094
|
-
error:
|
|
2108
|
+
kind: z22.literal("permission"),
|
|
2109
|
+
name: z22.string().trim().min(1).max(256),
|
|
2110
|
+
status: z22.enum(["running", "completed", "failed"]),
|
|
2111
|
+
description: z22.string().trim().min(1).max(2048).optional(),
|
|
2112
|
+
resultSummary: z22.string().max(4096).optional(),
|
|
2113
|
+
error: z22.string().max(4096).optional(),
|
|
2095
2114
|
...ActivityStepTimeShape
|
|
2096
2115
|
}).strict();
|
|
2097
|
-
var ConversationActivityStepSchema =
|
|
2116
|
+
var ConversationActivityStepSchema = z22.discriminatedUnion("kind", [
|
|
2098
2117
|
ConversationToolStepSchema,
|
|
2099
2118
|
ConversationSkillStepSchema,
|
|
2100
2119
|
ConversationSubagentStepSchema,
|
|
2101
2120
|
ConversationPermissionStepSchema
|
|
2102
2121
|
]);
|
|
2103
|
-
var ConversationHumanMessageSchema =
|
|
2122
|
+
var ConversationHumanMessageSchema = z22.object({
|
|
2104
2123
|
...ConversationItemBaseShape,
|
|
2105
|
-
kind:
|
|
2106
|
-
actor:
|
|
2107
|
-
content:
|
|
2108
|
-
attachments:
|
|
2124
|
+
kind: z22.literal("human-message"),
|
|
2125
|
+
actor: z22.literal("human"),
|
|
2126
|
+
content: z22.string().max(1e5),
|
|
2127
|
+
attachments: z22.array(ConversationAttachmentSchema).max(100),
|
|
2109
2128
|
operationId: IdSchema.optional()
|
|
2110
2129
|
}).strict();
|
|
2111
|
-
var ConversationAssistantMessageSchema =
|
|
2130
|
+
var ConversationAssistantMessageSchema = z22.object({
|
|
2112
2131
|
...ConversationItemBaseShape,
|
|
2113
|
-
kind:
|
|
2114
|
-
actor:
|
|
2115
|
-
content:
|
|
2116
|
-
attachments:
|
|
2117
|
-
model:
|
|
2132
|
+
kind: z22.literal("assistant-message"),
|
|
2133
|
+
actor: z22.enum(["assistant", "subagent"]),
|
|
2134
|
+
content: z22.string().max(5e5),
|
|
2135
|
+
attachments: z22.array(ConversationAttachmentSchema).max(100).optional(),
|
|
2136
|
+
model: z22.string().trim().min(1).max(256).optional(),
|
|
2118
2137
|
agentId: IdSchema.optional(),
|
|
2119
|
-
final:
|
|
2138
|
+
final: z22.boolean()
|
|
2120
2139
|
}).strict().superRefine((message, context) => {
|
|
2121
2140
|
const inlineImages = message.attachments?.filter((attachment) => attachment.kind === "image" && attachment.data !== void 0) ?? [];
|
|
2122
2141
|
if (inlineImages.length > MAX_INLINE_IMAGES_PER_MESSAGE) {
|
|
@@ -2135,166 +2154,166 @@ var ConversationAssistantMessageSchema = z21.object({
|
|
|
2135
2154
|
});
|
|
2136
2155
|
}
|
|
2137
2156
|
});
|
|
2138
|
-
var ConversationActivityGroupSchema =
|
|
2157
|
+
var ConversationActivityGroupSchema = z22.object({
|
|
2139
2158
|
...ConversationItemBaseShape,
|
|
2140
|
-
kind:
|
|
2141
|
-
actor:
|
|
2142
|
-
status:
|
|
2143
|
-
steps:
|
|
2159
|
+
kind: z22.literal("activity-group"),
|
|
2160
|
+
actor: z22.enum(["assistant", "subagent"]),
|
|
2161
|
+
status: z22.enum(["running", "completed", "failed"]),
|
|
2162
|
+
steps: z22.array(ConversationActivityStepSchema).max(CONVERSATION_ACTIVITY_STEP_LIMIT)
|
|
2144
2163
|
}).strict();
|
|
2145
|
-
var ConversationNoticeSchema =
|
|
2164
|
+
var ConversationNoticeSchema = z22.object({
|
|
2146
2165
|
...ConversationItemBaseShape,
|
|
2147
|
-
kind:
|
|
2148
|
-
actor:
|
|
2149
|
-
severity:
|
|
2150
|
-
title:
|
|
2151
|
-
content:
|
|
2152
|
-
presentation:
|
|
2166
|
+
kind: z22.literal("notice"),
|
|
2167
|
+
actor: z22.enum(["system", "assistant", "subagent"]),
|
|
2168
|
+
severity: z22.enum(["info", "success", "warning", "error"]),
|
|
2169
|
+
title: z22.string().trim().min(1).max(256),
|
|
2170
|
+
content: z22.string().max(4096),
|
|
2171
|
+
presentation: z22.literal("compact").optional()
|
|
2153
2172
|
}).strict();
|
|
2154
|
-
var ConversationPlanTodoSchema =
|
|
2173
|
+
var ConversationPlanTodoSchema = z22.object({
|
|
2155
2174
|
id: IdSchema,
|
|
2156
|
-
title:
|
|
2157
|
-
description:
|
|
2158
|
-
status:
|
|
2159
|
-
dependsOn:
|
|
2175
|
+
title: z22.string().trim().min(1).max(1024),
|
|
2176
|
+
description: z22.string().max(4096).optional(),
|
|
2177
|
+
status: z22.string().trim().min(1).max(64),
|
|
2178
|
+
dependsOn: z22.array(IdSchema).max(100)
|
|
2160
2179
|
}).strict();
|
|
2161
|
-
var ConversationPlanUpdateSchema =
|
|
2180
|
+
var ConversationPlanUpdateSchema = z22.object({
|
|
2162
2181
|
...ConversationItemBaseShape,
|
|
2163
|
-
kind:
|
|
2164
|
-
actor:
|
|
2165
|
-
operation:
|
|
2166
|
-
content:
|
|
2167
|
-
todos:
|
|
2182
|
+
kind: z22.literal("plan-update"),
|
|
2183
|
+
actor: z22.enum(["assistant", "subagent"]),
|
|
2184
|
+
operation: z22.enum(["created", "updated", "deleted"]),
|
|
2185
|
+
content: z22.string().max(1e5),
|
|
2186
|
+
todos: z22.array(ConversationPlanTodoSchema).max(1e3)
|
|
2168
2187
|
}).strict();
|
|
2169
|
-
var ConversationItemSchema =
|
|
2188
|
+
var ConversationItemSchema = z22.discriminatedUnion("kind", [
|
|
2170
2189
|
ConversationHumanMessageSchema,
|
|
2171
2190
|
ConversationAssistantMessageSchema,
|
|
2172
2191
|
ConversationActivityGroupSchema,
|
|
2173
2192
|
ConversationNoticeSchema,
|
|
2174
2193
|
ConversationPlanUpdateSchema
|
|
2175
2194
|
]);
|
|
2176
|
-
var ConversationItemUpsertSchema =
|
|
2195
|
+
var ConversationItemUpsertSchema = z22.object({
|
|
2177
2196
|
userId: IdSchema,
|
|
2178
2197
|
machineId: IdSchema,
|
|
2179
2198
|
sessionId: IdSchema,
|
|
2180
2199
|
item: ConversationItemSchema
|
|
2181
2200
|
});
|
|
2182
|
-
var ConversationActivityStepUpsertSchema =
|
|
2201
|
+
var ConversationActivityStepUpsertSchema = z22.object({
|
|
2183
2202
|
userId: IdSchema,
|
|
2184
2203
|
machineId: IdSchema,
|
|
2185
2204
|
sessionId: IdSchema,
|
|
2186
2205
|
activityId: IdSchema,
|
|
2187
|
-
revision:
|
|
2206
|
+
revision: z22.number().int().positive(),
|
|
2188
2207
|
turnId: IdSchema,
|
|
2189
2208
|
timestamp: IsoDateSchema,
|
|
2190
|
-
actor:
|
|
2191
|
-
status:
|
|
2209
|
+
actor: z22.enum(["assistant", "subagent"]),
|
|
2210
|
+
status: z22.enum(["running", "completed", "failed"]),
|
|
2192
2211
|
sourceEventId: IdSchema,
|
|
2193
2212
|
step: ConversationActivityStepSchema
|
|
2194
2213
|
}).strict();
|
|
2195
2214
|
|
|
2196
2215
|
// ../../shared/protocol/dist/conversation/timeline.js
|
|
2197
|
-
var SessionUserPreviewSchema =
|
|
2216
|
+
var SessionUserPreviewSchema = z23.object({
|
|
2198
2217
|
id: IdSchema,
|
|
2199
|
-
revision:
|
|
2218
|
+
revision: z23.number().int().positive(),
|
|
2200
2219
|
timestamp: IsoDateSchema,
|
|
2201
|
-
text:
|
|
2220
|
+
text: z23.string().max(4096)
|
|
2202
2221
|
});
|
|
2203
|
-
var SessionAssistantPreviewSchema =
|
|
2222
|
+
var SessionAssistantPreviewSchema = z23.object({
|
|
2204
2223
|
id: IdSchema,
|
|
2205
|
-
revision:
|
|
2224
|
+
revision: z23.number().int().positive(),
|
|
2206
2225
|
timestamp: IsoDateSchema,
|
|
2207
|
-
sourceEventIds:
|
|
2208
|
-
text:
|
|
2209
|
-
final:
|
|
2210
|
-
attachments:
|
|
2211
|
-
kind:
|
|
2226
|
+
sourceEventIds: z23.array(IdSchema).min(1).max(1e3),
|
|
2227
|
+
text: z23.string().max(4096),
|
|
2228
|
+
final: z23.boolean(),
|
|
2229
|
+
attachments: z23.array(ConversationAttachmentSchema.refine((attachment) => attachment.kind === "image" && attachment.imageRef === "sha256", "Assistant previews contain image references only")).max(4),
|
|
2230
|
+
kind: z23.enum(["assistant-message", "task-completion"]).optional()
|
|
2212
2231
|
});
|
|
2213
2232
|
var SESSION_TIMELINE_PAGE_SIZE = 100;
|
|
2214
|
-
var SessionTimelinePageRequestSchema =
|
|
2233
|
+
var SessionTimelinePageRequestSchema = z23.object({
|
|
2215
2234
|
requestId: IdSchema,
|
|
2216
2235
|
machineId: IdSchema,
|
|
2217
2236
|
sessionId: IdSchema,
|
|
2218
|
-
cursor:
|
|
2219
|
-
metadataOnly:
|
|
2220
|
-
acceptContentEncodings:
|
|
2221
|
-
imageReferences:
|
|
2222
|
-
pageSize:
|
|
2223
|
-
assistantPreview:
|
|
2237
|
+
cursor: z23.string().max(32768).optional(),
|
|
2238
|
+
metadataOnly: z23.boolean().optional(),
|
|
2239
|
+
acceptContentEncodings: z23.array(z23.string().min(1).max(32)).max(8).optional(),
|
|
2240
|
+
imageReferences: z23.boolean().optional(),
|
|
2241
|
+
pageSize: z23.number().int().min(1).max(SESSION_TIMELINE_PAGE_SIZE).default(SESSION_TIMELINE_PAGE_SIZE),
|
|
2242
|
+
assistantPreview: z23.boolean().optional()
|
|
2224
2243
|
});
|
|
2225
|
-
var SessionWatchRequestSchema =
|
|
2244
|
+
var SessionWatchRequestSchema = z23.object({
|
|
2226
2245
|
requestId: IdSchema,
|
|
2227
2246
|
machineId: IdSchema,
|
|
2228
2247
|
sessionId: IdSchema,
|
|
2229
|
-
watching:
|
|
2248
|
+
watching: z23.boolean()
|
|
2230
2249
|
}).strict();
|
|
2231
|
-
var SessionWatchResultSchema =
|
|
2232
|
-
|
|
2233
|
-
ok:
|
|
2250
|
+
var SessionWatchResultSchema = z23.discriminatedUnion("ok", [
|
|
2251
|
+
z23.object({
|
|
2252
|
+
ok: z23.literal(true),
|
|
2234
2253
|
requestId: IdSchema,
|
|
2235
2254
|
machineId: IdSchema,
|
|
2236
2255
|
sessionId: IdSchema,
|
|
2237
|
-
watching:
|
|
2256
|
+
watching: z23.boolean()
|
|
2238
2257
|
}).strict(),
|
|
2239
|
-
|
|
2240
|
-
ok:
|
|
2258
|
+
z23.object({
|
|
2259
|
+
ok: z23.literal(false),
|
|
2241
2260
|
requestId: IdSchema,
|
|
2242
2261
|
machineId: IdSchema,
|
|
2243
2262
|
sessionId: IdSchema,
|
|
2244
|
-
watching:
|
|
2263
|
+
watching: z23.boolean(),
|
|
2245
2264
|
error: ProtocolFailureSchema
|
|
2246
2265
|
}).strict()
|
|
2247
2266
|
]);
|
|
2248
|
-
var SessionTimelinePageSchema =
|
|
2249
|
-
items:
|
|
2250
|
-
cursor:
|
|
2251
|
-
hasMore:
|
|
2252
|
-
cursorStatus:
|
|
2267
|
+
var SessionTimelinePageSchema = z23.object({
|
|
2268
|
+
items: z23.array(ConversationItemSchema).max(SESSION_TIMELINE_PAGE_SIZE),
|
|
2269
|
+
cursor: z23.string().max(32768),
|
|
2270
|
+
hasMore: z23.boolean(),
|
|
2271
|
+
cursorStatus: z23.enum(["ok", "expired"]),
|
|
2253
2272
|
assistantPreview: SessionAssistantPreviewSchema.optional(),
|
|
2254
2273
|
userPreview: SessionUserPreviewSchema.optional(),
|
|
2255
|
-
previewsComplete:
|
|
2274
|
+
previewsComplete: z23.boolean().optional()
|
|
2256
2275
|
});
|
|
2257
|
-
var SessionTimelinePageResultSchema =
|
|
2258
|
-
|
|
2259
|
-
ok:
|
|
2276
|
+
var SessionTimelinePageResultSchema = z23.discriminatedUnion("ok", [
|
|
2277
|
+
z23.object({
|
|
2278
|
+
ok: z23.literal(true),
|
|
2260
2279
|
requestId: IdSchema,
|
|
2261
2280
|
machineId: IdSchema,
|
|
2262
2281
|
sessionId: IdSchema,
|
|
2263
2282
|
page: SessionTimelinePageSchema
|
|
2264
2283
|
}),
|
|
2265
|
-
|
|
2266
|
-
ok:
|
|
2284
|
+
z23.object({
|
|
2285
|
+
ok: z23.literal(false),
|
|
2267
2286
|
requestId: IdSchema,
|
|
2268
2287
|
machineId: IdSchema,
|
|
2269
2288
|
sessionId: IdSchema,
|
|
2270
2289
|
error: ProtocolFailureSchema
|
|
2271
2290
|
})
|
|
2272
2291
|
]);
|
|
2273
|
-
var SessionTimelineInvalidatedSchema =
|
|
2292
|
+
var SessionTimelineInvalidatedSchema = z23.object({
|
|
2274
2293
|
userId: IdSchema,
|
|
2275
2294
|
machineId: IdSchema,
|
|
2276
2295
|
sessionId: IdSchema,
|
|
2277
|
-
reason:
|
|
2296
|
+
reason: z23.enum(["clear", "rewind"]),
|
|
2278
2297
|
sourceEventId: IdSchema,
|
|
2279
2298
|
timestamp: IsoDateSchema
|
|
2280
2299
|
}).strict();
|
|
2281
2300
|
|
|
2282
2301
|
// ../../shared/protocol/dist/sessions/prompts.js
|
|
2283
|
-
var SessionAvatarPersonaSchema =
|
|
2284
|
-
role:
|
|
2285
|
-
displayName:
|
|
2302
|
+
var SessionAvatarPersonaSchema = z24.object({
|
|
2303
|
+
role: z24.enum(["designer", "filmmaker", "developer", "secretary", "default"]),
|
|
2304
|
+
displayName: z24.string().trim().min(1).max(40).regex(/^[^\u0000-\u001f\u007f-\u009f]*$/).optional()
|
|
2286
2305
|
}).strict().refine((value) => value.role === "default" ? value.displayName === void 0 : value.displayName !== void 0, { message: "A role requires a display name; default must not include one" });
|
|
2287
2306
|
var MAX_PROMPT_IMAGE_BYTES = 3 * 1024 * 1024;
|
|
2288
|
-
var SessionPromptRequestSchema =
|
|
2307
|
+
var SessionPromptRequestSchema = z24.object({
|
|
2289
2308
|
requestId: IdSchema,
|
|
2290
2309
|
operationId: IdSchema,
|
|
2291
2310
|
machineId: IdSchema,
|
|
2292
2311
|
sessionId: IdSchema,
|
|
2293
|
-
prompt:
|
|
2294
|
-
attachments:
|
|
2295
|
-
fileAttachments:
|
|
2312
|
+
prompt: z24.string().trim().max(1e5),
|
|
2313
|
+
attachments: z24.array(PromptImageAttachmentSchema).max(4).optional(),
|
|
2314
|
+
fileAttachments: z24.array(PromptFileAttachmentSchema).max(4).optional(),
|
|
2296
2315
|
avatarPersona: SessionAvatarPersonaSchema.optional(),
|
|
2297
|
-
mode:
|
|
2316
|
+
mode: z24.enum(["enqueue", "immediate"]).default("enqueue")
|
|
2298
2317
|
}).strict().superRefine((request, context) => {
|
|
2299
2318
|
if (request.prompt.length === 0 && (request.attachments?.length ?? 0) === 0 && (request.fileAttachments?.length ?? 0) === 0) {
|
|
2300
2319
|
context.addIssue({
|
|
@@ -2320,22 +2339,22 @@ var SessionPromptRequestSchema = z23.object({
|
|
|
2320
2339
|
});
|
|
2321
2340
|
}
|
|
2322
2341
|
});
|
|
2323
|
-
var SessionPromptResultSchema =
|
|
2324
|
-
|
|
2325
|
-
ok:
|
|
2342
|
+
var SessionPromptResultSchema = z24.discriminatedUnion("ok", [
|
|
2343
|
+
z24.object({
|
|
2344
|
+
ok: z24.literal(true),
|
|
2326
2345
|
requestId: IdSchema,
|
|
2327
2346
|
operationId: IdSchema,
|
|
2328
2347
|
machineId: IdSchema,
|
|
2329
2348
|
sessionId: IdSchema,
|
|
2330
2349
|
messageId: IdSchema,
|
|
2331
|
-
mode:
|
|
2332
|
-
deliveryState:
|
|
2350
|
+
mode: z24.enum(["enqueue", "immediate"]),
|
|
2351
|
+
deliveryState: z24.enum(["queued", "processing"]),
|
|
2333
2352
|
// Negotiated lower bound from the native event clock. Exact text and history
|
|
2334
2353
|
// ownership checks still apply; this is not an identity or proof of persistence.
|
|
2335
2354
|
submittedAt: IsoDateSchema.optional()
|
|
2336
2355
|
}),
|
|
2337
|
-
|
|
2338
|
-
ok:
|
|
2356
|
+
z24.object({
|
|
2357
|
+
ok: z24.literal(false),
|
|
2339
2358
|
requestId: IdSchema,
|
|
2340
2359
|
operationId: IdSchema,
|
|
2341
2360
|
machineId: IdSchema,
|
|
@@ -2343,29 +2362,29 @@ var SessionPromptResultSchema = z23.discriminatedUnion("ok", [
|
|
|
2343
2362
|
error: ProtocolFailureSchema
|
|
2344
2363
|
})
|
|
2345
2364
|
]);
|
|
2346
|
-
var SessionActivityUpdateSchema =
|
|
2365
|
+
var SessionActivityUpdateSchema = z24.object({
|
|
2347
2366
|
userId: IdSchema,
|
|
2348
2367
|
machineId: IdSchema,
|
|
2349
2368
|
sessionId: IdSchema,
|
|
2350
|
-
state:
|
|
2369
|
+
state: z24.enum(["working", "idle"]),
|
|
2351
2370
|
occurredAt: IsoDateSchema,
|
|
2352
2371
|
assistantPreview: SessionAssistantPreviewSchema.optional(),
|
|
2353
2372
|
userPreview: SessionUserPreviewSchema.optional()
|
|
2354
2373
|
});
|
|
2355
|
-
var SessionAbortRequestSchema =
|
|
2374
|
+
var SessionAbortRequestSchema = z24.object({
|
|
2356
2375
|
requestId: IdSchema,
|
|
2357
2376
|
machineId: IdSchema,
|
|
2358
2377
|
sessionId: IdSchema
|
|
2359
2378
|
});
|
|
2360
|
-
var SessionAbortResultSchema =
|
|
2361
|
-
|
|
2362
|
-
ok:
|
|
2379
|
+
var SessionAbortResultSchema = z24.discriminatedUnion("ok", [
|
|
2380
|
+
z24.object({
|
|
2381
|
+
ok: z24.literal(true),
|
|
2363
2382
|
requestId: IdSchema,
|
|
2364
2383
|
machineId: IdSchema,
|
|
2365
2384
|
sessionId: IdSchema
|
|
2366
2385
|
}),
|
|
2367
|
-
|
|
2368
|
-
ok:
|
|
2386
|
+
z24.object({
|
|
2387
|
+
ok: z24.literal(false),
|
|
2369
2388
|
requestId: IdSchema,
|
|
2370
2389
|
machineId: IdSchema,
|
|
2371
2390
|
sessionId: IdSchema,
|
|
@@ -2374,12 +2393,12 @@ var SessionAbortResultSchema = z23.discriminatedUnion("ok", [
|
|
|
2374
2393
|
]);
|
|
2375
2394
|
|
|
2376
2395
|
// ../../shared/protocol/dist/sessions/interactions.js
|
|
2377
|
-
import { z as
|
|
2378
|
-
var InteractionFormFieldSchema =
|
|
2396
|
+
import { z as z25 } from "zod";
|
|
2397
|
+
var InteractionFormFieldSchema = z25.object({
|
|
2379
2398
|
id: IdSchema,
|
|
2380
|
-
label:
|
|
2381
|
-
description:
|
|
2382
|
-
inputType:
|
|
2399
|
+
label: z25.string().trim().min(1).max(1024),
|
|
2400
|
+
description: z25.string().max(2048).optional(),
|
|
2401
|
+
inputType: z25.enum([
|
|
2383
2402
|
"text",
|
|
2384
2403
|
"number",
|
|
2385
2404
|
"integer",
|
|
@@ -2387,77 +2406,77 @@ var InteractionFormFieldSchema = z24.object({
|
|
|
2387
2406
|
"select",
|
|
2388
2407
|
"multi-select"
|
|
2389
2408
|
]),
|
|
2390
|
-
required:
|
|
2391
|
-
options:
|
|
2392
|
-
defaultValue:
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2409
|
+
required: z25.boolean(),
|
|
2410
|
+
options: z25.array(z25.string().max(1024)).max(100),
|
|
2411
|
+
defaultValue: z25.union([
|
|
2412
|
+
z25.string().max(4096),
|
|
2413
|
+
z25.number().finite(),
|
|
2414
|
+
z25.boolean(),
|
|
2415
|
+
z25.array(z25.string().max(1024)).max(100)
|
|
2397
2416
|
]).optional(),
|
|
2398
|
-
minimum:
|
|
2399
|
-
maximum:
|
|
2400
|
-
minLength:
|
|
2401
|
-
maxLength:
|
|
2402
|
-
minItems:
|
|
2403
|
-
maxItems:
|
|
2404
|
-
format:
|
|
2417
|
+
minimum: z25.number().finite().optional(),
|
|
2418
|
+
maximum: z25.number().finite().optional(),
|
|
2419
|
+
minLength: z25.number().int().nonnegative().max(1e6).optional(),
|
|
2420
|
+
maxLength: z25.number().int().nonnegative().max(1e6).optional(),
|
|
2421
|
+
minItems: z25.number().int().nonnegative().max(100).optional(),
|
|
2422
|
+
maxItems: z25.number().int().nonnegative().max(100).optional(),
|
|
2423
|
+
format: z25.enum(["email", "uri", "date", "date-time"]).optional()
|
|
2405
2424
|
}).strict();
|
|
2406
|
-
var InteractionPermissionRequestSchema =
|
|
2407
|
-
kind:
|
|
2425
|
+
var InteractionPermissionRequestSchema = z25.object({
|
|
2426
|
+
kind: z25.literal("permission"),
|
|
2408
2427
|
permissionKind: IdSchema,
|
|
2409
|
-
title:
|
|
2410
|
-
description:
|
|
2411
|
-
canApproveSession:
|
|
2412
|
-
canApproveAlways:
|
|
2413
|
-
approvalScope:
|
|
2428
|
+
title: z25.string().trim().min(1).max(256),
|
|
2429
|
+
description: z25.string().max(4096),
|
|
2430
|
+
canApproveSession: z25.boolean(),
|
|
2431
|
+
canApproveAlways: z25.boolean().optional(),
|
|
2432
|
+
approvalScope: z25.string().trim().min(1).max(4096).optional()
|
|
2414
2433
|
}).strict();
|
|
2415
|
-
var InteractionUserInputRequestSchema =
|
|
2416
|
-
kind:
|
|
2417
|
-
question:
|
|
2418
|
-
choices:
|
|
2419
|
-
allowFreeform:
|
|
2434
|
+
var InteractionUserInputRequestSchema = z25.object({
|
|
2435
|
+
kind: z25.literal("user_input"),
|
|
2436
|
+
question: z25.string().trim().min(1).max(4096),
|
|
2437
|
+
choices: z25.array(z25.string().max(1024)).max(100),
|
|
2438
|
+
allowFreeform: z25.boolean()
|
|
2420
2439
|
}).strict();
|
|
2421
|
-
var InteractionElicitationRequestSchema =
|
|
2422
|
-
kind:
|
|
2423
|
-
message:
|
|
2424
|
-
mode:
|
|
2425
|
-
source:
|
|
2426
|
-
url:
|
|
2427
|
-
fields:
|
|
2440
|
+
var InteractionElicitationRequestSchema = z25.object({
|
|
2441
|
+
kind: z25.literal("elicitation"),
|
|
2442
|
+
message: z25.string().trim().min(1).max(4096),
|
|
2443
|
+
mode: z25.enum(["form", "url"]),
|
|
2444
|
+
source: z25.string().trim().min(1).max(256).optional(),
|
|
2445
|
+
url: z25.url().max(32768).optional(),
|
|
2446
|
+
fields: z25.array(InteractionFormFieldSchema).max(100)
|
|
2428
2447
|
}).strict();
|
|
2429
|
-
var InteractionMcpOauthRequestSchema =
|
|
2430
|
-
kind:
|
|
2431
|
-
serverName:
|
|
2432
|
-
serverUrl:
|
|
2433
|
-
reason:
|
|
2434
|
-
responseMode:
|
|
2448
|
+
var InteractionMcpOauthRequestSchema = z25.object({
|
|
2449
|
+
kind: z25.literal("mcp_oauth"),
|
|
2450
|
+
serverName: z25.string().trim().min(1).max(256),
|
|
2451
|
+
serverUrl: z25.url().max(32768),
|
|
2452
|
+
reason: z25.enum(["initial", "refresh", "reauth", "upscope"]),
|
|
2453
|
+
responseMode: z25.literal("cancel-only")
|
|
2435
2454
|
}).strict();
|
|
2436
|
-
var InteractionMcpHeadersRequestSchema =
|
|
2437
|
-
kind:
|
|
2438
|
-
serverName:
|
|
2439
|
-
serverUrl:
|
|
2440
|
-
reason:
|
|
2441
|
-
responseMode:
|
|
2455
|
+
var InteractionMcpHeadersRequestSchema = z25.object({
|
|
2456
|
+
kind: z25.literal("mcp_headers"),
|
|
2457
|
+
serverName: z25.string().trim().min(1).max(256),
|
|
2458
|
+
serverUrl: z25.url().max(32768),
|
|
2459
|
+
reason: z25.string().trim().min(1).max(256),
|
|
2460
|
+
responseMode: z25.literal("none-only")
|
|
2442
2461
|
}).strict();
|
|
2443
|
-
var InteractionAutoModeSwitchRequestSchema =
|
|
2444
|
-
kind:
|
|
2462
|
+
var InteractionAutoModeSwitchRequestSchema = z25.object({
|
|
2463
|
+
kind: z25.literal("auto_mode_switch"),
|
|
2445
2464
|
errorCode: IdSchema.optional(),
|
|
2446
|
-
retryAfterSeconds:
|
|
2465
|
+
retryAfterSeconds: z25.number().int().nonnegative().optional()
|
|
2447
2466
|
}).strict();
|
|
2448
|
-
var InteractionSessionLimitsRequestSchema =
|
|
2449
|
-
kind:
|
|
2450
|
-
maxAiCredits:
|
|
2451
|
-
usedAiCredits:
|
|
2467
|
+
var InteractionSessionLimitsRequestSchema = z25.object({
|
|
2468
|
+
kind: z25.literal("session_limits"),
|
|
2469
|
+
maxAiCredits: z25.number().finite().nonnegative(),
|
|
2470
|
+
usedAiCredits: z25.number().finite().nonnegative()
|
|
2452
2471
|
}).strict();
|
|
2453
|
-
var InteractionExitPlanRequestSchema =
|
|
2454
|
-
kind:
|
|
2455
|
-
summary:
|
|
2456
|
-
planContent:
|
|
2457
|
-
actions:
|
|
2472
|
+
var InteractionExitPlanRequestSchema = z25.object({
|
|
2473
|
+
kind: z25.literal("exit_plan"),
|
|
2474
|
+
summary: z25.string().max(4096),
|
|
2475
|
+
planContent: z25.string().max(1e5).optional(),
|
|
2476
|
+
actions: z25.array(IdSchema).min(1).max(20),
|
|
2458
2477
|
recommendedAction: IdSchema
|
|
2459
2478
|
}).strict();
|
|
2460
|
-
var InteractionRequestSchema =
|
|
2479
|
+
var InteractionRequestSchema = z25.discriminatedUnion("kind", [
|
|
2461
2480
|
InteractionPermissionRequestSchema,
|
|
2462
2481
|
InteractionUserInputRequestSchema,
|
|
2463
2482
|
InteractionElicitationRequestSchema,
|
|
@@ -2467,81 +2486,81 @@ var InteractionRequestSchema = z24.discriminatedUnion("kind", [
|
|
|
2467
2486
|
InteractionSessionLimitsRequestSchema,
|
|
2468
2487
|
InteractionExitPlanRequestSchema
|
|
2469
2488
|
]);
|
|
2470
|
-
var InteractionPermissionResponseSchema =
|
|
2471
|
-
kind:
|
|
2472
|
-
decision:
|
|
2473
|
-
feedback:
|
|
2489
|
+
var InteractionPermissionResponseSchema = z25.object({
|
|
2490
|
+
kind: z25.literal("permission"),
|
|
2491
|
+
decision: z25.enum(["approve-once", "approve-for-session", "approve-always", "reject"]),
|
|
2492
|
+
feedback: z25.string().trim().min(1).max(2048).optional()
|
|
2474
2493
|
}).strict();
|
|
2475
|
-
var InteractionUserInputResponseSchema =
|
|
2476
|
-
kind:
|
|
2477
|
-
answer:
|
|
2478
|
-
wasFreeform:
|
|
2494
|
+
var InteractionUserInputResponseSchema = z25.object({
|
|
2495
|
+
kind: z25.literal("user_input"),
|
|
2496
|
+
answer: z25.string().max(1e5),
|
|
2497
|
+
wasFreeform: z25.boolean()
|
|
2479
2498
|
}).strict();
|
|
2480
|
-
var InteractionFieldValueSchema =
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2499
|
+
var InteractionFieldValueSchema = z25.union([
|
|
2500
|
+
z25.string().max(4096),
|
|
2501
|
+
z25.number(),
|
|
2502
|
+
z25.boolean(),
|
|
2503
|
+
z25.array(z25.string().max(1024)).max(100)
|
|
2485
2504
|
]);
|
|
2486
|
-
var InteractionElicitationResponseSchema =
|
|
2487
|
-
kind:
|
|
2488
|
-
action:
|
|
2489
|
-
values:
|
|
2505
|
+
var InteractionElicitationResponseSchema = z25.object({
|
|
2506
|
+
kind: z25.literal("elicitation"),
|
|
2507
|
+
action: z25.enum(["accept", "decline", "cancel"]),
|
|
2508
|
+
values: z25.record(z25.string().max(256), InteractionFieldValueSchema)
|
|
2490
2509
|
}).strict();
|
|
2491
|
-
var InteractionMcpOauthResponseSchema =
|
|
2492
|
-
kind:
|
|
2493
|
-
action:
|
|
2510
|
+
var InteractionMcpOauthResponseSchema = z25.object({
|
|
2511
|
+
kind: z25.literal("mcp_oauth"),
|
|
2512
|
+
action: z25.literal("cancel")
|
|
2494
2513
|
}).strict();
|
|
2495
|
-
var InteractionMcpHeadersResponseSchema =
|
|
2496
|
-
kind:
|
|
2497
|
-
action:
|
|
2514
|
+
var InteractionMcpHeadersResponseSchema = z25.object({
|
|
2515
|
+
kind: z25.literal("mcp_headers"),
|
|
2516
|
+
action: z25.literal("none")
|
|
2498
2517
|
}).strict();
|
|
2499
|
-
var InteractionAutoModeSwitchResponseSchema =
|
|
2500
|
-
kind:
|
|
2501
|
-
action:
|
|
2518
|
+
var InteractionAutoModeSwitchResponseSchema = z25.object({
|
|
2519
|
+
kind: z25.literal("auto_mode_switch"),
|
|
2520
|
+
action: z25.enum(["yes", "yes_always", "no"])
|
|
2502
2521
|
}).strict();
|
|
2503
|
-
var InteractionSessionLimitsResponseSchema =
|
|
2504
|
-
kind:
|
|
2505
|
-
action:
|
|
2506
|
-
additionalAiCredits:
|
|
2507
|
-
maxAiCredits:
|
|
2522
|
+
var InteractionSessionLimitsResponseSchema = z25.object({
|
|
2523
|
+
kind: z25.literal("session_limits"),
|
|
2524
|
+
action: z25.enum(["add", "set", "unset", "cancel"]),
|
|
2525
|
+
additionalAiCredits: z25.number().positive().optional(),
|
|
2526
|
+
maxAiCredits: z25.number().positive().optional()
|
|
2508
2527
|
}).strict().superRefine((response, context) => {
|
|
2509
2528
|
if (response.action === "add" && response.additionalAiCredits === void 0) {
|
|
2510
2529
|
context.addIssue({
|
|
2511
|
-
code:
|
|
2530
|
+
code: z25.ZodIssueCode.custom,
|
|
2512
2531
|
path: ["additionalAiCredits"],
|
|
2513
2532
|
message: "additionalAiCredits is required for add"
|
|
2514
2533
|
});
|
|
2515
2534
|
}
|
|
2516
2535
|
if (response.action === "set" && response.maxAiCredits === void 0) {
|
|
2517
2536
|
context.addIssue({
|
|
2518
|
-
code:
|
|
2537
|
+
code: z25.ZodIssueCode.custom,
|
|
2519
2538
|
path: ["maxAiCredits"],
|
|
2520
2539
|
message: "maxAiCredits is required for set"
|
|
2521
2540
|
});
|
|
2522
2541
|
}
|
|
2523
2542
|
if (response.action !== "add" && response.additionalAiCredits !== void 0) {
|
|
2524
2543
|
context.addIssue({
|
|
2525
|
-
code:
|
|
2544
|
+
code: z25.ZodIssueCode.custom,
|
|
2526
2545
|
path: ["additionalAiCredits"],
|
|
2527
2546
|
message: "additionalAiCredits is only valid for add"
|
|
2528
2547
|
});
|
|
2529
2548
|
}
|
|
2530
2549
|
if (response.action !== "set" && response.maxAiCredits !== void 0) {
|
|
2531
2550
|
context.addIssue({
|
|
2532
|
-
code:
|
|
2551
|
+
code: z25.ZodIssueCode.custom,
|
|
2533
2552
|
path: ["maxAiCredits"],
|
|
2534
2553
|
message: "maxAiCredits is only valid for set"
|
|
2535
2554
|
});
|
|
2536
2555
|
}
|
|
2537
2556
|
});
|
|
2538
|
-
var InteractionExitPlanResponseSchema =
|
|
2539
|
-
kind:
|
|
2540
|
-
approved:
|
|
2557
|
+
var InteractionExitPlanResponseSchema = z25.object({
|
|
2558
|
+
kind: z25.literal("exit_plan"),
|
|
2559
|
+
approved: z25.boolean(),
|
|
2541
2560
|
selectedAction: IdSchema.optional(),
|
|
2542
|
-
feedback:
|
|
2561
|
+
feedback: z25.string().trim().min(1).max(4096).optional()
|
|
2543
2562
|
}).strict();
|
|
2544
|
-
var InteractionResponseSchema =
|
|
2563
|
+
var InteractionResponseSchema = z25.discriminatedUnion("kind", [
|
|
2545
2564
|
InteractionPermissionResponseSchema,
|
|
2546
2565
|
InteractionUserInputResponseSchema,
|
|
2547
2566
|
InteractionElicitationResponseSchema,
|
|
@@ -2551,30 +2570,30 @@ var InteractionResponseSchema = z24.discriminatedUnion("kind", [
|
|
|
2551
2570
|
InteractionSessionLimitsResponseSchema,
|
|
2552
2571
|
InteractionExitPlanResponseSchema
|
|
2553
2572
|
]);
|
|
2554
|
-
var InteractionRequestPayloadSchema =
|
|
2573
|
+
var InteractionRequestPayloadSchema = z25.object({
|
|
2555
2574
|
interactionRequestId: IdSchema,
|
|
2556
2575
|
userId: IdSchema,
|
|
2557
2576
|
machineId: IdSchema,
|
|
2558
2577
|
sessionId: IdSchema,
|
|
2559
2578
|
request: InteractionRequestSchema
|
|
2560
2579
|
}).strict();
|
|
2561
|
-
var InteractionRespondRequestSchema =
|
|
2580
|
+
var InteractionRespondRequestSchema = z25.object({
|
|
2562
2581
|
requestId: IdSchema,
|
|
2563
2582
|
interactionRequestId: IdSchema,
|
|
2564
2583
|
machineId: IdSchema,
|
|
2565
2584
|
sessionId: IdSchema,
|
|
2566
2585
|
response: InteractionResponseSchema
|
|
2567
2586
|
}).strict();
|
|
2568
|
-
var InteractionRespondResultSchema =
|
|
2569
|
-
|
|
2570
|
-
ok:
|
|
2587
|
+
var InteractionRespondResultSchema = z25.discriminatedUnion("ok", [
|
|
2588
|
+
z25.object({
|
|
2589
|
+
ok: z25.literal(true),
|
|
2571
2590
|
requestId: IdSchema,
|
|
2572
2591
|
interactionRequestId: IdSchema,
|
|
2573
2592
|
machineId: IdSchema,
|
|
2574
2593
|
sessionId: IdSchema
|
|
2575
2594
|
}).strict(),
|
|
2576
|
-
|
|
2577
|
-
ok:
|
|
2595
|
+
z25.object({
|
|
2596
|
+
ok: z25.literal(false),
|
|
2578
2597
|
requestId: IdSchema,
|
|
2579
2598
|
interactionRequestId: IdSchema,
|
|
2580
2599
|
machineId: IdSchema,
|
|
@@ -2582,31 +2601,31 @@ var InteractionRespondResultSchema = z24.discriminatedUnion("ok", [
|
|
|
2582
2601
|
error: ProtocolFailureSchema
|
|
2583
2602
|
}).strict()
|
|
2584
2603
|
]);
|
|
2585
|
-
var PermissionRequestPayloadSchema =
|
|
2604
|
+
var PermissionRequestPayloadSchema = z25.object({
|
|
2586
2605
|
permissionRequestId: IdSchema,
|
|
2587
2606
|
userId: IdSchema,
|
|
2588
2607
|
machineId: IdSchema,
|
|
2589
2608
|
sessionId: IdSchema,
|
|
2590
|
-
request:
|
|
2609
|
+
request: z25.record(z25.string(), z25.unknown())
|
|
2591
2610
|
});
|
|
2592
|
-
var PermissionRespondRequestSchema =
|
|
2611
|
+
var PermissionRespondRequestSchema = z25.object({
|
|
2593
2612
|
requestId: IdSchema,
|
|
2594
2613
|
permissionRequestId: IdSchema,
|
|
2595
2614
|
machineId: IdSchema,
|
|
2596
2615
|
sessionId: IdSchema,
|
|
2597
|
-
decision:
|
|
2598
|
-
feedback:
|
|
2616
|
+
decision: z25.enum(["approve-once", "reject"]),
|
|
2617
|
+
feedback: z25.string().trim().min(1).max(2048).optional()
|
|
2599
2618
|
});
|
|
2600
|
-
var PermissionRespondResultSchema =
|
|
2601
|
-
|
|
2602
|
-
ok:
|
|
2619
|
+
var PermissionRespondResultSchema = z25.discriminatedUnion("ok", [
|
|
2620
|
+
z25.object({
|
|
2621
|
+
ok: z25.literal(true),
|
|
2603
2622
|
requestId: IdSchema,
|
|
2604
2623
|
permissionRequestId: IdSchema,
|
|
2605
2624
|
machineId: IdSchema,
|
|
2606
2625
|
sessionId: IdSchema
|
|
2607
2626
|
}),
|
|
2608
|
-
|
|
2609
|
-
ok:
|
|
2627
|
+
z25.object({
|
|
2628
|
+
ok: z25.literal(false),
|
|
2610
2629
|
requestId: IdSchema,
|
|
2611
2630
|
permissionRequestId: IdSchema,
|
|
2612
2631
|
machineId: IdSchema,
|
|
@@ -2616,42 +2635,42 @@ var PermissionRespondResultSchema = z24.discriminatedUnion("ok", [
|
|
|
2616
2635
|
]);
|
|
2617
2636
|
|
|
2618
2637
|
// ../../shared/protocol/dist/conversation/timeline-sync.js
|
|
2619
|
-
import { z as
|
|
2638
|
+
import { z as z26 } from "zod";
|
|
2620
2639
|
var TIMELINE_SYNC_MAX_EVENTS = 128;
|
|
2621
2640
|
var TIMELINE_SYNC_MAX_BYTES = 6 * 1024 * 1024;
|
|
2622
2641
|
var TIMELINE_IMAGE_CHUNK_BYTES = 48 * 1024;
|
|
2623
2642
|
var TIMELINE_IMAGE_MAX_BYTES = 3 * 1024 * 1024;
|
|
2624
|
-
var identity =
|
|
2625
|
-
var sequence =
|
|
2626
|
-
var hash =
|
|
2627
|
-
var TimelineWatermarkSchema =
|
|
2643
|
+
var identity = z26.string().min(1).max(256);
|
|
2644
|
+
var sequence = z26.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
|
|
2645
|
+
var hash = z26.string().regex(/^[a-f0-9]{64}$/u);
|
|
2646
|
+
var TimelineWatermarkSchema = z26.object({
|
|
2628
2647
|
epoch: identity,
|
|
2629
2648
|
sequence
|
|
2630
2649
|
}).strict();
|
|
2631
|
-
var TimelineSyncRequestSchema =
|
|
2650
|
+
var TimelineSyncRequestSchema = z26.object({
|
|
2632
2651
|
watermark: TimelineWatermarkSchema.optional(),
|
|
2633
|
-
waitMs:
|
|
2634
|
-
resume:
|
|
2652
|
+
waitMs: z26.number().int().min(0).max(2e4).optional(),
|
|
2653
|
+
resume: z26.boolean().optional()
|
|
2635
2654
|
}).strict();
|
|
2636
|
-
var TimelineTextAppendSchema =
|
|
2655
|
+
var TimelineTextAppendSchema = z26.object({
|
|
2637
2656
|
itemId: identity,
|
|
2638
|
-
baseRevision:
|
|
2639
|
-
revision:
|
|
2640
|
-
appendText:
|
|
2641
|
-
sourceEventIds:
|
|
2642
|
-
sourceMessageIds:
|
|
2643
|
-
sourceInteractionIds:
|
|
2657
|
+
baseRevision: z26.number().int().positive(),
|
|
2658
|
+
revision: z26.number().int().positive(),
|
|
2659
|
+
appendText: z26.string().min(1).max(5e5),
|
|
2660
|
+
sourceEventIds: z26.array(identity).min(1).max(1e3).optional(),
|
|
2661
|
+
sourceMessageIds: z26.array(identity).min(1).max(1e3).optional(),
|
|
2662
|
+
sourceInteractionIds: z26.array(identity).min(1).max(1e3).optional()
|
|
2644
2663
|
}).strict();
|
|
2645
|
-
var TimelineSyncEventSchema =
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
kind:
|
|
2664
|
+
var TimelineSyncEventSchema = z26.discriminatedUnion("kind", [
|
|
2665
|
+
z26.object({ kind: z26.literal("upsert"), sequence, item: ConversationItemSchema }).strict(),
|
|
2666
|
+
z26.object({ kind: z26.literal("append"), sequence, append: TimelineTextAppendSchema }).strict(),
|
|
2667
|
+
z26.object({
|
|
2668
|
+
kind: z26.literal("step"),
|
|
2650
2669
|
sequence,
|
|
2651
2670
|
upsert: ConversationActivityStepUpsertSchema
|
|
2652
2671
|
}).strict()
|
|
2653
2672
|
]);
|
|
2654
|
-
var TimelineResyncReasonSchema =
|
|
2673
|
+
var TimelineResyncReasonSchema = z26.enum([
|
|
2655
2674
|
"initial",
|
|
2656
2675
|
"epoch-changed",
|
|
2657
2676
|
"evicted",
|
|
@@ -2660,36 +2679,36 @@ var TimelineResyncReasonSchema = z25.enum([
|
|
|
2660
2679
|
"rewind",
|
|
2661
2680
|
"oversized"
|
|
2662
2681
|
]);
|
|
2663
|
-
var TimelineSyncResponseSchema =
|
|
2664
|
-
|
|
2665
|
-
status:
|
|
2682
|
+
var TimelineSyncResponseSchema = z26.discriminatedUnion("status", [
|
|
2683
|
+
z26.object({
|
|
2684
|
+
status: z26.literal("snapshot"),
|
|
2666
2685
|
watermark: TimelineWatermarkSchema,
|
|
2667
2686
|
page: SessionTimelinePageSchema
|
|
2668
2687
|
}).strict(),
|
|
2669
|
-
|
|
2670
|
-
status:
|
|
2688
|
+
z26.object({
|
|
2689
|
+
status: z26.literal("replay"),
|
|
2671
2690
|
watermark: TimelineWatermarkSchema,
|
|
2672
2691
|
afterSequence: sequence,
|
|
2673
|
-
events:
|
|
2674
|
-
hasMore:
|
|
2692
|
+
events: z26.array(TimelineSyncEventSchema).max(TIMELINE_SYNC_MAX_EVENTS),
|
|
2693
|
+
hasMore: z26.boolean()
|
|
2675
2694
|
}).strict(),
|
|
2676
|
-
|
|
2677
|
-
status:
|
|
2695
|
+
z26.object({
|
|
2696
|
+
status: z26.literal("resync"),
|
|
2678
2697
|
epoch: identity,
|
|
2679
2698
|
reason: TimelineResyncReasonSchema
|
|
2680
2699
|
}).strict()
|
|
2681
2700
|
]);
|
|
2682
|
-
var TimelineImageRequestSchema =
|
|
2701
|
+
var TimelineImageRequestSchema = z26.object({
|
|
2683
2702
|
sha256: hash,
|
|
2684
|
-
offset:
|
|
2703
|
+
offset: z26.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1)
|
|
2685
2704
|
}).strict();
|
|
2686
|
-
var TimelineImageChunkSchema =
|
|
2705
|
+
var TimelineImageChunkSchema = z26.object({
|
|
2687
2706
|
sha256: hash,
|
|
2688
|
-
offset:
|
|
2689
|
-
totalBytes:
|
|
2690
|
-
mimeType:
|
|
2691
|
-
data:
|
|
2692
|
-
eof:
|
|
2707
|
+
offset: z26.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1),
|
|
2708
|
+
totalBytes: z26.number().int().positive().max(TIMELINE_IMAGE_MAX_BYTES),
|
|
2709
|
+
mimeType: z26.enum(["image/gif", "image/jpeg", "image/png", "image/webp"]),
|
|
2710
|
+
data: z26.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),
|
|
2711
|
+
eof: z26.boolean()
|
|
2693
2712
|
}).strict().superRefine((chunk, context) => {
|
|
2694
2713
|
const padding = chunk.data.endsWith("==") ? 2 : chunk.data.endsWith("=") ? 1 : 0;
|
|
2695
2714
|
const length = chunk.data.length / 4 * 3 - padding;
|
|
@@ -2700,10 +2719,10 @@ var TimelineImageChunkSchema = z25.object({
|
|
|
2700
2719
|
});
|
|
2701
2720
|
|
|
2702
2721
|
// ../../shared/protocol/dist/workbench.js
|
|
2703
|
-
import { z as
|
|
2722
|
+
import { z as z28 } from "zod";
|
|
2704
2723
|
|
|
2705
2724
|
// ../../shared/protocol/dist/schedules.js
|
|
2706
|
-
import { z as
|
|
2725
|
+
import { z as z27 } from "zod";
|
|
2707
2726
|
var SCHEDULE_OPERATIONS = [
|
|
2708
2727
|
"schedule.snapshot",
|
|
2709
2728
|
"schedule.create",
|
|
@@ -2711,90 +2730,90 @@ var SCHEDULE_OPERATIONS = [
|
|
|
2711
2730
|
"schedule.draft.dismiss",
|
|
2712
2731
|
"schedule.resume"
|
|
2713
2732
|
];
|
|
2714
|
-
var Id =
|
|
2715
|
-
var NativeId =
|
|
2716
|
-
var Time =
|
|
2717
|
-
var WorkbenchScheduleRuleSchema =
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
kind:
|
|
2721
|
-
seconds:
|
|
2722
|
-
recurring:
|
|
2733
|
+
var Id = z27.string().min(1).max(256);
|
|
2734
|
+
var NativeId = z27.number().int().positive().max(Number.MAX_SAFE_INTEGER);
|
|
2735
|
+
var Time = z27.iso.datetime({ offset: true });
|
|
2736
|
+
var WorkbenchScheduleRuleSchema = z27.discriminatedUnion("kind", [
|
|
2737
|
+
z27.object({ kind: z27.literal("once"), at: Time }).strict(),
|
|
2738
|
+
z27.object({
|
|
2739
|
+
kind: z27.literal("interval"),
|
|
2740
|
+
seconds: z27.number().int().min(10).max(86400),
|
|
2741
|
+
recurring: z27.boolean().optional()
|
|
2723
2742
|
}).strict(),
|
|
2724
|
-
|
|
2725
|
-
kind:
|
|
2726
|
-
expression:
|
|
2727
|
-
timezone:
|
|
2743
|
+
z27.object({
|
|
2744
|
+
kind: z27.literal("cron"),
|
|
2745
|
+
expression: z27.string().trim().min(9).max(256).regex(/^\S+(?: +\S+){4}$/),
|
|
2746
|
+
timezone: z27.string().min(1).max(128).regex(/^[A-Za-z0-9_+./-]+$/)
|
|
2728
2747
|
}).strict()
|
|
2729
2748
|
]);
|
|
2730
2749
|
var Content = {
|
|
2731
2750
|
rule: WorkbenchScheduleRuleSchema,
|
|
2732
|
-
prompt:
|
|
2733
|
-
skill:
|
|
2751
|
+
prompt: z27.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."),
|
|
2752
|
+
skill: z27.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.")
|
|
2734
2753
|
};
|
|
2735
|
-
var WorkbenchScheduleProposalSchema =
|
|
2736
|
-
var WorkbenchScheduleDraftSchema =
|
|
2737
|
-
id:
|
|
2754
|
+
var WorkbenchScheduleProposalSchema = z27.object(Content).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
|
|
2755
|
+
var WorkbenchScheduleDraftSchema = z27.object({
|
|
2756
|
+
id: z27.uuid(),
|
|
2738
2757
|
createdAt: Time,
|
|
2739
2758
|
...Content
|
|
2740
2759
|
}).strict();
|
|
2741
|
-
var WorkbenchScheduleEntrySchema =
|
|
2760
|
+
var WorkbenchScheduleEntrySchema = z27.object({
|
|
2742
2761
|
id: NativeId,
|
|
2743
|
-
prompt:
|
|
2744
|
-
displayPrompt:
|
|
2745
|
-
recurring:
|
|
2762
|
+
prompt: z27.string().max(1e5),
|
|
2763
|
+
displayPrompt: z27.string().max(1e5).optional(),
|
|
2764
|
+
recurring: z27.boolean(),
|
|
2746
2765
|
nextRunAt: Time,
|
|
2747
|
-
intervalMs:
|
|
2748
|
-
cron:
|
|
2749
|
-
timezone:
|
|
2766
|
+
intervalMs: z27.number().int().positive().optional(),
|
|
2767
|
+
cron: z27.string().max(256).optional(),
|
|
2768
|
+
timezone: z27.string().max(128).optional(),
|
|
2750
2769
|
at: Time.optional()
|
|
2751
2770
|
}).strict();
|
|
2752
|
-
var WorkbenchScheduleResultSchema =
|
|
2771
|
+
var WorkbenchScheduleResultSchema = z27.object({
|
|
2753
2772
|
id: Id,
|
|
2754
2773
|
scheduleId: NativeId,
|
|
2755
2774
|
triggerEventId: Id,
|
|
2756
2775
|
time: Time,
|
|
2757
|
-
prompt:
|
|
2758
|
-
status:
|
|
2759
|
-
reply:
|
|
2776
|
+
prompt: z27.string().max(16e3),
|
|
2777
|
+
status: z27.enum(["reply", "error", "merged", "pending", "unknown"]),
|
|
2778
|
+
reply: z27.string().max(16e3).optional(),
|
|
2760
2779
|
replyEventId: Id.optional(),
|
|
2761
|
-
error:
|
|
2780
|
+
error: z27.string().max(1024).optional()
|
|
2762
2781
|
}).strict();
|
|
2763
|
-
var WorkbenchScheduleSnapshotSchema =
|
|
2764
|
-
state:
|
|
2765
|
-
workingDirectory:
|
|
2766
|
-
timezone:
|
|
2767
|
-
entries:
|
|
2768
|
-
drafts:
|
|
2769
|
-
results:
|
|
2770
|
-
historyTruncated:
|
|
2782
|
+
var WorkbenchScheduleSnapshotSchema = z27.object({
|
|
2783
|
+
state: z27.enum(["active", "needs-resume"]),
|
|
2784
|
+
workingDirectory: z27.string().max(32768).optional(),
|
|
2785
|
+
timezone: z27.string().max(128).optional(),
|
|
2786
|
+
entries: z27.array(WorkbenchScheduleEntrySchema).max(256),
|
|
2787
|
+
drafts: z27.array(WorkbenchScheduleDraftSchema).max(100),
|
|
2788
|
+
results: z27.array(WorkbenchScheduleResultSchema).max(100),
|
|
2789
|
+
historyTruncated: z27.boolean(),
|
|
2771
2790
|
sampledAt: Time
|
|
2772
2791
|
}).strict();
|
|
2773
2792
|
var Submission = {
|
|
2774
|
-
operationId:
|
|
2775
|
-
operationCreatedAt:
|
|
2793
|
+
operationId: z27.uuid(),
|
|
2794
|
+
operationCreatedAt: z27.iso.datetime(),
|
|
2776
2795
|
expectedAgentRunId: Id
|
|
2777
2796
|
};
|
|
2778
|
-
var WorkbenchScheduleCreateRequestSchema =
|
|
2797
|
+
var WorkbenchScheduleCreateRequestSchema = z27.object({
|
|
2779
2798
|
...Submission,
|
|
2780
2799
|
...Content,
|
|
2781
|
-
draftId:
|
|
2800
|
+
draftId: z27.uuid().optional()
|
|
2782
2801
|
}).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
|
|
2783
|
-
var WorkbenchScheduleCreateResultSchema =
|
|
2802
|
+
var WorkbenchScheduleCreateResultSchema = z27.object({
|
|
2784
2803
|
snapshot: WorkbenchScheduleSnapshotSchema,
|
|
2785
|
-
verified:
|
|
2804
|
+
verified: z27.boolean()
|
|
2786
2805
|
}).strict();
|
|
2787
|
-
var WorkbenchScheduleDeleteRequestSchema =
|
|
2806
|
+
var WorkbenchScheduleDeleteRequestSchema = z27.object({
|
|
2788
2807
|
...Submission,
|
|
2789
2808
|
id: NativeId
|
|
2790
2809
|
}).strict();
|
|
2791
|
-
var WorkbenchScheduleDeleteResultSchema =
|
|
2810
|
+
var WorkbenchScheduleDeleteResultSchema = z27.object({
|
|
2792
2811
|
snapshot: WorkbenchScheduleSnapshotSchema,
|
|
2793
|
-
removed:
|
|
2812
|
+
removed: z27.boolean()
|
|
2794
2813
|
}).strict();
|
|
2795
|
-
var WorkbenchScheduleDraftDismissRequestSchema =
|
|
2814
|
+
var WorkbenchScheduleDraftDismissRequestSchema = z27.object({
|
|
2796
2815
|
...Submission,
|
|
2797
|
-
draftId:
|
|
2816
|
+
draftId: z27.uuid()
|
|
2798
2817
|
}).strict();
|
|
2799
2818
|
var ScheduleAndroidSchemas = {
|
|
2800
2819
|
WorkbenchScheduleRule: WorkbenchScheduleRuleSchema,
|
|
@@ -2811,10 +2830,10 @@ var ScheduleAndroidSchemas = {
|
|
|
2811
2830
|
};
|
|
2812
2831
|
|
|
2813
2832
|
// ../../shared/protocol/dist/workbench.js
|
|
2814
|
-
var Id2 =
|
|
2815
|
-
var Text =
|
|
2816
|
-
var Count =
|
|
2817
|
-
var Failure =
|
|
2833
|
+
var Id2 = z28.string().trim().min(1).max(256);
|
|
2834
|
+
var Text = z28.string().max(1e5);
|
|
2835
|
+
var Count = z28.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
|
|
2836
|
+
var Failure = z28.object({ code: Id2, message: z28.string().min(1).max(1024) }).strict();
|
|
2818
2837
|
var WORKBENCH_OPERATIONS = [
|
|
2819
2838
|
"operation.get",
|
|
2820
2839
|
"question.ask",
|
|
@@ -2833,104 +2852,104 @@ var WORKBENCH_OPERATIONS = [
|
|
|
2833
2852
|
...SCHEDULE_OPERATIONS
|
|
2834
2853
|
];
|
|
2835
2854
|
var Submission2 = {
|
|
2836
|
-
operationId:
|
|
2837
|
-
operationCreatedAt:
|
|
2855
|
+
operationId: z28.uuid(),
|
|
2856
|
+
operationCreatedAt: z28.iso.datetime(),
|
|
2838
2857
|
expectedAgentRunId: Id2
|
|
2839
2858
|
};
|
|
2840
|
-
var WorkbenchOperationGetSchema =
|
|
2841
|
-
var WorkbenchOperationStatusSchema =
|
|
2842
|
-
operationId:
|
|
2843
|
-
operation:
|
|
2859
|
+
var WorkbenchOperationGetSchema = z28.object({ operationId: z28.uuid() }).strict();
|
|
2860
|
+
var WorkbenchOperationStatusSchema = z28.object({
|
|
2861
|
+
operationId: z28.uuid(),
|
|
2862
|
+
operation: z28.enum(WORKBENCH_OPERATIONS),
|
|
2844
2863
|
agentRunId: Id2,
|
|
2845
|
-
state:
|
|
2846
|
-
result:
|
|
2864
|
+
state: z28.enum(["running", "succeeded", "failed", "uncertain", "result-expired"]),
|
|
2865
|
+
result: z28.record(z28.string(), z28.json()).optional(),
|
|
2847
2866
|
error: Failure.optional()
|
|
2848
2867
|
}).strict().superRefine((value, context) => {
|
|
2849
2868
|
if (value.state === "succeeded" !== (value.result !== void 0) || (value.state === "failed" || value.state === "uncertain") !== (value.error !== void 0)) {
|
|
2850
2869
|
context.addIssue({ code: "custom", message: "Invalid operation state payload" });
|
|
2851
2870
|
}
|
|
2852
2871
|
});
|
|
2853
|
-
var WorkbenchAskRequestSchema =
|
|
2872
|
+
var WorkbenchAskRequestSchema = z28.object({
|
|
2854
2873
|
...Submission2,
|
|
2855
|
-
question:
|
|
2874
|
+
question: z28.string().trim().min(1).max(16e3)
|
|
2856
2875
|
}).strict();
|
|
2857
|
-
var WorkbenchAskResultSchema =
|
|
2858
|
-
var WorkbenchEmptyRequestSchema =
|
|
2859
|
-
var WorkbenchSubmitRequestSchema =
|
|
2860
|
-
var WorkbenchResearchCreateRequestSchema =
|
|
2876
|
+
var WorkbenchAskResultSchema = z28.object({ answer: Text }).strict();
|
|
2877
|
+
var WorkbenchEmptyRequestSchema = z28.object({}).strict();
|
|
2878
|
+
var WorkbenchSubmitRequestSchema = z28.object(Submission2).strict();
|
|
2879
|
+
var WorkbenchResearchCreateRequestSchema = z28.object({
|
|
2861
2880
|
...Submission2,
|
|
2862
|
-
title:
|
|
2863
|
-
question:
|
|
2881
|
+
title: z28.string().trim().min(1).max(120),
|
|
2882
|
+
question: z28.string().trim().min(1).max(16e3),
|
|
2864
2883
|
sourceItemId: Id2.optional(),
|
|
2865
|
-
deferInitialPrompt:
|
|
2884
|
+
deferInitialPrompt: z28.literal(true).optional()
|
|
2866
2885
|
}).strict();
|
|
2867
|
-
var WorkbenchResearchThreadSchema =
|
|
2886
|
+
var WorkbenchResearchThreadSchema = z28.object({
|
|
2868
2887
|
sessionId: Id2,
|
|
2869
2888
|
parentSessionId: Id2,
|
|
2870
|
-
title:
|
|
2871
|
-
createdAt:
|
|
2889
|
+
title: z28.string().min(1).max(120),
|
|
2890
|
+
createdAt: z28.iso.datetime(),
|
|
2872
2891
|
contextAnchor: Id2.optional(),
|
|
2873
|
-
contextTruncated:
|
|
2874
|
-
detached:
|
|
2875
|
-
state:
|
|
2892
|
+
contextTruncated: z28.boolean(),
|
|
2893
|
+
detached: z28.boolean(),
|
|
2894
|
+
state: z28.enum(["creating", "ready", "failed"])
|
|
2876
2895
|
}).strict();
|
|
2877
|
-
var WorkbenchResearchCreateResultSchema =
|
|
2896
|
+
var WorkbenchResearchCreateResultSchema = z28.object({
|
|
2878
2897
|
thread: WorkbenchResearchThreadSchema
|
|
2879
2898
|
}).strict();
|
|
2880
|
-
var WorkbenchResearchListResultSchema =
|
|
2881
|
-
threads:
|
|
2899
|
+
var WorkbenchResearchListResultSchema = z28.object({
|
|
2900
|
+
threads: z28.array(WorkbenchResearchThreadSchema).max(100)
|
|
2882
2901
|
}).strict();
|
|
2883
|
-
var WorkbenchResearchTimelineRequestSchema =
|
|
2902
|
+
var WorkbenchResearchTimelineRequestSchema = z28.object({
|
|
2884
2903
|
cursor: Id2.optional()
|
|
2885
2904
|
}).strict();
|
|
2886
|
-
var WorkbenchResearchSendRequestSchema =
|
|
2905
|
+
var WorkbenchResearchSendRequestSchema = z28.object({
|
|
2887
2906
|
...Submission2,
|
|
2888
|
-
prompt:
|
|
2907
|
+
prompt: z28.string().trim().min(1).max(16e3)
|
|
2889
2908
|
}).strict();
|
|
2890
|
-
var WorkbenchResearchSendResultSchema =
|
|
2891
|
-
var WorkbenchCompletedResultSchema =
|
|
2892
|
-
var WorkbenchCommandSchema =
|
|
2893
|
-
name:
|
|
2894
|
-
description:
|
|
2895
|
-
argumentHint:
|
|
2896
|
-
kind:
|
|
2897
|
-
allowDuringExecution:
|
|
2898
|
-
supported:
|
|
2899
|
-
reason:
|
|
2909
|
+
var WorkbenchResearchSendResultSchema = z28.object({ messageId: Id2 }).strict();
|
|
2910
|
+
var WorkbenchCompletedResultSchema = z28.object({ completed: z28.boolean() }).strict();
|
|
2911
|
+
var WorkbenchCommandSchema = z28.object({
|
|
2912
|
+
name: z28.string().min(1).max(260),
|
|
2913
|
+
description: z28.string().max(4096),
|
|
2914
|
+
argumentHint: z28.string().max(1024).optional(),
|
|
2915
|
+
kind: z28.enum(["builtin", "skill", "client"]),
|
|
2916
|
+
allowDuringExecution: z28.boolean(),
|
|
2917
|
+
supported: z28.boolean(),
|
|
2918
|
+
reason: z28.string().max(1024).optional()
|
|
2900
2919
|
}).strict();
|
|
2901
|
-
var WorkbenchCommandListResultSchema =
|
|
2902
|
-
commands:
|
|
2920
|
+
var WorkbenchCommandListResultSchema = z28.object({
|
|
2921
|
+
commands: z28.array(WorkbenchCommandSchema).max(512)
|
|
2903
2922
|
}).strict();
|
|
2904
|
-
var WorkbenchCommandInvokeRequestSchema =
|
|
2923
|
+
var WorkbenchCommandInvokeRequestSchema = z28.object({
|
|
2905
2924
|
...Submission2,
|
|
2906
|
-
name:
|
|
2907
|
-
input:
|
|
2925
|
+
name: z28.string().trim().min(1).max(260),
|
|
2926
|
+
input: z28.string().max(16e3)
|
|
2908
2927
|
}).strict();
|
|
2909
|
-
var WorkbenchCommandChoiceSchema =
|
|
2910
|
-
name:
|
|
2911
|
-
label:
|
|
2912
|
-
input:
|
|
2928
|
+
var WorkbenchCommandChoiceSchema = z28.object({
|
|
2929
|
+
name: z28.string().min(1).max(260),
|
|
2930
|
+
label: z28.string().min(1).max(1024),
|
|
2931
|
+
input: z28.string().max(16e3)
|
|
2913
2932
|
}).strict();
|
|
2914
|
-
var WorkbenchCommandResultSchema =
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
kind:
|
|
2920
|
-
choices:
|
|
2933
|
+
var WorkbenchCommandResultSchema = z28.discriminatedUnion("kind", [
|
|
2934
|
+
z28.object({ kind: z28.literal("text"), text: Text }).strict(),
|
|
2935
|
+
z28.object({ kind: z28.literal("completed") }).strict(),
|
|
2936
|
+
z28.object({ kind: z28.literal("sent"), messageId: Id2 }).strict(),
|
|
2937
|
+
z28.object({
|
|
2938
|
+
kind: z28.literal("select-subcommand"),
|
|
2939
|
+
choices: z28.array(WorkbenchCommandChoiceSchema).min(1).max(100)
|
|
2921
2940
|
}).strict()
|
|
2922
2941
|
]);
|
|
2923
|
-
var WorkbenchQueueItemSchema =
|
|
2942
|
+
var WorkbenchQueueItemSchema = z28.object({
|
|
2924
2943
|
id: Id2,
|
|
2925
|
-
kind:
|
|
2926
|
-
texts:
|
|
2927
|
-
actions:
|
|
2944
|
+
kind: z28.string().min(1).max(64),
|
|
2945
|
+
texts: z28.array(z28.string().max(1e5)).min(1).max(100),
|
|
2946
|
+
actions: z28.array(z28.enum(["edit", "remove", "move", "send-now"])).max(4)
|
|
2928
2947
|
}).strict();
|
|
2929
|
-
var WorkbenchQueueSnapshotSchema =
|
|
2948
|
+
var WorkbenchQueueSnapshotSchema = z28.object({
|
|
2930
2949
|
generation: Id2,
|
|
2931
2950
|
revision: Id2,
|
|
2932
|
-
items:
|
|
2933
|
-
steeringMessages:
|
|
2951
|
+
items: z28.array(WorkbenchQueueItemSchema).max(512),
|
|
2952
|
+
steeringMessages: z28.array(z28.string().max(1e5)).max(512)
|
|
2934
2953
|
}).strict();
|
|
2935
2954
|
var QueueMutation = {
|
|
2936
2955
|
...Submission2,
|
|
@@ -2938,48 +2957,48 @@ var QueueMutation = {
|
|
|
2938
2957
|
revision: Id2,
|
|
2939
2958
|
id: Id2
|
|
2940
2959
|
};
|
|
2941
|
-
var WorkbenchQueueMutationRequestSchema =
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2960
|
+
var WorkbenchQueueMutationRequestSchema = z28.discriminatedUnion("action", [
|
|
2961
|
+
z28.object({ ...QueueMutation, action: z28.literal("edit"), prompt: z28.string().trim().min(1).max(1e5) }).strict(),
|
|
2962
|
+
z28.object({ ...QueueMutation, action: z28.literal("remove") }).strict(),
|
|
2963
|
+
z28.object({ ...QueueMutation, action: z28.literal("move"), toPosition: z28.number().int().min(0).max(511) }).strict(),
|
|
2964
|
+
z28.object({ ...QueueMutation, action: z28.literal("send-now") }).strict()
|
|
2946
2965
|
]);
|
|
2947
|
-
var WorkbenchQueueMutationResultSchema =
|
|
2948
|
-
changed:
|
|
2966
|
+
var WorkbenchQueueMutationResultSchema = z28.object({
|
|
2967
|
+
changed: z28.boolean(),
|
|
2949
2968
|
snapshot: WorkbenchQueueSnapshotSchema
|
|
2950
2969
|
}).strict();
|
|
2951
|
-
var WorkbenchTokenMetricSchema =
|
|
2952
|
-
kind:
|
|
2970
|
+
var WorkbenchTokenMetricSchema = z28.object({
|
|
2971
|
+
kind: z28.string().min(1).max(128),
|
|
2953
2972
|
count: Count
|
|
2954
2973
|
}).strict();
|
|
2955
|
-
var WorkbenchModelUsageSchema =
|
|
2974
|
+
var WorkbenchModelUsageSchema = z28.object({
|
|
2956
2975
|
model: Id2,
|
|
2957
2976
|
requests: Count,
|
|
2958
|
-
premiumRequestCost:
|
|
2959
|
-
tokens:
|
|
2977
|
+
premiumRequestCost: z28.number().finite().nonnegative(),
|
|
2978
|
+
tokens: z28.array(WorkbenchTokenMetricSchema).max(32)
|
|
2960
2979
|
}).strict();
|
|
2961
|
-
var WorkbenchContextSchema =
|
|
2980
|
+
var WorkbenchContextSchema = z28.object({
|
|
2962
2981
|
currentTokens: Count,
|
|
2963
2982
|
tokenLimit: Count,
|
|
2964
2983
|
systemTokens: Count.optional(),
|
|
2965
2984
|
conversationTokens: Count.optional(),
|
|
2966
2985
|
toolTokens: Count.optional()
|
|
2967
2986
|
}).strict();
|
|
2968
|
-
var WorkbenchInsightsSchema =
|
|
2969
|
-
sampledAt:
|
|
2987
|
+
var WorkbenchInsightsSchema = z28.object({
|
|
2988
|
+
sampledAt: z28.iso.datetime(),
|
|
2970
2989
|
generation: Id2,
|
|
2971
2990
|
model: Id2.optional(),
|
|
2972
2991
|
totalUserRequests: Count,
|
|
2973
|
-
premiumRequestCost:
|
|
2974
|
-
nanoAiu:
|
|
2975
|
-
tokens:
|
|
2976
|
-
models:
|
|
2992
|
+
premiumRequestCost: z28.number().finite().nonnegative(),
|
|
2993
|
+
nanoAiu: z28.string().regex(/^\d+$/).max(40).optional(),
|
|
2994
|
+
tokens: z28.array(WorkbenchTokenMetricSchema).max(32),
|
|
2995
|
+
models: z28.array(WorkbenchModelUsageSchema).max(100),
|
|
2977
2996
|
context: WorkbenchContextSchema.optional(),
|
|
2978
|
-
canCompact:
|
|
2979
|
-
compactUnavailableReason:
|
|
2997
|
+
canCompact: z28.boolean(),
|
|
2998
|
+
compactUnavailableReason: z28.string().max(1024).optional()
|
|
2980
2999
|
}).strict();
|
|
2981
|
-
var WorkbenchCompactResultSchema =
|
|
2982
|
-
success:
|
|
3000
|
+
var WorkbenchCompactResultSchema = z28.object({
|
|
3001
|
+
success: z28.boolean(),
|
|
2983
3002
|
tokensRemoved: Count,
|
|
2984
3003
|
messagesRemoved: Count
|
|
2985
3004
|
}).strict();
|
|
@@ -3015,6 +3034,8 @@ var WorkbenchAndroidSchemas = {
|
|
|
3015
3034
|
|
|
3016
3035
|
// ../../shared/protocol/dist/codegen/android-schemas.js
|
|
3017
3036
|
var AndroidProtocolSchemas = {
|
|
3037
|
+
BrowserOpenUrlParams: BrowserOpenUrlParamsSchema,
|
|
3038
|
+
BrowserOpenUrlResult: BrowserOpenUrlResultSchema,
|
|
3018
3039
|
TimelineImageBlobRequest: TimelineImageBlobRequestSchema,
|
|
3019
3040
|
TimelineImageBlobResult: TimelineImageBlobResultSchema,
|
|
3020
3041
|
SessionImageUploadRequest: SessionImageUploadRequestSchema,
|
|
@@ -3134,49 +3155,49 @@ import {
|
|
|
3134
3155
|
SessionImageRelayUrlSchema,
|
|
3135
3156
|
SessionImagesConfigSchema
|
|
3136
3157
|
} from "@agentknight/sdk";
|
|
3137
|
-
var BooleanStringSchema =
|
|
3138
|
-
var EnabledBooleanStringSchema =
|
|
3139
|
-
var OptionalPathSchema =
|
|
3158
|
+
var BooleanStringSchema = z29.enum(["true", "false"]).default("false").transform((value) => value === "true");
|
|
3159
|
+
var EnabledBooleanStringSchema = z29.enum(["true", "false"]).default("true").transform((value) => value === "true");
|
|
3160
|
+
var OptionalPathSchema = z29.preprocess(
|
|
3140
3161
|
(value) => typeof value === "string" && value.trim() === "" ? void 0 : value,
|
|
3141
|
-
|
|
3162
|
+
z29.string().trim().min(1).optional()
|
|
3142
3163
|
);
|
|
3143
|
-
var AcpArgumentsSchema =
|
|
3164
|
+
var AcpArgumentsSchema = z29.string().default("[]").transform((value, context) => {
|
|
3144
3165
|
let decoded;
|
|
3145
3166
|
try {
|
|
3146
3167
|
decoded = JSON.parse(value);
|
|
3147
3168
|
} catch (error) {
|
|
3148
3169
|
if (!(error instanceof SyntaxError)) throw error;
|
|
3149
3170
|
context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
|
|
3150
|
-
return
|
|
3171
|
+
return z29.NEVER;
|
|
3151
3172
|
}
|
|
3152
|
-
const parsed =
|
|
3173
|
+
const parsed = z29.array(z29.string()).max(128).safeParse(decoded);
|
|
3153
3174
|
if (!parsed.success) {
|
|
3154
3175
|
context.addIssue({ code: "custom", message: "AGENTKNIGHT_ACP_ARGS must be a JSON array of strings" });
|
|
3155
|
-
return
|
|
3176
|
+
return z29.NEVER;
|
|
3156
3177
|
}
|
|
3157
3178
|
return parsed.data;
|
|
3158
3179
|
});
|
|
3159
|
-
var EnvironmentSchema =
|
|
3160
|
-
RELAY_URL:
|
|
3161
|
-
RELAY_TOKEN:
|
|
3162
|
-
RELAY_AUTH:
|
|
3163
|
-
USER_ID:
|
|
3164
|
-
AGENTKNIGHT_MACHINE_NAME:
|
|
3165
|
-
AGENTKNIGHT_HOME:
|
|
3166
|
-
AGENTKNIGHT_WORKSPACE_ROOT:
|
|
3167
|
-
AGENTKNIGHT_CODING_AGENT:
|
|
3180
|
+
var EnvironmentSchema = z29.object({
|
|
3181
|
+
RELAY_URL: z29.url(),
|
|
3182
|
+
RELAY_TOKEN: z29.string().min(24).optional(),
|
|
3183
|
+
RELAY_AUTH: z29.enum(["token", "microsoft"]).optional(),
|
|
3184
|
+
USER_ID: z29.string().trim().min(1).max(256).default("admin"),
|
|
3185
|
+
AGENTKNIGHT_MACHINE_NAME: z29.string().trim().min(1).max(120).optional(),
|
|
3186
|
+
AGENTKNIGHT_HOME: z29.string().trim().min(1).optional(),
|
|
3187
|
+
AGENTKNIGHT_WORKSPACE_ROOT: z29.string().trim().min(1).optional(),
|
|
3188
|
+
AGENTKNIGHT_CODING_AGENT: z29.enum(["managed", ...CODING_AGENT_IDS2]).default("managed"),
|
|
3168
3189
|
AGENTKNIGHT_GROUP_CHAT_ENABLED: EnabledBooleanStringSchema,
|
|
3169
3190
|
AGENTKNIGHT_PEER_CHAT_ENABLED: EnabledBooleanStringSchema,
|
|
3170
3191
|
PI_CODING_AGENT_DIR: OptionalPathSchema,
|
|
3171
3192
|
AGENTKNIGHT_CODEX_COMMAND: OptionalPathSchema,
|
|
3172
3193
|
AGENTKNIGHT_ACP_COMMAND: OptionalPathSchema,
|
|
3173
3194
|
AGENTKNIGHT_ACP_ARGS: AcpArgumentsSchema,
|
|
3174
|
-
SESSION_REFRESH_INTERVAL_MS:
|
|
3175
|
-
HEARTBEAT_INTERVAL_MS:
|
|
3176
|
-
LOG_LEVEL:
|
|
3195
|
+
SESSION_REFRESH_INTERVAL_MS: z29.coerce.number().int().min(5e3).max(36e5).default(3e4),
|
|
3196
|
+
HEARTBEAT_INTERVAL_MS: z29.coerce.number().int().min(5e3).max(12e4).default(15e3),
|
|
3197
|
+
LOG_LEVEL: z29.enum(["fatal", "error", "warn", "info", "debug", "trace", "silent"]).default("info"),
|
|
3177
3198
|
SHOW_PAIRING_QR: BooleanStringSchema,
|
|
3178
3199
|
PAIRING_PAGE_ENABLED: EnabledBooleanStringSchema,
|
|
3179
|
-
PAIRING_PAGE_PORT:
|
|
3200
|
+
PAIRING_PAGE_PORT: z29.coerce.number().int().min(1024).max(65535).default(defaultPairingPagePort),
|
|
3180
3201
|
PC_AGENT_EXIT_AFTER_SNAPSHOT: BooleanStringSchema,
|
|
3181
3202
|
SNAPSHOT_SUPPRESSION_ENABLED: EnabledBooleanStringSchema,
|
|
3182
3203
|
TIMELINE_COMPRESSION_ENABLED: BooleanStringSchema,
|
|
@@ -3184,7 +3205,7 @@ var EnvironmentSchema = z28.object({
|
|
|
3184
3205
|
SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE: EnabledBooleanStringSchema,
|
|
3185
3206
|
SESSION_IMAGES_STORAGE_ACCOUNT: SessionImagesConfigSchema.shape.storageAccount.default("agentknightimagesbsp09"),
|
|
3186
3207
|
SESSION_IMAGES_STORAGE_CONTAINER: SessionImagesConfigSchema.shape.storageContainer.optional(),
|
|
3187
|
-
SECURE_MESSAGE_PACKET_BUDGET:
|
|
3208
|
+
SECURE_MESSAGE_PACKET_BUDGET: z29.coerce.number().int().min(2048).max(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH).default(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH)
|
|
3188
3209
|
}).superRefine((value, context) => {
|
|
3189
3210
|
if (value.SESSION_IMAGES_ALLOW_UNENCRYPTED_STORAGE) {
|
|
3190
3211
|
if (!SessionImageRelayUrlSchema.safeParse(value.RELAY_URL).success) {
|
|
@@ -3252,8 +3273,8 @@ function loadConfig(environment = process.env, options = {}) {
|
|
|
3252
3273
|
}
|
|
3253
3274
|
return {
|
|
3254
3275
|
...settings2,
|
|
3255
|
-
relayToken:
|
|
3256
|
-
userId:
|
|
3276
|
+
relayToken: z29.string().min(32).max(4096).parse(options.relayCredential.token),
|
|
3277
|
+
userId: z29.string().min(1).max(256).parse(options.relayCredential.user.userId)
|
|
3257
3278
|
};
|
|
3258
3279
|
}
|
|
3259
3280
|
function loadStartupConfig(environment = process.env, options = {}) {
|
|
@@ -4435,7 +4456,7 @@ import { createHash as createHash3, randomBytes as randomBytes2, timingSafeEqual
|
|
|
4435
4456
|
import { createHash as createHash2 } from "node:crypto";
|
|
4436
4457
|
import { platform } from "node:os";
|
|
4437
4458
|
import { brotliCompressSync, brotliDecompressSync } from "node:zlib";
|
|
4438
|
-
import { z as
|
|
4459
|
+
import { z as z30 } from "zod";
|
|
4439
4460
|
var STORE_MESSAGES = {
|
|
4440
4461
|
unavailable: "Unlock your operating system credential store and restart AgentKnight. No file-based credential fallback is available.",
|
|
4441
4462
|
invalid: "The saved Relay credential is invalid. Recover it in your operating system credential manager before signing in.",
|
|
@@ -4468,30 +4489,30 @@ function normalizeRelayOrigin(value) {
|
|
|
4468
4489
|
throw new RelayCredentialStoreError("address");
|
|
4469
4490
|
}
|
|
4470
4491
|
}
|
|
4471
|
-
var ConfirmationSchema =
|
|
4472
|
-
|
|
4473
|
-
status:
|
|
4474
|
-
confirmBy:
|
|
4492
|
+
var ConfirmationSchema = z30.discriminatedUnion("status", [
|
|
4493
|
+
z30.object({
|
|
4494
|
+
status: z30.literal("pending"),
|
|
4495
|
+
confirmBy: z30.number().int().positive(),
|
|
4475
4496
|
enrollmentId: PcEnrollmentIdSchema,
|
|
4476
4497
|
verifier: PcEnrollmentVerifierRequestSchema.shape.verifier
|
|
4477
4498
|
}).strict(),
|
|
4478
|
-
|
|
4479
|
-
status:
|
|
4480
|
-
confirmBy:
|
|
4499
|
+
z30.object({
|
|
4500
|
+
status: z30.literal("confirmed"),
|
|
4501
|
+
confirmBy: z30.number().int().positive()
|
|
4481
4502
|
}).strict()
|
|
4482
4503
|
]);
|
|
4483
|
-
var RelayCredentialSchema =
|
|
4484
|
-
version:
|
|
4485
|
-
relayUrl:
|
|
4504
|
+
var RelayCredentialSchema = z30.object({
|
|
4505
|
+
version: z30.literal(1),
|
|
4506
|
+
relayUrl: z30.string().max(2048),
|
|
4486
4507
|
machineId: PcEnrollmentStartRequestSchema.shape.machineId,
|
|
4487
|
-
token:
|
|
4488
|
-
tokenId:
|
|
4489
|
-
grantId:
|
|
4508
|
+
token: z30.string().min(32).max(4096),
|
|
4509
|
+
tokenId: z30.string().min(1).max(256),
|
|
4510
|
+
grantId: z30.uuid(),
|
|
4490
4511
|
user: AuthUserSchema,
|
|
4491
4512
|
confirmation: ConfirmationSchema
|
|
4492
4513
|
}).strict();
|
|
4493
|
-
var SlotsSchema =
|
|
4494
|
-
version:
|
|
4514
|
+
var SlotsSchema = z30.object({
|
|
4515
|
+
version: z30.literal(1),
|
|
4495
4516
|
pending: RelayCredentialSchema.optional(),
|
|
4496
4517
|
confirmed: RelayCredentialSchema.optional()
|
|
4497
4518
|
}).strict();
|
|
@@ -5377,7 +5398,7 @@ import { mkdtemp, rm as rm2 } from "node:fs/promises";
|
|
|
5377
5398
|
import { createConnection, createServer as createServer2 } from "node:net";
|
|
5378
5399
|
import { tmpdir } from "node:os";
|
|
5379
5400
|
import { join as join4, resolve as resolve3 } from "node:path";
|
|
5380
|
-
import { z as
|
|
5401
|
+
import { z as z32 } from "zod";
|
|
5381
5402
|
import { DataDirectoryLease } from "@agentknight/sdk/runtime";
|
|
5382
5403
|
import {
|
|
5383
5404
|
PEER_CHAT_TIMEOUT_MS,
|
|
@@ -5389,16 +5410,16 @@ import {
|
|
|
5389
5410
|
import { randomUUID } from "node:crypto";
|
|
5390
5411
|
import { mkdir as mkdir2, readFile as readFile2, rename, rm, writeFile as writeFile2 } from "node:fs/promises";
|
|
5391
5412
|
import { dirname as dirname2, join as join3 } from "node:path";
|
|
5392
|
-
import { z as
|
|
5393
|
-
var UpgradeStateSchema =
|
|
5394
|
-
id:
|
|
5395
|
-
phase:
|
|
5396
|
-
fromVersion:
|
|
5397
|
-
toVersion:
|
|
5398
|
-
updatedAt:
|
|
5399
|
-
error:
|
|
5413
|
+
import { z as z31 } from "zod";
|
|
5414
|
+
var UpgradeStateSchema = z31.object({
|
|
5415
|
+
id: z31.uuid(),
|
|
5416
|
+
phase: z31.enum(["preparing", "ready", "waiting-idle", "switching", "verifying", "succeeded", "rolled-back", "failed"]),
|
|
5417
|
+
fromVersion: z31.string(),
|
|
5418
|
+
toVersion: z31.string(),
|
|
5419
|
+
updatedAt: z31.iso.datetime(),
|
|
5420
|
+
error: z31.string().optional()
|
|
5400
5421
|
});
|
|
5401
|
-
var UpgradeSuccessSchema =
|
|
5422
|
+
var UpgradeSuccessSchema = z31.object({ version: z31.string(), upgradedAt: z31.iso.datetime() });
|
|
5402
5423
|
async function readOptionalJson(path) {
|
|
5403
5424
|
try {
|
|
5404
5425
|
return JSON.parse(await readFile2(path, "utf8"));
|
|
@@ -5428,39 +5449,39 @@ async function readLastUpgrade(directory) {
|
|
|
5428
5449
|
}
|
|
5429
5450
|
|
|
5430
5451
|
// src/runtime.ts
|
|
5431
|
-
var RuntimeDescriptorSchema =
|
|
5432
|
-
pid:
|
|
5433
|
-
instanceId:
|
|
5434
|
-
endpoint:
|
|
5435
|
-
token:
|
|
5436
|
-
upgradeId:
|
|
5452
|
+
var RuntimeDescriptorSchema = z32.object({
|
|
5453
|
+
pid: z32.number().int().positive(),
|
|
5454
|
+
instanceId: z32.uuid(),
|
|
5455
|
+
endpoint: z32.string().min(1),
|
|
5456
|
+
token: z32.string().min(32),
|
|
5457
|
+
upgradeId: z32.uuid().optional()
|
|
5437
5458
|
});
|
|
5438
|
-
var RuntimeStatusSchema =
|
|
5439
|
-
version:
|
|
5440
|
-
pid:
|
|
5441
|
-
instanceId:
|
|
5442
|
-
ready:
|
|
5443
|
-
busy:
|
|
5444
|
-
relayUrl:
|
|
5445
|
-
identityHash:
|
|
5446
|
-
configPath:
|
|
5447
|
-
configHash:
|
|
5448
|
-
executable:
|
|
5449
|
-
cliPath:
|
|
5450
|
-
cwd:
|
|
5451
|
-
args:
|
|
5452
|
-
canRestart:
|
|
5453
|
-
restartEnvironment:
|
|
5454
|
-
upgradeId:
|
|
5455
|
-
stopping:
|
|
5459
|
+
var RuntimeStatusSchema = z32.object({
|
|
5460
|
+
version: z32.string().min(1),
|
|
5461
|
+
pid: z32.number().int().positive(),
|
|
5462
|
+
instanceId: z32.uuid(),
|
|
5463
|
+
ready: z32.boolean(),
|
|
5464
|
+
busy: z32.boolean(),
|
|
5465
|
+
relayUrl: z32.string().url(),
|
|
5466
|
+
identityHash: z32.string().min(1),
|
|
5467
|
+
configPath: z32.string().optional(),
|
|
5468
|
+
configHash: z32.string().optional(),
|
|
5469
|
+
executable: z32.string().min(1),
|
|
5470
|
+
cliPath: z32.string().min(1),
|
|
5471
|
+
cwd: z32.string().min(1),
|
|
5472
|
+
args: z32.array(z32.string()),
|
|
5473
|
+
canRestart: z32.boolean().default(false),
|
|
5474
|
+
restartEnvironment: z32.record(z32.string(), z32.string()).default({}),
|
|
5475
|
+
upgradeId: z32.uuid().optional(),
|
|
5476
|
+
stopping: z32.boolean().optional()
|
|
5456
5477
|
});
|
|
5457
|
-
var RequestSchema =
|
|
5458
|
-
|
|
5459
|
-
|
|
5478
|
+
var RequestSchema = z32.discriminatedUnion("command", [
|
|
5479
|
+
z32.object({ token: z32.string(), command: z32.enum(["status", "prepare", "cancel", "stop"]) }),
|
|
5480
|
+
z32.object({ token: z32.string(), command: z32.literal("peer-chat"), payload: PeerChatRequestSchema2 })
|
|
5460
5481
|
]);
|
|
5461
|
-
var ResponseSchema =
|
|
5462
|
-
|
|
5463
|
-
|
|
5482
|
+
var ResponseSchema = z32.discriminatedUnion("ok", [
|
|
5483
|
+
z32.object({ ok: z32.literal(true), status: RuntimeStatusSchema.optional(), reply: PeerChatResultSchema.optional() }),
|
|
5484
|
+
z32.object({ ok: z32.literal(false), error: z32.string() })
|
|
5464
5485
|
]);
|
|
5465
5486
|
var MAX_MESSAGE_BYTES = 32 * 1024;
|
|
5466
5487
|
var MAX_PEER_REQUEST_BYTES = 128 * 1024;
|
|
@@ -5723,7 +5744,7 @@ import { randomUUID as randomUUID2 } from "node:crypto";
|
|
|
5723
5744
|
import { copyFile as copyFile2, mkdir as mkdir5, open as open2, realpath as realpath2, rm as rm6 } from "node:fs/promises";
|
|
5724
5745
|
import { dirname as dirname5, join as join9, resolve as resolve8 } from "node:path";
|
|
5725
5746
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
5726
|
-
import { z as
|
|
5747
|
+
import { z as z36 } from "zod";
|
|
5727
5748
|
|
|
5728
5749
|
// src/upgrade-packages.ts
|
|
5729
5750
|
import { execFile as execFile2, spawn as spawn2 } from "node:child_process";
|
|
@@ -5737,7 +5758,7 @@ import { createHash as createHash5 } from "node:crypto";
|
|
|
5737
5758
|
import { open } from "node:fs/promises";
|
|
5738
5759
|
import { join as join5 } from "node:path";
|
|
5739
5760
|
import { promisify } from "node:util";
|
|
5740
|
-
import { z as
|
|
5761
|
+
import { z as z33 } from "zod";
|
|
5741
5762
|
|
|
5742
5763
|
// src/restart-environment.ts
|
|
5743
5764
|
import { resolve as resolve4 } from "node:path";
|
|
@@ -5775,10 +5796,10 @@ function restartEnvironment(effective, persisted, dataDirectory) {
|
|
|
5775
5796
|
|
|
5776
5797
|
// src/upgrade-supervisor.ts
|
|
5777
5798
|
var execute = promisify(execFile);
|
|
5778
|
-
var SupervisorSchema =
|
|
5779
|
-
|
|
5780
|
-
|
|
5781
|
-
|
|
5799
|
+
var SupervisorSchema = z33.discriminatedUnion("kind", [
|
|
5800
|
+
z33.object({ kind: z33.literal("process") }),
|
|
5801
|
+
z33.object({ kind: z33.literal("windows-task"), name: z33.string(), path: z33.string(), definitionHash: z33.string() }),
|
|
5802
|
+
z33.object({ kind: z33.literal("launchd"), domain: z33.string(), label: z33.string(), plist: z33.string() })
|
|
5782
5803
|
]);
|
|
5783
5804
|
function globalPackageDirectory(prefix) {
|
|
5784
5805
|
return process.platform === "win32" ? join5(prefix, "node_modules", "@agentknight", "client") : join5(prefix, "lib", "node_modules", "@agentknight", "client");
|
|
@@ -5806,7 +5827,7 @@ async function assertInstallationIdle(prefix, allowedPid) {
|
|
|
5806
5827
|
} | ForEach-Object { [int]$_.ProcessId });
|
|
5807
5828
|
ConvertTo-Json -InputObject $ids -Compress
|
|
5808
5829
|
`);
|
|
5809
|
-
pids =
|
|
5830
|
+
pids = z33.array(z33.number().int().positive()).parse(JSON.parse(result));
|
|
5810
5831
|
} else {
|
|
5811
5832
|
const result = await execute("ps", ["-eo", "pid=,args="], { timeout: 1e4 });
|
|
5812
5833
|
pids = result.stdout.split("\n").flatMap((line) => {
|
|
@@ -5842,7 +5863,7 @@ async function detectSupervisor(runtime) {
|
|
|
5842
5863
|
if($matches.Count -gt 1) { throw 'Multiple scheduled tasks match this Agent. Refusing to choose.' };
|
|
5843
5864
|
if($matches.Count -eq 1) { $matches[0] | ConvertTo-Json -Compress } else { 'null' }
|
|
5844
5865
|
`);
|
|
5845
|
-
const task =
|
|
5866
|
+
const task = z33.object({ name: z33.string(), path: z33.string(), xml: z33.string() }).nullable().parse(JSON.parse(result));
|
|
5846
5867
|
return task === null ? { kind: "process" } : {
|
|
5847
5868
|
kind: "windows-task",
|
|
5848
5869
|
name: task.name,
|
|
@@ -6362,13 +6383,13 @@ async function prepareUpgradePackages(options) {
|
|
|
6362
6383
|
import { mkdir as mkdir4, readFile as readFile4, rm as rm5, stat } from "node:fs/promises";
|
|
6363
6384
|
import { createHash as createHash7 } from "node:crypto";
|
|
6364
6385
|
import { join as join8, resolve as resolve7 } from "node:path";
|
|
6365
|
-
import { z as
|
|
6386
|
+
import { z as z35 } from "zod";
|
|
6366
6387
|
|
|
6367
6388
|
// src/upgrade-startup.ts
|
|
6368
6389
|
import { rename as rename2, rm as rm4 } from "node:fs/promises";
|
|
6369
6390
|
import { basename, dirname as dirname4, join as join7, resolve as resolve6 } from "node:path";
|
|
6370
|
-
import { z as
|
|
6371
|
-
var PermitSchema =
|
|
6391
|
+
import { z as z34 } from "zod";
|
|
6392
|
+
var PermitSchema = z34.object({ id: z34.uuid(), version: z34.string(), cliPath: z34.string() });
|
|
6372
6393
|
function globalUpgradeLockPath(cliPath) {
|
|
6373
6394
|
const packageDirectory = dirname4(dirname4(cliPath));
|
|
6374
6395
|
const scope = dirname4(packageDirectory);
|
|
@@ -6382,14 +6403,14 @@ async function claimUpgradeStartup(directory, version, cliPath) {
|
|
|
6382
6403
|
const globalPath = globalUpgradeLockPath(cliPath);
|
|
6383
6404
|
const globalLock = globalPath === void 0 ? void 0 : await readOptionalJson(globalPath);
|
|
6384
6405
|
if (globalLock !== void 0) {
|
|
6385
|
-
const globalOwner =
|
|
6406
|
+
const globalOwner = z34.object({ id: z34.uuid(), dataDirectory: z34.string() }).parse(globalLock);
|
|
6386
6407
|
if (lock === void 0 || resolve6(globalOwner.dataDirectory) !== resolve6(directory)) {
|
|
6387
6408
|
throw new Error("This global installation is being upgraded for another data directory. Wait for that upgrade to finish.");
|
|
6388
6409
|
}
|
|
6389
6410
|
}
|
|
6390
6411
|
if (lock === void 0) return void 0;
|
|
6391
|
-
const owner =
|
|
6392
|
-
if (globalLock !== void 0 &&
|
|
6412
|
+
const owner = z34.object({ id: z34.uuid() }).parse(lock);
|
|
6413
|
+
if (globalLock !== void 0 && z34.object({ id: z34.uuid() }).parse(globalLock).id !== owner.id) {
|
|
6393
6414
|
throw new Error("Local and global upgrade ownership disagree; inspect the interrupted upgrade before starting.");
|
|
6394
6415
|
}
|
|
6395
6416
|
const path = join7(directory, "run", "upgrade-start.json");
|
|
@@ -6406,24 +6427,24 @@ async function claimUpgradeStartup(directory, version, cliPath) {
|
|
|
6406
6427
|
}
|
|
6407
6428
|
|
|
6408
6429
|
// src/upgrade-job.ts
|
|
6409
|
-
var PreparedPackagesSchema =
|
|
6410
|
-
targetArchive:
|
|
6411
|
-
rollbackArchive:
|
|
6412
|
-
cacheDirectory:
|
|
6413
|
-
registry:
|
|
6430
|
+
var PreparedPackagesSchema = z35.object({
|
|
6431
|
+
targetArchive: z35.string(),
|
|
6432
|
+
rollbackArchive: z35.string(),
|
|
6433
|
+
cacheDirectory: z35.string(),
|
|
6434
|
+
registry: z35.string().url()
|
|
6414
6435
|
});
|
|
6415
|
-
var UpgradePlanSchema =
|
|
6416
|
-
id:
|
|
6417
|
-
dataDirectory:
|
|
6418
|
-
directory:
|
|
6419
|
-
prefix:
|
|
6420
|
-
currentVersion:
|
|
6421
|
-
targetVersion:
|
|
6436
|
+
var UpgradePlanSchema = z35.object({
|
|
6437
|
+
id: z35.uuid(),
|
|
6438
|
+
dataDirectory: z35.string(),
|
|
6439
|
+
directory: z35.string(),
|
|
6440
|
+
prefix: z35.string(),
|
|
6441
|
+
currentVersion: z35.string(),
|
|
6442
|
+
targetVersion: z35.string(),
|
|
6422
6443
|
packages: PreparedPackagesSchema,
|
|
6423
6444
|
runtime: RuntimeStatusSchema.optional(),
|
|
6424
6445
|
supervisor: SupervisorSchema,
|
|
6425
|
-
taskName:
|
|
6426
|
-
configHash:
|
|
6446
|
+
taskName: z35.string(),
|
|
6447
|
+
configHash: z35.string().optional()
|
|
6427
6448
|
});
|
|
6428
6449
|
async function fileHash(path) {
|
|
6429
6450
|
return createHash7("sha256").update(await readFile4(path)).digest("hex");
|
|
@@ -6506,7 +6527,7 @@ async function upgrade(options) {
|
|
|
6506
6527
|
const lockPath = join9(root, "upgrade.lock");
|
|
6507
6528
|
const existing = await readOptionalJson(lockPath);
|
|
6508
6529
|
if (existing !== void 0) {
|
|
6509
|
-
const owner =
|
|
6530
|
+
const owner = z36.object({ pid: z36.number().int().positive() }).parse(existing);
|
|
6510
6531
|
if (processExists(owner.pid)) throw new Error("Another upgrade is already running. Use agentknight status.");
|
|
6511
6532
|
throw new Error(`An interrupted upgrade needs review. Read ${join9(root, "status.json")} before removing ${lockPath}.`);
|
|
6512
6533
|
}
|
|
@@ -6804,17 +6825,17 @@ import { initialize, supportsAgentSelection } from "@agentknight/sdk";
|
|
|
6804
6825
|
|
|
6805
6826
|
// src/chat-settings.ts
|
|
6806
6827
|
import { join as join11 } from "node:path";
|
|
6807
|
-
import { z as
|
|
6828
|
+
import { z as z37 } from "zod";
|
|
6808
6829
|
var settings = {
|
|
6809
6830
|
groupChatEnabled: {
|
|
6810
6831
|
file: "group-chat-settings.json",
|
|
6811
6832
|
label: "Group chat",
|
|
6812
|
-
schema:
|
|
6833
|
+
schema: z37.object({ groupChatEnabled: z37.boolean() }).strict().transform((value) => value.groupChatEnabled)
|
|
6813
6834
|
},
|
|
6814
6835
|
peerChatEnabled: {
|
|
6815
6836
|
file: "peer-chat-settings.json",
|
|
6816
6837
|
label: "Peer chat",
|
|
6817
|
-
schema:
|
|
6838
|
+
schema: z37.object({ peerChatEnabled: z37.boolean() }).strict().transform((value) => value.peerChatEnabled)
|
|
6818
6839
|
}
|
|
6819
6840
|
};
|
|
6820
6841
|
var ChatSettings = class _ChatSettings {
|
|
@@ -6862,14 +6883,14 @@ import { randomUUID as randomUUID3 } from "node:crypto";
|
|
|
6862
6883
|
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";
|
|
6863
6884
|
import { homedir as homedir3, hostname } from "node:os";
|
|
6864
6885
|
import { dirname as dirname6, join as join12, resolve as resolve9 } from "node:path";
|
|
6865
|
-
import { z as
|
|
6886
|
+
import { z as z38 } from "zod";
|
|
6866
6887
|
import { DeviceIdentitySchema, LEGACY_CLIENT_STATE_DIRECTORY } from "@agentknight/sdk";
|
|
6867
6888
|
import { DeviceIdentitySchema as DeviceIdentitySchema2 } from "@agentknight/sdk";
|
|
6868
|
-
var LegacyDeviceIdentitySchema =
|
|
6869
|
-
schemaVersion:
|
|
6870
|
-
machineId:
|
|
6871
|
-
machineName:
|
|
6872
|
-
createdAt:
|
|
6889
|
+
var LegacyDeviceIdentitySchema = z38.object({
|
|
6890
|
+
schemaVersion: z38.literal(1),
|
|
6891
|
+
machineId: z38.uuid(),
|
|
6892
|
+
machineName: z38.string().trim().min(1).max(120),
|
|
6893
|
+
createdAt: z38.iso.datetime({ offset: true })
|
|
6873
6894
|
});
|
|
6874
6895
|
function resolveMachineName(environment = process.env, fallback = hostname()) {
|
|
6875
6896
|
const computerName = environment.COMPUTERNAME?.trim();
|
|
@@ -6890,7 +6911,7 @@ async function readStableDeviceId(path) {
|
|
|
6890
6911
|
const info = await optionalStat(path);
|
|
6891
6912
|
if (info === void 0) return void 0;
|
|
6892
6913
|
if (!info.isFile()) throw new Error(`Device ID must be a regular file, not a link: ${path}`);
|
|
6893
|
-
const parsed =
|
|
6914
|
+
const parsed = z38.uuid().safeParse((await readFile5(path, "utf8")).trim());
|
|
6894
6915
|
if (!parsed.success) throw new Error(`Invalid device ID in ${path}`, { cause: parsed.error });
|
|
6895
6916
|
return parsed.data;
|
|
6896
6917
|
}
|
|
@@ -6953,7 +6974,7 @@ async function loadOrCreateDeviceIdentity(dataDirectory, currentMachineName = re
|
|
|
6953
6974
|
await requireDirectory(dataDirectory);
|
|
6954
6975
|
let existing;
|
|
6955
6976
|
try {
|
|
6956
|
-
existing =
|
|
6977
|
+
existing = z38.union([DeviceIdentitySchema, LegacyDeviceIdentitySchema]).parse(
|
|
6957
6978
|
JSON.parse(await readFile5(path, "utf8"))
|
|
6958
6979
|
);
|
|
6959
6980
|
} catch (error) {
|