@peasant-labs/schema 0.17.0 → 0.19.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 (28) hide show
  1. package/README.md +4 -0
  2. package/dist/fixtures/session-graph-capability.d.ts +454 -0
  3. package/dist/fixtures/session-graph-capability.js +4 -0
  4. package/dist/fixtures/session-graph.d.ts +7349 -0
  5. package/dist/fixtures/session-graph.js +4 -0
  6. package/dist/fixtures.d.ts +2 -0
  7. package/dist/fixtures.js +2 -0
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.js +227 -39
  10. package/dist/internal/generated/content-capabilities.gen.d.ts +7 -0
  11. package/dist/internal/generated/content-capabilities.gen.js +48 -2
  12. package/dist/internal/generated/contract/zod.gen.d.ts +9558 -1328
  13. package/dist/internal/generated/contract/zod.gen.js +597 -27
  14. package/dist/internal/generated/enums.gen.d.ts +136 -0
  15. package/dist/internal/generated/enums.gen.js +149 -0
  16. package/dist/internal/generated/local-api.d.ts +308 -6
  17. package/dist/internal/generated/metadata-limits.gen.d.ts +1 -0
  18. package/dist/internal/generated/metadata-limits.gen.js +2 -0
  19. package/dist/internal/generated/public-contract.gen.d.ts +2 -2
  20. package/dist/internal/generated/public-contract.gen.js +1 -1
  21. package/dist/internal/generated/session-graph-capability-fixtures.gen.d.ts +454 -0
  22. package/dist/internal/generated/session-graph-capability-fixtures.gen.js +570 -0
  23. package/dist/internal/generated/session-graph-fixtures.gen.d.ts +7349 -0
  24. package/dist/internal/generated/session-graph-fixtures.gen.js +8052 -0
  25. package/dist/internal/generated/versions.gen.d.ts +4 -4
  26. package/dist/internal/generated/versions.gen.js +4 -4
  27. package/dist/internal/generated/village-api.d.ts +512 -8
  28. package/package.json +9 -1
package/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # @peasant-labs/schema
2
2
 
3
+ Read contracts and validation boundaries:
4
+ [grouped reads](../docs/grouped-read-contract.md) and
5
+ [optional versus required public references](../docs/public-reference-validation.md).
6
+
3
7
  Use this package when a TypeScript application needs typed, always-in-sync
4
8
  access to the peasant-labs wire contract: the same domain types, closed-set
5
9
  enums, and runtime validation Go services already produce and enforce,
