@tokenbuddy/tokenbuddy 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/bin/tb-proxyd.js +2 -0
  2. package/bin/tb.js +3 -0
  3. package/bin/tokenbuddy-proxyd.js +2 -0
  4. package/bin/tokenbuddy.js +3 -0
  5. package/dist/src/buyer-store.d.ts +118 -0
  6. package/dist/src/buyer-store.d.ts.map +1 -0
  7. package/dist/src/buyer-store.js +296 -0
  8. package/dist/src/buyer-store.js.map +1 -0
  9. package/dist/src/cli.d.ts +3 -0
  10. package/dist/src/cli.d.ts.map +1 -0
  11. package/dist/src/cli.js +648 -0
  12. package/dist/src/cli.js.map +1 -0
  13. package/dist/src/daemon.d.ts +48 -0
  14. package/dist/src/daemon.d.ts.map +1 -0
  15. package/dist/src/daemon.js +998 -0
  16. package/dist/src/daemon.js.map +1 -0
  17. package/dist/src/index.d.ts +2 -0
  18. package/dist/src/index.d.ts.map +1 -0
  19. package/dist/src/index.js +12 -0
  20. package/dist/src/index.js.map +1 -0
  21. package/dist/src/provider-install.d.ts +44 -0
  22. package/dist/src/provider-install.d.ts.map +1 -0
  23. package/dist/src/provider-install.js +286 -0
  24. package/dist/src/provider-install.js.map +1 -0
  25. package/dist/src/tb-proxyd.d.ts +2 -0
  26. package/dist/src/tb-proxyd.d.ts.map +1 -0
  27. package/dist/src/tb-proxyd.js +54 -0
  28. package/dist/src/tb-proxyd.js.map +1 -0
  29. package/dist/src/terminal-detect.d.ts +29 -0
  30. package/dist/src/terminal-detect.d.ts.map +1 -0
  31. package/dist/src/terminal-detect.js +209 -0
  32. package/dist/src/terminal-detect.js.map +1 -0
  33. package/package.json +29 -0
  34. package/src/buyer-store.ts +536 -0
  35. package/src/cli.ts +732 -0
  36. package/src/daemon.ts +1158 -0
  37. package/src/index.ts +12 -0
  38. package/src/provider-install.ts +363 -0
  39. package/src/tb-proxyd.ts +60 -0
  40. package/src/terminal-detect.ts +225 -0
  41. package/tests/e2e.test.ts +264 -0
  42. package/tests/tokenbuddy.test.ts +1186 -0
  43. package/tsconfig.json +8 -0
