@relayplane/proxy 1.9.18 → 1.9.20
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.
- package/dist/budget.d.ts +81 -0
- package/dist/budget.d.ts.map +1 -1
- package/dist/budget.js +224 -1
- package/dist/budget.js.map +1 -1
- package/dist/cli.js +51 -1
- package/dist/cli.js.map +1 -1
- package/dist/standalone-proxy.d.ts.map +1 -1
- package/dist/standalone-proxy.js +28 -0
- package/dist/standalone-proxy.js.map +1 -1
- package/package.json +1 -1
package/dist/budget.d.ts
CHANGED
|
@@ -6,6 +6,16 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @packageDocumentation
|
|
8
8
|
*/
|
|
9
|
+
/** Per-million token pricing for known Claude models (USD). */
|
|
10
|
+
export declare const MODEL_PRICING: Record<string, {
|
|
11
|
+
inputPer1M: number;
|
|
12
|
+
outputPer1M: number;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Estimate cost in USD for a completed request given token counts.
|
|
16
|
+
* Returns 0 if the model is not in MODEL_PRICING.
|
|
17
|
+
*/
|
|
18
|
+
export declare function estimateCostFromTokens(model: string, inputTokens: number, outputTokens: number): number;
|
|
9
19
|
export interface BudgetConfig {
|
|
10
20
|
enabled: boolean;
|
|
11
21
|
/** Daily spend limit in USD (default: 50) */
|
|
@@ -26,6 +36,17 @@ export interface BudgetConfig {
|
|
|
26
36
|
sessionCapUsd: number;
|
|
27
37
|
/** Model downgrade ladder — when a session exceeds 80% of its cap, downgrade to the next rung */
|
|
28
38
|
modelLadder: string[];
|
|
39
|
+
/**
|
|
40
|
+
* Simple daily cap in USD used by BudgetTracker.
|
|
41
|
+
* When set, all requests are blocked once this amount is reached today.
|
|
42
|
+
* null / undefined = unlimited.
|
|
43
|
+
*/
|
|
44
|
+
dailyCapUSD?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Warning threshold as a fraction of dailyCapUSD (0–1). Default: 0.8.
|
|
47
|
+
* When daily spend / dailyCapUSD >= warningThreshold, a warning header is added.
|
|
48
|
+
*/
|
|
49
|
+
warningThreshold?: number;
|
|
29
50
|
}
|
|
30
51
|
export interface SessionBudgetRecord {
|
|
31
52
|
sessionId: string;
|
|
@@ -134,4 +155,64 @@ export declare class BudgetManager {
|
|
|
134
155
|
}
|
|
135
156
|
export declare function getBudgetManager(config?: Partial<BudgetConfig>): BudgetManager;
|
|
136
157
|
export declare function resetBudgetManager(): void;
|
|
158
|
+
export interface BudgetCapConfig {
|
|
159
|
+
/** Daily spend cap in USD. Undefined / null = unlimited (no enforcement). */
|
|
160
|
+
dailyCapUSD?: number;
|
|
161
|
+
/** Warning threshold as a fraction of the cap (0–1). Default: 0.8 */
|
|
162
|
+
warningThreshold?: number;
|
|
163
|
+
}
|
|
164
|
+
export interface DailySpendRecord {
|
|
165
|
+
date: string;
|
|
166
|
+
totalSpend: number;
|
|
167
|
+
byModel: Record<string, number>;
|
|
168
|
+
}
|
|
169
|
+
export interface BudgetCapCheckResult {
|
|
170
|
+
allowed: boolean;
|
|
171
|
+
warn: boolean;
|
|
172
|
+
spent: number;
|
|
173
|
+
cap: number | null;
|
|
174
|
+
warningThreshold: number;
|
|
175
|
+
}
|
|
176
|
+
export declare class BudgetTracker {
|
|
177
|
+
private dailyCapUSD;
|
|
178
|
+
private warningThreshold;
|
|
179
|
+
private db;
|
|
180
|
+
private _initialized;
|
|
181
|
+
private dailySpend;
|
|
182
|
+
private cachedDay;
|
|
183
|
+
private pendingWrites;
|
|
184
|
+
private flushTimer;
|
|
185
|
+
constructor(config?: BudgetCapConfig);
|
|
186
|
+
/** Initialize SQLite storage. Safe to call multiple times. */
|
|
187
|
+
init(): void;
|
|
188
|
+
/** Update cap / threshold at runtime (e.g. on config reload). */
|
|
189
|
+
updateConfig(config: BudgetCapConfig): void;
|
|
190
|
+
/**
|
|
191
|
+
* Pre-request check. Always <5ms — reads in-memory cache only.
|
|
192
|
+
* Call `init()` before first use.
|
|
193
|
+
*/
|
|
194
|
+
check(): BudgetCapCheckResult;
|
|
195
|
+
/**
|
|
196
|
+
* Record actual spend after a request completes.
|
|
197
|
+
* Updates in-memory cache immediately; SQLite write is async.
|
|
198
|
+
*/
|
|
199
|
+
record(amount: number, model: string): void;
|
|
200
|
+
/**
|
|
201
|
+
* Return daily spend history for the last `days` calendar days.
|
|
202
|
+
* Requires SQLite; falls back to today's in-memory total only.
|
|
203
|
+
*/
|
|
204
|
+
getHistory(days?: number): DailySpendRecord[];
|
|
205
|
+
/** Today's total spend (USD). */
|
|
206
|
+
getDailySpend(): number;
|
|
207
|
+
/** Configured daily cap (null = unlimited). */
|
|
208
|
+
getCap(): number | null;
|
|
209
|
+
/** Flush pending writes and close SQLite. */
|
|
210
|
+
close(): void;
|
|
211
|
+
private _ensureDay;
|
|
212
|
+
private _refreshDay;
|
|
213
|
+
private _scheduleFlush;
|
|
214
|
+
private _flushPendingWrites;
|
|
215
|
+
}
|
|
216
|
+
export declare function getBudgetTracker(config?: BudgetCapConfig): BudgetTracker;
|
|
217
|
+
export declare function resetBudgetTracker(): void;
|
|
137
218
|
//# sourceMappingURL=budget.d.ts.map
|
package/dist/budget.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IACnD,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gHAAgH;IAChH,aAAa,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,WAAW,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
|
package/dist/budget.js
CHANGED
|
@@ -41,14 +41,41 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
};
|
|
42
42
|
})();
|
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.BudgetManager = exports.DEFAULT_BUDGET_CONFIG = void 0;
|
|
44
|
+
exports.BudgetTracker = exports.BudgetManager = exports.DEFAULT_BUDGET_CONFIG = exports.MODEL_PRICING = void 0;
|
|
45
|
+
exports.estimateCostFromTokens = estimateCostFromTokens;
|
|
45
46
|
exports.getDailyWindow = getDailyWindow;
|
|
46
47
|
exports.getHourlyWindow = getHourlyWindow;
|
|
47
48
|
exports.getBudgetManager = getBudgetManager;
|
|
48
49
|
exports.resetBudgetManager = resetBudgetManager;
|
|
50
|
+
exports.getBudgetTracker = getBudgetTracker;
|
|
51
|
+
exports.resetBudgetTracker = resetBudgetTracker;
|
|
49
52
|
const path = __importStar(require("node:path"));
|
|
50
53
|
const os = __importStar(require("node:os"));
|
|
51
54
|
const fs = __importStar(require("node:fs"));
|
|
55
|
+
// ─── Model Pricing Constants ──────────────────────────────────────────
|
|
56
|
+
/** Per-million token pricing for known Claude models (USD). */
|
|
57
|
+
exports.MODEL_PRICING = {
|
|
58
|
+
'claude-opus-4-6': { inputPer1M: 5.00, outputPer1M: 25.00 },
|
|
59
|
+
'claude-opus-4-5': { inputPer1M: 5.00, outputPer1M: 25.00 },
|
|
60
|
+
'claude-sonnet-4-6': { inputPer1M: 3.00, outputPer1M: 15.00 },
|
|
61
|
+
'claude-sonnet-4-5': { inputPer1M: 3.00, outputPer1M: 15.00 },
|
|
62
|
+
'claude-haiku-4-5': { inputPer1M: 0.80, outputPer1M: 4.00 },
|
|
63
|
+
'claude-haiku-4-5-20251001': { inputPer1M: 0.80, outputPer1M: 4.00 },
|
|
64
|
+
'claude-3-5-sonnet-20241022': { inputPer1M: 3.00, outputPer1M: 15.00 },
|
|
65
|
+
'claude-3-5-haiku-20241022': { inputPer1M: 0.80, outputPer1M: 4.00 },
|
|
66
|
+
'claude-3-opus-20240229': { inputPer1M: 15.00, outputPer1M: 75.00 },
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Estimate cost in USD for a completed request given token counts.
|
|
70
|
+
* Returns 0 if the model is not in MODEL_PRICING.
|
|
71
|
+
*/
|
|
72
|
+
function estimateCostFromTokens(model, inputTokens, outputTokens) {
|
|
73
|
+
const pricing = exports.MODEL_PRICING[model];
|
|
74
|
+
if (!pricing)
|
|
75
|
+
return 0;
|
|
76
|
+
return (inputTokens / 1_000_000) * pricing.inputPer1M
|
|
77
|
+
+ (outputTokens / 1_000_000) * pricing.outputPer1M;
|
|
78
|
+
}
|
|
52
79
|
// ─── Defaults ────────────────────────────────────────────────────────
|
|
53
80
|
exports.DEFAULT_BUDGET_CONFIG = {
|
|
54
81
|
enabled: false,
|
|
@@ -526,4 +553,200 @@ function resetBudgetManager() {
|
|
|
526
553
|
_instance = null;
|
|
527
554
|
}
|
|
528
555
|
}
|
|
556
|
+
class BudgetTracker {
|
|
557
|
+
dailyCapUSD;
|
|
558
|
+
warningThreshold;
|
|
559
|
+
db = null;
|
|
560
|
+
_initialized = false;
|
|
561
|
+
// In-memory daily spend cache
|
|
562
|
+
dailySpend = 0;
|
|
563
|
+
cachedDay = '';
|
|
564
|
+
// Pending async writes
|
|
565
|
+
pendingWrites = [];
|
|
566
|
+
flushTimer = null;
|
|
567
|
+
constructor(config) {
|
|
568
|
+
this.dailyCapUSD = config?.dailyCapUSD ?? null;
|
|
569
|
+
this.warningThreshold = config?.warningThreshold ?? 0.8;
|
|
570
|
+
}
|
|
571
|
+
/** Initialize SQLite storage. Safe to call multiple times. */
|
|
572
|
+
init() {
|
|
573
|
+
if (this._initialized)
|
|
574
|
+
return;
|
|
575
|
+
this._initialized = true;
|
|
576
|
+
if (this.dailyCapUSD === null)
|
|
577
|
+
return; // unlimited — no persistence needed
|
|
578
|
+
const budgetDir = path.join(os.homedir(), '.relayplane');
|
|
579
|
+
fs.mkdirSync(budgetDir, { recursive: true });
|
|
580
|
+
try {
|
|
581
|
+
const dbPath = path.join(budgetDir, 'budget.db');
|
|
582
|
+
this.db = openDatabase(dbPath);
|
|
583
|
+
this.db.exec(`
|
|
584
|
+
CREATE TABLE IF NOT EXISTS daily_cap_log (
|
|
585
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
586
|
+
amount REAL NOT NULL,
|
|
587
|
+
model TEXT NOT NULL,
|
|
588
|
+
daily_window TEXT NOT NULL,
|
|
589
|
+
timestamp INTEGER NOT NULL
|
|
590
|
+
);
|
|
591
|
+
CREATE INDEX IF NOT EXISTS idx_dcl_daily_window ON daily_cap_log(daily_window);
|
|
592
|
+
`);
|
|
593
|
+
this._refreshDay();
|
|
594
|
+
}
|
|
595
|
+
catch (err) {
|
|
596
|
+
console.warn('[RelayPlane BudgetTracker] SQLite unavailable, memory-only mode:', err.message);
|
|
597
|
+
this.db = null;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
/** Update cap / threshold at runtime (e.g. on config reload). */
|
|
601
|
+
updateConfig(config) {
|
|
602
|
+
if ('dailyCapUSD' in config) {
|
|
603
|
+
const newCap = config.dailyCapUSD ?? null;
|
|
604
|
+
if (newCap !== this.dailyCapUSD) {
|
|
605
|
+
this.dailyCapUSD = newCap;
|
|
606
|
+
// If cap just became active and DB not open yet, re-init
|
|
607
|
+
if (newCap !== null && !this.db && this._initialized) {
|
|
608
|
+
this._initialized = false;
|
|
609
|
+
this.init();
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
if (config.warningThreshold !== undefined) {
|
|
614
|
+
this.warningThreshold = config.warningThreshold;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* Pre-request check. Always <5ms — reads in-memory cache only.
|
|
619
|
+
* Call `init()` before first use.
|
|
620
|
+
*/
|
|
621
|
+
check() {
|
|
622
|
+
if (this.dailyCapUSD === null) {
|
|
623
|
+
return { allowed: true, warn: false, spent: 0, cap: null, warningThreshold: this.warningThreshold };
|
|
624
|
+
}
|
|
625
|
+
this._ensureDay();
|
|
626
|
+
const cap = this.dailyCapUSD;
|
|
627
|
+
const spent = this.dailySpend;
|
|
628
|
+
const allowed = spent < cap;
|
|
629
|
+
const warn = allowed && cap > 0 && (spent / cap) >= this.warningThreshold;
|
|
630
|
+
return { allowed, warn, spent, cap, warningThreshold: this.warningThreshold };
|
|
631
|
+
}
|
|
632
|
+
/**
|
|
633
|
+
* Record actual spend after a request completes.
|
|
634
|
+
* Updates in-memory cache immediately; SQLite write is async.
|
|
635
|
+
*/
|
|
636
|
+
record(amount, model) {
|
|
637
|
+
if (this.dailyCapUSD === null || amount <= 0)
|
|
638
|
+
return;
|
|
639
|
+
this._ensureDay();
|
|
640
|
+
this.dailySpend += amount;
|
|
641
|
+
this.pendingWrites.push({ amount, model, dailyWindow: this.cachedDay, timestamp: Date.now() });
|
|
642
|
+
this._scheduleFlush();
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Return daily spend history for the last `days` calendar days.
|
|
646
|
+
* Requires SQLite; falls back to today's in-memory total only.
|
|
647
|
+
*/
|
|
648
|
+
getHistory(days = 30) {
|
|
649
|
+
const cutoff = new Date();
|
|
650
|
+
cutoff.setDate(cutoff.getDate() - days);
|
|
651
|
+
const cutoffStr = cutoff.toISOString().slice(0, 10);
|
|
652
|
+
if (this.db) {
|
|
653
|
+
const rows = this.db.prepare(`
|
|
654
|
+
SELECT daily_window, model, SUM(amount) as total
|
|
655
|
+
FROM daily_cap_log
|
|
656
|
+
WHERE daily_window >= ?
|
|
657
|
+
GROUP BY daily_window, model
|
|
658
|
+
ORDER BY daily_window DESC
|
|
659
|
+
`).all(cutoffStr);
|
|
660
|
+
const byDate = new Map();
|
|
661
|
+
for (const row of rows) {
|
|
662
|
+
if (!byDate.has(row.daily_window)) {
|
|
663
|
+
byDate.set(row.daily_window, { date: row.daily_window, totalSpend: 0, byModel: {} });
|
|
664
|
+
}
|
|
665
|
+
const rec = byDate.get(row.daily_window);
|
|
666
|
+
rec.byModel[row.model] = (rec.byModel[row.model] ?? 0) + row.total;
|
|
667
|
+
rec.totalSpend += row.total;
|
|
668
|
+
}
|
|
669
|
+
return Array.from(byDate.values()).sort((a, b) => b.date.localeCompare(a.date));
|
|
670
|
+
}
|
|
671
|
+
// Memory-only fallback
|
|
672
|
+
if (this.dailySpend > 0 && this.cachedDay >= cutoffStr) {
|
|
673
|
+
return [{ date: this.cachedDay, totalSpend: this.dailySpend, byModel: {} }];
|
|
674
|
+
}
|
|
675
|
+
return [];
|
|
676
|
+
}
|
|
677
|
+
/** Today's total spend (USD). */
|
|
678
|
+
getDailySpend() {
|
|
679
|
+
this._ensureDay();
|
|
680
|
+
return this.dailySpend;
|
|
681
|
+
}
|
|
682
|
+
/** Configured daily cap (null = unlimited). */
|
|
683
|
+
getCap() {
|
|
684
|
+
return this.dailyCapUSD;
|
|
685
|
+
}
|
|
686
|
+
/** Flush pending writes and close SQLite. */
|
|
687
|
+
close() {
|
|
688
|
+
this._flushPendingWrites();
|
|
689
|
+
if (this.flushTimer) {
|
|
690
|
+
clearTimeout(this.flushTimer);
|
|
691
|
+
this.flushTimer = null;
|
|
692
|
+
}
|
|
693
|
+
if (this.db) {
|
|
694
|
+
this.db.close();
|
|
695
|
+
this.db = null;
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
// ─── Private ──────────────────────────────────────────────────────
|
|
699
|
+
_ensureDay() {
|
|
700
|
+
const today = getDailyWindow();
|
|
701
|
+
if (today !== this.cachedDay) {
|
|
702
|
+
this.cachedDay = today;
|
|
703
|
+
this.dailySpend = 0;
|
|
704
|
+
if (this.db) {
|
|
705
|
+
const row = this.db.prepare('SELECT COALESCE(SUM(amount), 0) as total FROM daily_cap_log WHERE daily_window = ?').get(today);
|
|
706
|
+
this.dailySpend = row?.total ?? 0;
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
_refreshDay() {
|
|
711
|
+
this.cachedDay = '';
|
|
712
|
+
this._ensureDay();
|
|
713
|
+
}
|
|
714
|
+
_scheduleFlush() {
|
|
715
|
+
if (this.flushTimer)
|
|
716
|
+
return;
|
|
717
|
+
this.flushTimer = setTimeout(() => {
|
|
718
|
+
this.flushTimer = null;
|
|
719
|
+
this._flushPendingWrites();
|
|
720
|
+
}, 1000);
|
|
721
|
+
}
|
|
722
|
+
_flushPendingWrites() {
|
|
723
|
+
if (!this.db || this.pendingWrites.length === 0)
|
|
724
|
+
return;
|
|
725
|
+
const writes = this.pendingWrites.splice(0);
|
|
726
|
+
try {
|
|
727
|
+
const stmt = this.db.prepare('INSERT INTO daily_cap_log (amount, model, daily_window, timestamp) VALUES (?, ?, ?, ?)');
|
|
728
|
+
for (const w of writes) {
|
|
729
|
+
stmt.run(w.amount, w.model, w.dailyWindow, w.timestamp);
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
catch (err) {
|
|
733
|
+
console.warn('[RelayPlane BudgetTracker] SQLite flush failed:', err.message);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
exports.BudgetTracker = BudgetTracker;
|
|
738
|
+
// ─── BudgetTracker Singleton ─────────────────────────────────────────
|
|
739
|
+
let _trackerInstance = null;
|
|
740
|
+
function getBudgetTracker(config) {
|
|
741
|
+
if (!_trackerInstance) {
|
|
742
|
+
_trackerInstance = new BudgetTracker(config);
|
|
743
|
+
}
|
|
744
|
+
return _trackerInstance;
|
|
745
|
+
}
|
|
746
|
+
function resetBudgetTracker() {
|
|
747
|
+
if (_trackerInstance) {
|
|
748
|
+
_trackerInstance.close();
|
|
749
|
+
_trackerInstance = null;
|
|
750
|
+
}
|
|
751
|
+
}
|
|
529
752
|
//# sourceMappingURL=budget.js.map
|
package/dist/budget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1830,6 +1830,7 @@ async function handleInitWizard() {
|
|
|
1830
1830
|
const budget = rawConfig['budget'] ?? {};
|
|
1831
1831
|
budget['enabled'] = budgetEnabled;
|
|
1832
1832
|
budget['dailyUsd'] = dailyCapUsd;
|
|
1833
|
+
budget['dailyCapUSD'] = dailyCapUsd;
|
|
1833
1834
|
budget['onBreach'] = onBreach;
|
|
1834
1835
|
rawConfig['budget'] = budget;
|
|
1835
1836
|
// Atomic write
|
|
@@ -1866,9 +1867,24 @@ function handleBudgetCommand(args) {
|
|
|
1866
1867
|
catch { /* ok */ }
|
|
1867
1868
|
const status = budget.getStatus();
|
|
1868
1869
|
const config = budget.getConfig();
|
|
1870
|
+
const tracker = (0, budget_js_1.getBudgetTracker)();
|
|
1871
|
+
try {
|
|
1872
|
+
tracker.init();
|
|
1873
|
+
}
|
|
1874
|
+
catch { /* ok */ }
|
|
1875
|
+
const cap = tracker.getCap();
|
|
1876
|
+
const todaySpend = tracker.getDailySpend();
|
|
1869
1877
|
console.log('');
|
|
1870
1878
|
console.log('💰 Budget Status');
|
|
1871
1879
|
console.log(` Enabled: ${config.enabled ? '✅' : '❌'}`);
|
|
1880
|
+
if (cap !== null) {
|
|
1881
|
+
const pct = cap > 0 ? (todaySpend / cap) * 100 : 0;
|
|
1882
|
+
const bar = pct >= 100 ? '🚫 BLOCKED' : pct >= 80 ? '⚠️ warning' : '✅ ok';
|
|
1883
|
+
console.log(` Daily cap: $${todaySpend.toFixed(4)} / $${cap.toFixed(2)} (${pct.toFixed(1)}%) ${bar}`);
|
|
1884
|
+
}
|
|
1885
|
+
else {
|
|
1886
|
+
console.log(` Daily cap: $${todaySpend.toFixed(4)} / unlimited`);
|
|
1887
|
+
}
|
|
1872
1888
|
console.log(` Daily: $${status.dailySpend.toFixed(4)} / $${status.dailyLimit} (${status.dailyPercent.toFixed(1)}%)`);
|
|
1873
1889
|
console.log(` Hourly: $${status.hourlySpend.toFixed(4)} / $${status.hourlyLimit} (${status.hourlyPercent.toFixed(1)}%)`);
|
|
1874
1890
|
console.log(` Per-request: max $${config.perRequestUsd}`);
|
|
@@ -1877,6 +1893,7 @@ function handleBudgetCommand(args) {
|
|
|
1877
1893
|
console.log(` ⚠️ BREACHED: ${status.breachType}`);
|
|
1878
1894
|
}
|
|
1879
1895
|
console.log('');
|
|
1896
|
+
tracker.close();
|
|
1880
1897
|
budget.close();
|
|
1881
1898
|
return;
|
|
1882
1899
|
}
|
|
@@ -1904,8 +1921,41 @@ function handleBudgetCommand(args) {
|
|
|
1904
1921
|
budget.close();
|
|
1905
1922
|
return;
|
|
1906
1923
|
}
|
|
1907
|
-
|
|
1924
|
+
if (sub === 'history') {
|
|
1925
|
+
const daysArg = parseInt(args[1] ?? '7', 10);
|
|
1926
|
+
const days = isNaN(daysArg) ? 7 : daysArg;
|
|
1927
|
+
const tracker = (0, budget_js_1.getBudgetTracker)();
|
|
1928
|
+
try {
|
|
1929
|
+
tracker.init();
|
|
1930
|
+
}
|
|
1931
|
+
catch { /* ok */ }
|
|
1932
|
+
const history = tracker.getHistory(days);
|
|
1933
|
+
const cap = tracker.getCap();
|
|
1934
|
+
console.log('');
|
|
1935
|
+
console.log(`📅 Budget History (last ${days} days)`);
|
|
1936
|
+
if (cap !== null) {
|
|
1937
|
+
console.log(` Daily cap: $${cap.toFixed(2)}`);
|
|
1938
|
+
}
|
|
1939
|
+
if (history.length === 0) {
|
|
1940
|
+
console.log(' No spend recorded.');
|
|
1941
|
+
}
|
|
1942
|
+
else {
|
|
1943
|
+
for (const day of history) {
|
|
1944
|
+
const pct = cap !== null && cap > 0 ? ` (${((day.totalSpend / cap) * 100).toFixed(1)}%)` : '';
|
|
1945
|
+
console.log(` ${day.date} $${day.totalSpend.toFixed(4)}${pct}`);
|
|
1946
|
+
for (const [model, amt] of Object.entries(day.byModel)) {
|
|
1947
|
+
console.log(` ↳ ${model}: $${amt.toFixed(4)}`);
|
|
1948
|
+
}
|
|
1949
|
+
}
|
|
1950
|
+
}
|
|
1951
|
+
console.log('');
|
|
1952
|
+
tracker.close();
|
|
1953
|
+
budget.close();
|
|
1954
|
+
return;
|
|
1955
|
+
}
|
|
1956
|
+
console.log('Usage: relayplane budget [status|set|reset|history]');
|
|
1908
1957
|
console.log(' set --daily <usd> --hourly <usd> --per-request <usd>');
|
|
1958
|
+
console.log(' history [days] Show daily spend history (default: 7 days)');
|
|
1909
1959
|
budget.close();
|
|
1910
1960
|
}
|
|
1911
1961
|
function handleCacheCommand(args) {
|