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
@@ -1,27 +1,7 @@
1
- import { z } from "zod";
2
- /**
3
- * Credential data schema for persisted CLI auth state.
4
- *
5
- * Pattern: Tolerant Reader (optional fields on read, strict on write)
6
- *
7
- * Python writes: access_token, refresh_token, account_id
8
- * Node.js writes: same + optional token_type, expires_at, refresh_expires_at
9
- * Both CLIs must read each other's files without breaking
10
- */
11
- export declare const CredentialDataSchema: z.ZodObject<{
12
- access_token: z.ZodString;
13
- refresh_token: z.ZodOptional<z.ZodString>;
14
- account_id: z.ZodOptional<z.ZodString>;
15
- token_type: z.ZodOptional<z.ZodString>;
16
- expires_at: z.ZodOptional<z.ZodNumber>;
17
- refresh_expires_at: z.ZodOptional<z.ZodNumber>;
18
- plan: z.ZodOptional<z.ZodString>;
19
- }, z.core.$loose>;
20
- export type CredentialData = z.infer<typeof CredentialDataSchema>;
21
1
  /**
22
2
  * Credential store with encapsulated cache
23
3
  *
24
- * Pattern: Replaces Python's untestable module-level globals with class fields
4
+ * Pattern: Class-based store with encapsulated cache
25
5
  *
26
6
  * Cache behavior:
27
7
  * - Load once from file, cache in memory
@@ -29,6 +9,7 @@ export type CredentialData = z.infer<typeof CredentialDataSchema>;
29
9
  * - resetAuthCache() invalidates cache without deleting file
30
10
  * - clearTokens() deletes file and resets cache
31
11
  */
