@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.
Files changed (79) hide show
  1. package/dist/src/buyer-store.d.ts +23 -0
  2. package/dist/src/buyer-store.d.ts.map +1 -1
  3. package/dist/src/buyer-store.js +31 -6
  4. package/dist/src/buyer-store.js.map +1 -1
  5. package/dist/src/clawtip-bootstrap.d.ts +23 -0
  6. package/dist/src/clawtip-bootstrap.d.ts.map +1 -0
  7. package/dist/src/clawtip-bootstrap.js +47 -0
  8. package/dist/src/clawtip-bootstrap.js.map +1 -0
  9. package/dist/src/cli.d.ts +24 -33
  10. package/dist/src/cli.d.ts.map +1 -1
  11. package/dist/src/cli.js +157 -58
  12. package/dist/src/cli.js.map +1 -1
  13. package/dist/src/daemon.d.ts +79 -1
  14. package/dist/src/daemon.d.ts.map +1 -1
  15. package/dist/src/daemon.js +1007 -23
  16. package/dist/src/daemon.js.map +1 -1
  17. package/dist/src/model-index.d.ts +1 -1
  18. package/dist/src/model-index.d.ts.map +1 -1
  19. package/dist/src/model-index.js +4 -0
  20. package/dist/src/model-index.js.map +1 -1
  21. package/dist/src/prewarm-cache.d.ts +4 -0
  22. package/dist/src/prewarm-cache.d.ts.map +1 -1
  23. package/dist/src/prewarm-cache.js +2 -1
  24. package/dist/src/prewarm-cache.js.map +1 -1
  25. package/dist/src/prewarm-scheduler.d.ts +2 -0
  26. package/dist/src/prewarm-scheduler.d.ts.map +1 -1
  27. package/dist/src/prewarm-scheduler.js +4 -2
  28. package/dist/src/prewarm-scheduler.js.map +1 -1
  29. package/dist/src/route-failover.d.ts.map +1 -1
  30. package/dist/src/route-failover.js +10 -0
  31. package/dist/src/route-failover.js.map +1 -1
  32. package/dist/src/seller-catalog.d.ts +17 -0
  33. package/dist/src/seller-catalog.d.ts.map +1 -1
  34. package/dist/src/seller-catalog.js +15 -1
  35. package/dist/src/seller-catalog.js.map +1 -1
  36. package/dist/src/seller-pool.d.ts +12 -1
  37. package/dist/src/seller-pool.d.ts.map +1 -1
  38. package/dist/src/seller-pool.js +61 -7
  39. package/dist/src/seller-pool.js.map +1 -1
  40. package/dist/src/seller-route-planner.d.ts +11 -1
  41. package/dist/src/seller-route-planner.d.ts.map +1 -1
  42. package/dist/src/seller-route-planner.js +21 -9
  43. package/dist/src/seller-route-planner.js.map +1 -1
  44. package/dist/src/seller-routing-config.d.ts +2 -0
  45. package/dist/src/seller-routing-config.d.ts.map +1 -1
  46. package/dist/src/seller-routing-config.js +11 -1
  47. package/dist/src/seller-routing-config.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/buyer-store.ts +70 -7
  50. package/src/clawtip-bootstrap.ts +64 -0
  51. package/src/cli.ts +201 -76
  52. package/src/daemon.ts +1159 -25
  53. package/src/model-index.ts +4 -1
  54. package/src/prewarm-cache.ts +6 -1
  55. package/src/prewarm-scheduler.ts +6 -2
  56. package/src/route-failover.ts +11 -0
  57. package/src/seller-catalog.ts +24 -1
  58. package/src/seller-pool.ts +69 -7
  59. package/src/seller-route-planner.ts +33 -11
  60. package/src/seller-routing-config.ts +14 -1
  61. package/static/clawtip/recharge.png +0 -0
  62. package/static/ui/assets/index-UMiTTeo8.css +1 -0
  63. package/static/ui/assets/index-YHs-Ca0f.js +206 -0
  64. package/static/ui/assets/index-YHs-Ca0f.js.map +1 -0
  65. package/static/ui/icons/apple-touch-icon.png +0 -0
  66. package/static/ui/icons/tokenbuddy-192.png +0 -0
  67. package/static/ui/icons/tokenbuddy-512.png +0 -0
  68. package/static/ui/index.html +21 -0
  69. package/static/ui/manifest.webmanifest +28 -0
  70. package/static/ui/sw.js +59 -0
  71. package/tests/control-plane-ui-endpoints.test.ts +589 -0
  72. package/tests/daemon-classify.test.ts +9 -0
  73. package/tests/model-index.test.ts +14 -0
  74. package/tests/route-failover.test.ts +16 -0
  75. package/tests/seller-catalog-utilities.test.ts +54 -0
  76. package/tests/seller-pool.test.ts +56 -0
  77. package/tests/seller-route-planner.test.ts +40 -0
  78. package/tests/seller-routing-config.test.ts +13 -0
  79. 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":"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"}
1
+ {"version":3,"file":"buyer-store.d.ts","sourceRoot":"","sources":["../../src/buyer-store.ts"],"names":[],"mappings":"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"}
@@ -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
- ) 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());
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 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
- };
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
- * 调 wallet-bootstrap 的 `/payments/clawtip/bootstrap` 端点,拿到激活支付参数。
42
- * 校验:HTTP 200、订单字段齐全、`payTo` 不是占位符。
43
- *
44
- * @param bootstrapUrl wallet-bootstrap 服务 base URL
45
- * @returns bootstrap 响应(含 `payment` 字段)
46
- * @throws Error 任何校验失败
47
- */
48
- export declare function fetchClawtipBootstrap(bootstrapUrl: string): Promise<ClawtipBootstrapResponse>;
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
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiGpC,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;AAiHD;;;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;AAmLD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAwBnG;AAED;;;;;;;;GAQG;AACH,wBAAgB,oCAAoC,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CActG;AAwWD;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CA8xBlC"}
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}`);