@oneharness/sdk 0.6.7 → 0.6.9

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.
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { ActionEvent, BatchReport, FailureKind, FallThrough, FallbackReport, OutputFormat, RunReport, RunResult, SessionReport, Status, TimingSource, ToolCallStatus, Usage } from "./contracts.js";
2
+ import type { ActionEvent, BatchReport, ExecutionTelemetry, FailureKind, FallThrough, FallbackReport, OutputFormat, RunReport, RunResult, SessionReport, Status, TimingSource, ToolCallStatus, Usage } from "./contracts.js";
3
3
  import type { DetectInfo, DetectReport } from "./detection.js";
4
4
  import type { HistoryRecord } from "./history.js";
5
5
  import type { HistoryLine } from "./history-line.js";
@@ -20,6 +20,7 @@ export declare const BatchReportSchema: z.ZodType<BatchReport>;
20
20
  export declare const BatchStrategySchema: z.ZodType<BatchStrategy>;
21
21
  export declare const DetectInfoSchema: z.ZodType<DetectInfo>;
22
22
  export declare const DetectReportSchema: z.ZodType<DetectReport>;
23
+ export declare const ExecutionTelemetrySchema: z.ZodType<ExecutionTelemetry>;
23
24
  export declare const FailureKindSchema: z.ZodType<FailureKind>;
24
25
  export declare const FallThroughSchema: z.ZodType<FallThrough>;
25
26
  export declare const FallbackReportSchema: z.ZodType<FallbackReport>;
@@ -38,6 +38,43 @@ export const DetectReportSchema = z.looseObject({
38
38
  detected: z.array(z.lazy(() => DetectInfoSchema)).refine((value) => value !== undefined, { message: "Required" }),
39
39
  schema_version: z.string().refine((value) => value !== undefined, { message: "Required" }),
40
40
  });