12
+ /** @internal Exported for unit tests only. */
32
13
  export declare class CredentialStore {
33
14
  private cache;
34
15
  private authenticated;
@@ -49,37 +30,17 @@ export declare class CredentialStore {
49
30
  * @param expiresIn - Token lifetime in seconds (optional, calculates expires_at)
50
31
  */
51
32
  saveTokens(accessToken: string, refreshToken?: string, accountId?: string, expiresIn?: number, plan?: string): void;
52
- /**
53
- * Get access token from cache or file
54
- *
55
- * @returns Access token or null if not found
56
- */
33
+ /** @returns Access token or null if not authenticated. */
57
34
  getAccessToken(): string | null;
58
- /**
59
- * Get refresh token from cache or file
60
- *
61
- * @returns Refresh token or null if not found
62
- */
35
+ /** @returns Refresh token or null if not available. */
63
36
  getRefreshToken(): string | null;
64
- /**
65
- * Get account ID from cache or file
66
- *
67
- * @returns Account ID or null if not found
68
- */
37
+ /** @returns Account ID or null if not authenticated. */
69
38
  getAccountId(): string | null;
70
- /**
71
- * Get subscription plan from cache or file
72
- */
39
+ /** @returns Subscription plan string or null. */
73
40
  getPlan(): string | null;
74
- /**
75
- * Clear tokens (delete file and reset cache)
76
- */
41
+ /** Delete credentials file and reset in-memory cache. */
77
42
  clearTokens(): void;
78
- /**
79
- * Check if user is authenticated (cached)
80
- *
81
- * @returns True if access token exists
82
- */
43
+ /** @returns True if access token exists (result cached after first check). */
83
44
  isAuthenticated(): boolean;
84
45
  /**
85
46
  * Reset auth cache (invalidate without deleting file)
@@ -105,52 +66,15 @@ export declare class CredentialStore {
105
66
  */
106
67
  private loadCache;
107
68
  }
108
- /**
109
- * Get credential store singleton
110
- *
111
- * Pattern: Singleton with explicit invalidation (same as getSettings)
112
- *
113
- * @returns CredentialStore instance (cached after first call)
114
- */
115
- export declare function getCredentialStore(): CredentialStore;
116
- /**
117
- * Reset credential store singleton (for testing)
118
- */
119
- export declare function resetCredentialStore(): void;
120
- /**
121
- * Save tokens (delegates to singleton)
122
- */
69
+ /** Persist OAuth2 tokens to ~/.prompsit/credentials.json with atomic write. */
123
70
  export declare function saveTokens(accessToken: string, refreshToken?: string, accountId?: string, expiresIn?: number, plan?: string): void;
124
- /**
125
- * Get access token (delegates to singleton)
126
- */
127
71
  export declare function getAccessToken(): string | null;
128
- /**
129
- * Get refresh token (delegates to singleton)
130
- */
131
72
  export declare function getRefreshToken(): string | null;
132
- /**
133
- * Get account ID (delegates to singleton)
134
- */
135
73
  export declare function getAccountId(): string | null;
136
- /**
137
- * Clear tokens (delegates to singleton)
138
- */
139
74
  export declare function clearTokens(): void;
140
- /**
141
- * Check if authenticated (delegates to singleton)
142
- */
143
75
  export declare function isAuthenticated(): boolean;
144
- /**
145
- * Reset auth cache (delegates to singleton)
146
- */
147
- export declare function resetAuthCache(): void;
148
- /**
149
- * Get subscription plan (delegates to singleton)
150
- */
151
76
  export declare function getPlan(): string | null;
152
- /**
153
- * Check if token is expired (delegates to singleton)
154
- */
155
77
  export declare function isTokenExpired(bufferSeconds?: number): boolean;
78
+ /** @public Used by E2E tests (terminal-setup, repl-token-refresh) — do not remove. */
79
+ export declare function resetAuthCache(): void;
156
80
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;iBAUvB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,aAAa,CAAuB;IAE5C;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;;;;;;;OASG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,IAAI;IAoCP;;;;OAIG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;;;OAIG;IACH,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC;;;;OAIG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB;;OAEG;IACH,WAAW,IAAI,IAAI;IAYnB;;;;OAIG;IACH,eAAe,IAAI,OAAO;IAQ1B;;;;OAIG;IACH,cAAc,IAAI,IAAI;IAMtB;;;;;;;OAOG;IACH,cAAc,CAAC,aAAa,GAAE,MAA4B,GAAG,OAAO;IAQpE;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;CAoBlB;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAGpD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAID;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,MAAM,GAAG,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9D"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"AA6BA;;;;;;;;;;GAUG;AACH,8CAA8C;AAC9C,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,aAAa,CAAuB;IAE5C;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;;;;;;;OASG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,IAAI;IAoCP,0DAA0D;IAC1D,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B,uDAAuD;IACvD,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC,wDAAwD;IACxD,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,iDAAiD;IACjD,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB,yDAAyD;IACzD,WAAW,IAAI,IAAI;IAYnB,8EAA8E;IAC9E,eAAe,IAAI,OAAO;IAQ1B;;;;OAIG;IACH,cAAc,IAAI,IAAI;IAMtB;;;;;;;OAOG;IACH,cAAc,CAAC,aAAa,GAAE,MAA4B,GAAG,OAAO;IAQpE;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;CAoBlB;AAoBD,+EAA+E;AAC/E,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,IAAI,CAEN;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,wBAAgB,OAAO,IAAI,MAAM,GAAG,IAAI,CAEvC;AAED,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,sFAAsF;AACtF,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
@@ -1,6 +1,5 @@
1
1
  // See API-440: Credential Store (JSON Cross-Compatible)
2
2
  // See API-441: Token Expiry with Monotonic Clock
3
- // Class-based store with encapsulated cache (replaces Python globals)
4
3
  import fs from "node:fs";
5
4
  import { z } from "zod";
6
5
  import { getCredsFile } from "./paths.js";
@@ -12,27 +11,19 @@ import { FILE_MODE_OWNER_RW } from "../constants.js";
12
11
  * Credential data schema for persisted CLI auth state.
13
12
  *
14
13
  * Pattern: Tolerant Reader (optional fields on read, strict on write)
15
- *
16
- * Python writes: access_token, refresh_token, account_id
17
- * Node.js writes: same + optional token_type, expires_at, refresh_expires_at
18
- * Both CLIs must read each other's files without breaking
19
14
  */
20
- export const CredentialDataSchema = z
21
- .object({
22
- access_token: z.string(), // Required (Python always writes)
23
- refresh_token: z.string().optional(), // Optional (Python writes, but may be null)
24
- account_id: z.string().optional(), // Optional (Python writes, but may be null)
25
- token_type: z.string().optional(), // Optional (Node.js only)
26
- expires_at: z.number().optional(), // Optional (Node.js only, Unix timestamp)
27
- refresh_expires_at: z.number().optional(), // Optional (Node.js only, Unix timestamp)
28
- plan: z.string().optional(), // Optional (subscription plan from API)
29
- })
30
- .loose(); // Tolerate unknown keys from future versions
15
+ const CredentialDataSchema = z.object({
16
+ access_token: z.string(),
17
+ refresh_token: z.string().nullish(),
18
+ account_id: z.string().nullish(), // Displayed in REPL status bar
19
+ expires_at: z.number().optional(), // Unix timestamp, calculated from expires_in
20
+ plan: z.string().optional(), // Subscription plan from API
21
+ });
31
22
  // ===== CredentialStore Class =====
32
23
  /**
33
24
  * Credential store with encapsulated cache
34
25
  *
35
- * Pattern: Replaces Python's untestable module-level globals with class fields
26
+ * Pattern: Class-based store with encapsulated cache
36
27
  *
37
28
  * Cache behavior:
38
29
  * - Load once from file, cache in memory
@@ -40,6 +31,7 @@ export const CredentialDataSchema = z
40
31
  * - resetAuthCache() invalidates cache without deleting file
41
32
  * - clearTokens() deletes file and resets cache
42
33
  */
34
+ /** @internal Exported for unit tests only. */
43
35
  export class CredentialStore {
44
36
  cache = null;
45
37
  authenticated = null;
@@ -76,17 +68,17 @@ export class CredentialStore {
76
68
  data.account_id = accountId;
77
69
  if (plan !== undefined)
78
70
  data.plan = plan;
79
- // Calculate expires_at as Unix timestamp (matches Python convention)
80
- if (expiresIn !== undefined) {
71
+ // Calculate expires_at as Unix timestamp
72
+ if (expiresIn === undefined) {
73
+ this.expiresAtMono = null; // Unknown expiry
74
+ }
75
+ else {
81
76
  data.expires_at = Date.now() / 1000 + expiresIn;
82
77
  // Track expiry using monotonic clock (immune to system time changes)
83
78
  this.expiresAtMono = performance.now() + expiresIn * 1000; // ms
84
79
  }
85
- else {
86
- this.expiresAtMono = null; // Unknown expiry
87
- }
88
80
  const credsPath = getCredsFile();
89
- // Atomic write with JSON indentation (matches Python json.dumps(indent=2))
81
+ // Atomic write with JSON indentation
90
82
  atomicWriteFile(credsPath, JSON.stringify(data, null, 2));
91
83
  // Set file permissions to 0o600 (owner read/write only) on Unix
92
84
  // Suppress errors on Windows (chmod not supported)
@@ -100,39 +92,23 @@ export class CredentialStore {
100
92
  this.cache = CredentialDataSchema.parse(data);
101
93
  this.authenticated = true;
102
94
  }
103
- /**
104
- * Get access token from cache or file
105
- *
106
- * @returns Access token or null if not found
107
- */
95
+ /** @returns Access token or null if not authenticated. */
108
96
  getAccessToken() {
109
97
  return this.loadCache()?.access_token ?? null;
110
98
  }
111
- /**
112
- * Get refresh token from cache or file
113
- *
114
- * @returns Refresh token or null if not found
115
- */
99
+ /** @returns Refresh token or null if not available. */
116
100
  getRefreshToken() {
117
101
  return this.loadCache()?.refresh_token ?? null;
118
102
  }
119
- /**
120
- * Get account ID from cache or file
121
- *
122
- * @returns Account ID or null if not found
123
- */
103
+ /** @returns Account ID or null if not authenticated. */
124
104
  getAccountId() {
125
105
  return this.loadCache()?.account_id ?? null;
126
106
  }
127
- /**
128
- * Get subscription plan from cache or file
129
- */
107
+ /** @returns Subscription plan string or null. */
130
108
  getPlan() {
131
109
  return this.loadCache()?.plan ?? null;
132
110
  }
133
- /**
134
- * Clear tokens (delete file and reset cache)
135
- */
111
+ /** Delete credentials file and reset in-memory cache. */
136
112
  clearTokens() {
137
113
  const credsPath = getCredsFile();
138
114
  if (fs.existsSync(credsPath)) {
@@ -142,11 +118,7 @@ export class CredentialStore {
142
118
  this.authenticated = false;
143
119
  this.expiresAtMono = null; // Reset expiry tracking
144
120
  }
145
- /**
146
- * Check if user is authenticated (cached)
147
- *
148
- * @returns True if access token exists
149
- */
121
+ /** @returns True if access token exists (result cached after first check). */
150
122
  isAuthenticated() {
151
123
  if (this.authenticated !== null)
152
124
  return this.authenticated;
@@ -194,7 +166,7 @@ export class CredentialStore {
194
166
  return null;
195
167
  }
196
168
  try {
197
- const raw = fs.readFileSync(credsPath, "utf-8");
169
+ const raw = fs.readFileSync(credsPath, "utf8");
198
170
  const parsed = JSON.parse(raw);
199
171
  this.cache = CredentialDataSchema.parse(parsed);
200
172
  this.restoreMonotonicExpiry(this.cache.expires_at);
@@ -215,69 +187,38 @@ let credentialStoreInstance = null;
215
187
  *
216
188
  * @returns CredentialStore instance (cached after first call)
217
189
  */
218
- export function getCredentialStore() {
190
+ function getCredentialStore() {
219
191
  credentialStoreInstance ??= new CredentialStore();
220
192
  return credentialStoreInstance;
221
193
  }
222
- /**
223
- * Reset credential store singleton (for testing)
224
- */
225
- export function resetCredentialStore() {
226
- credentialStoreInstance = null;
227
- }
228
194
  // ===== Convenience Functions =====
229
- /**
230
- * Save tokens (delegates to singleton)
231
- */
195
+ /** Persist OAuth2 tokens to ~/.prompsit/credentials.json with atomic write. */
232
196
  export function saveTokens(accessToken, refreshToken, accountId, expiresIn, plan) {
233
197
  getCredentialStore().saveTokens(accessToken, refreshToken, accountId, expiresIn, plan);
234
198
  }
235
- /**
236
- * Get access token (delegates to singleton)
237
- */
238
199
  export function getAccessToken() {
239
200
  return getCredentialStore().getAccessToken();
240
201
  }
241
- /**
242
- * Get refresh token (delegates to singleton)
243
- */
244
202
  export function getRefreshToken() {
245
203
  return getCredentialStore().getRefreshToken();
246
204
  }
247
- /**
248
- * Get account ID (delegates to singleton)
249
- */
250
205
  export function getAccountId() {
251
206
  return getCredentialStore().getAccountId();
252
207
  }
253
- /**
254
- * Clear tokens (delegates to singleton)
255
- */
256
208
  export function clearTokens() {
257
209
  getCredentialStore().clearTokens();
258
210
  }
259
- /**
260
- * Check if authenticated (delegates to singleton)
261
- */
262
211
  export function isAuthenticated() {
263
212
  return getCredentialStore().isAuthenticated();
264
213
  }
265
- /**
266
- * Reset auth cache (delegates to singleton)
267
- */
268
- export function resetAuthCache() {
269
- getCredentialStore().resetAuthCache();
270
- }
271
- /**
272
- * Get subscription plan (delegates to singleton)
273
- */
274
214
  export function getPlan() {
275
215
  return getCredentialStore().getPlan();
276
216
  }
277
- /**
278
- * Check if token is expired (delegates to singleton)
279
- */
280
217
  export function isTokenExpired(bufferSeconds) {
281
218
  return getCredentialStore().isTokenExpired(bufferSeconds);
282
219
  }
220
+ /** @public Used by E2E tests (terminal-setup, repl-token-refresh) — do not remove. */
221
+ export function resetAuthCache() {
222
+ getCredentialStore().resetAuthCache();
223
+ }
283
224
  //# sourceMappingURL=credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"env-parser.d.ts","sourceRoot":"","sources":["../../src/config/env-parser.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8B5F"}
1
+ {"version":3,"file":"env-parser.d.ts","sourceRoot":"","sources":["../../src/config/env-parser.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+B5F"}
@@ -37,7 +37,8 @@ export function parseEnvOverrides(prefix, delimiter) {
37
37
  const next = current[part];
38
38
  current = (typeof next === "object" && next !== null ? next : {});
39
39
  }
40
- current[keyPath[keyPath.length - 1]] = coercedValue;
40
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- array guaranteed non-empty by loop
41
+ current[keyPath.at(-1)] = coercedValue;
41
42
  }
42
43
  return result;
43
44
  }
@@ -54,7 +55,7 @@ function coerceValue(value) {
54
55
  return false;
55
56
  // Number (integer or float)
56
57
  const num = Number(value);
57
- if (!isNaN(num) && value.trim() !== "")
58
+ if (!Number.isNaN(num) && value.trim() !== "")
58
59
  return num;
59
60
  // String (fallback)
60
61
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"env-parser.js","sourceRoot":"","sources":["../../src/config/env-parser.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,qFAAqF;AAErF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,SAAiB;IACjE,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAEjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAE7D,uCAAuC;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAClE,SAAS;QACX,CAAC;QAED,gBAAgB;QAChB,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAExC,sBAAsB;QACtB,IAAI,OAAO,GAAG,MAAM,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAC;QAC/F,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,KAAa;IAChC,UAAU;IACV,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAEpC,4BAA4B;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC;IAEnD,oBAAoB;IACpB,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"env-parser.js","sourceRoot":"","sources":["../../src/config/env-parser.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,qFAAqF;AAErF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,SAAiB;IACjE,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAEjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAE7D,uCAAuC;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAClE,SAAS;QACX,CAAC;QAED,gBAAgB;QAChB,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAExC,sBAAsB;QACtB,IAAI,OAAO,GAAG,MAAM,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAC;QAC/F,CAAC;QACD,0GAA0G;QAC1G,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,GAAG,YAAY,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,KAAa;IAChC,UAAU;IACV,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAEpC,4BAA4B;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC;IAE1D,oBAAoB;IACpB,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -18,7 +18,7 @@ export function atomicWriteFile(filePath, content) {
18
18
  const tmpPath = path.join(dir, `.${basename}.tmp`);
19
19
  try {
20
20
  // Step 1: Write to temp file
21
- fs.writeFileSync(tmpPath, content, { encoding: "utf-8", mode: FILE_MODE_OWNER_RW });
21
+ fs.writeFileSync(tmpPath, content, { encoding: "utf8", mode: FILE_MODE_OWNER_RW, flush: true });
22
22
  // Step 2: Atomic rename (replaces target if exists)
23
23
  fs.renameSync(tmpPath, filePath);
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/config/file-utils.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,wDAAwD;AAExD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAwB;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,MAAM,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,6BAA6B;QAC7B,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAEpF,oDAAoD;QACpD,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qCAAqC;QACrC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/config/file-utils.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,wDAAwD;AAExD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAwB;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,MAAM,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,6BAA6B;QAC7B,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhG,oDAAoD;QACpD,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qCAAqC;QACrC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,9 +1,6 @@
1
- export { ApiConfigSchema, CliConfigSchema, TelemetryConfigSchema, SettingsSchema, type ApiConfig, type CliConfig, type TelemetryConfig, type Settings, } from "./schemas.ts";
2
- export { API_URL_PRESETS, LOKI_URL_PRESETS, LOKI_KEY_PRESETS, DEFAULT_API_URL_PRESET, TOKEN_EXPIRY_BUFFER, } from "./constants.ts";
3
- export { getConfigDir, getConfigFile, getCredsFile } from "./paths.ts";
4
- export { atomicWriteFile } from "./file-utils.ts";
5
- export { readConfigToml, writeConfigToml } from "./toml-io.ts";
6
- export { parseEnvOverrides } from "./env-parser.ts";
1
+ export { API_URL_PRESETS } from "./constants.ts";
2
+ export { getConfigFile } from "./paths.ts";
3
+ export { writeConfigToml } from "./toml-io.ts";
7
4
  export { getSettings, getSettingsDiagnostics, getEnvOverridesSnapshot, reloadSettings, buildCliKeyMap, getConfigValue, setConfigValue, getValidConfigKeys, resolveLokiPreset, } from "./settings.ts";
8
- export { CredentialDataSchema, type CredentialData, CredentialStore, getCredentialStore, resetCredentialStore, saveTokens, getAccessToken, getRefreshToken, getAccountId, clearTokens, isAuthenticated, resetAuthCache, isTokenExpired, } from "./credentials.ts";
5
+ export { clearTokens, isAuthenticated } from "./credentials.ts";
9
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,QAAQ,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,14 +1,8 @@
1
- // See API-434: Zod Config Schemas & Defaults
2
- // See API-436: TOML I/O and path utilities
3
- // See API-438: Settings singleton with env override and CLI key map
4
- // See API-440: Credential Store (JSON Cross-Compatible)
5
- // Barrel export for clean public API
6
- export { ApiConfigSchema, CliConfigSchema, TelemetryConfigSchema, SettingsSchema, } from "./schemas.js";
7
- export { API_URL_PRESETS, LOKI_URL_PRESETS, LOKI_KEY_PRESETS, DEFAULT_API_URL_PRESET, TOKEN_EXPIRY_BUFFER, } from "./constants.js";
8
- export { getConfigDir, getConfigFile, getCredsFile } from "./paths.js";
9
- export { atomicWriteFile } from "./file-utils.js";
10
- export { readConfigToml, writeConfigToml } from "./toml-io.js";
11
- export { parseEnvOverrides } from "./env-parser.js";
1
+ // See API-434, API-436, API-438, API-440: Config module barrel
2
+ // Only re-exports symbols that are actually imported through this barrel.
3
+ export { API_URL_PRESETS } from "./constants.js";
4
+ export { getConfigFile } from "./paths.js";
5
+ export { writeConfigToml } from "./toml-io.js";
12
6
  export { getSettings, getSettingsDiagnostics, getEnvOverridesSnapshot, reloadSettings, buildCliKeyMap, getConfigValue, setConfigValue, getValidConfigKeys, resolveLokiPreset, } from "./settings.js";
13
- export { CredentialDataSchema, CredentialStore, getCredentialStore, resetCredentialStore, saveTokens, getAccessToken, getRefreshToken, getAccountId, clearTokens, isAuthenticated, resetAuthCache, isTokenExpired, } from "./credentials.js";
7
+ export { clearTokens, isAuthenticated } from "./credentials.js";
14
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,2CAA2C;AAC3C,oEAAoE;AACpE,wDAAwD;AACxD,qCAAqC;AAErC,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,cAAc,GAKf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EAEpB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,0EAA0E;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,24 +1,18 @@
1
1
  import { z } from "zod";
2
2
  /**
3
3
  * API configuration section schema
4
- * Matches Python ApiConfig (11 fields)
5
4
  */
6
5
  export declare const ApiConfigSchema: z.ZodObject<{
7
6
  base_url: z.ZodDefault<z.ZodString>;
8
7
  timeout: z.ZodDefault<z.ZodNumber>;
9
8
  connect_timeout: z.ZodDefault<z.ZodNumber>;
10
9
  write_timeout: z.ZodDefault<z.ZodNumber>;
11
- pool_timeout: z.ZodDefault<z.ZodNumber>;
12
10
  retry_attempts: z.ZodDefault<z.ZodNumber>;
13
- retry_initial: z.ZodDefault<z.ZodNumber>;
14
11
  retry_max: z.ZodDefault<z.ZodNumber>;
15
- max_connections: z.ZodDefault<z.ZodNumber>;
16
- max_keepalive: z.ZodDefault<z.ZodNumber>;
17
12
  rate_limit_max_wait: z.ZodDefault<z.ZodNumber>;
18
13
  }, z.core.$strip>;
19
14
  /**
20
15
  * CLI behavior configuration section schema
21
- * Matches Python CliConfig (7 fields)
22
16
  */
23
17
  export declare const CliConfigSchema: z.ZodObject<{
24
18
  contact_url: z.ZodDefault<z.ZodString>;
@@ -26,25 +20,17 @@ export declare const CliConfigSchema: z.ZodObject<{
26
20
  progress_threshold: z.ZodDefault<z.ZodNumber>;
27
21
  language: z.ZodDefault<z.ZodString>;
28
22
  log_level: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<"error" | "warn" | "debug" | "info", string>>;
29
- verbose: z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
30
- verbose: "verbose";
31
- terse: "terse";
32
- }>, z.ZodPipe<z.ZodBoolean, z.ZodTransform<"verbose" | "terse", boolean>>]>>;
23
+ show_curl: z.ZodDefault<z.ZodBoolean>;
33
24
  job_tracking_strategy: z.ZodDefault<z.ZodEnum<{
34
25
  auto: "auto";
35
26
  sse: "sse";
36
27
  polling: "polling";
37
28
  }>>;
38
- repl_plugin_conflict_policy: z.ZodDefault<z.ZodEnum<{
39
- error: "error";
40
- "first-wins": "first-wins";
41
- "last-wins": "last-wins";
42
- }>>;
29
+ file_concurrency: z.ZodDefault<z.ZodNumber>;
43
30
  repl_history_max_entries: z.ZodDefault<z.ZodNumber>;
44
31
  }, z.core.$strip>;
45
32
  /**
46
33
  * Remote error telemetry configuration schema
47
- * Matches Python TelemetryConfig (3 fields)
48
34
  *
49
35
  * Loki URL is resolved automatically from the active API preset
50
36
  * (test -> edge.prompsit.com/loki, local -> localhost:3100).
@@ -57,7 +43,6 @@ export declare const TelemetryConfigSchema: z.ZodObject<{
57
43
  }, z.core.$strip>;
58
44
  /**
59
45
  * Composite settings schema with all config sections
60
- * Matches Python Settings (api, cli, telemetry)
61
46
  */
62
47
  export declare const SettingsSchema: z.ZodObject<{
63
48
  api: z.ZodDefault<z.ZodObject<{
@@ -65,12 +50,8 @@ export declare const SettingsSchema: z.ZodObject<{
65
50
  timeout: z.ZodDefault<z.ZodNumber>;
66
51
  connect_timeout: z.ZodDefault<z.ZodNumber>;
67
52
  write_timeout: z.ZodDefault<z.ZodNumber>;
68
- pool_timeout: z.ZodDefault<z.ZodNumber>;
69
53
  retry_attempts: z.ZodDefault<z.ZodNumber>;
70
- retry_initial: z.ZodDefault<z.ZodNumber>;
71
54
  retry_max: z.ZodDefault<z.ZodNumber>;
72
- max_connections: z.ZodDefault<z.ZodNumber>;
73
- max_keepalive: z.ZodDefault<z.ZodNumber>;
74
55
  rate_limit_max_wait: z.ZodDefault<z.ZodNumber>;
75
56
  }, z.core.$strip>>;
76
57
  cli: z.ZodDefault<z.ZodObject<{
@@ -79,20 +60,13 @@ export declare const SettingsSchema: z.ZodObject<{
79
60
  progress_threshold: z.ZodDefault<z.ZodNumber>;
80
61
  language: z.ZodDefault<z.ZodString>;
81
62
  log_level: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<"error" | "warn" | "debug" | "info", string>>;
82
- verbose: z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
83
- verbose: "verbose";
84
- terse: "terse";
85
- }>, z.ZodPipe<z.ZodBoolean, z.ZodTransform<"verbose" | "terse", boolean>>]>>;
63
+ show_curl: z.ZodDefault<z.ZodBoolean>;
86
64
  job_tracking_strategy: z.ZodDefault<z.ZodEnum<{
87
65
  auto: "auto";
88
66
  sse: "sse";
89
67
  polling: "polling";
90
68
  }>>;
91
- repl_plugin_conflict_policy: z.ZodDefault<z.ZodEnum<{
92
- error: "error";
93
- "first-wins": "first-wins";
94
- "last-wins": "last-wins";
95
- }>>;
69
+ file_concurrency: z.ZodDefault<z.ZodNumber>;
96
70
  repl_history_max_entries: z.ZodDefault<z.ZodNumber>;
97
71
  }, z.core.$strip>>;
98
72
  telemetry: z.ZodDefault<z.ZodObject<{
@@ -104,8 +78,5 @@ export declare const SettingsSchema: z.ZodObject<{
104
78
  /**
105
79
  * Inferred TypeScript types from Zod schemas
106
80
  */
107
- export type ApiConfig = z.infer<typeof ApiConfigSchema>;
108
- export type CliConfig = z.infer<typeof CliConfigSchema>;
109
- export type TelemetryConfig = z.infer<typeof TelemetryConfigSchema>;
110
81
  export type Settings = z.infer<typeof SettingsSchema>;
111
82
  //# sourceMappingURL=schemas.d.ts.map
@@ -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;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;iBAY1B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;iBAkB1B,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIzB,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
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"}