@lumenkey/cli 0.2.2 → 0.3.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.
Files changed (98) hide show
  1. package/README.md +34 -5
  2. package/dist/cli/copied.d.ts +19 -36
  3. package/dist/cli/copied.d.ts.map +1 -1
  4. package/dist/cli/copied.js +159 -277
  5. package/dist/cli/copied.js.map +1 -1
  6. package/dist/cli/index.d.ts.map +1 -1
  7. package/dist/cli/index.js +88 -137
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/cli/render.d.ts +11 -0
  10. package/dist/cli/render.d.ts.map +1 -0
  11. package/dist/cli/render.js +35 -0
  12. package/dist/cli/render.js.map +1 -0
  13. package/dist/core/atomic-config-file.d.ts +23 -1
  14. package/dist/core/atomic-config-file.d.ts.map +1 -1
  15. package/dist/core/atomic-config-file.js +70 -5
  16. package/dist/core/atomic-config-file.js.map +1 -1
  17. package/dist/core/chat.d.ts +13 -0
  18. package/dist/core/chat.d.ts.map +1 -0
  19. package/dist/core/chat.js +31 -0
  20. package/dist/core/chat.js.map +1 -0
  21. package/dist/core/client.d.ts +20 -1
  22. package/dist/core/client.d.ts.map +1 -1
  23. package/dist/core/client.js +52 -11
  24. package/dist/core/client.js.map +1 -1
  25. package/dist/core/config-dir.d.ts.map +1 -1
  26. package/dist/core/config-dir.js +3 -4
  27. package/dist/core/config-dir.js.map +1 -1
  28. package/dist/core/config-error.d.ts +14 -0
  29. package/dist/core/config-error.d.ts.map +1 -0
  30. package/dist/core/config-error.js +20 -0
  31. package/dist/core/config-error.js.map +1 -0
  32. package/dist/core/config.d.ts +1 -5
  33. package/dist/core/config.d.ts.map +1 -1
  34. package/dist/core/config.js +8 -36
  35. package/dist/core/config.js.map +1 -1
  36. package/dist/core/credit-cap.d.ts +5 -0
  37. package/dist/core/credit-cap.d.ts.map +1 -0
  38. package/dist/core/credit-cap.js +15 -0
  39. package/dist/core/credit-cap.js.map +1 -0
  40. package/dist/core/download.d.ts.map +1 -1
  41. package/dist/core/download.js +109 -13
  42. package/dist/core/download.js.map +1 -1
  43. package/dist/core/error-result.d.ts +4 -13
  44. package/dist/core/error-result.d.ts.map +1 -1
  45. package/dist/core/error-result.js +4 -22
  46. package/dist/core/error-result.js.map +1 -1
  47. package/dist/core/generation-input.d.ts +33 -0
  48. package/dist/core/generation-input.d.ts.map +1 -0
  49. package/dist/core/generation-input.js +145 -0
  50. package/dist/core/generation-input.js.map +1 -0
  51. package/dist/core/generation-result.d.ts +17 -13
  52. package/dist/core/generation-result.d.ts.map +1 -1
  53. package/dist/core/generation-result.js +4 -5
  54. package/dist/core/generation-result.js.map +1 -1
  55. package/dist/core/generation.d.ts +124 -0
  56. package/dist/core/generation.d.ts.map +1 -0
  57. package/dist/core/generation.js +316 -0
  58. package/dist/core/generation.js.map +1 -0
  59. package/dist/core/locale.d.ts +19 -0
  60. package/dist/core/locale.d.ts.map +1 -1
  61. package/dist/core/locale.js +73 -4
  62. package/dist/core/locale.js.map +1 -1
  63. package/dist/core/outcome.d.ts +128 -0
  64. package/dist/core/outcome.d.ts.map +1 -0
  65. package/dist/core/outcome.js +101 -0
  66. package/dist/core/outcome.js.map +1 -0
  67. package/dist/core/output-path.d.ts +10 -0
  68. package/dist/core/output-path.d.ts.map +1 -0
  69. package/dist/core/output-path.js +15 -0
  70. package/dist/core/output-path.js.map +1 -0
  71. package/dist/core/params.d.ts +68 -0
  72. package/dist/core/params.d.ts.map +1 -0
  73. package/dist/core/params.js +227 -0
  74. package/dist/core/params.js.map +1 -0
  75. package/dist/core/poller.d.ts +7 -1
  76. package/dist/core/poller.d.ts.map +1 -1
  77. package/dist/core/poller.js +20 -8
  78. package/dist/core/poller.js.map +1 -1
  79. package/dist/core/profiles.d.ts +4 -2
  80. package/dist/core/profiles.d.ts.map +1 -1
  81. package/dist/core/profiles.js +20 -9
  82. package/dist/core/profiles.js.map +1 -1
  83. package/dist/core/submission-journal.d.ts +106 -0
  84. package/dist/core/submission-journal.d.ts.map +1 -0
  85. package/dist/core/submission-journal.js +329 -0
  86. package/dist/core/submission-journal.js.map +1 -0
  87. package/dist/index.d.ts +3 -0
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +3 -0
  90. package/dist/index.js.map +1 -1
  91. package/dist/mcp/render.d.ts +11 -0
  92. package/dist/mcp/render.d.ts.map +1 -0
  93. package/dist/mcp/render.js +17 -0
  94. package/dist/mcp/render.js.map +1 -0
  95. package/dist/mcp/server.d.ts.map +1 -1
  96. package/dist/mcp/server.js +95 -337
  97. package/dist/mcp/server.js.map +1 -1
  98. package/package.json +3 -2
