@tokenbuddy/tokenbuddy 1.0.14 → 1.0.16
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 +23 -0
- package/dist/src/buyer-store.d.ts.map +1 -1
- package/dist/src/buyer-store.js +31 -6
- package/dist/src/buyer-store.js.map +1 -1
- package/dist/src/clawtip-bootstrap.d.ts +23 -0
- package/dist/src/clawtip-bootstrap.d.ts.map +1 -0
- package/dist/src/clawtip-bootstrap.js +47 -0
- package/dist/src/clawtip-bootstrap.js.map +1 -0
- package/dist/src/cli.d.ts +24 -33
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +157 -58
- package/dist/src/cli.js.map +1 -1
- package/dist/src/daemon.d.ts +79 -1
- package/dist/src/daemon.d.ts.map +1 -1
- package/dist/src/daemon.js +1007 -23
- package/dist/src/daemon.js.map +1 -1
- package/dist/src/model-index.d.ts +1 -1
- package/dist/src/model-index.d.ts.map +1 -1
- package/dist/src/model-index.js +4 -0
- package/dist/src/model-index.js.map +1 -1
- package/dist/src/prewarm-cache.d.ts +4 -0
- package/dist/src/prewarm-cache.d.ts.map +1 -1
- package/dist/src/prewarm-cache.js +2 -1
- package/dist/src/prewarm-cache.js.map +1 -1
- package/dist/src/prewarm-scheduler.d.ts +2 -0
- package/dist/src/prewarm-scheduler.d.ts.map +1 -1
- package/dist/src/prewarm-scheduler.js +4 -2
- package/dist/src/prewarm-scheduler.js.map +1 -1
- package/dist/src/route-failover.d.ts.map +1 -1
- package/dist/src/route-failover.js +10 -0
- package/dist/src/route-failover.js.map +1 -1
- package/dist/src/seller-catalog.d.ts +17 -0
- package/dist/src/seller-catalog.d.ts.map +1 -1
- package/dist/src/seller-catalog.js +15 -1
- package/dist/src/seller-catalog.js.map +1 -1
- package/dist/src/seller-pool.d.ts +12 -1
- package/dist/src/seller-pool.d.ts.map +1 -1
- package/dist/src/seller-pool.js +61 -7
- package/dist/src/seller-pool.js.map +1 -1
- package/dist/src/seller-route-planner.d.ts +11 -1
- package/dist/src/seller-route-planner.d.ts.map +1 -1
- package/dist/src/seller-route-planner.js +21 -9
- package/dist/src/seller-route-planner.js.map +1 -1
- package/dist/src/seller-routing-config.d.ts +2 -0
- package/dist/src/seller-routing-config.d.ts.map +1 -1
- package/dist/src/seller-routing-config.js +11 -1
- package/dist/src/seller-routing-config.js.map +1 -1
- package/package.json +1 -1
- package/src/buyer-store.ts +70 -7
- package/src/clawtip-bootstrap.ts +64 -0
- package/src/cli.ts +201 -76
- package/src/daemon.ts +1159 -25
- package/src/model-index.ts +4 -1
- package/src/prewarm-cache.ts +6 -1
- package/src/prewarm-scheduler.ts +6 -2
- package/src/route-failover.ts +11 -0
- package/src/seller-catalog.ts +24 -1
- package/src/seller-pool.ts +69 -7
- package/src/seller-route-planner.ts +33 -11
- package/src/seller-routing-config.ts +14 -1
- package/static/clawtip/recharge.png +0 -0
- package/static/ui/assets/index-UMiTTeo8.css +1 -0
- package/static/ui/assets/index-YHs-Ca0f.js +206 -0
- package/static/ui/assets/index-YHs-Ca0f.js.map +1 -0
- package/static/ui/icons/apple-touch-icon.png +0 -0
- package/static/ui/icons/tokenbuddy-192.png +0 -0
- package/static/ui/icons/tokenbuddy-512.png +0 -0
- package/static/ui/index.html +21 -0
- package/static/ui/manifest.webmanifest +28 -0
- package/static/ui/sw.js +59 -0
- package/tests/control-plane-ui-endpoints.test.ts +589 -0
- package/tests/daemon-classify.test.ts +9 -0
- package/tests/model-index.test.ts +14 -0
- package/tests/route-failover.test.ts +16 -0
- package/tests/seller-catalog-utilities.test.ts +54 -0
- package/tests/seller-pool.test.ts +56 -0
- package/tests/seller-route-planner.test.ts +40 -0
- package/tests/seller-routing-config.test.ts +13 -0
- package/tests/tokenbuddy.test.ts +200 -7
|
@@ -73,6 +73,15 @@ export interface SafePurchaseLedgerEntry {
|
|
|
73
73
|
/**
|
|
74
74
|
* buyer 端单次推理请求的账本输入。
|
|
75
75
|
* `prompt` / `response` 在落库前会 hash,原始内容永不落盘。
|
|
76
|
+
*
|
|
77
|
+
* v1.2 tb-ui v1 (Iter 4):补 7 字段 — 排查 / 性能 / 路由决策溯源必备。
|
|
78
|
+
* - `ttftMs`:首字延迟(从请求发起到首 byte),`forwardProxyRequest` 计算
|
|
79
|
+
* - `fallbackCount`:本请求实际走过的 seller 数(> 1 即发生 failover)
|
|
80
|
+
* - `routeReason`:`planSellerRouteSet().reason`(如 `fullAuto:balanced:routes_3`)
|
|
81
|
+
* - `falloverChain`:failover 路径上 seller id 数组(空 = 主路径成功)
|
|
82
|
+
* - `upstreamStatus`:seller 透传的上游健康状态(`healthy|degraded|unhealthy|unknown`)
|
|
83
|
+
* - `durationMs`:总耗时(req start → response end 或失败)
|
|
84
|
+
* - `paymentMethod`:本请求使用的支付方式(`mock|clawtip`)
|
|
76
85
|
*/
|
|
77
86
|
export interface InferenceLedgerInput {
|
|
78
87
|
requestId: string;
|
|
@@ -91,6 +100,13 @@ export interface InferenceLedgerInput {
|
|
|
91
100
|
balanceSource?: string;
|
|
92
101
|
prompt?: string;
|
|
93
102
|
response?: string;
|
|
103
|
+
ttftMs?: number;
|
|
104
|
+
fallbackCount?: number;
|
|
105
|
+
routeReason?: string;
|
|
106
|
+
falloverChain?: string[];
|
|
107
|
+
upstreamStatus?: string;
|
|
108
|
+
durationMs?: number;
|
|
109
|
+
paymentMethod?: string;
|
|
94
110
|
}
|
|
95
111
|
/**
|
|
96
112
|
* `tb doctor` 与审计日志消费的"安全版"推理账本条目。
|
|
@@ -114,6 +130,13 @@ export interface SafeInferenceLedgerEntry {
|
|
|
114
130
|
promptHash?: string;
|
|
115
131
|
responseHash?: string;
|
|
116
132
|
createdAt: string;
|
|
133
|
+
ttftMs?: number;
|
|
134
|
+
fallbackCount?: number;
|
|
135
|
+
routeReason?: string;
|
|
136
|
+
falloverChain?: string[];
|
|
137
|
+
upstreamStatus?: string;
|
|
138
|
+
durationMs?: number;
|
|
139
|
+
paymentMethod?: string;
|
|
117
140
|
}
|
|
118
141
|
/**
|
|
119
142
|
* seller token 余额快照的入参。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buyer-store.d.ts","sourceRoot":"","sources":["../../src/buyer-store.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED
|
|
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
|
@@ -279,14 +279,18 @@ export class BuyerStore {
|
|
|
279
279
|
request_id, seller_key, model_id, endpoint, status, prompt_tokens,
|
|
280
280
|
completion_tokens, billed_micros, estimated_micros, settled_micros,
|
|
281
281
|
settled_usd_micros, price_version, balance_snapshot_micros, balance_source,
|
|
282
|
-
prompt_hash, response_hash, created_at
|
|
283
|
-
|
|
282
|
+
prompt_hash, response_hash, created_at,
|
|
283
|
+
ttft_ms, fallback_count, route_reason, fallover_chain_json, upstream_status,
|
|
284
|
+
duration_ms, payment_method
|
|
285
|
+
) 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(), input.ttftMs ?? null, input.fallbackCount ?? null, input.routeReason ?? null, input.falloverChain ? JSON.stringify(input.falloverChain) : null, input.upstreamStatus ?? null, input.durationMs ?? null, input.paymentMethod ?? null);
|
|
284
286
|
}
|
|
285
287
|
listInferenceLedger() {
|
|
286
288
|
const rows = this.db.prepare(`SELECT request_id, seller_key, model_id, endpoint, status, prompt_tokens,
|
|
287
289
|
completion_tokens, billed_micros, estimated_micros, settled_micros,
|
|
288
290
|
settled_usd_micros, price_version, balance_snapshot_micros, balance_source,
|
|
289
|
-
prompt_hash, response_hash, created_at
|
|
291
|
+
prompt_hash, response_hash, created_at,
|
|
292
|
+
ttft_ms, fallback_count, route_reason, fallover_chain_json, upstream_status,
|
|
293
|
+
duration_ms, payment_method
|
|
290
294
|
FROM inference_ledger
|
|
291
295
|
ORDER BY id ASC`).all();
|
|
292
296
|
return rows.map(row => ({
|
|
@@ -306,7 +310,14 @@ export class BuyerStore {
|
|
|
306
310
|
balanceSource: row.balance_source || undefined,
|
|
307
311
|
promptHash: row.prompt_hash || undefined,
|
|
308
312
|
responseHash: row.response_hash || undefined,
|
|
309
|
-
createdAt: row.created_at
|
|
313
|
+
createdAt: row.created_at,
|
|
314
|
+
ttftMs: row.ttft_ms ?? undefined,
|
|
315
|
+
fallbackCount: row.fallback_count ?? undefined,
|
|
316
|
+
routeReason: row.route_reason ?? undefined,
|
|
317
|
+
falloverChain: row.fallover_chain_json ? JSON.parse(row.fallover_chain_json) : undefined,
|
|
318
|
+
upstreamStatus: row.upstream_status ?? undefined,
|
|
319
|
+
durationMs: row.duration_ms ?? undefined,
|
|
320
|
+
paymentMethod: row.payment_method ?? undefined
|
|
310
321
|
}));
|
|
311
322
|
}
|
|
312
323
|
close() {
|
|
@@ -380,7 +391,14 @@ export class BuyerStore {
|
|
|
380
391
|
balance_source TEXT,
|
|
381
392
|
prompt_hash TEXT,
|
|
382
393
|
response_hash TEXT,
|
|
383
|
-
created_at TEXT NOT NULL
|
|
394
|
+
created_at TEXT NOT NULL,
|
|
395
|
+
ttft_ms INTEGER,
|
|
396
|
+
fallback_count INTEGER,
|
|
397
|
+
route_reason TEXT,
|
|
398
|
+
fallover_chain_json TEXT,
|
|
399
|
+
upstream_status TEXT,
|
|
400
|
+
duration_ms INTEGER,
|
|
401
|
+
payment_method TEXT
|
|
384
402
|
);
|
|
385
403
|
|
|
386
404
|
CREATE TABLE IF NOT EXISTS provider_install_state (
|
|
@@ -417,7 +435,14 @@ export class BuyerStore {
|
|
|
417
435
|
["settled_usd_micros", "INTEGER"],
|
|
418
436
|
["price_version", "TEXT"],
|
|
419
437
|
["balance_snapshot_micros", "INTEGER"],
|
|
420
|
-
["balance_source", "TEXT"]
|
|
438
|
+
["balance_source", "TEXT"],
|
|
439
|
+
["ttft_ms", "INTEGER"],
|
|
440
|
+
["fallback_count", "INTEGER"],
|
|
441
|
+
["route_reason", "TEXT"],
|
|
442
|
+
["fallover_chain_json", "TEXT"],
|
|
443
|
+
["upstream_status", "TEXT"],
|
|
444
|
+
["duration_ms", "INTEGER"],
|
|
445
|
+
["payment_method", "TEXT"]
|
|
421
446
|
]) {
|
|
422
447
|
this.ensureColumn("inference_ledger", column, definition);
|
|
423
448
|
}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface ClawtipBootstrapResponse {
|
|
2
|
+
activationFeeFen?: number;
|
|
3
|
+
payment?: {
|
|
4
|
+
orderNo?: string;
|
|
5
|
+
amountFen?: number;
|
|
6
|
+
payTo?: string;
|
|
7
|
+
encryptedData?: string;
|
|
8
|
+
indicator?: string;
|
|
9
|
+
slug?: string;
|
|
10
|
+
skillId?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
resourceUrl?: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Fetch wallet-bootstrap's ClawTip activation payment payload.
|
|
17
|
+
*/
|
|
18
|
+
export declare function fetchClawtipBootstrap(bootstrapUrl: string): Promise<ClawtipBootstrapResponse>;
|
|
19
|
+
/**
|
|
20
|
+
* Normalize bootstrap resource URLs that accidentally point at the public registry path.
|
|
21
|
+
*/
|
|
22
|
+
export declare function normalizeClawtipBootstrapResourceUrl(bootstrapUrl: string, resourceUrl: string): string;
|
|
23
|
+
//# sourceMappingURL=clawtip-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clawtip-bootstrap.d.ts","sourceRoot":"","sources":["../../src/clawtip-bootstrap.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,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;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAwBnG;AAED;;GAEG;AACH,wBAAgB,oCAAoC,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CActG"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const CLAWTIP_BOOTSTRAP_PLACEHOLDER_PAY_TO = "bootstrap-pay-to";
|
|
2
|
+
/**
|
|
3
|
+
* Fetch wallet-bootstrap's ClawTip activation payment payload.
|
|
4
|
+
*/
|
|
5
|
+
export async function fetchClawtipBootstrap(bootstrapUrl) {
|
|
6
|
+
const response = await fetch(`${bootstrapUrl.replace(/\/+$/, "")}/payments/clawtip/bootstrap`, {
|
|
7
|
+
method: "POST",
|
|
8
|
+
headers: { "Content-Type": "application/json" },
|
|
9
|
+
body: JSON.stringify({ clientTag: "tb-payment-add" })
|
|
10
|
+
});
|
|
11
|
+
const body = await response.json();
|
|
12
|
+
if (!response.ok) {
|
|
13
|
+
throw new Error(body.error || `ClawTip bootstrap failed with HTTP ${response.status}`);
|
|
14
|
+
}
|
|
15
|
+
if (!body.payment?.orderNo || !body.payment.indicator || !body.payment.resourceUrl) {
|
|
16
|
+
throw new Error("ClawTip bootstrap response missing payment order fields");
|
|
17
|
+
}
|
|
18
|
+
if ((body.payment.payTo || "").trim() === CLAWTIP_BOOTSTRAP_PLACEHOLDER_PAY_TO) {
|
|
19
|
+
throw new Error([
|
|
20
|
+
`ClawTip bootstrap service is misconfigured: payTo is still the placeholder \`${CLAWTIP_BOOTSTRAP_PLACEHOLDER_PAY_TO}\`.`,
|
|
21
|
+
`Bootstrap URL: ${bootstrapUrl}`,
|
|
22
|
+
"Configure the bootstrap service with the real ClawTip merchant pay_to before retrying `tb init`.",
|
|
23
|
+
].join(" "));
|
|
24
|
+
}
|
|
25
|
+
body.payment.resourceUrl = normalizeClawtipBootstrapResourceUrl(bootstrapUrl, body.payment.resourceUrl);
|
|
26
|
+
return body;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Normalize bootstrap resource URLs that accidentally point at the public registry path.
|
|
30
|
+
*/
|
|
31
|
+
export function normalizeClawtipBootstrapResourceUrl(bootstrapUrl, resourceUrl) {
|
|
32
|
+
try {
|
|
33
|
+
const bootstrap = new URL(bootstrapUrl);
|
|
34
|
+
const resource = new URL(resourceUrl);
|
|
35
|
+
if (resource.origin === bootstrap.origin && resource.pathname === "/registry/sellers") {
|
|
36
|
+
resource.pathname = bootstrap.pathname.replace(/\/+$/, "") || "/";
|
|
37
|
+
resource.search = "";
|
|
38
|
+
resource.hash = "";
|
|
39
|
+
return resource.toString().replace(/\/$/, "");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Keep the server-provided value when URL parsing fails.
|
|
44
|
+
}
|
|
45
|
+
return resourceUrl;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=clawtip-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clawtip-bootstrap.js","sourceRoot":"","sources":["../../src/clawtip-bootstrap.ts"],"names":[],"mappings":"AAAA,MAAM,oCAAoC,GAAG,kBAAkB,CAAC;AAiBhE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,YAAoB;IAC9D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,6BAA6B,EAAE;QAC7F,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;KACtD,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAmD,CAAC;IACpF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,sCAAsC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,oCAAoC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CACb;YACE,gFAAgF,oCAAoC,KAAK;YACzH,kBAAkB,YAAY,EAAE;YAChC,kGAAkG;SACnG,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,oCAAoC,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxG,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oCAAoC,CAAC,YAAoB,EAAE,WAAmB;IAC5F,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,mBAAmB,EAAE,CAAC;YACtF,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;YAClE,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/dist/src/cli.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
interface
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
interface DaemonProbeResult {
|
|
3
|
+
running: boolean;
|
|
4
|
+
status?: unknown;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
interface DaemonRestartResult {
|
|
8
|
+
attempted: boolean;
|
|
9
|
+
restarted: boolean;
|
|
10
|
+
method: "launchd";
|
|
11
|
+
plistPath: string;
|
|
12
|
+
target?: string;
|
|
13
|
+
before?: DaemonProbeResult;
|
|
14
|
+
after?: DaemonProbeResult;
|
|
15
|
+
error?: string;
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
18
|
* `buildLaunchdPlistContent` 的输入。
|
|
@@ -37,25 +38,16 @@ export interface LaunchdPlistOptions {
|
|
|
37
38
|
* @returns 完整的 plist XML 字符串
|
|
38
39
|
*/
|
|
39
40
|
export declare function buildLaunchdPlistContent(options: LaunchdPlistOptions): string;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
export declare function
|
|
49
|
-
|
|
50
|
-
* 修正 Clawtip bootstrap 返回的 `resourceUrl`。
|
|
51
|
-
* 早期 bootstrap 返回 `/registry/sellers` 这种占位 URL,把它替换成当前 bootstrap URL 的 path,
|
|
52
|
-
* 让 buyer 正确指向 wallet-bootstrap。
|
|
53
|
-
*
|
|
54
|
-
* @param bootstrapUrl wallet-bootstrap base URL
|
|
55
|
-
* @param resourceUrl bootstrap 响应中的 `resourceUrl` 字段
|
|
56
|
-
* @returns 修正后的 resource URL(无法解析时返回原值)
|
|
57
|
-
*/
|
|
58
|
-
export declare function normalizeClawtipBootstrapResourceUrl(bootstrapUrl: string, resourceUrl: string): string;
|
|
41
|
+
interface RestartLaunchAgentDeps {
|
|
42
|
+
platform: NodeJS.Platform;
|
|
43
|
+
plistPath: string;
|
|
44
|
+
existsSync(filePath: string): boolean;
|
|
45
|
+
runLaunchctl(args: string[]): void;
|
|
46
|
+
probeDaemonStatus(controlPort: number): Promise<DaemonProbeResult>;
|
|
47
|
+
waitForDaemonStatus(controlPort: number, timeoutMs: number): Promise<DaemonProbeResult>;
|
|
48
|
+
}
|
|
49
|
+
export declare function restartLaunchAgent(controlPort: number, deps?: RestartLaunchAgentDeps): Promise<DaemonRestartResult>;
|
|
50
|
+
export { fetchClawtipBootstrap, normalizeClawtipBootstrapResourceUrl, } from "./clawtip-bootstrap.js";
|
|
59
51
|
/**
|
|
60
52
|
* 构造 commander program,绑定所有 `tb` 子命令(doctor / init / config / provider 等)。
|
|
61
53
|
* 在 `preAction` 钩子里做 daemon gate:非 daemon-only 命令跳过,其余命令需要本地 `tb-proxyd` 在跑。
|
|
@@ -63,5 +55,4 @@ export declare function normalizeClawtipBootstrapResourceUrl(bootstrapUrl: strin
|
|
|
63
55
|
* @returns 配置完整的 commander Command 实例
|
|
64
56
|
*/
|
|
65
57
|
export declare function buildCli(): Command;
|
|
66
|
-
export {};
|
|
67
58
|
//# 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;AAmFpC,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AASD,UAAU,mBAAmB;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkID;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AASD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAyC7E;AA8ED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnE,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzF;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,sBAOL,GACA,OAAO,CAAC,mBAAmB,CAAC,CA6C9B;AA+GD,OAAO,EACL,qBAAqB,EACrB,oCAAoC,GACrC,MAAM,wBAAwB,CAAC;AAwWhC;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CA23BlC"}
|
package/dist/src/cli.js
CHANGED
|
@@ -15,6 +15,7 @@ import { assertSellerRoutingConfig, defaultSellerRoutingConfig, normalizeSellerR
|
|
|
15
15
|
import { collectDoctorDiagnostics, collectDoctorModelsSummary, printDoctorProviders, printDoctorModelsSummary, readDoctorProviders, renderDoctorDiagnosticsProgressively, } from "./doctor-diagnostics.js";
|
|
16
16
|
import { buildInitSuccessMessage, buildInitTerminalSelectionState, buildInstalledTerminalMessage, INIT_PAYMENT_OPTIONS, inspectClawtipWalletReadiness, inspectOpenClawWalletConfig, noteInitComingSoonPayments, OTHER_TERMINAL_OPTION, validateInitTerminalSelection, } from "./init-payment-options.js";
|
|
17
17
|
import { checkOpenClawRuntime, readClawtipPayCredential, startClawtipWalletBootstrap, waitForClawtipActivationConfirmation, } from "./init-clawtip-activation.js";
|
|
18
|
+
import { fetchClawtipBootstrap, } from "./clawtip-bootstrap.js";
|
|
18
19
|
import { displayTerminalImage } from "./terminal-image.js";
|
|
19
20
|
// @ts-ignore
|
|
20
21
|
import qrcode from "qrcode-terminal";
|
|
@@ -86,7 +87,6 @@ async function probeDaemonStatus(controlPort) {
|
|
|
86
87
|
};
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
|
-
const CLAWTIP_BOOTSTRAP_PLACEHOLDER_PAY_TO = "bootstrap-pay-to";
|
|
90
90
|
async function waitForDaemonStatus(controlPort, timeoutMs) {
|
|
91
91
|
const deadline = Date.now() + timeoutMs;
|
|
92
92
|
let latest = { running: false, error: "not checked" };
|
|
@@ -99,6 +99,19 @@ async function waitForDaemonStatus(controlPort, timeoutMs) {
|
|
|
99
99
|
}
|
|
100
100
|
return latest;
|
|
101
101
|
}
|
|
102
|
+
function launchControlUi(controlPort) {
|
|
103
|
+
const url = `http://127.0.0.1:${controlPort}/`;
|
|
104
|
+
const platform = process.platform;
|
|
105
|
+
const args = platform === "darwin" ? [url] : platform === "win32" ? ["/c", "start", "", url] : [url];
|
|
106
|
+
const cmd = platform === "win32" ? "cmd" : platform === "darwin" ? "open" : "xdg-open";
|
|
107
|
+
const child = spawn(cmd, args, { detached: true, stdio: "ignore" });
|
|
108
|
+
child.on("error", (err) => {
|
|
109
|
+
console.error(`Failed to launch browser: ${err.message}`);
|
|
110
|
+
process.exitCode = 1;
|
|
111
|
+
});
|
|
112
|
+
child.unref();
|
|
113
|
+
return url;
|
|
114
|
+
}
|
|
102
115
|
function defaultProxydLogPath(kind) {
|
|
103
116
|
const logDir = path.join(os.homedir(), ".tokenbuddy-store");
|
|
104
117
|
fs.mkdirSync(logDir, { recursive: true });
|
|
@@ -167,6 +180,12 @@ function launchdUserDomain() {
|
|
|
167
180
|
}
|
|
168
181
|
return "gui/501";
|
|
169
182
|
}
|
|
183
|
+
function launchAgentPlistPath(label) {
|
|
184
|
+
return path.join(os.homedir(), "Library", "LaunchAgents", `${label}.plist`);
|
|
185
|
+
}
|
|
186
|
+
function launchdServiceTarget(label) {
|
|
187
|
+
return `${launchdUserDomain()}/${label}`;
|
|
188
|
+
}
|
|
170
189
|
function runLaunchctl(args, ignoreFailure = false) {
|
|
171
190
|
try {
|
|
172
191
|
execFileSync("launchctl", args, { stdio: "ignore" });
|
|
@@ -223,6 +242,56 @@ async function repairDaemon(controlPort) {
|
|
|
223
242
|
probe
|
|
224
243
|
};
|
|
225
244
|
}
|
|
245
|
+
export async function restartLaunchAgent(controlPort, deps = {
|
|
246
|
+
platform: process.platform,
|
|
247
|
+
plistPath: launchAgentPlistPath(TOKENBUDDY_LAUNCHD_LABEL),
|
|
248
|
+
existsSync: fs.existsSync,
|
|
249
|
+
runLaunchctl: (args) => runLaunchctl(args),
|
|
250
|
+
probeDaemonStatus,
|
|
251
|
+
waitForDaemonStatus,
|
|
252
|
+
}) {
|
|
253
|
+
const before = await deps.probeDaemonStatus(controlPort);
|
|
254
|
+
const baseResult = {
|
|
255
|
+
attempted: false,
|
|
256
|
+
restarted: false,
|
|
257
|
+
method: "launchd",
|
|
258
|
+
plistPath: deps.plistPath,
|
|
259
|
+
before,
|
|
260
|
+
};
|
|
261
|
+
if (deps.platform !== "darwin") {
|
|
262
|
+
return {
|
|
263
|
+
...baseResult,
|
|
264
|
+
error: "tb daemon restart is only supported for the macOS LaunchAgent service. Run `tb doctor --fix` to start tb-proxyd in the background."
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
if (!deps.existsSync(deps.plistPath)) {
|
|
268
|
+
return {
|
|
269
|
+
...baseResult,
|
|
270
|
+
error: "LaunchAgent plist is missing. Run `tb init` to install tb-proxyd as a service first."
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
const target = launchdServiceTarget(TOKENBUDDY_LAUNCHD_LABEL);
|
|
274
|
+
try {
|
|
275
|
+
deps.runLaunchctl(["kickstart", "-k", target]);
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
return {
|
|
279
|
+
...baseResult,
|
|
280
|
+
attempted: true,
|
|
281
|
+
target,
|
|
282
|
+
error: error instanceof Error ? error.message : String(error)
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
const after = await deps.waitForDaemonStatus(controlPort, 8000);
|
|
286
|
+
return {
|
|
287
|
+
...baseResult,
|
|
288
|
+
attempted: true,
|
|
289
|
+
restarted: after.running,
|
|
290
|
+
target,
|
|
291
|
+
after,
|
|
292
|
+
error: after.running ? undefined : after.error || "tb-proxyd did not become ready after restart"
|
|
293
|
+
};
|
|
294
|
+
}
|
|
226
295
|
function commandPath(command) {
|
|
227
296
|
const names = [];
|
|
228
297
|
let current = command;
|
|
@@ -244,7 +313,7 @@ function rootActionName(command) {
|
|
|
244
313
|
}
|
|
245
314
|
function commandRequiresDaemon(command) {
|
|
246
315
|
const rootName = rootActionName(command);
|
|
247
|
-
return rootName !== "doctor" && rootName !== "init" && rootName !== "routing";
|
|
316
|
+
return rootName !== "doctor" && rootName !== "init" && rootName !== "routing" && rootName !== "daemon" && rootName !== "ui";
|
|
248
317
|
}
|
|
249
318
|
async function enforceDaemonGate(command) {
|
|
250
319
|
if (!commandRequiresDaemon(command)) {
|
|
@@ -321,62 +390,7 @@ function printPaymentList(payments, asJson) {
|
|
|
321
390
|
console.log("=== TokenBuddy Payment Methods ===");
|
|
322
391
|
console.log(table.toString());
|
|
323
392
|
}
|
|
324
|
-
|
|
325
|
-
* 调 wallet-bootstrap 的 `/payments/clawtip/bootstrap` 端点,拿到激活支付参数。
|
|
326
|
-
* 校验:HTTP 200、订单字段齐全、`payTo` 不是占位符。
|
|
327
|
-
*
|
|
328
|
-
* @param bootstrapUrl wallet-bootstrap 服务 base URL
|
|
329
|
-
* @returns bootstrap 响应(含 `payment` 字段)
|
|
330
|
-
* @throws Error 任何校验失败
|
|
331
|
-
*/
|
|
332
|
-
export async function fetchClawtipBootstrap(bootstrapUrl) {
|
|
333
|
-
const response = await fetch(`${bootstrapUrl.replace(/\/+$/, "")}/payments/clawtip/bootstrap`, {
|
|
334
|
-
method: "POST",
|
|
335
|
-
headers: { "Content-Type": "application/json" },
|
|
336
|
-
body: JSON.stringify({ clientTag: "tb-payment-add" })
|
|
337
|
-
});
|
|
338
|
-
const body = await response.json();
|
|
339
|
-
if (!response.ok) {
|
|
340
|
-
throw new Error(body.error || `ClawTip bootstrap failed with HTTP ${response.status}`);
|
|
341
|
-
}
|
|
342
|
-
if (!body.payment?.orderNo || !body.payment.indicator || !body.payment.resourceUrl) {
|
|
343
|
-
throw new Error("ClawTip bootstrap response missing payment order fields");
|
|
344
|
-
}
|
|
345
|
-
if ((body.payment.payTo || "").trim() === CLAWTIP_BOOTSTRAP_PLACEHOLDER_PAY_TO) {
|
|
346
|
-
throw new Error([
|
|
347
|
-
`ClawTip bootstrap service is misconfigured: payTo is still the placeholder \`${CLAWTIP_BOOTSTRAP_PLACEHOLDER_PAY_TO}\`.`,
|
|
348
|
-
`Bootstrap URL: ${bootstrapUrl}`,
|
|
349
|
-
"Configure the bootstrap service with the real ClawTip merchant pay_to before retrying `tb init`.",
|
|
350
|
-
].join(" "));
|
|
351
|
-
}
|
|
352
|
-
body.payment.resourceUrl = normalizeClawtipBootstrapResourceUrl(bootstrapUrl, body.payment.resourceUrl);
|
|
353
|
-
return body;
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* 修正 Clawtip bootstrap 返回的 `resourceUrl`。
|
|
357
|
-
* 早期 bootstrap 返回 `/registry/sellers` 这种占位 URL,把它替换成当前 bootstrap URL 的 path,
|
|
358
|
-
* 让 buyer 正确指向 wallet-bootstrap。
|
|
359
|
-
*
|
|
360
|
-
* @param bootstrapUrl wallet-bootstrap base URL
|
|
361
|
-
* @param resourceUrl bootstrap 响应中的 `resourceUrl` 字段
|
|
362
|
-
* @returns 修正后的 resource URL(无法解析时返回原值)
|
|
363
|
-
*/
|
|
364
|
-
export function normalizeClawtipBootstrapResourceUrl(bootstrapUrl, resourceUrl) {
|
|
365
|
-
try {
|
|
366
|
-
const bootstrap = new URL(bootstrapUrl);
|
|
367
|
-
const resource = new URL(resourceUrl);
|
|
368
|
-
if (resource.origin === bootstrap.origin && resource.pathname === "/registry/sellers") {
|
|
369
|
-
resource.pathname = bootstrap.pathname.replace(/\/+$/, "") || "/";
|
|
370
|
-
resource.search = "";
|
|
371
|
-
resource.hash = "";
|
|
372
|
-
return resource.toString().replace(/\/$/, "");
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
catch {
|
|
376
|
-
// Leave the server-provided value unchanged when URL parsing fails.
|
|
377
|
-
}
|
|
378
|
-
return resourceUrl;
|
|
379
|
-
}
|
|
393
|
+
export { fetchClawtipBootstrap, normalizeClawtipBootstrapResourceUrl, } from "./clawtip-bootstrap.js";
|
|
380
394
|
function readProof(options) {
|
|
381
395
|
const proofFile = options.proofFile || process.env.TOKENBUDDY_CLAWTIP_PROOF_FILE;
|
|
382
396
|
if (!proofFile) {
|
|
@@ -824,6 +838,73 @@ export function buildCli() {
|
|
|
824
838
|
await renderDoctorV12Section(controlUrl);
|
|
825
839
|
}
|
|
826
840
|
});
|
|
841
|
+
// tb ui — 探测 daemon + 用系统默认浏览器打开控制台
|
|
842
|
+
program
|
|
843
|
+
.command("ui")
|
|
844
|
+
.description("Open the local TokenBuddy control console in your default browser")
|
|
845
|
+
.action(async () => {
|
|
846
|
+
const controlPort = configuredControlPort();
|
|
847
|
+
const url = `http://127.0.0.1:${controlPort}/`;
|
|
848
|
+
const probe = await probeDaemonStatus(controlPort);
|
|
849
|
+
if (!probe.running) {
|
|
850
|
+
console.error(`tb-proxyd is not running.`);
|
|
851
|
+
console.error(`Checked: ${url}status`);
|
|
852
|
+
console.error(`Run \`tb init\` to complete first-time setup, then \`tb-proxyd\` to start the daemon.`);
|
|
853
|
+
process.exitCode = 1;
|
|
854
|
+
const err = new Error("tb-proxyd is not running");
|
|
855
|
+
err.code = "tokenbuddy.daemon_not_running";
|
|
856
|
+
err.exitCode = 1;
|
|
857
|
+
throw err;
|
|
858
|
+
}
|
|
859
|
+
console.log(`Opening ${launchControlUi(controlPort)} in your default browser…`);
|
|
860
|
+
});
|
|
861
|
+
const daemon = program
|
|
862
|
+
.command("daemon")
|
|
863
|
+
.description("Manage the local tb-proxyd service");
|
|
864
|
+
daemon
|
|
865
|
+
.command("restart")
|
|
866
|
+
.description("Restart tb-proxyd through the installed macOS LaunchAgent")
|
|
867
|
+
.option("--json", "Output restart result as JSON")
|
|
868
|
+
.action(async (options) => {
|
|
869
|
+
const controlPort = configuredControlPort();
|
|
870
|
+
const proxyPort = configuredProxyPort();
|
|
871
|
+
if (!options.json) {
|
|
872
|
+
console.log("Restarting tb-proxyd LaunchAgent...");
|
|
873
|
+
}
|
|
874
|
+
const result = await restartLaunchAgent(controlPort);
|
|
875
|
+
if (!result.restarted) {
|
|
876
|
+
process.exitCode = 1;
|
|
877
|
+
}
|
|
878
|
+
if (options.json) {
|
|
879
|
+
const daemonProbe = result.after || result.before;
|
|
880
|
+
console.log(JSON.stringify({
|
|
881
|
+
restart: result,
|
|
882
|
+
daemon: {
|
|
883
|
+
running: Boolean(daemonProbe?.running),
|
|
884
|
+
controlPort,
|
|
885
|
+
proxyPort,
|
|
886
|
+
controlUrl: `http://127.0.0.1:${controlPort}`,
|
|
887
|
+
proxyUrl: `http://127.0.0.1:${proxyPort}`,
|
|
888
|
+
status: daemonProbe?.status,
|
|
889
|
+
error: daemonProbe?.error || result.error
|
|
890
|
+
}
|
|
891
|
+
}, null, 2));
|
|
892
|
+
return;
|
|
893
|
+
}
|
|
894
|
+
if (!result.restarted) {
|
|
895
|
+
console.error(`Failed to restart tb-proxyd: ${result.error || "unknown error"}`);
|
|
896
|
+
if (!result.after?.running) {
|
|
897
|
+
console.error(`Checked: http://127.0.0.1:${controlPort}/status`);
|
|
898
|
+
}
|
|
899
|
+
return;
|
|
900
|
+
}
|
|
901
|
+
const status = result.after?.status && typeof result.after.status === "object"
|
|
902
|
+
? result.after.status
|
|
903
|
+
: undefined;
|
|
904
|
+
console.log(`✅ tb-proxyd restarted${status?.pid ? ` (PID: ${status.pid})` : ""}.`);
|
|
905
|
+
console.log(` Control Plane URL: http://127.0.0.1:${status?.controlPort || controlPort}`);
|
|
906
|
+
console.log(` Proxy Plane URL: http://127.0.0.1:${status?.proxyPort || proxyPort}`);
|
|
907
|
+
});
|
|
827
908
|
// v1.2 §18.11 helpers for `tb doctor` / `tb doctor --json`.
|
|
828
909
|
async function fetchV12Snapshot(controlUrl) {
|
|
829
910
|
try {
|
|
@@ -1405,6 +1486,24 @@ export function buildCli() {
|
|
|
1405
1486
|
installLaunchAgent(plistPath, TOKENBUDDY_LAUNCHD_LABEL);
|
|
1406
1487
|
spinner.stop("LaunchAgent daemon successfully registered and started! 🚀");
|
|
1407
1488
|
setupSummaryLines.push("Background tb-proxyd launchd service installed.");
|
|
1489
|
+
spinner.start("Checking tb-proxyd control plane...");
|
|
1490
|
+
const daemonProbe = await waitForDaemonStatus(controlPort, 8000);
|
|
1491
|
+
spinner.stop(daemonProbe.running ? "tb-proxyd control plane is ready." : "tb-proxyd control plane is still starting.");
|
|
1492
|
+
if (daemonProbe.running) {
|
|
1493
|
+
const nextStep = await p.select({
|
|
1494
|
+
message: "tb-proxyd is running. What would you like to do next?",
|
|
1495
|
+
options: [
|
|
1496
|
+
{ value: "continue", label: "Continue in terminal", hint: "Finish the CLI setup summary" },
|
|
1497
|
+
{ value: "ui", label: "Open tb ui", hint: "Launch the local graphical console" }
|
|
1498
|
+
]
|
|
1499
|
+
});
|
|
1500
|
+
if (nextStep === "ui") {
|
|
1501
|
+
const uiUrl = launchControlUi(controlPort);
|
|
1502
|
+
setupSummaryLines.push(`Opened TokenBuddy UI at ${uiUrl}.`);
|
|
1503
|
+
p.outro(buildInitSuccessMessage(setupSummaryLines));
|
|
1504
|
+
return;
|
|
1505
|
+
}
|
|
1506
|
+
}
|
|
1408
1507
|
}
|
|
1409
1508
|
catch (err) {
|
|
1410
1509
|
spinner.stop(`Failed to write launchd plist: ${err.message}`);
|