prompsit-cli 26.225.1206 → 26.227.2006

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 (361) hide show
  1. package/README.md +10 -4
  2. package/dist/api/auth-session.d.ts +11 -11
  3. package/dist/api/auth-session.d.ts.map +1 -1
  4. package/dist/api/auth-session.js +21 -17
  5. package/dist/api/auth-session.js.map +1 -1
  6. package/dist/api/client.d.ts +4 -4
  7. package/dist/api/client.d.ts.map +1 -1
  8. package/dist/api/client.js +8 -8
  9. package/dist/api/client.js.map +1 -1
  10. package/dist/api/curl.d.ts +30 -0
  11. package/dist/api/curl.d.ts.map +1 -0
  12. package/dist/api/curl.js +115 -0
  13. package/dist/api/curl.js.map +1 -0
  14. package/dist/api/errors.d.ts +2 -3
  15. package/dist/api/errors.d.ts.map +1 -1
  16. package/dist/api/errors.js +4 -2
  17. package/dist/api/errors.js.map +1 -1
  18. package/dist/api/http-utils.d.ts +5 -0
  19. package/dist/api/http-utils.d.ts.map +1 -0
  20. package/dist/api/http-utils.js +19 -0
  21. package/dist/api/http-utils.js.map +1 -0
  22. package/dist/api/models.d.ts +135 -89
  23. package/dist/api/models.d.ts.map +1 -1
  24. package/dist/api/models.js +62 -72
  25. package/dist/api/models.js.map +1 -1
  26. package/dist/api/resources/data.d.ts +3 -5
  27. package/dist/api/resources/data.d.ts.map +1 -1
  28. package/dist/api/resources/data.js +11 -12
  29. package/dist/api/resources/data.js.map +1 -1
  30. package/dist/api/resources/discovery.d.ts +26 -0
  31. package/dist/api/resources/discovery.d.ts.map +1 -0
  32. package/dist/api/resources/discovery.js +46 -0
  33. package/dist/api/resources/discovery.js.map +1 -0
  34. package/dist/api/resources/evaluation.d.ts +9 -12
  35. package/dist/api/resources/evaluation.d.ts.map +1 -1
  36. package/dist/api/resources/evaluation.js +45 -20
  37. package/dist/api/resources/evaluation.js.map +1 -1
  38. package/dist/api/resources/formats.d.ts +1 -1
  39. package/dist/api/resources/formats.js +2 -2
  40. package/dist/api/resources/formats.js.map +1 -1
  41. package/dist/api/resources/jobs.d.ts +7 -8
  42. package/dist/api/resources/jobs.d.ts.map +1 -1
  43. package/dist/api/resources/jobs.js +10 -49
  44. package/dist/api/resources/jobs.js.map +1 -1
  45. package/dist/api/resources/languages.d.ts +25 -0
  46. package/dist/api/resources/languages.d.ts.map +1 -0
  47. package/dist/api/resources/languages.js +44 -0
  48. package/dist/api/resources/languages.js.map +1 -0
  49. package/dist/api/resources/translation.d.ts +8 -16
  50. package/dist/api/resources/translation.d.ts.map +1 -1
  51. package/dist/api/resources/translation.js +11 -15
  52. package/dist/api/resources/translation.js.map +1 -1
  53. package/dist/api/sse-client.d.ts +10 -16
  54. package/dist/api/sse-client.d.ts.map +1 -1
  55. package/dist/api/sse-client.js +158 -197
  56. package/dist/api/sse-client.js.map +1 -1
  57. package/dist/api/sse-models.js +1 -1
  58. package/dist/api/sse-models.js.map +1 -1
  59. package/dist/api/trace.js +1 -1
  60. package/dist/api/trace.js.map +1 -1
  61. package/dist/api/transport.d.ts +28 -1
  62. package/dist/api/transport.d.ts.map +1 -1
  63. package/dist/api/transport.js +89 -17
  64. package/dist/api/transport.js.map +1 -1
  65. package/dist/cli/arg-order.d.ts +2 -0
  66. package/dist/cli/arg-order.d.ts.map +1 -1
  67. package/dist/cli/arg-order.js +2 -0
  68. package/dist/cli/arg-order.js.map +1 -1
  69. package/dist/cli/exit-codes.d.ts +0 -2
  70. package/dist/cli/exit-codes.d.ts.map +1 -1
  71. package/dist/cli/exit-codes.js +0 -2
  72. package/dist/cli/exit-codes.js.map +1 -1
  73. package/dist/cli/exit.d.ts +4 -4
  74. package/dist/cli/exit.d.ts.map +1 -1
  75. package/dist/cli/exit.js +4 -4
  76. package/dist/cli/exit.js.map +1 -1
  77. package/dist/cli/prompts.d.ts +0 -2
  78. package/dist/cli/prompts.d.ts.map +1 -1
  79. package/dist/cli/prompts.js +1 -1
  80. package/dist/cli/prompts.js.map +1 -1
  81. package/dist/commands/auth.d.ts.map +1 -1
  82. package/dist/commands/auth.js +0 -1
  83. package/dist/commands/auth.js.map +1 -1
  84. package/dist/commands/batch-processor.d.ts +38 -0
  85. package/dist/commands/batch-processor.d.ts.map +1 -0
  86. package/dist/commands/batch-processor.js +73 -0
  87. package/dist/commands/batch-processor.js.map +1 -0
  88. package/dist/commands/config/api-url.d.ts.map +1 -1
  89. package/dist/commands/config/api-url.js +4 -1
  90. package/dist/commands/config/api-url.js.map +1 -1
  91. package/dist/commands/config/command.d.ts.map +1 -1
  92. package/dist/commands/config/command.js +3 -2
  93. package/dist/commands/config/command.js.map +1 -1
  94. package/dist/commands/config/language.d.ts.map +1 -1
  95. package/dist/commands/config/language.js.map +1 -1
  96. package/dist/commands/config/reset.d.ts.map +1 -1
  97. package/dist/commands/config/reset.js.map +1 -1
  98. package/dist/commands/config/shared.js +3 -3
  99. package/dist/commands/config/shared.js.map +1 -1
  100. package/dist/commands/config/show.d.ts.map +1 -1
  101. package/dist/commands/config/show.js +0 -13
  102. package/dist/commands/config/show.js.map +1 -1
  103. package/dist/commands/data.d.ts.map +1 -1
  104. package/dist/commands/data.js +241 -68
  105. package/dist/commands/data.js.map +1 -1
  106. package/dist/commands/evaluate.d.ts.map +1 -1
  107. package/dist/commands/evaluate.js +111 -29
  108. package/dist/commands/evaluate.js.map +1 -1
  109. package/dist/commands/formats.d.ts +1 -1
  110. package/dist/commands/formats.d.ts.map +1 -1
  111. package/dist/commands/formats.js +5 -12
  112. package/dist/commands/formats.js.map +1 -1
  113. package/dist/commands/health.d.ts +1 -1
  114. package/dist/commands/health.d.ts.map +1 -1
  115. package/dist/commands/health.js +3 -10
  116. package/dist/commands/health.js.map +1 -1
  117. package/dist/commands/job-tracking.d.ts +13 -5
  118. package/dist/commands/job-tracking.d.ts.map +1 -1
  119. package/dist/commands/job-tracking.js +25 -18
  120. package/dist/commands/job-tracking.js.map +1 -1
  121. package/dist/commands/languages.d.ts +12 -0
  122. package/dist/commands/languages.d.ts.map +1 -0
  123. package/dist/commands/languages.js +48 -0
  124. package/dist/commands/languages.js.map +1 -0
  125. package/dist/commands/mappers.d.ts +15 -3
  126. package/dist/commands/mappers.d.ts.map +1 -1
  127. package/dist/commands/mappers.js +38 -18
  128. package/dist/commands/mappers.js.map +1 -1
  129. package/dist/commands/progress-animator.d.ts +2 -1
  130. package/dist/commands/progress-animator.d.ts.map +1 -1
  131. package/dist/commands/progress-animator.js +4 -2
  132. package/dist/commands/progress-animator.js.map +1 -1
  133. package/dist/commands/translate.d.ts.map +1 -1
  134. package/dist/commands/translate.js +149 -87
  135. package/dist/commands/translate.js.map +1 -1
  136. package/dist/config/credentials.d.ts +11 -87
  137. package/dist/config/credentials.d.ts.map +1 -1
  138. package/dist/config/credentials.js +28 -87
  139. package/dist/config/credentials.js.map +1 -1
  140. package/dist/config/env-parser.d.ts.map +1 -1
  141. package/dist/config/env-parser.js +3 -2
  142. package/dist/config/env-parser.js.map +1 -1
  143. package/dist/config/file-utils.js +1 -1
  144. package/dist/config/file-utils.js.map +1 -1
  145. package/dist/config/index.d.ts +4 -7
  146. package/dist/config/index.d.ts.map +1 -1
  147. package/dist/config/index.js +6 -12
  148. package/dist/config/index.js.map +1 -1
  149. package/dist/config/schemas.d.ts +4 -33
  150. package/dist/config/schemas.d.ts.map +1 -1
  151. package/dist/config/schemas.js +14 -19
  152. package/dist/config/schemas.js.map +1 -1
  153. package/dist/config/settings.d.ts +4 -4
  154. package/dist/config/settings.d.ts.map +1 -1
  155. package/dist/config/settings.js +16 -21
  156. package/dist/config/settings.js.map +1 -1
  157. package/dist/config/toml-io.js +1 -1
  158. package/dist/config/toml-io.js.map +1 -1
  159. package/dist/constants.d.ts +10 -9
  160. package/dist/constants.d.ts.map +1 -1
  161. package/dist/constants.js +10 -9
  162. package/dist/constants.js.map +1 -1
  163. package/dist/errors/catalog.d.ts.map +1 -1
  164. package/dist/errors/catalog.js +6 -8
  165. package/dist/errors/catalog.js.map +1 -1
  166. package/dist/errors/contracts.d.ts.map +1 -1
  167. package/dist/errors/contracts.js +2 -3
  168. package/dist/errors/contracts.js.map +1 -1
  169. package/dist/i18n/cache.d.ts +0 -2
  170. package/dist/i18n/cache.d.ts.map +1 -1
  171. package/dist/i18n/cache.js +4 -4
  172. package/dist/i18n/cache.js.map +1 -1
  173. package/dist/i18n/catalog.d.ts +34 -37
  174. package/dist/i18n/catalog.d.ts.map +1 -1
  175. package/dist/i18n/catalog.js +38 -40
  176. package/dist/i18n/catalog.js.map +1 -1
  177. package/dist/i18n/index.d.ts +0 -1
  178. package/dist/i18n/index.d.ts.map +1 -1
  179. package/dist/i18n/index.js +0 -3
  180. package/dist/i18n/index.js.map +1 -1
  181. package/dist/i18n/translator-adapter.js +1 -1
  182. package/dist/i18n/translator-adapter.js.map +1 -1
  183. package/dist/i18n/translator.d.ts.map +1 -1
  184. package/dist/i18n/translator.js +1 -0
  185. package/dist/i18n/translator.js.map +1 -1
  186. package/dist/index.d.ts +1 -2
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +2 -3
  189. package/dist/index.js.map +1 -1
  190. package/dist/logging/console-handler.js +1 -1
  191. package/dist/logging/console-handler.js.map +1 -1
  192. package/dist/logging/file-handler.d.ts.map +1 -1
  193. package/dist/logging/file-handler.js +4 -5
  194. package/dist/logging/file-handler.js.map +1 -1
  195. package/dist/logging/index.d.ts +2 -2
  196. package/dist/logging/index.d.ts.map +1 -1
  197. package/dist/logging/index.js +1 -1
  198. package/dist/logging/index.js.map +1 -1
  199. package/dist/logging/logger.d.ts +18 -22
  200. package/dist/logging/logger.d.ts.map +1 -1
  201. package/dist/logging/logger.js +38 -64
  202. package/dist/logging/logger.js.map +1 -1
  203. package/dist/logging/loki-handler.js +1 -1
  204. package/dist/logging/loki-handler.js.map +1 -1
  205. package/dist/logging/setup.d.ts +4 -3
  206. package/dist/logging/setup.d.ts.map +1 -1
  207. package/dist/logging/setup.js +136 -33
  208. package/dist/logging/setup.js.map +1 -1
  209. package/dist/output/ansi-utils.d.ts +13 -0
  210. package/dist/output/ansi-utils.d.ts.map +1 -0
  211. package/dist/output/ansi-utils.js +37 -0
  212. package/dist/output/ansi-utils.js.map +1 -0
  213. package/dist/output/index.d.ts +2 -5
  214. package/dist/output/index.d.ts.map +1 -1
  215. package/dist/output/index.js +3 -2
  216. package/dist/output/index.js.map +1 -1
  217. package/dist/output/output-events.d.ts +0 -1
  218. package/dist/output/output-events.d.ts.map +1 -1
  219. package/dist/output/tables/catalog.d.ts +5 -2
  220. package/dist/output/tables/catalog.d.ts.map +1 -1
  221. package/dist/output/tables/catalog.js +65 -9
  222. package/dist/output/tables/catalog.js.map +1 -1
  223. package/dist/output/tables/evaluation.d.ts.map +1 -1
  224. package/dist/output/tables/evaluation.js +3 -0
  225. package/dist/output/tables/evaluation.js.map +1 -1
  226. package/dist/output/tables/health-status.d.ts.map +1 -1
  227. package/dist/output/tables/health-status.js +11 -7
  228. package/dist/output/tables/health-status.js.map +1 -1
  229. package/dist/output/tables/index.d.ts +3 -3
  230. package/dist/output/tables/index.d.ts.map +1 -1
  231. package/dist/output/tables/index.js +2 -2
  232. package/dist/output/tables/index.js.map +1 -1
  233. package/dist/output/tables/render.d.ts.map +1 -1
  234. package/dist/output/tables/render.js +2 -10
  235. package/dist/output/tables/render.js.map +1 -1
  236. package/dist/output/terminal.d.ts +1 -5
  237. package/dist/output/terminal.d.ts.map +1 -1
  238. package/dist/output/terminal.js +25 -24
  239. package/dist/output/terminal.js.map +1 -1
  240. package/dist/output/view-models.d.ts +28 -2
  241. package/dist/output/view-models.d.ts.map +1 -1
  242. package/dist/program.d.ts.map +1 -1
  243. package/dist/program.js +21 -29
  244. package/dist/program.js.map +1 -1
  245. package/dist/repl/controller.d.ts.map +1 -1
  246. package/dist/repl/controller.js +82 -47
  247. package/dist/repl/controller.js.map +1 -1
  248. package/dist/repl/core/output-bridge.d.ts.map +1 -1
  249. package/dist/repl/core/output-bridge.js +6 -4
  250. package/dist/repl/core/output-bridge.js.map +1 -1
  251. package/dist/repl/core/progress-types.d.ts +1 -1
  252. package/dist/repl/core/progress-types.d.ts.map +1 -1
  253. package/dist/repl/core/progress-types.js +1 -1
  254. package/dist/repl/core/progress-types.js.map +1 -1
  255. package/dist/repl/examples.d.ts +5 -7
  256. package/dist/repl/examples.d.ts.map +1 -1
  257. package/dist/repl/examples.js +27 -14
  258. package/dist/repl/examples.js.map +1 -1
  259. package/dist/repl/executor.d.ts +2 -4
  260. package/dist/repl/executor.d.ts.map +1 -1
  261. package/dist/repl/executor.js +69 -58
  262. package/dist/repl/executor.js.map +1 -1
  263. package/dist/repl/help.d.ts +10 -3
  264. package/dist/repl/help.d.ts.map +1 -1
  265. package/dist/repl/help.js +31 -4
  266. package/dist/repl/help.js.map +1 -1
  267. package/dist/repl/history/command-history.js +5 -5
  268. package/dist/repl/history/command-history.js.map +1 -1
  269. package/dist/repl/history/output-render.d.ts +1 -3
  270. package/dist/repl/history/output-render.d.ts.map +1 -1
  271. package/dist/repl/history/output-render.js +4 -6
  272. package/dist/repl/history/output-render.js.map +1 -1
  273. package/dist/repl/history/output-store.d.ts.map +1 -1
  274. package/dist/repl/history/output-store.js +6 -3
  275. package/dist/repl/history/output-store.js.map +1 -1
  276. package/dist/repl/input/autocomplete-provider.d.ts.map +1 -1
  277. package/dist/repl/input/autocomplete-provider.js +1 -2
  278. package/dist/repl/input/autocomplete-provider.js.map +1 -1
  279. package/dist/repl/input/completer.d.ts +0 -2
  280. package/dist/repl/input/completer.d.ts.map +1 -1
  281. package/dist/repl/input/completer.js +9 -7
  282. package/dist/repl/input/completer.js.map +1 -1
  283. package/dist/repl/input/ghost-text.d.ts +1 -1
  284. package/dist/repl/input/ghost-text.d.ts.map +1 -1
  285. package/dist/repl/input/ghost-text.js +1 -1
  286. package/dist/repl/input/ghost-text.js.map +1 -1
  287. package/dist/repl/input/input-handler.d.ts.map +1 -1
  288. package/dist/repl/input/input-handler.js +21 -15
  289. package/dist/repl/input/input-handler.js.map +1 -1
  290. package/dist/repl/input/keybindings.d.ts +0 -5
  291. package/dist/repl/input/keybindings.d.ts.map +1 -1
  292. package/dist/repl/input/keybindings.js +0 -65
  293. package/dist/repl/input/keybindings.js.map +1 -1
  294. package/dist/repl/loop.d.ts +1 -2
  295. package/dist/repl/loop.d.ts.map +1 -1
  296. package/dist/repl/loop.js +14 -14
  297. package/dist/repl/loop.js.map +1 -1
  298. package/dist/repl/registry.d.ts +28 -20
  299. package/dist/repl/registry.d.ts.map +1 -1
  300. package/dist/repl/registry.js +229 -171
  301. package/dist/repl/registry.js.map +1 -1
  302. package/dist/repl/service.d.ts +1 -10
  303. package/dist/repl/service.d.ts.map +1 -1
  304. package/dist/repl/service.js +15 -26
  305. package/dist/repl/service.js.map +1 -1
  306. package/dist/repl/ui/components/curl-panel.js +4 -4
  307. package/dist/repl/ui/components/curl-panel.js.map +1 -1
  308. package/dist/repl/ui/components/ghost-text-editor.d.ts +4 -0
  309. package/dist/repl/ui/components/ghost-text-editor.d.ts.map +1 -1
  310. package/dist/repl/ui/components/ghost-text-editor.js +17 -6
  311. package/dist/repl/ui/components/ghost-text-editor.js.map +1 -1
  312. package/dist/repl/ui/components/history-component.d.ts.map +1 -1
  313. package/dist/repl/ui/components/history-component.js +7 -69
  314. package/dist/repl/ui/components/history-component.js.map +1 -1
  315. package/dist/repl/ui/components/progress-bar.js.map +1 -1
  316. package/dist/repl/ui/components/status-bar-line.js +1 -1
  317. package/dist/repl/ui/components/status-bar-line.js.map +1 -1
  318. package/dist/repl/ui/data.js +3 -3
  319. package/dist/repl/ui/data.js.map +1 -1
  320. package/dist/repl/ui/hint-state.d.ts +0 -1
  321. package/dist/repl/ui/hint-state.d.ts.map +1 -1
  322. package/dist/repl/ui/hint-state.js +1 -1
  323. package/dist/repl/ui/hint-state.js.map +1 -1
  324. package/dist/repl/ui/selection-utils.d.ts +28 -0
  325. package/dist/repl/ui/selection-utils.d.ts.map +1 -0
  326. package/dist/repl/ui/selection-utils.js +70 -0
  327. package/dist/repl/ui/selection-utils.js.map +1 -0
  328. package/dist/repl/ui/status-bar.d.ts +1 -4
  329. package/dist/repl/ui/status-bar.d.ts.map +1 -1
  330. package/dist/repl/ui/status-bar.js +6 -33
  331. package/dist/repl/ui/status-bar.js.map +1 -1
  332. package/dist/runtime/async-utils.d.ts +16 -0
  333. package/dist/runtime/async-utils.d.ts.map +1 -0
  334. package/dist/runtime/async-utils.js +40 -0
  335. package/dist/runtime/async-utils.js.map +1 -0
  336. package/dist/runtime/clipboard-win32.d.ts.map +1 -1
  337. package/dist/runtime/clipboard-win32.js +2 -1
  338. package/dist/runtime/clipboard-win32.js.map +1 -1
  339. package/dist/runtime/clipboard.d.ts.map +1 -1
  340. package/dist/runtime/clipboard.js +6 -2
  341. package/dist/runtime/clipboard.js.map +1 -1
  342. package/dist/runtime/external-transport.d.ts.map +1 -1
  343. package/dist/runtime/external-transport.js +1 -1
  344. package/dist/runtime/external-transport.js.map +1 -1
  345. package/dist/runtime/file-args.d.ts +38 -0
  346. package/dist/runtime/file-args.d.ts.map +1 -0
  347. package/dist/runtime/file-args.js +133 -0
  348. package/dist/runtime/file-args.js.map +1 -0
  349. package/dist/runtime/platform.d.ts +0 -2
  350. package/dist/runtime/platform.d.ts.map +1 -1
  351. package/dist/runtime/platform.js +0 -6
  352. package/dist/runtime/platform.js.map +1 -1
  353. package/dist/tui/settings-screen.d.ts +1 -13
  354. package/dist/tui/settings-screen.d.ts.map +1 -1
  355. package/dist/tui/settings-screen.js +46 -34
  356. package/dist/tui/settings-screen.js.map +1 -1
  357. package/dist/version.d.ts.map +1 -1
  358. package/dist/version.js +3 -2
  359. package/dist/version.js.map +1 -1
  360. package/examples/sample.tmx +6 -0
  361. package/package.json +18 -7
