sidekick-shared 0.25.0 → 0.26.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 (116) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +49 -3
  3. package/dist/accountChanges.js +22 -3
  4. package/dist/accountRegistry.d.ts +22 -1
  5. package/dist/accountRegistry.js +37 -14
  6. package/dist/accountStatus.d.ts +9 -1
  7. package/dist/accountStatus.js +3 -3
  8. package/dist/accounts.d.ts +3 -1
  9. package/dist/accounts.js +84 -64
  10. package/dist/aggregation/EventAggregator.d.ts +15 -2
  11. package/dist/aggregation/EventAggregator.js +54 -9
  12. package/dist/aggregation/costProvenance.d.ts +14 -0
  13. package/dist/aggregation/costProvenance.js +35 -0
  14. package/dist/aggregation/snapshot.d.ts +13 -2
  15. package/dist/aggregation/snapshot.js +57 -6
  16. package/dist/aggregation/types.d.ts +30 -1
  17. package/dist/analytics/compactionLedger.js +15 -5
  18. package/dist/analytics/qualityScore.js +2 -1
  19. package/dist/browser.d.ts +11 -1
  20. package/dist/browser.js +29 -1
  21. package/dist/codexProfiles.d.ts +3 -1
  22. package/dist/codexProfiles.js +4 -2
  23. package/dist/codexQuota.d.ts +2 -0
  24. package/dist/codexQuota.js +11 -66
  25. package/dist/failingTools.d.ts +37 -0
  26. package/dist/failingTools.js +70 -0
  27. package/dist/formatters/sessionDump.js +13 -7
  28. package/dist/formatting.d.ts +13 -0
  29. package/dist/formatting.js +35 -0
  30. package/dist/historicalStore.d.ts +47 -0
  31. package/dist/historicalStore.js +312 -0
  32. package/dist/index.d.ts +46 -12
  33. package/dist/index.js +112 -24
  34. package/dist/node.d.ts +19 -0
  35. package/dist/node.js +47 -1
  36. package/dist/observedContextWindows.d.ts +7 -0
  37. package/dist/observedContextWindows.js +17 -2
  38. package/dist/observedSessionCollector.d.ts +3 -8
  39. package/dist/observedSessionCollector.js +10 -27
  40. package/dist/parsers/sessionActivityDetector.d.ts +24 -2
  41. package/dist/parsers/sessionActivityDetector.js +95 -17
  42. package/dist/parsers/sessionPathResolver.d.ts +11 -0
  43. package/dist/parsers/sessionPathResolver.js +13 -10
  44. package/dist/peakHours.d.ts +34 -3
  45. package/dist/peakHours.js +92 -7
  46. package/dist/pricingCatalog.d.ts +7 -0
  47. package/dist/pricingCatalog.js +8 -5
  48. package/dist/providers/claudeCode.js +11 -96
  49. package/dist/providers/codex.d.ts +2 -0
  50. package/dist/providers/codex.js +94 -259
  51. package/dist/providers/detect.d.ts +2 -0
  52. package/dist/providers/detect.js +29 -24
  53. package/dist/providers/factory.d.ts +6 -0
  54. package/dist/providers/openCode.d.ts +2 -0
  55. package/dist/providers/openCode.js +105 -121
  56. package/dist/providers/rolloutWalker.d.ts +53 -0
  57. package/dist/providers/rolloutWalker.js +209 -0
  58. package/dist/providers/types.d.ts +30 -0
  59. package/dist/quota.d.ts +30 -3
  60. package/dist/quota.js +35 -3
  61. package/dist/quotaHistory.d.ts +1 -1
  62. package/dist/quotaHistory.js +36 -35
  63. package/dist/quotaResolver.d.ts +81 -0
  64. package/dist/quotaResolver.js +213 -0
  65. package/dist/quotaSnapshots.d.ts +15 -2
  66. package/dist/quotaSnapshots.js +25 -3
  67. package/dist/quotaThresholds.d.ts +60 -0
  68. package/dist/quotaThresholds.js +90 -0
  69. package/dist/report/htmlReportGenerator.js +10 -4
  70. package/dist/report/sessionReportInputs.d.ts +23 -0
  71. package/dist/report/sessionReportInputs.js +34 -0
  72. package/dist/schemas/index.d.ts +2 -0
  73. package/dist/schemas/index.js +10 -1
  74. package/dist/schemas/quota.d.ts +139 -0
  75. package/dist/schemas/quota.js +17 -2
  76. package/dist/schemas/quotaHistory.d.ts +1 -0
  77. package/dist/schemas/quotaHistory.js +1 -1
  78. package/dist/schemas/sessionEvent.d.ts +6 -0
  79. package/dist/schemas/sessionEvent.js +1 -0
  80. package/dist/schemas/stateFile.d.ts +198 -0
  81. package/dist/schemas/stateFile.js +77 -0
  82. package/dist/schemas/transcript.js +2 -0
  83. package/dist/sessionFingerprint.d.ts +25 -0
  84. package/dist/sessionFingerprint.js +46 -0
  85. package/dist/sessionPreviews.d.ts +7 -1
  86. package/dist/sessionPreviews.js +15 -3
  87. package/dist/sessionStats.d.ts +51 -0
  88. package/dist/sessionStats.js +166 -0
  89. package/dist/stateFile.d.ts +113 -0
  90. package/dist/stateFile.js +160 -0
  91. package/dist/statusline/claudeStatuslinePayload.d.ts +89 -0
  92. package/dist/statusline/claudeStatuslinePayload.js +152 -0
  93. package/dist/statusline/formatter.d.ts +13 -0
  94. package/dist/statusline/formatter.js +48 -6
  95. package/dist/statusline/index.d.ts +10 -2
  96. package/dist/statusline/index.js +19 -1
  97. package/dist/tokenSummary.d.ts +62 -0
  98. package/dist/tokenSummary.js +72 -0
  99. package/dist/transcript.d.ts +5 -0
  100. package/dist/transcript.js +2 -0
  101. package/dist/types/observedSessionV1.d.ts +2 -0
  102. package/dist/types/observedSessionV1.js +75 -18
  103. package/dist/types/sessionEvent.d.ts +2 -0
  104. package/dist/usage/billingBlocks.d.ts +85 -0
  105. package/dist/usage/billingBlocks.js +153 -0
  106. package/dist/usage/importSessionHistory.d.ts +53 -0
  107. package/dist/usage/importSessionHistory.js +88 -0
  108. package/dist/usage/usageEvents.d.ts +92 -0
  109. package/dist/usage/usageEvents.js +322 -0
  110. package/dist/usage/usageReports.d.ts +76 -0
  111. package/dist/usage/usageReports.js +208 -0
  112. package/dist/watchers/factory.d.ts +6 -0
  113. package/dist/watchers/factory.js +30 -25
  114. package/dist/zaiQuotaApi.d.ts +2 -0
  115. package/dist/zaiQuotaApi.js +2 -0
  116. package/package.json +1 -1
