@lumenkey/cli 0.2.1 → 0.2.3
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/README.md +21 -3
- package/dist/cli/copied.d.ts +7 -2
- package/dist/cli/copied.d.ts.map +1 -1
- package/dist/cli/copied.js +131 -79
- package/dist/cli/copied.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +25 -28
- package/dist/cli/index.js.map +1 -1
- package/dist/core/atomic-config-file.d.ts +8 -0
- package/dist/core/atomic-config-file.d.ts.map +1 -0
- package/dist/core/atomic-config-file.js +63 -0
- package/dist/core/atomic-config-file.js.map +1 -0
- package/dist/core/client.d.ts +10 -1
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +20 -4
- package/dist/core/client.js.map +1 -1
- package/dist/core/config.d.ts +2 -2
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +22 -4
- package/dist/core/config.js.map +1 -1
- package/dist/core/download.d.ts +3 -0
- package/dist/core/download.d.ts.map +1 -0
- package/dist/core/download.js +107 -0
- package/dist/core/download.js.map +1 -0
- package/dist/core/error-result.d.ts +14 -0
- package/dist/core/error-result.d.ts.map +1 -0
- package/dist/core/error-result.js +27 -0
- package/dist/core/error-result.js.map +1 -0
- package/dist/core/generation-result.d.ts +19 -0
- package/dist/core/generation-result.d.ts.map +1 -0
- package/dist/core/generation-result.js +22 -0
- package/dist/core/generation-result.js.map +1 -0
- package/dist/core/locale.d.ts.map +1 -1
- package/dist/core/locale.js +34 -0
- package/dist/core/locale.js.map +1 -1
- package/dist/core/poller.d.ts +15 -5
- package/dist/core/poller.d.ts.map +1 -1
- package/dist/core/poller.js +45 -57
- package/dist/core/poller.js.map +1 -1
- package/dist/core/profiles.d.ts +5 -1
- package/dist/core/profiles.d.ts.map +1 -1
- package/dist/core/profiles.js +59 -12
- package/dist/core/profiles.js.map +1 -1
- package/dist/core/set-values.d.ts.map +1 -1
- package/dist/core/set-values.js +6 -1
- package/dist/core/set-values.js.map +1 -1
- package/dist/core/version.d.ts +2 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +3 -0
- package/dist/core/version.js.map +1 -0
- package/dist/core/wait.d.ts +1 -0
- package/dist/core/wait.d.ts.map +1 -1
- package/dist/core/wait.js +2 -40
- package/dist/core/wait.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +50 -55
- package/dist/mcp/server.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../src/core/poller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../src/core/poller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAID,qBAAa,eAAgB,SAAQ,aAAa;aACa,SAAS,CAAC,EAAE,MAAM;gBAAnE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAkB,SAAS,CAAC,EAAE,MAAM,YAAA;CAShF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,aAAa,UAAQ,GAAG,IAAI,CAUxF;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAG9B;AAED,qBAAa,oBAAqB,SAAQ,aAAa;aACzB,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CAC1C;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9D,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CACxE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmDpC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/core/poller.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { pipeline } from 'node:stream/promises';
|
|
4
|
-
import { Readable } from 'node:stream';
|
|
5
|
-
import { Transform } from 'node:stream';
|
|
6
|
-
import crypto from 'node:crypto';
|
|
7
1
|
import { LumenKeyError, redactPublicDetail } from './client.js';
|
|
8
|
-
import { hasErrorSentence, waitTimeoutDetail } from './locale.js';
|
|
2
|
+
import { errorSentence, hasErrorSentence, waitTimeoutDetail } from './locale.js';
|
|
9
3
|
const TERMINAL_STATES = new Set(['succeeded', 'rejected', 'failed', 'cancelled', 'expired']);
|
|
10
4
|
export class JobFailureError extends LumenKeyError {
|
|
11
|
-
|
|
5
|
+
jobStatus;
|
|
6
|
+
constructor(code, message, jobStatus) {
|
|
12
7
|
super(code);
|
|
8
|
+
this.jobStatus = jobStatus;
|
|
13
9
|
this.name = 'JobFailureError';
|
|
14
10
|
if (!hasErrorSentence(code)) {
|
|
15
11
|
const short = redactPublicDetail(message);
|
|
12
|
+
this.publicMessage = short || errorSentence('JOB_TERMINAL_FAILURE');
|
|
16
13
|
this.message = `${code}${short ? `: ${short}` : ''}`;
|
|
17
14
|
}
|
|
18
15
|
}
|
|
@@ -22,89 +19,80 @@ export function assertJobResult(detail, requireOutput = false) {
|
|
|
22
19
|
const error = typeof detail.error === 'object' && detail.error ? detail.error : {};
|
|
23
20
|
const code = typeof error.code === 'string' && (/^[a-z][a-z0-9_]{0,63}$/.test(error.code) || /^[A-Z][A-Z0-9_]{0,79}$/.test(error.code))
|
|
24
21
|
? error.code : detail.status === 'cancelled' ? 'JOB_CANCELLED' : detail.status === 'expired' ? 'JOB_EXPIRED' : 'JOB_TERMINAL_FAILURE';
|
|
25
|
-
throw new JobFailureError(code, error.message);
|
|
22
|
+
throw new JobFailureError(code, error.message, detail.status);
|
|
26
23
|
}
|
|
27
24
|
if (requireOutput && (typeof detail.outputs?.[0]?.url !== 'string' || !detail.outputs[0].url.trim())) {
|
|
28
|
-
throw new JobFailureError('JOB_OUTPUT_MISSING');
|
|
25
|
+
throw new JobFailureError('JOB_OUTPUT_MISSING', undefined, detail.status);
|
|
29
26
|
}
|
|
30
27
|
}
|
|
31
28
|
export async function pollJob(client, jobId, options = {}) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
if (options.maxIntervalMs !== undefined && (!Number.isFinite(options.maxIntervalMs) || options.maxIntervalMs <= 0 || options.maxIntervalMs > 2_147_483_647))
|
|
30
|
+
throw new LumenKeyError('WAIT_OPTIONS_INVALID');
|
|
31
|
+
return runPolling(client, jobId, { intervalMs: options.initialIntervalMs, timeoutMs: options.timeoutMs, onProgress: options.onProgress, signal: options.signal });
|
|
32
|
+
}
|
|
33
|
+
export class WaitInterruptedError extends LumenKeyError {
|
|
34
|
+
jobId;
|
|
35
|
+
constructor(jobId) {
|
|
36
|
+
super('WAIT_INTERRUPTED');
|
|
37
|
+
this.jobId = jobId;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export async function runPolling(client, jobId, options = {}) {
|
|
41
|
+
const { intervalMs = 5000, timeoutMs = 1_800_000, signal, onProgress } = options;
|
|
42
|
+
if (!Number.isFinite(intervalMs) || intervalMs <= 0 || intervalMs > 2_147_483_647
|
|
35
43
|
|| !Number.isFinite(timeoutMs) || timeoutMs < 0 || timeoutMs > Number.MAX_SAFE_INTEGER - Date.now())
|
|
36
44
|
throw new LumenKeyError('WAIT_OPTIONS_INVALID');
|
|
37
|
-
|
|
45
|
+
const interrupted = () => new WaitInterruptedError(jobId);
|
|
46
|
+
const sleep = (ms) => new Promise((resolve, reject) => {
|
|
47
|
+
if (signal?.aborted) {
|
|
48
|
+
reject(interrupted());
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const abort = () => { clearTimeout(timer); reject(interrupted()); };
|
|
52
|
+
const timer = setTimeout(() => { signal?.removeEventListener('abort', abort); resolve(); }, ms);
|
|
53
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
54
|
+
});
|
|
55
|
+
let interval = intervalMs;
|
|
38
56
|
const startTime = Date.now();
|
|
39
57
|
let first = true;
|
|
40
58
|
while (true) {
|
|
59
|
+
if (signal?.aborted)
|
|
60
|
+
throw interrupted();
|
|
41
61
|
if (!first && Date.now() - startTime >= timeoutMs) {
|
|
42
62
|
throw new LumenKeyError('WAIT_TIMEOUT', undefined, undefined, waitTimeoutDetail(jobId, timeoutMs));
|
|
43
63
|
}
|
|
44
64
|
first = false;
|
|
45
65
|
let detail;
|
|
46
66
|
try {
|
|
47
|
-
detail = await client.getJob(jobId);
|
|
67
|
+
detail = await client.getJob(jobId, { signal });
|
|
48
68
|
}
|
|
49
69
|
catch (error) {
|
|
70
|
+
if (signal?.aborted)
|
|
71
|
+
throw interrupted();
|
|
50
72
|
if (!(error instanceof LumenKeyError) || !(error.status === 429 || error.status === 502 || error.status === 503 || error.status === 504))
|
|
51
73
|
throw error;
|
|
52
74
|
const remaining = timeoutMs - (Date.now() - startTime);
|
|
53
75
|
if (remaining <= 0)
|
|
54
76
|
continue;
|
|
55
|
-
await
|
|
56
|
-
interval = Math.min(interval * 1.5,
|
|
77
|
+
await sleep(Math.min(remaining, Math.max(interval, error.retryAfterMs ?? 0)));
|
|
78
|
+
interval = Math.min(interval * 1.5, Math.max(intervalMs, 10_000));
|
|
57
79
|
continue;
|
|
58
80
|
}
|
|
59
81
|
if (onProgress) {
|
|
60
82
|
onProgress(detail);
|
|
61
83
|
}
|
|
62
|
-
|
|
84
|
+
if (signal?.aborted)
|
|
85
|
+
throw interrupted();
|
|
86
|
+
assertJobResult(detail, options.requireOutput && detail.status === 'succeeded');
|
|
63
87
|
if (TERMINAL_STATES.has(detail.status)) {
|
|
64
88
|
return detail; // succeeded
|
|
65
89
|
}
|
|
66
|
-
//
|
|
90
|
+
// A user-selected interval is never reduced; only transient errors back off.
|
|
67
91
|
const remaining = timeoutMs - (Date.now() - startTime);
|
|
68
92
|
if (remaining <= 0)
|
|
69
93
|
continue;
|
|
70
|
-
await
|
|
71
|
-
interval = Math.min(interval * 1.5, maxIntervalMs);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Downloads a remote URL to an explicit local file path
|
|
76
|
-
*/
|
|
77
|
-
export async function downloadFile(url, outputPath, overwrite = false) {
|
|
78
|
-
const resolvedPath = path.resolve(outputPath);
|
|
79
|
-
if (fs.existsSync(resolvedPath) && !overwrite) {
|
|
80
|
-
throw new Error(`Output file already exists at ${resolvedPath}. Pass overwrite: true or specify a different filename.`);
|
|
81
|
-
}
|
|
82
|
-
const parentDir = path.dirname(resolvedPath);
|
|
83
|
-
if (!fs.existsSync(parentDir)) {
|
|
84
|
-
fs.mkdirSync(parentDir, { recursive: true });
|
|
85
|
-
}
|
|
86
|
-
const target = new URL(url);
|
|
87
|
-
if (target.username || target.password || !['https:', 'http:'].includes(target.protocol))
|
|
88
|
-
throw new LumenKeyError('DOWNLOAD_URL_INVALID');
|
|
89
|
-
const response = await fetch(url, { redirect: 'error', signal: AbortSignal.timeout(120000) });
|
|
90
|
-
if (!response.ok || !response.body) {
|
|
91
|
-
throw new Error(`DOWNLOAD_HTTP_ERROR_${response.status}`);
|
|
92
|
-
}
|
|
93
|
-
const temporary = `${resolvedPath}.${crypto.randomUUID()}.part`;
|
|
94
|
-
const limit = 128 * 1024 * 1024;
|
|
95
|
-
let bytes = 0;
|
|
96
|
-
try {
|
|
97
|
-
await pipeline(Readable.fromWeb(response.body), new Transform({ transform(chunk, _encoding, callback) { bytes += chunk.length; callback(bytes > limit ? new LumenKeyError('DOWNLOAD_TOO_LARGE') : null, chunk); } }), fs.createWriteStream(temporary, { flags: 'wx', mode: 0o600 }));
|
|
98
|
-
if (overwrite)
|
|
99
|
-
await fs.promises.rename(temporary, resolvedPath);
|
|
100
|
-
else {
|
|
101
|
-
await fs.promises.link(temporary, resolvedPath);
|
|
102
|
-
await fs.promises.unlink(temporary);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
finally {
|
|
106
|
-
await fs.promises.rm(temporary, { force: true });
|
|
94
|
+
await sleep(Math.min(remaining, intervalMs));
|
|
107
95
|
}
|
|
108
|
-
return resolvedPath;
|
|
109
96
|
}
|
|
97
|
+
export { downloadFile } from './download.js';
|
|
110
98
|
//# sourceMappingURL=poller.js.map
|
package/dist/core/poller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../src/core/poller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../src/core/poller.ts"],"names":[],"mappings":"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"}
|
package/dist/core/profiles.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
export declare class
|
|
1
|
+
export declare class ProfileError extends Error {
|
|
2
|
+
readonly code: 'PROFILE_INVALID' | 'PROFILE_UNREADABLE' | 'PROFILE_MISSING';
|
|
3
|
+
constructor(code: 'PROFILE_INVALID' | 'PROFILE_UNREADABLE' | 'PROFILE_MISSING', reason: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class ProfileMissingError extends ProfileError {
|
|
2
6
|
constructor(name: string);
|
|
3
7
|
}
|
|
4
8
|
export interface ProfileRecord {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/core/profiles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/core/profiles.ts"],"names":[],"mappings":"AAOA,qBAAa,YAAa,SAAQ,KAAK;IACzB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,oBAAoB,GAAG,iBAAiB;gBAAlE,IAAI,EAAE,iBAAiB,GAAG,oBAAoB,GAAG,iBAAiB,EAAE,MAAM,EAAE,MAAM;CAIxG;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,IAAI,EAAE,MAAM;CAGzB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4DD,wBAAgB,cAAc,CAAC,IAAI,SAAe,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,CAI7F;AAED,wBAAgB,YAAY,CAAC,IAAI,SAAe,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,CAUhJ;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKxF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAe,EAAE,QAAQ,UAAO,GAAG,SAAS,GAAG,QAAQ,CAQtG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAe,GAAG,IAAI,CAMlE;AAED,wBAAgB,YAAY,CAAC,IAAI,SAAe,GAAG,IAAI,CAItD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAe,GAAG,OAAO,CAQxE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,SAAe,GAAG,IAAI,CAMpG;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,SAAe,GAAG,MAAM,CAOnF"}
|
package/dist/core/profiles.js
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import os from 'node:os';
|
|
4
|
-
import { ui } from './locale.js';
|
|
4
|
+
import { errorSentence, ui } from './locale.js';
|
|
5
5
|
import { assertConfigDirReadable } from './config-dir.js';
|
|
6
|
-
|
|
6
|
+
import { assertSafeConfigFile, writeAtomicConfigFile } from './atomic-config-file.js';
|
|
7
|
+
export class ProfileError extends Error {
|
|
8
|
+
code;
|
|
9
|
+
constructor(code, reason) {
|
|
10
|
+
super(`${errorSentence(code)} (${code}) ${reason}`);
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.name = 'LumenKeyError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class ProfileMissingError extends ProfileError {
|
|
7
16
|
constructor(name) {
|
|
8
|
-
super(ui(`Profile ${name} does not exist.`, `档案 ${name} 不存在。`));
|
|
9
|
-
this.name = 'ProfileMissingError';
|
|
17
|
+
super('PROFILE_MISSING', ui(`Profile ${name} does not exist.`, `档案 ${name} 不存在。`));
|
|
10
18
|
}
|
|
11
19
|
}
|
|
12
20
|
function filePath(home = os.homedir()) {
|
|
@@ -15,20 +23,55 @@ function filePath(home = os.homedir()) {
|
|
|
15
23
|
function read(home = os.homedir()) {
|
|
16
24
|
const target = filePath(home);
|
|
17
25
|
assertConfigDirReadable(target);
|
|
18
|
-
if (!fs.existsSync(target))
|
|
19
|
-
return { profiles: {} };
|
|
20
26
|
try {
|
|
27
|
+
assertSafeConfigFile(target);
|
|
28
|
+
if (!fs.existsSync(target))
|
|
29
|
+
return { profiles: Object.create(null) };
|
|
21
30
|
const parsed = JSON.parse(fs.readFileSync(target, 'utf8'));
|
|
22
|
-
return
|
|
31
|
+
return validate(parsed);
|
|
23
32
|
}
|
|
24
|
-
catch {
|
|
25
|
-
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error instanceof ProfileError)
|
|
35
|
+
throw error;
|
|
36
|
+
throw new ProfileError(error instanceof SyntaxError ? 'PROFILE_INVALID' : 'PROFILE_UNREADABLE', target);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function object(value) {
|
|
40
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
41
|
+
}
|
|
42
|
+
function validName(name) {
|
|
43
|
+
if (!name.trim() || Object.prototype.hasOwnProperty.call(Object.prototype, name)) {
|
|
44
|
+
throw new ProfileError('PROFILE_INVALID', ui('Invalid profile name.', '档案名称无效。'));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function validate(value) {
|
|
48
|
+
if (!object(value) || !object(value.profiles) || (value.current !== undefined && typeof value.current !== 'string')) {
|
|
49
|
+
throw new ProfileError('PROFILE_INVALID', ui('profiles.json must contain a profiles object.', 'profiles.json 必须包含 profiles 对象。'));
|
|
50
|
+
}
|
|
51
|
+
const profiles = Object.create(null);
|
|
52
|
+
for (const [name, record] of Object.entries(value.profiles)) {
|
|
53
|
+
validName(name);
|
|
54
|
+
if (!object(record) || ['key', 'host', 'projectId'].some(key => record[key] !== undefined && typeof record[key] !== 'string')) {
|
|
55
|
+
throw new ProfileError('PROFILE_INVALID', ui('Profile records must be objects with string fields.', '档案记录必须是包含字符串字段的对象。'));
|
|
56
|
+
}
|
|
57
|
+
profiles[name] = Object.fromEntries(['key', 'host', 'projectId'].filter(key => record[key] !== undefined).map(key => [key, record[key]]));
|
|
26
58
|
}
|
|
59
|
+
if (value.current !== undefined) {
|
|
60
|
+
validName(value.current);
|
|
61
|
+
if (!Object.hasOwn(profiles, value.current))
|
|
62
|
+
throw new ProfileMissingError(value.current);
|
|
63
|
+
}
|
|
64
|
+
return { current: value.current, profiles };
|
|
27
65
|
}
|
|
28
66
|
function write(data, home = os.homedir()) {
|
|
29
67
|
const target = filePath(home);
|
|
30
|
-
|
|
31
|
-
|
|
68
|
+
validate(data);
|
|
69
|
+
try {
|
|
70
|
+
writeAtomicConfigFile(target, data);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
throw new ProfileError('PROFILE_UNREADABLE', target);
|
|
74
|
+
}
|
|
32
75
|
}
|
|
33
76
|
export function currentProfile(home = os.homedir()) {
|
|
34
77
|
const data = read(home);
|
|
@@ -55,6 +98,7 @@ export function publicProfile(record) {
|
|
|
55
98
|
return copy;
|
|
56
99
|
}
|
|
57
100
|
export function createProfile(name, home = os.homedir(), activate = true) {
|
|
101
|
+
validName(name);
|
|
58
102
|
const data = read(home);
|
|
59
103
|
if (data.profiles[name])
|
|
60
104
|
return 'exists';
|
|
@@ -65,6 +109,7 @@ export function createProfile(name, home = os.homedir(), activate = true) {
|
|
|
65
109
|
return 'created';
|
|
66
110
|
}
|
|
67
111
|
export function setProfile(name, home = os.homedir()) {
|
|
112
|
+
validName(name);
|
|
68
113
|
const data = read(home);
|
|
69
114
|
if (!data.profiles[name])
|
|
70
115
|
throw new ProfileMissingError(name);
|
|
@@ -77,6 +122,7 @@ export function unsetProfile(home = os.homedir()) {
|
|
|
77
122
|
write(data, home);
|
|
78
123
|
}
|
|
79
124
|
export function deleteProfile(name, home = os.homedir()) {
|
|
125
|
+
validName(name);
|
|
80
126
|
const data = read(home);
|
|
81
127
|
if (!data.profiles[name])
|
|
82
128
|
return false;
|
|
@@ -87,6 +133,7 @@ export function deleteProfile(name, home = os.homedir()) {
|
|
|
87
133
|
return true;
|
|
88
134
|
}
|
|
89
135
|
export function setNamedProfileFields(name, fields, home = os.homedir()) {
|
|
136
|
+
validName(name);
|
|
90
137
|
const data = read(home);
|
|
91
138
|
if (!data.profiles[name])
|
|
92
139
|
throw new ProfileMissingError(name);
|
|
@@ -97,7 +144,7 @@ export function setProfileFields(fields, home = os.homedir()) {
|
|
|
97
144
|
const data = read(home);
|
|
98
145
|
const name = data.current;
|
|
99
146
|
if (!name || !data.profiles[name])
|
|
100
|
-
throw new
|
|
147
|
+
throw new ProfileMissingError(name ?? '');
|
|
101
148
|
data.profiles[name] = { ...data.profiles[name], ...fields };
|
|
102
149
|
write(data, home);
|
|
103
150
|
return name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/core/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/core/profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-values.d.ts","sourceRoot":"","sources":["../../src/core/set-values.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"set-values.d.ts","sourceRoot":"","sources":["../../src/core/set-values.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAanH;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUjD;AAED,KAAK,QAAQ,GACT;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAIvB,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQpE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmCjD;AA0CD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAK7F;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzG;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAS5G;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAGhD"}
|
package/dist/core/set-values.js
CHANGED
|
@@ -3,9 +3,14 @@ import { LumenKeyError } from './client.js';
|
|
|
3
3
|
import { ui } from './locale.js';
|
|
4
4
|
/** Identify a parameter without echoing its value, a whole pair, or a payload. */
|
|
5
5
|
export function modelParameterError(code, key) {
|
|
6
|
+
if (!/^[a-zA-Z][a-zA-Z0-9_]{0,63}$/.test(key)) {
|
|
7
|
+
return new LumenKeyError(code, undefined, undefined, code === 'MODEL_PARAM_UNKNOWN'
|
|
8
|
+
? ui('This model does not support the supplied parameter.', '该模型不支持所提供的参数。')
|
|
9
|
+
: ui('The supplied parameter is invalid. Check lumenkey model explain.', '所提供的参数值无效。请运行 lumenkey model explain 查看允许的参数。'));
|
|
10
|
+
}
|
|
6
11
|
const label = key === 'aspect_ratio' || key === 'ratio'
|
|
7
12
|
? ui('aspect ratio', '宽高比')
|
|
8
|
-
:
|
|
13
|
+
: key;
|
|
9
14
|
const detail = code === 'MODEL_PARAM_UNKNOWN'
|
|
10
15
|
? ui(`This model has no ${label} parameter.`, `该模型不支持 ${label} 参数。`)
|
|
11
16
|
: ui(`Invalid value for ${label}. Check this model's allowed parameters with lumenkey model explain.`, `${label} 参数值无效。请运行 lumenkey model explain 查看该模型允许的参数。`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-values.js","sourceRoot":"","sources":["../../src/core/set-values.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,IAAmD,EAAE,GAAW;IAClG,
|
|
1
|
+
{"version":3,"file":"set-values.js","sourceRoot":"","sources":["../../src/core/set-values.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,EAAE,MAAoG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,CAAC,MAAM,cAAc,GAAW,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC"}
|
package/dist/core/wait.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ import type { GenerationJobDetail } from './types.js';
|
|
|
3
3
|
export declare function waitForJob(client: LumenKeyClient, jobId: string, options?: {
|
|
4
4
|
intervalMs?: number;
|
|
5
5
|
timeoutMs?: number;
|
|
6
|
+
signal?: AbortSignal;
|
|
6
7
|
}): Promise<GenerationJobDetail>;
|
|
7
8
|
//# sourceMappingURL=wait.d.ts.map
|
package/dist/core/wait.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/core/wait.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/core/wait.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,wBAAsB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EACpE,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAC9E,OAAO,CAAC,mBAAmB,CAAC,CAE9B"}
|
package/dist/core/wait.js
CHANGED
|
@@ -1,43 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { assertJobResult } from './poller.js';
|
|
3
|
-
import { waitTimeoutDetail } from './locale.js';
|
|
4
|
-
const TERMINAL = new Set(['succeeded', 'failed', 'rejected', 'cancelled', 'expired']);
|
|
5
|
-
const MAX_TIMER_MS = 2_147_483_647;
|
|
1
|
+
import { runPolling } from './poller.js';
|
|
6
2
|
export async function waitForJob(client, jobId, options = {}) {
|
|
7
|
-
|
|
8
|
-
const timeoutMs = options.timeoutMs ?? 1_800_000;
|
|
9
|
-
if (!Number.isFinite(intervalMs) || intervalMs < 0 || intervalMs > MAX_TIMER_MS || !Number.isFinite(timeoutMs) || timeoutMs < 0 || timeoutMs > Number.MAX_SAFE_INTEGER - Date.now())
|
|
10
|
-
throw new LumenKeyError('WAIT_OPTIONS_INVALID');
|
|
11
|
-
const deadline = Date.now() + timeoutMs;
|
|
12
|
-
const timedOut = () => new LumenKeyError('WAIT_TIMEOUT', undefined, undefined, waitTimeoutDetail(jobId, timeoutMs));
|
|
13
|
-
let delay = intervalMs;
|
|
14
|
-
let first = true;
|
|
15
|
-
for (;;) {
|
|
16
|
-
if (!first && Date.now() >= deadline)
|
|
17
|
-
throw timedOut();
|
|
18
|
-
first = false;
|
|
19
|
-
let detail;
|
|
20
|
-
try {
|
|
21
|
-
detail = await client.getJob(jobId);
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
if (!(error instanceof LumenKeyError) || !(error.status === 429 || error.status === 502 || error.status === 503 || error.status === 504))
|
|
25
|
-
throw error;
|
|
26
|
-
const remaining = deadline - Date.now();
|
|
27
|
-
if (remaining <= 0)
|
|
28
|
-
throw timedOut();
|
|
29
|
-
await new Promise((resolve) => setTimeout(resolve, Math.min(remaining, Math.max(delay, error.retryAfterMs ?? 0))));
|
|
30
|
-
delay = Math.min(delay * 1.5, Math.max(intervalMs, 10_000));
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
if (TERMINAL.has(detail.status)) {
|
|
34
|
-
assertJobResult(detail, detail.status === 'succeeded');
|
|
35
|
-
return detail;
|
|
36
|
-
}
|
|
37
|
-
const remaining = deadline - Date.now();
|
|
38
|
-
if (remaining <= 0)
|
|
39
|
-
throw timedOut();
|
|
40
|
-
await new Promise((resolve) => setTimeout(resolve, Math.min(remaining, intervalMs)));
|
|
41
|
-
}
|
|
3
|
+
return runPolling(client, jobId, { ...options, requireOutput: true });
|
|
42
4
|
}
|
|
43
5
|
//# sourceMappingURL=wait.js.map
|
package/dist/core/wait.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/core/wait.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/core/wait.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAsB,EAAE,KAAa,EACpE,UAA6E,EAAE;IAE/E,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyDpE,wBAAgB,eAAe,IAAI,SAAS,CA+W3C;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAKjD"}
|