@osstack/protocol 0.15.0 → 0.22.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.
Files changed (73) hide show
  1. package/dist/attention.d.ts +863 -0
  2. package/dist/attention.d.ts.map +1 -0
  3. package/dist/attention.js +112 -0
  4. package/dist/attention.js.map +1 -0
  5. package/dist/autonomy.d.ts +14 -14
  6. package/dist/delivery-contract.d.ts +734 -0
  7. package/dist/delivery-contract.d.ts.map +1 -0
  8. package/dist/delivery-contract.js +111 -0
  9. package/dist/delivery-contract.js.map +1 -0
  10. package/dist/envelope.d.ts +42 -42
  11. package/dist/event.d.ts +4 -4
  12. package/dist/follow-up-delivery.d.ts +1831 -0
  13. package/dist/follow-up-delivery.d.ts.map +1 -0
  14. package/dist/follow-up-delivery.js +174 -0
  15. package/dist/follow-up-delivery.js.map +1 -0
  16. package/dist/follow-up.d.ts +1100 -0
  17. package/dist/follow-up.d.ts.map +1 -0
  18. package/dist/follow-up.js +28 -0
  19. package/dist/follow-up.js.map +1 -0
  20. package/dist/generate.d.ts +1 -0
  21. package/dist/generate.d.ts.map +1 -1
  22. package/dist/generate.js +61 -1
  23. package/dist/generate.js.map +1 -1
  24. package/dist/graph-checkpoint.d.ts +409 -0
  25. package/dist/graph-checkpoint.d.ts.map +1 -0
  26. package/dist/graph-checkpoint.js +91 -0
  27. package/dist/graph-checkpoint.js.map +1 -0
  28. package/dist/graph-worker.d.ts +1663 -0
  29. package/dist/graph-worker.d.ts.map +1 -0
  30. package/dist/graph-worker.js +152 -0
  31. package/dist/graph-worker.js.map +1 -0
  32. package/dist/graph.d.ts +13169 -0
  33. package/dist/graph.d.ts.map +1 -0
  34. package/dist/graph.js +427 -0
  35. package/dist/graph.js.map +1 -0
  36. package/dist/index.d.ts +11 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +11 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/policy.d.ts +10 -10
  41. package/dist/run.d.ts +4 -4
  42. package/dist/session-continuation-grant.d.ts +414 -0
  43. package/dist/session-continuation-grant.d.ts.map +1 -0
  44. package/dist/session-continuation-grant.js +59 -0
  45. package/dist/session-continuation-grant.js.map +1 -0
  46. package/dist/session-continuation.d.ts +129 -0
  47. package/dist/session-continuation.d.ts.map +1 -0
  48. package/dist/session-continuation.js +30 -0
  49. package/dist/session-continuation.js.map +1 -0
  50. package/dist/task.d.ts +2 -2
  51. package/package.json +11 -10
  52. package/schemas/attention-inbox.schema.json +271 -0
  53. package/schemas/attention-status.schema.json +434 -0
  54. package/schemas/continuation-grant-body.schema.json +189 -0
  55. package/schemas/continuation-output-check.schema.json +65 -0
  56. package/schemas/delivery-contract-v2.schema.json +238 -0
  57. package/schemas/delivery-verification-receipt-v2.schema.json +223 -0
  58. package/schemas/follow-up-create-params.schema.json +78 -0
  59. package/schemas/follow-up-draft-params.schema.json +39 -0
  60. package/schemas/follow-up-list-params.schema.json +42 -0
  61. package/schemas/follow-up-list-result.schema.json +241 -0
  62. package/schemas/follow-up-mutation-result.schema.json +361 -0
  63. package/schemas/follow-up-obligation.schema.json +343 -0
  64. package/schemas/follow-up-resolve-params.schema.json +53 -0
  65. package/schemas/frozen-delivery-contract-v2.schema.json +258 -0
  66. package/schemas/graph-checkpoint-request.schema.json +222 -0
  67. package/schemas/graph-checkpoint-response.schema.json +258 -0
  68. package/schemas/graph-worker.schema.json +546 -0
  69. package/schemas/graph.schema.json +1798 -0
  70. package/schemas/session-continuation-request.schema.json +62 -0
  71. package/schemas/session-decision.schema.json +107 -0
  72. package/schemas/signed-continuation-grant.schema.json +209 -0
  73. package/LICENSE +0 -21