@@ -1,58 +1,63 @@
1
- import crypto from 'node:crypto';
2
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
3
  import { z } from 'zod';
5
4
  import { loadConfig } from '../core/config.js';
6
- import { assertSupportedLang, LumenKeyClient, LumenKeyError, parseChatBilling } from '../core/client.js';
7
- import { blankPromptSentence, idempotencyKeyMessages, isBlankPrompt, jobStatusText, missingModelSentence, ui, waitTimeoutDetail } from '../core/locale.js';
8
- import { pollJob, assertJobResult } from '../core/poller.js';
9
- import { chatText, errorResult } from '../core/error-result.js';
10
- import { generationResult } from '../core/generation-result.js';
5
+ import { assertIdempotencyKey, assertSupportedLang, LumenKeyClient, LumenKeyError } from '../core/client.js';
6
+ import { jobStatusText, missingModelSentence, spendingCapSentence, ui } from '../core/locale.js';
11
7
  import { packageVersion } from '../core/version.js';
12
8
  import { explainModel } from '../core/explain.js';
13
- import { waitForJob } from '../core/wait.js';
14
- import { buildGenerationInput, quoteCreditLimitError } from '../cli/copied.js';
15
- import { validateKnownEnums } from '../core/set-values.js';
16
- function errorText(error) {
17
- return `${ui('Error: ', '错误:')}${error instanceof Error ? error.message : ui('Request failed', '请求失败')}`;
9
+ import { readJob, resumeSubmission, runGeneration, waitJob } from '../core/generation.js';
10
+ import { runChat } from '../core/chat.js';
11
+ import { failure } from '../core/outcome.js';
12
+ import { chatArgs, chatParams, generationArgs, imageParams, nothingSentIfConfirmed, resumeArgs, resumeParams, videoParams, waitArgs, waitParams, zodShape } from '../core/params.js';
13
+ import { dataResult, toolResult } from './render.js';
14
+ function log(line) {
15
+ process.stderr.write(`[LumenKey MCP] ${line}\n`);
18
16
  }
19
- function jobToolResult(detail) {
20
- let failure;
21
- try {
22
- assertJobResult(detail, detail.status === 'succeeded');
23
- }
24
- catch (error) {
25
- failure = error;
26
- }
27
- return { ...(failure ? { isError: true } : {}), content: [{ type: 'text', text: JSON.stringify({ ...detail,
28
- ...(failure ? { failureMessage: errorText(failure) } : {}),
29
- }) }] };
30
- }
31
- function requiredPrompt(description) {
32
- return z.string().superRefine((value, ctx) => {
33
- if (isBlankPrompt(value)) {
34
- ctx.addIssue({ code: z.ZodIssueCode.custom, message: blankPromptSentence('field') });
35
- }
36
- }).describe(description);
17
+ /** MCP view of generation progress; the same core events the CLI renders, on stderr. */
18
+ function mcpGenerationEvents() {
19
+ const nounOf = (kind) => kind === 'video' ? ui('video', '视频') : ui('image', '图片');
20
+ return event => {
21
+ switch (event.type) {
22
+ case 'quoting': return log(ui(`Quoting ${nounOf(event.kind)} generation for ${event.modelId}...`, `正在获取 ${event.modelId} 的${nounOf(event.kind)}生成报价...`));
23
+ case 'submitting': return log(event.resubmit
24
+ ? ui(`Re-sending an earlier unconfirmed submission (idempotency key ${event.idempotencyKey}, quote ${event.quoteId}, ${event.credits} credits) instead of creating a new job...`, `正在重发一次之前结果未确认的提交(幂等键 ${event.idempotencyKey},报价编号 ${event.quoteId},${event.credits} 算力点),不会新建任务...`)
25
+ : ui(`Submitting job with quote ${event.quoteId} (${event.credits} credits)...`, `正在提交任务,报价编号:${event.quoteId}(${event.credits} 算力点)...`));
26
+ case 'job_created': return log(ui(`Job created: ${event.jobId} (idempotency key ${event.idempotencyKey}, quote ${event.quoteId})`, `任务已创建:${event.jobId}(幂等键 ${event.idempotencyKey},报价编号 ${event.quoteId})`));
27
+ case 'polling': return log(ui(`Polling job ${event.jobId}...`, `正在查询任务 ${event.jobId} 的进度...`));
28
+ case 'progress': return log(ui(`Job ${event.detail.jobId} status: ${event.detail.status}`, `任务 ${event.detail.jobId} 状态:${jobStatusText(event.detail.status)}`));
29
+ case 'downloading': return log(ui(`Downloading ${nounOf(event.kind)}...`, `正在下载${nounOf(event.kind)}...`));
30
+ case 'notice': return log(ui(`Note: ${event.text}`, `注意:${event.text}`));
31
+ default: return;
32
+ }
33
+ };
37
34
  }
38
- function idempotencyKeyField(description) {
39
- const text = idempotencyKeyMessages();
40
- const field = z.string().superRefine((value, ctx) => {
41
- if (!value.trim()) {
42
- ctx.addIssue({ code: z.ZodIssueCode.custom, message: text.required });
43
- return;
44
- }
45
- if (/[\r\n]/.test(value)) {
46
- ctx.addIssue({ code: z.ZodIssueCode.custom, message: text.breaks });
35
+ /** Zod issues become the same stable codes core raises for the same condition; wording names MCP fields only. */
36
+ function inputError(toolName, issues, args) {
37
+ const record = args && typeof args === 'object' ? args : {};
38
+ for (const issue of issues) {
39
+ const field = issue.path[0];
40
+ if (field === 'idempotencyKey') {
41
+ try {
42
+ assertIdempotencyKey(record.idempotencyKey);
43
+ }
44
+ catch (error) {
45
+ if (error instanceof LumenKeyError)
46
+ return error;
47
+ }
47
48
  }
48
- else if (Buffer.byteLength(value) > 128) {
49
- ctx.addIssue({ code: z.ZodIssueCode.custom, message: text.max });
49
+ if (field === 'maxCredits') {
50
+ return new LumenKeyError(toolName === 'lumenkey_chat' ? 'CHAT_CREDIT_LIMIT_INVALID' : 'CREDIT_LIMIT_INVALID', undefined, undefined, spendingCapSentence('maxCredits'));
50
51
  }
51
- else if (!/^[\x21-\x7E]+$/.test(value)) {
52
- ctx.addIssue({ code: z.ZodIssueCode.custom, message: ui('The idempotency key must be visible ASCII without spaces.', '幂等键只能是不含空格的可见 ASCII 字符。') });
52
+ if (field === 'intervalMs' || field === 'timeoutMs')
53
+ return new LumenKeyError('WAIT_OPTIONS_INVALID');
54
+ if (field === 'duration')
55
+ return new LumenKeyError('VIDEO_DURATION_INVALID');
56
+ if (issue.code === 'unrecognized_keys') {
57
+ return new LumenKeyError('INPUT_INVALID', undefined, undefined, ui(`Unknown argument: ${issue.keys.join(', ')}.`, `未知参数:${issue.keys.join('、')}。`));
53
58
  }
54
- }).optional();
55
- return description ? field.describe(description) : field;
59
+ }
60
+ return new LumenKeyError('INPUT_INVALID', undefined, undefined, issues.map(issue => `${issue.path.join('.') || 'arguments'}: ${issue.message}`).join(' '));
56
61
  }
57
62
  export function createMcpServer() {
58
63
  assertSupportedLang();
@@ -60,316 +65,69 @@ export function createMcpServer() {
60
65
  name: 'lumenkey-mcp-server',
61
66
  version: packageVersion,
62
67
  });
63
- const config = loadConfig();
64
- const client = new LumenKeyClient(config);
65
- function tool(name, description, schema, handler) {
66
- server.registerTool(name, { description, inputSchema: z.object(schema).strict() }, handler);
67
- }
68
+ // Configuration is read once, on the first call that needs it, and then cached for the
69
+ // process (restart the server after editing config.json). Reading it lazily lets a broken
70
+ // local configuration surface as the shared failure envelope instead of a startup crash.
71
+ let cached;
72
+ const api = () => (cached ??= new LumenKeyClient(loadConfig()));
68
73
  /**
69
- * Tool: List available models
74
+ * Register one tool. tools/list still advertises the strict schema, but validation runs here so
75
+ * that an invalid argument comes back in the shared envelope instead of the SDK's -32602 text.
70
76
  */
77
+ function tool(name, description, shape, handler) {
78
+ const strict = z.object(shape).strict();
79
+ // Same definition for schema generation; parsing is deferred to the handler below.
80
+ const advertised = Object.create(strict);
81
+ advertised.safeParseAsync = async (value) => ({ success: true, data: value });
82
+ server.registerTool(name, { description, inputSchema: advertised }, async (args) => {
83
+ const parsed = strict.safeParse(args ?? {});
84
+ if (!parsed.success)
85
+ return toolResult(failure(nothingSentIfConfirmed(inputError(name, parsed.error.issues, args), args)));
86
+ try {
87
+ return await handler(parsed.data);
88
+ }
89
+ catch (error) {
90
+ return toolResult(failure(error));
91
+ }
92
+ });
93
+ }
71
94
  tool('lumenkey_list_models', ui('List all available AI models (video, image, text, audio) from LumenKey catalog with schemas and pricing', '读取光钥模型目录,包含视频、图片、文本、音频的参数结构与价格。'), {
72
95
  type: z.enum(['video', 'image', 'text', 'audio']).optional().describe(ui('Filter models by type', '按模型类型筛选')),
73
96
  }, async ({ type }) => {
74
- try {
75
- const models = await client.listModels(type);
76
- return {
77
- content: [
78
- {
79
- type: 'text',
80
- text: JSON.stringify({
81
- count: models.length,
82
- models,
83
- }, null, 2),
84
- },
85
- ],
86
- };
87
- }
88
- catch (err) {
89
- return {
90
- isError: true,
91
- content: [{ type: 'text', text: errorText(err) }],
92
- };
93
- }
97
+ const models = await api().listModels(type);
98
+ return dataResult({ count: models.length, models });
94
99
  });
95
- /**
96
- * Tool: Generate Video (Seedance 2.0, Wan 3.0, etc.)
97
- */
98
- tool('lumenkey_generate_video', ui('Quote a LumenKey video. Nothing is submitted until confirm is true.', '获取光钥视频报价;只有 confirm 为 true 时才提交计费生成。'), {
99
- modelId: z.string().describe(ui('Model ID (e.g. doubao-seedance-2.0, wan3.0-video)', '模型 ID(例如 doubao-seedance-2.0、wan3.0-video)')),
100
- prompt: requiredPrompt(ui('Text description of the video to generate', '要生成的视频的文字描述')),
101
- imageUrl: z.string().optional().describe(ui('Optional source image URL for image-to-video', '可选的图生视频源图片 URL')),
102
- duration: z.number().optional().describe(ui('Video duration in seconds (e.g. 5, 10)', '视频时长,单位为秒(例如 5、10)')),
103
- resolution: z.string().optional().describe(ui('Resolution declared by the model schema', '模型参数结构声明的分辨率')),
104
- ratio: z.string().optional().describe(ui('Aspect ratio declared by the model schema', '模型参数结构声明的宽高比')),
105
- set: z.array(z.string()).optional().describe(ui('Extra key=value pairs declared by the model schema', '模型参数结构声明的额外 key=value 参数')),
106
- projectId: z.string().optional().describe(ui('Leave empty. The client fills this.', '请留空,由客户端填入。')),
107
- confirm: z.boolean().optional().describe(ui('Explicitly authorize billable submission; omitted means quote only', '显式授权提交计费生成;省略时仅获取报价')),
108
- idempotencyKey: idempotencyKeyField(ui('Optional. Generated when omitted. Do not ask the user for it', '可选,省略时自动生成,无需向用户索取')),
109
- maxCredits: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).optional().describe(ui('Maximum accepted quote credits', '可接受的报价算力点上限')),
110
- downloadPath: z.string().optional().describe(ui('Local file path to save the generated MP4 video', '保存生成 MP4 视频的本地文件路径')),
111
- intervalMs: z.number().positive().finite().max(2_147_483_647).optional().describe(ui('Polling interval in milliseconds; defaults to 5000', '查询间隔,单位为毫秒;默认 5000')),
112
- timeoutMs: z.number().nonnegative().finite().max(Number.MAX_SAFE_INTEGER - Date.now()).optional().describe(ui('Wait timeout in milliseconds; defaults to 1800000. Does not cancel the task', '等待超时,单位为毫秒;默认 1800000,超时不取消任务')),
113
- }, async ({ modelId, prompt, imageUrl, duration, resolution, ratio, set, projectId, downloadPath, confirm, idempotencyKey, maxCredits, intervalMs, timeoutMs }) => {
114
- let createdJob;
115
- try {
116
- const built = await buildGenerationInput(modelId, {
117
- prompt,
118
- duration,
119
- resolution,
120
- ratio,
121
- image: imageUrl,
122
- }, set || []);
123
- const input = built.input;
124
- validateKnownEnums(built.properties, input);
125
- process.stderr.write(`[LumenKey MCP] ${ui(`Quoting video generation for ${modelId}...`, `正在获取 ${modelId} 的视频生成报价...`)}\n`);
126
- // Step 1: Quote
127
- const quote = await client.getQuote({ modelId, input });
128
- if (maxCredits !== undefined && quote.credits > maxCredits)
129
- throw quoteCreditLimitError('maxCredits');
130
- if (!confirm)
131
- return { content: [{ type: 'text', text: JSON.stringify({ quote, requiresConfirmation: true, submitted: false }) }] };
132
- const key = idempotencyKey ?? crypto.randomUUID();
133
- // Step 2: Create Job
134
- process.stderr.write(`[LumenKey MCP] ${ui(`Submitting job with quote ${quote.quoteId} (${quote.credits} credits)...`, `正在提交任务,报价编号:${quote.quoteId}(${quote.credits} 算力点)...`)}\n`);
135
- const job = await client.createJob({
136
- quoteId: quote.quoteId,
137
- projectId,
138
- input,
139
- }, key);
140
- createdJob = { jobId: job.jobId, idempotencyKey: key };
141
- // Step 3: Poll
142
- process.stderr.write(`[LumenKey MCP] ${ui(`Polling job ${job.jobId}...`, `正在查询任务 ${job.jobId} 的进度...`)}\n`);
143
- const detail = await pollJob(client, job.jobId, {
144
- initialIntervalMs: intervalMs, timeoutMs,
145
- onProgress: (d) => {
146
- process.stderr.write(`[LumenKey MCP] ${ui(`Job ${job.jobId} status: ${d.status}`, `任务 ${job.jobId} 状态:${jobStatusText(d.status)}`)}\n`);
147
- },
148
- });
149
- if (downloadPath)
150
- process.stderr.write(`[LumenKey MCP] ${ui('Downloading video...', '正在下载视频...')}\n`);
151
- const result = await generationResult(detail, key, downloadPath);
152
- return {
153
- content: [
154
- {
155
- type: 'text',
156
- text: JSON.stringify({
157
- ...result,
158
- videoUrl: result.urls[0],
159
- }, null, 2),
160
- },
161
- ],
162
- };
163
- }
164
- catch (err) {
165
- const message = errorText(err);
166
- return {
167
- isError: true,
168
- content: [{ type: 'text', text: createdJob ? JSON.stringify({ ...errorResult(err), error: message, ...createdJob }) : message }],
169
- };
170
- }
171
- });
172
- /**
173
- * Tool: Generate Image
174
- */
175
- tool('lumenkey_generate_image', ui('Quote a LumenKey image. Nothing is submitted until confirm is true.', '获取光钥图片报价;只有 confirm 为 true 时才提交计费生成。'), {
176
- modelId: z.string().describe(ui('Model ID (e.g. flux-2-pro)', '模型 ID(例如 flux-2-pro)')),
177
- prompt: requiredPrompt(ui('Prompt for image generation', '图片生成提示词')),
178
- imageUrl: z.string().optional().describe(ui('Reference image URL, only when declared in the model inputSchema', '参考图片 URL,仅用于 inputSchema 声明该参数的模型')),
179
- resolution: z.string().optional().describe(ui('Model-specific resolution (e.g. 2k or 4k); omitted uses gateway defaults', '模型支持的分辨率(例如 2k、4k);省略时使用网关默认值')),
180
- ratio: z.string().optional().describe(ui('Model-specific aspect ratio; omitted uses gateway defaults', '模型支持的宽高比;省略时使用网关默认值')),
181
- size: z.string().optional().describe(ui('Legacy size, only for models whose inputSchema explicitly declares size', '旧版尺寸参数,仅用于 inputSchema 显式声明 size 的模型')),
182
- projectId: z.string().optional().describe(ui('Leave empty. The client fills this.', '请留空,由客户端填入。')),
183
- confirm: z.boolean().optional().describe(ui('Explicitly authorize billable submission; omitted means quote only', '显式授权提交计费生成;省略时仅获取报价')),
184
- idempotencyKey: idempotencyKeyField(ui('Optional. Generated when omitted. Do not ask the user for it', '可选,省略时自动生成,无需向用户索取')),
185
- maxCredits: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).optional().describe(ui('Maximum accepted quote credits', '可接受的报价算力点上限')),
186
- set: z.array(z.string()).optional().describe(ui('Extra key=value pairs', '额外的 key=value 参数')),
187
- downloadPath: z.string().optional().describe(ui('Local file path to save the generated image', '保存生成图片的本地文件路径')),
188
- intervalMs: z.number().positive().finite().max(2_147_483_647).optional().describe(ui('Polling interval in milliseconds; defaults to 5000', '查询间隔,单位为毫秒;默认 5000')),
189
- timeoutMs: z.number().nonnegative().finite().max(Number.MAX_SAFE_INTEGER - Date.now()).optional().describe(ui('Wait timeout in milliseconds; defaults to 1800000. Does not cancel the task', '等待超时,单位为毫秒;默认 1800000,超时不取消任务')),
190
- }, async ({ modelId, prompt, imageUrl, resolution, ratio, size, set, downloadPath, projectId, confirm, idempotencyKey, maxCredits, intervalMs, timeoutMs }) => {
191
- let createdJob;
192
- try {
193
- const built = await buildGenerationInput(modelId, {
194
- prompt,
195
- image: imageUrl,
196
- resolution,
197
- ratio,
198
- size,
199
- }, set ?? []);
200
- const input = built.input;
201
- validateKnownEnums(built.properties, input);
202
- process.stderr.write(`[LumenKey MCP] ${ui(`Quoting image generation for ${modelId}...`, `正在获取 ${modelId} 的图片生成报价...`)}\n`);
203
- const quote = await client.getQuote({ modelId, input });
204
- if (maxCredits !== undefined && quote.credits > maxCredits)
205
- throw quoteCreditLimitError('maxCredits');
206
- if (!confirm)
207
- return { content: [{ type: 'text', text: JSON.stringify({ quote, requiresConfirmation: true, submitted: false }) }] };
208
- const key = idempotencyKey ?? crypto.randomUUID();
209
- process.stderr.write(`[LumenKey MCP] ${ui('Submitting generation job...', '正在提交生成任务...')}\n`);
210
- const job = await client.createJob({ quoteId: quote.quoteId, input, projectId }, key);
211
- createdJob = { jobId: job.jobId, idempotencyKey: key };
212
- process.stderr.write(`[LumenKey MCP] ${ui(`Polling job ${job.jobId}...`, `正在查询任务 ${job.jobId} 的进度...`)}\n`);
213
- const detail = await pollJob(client, job.jobId, { initialIntervalMs: intervalMs, timeoutMs,
214
- onProgress: row => process.stderr.write(`[LumenKey MCP] ${ui('Status: ', '状态:')}${jobStatusText(row.status)}\n`),
215
- });
216
- const result = await generationResult(detail, key, downloadPath);
217
- return {
218
- content: [
219
- {
220
- type: 'text',
221
- text: JSON.stringify({
222
- ...result,
223
- imageUrl: result.urls[0],
224
- }, null, 2),
225
- },
226
- ],
227
- };
228
- }
229
- catch (err) {
230
- const message = errorText(err);
231
- return {
232
- isError: true,
233
- content: [{ type: 'text', text: createdJob ? JSON.stringify({ ...errorResult(err), error: message, ...createdJob }) : message }],
234
- };
235
- }
236
- });
237
- /**
238
- * Tool: Query Job Status
239
- */
240
- tool('lumenkey_query_job', ui('Query the status of an asynchronous generation task by its jobId', '按任务 ID 查询已有异步生成任务的状态。'), {
241
- jobId: z.string().describe(ui('The task ID to query', '要查询的任务 ID')),
242
- }, async ({ jobId }) => {
243
- try {
244
- const detail = await client.getJob(jobId);
245
- return jobToolResult(detail);
246
- }
247
- catch (err) {
248
- return {
249
- isError: true,
250
- content: [{ type: 'text', text: errorText(err) }],
251
- };
252
- }
253
- });
254
- /**
255
- * Tool: Check Account Balance
256
- */
257
- tool('lumenkey_check_balance', ui('Query current LumenKey account credits balance (available credits, reserved credits, and updatedAt timestamp)', '查询光钥账户的可用算力点、冻结算力点和更新时间。'), {}, async () => {
258
- try {
259
- const balance = await client.getBalance();
260
- return {
261
- content: [
262
- {
263
- type: 'text',
264
- text: JSON.stringify(balance, null, 2),
265
- },
266
- ],
267
- };
268
- }
269
- catch (err) {
270
- return {
271
- isError: true,
272
- content: [{ type: 'text', text: errorText(err) }],
273
- };
274
- }
275
- });
276
- /**
277
- * Tool: Chat Completion & Reasoning
278
- */
279
- tool('lumenkey_chat', ui('Run billable LLM inference. Every successful call may incur credits; reuse idempotencyKey only for an identical request.', '发起计费文本推理;成功调用可能消耗算力点,仅为同一次相同请求复用幂等键。'), {
280
- modelId: z.string().default('qwen3.7-flash').describe(ui('Model ID (e.g. qwen3.7-flash, qwen3.8-max, grok-4.6)', '模型 ID(例如 qwen3.7-flash、qwen3.8-max、grok-4.6)')),
281
- prompt: requiredPrompt(ui('User message/prompt to send to the model', '发送给模型的用户消息或提示词')),
282
- systemPrompt: z.string().optional().describe(ui('Optional system instruction', '可选的系统指令')),
283
- maxCredits: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).optional().describe(ui('Reject before inference if the required reservation exceeds this spending cap', '所需预授权超过此算力点上限时,在推理前拒绝请求')),
284
- idempotencyKey: idempotencyKeyField(ui('Reuse only for an identical request', '仅为同一次相同请求复用')),
285
- }, async ({ modelId, prompt, systemPrompt, idempotencyKey, maxCredits }) => {
286
- try {
287
- const messages = [];
288
- if (systemPrompt) {
289
- messages.push({ role: 'system', content: systemPrompt });
290
- }
291
- messages.push({ role: 'user', content: prompt });
292
- const res = await client.createChatCompletion({
293
- model: modelId,
294
- messages,
295
- ...(maxCredits === undefined ? {} : { max_credits: maxCredits }),
296
- }, idempotencyKey);
297
- const answer = chatText(res);
298
- return {
299
- content: [
300
- { type: 'text', text: typeof answer === 'string' ? answer : '' },
301
- {
302
- type: 'text',
303
- text: JSON.stringify({
304
- modelId: typeof res?.model === 'string' ? res.model : modelId,
305
- usage: res?.usage ?? null,
306
- billing: parseChatBilling(res?.billing) ?? null,
307
- }),
308
- },
309
- ],
310
- };
311
- }
312
- catch (err) {
313
- return {
314
- isError: true,
315
- content: [{ type: 'text', text: errorText(err) }],
316
- };
317
- }
100
+ tool('lumenkey_generate_video', ui('Quote a LumenKey video. Omitted scalar catalog defaults are explicitly sent in input. Nothing is submitted until confirm is true. Conflicting parameter aliases are rejected locally.', '获取光钥视频报价;未提供的目录标量默认值会显式写入 input;只有 confirm 为 true 时才提交计费生成。参数别名冲突在本地拒绝。'), zodShape(videoParams), async (args) => toolResult(await runGeneration(api(), { ...generationArgs('video', args, 'mcp'), onEvent: mcpGenerationEvents() })));
101
+ tool('lumenkey_generate_image', ui('Quote a LumenKey image. Omitted scalar catalog defaults are explicitly sent in input. Nothing is submitted until confirm is true. Conflicting parameter aliases are rejected locally.', '获取光钥图片报价;未提供的目录标量默认值会显式写入 input;只有 confirm 为 true 时才提交计费生成。参数别名冲突在本地拒绝。'), zodShape(imageParams), async (args) => toolResult(await runGeneration(api(), { ...generationArgs('image', args, 'mcp'), onEvent: mcpGenerationEvents() })));
102
+ tool('lumenkey_query_job', ui('Query the status of an asynchronous generation task by its jobId', '按任务 ID 查询已有异步生成任务的状态。'), { jobId: z.string().describe(ui('The task ID to query', '要查询的任务 ID')) }, async ({ jobId }) => toolResult(await readJob(api(), jobId)));
103
+ tool('lumenkey_check_balance', ui('Query current LumenKey account credits balance (available credits, reserved credits, and updatedAt timestamp)', '查询光钥账户的可用算力点、冻结算力点和更新时间。'), {}, async () => dataResult(await api().getBalance()));
104
+ tool('lumenkey_chat', ui('Run billable LLM inference. Every successful call may incur credits; reuse idempotencyKey only for an identical request.', '发起计费文本推理;成功调用可能消耗算力点,仅为同一次相同请求复用幂等键。'), zodShape(chatParams), async (args) => {
105
+ const outcome = await runChat(api(), chatArgs(args, 'mcp'));
106
+ return toolResult(outcome, outcome.ok ? outcome.text : undefined);
318
107
  });
319
108
  tool('lumenkey_explain_model', ui('Explain one model: its parameters, which are required, and which values are allowed.', '说明指定模型的参数、必填字段与允许的值。'), {
320
109
  modelId: z.string().describe(ui('The model ID to explain', '要解释的模型 ID')),
321
110
  }, async ({ modelId }) => {
322
- try {
323
- const model = (await client.listModels()).find((item) => item.id === modelId);
324
- if (!model)
325
- throw new LumenKeyError('MODEL_NOT_IN_CATALOG', undefined, undefined, missingModelSentence(modelId));
326
- return { content: [{ type: 'text', text: JSON.stringify(explainModel(model)) }] };
327
- }
328
- catch (err) {
329
- return { isError: true, content: [{ type: 'text', text: errorText(err) }] };
330
- }
111
+ const model = (await api().listModels()).find((item) => item.id === modelId);
112
+ if (!model)
113
+ throw new LumenKeyError('MODEL_NOT_IN_CATALOG', undefined, undefined, missingModelSentence(modelId));
114
+ return dataResult(explainModel(model));
331
115
  });
332
116
  tool('lumenkey_tasks_progress', ui('Read one existing generation job', '读取一条已有生成任务的进度。'), {
333
117
  jobId: z.string().describe(ui('The task ID to query', '要查询的任务 ID')),
334
- }, async ({ jobId }) => {
335
- try {
336
- const detail = await client.getJob(jobId);
337
- return jobToolResult(detail);
338
- }
339
- catch (err) {
340
- return { isError: true, content: [{ type: 'text', text: errorText(err) }] };
341
- }
342
- });
118
+ }, async ({ jobId }) => toolResult(await readJob(api(), jobId)));
343
119
  tool('lumenkey_tasks_wait', ui('Wait for an existing job without creating one', '等待已有生成任务,不创建新任务。'), {
344
120
  jobId: z.string().describe(ui('The existing task ID to wait for', '要等待的已有任务 ID')),
345
- intervalMs: z.number().positive().finite().max(2_147_483_647).optional().describe(ui('Polling interval in milliseconds; defaults to 5000', '查询间隔,单位为毫秒;默认 5000')),
346
- timeoutMs: z.number().nonnegative().finite().optional().describe(ui('Wait timeout in milliseconds; defaults to 1800000. Does not cancel the task', '等待超时,单位为毫秒;默认 1800000,超时不取消任务')),
347
- }, async ({ jobId, intervalMs, timeoutMs }) => {
348
- try {
349
- const detail = await waitForJob(client, jobId, { intervalMs, timeoutMs });
350
- assertJobResult(detail, detail.status === 'succeeded');
351
- return { content: [{ type: 'text', text: JSON.stringify(detail) }] };
352
- }
353
- catch (err) {
354
- if (err instanceof LumenKeyError && err.code === 'WAIT_TIMEOUT') {
355
- err = new LumenKeyError('WAIT_TIMEOUT', undefined, undefined, waitTimeoutDetail(jobId, timeoutMs ?? 1_800_000));
356
- }
357
- return { isError: true, content: [{ type: 'text', text: errorText(err) }] };
358
- }
359
- });
121
+ ...zodShape(waitParams),
122
+ }, async ({ jobId, ...rest }) => toolResult(await waitJob(api(), jobId, waitArgs(rest, 'mcp'))));
123
+ tool('lumenkey_resume_submission', ui('Re-send a recorded submission verbatim by its idempotency key (recovery after an unknown outcome). The gateway replays the earlier job or creates it once; nothing is quoted anew and no generation argument is accepted.', '按幂等键原样重发一次已记录的提交(结果未知后的恢复)。网关会回放之前的任务或只创建一次;不会重新报价,也不接受任何生成参数。'), zodShape(resumeParams), async (args) => toolResult(await resumeSubmission(api(), { ...resumeArgs(args, 'mcp'), onEvent: mcpGenerationEvents() })));
360
124
  tool('lumenkey_tasks_cancel', ui('Request cancellation with yes: true. Cancellation is not a refund; held credits are released or charged only when gateway settlement completes.', '取消已有任务必须传 yes: true。取消不等于退款;冻结算力点是否释放或扣除由网关最终结算决定。'), {
361
- jobId: z.string().describe(ui('The existing task ID to cancel', '要取消的已有任务 ID')),
125
+ jobId: z.string().describe(ui('The existing task ID to cancel', '要取消的任务 ID')),
362
126
  yes: z.boolean({ invalid_type_error: ui('Cancellation requires yes: true.', '取消任务必须传入 yes: true。') }).optional().describe(ui('Must be true to authorize cancellation; cancellation is not a refund', '必须为 true 才授权取消;取消不等于退款')),
363
127
  }, async ({ jobId, yes }) => {
364
- try {
365
- if (yes !== true)
366
- throw new LumenKeyError('CANCEL_CONFIRMATION_REQUIRED', undefined, undefined, ui('Cancellation requires yes: true.', '取消任务必须传入 yes: true。'));
367
- const result = await client.cancelJob(jobId);
368
- return { content: [{ type: 'text', text: JSON.stringify(result) }] };
369
- }
370
- catch (err) {
371
- return { isError: true, content: [{ type: 'text', text: errorText(err) }] };
372
- }
128
+ if (yes !== true)
129
+ throw new LumenKeyError('CANCEL_CONFIRMATION_REQUIRED', undefined, undefined, ui('Cancellation requires yes: true.', '取消任务必须传入 yes: true。'));
130
+ return dataResult(await api().cancelJob(jobId));
373
131
  });
374
132
  return server;
375
133
  }
