@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
@@ -0,0 +1,21 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta name="theme-color" content="#07111f" />
7
+ <meta name="application-name" content="TokenBuddy" />
8
+ <meta name="apple-mobile-web-app-title" content="TokenBuddy" />
9
+ <meta name="apple-mobile-web-app-capable" content="yes" />
10
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
11
+ <link rel="manifest" href="/manifest.webmanifest" />
12
+ <link rel="icon" type="image/png" sizes="192x192" href="/icons/tokenbuddy-192.png" />
13
+ <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
14
+ <title>TokenBuddy · Local Control</title>
15
+ <script type="module" crossorigin src="/assets/index-YHs-Ca0f.js"></script>
16
+ <link rel="stylesheet" crossorigin href="/assets/index-UMiTTeo8.css">
17
+ </head>
18
+ <body>
19
+ <div id="root"></div>
20
+ </body>
21
+ </html>
@@ -0,0 +1,28 @@
1
+ {
2
+ "id": "/",
3
+ "name": "TokenBuddy Local Control",
4
+ "short_name": "TokenBuddy",
5
+ "description": "Local TokenBuddy buyer control console.",
6
+ "start_url": "/overview",
7
+ "scope": "/",
8
+ "display": "standalone",
9
+ "display_override": ["window-controls-overlay", "standalone", "minimal-ui"],
10
+ "background_color": "#07111f",
11
+ "theme_color": "#07111f",
12
+ "orientation": "any",
13
+ "categories": ["developer", "productivity", "utilities"],
14
+ "icons": [
15
+ {
16
+ "src": "/icons/tokenbuddy-192.png",
17
+ "sizes": "192x192",
18
+ "type": "image/png",
19
+ "purpose": "any maskable"
20
+ },
21
+ {
22
+ "src": "/icons/tokenbuddy-512.png",
23
+ "sizes": "512x512",
24
+ "type": "image/png",
25
+ "purpose": "any maskable"
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,59 @@
1
+ const CACHE_NAME = "tokenbuddy-ui-v1";
2
+ const APP_SHELL = [
3
+ "/",
4
+ "/overview",
5
+ "/manifest.webmanifest",
6
+ "/icons/tokenbuddy-192.png",
7
+ "/icons/tokenbuddy-512.png",
8
+ "/icons/apple-touch-icon.png"
9
+ ];
10
+
11
+ self.addEventListener("install", (event) => {
12
+ event.waitUntil(
13
+ caches.open(CACHE_NAME).then((cache) => cache.addAll(APP_SHELL))
14
+ );
15
+ self.skipWaiting();
16
+ });
17
+
18
+ self.addEventListener("activate", (event) => {
19
+ event.waitUntil(
20
+ caches.keys().then((keys) =>
21
+ Promise.all(keys.filter((key) => key !== CACHE_NAME).map((key) => caches.delete(key)))
22
+ )
23
+ );
24
+ self.clients.claim();
25
+ });
26
+
27
+ self.addEventListener("fetch", (event) => {
28
+ const { request } = event;
29
+ if (request.method !== "GET") {
30
+ return;
31
+ }
32
+
33
+ const url = new URL(request.url);
34
+ if (url.origin !== self.location.origin) {
35
+ return;
36
+ }
37
+
38
+ if (request.mode === "navigate") {
39
+ event.respondWith(
40
+ fetch(request).catch(() => caches.match("/overview").then((response) => response || caches.match("/")))
41
+ );
42
+ return;
43
+ }
44
+
45
+ if (url.pathname.startsWith("/assets/") || url.pathname.startsWith("/icons/") || url.pathname === "/manifest.webmanifest") {
46
+ event.respondWith(
47
+ caches.match(request).then((cached) => {
48
+ if (cached) {
49
+ return cached;
50
+ }
51
+ return fetch(request).then((response) => {
52
+ const copy = response.clone();
53
+ caches.open(CACHE_NAME).then((cache) => cache.put(request, copy));
54
+ return response;
55
+ });
56
+ })
57
+ );
58
+ }
59
+ });