@roll-agent/protocol 0.5.0 → 0.6.1

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/README.md CHANGED
@@ -86,22 +86,23 @@ function handleEvent(event: RuntimeEventEnvelopeV13): void {
86
86
 
87
87
  - `@roll-agent/protocol/schema` 与 `@roll-agent/protocol/schema/latest`:最新版本
88
88
  JSON Schema Draft 2020-12 根 Schema;
89
- - `@roll-agent/protocol/schema/1.3`、`/1.2`、`/1.1`、`/1.0`:严格按协商版本隔离的 Schema;
89
+ - `@roll-agent/protocol/schema/1.4`、`/1.3`、`/1.2`、`/1.1`、`/1.0`:严格按协商版本隔离的 Schema;
90
+ - `@roll-agent/protocol/fixtures/v1.4/*`:Protocol 1.4 attachment / turn.start / snapshot fixtures;
90
91
  - `@roll-agent/protocol/fixtures/v1.3/*`:Protocol 1.3 durable event/replay fixtures;
91
92
  - `@roll-agent/protocol/fixtures/v1/*`:冻结的 1.1/1.0 跨语言有效/无效消息 fixtures。
92
93
  - `@roll-agent/protocol/fixtures/v1.2/*`:Protocol 1.2 capability/interaction fixtures。
93
94
 
94
95
  协议版本与 npm 包版本相互独立。`RUNTIME_PROTOCOL_VERSION` 表示这个包提供的最新 wire
95
96
  schema,并不代表调用方已实现对应 Client 能力。当前支持顺序为
96
- `["1.3", "1.2", "1.1", "1.0"]`。`initialize` 请求保持旧 strict 形状;协商到 `"1.2"`
97
- 或 `"1.3"` 后,
97
+ `["1.4", "1.3", "1.2", "1.1", "1.0"]`。`initialize` 请求保持旧 strict 形状;协商到 `"1.2"`、
98
+ `"1.3"` 或 `"1.4"` 后,
98
99
  Client 必须用 `client.capabilities.set` 提交单调 `revision` 与当前 Handler methods,Runtime
99
100
  返回 registry 交集后才进入 interaction-ready。ACK 可以为空或为请求集的任意子集,顺序按
100
101
  Runtime registry;Client 必须按集合语义处理。未知的未来 method 名可安全发送但不会被接受。
101
102
 
102
- 广告 `"1.3"` 同时声明 Client 能接收至少 `17 MiB` 的单个 Runtime→Client NDJSON 帧:
103
+ 广告 `"1.4"` 或 `"1.3"` 同时声明 Client 能接收至少 `17 MiB` 的单个 Runtime→Client NDJSON 帧:
103
104
  durable record 的绝对上限为 `16 MiB`,额外 1 MiB 留给 envelope 与 JSON-RPC 元数据。本地
104
- 入站预算低于 17 MiB 的 Client 必须省略 `"1.3"`。这不会扩大 Client→Runtime 出站额度;
105
+ 入站预算低于 17 MiB 的 Client 必须同时省略 `"1.4"` 与 `"1.3"`。这不会扩大 Client→Runtime 出站额度;
105
106
  初始化后的出站上限仍取本地预算与 Runtime 返回的 `limits.maxFrameBytes` 的较小值。
106
107
  官方 Node 恢复管理器的默认 replay 暂存窗口为 10,000 条 / 32 MiB。
107
108
 
@@ -162,6 +163,15 @@ Protocol `"1.0"` / `"1.1"` 的 strict 顶层结构不变,旧 GUI 可以继续
162
163
  时才向用户展示风险 `reason`;仅因无法证明安全而复用 `destructiveHint` 的 `unknown`
163
164
  命令不会显示“破坏性操作”。GUI 在 `reason` 缺失时应使用中性提示或直接省略。
164
165
 
166
+ 文件编辑类审批(`edit_file` / `write_file`)的变更预览位于 `approval.preview.diff`,形状为
167
+ `fileChangeDiffSchema`(`path`、`change: "create" | "modify"`、`added`、`removed`、`hunks`、可选的
168
+ `unified` 文本、`truncated`);`getApprovalDiffPreview()` 完成校验。写入成功后的
169
+ `tool.completed.display` 为 `{ text, diff }` 对象(`fileChangeDisplaySchema`),`getFileChangeDisplay()`
170
+ 读取;`text` 是与旧版本一致的人类可读摘要。`operationView.display`(`thread.snapshot` /
171
+ `operation.get`)沿用台账信封 `{ version, encoding, value }`,`value` 才是同一 `{ text, diff }` 对象,
172
+ 读取时传 `display.value`。两者同样刻意放在既有 JSON 槽位内:strict 顶层结构不变,旧客户端把它们当
173
+ 普通 JSON 忽略;`unified` 缺席表示只有统计(超大文件),`truncated: true` 表示正文按上限截断。
174
+
165
175
  ## 文档
166
176
 
167
177
  - [Runtime Protocol v1 参考](https://github.com/steveoon/roll-agent/blob/main/docs/runtime-protocol-v1-reference.md)
package/dist/index.d.ts CHANGED
@@ -22,6 +22,10 @@ export declare const RUNTIME_V13_RECOVERY_SNAPSHOT_METADATA_MAX_CHARS = 1024;
22
22
  export declare const RUNTIME_V13_RECOVERY_SNAPSHOT_TIMESTAMP_MAX_CHARS = 64;
23
23
  export declare const APPROVAL_EXPLANATION_PREVIEW_KEY: "explanation";
24
24
  export declare const APPROVAL_EXPLANATION_MAX_CHARS = 100;
25
+ export declare const APPROVAL_DIFF_PREVIEW_KEY: "diff";
26
+ export declare const FILE_CHANGE_DIFF_PATH_MAX_CHARS = 4096;
27
+ export declare const FILE_CHANGE_DIFF_UNIFIED_MAX_CHARS = 20000;
28
+ export declare const FILE_CHANGE_KINDS: readonly ["create", "modify"];
25
29
  export declare const CLIENT_CAPABILITY_METHOD_MAX_COUNT = 64;
26
30
  export declare const CLIENT_CAPABILITY_METHOD_MAX_CHARS = 100;
27
31
  export declare const USER_INPUT_CONTROL_MAX_COUNT = 16;
@@ -277,6 +281,33 @@ export declare const runtimeInteractionMetadataSchema: z.ZodReadonly<z.ZodObject
277
281
  }>;
278
282
  }, z.core.$strict>>;
