@oneharness/sdk 0.11.3 → 0.12.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.
@@ -171,6 +171,7 @@ export const FailureKindSchema = z.union([
171
171
  z.literal("tool_deferred"),
172
172
  z.literal("untrusted_directory"),
173
173
  z.literal("input_too_large"),
174
+ z.literal("model_mismatch"),
174
175
  ]);
175
176
  export const FallThroughSchema = z.looseObject({
176
177
  detail: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -185,6 +186,7 @@ export const FallThroughReasonSchema = z.union([
185
186
  z.literal("session-not-found"),
186
187
  z.literal("untrusted-directory"),
187
188
  z.literal("input-too-large"),
189
+ z.literal("model-mismatch"),
188
190
  z.literal("model-not-found"),
189
191
  z.literal("rate-limit"),
190
192
  ]);
@@ -348,6 +350,7 @@ export const HistoryEventLineSchema = z.union([
348
350
  z.literal("1.5"),
349
351
  z.literal("1.6"),
350
352
  z.literal("1.7"),
353
+ z.literal("1.8"),
351
354
  ])
352
355
  .refine((value) => value !== undefined, { message: "Required" }),
353
356
  variant: z.union([z.string(), z.null()]).optional(),
@@ -405,6 +408,7 @@ export const HistoryLineSchema = z.union([
405
408
  z.literal("1.5"),
406
409
  z.literal("1.6"),
407
410
  z.literal("1.7"),
411
+ z.literal("1.8"),
408
412
  ])
409
413
  .refine((value) => value !== undefined, { message: "Required" }),
410
414
  type: z.literal("event").refine((value) => value !== undefined, { message: "Required" }),
@@ -431,7 +435,7 @@ export const HistoryLineSchema = z.union([
431
435
  variant: z.union([z.string(), z.null()]).optional(),
432
436
  }),
433
437
  ]),