@@ -29,6 +29,17 @@ export declare const quotaSourceSchema: z.ZodEnum<{
29
29
  api: "api";
30
30
  cache: "cache";
31
31
  session: "session";
32
+ statusline: "statusline";
33
+ }>;
34
+ export declare const quotaCapturedSourceSchema: z.ZodEnum<{
35
+ api: "api";
36
+ session: "session";
37
+ statusline: "statusline";
38
+ }>;
39
+ export declare const quotaFreshnessSchema: z.ZodEnum<{
40
+ fresh: "fresh";
41
+ aging: "aging";
42
+ stale: "stale";
32
43
  }>;
33
44
  export declare const codexResetCreditSchema: z.ZodObject<{
34
45
  title: z.ZodOptional<z.ZodString>;
@@ -84,9 +95,21 @@ export declare const quotaStateSchema: z.ZodObject<{
84
95
  api: "api";
85
96
  cache: "cache";
86
97
  session: "session";
98
+ statusline: "statusline";
99
+ }>>;
100
+ capturedSource: z.ZodOptional<z.ZodEnum<{
101
+ api: "api";
102
+ session: "session";
103
+ statusline: "statusline";
87
104
  }>>;
88
105
  capturedAt: z.ZodOptional<z.ZodString>;
89
106
  stale: z.ZodOptional<z.ZodBoolean>;
107
+ ageMs: z.ZodOptional<z.ZodNumber>;
108
+ freshness: z.ZodOptional<z.ZodEnum<{
109
+ fresh: "fresh";
110
+ aging: "aging";
111
+ stale: "stale";
112
+ }>>;
90
113
  fiveHourLabel: z.ZodOptional<z.ZodString>;
91
114
  sevenDayLabel: z.ZodOptional<z.ZodString>;
92
115
  limitId: z.ZodOptional<z.ZodString>;
@@ -131,6 +154,10 @@ export declare const peakHoursStateSchema: z.ZodObject<{
131
154
  updatedAt: z.ZodString;
132
155
  unavailable: z.ZodBoolean;
133
156
  notApplicable: z.ZodOptional<z.ZodBoolean>;
157
+ source: z.ZodOptional<z.ZodEnum<{
158
+ promoclock: "promoclock";
159
+ schedule: "schedule";
160
+ }>>;
134
161
  }, z.core.$strip>;
135
162
  export declare const quotaFailureDescriptorSchema: z.ZodObject<{
136
163
  severity: z.ZodEnum<{
@@ -180,9 +207,21 @@ export declare const providerQuotaStateSchema: z.ZodObject<{
180
207
  api: "api";
181
208
  cache: "cache";
182
209
  session: "session";
210
+ statusline: "statusline";
211
+ }>>;
212
+ capturedSource: z.ZodOptional<z.ZodEnum<{
213
+ api: "api";
214
+ session: "session";
215
+ statusline: "statusline";
183
216
  }>>;
184
217
  capturedAt: z.ZodOptional<z.ZodString>;
185
218
  stale: z.ZodOptional<z.ZodBoolean>;
219
+ ageMs: z.ZodOptional<z.ZodNumber>;
220
+ freshness: z.ZodOptional<z.ZodEnum<{
221
+ fresh: "fresh";
222
+ aging: "aging";
223
+ stale: "stale";
224
+ }>>;
186
225
  fiveHourLabel: z.ZodOptional<z.ZodString>;
187
226
  sevenDayLabel: z.ZodOptional<z.ZodString>;
188
227
  limitId: z.ZodOptional<z.ZodString>;
@@ -228,6 +267,10 @@ export declare const providerQuotaStateSchema: z.ZodObject<{
228
267
  updatedAt: z.ZodString;
229
268
  unavailable: z.ZodBoolean;
230
269
  notApplicable: z.ZodOptional<z.ZodBoolean>;
270
+ source: z.ZodOptional<z.ZodEnum<{
271
+ promoclock: "promoclock";
272
+ schedule: "schedule";
273
+ }>>;
231
274
  }, z.core.$strip>>>;
232
275
  failure: z.ZodOptional<z.ZodNullable<z.ZodObject<{
233
276
  severity: z.ZodEnum<{
@@ -278,9 +321,21 @@ export declare const claudeProviderQuotaStateSchema: z.ZodObject<{
278
321
  api: "api";
279
322
  cache: "cache";
280
323
  session: "session";
324
+ statusline: "statusline";
325
+ }>>;
326
+ capturedSource: z.ZodOptional<z.ZodEnum<{
327
+ api: "api";
328
+ session: "session";
329
+ statusline: "statusline";
281
330
  }>>;
282
331
  capturedAt: z.ZodOptional<z.ZodString>;
283
332
  stale: z.ZodOptional<z.ZodBoolean>;
333
+ ageMs: z.ZodOptional<z.ZodNumber>;
334
+ freshness: z.ZodOptional<z.ZodEnum<{
335
+ fresh: "fresh";
336
+ aging: "aging";
337
+ stale: "stale";
338
+ }>>;
284
339
  fiveHourLabel: z.ZodOptional<z.ZodString>;
285
340
  sevenDayLabel: z.ZodOptional<z.ZodString>;
286
341
  limitId: z.ZodOptional<z.ZodString>;
@@ -326,6 +381,10 @@ export declare const claudeProviderQuotaStateSchema: z.ZodObject<{
326
381
  updatedAt: z.ZodString;
327
382
  unavailable: z.ZodBoolean;
328
383
  notApplicable: z.ZodOptional<z.ZodBoolean>;
384
+ source: z.ZodOptional<z.ZodEnum<{
385
+ promoclock: "promoclock";
386
+ schedule: "schedule";
387
+ }>>;
329
388
  }, z.core.$strip>>>;
330
389
  failure: z.ZodOptional<z.ZodNullable<z.ZodObject<{
331
390
  severity: z.ZodEnum<{
@@ -372,9 +431,21 @@ export declare const codexProviderQuotaStateSchema: z.ZodObject<{
372
431
  api: "api";
373
432
  cache: "cache";
374
433
  session: "session";
434
+ statusline: "statusline";
435
+ }>>;
436
+ capturedSource: z.ZodOptional<z.ZodEnum<{
437
+ api: "api";
438
+ session: "session";
439
+ statusline: "statusline";
375
440
  }>>;
376
441
  capturedAt: z.ZodOptional<z.ZodString>;
377
442
  stale: z.ZodOptional<z.ZodBoolean>;
443
+ ageMs: z.ZodOptional<z.ZodNumber>;
444
+ freshness: z.ZodOptional<z.ZodEnum<{
445
+ fresh: "fresh";
446
+ aging: "aging";
447
+ stale: "stale";
448
+ }>>;
378
449
  fiveHourLabel: z.ZodOptional<z.ZodString>;
379
450
  sevenDayLabel: z.ZodOptional<z.ZodString>;
380
451
  limitId: z.ZodOptional<z.ZodString>;
@@ -420,6 +491,10 @@ export declare const codexProviderQuotaStateSchema: z.ZodObject<{
420
491
  updatedAt: z.ZodString;
421
492
  unavailable: z.ZodBoolean;
422
493
  notApplicable: z.ZodOptional<z.ZodBoolean>;
494
+ source: z.ZodOptional<z.ZodEnum<{
495
+ promoclock: "promoclock";
496
+ schedule: "schedule";
497
+ }>>;
423
498
  }, z.core.$strip>>>;
424
499
  failure: z.ZodOptional<z.ZodNullable<z.ZodObject<{
425
500
  severity: z.ZodEnum<{
@@ -466,9 +541,21 @@ export declare const zaiProviderQuotaStateSchema: z.ZodObject<{
466
541
  api: "api";
467
542
  cache: "cache";
468
543
  session: "session";
544
+ statusline: "statusline";
545
+ }>>;
546
+ capturedSource: z.ZodOptional<z.ZodEnum<{
547
+ api: "api";
548
+ session: "session";
549
+ statusline: "statusline";
469
550
  }>>;
470
551
  capturedAt: z.ZodOptional<z.ZodString>;
471
552
  stale: z.ZodOptional<z.ZodBoolean>;
553
+ ageMs: z.ZodOptional<z.ZodNumber>;
554
+ freshness: z.ZodOptional<z.ZodEnum<{
555
+ fresh: "fresh";
556
+ aging: "aging";
557
+ stale: "stale";
558
+ }>>;
472
559
  fiveHourLabel: z.ZodOptional<z.ZodString>;
473
560
  sevenDayLabel: z.ZodOptional<z.ZodString>;
474
561
  limitId: z.ZodOptional<z.ZodString>;
@@ -514,6 +601,10 @@ export declare const zaiProviderQuotaStateSchema: z.ZodObject<{
514
601
  updatedAt: z.ZodString;
515
602
  unavailable: z.ZodBoolean;
516
603
  notApplicable: z.ZodOptional<z.ZodBoolean>;
604
+ source: z.ZodOptional<z.ZodEnum<{
605
+ promoclock: "promoclock";
606
+ schedule: "schedule";
607
+ }>>;
517
608
  }, z.core.$strip>>>;
518
609
  failure: z.ZodOptional<z.ZodNullable<z.ZodObject<{
519
610
  severity: z.ZodEnum<{
@@ -561,9 +652,21 @@ export declare const providerQuotaMapSchema: z.ZodObject<{
561
652
  api: "api";
562
653
  cache: "cache";
563
654
  session: "session";
655
+ statusline: "statusline";
656
+ }>>;
657
+ capturedSource: z.ZodOptional<z.ZodEnum<{
658
+ api: "api";
659
+ session: "session";
660
+ statusline: "statusline";
564
661
  }>>;
565
662
  capturedAt: z.ZodOptional<z.ZodString>;
566
663
  stale: z.ZodOptional<z.ZodBoolean>;
664
+ ageMs: z.ZodOptional<z.ZodNumber>;
665
+ freshness: z.ZodOptional<z.ZodEnum<{
666
+ fresh: "fresh";
667
+ aging: "aging";
668
+ stale: "stale";
669
+ }>>;
567
670
  fiveHourLabel: z.ZodOptional<z.ZodString>;
568
671
  sevenDayLabel: z.ZodOptional<z.ZodString>;
569
672
  limitId: z.ZodOptional<z.ZodString>;
@@ -609,6 +712,10 @@ export declare const providerQuotaMapSchema: z.ZodObject<{
609
712
  updatedAt: z.ZodString;
610
713
  unavailable: z.ZodBoolean;
611
714
  notApplicable: z.ZodOptional<z.ZodBoolean>;
715
+ source: z.ZodOptional<z.ZodEnum<{
716
+ promoclock: "promoclock";
717
+ schedule: "schedule";
718
+ }>>;
612
719
  }, z.core.$strip>>>;
613
720
  failure: z.ZodOptional<z.ZodNullable<z.ZodObject<{
614
721
  severity: z.ZodEnum<{
@@ -655,9 +762,21 @@ export declare const providerQuotaMapSchema: z.ZodObject<{
655
762
  api: "api";
656
763
  cache: "cache";
657
764
  session: "session";
765
+ statusline: "statusline";
766
+ }>>;
767
+ capturedSource: z.ZodOptional<z.ZodEnum<{
768
+ api: "api";
769
+ session: "session";
770
+ statusline: "statusline";
658
771
  }>>;
659
772
  capturedAt: z.ZodOptional<z.ZodString>;
660
773
  stale: z.ZodOptional<z.ZodBoolean>;
774
+ ageMs: z.ZodOptional<z.ZodNumber>;
775
+ freshness: z.ZodOptional<z.ZodEnum<{
776
+ fresh: "fresh";
777
+ aging: "aging";
778
+ stale: "stale";
779
+ }>>;
661
780
  fiveHourLabel: z.ZodOptional<z.ZodString>;
662
781
  sevenDayLabel: z.ZodOptional<z.ZodString>;
663
782
  limitId: z.ZodOptional<z.ZodString>;
@@ -703,6 +822,10 @@ export declare const providerQuotaMapSchema: z.ZodObject<{
703
822
  updatedAt: z.ZodString;
704
823
  unavailable: z.ZodBoolean;
705
824
  notApplicable: z.ZodOptional<z.ZodBoolean>;
825
+ source: z.ZodOptional<z.ZodEnum<{
826
+ promoclock: "promoclock";
827
+ schedule: "schedule";
828
+ }>>;
706
829
  }, z.core.$strip>>>;
707
830
  failure: z.ZodOptional<z.ZodNullable<z.ZodObject<{
708
831
  severity: z.ZodEnum<{
@@ -749,9 +872,21 @@ export declare const providerQuotaMapSchema: z.ZodObject<{
749
872
  api: "api";
750
873
  cache: "cache";
751
874
  session: "session";
875
+ statusline: "statusline";
876
+ }>>;
877
+ capturedSource: z.ZodOptional<z.ZodEnum<{
878
+ api: "api";
879
+ session: "session";
880
+ statusline: "statusline";
752
881
  }>>;
753
882
  capturedAt: z.ZodOptional<z.ZodString>;
754
883
  stale: z.ZodOptional<z.ZodBoolean>;
884
+ ageMs: z.ZodOptional<z.ZodNumber>;
885
+ freshness: z.ZodOptional<z.ZodEnum<{
886
+ fresh: "fresh";
887
+ aging: "aging";
888
+ stale: "stale";
889
+ }>>;
755
890
  fiveHourLabel: z.ZodOptional<z.ZodString>;
756
891
  sevenDayLabel: z.ZodOptional<z.ZodString>;
757
892
  limitId: z.ZodOptional<z.ZodString>;
@@ -797,6 +932,10 @@ export declare const providerQuotaMapSchema: z.ZodObject<{
797
932
  updatedAt: z.ZodString;
798
933
  unavailable: z.ZodBoolean;
799
934
  notApplicable: z.ZodOptional<z.ZodBoolean>;
935
+ source: z.ZodOptional<z.ZodEnum<{
936
+ promoclock: "promoclock";
937
+ schedule: "schedule";
938
+ }>>;
800
939
  }, z.core.$strip>>>;
801
940
  failure: z.ZodOptional<z.ZodNullable<z.ZodObject<{
802
941
  severity: z.ZodEnum<{
@@ -10,7 +10,7 @@
10
10
  * @module schemas/quota
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.providerQuotaMapSchema = exports.zaiProviderQuotaStateSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.quotaStateSchema = exports.codexResetCreditsSnapshotSchema = exports.codexResetCreditSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaWindowSchema = void 0;
13
+ exports.providerQuotaMapSchema = exports.zaiProviderQuotaStateSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.quotaStateSchema = exports.codexResetCreditsSnapshotSchema = exports.codexResetCreditSchema = exports.quotaFreshnessSchema = exports.quotaCapturedSourceSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaWindowSchema = void 0;
14
14
  const zod_1 = require("zod");
15
15
  const providerIds_1 = require("../providerIds");
16
16
  // ── QuotaWindow ──
@@ -27,7 +27,18 @@ exports.quotaFailureKindSchema = zod_1.z.enum([
27
27
  'unknown',
28
28
  ]);
29
29
  exports.quotaProviderIdSchema = zod_1.z.enum(providerIds_1.QUOTA_PROVIDER_IDS);
30
- exports.quotaSourceSchema = zod_1.z.enum(['api', 'session', 'cache']);
30
+ exports.quotaSourceSchema = zod_1.z.enum([
31
+ 'api',
32
+ 'session',
33
+ 'cache',
34
+ 'statusline',
35
+ ]);
36
+ exports.quotaCapturedSourceSchema = zod_1.z.enum([
37
+ 'api',
38
+ 'session',
39
+ 'statusline',
40
+ ]);
41
+ exports.quotaFreshnessSchema = zod_1.z.enum(['fresh', 'aging', 'stale']);
31
42
  exports.codexResetCreditSchema = zod_1.z.object({
32
43
  title: zod_1.z.string().optional(),
33
44
  status: zod_1.z.string(),
@@ -54,8 +65,11 @@ exports.quotaStateSchema = zod_1.z.object({
54
65
  projectedSevenDay: zod_1.z.number().optional(),
55
66
  providerId: exports.quotaProviderIdSchema.optional(),
56
67
  source: exports.quotaSourceSchema.optional(),
68
+ capturedSource: exports.quotaCapturedSourceSchema.optional(),
57
69
  capturedAt: zod_1.z.string().optional(),
58
70
  stale: zod_1.z.boolean().optional(),
71
+ ageMs: zod_1.z.number().finite().nonnegative().optional(),
72
+ freshness: exports.quotaFreshnessSchema.optional(),
59
73
  fiveHourLabel: zod_1.z.string().optional(),
60
74
  sevenDayLabel: zod_1.z.string().optional(),
61
75
  limitId: zod_1.z.string().optional(),
@@ -78,6 +92,7 @@ exports.peakHoursStateSchema = zod_1.z.object({
78
92
  updatedAt: zod_1.z.string(),
79
93
  unavailable: zod_1.z.boolean(),
80
94
  notApplicable: zod_1.z.boolean().optional(),
95
+ source: zod_1.z.enum(['promoclock', 'schedule']).optional(),
81
96
  });
82
97
  // ── QuotaFailureDescriptor ──
83
98
  exports.quotaFailureDescriptorSchema = zod_1.z.object({
@@ -37,6 +37,7 @@ export declare const quotaHistorySampleSchema: z.ZodObject<{
37
37
  api: "api";
38
38
  cache: "cache";
39
39
  session: "session";
40
+ statusline: "statusline";
40
41
  }>>;
41
42
  stale: z.ZodOptional<z.ZodBoolean>;
42
43
  }, z.core.$strip>;
@@ -28,7 +28,7 @@ exports.quotaHistorySampleSchema = zod_1.z.object({
28
28
  sevenDay: zod_1.z.object({ utilization: zod_1.z.number(), resetsAt: zod_1.z.string() }),
29
29
  available: zod_1.z.boolean(),
30
30
  error: zod_1.z.string().optional(),
31
- source: zod_1.z.enum(['session', 'cache', 'api']).optional(),
31
+ source: zod_1.z.enum(['session', 'cache', 'api', 'statusline']).optional(),
32
32
  stale: zod_1.z.boolean().optional(),
33
33
  });
34
34
  // ── QuotaHistoryDailyBucket ──
@@ -52,6 +52,7 @@ export declare const sessionMessageSchema: z.ZodObject<{
52
52
  }, z.core.$strip>;
53
53
  }, z.core.$strip>>;
54
54
  content: z.ZodOptional<z.ZodUnknown>;
55
+ stop_reason: z.ZodOptional<z.ZodString>;
55
56
  }, z.core.$strip>;
56
57
  export declare const permissionModeSchema: z.ZodEnum<{
57
58
  default: "default";
@@ -136,6 +137,7 @@ export declare const userSessionEventSchema: z.ZodObject<{
136
137
  }, z.core.$strip>;
137
138
  }, z.core.$strip>>;
138
139
  content: z.ZodOptional<z.ZodUnknown>;
140
+ stop_reason: z.ZodOptional<z.ZodString>;
139
141
  }, z.core.$strip>;
140
142
  }, z.core.$strip>;
141
143
  export declare const assistantSessionEventSchema: z.ZodObject<{
@@ -215,6 +217,7 @@ export declare const assistantSessionEventSchema: z.ZodObject<{
215
217
  }, z.core.$strip>;
216
218
  }, z.core.$strip>>;
217
219
  content: z.ZodOptional<z.ZodUnknown>;
220
+ stop_reason: z.ZodOptional<z.ZodString>;
218
221
  }, z.core.$strip>;
219
222
  }, z.core.$strip>;
220
223
  export declare const summarySessionEventSchema: z.ZodType<SummarySessionEvent>;
@@ -295,6 +298,7 @@ export declare const systemSessionEventSchema: z.ZodObject<{
295
298
  }, z.core.$strip>;
296
299
  }, z.core.$strip>>;
297
300
  content: z.ZodOptional<z.ZodUnknown>;
301
+ stop_reason: z.ZodOptional<z.ZodString>;
298
302
  }, z.core.$strip>>;
299
303
  }, z.core.$strip>;
300
304
  export declare const toolUseSessionEventSchema: z.ZodObject<{
@@ -378,6 +382,7 @@ export declare const toolUseSessionEventSchema: z.ZodObject<{
378
382
  }, z.core.$strip>;
379
383
  }, z.core.$strip>>;
380
384
  content: z.ZodOptional<z.ZodUnknown>;
385
+ stop_reason: z.ZodOptional<z.ZodString>;
381
386
  }, z.core.$strip>>;
382
387
  }, z.core.$strip>;
383
388
  export declare const toolResultSessionEventSchema: z.ZodObject<{
@@ -462,6 +467,7 @@ export declare const toolResultSessionEventSchema: z.ZodObject<{
462
467
  }, z.core.$strip>;
463
468
  }, z.core.$strip>>;
464
469
  content: z.ZodOptional<z.ZodUnknown>;
470
+ stop_reason: z.ZodOptional<z.ZodString>;
465
471
  }, z.core.$strip>>;
466
472
  }, z.core.$strip>;
467
473
  export declare const sessionEventSchema: z.ZodType<SessionEvent>;
@@ -30,6 +30,7 @@ exports.sessionMessageSchema = zod_1.z.object({
30
30
  usage: exports.messageUsageSchema.optional(),
31
31
  normalizedUsage: usageNormalization_1.normalizedUsageSchema.optional(),
32
32
  content: zod_1.z.unknown().optional(),
33
+ stop_reason: zod_1.z.string().optional(),
33
34
  });
34
35
  // ── PermissionMode ──
35
36
  exports.permissionModeSchema = zod_1.z.enum([
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Zod schema for the public `state.json` contract (`schemaVersion: 1`).
3
+ *
4
+ * Mirrors the interfaces in `stateFile.ts` (keep in sync when those change;
5
+ * fields are only ever added). Consumers validating the file from another
6
+ * process import this from `sidekick-shared/schemas`.
7
+ *
8
+ * @module schemas/stateFile
9
+ */
10
+ import { z } from 'zod';
11
+ export declare const stateFileWriterSchema: z.ZodEnum<{
12
+ statusline: "statusline";
13
+ "cli-dashboard": "cli-dashboard";
14
+ "vscode-dashboard": "vscode-dashboard";
15
+ }>;
16
+ export declare const stateFileQuotaWindowSchema: z.ZodObject<{
17
+ utilization: z.ZodNumber;
18
+ resetsAt: z.ZodString;
19
+ }, z.core.$strip>;
20
+ export declare const stateFileQuotaSchema: z.ZodObject<{
21
+ fiveHour: z.ZodObject<{
22
+ utilization: z.ZodNumber;
23
+ resetsAt: z.ZodString;
24
+ }, z.core.$strip>;
25
+ sevenDay: z.ZodObject<{
26
+ utilization: z.ZodNumber;
27
+ resetsAt: z.ZodString;
28
+ }, z.core.$strip>;
29
+ source: z.ZodNullable<z.ZodEnum<{
30
+ api: "api";
31
+ cache: "cache";
32
+ session: "session";
33
+ statusline: "statusline";
34
+ }>>;
35
+ capturedSource: z.ZodNullable<z.ZodEnum<{
36
+ api: "api";
37
+ session: "session";
38
+ statusline: "statusline";
39
+ }>>;
40
+ capturedAt: z.ZodNullable<z.ZodString>;
41
+ ageMs: z.ZodNullable<z.ZodNumber>;
42
+ freshness: z.ZodNullable<z.ZodEnum<{
43
+ fresh: "fresh";
44
+ aging: "aging";
45
+ stale: "stale";
46
+ }>>;
47
+ }, z.core.$strip>;
48
+ export declare const stateFileAccountSchema: z.ZodObject<{
49
+ providerId: z.ZodEnum<{
50
+ "claude-code": "claude-code";
51
+ codex: "codex";
52
+ }>;
53
+ id: z.ZodNullable<z.ZodString>;
54
+ label: z.ZodNullable<z.ZodString>;
55
+ }, z.core.$strip>;
56
+ export declare const stateFileContextSchema: z.ZodObject<{
57
+ usedPercentage: z.ZodNullable<z.ZodNumber>;
58
+ contextWindowSize: z.ZodNullable<z.ZodNumber>;
59
+ totalInputTokens: z.ZodNullable<z.ZodNumber>;
60
+ totalOutputTokens: z.ZodNullable<z.ZodNumber>;
61
+ }, z.core.$strip>;
62
+ export declare const stateFileSessionSchema: z.ZodObject<{
63
+ sessionId: z.ZodNullable<z.ZodString>;
64
+ cwd: z.ZodNullable<z.ZodString>;
65
+ model: z.ZodNullable<z.ZodString>;
66
+ costUsd: z.ZodNullable<z.ZodNumber>;
67
+ durationMs: z.ZodNullable<z.ZodNumber>;
68
+ linesAdded: z.ZodNullable<z.ZodNumber>;
69
+ linesRemoved: z.ZodNullable<z.ZodNumber>;
70
+ promptCacheHitRatio: z.ZodNullable<z.ZodNumber>;
71
+ }, z.core.$strip>;
72
+ export declare const stateFileBillingBlockSchema: z.ZodObject<{
73
+ start: z.ZodString;
74
+ end: z.ZodString;
75
+ isActive: z.ZodBoolean;
76
+ tokens: z.ZodNumber;
77
+ costUsd: z.ZodNumber;
78
+ costProvenance: z.ZodEnum<{
79
+ none: "none";
80
+ reported: "reported";
81
+ estimated: "estimated";
82
+ unpriced: "unpriced";
83
+ mixed: "mixed";
84
+ }>;
85
+ burnRatePerMinute: z.ZodNumber;
86
+ projectedTokens: z.ZodNumber;
87
+ projectedCostUsd: z.ZodNumber;
88
+ remainingMs: z.ZodNumber;
89
+ }, z.core.$strip>;
90
+ export declare const sidekickStateFileSchema: z.ZodObject<{
91
+ schemaVersion: z.ZodLiteral<1>;
92
+ writtenAt: z.ZodString;
93
+ writer: z.ZodEnum<{
94
+ statusline: "statusline";
95
+ "cli-dashboard": "cli-dashboard";
96
+ "vscode-dashboard": "vscode-dashboard";
97
+ }>;
98
+ account: z.ZodNullable<z.ZodObject<{
99
+ providerId: z.ZodEnum<{
100
+ "claude-code": "claude-code";
101
+ codex: "codex";
102
+ }>;
103
+ id: z.ZodNullable<z.ZodString>;
104
+ label: z.ZodNullable<z.ZodString>;
105
+ }, z.core.$strip>>;
106
+ quota: z.ZodObject<{
107
+ claude: z.ZodNullable<z.ZodObject<{
108
+ fiveHour: z.ZodObject<{
109
+ utilization: z.ZodNumber;
110
+ resetsAt: z.ZodString;
111
+ }, z.core.$strip>;
112
+ sevenDay: z.ZodObject<{
113
+ utilization: z.ZodNumber;
114
+ resetsAt: z.ZodString;
115
+ }, z.core.$strip>;
116
+ source: z.ZodNullable<z.ZodEnum<{
117
+ api: "api";
118
+ cache: "cache";
119
+ session: "session";
120
+ statusline: "statusline";
121
+ }>>;
122
+ capturedSource: z.ZodNullable<z.ZodEnum<{
123
+ api: "api";
124
+ session: "session";
125
+ statusline: "statusline";
126
+ }>>;
127
+ capturedAt: z.ZodNullable<z.ZodString>;
128
+ ageMs: z.ZodNullable<z.ZodNumber>;
129
+ freshness: z.ZodNullable<z.ZodEnum<{
130
+ fresh: "fresh";
131
+ aging: "aging";
132
+ stale: "stale";
133
+ }>>;
134
+ }, z.core.$strip>>;
135
+ codex: z.ZodNullable<z.ZodObject<{
136
+ fiveHour: z.ZodObject<{
137
+ utilization: z.ZodNumber;
138
+ resetsAt: z.ZodString;
139
+ }, z.core.$strip>;
140
+ sevenDay: z.ZodObject<{
141
+ utilization: z.ZodNumber;
142
+ resetsAt: z.ZodString;
143
+ }, z.core.$strip>;
144
+ source: z.ZodNullable<z.ZodEnum<{
145
+ api: "api";
146
+ cache: "cache";
147
+ session: "session";
148
+ statusline: "statusline";
149
+ }>>;
150
+ capturedSource: z.ZodNullable<z.ZodEnum<{
151
+ api: "api";
152
+ session: "session";
153
+ statusline: "statusline";
154
+ }>>;
155
+ capturedAt: z.ZodNullable<z.ZodString>;
156
+ ageMs: z.ZodNullable<z.ZodNumber>;
157
+ freshness: z.ZodNullable<z.ZodEnum<{
158
+ fresh: "fresh";
159
+ aging: "aging";
160
+ stale: "stale";
161
+ }>>;
162
+ }, z.core.$strip>>;
163
+ }, z.core.$strip>;
164
+ context: z.ZodNullable<z.ZodObject<{
165
+ usedPercentage: z.ZodNullable<z.ZodNumber>;
166
+ contextWindowSize: z.ZodNullable<z.ZodNumber>;
167
+ totalInputTokens: z.ZodNullable<z.ZodNumber>;
168
+ totalOutputTokens: z.ZodNullable<z.ZodNumber>;
169
+ }, z.core.$strip>>;
170
+ session: z.ZodNullable<z.ZodObject<{
171
+ sessionId: z.ZodNullable<z.ZodString>;
172
+ cwd: z.ZodNullable<z.ZodString>;
173
+ model: z.ZodNullable<z.ZodString>;
174
+ costUsd: z.ZodNullable<z.ZodNumber>;
175
+ durationMs: z.ZodNullable<z.ZodNumber>;
176
+ linesAdded: z.ZodNullable<z.ZodNumber>;
177
+ linesRemoved: z.ZodNullable<z.ZodNumber>;
178
+ promptCacheHitRatio: z.ZodNullable<z.ZodNumber>;
179
+ }, z.core.$strip>>;
180
+ billingBlock: z.ZodNullable<z.ZodObject<{
181
+ start: z.ZodString;
182
+ end: z.ZodString;
183
+ isActive: z.ZodBoolean;
184
+ tokens: z.ZodNumber;
185
+ costUsd: z.ZodNumber;
186
+ costProvenance: z.ZodEnum<{
187
+ none: "none";
188
+ reported: "reported";
189
+ estimated: "estimated";
190
+ unpriced: "unpriced";
191
+ mixed: "mixed";
192
+ }>;
193
+ burnRatePerMinute: z.ZodNumber;
194
+ projectedTokens: z.ZodNumber;
195
+ projectedCostUsd: z.ZodNumber;
196
+ remainingMs: z.ZodNumber;
197
+ }, z.core.$strip>>;
198
+ }, z.core.$strip>;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ /**
3
+ * Zod schema for the public `state.json` contract (`schemaVersion: 1`).
4
+ *
5
+ * Mirrors the interfaces in `stateFile.ts` (keep in sync when those change;
6
+ * fields are only ever added). Consumers validating the file from another
7
+ * process import this from `sidekick-shared/schemas`.
8
+ *
9
+ * @module schemas/stateFile
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.sidekickStateFileSchema = exports.stateFileBillingBlockSchema = exports.stateFileSessionSchema = exports.stateFileContextSchema = exports.stateFileAccountSchema = exports.stateFileQuotaSchema = exports.stateFileQuotaWindowSchema = exports.stateFileWriterSchema = void 0;
13
+ const zod_1 = require("zod");
14
+ exports.stateFileWriterSchema = zod_1.z.enum([
15
+ 'statusline',
16
+ 'cli-dashboard',
17
+ 'vscode-dashboard',
18
+ ]);
19
+ exports.stateFileQuotaWindowSchema = zod_1.z.object({
20
+ utilization: zod_1.z.number(),
21
+ resetsAt: zod_1.z.string(),
22
+ });
23
+ exports.stateFileQuotaSchema = zod_1.z.object({
24
+ fiveHour: exports.stateFileQuotaWindowSchema,
25
+ sevenDay: exports.stateFileQuotaWindowSchema,
26
+ source: zod_1.z.enum(['api', 'session', 'cache', 'statusline']).nullable(),
27
+ capturedSource: zod_1.z.enum(['api', 'session', 'statusline']).nullable(),
28
+ capturedAt: zod_1.z.string().nullable(),
29
+ ageMs: zod_1.z.number().nullable(),
30
+ freshness: zod_1.z.enum(['fresh', 'aging', 'stale']).nullable(),
31
+ });
32
+ exports.stateFileAccountSchema = zod_1.z.object({
33
+ providerId: zod_1.z.enum(['claude-code', 'codex']),
34
+ id: zod_1.z.string().nullable(),
35
+ label: zod_1.z.string().nullable(),
36
+ });
37
+ exports.stateFileContextSchema = zod_1.z.object({
38
+ usedPercentage: zod_1.z.number().nullable(),
39
+ contextWindowSize: zod_1.z.number().nullable(),
40
+ totalInputTokens: zod_1.z.number().nullable(),
41
+ totalOutputTokens: zod_1.z.number().nullable(),
42
+ });
43
+ exports.stateFileSessionSchema = zod_1.z.object({
44
+ sessionId: zod_1.z.string().nullable(),
45
+ cwd: zod_1.z.string().nullable(),
46
+ model: zod_1.z.string().nullable(),
47
+ costUsd: zod_1.z.number().nullable(),
48
+ durationMs: zod_1.z.number().nullable(),
49
+ linesAdded: zod_1.z.number().nullable(),
50
+ linesRemoved: zod_1.z.number().nullable(),
51
+ promptCacheHitRatio: zod_1.z.number().nullable(),
52
+ });
53
+ exports.stateFileBillingBlockSchema = zod_1.z.object({
54
+ start: zod_1.z.string(),
55
+ end: zod_1.z.string(),
56
+ isActive: zod_1.z.boolean(),
57
+ tokens: zod_1.z.number(),
58
+ costUsd: zod_1.z.number(),
59
+ costProvenance: zod_1.z.enum(['reported', 'estimated', 'mixed', 'unpriced', 'none']),
60
+ burnRatePerMinute: zod_1.z.number(),
61
+ projectedTokens: zod_1.z.number(),
62
+ projectedCostUsd: zod_1.z.number(),
63
+ remainingMs: zod_1.z.number(),
64
+ });
65
+ exports.sidekickStateFileSchema = zod_1.z.object({
66
+ schemaVersion: zod_1.z.literal(1),
67
+ writtenAt: zod_1.z.string(),
68
+ writer: exports.stateFileWriterSchema,
69
+ account: exports.stateFileAccountSchema.nullable(),
70
+ quota: zod_1.z.object({
71
+ claude: exports.stateFileQuotaSchema.nullable(),
72
+ codex: exports.stateFileQuotaSchema.nullable(),
73
+ }),
74
+ context: exports.stateFileContextSchema.nullable(),
75
+ session: exports.stateFileSessionSchema.nullable(),
76
+ billingBlock: exports.stateFileBillingBlockSchema.nullable(),
77
+ });
@@ -78,6 +78,8 @@ exports.canonicalSessionTranscriptSchema = zod_1.z.object({
78
78
  totalTokens: zod_1.z.number().finite().nonnegative(),
79
79
  }),
80
80
  totalCostUsd: zod_1.z.number().finite().nonnegative().nullable(),
81
+ pricedCostUsd: zod_1.z.number().finite().nonnegative(),
82
+ unpricedEvents: zod_1.z.number().int().nonnegative(),
81
83
  }),
82
84
  provenance: zod_1.z.object({
83
85
  source: zod_1.z.literal('session-events'),