279
283
  export declare const approvalExplanationSchema: z.ZodString;
284
+ export declare const fileChangeDiffSchema: z.ZodReadonly<z.ZodObject<{
285
+ path: z.ZodString;
286
+ change: z.ZodEnum<{
287
+ create: "create";
288
+ modify: "modify";
289
+ }>;
290
+ added: z.ZodNumber;
291
+ removed: z.ZodNumber;
292
+ hunks: z.ZodNumber;
293
+ unified: z.ZodOptional<z.ZodString>;
294
+ truncated: z.ZodBoolean;
295
+ }, z.core.$strip>>;
296
+ export declare const fileChangeDisplaySchema: z.ZodReadonly<z.ZodObject<{
297
+ text: z.ZodString;
298
+ diff: z.ZodReadonly<z.ZodObject<{
299
+ path: z.ZodString;
300
+ change: z.ZodEnum<{
301
+ create: "create";
302
+ modify: "modify";
303
+ }>;
304
+ added: z.ZodNumber;
305
+ removed: z.ZodNumber;
306
+ hunks: z.ZodNumber;
307
+ unified: z.ZodOptional<z.ZodString>;
308
+ truncated: z.ZodBoolean;
309
+ }, z.core.$strip>>;
310
+ }, z.core.$strip>>;
280
311
  export type ThreadId = z.infer<typeof threadIdSchema>;
281
312
  export type TurnId = z.infer<typeof turnIdSchema>;
282
313
  export type ApprovalId = z.infer<typeof approvalIdSchema>;
@@ -13294,6 +13325,9 @@ export type UserInputResult = z.infer<typeof userInputResultSchema>;
13294
13325
  /** A submitted result whose values were correlated and ordered against the original form. */
13295
13326
  export type NormalizedUserInputResult = UserInputResult;
13296
13327
  export type ApprovalExplanation = z.infer<typeof approvalExplanationSchema>;
