prompsit-cli 26.302.1318 → 26.303.1903
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 +27 -22
- package/dist/api/curl.d.ts.map +1 -1
- package/dist/api/curl.js +3 -0
- package/dist/api/curl.js.map +1 -1
- package/dist/api/models.d.ts +25 -15
- package/dist/api/models.d.ts.map +1 -1
- package/dist/api/models.js +18 -13
- package/dist/api/models.js.map +1 -1
- package/dist/api/resources/data.d.ts +1 -1
- package/dist/api/resources/data.d.ts.map +1 -1
- package/dist/api/resources/data.js +8 -5
- package/dist/api/resources/data.js.map +1 -1
- package/dist/api/resources/discovery.d.ts +3 -3
- package/dist/api/resources/discovery.d.ts.map +1 -1
- package/dist/api/resources/discovery.js +5 -7
- package/dist/api/resources/discovery.js.map +1 -1
- package/dist/commands/annotate.d.ts +0 -1
- package/dist/commands/annotate.d.ts.map +1 -1
- package/dist/commands/annotate.js +37 -86
- package/dist/commands/annotate.js.map +1 -1
- package/dist/commands/batch-processor.d.ts.map +1 -1
- package/dist/commands/batch-processor.js +34 -29
- package/dist/commands/batch-processor.js.map +1 -1
- package/dist/commands/evaluate.d.ts +15 -3
- package/dist/commands/evaluate.d.ts.map +1 -1
- package/dist/commands/evaluate.js +142 -133
- package/dist/commands/evaluate.js.map +1 -1
- package/dist/commands/job-tracking.d.ts +2 -0
- package/dist/commands/job-tracking.d.ts.map +1 -1
- package/dist/commands/job-tracking.js +29 -3
- package/dist/commands/job-tracking.js.map +1 -1
- package/dist/commands/score.d.ts +2 -0
- package/dist/commands/score.d.ts.map +1 -1
- package/dist/commands/score.js +61 -97
- package/dist/commands/score.js.map +1 -1
- package/dist/commands/show-formats.js +19 -18
- package/dist/commands/show-formats.js.map +1 -1
- package/dist/commands/show-languages.d.ts +3 -5
- package/dist/commands/show-languages.d.ts.map +1 -1
- package/dist/commands/show-languages.js +34 -34
- package/dist/commands/show-languages.js.map +1 -1
- package/dist/commands/translate.d.ts +12 -3
- package/dist/commands/translate.d.ts.map +1 -1
- package/dist/commands/translate.js +102 -139
- package/dist/commands/translate.js.map +1 -1
- package/dist/config/schemas.d.ts +2 -0
- package/dist/config/schemas.d.ts.map +1 -1
- package/dist/config/schemas.js +1 -0
- package/dist/config/schemas.js.map +1 -1
- package/dist/errors/catalog.js +1 -1
- package/dist/errors/catalog.js.map +1 -1
- package/dist/i18n/catalog.d.ts +18 -21
- package/dist/i18n/catalog.d.ts.map +1 -1
- package/dist/i18n/catalog.js +18 -21
- package/dist/i18n/catalog.js.map +1 -1
- package/dist/output/progress-display.d.ts.map +1 -1
- package/dist/output/progress-display.js +0 -9
- package/dist/output/progress-display.js.map +1 -1
- package/dist/output/tables/catalog.d.ts +1 -2
- package/dist/output/tables/catalog.d.ts.map +1 -1
- package/dist/output/tables/catalog.js +2 -3
- package/dist/output/tables/catalog.js.map +1 -1
- package/dist/program.js +8 -7
- package/dist/program.js.map +1 -1
- package/dist/repl/controller.d.ts.map +1 -1
- package/dist/repl/controller.js +33 -11
- package/dist/repl/controller.js.map +1 -1
- package/dist/repl/examples.d.ts +8 -4
- package/dist/repl/examples.d.ts.map +1 -1
- package/dist/repl/examples.js +34 -22
- package/dist/repl/examples.js.map +1 -1
- package/dist/repl/executor.d.ts.map +1 -1
- package/dist/repl/executor.js +63 -60
- package/dist/repl/executor.js.map +1 -1
- package/dist/repl/help.d.ts.map +1 -1
- package/dist/repl/help.js +5 -5
- package/dist/repl/help.js.map +1 -1
- package/dist/repl/input/autocomplete-provider.d.ts +1 -1
- package/dist/repl/input/autocomplete-provider.d.ts.map +1 -1
- package/dist/repl/input/autocomplete-provider.js +24 -2
- package/dist/repl/input/autocomplete-provider.js.map +1 -1
- package/dist/repl/input/completer.d.ts.map +1 -1
- package/dist/repl/input/completer.js +10 -6
- package/dist/repl/input/completer.js.map +1 -1
- package/dist/repl/input/input-handler.d.ts.map +1 -1
- package/dist/repl/input/input-handler.js +5 -0
- package/dist/repl/input/input-handler.js.map +1 -1
- package/dist/repl/registry.d.ts +16 -11
- package/dist/repl/registry.d.ts.map +1 -1
- package/dist/repl/registry.js +101 -131
- package/dist/repl/registry.js.map +1 -1
- package/dist/repl/service.d.ts +1 -1
- package/dist/repl/service.js +1 -1
- package/dist/repl/ui/components/history-component.d.ts.map +1 -1
- package/dist/repl/ui/components/history-component.js +2 -2
- package/dist/repl/ui/components/history-component.js.map +1 -1
- package/dist/runtime/file-args.d.ts.map +1 -1
- package/dist/runtime/file-args.js +3 -1
- package/dist/runtime/file-args.js.map +1 -1
- package/dist/runtime/input-detect.d.ts +10 -0
- package/dist/runtime/input-detect.d.ts.map +1 -0
- package/dist/runtime/input-detect.js +19 -0
- package/dist/runtime/input-detect.js.map +1 -0
- package/dist/runtime/progress-sink.d.ts +0 -4
- package/dist/runtime/progress-sink.d.ts.map +1 -1
- package/dist/runtime/progress-sink.js +0 -2
- package/dist/runtime/progress-sink.js.map +1 -1
- package/dist/shared/constants.d.ts +7 -1
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +7 -1
- package/dist/shared/constants.js.map +1 -1
- package/examples/{sample_scored.tmx → score/sample.tmx} +7 -7
- package/package.json +4 -2
- package/scripts/post-install.cjs +23 -0
- /package/examples/{sample.jsonl → annotate/sample.jsonl} +0 -0
- /package/examples/{sample.tmx → evaluate/sample.tmx} +0 -0
- /package/examples/{sample.csv → translate/sample.csv} +0 -0
- /package/examples/{sample.txt → translate/sample.txt} +0 -0
- /package/examples/{sample.xliff → translate/sample.xliff} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// Flat translate command: @ prefix determines text vs file mode at runtime.
|
|
2
|
+
// Text mode (no @): sync inline translation via POST /v1/translation/translate.
|
|
3
|
+
// File mode (@): async document upload + track + download via SSE/polling.
|
|
3
4
|
import { Command } from "@commander-js/extra-typings";
|
|
4
5
|
import { basename } from "node:path";
|
|
5
6
|
import { getApiClient } from "../api/client.js";
|
|
@@ -14,43 +15,43 @@ import { ErrorCode } from "../errors/codes.js";
|
|
|
14
15
|
import { getLogger } from "../logging/index.js";
|
|
15
16
|
import { failCommand, handleCommandError } from "./error-handler.js";
|
|
16
17
|
import { validateArgOptionOrder } from "../cli/arg-order.js";
|
|
18
|
+
import { stripFilePrefix } from "../runtime/input-detect.js";
|
|
17
19
|
import { tryExpandFileArgs, resolveOutputPaths } from "../runtime/file-args.js";
|
|
18
20
|
import { getCurrentAbortSignal } from "../runtime/request-context.js";
|
|
19
21
|
const log = getLogger(import.meta.url);
|
|
20
|
-
// Boolean flags
|
|
21
|
-
const
|
|
22
|
+
// Boolean flags that don't consume the next token as a value
|
|
23
|
+
const BOOL_FLAGS = new Set(["--qe", "--languages", "-l", "--formats"]);
|
|
22
24
|
/**
|
|
23
|
-
*
|
|
25
|
+
* Flat translate command.
|
|
24
26
|
*
|
|
25
|
-
*
|
|
27
|
+
* Mode detection: @ prefix on positional args = file mode, no @ = text mode.
|
|
28
|
+
* Info flags (--formats, --languages) work directly without mode selection.
|
|
26
29
|
*/
|
|
27
30
|
export const translateCommand = new Command("translate")
|
|
28
|
-
.summary("Translate text or documents
|
|
29
|
-
.description("
|
|
30
|
-
.
|
|
31
|
-
/**
|
|
32
|
-
* Text translation subcommand.
|
|
33
|
-
*
|
|
34
|
-
* Translates one or more texts inline with optional QE scores.
|
|
35
|
-
* Output modes: plain (default), table (--qe), JSON (--json global).
|
|
36
|
-
*/
|
|
37
|
-
translateCommand
|
|
38
|
-
.command("text", { isDefault: true, hidden: true })
|
|
39
|
-
.description("Translate text inline")
|
|
40
|
-
.argument("[texts...]", "Text(s) to translate")
|
|
31
|
+
.summary("Translate text or documents")
|
|
32
|
+
.description("Translate text inline or upload document files for translation")
|
|
33
|
+
.argument("[inputs...]", "Text(s) to translate or @file(s) to upload")
|
|
41
34
|
.option("-s, --source <lang>", "Source language code")
|
|
42
35
|
.option("-t, --target <lang>", "Target language code")
|
|
43
|
-
.option("--qe", "Enable quality estimation", false)
|
|
36
|
+
.option("--qe", "Enable quality estimation (text mode)", false)
|
|
37
|
+
.option("--out <dir>", "Output directory (file mode, default: beside input)")
|
|
38
|
+
.option("--output-format <format>", "Target format conversion (e.g. po, arb, vtt)")
|
|
39
|
+
.option("--formats", "Show supported document formats", false)
|
|
44
40
|
.option("-l, --languages", "Show available language pairs", false)
|
|
45
|
-
.
|
|
46
|
-
|
|
41
|
+
.helpCommand(false)
|
|
42
|
+
.action(async (inputs, opts) => {
|
|
43
|
+
// Info-only early exits (no inputs required)
|
|
44
|
+
if (opts.formats) {
|
|
45
|
+
await showFormats("document");
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
47
48
|
if (opts.languages) {
|
|
48
|
-
await showLanguages(
|
|
49
|
+
await showLanguages({ source: opts.source, target: opts.target });
|
|
49
50
|
return;
|
|
50
51
|
}
|
|
51
|
-
//
|
|
52
|
-
if (
|
|
53
|
-
failCommand(ErrorCode.VALIDATION, t("validate.missing_argument", { name: "
|
|
52
|
+
// Validate required inputs
|
|
53
|
+
if (inputs.length === 0) {
|
|
54
|
+
failCommand(ErrorCode.VALIDATION, t("validate.missing_argument", { name: "inputs" }));
|
|
54
55
|
return;
|
|
55
56
|
}
|
|
56
57
|
if (!opts.source) {
|
|
@@ -61,18 +62,52 @@ translateCommand
|
|
|
61
62
|
failCommand(ErrorCode.VALIDATION, t("validate.missing_option", { option: "-t, --target <lang>" }));
|
|
62
63
|
return;
|
|
63
64
|
}
|
|
64
|
-
//
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
// Classify inputs: @ prefix = file, else = text
|
|
66
|
+
const fileInputs = [];
|
|
67
|
+
const textInputs = [];
|
|
68
|
+
for (const input of inputs) {
|
|
69
|
+
const stripped = stripFilePrefix(input);
|
|
70
|
+
if (stripped === null) {
|
|
71
|
+
textInputs.push(input);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
fileInputs.push(stripped);
|
|
72
75
|
}
|
|
73
76
|
}
|
|
77
|
+
if (fileInputs.length > 0 && textInputs.length > 0) {
|
|
78
|
+
failCommand(ErrorCode.VALIDATION, t("validate.translate.mixed_inputs"));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// After guards above, source and target are guaranteed strings
|
|
82
|
+
const narrowed = { source: opts.source, target: opts.target };
|
|
83
|
+
if (fileInputs.length > 0) {
|
|
84
|
+
await translateFileMode(fileInputs, {
|
|
85
|
+
...narrowed,
|
|
86
|
+
out: opts.out,
|
|
87
|
+
outputFormat: opts.outputFormat,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// POSIX arg order validation (text mode only, CLI context)
|
|
92
|
+
const translateIdx = process.argv.indexOf("translate");
|
|
93
|
+
if (translateIdx !== -1) {
|
|
94
|
+
const rawArgs = process.argv.slice(translateIdx + 1);
|
|
95
|
+
const violation = validateArgOptionOrder(rawArgs, BOOL_FLAGS);
|
|
96
|
+
if (violation) {
|
|
97
|
+
failCommand(ErrorCode.VALIDATION, t("validate.translate.text.arg_order", { violation }));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
await translateTextMode(textInputs, { ...narrowed, qe: opts.qe });
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
async function translateTextMode(texts, opts) {
|
|
74
105
|
const startMs = Date.now();
|
|
75
|
-
log.info("Command started", {
|
|
106
|
+
log.info("Command started", {
|
|
107
|
+
command: "translate",
|
|
108
|
+
mode: "text",
|
|
109
|
+
texts_count: String(texts.length),
|
|
110
|
+
});
|
|
76
111
|
try {
|
|
77
112
|
const response = await getApiClient().translation.translate({
|
|
78
113
|
texts,
|
|
@@ -81,15 +116,14 @@ translateCommand
|
|
|
81
116
|
enableQe: opts.qe,
|
|
82
117
|
});
|
|
83
118
|
log.info("Command completed", {
|
|
84
|
-
command: "translate
|
|
119
|
+
command: "translate",
|
|
120
|
+
mode: "text",
|
|
85
121
|
duration_ms: String(Date.now() - startMs),
|
|
86
122
|
});
|
|
87
|
-
// Output routing: --qe > plain
|
|
88
123
|
if (opts.qe) {
|
|
89
124
|
terminal.table(createTranslationTableModel(toTranslationResponseVM(response), texts));
|
|
90
125
|
}
|
|
91
126
|
else {
|
|
92
|
-
// Plain mode: one translated text per line
|
|
93
127
|
for (const item of response.translations) {
|
|
94
128
|
terminal.line(item.translated_text);
|
|
95
129
|
}
|
|
@@ -97,47 +131,13 @@ translateCommand
|
|
|
97
131
|
}
|
|
98
132
|
catch (error) {
|
|
99
133
|
handleCommandError(log, error, {
|
|
100
|
-
command: "translate
|
|
134
|
+
command: "translate",
|
|
135
|
+
mode: "text",
|
|
101
136
|
duration_ms: String(Date.now() - startMs),
|
|
102
137
|
});
|
|
103
138
|
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
translateCommand
|
|
107
|
-
.command("file")
|
|
108
|
-
.description("Translate document file(s)")
|
|
109
|
-
.argument("[files...]", "Document file(s) to translate")
|
|
110
|
-
.option("-s, --source <lang>", "Source language code")
|
|
111
|
-
.option("-t, --target <lang>", "Target language code")
|
|
112
|
-
.option("--out <dir>", "Output directory (default: beside input file)")
|
|
113
|
-
.option("--output-format <format>", "Target format conversion (e.g. po, arb, vtt)")
|
|
114
|
-
.option("--formats", "Show supported document formats", false)
|
|
115
|
-
.option("-l, --languages", "Show available language pairs", false)
|
|
116
|
-
.action(async (files, opts) => {
|
|
117
|
-
// Early-exit: --formats shows supported formats and returns
|
|
118
|
-
if (opts.formats) {
|
|
119
|
-
await showFormats("document");
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
// Early-exit: --languages shows available language pairs and returns
|
|
123
|
-
if (opts.languages) {
|
|
124
|
-
await showLanguages("translation", { source: opts.source, target: opts.target });
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
// Manual validation (Commander can't enforce required args/opts with --formats/--languages)
|
|
128
|
-
if (files.length === 0) {
|
|
129
|
-
failCommand(ErrorCode.VALIDATION, t("validate.missing_argument", { name: "files" }));
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
if (!opts.source) {
|
|
133
|
-
failCommand(ErrorCode.VALIDATION, t("validate.missing_option", { option: "-s, --source <lang>" }));
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
if (!opts.target) {
|
|
137
|
-
failCommand(ErrorCode.VALIDATION, t("validate.missing_option", { option: "-t, --target <lang>" }));
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
// Phase 1: Expand files/directories and validate read access
|
|
139
|
+
}
|
|
140
|
+
async function translateFileMode(files, opts) {
|
|
141
141
|
const expandResult = tryExpandFileArgs(files);
|
|
142
142
|
if (!expandResult.ok) {
|
|
143
143
|
failCommand(ErrorCode.VALIDATION, expandResult.message);
|
|
@@ -146,7 +146,8 @@ translateCommand
|
|
|
146
146
|
const resolvedFiles = expandResult.files;
|
|
147
147
|
const startMs = Date.now();
|
|
148
148
|
log.info("Command started", {
|
|
149
|
-
command: "translate
|
|
149
|
+
command: "translate",
|
|
150
|
+
mode: "file",
|
|
150
151
|
files_count: String(resolvedFiles.length),
|
|
151
152
|
});
|
|
152
153
|
const client = getApiClient();
|
|
@@ -155,70 +156,32 @@ translateCommand
|
|
|
155
156
|
const targetLang = opts.target;
|
|
156
157
|
const suffix = `_${sourceLang}-${targetLang}`;
|
|
157
158
|
const targetPaths = resolveOutputPaths(resolvedFiles, suffix, opts.out, opts.outputFormat);
|
|
158
|
-
await (
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
description: basename(filePath),
|
|
181
|
-
silent: true,
|
|
182
|
-
signal,
|
|
183
|
-
onProgress,
|
|
184
|
-
});
|
|
185
|
-
return client.jobs.download(resultUrl, targetPaths[index], signal);
|
|
186
|
-
},
|
|
187
|
-
formatSuccess: (path) => `${t("translate.file.success")} ${path}`,
|
|
188
|
-
command: "translate file",
|
|
189
|
-
signal,
|
|
190
|
-
}));
|
|
159
|
+
await runBatch({
|
|
160
|
+
items: resolvedFiles,
|
|
161
|
+
label: (f) => basename(f),
|
|
162
|
+
process: async (filePath, index, onProgress) => {
|
|
163
|
+
const resp = await client.translation.uploadDocument({
|
|
164
|
+
filePath,
|
|
165
|
+
sourceLang,
|
|
166
|
+
targetLang,
|
|
167
|
+
outputFormat: opts.outputFormat,
|
|
168
|
+
});
|
|
169
|
+
const resultUrl = await trackJob(client, resp.job_id, {
|
|
170
|
+
description: basename(filePath),
|
|
171
|
+
silent: true,
|
|
172
|
+
signal,
|
|
173
|
+
onProgress,
|
|
174
|
+
});
|
|
175
|
+
return client.jobs.download(resultUrl, targetPaths[index], signal);
|
|
176
|
+
},
|
|
177
|
+
formatSuccess: (path) => `${t("translate.file.success")} ${path}`,
|
|
178
|
+
command: "translate",
|
|
179
|
+
signal,
|
|
180
|
+
});
|
|
191
181
|
log.info("Command completed", {
|
|
192
|
-
command: "translate
|
|
182
|
+
command: "translate",
|
|
183
|
+
mode: "file",
|
|
193
184
|
duration_ms: String(Date.now() - startMs),
|
|
194
185
|
});
|
|
195
|
-
});
|
|
196
|
-
/** Single file: detailed UX with trackJob managing its own spinner. */
|
|
197
|
-
async function translateSingleFile(opts) {
|
|
198
|
-
const { client, filePath, targetPath, source, target, outputFormat, signal, startMs } = opts;
|
|
199
|
-
try {
|
|
200
|
-
terminal.dim(t("translate.file.upload_status"));
|
|
201
|
-
const uploadResponse = await client.translation.uploadDocument({
|
|
202
|
-
filePath,
|
|
203
|
-
sourceLang: source,
|
|
204
|
-
targetLang: target,
|
|
205
|
-
outputFormat,
|
|
206
|
-
});
|
|
207
|
-
const jobId = uploadResponse.job_id;
|
|
208
|
-
terminal.dim(`${t("translate.file.job_created")} ${jobId}`);
|
|
209
|
-
const resultUrl = await trackJob(client, jobId, {
|
|
210
|
-
description: `Translating ${basename(filePath)}`,
|
|
211
|
-
signal,
|
|
212
|
-
});
|
|
213
|
-
const actualPath = await client.jobs.download(resultUrl, targetPath, signal);
|
|
214
|
-
terminal.success(`${t("translate.file.success")} ${actualPath}`);
|
|
215
|
-
}
|
|
216
|
-
catch (error) {
|
|
217
|
-
handleCommandError(log, error, {
|
|
218
|
-
command: "translate file",
|
|
219
|
-
file: basename(filePath),
|
|
220
|
-
duration_ms: String(Date.now() - startMs),
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
186
|
}
|
|
224
187
|
//# sourceMappingURL=translate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"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"}
|
package/dist/config/schemas.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export declare const CliConfigSchema: z.ZodObject<{
|
|
|
27
27
|
polling: "polling";
|
|
28
28
|
}>>;
|
|
29
29
|
file_concurrency: z.ZodDefault<z.ZodNumber>;
|
|
30
|
+
job_timeout: z.ZodDefault<z.ZodNumber>;
|
|
30
31
|
}, z.core.$strip>;
|
|
31
32
|
/**
|
|
32
33
|
* Remote error telemetry configuration schema
|
|
@@ -66,6 +67,7 @@ export declare const SettingsSchema: z.ZodObject<{
|
|
|
66
67
|
polling: "polling";
|
|
67
68
|
}>>;
|
|
68
69
|
file_concurrency: z.ZodDefault<z.ZodNumber>;
|
|
70
|
+
job_timeout: z.ZodDefault<z.ZodNumber>;
|
|
69
71
|
}, z.core.$strip>>;
|
|
70
72
|
telemetry: z.ZodDefault<z.ZodObject<{
|
|
71
73
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;iBAQ1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;iBAQ1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;iBAqB1B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIzB,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
package/dist/config/schemas.js
CHANGED
|
@@ -36,6 +36,7 @@ export const CliConfigSchema = z.object({
|
|
|
36
36
|
show_curl: z.boolean().default(false),
|
|
37
37
|
job_tracking_strategy: z.enum(["auto", "sse", "polling"]).default("auto"),
|
|
38
38
|
file_concurrency: z.number().int().min(1).max(10).default(3),
|
|
39
|
+
job_timeout: z.number().int().min(0).default(600),
|
|
39
40
|
});
|
|
40
41
|
/**
|
|
41
42
|
* Remote error telemetry configuration schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;IACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CACnD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC;IAClE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,OAAO,CAAC,MAAM,CAAC;SACf,SAAS,CAAC,CAAC,CAAC,EAAuC,EAAE;QACpD,MAAM,GAAG,GAAwD;YAC/D,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,OAAO;SACf,CAAC;QACF,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC;IACxC,CAAC,CAAC;IACJ,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACzE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/errors/catalog.js
CHANGED
|
@@ -95,7 +95,7 @@ const GENERIC_API_ERROR_RULES = [
|
|
|
95
95
|
pattern: /unsupported[^.]{0,200}format/i,
|
|
96
96
|
labelKey: "error.unsupported_format.label",
|
|
97
97
|
hintKey: "error.unsupported_format.hint",
|
|
98
|
-
hintKwargs: { cmd: "prompsit translate
|
|
98
|
+
hintKwargs: { cmd: "prompsit translate --formats" },
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
101
|
pattern: /job[^.]{0,100}not found/i,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/errors/catalog.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,oEAAoE;AAGpE,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,WAAW,EACX,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAoBxB,MAAM,WAAW,GAAG,IAAI,GAAG,CAA0B;IACnD;QACE,mBAAmB;QACnB;YACE;gBACE,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,OAAO,EAAE,iBAAiB;gBAC1B,UAAU,EAAE,EAAE,GAAG,EAAE,mCAAmC,EAAE;aACzD;SACF;KACF;IACD;QACE,cAAc;QACd;YACE;gBACE,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,uBAAuB;gBACjC,OAAO,EAAE,sBAAsB;aAChC;SACF;KACF;IACD;QACE,cAAc;QACd;YACE;gBACE,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,uBAAuB;gBACjC,OAAO,EAAE,sBAAsB;aAChC;SACF;KACF;IACD;QACE,eAAe;QACf;YACE;gBACE,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,wBAAwB;gBAClC,OAAO,EAAE,uBAAuB;gBAChC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC/B;SACF;KACF;IACD;QACE,QAAQ;QACR;YACE;gBACE,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,2BAA2B;aACtC;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,wBAAwB;aACnC;SACF;KACF;IACD;QACE,WAAW;QACX;YACE;gBACE,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,oBAAoB;gBAC9B,OAAO,EAAE,mBAAmB;aAC7B;SACF;KACF;IACD;QACE,YAAY;QACZ;YACE;gBACE,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,qBAAqB;gBAC/B,OAAO,EAAE,oBAAoB;aAC9B;SACF;KACF;CACF,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAgB;IAC3C;QACE,OAAO,EAAE,8CAA8C;QACvD,QAAQ,EAAE,8BAA8B;QACxC,OAAO,EAAE,6BAA6B;QACtC,UAAU,EAAE,EAAE,GAAG,EAAE,gCAAgC,EAAE;KACtD;IACD;QACE,OAAO,EAAE,4BAA4B;QACrC,QAAQ,EAAE,8BAA8B;QACxC,OAAO,EAAE,6BAA6B;QACtC,UAAU,EAAE,EAAE,GAAG,EAAE,gCAAgC,EAAE;KACtD;IACD;QACE,OAAO,EAAE,+BAA+B;QACxC,QAAQ,EAAE,gCAAgC;QAC1C,OAAO,EAAE,+BAA+B;QACxC,UAAU,EAAE,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/errors/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/catalog.d.ts
CHANGED
|
@@ -65,8 +65,8 @@ export declare const STRINGS: {
|
|
|
65
65
|
readonly "languages.no_results": "No language pairs found";
|
|
66
66
|
readonly "languages.filters": "Filters: source={source}, target={target}";
|
|
67
67
|
readonly "languages.total": "Total: {count} pairs";
|
|
68
|
-
readonly "languages.
|
|
69
|
-
readonly "languages.
|
|
68
|
+
readonly "languages.default": "default";
|
|
69
|
+
readonly "languages.score_total": "Total: {count} languages";
|
|
70
70
|
readonly "evaluate.invalid_metrics": "Invalid metrics:";
|
|
71
71
|
readonly "evaluate.valid_metrics": "Valid metrics:";
|
|
72
72
|
readonly "evaluate.status": "Evaluating...";
|
|
@@ -103,6 +103,9 @@ export declare const STRINGS: {
|
|
|
103
103
|
readonly "evaluate.file.success": "Scored file saved to:";
|
|
104
104
|
readonly "job_tracking.cancelled": "Job was cancelled";
|
|
105
105
|
readonly "job_tracking.sse_unavailable": "SSE unavailable, using polling...";
|
|
106
|
+
readonly "job_tracking.dlq": "Job failed after multiple retries (dead-letter queue)";
|
|
107
|
+
readonly "job_tracking.unknown_status": "Job entered unexpected status: {status}";
|
|
108
|
+
readonly "job_tracking.timeout": "Job timed out after {seconds}s";
|
|
106
109
|
readonly "table.translation.title": "Translation";
|
|
107
110
|
readonly "table.translation.via": "via";
|
|
108
111
|
readonly "table.translation.in": "in";
|
|
@@ -159,18 +162,19 @@ export declare const STRINGS: {
|
|
|
159
162
|
readonly "error.zod.hint": "API may have changed. Update the CLI or report this issue.";
|
|
160
163
|
readonly "validate.missing_argument": "Missing required argument '{name}'";
|
|
161
164
|
readonly "validate.missing_option": "Required option '{option}' not specified";
|
|
162
|
-
readonly "validate.translate.text.arg_order": "\"{violation}\" -- texts must come before options. Usage: translate
|
|
163
|
-
readonly "validate.
|
|
164
|
-
readonly "validate.
|
|
165
|
+
readonly "validate.translate.text.arg_order": "\"{violation}\" -- texts must come before options. Usage: translate \"text1\" \"text2\" -s lang -t lang";
|
|
166
|
+
readonly "validate.translate.mixed_inputs": "Cannot mix text and @file inputs. Use either text mode or file mode, not both.";
|
|
167
|
+
readonly "validate.evaluate.mixed_modes": "Cannot mix positional inputs with -s/-h/-r flags. Use file mode or inline mode, not both.";
|
|
168
|
+
readonly "validate.evaluate.mixed_inputs": "Cannot mix @file and batch inputs. Use either file mode or batch mode, not both.";
|
|
169
|
+
readonly "validate.evaluate.missing_inline_flags": "Inline mode requires all three flags: -s (source), -h (hypothesis), -r (reference).";
|
|
165
170
|
readonly "validate.annotate.invalid_int": "Option '{option}' must be a positive integer";
|
|
166
|
-
readonly "validate.annotate.languages_missing_model": "--languages requires --lid-model to be specified";
|
|
167
|
-
readonly "validate.annotate.languages_model_hint": "Usage: annotate --languages --lid-model \"openlid-v2\"";
|
|
168
171
|
readonly "validate.score.source_dir_target_file": "Source is a directory but target is a file. Both must be the same type.";
|
|
169
172
|
readonly "validate.score.target_dir_source_file": "Target is a directory but source is a file. Both must be the same type.";
|
|
173
|
+
readonly "validate.score.invalid_source_lang": "Invalid source language for scoring: '{lang}'";
|
|
174
|
+
readonly "validate.score.source_lang_hint": "Supported languages: en, de, es.";
|
|
170
175
|
readonly "error.network.label": "Network error";
|
|
171
176
|
readonly "error.network.hint": "Check your connection and try again.";
|
|
172
177
|
readonly "curl.panel_title": "API Request";
|
|
173
|
-
readonly "curl.curl_copied": "curl copied";
|
|
174
178
|
readonly "repl.cmd.login": "Authenticate (or get credentials)";
|
|
175
179
|
readonly "repl.cmd.logout": "Clear stored tokens";
|
|
176
180
|
readonly "repl.cmd.config": "Show/get/set configuration";
|
|
@@ -182,14 +186,11 @@ export declare const STRINGS: {
|
|
|
182
186
|
readonly "repl.cmd.config_reset": "Reset configuration to defaults";
|
|
183
187
|
readonly "repl.cmd.config_path": "Show configuration file path";
|
|
184
188
|
readonly "repl.cmd.language": "Switch CLI interface language";
|
|
185
|
-
readonly "repl.cmd.translate": "Translate text";
|
|
186
|
-
readonly "repl.cmd.t": "Translate
|
|
187
|
-
readonly "repl.cmd.tf": "Translate file";
|
|
189
|
+
readonly "repl.cmd.translate": "Translate text or documents";
|
|
190
|
+
readonly "repl.cmd.t": "Translate (alias)";
|
|
188
191
|
readonly "repl.cmd.eval": "Evaluate translation quality";
|
|
189
|
-
readonly "repl.cmd.evaluate_batch": "Evaluate quality from TSV file";
|
|
190
192
|
readonly "repl.cmd.score": "Score parallel corpus quality (Bicleaner)";
|
|
191
193
|
readonly "repl.cmd.annotate": "Annotate corpus (Monotextor: Language ID, PII, quality)";
|
|
192
|
-
readonly "repl.cmd.ef": "Evaluate quality from file";
|
|
193
194
|
readonly "repl.cmd.health": "Check API health";
|
|
194
195
|
readonly "repl.cmd.clear": "Clear screen and show banner";
|
|
195
196
|
readonly "repl.cmd.help": "Show help";
|
|
@@ -199,13 +200,11 @@ export declare const STRINGS: {
|
|
|
199
200
|
readonly "repl.cmd.q": "Exit (alias)";
|
|
200
201
|
readonly "repl.help.group.basics": "Basics";
|
|
201
202
|
readonly "repl.help.group.text_translation": "Text Translation";
|
|
202
|
-
readonly "repl.help.group.file_translation": "File Translation";
|
|
203
203
|
readonly "repl.help.group.evaluation": "Evaluation";
|
|
204
204
|
readonly "repl.help.group.score": "Score";
|
|
205
205
|
readonly "repl.help.group.annotate": "Annotate";
|
|
206
206
|
readonly "repl.help.group.config": "Configuration";
|
|
207
207
|
readonly "repl.help.group.system": "System";
|
|
208
|
-
readonly "repl.help.title": "Available commands:";
|
|
209
208
|
readonly "repl.help.label.aliases": "Aliases:";
|
|
210
209
|
readonly "repl.help.label.options": "Options:";
|
|
211
210
|
readonly "repl.help.label.subcommands": "Subcommands:";
|
|
@@ -227,15 +226,13 @@ export declare const STRINGS: {
|
|
|
227
226
|
readonly "repl.opt.pipeline": "Pipeline stages (comma-separated: lid,pii,monofixer,docscorer,adult_filter,dedup)";
|
|
228
227
|
readonly "repl.opt.min_len": "Min document length in chars (default: 500, CJK: 300)";
|
|
229
228
|
readonly "repl.opt.min_avg_words": "Min average words per segment (default: 5)";
|
|
230
|
-
readonly "repl.opt.
|
|
231
|
-
readonly "repl.opt.
|
|
229
|
+
readonly "repl.opt.source_lang": "Source language (en, de, es); target can be any language. Required for TSV/parallel, auto-detected for TMX";
|
|
230
|
+
readonly "repl.opt.lid_model": "LID model: openlid-v3 (default), openlid-v2, nllb";
|
|
232
231
|
readonly "repl.welcome.authorized": "authorized";
|
|
233
232
|
readonly "repl.welcome.not_authorized": "not authorized";
|
|
234
|
-
readonly "repl.welcome.translate_hint": "Translate text";
|
|
235
|
-
readonly "repl.welcome.tf_hint": "Translate file";
|
|
233
|
+
readonly "repl.welcome.translate_hint": "Translate text (or @\"file\")";
|
|
236
234
|
readonly "repl.welcome.eval_hint": "Evaluate quality";
|
|
237
235
|
readonly "repl.welcome.score_hint": "Score corpus";
|
|
238
|
-
readonly "repl.welcome.ef_hint": "Evaluate file quality";
|
|
239
236
|
readonly "repl.welcome.annotate_hint": "Annotate corpus";
|
|
240
237
|
readonly "repl.welcome.login_hint": "Authenticate";
|
|
241
238
|
readonly "repl.welcome.tip": "Start typing for suggestions | Tab: next field | ?: full help";
|
|
@@ -254,7 +251,7 @@ export declare const STRINGS: {
|
|
|
254
251
|
readonly "repl.clipboard.no_display_warning": "No display server. Copy uses OSC 52 (terminal must support it).";
|
|
255
252
|
readonly "repl.clipboard.no_tools_warning": "No clipboard tools found. Install wl-clipboard (Wayland) or xclip (X11).";
|
|
256
253
|
readonly "repl.curl_panel.copy_hint": "F8: copy curl";
|
|
257
|
-
readonly "repl.curl_panel.copied": "
|
|
254
|
+
readonly "repl.curl_panel.copied": "copied to clipboard";
|
|
258
255
|
readonly "repl.curl_panel.no_curl": "No curl command available";
|
|
259
256
|
readonly "repl.cmd.copy-curl": "Copy last curl command to clipboard";
|
|
260
257
|
readonly "cli.usage_error.hint": "Invalid command or arguments. Run 'prompsit --help' for available commands.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/i18n/catalog.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/i18n/catalog.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4VuB,CAAC;AAE5C,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,OAAO,CAAC"}
|