@tokenbuddy/tokenbuddy 1.0.6 → 1.0.8
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/src/buyer-store.d.ts +28 -1
- package/dist/src/buyer-store.d.ts.map +1 -1
- package/dist/src/buyer-store.js +71 -16
- package/dist/src/buyer-store.js.map +1 -1
- package/dist/src/cli.d.ts +17 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +201 -32
- package/dist/src/cli.js.map +1 -1
- package/dist/src/daemon.d.ts +5 -0
- package/dist/src/daemon.d.ts.map +1 -1
- package/dist/src/daemon.js +279 -72
- package/dist/src/daemon.js.map +1 -1
- package/dist/src/doctor-clawtip-wallet.d.ts +14 -0
- package/dist/src/doctor-clawtip-wallet.d.ts.map +1 -0
- package/dist/src/doctor-clawtip-wallet.js +54 -0
- package/dist/src/doctor-clawtip-wallet.js.map +1 -0
- package/dist/src/doctor-diagnostics.d.ts +2 -0
- package/dist/src/doctor-diagnostics.d.ts.map +1 -1
- package/dist/src/doctor-diagnostics.js +5 -0
- package/dist/src/doctor-diagnostics.js.map +1 -1
- package/dist/src/init-clawtip-activation.d.ts +48 -0
- package/dist/src/init-clawtip-activation.d.ts.map +1 -0
- package/dist/src/init-clawtip-activation.js +395 -0
- package/dist/src/init-clawtip-activation.js.map +1 -0
- package/dist/src/init-payment-options.d.ts +23 -1
- package/dist/src/init-payment-options.d.ts.map +1 -1
- package/dist/src/init-payment-options.js +97 -22
- package/dist/src/init-payment-options.js.map +1 -1
- package/dist/src/terminal-image.d.ts +22 -0
- package/dist/src/terminal-image.d.ts.map +1 -0
- package/dist/src/terminal-image.js +135 -0
- package/dist/src/terminal-image.js.map +1 -0
- package/package.json +1 -1
- package/src/buyer-store.ts +140 -17
- package/src/cli.ts +251 -33
- package/src/daemon.ts +308 -53
- package/src/doctor-clawtip-wallet.ts +70 -0
- package/src/doctor-diagnostics.ts +11 -0
- package/src/init-clawtip-activation.ts +487 -0
- package/src/init-payment-options.ts +140 -22
- package/src/terminal-image.ts +187 -0
- package/tests/e2e.test.ts +79 -5
- package/tests/tokenbuddy.test.ts +745 -19
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export interface CachedToken {
|
|
2
2
|
token: string;
|
|
3
3
|
balanceMicros: number;
|
|
4
|
+
reservedMicros: number;
|
|
5
|
+
spentMicros: number;
|
|
6
|
+
balanceSource?: string;
|
|
4
7
|
}
|
|
5
8
|
export interface PaymentConfig {
|
|
6
9
|
method: string;
|
|
@@ -51,6 +54,12 @@ export interface InferenceLedgerInput {
|
|
|
51
54
|
promptTokens: number;
|
|
52
55
|
completionTokens: number;
|
|
53
56
|
billedMicros: number;
|
|
57
|
+
estimatedMicros?: number;
|
|
58
|
+
settledMicros?: number;
|
|
59
|
+
settledUsdMicros?: number;
|
|
60
|
+
priceVersion?: string;
|
|
61
|
+
balanceSnapshotMicros?: number;
|
|
62
|
+
balanceSource?: string;
|
|
54
63
|
prompt?: string;
|
|
55
64
|
response?: string;
|
|
56
65
|
}
|
|
@@ -63,10 +72,26 @@ export interface SafeInferenceLedgerEntry {
|
|
|
63
72
|
promptTokens: number;
|
|
64
73
|
completionTokens: number;
|
|
65
74
|
billedMicros: number;
|
|
75
|
+
estimatedMicros?: number;
|
|
76
|
+
settledMicros?: number;
|
|
77
|
+
settledUsdMicros?: number;
|
|
78
|
+
priceVersion?: string;
|
|
79
|
+
balanceSnapshotMicros?: number;
|
|
80
|
+
balanceSource?: string;
|
|
66
81
|
promptHash?: string;
|
|
67
82
|
responseHash?: string;
|
|
68
83
|
createdAt: string;
|
|
69
84
|
}
|
|
85
|
+
export interface TokenBalanceSnapshotInput {
|
|
86
|
+
sellerKey: string;
|
|
87
|
+
token?: string;
|
|
88
|
+
tokenClass?: string;
|
|
89
|
+
balanceMicros: number;
|
|
90
|
+
reservedMicros?: number;
|
|
91
|
+
spentMicros?: number;
|
|
92
|
+
balanceSource: string;
|
|
93
|
+
expiresAt?: string;
|
|
94
|
+
}
|
|
70
95
|
export interface BuyerStoreSummary {
|
|
71
96
|
journalMode: string;
|
|
72
97
|
paymentsCount: number;
|
|
@@ -117,7 +142,8 @@ export declare class BuyerStore {
|
|
|
117
142
|
removeDaemonRuntimeConfig(configKey: string): boolean;
|
|
118
143
|
getToken(sellerKey: string): CachedToken | undefined;
|
|
119
144
|
saveToken(sellerKey: string, token: string, tokenClass: string, balanceMicros: number, expiresAt: string): void;
|
|
120
|
-
|
|
145
|
+
reconcileTokenBalance(input: TokenBalanceSnapshotInput): void;
|
|
146
|
+
markTokenStale(sellerKey: string): void;
|
|
121
147
|
listPayments(): PaymentConfig[];
|
|
122
148
|
savePayment(config: Omit<PaymentConfig, "updatedAt">): void;
|
|
123
149
|
getPayment(method: string): PaymentConfig | undefined;
|
|
@@ -133,6 +159,7 @@ export declare class BuyerStore {
|
|
|
133
159
|
listInferenceLedger(): SafeInferenceLedgerEntry[];
|
|
134
160
|
close(): void;
|
|
135
161
|
private initSchema;
|
|
162
|
+
private ensureColumn;
|
|
136
163
|
private countRows;
|
|
137
164
|
}
|
|
138
165
|
//# sourceMappingURL=buyer-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buyer-store.d.ts","sourceRoot":"","sources":["../../src/buyer-store.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"buyer-store.d.ts","sourceRoot":"","sources":["../../src/buyer-store.ts"],"names":[],"mappings":"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"}
|
package/dist/src/buyer-store.js
CHANGED
|
@@ -133,36 +133,49 @@ export class BuyerStore {
|
|
|
133
133
|
return result.changes > 0;
|
|
134
134
|
}
|
|
135
135
|
getToken(sellerKey) {
|
|
136
|
-
const stmt = this.db.prepare("SELECT token, balance_micros FROM token_cache WHERE seller_key = ?");
|
|
136
|
+
const stmt = this.db.prepare("SELECT token, balance_micros, reserved_micros, spent_micros, balance_source FROM token_cache WHERE seller_key = ?");
|
|
137
137
|
const row = stmt.get(sellerKey);
|
|
138
138
|
if (!row) {
|
|
139
139
|
return undefined;
|
|
140
140
|
}
|
|
141
141
|
return {
|
|
142
142
|
token: row.token,
|
|
143
|
-
balanceMicros: row.balance_micros
|
|
143
|
+
balanceMicros: row.balance_micros,
|
|
144
|
+
reservedMicros: row.reserved_micros,
|
|
145
|
+
spentMicros: row.spent_micros,
|
|
146
|
+
balanceSource: row.balance_source || undefined
|
|
144
147
|
};
|
|
145
148
|
}
|
|
146
149
|
saveToken(sellerKey, token, tokenClass, balanceMicros, expiresAt) {
|
|
147
150
|
const stmt = this.db.prepare(`INSERT OR REPLACE INTO token_cache (
|
|
148
|
-
seller_key, token, token_class, balance_micros,
|
|
149
|
-
|
|
151
|
+
seller_key, token, token_class, balance_micros, reserved_micros,
|
|
152
|
+
spent_micros, balance_source, expires_at, updated_at
|
|
153
|
+
) VALUES (?, ?, ?, ?, 0, 0, 'purchase_complete', ?, ?)`);
|
|
150
154
|
stmt.run(sellerKey, token, tokenClass, balanceMicros, expiresAt, nowIso());
|
|
151
155
|
}
|
|
152
|
-
|
|
153
|
-
const
|
|
156
|
+
reconcileTokenBalance(input) {
|
|
157
|
+
const current = this.db.prepare("SELECT token, token_class, expires_at FROM token_cache WHERE seller_key = ?").get(input.sellerKey);
|
|
158
|
+
const token = input.token || current?.token;
|
|
159
|
+
const tokenClass = input.tokenClass || current?.token_class || "seller";
|
|
160
|
+
const expiresAt = input.expiresAt || current?.expires_at || new Date(Date.now() + 86400 * 1000).toISOString();
|
|
154
161
|
if (!token) {
|
|
155
162
|
return;
|
|
156
163
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
balanceMicros:
|
|
164
|
+
this.db.prepare(`INSERT OR REPLACE INTO token_cache (
|
|
165
|
+
seller_key, token, token_class, balance_micros, reserved_micros,
|
|
166
|
+
spent_micros, balance_source, expires_at, updated_at
|
|
167
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.sellerKey, token, tokenClass, input.balanceMicros, input.reservedMicros ?? 0, input.spentMicros ?? 0, input.balanceSource, expiresAt, nowIso());
|
|
168
|
+
logger.info("token.cache.reconciled", "token cache reconciled from seller balance snapshot", {
|
|
169
|
+
sellerKey: input.sellerKey,
|
|
170
|
+
balanceMicros: input.balanceMicros,
|
|
171
|
+
reservedMicros: input.reservedMicros ?? 0,
|
|
172
|
+
spentMicros: input.spentMicros ?? 0,
|
|
173
|
+
balanceSource: input.balanceSource
|
|
164
174
|
});
|
|
165
175
|
}
|
|
176
|
+
markTokenStale(sellerKey) {
|
|
177
|
+
this.db.prepare("UPDATE token_cache SET balance_micros = 0, balance_source = 'stale', updated_at = ? WHERE seller_key = ?").run(nowIso(), sellerKey);
|
|
178
|
+
}
|
|
166
179
|
listPayments() {
|
|
167
180
|
const rows = this.db.prepare(`SELECT method, enabled, is_default, config_json, updated_at
|
|
168
181
|
FROM payment_config
|
|
@@ -251,12 +264,16 @@ export class BuyerStore {
|
|
|
251
264
|
recordInferenceLedger(input) {
|
|
252
265
|
this.db.prepare(`INSERT INTO inference_ledger (
|
|
253
266
|
request_id, seller_key, model_id, endpoint, status, prompt_tokens,
|
|
254
|
-
completion_tokens, billed_micros,
|
|
255
|
-
|
|
267
|
+
completion_tokens, billed_micros, estimated_micros, settled_micros,
|
|
268
|
+
settled_usd_micros, price_version, balance_snapshot_micros, balance_source,
|
|
269
|
+
prompt_hash, response_hash, created_at
|
|
270
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.requestId, input.sellerKey, input.modelId, input.endpoint, input.status, input.promptTokens, input.completionTokens, input.billedMicros, input.estimatedMicros ?? input.billedMicros, input.settledMicros ?? null, input.settledUsdMicros ?? null, input.priceVersion || null, input.balanceSnapshotMicros ?? null, input.balanceSource || "unknown", safeHash(input.prompt) || null, safeHash(input.response) || null, nowIso());
|
|
256
271
|
}
|
|
257
272
|
listInferenceLedger() {
|
|
258
273
|
const rows = this.db.prepare(`SELECT request_id, seller_key, model_id, endpoint, status, prompt_tokens,
|
|
259
|
-
completion_tokens, billed_micros,
|
|
274
|
+
completion_tokens, billed_micros, estimated_micros, settled_micros,
|
|
275
|
+
settled_usd_micros, price_version, balance_snapshot_micros, balance_source,
|
|
276
|
+
prompt_hash, response_hash, created_at
|
|
260
277
|
FROM inference_ledger
|
|
261
278
|
ORDER BY id ASC`).all();
|
|
262
279
|
return rows.map(row => ({
|
|
@@ -268,6 +285,12 @@ export class BuyerStore {
|
|
|
268
285
|
promptTokens: row.prompt_tokens,
|
|
269
286
|
completionTokens: row.completion_tokens,
|
|
270
287
|
billedMicros: row.billed_micros,
|
|
288
|
+
estimatedMicros: row.estimated_micros ?? undefined,
|
|
289
|
+
settledMicros: row.settled_micros ?? undefined,
|
|
290
|
+
settledUsdMicros: row.settled_usd_micros ?? undefined,
|
|
291
|
+
priceVersion: row.price_version || undefined,
|
|
292
|
+
balanceSnapshotMicros: row.balance_snapshot_micros ?? undefined,
|
|
293
|
+
balanceSource: row.balance_source || undefined,
|
|
271
294
|
promptHash: row.prompt_hash || undefined,
|
|
272
295
|
responseHash: row.response_hash || undefined,
|
|
273
296
|
createdAt: row.created_at
|
|
@@ -283,6 +306,9 @@ export class BuyerStore {
|
|
|
283
306
|
token TEXT NOT NULL,
|
|
284
307
|
token_class TEXT NOT NULL,
|
|
285
308
|
balance_micros INTEGER NOT NULL,
|
|
309
|
+
reserved_micros INTEGER NOT NULL DEFAULT 0,
|
|
310
|
+
spent_micros INTEGER NOT NULL DEFAULT 0,
|
|
311
|
+
balance_source TEXT,
|
|
286
312
|
expires_at TEXT NOT NULL,
|
|
287
313
|
updated_at TEXT NOT NULL
|
|
288
314
|
);
|
|
@@ -333,6 +359,12 @@ export class BuyerStore {
|
|
|
333
359
|
prompt_tokens INTEGER NOT NULL,
|
|
334
360
|
completion_tokens INTEGER NOT NULL,
|
|
335
361
|
billed_micros INTEGER NOT NULL,
|
|
362
|
+
estimated_micros INTEGER,
|
|
363
|
+
settled_micros INTEGER,
|
|
364
|
+
settled_usd_micros INTEGER,
|
|
365
|
+
price_version TEXT,
|
|
366
|
+
balance_snapshot_micros INTEGER,
|
|
367
|
+
balance_source TEXT,
|
|
336
368
|
prompt_hash TEXT,
|
|
337
369
|
response_hash TEXT,
|
|
338
370
|
created_at TEXT NOT NULL
|
|
@@ -359,6 +391,29 @@ export class BuyerStore {
|
|
|
359
391
|
updated_at TEXT NOT NULL
|
|
360
392
|
);
|
|
361
393
|
`);
|
|
394
|
+
for (const [column, definition] of [
|
|
395
|
+
["reserved_micros", "INTEGER NOT NULL DEFAULT 0"],
|
|
396
|
+
["spent_micros", "INTEGER NOT NULL DEFAULT 0"],
|
|
397
|
+
["balance_source", "TEXT"]
|
|
398
|
+
]) {
|
|
399
|
+
this.ensureColumn("token_cache", column, definition);
|
|
400
|
+
}
|
|
401
|
+
for (const [column, definition] of [
|
|
402
|
+
["estimated_micros", "INTEGER"],
|
|
403
|
+
["settled_micros", "INTEGER"],
|
|
404
|
+
["settled_usd_micros", "INTEGER"],
|
|
405
|
+
["price_version", "TEXT"],
|
|
406
|
+
["balance_snapshot_micros", "INTEGER"],
|
|
407
|
+
["balance_source", "TEXT"]
|
|
408
|
+
]) {
|
|
409
|
+
this.ensureColumn("inference_ledger", column, definition);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
ensureColumn(table, column, definition) {
|
|
413
|
+
const rows = this.db.prepare(`PRAGMA table_info(${table})`).all();
|
|
414
|
+
if (!rows.some((row) => row.name === column)) {
|
|
415
|
+
this.db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
|
|
416
|
+
}
|
|
362
417
|
}
|
|
363
418
|
countRows(tableName) {
|
|
364
419
|
const row = this.db.prepare(`SELECT COUNT(*) AS count FROM ${tableName}`).get();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buyer-store.js","sourceRoot":"","sources":["../../src/buyer-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buyer-store.js","sourceRoot":"","sources":["../../src/buyer-store.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.d.ts
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
interface ClawtipBootstrapResponse {
|
|
3
|
+
activationFeeFen?: number;
|
|
4
|
+
payment?: {
|
|
5
|
+
orderNo?: string;
|
|
6
|
+
amountFen?: number;
|
|
7
|
+
payTo?: string;
|
|
8
|
+
encryptedData?: string;
|
|
9
|
+
indicator?: string;
|
|
10
|
+
slug?: string;
|
|
11
|
+
skillId?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
resourceUrl?: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare function fetchClawtipBootstrap(bootstrapUrl: string): Promise<ClawtipBootstrapResponse>;
|
|
17
|
+
export declare function normalizeClawtipBootstrapResourceUrl(bootstrapUrl: string, resourceUrl: string): string;
|
|
2
18
|
export declare function buildCli(): Command;
|
|
19
|
+
export {};
|
|
3
20
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoFpC,UAAU,wBAAwB;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAuQD,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAwBnG;AAED,wBAAgB,oCAAoC,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CActG;AAyQD,wBAAgB,QAAQ,IAAI,OAAO,CAmsBlC"}
|
package/dist/src/cli.js
CHANGED
|
@@ -12,7 +12,9 @@ import * as crypto from "crypto";
|
|
|
12
12
|
import { fileURLToPath } from "url";
|
|
13
13
|
import { discoverSellerBackedModels, filterCatalogByProtocol, filterCatalogBySeller, } from "./seller-catalog.js";
|
|
14
14
|
import { collectDoctorDiagnostics, collectDoctorModelsSummary, printDoctorProviders, printDoctorModelsSummary, readDoctorProviders, renderDoctorDiagnosticsProgressively, } from "./doctor-diagnostics.js";
|
|
15
|
-
import {
|
|
15
|
+
import { buildInitSuccessMessage, buildInitTerminalSelectionState, buildInstalledTerminalMessage, INIT_PAYMENT_OPTIONS, inspectClawtipWalletReadiness, inspectOpenClawWalletConfig, noteInitComingSoonPayments, OTHER_TERMINAL_OPTION, validateInitTerminalSelection, } from "./init-payment-options.js";
|
|
16
|
+
import { checkOpenClawRuntime, readClawtipPayCredential, startClawtipWalletBootstrap, waitForClawtipActivationConfirmation, } from "./init-clawtip-activation.js";
|
|
17
|
+
import { displayTerminalImage } from "./terminal-image.js";
|
|
16
18
|
// @ts-ignore
|
|
17
19
|
import qrcode from "qrcode-terminal";
|
|
18
20
|
const CONTROL_PORT = 17820;
|
|
@@ -78,6 +80,7 @@ async function probeDaemonStatus(controlPort) {
|
|
|
78
80
|
};
|
|
79
81
|
}
|
|
80
82
|
}
|
|
83
|
+
const CLAWTIP_BOOTSTRAP_PLACEHOLDER_PAY_TO = "bootstrap-pay-to";
|
|
81
84
|
async function waitForDaemonStatus(controlPort, timeoutMs) {
|
|
82
85
|
const deadline = Date.now() + timeoutMs;
|
|
83
86
|
let latest = { running: false, error: "not checked" };
|
|
@@ -233,7 +236,7 @@ function printPaymentList(payments, asJson) {
|
|
|
233
236
|
console.log("=== TokenBuddy Payment Methods ===");
|
|
234
237
|
console.log(table.toString());
|
|
235
238
|
}
|
|
236
|
-
async function fetchClawtipBootstrap(bootstrapUrl) {
|
|
239
|
+
export async function fetchClawtipBootstrap(bootstrapUrl) {
|
|
237
240
|
const response = await fetch(`${bootstrapUrl.replace(/\/+$/, "")}/payments/clawtip/bootstrap`, {
|
|
238
241
|
method: "POST",
|
|
239
242
|
headers: { "Content-Type": "application/json" },
|
|
@@ -246,8 +249,32 @@ async function fetchClawtipBootstrap(bootstrapUrl) {
|
|
|
246
249
|
if (!body.payment?.orderNo || !body.payment.indicator || !body.payment.resourceUrl) {
|
|
247
250
|
throw new Error("ClawTip bootstrap response missing payment order fields");
|
|
248
251
|
}
|
|
252
|
+
if ((body.payment.payTo || "").trim() === CLAWTIP_BOOTSTRAP_PLACEHOLDER_PAY_TO) {
|
|
253
|
+
throw new Error([
|
|
254
|
+
`ClawTip bootstrap service is misconfigured: payTo is still the placeholder \`${CLAWTIP_BOOTSTRAP_PLACEHOLDER_PAY_TO}\`.`,
|
|
255
|
+
`Bootstrap URL: ${bootstrapUrl}`,
|
|
256
|
+
"Configure the bootstrap service with the real ClawTip merchant pay_to before retrying `tb init`.",
|
|
257
|
+
].join(" "));
|
|
258
|
+
}
|
|
259
|
+
body.payment.resourceUrl = normalizeClawtipBootstrapResourceUrl(bootstrapUrl, body.payment.resourceUrl);
|
|
249
260
|
return body;
|
|
250
261
|
}
|
|
262
|
+
export function normalizeClawtipBootstrapResourceUrl(bootstrapUrl, resourceUrl) {
|
|
263
|
+
try {
|
|
264
|
+
const bootstrap = new URL(bootstrapUrl);
|
|
265
|
+
const resource = new URL(resourceUrl);
|
|
266
|
+
if (resource.origin === bootstrap.origin && resource.pathname === "/registry/sellers") {
|
|
267
|
+
resource.pathname = bootstrap.pathname.replace(/\/+$/, "") || "/";
|
|
268
|
+
resource.search = "";
|
|
269
|
+
resource.hash = "";
|
|
270
|
+
return resource.toString().replace(/\/$/, "");
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
// Leave the server-provided value unchanged when URL parsing fails.
|
|
275
|
+
}
|
|
276
|
+
return resourceUrl;
|
|
277
|
+
}
|
|
251
278
|
function readProof(options) {
|
|
252
279
|
const proofFile = options.proofFile || process.env.TOKENBUDDY_CLAWTIP_PROOF_FILE;
|
|
253
280
|
if (!proofFile) {
|
|
@@ -756,15 +783,20 @@ export function buildCli() {
|
|
|
756
783
|
const spinner = p.spinner();
|
|
757
784
|
spinner.start("Scanning local system for programming terminals...");
|
|
758
785
|
const candidates = detectProviders();
|
|
759
|
-
const
|
|
786
|
+
const terminalSelection = buildInitTerminalSelectionState(candidates);
|
|
760
787
|
spinner.stop("Scan completed.");
|
|
761
|
-
|
|
788
|
+
const installedTerminalMessage = buildInstalledTerminalMessage(terminalSelection.installed);
|
|
789
|
+
if (installedTerminalMessage) {
|
|
790
|
+
p.note(installedTerminalMessage, "Already Configured");
|
|
791
|
+
setupSummaryLines.push(`${terminalSelection.installed.length} terminal${terminalSelection.installed.length === 1 ? "" : "s"} already configured.`);
|
|
792
|
+
}
|
|
793
|
+
if (terminalSelection.options.length === 1 && terminalSelection.options[0].value === OTHER_TERMINAL_OPTION.value) {
|
|
762
794
|
p.note("No active programming terminals detected. Install one of Codex, Claude Code, Claude Desktop, OpenCode, OpenClaw or Hermes first.");
|
|
763
795
|
}
|
|
764
796
|
else {
|
|
765
797
|
const selected = await p.multiselect({
|
|
766
798
|
message: "Select programming terminals to route via TokenBuddy (use Space to select, Enter to confirm):",
|
|
767
|
-
options:
|
|
799
|
+
options: terminalSelection.options,
|
|
768
800
|
required: false
|
|
769
801
|
});
|
|
770
802
|
const selectionError = validateInitTerminalSelection(selected);
|
|
@@ -837,7 +869,9 @@ export function buildCli() {
|
|
|
837
869
|
if (payMethod === "clawtip") {
|
|
838
870
|
const store = openBuyerStore();
|
|
839
871
|
try {
|
|
840
|
-
|
|
872
|
+
let walletConfig = inspectOpenClawWalletConfig();
|
|
873
|
+
const clawtipReadiness = inspectClawtipWalletReadiness(store.getPayment("clawtip"), walletConfig);
|
|
874
|
+
const existingClawtip = clawtipReadiness.reusableBinding;
|
|
841
875
|
if (existingClawtip) {
|
|
842
876
|
store.savePayment({
|
|
843
877
|
method: "clawtip",
|
|
@@ -860,47 +894,182 @@ export function buildCli() {
|
|
|
860
894
|
setupSummaryLines.push("ClawTip wallet already bound locally; activation skipped.");
|
|
861
895
|
}
|
|
862
896
|
else {
|
|
897
|
+
if (clawtipReadiness.status === "metadata_missing_wallet") {
|
|
898
|
+
p.note([
|
|
899
|
+
clawtipReadiness.message,
|
|
900
|
+
`Expected: ${walletConfig.expectedPath}`,
|
|
901
|
+
walletConfig.alternatePaths.length > 0
|
|
902
|
+
? `Alternates: ${walletConfig.alternatePaths.join(", ")}`
|
|
903
|
+
: "Alternates: -"
|
|
904
|
+
].join("\n"), "ClawTip");
|
|
905
|
+
setupSummaryLines.push("Saved ClawTip metadata found, but local wallet config is missing; activation restarted.");
|
|
906
|
+
}
|
|
907
|
+
const walletReadyBeforePay = walletConfig.exists;
|
|
908
|
+
let openClawVersion;
|
|
909
|
+
if (!walletReadyBeforePay) {
|
|
910
|
+
spinner.start("Checking OpenClaw CLI before ClawTip wallet bootstrap...");
|
|
911
|
+
openClawVersion = await checkOpenClawRuntime();
|
|
912
|
+
spinner.stop("OpenClaw CLI detected.");
|
|
913
|
+
}
|
|
863
914
|
spinner.start("Requesting payment activation payload from public bootstrap registry...");
|
|
864
915
|
const bootstrapUrl = process.env.TOKENBUDDY_BOOTSTRAP_URL || "https://tb-wallet-bootstrap.fly.dev";
|
|
865
|
-
const
|
|
866
|
-
method: "POST",
|
|
867
|
-
headers: { "Content-Type": "application/json" },
|
|
868
|
-
body: JSON.stringify({ clientTag: "cli-init" })
|
|
869
|
-
});
|
|
870
|
-
const data = await res.json();
|
|
916
|
+
const bootstrap = await fetchClawtipBootstrap(bootstrapUrl);
|
|
871
917
|
spinner.stop("Bootstrap payload received.");
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
// 💡 High fidelity QR code rendering directly inside the CLI terminal
|
|
875
|
-
qrcode.generate(qrUrl, { small: true });
|
|
876
|
-
// Start 5-second polling interval
|
|
877
|
-
spinner.start("Waiting for JD收银台 payment confirmation (polling activation status)...");
|
|
878
|
-
for (let i = 0; i < 5; i++) {
|
|
879
|
-
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
880
|
-
// Simulate/Wait confirmed. For real deployment, poll actual backend
|
|
918
|
+
if (!bootstrap.payment?.orderNo || !bootstrap.payment?.indicator) {
|
|
919
|
+
throw new Error("ClawTip bootstrap response missing orderNo or indicator.");
|
|
881
920
|
}
|
|
882
|
-
|
|
921
|
+
const activationPayment = {
|
|
922
|
+
orderNo: bootstrap.payment.orderNo,
|
|
923
|
+
amountFen: bootstrap.payment.amountFen ?? bootstrap.activationFeeFen ?? 1,
|
|
924
|
+
payTo: bootstrap.payment.payTo,
|
|
925
|
+
encryptedData: bootstrap.payment.encryptedData,
|
|
926
|
+
indicator: bootstrap.payment.indicator,
|
|
927
|
+
slug: bootstrap.payment.slug,
|
|
928
|
+
skillId: bootstrap.payment.skillId,
|
|
929
|
+
description: bootstrap.payment.description,
|
|
930
|
+
resourceUrl: bootstrap.payment.resourceUrl,
|
|
931
|
+
};
|
|
932
|
+
spinner.start("Starting the ClawTip payment activation flow...");
|
|
933
|
+
let activation = await startClawtipWalletBootstrap(activationPayment);
|
|
934
|
+
spinner.stop("ClawTip payment activation finished.");
|
|
935
|
+
let payCredential = activation.payCredential;
|
|
936
|
+
for (let authAttempt = 1; (walletReadyBeforePay ? !payCredential : !walletConfig.exists)
|
|
937
|
+
&& activation.parsedOutput.requiresWalletAuth
|
|
938
|
+
&& authAttempt <= 3; authAttempt += 1) {
|
|
939
|
+
let qrDisplayMessage;
|
|
940
|
+
let manualOpenCommand;
|
|
941
|
+
if (activation.parsedOutput.mediaPath) {
|
|
942
|
+
const qrDisplay = await displayTerminalImage(activation.parsedOutput.mediaPath);
|
|
943
|
+
qrDisplayMessage = qrDisplay.message;
|
|
944
|
+
manualOpenCommand = qrDisplay.fallbackCommand;
|
|
945
|
+
}
|
|
946
|
+
if (!activation.parsedOutput.mediaPath && !activation.parsedOutput.authUrl) {
|
|
947
|
+
throw new Error(`ClawTip pay requested authorization but did not return QR media or authUrl. Order file: ${activation.orderFile}`);
|
|
948
|
+
}
|
|
949
|
+
p.note([
|
|
950
|
+
activation.parsedOutput.mediaPath
|
|
951
|
+
? `Open or scan this ClawTip wallet QR image with the JD app: ${activation.parsedOutput.mediaPath}`
|
|
952
|
+
: undefined,
|
|
953
|
+
activation.parsedOutput.authUrl
|
|
954
|
+
? `Open or scan this ClawTip wallet auth URL with the JD app: ${activation.parsedOutput.authUrl}`
|
|
955
|
+
: undefined,
|
|
956
|
+
qrDisplayMessage,
|
|
957
|
+
manualOpenCommand ? `Manual open command: ${manualOpenCommand}` : undefined,
|
|
958
|
+
activation.parsedOutput.clawtipId ? `clawtipId: ${activation.parsedOutput.clawtipId}` : undefined,
|
|
959
|
+
activation.parsedOutput.clawtipId
|
|
960
|
+
? "After scanning, ClawTip CLI will register the local agent wallet."
|
|
961
|
+
: "After scanning, TokenBuddy will retry ClawTip payment activation.",
|
|
962
|
+
`Expected wallet config: ${walletConfig.expectedPath}`,
|
|
963
|
+
openClawVersion ? `OpenClaw: ${openClawVersion}` : undefined,
|
|
964
|
+
].filter(Boolean).join("\n"), activation.parsedOutput.clawtipId ? "ClawTip Wallet QR" : "ClawTip Authorization QR");
|
|
965
|
+
if (activation.parsedOutput.clawtipId && !walletReadyBeforePay) {
|
|
966
|
+
spinner.start("Waiting for ClawTip wallet registration. Press Ctrl+C to cancel.");
|
|
967
|
+
const walletRegistered = await waitForClawtipActivationConfirmation({
|
|
968
|
+
clawtipId: activation.parsedOutput.clawtipId,
|
|
969
|
+
});
|
|
970
|
+
spinner.stop(walletRegistered
|
|
971
|
+
? "Detected local OpenClaw ClawTip wallet config."
|
|
972
|
+
: "ClawTip wallet registration cancelled.");
|
|
973
|
+
if (!walletRegistered) {
|
|
974
|
+
setupSummaryLines.push("ClawTip wallet registration was cancelled before local wallet config was saved.");
|
|
975
|
+
process.exitCode = 1;
|
|
976
|
+
return;
|
|
977
|
+
}
|
|
978
|
+
walletConfig = inspectOpenClawWalletConfig();
|
|
979
|
+
if (!walletConfig.exists) {
|
|
980
|
+
throw new Error(`ClawTip wallet registration finished but wallet config is still missing: ${walletConfig.expectedPath}`);
|
|
981
|
+
}
|
|
982
|
+
setupSummaryLines.push("ClawTip wallet registered locally.");
|
|
983
|
+
}
|
|
984
|
+
else {
|
|
985
|
+
const authorized = await p.confirm({
|
|
986
|
+
message: "Scan or authorize this ClawTip QR in the JD app, then press Enter to retry payment activation.",
|
|
987
|
+
initialValue: true,
|
|
988
|
+
});
|
|
989
|
+
if (authorized !== true) {
|
|
990
|
+
setupSummaryLines.push("ClawTip authorization was cancelled before payment activation completed.");
|
|
991
|
+
process.exitCode = 1;
|
|
992
|
+
return;
|
|
993
|
+
}
|
|
994
|
+
walletConfig = inspectOpenClawWalletConfig();
|
|
995
|
+
}
|
|
996
|
+
payCredential = readClawtipPayCredential(activation.orderFile);
|
|
997
|
+
if (!payCredential) {
|
|
998
|
+
spinner.start(`Retrying ClawTip payment activation after authorization (${authAttempt}/3)...`);
|
|
999
|
+
activation = await startClawtipWalletBootstrap(activationPayment);
|
|
1000
|
+
spinner.stop("ClawTip payment activation retry finished.");
|
|
1001
|
+
payCredential = activation.payCredential;
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
const refreshedWalletConfig = inspectOpenClawWalletConfig();
|
|
1005
|
+
if (!walletReadyBeforePay && !refreshedWalletConfig.exists) {
|
|
1006
|
+
const paymentQrMessage = activation.parsedOutput.mediaPath
|
|
1007
|
+
? ` ClawTip pay returned QR media: ${activation.parsedOutput.mediaPath}`
|
|
1008
|
+
: " ClawTip pay did not return QR media.";
|
|
1009
|
+
throw new Error([
|
|
1010
|
+
`ClawTip wallet config is still missing after payment activation: ${refreshedWalletConfig.expectedPath}.`,
|
|
1011
|
+
`Order file: ${activation.orderFile}.`,
|
|
1012
|
+
paymentQrMessage.trim(),
|
|
1013
|
+
].join(" "));
|
|
1014
|
+
}
|
|
1015
|
+
const completedByWalletConfig = !payCredential && !walletReadyBeforePay && refreshedWalletConfig.exists;
|
|
1016
|
+
if (!payCredential && !completedByWalletConfig) {
|
|
1017
|
+
const paymentQrMessage = activation.parsedOutput.mediaPath
|
|
1018
|
+
? ` ClawTip pay returned QR media: ${activation.parsedOutput.mediaPath}`
|
|
1019
|
+
: "";
|
|
1020
|
+
throw new Error(`ClawTip pay did not write payCredential to the order file. Order file: ${activation.orderFile}.${paymentQrMessage}`);
|
|
1021
|
+
}
|
|
1022
|
+
const activationCompletedBy = payCredential
|
|
1023
|
+
? (refreshedWalletConfig.exists ? "payCredential+wallet-config" : "payCredential")
|
|
1024
|
+
: "wallet-config";
|
|
883
1025
|
store.savePayment({
|
|
884
1026
|
method: "clawtip",
|
|
885
1027
|
enabled: true,
|
|
886
1028
|
isDefault: true,
|
|
887
1029
|
config: {
|
|
888
1030
|
bootstrapUrl,
|
|
889
|
-
orderNo:
|
|
890
|
-
amountFen:
|
|
891
|
-
indicator:
|
|
892
|
-
slug:
|
|
893
|
-
skillId:
|
|
894
|
-
description:
|
|
895
|
-
resourceUrl:
|
|
896
|
-
proofRequired: false
|
|
1031
|
+
orderNo: bootstrap.payment?.orderNo,
|
|
1032
|
+
amountFen: bootstrap.payment?.amountFen ?? bootstrap.activationFeeFen,
|
|
1033
|
+
indicator: bootstrap.payment?.indicator,
|
|
1034
|
+
slug: bootstrap.payment?.slug,
|
|
1035
|
+
skillId: bootstrap.payment?.skillId,
|
|
1036
|
+
description: bootstrap.payment?.description,
|
|
1037
|
+
resourceUrl: bootstrap.payment?.resourceUrl,
|
|
1038
|
+
proofRequired: false,
|
|
1039
|
+
activationOrderFile: activation.orderFile,
|
|
1040
|
+
walletConfigPath: refreshedWalletConfig.expectedPath,
|
|
1041
|
+
walletConfigPresent: refreshedWalletConfig.exists,
|
|
1042
|
+
payCredentialWritten: Boolean(payCredential),
|
|
1043
|
+
activationCompletedBy
|
|
897
1044
|
}
|
|
898
1045
|
});
|
|
899
1046
|
logger.info("payment.channel.added", "clawtip payment channel added during init", {
|
|
900
1047
|
method: "clawtip",
|
|
901
|
-
orderNo:
|
|
1048
|
+
orderNo: bootstrap.payment?.orderNo,
|
|
1049
|
+
payCredentialWritten: Boolean(payCredential),
|
|
1050
|
+
activationCompletedBy
|
|
902
1051
|
});
|
|
903
|
-
|
|
1052
|
+
if (refreshedWalletConfig.exists) {
|
|
1053
|
+
if (!payCredential) {
|
|
1054
|
+
p.note([
|
|
1055
|
+
"OpenClaw saved the local ClawTip wallet config, but the ClawTip order file did not contain payCredential.",
|
|
1056
|
+
`Order file: ${activation.orderFile}`,
|
|
1057
|
+
"TokenBuddy saved the wallet binding metadata and will rely on the local wallet for future ClawTip purchases."
|
|
1058
|
+
].join("\n"), "ClawTip");
|
|
1059
|
+
}
|
|
1060
|
+
setupSummaryLines.push("ClawTip wallet activated and set as the default payment method.");
|
|
1061
|
+
}
|
|
1062
|
+
else {
|
|
1063
|
+
p.note([
|
|
1064
|
+
"ClawTip payment metadata was saved, but the local OpenClaw wallet config is still missing.",
|
|
1065
|
+
`Expected: ${refreshedWalletConfig.expectedPath}`,
|
|
1066
|
+
refreshedWalletConfig.alternatePaths.length > 0
|
|
1067
|
+
? `Nearby files: ${refreshedWalletConfig.alternatePaths.join(", ")}`
|
|
1068
|
+
: "Nearby files: -",
|
|
1069
|
+
"Bind or restore the local wallet before using ClawTip-backed purchases."
|
|
1070
|
+
].join("\n"), "ClawTip Wallet Required");
|
|
1071
|
+
setupSummaryLines.push("ClawTip payment metadata saved; local wallet config still needs binding before use.");
|
|
1072
|
+
}
|
|
904
1073
|
}
|
|
905
1074
|
}
|
|
906
1075
|
catch (err) {
|