@bithumb-official/bithumb-cli 0.1.16 → 0.1.17

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 (52) hide show
  1. package/dist/{chunk-AUQ7MB6O.js → chunk-3VWN4HON.js} +35 -8
  2. package/dist/chunk-3VWN4HON.js.map +1 -0
  3. package/dist/{chunk-YXIFBNEQ.js → chunk-HT2P7KTV.js} +67 -994
  4. package/dist/chunk-HT2P7KTV.js.map +1 -0
  5. package/dist/{deposit-HNUSMKX5.js → deposit-KAUQEY7H.js} +6 -6
  6. package/dist/deposit-KAUQEY7H.js.map +1 -0
  7. package/dist/{deposit-TCMLJ7MI.js → deposit-L3BBLG4X.js} +21 -13
  8. package/dist/deposit-L3BBLG4X.js.map +1 -0
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.js +99 -60
  11. package/dist/index.js.map +1 -1
  12. package/dist/{market-GLU62BWO.js → market-4IEKEJ4N.js} +8 -7
  13. package/dist/market-4IEKEJ4N.js.map +1 -0
  14. package/dist/{market-EEF3KI4T.js → market-C5ESTU3F.js} +6 -6
  15. package/dist/market-C5ESTU3F.js.map +1 -0
  16. package/dist/{setup-LAAVO63H.js → setup-NC3QC63P.js} +2 -3
  17. package/dist/setup-NC3QC63P.js.map +1 -0
  18. package/dist/{system-XRZ2KHXL.js → system-RVBNM3IX.js} +2 -2
  19. package/dist/{system-BRZY7PTZ.js → system-XK2EF5SQ.js} +3 -7
  20. package/dist/system-XK2EF5SQ.js.map +1 -0
  21. package/dist/{trade-H4G5P2W2.js → trade-RKL7RNME.js} +18 -8
  22. package/dist/trade-RKL7RNME.js.map +1 -0
  23. package/dist/{trade-FERR47DJ.js → trade-X5VBEQJE.js} +21 -10
  24. package/dist/trade-X5VBEQJE.js.map +1 -0
  25. package/dist/{twap-44UCVSIR.js → twap-FQJVPUWH.js} +12 -4
  26. package/dist/twap-FQJVPUWH.js.map +1 -0
  27. package/dist/{twap-4LRBUMTG.js → twap-MZ7ALPBC.js} +3 -3
  28. package/dist/twap-MZ7ALPBC.js.map +1 -0
  29. package/dist/{withdraw-TLGVRUBS.js → withdraw-65X3DXR5.js} +17 -9
  30. package/dist/withdraw-65X3DXR5.js.map +1 -0
  31. package/dist/{withdraw-IRMICBD2.js → withdraw-LDERU7T7.js} +6 -6
  32. package/dist/withdraw-LDERU7T7.js.map +1 -0
  33. package/package.json +1 -1
  34. package/dist/chunk-AUQ7MB6O.js.map +0 -1
  35. package/dist/chunk-YXIFBNEQ.js.map +0 -1
  36. package/dist/config-2P3Y3TQH.js +0 -182
  37. package/dist/config-2P3Y3TQH.js.map +0 -1
  38. package/dist/config-6BIS2PLC.js +0 -154
  39. package/dist/config-6BIS2PLC.js.map +0 -1
  40. package/dist/deposit-HNUSMKX5.js.map +0 -1
  41. package/dist/deposit-TCMLJ7MI.js.map +0 -1
  42. package/dist/market-EEF3KI4T.js.map +0 -1
  43. package/dist/market-GLU62BWO.js.map +0 -1
  44. package/dist/setup-LAAVO63H.js.map +0 -1
  45. package/dist/system-BRZY7PTZ.js.map +0 -1
  46. package/dist/trade-FERR47DJ.js.map +0 -1
  47. package/dist/trade-H4G5P2W2.js.map +0 -1
  48. package/dist/twap-44UCVSIR.js.map +0 -1
  49. package/dist/twap-4LRBUMTG.js.map +0 -1
  50. package/dist/withdraw-IRMICBD2.js.map +0 -1
  51. package/dist/withdraw-TLGVRUBS.js.map +0 -1
  52. /package/dist/{system-XRZ2KHXL.js.map → system-RVBNM3IX.js.map} +0 -0
package/dist/index.js CHANGED
@@ -8,17 +8,22 @@ import {
8
8
  loadConfig,
9
9
  printSetupUsage,
10
10
  runSetup
11
- } from "./chunk-YXIFBNEQ.js";
11
+ } from "./chunk-HT2P7KTV.js";
12
12
  import {
13
+ CliUsageError,
13
14
  parseCli
14
- } from "./chunk-AUQ7MB6O.js";
15
+ } from "./chunk-3VWN4HON.js";
15
16
  import {
16
17
  errorLine,
17
18
  outputLine
18
19
  } from "./chunk-FYO6WLZI.js";
19
20
 
21
+ // src/index.ts
22
+ import { realpathSync } from "fs";
23
+ import { pathToFileURL } from "url";
24
+
20
25
  // src/constants.ts
21
- var CLI_VERSION = "0.1.16";
26
+ var CLI_VERSION = "0.1.17";
22
27
 
23
28
  // src/help/index.ts
24
29
  var GLOBAL_HELP = `
@@ -37,38 +42,40 @@ Modules:
37
42
 
38
43
  Utility:
39
44
  setup Configure MCP client integration
40
- config Manage CLI configuration profiles
41
45
 
42
46
  Global Options:
43
- --profile <name> Config profile (default: "default")
44
- --json Output as JSON
45
- --verbose Enable verbose logging
46
- --read-only Read-only mode (setup only, disables write operations)
47
- -h, --help Show help
48
- -v, --version Show version
47
+ --access-key <key> Bithumb API access key (overrides BITHUMB_ACCESS_KEY env var)
48
+ --secret-key <key> Bithumb API secret key (overrides BITHUMB_SECRET_KEY env var)
49
+ --json Output as JSON
50
+ --verbose Enable verbose logging
51
+ --read-only Read-only mode (setup only, disables write operations)
52
+ -h, --help Show help
53
+ -v, --version Show version
54
+
55
+ Credentials are read from env vars (BITHUMB_ACCESS_KEY / BITHUMB_SECRET_KEY) or the
56
+ flags above. Note: keys passed as flags may be visible in your shell history and
57
+ process list \u2014 prefer env vars for sensitive credentials.
49
58
 
50
59
  Run 'bithumb <module> --help' for module-specific commands.
51
60
  `;
