@agentconnect.md/cli 1.15.0-rc.7 → 1.16.0
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/index.js +265 -11
- package/dist/index.js.map +1 -1
- package/package.json +6 -1
package/dist/index.js
CHANGED
|
@@ -7885,6 +7885,27 @@ const MemoryRecallPolicy = object({
|
|
|
7885
7885
|
timeoutMs: number().int().positive().max(MEMORY_RECALL_HARD_LIMITS.timeoutMs).default(MEMORY_RECALL_DEFAULTS.timeoutMs)
|
|
7886
7886
|
}).strict();
|
|
7887
7887
|
const MemoryCapturePolicy = object({ mode: _enum(["turn", "manual"]).default("manual") }).strict();
|
|
7888
|
+
/**
|
|
7889
|
+
* Dreaming — periodic offline consolidation of the MANAGED store
|
|
7890
|
+
* (design: docs/designs/memory-dreaming.md). Valid only with
|
|
7891
|
+
* `provider: 'managed'`; the daemon stages a rebuilt store per dream and the
|
|
7892
|
+
* user (or the gated auto-adopt path) reviews and adopts it. Bounds mirror the
|
|
7893
|
+
* design: sessionWindow ≤ 100 mined transcripts, instructions ≤ 4096 chars.
|
|
7894
|
+
*/
|
|
7895
|
+
const MemoryDreamingPolicy = object({
|
|
7896
|
+
enabled: boolean(),
|
|
7897
|
+
/** How many recent sessions to mine (default 20). */
|
|
7898
|
+
sessionWindow: number().int().min(1).max(100).optional(),
|
|
7899
|
+
/** Cron expression for scheduled dreams (same syntax as agent crons). */
|
|
7900
|
+
schedule: string().min(1).max(128).optional(),
|
|
7901
|
+
/** Operator steering text applied through the whole dream pipeline. */
|
|
7902
|
+
instructions: string().max(4096).optional(),
|
|
7903
|
+
/** Also mine reusable procedures into candidate skills (never auto-installed). */
|
|
7904
|
+
mineSkills: boolean().optional(),
|
|
7905
|
+
/** Adopt the staged store automatically on completion. Admissible only on
|
|
7906
|
+
* runtimes with a trusted extraction channel; the daemon enforces that. */
|
|
7907
|
+
autoAdopt: boolean().optional()
|
|
7908
|
+
}).strict();
|
|
7888
7909
|
/** Agent-facing provider selection. External bindings carry policy, never endpoints or secrets. */
|
|
7889
7910
|
const AgentMemoryBinding = union([object({
|
|
7890
7911
|
provider: _enum([
|
|
@@ -7892,8 +7913,15 @@ const AgentMemoryBinding = union([object({
|
|
|
7892
7913
|
"native",
|
|
7893
7914
|
"managed"
|
|
7894
7915
|
]),
|
|
7895
|
-
autoDistill: boolean().optional()
|
|
7896
|
-
|
|
7916
|
+
autoDistill: boolean().optional(),
|
|
7917
|
+
dreaming: MemoryDreamingPolicy.optional()
|
|
7918
|
+
}).strict().superRefine((binding, ctx) => {
|
|
7919
|
+
if (binding.dreaming && binding.provider !== "managed") ctx.addIssue({
|
|
7920
|
+
code: "custom",
|
|
7921
|
+
path: ["dreaming"],
|
|
7922
|
+
message: "dreaming is only supported with the managed memory provider"
|
|
7923
|
+
});
|
|
7924
|
+
}), object({
|
|
7897
7925
|
provider: literal("external"),
|
|
7898
7926
|
connectionId: string().uuid(),
|
|
7899
7927
|
recall: MemoryRecallPolicy.default({
|
|
@@ -8152,9 +8180,9 @@ const IntegrationChannels = object({
|
|
|
8152
8180
|
* Agent lifecycle (protocol §4.4, §7.4, §8).
|
|
8153
8181
|
*
|
|
8154
8182
|
* There is no CP→daemon prompt-delivery frame: the daemon prompts an agent from
|
|
8155
|
-
* its own ingress (platform adapters
|
|
8156
|
-
*
|
|
8157
|
-
*
|
|
8183
|
+
* its own ingress (platform adapters or relay `rd/*` delivery), never the CP.
|
|
8184
|
+
* The old `agent/prompt` + per-agent `seq` machinery was reserved infrastructure
|
|
8185
|
+
* with no live caller and has been removed.
|
|
8158
8186
|
*/
|
|
8159
8187
|
/**
|
|
8160
8188
|
* Where the agent runs. Two modes; the **path is always daemon-generated** —
|
|
@@ -8233,8 +8261,10 @@ const AgentSpec = object({
|
|
|
8233
8261
|
"medium",
|
|
8234
8262
|
"high"
|
|
8235
8263
|
]).optional(),
|
|
8264
|
+
showFooter: boolean().optional(),
|
|
8236
8265
|
fastMode: boolean().optional(),
|
|
8237
8266
|
permissionMode: string().nullable().optional(),
|
|
8267
|
+
allowRuntimeChangesInChat: boolean().optional(),
|
|
8238
8268
|
pause: boolean().optional(),
|
|
8239
8269
|
workspace: AgentWorkspace.optional(),
|
|
8240
8270
|
env: record(string(), string()).optional(),
|
|
@@ -8243,6 +8273,8 @@ const AgentSpec = object({
|
|
|
8243
8273
|
mcpServers: array(string()).default([]),
|
|
8244
8274
|
callPolicy: _enum(["all", "selected"]).optional(),
|
|
8245
8275
|
allowedCallerAgentIds: array(string()).default([]),
|
|
8276
|
+
outboundPolicy: _enum(["all", "selected"]).optional(),
|
|
8277
|
+
allowedTargetAgentIds: array(string()).optional(),
|
|
8246
8278
|
introduceOnJoin: boolean().optional(),
|
|
8247
8279
|
restrictFileAccess: boolean().optional()
|
|
8248
8280
|
});
|
|
@@ -8325,6 +8357,36 @@ const AgentScopeDenied = object({
|
|
|
8325
8357
|
launchId: string().uuid(),
|
|
8326
8358
|
capability: string()
|
|
8327
8359
|
});
|
|
8360
|
+
/** Editor approval queue. The daemon owns the live resolver and durable local
|
|
8361
|
+
* history; the Control Plane only proxies this bounded, secret-masked summary. */
|
|
8362
|
+
const AgentPermissionRequestRecord = object({
|
|
8363
|
+
id: string().uuid(),
|
|
8364
|
+
agentId: string().uuid(),
|
|
8365
|
+
createdAt: string().datetime(),
|
|
8366
|
+
requesterId: string().nullable(),
|
|
8367
|
+
requesterName: string().nullable(),
|
|
8368
|
+
command: string().max(240),
|
|
8369
|
+
status: _enum([
|
|
8370
|
+
"pending",
|
|
8371
|
+
"allowed",
|
|
8372
|
+
"denied",
|
|
8373
|
+
"expired"
|
|
8374
|
+
]),
|
|
8375
|
+
resolvedAt: string().datetime().nullable()
|
|
8376
|
+
});
|
|
8377
|
+
const AgentPermissionRequestList = object({
|
|
8378
|
+
agentId: string().uuid(),
|
|
8379
|
+
limit: number().int().min(1).max(100).default(50)
|
|
8380
|
+
});
|
|
8381
|
+
const AgentPermissionRequestPage = object({
|
|
8382
|
+
agentId: string().uuid(),
|
|
8383
|
+
requests: array(AgentPermissionRequestRecord)
|
|
8384
|
+
});
|
|
8385
|
+
const AgentPermissionDecision = object({
|
|
8386
|
+
agentId: string().uuid(),
|
|
8387
|
+
requestId: string().uuid(),
|
|
8388
|
+
decision: _enum(["allow", "deny"])
|
|
8389
|
+
});
|
|
8328
8390
|
//#endregion
|
|
8329
8391
|
//#region ../protocol/dist/frames/mcpserver.js
|
|
8330
8392
|
/**
|
|
@@ -8422,6 +8484,10 @@ const CollabAgentPlacement = object({
|
|
|
8422
8484
|
botAppId: string().optional(),
|
|
8423
8485
|
callPolicy: _enum(["all", "selected"]).default("all"),
|
|
8424
8486
|
allowedCallerAgentIds: array(string()).default([]),
|
|
8487
|
+
/** Caller-side authorization. Effective A→B access requires A's outbound
|
|
8488
|
+
* policy to admit B and B's inbound call policy to admit A. */
|
|
8489
|
+
outboundPolicy: _enum(["all", "selected"]).default("all"),
|
|
8490
|
+
allowedTargetAgentIds: array(string()).default([]),
|
|
8425
8491
|
name: string().optional(),
|
|
8426
8492
|
displayName: string().optional()
|
|
8427
8493
|
});
|
|
@@ -8474,7 +8540,7 @@ const GitCommitIdentity = object({
|
|
|
8474
8540
|
* `INTERNAL`.
|
|
8475
8541
|
*/
|
|
8476
8542
|
/**
|
|
8477
|
-
* Token capability classes (webhook-triggers-and-github-events.md P2.5
|
|
8543
|
+
* Token capability classes (webhook-triggers-and-github-events.md P2.5 write-back).
|
|
8478
8544
|
* `contents` is the git data plane (the pre-capabilities behavior); `issues` /
|
|
8479
8545
|
* `pull_requests` buy the agent `gh` write-back (issue/PR comments), and
|
|
8480
8546
|
* `actions` buys GitHub Actions inspection/execution. Every
|
|
@@ -8653,6 +8719,7 @@ const GithubHookMetadata = object({
|
|
|
8653
8719
|
mergeCommitSha: string().min(1).optional(),
|
|
8654
8720
|
isDraft: boolean().optional(),
|
|
8655
8721
|
baseChanged: boolean().optional(),
|
|
8722
|
+
explicitReviewRequest: boolean().optional(),
|
|
8656
8723
|
reviewCommentId: HookBigIntString.optional(),
|
|
8657
8724
|
reviewThreadRootCommentId: HookBigIntString.optional()
|
|
8658
8725
|
}).superRefine((value, ctx) => {
|
|
@@ -9253,6 +9320,143 @@ const MemoryRecordHistoryPage = object({
|
|
|
9253
9320
|
events: array(MemoryPluginHistoryEvent).max(20),
|
|
9254
9321
|
nextCursor: OptionalRecordCursor
|
|
9255
9322
|
}).strict();
|
|
9323
|
+
/**
|
|
9324
|
+
* Memory dreaming (C→D REQ → REP) — offline consolidation jobs over the
|
|
9325
|
+
* MANAGED store (design: docs/designs/memory-dreaming.md).
|
|
9326
|
+
*
|
|
9327
|
+
* A dream reads a snapshot of `<agent-root>/memory/` plus recent session
|
|
9328
|
+
* transcripts and stages a rebuilt store under
|
|
9329
|
+
* `<agent-root>/memory-dreams/<dreamId>/`; the live store is never modified by
|
|
9330
|
+
* a running dream. The CP relays these frames and persists at most the
|
|
9331
|
+
* metadata (`DreamInfo`) — staged bodies transit only as correlated
|
|
9332
|
+
* request/reply payloads, exactly like `memory/read` (body-locality).
|
|
9333
|
+
*
|
|
9334
|
+
* - `memory/dream/start|cancel|adopt|discard`: lifecycle commands; each REP is
|
|
9335
|
+
* the updated `DreamInfo` so the console can refresh without a second read.
|
|
9336
|
+
* - `memory/dream/list|get`: job metadata for the history view.
|
|
9337
|
+
* - `memory/dream/files` + `memory/dream/file/read`: browse the STAGED output
|
|
9338
|
+
* tree (byte-sliced like `memory/read`; same UTF-8-boundary semantics).
|
|
9339
|
+
* - `memory/dream/skill/accept|dismiss`: review actions on mined skill
|
|
9340
|
+
* candidates (skills are never auto-adopted; see the design §7).
|
|
9341
|
+
*/
|
|
9342
|
+
const DreamStatus = _enum([
|
|
9343
|
+
"pending",
|
|
9344
|
+
"running",
|
|
9345
|
+
"completed",
|
|
9346
|
+
"failed",
|
|
9347
|
+
"canceled",
|
|
9348
|
+
"adopted",
|
|
9349
|
+
"discarded"
|
|
9350
|
+
]);
|
|
9351
|
+
const DreamTrigger = _enum([
|
|
9352
|
+
"manual",
|
|
9353
|
+
"schedule",
|
|
9354
|
+
"auto"
|
|
9355
|
+
]);
|
|
9356
|
+
/** Review state of one mined skill candidate (design §7). */
|
|
9357
|
+
const DreamSkillInfo = object({
|
|
9358
|
+
name: string().regex(/^[a-z0-9][a-z0-9-]{0,62}$/, "skill name must be lowercase kebab-case"),
|
|
9359
|
+
description: string().max(1024),
|
|
9360
|
+
state: _enum([
|
|
9361
|
+
"proposed",
|
|
9362
|
+
"accepted",
|
|
9363
|
+
"dismissed"
|
|
9364
|
+
])
|
|
9365
|
+
}).strict();
|
|
9366
|
+
/** Dream job metadata (never staged bodies). The only dream shape the CP may persist. */
|
|
9367
|
+
const DreamInfo = object({
|
|
9368
|
+
dreamId: string().min(1).max(128),
|
|
9369
|
+
agentId: string().min(1),
|
|
9370
|
+
status: DreamStatus,
|
|
9371
|
+
trigger: DreamTrigger,
|
|
9372
|
+
sessionIds: array(string().min(1)).max(100),
|
|
9373
|
+
snapshotDigest: string().min(1).max(128),
|
|
9374
|
+
instructions: string().max(4096).optional(),
|
|
9375
|
+
skills: array(DreamSkillInfo).max(16).optional(),
|
|
9376
|
+
usage: object({
|
|
9377
|
+
inputBytes: number().int().nonnegative(),
|
|
9378
|
+
outputBytes: number().int().nonnegative()
|
|
9379
|
+
}).strict().optional(),
|
|
9380
|
+
error: object({
|
|
9381
|
+
type: string().min(1).max(128),
|
|
9382
|
+
message: string().max(2048)
|
|
9383
|
+
}).strict().optional(),
|
|
9384
|
+
createdAt: string(),
|
|
9385
|
+
endedAt: string().optional()
|
|
9386
|
+
}).strict();
|
|
9387
|
+
/** C→D REQ: start a dream for one agent (managed provider only). */
|
|
9388
|
+
const DreamStartReq = object({
|
|
9389
|
+
agentId: string().min(1),
|
|
9390
|
+
trigger: DreamTrigger.default("manual"),
|
|
9391
|
+
/** Per-run overrides of the agent's configured dreaming policy. */
|
|
9392
|
+
sessionWindow: number().int().min(1).max(100).optional(),
|
|
9393
|
+
instructions: string().max(4096).optional()
|
|
9394
|
+
}).strict();
|
|
9395
|
+
/** D→C REP (corr = the req id): the created/updated dream job. Shared by every
|
|
9396
|
+
* lifecycle command so the console always renders from one shape. */
|
|
9397
|
+
const DreamState = object({ dream: DreamInfo }).strict();
|
|
9398
|
+
/** C→D REQ: cancel a pending|running dream. */
|
|
9399
|
+
const DreamCancelReq = object({
|
|
9400
|
+
agentId: string().min(1),
|
|
9401
|
+
dreamId: string().min(1)
|
|
9402
|
+
}).strict();
|
|
9403
|
+
/** C→D REQ: list dream jobs for one agent (newest first; bounded). */
|
|
9404
|
+
const DreamListReq = object({
|
|
9405
|
+
agentId: string().min(1),
|
|
9406
|
+
limit: number().int().positive().max(50).default(20)
|
|
9407
|
+
}).strict();
|
|
9408
|
+
/** D→C REP (corr = the req id). */
|
|
9409
|
+
const DreamListPage = object({
|
|
9410
|
+
agentId: string().min(1),
|
|
9411
|
+
dreams: array(DreamInfo).max(50)
|
|
9412
|
+
}).strict();
|
|
9413
|
+
/** C→D REQ: fetch one dream job's metadata. */
|
|
9414
|
+
const DreamGetReq = DreamCancelReq;
|
|
9415
|
+
/** C→D REQ: adopt a completed dream's staged store (atomic swap + backup). */
|
|
9416
|
+
const DreamAdoptReq = object({
|
|
9417
|
+
agentId: string().min(1),
|
|
9418
|
+
dreamId: string().min(1),
|
|
9419
|
+
/** Adopt even when the live store changed since the snapshot (fence override). */
|
|
9420
|
+
force: boolean().default(false)
|
|
9421
|
+
}).strict();
|
|
9422
|
+
/** C→D REQ: discard a terminal dream's staged output. */
|
|
9423
|
+
const DreamDiscardReq = DreamCancelReq;
|
|
9424
|
+
/** C→D REQ: list the STAGED output files of one dream (review surface). */
|
|
9425
|
+
const DreamFilesReq = DreamCancelReq;
|
|
9426
|
+
/** D→C REP (corr = the req id): staged store listing (or `exists:false`). */
|
|
9427
|
+
const DreamFilesPage = object({
|
|
9428
|
+
agentId: string(),
|
|
9429
|
+
dreamId: string(),
|
|
9430
|
+
exists: boolean(),
|
|
9431
|
+
entries: array(MemoryEntry)
|
|
9432
|
+
}).strict();
|
|
9433
|
+
/** C→D REQ: read one byte slice of a STAGED dream file (semantics of `memory/read`). */
|
|
9434
|
+
const DreamFileReadReq = object({
|
|
9435
|
+
agentId: string().min(1),
|
|
9436
|
+
dreamId: string().min(1),
|
|
9437
|
+
path: string().default(MEMORY_INDEX),
|
|
9438
|
+
offset: number().int().nonnegative().default(0),
|
|
9439
|
+
limit: number().int().positive().max(65536).default(65536)
|
|
9440
|
+
}).strict();
|
|
9441
|
+
/** D→C REP (corr = the req id): the staged file slice (fields as `memory/read/content`). */
|
|
9442
|
+
const DreamFileReadContent = object({
|
|
9443
|
+
agentId: string(),
|
|
9444
|
+
dreamId: string(),
|
|
9445
|
+
path: string(),
|
|
9446
|
+
exists: boolean(),
|
|
9447
|
+
size: number().int().nonnegative().optional(),
|
|
9448
|
+
mtime: string().optional(),
|
|
9449
|
+
content: string().optional(),
|
|
9450
|
+
offset: number().int().nonnegative().optional(),
|
|
9451
|
+
nextOffset: number().int().nonnegative().optional(),
|
|
9452
|
+
truncated: boolean().optional()
|
|
9453
|
+
}).strict();
|
|
9454
|
+
/** C→D REQ: accept or dismiss one mined skill candidate (design §7). */
|
|
9455
|
+
const DreamSkillReviewReq = object({
|
|
9456
|
+
agentId: string().min(1),
|
|
9457
|
+
dreamId: string().min(1),
|
|
9458
|
+
name: string().regex(/^[a-z0-9][a-z0-9-]{0,62}$/)
|
|
9459
|
+
}).strict();
|
|
9256
9460
|
//#endregion
|
|
9257
9461
|
//#region ../protocol/dist/frames/telemetry.js
|
|
9258
9462
|
/**
|
|
@@ -9345,6 +9549,13 @@ const EffortOption = object({
|
|
|
9345
9549
|
name: string().optional(),
|
|
9346
9550
|
description: string().optional()
|
|
9347
9551
|
});
|
|
9552
|
+
/** One runtime permission-mode choice. The display metadata is forwarded
|
|
9553
|
+
* verbatim from the runtime's ACP `category: "mode"` select option. */
|
|
9554
|
+
const PermissionModeOption = object({
|
|
9555
|
+
value: string(),
|
|
9556
|
+
name: string().optional(),
|
|
9557
|
+
description: string().optional()
|
|
9558
|
+
});
|
|
9348
9559
|
/**
|
|
9349
9560
|
* A runtime's discovered model × config capability matrix. One shape shared by
|
|
9350
9561
|
* the wire, the CP's `runtime_profile.modelCatalog` JSONB column, and the DTO —
|
|
@@ -9359,10 +9570,7 @@ const RuntimeModelCatalog = object({
|
|
|
9359
9570
|
fastMode: boolean().optional()
|
|
9360
9571
|
})).max(128),
|
|
9361
9572
|
defaultModel: string().optional(),
|
|
9362
|
-
permissionModes: array(
|
|
9363
|
-
value: string(),
|
|
9364
|
-
name: string().optional()
|
|
9365
|
-
})).optional(),
|
|
9573
|
+
permissionModes: array(PermissionModeOption).optional(),
|
|
9366
9574
|
defaultPermissionMode: string().optional(),
|
|
9367
9575
|
source: _enum(["native", "acp"]),
|
|
9368
9576
|
observedAt: string().datetime()
|
|
@@ -9428,6 +9636,9 @@ const FRAME_SCHEMAS = {
|
|
|
9428
9636
|
"agent/activate": AgentActivate,
|
|
9429
9637
|
"agent/activity": AgentActivity,
|
|
9430
9638
|
"agent/scope-denied": AgentScopeDenied,
|
|
9639
|
+
"agent/permission-requests": AgentPermissionRequestList,
|
|
9640
|
+
"agent/permission-requests/page": AgentPermissionRequestPage,
|
|
9641
|
+
"agent/permission-decision": AgentPermissionDecision,
|
|
9431
9642
|
"route/assign": RouteAssign,
|
|
9432
9643
|
"route/assign/ack": RouteAssignAck,
|
|
9433
9644
|
"route/update": RouteUpdate,
|
|
@@ -9506,6 +9717,26 @@ const FRAME_SCHEMAS = {
|
|
|
9506
9717
|
"memory/record/delete/result": MemoryRecordDeleteResult,
|
|
9507
9718
|
"memory/record/history": MemoryRecordHistoryReq,
|
|
9508
9719
|
"memory/record/history/page": MemoryRecordHistoryPage,
|
|
9720
|
+
"memory/dream/start": DreamStartReq,
|
|
9721
|
+
"memory/dream/start/ok": DreamState,
|
|
9722
|
+
"memory/dream/cancel": DreamCancelReq,
|
|
9723
|
+
"memory/dream/cancel/ok": DreamState,
|
|
9724
|
+
"memory/dream/list": DreamListReq,
|
|
9725
|
+
"memory/dream/list/page": DreamListPage,
|
|
9726
|
+
"memory/dream/get": DreamGetReq,
|
|
9727
|
+
"memory/dream/get/result": DreamState,
|
|
9728
|
+
"memory/dream/adopt": DreamAdoptReq,
|
|
9729
|
+
"memory/dream/adopt/ok": DreamState,
|
|
9730
|
+
"memory/dream/discard": DreamDiscardReq,
|
|
9731
|
+
"memory/dream/discard/ok": DreamState,
|
|
9732
|
+
"memory/dream/files": DreamFilesReq,
|
|
9733
|
+
"memory/dream/files/page": DreamFilesPage,
|
|
9734
|
+
"memory/dream/file/read": DreamFileReadReq,
|
|
9735
|
+
"memory/dream/file/read/content": DreamFileReadContent,
|
|
9736
|
+
"memory/dream/skill/accept": DreamSkillReviewReq,
|
|
9737
|
+
"memory/dream/skill/accept/ok": DreamState,
|
|
9738
|
+
"memory/dream/skill/dismiss": DreamSkillReviewReq,
|
|
9739
|
+
"memory/dream/skill/dismiss/ok": DreamState,
|
|
9509
9740
|
"config/push": object({ keys: record(string(), unknown()) }),
|
|
9510
9741
|
"daemon/restart": object({
|
|
9511
9742
|
reason: string(),
|
|
@@ -9588,6 +9819,9 @@ discriminatedUnion("type", [
|
|
|
9588
9819
|
frame("agent/activate", FRAME_SCHEMAS["agent/activate"]),
|
|
9589
9820
|
frame("agent/activity", FRAME_SCHEMAS["agent/activity"]),
|
|
9590
9821
|
frame("agent/scope-denied", FRAME_SCHEMAS["agent/scope-denied"]),
|
|
9822
|
+
frame("agent/permission-requests", FRAME_SCHEMAS["agent/permission-requests"]),
|
|
9823
|
+
frame("agent/permission-requests/page", FRAME_SCHEMAS["agent/permission-requests/page"]),
|
|
9824
|
+
frame("agent/permission-decision", FRAME_SCHEMAS["agent/permission-decision"]),
|
|
9591
9825
|
frame("route/assign", FRAME_SCHEMAS["route/assign"]),
|
|
9592
9826
|
frame("route/assign/ack", FRAME_SCHEMAS["route/assign/ack"]),
|
|
9593
9827
|
frame("route/update", FRAME_SCHEMAS["route/update"]),
|
|
@@ -9662,6 +9896,26 @@ discriminatedUnion("type", [
|
|
|
9662
9896
|
frame("memory/record/delete/result", FRAME_SCHEMAS["memory/record/delete/result"]),
|
|
9663
9897
|
frame("memory/record/history", FRAME_SCHEMAS["memory/record/history"]),
|
|
9664
9898
|
frame("memory/record/history/page", FRAME_SCHEMAS["memory/record/history/page"]),
|
|
9899
|
+
frame("memory/dream/start", FRAME_SCHEMAS["memory/dream/start"]),
|
|
9900
|
+
frame("memory/dream/start/ok", FRAME_SCHEMAS["memory/dream/start/ok"]),
|
|
9901
|
+
frame("memory/dream/cancel", FRAME_SCHEMAS["memory/dream/cancel"]),
|
|
9902
|
+
frame("memory/dream/cancel/ok", FRAME_SCHEMAS["memory/dream/cancel/ok"]),
|
|
9903
|
+
frame("memory/dream/list", FRAME_SCHEMAS["memory/dream/list"]),
|
|
9904
|
+
frame("memory/dream/list/page", FRAME_SCHEMAS["memory/dream/list/page"]),
|
|
9905
|
+
frame("memory/dream/get", FRAME_SCHEMAS["memory/dream/get"]),
|
|
9906
|
+
frame("memory/dream/get/result", FRAME_SCHEMAS["memory/dream/get/result"]),
|
|
9907
|
+
frame("memory/dream/adopt", FRAME_SCHEMAS["memory/dream/adopt"]),
|
|
9908
|
+
frame("memory/dream/adopt/ok", FRAME_SCHEMAS["memory/dream/adopt/ok"]),
|
|
9909
|
+
frame("memory/dream/discard", FRAME_SCHEMAS["memory/dream/discard"]),
|
|
9910
|
+
frame("memory/dream/discard/ok", FRAME_SCHEMAS["memory/dream/discard/ok"]),
|
|
9911
|
+
frame("memory/dream/files", FRAME_SCHEMAS["memory/dream/files"]),
|
|
9912
|
+
frame("memory/dream/files/page", FRAME_SCHEMAS["memory/dream/files/page"]),
|
|
9913
|
+
frame("memory/dream/file/read", FRAME_SCHEMAS["memory/dream/file/read"]),
|
|
9914
|
+
frame("memory/dream/file/read/content", FRAME_SCHEMAS["memory/dream/file/read/content"]),
|
|
9915
|
+
frame("memory/dream/skill/accept", FRAME_SCHEMAS["memory/dream/skill/accept"]),
|
|
9916
|
+
frame("memory/dream/skill/accept/ok", FRAME_SCHEMAS["memory/dream/skill/accept/ok"]),
|
|
9917
|
+
frame("memory/dream/skill/dismiss", FRAME_SCHEMAS["memory/dream/skill/dismiss"]),
|
|
9918
|
+
frame("memory/dream/skill/dismiss/ok", FRAME_SCHEMAS["memory/dream/skill/dismiss/ok"]),
|
|
9665
9919
|
frame("config/push", FRAME_SCHEMAS["config/push"]),
|
|
9666
9920
|
frame("daemon/restart", FRAME_SCHEMAS["daemon/restart"]),
|
|
9667
9921
|
frame("daemon/upgrade", FRAME_SCHEMAS["daemon/upgrade"]),
|
|
@@ -9678,7 +9932,7 @@ discriminatedUnion("type", [
|
|
|
9678
9932
|
* (`frames/relay-cp.ts` / `frames/relay-daemon.ts` over their OWN maps) all
|
|
9679
9933
|
* decode the same envelope shape but accept disjoint frame families — a relay
|
|
9680
9934
|
* socket must answer a daemon↔CP frame with `UNKNOWN_FRAME`, and vice versa
|
|
9681
|
-
* (shared-bot-relay.md §8 "
|
|
9935
|
+
* (shared-bot-relay.md §8 "standalone frame union, not mixed into the daemon protocol").
|
|
9682
9936
|
*/
|
|
9683
9937
|
/** Soft cap per frame — 256 KiB (protocol §1). Over this → FRAME_TOO_LARGE. */
|
|
9684
9938
|
const MAX_FRAME_BYTES = 256 * 1024;
|