@@ -0,0 +1,129 @@
1
+ import { z } from "zod";
2
+ export declare const SessionGateKind: z.ZodEnum<["phase_continue", "task_authorization", "risk_approval", "external_input"]>;
3
+ export type SessionGateKind = z.infer<typeof SessionGateKind>;
4
+ /** An agent-reported request, never a grant or proof that a gate passed. */
5
+ export declare const SessionContinuationRequest: z.ZodObject<{
6
+ version: z.ZodLiteral<1>;
7
+ gate_kind: z.ZodEnum<["phase_continue", "task_authorization", "risk_approval", "external_input"]>;
8
+ phase: z.ZodString;
9
+ next_action: z.ZodString;
10
+ evidence_refs: z.ZodArray<z.ZodObject<{
11
+ evidence_id: z.ZodString;
12
+ sha256: z.ZodString;
13
+ }, "strict", z.ZodTypeAny, {
14
+ evidence_id: string;
15
+ sha256: string;
16
+ }, {
17
+ evidence_id: string;
18
+ sha256: string;
19
+ }>, "many">;
20
+ }, "strict", z.ZodTypeAny, {
21
+ version: 1;
22
+ gate_kind: "phase_continue" | "task_authorization" | "risk_approval" | "external_input";
23
+ phase: string;
24
+ next_action: string;
25
+ evidence_refs: {
26
+ evidence_id: string;
27
+ sha256: string;
28
+ }[];
29
+ }, {
30
+ version: 1;
31
+ gate_kind: "phase_continue" | "task_authorization" | "risk_approval" | "external_input";
32
+ phase: string;
33
+ next_action: string;
34
+ evidence_refs: {
35
+ evidence_id: string;
36
+ sha256: string;
37
+ }[];
38
+ }>;
39
+ export type SessionContinuationRequest = z.infer<typeof SessionContinuationRequest>;
40
+ export declare const SessionDecision: z.ZodObject<{
41
+ decision_id: z.ZodString;
42
+ question: z.ZodString;
43
+ choices: z.ZodEffects<z.ZodArray<z.ZodObject<{
44
+ choice_id: z.ZodString;
45
+ label: z.ZodString;
46
+ }, "strict", z.ZodTypeAny, {
47
+ choice_id: string;
48
+ label: string;
49
+ }, {
50
+ choice_id: string;
51
+ label: string;
52
+ }>, "many">, {
53
+ choice_id: string;
54
+ label: string;
55
+ }[], {
56
+ choice_id: string;
57
+ label: string;
58
+ }[]>;
59
+ continuation: z.ZodOptional<z.ZodObject<{
60
+ version: z.ZodLiteral<1>;
61
+ gate_kind: z.ZodEnum<["phase_continue", "task_authorization", "risk_approval", "external_input"]>;
62
+ phase: z.ZodString;
63
+ next_action: z.ZodString;
64
+ evidence_refs: z.ZodArray<z.ZodObject<{
65
+ evidence_id: z.ZodString;
66
+ sha256: z.ZodString;
67
+ }, "strict", z.ZodTypeAny, {
68
+ evidence_id: string;
69
+ sha256: string;
70
+ }, {
71
+ evidence_id: string;
72
+ sha256: string;
73
+ }>, "many">;
74
+ }, "strict", z.ZodTypeAny, {
75
+ version: 1;
76
+ gate_kind: "phase_continue" | "task_authorization" | "risk_approval" | "external_input";
77
+ phase: string;
78
+ next_action: string;
79
+ evidence_refs: {
80
+ evidence_id: string;
81
+ sha256: string;
82
+ }[];
83
+ }, {
84
+ version: 1;
85
+ gate_kind: "phase_continue" | "task_authorization" | "risk_approval" | "external_input";
86
+ phase: string;
87
+ next_action: string;
88
+ evidence_refs: {
89
+ evidence_id: string;
90
+ sha256: string;
91
+ }[];
92
+ }>>;
93
+ }, "strict", z.ZodTypeAny, {
94
+ decision_id: string;
95
+ question: string;
96
+ choices: {
97
+ choice_id: string;
98
+ label: string;
99
+ }[];
100
+ continuation?: {
101
+ version: 1;
102
+ gate_kind: "phase_continue" | "task_authorization" | "risk_approval" | "external_input";
103
+ phase: string;
104
+ next_action: string;
105
+ evidence_refs: {
106
+ evidence_id: string;
107
+ sha256: string;
108
+ }[];
109
+ } | undefined;
110
+ }, {
111
+ decision_id: string;
112
+ question: string;
113
+ choices: {
114
+ choice_id: string;
115
+ label: string;
116
+ }[];
117
+ continuation?: {
118
+ version: 1;
119
+ gate_kind: "phase_continue" | "task_authorization" | "risk_approval" | "external_input";
120
+ phase: string;
121
+ next_action: string;
122
+ evidence_refs: {
123
+ evidence_id: string;
124
+ sha256: string;
125
+ }[];
126
+ } | undefined;
127
+ }>;
128
+ export type SessionDecision = z.infer<typeof SessionDecision>;
129
+ //# sourceMappingURL=session-continuation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-continuation.d.ts","sourceRoot":"","sources":["../src/session-continuation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,eAAe,wFAK1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,4EAA4E;AAC5E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS5B,CAAC;AACZ,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYjB,CAAC;AACZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ const Id = z.string().trim().min(1).max(256);
3
+ export const SessionGateKind = z.enum([
4
+ "phase_continue",
5
+ "task_authorization",
6
+ "risk_approval",
7
+ "external_input",
8
+ ]);
9
+ /** An agent-reported request, never a grant or proof that a gate passed. */
10
+ export const SessionContinuationRequest = z.object({
11
+ version: z.literal(1),
12
+ gate_kind: SessionGateKind,
13
+ phase: Id,
14
+ next_action: z.string().trim().min(1).max(1_000),
15
+ evidence_refs: z.array(z.object({
16
+ evidence_id: Id,
17
+ sha256: z.string().regex(/^[a-f0-9]{64}$/),
18
+ }).strict()).max(32),
19
+ }).strict();
20
+ export const SessionDecision = z.object({
21
+ decision_id: Id,
22
+ question: z.string().trim().min(1).max(1_000),
23
+ // Empty choices remain valid for legacy adapters requesting free-form input.
24
+ choices: z.array(z.object({
25
+ choice_id: Id,
26
+ label: z.string().trim().min(1).max(160),
27
+ }).strict()).max(8).refine((choices) => new Set(choices.map((choice) => choice.choice_id)).size === choices.length, "choice IDs must be unique"),
28
+ continuation: SessionContinuationRequest.optional(),
29
+ }).strict();
30
+ //# sourceMappingURL=session-continuation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-continuation.js","sourceRoot":"","sources":["../src/session-continuation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,gBAAgB;IAChB,oBAAoB;IACpB,eAAe;IACf,gBAAgB;CACjB,CAAC,CAAC;AAGH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IAChD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9B,WAAW,EAAE,EAAE;QACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;KAC3C,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CACrB,CAAC,CAAC,MAAM,EAAE,CAAC;AAGZ,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7C,6EAA6E;IAC7E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;KACzC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CACxB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EACvF,2BAA2B,CAC5B;IACD,YAAY,EAAE,0BAA0B,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC,MAAM,EAAE,CAAC"}
package/dist/task.d.ts CHANGED
@@ -21,17 +21,17 @@ export declare const Task: z.ZodObject<{
21
21
  evaluation: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
22
22
  }, "strict", z.ZodTypeAny, {
23
23
  task_id: string;
24
+ source: "manual" | "git_diff" | "gh_issue" | "github_branch" | "ci_log" | "task_queue";
24
25
  capability: string;
25
26
  prompt: string;
26
- source: "git_diff" | "gh_issue" | "github_branch" | "ci_log" | "task_queue" | "manual";
27
27
  priority: number;
28
28
  context?: Record<string, unknown> | undefined;
29
29
  evaluation?: unknown[] | undefined;
30
30
  }, {
31
31
  task_id: string;
32
+ source: "manual" | "git_diff" | "gh_issue" | "github_branch" | "ci_log" | "task_queue";
32
33
  capability: string;
33
34
  prompt: string;
34
- source: "git_diff" | "gh_issue" | "github_branch" | "ci_log" | "task_queue" | "manual";
35
35
  priority?: number | undefined;
36
36
  context?: Record<string, unknown> | undefined;
37
37
  evaluation?: unknown[] | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osstack/protocol",
3
- "version": "0.15.0",
3
+ "version": "0.22.0",
4
4
  "description": "Stable cross-product / cross-process / cross-agent kernel contracts for osstack (Task, Run, Event, Evidence, Approval, Policy, Agent command envelope) with JSON Schema artifacts and a versioned protocol.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -10,6 +10,14 @@
10
10
  "dist",
11
11
  "schemas"
12
12
  ],
