@lumenkey/cli 0.2.3 → 0.3.1

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 +43 -7
  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 -283
  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 +86 -136
  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 +38 -0
  12. package/dist/cli/render.js.map +1 -0
  13. package/dist/core/atomic-config-file.d.ts +21 -2
  14. package/dist/core/atomic-config-file.d.ts.map +1 -1
  15. package/dist/core/atomic-config-file.js +66 -10
  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 +19 -1
  22. package/dist/core/client.d.ts.map +1 -1
  23. package/dist/core/client.js +50 -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 -39
  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 +105 -16
  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 -24
  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 -14
  52. package/dist/core/generation-result.d.ts.map +1 -1
  53. package/dist/core/generation-result.js +3 -4
  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 +21 -0
  60. package/dist/core/locale.d.ts.map +1 -1
  61. package/dist/core/locale.js +84 -4
  62. package/dist/core/locale.js.map +1 -1
  63. package/dist/core/outcome.d.ts +134 -0
  64. package/dist/core/outcome.d.ts.map +1 -0
  65. package/dist/core/outcome.js +112 -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 +6 -1
  76. package/dist/core/poller.d.ts.map +1 -1
  77. package/dist/core/poller.js +17 -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 +340 -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 +2 -1
@@ -18,7 +18,18 @@ const EN = {
18
18
  STREAM_INPUT_SETTLEMENT_PENDING: 'An earlier request has pending settlement. Credits may still be reserved; do not assume they have been released. No automatic retry was made.',
19
19
  STREAM_ALREADY_CONSUMED: 'This idempotency key already completed the same request. This attempt was not charged again.',
20
20
  IDEMPOTENCY_CONFLICT: 'This idempotency key was already used for a different request. This attempt was not charged again.',
21
- IDEMPOTENCY_RESULT_EXPIRED: 'The earlier result for this idempotency key is no longer replayable.',
21
+ IDEMPOTENCY_RESULT_EXPIRED: 'The earlier request with this idempotency key already finished, but its result is no longer replayable. This attempt was not charged again; check your balance and ledger.',
22
+ REQUEST_IN_PROGRESS: 'An earlier request with this idempotency key is still running. This attempt was not charged again; wait for it to finish, then check your balance and ledger.',
23
+ INPUT_INVALID: 'The request arguments are invalid.',
24
+ SUBMISSION_RETRY_MISMATCH: 'This idempotency key belongs to a pending submission with a different model or input. Nothing was submitted; re-run with the original arguments or use the pending record.',
25
+ SUBMISSION_CREDENTIALS_MISMATCH: 'This idempotency key belongs to a pending submission made with different credentials or a different gateway. Nothing was submitted; retry it with the profile and gateway that created it.',
26
+ SUBMISSION_JOURNAL_UNWRITABLE: 'The pending-submission record could not be written.',
27
+ SUBMISSION_RECORD_NOT_FOUND: 'No pending submission is recorded under this idempotency key for this account and gateway.',
28
+ SUBMISSION_PENDING_IDENTICAL: 'An identical submission is already recorded and unconfirmed under another idempotency key, so nothing was sent under this one. Settle the pending submission first, or wait until it expires 23 hours after it was recorded.',
29
+ QUOTE_NOT_AVAILABLE: 'The quote is no longer available: it expired, was never issued, or does not match this input.',
30
+ QUOTE_ALREADY_CONSUMED: 'This quote was already used by another submission.',
31
+ SUBMISSION_RECORD_EXPIRED: 'This idempotency key belongs to a pending submission older than 23 hours. It was not re-sent: the gateway may no longer hold its idempotency record, so a replay could not be interpreted safely. Check your job list and balance before submitting again.',
32
+ SUBMISSION_JOURNAL_INVALID: 'The pending-submission record could not be read.',
22
33
  IDEMPOTENCY_KEY_REQUIRED: 'An idempotency key is required.',
23
34
  IDEMPOTENCY_KEY_INVALID: 'The idempotency key must not contain line breaks.',
24
35
  IDEMPOTENCY_KEY_TOO_LONG: 'The idempotency key must be at most 128 bytes.',
@@ -32,6 +43,8 @@ const EN = {
32
43
  JOB_RESPONSE_INVALID: 'The task response did not match the expected shape.',
33
44
  MODEL_INPUT_SCHEMA_INVALID: 'This model has no usable input schema.',
34
45
  MODEL_PARAM_INVALID: 'A model parameter has an invalid value.',
46
+ MODEL_PARAM_ALIAS_CONFLICT: 'Two different names were supplied for the same model parameter. Keep only one name; no request was sent.',
47
+ SUBMISSION_INPUT_POLICY_CHANGED: 'Default expansion changed the input of an unconfirmed submission. Recover its recorded body instead of creating a new job.',
35
48
  MODEL_PARAM_UNKNOWN: 'This model does not declare the supplied parameter.',
36
49
  MODEL_PARAM_SYNTAX_INVALID: 'The key=value parameter syntax is invalid.',
37
50
  QUOTE_EXPIRED: 'This quote has expired. Request a new quote.',
@@ -52,11 +65,11 @@ const EN = {
52
65
  STREAM_RUNTIME_UNAVAILABLE: 'The chat runtime is temporarily unavailable.',
53
66
  MODEL_NOT_AVAILABLE: 'This model is not available.',
54
67
  CONTENT_REJECTED: 'The content was rejected.',
55
- REQUEST_IN_PROGRESS: 'The same idempotency key is still in progress.',
56
68
  IDEMPOTENCY_INPUT_INVALID: 'The idempotency key must be visible ASCII without spaces.',
57
69
  CONFIG_INVALID: 'The local config file is not usable.',
58
70
  CONFIG_UNREADABLE: 'The local config file could not be read or written.',
59
71
  CONFIG_UNSAFE_PATH: 'Configuration paths must not use symbolic links or hard links.',
72
+ CONFIG_NOT_A_FILE: 'The configuration path exists but is not a regular file.',
60
73
  CHAT_REQUEST_INVALID: 'The chat request is not valid.',
61
74
  CANCELLED: 'The request was cancelled.',
62
75
  ACCOUNT_NOT_ELIGIBLE: 'This account cannot use the requested model.',
@@ -80,6 +93,7 @@ const EN = {
80
93
  DOWNLOAD_INTERRUPTED: 'Stopped the local download. The generation result remains available.',
81
94
  DOWNLOAD_WRITE_ERROR: 'The result could not be saved to this destination.',
82
95
  DOWNLOAD_HTTP_ERROR: 'The result server rejected the download.',
96
+ DOWNLOAD_PATH_NOT_ABSOLUTE: 'The download path must be absolute.',
83
97
  WAIT_INTERRUPTED: 'Stopped waiting. The task was not cancelled.',
84
98
  REQUEST_ABORTED: 'Stopped the local request.',
85
99
  PROFILE_INVALID: 'The profiles file is invalid; it was not overwritten.',
@@ -111,7 +125,18 @@ const ZH = {
111
125
  STREAM_INPUT_SETTLEMENT_PENDING: '先前请求的结算尚未确认,算力点可能仍处于冻结状态。请不要认为已自动归还;客户端没有自动重试。',
112
126
  STREAM_ALREADY_CONSUMED: '该幂等键已成功完成过同一请求,本次未重复扣费。',
113
127
  IDEMPOTENCY_CONFLICT: '该幂等键已用于另一个不同的请求,本次未重复扣费。',
114
- IDEMPOTENCY_RESULT_EXPIRED: '该幂等键上一次保存的结果已经不能再回放。',
128
+ IDEMPOTENCY_RESULT_EXPIRED: '该幂等键上一次保存的结果已经不能再回放。上一次请求已经完成,本次未重复扣费;请核对余额与流水。',
129
+ REQUEST_IN_PROGRESS: '该幂等键上一次的请求仍在运行。本次未重复扣费;请等待它完成后核对余额与流水。',
130
+ INPUT_INVALID: '请求参数无效。',
131
+ SUBMISSION_RETRY_MISMATCH: '该幂等键对应一条待确认的提交,但模型或输入与这次不同。没有提交任何任务;请用原来的参数重新运行。',
132
+ SUBMISSION_CREDENTIALS_MISMATCH: '该幂等键对应的待确认提交是用另一组凭据或另一个网关发出的。没有提交任何任务;请用创建它的档案和网关重试。',
133
+ SUBMISSION_JOURNAL_UNWRITABLE: '无法写入待确认提交记录。',
134
+ SUBMISSION_RECORD_NOT_FOUND: '这个账号和网关下没有以该幂等键记录的待确认提交。',
135
+ SUBMISSION_PENDING_IDENTICAL: '已有一次相同的提交以另一个幂等键记录且结果未确认,因此没有用这个键发送任何内容。请先处理那次待确认提交,或等它在记录后 23 小时过期。',
136
+ QUOTE_NOT_AVAILABLE: '报价已不可用:已过期、从未签发,或与这次输入不匹配。',
137
+ QUOTE_ALREADY_CONSUMED: '该报价已被另一次提交使用。',
138
+ SUBMISSION_RECORD_EXPIRED: '该幂等键对应的待确认提交已超过 23 小时。没有重发:网关可能已不再保留它的幂等记录,重放的结果无法安全解读。请先核对任务列表与余额,再决定是否重新提交。',
139
+ SUBMISSION_JOURNAL_INVALID: '无法读取待确认提交记录。',
115
140
  IDEMPOTENCY_KEY_REQUIRED: '必须提供幂等键。',
116
141
  IDEMPOTENCY_KEY_INVALID: '幂等键不能包含换行符。',
117
142
  IDEMPOTENCY_KEY_TOO_LONG: '幂等键不得超过 128 字节。',
@@ -125,6 +150,8 @@ const ZH = {
125
150
  JOB_RESPONSE_INVALID: '任务响应不符合约定。',
126
151
  MODEL_INPUT_SCHEMA_INVALID: '该模型没有可用的输入结构。',
127
152
  MODEL_PARAM_INVALID: '模型参数的值无效。',
153
+ MODEL_PARAM_ALIAS_CONFLICT: '同一模型参数使用了两个不同字段名。请只保留一个字段名;没有发送请求。',
154
+ SUBMISSION_INPUT_POLICY_CHANGED: '默认值补全改变了待确认提交的输入。请恢复记录的原请求体,不要创建新任务。',
128
155
  MODEL_PARAM_UNKNOWN: '该模型未声明这个参数。',
129
156
  MODEL_PARAM_SYNTAX_INVALID: 'key=value 参数语法无效。',
130
157
  QUOTE_EXPIRED: '该报价已过期。请重新报价。',
@@ -145,11 +172,11 @@ const ZH = {
145
172
  STREAM_RUNTIME_UNAVAILABLE: '对话运行时暂时不可用。',
146
173
  MODEL_NOT_AVAILABLE: '该模型当前不可用。',
147
174
  CONTENT_REJECTED: '内容未通过审核。',
148
- REQUEST_IN_PROGRESS: '同一幂等键的请求仍在进行中。',
149
175
  IDEMPOTENCY_INPUT_INVALID: '幂等键只能是不含空格的可见 ASCII 字符。',
150
176
  CONFIG_INVALID: '本地配置文件不可用。',
151
177
  CONFIG_UNREADABLE: '本地配置文件无法读取或写入。',
152
178
  CONFIG_UNSAFE_PATH: '配置路径不能使用符号链接或硬链接。',
179
+ CONFIG_NOT_A_FILE: '配置路径存在,但不是普通文件。',
153
180
  CHAT_REQUEST_INVALID: '对话请求无效。',
154
181
  CANCELLED: '请求已取消。',
155
182
  ACCOUNT_NOT_ELIGIBLE: '此账号不能使用所请求的模型。',
@@ -173,6 +200,7 @@ const ZH = {
173
200
  DOWNLOAD_INTERRUPTED: '已停止本机下载,生成结果仍然可用。',
174
201
  DOWNLOAD_WRITE_ERROR: '无法把结果保存到该位置。',
175
202
  DOWNLOAD_HTTP_ERROR: '结果服务器拒绝了下载请求。',
203
+ DOWNLOAD_PATH_NOT_ABSOLUTE: '下载路径必须是绝对路径。',
176
204
  WAIT_INTERRUPTED: '已停止等待,没有取消任务。',
177
205
  REQUEST_ABORTED: '已停止本机请求。',
178
206
  PROFILE_INVALID: '档案文件格式无效,没有覆盖原文件。',
@@ -287,6 +315,54 @@ export function waitTimeoutDetail(jobId, timeoutMs, lang = resolveLang()) {
287
315
  const seconds = timeoutMs / 1000;
288
316
  return ui(`Timed out waiting after ${seconds} seconds. The task may still be running; it was not cancelled. Resume with: lumenkey status ${jobId}`, `等待任务 ${seconds} 秒后超时。任务可能仍在运行,未执行取消。可继续查询:lumenkey status ${jobId}`, lang);
289
317
  }
318
+ export function waitInterruptedDetail(jobId, lang = resolveLang()) {
319
+ return ui(`${errorSentence('WAIT_INTERRUPTED', 'en')} Resume with: lumenkey status ${jobId}`, `${errorSentence('WAIT_INTERRUPTED', 'zh')} 可继续查询:lumenkey status ${jobId}`, lang);
320
+ }
321
+ /** Local display only; recovery's machine deadline stays ISO UTC in the outcome. */
322
+ export function submissionUnknownMessage(recovery, deadline, lang = resolveLang()) {
323
+ const head = ui('Submission result unknown; do not retry with different key or input.', '提交结果未知;不要换幂等键或参数重试。', lang);
324
+ const pad = (value) => String(value).padStart(2, '0');
325
+ let local;
326
+ if (deadline && Number.isFinite(deadline.getTime())) {
327
+ const offset = -deadline.getTimezoneOffset();
328
+ local = `${deadline.getFullYear()}-${pad(deadline.getMonth() + 1)}-${pad(deadline.getDate())} ${pad(deadline.getHours())}:${pad(deadline.getMinutes())} (${offset >= 0 ? '+' : '-'}${pad(Math.floor(Math.abs(offset) / 60))}:${pad(Math.abs(offset) % 60)})`;
329
+ }
330
+ if (recovery === 'expired')
331
+ return `${head} ${ui(`Past the 23-hour window${local ? ` (${local})` : ''}; check your job list and balance.`, `已超过 23 小时续传窗口${local ? `(${local})` : ''};请核对任务列表与余额。`, lang)}`;
332
+ if (recovery === 'ledger')
333
+ return `${head} ${ui('Check your job list and balance; no safe replay is available here.', '请核对任务列表与余额;此处不能安全重发。', lang)}`;
334
+ return `${head} ${ui(`Recover with lumenkey tasks resume <idempotencyKey> (MCP: lumenkey_resume_submission)${local ? ` before ${local}` : ''}.`, `恢复请用 lumenkey tasks resume <idempotencyKey>(MCP:lumenkey_resume_submission)${local ? `,截止 ${local}` : ''}。`, lang)}`;
335
+ }
336
+ /** The recovery verb on both surfaces, named wherever a keyless rerun will not do. */
337
+ export function resumeCommandText(idempotencyKey, lang = resolveLang()) {
338
+ return ui(`lumenkey tasks resume ${idempotencyKey} (MCP: lumenkey_resume_submission with idempotencyKey "${idempotencyKey}")`, `lumenkey tasks resume ${idempotencyKey}(MCP:lumenkey_resume_submission 并带 idempotencyKey "${idempotencyKey}")`, lang);
339
+ }
340
+ export function submissionUnknownAdvice(idempotencyKey, recovery = 'ledger', recordedAt, lang = resolveLang()) {
341
+ const head = ui('The gateway may already have accepted this job and reserved credits. Do not submit again with a different key.', '网关可能已经受理了这次任务并冻结了算力点。不要换用别的幂等键重新提交。', lang);
342
+ const deadline = recordedAt && Number.isFinite(Date.parse(recordedAt)) ? new Date(Date.parse(recordedAt) + 23 * 60 * 60 * 1000).toISOString() : undefined;
343
+ if (recovery === 'rerun')
344
+ return `${head} ${ui(`To recover, run the same command again with the same arguments${deadline ? ` before ${deadline} (23 hours after the submission was recorded)` : ''}; the client re-sends this recorded submission and the gateway replays the earlier job or creates it once. You can also run ${resumeCommandText(idempotencyKey, 'en')}, or check your balance and ledger first.`, `恢复方法:${deadline ? `在 ${deadline}(记录后 23 小时)之前` : ''}用相同参数再次运行同一命令,客户端会原样重发这次记录的提交,网关会回放之前的任务或只创建一次。也可以运行 ${resumeCommandText(idempotencyKey, 'zh')},或先核对余额与流水。`, lang)}`;
345
+ if (recovery === 'resume-command')
346
+ return `${head} ${ui(`The recorded submission is still marked in flight, so a plain rerun will not resume it. To recover, run ${resumeCommandText(idempotencyKey, 'en')}; it re-sends the recorded body and the gateway replays the earlier job or creates it once. Or check your balance and ledger first.`, `记录的提交仍标记为进行中,直接重跑不会接续它。恢复方法:运行 ${resumeCommandText(idempotencyKey, 'zh')},它会原样重发记录的请求体,网关会回放之前的任务或只创建一次;也可以先核对余额与流水。`, lang)}`;
347
+ if (recovery === 'expired')
348
+ return `${head} ${ui(`The recorded submission is past the 23-hour window in which it can be re-sent safely, so it will not be resumed. Check your job list and balance before submitting again.`, `记录的提交已超过可安全重发的 23 小时窗口,不会再接续。请先核对任务列表与余额,再决定是否重新提交。`, lang)}`;
349
+ return `${head} ${ui(`No local record of this submission remains (idempotency key ${idempotencyKey}), so it cannot be re-sent from here. Check your job list and balance before submitting again.`, `本机已没有这次提交的记录(幂等键 ${idempotencyKey}),无法从这里重发。请先核对任务列表与余额,再决定是否重新提交。`, lang)}`;
350
+ }
351
+ /** A replay was refused inside the gateway's create step, which is only reached when no job exists for the key. */
352
+ export function replaySettledAdvice(lang = resolveLang()) {
353
+ return ui('The earlier submission with this idempotency key was never created, so nothing was charged for it. It is safe to run the command again to get a new quote.', '该幂等键之前的提交从未被创建,没有产生扣费。可以安全地重新运行命令获取新的报价。', lang);
354
+ }
355
+ /** A replay met a record for the same key with a different body: the earlier job exists, but this client cannot see it. */
356
+ export function replayConflictAdvice(lang = resolveLang()) {
357
+ return ui('A job for this idempotency key already exists with a different request body. Check your job list and balance before submitting again; do not retry with a new key.', '该幂等键已有一个请求体不同的任务。请先核对任务列表与余额,再决定是否重新提交;不要换新键重试。', lang);
358
+ }
359
+ /** Chat requests are replayed by key, so the safe retry is the identical request with the same key. */
360
+ export function chatRetryAdvice(idempotencyKey, lang = resolveLang()) {
361
+ return ui(`To retry safely, send the identical request again with the same idempotency key ${idempotencyKey}; the gateway replays the earlier result instead of charging twice.`, `安全重试方法:用同一个幂等键 ${idempotencyKey} 再次发送完全相同的请求;网关会回放上一次结果,不会重复扣费。`, lang);
362
+ }
363
+ export function downloadPathNotAbsoluteDetail(lang = resolveLang()) {
364
+ return ui('The download path must be absolute, or start with ~/ for the home directory. This server cannot resolve a relative path on behalf of the caller.', '下载路径必须是绝对路径,或以 ~/ 开头表示主目录。服务无法代替调用方解析相对路径。', lang);
365
+ }
290
366
  export function jobStatusText(status, lang = resolveLang()) {
291
367
  const names = {
292
368
  accepted: '已受理', policy_checking: '策略检查中', queued: '排队中', submitting: '提交中',
@@ -309,6 +385,10 @@ export function blankPromptSentence(kind, lang = resolveLang()) {
309
385
  return 'Prompt is required and must not be blank.';
310
386
  return 'The user prompt must not be blank.';
311
387
  }
388
+ /** Surface-neutral: neither a CLI flag nor an MCP field is named. */
389
+ export function promptRequiredSentence(lang = resolveLang()) {
390
+ return ui('A prompt is required and must not be blank.', '必须提供提示词,且不能为空白。', lang);
391
+ }
312
392
  export function spendingCapSentence(label, lang = resolveLang()) {
313
393
  return lang === 'zh'
314
394
  ? `${label} 必须是非负整数。`
@@ -1 +1 @@
1
- {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/core/locale.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/core/locale.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { type ChatBilling } from './client.js';
2
+ import { type UnknownRecovery } from './locale.js';
3
+ import type { GenerationJobDetail, GenerationQuoteResponse, JobStatus } from './types.js';
4
+ export declare function chatText(response: {
5
+ choices?: Array<{
6
+ message?: {
7
+ content?: unknown;
8
+ refusal?: unknown;
9
+ tool_calls?: unknown;
10
+ };
11
+ }>;
12
+ }): string;
13
+ /**
14
+ * What happened to the billable job POST once a confirm was requested. `unknown` is the
15
+ * money-relevant value: the request was sent but no well-formed answer came back, so a job
16
+ * and a credit hold may exist. Present on success and failure alike; never changes type.
17
+ */
18
+ export type Submission = 'none' | 'created' | 'unknown';
19
+ /** Context a use case knows and the thrown error may not: identity of the operation in flight. */
20
+ export interface FailureContext {
21
+ jobId?: string;
22
+ jobStatus?: JobStatus | string;
23
+ idempotencyKey?: string;
24
+ quoteId?: string;
25
+ submission?: Submission;
26
+ /** The submission re-sent a recorded body instead of quoting anew. */
27
+ resumed?: boolean;
28
+ /** For submission 'unknown': what is actually on disk decides the recovery advice. */
29
+ recovery?: UnknownRecovery;
30
+ /** For `rerun`: the record's creation time, from which the advice states the deadline. */
31
+ recordedAt?: string;
32
+ /** SUBMISSION_PENDING_IDENTICAL: the unconfirmed record that blocks this submission (never the key the caller supplied). */
33
+ pendingIdempotencyKey?: string;
34
+ pendingQuoteId?: string;
35
+ pendingRecordedAt?: string;
36
+ pendingAgeSeconds?: number;
37
+ job?: GenerationJobDetail;
38
+ path?: string;
39
+ detail?: string;
40
+ httpStatus?: number;
41
+ billing?: ChatBilling;
42
+ }
43
+ /** Top-level mirrors of the job record kept for consumers of the 0.2.x `status --json` shape. The canonical copy is `job`. */
44
+ type LegacyJobMirror = Partial<Omit<GenerationJobDetail, 'error' | 'status' | 'jobId'>>;
45
+ export interface Failure extends LegacyJobMirror {
46
+ ok: false;
47
+ /** Stable machine code. Gateway task codes may be lowercase; everything else is UPPER_SNAKE. */
48
+ code: string;
49
+ /** Human-readable reason without code, path or HTTP suffixes. */
50
+ message: string;
51
+ /** Error class name. */
52
+ type: string;
53
+ httpStatus?: number;
54
+ jobId?: string;
55
+ /** Gateway task state; only present when a task exists. */
56
+ jobStatus?: JobStatus | string;
57
+ /** Local waiting state; never implies anything about the task. */
58
+ waitStatus?: 'TIMEOUT' | 'INTERRUPTED';
59
+ idempotencyKey?: string;
60
+ quoteId?: string;
61
+ submission?: Submission;
62
+ resumed?: boolean;
63
+ /** Recovery state of an unknown submission; never an instruction to create a new job. */
64
+ recovery?: UnknownRecovery;
65
+ /** CLI argv, not a shell command string. Absent when replay is unsafe or no record remains. */
66
+ recoveryCommand?: string[];
67
+ /** The recorded 23-hour replay deadline, ISO UTC. */
68
+ resumeDeadline?: string;
69
+ billing?: ChatBilling;
70
+ /** The gateway task record, including its raw `error` object. */
71
+ job?: GenerationJobDetail;
72
+ /** SUBMISSION_PENDING_IDENTICAL: identity and age of the unconfirmed identical record; `idempotencyKey` stays the key the caller supplied. */
73
+ pendingIdempotencyKey?: string;
74
+ pendingQuoteId?: string;
75
+ pendingRecordedAt?: string;
76
+ pendingAgeSeconds?: number;
77
+ /** Local file path the failure refers to (configuration, download target). */
78
+ path?: string;
79
+ /** Specific reason or server detail, already redacted. */
80
+ detail?: string;
81
+ /** @deprecated 0.3: use `message` plus `code`. The legacy formatted text; always a string. */
82
+ error: string;
83
+ /** @deprecated 0.3: use `jobStatus` or `waitStatus`. Task state for job failures, `TIMEOUT` for wait timeouts. */
84
+ status?: string;
85
+ /** @deprecated 0.3: use `code`. Present on task failures only. */
86
+ failureCode?: string;
87
+ /** @deprecated 0.3: use `message`. Present on task failures only. */
88
+ failureMessage?: string;
89
+ /** @deprecated 0.3: use `waitStatus === 'TIMEOUT'`. */
90
+ timedOut?: boolean;
91
+ }
92
+ export type Success<T> = {
93
+ ok: true;
94
+ } & T;
95
+ export type Outcome<T> = Success<T> | Failure;
96
+ /**
97
+ * The only place a failure envelope is assembled. Both surfaces render this object as-is;
98
+ * any new field must be added here and nowhere else.
99
+ */
100
+ export declare function failure(error: unknown, ctx?: FailureContext): Failure;
101
+ export interface JobSuccess extends GenerationJobDetail {
102
+ jobStatus: JobStatus;
103
+ job: GenerationJobDetail;
104
+ }
105
+ /** A read of an existing task. A terminal task without a result is a failure that still carries the record. */
106
+ export declare function jobOutcome(detail: GenerationJobDetail, requireOutput?: boolean): Outcome<JobSuccess>;
107
+ export interface WaitSuccess extends JobSuccess {
108
+ timedOut: false;
109
+ }
110
+ export declare function waitOutcome(detail: GenerationJobDetail): Outcome<WaitSuccess>;
111
+ export interface QuoteSuccess extends GenerationQuoteResponse {
112
+ quote: GenerationQuoteResponse;
113
+ requiresConfirmation: true;
114
+ submitted: false;
115
+ }
116
+ export declare function quoteOutcome(quote: GenerationQuoteResponse): Success<QuoteSuccess>;
117
+ export interface ChatSuccess {
118
+ idempotencyKey: string;
119
+ modelId: string;
120
+ text: string;
121
+ usage: unknown;
122
+ billing: ChatBilling | null;
123
+ /** The gateway's full chat completion body; the canonical copy. */
124
+ response: Record<string, unknown>;
125
+ /**
126
+ * @deprecated 0.3: read `response.*` (or `text`). The raw body's fields are also spread at the
127
+ * top level so 0.2.x scripts reading `choices[0].message.content` keep working. Where a raw
128
+ * field shares a name with a canonical one (`usage`, `billing`) the values are the same.
129
+ */
130
+ [rawField: string]: unknown;
131
+ }
132
+ export declare function chatOutcome(response: Record<string, unknown>, idempotencyKey: string, requestedModel: string): Success<ChatSuccess>;
133
+ export {};
134
+ //# sourceMappingURL=outcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/core/outcome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { LumenKeyError, parseChatBilling } from './client.js';
2
+ import { errorSentence, submissionUnknownAdvice, submissionUnknownMessage } from './locale.js';
3
+ import { assertJobResult } from './poller.js';
4
+ import { RESUMABLE_WINDOW_MS } from './submission-journal.js';
5
+ export function chatText(response) {
6
+ const message = response.choices?.[0]?.message;
7
+ if (typeof message?.content === 'string' && message.content.trim())
8
+ return message.content;
9
+ if (typeof message?.refusal === 'string' && message.refusal.trim())
10
+ return message.refusal;
11
+ if (Array.isArray(message?.tool_calls) && message.tool_calls.length)
12
+ return JSON.stringify({ tool_calls: message.tool_calls });
13
+ throw new LumenKeyError('CHAT_EMPTY_RESPONSE');
14
+ }
15
+ const CODE = /^(?:[A-Z][A-Z0-9_]{0,79}|[a-z][a-z0-9_]{0,63})$/;
16
+ function text(value) {
17
+ return typeof value === 'string' && value ? value : undefined;
18
+ }
19
+ function submissionOf(value) {
20
+ return value === 'none' || value === 'created' || value === 'unknown' ? value : undefined;
21
+ }
22
+ /**
23
+ * The only place a failure envelope is assembled. Both surfaces render this object as-is;
24
+ * any new field must be added here and nowhere else.
25
+ */
26
+ export function failure(error, ctx = {}) {
27
+ const e = (error && typeof error === 'object' ? error : {});
28
+ const code = typeof e.code === 'string' && CODE.test(e.code) ? e.code : 'CLI_COMMAND_FAILED';
29
+ const job = ctx.job ?? (e.job && typeof e.job === 'object' ? e.job : undefined);
30
+ const jobId = ctx.jobId ?? text(e.jobId) ?? job?.jobId;
31
+ const jobStatus = ctx.jobStatus ?? text(e.jobStatus) ?? job?.status;
32
+ const idempotencyKey = ctx.idempotencyKey ?? text(e.idempotencyKey);
33
+ const quoteId = ctx.quoteId ?? text(e.quoteId);
34
+ const submission = ctx.submission ?? submissionOf(e.submission);
35
+ const resumed = ctx.resumed ?? (typeof e.resumed === 'boolean' ? e.resumed : undefined);
36
+ const httpStatus = ctx.httpStatus ?? (typeof e.status === 'number' ? e.status : undefined);
37
+ const billing = ctx.billing ?? (error instanceof LumenKeyError ? error.billing : undefined);
38
+ const path = ctx.path ?? text(e.path);
39
+ const detail = ctx.detail ?? text(e.detail);
40
+ const pendingIdempotencyKey = ctx.pendingIdempotencyKey ?? text(e.pendingIdempotencyKey);
41
+ const pendingQuoteId = ctx.pendingQuoteId ?? text(e.pendingQuoteId);
42
+ const pendingRecordedAt = ctx.pendingRecordedAt ?? text(e.pendingRecordedAt);
43
+ const pendingAgeSeconds = ctx.pendingAgeSeconds ?? (typeof e.pendingAgeSeconds === 'number' ? e.pendingAgeSeconds : undefined);
44
+ const waitStatus = code === 'WAIT_TIMEOUT' ? 'TIMEOUT' : code === 'WAIT_INTERRUPTED' ? 'INTERRUPTED' : undefined;
45
+ // IDEMPOTENCY_CONFLICT carries its own, more specific recovery text from the use case.
46
+ const advice = submission === 'unknown' && idempotencyKey && code !== 'IDEMPOTENCY_CONFLICT' ? ` ${submissionUnknownAdvice(idempotencyKey, ctx.recovery ?? 'ledger', ctx.recordedAt)}` : '';
47
+ const recovery = submission === 'unknown' ? code === 'IDEMPOTENCY_CONFLICT' ? 'ledger' : ctx.recovery ?? 'ledger' : undefined;
48
+ const recorded = ctx.recordedAt ? Date.parse(ctx.recordedAt) : NaN;
49
+ const deadline = Number.isFinite(recorded) ? new Date(recorded + RESUMABLE_WINDOW_MS) : undefined;
50
+ const resumeDeadline = recovery && recovery !== 'ledger' ? deadline?.toISOString() : undefined;
51
+ const recoveryCommand = recovery === 'rerun' || recovery === 'resume-command'
52
+ ? idempotencyKey ? ['lumenkey', 'tasks', 'resume', `--key=${idempotencyKey}`] : undefined : undefined;
53
+ const message = recovery ? submissionUnknownMessage(recovery, deadline)
54
+ : `${error instanceof LumenKeyError ? error.publicMessage : error instanceof Error ? error.message : errorSentence(code)}${advice}`;
55
+ const legacy = `${error instanceof Error ? error.message : errorSentence(code)}${advice}`;
56
+ const { error: _jobError, status: _jobState, jobId: _id, ...mirror } = job ?? {};
57
+ return {
58
+ ...mirror,
59
+ ok: false, code, message, type: error instanceof Error ? error.name : 'Error',
60
+ ...(httpStatus !== undefined ? { httpStatus } : {}),
61
+ ...(jobId ? { jobId } : {}),
62
+ ...(jobStatus ? { jobStatus } : {}),
63
+ ...(waitStatus ? { waitStatus } : {}),
64
+ ...(idempotencyKey ? { idempotencyKey } : {}),
65
+ ...(quoteId ? { quoteId } : {}),
66
+ ...(submission ? { submission } : {}),
67
+ ...(resumed !== undefined ? { resumed } : {}),
68
+ ...(recovery ? { recovery } : {}),
69
+ ...(recoveryCommand ? { recoveryCommand } : {}),
70
+ ...(resumeDeadline ? { resumeDeadline } : {}),
71
+ ...(billing ? { billing } : {}),
72
+ ...(job ? { job } : {}),
73
+ ...(pendingIdempotencyKey ? { pendingIdempotencyKey } : {}),
74
+ ...(pendingQuoteId ? { pendingQuoteId } : {}),
75
+ ...(pendingRecordedAt ? { pendingRecordedAt } : {}),
76
+ ...(pendingAgeSeconds !== undefined ? { pendingAgeSeconds } : {}),
77
+ ...(path ? { path } : {}),
78
+ ...(detail ? { detail } : {}),
79
+ error: legacy,
80
+ ...(job ? { status: job.status, failureCode: code, failureMessage: message } : {}),
81
+ ...(waitStatus === 'TIMEOUT' ? { status: 'TIMEOUT', timedOut: true } : {}),
82
+ };
83
+ }
84
+ /** A read of an existing task. A terminal task without a result is a failure that still carries the record. */
85
+ export function jobOutcome(detail, requireOutput = detail.status === 'succeeded') {
86
+ try {
87
+ assertJobResult(detail, requireOutput);
88
+ }
89
+ catch (error) {
90
+ return failure(error, { job: detail });
91
+ }
92
+ return { ok: true, ...detail, jobStatus: detail.status, job: detail };
93
+ }
94
+ export function waitOutcome(detail) {
95
+ const read = jobOutcome(detail, true);
96
+ return read.ok ? { ...read, timedOut: false } : read;
97
+ }
98
+ export function quoteOutcome(quote) {
99
+ return { ok: true, ...quote, quote, requiresConfirmation: true, submitted: false };
100
+ }
101
+ export function chatOutcome(response, idempotencyKey, requestedModel) {
102
+ return {
103
+ ...response,
104
+ ok: true, idempotencyKey,
105
+ modelId: typeof response.model === 'string' ? response.model : requestedModel,
106
+ text: chatText(response),
107
+ usage: response.usage ?? null,
108
+ billing: parseChatBilling(response.billing) ?? null,
109
+ response,
110
+ };
111
+ }
112
+ //# sourceMappingURL=outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome.js","sourceRoot":"","sources":["../../src/core/outcome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * How a surface treats a relative save path. A shell user means "relative to where I am", so the
3
+ * CLI resolves against its cwd. An MCP server's cwd belongs to the host, not the caller, so the MCP
4
+ * surface only accepts absolute paths (after `~/` expansion) and refuses the rest with a stable code
5
+ * before anything billable happens.
6
+ */
7
+ export type OutputPathPolicy = 'resolve-cwd' | 'absolute-only';
8
+ /** Expand a leading `~` / `~/` (never `~user`) to the home directory, then apply the surface policy. */
9
+ export declare function resolveOutputPath(raw: string, policy: OutputPathPolicy, home?: string): string;
10
+ //# sourceMappingURL=output-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-path.d.ts","sourceRoot":"","sources":["../../src/core/output-path.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,eAAe,CAAC;AAE/D,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,SAAe,GAAG,MAAM,CAOpG"}
@@ -0,0 +1,15 @@
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
+ import { LumenKeyError } from './client.js';
4
+ import { downloadPathNotAbsoluteDetail } from './locale.js';
5
+ /** Expand a leading `~` / `~/` (never `~user`) to the home directory, then apply the surface policy. */
6
+ export function resolveOutputPath(raw, policy, home = os.homedir()) {
7
+ let value = raw;
8
+ if (value === '~' || value.startsWith('~/') || (process.platform === 'win32' && value.startsWith('~\\')))
9
+ value = path.join(home, value.slice(1));
10
+ if (policy === 'absolute-only' && !path.isAbsolute(value)) {
11
+ throw Object.assign(new LumenKeyError('DOWNLOAD_PATH_NOT_ABSOLUTE', undefined, undefined, downloadPathNotAbsoluteDetail()), { path: raw });
12
+ }
13
+ return path.resolve(value);
14
+ }
15
+ //# sourceMappingURL=output-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-path.js","sourceRoot":"","sources":["../../src/core/output-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAU5D,wGAAwG;AACxG,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,MAAwB,EAAE,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE;IAC1F,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClJ,IAAI,MAAM,KAAK,eAAe,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,4BAA4B,EAAE,SAAS,EAAE,SAAS,EAAE,6BAA6B,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7I,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { z } from 'zod';
2
+ import type { ChatRequest } from './chat.js';
3
+ import type { GenerationRequest, ResumeRequest, WaitRequest } from './generation.js';
4
+ /**
5
+ * One parameter specification per command. The CLI's CAC options and the MCP tools' zod shapes
6
+ * are both generated from it, and both surfaces hand their raw values to the same normalizer, so a
7
+ * parameter can neither exist on one surface only (unless declared so) nor be validated differently.
8
+ * The zod shape carries `required` and the numeric constraints so `tools/list` tells agents the
9
+ * truth up front; the codes a violation produces are decided in core, not by the schema.
10
+ * Wording is surface-neutral; a surface may only name its own option in its own messages.
11
+ */
12
+ export type Surface = 'cli' | 'mcp';
13
+ /** `numeric`: a number or a numeric string, coerced later by the catalog (count); `string[]`: one string or a list. */
14
+ export type ParamKind = 'string' | 'number' | 'numeric' | 'boolean' | 'string[]';
15
+ export type NumericConstraint = 'integer-nonnegative' | 'positive' | 'nonnegative';
16
+ export interface ParamSpec {
17
+ /** Canonical name: the MCP field name and the key of the normalized argument object. */
18
+ name: string;
19
+ kind: ParamKind;
20
+ /** Advertised as required in the MCP schema (and demanded by the normalizer on both surfaces). */
21
+ required?: boolean;
22
+ /** Numeric constraint advertised in the MCP schema; the normalizer enforces the same rule on both surfaces. */
23
+ constraint?: NumericConstraint;
24
+ /** CLI long flag (`--aspect-ratio`); the CAC option key is its camelCase. */
25
+ flag?: string;
26
+ /** Additional CLI spellings (`-m`, `--ratio`). */
27
+ aliases?: string[];
28
+ /** CLI value placeholder, e.g. `<modelId>`; the CLI may count in other units than the canonical one. */
29
+ placeholder?: string;
30
+ describe: {
31
+ en: string;
32
+ zh: string;
33
+ };
34
+ /** Which surfaces expose it; both when omitted. */
35
+ only?: Surface;
36
+ default?: string | number;
37
+ }
38
+ export declare const videoParams: readonly ParamSpec[];
39
+ export declare const imageParams: readonly ParamSpec[];
40
+ export declare const chatParams: readonly ParamSpec[];
41
+ export declare const waitParams: readonly ParamSpec[];
42
+ /** `tasks resume <key>` / `lumenkey_resume_submission`: the key plus wait and output options; no generation argument. */
43
+ export declare const resumeParams: readonly ParamSpec[];
44
+ export declare function forSurface(spec: readonly ParamSpec[], surface: Surface): ParamSpec[];
45
+ /** CAC option key for a flag: `--aspect-ratio` → `aspectRatio`. */
46
+ export declare function cacKey(flag: string): string;
47
+ /** `[flags, description, config]` triples for `cli.option(...)`. */
48
+ export declare function cacOptions(spec: readonly ParamSpec[]): Array<[string, string, {
49
+ default?: string | number;
50
+ } | undefined]>;
51
+ /** CLI spellings of a parameter, for raw-argv reads (`--aspect-ratio`, `--ratio`, `-m`...). */
52
+ export declare function cliSpellings(param: ParamSpec): string[];
53
+ /** Zod shape for an MCP tool from the same specification: required fields stay required, numeric constraints are advertised. */
54
+ export declare function zodShape(spec: readonly ParamSpec[]): z.ZodRawShape;
55
+ /** Collect canonical arguments from CAC's parsed options (camelCase of every CLI spelling). */
56
+ export declare function argsFromCac(spec: readonly ParamSpec[], options: Record<string, unknown>): Record<string, unknown>;
57
+ /** Wait options: the CLI counts seconds, MCP milliseconds; both end as milliseconds and the same code. */
58
+ export declare function waitMs(value: unknown, surface: Surface, fallbackMs: number): number;
59
+ export type GenerationArgs = Omit<GenerationRequest, 'signal' | 'onEvent' | 'home'>;
60
+ /** From raw per-surface values to one validated request; wording never names the other surface's option. */
61
+ export declare function generationArgs(kind: 'video' | 'image', raw: Record<string, unknown>, surface: Surface): GenerationArgs;
62
+ /** A confirm was requested, so the outcome must still say what happened to the submission: nothing was sent. Used by both surfaces' argument paths. */
63
+ export declare function nothingSentIfConfirmed(error: unknown, raw: unknown): unknown;
64
+ export declare function chatArgs(raw: Record<string, unknown>, surface: Surface): ChatRequest;
65
+ export declare function waitArgs(raw: Record<string, unknown>, surface: Surface): WaitRequest;
66
+ export type ResumeArgs = Omit<ResumeRequest, 'signal' | 'onEvent' | 'home'>;
67
+ export declare function resumeArgs(raw: Record<string, unknown>, surface: Surface): ResumeArgs;
68
+ //# sourceMappingURL=params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/core/params.ts"],"names":[],"mappings":"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"}