52
61
  async function loadModule(module) {
53
62
  switch (module) {
54
63
  case "market":
55
- return await import("./market-EEF3KI4T.js");
64
+ return await import("./market-C5ESTU3F.js");
56
65
  case "account":
57
66
  return await import("./account-YNPFEHQT.js");
58
67
  case "trade":
59
- return await import("./trade-H4G5P2W2.js");
68
+ return await import("./trade-RKL7RNME.js");
60
69
  case "twap":
61
- return await import("./twap-4LRBUMTG.js");
70
+ return await import("./twap-MZ7ALPBC.js");
62
71
  case "withdraw":
63
- return await import("./withdraw-IRMICBD2.js");
72
+ return await import("./withdraw-LDERU7T7.js");
64
73
  case "deposit":
65
- return await import("./deposit-HNUSMKX5.js");
74
+ return await import("./deposit-KAUQEY7H.js");
66
75
  case "system":
67
- return await import("./system-BRZY7PTZ.js");
68
- case "config":
69
- return await import("./config-6BIS2PLC.js");
76
+ return await import("./system-XK2EF5SQ.js");
70
77
  case "setup":
71
- return await import("./setup-LAAVO63H.js");
78
+ return await import("./setup-NC3QC63P.js");
72
79
  default:
73
80
  return null;
74
81
  }
@@ -112,13 +119,10 @@ function handleSetup(argv) {
112
119
  const idx = argv.indexOf("setup");
113
120
  const rest = argv.slice(idx + 1);
114
121
  let client;
115
- let profile;
116
122
  let modules;
117
123
  for (let i = 0; i < rest.length; i++) {
118
124
  if (rest[i] === "--client" && rest[i + 1]) {
119
125
  client = rest[++i];
120
- } else if (rest[i] === "--profile" && rest[i + 1]) {
121
- profile = rest[++i];
122
126
  } else if (rest[i] === "--modules" && rest[i + 1]) {
123
127
  modules = rest[++i];
124
128
  } else if (rest[i] === "--help" || rest[i] === "-h") {
@@ -131,15 +135,26 @@ function handleSetup(argv) {
131
135
  process.exitCode = 1;
132
136
  return;
133
137
  }
134
- runSetup({ client, profile, modules });
138
+ runSetup({ client, modules });
135
139
  }
136
140
  async function main() {
137
- checkForUpdates("@bithumb-tradekit/cli", CLI_VERSION);
141
+ checkForUpdates("@bithumb-official/bithumb-cli", CLI_VERSION);
138
142
  if (process.argv[2] === "setup") {
139
143
  handleSetup(process.argv);
140
144
  return;
141
145
  }
142
- const { values: v, positionals } = parseCli(process.argv.slice(2));
146
+ let parsed;
147
+ try {
148
+ parsed = parseCli(process.argv.slice(2));
149
+ } catch (err) {
150
+ if (err instanceof CliUsageError) {
151
+ errorLine(`Error: ${err.message}. Run 'bithumb --help' for usage.`);
152
+ process.exitCode = 1;
153
+ return;
154
+ }
155
+ throw err;
156
+ }
157
+ const { values: v, positionals } = parsed;
143
158
  if (v.version) {
144
159
  outputLine(CLI_VERSION);
145
160
  return;
@@ -150,62 +165,86 @@ async function main() {
150
165
  }
151
166
  const [module, action, ...rest] = positionals;
152
167
  const json = v.json ?? false;
153
- if (module === "config") {
154
- const { handleConfigCommand } = await import("./config-2P3Y3TQH.js");
155
- return handleConfigCommand(action, rest, v);
156
- }
157
168
  const config = loadConfig({
158
169
  modules: v.modules,
159
170
  readOnly: v.readOnly,
160
171
  verbose: v.verbose,
161
- profile: v.profile,
172
+ accessKey: v.accessKey,
173
+ secretKey: v.secretKey,
162
174
  clientType: "cli"
163
175
  });
164
176
  const client = new BithumbRestClient(config);
165
177
  const baseRunner = createToolRunner(client, config);
166
- const logger = new TradeLogger(v.verbose ? "debug" : "info");
178
+ const logger = new TradeLogger({
179
+ minLevel: v.verbose ? "debug" : "info",
180
+ emitToStderr: v.verbose ?? false,
181
+ verbose: v.verbose ?? false
182
+ });
167
183
  const run = wrapRunnerWithLogger(baseRunner, logger);
168
184
  if (module === "system") {
169
- const { handleSystemCommand } = await import("./system-XRZ2KHXL.js");
185
+ const { handleSystemCommand } = await import("./system-RVBNM3IX.js");
170
186
  return handleSystemCommand(run, action, v, json);
171
187
  }
172
188
  const privateModules = /* @__PURE__ */ new Set(["account", "trade", "twap", "withdraw", "deposit"]);
173
189
  if (privateModules.has(module) && !config.hasAuth) {
174
190
  errorLine(
175
- "Error: API credentials required. Run 'bithumb setup' or configure ~/.bithumb/config.toml"
191
+ "Error: API credentials required. Set BITHUMB_ACCESS_KEY/BITHUMB_SECRET_KEY env vars or pass --access-key/--secret-key."
176
192
  );
177
193
  process.exitCode = 1;
178
194
  return;
179
195
  }
180
- if (module === "market") {
181
- const { handleMarketCommand } = await import("./market-GLU62BWO.js");
182
- return handleMarketCommand(run, action, rest, v, json);
183
- }
184
- if (module === "account") {
185
- const { handleAccountCommand } = await import("./account-UVDNQRB7.js");
186
- return handleAccountCommand(run, action, v, json);
187
- }
188
- if (module === "trade") {
189
- const { handleTradeCommand } = await import("./trade-FERR47DJ.js");
190
- return handleTradeCommand(run, action, v, json);
191
- }
192
- if (module === "twap") {
193
- const { handleTwapCommand } = await import("./twap-44UCVSIR.js");
194
- return handleTwapCommand(run, action, v, json);
195
- }
196
- if (module === "withdraw") {
197
- const { handleWithdrawCommand } = await import("./withdraw-TLGVRUBS.js");
198
- return handleWithdrawCommand(run, action, v, json);
199
- }
200
- if (module === "deposit") {
201
- const { handleDepositCommand } = await import("./deposit-TCMLJ7MI.js");
202
- return handleDepositCommand(run, action, v, json);
196
+ try {
197
+ if (module === "market") {
198
+ const { handleMarketCommand } = await import("./market-4IEKEJ4N.js");
199
+ return await handleMarketCommand(run, action, rest, v, json);
200
+ }
201
+ if (module === "account") {
202
+ const { handleAccountCommand } = await import("./account-UVDNQRB7.js");
203
+ return await handleAccountCommand(run, action, v, json);
204
+ }
205
+ if (module === "trade") {
206
+ const { handleTradeCommand } = await import("./trade-X5VBEQJE.js");
207
+ return await handleTradeCommand(run, action, v, json);
208
+ }
209
+ if (module === "twap") {
210
+ const { handleTwapCommand } = await import("./twap-FQJVPUWH.js");
211
+ return await handleTwapCommand(run, action, v, json);
212
+ }
213
+ if (module === "withdraw") {
214
+ const { handleWithdrawCommand } = await import("./withdraw-65X3DXR5.js");
215
+ return await handleWithdrawCommand(run, action, v, json);
216
+ }
217
+ if (module === "deposit") {
218
+ const { handleDepositCommand } = await import("./deposit-L3BBLG4X.js");
219
+ return await handleDepositCommand(run, action, v, json);
220
+ }
221
+ } catch (err) {
222
+ if (err instanceof CliUsageError) {
223
+ errorLine(`Error: ${err.message}`);
224
+ process.exitCode = 1;
225
+ return;
226
+ }
227
+ throw err;
203
228
  }
204
229
  errorLine(`Unknown command: ${module}. Run 'bithumb --help' for usage.`);
205
230
  process.exitCode = 1;
206
231
  }
207
- main().catch((err) => {
208
- errorLine(`Fatal: ${err instanceof Error ? err.message : String(err)}`);
209
- process.exitCode = 1;
210
- });
232
+ function isDirectInvocation() {
233
+ const entry = process.argv[1];
234
+ if (!entry) return false;
235
+ try {
236
+ return import.meta.url === pathToFileURL(realpathSync(entry)).href;
237
+ } catch {
238
+ return import.meta.url === pathToFileURL(entry).href;
239
+ }
240
+ }
241
+ if (isDirectInvocation()) {
242
+ main().catch((err) => {
243
+ errorLine(`Fatal: ${err instanceof Error ? err.message : String(err)}`);
244
+ process.exitCode = 1;
245
+ });
246
+ }
247
+ export {
248
+ main
249
+ };
211
250
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/help/index.ts","../src/index.ts"],"sourcesContent":["export const CLI_VERSION = \"0.1.16\";\n","import { outputLine } from \"../formatter.js\";\nimport { CLI_VERSION } from \"../constants.js\";\n\nconst GLOBAL_HELP = `\nbithumb v${CLI_VERSION} — Bithumb Trade CLI\n\nUsage: bithumb <module> <command> [options]\n\nModules:\n market Market data (ticker, orderbook, candles, trades)\n account Account balance, wallet status, API keys\n trade Order management (list, place, cancel, batch)\n twap TWAP (Time-Weighted Average Price) orders\n withdraw Cryptocurrency and KRW withdrawals\n deposit Cryptocurrency and KRW deposits\n system Capabilities, diagnostics, and local audit log (no auth required)\n\nUtility:\n setup Configure MCP client integration\n config Manage CLI configuration profiles\n\nGlobal Options:\n --profile <name> Config profile (default: \"default\")\n --json Output as JSON\n --verbose Enable verbose logging\n --read-only Read-only mode (setup only, disables write operations)\n -h, --help Show help\n -v, --version Show version\n\nRun 'bithumb <module> --help' for module-specific commands.\n`;\n\ninterface ModuleHelp {\n MODULE_HELP: string;\n ACTION_HELP?: Record<string, string>;\n}\n\nasync function loadModule(module: string): Promise<ModuleHelp | null> {\n switch (module) {\n case \"market\":\n return await import(\"./market.js\");\n case \"account\":\n return await import(\"./account.js\");\n case \"trade\":\n return await import(\"./trade.js\");\n case \"twap\":\n return await import(\"./twap.js\");\n case \"withdraw\":\n return await import(\"./withdraw.js\");\n case \"deposit\":\n return await import(\"./deposit.js\");\n case \"system\":\n return await import(\"./system.js\");\n case \"config\":\n return await import(\"./config.js\");\n case \"setup\":\n return await import(\"./setup.js\");\n default:\n return null;\n }\n}\n\nexport async function printHelp(positionals: string[]): Promise<void> {\n const module = positionals[0];\n const loaded = module ? await loadModule(module) : null;\n\n if (loaded === null) {\n outputLine(GLOBAL_HELP.trim());\n return;\n }\n\n const action = positionals[1];\n if (action && loaded.ACTION_HELP && action in loaded.ACTION_HELP) {\n const helpText = loaded.ACTION_HELP[action].trim();\n const hint = \"(💡 Run 'bithumb --help' for a list of global options.)\";\n const withHint = helpText.replace(/\\nExamples:/, `\\n${hint}\\n\\nExamples:`);\n outputLine(withHint);\n return;\n }\n\n outputLine(loaded.MODULE_HELP.trim());\n}\n","import {\n loadConfig,\n BithumbRestClient,\n createToolRunner,\n TradeLogger,\n checkForUpdates,\n runSetup,\n printSetupUsage,\n SUPPORTED_CLIENTS,\n} from \"@bithumb-official/bithumb-core\";\nimport type { ToolRunner, ClientId } from \"@bithumb-official/bithumb-core\";\nimport { parseCli } from \"./parser.js\";\nimport type { CliValues } from \"./parser.js\";\nimport { outputLine, errorLine } from \"./formatter.js\";\nimport { printHelp } from \"./help/index.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nfunction wrapRunnerWithLogger(\n baseRunner: ToolRunner,\n logger: TradeLogger,\n): ToolRunner {\n return async (toolName, args) => {\n const start = Date.now();\n try {\n const result = await baseRunner(toolName, args);\n logger.logTool(\"info\", toolName, args, { status: \"ok\" }, Date.now() - start);\n return result;\n } catch (error) {\n logger.logTool(\"error\", toolName, args, error, Date.now() - start);\n throw error;\n }\n };\n}\n\nfunction handleSetup(argv: string[]): void {\n const idx = argv.indexOf(\"setup\");\n const rest = argv.slice(idx + 1);\n\n let client: string | undefined;\n let profile: string | undefined;\n let modules: string | undefined;\n\n for (let i = 0; i < rest.length; i++) {\n if (rest[i] === \"--client\" && rest[i + 1]) {\n client = rest[++i];\n } else if (rest[i] === \"--profile\" && rest[i + 1]) {\n profile = rest[++i];\n } else if (rest[i] === \"--modules\" && rest[i + 1]) {\n modules = rest[++i];\n } else if (rest[i] === \"--help\" || rest[i] === \"-h\") {\n printSetupUsage();\n return;\n }\n }\n\n if (!client || !SUPPORTED_CLIENTS.includes(client as ClientId)) {\n errorLine(`Error: --client is required. Supported: ${SUPPORTED_CLIENTS.join(\", \")}`);\n process.exitCode = 1;\n return;\n }\n\n runSetup({ client: client as ClientId, profile, modules });\n}\n\nasync function main(): Promise<void> {\n checkForUpdates(\"@bithumb-tradekit/cli\", CLI_VERSION);\n\n // 1. Setup subcommand (before parseCli)\n if (process.argv[2] === \"setup\") {\n handleSetup(process.argv);\n return;\n }\n\n // 2. Parse arguments\n const { values: v, positionals } = parseCli(process.argv.slice(2));\n\n if (v.version) {\n outputLine(CLI_VERSION);\n return;\n }\n\n if (v.help || positionals.length === 0) {\n await printHelp(positionals);\n return;\n }\n\n const [module, action, ...rest] = positionals;\n const json = v.json ?? false;\n\n // 3. Config command (no auth needed, no runner needed)\n if (module === \"config\") {\n const { handleConfigCommand } = await import(\"./commands/config.js\");\n return handleConfigCommand(action, rest, v);\n }\n\n // 4. Load config + create runner\n const config = loadConfig({\n modules: v.modules,\n readOnly: v.readOnly,\n verbose: v.verbose,\n profile: v.profile,\n clientType: \"cli\",\n });\n const client = new BithumbRestClient(config);\n const baseRunner = createToolRunner(client, config);\n const logger = new TradeLogger(v.verbose ? \"debug\" : \"info\");\n const run = wrapRunnerWithLogger(baseRunner, logger);\n\n // 5. System module (no auth needed) — capabilities + diagnose + audit\n if (module === \"system\") {\n const { handleSystemCommand } = await import(\"./commands/system.js\");\n return handleSystemCommand(run, action, v, json);\n }\n\n // 6. Private API auth guard\n const privateModules = new Set([\"account\", \"trade\", \"twap\", \"withdraw\", \"deposit\"]);\n if (privateModules.has(module) && !config.hasAuth) {\n errorLine(\n \"Error: API credentials required. Run 'bithumb setup' or configure ~/.bithumb/config.toml\",\n );\n process.exitCode = 1;\n return;\n }\n\n // 7. Module routing\n if (module === \"market\") {\n const { handleMarketCommand } = await import(\"./commands/market.js\");\n return handleMarketCommand(run, action, rest, v, json);\n }\n if (module === \"account\") {\n const { handleAccountCommand } = await import(\"./commands/account.js\");\n return handleAccountCommand(run, action, v, json);\n }\n if (module === \"trade\") {\n const { handleTradeCommand } = await import(\"./commands/trade.js\");\n return handleTradeCommand(run, action, v, json);\n }\n if (module === \"twap\") {\n const { handleTwapCommand } = await import(\"./commands/twap.js\");\n return handleTwapCommand(run, action, v, json);\n }\n if (module === \"withdraw\") {\n const { handleWithdrawCommand } = await import(\"./commands/withdraw.js\");\n return handleWithdrawCommand(run, action, v, json);\n }\n if (module === \"deposit\") {\n const { handleDepositCommand } = await import(\"./commands/deposit.js\");\n return handleDepositCommand(run, action, v, json);\n }\n\n errorLine(`Unknown command: ${module}. Run 'bithumb --help' for usage.`);\n process.exitCode = 1;\n}\n\nmain().catch((err) => {\n errorLine(`Fatal: ${err instanceof Error ? err.message : String(err)}`);\n process.exitCode = 1;\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/help/index.ts"],"sourcesContent":["import { realpathSync } from \"node:fs\";\nimport { pathToFileURL } from \"node:url\";\nimport {\n loadConfig,\n BithumbRestClient,\n createToolRunner,\n TradeLogger,\n checkForUpdates,\n runSetup,\n printSetupUsage,\n SUPPORTED_CLIENTS,\n} from \"@bithumb-official/bithumb-core\";\nimport type { ToolRunner, ClientId } from \"@bithumb-official/bithumb-core\";\nimport { parseCli, CliUsageError } from \"./parser.js\";\nimport type { CliValues } from \"./parser.js\";\nimport { outputLine, errorLine } from \"./formatter.js\";\nimport { printHelp } from \"./help/index.js\";\nimport { CLI_VERSION } from \"./constants.js\";\n\nfunction wrapRunnerWithLogger(\n baseRunner: ToolRunner,\n logger: TradeLogger,\n): ToolRunner {\n return async (toolName, args) => {\n const start = Date.now();\n try {\n const result = await baseRunner(toolName, args);\n logger.logTool(\"info\", toolName, args, { status: \"ok\" }, Date.now() - start);\n return result;\n } catch (error) {\n logger.logTool(\"error\", toolName, args, error, Date.now() - start);\n throw error;\n }\n };\n}\n\nfunction handleSetup(argv: string[]): void {\n const idx = argv.indexOf(\"setup\");\n const rest = argv.slice(idx + 1);\n\n let client: string | undefined;\n let modules: string | undefined;\n\n for (let i = 0; i < rest.length; i++) {\n if (rest[i] === \"--client\" && rest[i + 1]) {\n client = rest[++i];\n } else if (rest[i] === \"--modules\" && rest[i + 1]) {\n modules = rest[++i];\n } else if (rest[i] === \"--help\" || rest[i] === \"-h\") {\n printSetupUsage();\n return;\n }\n }\n\n if (!client || !SUPPORTED_CLIENTS.includes(client as ClientId)) {\n errorLine(`Error: --client is required. Supported: ${SUPPORTED_CLIENTS.join(\", \")}`);\n process.exitCode = 1;\n return;\n }\n\n runSetup({ client: client as ClientId, modules });\n}\n\nexport async function main(): Promise<void> {\n checkForUpdates(\"@bithumb-official/bithumb-cli\", CLI_VERSION);\n\n // 1. Setup subcommand (before parseCli)\n if (process.argv[2] === \"setup\") {\n handleSetup(process.argv);\n return;\n }\n\n // 2. Parse arguments\n let parsed: ReturnType<typeof parseCli>;\n try {\n parsed = parseCli(process.argv.slice(2));\n } catch (err) {\n if (err instanceof CliUsageError) {\n errorLine(`Error: ${err.message}. Run 'bithumb --help' for usage.`);\n process.exitCode = 1;\n return;\n }\n throw err;\n }\n const { values: v, positionals } = parsed;\n\n if (v.version) {\n outputLine(CLI_VERSION);\n return;\n }\n\n if (v.help || positionals.length === 0) {\n await printHelp(positionals);\n return;\n }\n\n const [module, action, ...rest] = positionals;\n const json = v.json ?? false;\n\n // 3. Load config + create runner\n const config = loadConfig({\n modules: v.modules,\n readOnly: v.readOnly,\n verbose: v.verbose,\n accessKey: v.accessKey,\n secretKey: v.secretKey,\n clientType: \"cli\",\n });\n const client = new BithumbRestClient(config);\n const baseRunner = createToolRunner(client, config);\n const logger = new TradeLogger({\n minLevel: v.verbose ? \"debug\" : \"info\",\n emitToStderr: v.verbose ?? false,\n verbose: v.verbose ?? false,\n });\n const run = wrapRunnerWithLogger(baseRunner, logger);\n\n // 5. System module (no auth needed) — capabilities + diagnose + audit\n if (module === \"system\") {\n const { handleSystemCommand } = await import(\"./commands/system.js\");\n return handleSystemCommand(run, action, v, json);\n }\n\n // 6. Private API auth guard\n const privateModules = new Set([\"account\", \"trade\", \"twap\", \"withdraw\", \"deposit\"]);\n if (privateModules.has(module) && !config.hasAuth) {\n errorLine(\n \"Error: API credentials required. Set BITHUMB_ACCESS_KEY/BITHUMB_SECRET_KEY env vars or pass --access-key/--secret-key.\",\n );\n process.exitCode = 1;\n return;\n }\n\n // 7. Module routing\n try {\n if (module === \"market\") {\n const { handleMarketCommand } = await import(\"./commands/market.js\");\n return await handleMarketCommand(run, action, rest, v, json);\n }\n if (module === \"account\") {\n const { handleAccountCommand } = await import(\"./commands/account.js\");\n return await handleAccountCommand(run, action, v, json);\n }\n if (module === \"trade\") {\n const { handleTradeCommand } = await import(\"./commands/trade.js\");\n return await handleTradeCommand(run, action, v, json);\n }\n if (module === \"twap\") {\n const { handleTwapCommand } = await import(\"./commands/twap.js\");\n return await handleTwapCommand(run, action, v, json);\n }\n if (module === \"withdraw\") {\n const { handleWithdrawCommand } = await import(\"./commands/withdraw.js\");\n return await handleWithdrawCommand(run, action, v, json);\n }\n if (module === \"deposit\") {\n const { handleDepositCommand } = await import(\"./commands/deposit.js\");\n return await handleDepositCommand(run, action, v, json);\n }\n } catch (err) {\n if (err instanceof CliUsageError) {\n errorLine(`Error: ${err.message}`);\n process.exitCode = 1;\n return;\n }\n throw err;\n }\n\n errorLine(`Unknown command: ${module}. Run 'bithumb --help' for usage.`);\n process.exitCode = 1;\n}\n\n// Run main only when executed as a script (not when imported by tests).\n// Use realpath to handle invocation through npm bin symlinks (e.g. `bithumb`).\nfunction isDirectInvocation(): boolean {\n const entry = process.argv[1];\n if (!entry) return false;\n try {\n return import.meta.url === pathToFileURL(realpathSync(entry)).href;\n } catch {\n return import.meta.url === pathToFileURL(entry).href;\n }\n}\n\nif (isDirectInvocation()) {\n main().catch((err) => {\n errorLine(`Fatal: ${err instanceof Error ? err.message : String(err)}`);\n process.exitCode = 1;\n });\n}\n","export const CLI_VERSION = \"0.1.17\";\n","import { outputLine } from \"../formatter.js\";\nimport { CLI_VERSION } from \"../constants.js\";\n\nconst GLOBAL_HELP = `\nbithumb v${CLI_VERSION} — Bithumb Trade CLI\n\nUsage: bithumb <module> <command> [options]\n\nModules:\n market Market data (ticker, orderbook, candles, trades)\n account Account balance, wallet status, API keys\n trade Order management (list, place, cancel, batch)\n twap TWAP (Time-Weighted Average Price) orders\n withdraw Cryptocurrency and KRW withdrawals\n deposit Cryptocurrency and KRW deposits\n system Capabilities, diagnostics, and local audit log (no auth required)\n\nUtility:\n setup Configure MCP client integration\n\nGlobal Options:\n --access-key <key> Bithumb API access key (overrides BITHUMB_ACCESS_KEY env var)\n --secret-key <key> Bithumb API secret key (overrides BITHUMB_SECRET_KEY env var)\n --json Output as JSON\n --verbose Enable verbose logging\n --read-only Read-only mode (setup only, disables write operations)\n -h, --help Show help\n -v, --version Show version\n\nCredentials are read from env vars (BITHUMB_ACCESS_KEY / BITHUMB_SECRET_KEY) or the\nflags above. Note: keys passed as flags may be visible in your shell history and\nprocess list — prefer env vars for sensitive credentials.\n\nRun 'bithumb <module> --help' for module-specific commands.\n`;\n\ninterface ModuleHelp {\n MODULE_HELP: string;\n ACTION_HELP?: Record<string, string>;\n}\n\nasync function loadModule(module: string): Promise<ModuleHelp | null> {\n switch (module) {\n case \"market\":\n return await import(\"./market.js\");\n case \"account\":\n return await import(\"./account.js\");\n case \"trade\":\n return await import(\"./trade.js\");\n case \"twap\":\n return await import(\"./twap.js\");\n case \"withdraw\":\n return await import(\"./withdraw.js\");\n case \"deposit\":\n return await import(\"./deposit.js\");\n case \"system\":\n return await import(\"./system.js\");\n case \"setup\":\n return await import(\"./setup.js\");\n default:\n return null;\n }\n}\n\nexport async function printHelp(positionals: string[]): Promise<void> {\n const module = positionals[0];\n const loaded = module ? await loadModule(module) : null;\n\n if (loaded === null) {\n outputLine(GLOBAL_HELP.trim());\n return;\n }\n\n const action = positionals[1];\n if (action && loaded.ACTION_HELP && action in loaded.ACTION_HELP) {\n const helpText = loaded.ACTION_HELP[action].trim();\n const hint = \"(💡 Run 'bithumb --help' for a list of global options.)\";\n const withHint = helpText.replace(/\\nExamples:/, `\\n${hint}\\n\\nExamples:`);\n outputLine(withHint);\n return;\n }\n\n outputLine(loaded.MODULE_HELP.trim());\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ parseKstDatetime,
3
4
  toNumber
4
- } from "./chunk-AUQ7MB6O.js";
5
+ } from "./chunk-3VWN4HON.js";
5
6
  import {
6
7
  errorLine,
7
8
  outputLine,
@@ -21,7 +22,7 @@ async function handleMarketCommand(run, action, rest, v, json) {
21
22
  case "trades":
22
23
  return cmdTrades(run, rest[0] ?? v.market, {
23
24
  count: toNumber(v.count),
24
- to: v.to,
25
+ to: parseKstDatetime(v.to),
25
26
  cursor: v.cursor,
26
27
  daysAgo: toNumber(v.daysAgo),
27
28
  json
@@ -30,26 +31,26 @@ async function handleMarketCommand(run, action, rest, v, json) {
30
31
  return cmdCandlesMinutes(run, rest[0] ?? v.market, {
31
32
  unit: toNumber(v.unit) ?? 1,
32
33
  count: toNumber(v.count),
33
- to: v.to,
34
+ to: parseKstDatetime(v.to),
34
35
  json
35
36
  });
36
37
  case "candles-days":
37
38
  return cmdCandlesDays(run, rest[0] ?? v.market, {
38
39
  count: toNumber(v.count),
39
- to: v.to,
40
+ to: parseKstDatetime(v.to),
40
41
  convertingPriceUnit: v.convertingPriceUnit,
41
42
  json
42
43
  });
43
44
  case "candles-weeks":
44
45
  return cmdCandlesWeeks(run, rest[0] ?? v.market, {
45
46
  count: toNumber(v.count),
46
- to: v.to,
47
+ to: parseKstDatetime(v.to),
47
48
  json
48
49
  });
49
50
  case "candles-months":
50
51
  return cmdCandlesMonths(run, rest[0] ?? v.market, {
51
52
  count: toNumber(v.count),
52
- to: v.to,
53
+ to: parseKstDatetime(v.to),
53
54
  json
54
55
  });
55
56
  case "warnings":
@@ -301,4 +302,4 @@ async function cmdFeeInout(run, currency, json) {
301
302
  export {
302
303
  handleMarketCommand
303
304
  };
304
- //# sourceMappingURL=market-GLU62BWO.js.map
305
+ //# sourceMappingURL=market-4IEKEJ4N.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, parseKstDatetime } 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: parseKstDatetime(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: parseKstDatetime(v.to),\n json,\n });\n case \"candles-days\":\n return cmdCandlesDays(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: parseKstDatetime(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: parseKstDatetime(v.to),\n json,\n });\n case \"candles-months\":\n return cmdCandlesMonths(run, rest[0] ?? v.market, {\n count: toNumber(v.count),\n to: parseKstDatetime(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":[]}
@@ -80,7 +80,7 @@ Required:
80
80
 
81
81
  Options:
82
82
  --count <n> Number of results to return (default: 1)
83
- --to <datetime> Fetch trades before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)
83
+ --to <datetime> Fetch trades before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)
84
84
  --cursor <cursor> Pagination cursor
85
85
  --days-ago <n> Filter trades by days ago
86
86
 
@@ -99,7 +99,7 @@ Required:
99
99
  Options:
100
100
  --unit <n> Minute unit (allowed values: 1, 3, 5, 10, 15, 30, 60, 240) (default: 1)
101
101
  --count <n> Number of candles to return (default: 1)
102
- --to <datetime> Fetch candles before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)
102
+ --to <datetime> Fetch candles before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)
103
103
 
104
104
  Examples:
105
105
  bithumb market candles-minutes KRW-BTC --unit 5 --count 10
@@ -115,7 +115,7 @@ Required:
115
115
 
116
116
  Options:
117
117
  --count <n> Number of candles to return (default: 1)
118
- --to <datetime> Fetch candles before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)
118
+ --to <datetime> Fetch candles before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)
119
119
  --converting-price-unit <unit> Converting price unit (e.g., KRW)
120
120
 
121
121
  Examples:
@@ -132,7 +132,7 @@ Required:
132
132
 
133
133
  Options:
134
134
  --count <n> Number of candles to return (default: 1)
135
- --to <datetime> Fetch candles before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)
135
+ --to <datetime> Fetch candles before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)
136
136
 
137
137
  Examples:
138
138
  bithumb market candles-weeks KRW-BTC --count 12
@@ -148,7 +148,7 @@ Required:
148
148
 
149
149
  Options:
150
150
  --count <n> Number of candles to return (default: 1)
151
- --to <datetime> Fetch candles before this time (KST), exclusive (e.g. 2026-01-01T00:00:00)
151
+ --to <datetime> Fetch candles before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)
152
152
 