13
+ "scripts": {
14
+ "build": "tsc -p .",
15
+ "prepack": "node ../../scripts/prepare-npm-package.mjs",
16
+ "test": "vitest run",
17
+ "typecheck": "tsc --noEmit",
18
+ "generate:schemas": "node scripts/generate-schemas.mjs",
19
+ "check:schemas": "node scripts/generate-schemas.mjs --check"
20
+ },
13
21
  "dependencies": {
14
22
  "zod": "^3.25.76"
15
23
  },
@@ -22,17 +30,10 @@
22
30
  },
23
31
  "repository": {
24
32
  "type": "git",
25
- "url": "https://github.com/gilosbornhello/osstack.git",
33
+ "url": "https://github.com/osborn-studio/osstack.git",
26
34
  "directory": "packages/protocol"
27
35
  },
28
36
  "engines": {
29
37
  "node": ">=20"
30
- },
31
- "scripts": {
32
- "build": "tsc -p .",
33
- "test": "vitest run",
34
- "typecheck": "tsc --noEmit",
35
- "generate:schemas": "node scripts/generate-schemas.mjs",
36
- "check:schemas": "node scripts/generate-schemas.mjs --check"
37
38
  }
38
- }
39
+ }
@@ -0,0 +1,271 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "OSStack Attention Inbox",
4
+ "type": "object",
5
+ "properties": {
6
+ "schema_version": {
7
+ "type": "number",
8
+ "const": 1
9
+ },
10
+ "scope_id": {
11
+ "type": "string",
12
+ "minLength": 1,
13
+ "maxLength": 512
14
+ },
15
+ "coverage": {
16
+ "type": "string",
17
+ "enum": [
18
+ "covered",
19
+ "degraded",
20
+ "uncovered",
21
+ "unknown"
22
+ ]
23
+ },
24
+ "execution_takeover": {
25
+ "type": "boolean",
26
+ "const": false
27
+ },
28
+ "counts": {
29
+ "type": "array",
30
+ "items": {
31
+ "type": "object",
32
+ "properties": {
33
+ "state": {
34
+ "type": "string",
35
+ "maxLength": 80
36
+ },
37
+ "total": {
38
+ "type": "integer",
39
+ "minimum": 0
40
+ }
41
+ },
42
+ "required": [
43
+ "state",
44
+ "total"
45
+ ],
46
+ "additionalProperties": false
47
+ },
48
+ "maxItems": 20
49
+ },
50
+ "next_after": {
51
+ "anyOf": [
52
+ {
53
+ "type": "string",
54
+ "minLength": 1,
55
+ "maxLength": 512
56
+ },
57
+ {
58
+ "type": "null"
59
+ }
60
+ ]
61
+ },
62
+ "items": {
63
+ "type": "array",
64
+ "items": {
65
+ "type": "object",
66
+ "properties": {
67
+ "item_id": {
68
+ "type": "string",
69
+ "minLength": 1,
70
+ "maxLength": 512
71
+ },
72
+ "scope_id": {
73
+ "type": "string",
74
+ "minLength": 1,
75
+ "maxLength": 512
76
+ },
77
+ "session_id": {
78
+ "type": "string",
79
+ "minLength": 1,
80
+ "maxLength": 512
81
+ },
82
+ "turn_id": {
83
+ "type": "string",
84
+ "minLength": 1,
85
+ "maxLength": 512
86
+ },
87
+ "decision_id": {
88
+ "type": "string",
89
+ "minLength": 1,
90
+ "maxLength": 512
91
+ },
92
+ "content_hash": {
93
+ "type": "string",
94
+ "minLength": 64,
95
+ "maxLength": 64
96
+ },
97
+ "decision": {
98
+ "type": "object",
99
+ "properties": {
100
+ "decision_id": {
101
+ "type": "string",
102
+ "minLength": 1,
103
+ "maxLength": 256
104
+ },
105
+ "question": {
106
+ "type": "string",
107
+ "minLength": 1,
108
+ "maxLength": 1000
109
+ },
110
+ "choices": {
111
+ "type": "array",
112
+ "items": {
113
+ "type": "object",
114
+ "properties": {
115
+ "choice_id": {
116
+ "type": "string",
117
+ "minLength": 1,
118
+ "maxLength": 256
119
+ },
120
+ "label": {
121
+ "type": "string",
122
+ "minLength": 1,
123
+ "maxLength": 160
124
+ }
125
+ },
126
+ "required": [
127
+ "choice_id",
128
+ "label"
129
+ ],
130
+ "additionalProperties": false
131
+ },
132
+ "maxItems": 8
133
+ },
134
+ "continuation": {
135
+ "type": "object",
136
+ "properties": {
137
+ "version": {
138
+ "type": "number",
139
+ "const": 1
140
+ },
141
+ "gate_kind": {
142
+ "type": "string",
143
+ "enum": [
144
+ "phase_continue",
145
+ "task_authorization",
146
+ "risk_approval",
147
+ "external_input"
148
+ ]
149
+ },
150
+ "phase": {
151
+ "type": "string",
152
+ "minLength": 1,
153
+ "maxLength": 256
154
+ },
155
+ "next_action": {
156
+ "type": "string",
157
+ "minLength": 1,
158
+ "maxLength": 1000
159
+ },
160
+ "evidence_refs": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "object",
164
+ "properties": {
165
+ "evidence_id": {
166
+ "type": "string",
167
+ "minLength": 1,
168
+ "maxLength": 256
169
+ },
170
+ "sha256": {
171
+ "type": "string",
172
+ "pattern": "^[a-f0-9]{64}$"
173
+ }
174
+ },
175
+ "required": [
176
+ "evidence_id",
177
+ "sha256"
178
+ ],
179
+ "additionalProperties": false
180
+ },
181
+ "maxItems": 32
182
+ }
183
+ },
184
+ "required": [
185
+ "version",
186
+ "gate_kind",
187
+ "phase",
188
+ "next_action",
189
+ "evidence_refs"
190
+ ],
191
+ "additionalProperties": false
192
+ }
193
+ },
194
+ "required": [
195
+ "decision_id",
196
+ "question",
197
+ "choices"
198
+ ],
199
+ "additionalProperties": false
200
+ },
201
+ "source_version": {
202
+ "type": "integer",
203
+ "exclusiveMinimum": 0
204
+ },
205
+ "revision": {
206
+ "type": "integer",
207
+ "exclusiveMinimum": 0
208
+ },
209
+ "state": {
210
+ "type": "string",
211
+ "enum": [
212
+ "open",
213
+ "source_missing",
214
+ "source_closed",
215
+ "continued_externally",
216
+ "answer_reserved",
217
+ "answer_uncertain",
218
+ "answer_applied",
219
+ "answer_abandoned"
220
+ ]
221
+ },
222
+ "created_at": {
223
+ "type": "number"
224
+ },
225
+ "updated_at": {
226
+ "type": "number"
227
+ },
228
+ "external_message_id": {
229
+ "anyOf": [
230
+ {
231
+ "type": "string",
232
+ "minLength": 1,
233
+ "maxLength": 512
234
+ },
235
+ {
236
+ "type": "null"
237
+ }
238
+ ]
239
+ }
240
+ },
241
+ "required": [
242
+ "item_id",
243
+ "scope_id",
244
+ "session_id",
245
+ "turn_id",
246
+ "decision_id",
247
+ "content_hash",
248
+ "decision",
249
+ "source_version",
250
+ "revision",
251
+ "state",
252
+ "created_at",
253
+ "updated_at",
254
+ "external_message_id"
255
+ ],
256
+ "additionalProperties": false
257
+ },
258
+ "maxItems": 100
259
+ }
260
+ },
261
+ "required": [
262
+ "schema_version",
263
+ "scope_id",
264
+ "coverage",
265
+ "execution_takeover",
266
+ "counts",
267
+ "next_after",
268
+ "items"
269
+ ],
270
+ "additionalProperties": false
271
+ }