dsh-budget 0.1.2 → 0.3.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.
@@ -0,0 +1,13 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ //#endregion
13
+ export { __exportAll as t };
@@ -1,4 +1,4 @@
1
- import { t as BUDGET_INVOCATIONS } from "./wire-DVO8yw7L.js";
1
+ import { t as BUDGET_INVOCATIONS } from "./wire-zYaXk7IG.js";
2
2
  //#region src/typert.host.ts
3
3
  /**
4
4
  * The hand-written Typert HOST manifest for `dsh-budget`, exported as
@@ -30,6 +30,27 @@ export interface ModelUsage extends ScopeUsage {
30
30
  /** Latency samples kept for this model (ms). */
31
31
  latencyMs: readonly number[];
32
32
  }
33
+ /** One persisted model usage entry (latency windows stay process-local, so they are excluded). */
34
+ export interface PersistedModelUsage {
35
+ provider: string;
36
+ model: string;
37
+ inputTokens: number;
38
+ outputTokens: number;
39
+ cacheReadTokens: number;
40
+ cacheWriteTokens: number;
41
+ costUsd: number;
42
+ carbonKg: number;
43
+ }
44
+ /** One persisted day/month bucket. */
45
+ export interface PersistedBucket {
46
+ total: ScopeUsage;
47
+ models: Record<string, PersistedModelUsage>;
48
+ }
49
+ /** The durable cross-restart subset of aggregator state (day + month buckets). */
50
+ export interface PersistedBudgetState {
51
+ days: Record<string, PersistedBucket>;
52
+ months: Record<string, PersistedBucket>;
53
+ }
33
54
  /** One recorded threshold alert. */
