prompsit-cli 26.307.1516 → 26.311.1358

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 (171) hide show
  1. package/README.md +280 -274
  2. package/dist/api/client.d.ts +2 -0
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +3 -0
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/errors.d.ts.map +1 -1
  7. package/dist/api/errors.js +8 -1
  8. package/dist/api/errors.js.map +1 -1
  9. package/dist/api/models.d.ts +50 -0
  10. package/dist/api/models.d.ts.map +1 -1
  11. package/dist/api/models.js +36 -0
  12. package/dist/api/models.js.map +1 -1
  13. package/dist/api/resources/formats.d.ts +1 -1
  14. package/dist/api/resources/formats.js +2 -2
  15. package/dist/api/resources/formats.js.map +1 -1
  16. package/dist/api/resources/user.d.ts +22 -0
  17. package/dist/api/resources/user.d.ts.map +1 -0
  18. package/dist/api/resources/user.js +30 -0
  19. package/dist/api/resources/user.js.map +1 -0
  20. package/dist/api/verbose.d.ts +8 -2
  21. package/dist/api/verbose.d.ts.map +1 -1
  22. package/dist/api/verbose.js +8 -13
  23. package/dist/api/verbose.js.map +1 -1
  24. package/dist/api/warmup-retry.d.ts +15 -0
  25. package/dist/api/warmup-retry.d.ts.map +1 -0
  26. package/dist/api/warmup-retry.js +79 -0
  27. package/dist/api/warmup-retry.js.map +1 -0
  28. package/dist/cli/options.js +2 -2
  29. package/dist/cli/options.js.map +1 -1
  30. package/dist/commands/annotate.d.ts.map +1 -1
  31. package/dist/commands/annotate.js +8 -1
  32. package/dist/commands/annotate.js.map +1 -1
  33. package/dist/commands/evaluate.d.ts.map +1 -1
  34. package/dist/commands/evaluate.js +20 -3
  35. package/dist/commands/evaluate.js.map +1 -1
  36. package/dist/commands/formats.d.ts +1 -1
  37. package/dist/commands/formats.d.ts.map +1 -1
  38. package/dist/commands/formats.js +12 -5
  39. package/dist/commands/formats.js.map +1 -1
  40. package/dist/commands/mappers.d.ts +4 -2
  41. package/dist/commands/mappers.d.ts.map +1 -1
  42. package/dist/commands/mappers.js +11 -0
  43. package/dist/commands/mappers.js.map +1 -1
  44. package/dist/commands/score.d.ts.map +1 -1
  45. package/dist/commands/score.js +14 -2
  46. package/dist/commands/score.js.map +1 -1
  47. package/dist/commands/translate.d.ts.map +1 -1
  48. package/dist/commands/translate.js +7 -1
  49. package/dist/commands/translate.js.map +1 -1
  50. package/dist/commands/update.d.ts.map +1 -1
  51. package/dist/commands/update.js +1 -7
  52. package/dist/commands/update.js.map +1 -1
  53. package/dist/commands/usage.d.ts +8 -0
  54. package/dist/commands/usage.d.ts.map +1 -0
  55. package/dist/commands/usage.js +39 -0
  56. package/dist/commands/usage.js.map +1 -0
  57. package/dist/config/schemas.d.ts +2 -0
  58. package/dist/config/schemas.d.ts.map +1 -1
  59. package/dist/config/schemas.js +1 -0
  60. package/dist/config/schemas.js.map +1 -1
  61. package/dist/constants.d.ts +17 -10
  62. package/dist/constants.d.ts.map +1 -1
  63. package/dist/constants.js +18 -10
  64. package/dist/constants.js.map +1 -1
  65. package/dist/i18n/catalog.d.ts +7 -0
  66. package/dist/i18n/catalog.d.ts.map +1 -1
  67. package/dist/i18n/catalog.js +9 -0
  68. package/dist/i18n/catalog.js.map +1 -1
  69. package/dist/logging/console-handler.js +1 -1
  70. package/dist/logging/console-handler.js.map +1 -1
  71. package/dist/logging/file-handler.d.ts.map +1 -1
  72. package/dist/logging/file-handler.js +5 -4
  73. package/dist/logging/file-handler.js.map +1 -1
  74. package/dist/output/index.d.ts +1 -0
  75. package/dist/output/index.d.ts.map +1 -1
  76. package/dist/output/index.js +1 -0
  77. package/dist/output/index.js.map +1 -1
  78. package/dist/output/usage-display.d.ts +14 -0
  79. package/dist/output/usage-display.d.ts.map +1 -0
  80. package/dist/output/usage-display.js +57 -0
  81. package/dist/output/usage-display.js.map +1 -0
  82. package/dist/output/view-models.d.ts +9 -0
  83. package/dist/output/view-models.d.ts.map +1 -1
  84. package/dist/program.d.ts.map +1 -1
  85. package/dist/program.js +4 -1
  86. package/dist/program.js.map +1 -1
  87. package/dist/repl/registry.d.ts.map +1 -1
  88. package/dist/repl/registry.js +11 -3
  89. package/dist/repl/registry.js.map +1 -1
  90. package/dist/runtime/progress-adapters.d.ts +1 -1
  91. package/dist/runtime/progress-adapters.d.ts.map +1 -1
  92. package/dist/shared/constants.d.ts +1 -0
  93. package/dist/shared/constants.d.ts.map +1 -1
  94. package/dist/shared/constants.js +1 -0
  95. package/dist/shared/constants.js.map +1 -1
  96. package/dist/update/version.d.ts +0 -5
  97. package/dist/update/version.d.ts.map +1 -1
  98. package/dist/update/version.js +3 -19
  99. package/dist/update/version.js.map +1 -1
  100. package/dist/version.d.ts.map +1 -1
  101. package/dist/version.js +2 -3
  102. package/dist/version.js.map +1 -1
  103. package/package.json +1 -1
  104. package/dist/api/http-utils.d.ts +0 -5
  105. package/dist/api/http-utils.d.ts.map +0 -1
  106. package/dist/api/http-utils.js +0 -19
  107. package/dist/api/http-utils.js.map +0 -1
  108. package/dist/commands/config.d.ts +0 -8
  109. package/dist/commands/config.d.ts.map +0 -1
  110. package/dist/commands/config.js +0 -331
  111. package/dist/commands/config.js.map +0 -1
  112. package/dist/commands/languages.d.ts +0 -12
  113. package/dist/commands/languages.d.ts.map +0 -1
  114. package/dist/commands/languages.js +0 -48
  115. package/dist/commands/languages.js.map +0 -1
  116. package/dist/i18n/translator-adapter.d.ts +0 -3
  117. package/dist/i18n/translator-adapter.d.ts.map +0 -1
  118. package/dist/i18n/translator-adapter.js +0 -12
  119. package/dist/i18n/translator-adapter.js.map +0 -1
  120. package/dist/output/console.d.ts +0 -77
  121. package/dist/output/console.d.ts.map +0 -1
  122. package/dist/output/console.js +0 -128
  123. package/dist/output/console.js.map +0 -1
  124. package/dist/output/tables.d.ts +0 -52
  125. package/dist/output/tables.d.ts.map +0 -1
  126. package/dist/output/tables.js +0 -448
  127. package/dist/output/tables.js.map +0 -1
  128. package/dist/repl/App.d.ts +0 -6
  129. package/dist/repl/App.d.ts.map +0 -1
  130. package/dist/repl/App.js +0 -216
  131. package/dist/repl/App.js.map +0 -1
  132. package/dist/repl/components/ControllableTextInput.d.ts +0 -12
  133. package/dist/repl/components/ControllableTextInput.d.ts.map +0 -1
  134. package/dist/repl/components/ControllableTextInput.js +0 -102
  135. package/dist/repl/components/ControllableTextInput.js.map +0 -1
  136. package/dist/repl/components/HistoryRow.d.ts +0 -8
  137. package/dist/repl/components/HistoryRow.d.ts.map +0 -1
  138. package/dist/repl/components/HistoryRow.js +0 -40
  139. package/dist/repl/components/HistoryRow.js.map +0 -1
  140. package/dist/repl/components/ProgressIndicator.d.ts +0 -10
  141. package/dist/repl/components/ProgressIndicator.d.ts.map +0 -1
  142. package/dist/repl/components/ProgressIndicator.js +0 -39
  143. package/dist/repl/components/ProgressIndicator.js.map +0 -1
  144. package/dist/repl/components/Separator.d.ts +0 -5
  145. package/dist/repl/components/Separator.d.ts.map +0 -1
  146. package/dist/repl/components/Separator.js +0 -9
  147. package/dist/repl/components/Separator.js.map +0 -1
  148. package/dist/repl/hooks.d.ts +0 -9
  149. package/dist/repl/hooks.d.ts.map +0 -1
  150. package/dist/repl/hooks.js +0 -29
  151. package/dist/repl/hooks.js.map +0 -1
  152. package/dist/repl/plugins/manager.d.ts +0 -22
  153. package/dist/repl/plugins/manager.d.ts.map +0 -1
  154. package/dist/repl/plugins/manager.js +0 -111
  155. package/dist/repl/plugins/manager.js.map +0 -1
  156. package/dist/repl/plugins/types.d.ts +0 -33
  157. package/dist/repl/plugins/types.d.ts.map +0 -1
  158. package/dist/repl/plugins/types.js +0 -3
  159. package/dist/repl/plugins/types.js.map +0 -1
  160. package/dist/repl/progress-context.d.ts +0 -14
  161. package/dist/repl/progress-context.d.ts.map +0 -1
  162. package/dist/repl/progress-context.js +0 -15
  163. package/dist/repl/progress-context.js.map +0 -1
  164. package/dist/repl/ui-state.d.ts +0 -9
  165. package/dist/repl/ui-state.d.ts.map +0 -1
  166. package/dist/repl/ui-state.js +0 -16
  167. package/dist/repl/ui-state.js.map +0 -1
  168. package/dist/runtime/external-transport.d.ts +0 -12
  169. package/dist/runtime/external-transport.d.ts.map +0 -1
  170. package/dist/runtime/external-transport.js +0 -59
  171. package/dist/runtime/external-transport.js.map +0 -1
