@bithumb-official/bithumb-cli 0.1.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 (44) hide show
  1. package/dist/account-UVDNQRB7.js +78 -0
  2. package/dist/account-UVDNQRB7.js.map +1 -0
  3. package/dist/account-YNPFEHQT.js +90 -0
  4. package/dist/account-YNPFEHQT.js.map +1 -0
  5. package/dist/chunk-AUQ7MB6O.js +143 -0
  6. package/dist/chunk-AUQ7MB6O.js.map +1 -0
  7. package/dist/chunk-FYO6WLZI.js +72 -0
  8. package/dist/chunk-FYO6WLZI.js.map +1 -0
  9. package/dist/chunk-YXIFBNEQ.js +3488 -0
  10. package/dist/chunk-YXIFBNEQ.js.map +1 -0
  11. package/dist/config-2P3Y3TQH.js +182 -0
  12. package/dist/config-2P3Y3TQH.js.map +1 -0
  13. package/dist/config-6BIS2PLC.js +154 -0
  14. package/dist/config-6BIS2PLC.js.map +1 -0
  15. package/dist/deposit-HNUSMKX5.js +161 -0
  16. package/dist/deposit-HNUSMKX5.js.map +1 -0
  17. package/dist/deposit-TCMLJ7MI.js +169 -0
  18. package/dist/deposit-TCMLJ7MI.js.map +1 -0
  19. package/dist/index.d.ts +2 -0
  20. package/dist/index.js +211 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/market-EEF3KI4T.js +219 -0
  23. package/dist/market-EEF3KI4T.js.map +1 -0
  24. package/dist/market-GLU62BWO.js +304 -0
  25. package/dist/market-GLU62BWO.js.map +1 -0
  26. package/dist/setup-LAAVO63H.js +21 -0
  27. package/dist/setup-LAAVO63H.js.map +1 -0
  28. package/dist/system-BRZY7PTZ.js +98 -0
  29. package/dist/system-BRZY7PTZ.js.map +1 -0
  30. package/dist/system-XRZ2KHXL.js +69 -0
  31. package/dist/system-XRZ2KHXL.js.map +1 -0
  32. package/dist/trade-FERR47DJ.js +233 -0
  33. package/dist/trade-FERR47DJ.js.map +1 -0
  34. package/dist/trade-H4G5P2W2.js +159 -0
  35. package/dist/trade-H4G5P2W2.js.map +1 -0
  36. package/dist/twap-44UCVSIR.js +91 -0
  37. package/dist/twap-44UCVSIR.js.map +1 -0
  38. package/dist/twap-4LRBUMTG.js +82 -0
  39. package/dist/twap-4LRBUMTG.js.map +1 -0
  40. package/dist/withdraw-IRMICBD2.js +203 -0
  41. package/dist/withdraw-IRMICBD2.js.map +1 -0
  42. package/dist/withdraw-TLGVRUBS.js +161 -0
  43. package/dist/withdraw-TLGVRUBS.js.map +1 -0
  44. package/package.json +25 -0