34
55
  export interface AlertRecord {
35
56
  scope: 'session' | 'daily' | 'monthly';
@@ -38,6 +59,12 @@ export interface AlertRecord {
38
59
  usedUsd: number;
39
60
  capUsd: number;
40
61
  }
62
+ /** One day's aggregated usage in the per-day history. */
63
+ export interface DayUsage {
64
+ /** UTC day key, `YYYY-MM-DD`. */
65
+ day: string;
66
+ usage: ScopeUsage;
67
+ }
41
68
  /** UTC day key, e.g. `2026-08-16`. */
42
69
  export declare function dayKey(timestamp: number): string;
43
70
  /** UTC month key, e.g. `2026-08`. */
@@ -51,6 +78,8 @@ export interface BudgetSnapshot {
51
78
  /** Alerts in reverse chronological order. */
52
79
  alerts: readonly AlertRecord[];
53
80
  blockedScopes: readonly ('session' | 'daily' | 'monthly')[];
81
+ /** Per-day usage over the last `historyDays` days, oldest first. */
82
+ days: readonly DayUsage[];
54
83
  }
55
84
  /**
56
85
  * The runtime aggregator. All methods are synchronous; the caller invokes
@@ -88,6 +117,14 @@ export declare class BudgetAggregator {
88
117
  todayUsage(): ScopeUsage;
89
118
  /** Read this month's usage. */
90
119
  monthUsage(): ScopeUsage;
120
+ /**
121
+ * Per-day usage over the last `limit` days, oldest first, zero-filled for
122
+ * days with no recorded usage. Days are UTC keys derived from the injected
123
+ * clock, so a fixed test clock yields a stable series.
124
+ *
125
+ * @param limit - number of trailing days to return.
126
+ */
127
+ dayHistory(limit: number): DayUsage[];
91
128
  /** Per-model usage (today) with latency percentiles, sorted by cost. */
92
129
  modelUsage(): ModelUsage[];
93
130
  /** Record one threshold alert (bounded to the most recent 50). */
@@ -108,5 +145,15 @@ export declare class BudgetAggregator {
108
145
  * @returns the session-attributed snapshot.
109
146
  */
110
147
  snapshotFor(sessionId: string): BudgetSnapshot;
148
+ /** Serialize the day/month buckets (the durable cross-restart subset). */
149
+ exportState(): PersistedBudgetState;
150
+ /** Merge a persisted state back into the live day/month buckets (restore on mount). */
151
+ restoreState(state: PersistedBudgetState): void;
152
+ /** Serialize one day/month bucket map into plain JSON. */
153
+ private serializeBuckets;
154
+ /** Merge one persisted bucket map into a live bucket map (accumulating, not replacing). */
155
+ private restoreBuckets;
156
+ /** Add one scope usage into another (accumulate every field). */
157
+ private addToScope;
111
158
  }
112
159
  //# sourceMappingURL=usage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/aggregate/usage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,0BAA0B;AAC1B,wBAAgB,UAAU,IAAI,UAAU,CAEvC;AAED,4DAA4D;AAC5D,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7B;AAED,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IACtC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,sCAAsC;AACtC,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,qCAAqC;AACrC,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElD;AAgBD,uHAAuH;AACvH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,CAAA;IACnB,KAAK,EAAE,UAAU,CAAA;IACjB,SAAS,EAAE,UAAU,CAAA;IACrB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;IAC7B,6CAA6C;IAC7C,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;IAC9B,aAAa,EAAE,SAAS,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,EAAE,CAAA;CAC5D;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAKf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAkB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJzE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAElD,yFAAyF;gBAC5D,MAAM,EAAE,cAAc,EAAmB,GAAG,GAAE,MAAM,MAAiB;IAelG,2EAA2E;IAC3E,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrD,sEAAsE;IACtE,WAAW,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAIlD;;;;;;OAMG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAuCvD,uDAAuD;IACvD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQtD,mDAAmD;IACnD,OAAO,CAAC,QAAQ;IA8BhB,qDAAqD;IACrD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU;IAI3C,0BAA0B;IAC1B,UAAU,IAAI,UAAU;IAIxB,+BAA+B;IAC/B,UAAU,IAAI,UAAU;IAIxB,wEAAwE;IACxE,UAAU,IAAI,UAAU,EAAE;IAW1B,kEAAkE;IAClE,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAMrC,qFAAqF;IACrF,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAK/F,gFAAgF;IAChF,IAAI,aAAa,IAAI,SAAS,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,EAAE,CAEhE;IAED,qEAAqE;IACrE,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI;IAIxD,6EAA6E;IAC7E,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI;IAI1D;;;;;;OAMG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;CAU/C"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/aggregate/usage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,0BAA0B;AAC1B,wBAAgB,UAAU,IAAI,UAAU,CAEvC;AAED,4DAA4D;AAC5D,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7B;AAED,kGAAkG;AAClG,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAC5C;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CACxC;AAED,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IACtC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,UAAU,CAAA;CAClB;AAED,sCAAsC;AACtC,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,qCAAqC;AACrC,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElD;AAgBD,uHAAuH;AACvH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,CAAA;IACnB,KAAK,EAAE,UAAU,CAAA;IACjB,SAAS,EAAE,UAAU,CAAA;IACrB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;IAC7B,6CAA6C;IAC7C,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;IAC9B,aAAa,EAAE,SAAS,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,EAAE,CAAA;IAC3D,oEAAoE;IACpE,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAA;CAC1B;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAKf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAkB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJzE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAElD,yFAAyF;gBAC5D,MAAM,EAAE,cAAc,EAAmB,GAAG,GAAE,MAAM,MAAiB;IAelG,2EAA2E;IAC3E,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrD,sEAAsE;IACtE,WAAW,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAIlD;;;;;;OAMG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAuCvD,uDAAuD;IACvD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQtD,mDAAmD;IACnD,OAAO,CAAC,QAAQ;IA8BhB,qDAAqD;IACrD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU;IAI3C,0BAA0B;IAC1B,UAAU,IAAI,UAAU;IAIxB,+BAA+B;IAC/B,UAAU,IAAI,UAAU;IAIxB;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE;IAUrC,wEAAwE;IACxE,UAAU,IAAI,UAAU,EAAE;IAW1B,kEAAkE;IAClE,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAMrC,qFAAqF;IACrF,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAK/F,gFAAgF;IAChF,IAAI,aAAa,IAAI,SAAS,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,EAAE,CAEhE;IAED,qEAAqE;IACrE,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI;IAIxD,6EAA6E;IAC7E,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI;IAI1D;;;;;;OAMG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAY9C,0EAA0E;IAC1E,WAAW,IAAI,oBAAoB;IAOnC,uFAAuF;IACvF,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAK/C,0DAA0D;IAC1D,OAAO,CAAC,gBAAgB;IAuBxB,2FAA2F;IAC3F,OAAO,CAAC,cAAc;IAgCtB,iEAAiE;IACjE,OAAO,CAAC,UAAU;CAQnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"BudgetTab.d.ts","sourceRoot":"","sources":["../../../src/client/BudgetTab.tsx"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAE7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,yFAAyF;AACzF,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,MAAM,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAA;IACnC,oDAAoD;IACpD,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5D,sDAAsD;IACtD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CAClD;AAED,oEAAoE;AACpE,MAAM,MAAM,cAAc,GACxB,YAAY,CAAC,sBAAsB,CAAC,GAClC,WAAW,CAAC,iBAAiB,CAAC,GAC9B,UAAU,CAAC,iBAAiB,CAAC,CAAA;AAOjC,2BAA2B;AAC3B,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,cAAc,GAAG,SAAS,CAqLxF"}
1
+ {"version":3,"file":"BudgetTab.d.ts","sourceRoot":"","sources":["../../../src/client/BudgetTab.tsx"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAE7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,yFAAyF;AACzF,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,MAAM,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAA;IACnC,oDAAoD;IACpD,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5D,sDAAsD;IACtD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CAClD;AAED,oEAAoE;AACpE,MAAM,MAAM,cAAc,GACxB,YAAY,CAAC,sBAAsB,CAAC,GAClC,WAAW,CAAC,iBAAiB,CAAC,GAC9B,UAAU,CAAC,iBAAiB,CAAC,CAAA;AAOjC,2BAA2B;AAC3B,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,cAAc,GAAG,SAAS,CAuNxF"}
@@ -34,6 +34,7 @@ export declare const zh: {
34
34
  readonly saved: "已保存(会话内生效,重载后恢复 cordis.yml 配置)";
35
35
  readonly degraded: "已降级至";
36
36
  readonly history: "最近告警";
37
+ readonly usageCurve: "用量曲线";
37
38
  };
38
39
  /** English dictionary (source of truth for keys). */
39
40
  export declare const en: Record<keyof typeof zh, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,qCAAqC;AACrC,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCL,CAAA;AAEV,qDAAqD;AACrD,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAkCrC,CAAA;AAEV,4BAA4B;AAC5B,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,qCAAqC;AACrC,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCL,CAAA;AAEV,qDAAqD;AACrD,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAmCrC,CAAA;AAEV,4BAA4B;AAC5B,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,EAAE,CAAA"}
@@ -94,6 +94,14 @@ export declare const BUDGET_REMOTE: Readonly<{
94
94
  alertsEnabled: import("zod").ZodBoolean;
95
95
  desktopNotifications: import("zod").ZodBoolean;
96
96
  degradedModel: import("zod").ZodNullable<import("zod").ZodString>;
97
+ days: import("zod").ZodArray<import("zod").ZodObject<{
98
+ day: import("zod").ZodString;
99
+ costUsd: import("zod").ZodNumber;
100
+ tokens: import("zod").ZodNumber;
101
+ carbonKg: import("zod").ZodNumber;
102
+ }, import("zod/v4/core").$strip>>;
103
+ warnRatio: import("zod").ZodNumber;
104
+ refreshIntervalMs: import("zod").ZodNumber;
97
105
  }, import("zod/v4/core").$strip>;
98
106
  }>;
99
107
  readonly sourceLocation: Readonly<{
@@ -174,6 +182,14 @@ export declare const BUDGET_REMOTE: Readonly<{
174
182
  alertsEnabled: import("zod").ZodBoolean;
175
183
  desktopNotifications: import("zod").ZodBoolean;
176
184
  degradedModel: import("zod").ZodNullable<import("zod").ZodString>;
185
+ days: import("zod").ZodArray<import("zod").ZodObject<{
186
+ day: import("zod").ZodString;
187
+ costUsd: import("zod").ZodNumber;
188
+ tokens: import("zod").ZodNumber;
189
+ carbonKg: import("zod").ZodNumber;
190
+ }, import("zod/v4/core").$strip>>;
191
+ warnRatio: import("zod").ZodNumber;
192
+ refreshIntervalMs: import("zod").ZodNumber;
177
193
  }, import("zod/v4/core").$strip>;
178
194
  }>;
179
195
  readonly sourceLocation: Readonly<{
@@ -258,6 +274,14 @@ export declare const BUDGET_REMOTE: Readonly<{
258
274
  alertsEnabled: import("zod").ZodBoolean;
259
275
  desktopNotifications: import("zod").ZodBoolean;
260
276
  degradedModel: import("zod").ZodNullable<import("zod").ZodString>;
277
+ days: import("zod").ZodArray<import("zod").ZodObject<{
278
+ day: import("zod").ZodString;
279
+ costUsd: import("zod").ZodNumber;
280
+ tokens: import("zod").ZodNumber;
281
+ carbonKg: import("zod").ZodNumber;
282
+ }, import("zod/v4/core").$strip>>;
283
+ warnRatio: import("zod").ZodNumber;
284
+ refreshIntervalMs: import("zod").ZodNumber;
261
285
  }, import("zod/v4/core").$strip>;
262
286
  }>;
263
287
  readonly sourceLocation: Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../src/client/remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAA;AAE9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,4BAA4B;QACpC,6DAA6D;QAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;QACnE,4DAA4D;QAC5D,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;QAC1E,sDAAsD;QACtD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;KAChE;IACD,UAAU,eAAe;QACvB,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;QAC5E,oBAAoB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;QACnF,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;KACzE;IACD,UAAU,wBAAwB;QAChC,MAAM,EAAE,4BAA4B,CAAA;KACrC;CACF;AAED,iEAAiE;AACjE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGW,CAAA"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../src/client/remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAA;AAE9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,4BAA4B;QACpC,6DAA6D;QAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;QACnE,4DAA4D;QAC5D,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;QAC1E,sDAAsD;QACtD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;KAChE;IACD,UAAU,eAAe;QACvB,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;QAC5E,oBAAoB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;QACnF,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;KACzE;IACD,UAAU,wBAAwB;QAChC,MAAM,EAAE,4BAA4B,CAAA;KACrC;CACF;AAED,iEAAiE;AACjE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGW,CAAA"}
@@ -31,6 +31,13 @@ export interface BudgetsConfig {
31
31
  daily?: number;
32
32
  monthly?: number;
33
33
  }
34
+ /** Durable persistence of the daily/monthly buckets across restarts. */
35
+ export interface PersistenceConfig {
36
+ /** Persist day/month usage to the storage domain (default true). */
37
+ enabled?: boolean;
38
+ /** Milliseconds between persistence snapshots (default 10000). */
39
+ intervalMs?: number;
40
+ }
34
41
  /** Raw plugin config — every field optional; {@link resolveConfig} supplies the defaults. */
35
42
  export interface Config {
36
43
  /** Per-model USD prices per 1M tokens, merged over the built-in table. */
@@ -77,6 +84,8 @@ export interface Config {
77
84
  outputLanguage?: 'en' | 'zh';
78
85
  /** Days of per-day usage history kept in the panel snapshot. */
79
86
  historyDays?: number;
87
+ /** Durable daily/monthly persistence across restarts. */
88
+ persistence?: PersistenceConfig;
80
89
  }
81
90
  /** Fully resolved config. */
82
91
  export interface ResolvedConfig {
@@ -119,6 +128,10 @@ export interface ResolvedConfig {
119
128
  };
120
129
  readonly outputLanguage: 'en' | 'zh';
121
130
  readonly historyDays: number;
131
+ readonly persistence: {
132
+ enabled: boolean;
133
+ intervalMs: number;
134
+ };
122
135
  }
123
136
  /** Schemastery schema: the loader validates and fills defaults before `apply`. */
124
137
  export declare const Config: z<Config>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -34,14 +34,18 @@ export declare const inject: string[];
34
34
  export { Config, resolveConfig } from './config.js';
35
35
  export type { ResolvedConfig } from './config.js';
36
36
  export { BudgetAggregator } from './aggregate/usage.js';
37
+ export type { PersistedBudgetState, PersistedBucket, PersistedModelUsage } from './aggregate/usage.js';
37
38
  export { checkBudgets, degradationFor } from './governance.js';
38
39
  export { BudgetService, effectiveCap } from './service.js';
39
40
  export { budgetCommand, parseBudgetArgs, renderBudgetModels, renderBudgetOverview } from './command.js';
40
41
  export { ALERT_EVENT, BLOCK_EVENT } from './events.js';
42
+ export { budgetDomainSpec, budgetStateSchema } from './store.js';
41
43
  /**
42
- * Mount the plugin: resolve config, build the aggregator, wire the session
43
- * event feed, the budget checks, the `llm/stream` blocker, the webhook
44
- * alerts, the `budget` Remote service, and the `/budget` command.
44
+ * Mount the plugin: resolve config, build the aggregator, restore any durable
45
+ * day/month buckets, wire the session event feed, the budget checks, the
46
+ * `llm/stream` blocker, the webhook alerts, the `budget` Remote service, and
47
+ * the `/budget` command. Persistence is optional and degrades to in-memory
48
+ * when the storage domain is absent.
45
49
  *
46
50
  * @param ctx - the plugin context (host).
47
51
  * @param config - raw plugin config.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAA;AAOnD,eAAO,MAAM,IAAI,eAAe,CAAA;AAEhC,mEAAmE;AACnE,eAAO,MAAM,MAAM,UAAe,CAAA;AAElC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACvG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAatD;;;;;;;GAOG;AACH,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiIvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAA;AASnD,eAAO,MAAM,IAAI,eAAe,CAAA;AAEhC,mEAAmE;AACnE,eAAO,MAAM,MAAM,UAAe,CAAA;AAElC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AACtG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACvG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAqBhE;;;;;;;;;GASG;AACH,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmKvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAA0B,KAAK,YAAY,EAAkC,MAAM,WAAW,CAAA;AAErG,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,gEAAgE;QAChE,MAAM,EAAE,aAAa,CAAA;KACtB;CACF;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,EAAE,OAAO,CAAA;IACtB,oBAAoB,EAAE,OAAO,CAAA;CAC9B;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAIjH;AAUD;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,mBAAmB;IAUlD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAT3B,2EAA2E;IAC3E,MAAM,CAAC,MAAM,UAAK;IAElB;;;OAGG;gBAED,GAAG,EAAE,OAAO,EACK,QAAQ,EAAE;QACzB,UAAU,EAAE,gBAAgB,CAAA;QAC5B,MAAM,EAAE,cAAc,CAAA;QACtB,QAAQ,EAAE,eAAe,CAAA;QACzB,+DAA+D;QAC/D,SAAS,EAAE,MAAM,MAAM,CAAA;QACvB,oEAAoE;QACpE,WAAW,EAAE,MAAM;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAA;QAC3D,iDAAiD;QACjD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;KACzC;IAKH,kDAAkD;IAClD,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY;IAyCxC,4EAA4E;IAC5E,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY;IAiB/C,gEAAgE;IAChE,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY;CAK1C"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAA0B,KAAK,YAAY,EAAgD,MAAM,WAAW,CAAA;AAEnH,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,gEAAgE;QAChE,MAAM,EAAE,aAAa,CAAA;KACtB;CACF;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,EAAE,OAAO,CAAA;IACtB,oBAAoB,EAAE,OAAO,CAAA;CAC9B;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAIjH;AAUD;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,mBAAmB;IAUlD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAT3B,2EAA2E;IAC3E,MAAM,CAAC,MAAM,UAAK;IAElB;;;OAGG;gBAED,GAAG,EAAE,OAAO,EACK,QAAQ,EAAE;QACzB,UAAU,EAAE,gBAAgB,CAAA;QAC5B,MAAM,EAAE,cAAc,CAAA;QACtB,QAAQ,EAAE,eAAe,CAAA;QACzB,+DAA+D;QAC/D,SAAS,EAAE,MAAM,MAAM,CAAA;QACvB,oEAAoE;QACpE,WAAW,EAAE,MAAM;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAA;QAC3D,iDAAiD;QACjD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;KACzC;IAKH,kDAAkD;IAClD,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY;IAkDxC,4EAA4E;IAC5E,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY;IAiB/C,gEAAgE;IAChE,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY;CAK1C"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Durable budget persistence over the harness storage domain. The `dsh_budget`
3
+ * domain keeps the day/month buckets across restarts, so a restart restores
4
+ * cumulative daily and monthly usage instead of rebuilding it from the current
5
+ * session view alone. Session buckets, alerts, and block state stay
6
+ * process-local (they are session- or runtime-scoped by design).
7
+ * @module dsh-budget/store
8
+ */
9
+ import z from 'zod';
10
+ import type { PersistedBudgetState } from './aggregate/usage.js';
11
+ /** Zod schema for the persisted state (re-validated at the durable boundary). */
12
+ export declare const budgetStateSchema: z.ZodObject<{
13
+ days: z.ZodRecord<z.ZodString, z.ZodObject<{
14
+ total: z.ZodObject<{
15
+ inputTokens: z.ZodNumber;
16
+ outputTokens: z.ZodNumber;
17
+ cacheReadTokens: z.ZodNumber;
18
+ cacheWriteTokens: z.ZodNumber;
19
+ costUsd: z.ZodNumber;
20
+ carbonKg: z.ZodNumber;
21
+ }, z.core.$strip>;
22
+ models: z.ZodRecord<z.ZodString, z.ZodObject<{
23
+ provider: z.ZodString;
24
+ model: z.ZodString;
25
+ inputTokens: z.ZodNumber;
26
+ outputTokens: z.ZodNumber;
27
+ cacheReadTokens: z.ZodNumber;
28
+ cacheWriteTokens: z.ZodNumber;
29
+ costUsd: z.ZodNumber;
30
+ carbonKg: z.ZodNumber;
31
+ }, z.core.$strip>>;
32
+ }, z.core.$strip>>;
33
+ months: z.ZodRecord<z.ZodString, z.ZodObject<{
34
+ total: z.ZodObject<{
35
+ inputTokens: z.ZodNumber;
36
+ outputTokens: z.ZodNumber;
37
+ cacheReadTokens: z.ZodNumber;
38
+ cacheWriteTokens: z.ZodNumber;
39
+ costUsd: z.ZodNumber;
40
+ carbonKg: z.ZodNumber;
41
+ }, z.core.$strip>;
42
+ models: z.ZodRecord<z.ZodString, z.ZodObject<{
43
+ provider: z.ZodString;
44
+ model: z.ZodString;
45
+ inputTokens: z.ZodNumber;
46
+ outputTokens: z.ZodNumber;
47
+ cacheReadTokens: z.ZodNumber;
48
+ cacheWriteTokens: z.ZodNumber;
49
+ costUsd: z.ZodNumber;
50
+ carbonKg: z.ZodNumber;
51
+ }, z.core.$strip>>;
52
+ }, z.core.$strip>>;
53
+ }, z.core.$strip>;
54
+ /** The `dsh_budget` storage-domain declaration. */
55
+ export declare const budgetDomainSpec: {
56
+ name: string;
57
+ version: number;
58
+ tables: {
59
+ state: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, PersistedBudgetState>;
60
+ };
61
+ };
62
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AA8BhE,iFAAiF;AACjF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAG5B,CAAA;AAEF,mDAAmD;AACnD,eAAO,MAAM,gBAAgB;;;;;;CAM3B,CAAA"}
@@ -77,6 +77,14 @@ export declare const TYPERT: Readonly<{
77
77
  alertsEnabled: import("zod").ZodBoolean;
78
78
  desktopNotifications: import("zod").ZodBoolean;
79
79
  degradedModel: import("zod").ZodNullable<import("zod").ZodString>;
80
+ days: import("zod").ZodArray<import("zod").ZodObject<{
81
+ day: import("zod").ZodString;
82
+ costUsd: import("zod").ZodNumber;
83
+ tokens: import("zod").ZodNumber;
84
+ carbonKg: import("zod").ZodNumber;
85
+ }, import("zod/v4/core").$strip>>;
86
+ warnRatio: import("zod").ZodNumber;
87
+ refreshIntervalMs: import("zod").ZodNumber;
80
88
  }, import("zod/v4/core").$strip>;
81
89
  }>;
82
90
  readonly sourceLocation: Readonly<{
@@ -157,6 +165,14 @@ export declare const TYPERT: Readonly<{
157
165
  alertsEnabled: import("zod").ZodBoolean;
158
166
  desktopNotifications: import("zod").ZodBoolean;
159
167
  degradedModel: import("zod").ZodNullable<import("zod").ZodString>;
168
+ days: import("zod").ZodArray<import("zod").ZodObject<{
169
+ day: import("zod").ZodString;
170
+ costUsd: import("zod").ZodNumber;
171
+ tokens: import("zod").ZodNumber;
172
+ carbonKg: import("zod").ZodNumber;
173
+ }, import("zod/v4/core").$strip>>;
174
+ warnRatio: import("zod").ZodNumber;
175
+ refreshIntervalMs: import("zod").ZodNumber;
160
176
  }, import("zod/v4/core").$strip>;
161
177
  }>;
162
178
  readonly sourceLocation: Readonly<{
@@ -241,6 +257,14 @@ export declare const TYPERT: Readonly<{
241
257
  alertsEnabled: import("zod").ZodBoolean;
242
258
  desktopNotifications: import("zod").ZodBoolean;
243
259
  degradedModel: import("zod").ZodNullable<import("zod").ZodString>;
260
+ days: import("zod").ZodArray<import("zod").ZodObject<{
261
+ day: import("zod").ZodString;
262
+ costUsd: import("zod").ZodNumber;
263
+ tokens: import("zod").ZodNumber;
264
+ carbonKg: import("zod").ZodNumber;
265
+ }, import("zod/v4/core").$strip>>;
266
+ warnRatio: import("zod").ZodNumber;
267
+ refreshIntervalMs: import("zod").ZodNumber;
244
268
  }, import("zod/v4/core").$strip>;
245
269
  }>;
246
270
  readonly sourceLocation: Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"typert.host.d.ts","sourceRoot":"","sources":["../../src/typert.host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,4EAA4E;AAC5E,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUjB,CAAA"}
1
+ {"version":3,"file":"typert.host.d.ts","sourceRoot":"","sources":["../../src/typert.host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,4EAA4E;AAC5E,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUjB,CAAA"}
@@ -48,6 +48,14 @@ export interface AlertLine {
48
48
  usedUsd: number;
49
49
  capUsd: number;
50
50
  }
51
+ /** One day's usage in the per-day curve. */
52
+ export interface DayLine {
53
+ /** UTC day key, `YYYY-MM-DD`. */
54
+ day: string;
55
+ costUsd: number;
56
+ tokens: number;
57
+ carbonKg: number;
58
+ }
51
59
  /** The full panel snapshot served by `budget/status`. */
52
60
  export interface BudgetStatus {
53
61
  scopes: ScopeLine[];
@@ -63,6 +71,12 @@ export interface BudgetStatus {
63
71
  desktopNotifications: boolean;
64
72
  /** Degradation target for the current model, when a cap blocked it. */
65
73
  degradedModel: string | null;
74
+ /** Per-day usage over the last `historyDays` days, oldest first. */
75
+ days: DayLine[];
76
+ /** Warn ratio the host governance uses (0..1); the tab's bar tone follows it. */
77
+ warnRatio: number;
78
+ /** Settings tab polling interval in ms (`config.refreshIntervalMs`). */
79
+ refreshIntervalMs: number;
66
80
  }
67
81
  /** Strict wire schema for {@link BudgetStatus} (zod v4, both Typert faces). */
68
82
  export declare const BUDGET_STATUS_SCHEMA: z.ZodObject<{
@@ -117,6 +131,14 @@ export declare const BUDGET_STATUS_SCHEMA: z.ZodObject<{
117
131
  alertsEnabled: z.ZodBoolean;
118
132
  desktopNotifications: z.ZodBoolean;
119
133
  degradedModel: z.ZodNullable<z.ZodString>;
134
+ days: z.ZodArray<z.ZodObject<{
135
+ day: z.ZodString;
136
+ costUsd: z.ZodNumber;
137
+ tokens: z.ZodNumber;
138
+ carbonKg: z.ZodNumber;
139
+ }, z.core.$strip>>;
140
+ warnRatio: z.ZodNumber;
141
+ refreshIntervalMs: z.ZodNumber;
120
142
  }, z.core.$strip>;
121
143
  /**
122
144
  * The `budget/status` invocation descriptor, shared verbatim by the host
@@ -188,6 +210,14 @@ export declare const BUDGET_STATUS_DESCRIPTOR: Readonly<{
188
210
  alertsEnabled: z.ZodBoolean;
189
211
  desktopNotifications: z.ZodBoolean;
190
212
  degradedModel: z.ZodNullable<z.ZodString>;
213
+ days: z.ZodArray<z.ZodObject<{
214
+ day: z.ZodString;
215
+ costUsd: z.ZodNumber;
216
+ tokens: z.ZodNumber;
217
+ carbonKg: z.ZodNumber;
218
+ }, z.core.$strip>>;
219
+ warnRatio: z.ZodNumber;
220
+ refreshIntervalMs: z.ZodNumber;
191
221
  }, z.core.$strip>;
192
222
  }>;
193
223
  readonly sourceLocation: Readonly<{
@@ -282,6 +312,14 @@ export declare const BUDGET_SET_SETTINGS_DESCRIPTOR: Readonly<{
282
312
  alertsEnabled: z.ZodBoolean;
283
313
  desktopNotifications: z.ZodBoolean;
284
314
  degradedModel: z.ZodNullable<z.ZodString>;
315
+ days: z.ZodArray<z.ZodObject<{
316
+ day: z.ZodString;
317
+ costUsd: z.ZodNumber;
318
+ tokens: z.ZodNumber;
319
+ carbonKg: z.ZodNumber;
320
+ }, z.core.$strip>>;
321
+ warnRatio: z.ZodNumber;
322
+ refreshIntervalMs: z.ZodNumber;
285
323
  }, z.core.$strip>;
286
324
  }>;
287
325
  readonly sourceLocation: Readonly<{
@@ -377,6 +415,14 @@ export declare const BUDGET_UNBLOCK_DESCRIPTOR: Readonly<{
377
415
  alertsEnabled: z.ZodBoolean;
378
416
  desktopNotifications: z.ZodBoolean;
379
417
  degradedModel: z.ZodNullable<z.ZodString>;
418
+ days: z.ZodArray<z.ZodObject<{
419
+ day: z.ZodString;
420
+ costUsd: z.ZodNumber;
421
+ tokens: z.ZodNumber;
422
+ carbonKg: z.ZodNumber;
423
+ }, z.core.$strip>>;
424
+ warnRatio: z.ZodNumber;
425
+ refreshIntervalMs: z.ZodNumber;
380
426
  }, z.core.$strip>;
381
427
  }>;
382
428
  readonly sourceLocation: Readonly<{
@@ -454,6 +500,14 @@ export declare const BUDGET_INVOCATIONS: readonly (Readonly<{
454
500
  alertsEnabled: z.ZodBoolean;
455
501
  desktopNotifications: z.ZodBoolean;
456
502
  degradedModel: z.ZodNullable<z.ZodString>;
503
+ days: z.ZodArray<z.ZodObject<{
504
+ day: z.ZodString;
505
+ costUsd: z.ZodNumber;
506
+ tokens: z.ZodNumber;
507
+ carbonKg: z.ZodNumber;
508
+ }, z.core.$strip>>;
509
+ warnRatio: z.ZodNumber;
510
+ refreshIntervalMs: z.ZodNumber;
457
511
  }, z.core.$strip>;
458
512
  }>;
459
513
  readonly sourceLocation: Readonly<{
@@ -534,6 +588,14 @@ export declare const BUDGET_INVOCATIONS: readonly (Readonly<{
534
588
  alertsEnabled: z.ZodBoolean;
535
589
  desktopNotifications: z.ZodBoolean;
536
590
  degradedModel: z.ZodNullable<z.ZodString>;
591
+ days: z.ZodArray<z.ZodObject<{
592
+ day: z.ZodString;
593
+ costUsd: z.ZodNumber;
594
+ tokens: z.ZodNumber;
595
+ carbonKg: z.ZodNumber;
596
+ }, z.core.$strip>>;
597
+ warnRatio: z.ZodNumber;
598
+ refreshIntervalMs: z.ZodNumber;
537
599
  }, z.core.$strip>;
538
600
  }>;
539
601
  readonly sourceLocation: Readonly<{
@@ -618,6 +680,14 @@ export declare const BUDGET_INVOCATIONS: readonly (Readonly<{
618
680
  alertsEnabled: z.ZodBoolean;
619
681
  desktopNotifications: z.ZodBoolean;
620
682
  degradedModel: z.ZodNullable<z.ZodString>;
683
+ days: z.ZodArray<z.ZodObject<{
684
+ day: z.ZodString;
685
+ costUsd: z.ZodNumber;
686
+ tokens: z.ZodNumber;
687
+ carbonKg: z.ZodNumber;
688
+ }, z.core.$strip>>;
689
+ warnRatio: z.ZodNumber;
690
+ refreshIntervalMs: z.ZodNumber;
621
691
  }, z.core.$strip>;
622
692
  }>;
623
693
  readonly sourceLocation: Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../src/wire.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../src/wire.ts"],"names":[],"mappings":"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"}