434
- z.intersection(z.intersection(z.intersection(z.intersection(z.union([
438
+ z.intersection(z.intersection(z.intersection(z.intersection(z.intersection(z.union([
435
439
  z.looseObject({
436
440
  duration_ms: z
437
441
  .int()
@@ -468,6 +472,7 @@ export const HistoryLineSchema = z.union([
468
472
  .gte(0)
469
473
  .refine((value) => value !== undefined, { message: "Required" }),
470
474
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
475
+ observed_model: z.union([z.string(), z.null()]).optional(),
471
476
  observed_tool_ms: z.never().optional(),
472
477
  permission_mode: z
473
478
  .lazy(() => PermissionModeSchema)
@@ -484,6 +489,7 @@ export const HistoryLineSchema = z.union([
484
489
  z.literal("1.5"),
485
490
  z.literal("1.6"),
486
491
  z.literal("1.7"),
492
+ z.literal("1.8"),
487
493
  ])
488
494
  .refine((value) => value !== undefined, { message: "Required" }),
489
495
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
@@ -550,6 +556,7 @@ export const HistoryLineSchema = z.union([
550
556
  .gte(0)
551
557
  .refine((value) => value !== undefined, { message: "Required" }),
552
558
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
559
+ observed_model: z.union([z.string(), z.null()]).optional(),
553
560
  observed_tool_ms: z.never().optional(),
554
561
  permission_mode: z
555
562
  .lazy(() => PermissionModeSchema)
@@ -566,6 +573,7 @@ export const HistoryLineSchema = z.union([
566
573
  z.literal("1.5"),
567
574
  z.literal("1.6"),
568
575
  z.literal("1.7"),
576
+ z.literal("1.8"),
569
577
  ])
570
578
  .refine((value) => value !== undefined, { message: "Required" }),
571
579
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
@@ -633,6 +641,7 @@ export const HistoryLineSchema = z.union([
633
641
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
634
642
  model_ms: z.never().optional(),
635
643
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
644
+ observed_model: z.union([z.string(), z.null()]).optional(),
636
645
  observed_tool_ms: z
637
646
  .int()
638
647
  .gte(0)
@@ -650,6 +659,7 @@ export const HistoryLineSchema = z.union([
650
659
  z.literal("1.5"),
651
660
  z.literal("1.6"),
652
661
  z.literal("1.7"),
662
+ z.literal("1.8"),
653
663
  ])
654
664
  .refine((value) => value !== undefined, { message: "Required" }),
655
665
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
@@ -702,6 +712,7 @@ export const HistoryLineSchema = z.union([
702
712
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
703
713
  model_ms: z.never().optional(),
704
714
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
715
+ observed_model: z.union([z.string(), z.null()]).optional(),
705
716
  observed_tool_ms: z.never().optional(),
706
717
  permission_mode: z
707
718
  .lazy(() => PermissionModeSchema)
@@ -718,6 +729,7 @@ export const HistoryLineSchema = z.union([
718
729
  z.literal("1.5"),
719
730
  z.literal("1.6"),
720
731
  z.literal("1.7"),
732
+ z.literal("1.8"),
721
733
  ])
722
734
  .refine((value) => value !== undefined, { message: "Required" }),
723
735
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
@@ -779,6 +791,7 @@ export const HistoryLineSchema = z.union([
779
791
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
780
792
  model_ms: z.never().optional(),
781
793
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
794
+ observed_model: z.union([z.string(), z.null()]).optional(),
782
795
  observed_tool_ms: z.never().optional(),
783
796
  permission_mode: z
784
797
  .lazy(() => PermissionModeSchema)
@@ -786,7 +799,14 @@ export const HistoryLineSchema = z.union([
786
799
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
787
800
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
788
801
  schema_version: z
789
- .union([z.literal("1.3"), z.literal("1.4"), z.literal("1.5"), z.literal("1.6"), z.literal("1.7")])
802
+ .union([
803
+ z.literal("1.3"),
804
+ z.literal("1.4"),
805
+ z.literal("1.5"),
806
+ z.literal("1.6"),
807
+ z.literal("1.7"),
808
+ z.literal("1.8"),
809
+ ])
790
810
  .refine((value) => value !== undefined, { message: "Required" }),
791
811
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
792
812
  session_id: z
@@ -849,6 +869,7 @@ export const HistoryLineSchema = z.union([
849
869
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
850
870
  model_ms: z.never().optional(),
851
871
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
872
+ observed_model: z.union([z.string(), z.null()]).optional(),
852
873
  observed_tool_ms: z.never().optional(),
853
874
  permission_mode: z
854
875
  .lazy(() => PermissionModeSchema)
@@ -865,6 +886,7 @@ export const HistoryLineSchema = z.union([
865
886
  z.literal("1.5"),
866
887
  z.literal("1.6"),
867
888
  z.literal("1.7"),
889
+ z.literal("1.8"),
868
890
  ])
869
891
  .refine((value) => value !== undefined, { message: "Required" }),
870
892
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
@@ -894,7 +916,14 @@ export const HistoryLineSchema = z.union([
894
916
  z.intersection(z.looseObject({
895
917
  error: z.string().refine((value) => value !== undefined, { message: "Required" }),
896
918
  schema_version: z
897
- .union([z.literal("1.3"), z.literal("1.4"), z.literal("1.5"), z.literal("1.6"), z.literal("1.7")])
919
+ .union([
920
+ z.literal("1.3"),
921
+ z.literal("1.4"),
922
+ z.literal("1.5"),
923
+ z.literal("1.6"),
924
+ z.literal("1.7"),
925
+ z.literal("1.8"),
926
+ ])
898
927
  .optional(),
899
928
  }), z.union([
900
929
  z.looseObject({
@@ -919,12 +948,20 @@ export const HistoryLineSchema = z.union([
919
948
  work: z.null().optional(),
920
949
  }),
921
950
  z.looseObject({
922
- schema_version: z.literal("1.7").optional(),
951
+ schema_version: z.union([z.literal("1.7"), z.literal("1.8")]).optional(),
923
952
  status: z.union([z.literal("nonzero"), z.literal("timeout"), z.literal("cancelled")]).optional(),
924
953
  work: z
925
954
  .union([z.literal("done"), z.literal("none")])
926
955
  .refine((value) => value !== undefined, { message: "Required" }),
927
956
  }),
957
+ ])), z.union([
958
+ z.looseObject({
959
+ observed_model: z.null().optional(),
960
+ }),
961
+ z.looseObject({
962
+ observed_model: z.string().refine((value) => value !== undefined, { message: "Required" }),
963
+ schema_version: z.literal("1.8").optional(),
964
+ }),
928
965
  ])), z.union([
929
966
  z.looseObject({
930
967
  status: z
@@ -939,9 +976,11 @@ export const HistoryLineSchema = z.union([
939
976
  .optional(),
940
977
  }),
941
978
  z.looseObject({
942
- schema_version: z.union([z.literal("1.4"), z.literal("1.5"), z.literal("1.6"), z.literal("1.7")]).optional(),
979
+ schema_version: z
980
+ .union([z.literal("1.4"), z.literal("1.5"), z.literal("1.6"), z.literal("1.7"), z.literal("1.8")])
981
+ .optional(),
943
982
  }),
944
- ])), z.intersection(z.union([
983
+ ])), z.intersection(z.intersection(z.union([
945
984
  z.looseObject({
946
985
  failure_kind: z
947
986
  .union([
@@ -952,12 +991,15 @@ export const HistoryLineSchema = z.union([
952
991
  z.literal("tool_deferred"),
953
992
  z.literal("untrusted_directory"),
954
993
  z.literal("input_too_large"),
994
+ z.literal("model_mismatch"),
955
995
  z.literal(null),
956
996
  ])
957
997
  .optional(),
958
998
  }),
959
999
  z.looseObject({
960
- schema_version: z.union([z.literal("1.5"), z.literal("1.6"), z.literal("1.7")]).optional(),
1000
+ schema_version: z
1001
+ .union([z.literal("1.5"), z.literal("1.6"), z.literal("1.7"), z.literal("1.8")])
1002
+ .optional(),
961
1003
  }),
962
1004
  ]), z.union([
963
1005
  z.looseObject({
@@ -969,12 +1011,32 @@ export const HistoryLineSchema = z.union([
969
1011
  z.literal("quota"),
970
1012
  z.literal("session_not_found"),
971
1013
  z.literal("tool_deferred"),
1014
+ z.literal("model_mismatch"),
1015
+ z.literal(null),
1016
+ ])
1017
+ .optional(),
1018
+ }),
1019
+ z.looseObject({
1020
+ schema_version: z.union([z.literal("1.6"), z.literal("1.7"), z.literal("1.8")]).optional(),
1021
+ }),
1022
+ ])), z.union([
1023
+ z.looseObject({
1024
+ failure_kind: z
1025
+ .union([
1026
+ z.literal("auth"),
1027
+ z.literal("rate_limit"),
1028
+ z.literal("model_not_found"),
1029
+ z.literal("quota"),
1030
+ z.literal("session_not_found"),
1031
+ z.literal("tool_deferred"),
1032
+ z.literal("untrusted_directory"),
1033
+ z.literal("input_too_large"),
972
1034
  z.literal(null),
973
1035
  ])
974
1036
  .optional(),
975
1037
  }),
976
1038
  z.looseObject({
977
- schema_version: z.union([z.literal("1.6"), z.literal("1.7")]).optional(),
1039
+ schema_version: z.literal("1.8").optional(),
978
1040
  }),
979
1041
  ]))),
980
1042
  ]);
@@ -1026,7 +1088,7 @@ export const HistoryMigrateReportSchema = z.looseObject({
1026
1088
  .gte(0)
1027
1089
  .refine((value) => value !== undefined, { message: "Required" }),
1028
1090
  });
1029
- export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(z.intersection(z.union([
1091
+ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(z.intersection(z.intersection(z.union([
1030
1092
  z.looseObject({
1031
1093
  duration_ms: z
1032
1094
  .int()
@@ -1054,7 +1116,9 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1054
1116
  finished_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
1055
1117
  kind: z.literal("tool_call").refine((value) => value !== undefined, { message: "Required" }),
1056
1118
  started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
1057
- status: z.literal("completed").refine((value) => value !== undefined, { message: "Required" }),
1119
+ status: z
1120
+ .literal("completed")
1121
+ .refine((value) => value !== undefined, { message: "Required" }),
1058
1122
  tool_call_id: z
1059
1123
  .string()
1060
1124
  .min(1)
@@ -1123,6 +1187,7 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1123
1187
  .gte(0)
1124
1188
  .refine((value) => value !== undefined, { message: "Required" }),
1125
1189
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
1190
+ observed_model: z.union([z.string(), z.null()]).optional(),
1126
1191
  observed_tool_ms: z.never().optional(),
1127
1192
  permission_mode: z
1128
1193
  .lazy(() => PermissionModeSchema)
@@ -1137,10 +1202,13 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1137
1202
  z.literal("1.5"),
1138
1203
  z.literal("1.6"),
1139
1204
  z.literal("1.7"),
1205
+ z.literal("1.8"),
1140
1206
  ])
1141
1207
  .refine((value) => value !== undefined, { message: "Required" }),
1142
1208
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1143
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1209
+ session_id: z
1210
+ .union([z.string(), z.null()])
1211
+ .refine((value) => value !== undefined, { message: "Required" }),
1144
1212
  started_at: z
1145
1213
  .string()
1146
1214
  .min(1)
@@ -1185,7 +1253,9 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1185
1253
  .gte(0)
1186
1254
  .refine((value) => value !== undefined, { message: "Required" }),
1187
1255
  finished_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
1188
- kind: z.literal("tool_call").refine((value) => value !== undefined, { message: "Required" }),
1256
+ kind: z
1257
+ .literal("tool_call")
1258
+ .refine((value) => value !== undefined, { message: "Required" }),
1189
1259
  started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
1190
1260
  status: z
1191
1261
  .literal("completed")
@@ -1201,7 +1271,9 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1201
1271
  .gte(0)
1202
1272
  .refine((value) => value !== undefined, { message: "Required" }),
1203
1273
  finished_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
1204
- kind: z.literal("tool_call").refine((value) => value !== undefined, { message: "Required" }),
1274
+ kind: z
1275
+ .literal("tool_call")
1276
+ .refine((value) => value !== undefined, { message: "Required" }),
1205
1277
  started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
1206
1278
  status: z.literal("failed").refine((value) => value !== undefined, { message: "Required" }),
1207
1279
  tool_call_id: z
@@ -1210,16 +1282,22 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1210
1282
  .refine((value) => value !== undefined, { message: "Required" }),
1211
1283
  })),
1212
1284
  z.intersection(z.lazy(() => ActionEventSchema), z.looseObject({
1213
- kind: z.literal("tool_call").refine((value) => value !== undefined, { message: "Required" }),
1285
+ kind: z
1286
+ .literal("tool_call")
1287
+ .refine((value) => value !== undefined, { message: "Required" }),
1214
1288
  started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
1215
- status: z.literal("timeout").refine((value) => value !== undefined, { message: "Required" }),
1289
+ status: z
1290
+ .literal("timeout")
1291
+ .refine((value) => value !== undefined, { message: "Required" }),
1216
1292
  tool_call_id: z
1217
1293
  .string()
1218
1294
  .min(1)
1219
1295
  .refine((value) => value !== undefined, { message: "Required" }),
1220
1296
  })),
1221
1297
  z.intersection(z.lazy(() => ActionEventSchema), z.looseObject({
1222
- kind: z.literal("tool_call").refine((value) => value !== undefined, { message: "Required" }),
1298
+ kind: z
1299
+ .literal("tool_call")
1300
+ .refine((value) => value !== undefined, { message: "Required" }),
1223
1301
  started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
1224
1302
  status: z
1225
1303
  .literal("interrupted")
@@ -1260,6 +1338,7 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1260
1338
  .gte(0)
1261
1339
  .refine((value) => value !== undefined, { message: "Required" }),
1262
1340
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
1341
+ observed_model: z.union([z.string(), z.null()]).optional(),
1263
1342
  observed_tool_ms: z.never().optional(),
1264
1343
  permission_mode: z
1265
1344
  .lazy(() => PermissionModeSchema)
@@ -1270,7 +1349,9 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1270
1349
  .union([z.literal("1.0"), z.literal("1.1")])
1271
1350
  .refine((value) => value !== undefined, { message: "Required" }),
1272
1351
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1273
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1352
+ session_id: z
1353
+ .union([z.string(), z.null()])
1354
+ .refine((value) => value !== undefined, { message: "Required" }),
1274
1355
  started_at: z
1275
1356
  .string()
1276
1357
  .min(1)
@@ -1346,6 +1427,7 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1346
1427
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1347
1428
  model_ms: z.never().optional(),
1348
1429
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
1430
+ observed_model: z.union([z.string(), z.null()]).optional(),
1349
1431
  observed_tool_ms: z.never().optional(),
1350
1432
  permission_mode: z
1351
1433
  .lazy(() => PermissionModeSchema)
@@ -1360,10 +1442,13 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1360
1442
  z.literal("1.5"),
1361
1443
  z.literal("1.6"),
1362
1444
  z.literal("1.7"),
1445
+ z.literal("1.8"),
1363
1446
  ])
1364
1447
  .refine((value) => value !== undefined, { message: "Required" }),
1365
1448
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1366
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1449
+ session_id: z
1450
+ .union([z.string(), z.null()])
1451
+ .refine((value) => value !== undefined, { message: "Required" }),
1367
1452
  started_at: z.never().optional(),
1368
1453
  status: z
1369
1454
  .union([z.literal("ok"), z.literal("planned")])
@@ -1415,6 +1500,7 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1415
1500
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1416
1501
  model_ms: z.never().optional(),
1417
1502
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
1503
+ observed_model: z.union([z.string(), z.null()]).optional(),
1418
1504
  observed_tool_ms: z
1419
1505
  .int()
1420
1506
  .gte(0)
@@ -1432,10 +1518,13 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1432
1518
  z.literal("1.5"),
1433
1519
  z.literal("1.6"),
1434
1520
  z.literal("1.7"),
1521
+ z.literal("1.8"),
1435
1522
  ])
1436
1523
  .refine((value) => value !== undefined, { message: "Required" }),
1437
1524
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1438
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1525
+ session_id: z
1526
+ .union([z.string(), z.null()])
1527
+ .refine((value) => value !== undefined, { message: "Required" }),
1439
1528
  started_at: z.never().optional(),
1440
1529
  status: z.lazy(() => StatusSchema).refine((value) => value !== undefined, { message: "Required" }),
1441
1530
  text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -1484,6 +1573,7 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1484
1573
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1485
1574
  model_ms: z.never().optional(),
1486
1575
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
1576
+ observed_model: z.union([z.string(), z.null()]).optional(),
1487
1577
  observed_tool_ms: z.never().optional(),
1488
1578
  permission_mode: z
1489
1579
  .lazy(() => PermissionModeSchema)
@@ -1498,10 +1588,13 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1498
1588
  z.literal("1.5"),
1499
1589
  z.literal("1.6"),
1500
1590
  z.literal("1.7"),
1591
+ z.literal("1.8"),
1501
1592
  ])
1502
1593
  .refine((value) => value !== undefined, { message: "Required" }),
1503
1594
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1504
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1595
+ session_id: z
1596
+ .union([z.string(), z.null()])
1597
+ .refine((value) => value !== undefined, { message: "Required" }),
1505
1598
  started_at: z.never().optional(),
1506
1599
  status: z
1507
1600
  .union([
@@ -1559,6 +1652,7 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1559
1652
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1560
1653
  model_ms: z.never().optional(),
1561
1654
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
1655
+ observed_model: z.union([z.string(), z.null()]).optional(),
1562
1656
  observed_tool_ms: z.never().optional(),
1563
1657
  permission_mode: z
1564
1658
  .lazy(() => PermissionModeSchema)
@@ -1566,10 +1660,19 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1566
1660
  project: z.string().refine((value) => value !== undefined, { message: "Required" }),
1567
1661
  prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
1568
1662
  schema_version: z
1569
- .union([z.literal("1.3"), z.literal("1.4"), z.literal("1.5"), z.literal("1.6"), z.literal("1.7")])
1663
+ .union([
1664
+ z.literal("1.3"),
1665
+ z.literal("1.4"),
1666
+ z.literal("1.5"),
1667
+ z.literal("1.6"),
1668
+ z.literal("1.7"),
1669
+ z.literal("1.8"),
1670
+ ])
1570
1671
  .refine((value) => value !== undefined, { message: "Required" }),
1571
1672
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1572
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1673
+ session_id: z
1674
+ .union([z.string(), z.null()])
1675
+ .refine((value) => value !== undefined, { message: "Required" }),
1573
1676
  started_at: z
1574
1677
  .string()
1575
1678
  .min(1)
@@ -1634,6 +1737,7 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1634
1737
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1635
1738
  model_ms: z.never().optional(),
1636
1739
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
1740
+ observed_model: z.union([z.string(), z.null()]).optional(),
1637
1741
  observed_tool_ms: z.never().optional(),
1638
1742
  permission_mode: z
1639
1743
  .lazy(() => PermissionModeSchema)
@@ -1644,7 +1748,9 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1644
1748
  .union([z.literal("1.0"), z.literal("1.1")])
1645
1749
  .refine((value) => value !== undefined, { message: "Required" }),
1646
1750
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1647
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1751
+ session_id: z
1752
+ .union([z.string(), z.null()])
1753
+ .refine((value) => value !== undefined, { message: "Required" }),
1648
1754
  started_at: z.never().optional(),
1649
1755
  status: z
1650
1756
  .union([
@@ -1724,6 +1830,7 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1724
1830
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1725
1831
  model_ms: z.never().optional(),
1726
1832
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
1833
+ observed_model: z.union([z.string(), z.null()]).optional(),
1727
1834
  observed_tool_ms: z.never().optional(),
1728
1835
  permission_mode: z
1729
1836
  .lazy(() => PermissionModeSchema)
@@ -1734,7 +1841,9 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1734
1841
  .union([z.literal("1.0"), z.literal("1.1")])
1735
1842
  .refine((value) => value !== undefined, { message: "Required" }),
1736
1843
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1737
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1844
+ session_id: z
1845
+ .union([z.string(), z.null()])
1846
+ .refine((value) => value !== undefined, { message: "Required" }),
1738
1847
  started_at: z.never().optional(),
1739
1848
  status: z
1740
1849
  .union([z.literal("ok"), z.literal("planned")])
@@ -1801,6 +1910,7 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1801
1910
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1802
1911
  model_ms: z.union([z.int().gte(0), z.null()]).optional(),
1803
1912
  name: z.string().refine((value) => value !== undefined, { message: "Required" }),
1913
+ observed_model: z.union([z.string(), z.null()]).optional(),
1804
1914
  observed_tool_ms: z.union([z.int().gte(0), z.null()]).optional(),
1805
1915
  permission_mode: z
1806
1916
  .lazy(() => PermissionModeSchema)
@@ -1811,7 +1921,9 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1811
1921
  .union([z.literal("0.1"), z.literal("0.2")])
1812
1922
  .refine((value) => value !== undefined, { message: "Required" }),
1813
1923
  session: z.string().refine((value) => value !== undefined, { message: "Required" }),
1814
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
1924
+ session_id: z
1925
+ .union([z.string(), z.null()])
1926
+ .refine((value) => value !== undefined, { message: "Required" }),
1815
1927
  started_at: z.union([z.string(), z.null()]).optional(),
1816
1928
  status: z.lazy(() => StatusSchema).refine((value) => value !== undefined, { message: "Required" }),
1817
1929
  text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
@@ -1832,7 +1944,14 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1832
1944
  z.intersection(z.looseObject({
1833
1945
  error: z.string().refine((value) => value !== undefined, { message: "Required" }),
1834
1946
  schema_version: z
1835
- .union([z.literal("1.3"), z.literal("1.4"), z.literal("1.5"), z.literal("1.6"), z.literal("1.7")])
1947
+ .union([
1948
+ z.literal("1.3"),
1949
+ z.literal("1.4"),
1950
+ z.literal("1.5"),
1951
+ z.literal("1.6"),
1952
+ z.literal("1.7"),
1953
+ z.literal("1.8"),
1954
+ ])
1836
1955
  .optional(),
1837
1956
  }), z.union([
1838
1957
  z.looseObject({
@@ -1857,12 +1976,20 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1857
1976
  work: z.null().optional(),
1858
1977
  }),
1859
1978
  z.looseObject({
1860
- schema_version: z.literal("1.7").optional(),
1979
+ schema_version: z.union([z.literal("1.7"), z.literal("1.8")]).optional(),
1861
1980
  status: z.union([z.literal("nonzero"), z.literal("timeout"), z.literal("cancelled")]).optional(),
1862
1981
  work: z
1863
1982
  .union([z.literal("done"), z.literal("none")])
1864
1983
  .refine((value) => value !== undefined, { message: "Required" }),
1865
1984
  }),
1985
+ ])), z.union([
1986
+ z.looseObject({
1987
+ observed_model: z.null().optional(),
1988
+ }),
1989
+ z.looseObject({
1990
+ observed_model: z.string().refine((value) => value !== undefined, { message: "Required" }),
1991
+ schema_version: z.literal("1.8").optional(),
1992
+ }),
1866
1993
  ])), z.union([
1867
1994
  z.looseObject({
1868
1995
  status: z
@@ -1877,9 +2004,11 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1877
2004
  .optional(),
1878
2005
  }),
1879
2006
  z.looseObject({
1880
- schema_version: z.union([z.literal("1.4"), z.literal("1.5"), z.literal("1.6"), z.literal("1.7")]).optional(),
2007
+ schema_version: z
2008
+ .union([z.literal("1.4"), z.literal("1.5"), z.literal("1.6"), z.literal("1.7"), z.literal("1.8")])
2009
+ .optional(),
1881
2010
  }),
1882
- ])), z.intersection(z.union([
2011
+ ])), z.intersection(z.intersection(z.union([
1883
2012
  z.looseObject({
1884
2013
  failure_kind: z
1885
2014
  .union([
@@ -1890,12 +2019,13 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1890
2019
  z.literal("tool_deferred"),
1891
2020
  z.literal("untrusted_directory"),
1892
2021
  z.literal("input_too_large"),
2022
+ z.literal("model_mismatch"),
1893
2023
  z.literal(null),
1894
2024
  ])
1895
2025
  .optional(),
1896
2026
  }),
1897
2027
  z.looseObject({
1898
- schema_version: z.union([z.literal("1.5"), z.literal("1.6"), z.literal("1.7")]).optional(),
2028
+ schema_version: z.union([z.literal("1.5"), z.literal("1.6"), z.literal("1.7"), z.literal("1.8")]).optional(),
1899
2029
  }),
1900
2030
  ]), z.union([
1901
2031
  z.looseObject({
@@ -1907,12 +2037,32 @@ export const HistoryRecordSchema = z.intersection(z.intersection(z.intersection(
1907
2037
  z.literal("quota"),
1908
2038
  z.literal("session_not_found"),
1909
2039
  z.literal("tool_deferred"),
2040
+ z.literal("model_mismatch"),
2041
+ z.literal(null),
2042
+ ])
2043
+ .optional(),
2044
+ }),
2045
+ z.looseObject({
2046
+ schema_version: z.union([z.literal("1.6"), z.literal("1.7"), z.literal("1.8")]).optional(),
2047
+ }),
2048
+ ])), z.union([
2049
+ z.looseObject({
2050
+ failure_kind: z
2051
+ .union([
2052
+ z.literal("auth"),
2053
+ z.literal("rate_limit"),
2054
+ z.literal("model_not_found"),
2055
+ z.literal("quota"),
2056
+ z.literal("session_not_found"),
2057
+ z.literal("tool_deferred"),
2058
+ z.literal("untrusted_directory"),
2059
+ z.literal("input_too_large"),
1910
2060
  z.literal(null),
1911
2061
  ])
1912
2062
  .optional(),
1913
2063
  }),
1914
2064
  z.looseObject({
1915
- schema_version: z.union([z.literal("1.6"), z.literal("1.7")]).optional(),
2065
+ schema_version: z.literal("1.8").optional(),
1916
2066
  }),
1917
2067
  ])));
1918
2068
  export const HistoryRecordsSchema = z.array(z.lazy(() => HistoryRecordSchema));
@@ -2166,6 +2316,7 @@ export const RunResultSchema = z.looseObject({
2166
2316
  harness: z.string().refine((value) => value !== undefined, { message: "Required" }),
2167
2317
  harness_id: z.string().refine((value) => value !== undefined, { message: "Required" }),
2168
2318
  model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
2319
+ observed_model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
2169
2320
  output_format: z.lazy(() => OutputFormatSchema).refine((value) => value !== undefined, { message: "Required" }),
2170
2321
  prompt: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
2171
2322
  schema_attempts: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneharness/sdk",
3
- "version": "0.11.3",
3
+ "version": "0.12.0",
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.11.3",
22
+ "oneharness-cli": "0.12.0",
23
23
  "zod": "^4.4.3"
24
24
  }
25
25
  }