antitone 1.1.0
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/LICENSE +21 -0
- package/README.md +219 -0
- package/SKILL.md +114 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +371 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +108 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +412 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +42 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +117 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +53 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +224 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +74 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +283 -0
- package/dist/output.js.map +1 -0
- package/dist/tools/astock.d.ts +5 -0
- package/dist/tools/astock.d.ts.map +1 -0
- package/dist/tools/astock.js +30 -0
- package/dist/tools/astock.js.map +1 -0
- package/dist/tools/backtest.d.ts +5 -0
- package/dist/tools/backtest.d.ts.map +1 -0
- package/dist/tools/backtest.js +36 -0
- package/dist/tools/backtest.js.map +1 -0
- package/dist/tools/briefing.d.ts +5 -0
- package/dist/tools/briefing.d.ts.map +1 -0
- package/dist/tools/briefing.js +28 -0
- package/dist/tools/briefing.js.map +1 -0
- package/dist/tools/calendar.d.ts +5 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +35 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/entity.d.ts +5 -0
- package/dist/tools/entity.d.ts.map +1 -0
- package/dist/tools/entity.js +41 -0
- package/dist/tools/entity.js.map +1 -0
- package/dist/tools/index.d.ts +28 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +58 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/kit.d.ts +82 -0
- package/dist/tools/kit.d.ts.map +1 -0
- package/dist/tools/kit.js +146 -0
- package/dist/tools/kit.js.map +1 -0
- package/dist/tools/market.d.ts +5 -0
- package/dist/tools/market.d.ts.map +1 -0
- package/dist/tools/market.js +194 -0
- package/dist/tools/market.js.map +1 -0
- package/dist/tools/news.d.ts +5 -0
- package/dist/tools/news.d.ts.map +1 -0
- package/dist/tools/news.js +101 -0
- package/dist/tools/news.js.map +1 -0
- package/dist/tools/usage.d.ts +13 -0
- package/dist/tools/usage.d.ts.map +1 -0
- package/dist/tools/usage.js +50 -0
- package/dist/tools/usage.js.map +1 -0
- package/package.json +66 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* antitone —— 命令行入口(CLI + Skill 的载体)
|
|
4
|
+
*
|
|
5
|
+
* 为什么要有 CLI:
|
|
6
|
+
* 绝大多数 agent harness 都能跑 shell,但让模型**手写 curl** 有三个毛病 ——
|
|
7
|
+
* 命令长易错、参数名要猜、密钥容易被展开进对话记录。CLI 把这三件事一次解决:
|
|
8
|
+
* 1) 命令短:antitone news --q 半导体 --limit 20 --json
|
|
9
|
+
* 2) 参数由 zod 校验(就是 MCP 用的那份 schema)
|
|
10
|
+
* 3) 密钥只从 $ANTITONE_API_KEY 读,永不出现在命令行(对话记录里只留变量名)
|
|
11
|
+
*
|
|
12
|
+
* 命令一览:
|
|
13
|
+
* antitone <tool> [--key value ...] [--json] 调用单个工具(16 个,见 antitone tools)
|
|
14
|
+
* antitone tools [--json] 列出全部工具与参数
|
|
15
|
+
* antitone skill --print 打印 SKILL.md(给 agent 的用法说明书)
|
|
16
|
+
* antitone skill --install [--dir <path>] 安装到检测到的 skill 目录
|
|
17
|
+
* antitone balance 查余额与今日免费额度(= get_usage)
|
|
18
|
+
*/
|
|
19
|
+
import { homedir } from "node:os";
|
|
20
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
21
|
+
import { dirname, join } from "node:path";
|
|
22
|
+
import { fileURLToPath } from "node:url";
|
|
23
|
+
import { z } from "zod";
|
|
24
|
+
import { AntitoneClient } from "./client.js";
|
|
25
|
+
import { ConfigError, loadConfig } from "./config.js";
|
|
26
|
+
import { collectTools, TOOL_NAMES } from "./tools/index.js";
|
|
27
|
+
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
28
|
+
/**
|
|
29
|
+
* 短别名:让 agent 写的命令更短、更不容易打错(也省 token)。
|
|
30
|
+
* 例:antitone news --q 半导体 ←→ antitone search_news --q 半导体
|
|
31
|
+
*/
|
|
32
|
+
const TOOL_ALIASES = {
|
|
33
|
+
news: "search_news",
|
|
34
|
+
doc: "get_news",
|
|
35
|
+
story: "get_story",
|
|
36
|
+
market: "market_overview",
|
|
37
|
+
sectors: "list_sectors",
|
|
38
|
+
sector: "get_sector",
|
|
39
|
+
themes: "list_themes",
|
|
40
|
+
theme_news: "get_theme_news",
|
|
41
|
+
quote: "get_quotes",
|
|
42
|
+
quotes: "get_quotes",
|
|
43
|
+
kline: "get_kline",
|
|
44
|
+
calendar: "get_calendar",
|
|
45
|
+
briefing: "get_briefing",
|
|
46
|
+
entity: "get_entity",
|
|
47
|
+
astock: "get_astock_board",
|
|
48
|
+
backtest: "run_backtest",
|
|
49
|
+
usage: "get_usage",
|
|
50
|
+
balance: "get_usage",
|
|
51
|
+
};
|
|
52
|
+
/** 参数别名:容忍更自然的写法(antitone briefing --kind premarket) */
|
|
53
|
+
const ARG_ALIASES = {
|
|
54
|
+
kind: "type", // antitone briefing --kind premarket
|
|
55
|
+
full_text: "include_full_text",
|
|
56
|
+
financials: "include_financials",
|
|
57
|
+
board_type: "board",
|
|
58
|
+
board: "board",
|
|
59
|
+
imp: "min_imp",
|
|
60
|
+
min_importance: "min_imp",
|
|
61
|
+
};
|
|
62
|
+
function parseArgv(argv) {
|
|
63
|
+
const positional = [];
|
|
64
|
+
const flags = new Map();
|
|
65
|
+
let json = false;
|
|
66
|
+
for (let i = 0; i < argv.length; i++) {
|
|
67
|
+
const tok = argv[i];
|
|
68
|
+
if (tok === "--json" || tok === "-j") {
|
|
69
|
+
json = true;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (tok.startsWith("--")) {
|
|
73
|
+
const eq = tok.indexOf("=");
|
|
74
|
+
const rawKey = (eq > 0 ? tok.slice(2, eq) : tok.slice(2)).replace(/-/g, "_");
|
|
75
|
+
const key = ARG_ALIASES[rawKey] ?? rawKey;
|
|
76
|
+
let raw;
|
|
77
|
+
if (eq > 0) {
|
|
78
|
+
raw = tok.slice(eq + 1);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const next = argv[i + 1];
|
|
82
|
+
if (next === undefined || next.startsWith("--")) {
|
|
83
|
+
flags.set(key, true);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
raw = next;
|
|
87
|
+
i++;
|
|
88
|
+
}
|
|
89
|
+
// 重复的键 -> 数组(如 --symbols 600519 --symbols 000001)
|
|
90
|
+
const prev = flags.get(key);
|
|
91
|
+
if (prev === undefined)
|
|
92
|
+
flags.set(key, raw);
|
|
93
|
+
else if (Array.isArray(prev))
|
|
94
|
+
prev.push(raw);
|
|
95
|
+
else
|
|
96
|
+
flags.set(key, [String(prev), raw]);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
positional.push(tok);
|
|
100
|
+
}
|
|
101
|
+
return { positional, flags, json };
|
|
102
|
+
}
|
|
103
|
+
/** 按工具 schema 把字符串参数转成正确类型(CLI 与 MCP 用同一份 zod schema)。 */
|
|
104
|
+
function coerceArgs(tool, flags, positional) {
|
|
105
|
+
const shape = (tool.meta.inputSchema ?? {});
|
|
106
|
+
const out = {};
|
|
107
|
+
const positionalFields = Object.keys(shape).filter((k) => /^(symbols?|codes?|q|query|path|id)$/.test(k));
|
|
108
|
+
for (const [key, value] of flags) {
|
|
109
|
+
const field = shape[key];
|
|
110
|
+
if (!field)
|
|
111
|
+
throw new Error(`未知参数 --${key}(用 antitone tools 查看该工具支持的参数)`);
|
|
112
|
+
out[key] = coerceOne(unwrap(field), value);
|
|
113
|
+
}
|
|
114
|
+
// 位置参数:按 schema 里第一个"像主参数"的字段顺序填入(antitone quote 600519 000001)
|
|
115
|
+
let pi = 0;
|
|
116
|
+
for (const name of positionalFields) {
|
|
117
|
+
if (pi >= positional.length)
|
|
118
|
+
break;
|
|
119
|
+
if (out[name] !== undefined)
|
|
120
|
+
continue;
|
|
121
|
+
const raw = shape[name];
|
|
122
|
+
if (isListLike(raw)) {
|
|
123
|
+
out[name] = positional.slice(pi);
|
|
124
|
+
pi = positional.length;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
out[name] = coerceOne(unwrap(raw), positional[pi]);
|
|
128
|
+
pi++;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (pi < positional.length) {
|
|
132
|
+
throw new Error(`多余的位置参数:${positional.slice(pi).join(" ")}(用 antitone tools 查看用法)`);
|
|
133
|
+
}
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* 是否"列表型"参数:直接是数组,或是 union 里含数组分支
|
|
138
|
+
* (get_quotes.symbols 就是 union(数组, 逗号串),只能这样识别)。
|
|
139
|
+
*/
|
|
140
|
+
function isListLike(field) {
|
|
141
|
+
const f = unwrap(field);
|
|
142
|
+
if (f instanceof z.ZodArray)
|
|
143
|
+
return true;
|
|
144
|
+
if (f instanceof z.ZodUnion) {
|
|
145
|
+
const options = f._def?.options ?? [];
|
|
146
|
+
return options.some((o) => unwrap(o) instanceof z.ZodArray);
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
function unwrap(t) {
|
|
151
|
+
let cur = t;
|
|
152
|
+
for (let i = 0; i < 10; i++) {
|
|
153
|
+
const def = cur._def;
|
|
154
|
+
if (!def?.innerType)
|
|
155
|
+
break;
|
|
156
|
+
cur = def.innerType;
|
|
157
|
+
}
|
|
158
|
+
return cur;
|
|
159
|
+
}
|
|
160
|
+
function coerceOne(field, value) {
|
|
161
|
+
if (field instanceof z.ZodNumber) {
|
|
162
|
+
const n = Number(value);
|
|
163
|
+
if (!Number.isFinite(n))
|
|
164
|
+
throw new Error(`需要数字,收到「${String(value)}」`);
|
|
165
|
+
return n;
|
|
166
|
+
}
|
|
167
|
+
if (field instanceof z.ZodBoolean) {
|
|
168
|
+
const s = String(value).toLowerCase();
|
|
169
|
+
return s === "true" || s === "1" || s === "yes" || value === true;
|
|
170
|
+
}
|
|
171
|
+
if (field instanceof z.ZodArray) {
|
|
172
|
+
const raw = Array.isArray(value) ? value : String(value).split(",");
|
|
173
|
+
return raw.map((v) => coerceOne(field.element, v));
|
|
174
|
+
}
|
|
175
|
+
if (field instanceof z.ZodUnion) {
|
|
176
|
+
const options = field._def?.options ?? [];
|
|
177
|
+
const arr = options.map(unwrap).find((o) => o instanceof z.ZodArray);
|
|
178
|
+
if (arr instanceof z.ZodArray) {
|
|
179
|
+
const raw = Array.isArray(value) ? value : String(value).split(",");
|
|
180
|
+
return raw.map((v) => coerceOne(arr.element, v));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return String(value);
|
|
184
|
+
}
|
|
185
|
+
/* ────────────────────────── 输出 ────────────────────────── */
|
|
186
|
+
function billingLine(billing) {
|
|
187
|
+
if (!billing)
|
|
188
|
+
return "";
|
|
189
|
+
const bits = [];
|
|
190
|
+
if (billing.credits !== undefined)
|
|
191
|
+
bits.push(`本次 ${billing.credits} 积分`);
|
|
192
|
+
if (billing.balance !== undefined)
|
|
193
|
+
bits.push(`余额 ${billing.balance}`);
|
|
194
|
+
const f = billing.free_daily;
|
|
195
|
+
if (f)
|
|
196
|
+
bits.push(`今日免费额度剩 ${f.remaining}/${f.limit}`);
|
|
197
|
+
if (billing.note)
|
|
198
|
+
bits.push(billing.note);
|
|
199
|
+
return bits.length ? `\n· ${bits.join(" · ")}` : "";
|
|
200
|
+
}
|
|
201
|
+
function renderResult(run, wantJson) {
|
|
202
|
+
const res = run;
|
|
203
|
+
const text = (res.content ?? [])
|
|
204
|
+
.map((c) => (c.type === "text" ? (c.text ?? "") : `<${c.type}>`))
|
|
205
|
+
.join("\n");
|
|
206
|
+
if (wantJson)
|
|
207
|
+
return text;
|
|
208
|
+
try {
|
|
209
|
+
const parsed = JSON.parse(text);
|
|
210
|
+
const billing = parsed["billing"];
|
|
211
|
+
const payload = { ...parsed };
|
|
212
|
+
delete payload["billing"];
|
|
213
|
+
return `${JSON.stringify(payload, null, 2)}${billingLine(billing)}`;
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return text;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/* ────────────────────────── skill 安装 ────────────────────────── */
|
|
220
|
+
const SKILL_SOURCES = [
|
|
221
|
+
{ label: "DSH / 通用 agents", dir: join(homedir(), ".agents", "skills") },
|
|
222
|
+
{ label: "Claude Code", dir: join(homedir(), ".claude", "skills") },
|
|
223
|
+
{ label: "Codex", dir: join(homedir(), ".codex", "skills") },
|
|
224
|
+
];
|
|
225
|
+
function skillText() {
|
|
226
|
+
const candidates = [join(HERE, "..", "SKILL.md"), join(HERE, "SKILL.md")];
|
|
227
|
+
for (const p of candidates) {
|
|
228
|
+
if (existsSync(p)) {
|
|
229
|
+
return readFileSync(p, "utf8");
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
throw new Error("包内未找到 SKILL.md(安装包损坏?)");
|
|
233
|
+
}
|
|
234
|
+
function installSkill(explicitDir) {
|
|
235
|
+
const body = skillText();
|
|
236
|
+
const targets = explicitDir
|
|
237
|
+
? [{ label: "指定目录", dir: explicitDir }]
|
|
238
|
+
: SKILL_SOURCES.filter((s) => existsSync(s.dir) || s.dir.includes(".agents"));
|
|
239
|
+
if (targets.length === 0) {
|
|
240
|
+
process.stdout.write("未检测到任何 skill 目录。用 --dir <path> 指定,或先创建 ~/.agents/skills/\n");
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
for (const t of targets) {
|
|
244
|
+
const dest = join(t.dir, "antitone");
|
|
245
|
+
mkdirSync(dest, { recursive: true });
|
|
246
|
+
writeFileSync(join(dest, "SKILL.md"), body, "utf8");
|
|
247
|
+
process.stdout.write(`✓ 已安装到 ${t.label}:${join(dest, "SKILL.md")}\n`);
|
|
248
|
+
}
|
|
249
|
+
process.stdout.write("\n重启你的 agent 后,问「今天半导体有什么利空」即应触发。\n");
|
|
250
|
+
}
|
|
251
|
+
/* ────────────────────────── 入口 ────────────────────────── */
|
|
252
|
+
/** CLI 主体(导出以便被 MCP 入口复用:`npx antitone-mcp <命令>` 会转发到这里)。 */
|
|
253
|
+
export async function runCli(argv) {
|
|
254
|
+
const cmd = argv[0];
|
|
255
|
+
if (!cmd || cmd === "help" || cmd === "--help" || cmd === "-h") {
|
|
256
|
+
process.stdout.write([
|
|
257
|
+
"antitone —— Antitone 财经情报命令行",
|
|
258
|
+
"",
|
|
259
|
+
"用法:",
|
|
260
|
+
" antitone <tool> [--参数 值 ...] [--json] 调用工具",
|
|
261
|
+
" antitone tools 列出 16 个工具与参数",
|
|
262
|
+
" antitone balance 余额与今日免费额度",
|
|
263
|
+
" antitone skill --print | --install 取/装给 agent 的用法说明书",
|
|
264
|
+
"",
|
|
265
|
+
"示例:",
|
|
266
|
+
" antitone news --q 半导体 --limit 10",
|
|
267
|
+
" antitone quote 600519 000001",
|
|
268
|
+
" antitone kline 600519 --days 20 --period 1d",
|
|
269
|
+
" antitone briefing --kind postmarket",
|
|
270
|
+
"",
|
|
271
|
+
"鉴权:环境变量 ANTITONE_API_KEY(形如 nhk_xxx.yyy)。",
|
|
272
|
+
" 密钥只从环境变量读 —— 不要写进命令行,避免落进对话记录。",
|
|
273
|
+
"",
|
|
274
|
+
].join("\n"));
|
|
275
|
+
return 0;
|
|
276
|
+
}
|
|
277
|
+
if (cmd === "tools") {
|
|
278
|
+
const wantJson = argv.includes("--json");
|
|
279
|
+
let client;
|
|
280
|
+
try {
|
|
281
|
+
client = new AntitoneClient(loadConfig());
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
client = undefined;
|
|
285
|
+
}
|
|
286
|
+
if (!client) {
|
|
287
|
+
process.stdout.write("需要 ANTITONE_API_KEY 才能列出工具参数(先设置环境变量)。\n");
|
|
288
|
+
process.stdout.write(`已知工具:${TOOL_NAMES.join(", ")}\n`);
|
|
289
|
+
return 1;
|
|
290
|
+
}
|
|
291
|
+
const tools = collectTools(client);
|
|
292
|
+
if (wantJson) {
|
|
293
|
+
process.stdout.write(JSON.stringify(tools.map((t) => ({ name: t.name, ...t.meta })), null, 2) + "\n");
|
|
294
|
+
return 0;
|
|
295
|
+
}
|
|
296
|
+
const aliasOf = {};
|
|
297
|
+
for (const [a, full] of Object.entries(TOOL_ALIASES))
|
|
298
|
+
(aliasOf[full] ??= []).push(a);
|
|
299
|
+
for (const t of tools) {
|
|
300
|
+
const shape = (t.meta.inputSchema ?? {});
|
|
301
|
+
const params = Object.keys(shape).map((k) => `--${k.replace(/_/g, "-")}`).join(" ");
|
|
302
|
+
const alias = aliasOf[t.name]?.join(" / ") ?? "";
|
|
303
|
+
process.stdout.write(`${t.name.padEnd(18)} ${params}\n`);
|
|
304
|
+
process.stdout.write(`${" ".repeat(18)} ${alias ? `[${alias}] ` : ""}${(t.meta.title ?? "")}\n`);
|
|
305
|
+
}
|
|
306
|
+
return 0;
|
|
307
|
+
}
|
|
308
|
+
if (cmd === "skill") {
|
|
309
|
+
const { flags } = parseArgv(argv.slice(1));
|
|
310
|
+
if (flags.has("install")) {
|
|
311
|
+
const dir = flags.get("dir");
|
|
312
|
+
installSkill(typeof dir === "string" ? dir : undefined);
|
|
313
|
+
return 0;
|
|
314
|
+
}
|
|
315
|
+
process.stdout.write(skillText());
|
|
316
|
+
if (!process.stdout.hasColors?.())
|
|
317
|
+
process.stdout.write("\n");
|
|
318
|
+
process.stdout.write("\n# 安装:antitone skill --install\n");
|
|
319
|
+
return 0;
|
|
320
|
+
}
|
|
321
|
+
/* 其余命令 = 工具名或短别名 */
|
|
322
|
+
const toolName = TOOL_ALIASES[cmd] ?? cmd;
|
|
323
|
+
const { positional, flags, json } = parseArgv(argv.slice(1));
|
|
324
|
+
let config;
|
|
325
|
+
try {
|
|
326
|
+
config = loadConfig();
|
|
327
|
+
}
|
|
328
|
+
catch (e) {
|
|
329
|
+
const msg = e instanceof ConfigError ? e.message : String(e);
|
|
330
|
+
process.stderr.write(`✗ ${msg}\n`);
|
|
331
|
+
process.stderr.write(" 设置:export ANTITONE_API_KEY=nhk_xxx.yyy\n");
|
|
332
|
+
return 2;
|
|
333
|
+
}
|
|
334
|
+
const client = new AntitoneClient(config);
|
|
335
|
+
const tools = collectTools(client);
|
|
336
|
+
const tool = tools.find((t) => t.name === toolName);
|
|
337
|
+
if (!tool) {
|
|
338
|
+
process.stderr.write(`✗ 未知命令「${cmd}」。\n 可用工具:${TOOL_NAMES.join(", ")}\n 短别名:${Object.keys(TOOL_ALIASES).join(", ")}\n`);
|
|
339
|
+
return 2;
|
|
340
|
+
}
|
|
341
|
+
let args;
|
|
342
|
+
try {
|
|
343
|
+
args = coerceArgs(tool, flags, positional);
|
|
344
|
+
}
|
|
345
|
+
catch (e) {
|
|
346
|
+
process.stderr.write(`✗ ${e.message}\n`);
|
|
347
|
+
return 2;
|
|
348
|
+
}
|
|
349
|
+
const ctl = new AbortController();
|
|
350
|
+
const run = await tool.handler(args, { signal: ctl.signal });
|
|
351
|
+
const out = renderResult(run, json);
|
|
352
|
+
const failed = run.isError === true;
|
|
353
|
+
process.stdout.write(out + "\n");
|
|
354
|
+
return failed ? 1 : 0;
|
|
355
|
+
}
|
|
356
|
+
/* 仅在作为 CLI 直接运行时才自执行(被 index.ts 复用时不抢控制权) */
|
|
357
|
+
const isCliEntry = (() => {
|
|
358
|
+
const entry = process.argv[1];
|
|
359
|
+
if (!entry)
|
|
360
|
+
return false;
|
|
361
|
+
return entry.endsWith("cli.js") || entry.endsWith("cli.ts") || entry.endsWith("antitone");
|
|
362
|
+
})();
|
|
363
|
+
if (isCliEntry) {
|
|
364
|
+
runCli(process.argv.slice(2))
|
|
365
|
+
.then((code) => process.exit(code))
|
|
366
|
+
.catch((e) => {
|
|
367
|
+
process.stderr.write(`✗ ${e instanceof Error ? e.message : String(e)}\n`);
|
|
368
|
+
process.exit(1);
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antitone HTTP 客户端:只做三件事 —— 拼请求(含鉴权头与计费头)、解析计费回执、规范化错误。
|
|
3
|
+
*
|
|
4
|
+
* 鉴权:Authorization: Bearer <nhk_xxx.yyy>
|
|
5
|
+
* User-Agent: antitone-mcp/0.1.0
|
|
6
|
+
* X-Request-Id: <随机>
|
|
7
|
+
* X-Antitone-Billing-Detail: 1 → 服务端在 body 追加 _billing 明细
|
|
8
|
+
* 注意:API Key 通道免 X-NS-SIG 签名(签名只用于桌面端 session_key 通道)。
|
|
9
|
+
*/
|
|
10
|
+
import { type AntitoneConfig } from "./config.js";
|
|
11
|
+
/** 每日免费额度快照(服务端 _billing.free_daily / X-Antitone-Free-*)。 */
|
|
12
|
+
export interface FreeDaily {
|
|
13
|
+
/** 每日上限(积分) */
|
|
14
|
+
limit: number;
|
|
15
|
+
/** 今日已用 */
|
|
16
|
+
used: number;
|
|
17
|
+
/** 今日剩余(这是"余额 0 也能继续调"的底气) */
|
|
18
|
+
remaining: number;
|
|
19
|
+
/** 剩余额度折合人民币 */
|
|
20
|
+
cny_remaining?: number;
|
|
21
|
+
/** 重置时间说明 */
|
|
22
|
+
resets?: string;
|
|
23
|
+
}
|
|
24
|
+
/** 计费回执:_billing(body)与 X-Antitone-*(响应头)合并后的形状。 */
|
|
25
|
+
export interface Billing {
|
|
26
|
+
/** 本次消耗积分(免费端点 = 0)。 */
|
|
27
|
+
credits?: number;
|
|
28
|
+
/** 当前余额(服务端 60 秒缓存)。注意:余额 0 ≠ 不能用,见 free_daily。 */
|
|
29
|
+
balance?: number;
|
|
30
|
+
/** 每日免费额度:不体现在 balance 里,但会自动抵扣,用不完当日作废。 */
|
|
31
|
+
free_daily?: FreeDaily;
|
|
32
|
+
/** 计费来源:rest | stream | webhook | ai。 */
|
|
33
|
+
source?: string;
|
|
34
|
+
/** 价目表版本(对账用)。 */
|
|
35
|
+
pricing_version?: number;
|
|
36
|
+
/** false = 已计费、待整点入账。 */
|
|
37
|
+
settled?: boolean;
|
|
38
|
+
/** 服务端返回的 _billing.breakdown 明细(base / volume / modifiers)。 */
|
|
39
|
+
breakdown?: unknown;
|
|
40
|
+
/** credits 的来源标记:'body' | 'header'。 */
|
|
41
|
+
credits_from?: "body" | "header";
|
|
42
|
+
/** 人话提示(余额 0 但免费额度尚有余额时给出,避免模型自行放弃调用)。 */
|
|
43
|
+
note?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface DataEnvelope<T> {
|
|
46
|
+
data: T;
|
|
47
|
+
billing?: Billing;
|
|
48
|
+
/** 数据时刻(ISO8601)。 */
|
|
49
|
+
asOf: string;
|
|
50
|
+
/** as_of 的来源:payload 字段名 / header.date / request_time。 */
|
|
51
|
+
asOfSource: string;
|
|
52
|
+
stale: boolean;
|
|
53
|
+
staleAfterMs: number;
|
|
54
|
+
requestId: string;
|
|
55
|
+
httpStatus: number;
|
|
56
|
+
durationMs: number;
|
|
57
|
+
endpoint: string;
|
|
58
|
+
}
|
|
59
|
+
export interface RequestOptions {
|
|
60
|
+
/** query 参数(undefined / null 自动剔除)。 */
|
|
61
|
+
query?: Record<string, unknown>;
|
|
62
|
+
/** 判定 stale 的阈值(毫秒),由工具按数据性质给出。 */
|
|
63
|
+
staleAfterMs: number;
|
|
64
|
+
/** JSON body(POST)。 */
|
|
65
|
+
body?: unknown;
|
|
66
|
+
/** 上游取消信号(MCP 请求中断)。 */
|
|
67
|
+
signal?: AbortSignal;
|
|
68
|
+
}
|
|
69
|
+
/** 从 payload 中挖掘数据时刻;挖不到就用响应头 Date,再退到请求时刻。 */
|
|
70
|
+
export declare function extractAsOf(data: unknown, headerDate: string | null | undefined, now?: number): {
|
|
71
|
+
asOf: string;
|
|
72
|
+
asOfSource: string;
|
|
73
|
+
};
|
|
74
|
+
/** 显式 stale 标记(服务端说 stale 时不能反着报 false)。 */
|
|
75
|
+
export declare function extractExplicitStale(data: unknown): boolean | undefined;
|
|
76
|
+
/** body `_billing` + 响应头 X-Antitone-* → Billing。body 优先(含 breakdown)。 */
|
|
77
|
+
export declare function parseBilling(body: unknown, headers: Headers): Billing | undefined;
|
|
78
|
+
/** 去掉 body 里的 _billing(已提升到 billing 字段,避免重复占预算)。 */
|
|
79
|
+
export declare function stripBilling(body: unknown): unknown;
|
|
80
|
+
export declare function buildQuery(query: Record<string, unknown> | undefined): string;
|
|
81
|
+
export declare class AntitoneClient {
|
|
82
|
+
private readonly config;
|
|
83
|
+
private readonly fetchImpl;
|
|
84
|
+
constructor(config: AntitoneConfig, fetchImpl?: typeof fetch);
|
|
85
|
+
get baseUrl(): string;
|
|
86
|
+
get timeoutMs(): number;
|
|
87
|
+
get<T>(path: string, options: RequestOptions): Promise<DataEnvelope<T>>;
|
|
88
|
+
post<T>(path: string, options: RequestOptions): Promise<DataEnvelope<T>>;
|
|
89
|
+
private request;
|
|
90
|
+
}
|
|
91
|
+
export interface MergedEnvelopes {
|
|
92
|
+
data: Record<string, unknown>;
|
|
93
|
+
billing?: Billing;
|
|
94
|
+
asOf: string;
|
|
95
|
+
asOfSource: string;
|
|
96
|
+
stale: boolean;
|
|
97
|
+
staleAfterMs: number;
|
|
98
|
+
requestId: string;
|
|
99
|
+
httpStatus: number;
|
|
100
|
+
durationMs: number;
|
|
101
|
+
endpoints: string[];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 合并多个端点的结果(market_overview / get_usage / get_entity?include_financials)。
|
|
105
|
+
* 计费取各次之和;as_of 取最早(对 stale 判定最保守);stale 取或。
|
|
106
|
+
*/
|
|
107
|
+
export declare function mergeEnvelopes(entries: Array<[string, DataEnvelope<unknown>]>): MergedEnvelopes;
|
|
108
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|