@@ -0,0 +1,209 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ import * as os from "os";
4
+ const PLACEHOLDER_API_KEY = "TOKENBUDDY_PROXY";
5
+ const DESKTOP_PROFILE_ID = "00000000-0000-4000-8000-000000178210";
6
+ export function getHomeDir() {
7
+ return os.homedir();
8
+ }
9
+ /**
10
+ * Detect which coding terminals are installed on the local system.
11
+ */
12
+ export function detectTerminals() {
13
+ const home = getHomeDir();
14
+ const candidates = [];
15
+ // 1. Claude Code
16
+ const claudePath = path.join(home, ".claude", "settings.json");
17
+ const claudeDetected = fs.existsSync(claudePath);
18
+ candidates.push({
19
+ id: "claude-code",
20
+ name: "Claude Code CLI",
21
+ detected: claudeDetected,
22
+ configPath: claudePath,
23
+ reason: claudeDetected ? "Found `~/.claude/settings.json`" : "Missing `~/.claude/settings.json`"
24
+ });
25
+ // 2. Claude Desktop
26
+ let desktopPath = "";
27
+ if (process.platform === "darwin") {
28
+ desktopPath = path.join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json");
29
+ }
30
+ else if (process.platform === "win32") {
31
+ const localAppData = process.env.LOCALAPPDATA || path.join(home, "AppData", "Local");
32
+ desktopPath = path.join(localAppData, "Claude", "claude_desktop_config.json");
33
+ }
34
+ const desktopDetected = desktopPath !== "" && fs.existsSync(desktopPath);
35
+ candidates.push({
36
+ id: "claude-desktop",
37
+ name: "Claude Desktop App",
38
+ detected: desktopDetected,
39
+ configPath: desktopPath,
40
+ reason: desktopDetected ? "Found Claude desktop config" : "Missing Claude desktop config"
41
+ });
42
+ // 3. Openclaw
43
+ const openclawPath = path.join(home, ".openclaw", "config.json");
44
+ const openclawDetected = fs.existsSync(openclawPath);
45
+ candidates.push({
46
+ id: "openclaw",
47
+ name: "Openclaw Agent",
48
+ detected: openclawDetected,
49
+ configPath: openclawPath,
50
+ reason: openclawDetected ? "Found `~/.openclaw/config.json`" : "Missing `~/.openclaw/config.json`"
51
+ });
52
+ // 4. Hermes
53
+ const hermesPath = path.join(home, ".hermes", "settings.json");
54
+ const hermesDetected = fs.existsSync(hermesPath);
55
+ candidates.push({
56
+ id: "hermes",
57
+ name: "Hermes Terminal",
58
+ detected: hermesDetected,
59
+ configPath: hermesPath,
60
+ reason: hermesDetected ? "Found `~/.hermes/settings.json`" : "Missing `~/.hermes/settings.json`"
61
+ });
62
+ return candidates;
63
+ }
64
+ /**
65
+ * Safely rewrite Claude Code settings to route requests through our proxy.
66
+ */
67
+ export function rewriteClaudeCode(configPath, proxyUrl, model) {
68
+ try {
69
+ const parent = path.dirname(configPath);
70
+ if (!fs.existsSync(parent)) {
71
+ fs.mkdirSync(parent, { recursive: true });
72
+ }
73
+ let config = {};
74
+ if (fs.existsSync(configPath)) {
75
+ try {
76
+ config = JSON.parse(fs.readFileSync(configPath, "utf8"));
77
+ }
78
+ catch { }
79
+ }
80
+ if (!config.env || typeof config.env !== "object") {
81
+ config.env = {};
82
+ }
83
+ config.env.ANTHROPIC_BASE_URL = proxyUrl;
84
+ config.env.ANTHROPIC_AUTH_TOKEN = PLACEHOLDER_API_KEY;
85
+ config.env.ANTHROPIC_MODEL = model;
86
+ config.env.ANTHROPIC_DEFAULT_SONNET_MODEL = model;
87
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf8");
88
+ console.log(`[terminal-detect] Claude Code successfully routed to ${proxyUrl}`);
89
+ }
90
+ catch (err) {
91
+ console.error("[terminal-detect] Failed to rewrite Claude Code config:", err.message);
92
+ }
93
+ }
94
+ /**
95
+ * Safely rewrite Claude Desktop configuration.
96
+ */
97
+ export function rewriteClaudeDesktop(configPath, proxyUrl, model) {
98
+ try {
99
+ const dir = path.dirname(configPath);
100
+ const threepDir = dir.replace(/Claude$/, "Claude-3p");
101
+ const writeMode = (filePath) => {
102
+ const parent = path.dirname(filePath);
103
+ if (!fs.existsSync(parent)) {
104
+ fs.mkdirSync(parent, { recursive: true });
105
+ }
106
+ let config = {};
107
+ if (fs.existsSync(filePath)) {
108
+ try {
109
+ config = JSON.parse(fs.readFileSync(filePath, "utf8"));
110
+ }
111
+ catch { }
112
+ }
113
+ config.deploymentMode = "3p";
114
+ fs.writeFileSync(filePath, JSON.stringify(config, null, 2), "utf8");
115
+ };
116
+ // 1. Write deployment modes
117
+ writeMode(configPath);
118
+ const threepConfigPath = configPath.replace(/Claude/, "Claude-3p");
119
+ writeMode(threepConfigPath);
120
+ // 2. Write Profile
121
+ const configLibraryPath = path.join(threepDir, "configLibrary");
122
+ if (!fs.existsSync(configLibraryPath)) {
123
+ fs.mkdirSync(configLibraryPath, { recursive: true });
124
+ }
125
+ const profilePath = path.join(configLibraryPath, `${DESKTOP_PROFILE_ID}.json`);
126
+ const profile = {
127
+ disableDeploymentModeChooser: true,
128
+ inferenceGatewayApiKey: PLACEHOLDER_API_KEY,
129
+ inferenceGatewayAuthScheme: "bearer",
130
+ inferenceGatewayBaseUrl: proxyUrl,
131
+ inferenceProvider: "gateway",
132
+ inferenceModels: [{ name: model }]
133
+ };
134
+ fs.writeFileSync(profilePath, JSON.stringify(profile, null, 2), "utf8");
135
+ // 3. Write _meta.json
136
+ const metaPath = path.join(configLibraryPath, "_meta.json");
137
+ let meta = {};
138
+ if (fs.existsSync(metaPath)) {
139
+ try {
140
+ meta = JSON.parse(fs.readFileSync(metaPath, "utf8"));
141
+ }
142
+ catch { }
143
+ }
144
+ let entries = Array.isArray(meta.entries) ? meta.entries : [];
145
+ entries = entries.filter((e) => e.id !== DESKTOP_PROFILE_ID);
146
+ entries.push({ id: DESKTOP_PROFILE_ID, name: "TokenBuddy" });
147
+ meta.appliedId = DESKTOP_PROFILE_ID;
148
+ meta.entries = entries;
149
+ fs.writeFileSync(metaPath, JSON.stringify(meta, null, 2), "utf8");
150
+ console.log(`[terminal-detect] Claude Desktop successfully routed to ${proxyUrl}`);
151
+ }
152
+ catch (err) {
153
+ console.error("[terminal-detect] Failed to rewrite Claude Desktop config:", err.message);
154
+ }
155
+ }
156
+ /**
157
+ * Rewrite Openclaw settings.
158
+ */
159
+ export function rewriteOpenclaw(configPath, proxyUrl, model) {
160
+ try {
161
+ const parent = path.dirname(configPath);
162
+ if (!fs.existsSync(parent))
163
+ fs.mkdirSync(parent, { recursive: true });
164
+ let config = {};
165
+ if (fs.existsSync(configPath)) {
166
+ try {
167
+ config = JSON.parse(fs.readFileSync(configPath, "utf8"));
168
+ }
169
+ catch { }
170
+ }
171
+ config.api_url = proxyUrl;
172
+ config.api_key = PLACEHOLDER_API_KEY;
173
+ config.model = model;
174
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf8");
175
+ console.log(`[terminal-detect] Openclaw successfully routed to ${proxyUrl}`);
176
+ }
177
+ catch (err) {
178
+ console.error("[terminal-detect] Failed to rewrite Openclaw config:", err.message);
179
+ }
180
+ }
181
+ /**
182
+ * Rewrite Hermes settings.
183
+ */
184
+ export function rewriteHermes(configPath, proxyUrl, model) {
185
+ try {
186
+ const parent = path.dirname(configPath);
187
+ if (!fs.existsSync(parent))
188
+ fs.mkdirSync(parent, { recursive: true });
189
+ let config = {};
190
+ if (fs.existsSync(configPath)) {
191
+ try {
192
+ config = JSON.parse(fs.readFileSync(configPath, "utf8"));
193
+ }
194
+ catch { }
195
+ }
196
+ if (!config.openai || typeof config.openai !== "object") {
197
+ config.openai = {};
198
+ }
199
+ config.openai.base_url = proxyUrl;
200
+ config.openai.api_key = PLACEHOLDER_API_KEY;
201
+ config.openai.model = model;
202
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf8");
203
+ console.log(`[terminal-detect] Hermes successfully routed to ${proxyUrl}`);
204
+ }
205
+ catch (err) {
206
+ console.error("[terminal-detect] Failed to rewrite Hermes config:", err.message);
207
+ }
208
+ }
209
+ //# sourceMappingURL=terminal-detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-detect.js","sourceRoot":"","sources":["../../src/terminal-detect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAUzB,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAC/C,MAAM,kBAAkB,GAAG,sCAAsC,CAAC;AAElE,MAAM,UAAU,UAAU;IACxB,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAwB,EAAE,CAAC;IAE3C,iBAAiB;IACjB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACjD,UAAU,CAAC,IAAI,CAAC;QACd,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,cAAc;QACxB,UAAU,EAAE,UAAU;QACtB,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,mCAAmC;KACjG,CAAC,CAAC;IAEH,oBAAoB;IACpB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IAC1G,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrF,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,eAAe,GAAG,WAAW,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACzE,UAAU,CAAC,IAAI,CAAC;QACd,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,eAAe;QACzB,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,+BAA+B;KAC1F,CAAC,CAAC;IAEH,cAAc;IACd,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACrD,UAAU,CAAC,IAAI,CAAC;QACd,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,gBAAgB;QAC1B,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,mCAAmC;KACnG,CAAC,CAAC;IAEH,YAAY;IACZ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACjD,UAAU,CAAC,IAAI,CAAC;QACd,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,cAAc;QACxB,UAAU,EAAE,UAAU;QACtB,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,mCAAmC;KACjG,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,QAAgB,EAAE,KAAa;IACnF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,GAAQ,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QACtD,MAAM,CAAC,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,8BAA8B,GAAG,KAAK,CAAC;QAElD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,wDAAwD,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,QAAgB,EAAE,KAAa;IACtF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAEtD,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,MAAM,GAAQ,EAAE,CAAC;YACrB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YAC1E,CAAC;YACD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC,CAAC;QAEF,4BAA4B;QAC5B,SAAS,CAAC,UAAU,CAAC,CAAC;QACtB,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnE,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAE5B,mBAAmB;QACnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtC,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,kBAAkB,OAAO,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG;YACd,4BAA4B,EAAE,IAAI;YAClC,sBAAsB,EAAE,mBAAmB;YAC3C,0BAA0B,EAAE,QAAQ;YACpC,uBAAuB,EAAE,QAAQ;YACjC,iBAAiB,EAAE,SAAS;YAC5B,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SACnC,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAExE,sBAAsB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,IAAI,GAAQ,EAAE,CAAC;QACnB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACxE,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,kBAAkB,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAElE,OAAO,CAAC,GAAG,CAAC,2DAA2D,QAAQ,EAAE,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,4DAA4D,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,QAAgB,EAAE,KAAa;IACjF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,IAAI,MAAM,GAAQ,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAC5E,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC1B,MAAM,CAAC,OAAO,GAAG,mBAAmB,CAAC;QACrC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAErB,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,qDAAqD,QAAQ,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,QAAgB,EAAE,KAAa;IAC/E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,IAAI,MAAM,GAAQ,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;QACrB,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,mBAAmB,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAE5B,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,mDAAmD,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@tokenbuddy/tokenbuddy",
3
+ "version": "1.0.4",
4
+ "description": "TokenBuddy Client CLI and Daemon",
5
+ "main": "dist/src/index.js",
6
+ "types": "dist/src/index.d.ts",
7
+ "type": "module",
8
+ "bin": {
9
+ "tb": "./bin/tb.js",
10
+ "tb-proxyd": "./bin/tb-proxyd.js"
11
+ },
12
+ "scripts": {
13
+ "build": "tsc"
14
+ },
15
+ "dependencies": {
16
+ "@clack/prompts": "^0.7.0",
17
+ "cli-table3": "^0.6.4",
18
+ "commander": "^12.0.0",
19
+ "express": "^4.19.2",
20
+ "qrcode-terminal": "^0.12.0",
21
+ "@tokenbuddy/contracts": "^1.0.0",
22
+ "@tokenbuddy/logging": "^1.0.0"
23
+ },
24
+ "devDependencies": {
25
+ "@types/express": "^4.17.21",
26
+ "@types/qrcode-terminal": "^0.12.2"
27
+ },
28
+ "private": false
29
+ }