13328
+ export type FileChangeKind = (typeof FILE_CHANGE_KINDS)[number];
13329
+ export type FileChangeDiff = z.infer<typeof fileChangeDiffSchema>;
13330
+ export type FileChangeDisplay = z.infer<typeof fileChangeDisplaySchema>;
13297
13331
  export type ActiveTurn = z.infer<typeof activeTurnSchema>;
13298
13332
  export type ActiveTurnV11 = z.infer<typeof activeTurnV11Schema>;
13299
13333
  export type ActiveTurnV12 = z.infer<typeof activeTurnV12Schema>;
@@ -13317,6 +13351,8 @@ export declare function isRuntimeMethodAvailable<TVersion extends RuntimeProtoco
13317
13351
  export declare function isRuntimeServerRequestMethodAvailable<TVersion extends RuntimeProtocolVersion>(version: TVersion, method: string): method is RuntimeServerRequestMethodForVersion<TVersion>;
13318
13352
  export declare function projectClientCapabilitiesSetResult(value: unknown): ClientCapabilitiesSetResult;
13319
13353
  export declare function getApprovalExplanation(approval: Pick<PendingApproval, "preview">): ApprovalExplanation | undefined;
13354
+ export declare function getApprovalDiffPreview(approval: Pick<PendingApproval, "preview">): FileChangeDiff | undefined;
13355
+ export declare function getFileChangeDisplay(display: unknown): FileChangeDisplay | undefined;
13320
13356
  /**
13321
13357
  * Correlates a structurally valid Client result with the original form and returns values in
13322
13358
  * form definition order. Unknown, duplicate, missing or type-incompatible values are rejected.
package/dist/index.js CHANGED
@@ -30,6 +30,10 @@ export const RUNTIME_V13_RECOVERY_SNAPSHOT_METADATA_MAX_CHARS = 1_024;
30
30
  export const RUNTIME_V13_RECOVERY_SNAPSHOT_TIMESTAMP_MAX_CHARS = 64;
31
31
  export const APPROVAL_EXPLANATION_PREVIEW_KEY = "explanation";
32
32
  export const APPROVAL_EXPLANATION_MAX_CHARS = 100;
33
+ export const APPROVAL_DIFF_PREVIEW_KEY = "diff";
34
+ export const FILE_CHANGE_DIFF_PATH_MAX_CHARS = 4_096;
35
+ export const FILE_CHANGE_DIFF_UNIFIED_MAX_CHARS = 20_000;
36
+ export const FILE_CHANGE_KINDS = ["create", "modify"];
33
37
  export const CLIENT_CAPABILITY_METHOD_MAX_COUNT = 64;
34
38
  export const CLIENT_CAPABILITY_METHOD_MAX_CHARS = 100;
35
39
  export const USER_INPUT_CONTROL_MAX_COUNT = 16;
@@ -125,6 +129,19 @@ export const REQUIRED_RUNTIME_SERVER_REQUEST_METHODS_BY_VERSION = {
125
129
  export function getRuntimeProtocolCapabilities(version) {
126
130
  return RUNTIME_PROTOCOL_CAPABILITIES[version];
127
131
  }
132
+ const RUNTIME_SERVER_REQUEST_WIRE_SHAPES = {
133
+ interaction: "interaction",
134
+ legacy: "legacy",
135
+ };
136
+ function resolveRuntimeServerRequestWireShape(version) {
137
+ const capabilities = getRuntimeProtocolCapabilities(version);
138
+ if (!capabilities.serverRequests) {
139
+ return null;
140
+ }
141
+ return capabilities.serverRequestCapabilityNegotiation
142
+ ? RUNTIME_SERVER_REQUEST_WIRE_SHAPES.interaction
143
+ : RUNTIME_SERVER_REQUEST_WIRE_SHAPES.legacy;
144
+ }
128
145
  export function isRuntimeServerRequestMethodRequired(version, method) {
129
146
  return getRuntimeProtocolCapabilities(version).requiredServerRequestMethods.some((requiredMethod) => requiredMethod === method);
130
147
  }
@@ -243,6 +260,23 @@ export const approvalExplanationSchema = z
243
260
  .trim()
244
261
  .min(1)
245
262
  .max(APPROVAL_EXPLANATION_MAX_CHARS);
263
+ export const fileChangeDiffSchema = z
264
+ .object({
265
+ path: z.string().min(1).max(FILE_CHANGE_DIFF_PATH_MAX_CHARS),
266
+ change: z.enum(FILE_CHANGE_KINDS),
267
+ added: z.number().int().nonnegative(),
268
+ removed: z.number().int().nonnegative(),
269
+ hunks: z.number().int().nonnegative(),
270
+ unified: z.string().max(FILE_CHANGE_DIFF_UNIFIED_MAX_CHARS).optional(),
271
+ truncated: z.boolean(),
272
+ })
273
+ .readonly();
274
+ export const fileChangeDisplaySchema = z
275
+ .object({
276
+ text: z.string(),
277
+ diff: fileChangeDiffSchema,
278
+ })
279
+ .readonly();
246
280
  function runtimeEventCursorParts(cursor) {
247
281
  const parsed = runtimeEventCursorSchema.parse(cursor);
248
282
  const [, eventLogId, threadSequence, eventId] = parsed.split(":");
@@ -1780,6 +1814,18 @@ export function getApprovalExplanation(approval) {
1780
1814
  const parsed = approvalExplanationSchema.safeParse(preview[APPROVAL_EXPLANATION_PREVIEW_KEY]);
1781
1815
  return parsed.success ? parsed.data : undefined;
1782
1816
  }
1817
+ export function getApprovalDiffPreview(approval) {
1818
+ const preview = approval.preview;
1819
+ if (typeof preview !== "object" || preview === null || Array.isArray(preview)) {
1820
+ return undefined;
1821
+ }
1822
+ const parsed = fileChangeDiffSchema.safeParse(preview[APPROVAL_DIFF_PREVIEW_KEY]);
1823
+ return parsed.success ? parsed.data : undefined;
1824
+ }
1825
+ export function getFileChangeDisplay(display) {
1826
+ const parsed = fileChangeDisplaySchema.safeParse(display);
1827
+ return parsed.success ? parsed.data : undefined;
1828
+ }
1783
1829
  function validateUserInputTextValue(control, value, path, addIssue) {
1784
1830
  if (typeof value !== "string") {
1785
1831
  addIssue(path, `${control.type} control requires a string value`);
@@ -2088,10 +2134,12 @@ export function parseRuntimeProtocolErrorDataForVersion(version, value) {
2088
2134
  }
2089
2135
  export function projectRuntimeServerRequestParams(version, method, value) {
2090
2136
  const latest = parseRuntimeServerRequestParamsForVersion("1.3", method, value);
2091
- if (version === "1.3" || version === "1.2") {
2137
+ const shape = resolveRuntimeServerRequestWireShape(version);
2138
+ if (shape === RUNTIME_SERVER_REQUEST_WIRE_SHAPES.interaction) {
2092
2139
  return latest;
2093
2140
  }
2094
- if (version === "1.1" && method === RUNTIME_SERVER_REQUEST_METHODS.approvalRequest) {
2141
+ if (shape === RUNTIME_SERVER_REQUEST_WIRE_SHAPES.legacy &&
2142
+ method === RUNTIME_SERVER_REQUEST_METHODS.approvalRequest) {
2095
2143
  const approval = approvalRequestParamsV12Schema.parse(latest);
2096
2144
  return approvalRequestParamsV11Schema.parse({
2097
2145
  threadId: approval.threadId,
@@ -2103,13 +2151,14 @@ export function projectRuntimeServerRequestParams(version, method, value) {
2103
2151
  }
2104
2152
  export function projectRuntimeServerRequestCancelParams(version, value) {
2105
2153
  const input = runtimeServerRequestCancelProjectionInputSchema.parse(value);
2106
- if (version === "1.3" || version === "1.2") {
2154
+ const shape = resolveRuntimeServerRequestWireShape(version);
2155
+ if (shape === RUNTIME_SERVER_REQUEST_WIRE_SHAPES.interaction) {
2107
2156
  return runtimeServerRequestCancelParamsV12Schema.parse({
2108
2157
  interactionId: input.interactionId,
2109
2158
  reason: input.reason,
2110
2159
  });
2111
2160
  }
2112
- if (version === "1.1") {
2161
+ if (shape === RUNTIME_SERVER_REQUEST_WIRE_SHAPES.legacy) {
2113
2162
  return runtimeServerRequestCancelParamsV11Schema.parse({
2114
2163
  serverRequestId: input.serverRequestId,
2115
2164
  ...(input.approvalId === undefined ? {} : { approvalId: input.approvalId }),
@@ -0,0 +1,14 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 26,
4
+ "method": "attachment.stage",
5
+ "params": {
6
+ "requestId": "00000000-0000-4000-8000-0000000000b1",
7
+ "threadId": "00000000-0000-4000-8000-000000000002",
8
+ "fileName": "diagram.png",
9
+ "mediaType": "image/png",
10
+ "bytes": 2048,
11
+ "sha256": "not-a-sha256",
12
+ "source": "chunks"
13
+ }
14
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 25,
4
+ "method": "turn.start",
5
+ "params": {
6
+ "requestId": "00000000-0000-4000-8000-0000000000b5",
7
+ "threadId": "00000000-0000-4000-8000-000000000002",
8
+ "turnId": "00000000-0000-4000-8000-000000000003",
9
+ "input": {
10
+ "text": "too many",
11
+ "attachments": [
12
+ "00000000-0000-4000-8000-0000000000a1",
13
+ "00000000-0000-4000-8000-0000000000a2",
14
+ "00000000-0000-4000-8000-0000000000a3",
15
+ "00000000-0000-4000-8000-0000000000a4",
16
+ "00000000-0000-4000-8000-0000000000a5",
17
+ "00000000-0000-4000-8000-0000000000a6",
18
+ "00000000-0000-4000-8000-0000000000a7",
19
+ "00000000-0000-4000-8000-0000000000a8",
20
+ "00000000-0000-4000-8000-0000000000a9"
21
+ ]
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 21,
4
+ "method": "attachment.chunk",
5
+ "params": {
6
+ "requestId": "00000000-0000-4000-8000-0000000000b2",
7
+ "threadId": "00000000-0000-4000-8000-000000000002",
8
+ "attachmentId": "00000000-0000-4000-8000-0000000000a1",
9
+ "sequence": 0,
10
+ "dataBase64": "iVBORw0KGgo="
11
+ }
12
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 22,
4
+ "method": "attachment.commit",
5
+ "params": {
6
+ "requestId": "00000000-0000-4000-8000-0000000000b3",
7
+ "threadId": "00000000-0000-4000-8000-000000000002",
8
+ "attachmentId": "00000000-0000-4000-8000-0000000000a1"
9
+ }
10
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 22,
4
+ "result": {
5
+ "descriptor": {
6
+ "attachmentId": "00000000-0000-4000-8000-0000000000a1",
7
+ "fileName": "diagram.png",
8
+ "displayName": "diagram.png",
9
+ "mediaType": "image/png",
10
+ "bytes": 2048,
11
+ "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
12
+ "source": "chunks",
13
+ "createdAt": "2026-08-21T12:00:00.000Z"
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 23,
4
+ "method": "attachment.release",
5
+ "params": {
6
+ "requestId": "00000000-0000-4000-8000-0000000000b4",
7
+ "threadId": "00000000-0000-4000-8000-000000000002",
8
+ "attachmentId": "00000000-0000-4000-8000-0000000000a1"
9
+ }
10
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 20,
4
+ "method": "attachment.stage",
5
+ "params": {
6
+ "requestId": "00000000-0000-4000-8000-0000000000b1",
7
+ "threadId": "00000000-0000-4000-8000-000000000002",
8
+ "fileName": "diagram.png",
9
+ "mediaType": "image/png",
10
+ "bytes": 2048,
11
+ "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
12
+ "source": "chunks"
13
+ }
14
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 20,
4
+ "result": {
5
+ "attachmentId": "00000000-0000-4000-8000-0000000000a1",
6
+ "state": "staged"
7
+ }
8
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 1,
4
+ "result": {
5
+ "protocolVersion": "1.4",
6
+ "runtimeInstanceId": "00000000-0000-4000-8000-000000000001",
7
+ "server": {
8
+ "name": "roll-runtime",
9
+ "version": "0.18.0",
10
+ "runtimeVersion": "0.18.0"
11
+ },
12
+ "features": [
13
+ "thread-management",
14
+ "snapshots",
15
+ "turns",
16
+ "approvals",
17
+ "tool-streaming",
18
+ "reasoning-summary",
19
+ "operation-projection",
20
+ "process-local-sequence",
21
+ "attachments"
22
+ ],
23
+ "limits": {
24
+ "maxFrameBytes": 4194304,
25
+ "maxPageSize": 500,
26
+ "eventReplay": true,
27
+ "idempotencyCacheEntries": 10000,
28
+ "maxAttachmentBytes": 16777216,
29
+ "maxAttachmentChunkBytes": 2097152,
30
+ "maxTurnAttachments": 8,
31
+ "maxStagedAttachments": 16
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "method": "runtime.event",
4
+ "params": {
5
+ "protocolVersion": "1.4",
6
+ "runtimeInstanceId": "00000000-0000-4000-8000-000000000001",
7
+ "sequence": 8,
8
+ "timestamp": "2026-07-30T12:00:00.000Z",
9
+ "threadId": "00000000-0000-4000-8000-000000000002",
10
+ "turnId": "00000000-0000-4000-8000-000000000003",
11
+ "durability": "durable",
12
+ "eventId": "00000000-0000-4000-8000-000000000007",
13
+ "cursor": "rte1:00000000-0000-4000-8000-000000000008:0:00000000-0000-4000-8000-000000000007",
14
+ "event": {
15
+ "type": "message.completed",
16
+ "streamId": "00000000-0000-4000-8000-000000000004",
17
+ "text": "hello"
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 27,
4
+ "result": {
5
+ "thread": {
6
+ "id": "00000000-0000-4000-8000-000000000002",
7
+ "title": "Attachment transcript",
8
+ "model": "fixture-model",
9
+ "createdAt": "2026-08-21T12:00:00.000Z",
10
+ "updatedAt": "2026-08-21T12:00:00.000Z",
11
+ "messageCount": 1
12
+ },
13
+ "messages": {
14
+ "items": [
15
+ {
16
+ "sequence": 0,
17
+ "role": "user",
18
+ "createdAt": "2026-08-21T12:00:00.000Z",
19
+ "parts": [
20
+ {
21
+ "type": "text",
22
+ "text": "看看这张图"
23
+ },
24
+ {
25
+ "type": "attachment",
26
+ "mediaType": "image/png",
27
+ "bytes": 2048,
28
+ "displayName": "diagram.png"
29
+ }
30
+ ]
31
+ }
32
+ ],
33
+ "nextBeforeSequence": null
34
+ },
35
+ "operations": {
36
+ "items": [],
37
+ "nextBeforeSequence": null
38
+ },
39
+ "pendingApprovals": [],
40
+ "pendingInteractions": [],
41
+ "transcriptCompleteness": "complete",
42
+ "eventCursor": null
43
+ }
44
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "jsonrpc": "2.0",
3
+ "id": 24,
4
+ "method": "turn.start",
5
+ "params": {
6
+ "requestId": "00000000-0000-4000-8000-0000000000b5",
7
+ "threadId": "00000000-0000-4000-8000-000000000002",
8
+ "turnId": "00000000-0000-4000-8000-000000000003",
9
+ "input": {
10
+ "text": "",
11
+ "attachments": ["00000000-0000-4000-8000-0000000000a1"]
12
+ }
13
+ }
14
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roll-agent/protocol",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "./schema": "./dist/schema/roll-runtime-protocol-v1.schema.json",
19
19
  "./schema/latest": "./dist/schema/roll-runtime-protocol-v1.schema.json",
20
+ "./schema/1.4": "./dist/schema/roll-runtime-protocol-v1.4.schema.json",
20
21
  "./schema/1.3": "./dist/schema/roll-runtime-protocol-v1.3.schema.json",
21
22
  "./schema/1.2": "./dist/schema/roll-runtime-protocol-v1.2.schema.json",
22
23
  "./schema/1.1": "./dist/schema/roll-runtime-protocol-v1.1.schema.json",