@@ -0,0 +1,454 @@
1
+ export declare function sessionGraphCapabilityFixtures(): {
2
+ readonly requiredNames: {
3
+ readonly derivation: readonly ["legacy-empty", "root-null", "usage-null", "model-only", "source-ref-only", "count-only-zero", "count-only-positive", "root-only", "purpose-only-interaction", "purpose-only-delegated", "purpose-only-helper", "purpose-only-unknown", "relationship-only", "main-deeper-provenance", "folded-call-provenance", "folded-result-provenance", "earlier-only", "earlier-nested-tool-native-usage-model", "navigation-only-read"];
4
+ readonly reader: readonly ["advertisement-omitted", "advertisement-empty", "advertisement-null", "advertisement-unknown-duplicate-unordered", "advertisement-future-suffix"];
5
+ readonly producer: readonly ["producer-canonical-four", "producer-unsorted-four", "producer-duplicate", "producer-unknown"];
6
+ };
7
+ readonly derivation: {
8
+ readonly cases: readonly [{
9
+ readonly name: "legacy-empty";
10
+ readonly classification: "must-pass";
11
+ readonly provenance: {
12
+ readonly source: "requirement";
13
+ readonly ref: "section-12.4";
14
+ };
15
+ readonly mutation: {
16
+ readonly description: "omits optional evidence";
17
+ };
18
+ readonly input: {
19
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[]}";
20
+ };
21
+ readonly expected: {};
22
+ }, {
23
+ readonly name: "root-null";
24
+ readonly classification: "must-pass";
25
+ readonly provenance: {
26
+ readonly source: "boundary";
27
+ readonly ref: "Go nil parity";
28
+ };
29
+ readonly mutation: {
30
+ readonly description: "decodes null root as absent";
31
+ };
32
+ readonly input: {
33
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"rootSessionId\":null,\"turns\":[]}";
34
+ };
35
+ readonly expected: {};
36
+ }, {
37
+ readonly name: "usage-null";
38
+ readonly classification: "must-pass";
39
+ readonly provenance: {
40
+ readonly source: "boundary";
41
+ readonly ref: "Go nil parity";
42
+ };
43
+ readonly mutation: {
44
+ readonly description: "decodes null usage as absent";
45
+ };
46
+ readonly input: {
47
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":1,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[{\"index\":0,\"role\":\"assistant\",\"content\":\"\",\"depth\":0,\"timestamp\":\"2020-01-01T00:00:00Z\",\"usage\":null}]}";
48
+ };
49
+ readonly expected: {};
50
+ }, {
51
+ readonly name: "model-only";
52
+ readonly classification: "must-pass";
53
+ readonly provenance: {
54
+ readonly source: "requirement";
55
+ readonly ref: "section-12.4";
56
+ };
57
+ readonly mutation: {
58
+ readonly description: "adds model seed";
59
+ };
60
+ readonly input: {
61
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"model\":\"seed/model\",\"turns\":[]}";
62
+ };
63
+ readonly expected: {};
64
+ }, {
65
+ readonly name: "source-ref-only";
66
+ readonly classification: "must-pass";
67
+ readonly provenance: {
68
+ readonly source: "requirement";
69
+ readonly ref: "section-12.4";
70
+ };
71
+ readonly mutation: {
72
+ readonly description: "adds source ref";
73
+ };
74
+ readonly input: {
75
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":1,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[{\"index\":0,\"role\":\"user\",\"sourceEntryRef\":\"e1\",\"content\":\"\",\"depth\":0,\"timestamp\":\"2020-01-01T00:00:00Z\"}]}";
76
+ };
77
+ readonly expected: {};
78
+ }, {
79
+ readonly name: "count-only-zero";
80
+ readonly classification: "must-pass";
81
+ readonly provenance: {
82
+ readonly source: "requirement";
83
+ readonly ref: "section-12.4";
84
+ };
85
+ readonly mutation: {
86
+ readonly description: "measures zero submissions";
87
+ };
88
+ readonly input: {
89
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"inputSubmissionCount\":0,\"turns\":[]}";
90
+ };
91
+ readonly expected: {
92
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
93
+ };
94
+ }, {
95
+ readonly name: "count-only-positive";
96
+ readonly classification: "must-pass";
97
+ readonly provenance: {
98
+ readonly source: "requirement";
99
+ readonly ref: "section-12.4";
100
+ };
101
+ readonly mutation: {
102
+ readonly description: "measures positive submissions";
103
+ };
104
+ readonly input: {
105
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"inputSubmissionCount\":1,\"turns\":[]}";
106
+ };
107
+ readonly expected: {
108
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
109
+ };
110
+ }, {
111
+ readonly name: "root-only";
112
+ readonly classification: "must-pass";
113
+ readonly provenance: {
114
+ readonly source: "requirement";
115
+ readonly ref: "section-12.4";
116
+ };
117
+ readonly mutation: {
118
+ readonly description: "adds root";
119
+ };
120
+ readonly input: {
121
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"rootSessionId\":\"00000000-0000-4000-8000-000000000001\",\"turns\":[]}";
122
+ };
123
+ readonly expected: {
124
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
125
+ };
126
+ }, {
127
+ readonly name: "purpose-only-interaction";
128
+ readonly classification: "must-pass";
129
+ readonly provenance: {
130
+ readonly source: "requirement";
131
+ readonly ref: "section-12.4";
132
+ };
133
+ readonly mutation: {
134
+ readonly description: "adds interaction purpose";
135
+ };
136
+ readonly input: {
137
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"purpose\":\"interaction\",\"turns\":[]}";
138
+ };
139
+ readonly expected: {
140
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
141
+ };
142
+ }, {
143
+ readonly name: "purpose-only-delegated";
144
+ readonly classification: "must-pass";
145
+ readonly provenance: {
146
+ readonly source: "requirement";
147
+ readonly ref: "section-12.4";
148
+ };
149
+ readonly mutation: {
150
+ readonly description: "adds delegated purpose";
151
+ };
152
+ readonly input: {
153
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"purpose\":\"delegated_work\",\"turns\":[]}";
154
+ };
155
+ readonly expected: {
156
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
157
+ };
158
+ }, {
159
+ readonly name: "purpose-only-helper";
160
+ readonly classification: "must-pass";
161
+ readonly provenance: {
162
+ readonly source: "requirement";
163
+ readonly ref: "section-12.4";
164
+ };
165
+ readonly mutation: {
166
+ readonly description: "adds helper purpose";
167
+ };
168
+ readonly input: {
169
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"purpose\":\"helper_review\",\"turns\":[]}";
170
+ };
171
+ readonly expected: {
172
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
173
+ };
174
+ }, {
175
+ readonly name: "purpose-only-unknown";
176
+ readonly classification: "must-pass";
177
+ readonly provenance: {
178
+ readonly source: "requirement";
179
+ readonly ref: "section-12.4";
180
+ };
181
+ readonly mutation: {
182
+ readonly description: "adds unknown purpose";
183
+ };
184
+ readonly input: {
185
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"purpose\":\"unknown\",\"turns\":[]}";
186
+ };
187
+ readonly expected: {
188
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
189
+ };
190
+ }, {
191
+ readonly name: "relationship-only";
192
+ readonly classification: "must-pass";
193
+ readonly provenance: {
194
+ readonly source: "requirement";
195
+ readonly ref: "section-12.4";
196
+ };
197
+ readonly mutation: {
198
+ readonly description: "adds relationship";
199
+ };
200
+ readonly input: {
201
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"relationships\":[{\"kind\":\"started_by\",\"targetState\":\"unknown\",\"evidence\":\"unknown\"}],\"turns\":[]}";
202
+ };
203
+ readonly expected: {
204
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
205
+ };
206
+ }, {
207
+ readonly name: "main-deeper-provenance";
208
+ readonly classification: "must-pass";
209
+ readonly provenance: {
210
+ readonly source: "requirement";
211
+ readonly ref: "section-11";
212
+ };
213
+ readonly mutation: {
214
+ readonly description: "adds nonroot provenance";
215
+ };
216
+ readonly input: {
217
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":2,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[{\"index\":0,\"role\":\"assistant\",\"content\":\"\",\"depth\":0,\"timestamp\":\"2020-01-01T00:00:00Z\"},{\"index\":1,\"role\":\"assistant\",\"depth\":1,\"parentIndex\":0,\"provenance\":{\"origin\":\"unknown\",\"actor\":\"unknown\",\"delivery\":\"unknown\",\"ownership\":\"uncertain\",\"evidence\":\"unknown\",\"inputModality\":\"unknown\"},\"content\":\"\",\"timestamp\":\"2020-01-01T00:00:00Z\"}]}";
218
+ };
219
+ readonly expected: {
220
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
221
+ };
222
+ }, {
223
+ readonly name: "folded-call-provenance";
224
+ readonly classification: "must-pass";
225
+ readonly provenance: {
226
+ readonly source: "requirement";
227
+ readonly ref: "section-11";
228
+ };
229
+ readonly mutation: {
230
+ readonly description: "adds call provenance";
231
+ };
232
+ readonly input: {
233
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":1,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[{\"index\":0,\"role\":\"assistant\",\"toolCalls\":[{\"id\":\"t1\",\"callProvenance\":{\"origin\":\"unknown\",\"actor\":\"unknown\",\"delivery\":\"unknown\",\"ownership\":\"uncertain\",\"evidence\":\"unknown\",\"inputModality\":\"unknown\"},\"name\":\"\",\"arguments\":\"\",\"result\":\"\"}],\"content\":\"\",\"depth\":0,\"timestamp\":\"2020-01-01T00:00:00Z\"}]}";
234
+ };
235
+ readonly expected: {
236
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
237
+ };
238
+ }, {
239
+ readonly name: "folded-result-provenance";
240
+ readonly classification: "must-pass";
241
+ readonly provenance: {
242
+ readonly source: "requirement";
243
+ readonly ref: "section-11";
244
+ };
245
+ readonly mutation: {
246
+ readonly description: "adds result provenance";
247
+ };
248
+ readonly input: {
249
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":1,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[{\"index\":0,\"role\":\"assistant\",\"toolCalls\":[{\"id\":\"t1\",\"resultProvenance\":{\"origin\":\"unknown\",\"actor\":\"unknown\",\"delivery\":\"unknown\",\"ownership\":\"uncertain\",\"evidence\":\"unknown\",\"inputModality\":\"unknown\"},\"name\":\"\",\"arguments\":\"\",\"result\":\"\"}],\"content\":\"\",\"depth\":0,\"timestamp\":\"2020-01-01T00:00:00Z\"}]}";
250
+ };
251
+ readonly expected: {
252
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
253
+ };
254
+ }, {
255
+ readonly name: "earlier-only";
256
+ readonly classification: "must-pass";
257
+ readonly provenance: {
258
+ readonly source: "requirement";
259
+ readonly ref: "section-12.4";
260
+ };
261
+ readonly mutation: {
262
+ readonly description: "adds empty retained section";
263
+ };
264
+ readonly input: {
265
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[],\"earlierHistory\":[{\"state\":\"uncertain_migrated\",\"turns\":[]}]}";
266
+ };
267
+ readonly expected: {
268
+ readonly capabilities: readonly ["session_graph_provenance_v1"];
269
+ };
270
+ }, {
271
+ readonly name: "earlier-nested-tool-native-usage-model";
272
+ readonly classification: "must-pass";
273
+ readonly provenance: {
274
+ readonly source: "requirement";
275
+ readonly ref: "section-12.4";
276
+ };
277
+ readonly mutation: {
278
+ readonly description: "combines valid Pi earlier evidence";
279
+ };
280
+ readonly input: {
281
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"pi\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[],\"earlierHistory\":[{\"state\":\"uncertain_migrated\",\"turns\":[{\"index\":0,\"role\":\"assistant\",\"content\":\"\",\"depth\":0,\"timestamp\":\"2020-01-01T00:00:00Z\"},{\"index\":1,\"role\":\"assistant\",\"depth\":1,\"parentIndex\":0,\"observedModel\":\"provider/model\",\"provenance\":{\"origin\":\"unknown\",\"actor\":\"unknown\",\"delivery\":\"unknown\",\"ownership\":\"uncertain\",\"evidence\":\"unknown\",\"inputModality\":\"unknown\"},\"sourceEntryRef\":\"e_assistant\",\"usage\":{\"ownerId\":\"u_assistant\",\"sourceEntryRef\":\"e_assistant\",\"scope\":\"assistant\",\"completeness\":\"unknown\"},\"toolCalls\":[{\"id\":\"t1\",\"resultEntryRef\":\"e_result\",\"usage\":{\"ownerId\":\"u_tool\",\"sourceEntryRef\":\"e_result\",\"scope\":\"tool\",\"completeness\":\"unknown\"},\"name\":\"\",\"arguments\":\"\",\"result\":\"\"}],\"content\":\"\",\"timestamp\":\"2020-01-01T00:00:00Z\"}],\"nativeMetadata\":[{\"id\":\"n1\",\"kind\":\"pi.toolresult.details\",\"source\":{\"entryRef\":\"e_result\",\"sourceType\":\"pi.message\",\"messageRole\":\"toolResult\"},\"attachment\":{\"turnIndex\":1,\"toolCallId\":\"t1\"},\"data\":{}}]}]}";
282
+ };
283
+ readonly expected: {
284
+ readonly capabilities: readonly ["detailed_usage_v1", "native_metadata_v1", "observed_model_v1", "session_graph_provenance_v1"];
285
+ };
286
+ }, {
287
+ readonly name: "navigation-only-read";
288
+ readonly classification: "must-pass";
289
+ readonly provenance: {
290
+ readonly source: "requirement";
291
+ readonly ref: "section-12.4";
292
+ };
293
+ readonly mutation: {
294
+ readonly description: "separates read metadata from durable detail";
295
+ };
296
+ readonly input: {
297
+ readonly detailJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[]}";
298
+ readonly readJSON: "{\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"id\":\"child\",\"harness\":\"claude-code\",\"turns\":[],\"relationshipNavigation\":[]}";
299
+ readonly rejectedDurableJSON: "{\"id\":\"fixture-session\",\"startTime\":\"2020-01-01T00:00:00Z\",\"endTime\":\"2020-01-01T00:00:00Z\",\"durationMins\":0,\"totalTokens\":0,\"tokensIn\":0,\"tokensOut\":0,\"turnCount\":0,\"toolCallCount\":0,\"harness\":\"claude-code\",\"outcome\":\"resolved\",\"sessionOrigin\":\"unknown\",\"turns\":[],\"relationshipNavigation\":[]}";
300
+ };
301
+ readonly expected: {};
302
+ }];
303
+ };
304
+ readonly reader: {
305
+ readonly cases: readonly [{
306
+ readonly name: "advertisement-omitted";
307
+ readonly classification: "must-pass";
308
+ readonly provenance: {
309
+ readonly source: "requirement";
310
+ readonly ref: "section-12.4";
311
+ };
312
+ readonly mutation: {
313
+ readonly description: "omits list";
314
+ };
315
+ readonly input: {
316
+ readonly json: "{}";
317
+ };
318
+ readonly expected: {
319
+ readonly missing: readonly ["session_graph_provenance_v1"];
320
+ };
321
+ }, {
322
+ readonly name: "advertisement-empty";
323
+ readonly classification: "must-pass";
324
+ readonly provenance: {
325
+ readonly source: "requirement";
326
+ readonly ref: "section-12.4";
327
+ };
328
+ readonly mutation: {
329
+ readonly description: "supplies empty list";
330
+ };
331
+ readonly input: {
332
+ readonly json: "{\"contentCapabilities\":[]}";
333
+ };
334
+ readonly expected: {
335
+ readonly missing: readonly ["session_graph_provenance_v1"];
336
+ };
337
+ }, {
338
+ readonly name: "advertisement-null";
339
+ readonly classification: "must-fail";
340
+ readonly provenance: {
341
+ readonly source: "boundary";
342
+ readonly ref: "section-12.4";
343
+ };
344
+ readonly mutation: {
345
+ readonly description: "supplies null list";
346
+ };
347
+ readonly input: {
348
+ readonly json: "{\"contentCapabilities\":null}";
349
+ };
350
+ readonly expected: {
351
+ readonly errorContains: "contentCapabilities is null";
352
+ };
353
+ }, {
354
+ readonly name: "advertisement-unknown-duplicate-unordered";
355
+ readonly classification: "must-pass";
356
+ readonly provenance: {
357
+ readonly source: "requirement";
358
+ readonly ref: "section-12.4";
359
+ };
360
+ readonly mutation: {
361
+ readonly description: "combines tolerated reader forms";
362
+ };
363
+ readonly input: {
364
+ readonly json: "{\"contentCapabilities\":[\"session_graph_provenance_v1\",\"future_v9\",\"observed_model_v1\",\"session_graph_provenance_v1\"]}";
365
+ };
366
+ readonly expected: {
367
+ readonly known: readonly ["observed_model_v1", "session_graph_provenance_v1"];
368
+ };
369
+ }, {
370
+ readonly name: "advertisement-future-suffix";
371
+ readonly classification: "must-pass";
372
+ readonly provenance: {
373
+ readonly source: "boundary";
374
+ readonly ref: "section-12.4";
375
+ };
376
+ readonly mutation: {
377
+ readonly description: "substitutes opaque v2 suffix";
378
+ };
379
+ readonly input: {
380
+ readonly json: "{\"contentCapabilities\":[\"session_graph_provenance_v2\"]}";
381
+ };
382
+ readonly expected: {
383
+ readonly missing: readonly ["session_graph_provenance_v1"];
384
+ };
385
+ }];
386
+ };
387
+ readonly producer: {
388
+ readonly cases: readonly [{
389
+ readonly name: "producer-canonical-four";
390
+ readonly classification: "must-pass";
391
+ readonly provenance: {
392
+ readonly source: "requirement";
393
+ readonly ref: "section-12.4";
394
+ };
395
+ readonly mutation: {
396
+ readonly description: "emits sorted inventory";
397
+ };
398
+ readonly input: {
399
+ readonly tokens: readonly ["detailed_usage_v1", "native_metadata_v1", "observed_model_v1", "session_graph_provenance_v1"];
400
+ };
401
+ readonly expected: {
402
+ readonly accepted: true;
403
+ };
404
+ }, {
405
+ readonly name: "producer-unsorted-four";
406
+ readonly classification: "must-fail";
407
+ readonly provenance: {
408
+ readonly source: "boundary";
409
+ readonly ref: "section-12.4";
410
+ };
411
+ readonly mutation: {
412
+ readonly description: "swaps sorted tokens";
413
+ };
414
+ readonly input: {
415
+ readonly tokens: readonly ["native_metadata_v1", "detailed_usage_v1", "observed_model_v1", "session_graph_provenance_v1"];
416
+ };
417
+ readonly expected: {
418
+ readonly errorContains: "canonical lexicographic order";
419
+ };
420
+ }, {
421
+ readonly name: "producer-duplicate";
422
+ readonly classification: "must-fail";
423
+ readonly provenance: {
424
+ readonly source: "boundary";
425
+ readonly ref: "section-12.4";
426
+ };
427
+ readonly mutation: {
428
+ readonly description: "duplicates graph token";
429
+ };
430
+ readonly input: {
431
+ readonly tokens: readonly ["session_graph_provenance_v1", "session_graph_provenance_v1"];
432
+ };
433
+ readonly expected: {
434
+ readonly errorContains: "duplicated";
435
+ };
436
+ }, {
437
+ readonly name: "producer-unknown";
438
+ readonly classification: "must-fail";
439
+ readonly provenance: {
440
+ readonly source: "boundary";
441
+ readonly ref: "section-12.4";
442
+ };
443
+ readonly mutation: {
444
+ readonly description: "adds unknown token";
445
+ };
446
+ readonly input: {
447
+ readonly tokens: readonly ["future_v9"];
448
+ };
449
+ readonly expected: {
450
+ readonly errorContains: "unknown token";
451
+ };
452
+ }];
453
+ };
454
+ };
@@ -0,0 +1,4 @@
1
+ import { canonicalSessionGraphCapabilityFixtures } from "../internal/generated/session-graph-capability-fixtures.gen.js";
2
+ export function sessionGraphCapabilityFixtures() {
3
+ return structuredClone(canonicalSessionGraphCapabilityFixtures);
4
+ }