41
+ export const ExecutionTelemetrySchema = z.union([
42
+ z.looseObject({
43
+ finished_at: z
44
+ .union([
45
+ z
46
+ .string()
47
+ .min(24)
48
+ .regex(new RegExp("^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])T([01]\\d|2[0-3]):[0-5]\\d:([0-5]\\d|60)\\.\\d{3}Z$", "u"))
49
+ .refine((value) => [...value].length <= 24, { message: "Too long: expected at most 24 characters" }),
50
+ z.null(),
51
+ ])
52
+ .refine((value) => value !== undefined, { message: "Required" }),
53
+ model_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
54
+ source: z.literal("provider_measured").refine((value) => value !== undefined, { message: "Required" }),
55
+ started_at: z
56
+ .string()
57
+ .min(24)
58
+ .regex(new RegExp("^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])T([01]\\d|2[0-3]):[0-5]\\d:([0-5]\\d|60)\\.\\d{3}Z$", "u"))
59
+ .refine((value) => [...value].length <= 24, { message: "Too long: expected at most 24 characters" })
60
+ .refine((value) => value !== undefined, { message: "Required" }),
61
+ time_to_first_token_ms: z
62
+ .union([z.int().gte(0), z.null()])
63
+ .refine((value) => value !== undefined, { message: "Required" }),
64
+ tool_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
65
+ }),
66
+ z.looseObject({
67
+ source: z.literal("partial_invocation").refine((value) => value !== undefined, { message: "Required" }),
68
+ started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
69
+ }),
70
+ z.looseObject({
71
+ source: z.literal("stdout_observed").refine((value) => value !== undefined, { message: "Required" }),
72
+ tool_ms: z
73
+ .int()
74
+ .gte(0)
75
+ .refine((value) => value !== undefined, { message: "Required" }),
76
+ }),
77
+ ]);
41
78
  export const FailureKindSchema = z.union([
42
79
  z.literal("auth"),
43
80
  z.literal("rate_limit"),
@@ -91,7 +128,7 @@ export const HistoryEventLineSchema = z.union([
91
128
  .refine((value) => [...value].length <= 36, { message: "Too long: expected at most 36 characters" })
92
129
  .refine((value) => value !== undefined, { message: "Required" }),
93
130
  schema_version: z
94
- .union([z.literal("1.2"), z.literal("1.3")])
131
+ .union([z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
95
132
  .refine((value) => value !== undefined, { message: "Required" }),
96
133
  variant: z.union([z.string(), z.null()]).optional(),
97
134
  }),
@@ -141,7 +178,7 @@ export const HistoryLineSchema = z.union([
141
178
  .refine((value) => [...value].length <= 36, { message: "Too long: expected at most 36 characters" })
142
179
  .refine((value) => value !== undefined, { message: "Required" }),
143
180
  schema_version: z
144
- .union([z.literal("1.2"), z.literal("1.3")])
181
+ .union([z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
145
182
  .refine((value) => value !== undefined, { message: "Required" }),
146
183
  type: z.literal("event").refine((value) => value !== undefined, { message: "Required" }),
147
184
  variant: z.union([z.string(), z.null()]).optional(),
@@ -167,7 +204,7 @@ export const HistoryLineSchema = z.union([
167
204
  variant: z.union([z.string(), z.null()]).optional(),
168
205
  }),
169
206
  ]),
170
- z.intersection(z.union([
207
+ z.intersection(z.intersection(z.union([
171
208
  z.looseObject({
172
209
  duration_ms: z
173
210
  .int()
@@ -178,7 +215,9 @@ export const HistoryLineSchema = z.union([
178
215
  z
179
216
  .string()
180
217
  .min(1)
181
- .refine((value) => [...value].length <= 2048, { message: "Too long: expected at most 2048 characters" }),
218
+ .refine((value) => [...value].length <= 2048, {
219
+ message: "Too long: expected at most 2048 characters",
220
+ }),
182
221
  z.null(),
183
222
  ])
184
223
  .optional(),
@@ -209,7 +248,7 @@ export const HistoryLineSchema = z.union([
209
248
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
210
249
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
211
250
  schema_version: z
212
- .union([z.literal("1.0"), z.literal("1.1"), z.literal("1.2"), z.literal("1.3")])
251
+ .union([z.literal("1.0"), z.literal("1.1"), z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
213
252
  .refine((value) => value !== undefined, { message: "Required" }),
214
253
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
215
254
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -242,7 +281,9 @@ export const HistoryLineSchema = z.union([
242
281
  z
243
282
  .string()
244
283
  .min(1)
245
- .refine((value) => [...value].length <= 2048, { message: "Too long: expected at most 2048 characters" }),
284
+ .refine((value) => [...value].length <= 2048, {
285
+ message: "Too long: expected at most 2048 characters",
286
+ }),
246
287
  z.null(),
247
288
  ])
248
289
  .optional(),
@@ -273,7 +314,7 @@ export const HistoryLineSchema = z.union([
273
314
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
274
315
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
275
316
  schema_version: z
276
- .union([z.literal("1.0"), z.literal("1.1"), z.literal("1.2"), z.literal("1.3")])
317
+ .union([z.literal("1.0"), z.literal("1.1"), z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
277
318
  .refine((value) => value !== undefined, { message: "Required" }),
278
319
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
279
320
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -282,7 +323,13 @@ export const HistoryLineSchema = z.union([
282
323
  .min(1)
283
324
  .refine((value) => value !== undefined, { message: "Required" }),
284
325
  status: z
285
- .union([z.literal("timeout"), z.literal("spawn-error"), z.literal("skipped"), z.literal("planned")])
326
+ .union([
327
+ z.literal("timeout"),
328
+ z.literal("cancelled"),
329
+ z.literal("spawn-error"),
330
+ z.literal("skipped"),
331
+ z.literal("planned"),
332
+ ])
286
333
  .refine((value) => value !== undefined, { message: "Required" }),
287
334
  text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
288
335
  text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -306,7 +353,9 @@ export const HistoryLineSchema = z.union([
306
353
  z
307
354
  .string()
308
355
  .min(1)
309
- .refine((value) => [...value].length <= 2048, { message: "Too long: expected at most 2048 characters" }),
356
+ .refine((value) => [...value].length <= 2048, {
357
+ message: "Too long: expected at most 2048 characters",
358
+ }),
310
359
  z.null(),
311
360
  ])
312
361
  .optional(),
@@ -337,7 +386,7 @@ export const HistoryLineSchema = z.union([
337
386
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
338
387
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
339
388
  schema_version: z
340
- .union([z.literal("1.2"), z.literal("1.3")])
389
+ .union([z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
341
390
  .refine((value) => value !== undefined, { message: "Required" }),
342
391
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
343
392
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -361,7 +410,9 @@ export const HistoryLineSchema = z.union([
361
410
  z
362
411
  .string()
363
412
  .min(1)
364
- .refine((value) => [...value].length <= 2048, { message: "Too long: expected at most 2048 characters" }),
413
+ .refine((value) => [...value].length <= 2048, {
414
+ message: "Too long: expected at most 2048 characters",
415
+ }),
365
416
  z.null(),
366
417
  ])
367
418
  .optional(),
@@ -389,13 +440,19 @@ export const HistoryLineSchema = z.union([
389
440
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
390
441
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
391
442
  schema_version: z
392
- .union([z.literal("1.0"), z.literal("1.1"), z.literal("1.2"), z.literal("1.3")])
443
+ .union([z.literal("1.0"), z.literal("1.1"), z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
393
444
  .refine((value) => value !== undefined, { message: "Required" }),
394
445
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
395
446
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
396
447
  started_at: z.never().optional(),
397
448
  status: z
398
- .union([z.literal("nonzero"), z.literal("timeout"), z.literal("spawn-error"), z.literal("skipped")])
449
+ .union([
450
+ z.literal("nonzero"),
451
+ z.literal("timeout"),
452
+ z.literal("cancelled"),
453
+ z.literal("spawn-error"),
454
+ z.literal("skipped"),
455
+ ])
399
456
  .refine((value) => value !== undefined, { message: "Required" }),
400
457
  text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
401
458
  text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -416,7 +473,9 @@ export const HistoryLineSchema = z.union([
416
473
  z
417
474
  .string()
418
475
  .min(1)
419
- .refine((value) => [...value].length <= 2048, { message: "Too long: expected at most 2048 characters" }),
476
+ .refine((value) => [...value].length <= 2048, {
477
+ message: "Too long: expected at most 2048 characters",
478
+ }),
420
479
  z.null(),
421
480
  ])
422
481
  .optional(),
@@ -443,7 +502,9 @@ export const HistoryLineSchema = z.union([
443
502
  .refine((value) => value !== undefined, { message: "Required" }),
444
503
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
445
504
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
446
- schema_version: z.literal("1.3").refine((value) => value !== undefined, { message: "Required" }),
505
+ schema_version: z
506
+ .union([z.literal("1.3"), z.literal("1.4")])
507
+ .refine((value) => value !== undefined, { message: "Required" }),
447
508
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
448
509
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
449
510
  started_at: z
@@ -451,7 +512,13 @@ export const HistoryLineSchema = z.union([
451
512
  .min(1)
452
513
  .refine((value) => value !== undefined, { message: "Required" }),
453
514
  status: z
454
- .union([z.literal("nonzero"), z.literal("timeout"), z.literal("spawn-error"), z.literal("skipped")])
515
+ .union([
516
+ z.literal("nonzero"),
517
+ z.literal("timeout"),
518
+ z.literal("cancelled"),
519
+ z.literal("spawn-error"),
520
+ z.literal("skipped"),
521
+ ])
455
522
  .refine((value) => value !== undefined, { message: "Required" }),
456
523
  text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
457
524
  text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -471,7 +538,9 @@ export const HistoryLineSchema = z.union([
471
538
  z
472
539
  .string()
473
540
  .min(1)
474
- .refine((value) => [...value].length <= 2048, { message: "Too long: expected at most 2048 characters" }),
541
+ .refine((value) => [...value].length <= 2048, {
542
+ message: "Too long: expected at most 2048 characters",
543
+ }),
475
544
  z.null(),
476
545
  ])
477
546
  .optional(),
@@ -499,7 +568,7 @@ export const HistoryLineSchema = z.union([
499
568
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
500
569
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
501
570
  schema_version: z
502
- .union([z.literal("1.0"), z.literal("1.1"), z.literal("1.2"), z.literal("1.3")])
571
+ .union([z.literal("1.0"), z.literal("1.1"), z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
503
572
  .refine((value) => value !== undefined, { message: "Required" }),
504
573
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
505
574
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -522,17 +591,39 @@ export const HistoryLineSchema = z.union([
522
591
  }),
523
592
  z.intersection(z.looseObject({
524
593
  error: z.string().refine((value) => value !== undefined, { message: "Required" }),
525
- schema_version: z.literal("1.3").optional(),
594
+ schema_version: z.union([z.literal("1.3"), z.literal("1.4")]).optional(),
526
595
  }), z.union([
527
596
  z.looseObject({
528
597
  status: z
529
- .union([z.literal("nonzero"), z.literal("timeout"), z.literal("spawn-error"), z.literal("skipped")])
598
+ .union([
599
+ z.literal("nonzero"),
600
+ z.literal("timeout"),
601
+ z.literal("cancelled"),
602
+ z.literal("spawn-error"),
603
+ z.literal("skipped"),
604
+ ])
530
605
  .optional(),
531
606
  }),
532
607
  z.looseObject({
533
608
  failure_kind: z.literal("tool_deferred").refine((value) => value !== undefined, { message: "Required" }),
534
609
  }),
535
610
  ])),
611
+ ])), z.union([
612
+ z.looseObject({
613
+ status: z
614
+ .union([
615
+ z.literal("ok"),
616
+ z.literal("nonzero"),
617
+ z.literal("timeout"),
618
+ z.literal("spawn-error"),
619
+ z.literal("skipped"),
620
+ z.literal("planned"),
621
+ ])
622
+ .optional(),
623
+ }),
624
+ z.looseObject({
625
+ schema_version: z.literal("1.4").optional(),
626
+ }),
536
627
  ])),
537
628
  ]);
538
629
  export const HistoryListSchema = z.array(z.lazy(() => HistorySessionSummarySchema));
@@ -562,7 +653,7 @@ export const HistoryLookupBySessionSchema = z.strictObject({
562
653
  .min(1)
563
654
  .refine((value) => value !== undefined, { message: "Required" }),
564
655
  });
565
- export const HistoryRecordSchema = z.intersection(z.union([
656
+ export const HistoryRecordSchema = z.intersection(z.intersection(z.union([
566
657
  z.looseObject({
567
658
  duration_ms: z
568
659
  .int()
@@ -660,7 +751,7 @@ export const HistoryRecordSchema = z.intersection(z.union([
660
751
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
661
752
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
662
753
  schema_version: z
663
- .union([z.literal("1.2"), z.literal("1.3")])
754
+ .union([z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
664
755
  .refine((value) => value !== undefined, { message: "Required" }),
665
756
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
666
757
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -800,7 +891,9 @@ export const HistoryRecordSchema = z.intersection(z.union([
800
891
  variant: z.union([z.string(), z.null()]).optional(),
801
892
  }),
802
893
  z.looseObject({
803
- duration_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
894
+ duration_ms: z
895
+ .union([z.int().gte(0), z.null()])
896
+ .refine((value) => value !== undefined, { message: "Required" }),
804
897
  error: z
805
898
  .union([
806
899
  z
@@ -854,7 +947,7 @@ export const HistoryRecordSchema = z.intersection(z.union([
854
947
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
855
948
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
856
949
  schema_version: z
857
- .union([z.literal("1.2"), z.literal("1.3")])
950
+ .union([z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
858
951
  .refine((value) => value !== undefined, { message: "Required" }),
859
952
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
860
953
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -914,7 +1007,7 @@ export const HistoryRecordSchema = z.intersection(z.union([
914
1007
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
915
1008
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
916
1009
  schema_version: z
917
- .union([z.literal("1.2"), z.literal("1.3")])
1010
+ .union([z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
918
1011
  .refine((value) => value !== undefined, { message: "Required" }),
919
1012
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
920
1013
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -929,7 +1022,9 @@ export const HistoryRecordSchema = z.intersection(z.union([
929
1022
  variant: z.union([z.string(), z.null()]).optional(),
930
1023
  }),
931
1024
  z.looseObject({
932
- duration_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1025
+ duration_ms: z
1026
+ .union([z.int().gte(0), z.null()])
1027
+ .refine((value) => value !== undefined, { message: "Required" }),
933
1028
  error: z
934
1029
  .union([
935
1030
  z
@@ -966,13 +1061,19 @@ export const HistoryRecordSchema = z.intersection(z.union([
966
1061
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
967
1062
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
968
1063
  schema_version: z
969
- .union([z.literal("1.2"), z.literal("1.3")])
1064
+ .union([z.literal("1.2"), z.literal("1.3"), z.literal("1.4")])
970
1065
  .refine((value) => value !== undefined, { message: "Required" }),
971
1066
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
972
1067
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
973
1068
  started_at: z.never().optional(),
974
1069
  status: z
975
- .union([z.literal("nonzero"), z.literal("timeout"), z.literal("spawn-error"), z.literal("skipped")])
1070
+ .union([
1071
+ z.literal("nonzero"),
1072
+ z.literal("timeout"),
1073
+ z.literal("cancelled"),
1074
+ z.literal("spawn-error"),
1075
+ z.literal("skipped"),
1076
+ ])
976
1077
  .refine((value) => value !== undefined, { message: "Required" }),
977
1078
  text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
978
1079
  text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -1022,7 +1123,9 @@ export const HistoryRecordSchema = z.intersection(z.union([
1022
1123
  .refine((value) => value !== undefined, { message: "Required" }),
1023
1124
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
1024
1125
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
1025
- schema_version: z.literal("1.3").refine((value) => value !== undefined, { message: "Required" }),
1126
+ schema_version: z
1127
+ .union([z.literal("1.3"), z.literal("1.4")])
1128
+ .refine((value) => value !== undefined, { message: "Required" }),
1026
1129
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1027
1130
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1028
1131
  started_at: z
@@ -1030,7 +1133,13 @@ export const HistoryRecordSchema = z.intersection(z.union([
1030
1133
  .min(1)
1031
1134
  .refine((value) => value !== undefined, { message: "Required" }),
1032
1135
  status: z
1033
- .union([z.literal("nonzero"), z.literal("timeout"), z.literal("spawn-error"), z.literal("skipped")])
1136
+ .union([
1137
+ z.literal("nonzero"),
1138
+ z.literal("timeout"),
1139
+ z.literal("cancelled"),
1140
+ z.literal("spawn-error"),
1141
+ z.literal("skipped"),
1142
+ ])
1034
1143
  .refine((value) => value !== undefined, { message: "Required" }),
1035
1144
  text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1036
1145
  text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -1041,7 +1150,9 @@ export const HistoryRecordSchema = z.intersection(z.union([
1041
1150
  variant: z.union([z.string(), z.null()]).optional(),
1042
1151
  }),
1043
1152
  z.looseObject({
1044
- duration_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1153
+ duration_ms: z
1154
+ .union([z.int().gte(0), z.null()])
1155
+ .refine((value) => value !== undefined, { message: "Required" }),
1045
1156
  error: z
1046
1157
  .union([
1047
1158
  z
@@ -1089,7 +1200,13 @@ export const HistoryRecordSchema = z.intersection(z.union([
1089
1200
  session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1090
1201
  started_at: z.never().optional(),
1091
1202
  status: z
1092
- .union([z.literal("nonzero"), z.literal("timeout"), z.literal("spawn-error"), z.literal("skipped")])
1203
+ .union([
1204
+ z.literal("nonzero"),
1205
+ z.literal("timeout"),
1206
+ z.literal("cancelled"),
1207
+ z.literal("spawn-error"),
1208
+ z.literal("skipped"),
1209
+ ])
1093
1210
  .refine((value) => value !== undefined, { message: "Required" }),
1094
1211
  text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1095
1212
  text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -1100,7 +1217,9 @@ export const HistoryRecordSchema = z.intersection(z.union([
1100
1217
  variant: z.union([z.string(), z.null()]).optional(),
1101
1218
  }),
1102
1219
  z.looseObject({
1103
- duration_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1220
+ duration_ms: z
1221
+ .union([z.int().gte(0), z.null()])
1222
+ .refine((value) => value !== undefined, { message: "Required" }),
1104
1223
  error: z
1105
1224
  .union([
1106
1225
  z
@@ -1122,7 +1241,9 @@ export const HistoryRecordSchema = z.intersection(z.union([
1122
1241
  input: z.unknown().refine((value) => value !== undefined, { message: "Required" }),
1123
1242
  kind: z.string().refine((value) => value !== undefined, { message: "Required" }),
1124
1243
  name: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1125
- output: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1244
+ output: z
1245
+ .union([z.string(), z.null()])
1246
+ .refine((value) => value !== undefined, { message: "Required" }),
1126
1247
  started_at: z.null().optional(),
1127
1248
  status: z.null().optional(),
1128
1249
  tool_call_id: z.union([z.string(), z.null()]).optional(),
@@ -1173,7 +1294,9 @@ export const HistoryRecordSchema = z.intersection(z.union([
1173
1294
  variant: z.union([z.string(), z.null()]).optional(),
1174
1295
  }),
1175
1296
  z.looseObject({
1176
- duration_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1297
+ duration_ms: z
1298
+ .union([z.int().gte(0), z.null()])
1299
+ .refine((value) => value !== undefined, { message: "Required" }),
1177
1300
  error: z
1178
1301
  .union([
1179
1302
  z
@@ -1242,17 +1365,39 @@ export const HistoryRecordSchema = z.intersection(z.union([
1242
1365
  }),
1243
1366
  z.intersection(z.looseObject({
1244
1367
  error: z.string().refine((value) => value !== undefined, { message: "Required" }),
1245
- schema_version: z.literal("1.3").optional(),
1368
+ schema_version: z.union([z.literal("1.3"), z.literal("1.4")]).optional(),
1246
1369
  }), z.union([
1247
1370
  z.looseObject({
1248
1371
  status: z
1249
- .union([z.literal("nonzero"), z.literal("timeout"), z.literal("spawn-error"), z.literal("skipped")])
1372
+ .union([
1373
+ z.literal("nonzero"),
1374
+ z.literal("timeout"),
1375
+ z.literal("cancelled"),
1376
+ z.literal("spawn-error"),
1377
+ z.literal("skipped"),
1378
+ ])
1250
1379
  .optional(),
1251
1380
  }),
1252
1381
  z.looseObject({
1253
1382
  failure_kind: z.literal("tool_deferred").refine((value) => value !== undefined, { message: "Required" }),
1254
1383
  }),
1255
1384
  ])),
1385
+ ])), z.union([
1386
+ z.looseObject({
1387
+ status: z
1388
+ .union([
1389
+ z.literal("ok"),
1390
+ z.literal("nonzero"),
1391
+ z.literal("timeout"),
1392
+ z.literal("spawn-error"),
1393
+ z.literal("skipped"),
1394
+ z.literal("planned"),
1395
+ ])
1396
+ .optional(),
1397
+ }),
1398
+ z.looseObject({
1399
+ schema_version: z.literal("1.4").optional(),
1400
+ }),
1256
1401
  ]));
1257
1402
  export const HistoryRecordsSchema = z.array(z.lazy(() => HistoryRecordSchema));
1258
1403
  export const HistorySessionSummarySchema = z.looseObject({
@@ -1394,6 +1539,9 @@ export const RunResultSchema = z.looseObject({
1394
1539
  stderr: z.string().refine((value) => value !== undefined, { message: "Required" }),
1395
1540
  stdout: z.string().refine((value) => value !== undefined, { message: "Required" }),
1396
1541
  structured: z.unknown().refine((value) => value !== undefined, { message: "Required" }),
1542
+ telemetry: z
1543
+ .union([z.lazy(() => ExecutionTelemetrySchema), z.null()])
1544
+ .refine((value) => value !== undefined, { message: "Required" }),
1397
1545
  text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1398
1546
  text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1399
1547
  usage: z.lazy(() => UsageSchema).refine((value) => value !== undefined, { message: "Required" }),
@@ -1421,6 +1569,7 @@ export const StatusSchema = z.union([
1421
1569
  z.literal("ok"),
1422
1570
  z.literal("nonzero"),
1423
1571
  z.literal("timeout"),
1572
+ z.literal("cancelled"),
1424
1573
  z.literal("spawn-error"),
1425
1574
  z.literal("skipped"),
1426
1575
  z.literal("planned"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneharness/sdk",
3
- "version": "0.6.7",
3
+ "version": "0.6.9",
4
4
  "description": "Typed Node.js SDK for oneharness",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -19,7 +19,7 @@
19
19
  "node": ">=20"
20
20
  },
21
21
  "dependencies": {
22
- "oneharness-cli": "0.6.7",
22
+ "oneharness-cli": "0.6.9",
23
23
  "zod": "^4.4.3"
24
24
  }
25
25
  }