@@ -0,0 +1,304 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ toNumber
4
+ } from "./chunk-AUQ7MB6O.js";
5
+ import {
6
+ errorLine,
7
+ outputLine,
8
+ printJson,
9
+ printTable
10
+ } from "./chunk-FYO6WLZI.js";
11
+
12
+ // src/commands/market.ts
13
+ async function handleMarketCommand(run, action, rest, v, json) {
14
+ switch (action) {
15
+ case "markets":
16
+ return cmdMarkets(run, { isDetails: v.isDetails, json });
17
+ case "ticker":
18
+ return cmdTicker(run, rest[0] ?? v.market, json);
19
+ case "orderbook":
20
+ return cmdOrderbook(run, rest[0] ?? v.market, json);
21
+ case "trades":
22
+ return cmdTrades(run, rest[0] ?? v.market, {
23
+ count: toNumber(v.count),
24
+ to: v.to,
25
+ cursor: v.cursor,
26
+ daysAgo: toNumber(v.daysAgo),
27
+ json
28
+ });
29
+ case "candles-minutes":
30
+ return cmdCandlesMinutes(run, rest[0] ?? v.market, {
31
+ unit: toNumber(v.unit) ?? 1,
32
+ count: toNumber(v.count),
33
+ to: v.to,
34
+ json
35
+ });
36
+ case "candles-days":
37
+ return cmdCandlesDays(run, rest[0] ?? v.market, {
38
+ count: toNumber(v.count),
39
+ to: v.to,
40
+ convertingPriceUnit: v.convertingPriceUnit,
41
+ json
42
+ });
43
+ case "candles-weeks":
44
+ return cmdCandlesWeeks(run, rest[0] ?? v.market, {
45
+ count: toNumber(v.count),
46
+ to: v.to,
47
+ json
48
+ });
49
+ case "candles-months":
50
+ return cmdCandlesMonths(run, rest[0] ?? v.market, {
51
+ count: toNumber(v.count),
52
+ to: v.to,
53
+ json
54
+ });
55
+ case "warnings":
56
+ return cmdWarnings(run, json);
57
+ case "notices":
58
+ return cmdNotices(run, { count: toNumber(v.count), json });
59
+ case "fee-inout":
60
+ return cmdFeeInout(run, rest[0] ?? v.currency, json);
61
+ default:
62
+ errorLine(`Unknown market command: ${action}. Run 'bithumb market --help' for usage.`);
63
+ process.exitCode = 1;
64
+ }
65
+ }
66
+ async function cmdMarkets(run, opts) {
67
+ const result = await run("market_get_markets", {
68
+ ...opts.isDetails !== void 0 && { isDetails: opts.isDetails }
69
+ });
70
+ const items = result.data;
71
+ if (opts.json) return printJson(items);
72
+ if (!items?.length) {
73
+ outputLine("No markets found");
74
+ return;
75
+ }
76
+ printTable(items.map((m) => ({
77
+ market: m["market"],
78
+ korean_name: m["korean_name"],
79
+ english_name: m["english_name"],
80
+ ...opts.isDetails ? { market_warning: m["market_warning"] ?? "" } : {}
81
+ })));
82
+ }
83
+ async function cmdTicker(run, markets, json) {
84
+ if (!markets) {
85
+ errorLine("Error: market argument required. Example: bithumb market ticker KRW-BTC");
86
+ process.exitCode = 1;
87
+ return;
88
+ }
89
+ const result = await run("market_get_ticker", { markets });
90
+ const items = result.data;
91
+ if (json) return printJson(items);
92
+ if (!items?.length) {
93
+ outputLine("No ticker data");
94
+ return;
95
+ }
96
+ printTable(items.map((t) => ({
97
+ market: t["market"],
98
+ trade_price: t["trade_price"],
99
+ signed_change_rate: t["signed_change_rate"],
100
+ acc_trade_volume_24h: t["acc_trade_volume_24h"],
101
+ high_price: t["high_price"],
102
+ low_price: t["low_price"]
103
+ })));
104
+ }
105
+ async function cmdOrderbook(run, markets, json) {
106
+ if (!markets) {
107
+ errorLine("Error: market argument required. Example: bithumb market orderbook KRW-BTC");
108
+ process.exitCode = 1;
109
+ return;
110
+ }
111
+ const result = await run("market_get_orderbook", { markets });
112
+ const items = result.data;
113
+ if (json) return printJson(items);
114
+ if (!items?.length) {
115
+ outputLine("No orderbook data");
116
+ return;
117
+ }
118
+ for (const book of items) {
119
+ outputLine(`
120
+ --- ${book["market"]} ---`);
121
+ outputLine(`Total Ask Size: ${book["total_ask_size"]}`);
122
+ outputLine(`Total Bid Size: ${book["total_bid_size"]}`);
123
+ const units = book["orderbook_units"];
124
+ if (units?.length) {
125
+ printTable(units.slice(0, 10).map((u) => ({
126
+ ask_price: u["ask_price"],
127
+ ask_size: u["ask_size"],
128
+ bid_price: u["bid_price"],
129
+ bid_size: u["bid_size"]
130
+ })));
131
+ }
132
+ }
133
+ }
134
+ async function cmdTrades(run, market, opts) {
135
+ if (!market) {
136
+ errorLine("Error: market argument required. Example: bithumb market trades KRW-BTC");
137
+ process.exitCode = 1;
138
+ return;
139
+ }
140
+ const args = { market };
141
+ if (opts.count !== void 0) args.count = opts.count;
142
+ if (opts.to !== void 0) args.to = opts.to;
143
+ if (opts.cursor !== void 0) args.cursor = opts.cursor;
144
+ if (opts.daysAgo !== void 0) args.daysAgo = opts.daysAgo;
145
+ const result = await run("market_get_trades", args);
146
+ const items = result.data;
147
+ if (opts.json) return printJson(items);
148
+ if (!items?.length) {
149
+ outputLine("No trades found");
150
+ return;
151
+ }
152
+ printTable(items.map((t) => ({
153
+ trade_date_utc: t["trade_date_utc"],
154
+ trade_time_utc: t["trade_time_utc"],
155
+ trade_price: t["trade_price"],
156
+ trade_volume: t["trade_volume"],
157
+ ask_bid: t["ask_bid"]
158
+ })));
159
+ }
160
+ async function cmdCandlesMinutes(run, market, opts) {
161
+ if (!market) {
162
+ errorLine("Error: market argument required");
163
+ process.exitCode = 1;
164
+ return;
165
+ }
166
+ const args = { market, unit: opts.unit };
167
+ if (opts.count !== void 0) args.count = opts.count;
168
+ if (opts.to !== void 0) args.to = opts.to;
169
+ const result = await run("market_get_candles_minutes", args);
170
+ const items = result.data;
171
+ if (opts.json) return printJson(items);
172
+ if (!items?.length) {
173
+ outputLine("No candle data");
174
+ return;
175
+ }
176
+ printTable(items.map((c) => ({
177
+ candle_date_time_kst: c["candle_date_time_kst"],
178
+ opening_price: c["opening_price"],
179
+ high_price: c["high_price"],
180
+ low_price: c["low_price"],
181
+ trade_price: c["trade_price"],
182
+ candle_acc_trade_volume: c["candle_acc_trade_volume"]
183
+ })));
184
+ }
185
+ async function cmdCandlesDays(run, market, opts) {
186
+ if (!market) {
187
+ errorLine("Error: market argument required");
188
+ process.exitCode = 1;
189
+ return;
190
+ }
191
+ const args = { market };
192
+ if (opts.count !== void 0) args.count = opts.count;
193
+ if (opts.to !== void 0) args.to = opts.to;
194
+ if (opts.convertingPriceUnit !== void 0) args.convertingPriceUnit = opts.convertingPriceUnit;
195
+ const result = await run("market_get_candles_days", args);
196
+ const items = result.data;
197
+ if (opts.json) return printJson(items);
198
+ if (!items?.length) {
199
+ outputLine("No candle data");
200
+ return;
201
+ }
202
+ printTable(items.map((c) => ({
203
+ candle_date_time_kst: c["candle_date_time_kst"],
204
+ opening_price: c["opening_price"],
205
+ high_price: c["high_price"],
206
+ low_price: c["low_price"],
207
+ trade_price: c["trade_price"],
208
+ candle_acc_trade_volume: c["candle_acc_trade_volume"]
209
+ })));
210
+ }
211
+ async function cmdCandlesWeeks(run, market, opts) {
212
+ if (!market) {
213
+ errorLine("Error: market argument required");
214
+ process.exitCode = 1;
215
+ return;
216
+ }
217
+ const args = { market };
218
+ if (opts.count !== void 0) args.count = opts.count;
219
+ if (opts.to !== void 0) args.to = opts.to;
220
+ const result = await run("market_get_candles_weeks", args);
221
+ const items = result.data;
222
+ if (opts.json) return printJson(items);
223
+ if (!items?.length) {
224
+ outputLine("No candle data");
225
+ return;
226
+ }
227
+ printTable(items.map((c) => ({
228
+ candle_date_time_kst: c["candle_date_time_kst"],
229
+ opening_price: c["opening_price"],
230
+ high_price: c["high_price"],
231
+ low_price: c["low_price"],
232
+ trade_price: c["trade_price"],
233
+ candle_acc_trade_volume: c["candle_acc_trade_volume"]
234
+ })));
235
+ }
236
+ async function cmdCandlesMonths(run, market, opts) {
237
+ if (!market) {
238
+ errorLine("Error: market argument required");
239
+ process.exitCode = 1;
240
+ return;
241
+ }
242
+ const args = { market };
243
+ if (opts.count !== void 0) args.count = opts.count;
244
+ if (opts.to !== void 0) args.to = opts.to;
245
+ const result = await run("market_get_candles_months", args);
246
+ const items = result.data;
247
+ if (opts.json) return printJson(items);
248
+ if (!items?.length) {
249
+ outputLine("No candle data");
250
+ return;
251
+ }
252
+ printTable(items.map((c) => ({
253
+ candle_date_time_kst: c["candle_date_time_kst"],
254
+ opening_price: c["opening_price"],
255
+ high_price: c["high_price"],
256
+ low_price: c["low_price"],
257
+ trade_price: c["trade_price"],
258
+ candle_acc_trade_volume: c["candle_acc_trade_volume"]
259
+ })));
260
+ }
261
+ async function cmdWarnings(run, json) {
262
+ const result = await run("market_get_warnings", {});
263
+ const data = result.data;
264
+ if (json) return printJson(data);
265
+ const items = data;
266
+ if (!items?.length) {
267
+ outputLine("No warnings found");
268
+ return;
269
+ }
270
+ printTable(items);
271
+ }
272
+ async function cmdNotices(run, opts) {
273
+ const args = {};
274
+ if (opts.count !== void 0) args.count = opts.count;
275
+ const result = await run("market_get_notices", args);
276
+ const data = result.data;
277
+ if (opts.json) return printJson(data);
278
+ const items = data;
279
+ if (!items?.length) {
280
+ outputLine("No notices found");
281
+ return;
282
+ }
283
+ printTable(items);
284
+ }
285
+ async function cmdFeeInout(run, currency, json) {
286
+ if (!currency) {
287
+ errorLine("Error: currency argument required. Example: bithumb market fee-inout BTC");
288
+ process.exitCode = 1;
289
+ return;
290
+ }
291
+ const result = await run("market_get_fee_inout", { currency });
292
+ const data = result.data;
293
+ if (json) return printJson(data);
294
+ const items = data;
295
+ if (Array.isArray(items) && items.length) {
296
+ printTable(items);
297
+ return;
298
+ }
299
+ printJson(data);
300
+ }
301
+ export {
302
+ handleMarketCommand
303
+ };
304
+ //# sourceMappingURL=market-GLU62BWO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/market.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-official/bithumb-core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleMarketCommand(\n run: ToolRunner,\n action: string,\n rest: string[],\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"markets\":\n return cmdMarkets(run, { isDetails: v.isDetails, json });\n case \"ticker\":\n return cmdTicker(run, rest[0] ?? v.market, json);\n case \"orderbook\":\n return cmdOrderbook(run, rest[0] ?? v.market, json);\n case \"trades\":\n return cmdTrades(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n cursor: v.cursor,\n daysAgo: toNumber(v.daysAgo),\n json,\n });\n case \"candles-minutes\":\n return cmdCandlesMinutes(run, rest[0] ?? v.market, {\n unit: toNumber(v.unit) ?? 1,\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"candles-days\":\n return cmdCandlesDays(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n convertingPriceUnit: v.convertingPriceUnit,\n json,\n });\n case \"candles-weeks\":\n return cmdCandlesWeeks(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"candles-months\":\n return cmdCandlesMonths(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: v.to,\n json,\n });\n case \"warnings\":\n return cmdWarnings(run, json);\n case \"notices\":\n return cmdNotices(run, { count: toNumber(v.count), json });\n case \"fee-inout\":\n return cmdFeeInout(run, rest[0] ?? v.currency, json);\n default:\n errorLine(`Unknown market command: ${action}. Run 'bithumb market --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdMarkets(\n run: ToolRunner,\n opts: { isDetails?: boolean; json: boolean },\n): Promise<void> {\n const result = await run(\"market_get_markets\", {\n ...(opts.isDetails !== undefined && { isDetails: opts.isDetails }),\n });\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No markets found\"); return; }\n printTable(items.map((m) => ({\n market: m[\"market\"],\n korean_name: m[\"korean_name\"],\n english_name: m[\"english_name\"],\n ...(opts.isDetails ? { market_warning: m[\"market_warning\"] ?? \"\" } : {}),\n })));\n}\n\nasync function cmdTicker(run: ToolRunner, markets: string | undefined, json: boolean): Promise<void> {\n if (!markets) { errorLine(\"Error: market argument required. Example: bithumb market ticker KRW-BTC\"); process.exitCode = 1; return; }\n const result = await run(\"market_get_ticker\", { markets });\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No ticker data\"); return; }\n printTable(items.map((t) => ({\n market: t[\"market\"],\n trade_price: t[\"trade_price\"],\n signed_change_rate: t[\"signed_change_rate\"],\n acc_trade_volume_24h: t[\"acc_trade_volume_24h\"],\n high_price: t[\"high_price\"],\n low_price: t[\"low_price\"],\n })));\n}\n\nasync function cmdOrderbook(run: ToolRunner, markets: string | undefined, json: boolean): Promise<void> {\n if (!markets) { errorLine(\"Error: market argument required. Example: bithumb market orderbook KRW-BTC\"); process.exitCode = 1; return; }\n const result = await run(\"market_get_orderbook\", { markets });\n const items = result.data as Record<string, unknown>[];\n if (json) return printJson(items);\n if (!items?.length) { outputLine(\"No orderbook data\"); return; }\n for (const book of items) {\n outputLine(`\\n--- ${book[\"market\"]} ---`);\n outputLine(`Total Ask Size: ${book[\"total_ask_size\"]}`);\n outputLine(`Total Bid Size: ${book[\"total_bid_size\"]}`);\n const units = book[\"orderbook_units\"] as Record<string, unknown>[];\n if (units?.length) {\n printTable(units.slice(0, 10).map((u) => ({\n ask_price: u[\"ask_price\"],\n ask_size: u[\"ask_size\"],\n bid_price: u[\"bid_price\"],\n bid_size: u[\"bid_size\"],\n })));\n }\n }\n}\n\nasync function cmdTrades(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; cursor?: string; daysAgo?: number; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required. Example: bithumb market trades KRW-BTC\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n if (opts.cursor !== undefined) args.cursor = opts.cursor;\n if (opts.daysAgo !== undefined) args.daysAgo = opts.daysAgo;\n const result = await run(\"market_get_trades\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No trades found\"); return; }\n printTable(items.map((t) => ({\n trade_date_utc: t[\"trade_date_utc\"],\n trade_time_utc: t[\"trade_time_utc\"],\n trade_price: t[\"trade_price\"],\n trade_volume: t[\"trade_volume\"],\n ask_bid: t[\"ask_bid\"],\n })));\n}\n\nasync function cmdCandlesMinutes(\n run: ToolRunner,\n market: string | undefined,\n opts: { unit: number; count?: number; to?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market, unit: opts.unit };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n const result = await run(\"market_get_candles_minutes\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdCandlesDays(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; convertingPriceUnit?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n if (opts.convertingPriceUnit !== undefined) args.convertingPriceUnit = opts.convertingPriceUnit;\n const result = await run(\"market_get_candles_days\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdCandlesWeeks(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n const result = await run(\"market_get_candles_weeks\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdCandlesMonths(\n run: ToolRunner,\n market: string | undefined,\n opts: { count?: number; to?: string; json: boolean },\n): Promise<void> {\n if (!market) { errorLine(\"Error: market argument required\"); process.exitCode = 1; return; }\n const args: Record<string, unknown> = { market };\n if (opts.count !== undefined) args.count = opts.count;\n if (opts.to !== undefined) args.to = opts.to;\n const result = await run(\"market_get_candles_months\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No candle data\"); return; }\n printTable(items.map((c) => ({\n candle_date_time_kst: c[\"candle_date_time_kst\"],\n opening_price: c[\"opening_price\"],\n high_price: c[\"high_price\"],\n low_price: c[\"low_price\"],\n trade_price: c[\"trade_price\"],\n candle_acc_trade_volume: c[\"candle_acc_trade_volume\"],\n })));\n}\n\nasync function cmdWarnings(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"market_get_warnings\", {});\n const data = result.data;\n if (json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (!items?.length) { outputLine(\"No warnings found\"); return; }\n printTable(items);\n}\n\nasync function cmdNotices(run: ToolRunner, opts: { count?: number; json: boolean }): Promise<void> {\n const args: Record<string, unknown> = {};\n if (opts.count !== undefined) args.count = opts.count;\n const result = await run(\"market_get_notices\", args);\n const data = result.data;\n if (opts.json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (!items?.length) { outputLine(\"No notices found\"); return; }\n printTable(items);\n}\n\nasync function cmdFeeInout(run: ToolRunner, currency: string | undefined, json: boolean): Promise<void> {\n if (!currency) { errorLine(\"Error: currency argument required. Example: bithumb market fee-inout BTC\"); process.exitCode = 1; return; }\n const result = await run(\"market_get_fee_inout\", { currency });\n const data = result.data;\n if (json) return printJson(data);\n const items = data as Record<string, unknown>[];\n if (Array.isArray(items) && items.length) { printTable(items); return; }\n printJson(data);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/help/setup.ts
4
+ var MODULE_HELP = `
5
+ Usage: bithumb setup --client <client> [--profile <name>] [--modules <list>]
6
+
7
+ Configure MCP client integration for supported AI coding tools.
8
+
9
+ Options:
10
+ --client <client> Target client: claude-desktop, cursor, windsurf, vscode, claude-code
11
+ --profile <name> Config profile to use (default: "default")
12
+ --modules <list> Comma-separated modules to enable
13
+
14
+ Examples:
15
+ bithumb setup --client claude-desktop
16
+ bithumb setup --client cursor --modules market,account
17
+ `;
18
+ export {
19
+ MODULE_HELP
20
+ };
21
+ //# sourceMappingURL=setup-LAAVO63H.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/help/setup.ts"],"sourcesContent":["export const MODULE_HELP = `\nUsage: bithumb setup --client <client> [--profile <name>] [--modules <list>]\n\nConfigure MCP client integration for supported AI coding tools.\n\nOptions:\n --client <client> Target client: claude-desktop, cursor, windsurf, vscode, claude-code\n --profile <name> Config profile to use (default: \"default\")\n --modules <list> Comma-separated modules to enable\n\nExamples:\n bithumb setup --client claude-desktop\n bithumb setup --client cursor --modules market,account\n`;\n"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/help/system.ts
4
+ var MODULE_HELP = `
5
+ Usage: bithumb system <command> [options]
6
+
7
+ Commands:
8
+ capabilities Server capabilities and module availability for agent planning
9
+ diagnose Run connectivity, authentication, config, and module diagnostics
10
+ audit View local trade audit log
11
+
12
+ Options:
13
+ --json Output as JSON
14
+ --profile <name> Config profile to use (default: "default")
15
+ --verbose Enable verbose logging
16
+
17
+ Examples:
18
+ bithumb system capabilities
19
+ bithumb system capabilities --json
20
+ bithumb system diagnose
21
+ bithumb system diagnose --profile trading
22
+ bithumb system audit --limit 10
23
+
24
+ Notes:
25
+ - Use 'capabilities' to discover which modules are enabled and which require auth.
26
+ - Use 'diagnose' to verify API reachability, auth status, TOML config, and module status.
27
+ - Use 'audit' to view local CLI/MCP trade audit log entries (reads ~/.bithumb/logs/).
28
+ - All three commands run without API credentials (auth is reported but not required).
29
+ `;
30
+ var CAPABILITIES_HELP = `
31
+ Usage: bithumb system capabilities [options]
32
+
33
+ Show server capabilities and module availability for agent planning.
34
+ Reports which modules are enabled, which require authentication, and which
35
+ are read-only in the current configuration.
36
+
37
+ Required:
38
+ (none)
39
+
40
+ Options:
41
+ --json Output as JSON
42
+
43
+ Examples:
44
+ bithumb system capabilities
45
+ bithumb system capabilities --json
46
+ `;
47
+ var DIAGNOSE_HELP = `
48
+ Usage: bithumb system diagnose [options]
49
+
50
+ Run connectivity, authentication, config, and module diagnostics against the
51
+ Bithumb API. Useful as a first step when authenticated commands fail or when
52
+ verifying a fresh \`bithumb setup\`.
53
+
54
+ Options:
55
+ --json Output as JSON
56
+ --profile <name> Config profile to use (default: "default")
57
+ --verbose Enable verbose logging
58
+
59
+ Examples:
60
+ bithumb system diagnose
61
+ bithumb system diagnose --json
62
+ bithumb system diagnose --profile trading
63
+
64
+ Notes:
65
+ - Does not require API credentials to run, but reports auth status.
66
+ - Output includes API reachability, auth validity, config OK, module status.
67
+ `;
68
+ var AUDIT_HELP = `
69
+ Usage: bithumb system audit [options]
70
+
71
+ View the local trade audit log (records of CLI/MCP-issued tool calls).
72
+ Reads from \`~/.bithumb/logs/trade-YYYY-MM-DD.log\` over the last 7 days.
73
+ Does not require API credentials \u2014 purely local file access.
74
+
75
+ Required:
76
+ (none)
77
+
78
+ Options:
79
+ --limit <n> Number of log entries to return (default: 20)
80
+ --tool <name> Filter by tool name
81
+ --since <date> Show entries since date (ISO format)
82
+ --level <level> Filter by log level (INFO, WARN, ERROR, DEBUG)
83
+
84
+ Examples:
85
+ bithumb system audit --limit 10
86
+ bithumb system audit --since 2026-05-01 --level ERROR
87
+ bithumb system audit --tool account_get_balance --json
88
+ `;
89
+ var ACTION_HELP = {
90
+ capabilities: CAPABILITIES_HELP,
91
+ diagnose: DIAGNOSE_HELP,
92
+ audit: AUDIT_HELP
93
+ };
94
+ export {
95
+ ACTION_HELP,
96
+ MODULE_HELP
97
+ };
98
+ //# sourceMappingURL=system-BRZY7PTZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/help/system.ts"],"sourcesContent":["export const MODULE_HELP = `\nUsage: bithumb system <command> [options]\n\nCommands:\n capabilities Server capabilities and module availability for agent planning\n diagnose Run connectivity, authentication, config, and module diagnostics\n audit View local trade audit log\n\nOptions:\n --json Output as JSON\n --profile <name> Config profile to use (default: \"default\")\n --verbose Enable verbose logging\n\nExamples:\n bithumb system capabilities\n bithumb system capabilities --json\n bithumb system diagnose\n bithumb system diagnose --profile trading\n bithumb system audit --limit 10\n\nNotes:\n - Use 'capabilities' to discover which modules are enabled and which require auth.\n - Use 'diagnose' to verify API reachability, auth status, TOML config, and module status.\n - Use 'audit' to view local CLI/MCP trade audit log entries (reads ~/.bithumb/logs/).\n - All three commands run without API credentials (auth is reported but not required).\n`;\n\nconst CAPABILITIES_HELP = `\nUsage: bithumb system capabilities [options]\n\nShow server capabilities and module availability for agent planning.\nReports which modules are enabled, which require authentication, and which\nare read-only in the current configuration.\n\nRequired:\n (none)\n\nOptions:\n --json Output as JSON\n\nExamples:\n bithumb system capabilities\n bithumb system capabilities --json\n`;\n\nconst DIAGNOSE_HELP = `\nUsage: bithumb system diagnose [options]\n\nRun connectivity, authentication, config, and module diagnostics against the\nBithumb API. Useful as a first step when authenticated commands fail or when\nverifying a fresh \\`bithumb setup\\`.\n\nOptions:\n --json Output as JSON\n --profile <name> Config profile to use (default: \"default\")\n --verbose Enable verbose logging\n\nExamples:\n bithumb system diagnose\n bithumb system diagnose --json\n bithumb system diagnose --profile trading\n\nNotes:\n - Does not require API credentials to run, but reports auth status.\n - Output includes API reachability, auth validity, config OK, module status.\n`;\n\nconst AUDIT_HELP = `\nUsage: bithumb system audit [options]\n\nView the local trade audit log (records of CLI/MCP-issued tool calls).\nReads from \\`~/.bithumb/logs/trade-YYYY-MM-DD.log\\` over the last 7 days.\nDoes not require API credentials — purely local file access.\n\nRequired:\n (none)\n\nOptions:\n --limit <n> Number of log entries to return (default: 20)\n --tool <name> Filter by tool name\n --since <date> Show entries since date (ISO format)\n --level <level> Filter by log level (INFO, WARN, ERROR, DEBUG)\n\nExamples:\n bithumb system audit --limit 10\n bithumb system audit --since 2026-05-01 --level ERROR\n bithumb system audit --tool account_get_balance --json\n`;\n\nexport const ACTION_HELP: Record<string, string> = {\n capabilities: CAPABILITIES_HELP,\n diagnose: DIAGNOSE_HELP,\n audit: AUDIT_HELP,\n};\n"],"mappings":";;;AAAO,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2B3B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB1B,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBtB,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBZ,IAAM,cAAsC;AAAA,EACjD,cAAc;AAAA,EACd,UAAU;AAAA,EACV,OAAO;AACT;","names":[]}
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ toNumber
4
+ } from "./chunk-AUQ7MB6O.js";
5
+ import {
6
+ errorLine,
7
+ outputLine,
8
+ printJson,
9
+ printKv,
10
+ printTable
11
+ } from "./chunk-FYO6WLZI.js";
12
+
13
+ // src/commands/system.ts
14
+ async function handleSystemCommand(run, action, v, json) {
15
+ switch (action) {
16
+ case "capabilities":
17
+ return cmdCapabilities(run, json);
18
+ case "diagnose":
19
+ return cmdDiagnose(run, json);
20
+ case "audit":
21
+ return cmdAudit(run, {
22
+ limit: toNumber(v.limit),
23
+ tool: v.tool,
24
+ since: v.since,
25
+ level: v.level,
26
+ json
27
+ });
28
+ default:
29
+ errorLine(`Unknown system command: ${action ?? "(none)"}. Run 'bithumb system --help' for usage.`);
30
+ process.exitCode = 1;
31
+ }
32
+ }
33
+ async function cmdCapabilities(run, json) {
34
+ const result = await run("system_get_capabilities", {});
35
+ const data = result.data ?? result;
36
+ if (json) return printJson(data);
37
+ printKv(data);
38
+ }
39
+ async function cmdDiagnose(run, json) {
40
+ const result = await run("system_diagnose", {});
41
+ const data = result.data ?? result;
42
+ if (json) return printJson(data);
43
+ printKv(data);
44
+ }
45
+ async function cmdAudit(run, opts) {
46
+ const args = {};
47
+ if (opts.limit !== void 0) args.limit = opts.limit;
48
+ if (opts.tool !== void 0) args.tool = opts.tool;
49
+ if (opts.since !== void 0) args.since = opts.since;
50
+ if (opts.level !== void 0) args.level = opts.level;
51
+ const result = await run("system_get_audit_log", args);
52
+ const items = result.data;
53
+ if (opts.json) return printJson(items);
54
+ if (!items?.length) {
55
+ outputLine("No audit entries found");
56
+ return;
57
+ }
58
+ printTable(items.map((entry) => ({
59
+ timestamp: entry["ts"],
60
+ level: entry["level"],
61
+ tool: entry["tool"],
62
+ message: entry["message"],
63
+ elapsed_ms: entry["elapsed"]
64
+ })));
65
+ }
66
+ export {
67
+ handleSystemCommand
68
+ };
69
+ //# sourceMappingURL=system-XRZ2KHXL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/system.ts"],"sourcesContent":["import type { ToolRunner } from \"@bithumb-official/bithumb-core\";\nimport type { CliValues } from \"../parser.js\";\nimport { toNumber } from \"../parser.js\";\nimport { outputLine, errorLine, printJson, printTable, printKv } from \"../formatter.js\";\n\nexport async function handleSystemCommand(\n run: ToolRunner,\n action: string | undefined,\n v: CliValues,\n json: boolean,\n): Promise<void> {\n switch (action) {\n case \"capabilities\":\n return cmdCapabilities(run, json);\n case \"diagnose\":\n return cmdDiagnose(run, json);\n case \"audit\":\n return cmdAudit(run, {\n limit: toNumber(v.limit),\n tool: v.tool,\n since: v.since,\n level: v.level,\n json,\n });\n default:\n errorLine(`Unknown system command: ${action ?? \"(none)\"}. Run 'bithumb system --help' for usage.`);\n process.exitCode = 1;\n }\n}\n\nasync function cmdCapabilities(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"system_get_capabilities\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n}\n\nasync function cmdDiagnose(run: ToolRunner, json: boolean): Promise<void> {\n const result = await run(\"system_diagnose\", {});\n const data = result.data ?? result;\n if (json) return printJson(data);\n printKv(data as Record<string, unknown>);\n}\n\nasync function cmdAudit(\n run: ToolRunner,\n opts: { limit?: number; tool?: string; since?: string; level?: string; json: boolean },\n): Promise<void> {\n const args: Record<string, unknown> = {};\n if (opts.limit !== undefined) args.limit = opts.limit;\n if (opts.tool !== undefined) args.tool = opts.tool;\n if (opts.since !== undefined) args.since = opts.since;\n if (opts.level !== undefined) args.level = opts.level;\n const result = await run(\"system_get_audit_log\", args);\n const items = result.data as Record<string, unknown>[];\n if (opts.json) return printJson(items);\n if (!items?.length) { outputLine(\"No audit entries found\"); return; }\n printTable(items.map((entry) => ({\n timestamp: entry[\"ts\"],\n level: entry[\"level\"],\n tool: entry[\"tool\"],\n message: entry[\"message\"],\n elapsed_ms: entry[\"elapsed\"],\n })));\n}\n"],"mappings":";;;;;;;;;;;;;AAKA,eAAsB,oBACpB,KACA,QACA,GACA,MACe;AACf,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,gBAAgB,KAAK,IAAI;AAAA,IAClC,KAAK;AACH,aAAO,YAAY,KAAK,IAAI;AAAA,IAC9B,KAAK;AACH,aAAO,SAAS,KAAK;AAAA,QACnB,OAAO,SAAS,EAAE,KAAK;AAAA,QACvB,MAAM,EAAE;AAAA,QACR,OAAO,EAAE;AAAA,QACT,OAAO,EAAE;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AACE,gBAAU,2BAA2B,UAAU,QAAQ,0CAA0C;AACjG,cAAQ,WAAW;AAAA,EACvB;AACF;AAEA,eAAe,gBAAgB,KAAiB,MAA8B;AAC5E,QAAM,SAAS,MAAM,IAAI,2BAA2B,CAAC,CAAC;AACtD,QAAM,OAAO,OAAO,QAAQ;AAC5B,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAA+B;AACzC;AAEA,eAAe,YAAY,KAAiB,MAA8B;AACxE,QAAM,SAAS,MAAM,IAAI,mBAAmB,CAAC,CAAC;AAC9C,QAAM,OAAO,OAAO,QAAQ;AAC5B,MAAI,KAAM,QAAO,UAAU,IAAI;AAC/B,UAAQ,IAA+B;AACzC;AAEA,eAAe,SACb,KACA,MACe;AACf,QAAM,OAAgC,CAAC;AACvC,MAAI,KAAK,UAAU,OAAW,MAAK,QAAQ,KAAK;AAChD,MAAI,KAAK,SAAS,OAAW,MAAK,OAAO,KAAK;AAC9C,MAAI,KAAK,UAAU,OAAW,MAAK,QAAQ,KAAK;AAChD,MAAI,KAAK,UAAU,OAAW,MAAK,QAAQ,KAAK;AAChD,QAAM,SAAS,MAAM,IAAI,wBAAwB,IAAI;AACrD,QAAM,QAAQ,OAAO;AACrB,MAAI,KAAK,KAAM,QAAO,UAAU,KAAK;AACrC,MAAI,CAAC,OAAO,QAAQ;AAAE,eAAW,wBAAwB;AAAG;AAAA,EAAQ;AACpE,aAAW,MAAM,IAAI,CAAC,WAAW;AAAA,IAC/B,WAAW,MAAM,IAAI;AAAA,IACrB,OAAO,MAAM,OAAO;AAAA,IACpB,MAAM,MAAM,MAAM;AAAA,IAClB,SAAS,MAAM,SAAS;AAAA,IACxB,YAAY,MAAM,SAAS;AAAA,EAC7B,EAAE,CAAC;AACL;","names":[]}