@@ -377,6 +135,6 @@ export async function runMcpStdio() {
377
135
  const server = createMcpServer();
378
136
  const transport = new StdioServerTransport();
379
137
  await server.connect(transport);
380
- process.stderr.write(`[LumenKey MCP] ${ui('Server running on stdio transport', '服务已启动,使用 stdio 传输')}\n`);
138
+ log(ui('Server running on stdio transport', '服务已启动,使用 stdio 传输'));
381
139
  }
382
140
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumenkey/cli",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "Unified CLI & MCP Server for LumenKey Multi-Modal AI (Video, Image & LLMs)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -22,6 +22,7 @@
22
22
  "dev": "tsc --watch",
23
23
  "start": "node ./bin/lumenkey.js",
24
24
  "mcp": "node ./bin/lumenkey-mcp.js",
25
+ "pretest": "tsc",
25
26
  "test": "node --require ./test/harness/force-english.cjs --test"
26
27
  },
27
28
  "keywords": [
@@ -37,7 +38,7 @@
37
38
  "author": "LumenKey Team",
38
39
  "license": "MIT",
39
40
  "dependencies": {
40
- "@modelcontextprotocol/sdk": "^1.30.0",
41
+ "@modelcontextprotocol/sdk": "^1.31.0",
41
42
  "cac": "^6.7.14",
42
43
  "picocolors": "^1.1.1",
43
44
  "undici": "^7.30.0",