153
153
  Examples:
154
154
  bithumb market candles-months KRW-BTC --count 12
@@ -216,4 +216,4 @@ export {
216
216
  ACTION_HELP,
217
217
  MODULE_HELP
218
218
  };
219
- //# sourceMappingURL=market-EEF3KI4T.js.map
219
+ //# sourceMappingURL=market-C5ESTU3F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/help/market.ts"],"sourcesContent":["export const MODULE_HELP = `\nUsage: bithumb market <command> [options]\n\nCommands:\n markets List all available markets\n ticker Get ticker for market(s) (comma-separated)\n orderbook Get orderbook for market(s) (comma-separated)\n trades Get recent trades\n candles-minutes Get minute candles\n candles-days Get daily candles\n candles-weeks Get weekly candles\n candles-months Get monthly candles\n warnings Get virtual asset warning markets\n notices Get notice list\n fee-inout Get deposit/withdrawal fees\n\nRun bithumb market <command> --help for command-specific options.\n\nExamples:\n bithumb market markets\n bithumb market ticker KRW-BTC\n bithumb market orderbook KRW-BTC --json\n bithumb market candles-minutes KRW-BTC --unit 5 --count 10\n`;\n\nconst MARKETS_HELP = `\nUsage: bithumb market markets [options]\n\nList all available markets on Bithumb.\n\nRequired:\n (none)\n\nOptions:\n --is-details Include detailed market info (default: false)\n\nExamples:\n bithumb market markets\n bithumb market markets --is-details --json\n`;\n\nconst TICKER_HELP = `\nUsage: bithumb market ticker <market> [options]\n\nGet ticker (current price snapshot) for one or more markets.\n\nRequired:\n <market> Market identifier(s), comma-separated (e.g., KRW-BTC or KRW-BTC,KRW-ETH)\n\nOptions:\n (none)\n\nExamples:\n bithumb market ticker KRW-BTC\n bithumb market ticker KRW-BTC,KRW-ETH --json\n`;\n\nconst ORDERBOOK_HELP = `\nUsage: bithumb market orderbook <market> [options]\n\nGet orderbook (bid/ask depth) for one or more markets.\n\nRequired:\n <market> Market identifier(s), comma-separated (e.g., KRW-BTC or KRW-BTC,KRW-ETH)\n\nOptions:\n (none)\n\nExamples:\n bithumb market orderbook KRW-BTC\n bithumb market orderbook KRW-BTC,KRW-ETH --json\n`;\n\nconst TRADES_HELP = `\nUsage: bithumb market trades <market> [options]\n\nGet recent trades (tick history) for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --count <n> Number of results to return (default: 1)\n --to <datetime> Fetch trades before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)\n --cursor <cursor> Pagination cursor\n --days-ago <n> Filter trades by days ago\n\nExamples:\n bithumb market trades KRW-BTC --count 50\n bithumb market trades KRW-BTC --days-ago 1\n`;\n\nconst CANDLES_MINUTES_HELP = `\nUsage: bithumb market candles-minutes <market> [options]\n\nGet minute-level candles for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --unit <n> Minute unit (allowed values: 1, 3, 5, 10, 15, 30, 60, 240) (default: 1)\n --count <n> Number of candles to return (default: 1)\n --to <datetime> Fetch candles before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)\n\nExamples:\n bithumb market candles-minutes KRW-BTC --unit 5 --count 10\n bithumb market candles-minutes KRW-BTC --unit 60 --count 24\n`;\n\nconst CANDLES_DAYS_HELP = `\nUsage: bithumb market candles-days <market> [options]\n\nGet daily candles for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --count <n> Number of candles to return (default: 1)\n --to <datetime> Fetch candles before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)\n --converting-price-unit <unit> Converting price unit (e.g., KRW)\n\nExamples:\n bithumb market candles-days KRW-BTC --count 30\n bithumb market candles-days KRW-BTC --converting-price-unit KRW\n`;\n\nconst CANDLES_WEEKS_HELP = `\nUsage: bithumb market candles-weeks <market> [options]\n\nGet weekly candles for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --count <n> Number of candles to return (default: 1)\n --to <datetime> Fetch candles before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)\n\nExamples:\n bithumb market candles-weeks KRW-BTC --count 12\n bithumb market candles-weeks KRW-BTC --to 2026-01-01T00:00:00\n`;\n\nconst CANDLES_MONTHS_HELP = `\nUsage: bithumb market candles-months <market> [options]\n\nGet monthly candles for a market.\n\nRequired:\n <market> Market identifier (e.g., KRW-BTC)\n\nOptions:\n --count <n> Number of candles to return (default: 1)\n --to <datetime> Fetch candles before this time (KST naive, no offset), exclusive (e.g. 2026-01-01T00:00:00)\n\nExamples:\n bithumb market candles-months KRW-BTC --count 12\n bithumb market candles-months KRW-BTC --to 2026-01-01T00:00:00\n`;\n\nconst WARNINGS_HELP = `\nUsage: bithumb market warnings [options]\n\nGet the list of virtual asset warning markets (caution-flagged).\n\nRequired:\n (none)\n\nOptions:\n (none)\n\nExamples:\n bithumb market warnings\n bithumb market warnings --json\n`;\n\nconst NOTICES_HELP = `\nUsage: bithumb market notices [options]\n\nGet the list of exchange notices.\n\nRequired:\n (none)\n\nOptions:\n --count <n> Number of notices to return (default: 5)\n\nExamples:\n bithumb market notices\n bithumb market notices --count 20\n`;\n\nconst FEE_INOUT_HELP = `\nUsage: bithumb market fee-inout <currency> [options]\n\nGet deposit/withdrawal fee information for a currency.\n\nRequired:\n <currency> Currency code (e.g., BTC, ETH)\n\nOptions:\n (none)\n\nExamples:\n bithumb market fee-inout BTC\n bithumb market fee-inout ETH --json\n`;\n\nexport const ACTION_HELP: Record<string, string> = {\n markets: MARKETS_HELP,\n ticker: TICKER_HELP,\n orderbook: ORDERBOOK_HELP,\n trades: TRADES_HELP,\n \"candles-minutes\": CANDLES_MINUTES_HELP,\n \"candles-days\": CANDLES_DAYS_HELP,\n \"candles-weeks\": CANDLES_WEEKS_HELP,\n \"candles-months\": CANDLES_MONTHS_HELP,\n warnings: WARNINGS_HELP,\n notices: NOTICES_HELP,\n \"fee-inout\": FEE_INOUT_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;AAyB3B,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBrB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBpB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBvB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBpB,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB7B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB1B,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB3B,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB5B,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBtB,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBrB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBhB,IAAM,cAAsC;AAAA,EACjD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,aAAa;AACf;","names":[]}
@@ -2,13 +2,12 @@
2
2
 
