@tokenbuddy/tokenbuddy 1.0.4
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/bin/tb-proxyd.js +2 -0
- package/bin/tb.js +3 -0
- package/bin/tokenbuddy-proxyd.js +2 -0
- package/bin/tokenbuddy.js +3 -0
- package/dist/src/buyer-store.d.ts +118 -0
- package/dist/src/buyer-store.d.ts.map +1 -0
- package/dist/src/buyer-store.js +296 -0
- package/dist/src/buyer-store.js.map +1 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +648 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/daemon.d.ts +48 -0
- package/dist/src/daemon.d.ts.map +1 -0
- package/dist/src/daemon.js +998 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/provider-install.d.ts +44 -0
- package/dist/src/provider-install.d.ts.map +1 -0
- package/dist/src/provider-install.js +286 -0
- package/dist/src/provider-install.js.map +1 -0
- package/dist/src/tb-proxyd.d.ts +2 -0
- package/dist/src/tb-proxyd.d.ts.map +1 -0
- package/dist/src/tb-proxyd.js +54 -0
- package/dist/src/tb-proxyd.js.map +1 -0
- package/dist/src/terminal-detect.d.ts +29 -0
- package/dist/src/terminal-detect.d.ts.map +1 -0
- package/dist/src/terminal-detect.js +209 -0
- package/dist/src/terminal-detect.js.map +1 -0
- package/package.json +29 -0
- package/src/buyer-store.ts +536 -0
- package/src/cli.ts +732 -0
- package/src/daemon.ts +1158 -0
- package/src/index.ts +12 -0
- package/src/provider-install.ts +363 -0
- package/src/tb-proxyd.ts +60 -0
- package/src/terminal-detect.ts +225 -0
- package/tests/e2e.test.ts +264 -0
- package/tests/tokenbuddy.test.ts +1186 -0
- package/tsconfig.json +8 -0
package/bin/tb-proxyd.js
ADDED
package/bin/tb.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export interface CachedToken {
|
|
2
|
+
token: string;
|
|
3
|
+
balanceMicros: number;
|
|
4
|
+
}
|
|
5
|
+
export interface PaymentConfig {
|
|
6
|
+
method: string;
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
isDefault: boolean;
|
|
9
|
+
config?: Record<string, unknown>;
|
|
10
|
+
updatedAt: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PendingPurchaseInput {
|
|
13
|
+
purchaseId: string;
|
|
14
|
+
sellerKey: string;
|
|
15
|
+
modelId: string;
|
|
16
|
+
paymentMethod: string;
|
|
17
|
+
amountUsdMicros: number;
|
|
18
|
+
status: string;
|
|
19
|
+
paymentReference?: string;
|
|
20
|
+
expiresAt?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface PurchaseLedgerInput {
|
|
23
|
+
purchaseId: string;
|
|
24
|
+
sellerKey: string;
|
|
25
|
+
modelId: string;
|
|
26
|
+
paymentMethod: string;
|
|
27
|
+
status: string;
|
|
28
|
+
creditMicros: number;
|
|
29
|
+
currency: string;
|
|
30
|
+
paymentReference?: string;
|
|
31
|
+
completedAt?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SafePurchaseLedgerEntry {
|
|
34
|
+
purchaseId: string;
|
|
35
|
+
sellerKey: string;
|
|
36
|
+
modelId: string;
|
|
37
|
+
paymentMethod: string;
|
|
38
|
+
status: string;
|
|
39
|
+
creditMicros: number;
|
|
40
|
+
currency: string;
|
|
41
|
+
paymentReferenceHash?: string;
|
|
42
|
+
createdAt: string;
|
|
43
|
+
completedAt?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface InferenceLedgerInput {
|
|
46
|
+
requestId: string;
|
|
47
|
+
sellerKey: string;
|
|
48
|
+
modelId: string;
|
|
49
|
+
endpoint: string;
|
|
50
|
+
status: string;
|
|
51
|
+
promptTokens: number;
|
|
52
|
+
completionTokens: number;
|
|
53
|
+
billedMicros: number;
|
|
54
|
+
prompt?: string;
|
|
55
|
+
response?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface SafeInferenceLedgerEntry {
|
|
58
|
+
requestId: string;
|
|
59
|
+
sellerKey: string;
|
|
60
|
+
modelId: string;
|
|
61
|
+
endpoint: string;
|
|
62
|
+
status: string;
|
|
63
|
+
promptTokens: number;
|
|
64
|
+
completionTokens: number;
|
|
65
|
+
billedMicros: number;
|
|
66
|
+
promptHash?: string;
|
|
67
|
+
responseHash?: string;
|
|
68
|
+
createdAt: string;
|
|
69
|
+
}
|
|
70
|
+
export interface BuyerStoreSummary {
|
|
71
|
+
journalMode: string;
|
|
72
|
+
paymentsCount: number;
|
|
73
|
+
pendingPurchasesCount: number;
|
|
74
|
+
purchaseLedgerCount: number;
|
|
75
|
+
inferenceLedgerCount: number;
|
|
76
|
+
}
|
|
77
|
+
export interface ProviderInstallSnapshot {
|
|
78
|
+
providerId: string;
|
|
79
|
+
files: Array<{
|
|
80
|
+
path: string;
|
|
81
|
+
existed: boolean;
|
|
82
|
+
content?: string;
|
|
83
|
+
}>;
|
|
84
|
+
}
|
|
85
|
+
export interface BuyerStoreOptions {
|
|
86
|
+
root?: string;
|
|
87
|
+
dbPath?: string;
|
|
88
|
+
}
|
|
89
|
+
export declare function resolveBuyerStorePath(options?: BuyerStoreOptions): string;
|
|
90
|
+
export declare class BuyerStore {
|
|
91
|
+
private db;
|
|
92
|
+
constructor(options?: BuyerStoreOptions | string);
|
|
93
|
+
journalMode(): string;
|
|
94
|
+
summary(): BuyerStoreSummary;
|
|
95
|
+
saveProviderInstallSnapshot(snapshot: ProviderInstallSnapshot): void;
|
|
96
|
+
getProviderInstallSnapshot(providerId: string): ProviderInstallSnapshot | undefined;
|
|
97
|
+
removeProviderInstallSnapshot(providerId: string): boolean;
|
|
98
|
+
getToken(sellerKey: string): CachedToken | undefined;
|
|
99
|
+
saveToken(sellerKey: string, token: string, tokenClass: string, balanceMicros: number, expiresAt: string): void;
|
|
100
|
+
deductBalance(sellerKey: string, amountMicros: number): void;
|
|
101
|
+
listPayments(): PaymentConfig[];
|
|
102
|
+
savePayment(config: Omit<PaymentConfig, "updatedAt">): void;
|
|
103
|
+
getPayment(method: string): PaymentConfig | undefined;
|
|
104
|
+
removePayment(method: string): boolean;
|
|
105
|
+
upsertPendingPurchase(input: PendingPurchaseInput): void;
|
|
106
|
+
listPendingPurchases(): Array<PendingPurchaseInput & {
|
|
107
|
+
paymentReferenceHash?: string;
|
|
108
|
+
updatedAt: string;
|
|
109
|
+
}>;
|
|
110
|
+
recordPurchaseLedger(input: PurchaseLedgerInput): void;
|
|
111
|
+
listPurchaseLedger(): SafePurchaseLedgerEntry[];
|
|
112
|
+
recordInferenceLedger(input: InferenceLedgerInput): void;
|
|
113
|
+
listInferenceLedger(): SafeInferenceLedgerEntry[];
|
|
114
|
+
close(): void;
|
|
115
|
+
private initSchema;
|
|
116
|
+
private countRows;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=buyer-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buyer-store.d.ts","sourceRoot":"","sources":["../../src/buyer-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
// @ts-ignore node:sqlite types are not present in the current @types/node release.
|
|
2
|
+
import { DatabaseSync } from "node:sqlite";
|
|
3
|
+
import * as crypto from "crypto";
|
|
4
|
+
import * as fs from "fs";
|
|
5
|
+
import * as os from "os";
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
import { createModuleLogger } from "@tokenbuddy/logging";
|
|
8
|
+
const logger = createModuleLogger("tb-proxyd");
|
|
9
|
+
function nowIso() {
|
|
10
|
+
return new Date().toISOString();
|
|
11
|
+
}
|
|
12
|
+
function safeHash(value) {
|
|
13
|
+
if (!value) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
return crypto.createHash("sha256").update(value).digest("hex");
|
|
17
|
+
}
|
|
18
|
+
function boolFromSql(value) {
|
|
19
|
+
return value === 1 || value === true;
|
|
20
|
+
}
|
|
21
|
+
function ensureDirForFile(filePath) {
|
|
22
|
+
const dir = path.dirname(filePath);
|
|
23
|
+
if (dir !== "." && !fs.existsSync(dir)) {
|
|
24
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function resolveBuyerStorePath(options = {}) {
|
|
28
|
+
if (options.dbPath) {
|
|
29
|
+
return options.dbPath;
|
|
30
|
+
}
|
|
31
|
+
const root = options.root || process.env.TOKENBUDDY_BUYER_STORE || path.join(os.homedir(), ".tokenbuddy-store");
|
|
32
|
+
return path.join(root, "buyer-store.db");
|
|
33
|
+
}
|
|
34
|
+
export class BuyerStore {
|
|
35
|
+
db;
|
|
36
|
+
constructor(options = {}) {
|
|
37
|
+
const dbPath = typeof options === "string" ? options : resolveBuyerStorePath(options);
|
|
38
|
+
ensureDirForFile(dbPath);
|
|
39
|
+
this.db = new DatabaseSync(dbPath);
|
|
40
|
+
this.db.exec("PRAGMA journal_mode = WAL;");
|
|
41
|
+
this.initSchema();
|
|
42
|
+
}
|
|
43
|
+
journalMode() {
|
|
44
|
+
const row = this.db.prepare("PRAGMA journal_mode;").get();
|
|
45
|
+
return row.journal_mode;
|
|
46
|
+
}
|
|
47
|
+
summary() {
|
|
48
|
+
return {
|
|
49
|
+
journalMode: this.journalMode(),
|
|
50
|
+
paymentsCount: this.countRows("payment_config"),
|
|
51
|
+
pendingPurchasesCount: this.countRows("pending_purchases"),
|
|
52
|
+
purchaseLedgerCount: this.countRows("purchase_ledger"),
|
|
53
|
+
inferenceLedgerCount: this.countRows("inference_ledger")
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
saveProviderInstallSnapshot(snapshot) {
|
|
57
|
+
const updatedAt = nowIso();
|
|
58
|
+
this.db.prepare(`INSERT OR REPLACE INTO provider_install_state (
|
|
59
|
+
provider_id, snapshot_json, created_at, updated_at
|
|
60
|
+
) VALUES (
|
|
61
|
+
?, ?,
|
|
62
|
+
COALESCE((SELECT created_at FROM provider_install_state WHERE provider_id = ?), ?),
|
|
63
|
+
?
|
|
64
|
+
)`).run(snapshot.providerId, JSON.stringify(snapshot), snapshot.providerId, updatedAt, updatedAt);
|
|
65
|
+
}
|
|
66
|
+
getProviderInstallSnapshot(providerId) {
|
|
67
|
+
const row = this.db.prepare("SELECT snapshot_json FROM provider_install_state WHERE provider_id = ?").get(providerId);
|
|
68
|
+
if (!row) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
return JSON.parse(row.snapshot_json);
|
|
72
|
+
}
|
|
73
|
+
removeProviderInstallSnapshot(providerId) {
|
|
74
|
+
const result = this.db.prepare("DELETE FROM provider_install_state WHERE provider_id = ?").run(providerId);
|
|
75
|
+
return result.changes > 0;
|
|
76
|
+
}
|
|
77
|
+
getToken(sellerKey) {
|
|
78
|
+
const stmt = this.db.prepare("SELECT token, balance_micros FROM token_cache WHERE seller_key = ?");
|
|
79
|
+
const row = stmt.get(sellerKey);
|
|
80
|
+
if (!row) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
token: row.token,
|
|
85
|
+
balanceMicros: row.balance_micros
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
saveToken(sellerKey, token, tokenClass, balanceMicros, expiresAt) {
|
|
89
|
+
const stmt = this.db.prepare(`INSERT OR REPLACE INTO token_cache (
|
|
90
|
+
seller_key, token, token_class, balance_micros, expires_at, updated_at
|
|
91
|
+
) VALUES (?, ?, ?, ?, ?, ?)`);
|
|
92
|
+
stmt.run(sellerKey, token, tokenClass, balanceMicros, expiresAt, nowIso());
|
|
93
|
+
}
|
|
94
|
+
deductBalance(sellerKey, amountMicros) {
|
|
95
|
+
const token = this.getToken(sellerKey);
|
|
96
|
+
if (!token) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const newBalance = Math.max(0, token.balanceMicros - amountMicros);
|
|
100
|
+
const stmt = this.db.prepare("UPDATE token_cache SET balance_micros = ?, updated_at = ? WHERE seller_key = ?");
|
|
101
|
+
stmt.run(newBalance, nowIso(), sellerKey);
|
|
102
|
+
logger.info("token.cache.debited", "token cache balance debited", {
|
|
103
|
+
sellerKey,
|
|
104
|
+
amountMicros,
|
|
105
|
+
balanceMicros: newBalance
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
listPayments() {
|
|
109
|
+
const rows = this.db.prepare(`SELECT method, enabled, is_default, config_json, updated_at
|
|
110
|
+
FROM payment_config
|
|
111
|
+
ORDER BY method ASC`).all();
|
|
112
|
+
return rows.map(row => ({
|
|
113
|
+
method: row.method,
|
|
114
|
+
enabled: boolFromSql(row.enabled),
|
|
115
|
+
isDefault: boolFromSql(row.is_default),
|
|
116
|
+
config: row.config_json ? JSON.parse(row.config_json) : undefined,
|
|
117
|
+
updatedAt: row.updated_at
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
savePayment(config) {
|
|
121
|
+
const updatedAt = nowIso();
|
|
122
|
+
if (config.isDefault) {
|
|
123
|
+
this.db.prepare("UPDATE payment_config SET is_default = 0").run();
|
|
124
|
+
}
|
|
125
|
+
this.db.prepare(`INSERT OR REPLACE INTO payment_config (
|
|
126
|
+
method, enabled, is_default, config_json, created_at, updated_at
|
|
127
|
+
) VALUES (
|
|
128
|
+
?, ?, ?, ?,
|
|
129
|
+
COALESCE((SELECT created_at FROM payment_config WHERE method = ?), ?),
|
|
130
|
+
?
|
|
131
|
+
)`).run(config.method, config.enabled ? 1 : 0, config.isDefault ? 1 : 0, config.config ? JSON.stringify(config.config) : null, config.method, updatedAt, updatedAt);
|
|
132
|
+
}
|
|
133
|
+
getPayment(method) {
|
|
134
|
+
return this.listPayments().find((payment) => payment.method === method);
|
|
135
|
+
}
|
|
136
|
+
removePayment(method) {
|
|
137
|
+
const result = this.db.prepare("DELETE FROM payment_config WHERE method = ?").run(method);
|
|
138
|
+
return result.changes > 0;
|
|
139
|
+
}
|
|
140
|
+
upsertPendingPurchase(input) {
|
|
141
|
+
const updatedAt = nowIso();
|
|
142
|
+
this.db.prepare(`INSERT OR REPLACE INTO pending_purchases (
|
|
143
|
+
purchase_id, seller_key, model_id, payment_method, amount_usd_micros,
|
|
144
|
+
status, payment_reference_hash, created_at, updated_at, expires_at
|
|
145
|
+
) VALUES (
|
|
146
|
+
?, ?, ?, ?, ?, ?, ?,
|
|
147
|
+
COALESCE((SELECT created_at FROM pending_purchases WHERE purchase_id = ?), ?),
|
|
148
|
+
?, ?
|
|
149
|
+
)`).run(input.purchaseId, input.sellerKey, input.modelId, input.paymentMethod, input.amountUsdMicros, input.status, safeHash(input.paymentReference) || null, input.purchaseId, updatedAt, updatedAt, input.expiresAt || null);
|
|
150
|
+
}
|
|
151
|
+
listPendingPurchases() {
|
|
152
|
+
const rows = this.db.prepare(`SELECT purchase_id, seller_key, model_id, payment_method, amount_usd_micros,
|
|
153
|
+
status, payment_reference_hash, updated_at, expires_at
|
|
154
|
+
FROM pending_purchases
|
|
155
|
+
ORDER BY updated_at DESC, purchase_id ASC`).all();
|
|
156
|
+
return rows.map(row => ({
|
|
157
|
+
purchaseId: row.purchase_id,
|
|
158
|
+
sellerKey: row.seller_key,
|
|
159
|
+
modelId: row.model_id,
|
|
160
|
+
paymentMethod: row.payment_method,
|
|
161
|
+
amountUsdMicros: row.amount_usd_micros,
|
|
162
|
+
status: row.status,
|
|
163
|
+
paymentReferenceHash: row.payment_reference_hash || undefined,
|
|
164
|
+
updatedAt: row.updated_at,
|
|
165
|
+
expiresAt: row.expires_at || undefined
|
|
166
|
+
}));
|
|
167
|
+
}
|
|
168
|
+
recordPurchaseLedger(input) {
|
|
169
|
+
const createdAt = nowIso();
|
|
170
|
+
this.db.prepare(`INSERT INTO purchase_ledger (
|
|
171
|
+
purchase_id, seller_key, model_id, payment_method, status, credit_micros,
|
|
172
|
+
currency, payment_reference_hash, created_at, completed_at
|
|
173
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.purchaseId, input.sellerKey, input.modelId, input.paymentMethod, input.status, input.creditMicros, input.currency, safeHash(input.paymentReference) || null, createdAt, input.completedAt || null);
|
|
174
|
+
}
|
|
175
|
+
listPurchaseLedger() {
|
|
176
|
+
const rows = this.db.prepare(`SELECT purchase_id, seller_key, model_id, payment_method, status, credit_micros,
|
|
177
|
+
currency, payment_reference_hash, created_at, completed_at
|
|
178
|
+
FROM purchase_ledger
|
|
179
|
+
ORDER BY id ASC`).all();
|
|
180
|
+
return rows.map(row => ({
|
|
181
|
+
purchaseId: row.purchase_id,
|
|
182
|
+
sellerKey: row.seller_key,
|
|
183
|
+
modelId: row.model_id,
|
|
184
|
+
paymentMethod: row.payment_method,
|
|
185
|
+
status: row.status,
|
|
186
|
+
creditMicros: row.credit_micros,
|
|
187
|
+
currency: row.currency,
|
|
188
|
+
paymentReferenceHash: row.payment_reference_hash || undefined,
|
|
189
|
+
createdAt: row.created_at,
|
|
190
|
+
completedAt: row.completed_at || undefined
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
193
|
+
recordInferenceLedger(input) {
|
|
194
|
+
this.db.prepare(`INSERT INTO inference_ledger (
|
|
195
|
+
request_id, seller_key, model_id, endpoint, status, prompt_tokens,
|
|
196
|
+
completion_tokens, billed_micros, prompt_hash, response_hash, created_at
|
|
197
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.requestId, input.sellerKey, input.modelId, input.endpoint, input.status, input.promptTokens, input.completionTokens, input.billedMicros, safeHash(input.prompt) || null, safeHash(input.response) || null, nowIso());
|
|
198
|
+
}
|
|
199
|
+
listInferenceLedger() {
|
|
200
|
+
const rows = this.db.prepare(`SELECT request_id, seller_key, model_id, endpoint, status, prompt_tokens,
|
|
201
|
+
completion_tokens, billed_micros, prompt_hash, response_hash, created_at
|
|
202
|
+
FROM inference_ledger
|
|
203
|
+
ORDER BY id ASC`).all();
|
|
204
|
+
return rows.map(row => ({
|
|
205
|
+
requestId: row.request_id,
|
|
206
|
+
sellerKey: row.seller_key,
|
|
207
|
+
modelId: row.model_id,
|
|
208
|
+
endpoint: row.endpoint,
|
|
209
|
+
status: row.status,
|
|
210
|
+
promptTokens: row.prompt_tokens,
|
|
211
|
+
completionTokens: row.completion_tokens,
|
|
212
|
+
billedMicros: row.billed_micros,
|
|
213
|
+
promptHash: row.prompt_hash || undefined,
|
|
214
|
+
responseHash: row.response_hash || undefined,
|
|
215
|
+
createdAt: row.created_at
|
|
216
|
+
}));
|
|
217
|
+
}
|
|
218
|
+
close() {
|
|
219
|
+
this.db.close();
|
|
220
|
+
}
|
|
221
|
+
initSchema() {
|
|
222
|
+
this.db.exec(`
|
|
223
|
+
CREATE TABLE IF NOT EXISTS token_cache (
|
|
224
|
+
seller_key TEXT PRIMARY KEY,
|
|
225
|
+
token TEXT NOT NULL,
|
|
226
|
+
token_class TEXT NOT NULL,
|
|
227
|
+
balance_micros INTEGER NOT NULL,
|
|
228
|
+
expires_at TEXT NOT NULL,
|
|
229
|
+
updated_at TEXT NOT NULL
|
|
230
|
+
);
|
|
231
|
+
|
|
232
|
+
CREATE TABLE IF NOT EXISTS payment_config (
|
|
233
|
+
method TEXT PRIMARY KEY,
|
|
234
|
+
enabled INTEGER NOT NULL,
|
|
235
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
236
|
+
config_json TEXT,
|
|
237
|
+
created_at TEXT NOT NULL,
|
|
238
|
+
updated_at TEXT NOT NULL
|
|
239
|
+
);
|
|
240
|
+
|
|
241
|
+
CREATE TABLE IF NOT EXISTS pending_purchases (
|
|
242
|
+
purchase_id TEXT PRIMARY KEY,
|
|
243
|
+
seller_key TEXT NOT NULL,
|
|
244
|
+
model_id TEXT NOT NULL,
|
|
245
|
+
payment_method TEXT NOT NULL,
|
|
246
|
+
amount_usd_micros INTEGER NOT NULL,
|
|
247
|
+
status TEXT NOT NULL,
|
|
248
|
+
payment_reference_hash TEXT,
|
|
249
|
+
created_at TEXT NOT NULL,
|
|
250
|
+
updated_at TEXT NOT NULL,
|
|
251
|
+
expires_at TEXT
|
|
252
|
+
);
|
|
253
|
+
|
|
254
|
+
CREATE TABLE IF NOT EXISTS purchase_ledger (
|
|
255
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
256
|
+
purchase_id TEXT NOT NULL,
|
|
257
|
+
seller_key TEXT NOT NULL,
|
|
258
|
+
model_id TEXT NOT NULL,
|
|
259
|
+
payment_method TEXT NOT NULL,
|
|
260
|
+
status TEXT NOT NULL,
|
|
261
|
+
credit_micros INTEGER NOT NULL,
|
|
262
|
+
currency TEXT NOT NULL,
|
|
263
|
+
payment_reference_hash TEXT,
|
|
264
|
+
created_at TEXT NOT NULL,
|
|
265
|
+
completed_at TEXT
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
CREATE TABLE IF NOT EXISTS inference_ledger (
|
|
269
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
270
|
+
request_id TEXT NOT NULL,
|
|
271
|
+
seller_key TEXT NOT NULL,
|
|
272
|
+
model_id TEXT NOT NULL,
|
|
273
|
+
endpoint TEXT NOT NULL,
|
|
274
|
+
status TEXT NOT NULL,
|
|
275
|
+
prompt_tokens INTEGER NOT NULL,
|
|
276
|
+
completion_tokens INTEGER NOT NULL,
|
|
277
|
+
billed_micros INTEGER NOT NULL,
|
|
278
|
+
prompt_hash TEXT,
|
|
279
|
+
response_hash TEXT,
|
|
280
|
+
created_at TEXT NOT NULL
|
|
281
|
+
);
|
|
282
|
+
|
|
283
|
+
CREATE TABLE IF NOT EXISTS provider_install_state (
|
|
284
|
+
provider_id TEXT PRIMARY KEY,
|
|
285
|
+
snapshot_json TEXT NOT NULL,
|
|
286
|
+
created_at TEXT NOT NULL,
|
|
287
|
+
updated_at TEXT NOT NULL
|
|
288
|
+
);
|
|
289
|
+
`);
|
|
290
|
+
}
|
|
291
|
+
countRows(tableName) {
|
|
292
|
+
const row = this.db.prepare(`SELECT COUNT(*) AS count FROM ${tableName}`).get();
|
|
293
|
+
return row.count;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=buyer-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buyer-store.js","sourceRoot":"","sources":["../../src/buyer-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0UpC,wBAAgB,QAAQ,IAAI,OAAO,CAiZlC"}
|