package/README.md CHANGED
@@ -8,7 +8,11 @@ CLI for the Prompsit Translation API. Translate text and documents, evaluate qua
8
8
 
9
9
  ## Requirements
10
10
 
11
- Node.js 22+
11
+ [Node.js](https://nodejs.org/) 22+
12
+
13
+ ```bash
14
+ node -v # Should print v22.x or higher
15
+ ```
12
16
 
13
17
  ## Install
14
18
 
@@ -32,12 +36,11 @@ command -v prompsit
32
36
 
33
37
  ## Usage
34
38
 
35
- Run `prompsit` to enter interactive REPL with tab completion. Global options: `--debug` `--no-color` `--json` `--version`
39
+ Run `prompsit` to enter interactive REPL with tab completion.
36
40
 
37
41
  ```bash
38
42
  prompsit # Enter interactive REPL
39
43
  prompsit translate "Hello" -s "en" -t "es" # Run single command
40
- prompsit --json engines # JSON output mode
41
44
  ```
42
45
 
43
46
  > **Quoting rule:** All values must be quoted. Commands, subcommands, and flags stay unquoted.
@@ -222,7 +225,6 @@ $ prompsit formats
222
225
  | Command | Description |
223
226
  |---------|-------------|
224
227
  | `health` | API health check |
225
- | `verbose` / `terse` | Enable/disable verbose HTTP output |
226
228
  | `help` | Show all commands (also: `?`) |
227
229
  | `clear` | Clear screen |
228
230
  | `exit` | Quit CLI (also: `quit`, `q`) |
@@ -254,6 +256,10 @@ Config file: `~/.prompsit/config.toml` | Env override: `PROMPSIT_<SECTION>__<KEY
254
256
  | `examples/sample.xliff` | Bundled example: XLIFF 1.2 translation file |
255
257
  | `examples/sample.csv` | Bundled example: CSV tabular data |
256
258
 
259
+ ## Troubleshooting
260
+
261
+ See [docs/project/runbook.md](docs/project/runbook.md) for setup issues, common errors, and fixes.
262
+
257
263
  ## License
258
264
 
259
265
  MIT
@@ -1,5 +1,5 @@
1
1
  import type { Method, Options as GotOptions } from "got";
2
- import type { HttpTransport } from "./transport.ts";
2
+ import type { HttpTransport, RawResponse } from "./transport.ts";
3
3
  import { AuthResource } from "./resources/auth.ts";
4
4
  /**
5
5
  * Authenticated HTTP session with automatic token refresh.
@@ -18,19 +18,19 @@ export declare class AuthSession {
18
18
  private readonly authResource;
19
19
  private refreshPromise;
20
20
  constructor(transport: HttpTransport, authResource: AuthResource);
21
+ /** Make authenticated JSON request with auto-refresh. */
22
+ request<T>(method: Method, url: string, options?: Partial<GotOptions>, signal?: AbortSignal): Promise<T>;
23
+ /** Make authenticated request returning raw buffer + headers. */
24
+ requestRaw(method: Method, url: string, options?: Partial<GotOptions>, signal?: AbortSignal): Promise<RawResponse>;
25
+ /** Stream authenticated response directly to file on disk. */
26
+ requestToFile(method: Method, url: string, outputPath: string, options?: Partial<GotOptions>, signal?: AbortSignal): Promise<string>;
21
27
  /**
22
- * Make authenticated request with auto-refresh.
23
- *
24
- * Flow: public fallback -> proactive refresh -> request -> reactive 401 retry
28
+ * Auth wrapper: public fallback -> proactive refresh -> execute -> reactive 401 retry.
25
29
  *
26
- * @param method - HTTP method
27
- * @param url - Request URL
28
- * @param options - Got request options
29
- * @returns Response body (JSON parsed)
30
- * @throws AuthenticationError if not authenticated or refresh fails
31
- * @throws NetworkError if API unreachable
30
+ * Generic over return type — works for JSON (request), buffer (requestRaw),
31
+ * and file streaming (requestToFile).
32
32
  */
33
- request<T>(method: Method, url: string, options?: Partial<GotOptions>, signal?: AbortSignal): Promise<T>;
33
+ private withAuth;
34
34
  /**
35
35
  * Attempt token refresh using refresh token.
36
36
  *
@@ -1 +1 @@
1
- {"version":3,"file":"auth-session.d.ts","sourceRoot":"","sources":["../../src/api/auth-session.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWnD;;;;;;;;;;;GAWG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,OAAO,CAAC,cAAc,CAAiC;gBAE3C,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY;IAKhE;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,CAAC,UAAU,CAAM,EACjC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC;IAkCb;;;;;;;;;OASG;IACH,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;YAShB,UAAU;CAiCzB"}
1
+ {"version":3,"file":"auth-session.d.ts","sourceRoot":"","sources":["../../src/api/auth-session.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,KAAK,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWnD;;;;;;;;;;;GAWG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,OAAO,CAAC,cAAc,CAAiC;gBAE3C,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY;IAKhE,yDAAyD;IACnD,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,CAAC,UAAU,CAAM,EACjC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC;IAOb,iEAAiE;IAC3D,UAAU,CACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,CAAC,UAAU,CAAM,EACjC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC;IAOvB,8DAA8D;IACxD,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,OAAO,CAAC,UAAU,CAAM,EACjC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC;IAQlB;;;;;OAKG;YACW,QAAQ;IAmCtB;;;;;;;;;OASG;IACH,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;YAShB,UAAU;CAiCzB"}
@@ -25,24 +25,28 @@ export class AuthSession {
25
25
  this.transport = transport;
26
26
  this.authResource = authResource;
27
27
  }
28
+ /** Make authenticated JSON request with auto-refresh. */
29
+ async request(method, url, options = {}, signal) {
30
+ return this.withAuth((publicFlag, sig) => this.transport.request(method, url, options, publicFlag, sig), signal);
31
+ }
32
+ /** Make authenticated request returning raw buffer + headers. */
33
+ async requestRaw(method, url, options = {}, signal) {
34
+ return this.withAuth((publicFlag, sig) => this.transport.requestRaw(method, url, options, publicFlag, sig), signal);
35
+ }
36
+ /** Stream authenticated response directly to file on disk. */
37
+ async requestToFile(method, url, outputPath, options = {}, signal) {
38
+ return this.withAuth((publicFlag, sig) => this.transport.requestToFile(method, url, outputPath, options, publicFlag, sig), signal);
39
+ }
28
40
  /**
29
- * Make authenticated request with auto-refresh.
30
- *
31
- * Flow: public fallback -> proactive refresh -> request -> reactive 401 retry
41
+ * Auth wrapper: public fallback -> proactive refresh -> execute -> reactive 401 retry.
32
42
  *
33
- * @param method - HTTP method
34
- * @param url - Request URL
35
- * @param options - Got request options
36
- * @returns Response body (JSON parsed)
37
- * @throws AuthenticationError if not authenticated or refresh fails
38
- * @throws NetworkError if API unreachable
43
+ * Generic over return type — works for JSON (request), buffer (requestRaw),
44
+ * and file streaming (requestToFile).
39
45
  */
40
- async request(method, url, options = {}, signal) {
41
- // 1. No token — send without auth header; let API decide (public vs protected).
42
- // Public endpoints (engines, formats) succeed; protected ones return 401
43
- // which transport classifies as AuthenticationError.
46
+ async withAuth(fn, signal) {
47
+ // 1. No token — send without auth header; let API decide (public vs protected)
44
48
  if (!isAuthenticated()) {
45
- return await this.transport.request(method, url, options, true, signal);
49
+ return await fn(true, signal);
46
50
  }
47
51
  // 2. Proactive refresh: if token expired, refresh before request
48
52
  if (isTokenExpired()) {
@@ -52,16 +56,16 @@ export class AuthSession {
52
56
  throw new AuthenticationError("Session expired. Run: prompsit login");
53
57
  }
54
58
  }
55
- // 3. Execute request with auth client
59
+ // 3. Execute with auth
56
60
  try {
57
- return await this.transport.request(method, url, options, false, signal);
61
+ return await fn(false, signal);
58
62
  }
59
63
  catch (error) {
60
64
  // 4. Reactive refresh: on 401, refresh once and retry
61
65
  if (error instanceof AuthenticationError) {
62
66
  const refreshed = await this.tryRefresh();
63
67
  if (refreshed) {
64
- return await this.transport.request(method, url, options, false, signal);
68
+ return await fn(false, signal);
65
69
  }
66
70
  clearTokens();
67
71
  throw new AuthenticationError("Authentication failed. Run: prompsit login");
@@ -1 +1 @@
1
- {"version":3,"file":"auth-session.js","sourceRoot":"","sources":["../../src/api/auth-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-session.js","sourceRoot":"","sources":["../../src/api/auth-session.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ import { AuthResource } from "./resources/auth.ts";
3
3
  import { HealthResource } from "./resources/health.ts";
4
4
  import { TranslationResource } from "./resources/translation.ts";
5
5
  import { EvaluationResource } from "./resources/evaluation.ts";
6
- import { EnginesResource } from "./resources/engines.ts";
7
- import { FormatsResource } from "./resources/formats.ts";
6
+ import { LanguagesResource } from "./resources/languages.ts";
7
+ import { DiscoveryResource } from "./resources/discovery.ts";
8
8
  import { JobsResource } from "./resources/jobs.ts";
9
9
  import { DataResource } from "./resources/data.ts";
10
10
  /**
@@ -21,8 +21,8 @@ export declare class APIClient {
21
21
  readonly health: HealthResource;
22
22
  readonly translation: TranslationResource;
23
23
  readonly evaluation: EvaluationResource;
24
- readonly engines: EnginesResource;
25
- readonly formats: FormatsResource;
24
+ readonly languages: LanguagesResource;
25
+ readonly discovery: DiscoveryResource;
26
26
  readonly jobs: JobsResource;
27
27
  readonly data: DataResource;
28
28
  constructor();
@@ -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,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,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,OAAO,EAAE,eAAe,CAAC;IACzC,SAAgB,OAAO,EAAE,eAAe,CAAC;IACzC,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;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,14 +1,14 @@
1
1
  // See API-448, API-469, API-477, API-484, API-490, API-496: API Client facade with singleton pattern
2
2
  // Composes resource instances over shared HttpTransport.
3
- // Pattern: Module-level singleton with explicit invalidation (Python get_api_client port).
3
+ // Pattern: Module-level singleton with explicit invalidation.
4
4
  import { HttpTransport } from "./transport.js";
5
5
  import { AuthSession } from "./auth-session.js";
6
6
  import { AuthResource } from "./resources/auth.js";
7
7
  import { HealthResource } from "./resources/health.js";
8
8
  import { TranslationResource } from "./resources/translation.js";
9
9
  import { EvaluationResource } from "./resources/evaluation.js";
10
- import { EnginesResource } from "./resources/engines.js";
11
- import { FormatsResource } from "./resources/formats.js";
10
+ import { LanguagesResource } from "./resources/languages.js";
11
+ import { DiscoveryResource } from "./resources/discovery.js";
12
12
  import { JobsResource } from "./resources/jobs.js";
13
13
  import { DataResource } from "./resources/data.js";
14
14
  import { getSettings } from "../config/settings.js";
@@ -26,20 +26,20 @@ export class APIClient {
26
26
  health;
27
27
  translation;
28
28
  evaluation;
29
- engines;
30
- formats;
29
+ languages;
30
+ discovery;
31
31
  jobs;
32
32
  data;
33
33
  constructor() {
34
- this.baseUrl = getSettings().api.base_url.replace(/\/+$/, "");
34
+ this.baseUrl = getSettings().api.base_url.replace(/\/{1,100}$/, "");
35
35
  this.transport = new HttpTransport();
36
36
  this.auth = new AuthResource(this.transport, this.baseUrl);
37
37
  this.session = new AuthSession(this.transport, this.auth);
38
38
  this.health = new HealthResource(this.transport, this.baseUrl);
39
39
  this.translation = new TranslationResource(this.session, this.baseUrl);
40
40
  this.evaluation = new EvaluationResource(this.session, this.baseUrl);
41
- this.engines = new EnginesResource(this.session, this.baseUrl);
42
- this.formats = new FormatsResource(this.session, this.baseUrl);
41
+ this.languages = new LanguagesResource(this.session, this.baseUrl);
42
+ this.discovery = new DiscoveryResource(this.session, this.baseUrl);
43
43
  this.jobs = new JobsResource(this.session, this.baseUrl);
44
44
  this.data = new DataResource(this.session, this.baseUrl);
45
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Options as GotOptions } from "got";
2
+ /**
3
+ * Set the output function for curl display.
4
+ * Callback receives sanitized curl (for display) and raw curl (for clipboard copy).
5
+ */
6
+ export declare function setCurlOutputFn(fn: ((sanitized: string, raw: string) => void) | null): void;
7
+ /**
8
+ * Check if curl display is enabled.
9
+ */
10
+ export declare function isCurlEnabled(): boolean;
11
+ /**
12
+ * Enable or disable curl display.
13
+ */
14
+ export declare function setCurlEnabled(enabled: boolean): void;
15
+ /**
16
+ * Convert got request options to a curl command string.
17
+ *
18
+ * Includes method, URL, headers (except SKIP_HEADERS), and body.
19
+ * Pretty-formats JSON body for readability.
20
+ */
21
+ export declare function buildCurl(options: GotOptions): string;
22
+ /**
23
+ * Remove sensitive data from curl string for display.
24
+ *
25
+ * - Replaces Bearer tokens with [token]
26
+ * - Hides password/secret/refresh_token/access_token values
27
+ */
28
+ export declare function sanitizeCurl(curl: string): string;
29
+ export declare function logCurl(options: GotOptions): void;
30
+ //# sourceMappingURL=curl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curl.d.ts","sourceRoot":"","sources":["../../src/api/curl.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,KAAK,CAAC;AASjD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAE3F;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAErD;AAaD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAqCrD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBjD;AAWD,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAWjD"}
@@ -0,0 +1,115 @@
1
+ // See API-444: Curl command output for API requests
2
+ // Shows API requests as curl commands for --debug flag and show_curl setting.
3
+ // Layer: Infrastructure. Output is injected via setCurlOutputFn() callback.
4
+ // Module-level curl display state
5
+ let curlEnabled = false;
6
+ // Injectable output callback: (sanitized, raw) => void
7
+ // CLI mode displays sanitized only; REPL stores both for panel + clipboard.
8
+ let outputFn = null;
9
+ /**
10
+ * Set the output function for curl display.
11
+ * Callback receives sanitized curl (for display) and raw curl (for clipboard copy).
12
+ */
13
+ export function setCurlOutputFn(fn) {
14
+ outputFn = fn;
15
+ }
16
+ /**
17
+ * Check if curl display is enabled.
18
+ */
19
+ export function isCurlEnabled() {
20
+ return curlEnabled;
21
+ }
22
+ /**
23
+ * Enable or disable curl display.
24
+ */
25
+ export function setCurlEnabled(enabled) {
26
+ curlEnabled = enabled;
27
+ }
28
+ // Headers to skip in curl output (standard HTTP headers added by got/Node)
29
+ const SKIP_HEADERS = new Set([
30
+ "host",
31
+ "user-agent",
32
+ "accept",
33
+ "accept-encoding",
34
+ "connection",
35
+ "content-length",
36
+ "transfer-encoding",
37
+ ]);
38
+ /**
39
+ * Convert got request options to a curl command string.
40
+ *
41
+ * Includes method, URL, headers (except SKIP_HEADERS), and body.
42
+ * Pretty-formats JSON body for readability.
43
+ */
44
+ export function buildCurl(options) {
45
+ const method = options.method;
46
+ const url = typeof options.url === "string" ? options.url : (options.url?.toString() ?? "");
47
+ const parts = [`curl -X ${method} '${url}'`];
48
+ // Add headers (skip standard ones)
49
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- got types say headers is defined, but runtime can be undefined
50
+ const headers = options.headers ?? {};
51
+ for (const [key, value] of Object.entries(headers)) {
52
+ if (SKIP_HEADERS.has(key.toLowerCase())) {
53
+ continue;
54
+ }
55
+ const headerValue = Array.isArray(value) ? value.join(", ") : (value ?? "");
56
+ parts.push(` -H '${key}: ${headerValue}'`);
57
+ }
58
+ // Add body
59
+ if (options.json) {
60
+ const body = JSON.stringify(options.json);
61
+ parts.push(` -d '${body}'`);
62
+ }
63
+ else if (options.form) {
64
+ const formData = new URLSearchParams(options.form).toString();
65
+ parts.push(` -H 'Content-Type: application/x-www-form-urlencoded'`, ` -d '${formData}'`);
66
+ }
67
+ else if (options.body) {
68
+ const body = typeof options.body === "string" ? options.body : JSON.stringify(options.body);
69
+ // Try to pretty-format JSON
70
+ try {
71
+ const parsed = JSON.parse(body);
72
+ const formatted = JSON.stringify(parsed);
73
+ parts.push(` -d '${formatted}'`);
74
+ }
75
+ catch {
76
+ parts.push(` -d '${body}'`);
77
+ }
78
+ }
79
+ return parts.join("\n");
80
+ }
81
+ /**
82
+ * Remove sensitive data from curl string for display.
83
+ *
84
+ * - Replaces Bearer tokens with [token]
85
+ * - Hides password/secret/refresh_token/access_token values
86
+ */
87
+ export function sanitizeCurl(curl) {
88
+ // Replace Bearer tokens
89
+ let result = curl.replaceAll(/(Bearer )\S+/g, "$1[token]");
90
+ // Hide sensitive query params and form data
91
+ result = result.replaceAll(/((?:refresh_token|password|access_token|secret)=)[^&'\s]{1,1000}/g, "$1[hidden]");
92
+ // Hide sensitive JSON body fields: "key": "value" or "key":"value"
93
+ result = result.replaceAll(/("(?:password|secret|token|(?:access_|refresh_)token)":\s{0,100}")[^"]{0,10000}"/g, '$1[hidden]"');
94
+ return result;
95
+ }
96
+ /**
97
+ * Log curl for got request (called from got hooks).
98
+ *
99
+ * Builds both raw and sanitized curl, passes both to outputFn.
100
+ * Raw version contains real tokens (for clipboard), sanitized has [token] (for display).
101
+ */
102
+ /** URL paths to exclude from curl output (internal/service requests). */
103
+ const SKIP_URLS = ["/v1/auth/token", "/v1/jobs/"];
104
+ export function logCurl(options) {
105
+ if (!curlEnabled || !outputFn) {
106
+ return;
107
+ }
108
+ const url = typeof options.url === "string" ? options.url : (options.url?.toString() ?? "");
109
+ if (SKIP_URLS.some((path) => url.includes(path)))
110
+ return;
111
+ const raw = buildCurl(options);
112
+ const sanitized = sanitizeCurl(raw);
113
+ outputFn(sanitized, raw);
114
+ }
115
+ //# sourceMappingURL=curl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curl.js","sourceRoot":"","sources":["../../src/api/curl.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { APIError, AuthenticationError, CancelledError, ForbiddenError, JobError, NetworkError, ProblemDetailSchema, RateLimitError, ServerError, ValidationError, type ProblemDetail } from "../errors/contracts.ts";
2
- export { APIError, AuthenticationError, CancelledError, ForbiddenError, JobError, NetworkError, ProblemDetailSchema, RateLimitError, ServerError, ValidationError, };
3
- export type { ProblemDetail };
1
+ import { APIError } from "../errors/contracts.ts";
4
2
  export declare function parseApiError(responseData: unknown, statusCode: number): APIError;
3
+ export { CancelledError, NetworkError, APIError, AuthenticationError, RateLimitError, ServerError, } from "../errors/contracts.ts";
5
4
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/api/errors.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,eAAe,EACf,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,eAAe,GAChB,CAAC;AACF,YAAY,EAAE,aAAa,EAAE,CAAC;AAI9B,wBAAgB,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CA4EjF"}
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,7 +1,8 @@
1
1
  // See API-442: Error hierarchy with codes & RFC 9457 ProblemDetail
2
- import { APIError, AuthenticationError, CancelledError, ForbiddenError, JobError, NetworkError, ProblemDetailSchema, RateLimitError, ServerError, ValidationError, } from "../errors/contracts.js";
2
+ import { APIError, AuthenticationError, ForbiddenError, ProblemDetailSchema, RateLimitError, ServerError, ValidationError, } from "../errors/contracts.js";
3
3
  import { HttpStatus } from "../constants.js";
4
- export { APIError, AuthenticationError, CancelledError, ForbiddenError, JobError, NetworkError, ProblemDetailSchema, RateLimitError, ServerError, ValidationError, };
4
+ // Re-export only symbols that external consumers actually import.
5
+ // ForbiddenError, ValidationError, ProblemDetailSchema are used internally by parseApiError().
5
6
  // Parse API response and return appropriate exception
6
7
  // Supports RFC 9457 ProblemDetail format with fallback payload normalization.
7
8
  export function parseApiError(responseData, statusCode) {
@@ -70,4 +71,5 @@ function mapStatusToError(statusCode, message) {
70
71
  return new ServerError(message, statusCode);
71
72
  return new APIError(message, `E${statusCode}`, statusCode);
72
73
  }
74
+ export { CancelledError, NetworkError, APIError, AuthenticationError, RateLimitError, ServerError, } from "../errors/contracts.js";
73
75
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/api/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/api/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Build auth headers object from current token (empty object if not authenticated). */
2
+ export declare function getAuthHeaders(): Record<string, string>;
3
+ /** Extract filename from Content-Disposition header value. Returns null if not found. */
4
+ export declare function parseContentDispositionFilename(header: string | undefined): string | null;
5
+ //# sourceMappingURL=http-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-utils.d.ts","sourceRoot":"","sources":["../../src/api/http-utils.ts"],"names":[],"mappings":"AAMA,wFAAwF;AACxF,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIvD;AAED,yFAAyF;AACzF,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIzF"}
@@ -0,0 +1,19 @@
1
+ // Shared HTTP utilities for API resources that bypass transport (binary responses).
2
+ // Used by: JobsResource.download(), EvaluationResource.evaluateFile()
3
+ import { getAccessToken } from "../config/credentials.js";
4
+ import { HEADER_AUTHORIZATION, BEARER_PREFIX } from "../constants.js";
5
+ /** Build auth headers object from current token (empty object if not authenticated). */
6
+ export function getAuthHeaders() {
7
+ const token = getAccessToken();
8
+ if (!token)
9
+ return {};
10
+ return { [HEADER_AUTHORIZATION]: `${BEARER_PREFIX} ${token}` };
11
+ }
12
+ /** Extract filename from Content-Disposition header value. Returns null if not found. */
13
+ export function parseContentDispositionFilename(header) {
14
+ if (!header?.includes("filename="))
15
+ return null;
16
+ const match = /filename="?([^";\s]+)"?/.exec(header);
17
+ return match?.[1] ?? null;
18
+ }
19
+ //# sourceMappingURL=http-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-utils.js","sourceRoot":"","sources":["../../src/api/http-utils.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sEAAsE;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEtE,wFAAwF;AACxF,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,GAAG,aAAa,IAAI,KAAK,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,+BAA+B,CAAC,MAA0B;IACxE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC"}