3
3
  // src/help/setup.ts
4
4
  var MODULE_HELP = `
5
- Usage: bithumb setup --client <client> [--profile <name>] [--modules <list>]
5
+ Usage: bithumb setup --client <client> [--modules <list>]
6
6
 
7
7
  Configure MCP client integration for supported AI coding tools.
8
8
 
9
9
  Options:
10
10
  --client <client> Target client: claude-desktop, cursor, windsurf, vscode, claude-code
11
- --profile <name> Config profile to use (default: "default")
12
11
  --modules <list> Comma-separated modules to enable
13
12
 
14
13
  Examples:
@@ -18,4 +17,4 @@ Examples:
18
17
  export {
19
18
  MODULE_HELP
20
19
  };
21
- //# sourceMappingURL=setup-LAAVO63H.js.map
20
+ //# sourceMappingURL=setup-NC3QC63P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/help/setup.ts"],"sourcesContent":["export const MODULE_HELP = `\nUsage: bithumb setup --client <client> [--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 --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;","names":[]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  toNumber
4
- } from "./chunk-AUQ7MB6O.js";
4
+ } from "./chunk-3VWN4HON.js";
5
5
  import {
6
6
  errorLine,
7
7
  outputLine,
@@ -66,4 +66,4 @@ async function cmdAudit(run, opts) {
66
66
  export {
67
67
  handleSystemCommand
68
68
  };
69
- //# sourceMappingURL=system-XRZ2KHXL.js.map
69
+ //# sourceMappingURL=system-RVBNM3IX.js.map
@@ -11,19 +11,17 @@ Commands:
11
11
 
12
12
  Options:
13
13
  --json Output as JSON
14
- --profile <name> Config profile to use (default: "default")
15
14
  --verbose Enable verbose logging
16
15
 
17
16
  Examples:
18
17
  bithumb system capabilities
19
18
  bithumb system capabilities --json
20
19
  bithumb system diagnose
21
- bithumb system diagnose --profile trading
22
20
  bithumb system audit --limit 10
23
21
 
24
22
  Notes:
25
23
  - 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.
24
+ - Use 'diagnose' to verify API reachability, auth status, and module status.
27
25
  - Use 'audit' to view local CLI/MCP trade audit log entries (reads ~/.bithumb/logs/).
28
26
  - All three commands run without API credentials (auth is reported but not required).
29
27
  `;
@@ -53,17 +51,15 @@ verifying a fresh \`bithumb setup\`.
53
51
 
54
52
  Options:
55
53
  --json Output as JSON
56
- --profile <name> Config profile to use (default: "default")
57
54
  --verbose Enable verbose logging
58
55
 
59
56
  Examples:
60
57
  bithumb system diagnose
61
58
  bithumb system diagnose --json
62
- bithumb system diagnose --profile trading
63
59
 
64
60
  Notes:
65
61
  - Does not require API credentials to run, but reports auth status.
66
- - Output includes API reachability, auth validity, config OK, module status.
62
+ - Output includes API reachability, auth validity, and module status.
67
63
  `;
68
64
  var AUDIT_HELP = `
69
65
  Usage: bithumb system audit [options]
@@ -95,4 +91,4 @@ export {
95
91
  ACTION_HELP,
96
92
  MODULE_HELP
97
93
  };
98
- //# sourceMappingURL=system-BRZY7PTZ.js.map
94
+ //# sourceMappingURL=system-XK2EF5SQ.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 --verbose Enable verbose logging\n\nExamples:\n bithumb system capabilities\n bithumb system capabilities --json\n bithumb system diagnose\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, 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 --verbose Enable verbose logging\n\nExamples:\n bithumb system diagnose\n bithumb system diagnose --json\n\nNotes:\n - Does not require API credentials to run, but reports auth status.\n - Output includes API reachability, auth validity, and 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;AAyB3B,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;AAoBtB,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":[]}