@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.
- package/dist/{chunk-AUQ7MB6O.js → chunk-3VWN4HON.js} +35 -8
- package/dist/chunk-3VWN4HON.js.map +1 -0
- package/dist/{chunk-YXIFBNEQ.js → chunk-HT2P7KTV.js} +67 -994
- package/dist/chunk-HT2P7KTV.js.map +1 -0
- package/dist/{deposit-HNUSMKX5.js → deposit-KAUQEY7H.js} +6 -6
- package/dist/deposit-KAUQEY7H.js.map +1 -0
- package/dist/{deposit-TCMLJ7MI.js → deposit-L3BBLG4X.js} +21 -13
- package/dist/deposit-L3BBLG4X.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +99 -60
- package/dist/index.js.map +1 -1
- package/dist/{market-GLU62BWO.js → market-4IEKEJ4N.js} +8 -7
- package/dist/market-4IEKEJ4N.js.map +1 -0
- package/dist/{market-EEF3KI4T.js → market-C5ESTU3F.js} +6 -6
- package/dist/market-C5ESTU3F.js.map +1 -0
- package/dist/{setup-LAAVO63H.js → setup-NC3QC63P.js} +2 -3
- package/dist/setup-NC3QC63P.js.map +1 -0
- package/dist/{system-XRZ2KHXL.js → system-RVBNM3IX.js} +2 -2
- package/dist/{system-BRZY7PTZ.js → system-XK2EF5SQ.js} +3 -7
- package/dist/system-XK2EF5SQ.js.map +1 -0
- package/dist/{trade-H4G5P2W2.js → trade-RKL7RNME.js} +18 -8
- package/dist/trade-RKL7RNME.js.map +1 -0
- package/dist/{trade-FERR47DJ.js → trade-X5VBEQJE.js} +21 -10
- package/dist/trade-X5VBEQJE.js.map +1 -0
- package/dist/{twap-44UCVSIR.js → twap-FQJVPUWH.js} +12 -4
- package/dist/twap-FQJVPUWH.js.map +1 -0
- package/dist/{twap-4LRBUMTG.js → twap-MZ7ALPBC.js} +3 -3
- package/dist/twap-MZ7ALPBC.js.map +1 -0
- package/dist/{withdraw-TLGVRUBS.js → withdraw-65X3DXR5.js} +17 -9
- package/dist/withdraw-65X3DXR5.js.map +1 -0
- package/dist/{withdraw-IRMICBD2.js → withdraw-LDERU7T7.js} +6 -6
- package/dist/withdraw-LDERU7T7.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-AUQ7MB6O.js.map +0 -1
- package/dist/chunk-YXIFBNEQ.js.map +0 -1
- package/dist/config-2P3Y3TQH.js +0 -182
- package/dist/config-2P3Y3TQH.js.map +0 -1
- package/dist/config-6BIS2PLC.js +0 -154
- package/dist/config-6BIS2PLC.js.map +0 -1
- package/dist/deposit-HNUSMKX5.js.map +0 -1
- package/dist/deposit-TCMLJ7MI.js.map +0 -1
- package/dist/market-EEF3KI4T.js.map +0 -1
- package/dist/market-GLU62BWO.js.map +0 -1
- package/dist/setup-LAAVO63H.js.map +0 -1
- package/dist/system-BRZY7PTZ.js.map +0 -1
- package/dist/trade-FERR47DJ.js.map +0 -1
- package/dist/trade-H4G5P2W2.js.map +0 -1
- package/dist/twap-44UCVSIR.js.map +0 -1
- package/dist/twap-4LRBUMTG.js.map +0 -1
- package/dist/withdraw-IRMICBD2.js.map +0 -1
- package/dist/withdraw-TLGVRUBS.js.map +0 -1
- /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-
|
|
11
|
+
} from "./chunk-HT2P7KTV.js";
|
|
12
12
|
import {
|
|
13
|
+
CliUsageError,
|
|
13
14
|
parseCli
|
|
14
|
-
} from "./chunk-
|
|
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.
|
|
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
|
-
--
|
|
44
|
-
--
|
|
45
|
-
--
|
|
46
|
-
--
|
|
47
|
-
-
|
|
48
|
-
-
|
|
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-
|
|
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-
|
|
68
|
+
return await import("./trade-RKL7RNME.js");
|
|
60
69
|
case "twap":
|
|
61
|
-
return await import("./twap-
|
|
70
|
+
return await import("./twap-MZ7ALPBC.js");
|
|
62
71
|
case "withdraw":
|
|
63
|
-
return await import("./withdraw-
|
|
72
|
+
return await import("./withdraw-LDERU7T7.js");
|
|
64
73
|
case "deposit":
|
|
65
|
-
return await import("./deposit-
|
|
74
|
+
return await import("./deposit-KAUQEY7H.js");
|
|
66
75
|
case "system":
|
|
67
|
-
return await import("./system-
|
|
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-
|
|
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,
|
|
138
|
+
runSetup({ client, modules });
|
|
135
139
|
}
|
|
136
140
|
async function main() {
|
|
137
|
-
checkForUpdates("@bithumb-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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-
|
|
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.
|
|
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
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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> [--
|
|
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-
|
|
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-
|
|
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-
|
|
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,
|
|
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,
|
|
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-
|
|
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":[]}
|