package/README.md CHANGED
@@ -1,274 +1,280 @@
1
- # Prompsit CLI
2
-
3
- [![npm version](https://img.shields.io/npm/v/prompsit-cli)](https://www.npmjs.com/package/prompsit-cli)
4
- [![license](https://img.shields.io/npm/l/prompsit-cli)](https://www.npmjs.com/package/prompsit-cli)
5
- [![node](https://img.shields.io/node/v/prompsit-cli)](https://nodejs.org/)
6
-
7
- CLI for the Prompsit Translation API. Translate text and documents, evaluate quality, score parallel corpora, and annotate monolingual data.
8
-
9
- ## Requirements
10
-
11
- [Node.js](https://nodejs.org/) 22+
12
-
13
- ```bash
14
- node -v # Should print v22.x or higher
15
- ```
16
-
17
- ## Install
18
-
19
- ```bash
20
- npm install -g prompsit-cli
21
- ```
22
-
23
- **Update:** `npm install -g prompsit-cli@latest --prefer-online`
24
- **Uninstall:** `npm uninstall -g prompsit-cli`
25
-
26
- <details>
27
- <summary>Command not found after install?</summary>
28
-
29
- ```bash
30
- # Check global npm bin is on PATH
31
- echo "$PATH" | tr ':' '\n' | grep '.npm-global/bin'
32
- command -v prompsit
33
- ```
34
-
35
- </details>
36
-
37
- ## Usage
38
-
39
- Run `prompsit` to enter interactive REPL with tab completion.
40
-
41
- ```bash
42
- prompsit # Enter interactive REPL
43
- prompsit translate "Hello" -s "en" -t "es" # Run single command
44
- ```
45
-
46
- > **Quoting rule:** All values must be quoted. Commands, subcommands, and flags stay unquoted.
47
-
48
- ## Commands
49
-
50
- ### Authentication
51
-
52
- #### `login` --account "EMAIL" --secret "SECRET"
53
-
54
- Authenticate with the Prompsit API.
55
-
56
- - `-a, --account "EMAIL"` Account email
57
- - `-s, --secret "SECRET"` API secret
58
-
59
- ```
60
- $ prompsit login # Open contact page
61
- $ prompsit login -a "EMAIL" -s "SECRET" # Login with credentials
62
- ```
63
-
64
- #### `logout`
65
-
66
- Clear stored credentials (`~/.prompsit/credentials.json`).
67
-
68
- #### `status`
69
-
70
- Show auth state, plan type, and token expiry.
71
-
72
- ---
73
-
74
- ### Configuration
75
-
76
- #### `config` [subcommand|key] [value]
77
-
78
- Interactive TUI settings screen, or manage config via subcommands.
79
-
80
- **Subcommands:**
81
-
82
- - `config show` Show current configuration
83
- - `config "key"` Get a config value
84
- - `config "key" "value"` Set a config value
85
- - `config api-url ["preset_or_url"]` Switch API endpoint
86
- - `config reset [--force]` Reset to defaults
87
- - `config path` Show config file path
88
-
89
- ```
90
- > config show
91
- > config "api-base-url"
92
- > config "api-base-url" "https://my-server.com"
93
- > config api-url "test"
94
- ```
95
-
96
- #### `language` [code]
97
-
98
- Set interface language.
99
-
100
- ```
101
- > language "es"
102
- $ prompsit language "en"
103
- $ prompsit config language
104
- ```
105
-
106
- ---
107
-
108
- ### Translation
109
-
110
- #### `translate` "text" --source "lang" --target "lang" [--qe]
111
-
112
- Translate text. Aliases: `t`
113
-
114
- - `-s, --source "lang"` Source language code
115
- - `-t, --target "lang"` Target language code
116
- - `--qe` Enable quality estimation score
117
-
118
- ```
119
- > "Hello world" -s "en" -t "es"
120
- > "Hello" "Good morning" "Thank you" -s "en" -t "es"
121
- > t "Hello" -s "en" -t "es" --qe
122
- $ prompsit translate "Hello world" -s "en" -t "es"
123
- $ prompsit translate "Hello" "Good morning" "Thank you" -s "en" -t "es"
124
- ```
125
-
126
- #### `translate` @"file..." --source "lang" --target "lang" [--out "dir"] [--output-format "fmt"]
127
-
128
- Translate files (XLIFF, CSV, PDF, DOCX, etc.). Use `@` prefix for file mode. Alias: `t`
129
-
130
- - `-s, --source "lang"` Source language code
131
- - `-t, --target "lang"` Target language code
132
- - `--out "dir"` Output directory (default: beside input file)
133
- - `--output-format "fmt"` Output format (e.g. docx)
134
-
135
- ```
136
- > t @"~/.prompsit/examples/translate/sample.xliff" -s "en" -t "es"
137
- > t @"~/.prompsit/examples/translate/sample.txt" @"~/.prompsit/examples/translate/sample.csv" -s "en" -t "es"
138
- > t @"~/.prompsit/examples/translate/sample.csv" -s "en" -t "es" --out "./translated/"
139
- > t @"report.pdf" -s "en" -t "es" --output-format "docx"
140
- $ prompsit translate @"~/.prompsit/examples/translate/sample.xliff" -s "en" -t "es"
141
- $ prompsit translate @"~/.prompsit/examples/translate/sample.csv" -s "en" -t "es" --out "./translated/"
142
- $ prompsit translate @"report.pdf" -s "en" -t "es" --output-format "docx"
143
- $ prompsit translate @"manual.md" @"notes.md" -s "en" -t "es" --output-format "docx"
144
- ```
145
-
146
- ---
147
-
148
- ### Engines
149
-
150
- #### `engines` [--source "lang"] [--target "lang"]
151
-
152
- List available translation engines.
153
-
154
- - `-s, --source "lang"` Filter by source language
155
- - `-t, --target "lang"` Filter by target language
156
-
157
- ```
158
- > engines
159
- > engines -s "en" -t "es"
160
- $ prompsit engines
161
- $ prompsit engines -s "en" -t "es"
162
- ```
163
-
164
- ---
165
-
166
- ### Quality Evaluation
167
-
168
- #### `eval` --source "src" --hypothesis "hyp" --reference "ref" [--metrics "metrics"]
169
-
170
- Evaluate translation quality with automatic metrics (inline mode). Alias: `e`
171
-
172
- - `-s, --source "src"` Source text
173
- - `-h, --hypothesis "hyp"` Machine translation (hypothesis)
174
- - `-r, --reference "ref"` Reference translation
175
- - `-m, --metrics "metrics"` Comma-separated: bleu,chrf,metricx (default: bleu,chrf)
176
-
177
- #### `eval` "file" [--metrics "metrics"]
178
-
179
- Batch evaluation from TSV file.
180
-
181
- #### `eval` @"file" [options]
182
-
183
- File scoring mode. Use `@` prefix.
184
-
185
- ```
186
- > eval -s "Hello" -h "Hola" -r "Hola"
187
- > eval -s "Hello" -h "Hola" -r "Hola" -m "bleu,chrf,metricx"
188
- > eval "segments.tsv" -m "bleu,chrf"
189
- > eval @"report.txt" -s "en" -t "es"
190
- $ prompsit eval -s "Hello" -h "Hola" -r "Hola"
191
- $ prompsit eval -s "Hello" -h "Hola" -r "Hola" -m "bleu,chrf,metricx"
192
- ```
193
-
194
- ---
195
-
196
- ### Data Processing
197
-
198
- #### `score` "file" [options]
199
-
200
- Compute translation likelihood scores with Bicleaner-AI.
201
-
202
- ```
203
- > score "~/.prompsit/examples/score/sample.tmx"
204
- > score "corpus.tsv" --output-format "tsv" --out "results/"
205
- $ prompsit score "corpus.tmx" --out "results/"
206
- ```
207
-
208
- #### `annotate` "file" --lang "code" [options]
209
-
210
- Annotate monolingual documents with metadata using Monotextor.
211
-
212
- ```
213
- > annotate "data.jsonl" -l "en" --metadata "lid,docscorer"
214
- > annotate "data.jsonl" -l "en" --min-len "100"
215
- $ prompsit annotate "data.jsonl" -l "en" --metadata "lid,docscorer" --out "results/"
216
- ```
217
-
218
- ---
219
-
220
- ### Reference
221
-
222
- #### `formats`
223
-
224
- List supported file formats. Alias: `f`
225
-
226
- ```
227
- > formats
228
- $ prompsit formats
229
- ```
230
-
231
- ---
232
-
233
- ### System
234
-
235
- | Command | Description |
236
- |---------|-------------|
237
- | `health` | API health check |
238
- | `help` | Show all commands (also: `?`) |
239
- | `clear` | Clear screen |
240
- | `exit` | Quit CLI (also: `quit`, `q`) |
241
-
242
- ---
243
-
244
- ## Configuration Reference
245
-
246
- Config file: `~/.prompsit/config.toml` | Env override: `PROMPSIT_<SECTION>__<KEY>`
247
-
248
- | Key | CLI Command | Default | Description |
249
- |-----|-------------|---------|-------------|
250
- | `api.base_url` | `config api-url` | `https://edge.prompsit.com` | API endpoint |
251
- | `api.timeout` | - | `30` | HTTP read timeout (sec) |
252
- | `cli.language` | `language "code"` | `en` | Interface language |
253
- | `cli.log_level` | `config set log-level "val"` | `INFO` | Log level |
254
-
255
- ## Data Directory: `~/.prompsit/`
256
-
257
- | Path | Purpose |
258
- |------|---------|
259
- | `config.toml` | User configuration (TOML) |
260
- | `credentials.json` | OAuth2 tokens |
261
- | `history` | REPL command history |
262
- | `translations/{lang}.json` | Interface translation cache |
263
- | `examples/translate/` | Translation examples (txt, csv, xliff) |
264
- | `examples/evaluate/` | Evaluation examples (tmx) |
265
- | `examples/score/` | Scoring examples (tmx) |
266
- | `examples/annotate/` | Annotation examples (jsonl) |
267
-
268
- ## Troubleshooting
269
-
270
- See [docs/project/runbook.md](docs/project/runbook.md) for setup issues, common errors, and fixes.
271
-
272
- ## License
273
-
274
- MIT
1
+ # Prompsit CLI
2
+
3
+ [![npm version](https://img.shields.io/npm/v/prompsit-cli)](https://www.npmjs.com/package/prompsit-cli)
4
+ [![license](https://img.shields.io/npm/l/prompsit-cli)](https://www.npmjs.com/package/prompsit-cli)
5
+ [![node](https://img.shields.io/node/v/prompsit-cli)](https://nodejs.org/)
6
+
7
+ CLI for the Prompsit Translation API. Translate text and documents, evaluate quality, score parallel corpora, and annotate monolingual data.
8
+
9
+ ## Requirements
10
+
11
+ [Node.js](https://nodejs.org/) 22+
12
+
13
+ ```bash
14
+ node -v # Should print v22.x or higher
15
+ ```
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ npm install -g prompsit-cli
21
+ ```
22
+
23
+ **Update:** `npm install -g prompsit-cli@latest --prefer-online`
24
+ **Uninstall:** `npm uninstall -g prompsit-cli`
25
+
26
+ <details>
27
+ <summary>Command not found after install?</summary>
28
+
29
+ ```bash
30
+ # Check global npm bin is on PATH
31
+ echo "$PATH" | tr ':' '\n' | grep '.npm-global/bin'
32
+ command -v prompsit
33
+ ```
34
+
35
+ </details>
36
+
37
+ ## Usage
38
+
39
+ Run `prompsit` to enter interactive REPL with tab completion.
40
+
41
+ ```bash
42
+ prompsit # Enter interactive REPL
43
+ prompsit translate "Hello" -s "en" -t "es" # Run single command
44
+ ```
45
+
46
+ > **Quoting rule:** All values must be quoted. Commands, subcommands, and flags stay unquoted.
47
+
48
+ ## Commands
49
+
50
+ ### Authentication
51
+
52
+ #### `login` --account "EMAIL" --secret "SECRET"
53
+
54
+ Authenticate with the Prompsit API.
55
+
56
+ - `-a, --account "EMAIL"` Account email
57
+ - `-s, --secret "SECRET"` API secret
58
+
59
+ ```
60
+ $ prompsit login # Open contact page
61
+ $ prompsit login -a "EMAIL" -s "SECRET" # Login with credentials
62
+ ```
63
+
64
+ #### `logout`
65
+
66
+ Clear stored credentials (`~/.prompsit/credentials.json`).
67
+
68
+ #### `status`
69
+
70
+ Show auth state, plan type, and token expiry.
71
+
72
+ ---
73
+
74
+ ### Configuration
75
+
76
+ #### `config` [subcommand|key] [value]
77
+
78
+ Interactive TUI settings screen, or manage config via subcommands.
79
+
80
+ **Subcommands:**
81
+
82
+ - `config show` Show current configuration
83
+ - `config "key"` Get a config value
84
+ - `config "key" "value"` Set a config value
85
+ - `config api-url ["preset_or_url"]` Switch API endpoint
86
+ - `config reset [--force]` Reset to defaults
87
+ - `config path` Show config file path
88
+
89
+ ```
90
+ > config show
91
+ > config "api-base-url"
92
+ > config "api-base-url" "https://my-server.com"
93
+ > config api-url "test"
94
+ ```
95
+
96
+ #### `language` [code]
97
+
98
+ Set interface language.
99
+
100
+ ```
101
+ > language "es"
102
+ $ prompsit language "en"
103
+ $ prompsit config language
104
+ ```
105
+
106
+ ---
107
+
108
+ ### Translation
109
+
110
+ #### `translate` "text" --source "lang" --target "lang" [--qe]
111
+
112
+ Translate text. Aliases: `t`
113
+
114
+ - `-s, --source "lang"` Source language code
115
+ - `-t, --target "lang"` Target language code
116
+ - `--qe` Enable quality estimation score
117
+
118
+ ```
119
+ > "Hello world" -s "en" -t "es"
120
+ > "Hello" "Good morning" "Thank you" -s "en" -t "es"
121
+ > t "Hello" -s "en" -t "es" --qe
122
+ $ prompsit translate "Hello world" -s "en" -t "es"
123
+ $ prompsit translate "Hello" "Good morning" "Thank you" -s "en" -t "es"
124
+ ```
125
+
126
+ #### `translate` @"file..." --source "lang" --target "lang" [--out "dir"] [--output-format "fmt"]
127
+
128
+ Translate files (XLIFF, CSV, PDF, DOCX, etc.). Use `@` prefix for file mode. Alias: `t`
129
+
130
+ - `-s, --source "lang"` Source language code
131
+ - `-t, --target "lang"` Target language code
132
+ - `--out "dir"` Output directory (default: beside input file)
133
+ - `--output-format "fmt"` Output format (e.g. docx)
134
+
135
+ ```
136
+ > t @"~/.prompsit/examples/translate/sample.xliff" -s "en" -t "es"
137
+ > t @"~/.prompsit/examples/translate/sample.txt" @"~/.prompsit/examples/translate/sample.csv" -s "en" -t "es"
138
+ > t @"~/.prompsit/examples/translate/sample.csv" -s "en" -t "es" --out "./translated/"
139
+ > t @"report.pdf" -s "en" -t "es" --output-format "docx"
140
+ $ prompsit translate @"~/.prompsit/examples/translate/sample.xliff" -s "en" -t "es"
141
+ $ prompsit translate @"~/.prompsit/examples/translate/sample.csv" -s "en" -t "es" --out "./translated/"
142
+ $ prompsit translate @"report.pdf" -s "en" -t "es" --output-format "docx"
143
+ $ prompsit translate @"manual.md" @"notes.md" -s "en" -t "es" --output-format "docx"
144
+ ```
145
+
146
+ ---
147
+
148
+ ### Engines
149
+
150
+ #### `engines` [--source "lang"] [--target "lang"]
151
+
152
+ List available translation engines.
153
+
154
+ - `-s, --source "lang"` Filter by source language
155
+ - `-t, --target "lang"` Filter by target language
156
+
157
+ ```
158
+ > engines
159
+ > engines -s "en" -t "es"
160
+ $ prompsit engines
161
+ $ prompsit engines -s "en" -t "es"
162
+ ```
163
+
164
+ ---
165
+
166
+ ### Quality Evaluation
167
+
168
+ #### `eval` --source "src" --hypothesis "hyp" --reference "ref" [--metrics "metrics"]
169
+
170
+ Evaluate translation quality with automatic metrics (inline mode). Alias: `e`
171
+
172
+ - `-s, --source "src"` Source text
173
+ - `-h, --hypothesis "hyp"` Machine translation (hypothesis)
174
+ - `-r, --reference "ref"` Reference translation
175
+ - `-m, --metrics "metrics"` Comma-separated: bleu,chrf,metricx (default: bleu,chrf)
176
+
177
+ #### `eval` "file" [--metrics "metrics"]
178
+
179
+ Batch evaluation from TSV file.
180
+
181
+ #### `eval` @"file" [options]
182
+
183
+ File scoring mode. Use `@` prefix.
184
+
185
+ ```
186
+ > eval -s "Hello" -h "Hola" -r "Hola"
187
+ > eval -s "Hello" -h "Hola" -r "Hola" -m "bleu,chrf,metricx"
188
+ > eval "segments.tsv" -m "bleu,chrf"
189
+ > eval @"report.txt" -s "en" -t "es"
190
+ $ prompsit eval -s "Hello" -h "Hola" -r "Hola"
191
+ $ prompsit eval -s "Hello" -h "Hola" -r "Hola" -m "bleu,chrf,metricx"
192
+ ```
193
+
194
+ ---
195
+
196
+ ### Data Processing
197
+
198
+ #### `score` "file" [options]
199
+
200
+ Compute translation likelihood scores with Bicleaner-AI.
201
+
202
+ ```
203
+ > score "~/.prompsit/examples/score/sample.tmx"
204
+ > score "corpus.tsv" --output-format "tsv" --out "results/"
205
+ $ prompsit score "corpus.tmx" --out "results/"
206
+ ```
207
+
208
+ #### `annotate` "file" --lang "code" [--metadata "options"] [--out "dir"]
209
+
210
+ Annotate monolingual documents with metadata using Monotextor.
211
+
212
+ - `-l, --lang "code"` Language code (e.g. en, es, zh-Hans)
213
+ - `--metadata "options"` Metadata to add (comma-separated: lid, dedup, pii, adult_filter, monofixer, docscorer)
214
+ - `--out "dir"` Output directory (default: beside input file)
215
+
216
+ ```
217
+ > annotate @"data.jsonl" -l "en" --metadata "lid,docscorer"
218
+ > annotate @"data.jsonl" -l "en" --out "results/"
219
+ > annotate --metadata
220
+ $ prompsit annotate @"data.jsonl" -l "en" --metadata "lid,docscorer" --out "results/"
221
+ $ prompsit annotate --metadata
222
+ ```
223
+
224
+ ---
225
+
226
+ ### Reference
227
+
228
+ #### `formats`
229
+
230
+ List supported file formats. Alias: `f`
231
+
232
+ ```
233
+ > formats
234
+ $ prompsit formats
235
+ ```
236
+
237
+ ---
238
+
239
+ ### System
240
+
241
+ | Command | Description |
242
+ |---------|-------------|
243
+ | `health` | API health check |
244
+ | `help` | Show all commands (also: `?`) |
245
+ | `clear` | Clear screen |
246
+ | `exit` | Quit CLI (also: `quit`, `q`) |
247
+
248
+ ---
249
+
250
+ ## Configuration Reference
251
+
252
+ Config file: `~/.prompsit/config.toml` | Env override: `PROMPSIT_<SECTION>__<KEY>`
253
+
254
+ | Key | CLI Command | Default | Description |
255
+ |-----|-------------|---------|-------------|
256
+ | `api.base_url` | `config api-url` | `https://edge.prompsit.com` | API endpoint |
257
+ | `api.timeout` | - | `30` | HTTP read timeout (sec) |
258
+ | `cli.language` | `language "code"` | `en` | Interface language |
259
+ | `cli.log_level` | `config set log-level "val"` | `INFO` | Log level |
260
+
261
+ ## Data Directory: `~/.prompsit/`
262
+
263
+ | Path | Purpose |
264
+ |------|---------|
265
+ | `config.toml` | User configuration (TOML) |
266
+ | `credentials.json` | OAuth2 tokens |
267
+ | `history` | REPL command history |
268
+ | `translations/{lang}.json` | Interface translation cache |
269
+ | `examples/translate/` | Translation examples (txt, csv, xliff) |
270
+ | `examples/evaluate/` | Evaluation examples (tmx) |
271
+ | `examples/score/` | Scoring examples (tmx) |
272
+ | `examples/annotate/` | Annotation examples (jsonl) |
273
+
274
+ ## Troubleshooting
275
+
276
+ See [docs/project/runbook.md](docs/project/runbook.md) for setup issues, common errors, and fixes.
277
+
278
+ ## License
279
+
280
+ MIT
@@ -7,6 +7,7 @@ import { LanguagesResource } from "./resources/languages.ts";
7
7
  import { DiscoveryResource } from "./resources/discovery.ts";
8
8
  import { JobsResource } from "./resources/jobs.ts";
9
9
  import { DataResource } from "./resources/data.ts";
10
+ import { UserResource } from "./resources/user.ts";
10
11
  /**
11
12
  * API Client facade composing resource instances.
12
13
  *
@@ -25,6 +26,7 @@ export declare class APIClient {
25
26
  readonly discovery: DiscoveryResource;
26
27
  readonly jobs: JobsResource;
27
28
  readonly data: DataResource;
29
+ readonly user: UserResource;
28
30
  constructor();
29
31
  /**
30
32
  * Reset auth client (after token refresh or logout).
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,IAAI,EAAE,YAAY,CAAC;IACnC,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,SAAgB,WAAW,EAAE,mBAAmB,CAAC;IACjD,SAAgB,UAAU,EAAE,kBAAkB,CAAC;IAC/C,SAAgB,SAAS,EAAE,iBAAiB,CAAC;IAC7C,SAAgB,SAAS,EAAE,iBAAiB,CAAC;IAC7C,SAAgB,IAAI,EAAE,YAAY,CAAC;IACnC,SAAgB,IAAI,EAAE,YAAY,CAAC;;IAgBnC;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAKD;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAGxC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,IAAI,EAAE,YAAY,CAAC;IACnC,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,SAAgB,WAAW,EAAE,mBAAmB,CAAC;IACjD,SAAgB,UAAU,EAAE,kBAAkB,CAAC;IAC/C,SAAgB,SAAS,EAAE,iBAAiB,CAAC;IAC7C,SAAgB,SAAS,EAAE,iBAAiB,CAAC;IAC7C,SAAgB,IAAI,EAAE,YAAY,CAAC;IACnC,SAAgB,IAAI,EAAE,YAAY,CAAC;IACnC,SAAgB,IAAI,EAAE,YAAY,CAAC;;IAiBnC;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAKD;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAGxC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC"}
@@ -11,6 +11,7 @@ import { LanguagesResource } from "./resources/languages.js";
11
11
  import { DiscoveryResource } from "./resources/discovery.js";
12
12
  import { JobsResource } from "./resources/jobs.js";
13
13
  import { DataResource } from "./resources/data.js";
14
+ import { UserResource } from "./resources/user.js";
14
15
  import { getSettings } from "../config/settings.js";
15
16
  /**
16
17
  * API Client facade composing resource instances.
@@ -30,6 +31,7 @@ export class APIClient {
30
31
  discovery;
31
32
  jobs;
32
33
  data;
34
+ user;
33
35
  constructor() {
34
36
  this.baseUrl = getSettings().api.base_url.replace(/\/{1,100}$/, "");
35
37
  this.transport = new HttpTransport();
@@ -42,6 +44,7 @@ export class APIClient {
42
44
  this.discovery = new DiscoveryResource(this.session, this.baseUrl);
43
45
  this.jobs = new JobsResource(this.session, this.baseUrl);
44
46
  this.data = new DataResource(this.session, this.baseUrl);
47
+ this.user = new UserResource(this.session, this.baseUrl);
45
48
  }
46
49
  /**
47
50
  * Reset auth client (after token refresh or logout).
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,yDAAyD;AACzD,8DAA8D;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,OAAO,SAAS;IACH,SAAS,CAAgB;IAC1B,OAAO,CAAS;IAChB,IAAI,CAAe;IACnB,OAAO,CAAc;IACrB,MAAM,CAAiB;IACvB,WAAW,CAAsB;IACjC,UAAU,CAAqB;IAC/B,SAAS,CAAoB;IAC7B,SAAS,CAAoB;IAC7B,IAAI,CAAe;IACnB,IAAI,CAAe;IAEnC;QACE,IAAI,CAAC,OAAO,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF;AAED,yBAAyB;AACzB,IAAI,MAAM,GAAqB,IAAI,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/api/errors.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAOT,MAAM,wBAAwB,CAAC;AAQhC,wBAAgB,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CA4EjF;AAcD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,WAAW,GACZ,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/api/errors.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAOT,MAAM,wBAAwB,CAAC;AAQhC,wBAAgB,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CAkFjF;AAcD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,WAAW,GACZ,MAAM,wBAAwB,CAAC"}
@@ -14,13 +14,20 @@ export function parseApiError(responseData, statusCode) {
14
14
  try {
15
15
  const problem = ProblemDetailSchema.parse(responseData);
16
16
  const detail = problem.detail ?? "API error";
17
- // Map error codes to specific exception types
17
+ // Map error codes to specific exception types (prefix-based)
18
18
  if (problem.code?.startsWith("AUTH_")) {
19
19
  return new AuthenticationError(detail);
20
20
  }
21
21
  if (problem.code?.startsWith("RATE_")) {
22
22
  return new RateLimitError(detail);
23
23
  }
24
+ // Map by HTTP status for proper classification (5xx → ServerError, etc.)
25
+ if (statusCode === HttpStatus.FORBIDDEN)
26
+ return new ForbiddenError(detail);
27
+ if (statusCode === HttpStatus.UNPROCESSABLE)
28
+ return new ValidationError([{ type: "value_error", loc: [], msg: detail }]);
29
+ if (statusCode >= HttpStatus.INTERNAL_ERROR)
30
+ return new ServerError(detail, statusCode);
24
31
  return new APIError(detail, problem.code ?? "EUNKNOWN", statusCode, problem);
25
32
  }
26
33
  catch {