arcli 2.0.0 → 2.2.0

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 (511) hide show
  1. package/CHANGELOG.md +106 -1
  2. package/README.md +21 -14
  3. package/dist/cli/arca-runtime.js +41 -0
  4. package/dist/cli/commands/billing-family.command.js +36 -9
  5. package/dist/cli/commands/billing-shortcuts.command.js +8 -2
  6. package/dist/cli/commands/billing.command.batch.js +28 -12
  7. package/dist/cli/commands/billing.command.interactive-preview.js +12 -13
  8. package/dist/cli/commands/billing.command.options.js +83 -39
  9. package/dist/cli/commands/billing.command.output.js +3 -3
  10. package/dist/cli/commands/billing.command.parser.js +44 -30
  11. package/dist/cli/commands/billing.command.pdf.js +9 -6
  12. package/dist/cli/commands/billing.command.shared.js +86 -49
  13. package/dist/cli/commands/billing.command.shortcuts.js +3 -4
  14. package/dist/cli/commands/completion.command.js +140 -0
  15. package/dist/cli/commands/config.command.js +44 -45
  16. package/dist/cli/commands/cuit-argument.js +10 -0
  17. package/dist/cli/commands/examples.command.js +0 -1
  18. package/dist/cli/commands/export-shortcut.command.js +19 -0
  19. package/dist/cli/commands/export.command.js +106 -0
  20. package/dist/cli/commands/export.command.options.js +140 -0
  21. package/dist/cli/commands/export.command.parser.js +84 -0
  22. package/dist/cli/commands/export.command.pdf.js +61 -0
  23. package/dist/cli/commands/fce-obligation.command.js +8 -16
  24. package/dist/cli/commands/interactive.command.js +9 -8
  25. package/dist/cli/commands/padron.command.js +46 -0
  26. package/dist/cli/commands/parameters.command.js +13 -13
  27. package/dist/cli/commands/pdf.command.js +17 -31
  28. package/dist/cli/commands/storybook.command.js +4 -4
  29. package/dist/cli/commands/vouchers.command.js +14 -14
  30. package/dist/cli/error-output.js +89 -11
  31. package/dist/cli/global-options.js +55 -0
  32. package/dist/cli/help-argv.js +0 -1
  33. package/dist/cli/help.js +243 -391
  34. package/dist/cli/ignored-global-options.js +32 -0
  35. package/dist/cli/index.js +12 -14
  36. package/dist/cli/interactive/advanced-options.js +13 -14
  37. package/dist/cli/interactive/config.flow.js +59 -20
  38. package/dist/cli/interactive/export.flow.js +263 -0
  39. package/dist/cli/interactive/history.flow.js +2 -3
  40. package/dist/cli/interactive/interactive-mode.js +63 -33
  41. package/dist/cli/interactive/invoice-picker.js +7 -7
  42. package/dist/cli/interactive/invoice.flow.js +35 -13
  43. package/dist/cli/interactive/note.flow.js +16 -16
  44. package/dist/cli/interactive/pdf.flow.js +9 -7
  45. package/dist/cli/interactive/prompts.js +0 -1
  46. package/dist/cli/interactive/receiver-padron.js +52 -0
  47. package/dist/cli/interactive/repeat.flow.js +10 -11
  48. package/dist/cli/interactive/session.js +13 -8
  49. package/dist/cli/interactive/status.flow.js +0 -1
  50. package/dist/cli/interactive/update.flow.js +0 -1
  51. package/dist/cli/interactive/validators.js +7 -6
  52. package/dist/cli/option-parsers.js +14 -4
  53. package/dist/cli/program.js +14 -5
  54. package/dist/cli/skipped-options.js +14 -0
  55. package/dist/cli/spinner.js +0 -1
  56. package/dist/cli/types.js +0 -1
  57. package/dist/cli/version.js +1 -2
  58. package/dist/index.js +0 -1
  59. package/dist/lib/dates/arca-date.js +3 -4
  60. package/dist/lib/errors/app-error.js +2 -2
  61. package/dist/lib/files/read-json-file.js +2 -3
  62. package/dist/lib/files/restrict-to-owner.js +0 -1
  63. package/dist/lib/files/write-new-file.js +29 -0
  64. package/dist/lib/identity/cuit.js +26 -0
  65. package/dist/lib/identity/format-cuit.js +1 -2
  66. package/dist/lib/links.js +2 -1
  67. package/dist/lib/numbers/argentine-amount.js +3 -4
  68. package/dist/lib/numbers/strict-integer.js +0 -1
  69. package/dist/lib/paths/mask-path.js +0 -1
  70. package/dist/lib/security/certificate.js +10 -8
  71. package/dist/lib/security/pem.js +2 -3
  72. package/dist/modules/billing/billing-response.js +16 -5
  73. package/dist/modules/billing/billing.amounts.js +3 -4
  74. package/dist/modules/billing/billing.associated-period.js +7 -8
  75. package/dist/modules/billing/billing.associated-vouchers.js +5 -6
  76. package/dist/modules/billing/billing.batch.js +12 -5
  77. package/dist/modules/billing/billing.constants.js +0 -1
  78. package/dist/modules/billing/billing.currency.js +4 -5
  79. package/dist/modules/billing/billing.date-range.js +27 -11
  80. package/dist/modules/billing/billing.display.js +14 -8
  81. package/dist/modules/billing/billing.errors.js +2 -3
  82. package/dist/modules/billing/billing.fce.js +3 -4
  83. package/dist/modules/billing/billing.iva-receptor.js +2 -3
  84. package/dist/modules/billing/billing.json-format.js +0 -1
  85. package/dist/modules/billing/billing.json-input.js +278 -0
  86. package/dist/modules/billing/billing.labels.js +1 -2
  87. package/dist/modules/billing/billing.mappers.js +0 -1
  88. package/dist/modules/billing/billing.padron.js +59 -0
  89. package/dist/modules/billing/billing.presenter.js +0 -1
  90. package/dist/modules/billing/billing.schemas.js +20 -6
  91. package/dist/modules/billing/billing.serialize.js +11 -15
  92. package/dist/modules/billing/billing.service.js +25 -4
  93. package/dist/modules/billing/billing.text.js +4 -13
  94. package/dist/modules/billing/billing.types.internal.js +0 -1
  95. package/dist/modules/billing/billing.types.js +0 -1
  96. package/dist/modules/billing/billing.validation.js +13 -11
  97. package/dist/modules/billing/voucher-kind-map.js +15 -16
  98. package/dist/modules/completion/completion.js +53 -0
  99. package/dist/modules/completion/completion.presenter.js +35 -0
  100. package/dist/modules/completion/installer.js +92 -0
  101. package/dist/modules/completion/shell-scripts.js +46 -0
  102. package/dist/modules/config/certificate-expiry.js +90 -0
  103. package/dist/modules/config/config-doctor.js +42 -28
  104. package/dist/modules/config/config-value-parser.js +32 -17
  105. package/dist/modules/config/config.export-credentials.js +23 -0
  106. package/dist/modules/config/config.presenter.js +28 -6
  107. package/dist/modules/config/config.schemas.js +27 -12
  108. package/dist/modules/config/config.sections.js +31 -11
  109. package/dist/modules/config/config.service.js +38 -9
  110. package/dist/modules/examples/examples.js +72 -37
  111. package/dist/modules/export/export.items.js +149 -0
  112. package/dist/modules/export/export.json-input.js +91 -0
  113. package/dist/modules/export/export.mappers.js +293 -0
  114. package/dist/modules/export/export.presenter.js +2 -0
  115. package/dist/modules/export/export.response.js +86 -0
  116. package/dist/modules/export/export.serialize.js +70 -0
  117. package/dist/modules/export/export.service.js +146 -0
  118. package/dist/modules/export/export.text.js +177 -0
  119. package/dist/modules/export/export.types.js +36 -0
  120. package/dist/modules/fce/fce-obligation.js +3 -4
  121. package/dist/modules/fce/fce-obligation.presenter.js +2 -3
  122. package/dist/modules/interactive/amount-input.js +0 -1
  123. package/dist/modules/interactive/choices.js +10 -2
  124. package/dist/modules/interactive/config-fields.js +17 -3
  125. package/dist/modules/interactive/equivalent-command.js +6 -3
  126. package/dist/modules/interactive/export-equivalent-command.js +40 -0
  127. package/dist/modules/interactive/invoice-copy.js +1 -2
  128. package/dist/modules/interactive/periods.js +0 -1
  129. package/dist/modules/interactive/wizard.js +0 -1
  130. package/dist/modules/padron/padron.js +23 -0
  131. package/dist/modules/padron/padron.presenter.js +48 -0
  132. package/dist/modules/parameters/health.js +0 -1
  133. package/dist/modules/parameters/parameters.js +2 -3
  134. package/dist/modules/parameters/parameters.presenter.js +14 -12
  135. package/dist/modules/parameters/status.js +0 -1
  136. package/dist/modules/pdf/pdf-data.mapper.js +94 -3
  137. package/dist/modules/pdf/pdf-decision.js +0 -1
  138. package/dist/modules/pdf/pdf-file-name.js +0 -1
  139. package/dist/modules/pdf/pdf-issuer.js +3 -3
  140. package/dist/modules/pdf/pdf-legends.js +35 -0
  141. package/dist/modules/pdf/pdf.errors.js +0 -1
  142. package/dist/modules/pdf/pdf.types.js +0 -1
  143. package/dist/modules/storybook/showcase-theme.js +0 -1
  144. package/dist/modules/storybook/showcase.js +35 -23
  145. package/dist/modules/update-check/changelog.js +0 -1
  146. package/dist/modules/update-check/update-check.presenter.js +6 -7
  147. package/dist/modules/update-check/update-check.service.js +0 -1
  148. package/dist/modules/vouchers/voucher-history.js +0 -1
  149. package/dist/modules/vouchers/voucher-history.presenter.js +3 -4
  150. package/dist/services/arca/arca-billing.gateway.js +18 -4
  151. package/dist/services/arca/arca-client.factory.js +27 -1
  152. package/dist/services/arca/arca-context.resolver.js +17 -7
  153. package/dist/services/arca/arca-export.gateway.js +146 -0
  154. package/dist/services/arca/arca-fce-obligation.gateway.js +2 -3
  155. package/dist/services/arca/arca-padron.gateway.js +103 -0
  156. package/dist/services/arca/arca-parameters.gateway.js +2 -3
  157. package/dist/services/arca/arca-voucher-history.gateway.js +2 -3
  158. package/dist/services/arca/last-voucher.js +26 -0
  159. package/dist/services/clipboard/clipboard.js +0 -1
  160. package/dist/services/pdf/escape-html.js +0 -1
  161. package/dist/services/pdf/pdf-browser.js +0 -1
  162. package/dist/services/pdf/pdf-exporter.js +26 -11
  163. package/dist/services/pdf/pdf-plugin.js +41 -14
  164. package/dist/ui/components/certificateBanner.js +8 -0
  165. package/dist/ui/components/contentPanel.js +0 -1
  166. package/dist/ui/components/errorPanel.js +0 -1
  167. package/dist/ui/components/index.js +1 -1
  168. package/dist/ui/components/keyValuePanel.js +0 -1
  169. package/dist/ui/components/noticePanel.js +0 -1
  170. package/dist/ui/components/rawPanel.js +0 -1
  171. package/dist/ui/components/sectionHeading.js +0 -1
  172. package/dist/ui/components/statusBar.js +0 -1
  173. package/dist/ui/components/statusPanel.js +0 -1
  174. package/dist/ui/components/testingBanner.js +0 -1
  175. package/dist/ui/index.js +0 -1
  176. package/dist/ui/presenters/billing.presenter.js +0 -1
  177. package/dist/ui/presenters/config.presenter.js +1 -2
  178. package/dist/ui/presenters/errors.presenter.js +14 -12
  179. package/dist/ui/presenters/errors.zod-presenter.js +13 -35
  180. package/dist/ui/presenters/export.presenter.js +1 -0
  181. package/dist/ui/presenters/index.js +1 -1
  182. package/dist/ui/presenters/pdf.presenter.js +1 -2
  183. package/dist/ui/presenters/showcase.presenter.js +0 -1
  184. package/dist/ui/primitives/index.js +0 -1
  185. package/dist/ui/primitives/renderDivider.js +0 -1
  186. package/dist/ui/primitives/renderFooter.js +0 -1
  187. package/dist/ui/primitives/renderJson.js +0 -1
  188. package/dist/ui/primitives/renderKeyValue.js +0 -1
  189. package/dist/ui/primitives/renderLogo.js +0 -1
  190. package/dist/ui/primitives/renderObject.js +0 -1
  191. package/dist/ui/primitives/renderPanel.js +0 -1
  192. package/dist/ui/primitives/renderSubtitle.js +0 -1
  193. package/dist/ui/primitives/renderTable.js +0 -1
  194. package/dist/ui/primitives/terminalWidth.js +0 -1
  195. package/dist/ui/primitives/text.js +0 -1
  196. package/dist/ui/stream/index.js +0 -1
  197. package/dist/ui/stream/terminal-stream.js +13 -2
  198. package/dist/ui/theme/index.js +0 -1
  199. package/dist/ui/theme/theme.js +0 -1
  200. package/llms.txt +122 -45
  201. package/package.json +1 -2
  202. package/dist/cli/commands/billing-family.command.d.ts +0 -2
  203. package/dist/cli/commands/billing-family.command.js.map +0 -1
  204. package/dist/cli/commands/billing-shortcuts.command.d.ts +0 -2
  205. package/dist/cli/commands/billing-shortcuts.command.js.map +0 -1
  206. package/dist/cli/commands/billing.command.batch.d.ts +0 -22
  207. package/dist/cli/commands/billing.command.batch.js.map +0 -1
  208. package/dist/cli/commands/billing.command.interactive-preview.d.ts +0 -18
  209. package/dist/cli/commands/billing.command.interactive-preview.js.map +0 -1
  210. package/dist/cli/commands/billing.command.options.d.ts +0 -2
  211. package/dist/cli/commands/billing.command.options.js.map +0 -1
  212. package/dist/cli/commands/billing.command.output.d.ts +0 -14
  213. package/dist/cli/commands/billing.command.output.js.map +0 -1
  214. package/dist/cli/commands/billing.command.parser.d.ts +0 -28
  215. package/dist/cli/commands/billing.command.parser.js.map +0 -1
  216. package/dist/cli/commands/billing.command.pdf.d.ts +0 -24
  217. package/dist/cli/commands/billing.command.pdf.js.map +0 -1
  218. package/dist/cli/commands/billing.command.shared.d.ts +0 -7
  219. package/dist/cli/commands/billing.command.shared.js.map +0 -1
  220. package/dist/cli/commands/billing.command.shortcuts.d.ts +0 -7
  221. package/dist/cli/commands/billing.command.shortcuts.js.map +0 -1
  222. package/dist/cli/commands/config.command.d.ts +0 -7
  223. package/dist/cli/commands/config.command.js.map +0 -1
  224. package/dist/cli/commands/examples.command.d.ts +0 -2
  225. package/dist/cli/commands/examples.command.js.map +0 -1
  226. package/dist/cli/commands/fce-obligation.command.d.ts +0 -2
  227. package/dist/cli/commands/fce-obligation.command.js.map +0 -1
  228. package/dist/cli/commands/interactive.command.d.ts +0 -3
  229. package/dist/cli/commands/interactive.command.js.map +0 -1
  230. package/dist/cli/commands/parameters.command.d.ts +0 -2
  231. package/dist/cli/commands/parameters.command.js.map +0 -1
  232. package/dist/cli/commands/pdf.command.d.ts +0 -2
  233. package/dist/cli/commands/pdf.command.js.map +0 -1
  234. package/dist/cli/commands/storybook.command.d.ts +0 -2
  235. package/dist/cli/commands/storybook.command.js.map +0 -1
  236. package/dist/cli/commands/vouchers.command.d.ts +0 -2
  237. package/dist/cli/commands/vouchers.command.js.map +0 -1
  238. package/dist/cli/error-output.d.ts +0 -7
  239. package/dist/cli/error-output.js.map +0 -1
  240. package/dist/cli/help-argv.d.ts +0 -5
  241. package/dist/cli/help-argv.js.map +0 -1
  242. package/dist/cli/help.d.ts +0 -12
  243. package/dist/cli/help.js.map +0 -1
  244. package/dist/cli/index.d.ts +0 -2
  245. package/dist/cli/index.js.map +0 -1
  246. package/dist/cli/interactive/advanced-options.d.ts +0 -21
  247. package/dist/cli/interactive/advanced-options.js.map +0 -1
  248. package/dist/cli/interactive/config.flow.d.ts +0 -5
  249. package/dist/cli/interactive/config.flow.js.map +0 -1
  250. package/dist/cli/interactive/history.flow.d.ts +0 -6
  251. package/dist/cli/interactive/history.flow.js.map +0 -1
  252. package/dist/cli/interactive/interactive-mode.d.ts +0 -3
  253. package/dist/cli/interactive/interactive-mode.js.map +0 -1
  254. package/dist/cli/interactive/invoice-picker.d.ts +0 -25
  255. package/dist/cli/interactive/invoice-picker.js.map +0 -1
  256. package/dist/cli/interactive/invoice.flow.d.ts +0 -20
  257. package/dist/cli/interactive/invoice.flow.js.map +0 -1
  258. package/dist/cli/interactive/note.flow.d.ts +0 -32
  259. package/dist/cli/interactive/note.flow.js.map +0 -1
  260. package/dist/cli/interactive/pdf.flow.d.ts +0 -5
  261. package/dist/cli/interactive/pdf.flow.js.map +0 -1
  262. package/dist/cli/interactive/prompts.d.ts +0 -57
  263. package/dist/cli/interactive/prompts.js.map +0 -1
  264. package/dist/cli/interactive/repeat.flow.d.ts +0 -13
  265. package/dist/cli/interactive/repeat.flow.js.map +0 -1
  266. package/dist/cli/interactive/session.d.ts +0 -22
  267. package/dist/cli/interactive/session.js.map +0 -1
  268. package/dist/cli/interactive/status.flow.d.ts +0 -3
  269. package/dist/cli/interactive/status.flow.js.map +0 -1
  270. package/dist/cli/interactive/update.flow.d.ts +0 -6
  271. package/dist/cli/interactive/update.flow.js.map +0 -1
  272. package/dist/cli/interactive/validators.d.ts +0 -9
  273. package/dist/cli/interactive/validators.js.map +0 -1
  274. package/dist/cli/option-parsers.d.ts +0 -6
  275. package/dist/cli/option-parsers.js.map +0 -1
  276. package/dist/cli/program.d.ts +0 -2
  277. package/dist/cli/program.js.map +0 -1
  278. package/dist/cli/spinner.d.ts +0 -8
  279. package/dist/cli/spinner.js.map +0 -1
  280. package/dist/cli/types.d.ts +0 -6
  281. package/dist/cli/types.js.map +0 -1
  282. package/dist/cli/version.d.ts +0 -1
  283. package/dist/cli/version.js.map +0 -1
  284. package/dist/index.d.ts +0 -1
  285. package/dist/index.js.map +0 -1
  286. package/dist/lib/dates/arca-date.d.ts +0 -19
  287. package/dist/lib/dates/arca-date.js.map +0 -1
  288. package/dist/lib/errors/app-error.d.ts +0 -17
  289. package/dist/lib/errors/app-error.js.map +0 -1
  290. package/dist/lib/files/read-json-file.d.ts +0 -1
  291. package/dist/lib/files/read-json-file.js.map +0 -1
  292. package/dist/lib/files/restrict-to-owner.d.ts +0 -7
  293. package/dist/lib/files/restrict-to-owner.js.map +0 -1
  294. package/dist/lib/identity/format-cuit.d.ts +0 -2
  295. package/dist/lib/identity/format-cuit.js.map +0 -1
  296. package/dist/lib/links.d.ts +0 -2
  297. package/dist/lib/links.js.map +0 -1
  298. package/dist/lib/numbers/argentine-amount.d.ts +0 -23
  299. package/dist/lib/numbers/argentine-amount.js.map +0 -1
  300. package/dist/lib/numbers/strict-integer.d.ts +0 -4
  301. package/dist/lib/numbers/strict-integer.js.map +0 -1
  302. package/dist/lib/paths/mask-path.d.ts +0 -1
  303. package/dist/lib/paths/mask-path.js.map +0 -1
  304. package/dist/lib/security/certificate.d.ts +0 -7
  305. package/dist/lib/security/certificate.js.map +0 -1
  306. package/dist/lib/security/pem.d.ts +0 -5
  307. package/dist/lib/security/pem.js.map +0 -1
  308. package/dist/modules/billing/billing-response.d.ts +0 -4
  309. package/dist/modules/billing/billing-response.js.map +0 -1
  310. package/dist/modules/billing/billing.amounts.d.ts +0 -21
  311. package/dist/modules/billing/billing.amounts.js.map +0 -1
  312. package/dist/modules/billing/billing.associated-period.d.ts +0 -8
  313. package/dist/modules/billing/billing.associated-period.js.map +0 -1
  314. package/dist/modules/billing/billing.associated-vouchers.d.ts +0 -12
  315. package/dist/modules/billing/billing.associated-vouchers.js.map +0 -1
  316. package/dist/modules/billing/billing.batch.d.ts +0 -23
  317. package/dist/modules/billing/billing.batch.js.map +0 -1
  318. package/dist/modules/billing/billing.constants.d.ts +0 -2
  319. package/dist/modules/billing/billing.constants.js.map +0 -1
  320. package/dist/modules/billing/billing.currency.d.ts +0 -18
  321. package/dist/modules/billing/billing.currency.js.map +0 -1
  322. package/dist/modules/billing/billing.date-range.d.ts +0 -9
  323. package/dist/modules/billing/billing.date-range.js.map +0 -1
  324. package/dist/modules/billing/billing.display.d.ts +0 -13
  325. package/dist/modules/billing/billing.display.js.map +0 -1
  326. package/dist/modules/billing/billing.errors.d.ts +0 -12
  327. package/dist/modules/billing/billing.errors.js.map +0 -1
  328. package/dist/modules/billing/billing.fce.d.ts +0 -21
  329. package/dist/modules/billing/billing.fce.js.map +0 -1
  330. package/dist/modules/billing/billing.iva-receptor.d.ts +0 -8
  331. package/dist/modules/billing/billing.iva-receptor.js.map +0 -1
  332. package/dist/modules/billing/billing.json-format.d.ts +0 -6
  333. package/dist/modules/billing/billing.json-format.js.map +0 -1
  334. package/dist/modules/billing/billing.labels.d.ts +0 -9
  335. package/dist/modules/billing/billing.labels.js.map +0 -1
  336. package/dist/modules/billing/billing.mappers.d.ts +0 -8
  337. package/dist/modules/billing/billing.mappers.js.map +0 -1
  338. package/dist/modules/billing/billing.presenter.d.ts +0 -7
  339. package/dist/modules/billing/billing.presenter.js.map +0 -1
  340. package/dist/modules/billing/billing.schemas.d.ts +0 -142
  341. package/dist/modules/billing/billing.schemas.js.map +0 -1
  342. package/dist/modules/billing/billing.serialize.d.ts +0 -8
  343. package/dist/modules/billing/billing.serialize.js.map +0 -1
  344. package/dist/modules/billing/billing.service.d.ts +0 -27
  345. package/dist/modules/billing/billing.service.js.map +0 -1
  346. package/dist/modules/billing/billing.text.d.ts +0 -8
  347. package/dist/modules/billing/billing.text.js.map +0 -1
  348. package/dist/modules/billing/billing.types.d.ts +0 -13
  349. package/dist/modules/billing/billing.types.internal.d.ts +0 -30
  350. package/dist/modules/billing/billing.types.internal.js.map +0 -1
  351. package/dist/modules/billing/billing.types.js.map +0 -1
  352. package/dist/modules/billing/billing.validation.d.ts +0 -7
  353. package/dist/modules/billing/billing.validation.js.map +0 -1
  354. package/dist/modules/billing/voucher-kind-map.d.ts +0 -9
  355. package/dist/modules/billing/voucher-kind-map.js.map +0 -1
  356. package/dist/modules/config/config-doctor.d.ts +0 -15
  357. package/dist/modules/config/config-doctor.js.map +0 -1
  358. package/dist/modules/config/config-value-parser.d.ts +0 -2
  359. package/dist/modules/config/config-value-parser.js.map +0 -1
  360. package/dist/modules/config/config.presenter.d.ts +0 -15
  361. package/dist/modules/config/config.presenter.js.map +0 -1
  362. package/dist/modules/config/config.schemas.d.ts +0 -154
  363. package/dist/modules/config/config.schemas.js.map +0 -1
  364. package/dist/modules/config/config.sections.d.ts +0 -14
  365. package/dist/modules/config/config.sections.js.map +0 -1
  366. package/dist/modules/config/config.service.d.ts +0 -35
  367. package/dist/modules/config/config.service.js.map +0 -1
  368. package/dist/modules/examples/examples.d.ts +0 -1
  369. package/dist/modules/examples/examples.js.map +0 -1
  370. package/dist/modules/fce/fce-obligation.d.ts +0 -20
  371. package/dist/modules/fce/fce-obligation.js.map +0 -1
  372. package/dist/modules/fce/fce-obligation.presenter.d.ts +0 -9
  373. package/dist/modules/fce/fce-obligation.presenter.js.map +0 -1
  374. package/dist/modules/interactive/amount-input.d.ts +0 -4
  375. package/dist/modules/interactive/amount-input.js.map +0 -1
  376. package/dist/modules/interactive/choices.d.ts +0 -13
  377. package/dist/modules/interactive/choices.js.map +0 -1
  378. package/dist/modules/interactive/config-fields.d.ts +0 -20
  379. package/dist/modules/interactive/config-fields.js.map +0 -1
  380. package/dist/modules/interactive/equivalent-command.d.ts +0 -8
  381. package/dist/modules/interactive/equivalent-command.js.map +0 -1
  382. package/dist/modules/interactive/invoice-copy.d.ts +0 -19
  383. package/dist/modules/interactive/invoice-copy.js.map +0 -1
  384. package/dist/modules/interactive/periods.d.ts +0 -7
  385. package/dist/modules/interactive/periods.js.map +0 -1
  386. package/dist/modules/interactive/wizard.d.ts +0 -16
  387. package/dist/modules/interactive/wizard.js.map +0 -1
  388. package/dist/modules/parameters/health.d.ts +0 -17
  389. package/dist/modules/parameters/health.js.map +0 -1
  390. package/dist/modules/parameters/parameters.d.ts +0 -50
  391. package/dist/modules/parameters/parameters.js.map +0 -1
  392. package/dist/modules/parameters/parameters.presenter.d.ts +0 -12
  393. package/dist/modules/parameters/parameters.presenter.js.map +0 -1
  394. package/dist/modules/parameters/status.d.ts +0 -31
  395. package/dist/modules/parameters/status.js.map +0 -1
  396. package/dist/modules/pdf/pdf-data.mapper.d.ts +0 -4
  397. package/dist/modules/pdf/pdf-data.mapper.js.map +0 -1
  398. package/dist/modules/pdf/pdf-decision.d.ts +0 -14
  399. package/dist/modules/pdf/pdf-decision.js.map +0 -1
  400. package/dist/modules/pdf/pdf-file-name.d.ts +0 -3
  401. package/dist/modules/pdf/pdf-file-name.js.map +0 -1
  402. package/dist/modules/pdf/pdf-issuer.d.ts +0 -8
  403. package/dist/modules/pdf/pdf-issuer.js.map +0 -1
  404. package/dist/modules/pdf/pdf.errors.d.ts +0 -9
  405. package/dist/modules/pdf/pdf.errors.js.map +0 -1
  406. package/dist/modules/pdf/pdf.types.d.ts +0 -91
  407. package/dist/modules/pdf/pdf.types.js.map +0 -1
  408. package/dist/modules/storybook/showcase-theme.d.ts +0 -7
  409. package/dist/modules/storybook/showcase-theme.js.map +0 -1
  410. package/dist/modules/storybook/showcase.d.ts +0 -2
  411. package/dist/modules/storybook/showcase.js.map +0 -1
  412. package/dist/modules/update-check/changelog.d.ts +0 -23
  413. package/dist/modules/update-check/changelog.js.map +0 -1
  414. package/dist/modules/update-check/update-check.presenter.d.ts +0 -6
  415. package/dist/modules/update-check/update-check.presenter.js.map +0 -1
  416. package/dist/modules/update-check/update-check.service.d.ts +0 -11
  417. package/dist/modules/update-check/update-check.service.js.map +0 -1
  418. package/dist/modules/vouchers/voucher-history.d.ts +0 -39
  419. package/dist/modules/vouchers/voucher-history.js.map +0 -1
  420. package/dist/modules/vouchers/voucher-history.presenter.d.ts +0 -29
  421. package/dist/modules/vouchers/voucher-history.presenter.js.map +0 -1
  422. package/dist/services/arca/arca-billing.gateway.d.ts +0 -10
  423. package/dist/services/arca/arca-billing.gateway.js.map +0 -1
  424. package/dist/services/arca/arca-client.factory.d.ts +0 -5
  425. package/dist/services/arca/arca-client.factory.js.map +0 -1
  426. package/dist/services/arca/arca-context.resolver.d.ts +0 -44
  427. package/dist/services/arca/arca-context.resolver.js.map +0 -1
  428. package/dist/services/arca/arca-fce-obligation.gateway.d.ts +0 -7
  429. package/dist/services/arca/arca-fce-obligation.gateway.js.map +0 -1
  430. package/dist/services/arca/arca-parameters.gateway.d.ts +0 -10
  431. package/dist/services/arca/arca-parameters.gateway.js.map +0 -1
  432. package/dist/services/arca/arca-voucher-history.gateway.d.ts +0 -8
  433. package/dist/services/arca/arca-voucher-history.gateway.js.map +0 -1
  434. package/dist/services/clipboard/clipboard.d.ts +0 -2
  435. package/dist/services/clipboard/clipboard.js.map +0 -1
  436. package/dist/services/pdf/escape-html.d.ts +0 -6
  437. package/dist/services/pdf/escape-html.js.map +0 -1
  438. package/dist/services/pdf/pdf-browser.d.ts +0 -5
  439. package/dist/services/pdf/pdf-browser.js.map +0 -1
  440. package/dist/services/pdf/pdf-exporter.d.ts +0 -19
  441. package/dist/services/pdf/pdf-exporter.js.map +0 -1
  442. package/dist/services/pdf/pdf-plugin.d.ts +0 -50
  443. package/dist/services/pdf/pdf-plugin.js.map +0 -1
  444. package/dist/ui/components/contentPanel.d.ts +0 -5
  445. package/dist/ui/components/contentPanel.js.map +0 -1
  446. package/dist/ui/components/errorPanel.d.ts +0 -1
  447. package/dist/ui/components/errorPanel.js.map +0 -1
  448. package/dist/ui/components/index.d.ts +0 -9
  449. package/dist/ui/components/index.js.map +0 -1
  450. package/dist/ui/components/keyValuePanel.d.ts +0 -3
  451. package/dist/ui/components/keyValuePanel.js.map +0 -1
  452. package/dist/ui/components/noticePanel.d.ts +0 -3
  453. package/dist/ui/components/noticePanel.js.map +0 -1
  454. package/dist/ui/components/rawPanel.d.ts +0 -1
  455. package/dist/ui/components/rawPanel.js.map +0 -1
  456. package/dist/ui/components/sectionHeading.d.ts +0 -3
  457. package/dist/ui/components/sectionHeading.js.map +0 -1
  458. package/dist/ui/components/statusBar.d.ts +0 -19
  459. package/dist/ui/components/statusBar.js.map +0 -1
  460. package/dist/ui/components/statusPanel.d.ts +0 -3
  461. package/dist/ui/components/statusPanel.js.map +0 -1
  462. package/dist/ui/components/testingBanner.d.ts +0 -2
  463. package/dist/ui/components/testingBanner.js.map +0 -1
  464. package/dist/ui/index.d.ts +0 -5
  465. package/dist/ui/index.js.map +0 -1
  466. package/dist/ui/presenters/billing.presenter.d.ts +0 -2
  467. package/dist/ui/presenters/billing.presenter.js.map +0 -1
  468. package/dist/ui/presenters/config.presenter.d.ts +0 -1
  469. package/dist/ui/presenters/config.presenter.js.map +0 -1
  470. package/dist/ui/presenters/errors.presenter.d.ts +0 -1
  471. package/dist/ui/presenters/errors.presenter.js.map +0 -1
  472. package/dist/ui/presenters/errors.zod-presenter.d.ts +0 -4
  473. package/dist/ui/presenters/errors.zod-presenter.js.map +0 -1
  474. package/dist/ui/presenters/index.d.ts +0 -6
  475. package/dist/ui/presenters/index.js.map +0 -1
  476. package/dist/ui/presenters/pdf.presenter.d.ts +0 -13
  477. package/dist/ui/presenters/pdf.presenter.js.map +0 -1
  478. package/dist/ui/presenters/showcase.presenter.d.ts +0 -1
  479. package/dist/ui/presenters/showcase.presenter.js.map +0 -1
  480. package/dist/ui/primitives/index.d.ts +0 -10
  481. package/dist/ui/primitives/index.js.map +0 -1
  482. package/dist/ui/primitives/renderDivider.d.ts +0 -5
  483. package/dist/ui/primitives/renderDivider.js.map +0 -1
  484. package/dist/ui/primitives/renderFooter.d.ts +0 -7
  485. package/dist/ui/primitives/renderFooter.js.map +0 -1
  486. package/dist/ui/primitives/renderJson.d.ts +0 -3
  487. package/dist/ui/primitives/renderJson.js.map +0 -1
  488. package/dist/ui/primitives/renderKeyValue.d.ts +0 -14
  489. package/dist/ui/primitives/renderKeyValue.js.map +0 -1
  490. package/dist/ui/primitives/renderLogo.d.ts +0 -3
  491. package/dist/ui/primitives/renderLogo.js.map +0 -1
  492. package/dist/ui/primitives/renderObject.d.ts +0 -1
  493. package/dist/ui/primitives/renderObject.js.map +0 -1
  494. package/dist/ui/primitives/renderPanel.d.ts +0 -27
  495. package/dist/ui/primitives/renderPanel.js.map +0 -1
  496. package/dist/ui/primitives/renderSubtitle.d.ts +0 -7
  497. package/dist/ui/primitives/renderSubtitle.js.map +0 -1
  498. package/dist/ui/primitives/renderTable.d.ts +0 -6
  499. package/dist/ui/primitives/renderTable.js.map +0 -1
  500. package/dist/ui/primitives/terminalWidth.d.ts +0 -4
  501. package/dist/ui/primitives/terminalWidth.js.map +0 -1
  502. package/dist/ui/primitives/text.d.ts +0 -28
  503. package/dist/ui/primitives/text.js.map +0 -1
  504. package/dist/ui/stream/index.d.ts +0 -1
  505. package/dist/ui/stream/index.js.map +0 -1
  506. package/dist/ui/stream/terminal-stream.d.ts +0 -16
  507. package/dist/ui/stream/terminal-stream.js.map +0 -1
  508. package/dist/ui/theme/index.d.ts +0 -1
  509. package/dist/ui/theme/index.js.map +0 -1
  510. package/dist/ui/theme/theme.d.ts +0 -68
  511. package/dist/ui/theme/theme.js.map +0 -1
@@ -7,15 +7,17 @@ import { formatZodError } from './errors.zod-presenter.js';
7
7
  function formatErrorTitle(code) {
8
8
  switch (code) {
9
9
  case 'CONFIGURATION_ERROR':
10
- return 'Error de configuracion';
10
+ return 'Error de configuración';
11
+ case 'CERTIFICATE_EXPIRED':
12
+ return 'Certificado vencido';
11
13
  case 'INPUT_VALIDATION_ERROR':
12
14
  return 'Error de entrada';
13
15
  case 'BATCH_VALIDATION_ERROR':
14
- return 'Lote invalido';
16
+ return 'Lote inválido';
15
17
  case 'BATCH_EMISSION_ERROR':
16
18
  return 'Lote interrumpido';
17
19
  case 'EMISSION_UNCERTAIN':
18
- return 'Emision sin confirmar';
20
+ return 'Emisión sin confirmar';
19
21
  case 'PDF_GENERATION_ERROR':
20
22
  case 'PDF_ISSUER_INCOMPLETE':
21
23
  case 'PDF_PLUGIN_MISSING':
@@ -32,13 +34,13 @@ function formatErrorHint(error) {
32
34
  }
33
35
  switch (error.code) {
34
36
  case 'CONFIGURATION_ERROR':
35
- return 'Revise la configuracion con `arcli config` o corra `arcli config revisar`.';
37
+ return 'Revisá la configuración con `arcli config` o corré `arcli config revisar`.';
36
38
  case 'INPUT_VALIDATION_ERROR':
37
- return 'Revise los parametros del comando con `ayuda` e intente nuevamente.';
39
+ return 'Revisá los parámetros del comando con `ayuda` e intentá nuevamente.';
38
40
  case 'BATCH_VALIDATION_ERROR':
39
- return 'Corrija esos comprobantes en el archivo y vuelva a correr el lote completo.';
41
+ return 'Corregí esos comprobantes en el archivo y volvé a correr el lote completo.';
40
42
  case 'BATCH_EMISSION_ERROR':
41
- return 'Los comprobantes de arriba ya se emitieron: no los vuelva a cargar. Antes de reintentar el que fallo, verifique con `arcli ultimos` si se emitio; despues reintente los que quedaron sin procesar.';
43
+ return 'Los comprobantes de arriba ya se emitieron: no los volvé a cargar. Antes de reintentar el que fallo, verificá con `arcli ultimos` si se emitió; después reintentá los que quedaron sin procesar.';
42
44
  default:
43
45
  return null;
44
46
  }
@@ -46,13 +48,13 @@ function formatErrorHint(error) {
46
48
  function detectTransientError(message) {
47
49
  if (message.includes('coe.alreadyAuthenticated')) {
48
50
  return {
49
- sugerencia: 'WSAA informo que ya existe un TA valido para este servicio. Espere unos segundos y vuelva a intentar sin cambiar el payload.',
51
+ sugerencia: 'WSAA informo que ya existe un TA válido para este servicio. Esperá unos segundos y volvé a intentar sin cambiar el payload.',
50
52
  title: 'Error transitorio WSAA',
51
53
  };
52
54
  }
53
55
  if (message.includes('Transacción Activa')) {
54
56
  return {
55
- sugerencia: 'ARCA devolvio una transaccion activa. Espere unos segundos y reintente la emision antes de modificar datos del comprobante.',
57
+ sugerencia: 'ARCA devolvió una transacción activa. Esperá unos segundos y reintentá la emisión antes de modificar datos del comprobante.',
56
58
  title: 'Error transitorio ARCA',
57
59
  };
58
60
  }
@@ -89,7 +91,8 @@ export function formatCliError(error, useJson) {
89
91
  codigo: error.code,
90
92
  detalles: formatErrorDetailsAsJson(error.details),
91
93
  error: error.message,
92
- ...(error.suggestion ? { sugerencia: error.suggestion } : {}),
94
+ // Siempre presente: `null` cuando no hay que sugerir, igual que en los errores inesperados.
95
+ sugerencia: error.suggestion ?? null,
93
96
  });
94
97
  }
95
98
  const details = formatErrorDetails(error.details);
@@ -106,6 +109,5 @@ export function formatCliError(error, useJson) {
106
109
  sugerencia: transientError?.sugerencia ?? null,
107
110
  });
108
111
  }
109
- return errorPanel(transientError?.title ?? 'Error inesperado', message, [], transientError?.sugerencia ?? 'Si el problema persiste, revise la configuracion o reintente con mas contexto.');
112
+ return errorPanel(transientError?.title ?? 'Error inesperado', message, [], transientError?.sugerencia ?? 'Si el problema persiste, revisá la configuración o reintentá con más contexto.');
110
113
  }
111
- //# sourceMappingURL=errors.presenter.js.map
@@ -1,8 +1,9 @@
1
+ import { BILLING_JSON_KEY_BY_INTERNAL_KEY } from '../../modules/billing/billing.json-input.js';
1
2
  import { errorPanel } from '../components/errorPanel.js';
2
3
  import { renderJson } from '../primitives/renderJson.js';
3
4
  import { bold } from '../primitives/text.js';
4
5
  const ZOD_PATH_LABELS = {
5
- associatedPeriod: 'periodo asociado',
6
+ associatedPeriod: 'período asociado',
6
7
  associatedVoucher: 'comprobante asociado',
7
8
  billingDate: 'fecha del comprobante',
8
9
  cancellation: 'anulacion',
@@ -10,12 +11,12 @@ const ZOD_PATH_LABELS = {
10
11
  cbuAlias: 'alias del CBU',
11
12
  concept: 'concepto',
12
13
  currencyCode: 'moneda',
13
- documentNumber: 'numero de documento',
14
+ documentNumber: 'número de documento',
14
15
  documentType: 'tipo de documento',
15
- dueDay: 'dia de vencimiento',
16
+ dueDay: 'día de vencimiento',
16
17
  exchangeRate: 'cotizacion',
17
18
  exemptAmount: 'importe exento',
18
- ivaRate: 'alicuota de IVA',
19
+ ivaRate: 'alícuota de IVA',
19
20
  ivaCondition: 'IVA receptor',
20
21
  paymentDueDate: 'vencimiento de pago',
21
22
  pointOfSale: 'punto de venta',
@@ -26,31 +27,6 @@ const ZOD_PATH_LABELS = {
26
27
  transferMode: 'modalidad de transferencia',
27
28
  untaxedAmount: 'importe no gravado',
28
29
  };
29
- const ZOD_PUBLIC_PATHS = {
30
- associatedPeriod: ['periodoAsociado'],
31
- associatedVoucher: ['comprobanteAsociado'],
32
- billingDate: ['fechaComprobante'],
33
- cancellation: ['anulacion'],
34
- cbu: ['cbu'],
35
- cbuAlias: ['aliasCbu'],
36
- concept: ['concepto'],
37
- currencyCode: ['codigoMoneda'],
38
- documentNumber: ['numeroDocumento'],
39
- documentType: ['tipoDocumento'],
40
- dueDay: ['dia'],
41
- exchangeRate: ['cotizacionMoneda'],
42
- exemptAmount: ['importeExento'],
43
- ivaRate: ['alicuotaIva'],
44
- ivaCondition: ['ivaReceptor'],
45
- paymentDueDate: ['vencimientoPago'],
46
- pointOfSale: ['puntoVenta'],
47
- sameCurrency: ['mismaMoneda'],
48
- serviceEndDate: ['servicioHasta'],
49
- serviceStartDate: ['servicioDesde'],
50
- totalAmount: ['montoTotal'],
51
- transferMode: ['transferencia'],
52
- untaxedAmount: ['importeNoGravado'],
53
- };
54
30
  function formatZodIssuePath(path) {
55
31
  if (path.length === 0) {
56
32
  return 'Entrada';
@@ -71,16 +47,18 @@ function humanizeZodIssue(issue) {
71
47
  }
72
48
  if (issue.code === 'invalid_value') {
73
49
  const allowedValues = issue.values.map((value) => String(value)).join(', ');
74
- return `${label[0]?.toUpperCase() ?? ''}${label.slice(1)} tiene un valor no soportado. Valores validos: ${allowedValues}.`;
50
+ return `${label[0]?.toUpperCase() ?? ''}${label.slice(1)} tiene un valor no soportado. Valores válidos: ${allowedValues}.`;
75
51
  }
76
52
  if (issue.code === 'invalid_type') {
77
- return `${label[0]?.toUpperCase() ?? ''}${label.slice(1)} tiene un formato invalido.`;
53
+ return `${label[0]?.toUpperCase() ?? ''}${label.slice(1)} tiene un formato inválido.`;
78
54
  }
79
55
  return issue.message;
80
56
  }
81
57
  function formatPublicIssuePath(path) {
82
58
  const pathKey = formatZodIssuePath(path);
83
- return ZOD_PUBLIC_PATHS[pathKey] ?? path.map((segment) => String(segment));
59
+ // La clave del JSON sale del esquema de `--cargar`, la misma que se documenta.
60
+ const publicKey = BILLING_JSON_KEY_BY_INTERNAL_KEY[pathKey];
61
+ return publicKey ? [publicKey] : path.map((segment) => String(segment));
84
62
  }
85
63
  /** Resumen de una linea, para listar errores por item (por ejemplo, en un lote). */
86
64
  export function summarizeZodError(error) {
@@ -94,7 +72,8 @@ export function formatZodError(error, useJson) {
94
72
  mensaje: humanizeZodIssue(issue),
95
73
  ruta: formatPublicIssuePath(issue.path),
96
74
  })),
97
- error: 'Hay parametros invalidos o incompletos en la entrada.',
75
+ error: 'Hay parámetros inválidos o incompletos en la entrada.',
76
+ sugerencia: null,
98
77
  });
99
78
  }
100
79
  const detailLines = error.issues.map((issue) => {
@@ -102,6 +81,5 @@ export function formatZodError(error, useJson) {
102
81
  const label = ZOD_PATH_LABELS[pathKey] ?? pathKey;
103
82
  return `${bold(`${label}:`)} ${humanizeZodIssue(issue)}`;
104
83
  });
105
- return errorPanel('Error de entrada', 'Hay parametros invalidos o incompletos en la entrada.', detailLines, 'Revise los parametros del comando con `ayuda` e intente nuevamente.');
84
+ return errorPanel('Error de entrada', 'Hay parámetros inválidos o incompletos en la entrada.', detailLines, 'Revisá los parámetros del comando con `ayuda` e intentá nuevamente.');
106
85
  }
107
- //# sourceMappingURL=errors.zod-presenter.js.map
@@ -0,0 +1 @@
1
+ export { formatExportResultAsJson, formatExportResultAsText } from '../../modules/export/export.presenter.js';
@@ -2,6 +2,6 @@ export * from './billing.presenter.js';
2
2
  export * from './config.presenter.js';
3
3
  export * from './errors.presenter.js';
4
4
  export { summarizeZodError } from './errors.zod-presenter.js';
5
+ export * from './export.presenter.js';
5
6
  export * from './pdf.presenter.js';
6
7
  export * from './showcase.presenter.js';
7
- //# sourceMappingURL=index.js.map
@@ -33,7 +33,7 @@ export function formatPdfPluginStatusAsJson(status) {
33
33
  export function formatPdfPluginStatusAsText(status, title = 'Plugin de PDF') {
34
34
  const rows = [
35
35
  ['Estado', status.installed ? 'instalado' : 'no instalado'],
36
- ['Version', status.installedVersion ?? `no instalada (arcli usa la ${status.version})`],
36
+ ['Versión', status.installedVersion ?? `no instalada (arcli usa la ${status.version})`],
37
37
  [
38
38
  'Navegador',
39
39
  status.browser ? `${status.browser} (${BROWSER_SOURCE_LABELS[status.browserSource ?? 'sistema']})` : 'ninguno',
@@ -43,4 +43,3 @@ export function formatPdfPluginStatusAsText(status, title = 'Plugin de PDF') {
43
43
  const footer = status.installed ? 'Listo para generar PDFs' : 'Instalelo con `arcli pdf instalar`';
44
44
  return keyValuePanel(title, renderKeyValueRows(rows, { labelWidth: resolveKeyValueLabelWidth('standard', rows, [25, 75]) }), footer, 'standard', status.installed ? 'success' : 'warning', 'sheet');
45
45
  }
46
- //# sourceMappingURL=pdf.presenter.js.map
@@ -1,2 +1 @@
1
1
  export { renderStorybookShowcase } from '../../modules/storybook/showcase.js';
2
- //# sourceMappingURL=showcase.presenter.js.map
@@ -8,4 +8,3 @@ export * from './renderPanel.js';
8
8
  export * from './renderSubtitle.js';
9
9
  export * from './renderTable.js';
10
10
  export * from './text.js';
11
- //# sourceMappingURL=index.js.map
@@ -2,4 +2,3 @@ import { centerText } from './text.js';
2
2
  export function renderDivider(props) {
3
3
  return centerText((props.character ?? '═').repeat(props.width), props.width);
4
4
  }
5
- //# sourceMappingURL=renderDivider.js.map
@@ -3,4 +3,3 @@ export function renderFooter(props) {
3
3
  const color = props.textColor ?? 'neutral';
4
4
  return centerText(colorize(props.text, color), props.width);
5
5
  }
6
- //# sourceMappingURL=renderFooter.js.map
@@ -16,4 +16,3 @@ export function highlightJsonValues(content, target = 'stdout') {
16
16
  return colorize(token, 'warning', target);
17
17
  });
18
18
  }
19
- //# sourceMappingURL=renderJson.js.map
@@ -31,4 +31,3 @@ export function renderKeyValueRows(rows, options = {}) {
31
31
  const labelWidth = options.labelWidth ?? widestLabel;
32
32
  return rows.map(([label, value]) => renderKeyValue(label, value, { ...options, labelWidth }));
33
33
  }
34
- //# sourceMappingURL=renderKeyValue.js.map
@@ -47,4 +47,3 @@ export function renderLogo(version) {
47
47
  const indent = logoIndent();
48
48
  return `\n\n${[...logo, renderLogoFooter(version)].map((line) => `${indent}${line}`).join('\n')}\n\n`;
49
49
  }
50
- //# sourceMappingURL=renderLogo.js.map
@@ -16,4 +16,3 @@ export function renderObject(value) {
16
16
  });
17
17
  }
18
18
  }
19
- //# sourceMappingURL=renderObject.js.map
@@ -168,4 +168,3 @@ function centerInContentWidth(panel, panelWidth) {
168
168
  .join('\n')
169
169
  : panel;
170
170
  }
171
- //# sourceMappingURL=renderPanel.js.map
@@ -3,4 +3,3 @@ export function renderSubtitle(props) {
3
3
  const color = props.textColor ?? 'muted';
4
4
  return wrapPlainText(props.text, props.width).map((line) => centerText(colorize(line, color), props.width));
5
5
  }
6
- //# sourceMappingURL=renderSubtitle.js.map
@@ -11,4 +11,3 @@ export function renderTable(rows, options = {}) {
11
11
  })
12
12
  .join('\n');
13
13
  }
14
- //# sourceMappingURL=renderTable.js.map
@@ -8,4 +8,3 @@ export function fitToTerminal(width, minimum = 24) {
8
8
  const columns = resolveTerminalColumns();
9
9
  return columns === null ? width : Math.min(width, Math.max(minimum, columns));
10
10
  }
11
- //# sourceMappingURL=terminalWidth.js.map
@@ -222,4 +222,3 @@ export function centerLineBlock(lines, width) {
222
222
  const leftPadding = Math.max(0, Math.floor((width - blockWidth) / 2));
223
223
  return flattenedLines.map((line) => `${' '.repeat(leftPadding)}${line}`);
224
224
  }
225
- //# sourceMappingURL=text.js.map
@@ -1,2 +1 @@
1
1
  export * from './terminal-stream.js';
2
- //# sourceMappingURL=index.js.map
@@ -16,9 +16,14 @@ export function sanitizeTerminalText(content) {
16
16
  export function formatTerminalOutput(content, options = {}) {
17
17
  const target = options.target ?? 'stdout';
18
18
  const safeContent = sanitizeTerminalText(content);
19
- const renderedContent = options.json && supportsColor(target) ? highlightJsonValues(safeContent, target) : safeContent;
19
+ const renderedContent = options.json && shouldHighlightJson(target) ? highlightJsonValues(safeContent, target) : safeContent;
20
20
  return `\n${renderedContent}\n\n`;
21
21
  }
22
+ // FORCE_COLOR no alcanza para pintar el JSON: si va a un pipe o a un archivo, tiene que poder parsearse.
23
+ function shouldHighlightJson(target) {
24
+ const stream = target === 'stderr' ? process.stderr : process.stdout;
25
+ return stream.isTTY === true && supportsColor(target);
26
+ }
22
27
  export function writeTerminalOutput(content) {
23
28
  process.stdout.write(formatTerminalOutput(content, { target: 'stdout' }));
24
29
  }
@@ -28,7 +33,13 @@ export function writeTerminalJson(content) {
28
33
  export function writeTerminalError(content) {
29
34
  process.stderr.write(formatTerminalOutput(content, { target: 'stderr' }));
30
35
  }
36
+ /**
37
+ * Aviso antes de la salida del comando, en stderr. Sin la linea vacia de cierre: lo que sigue ya empieza con una
38
+ * y quedarian dos.
39
+ */
40
+ export function writeTerminalNotice(content) {
41
+ process.stderr.write(`\n${sanitizeTerminalText(content)}\n`);
42
+ }
31
43
  export function writeTerminalJsonError(content) {
32
44
  process.stderr.write(formatTerminalOutput(content, { json: true, target: 'stderr' }));
33
45
  }
34
- //# sourceMappingURL=terminal-stream.js.map
@@ -1,2 +1 @@
1
1
  export * from './theme.js';
2
- //# sourceMappingURL=index.js.map
@@ -227,4 +227,3 @@ export const UI_THEME = {
227
227
  wide: CONTENT_WIDTH,
228
228
  },
229
229
  };
230
- //# sourceMappingURL=theme.js.map
package/llms.txt CHANGED
@@ -29,7 +29,7 @@ Con la salida redirigida (pipe o archivo) no hay colores, así que `--json` se p
29
29
 
30
30
  ## Modo interactivo (no usar desde un agente)
31
31
 
32
- `arcli` sin argumentos en una TTY abre un asistente con prompts (`arcli interactivo` lo abre explícito). Sin TTY o con `--json`, `arcli` sin argumentos muestra la ayuda y `arcli interactivo` falla. Un agente siempre tiene que usar los comandos con flags de abajo.
32
+ `arcli` sin argumentos en una TTY abre un asistente con prompts (`arcli interactivo` lo abre explícito). Sin TTY, `arcli` sin argumentos muestra la ayuda y `arcli interactivo` falla. `arcli interactivo` acepta solo `--testing`/`--produccion`: `--json` y `--bruto` se ignoran con un aviso. Un agente siempre tiene que usar los comandos con flags de abajo.
33
33
 
34
34
  ## Comandos de facturación (shortcut de 2-4 letras)
35
35
 
@@ -48,33 +48,86 @@ Shortcuts (`family` = comando alternativo `arcli <family> <letra>`, ej. `arcli f
48
48
  | ncea, nceb, ncec | Nota de crédito electrónica A/B/C | nota-credito-electronica | sí |
49
49
  | ndea, ndeb, ndec | Nota de débito electrónica A/B/C | nota-debito-electronica | sí |
50
50
 
51
+ ## Factura de exportación E (WSFEX)
52
+
53
+ `arcli fe` (o `arcli factura e`, que hace lo mismo) emite la Factura de exportación E con el
54
+ servicio `wsfex`. No lleva concepto, IVA ni receptor con CUIT/CUIL/DNI: lleva
55
+ cliente y domicilio del exterior, país de destino, incoterm, items y permisos de embarque. `--cargar`
56
+ acepta un solo objeto, no un array.
57
+
58
+ ```bash
59
+ arcli fe -m 1500 --cliente "ACME LLC" --domicilio-cliente "123 Main St" --pais-destino 203 \
60
+ --numero 1 --actividad 620100 --item "001|Servicios de consultoría|1|1500|unidad" --previsualizar --json
61
+ ```
62
+
63
+ - Requeridos: `-m, --monto <n>`, `--cliente <texto>`, `--domicilio-cliente <texto>`,
64
+ `--pais-destino <codigo|nombre>` (código de ARCA o nombre, ej. `203` o `Brasil`), `--numero <n>` (el
65
+ siguiente al último E de ese punto de venta; arcli todavía no lo puede consultar en WSFEX porque
66
+ `@arcasdk/core` arma mal `FEXGetLast_CMP`) y la actividad: `--actividad <codigo>` o la clave
67
+ `exportacion.actividad`. No hay default: tiene que ser un código de la tabla de actividades de WSFEX,
68
+ que no es la del padrón (ej. `620100`; `620900` no está). Si no está en la tabla es
69
+ `INPUT_VALIDATION_ERROR` con las que empiezan igual.
70
+ - `--item <partes>` (repetible): `codigo|descripcion|cantidad|precio|unidad`; con 4 partes se omite
71
+ el código y con 3 la unidad (por defecto `unidad`, código `7`). La suma de los items tiene que dar
72
+ `--monto`: se valida antes de ir a ARCA. Sin `--item` va un renglón con `--descripcion`.
73
+ - Opcionales: `--id-impositivo <texto>`, `--cuit-pais <n>` (sin flag sale del país de destino; si ARCA no
74
+ publica un CUIT para ese país, el flag es obligatorio),
75
+ `--tipo-expo <1|2|4>` (`2` servicios por defecto, `1` bienes, `4` otros).
76
+ `solicitud` no informa `Cmps_asoc` ni `Opcionales` mientras no los haya: ARCA rechaza los bloques
77
+ vacíos (error 1820 el primero).
78
+ - `--incoterm <codigo>`,
79
+ `--incoterms-desc <texto>`, `--idioma <codigo>` (`1` español por defecto, `2` inglés, `3` portugués),
80
+ `--forma-pago <texto>` (por defecto `Transferencia Internacional`), `--permiso <id>` (repetible, requiere
81
+ `--permiso-existente` y solo se acepta con `--tipo-expo 1`), `--permiso-existente`,
82
+ `--id-solicitud <n>` (sin flag, el siguiente de WSFEX), `--punto-venta <n>` (`--pv`), `-f, --fecha <fecha>`, `--fecha-pago <fecha>`,
83
+ `--moneda <codigo>` (`--mda`; por defecto `DOL`), `--cotizacion-moneda <n>` (`--cm`; sin flag, la de
84
+ aduana que publica ARCA; la clave `cotizacion` de la config no aplica), `--misma-moneda`
85
+ (manda `CanMisMonExt` en `S`: el pago se cancela en la misma moneda extranjera),
86
+ `--observaciones <texto>`, `--obs-comerciales <texto>`, `--descripcion <texto>`, `--cargar <path>`,
87
+ `--exportar-pdf` (`--pdf`), `--sin-pdf`, `--previsualizar`, `--emitir`, `--json`, `--bruto`.
88
+ - La fecha del comprobante no puede ser futura. WSFEX numera por punto de venta y tipo.
89
+ - `fe` es estricto: un flag de A/B/C es opción desconocida. `factura <letra>` acepta los flags de todas las
90
+ letras y saltea los que no aplican a la elegida con un aviso en `avisos` (`factura a --incoterm`,
91
+ `factura e --alicuota`).
92
+ - Credenciales: usa `exportacion.cert.<entorno>`/`exportacion.key.<entorno>` si están configuradas y,
93
+ si no, `cert.<entorno>`/`key.<entorno>`; el certificado tiene que estar autorizado a `wsfex` (si no,
94
+ `WSFEX_SERVICE_NOT_AUTHORIZED`). Con la
95
+ mitad del par configurada, el comando corta antes de ir a ARCA.
96
+ - Un rechazo de WSFEX sale como respuesta válida con exit code `2`, igual que en las letras A, B y C.
97
+ - PDF: `factura-e_<pv>-<numero>.pdf`, con el diseño de exportación (divisa, destino, forma y fecha de
98
+ pago, incoterm, leyenda de IVA exento).
99
+
51
100
  ## Flags principales (alias corto entre paréntesis)
52
101
 
53
- - `-m, --monto <n>`: importe total (requerido). Montos en formato argentino: punto para miles, coma para decimales (`15000`, `15.000`, `1.500,50`). `1500.50` da error; máximo 2 decimales (la cotización, 6). Aplica a `--monto`, `--exento`, `--nogravado`, `--cm` y `--alicuota TASA:MONTO`. En JSON los montos son números, también con 2 decimales como máximo. Enteros (`--pv`, `--ar`, `--dia`…) solo con dígitos; `--cuit`/`--cuil`/`--dni` aceptan guiones.
102
+ - `-m, --monto <n>`: importe total (requerido). Montos en formato argentino: punto para miles, coma para decimales (`15000`, `15.000`, `1.500,50`). `1500.50` da error; máximo 2 decimales (la cotización, 6). Aplica a `--monto`, `--exento`, `--nogravado`, `--cm` y `--alicuota TASA:MONTO`. En JSON los montos son números, también con 2 decimales como máximo. Enteros (`--pv`, `--ar`, `--dia`…) solo con dígitos; `--cuit`/`--cuil`/`--acuit`/`--dni` aceptan guiones, y todo CUIT (también el de `padron`, `fce-obligado` y `config establecer cuit`) se valida con su dígito verificador.
54
103
  - Concepto: `--concepto <tipo>` (`productos`/`servicios`/`productos-servicios`) o atajos `--cs` `--cp` `--csp`. Uno solo, no combinar `--concepto` con un atajo.
55
104
  - IVA receptor: `--iva-receptor <tipo>` / `--ir <tipo>` (alias) o un atajo `--ir-ce|--ir-cf|--ir-il|--ir-ina|--ir-ms|--ir-mtip|--ir-pe|--ir-ri|--ir-rm|--ir-se|--ir-snc`. Usar exactamente una forma.
56
105
  Valores válidos: `cliente-del-exterior`, `consumidor-final`, `iva-liberado`, `iva-no-alcanzado`, `monotributista-social`, `monotributo-trabajador-independiente-promovido`, `proveedor-del-exterior`, `responsable-inscripto`, `responsable-monotributo`, `sujeto-exento`, `sujeto-no-categorizado`.
57
- El IVA receptor tiene que ser válido para la letra: `A` solo admite `responsable-inscripto`, `responsable-monotributo`, `monotributista-social` y `monotributo-trabajador-independiente-promovido`; `B` admite el resto; `C` admite todos. Letras `A` y `B` siempre discriminan IVA al 21%.
106
+ El IVA receptor tiene que ser válido para la letra: `A` solo admite `responsable-inscripto`, `responsable-monotributo`, `monotributista-social` y `monotributo-trabajador-independiente-promovido`; `B` admite el resto; `C` admite todos. Letras `A` y `B` discriminan IVA a la alícuota de `--alicuota` (por defecto 21%, ver abajo).
58
107
  - IVA (solo letras A y B): `--alicuota general|reducida|incrementada|cero` o el número `0|2.5|5|10.5|21|27` (default `config.alicuota` o 21; la config no aplica a C). Varias alícuotas: repetir `--alicuota TASA:MONTO` con el monto IVA incluido de cada una (`--alicuota general:1210 --alicuota reducida:552,50`); `--monto` pasa a ser opcional y, si se pasa, tiene que coincidir con la suma. En JSON: `alicuotas: [{tasa, monto}]`. Además, `--exento <monto>` y `--nogravado <monto>` (sin guion). `--monto` es siempre el total; exento y no gravado se descuentan y el IVA se calcula sobre el resto. En letra C esos flags dan error.
59
108
  - Identidad del receptor: `--cuit <n>` / `--cuil <n>` / `--dni <n>` / `--consumidor-final` (alias `--cfinal`, documento 0). Usar como máximo una. Desde $10.000.000 (total × cotización) no se puede usar `--consumidor-final`: identificar con `--dni`/`--cuit`/`--cuil` y `--ir-cf`.
60
109
  - Punto de venta: `--punto-venta <n>` (alias `--pv`). Si no se pasa, usa el default de config.
61
110
  - Moneda: `--moneda <codigo>` (alias `--mda`, ej. `ARS`/`USD`; `USD` se envía como `DOL`) y `--cotizacion-moneda <n>` (alias `--cm`). En moneda extranjera la cotización es obligatoria y no puede ser 1; si el pago es en la misma moneda extranjera, usar `--misma-moneda` en lugar de `--cm` (consulta la cotización oficial a ARCA). En pesos no pasar cotización distinta de 1.
62
- - Fechas: `-f, --fecha <fecha>` acepta formato argentino día-primero: `D`, `DD`, `D/M`, `DD/MM`, `D-M-YY`, `DD-MM-YYYY` (con `-` o `/`); si se omiten mes/año usa los actuales. También `--servicio-desde`/`--sd` y `--servicio-hasta`/`--sh`, y `-d, --dia <n>` (día de vencimiento; no se combina con `--fecha` ni `--servicio-hasta`). "Hoy" es siempre la fecha argentina, aunque el equipo esté en UTC. `--vencimiento <fecha>` (alias `--vto`) fija `FchVtoPago` aparte del período de servicio (servicios y facturas FCE; no en productos ni NC/ND FCE). Ventana de `--fecha` respecto de hoy: productos ±5 días, servicios ±10, FCE −5/+1; en productos y FCE una fecha futura tiene que caer en el mes actual.
111
+ - Fechas: `-f, --fecha <fecha>` acepta formato argentino día-primero: `D`, `DD`, `D/M`, `DD/MM`, `D-M-YY`, `DD-MM-YYYY` (con `-` o `/`); si se omiten mes/año usa los actuales. También `--servicio-desde`/`--sd` y `--servicio-hasta`/`--sh`, y `-d, --dia <n>` (día de vencimiento: este mes si todavía no pasó, si no el mes que viene; si ese día no existe en el mes, como 31 en abril, da error; no se combina con `--fecha` ni `--servicio-hasta`). "Hoy" es siempre la fecha argentina, aunque el equipo esté en UTC. `--vencimiento <fecha>` (alias `--vto`) fija `FchVtoPago` aparte del período de servicio (servicios y facturas FCE; no en productos ni NC/ND FCE). Ventana de `--fecha` respecto de hoy: productos ±5 días, servicios ±10, FCE −5/+1; en productos y FCE una fecha futura tiene que caer en el mes actual.
63
112
  - Comprobante asociado (obligatorio en notas de crédito/débito): `--ac <shortcut>` (ej. `fc`), `--apv <n>` (punto de venta, alias `--asociado-punto-venta`), `--ar <n>` (número), `--acuit <n>`, `--at <n>` (tipo ARCA, alternativa a `--ac`; no combinar ambos), `--afecha <fecha>` (fecha del asociado, opcional salvo en NC/ND FCE). En notas comunes, en lugar del bloque `--ac` se puede usar un período: `--periodo-desde <fecha>` y `--periodo-hasta <fecha>` (alias `--pd`/`--ph`); no se combinan con `--ac`/`--at`, no aplican a FCE y el período no puede terminar después de la nota.
64
113
  - Crédito electrónico (FCE): las facturas `fcea/fceb/fcec` requieren `--cbu <22 dígitos>` (o `arcli config establecer cbu ...`); opcionales `--alias <alias>` y `--transferencia sca|adc` (default `sca`). Las NC/ND FCE (`ncea`…`ndec`) requieren `--afecha`, aceptan `--anulacion`, toman `--acuit` del CUIT emisor si se omite y no aceptan `--cbu`/`--alias`/`--transferencia`. Fuera de FCE esos flags dan error.
114
+ - Padrón: `arcli padron <cuit> [--json]` consulta en ARCA (`ws_sr_constancia_inscripcion`) nombre, domicilio fiscal, `condicionIva` (`responsable-inscripto`, `responsable-monotributo`, `sujeto-exento` o `null` si no se puede deducir), impuestos y actividades. CUIT inexistente: error `TAXPAYER_NOT_FOUND`. Al facturar con `--cuit` y sin `--ir`/`ivaReceptor`, se usa la condición del padrón antes que el `ivaReceptor` de la config; si el padrón no responde o no la informa, se usa la config con un aviso en `avisos`, y sin config es `INPUT_VALIDATION_ERROR`. Se desactiva con `arcli config establecer consultarPadron false`. Para no depender del padrón, pasá `--ir` explícito.
115
+ - Autocompletado con Tab (para personas; un agente no lo necesita): `arcli completado instalar [shell]` lo agrega al archivo de inicio del shell, `arcli completado desinstalar [shell]` lo saca, `arcli completado` dice si está instalado y `arcli completado <bash|zsh|fish>` imprime el script. Con `--json`: `{ cambio, instalado, ruta, shell }`.
65
116
  - Régimen FCE: `arcli fce-obligado <cuit> [--fecha <fecha>] [--json]` consulta en ARCA (`wsfecred`) si el receptor está obligado a recibir FCE y desde qué monto. Con `arcli config establecer verificarFce true`, cada factura con CUIT hace esa consulta y devuelve avisos en `avisos` (JSON) sin bloquear. Requiere autorizar `wsfecred` en ARCA además de `wsfe`.
66
117
  - Ejecución: `--previsualizar` (solo arma y muestra la solicitud) vs `--emitir` (real contra ARCA) — son mutuamente excluyentes. El entorno sale de `config.entorno` (`testing` por defecto) salvo `--testing`/`--produccion`. Sin `--emitir` ni `--previsualizar` decide `config.emitir` (o `"emitir"` del JSON); si tampoco hay, en una terminal pregunta y con `--json` o sin TTY no emite. `--produccion --emitir` emite de verdad sin confirmación adicional, y lo mismo pasa sin flags si la config tiene `entorno produccion` y `emitir true`. Para no depender de la config, pasá siempre `--testing` o `--produccion` y `--emitir` o `--previsualizar` explícitos.
67
- - Salida: `--json` (estructurada, para scripts/agentes — desactiva el aviso de nueva versión), `--bruto` (incluye la respuesta cruda de ARCA).
118
+ - Salida: `--json` (estructurada, para scripts/agentes — desactiva el aviso de nueva versión), `--bruto` (incluye la respuesta cruda de ARCA). `--bruto` solo existe en los comandos de facturación; en `padron`, `fce-obligado`, `ultimos`, `consultar`, `parametros` y `estado` se ignora con un aviso en stderr. En todos los comandos, sin `--json` decide la clave de config `json`.
68
119
  - `--cargar <path.json>`: carga uno o un array de comprobantes desde un JSON en vez de flags (ver forma abajo). Los flags pisan lo que venga del archivo.
69
- - PDF: `--exportar-pdf` (alias `--pdf`) genera el PDF con QR después de emitir; `--sin-pdf` no lo genera; sin flag decide `config pdf` (`preguntar` por defecto, que sin TTY o con `--json` no genera). Datos que solo van en el PDF (ARCA no los recibe): `--descripcion <texto>`, `--receptor-nombre <texto>`, `--receptor-domicilio <texto>`. Requiere el plugin (`arcli pdf instalar`, ~160 MB; desde un agente instalarlo antes, porque sin TTY nunca se descarga solo) y `emisor.razonSocial`, `emisor.domicilio`, `emisor.inicioActividades` en la config. Detalle: `docs/pdf.md`.
120
+ - PDF: `--exportar-pdf` (alias `--pdf`) genera el PDF con QR después de emitir; `--sin-pdf` no lo genera; sin flag decide `config pdf` (`preguntar` por defecto, que sin TTY o con `--json` no genera). Datos que solo van en el PDF (ARCA no los recibe): `--descripcion <texto>`, `--receptor-nombre <texto>`, `--receptor-domicilio <texto>`. Requiere el plugin (`arcli pdf instalar`, ~160 MB; desde un agente instalarlo antes, porque sin TTY nunca se descarga solo) y `emisor.razonSocial`, `emisor.domicilio`, `emisor.inicioActividades` en la config. Detalle: https://github.com/LcsGrz/arcli/blob/main/docs/pdf.md.
70
121
 
71
122
  ## Modo no interactivo
72
123
 
73
- Sin `--emitir` ni `--previsualizar`, si la sesión es interactiva (TTY) arcli muestra una vista
74
- previa y pregunta si emitir. **Con `--json`, o cuando stdin/stdout no son un TTY (scripts,
75
- agentes, CI), nunca pregunta** — se comporta como si fuera dry-run salvo que se pase
76
- `--emitir` explícitamente. Para invocar desde un agente, siempre pasar `--emitir` o
77
- `--previsualizar` de forma explícita y no depender del prompt.
124
+ Sin `--emitir` ni `--previsualizar`, decide `"emitir"` del JSON de `--cargar` y, si no está,
125
+ `config.emitir`. Si nada pide emitir y la sesión es interactiva (TTY), arcli muestra una vista
126
+ previa y pregunta. **Con `--json`, o cuando stdin/stdout no son un TTY (scripts, agentes, CI),
127
+ nunca pregunta**: no emite, salvo que `config.emitir` sea `true`, y en ese caso emite sin
128
+ confirmar (en producción también, si `config.entorno` es `produccion`). Para invocar desde un
129
+ agente, siempre pasar `--emitir` o `--previsualizar` (y `--testing` o `--produccion`) de forma
130
+ explícita y no depender de la config ni del prompt.
78
131
 
79
132
  ## Forma del JSON de `--cargar` (un objeto o un array de estos)
80
133
 
@@ -88,20 +141,22 @@ agentes, CI), nunca pregunta** — se comporta como si fuera dry-run salvo que s
88
141
  "puntoVenta": 3,
89
142
  "codigoMoneda": "ARS",
90
143
  "cotizacionMoneda": 1,
91
- "fechaComprobante": "18-03-2026",
92
- "servicioDesde": "01-03-2026",
93
- "servicioHasta": "31-03-2026",
94
144
  "dia": 10,
95
- "emitir": false,
96
145
  "previsualizar": true,
97
- "comprobanteAsociado": { "atajo": "fc", "cuit": "20123456789", "numero": 10, "puntoVenta": 3 },
98
146
  "pdf": true,
99
- "descripcion": "Servicios de marzo",
147
+ "descripcion": "Servicios del mes",
100
148
  "receptorNombre": "Cliente SA",
101
149
  "receptorDomicilio": "Calle 1"
102
150
  }
103
151
  ```
104
152
 
153
+ Las claves son las de este ejemplo más `emitir`, `fechaComprobante`, `servicioDesde`, `servicioHasta` (fechas como en los
154
+ flags; `dia` no se combina con `fechaComprobante` ni `servicioHasta`), `alicuotaIva`, `alicuotas` (`[{tasa, monto}]`),
155
+ `importeExento`, `importeNoGravado`, `mismaMoneda`, `vencimientoPago`, `cbu`, `aliasCbu`, `transferencia` y, solo en notas,
156
+ `comprobanteAsociado` (`{atajo|tipo, puntoVenta, numero, cuit, fecha}`), `periodoAsociado` (`{desde, hasta}`) y `anulacion`. Lista y equivalencia con los flags: https://github.com/LcsGrz/arcli/blob/main/docs/input-output.md.
157
+ Una clave desconocida (`montototal`, `vencimiento`, `moneda`) o un tipo incorrecto (`"puntoVenta": "3"`, `"emitir": "true"`,
158
+ `null`) es `INPUT_VALIDATION_ERROR` (en un lote, `BATCH_VALIDATION_ERROR` con el índice): no se ignora. Números sin comillas.
159
+
105
160
  ## Forma de la respuesta (`--json`, sin `--bruto`)
106
161
 
107
162
  ```json
@@ -117,77 +172,99 @@ agentes, CI), nunca pregunta** — se comporta como si fuera dry-run salvo que s
117
172
  "eventos": [],
118
173
  "observaciones": ["..."],
119
174
  "observacion": "string | null",
120
- "solicitud": { "...": "payload enviado a ARCA" },
175
+ "numero": "number (número emitido) | null (previsualización)",
176
+ "solicitud": { "...": "payload enviado a ARCA; si se emitió, con CbteDesde/CbteHasta" },
121
177
  "previsualizacion": true,
122
178
  "sugerencias": ["texto en español sugiriendo como resolver errores comunes de ARCA"],
123
179
  "pdf": { "ruta": "/ruta/al/archivo.pdf" }
124
180
  }
125
181
  ```
126
182
 
183
+ En la factura E (`fe`) el objeto agrega `exportacion` (`cliente`, `destino`, `domicilioCliente`,
184
+ `incoterm`, `items`, `permisos`, `tipoExpo`) y `solicitud` es el `Cmp` de WSFEX con los nombres de ARCA
185
+ (`Dst_cmp`, `Moneda_Id`, `Items.Item`…). `solicitud` no lleva `Permisos` cuando no hay permisos de
186
+ embarque: ARCA rechaza ese campo (error 1720) si `Permiso_existente` es `N`, y lo exige vacío en los
187
+ tipos `2` (servicios) y `4` (otros), donde tampoco admite permisos (error 1550).
188
+
127
189
  `pdf` aparece solo si se intentó generar el PDF. Si falló es `{ "error": { "codigo", "mensaje", "sugerencia" } }`
128
190
  (`PDF_PLUGIN_MISSING`, `PDF_PLUGIN_INSTALL_ERROR`, `PDF_ISSUER_INCOMPLETE`, `PDF_GENERATION_ERROR`) y el exit code
129
191
  sigue siendo `0`: el comprobante ya está emitido, **no reemitir para obtener el PDF**.
130
192
 
131
- Con múltiples comprobantes (batch o `--cargar` con array) la salida es un array de estos
132
- objetos. Con `--bruto` se agrega `respuesta` con la respuesta cruda del SDK.
193
+ Con `--cargar` y un array la salida es un array de estos objetos (con `indice`), aunque el array tenga un
194
+ solo elemento; con un objeto o con flags, un objeto. Con `--bruto` se agrega `respuesta` con la respuesta
195
+ cruda del SDK; el resto de los campos no cambia.
133
196
 
134
197
  **Importante:** un comprobante rechazado por ARCA (`"estado": "rechazado"`) es una respuesta
135
- válida, no una excepción — el proceso termina con exit code `0` igual. Para saber si un
136
- comprobante fue realmente aprobado hay que revisar `estado`/`resultado`/`errores` en el
137
- JSON, nunca alcanza con chequear el exit code.
198
+ válida, no una excepción: sale por stdout como cualquier resultado y el proceso termina con
199
+ exit code `2`. En un lote, `2` si ARCA rechazó al menos uno; para saber cuáles, revisar
200
+ `estado`/`resultado`/`errores` de cada uno. `observado` es aprobado (tiene CAE) y sale con `0`.
138
201
 
139
202
  ## Salida de error
140
203
 
141
204
  Sin `--json` (ni `json=true` en la config): panel de texto en stderr. Con `--json` o `json=true`: JSON en stderr con la forma
142
205
  `{"codigo": "...", "detalles": {...} | null, "error": "mensaje", "sugerencia": "..." | null}`.
143
206
  `codigo` es `CONFIGURATION_ERROR`, `INPUT_VALIDATION_ERROR`, `EMISSION_UNCERTAIN` (falló la llamada
144
- que emite: puede haberse emitido igual; antes de reintentar, verificar con el `arcli ultimos <tipo> --pv <n>`
145
- que viene en `sugerencia`), `TRANSIENT_ERROR` (consultas: reintentar), `UNEXPECTED_ERROR`, `VOUCHER_NOT_FOUND` (`consultar`), o en un lote
146
- (`--cargar` con un array) `BATCH_VALIDATION_ERROR` (no se emitió ninguno; `detalles.comprobantes` lista cada
207
+ que emite, no el login ni el pedido del último número: puede haberse emitido igual; antes de reintentar, verificar con el `arcli ultimos <tipo> --pv <n>`
208
+ que viene en `sugerencia`), `TRANSIENT_ERROR` (consultas: reintentar), `ARCA_LAST_VOUCHER_ERROR` (facturación o `ultimos`: ARCA rechazó el pedido del último número, por ejemplo con un punto de venta no habilitado; no se emitió nada), `CERTIFICATE_EXPIRED` (el certificado del entorno venció: se corta antes
209
+ de ARCA, no se envió nada; `detalles.entorno` y `detalles.vencimiento`, la guía en `sugerencia`), `UNEXPECTED_ERROR`, `VOUCHER_NOT_FOUND` (`consultar`), o en un lote
210
+ (`--cargar` con un array, aunque tenga un solo elemento) `BATCH_VALIDATION_ERROR` (no se emitió ninguno; `detalles.comprobantes` lista cada
147
211
  `{indice, error}`) y `BATCH_EMISSION_ERROR` (se cortó a mitad: los resultados ya procesados salen antes por
148
212
  stdout; si viene `detalles.sinConfirmar`, verificar ese índice con `arcli ultimos` antes de reintentarlo;
149
- después reintentar `detalles.sinProcesar`, nunca los ya emitidos). El proceso termina con
150
- exit code `1` en cualquier error.
213
+ después reintentar `detalles.sinProcesar`, nunca los ya emitidos). En consultas: `TAXPAYER_NOT_FOUND` (`padron`),
214
+ `PADRON_SERVICE_NOT_AUTHORIZED` (`padron`; al facturar no corta, usa la config con un aviso), `FCE_SERVICE_NOT_AUTHORIZED`
215
+ y `FCE_OBLIGATION_ERROR` (`fce-obligado`; con `verificarFce` al facturar salen como aviso), `ARCA_UNAVAILABLE` (`estado`),
216
+ `ARCA_PARAMETERS_ERROR` (`parametros <tabla>`) y `ARCA_QUOTATION_ERROR` (`parametros cotizacion` o `--misma-moneda`).
217
+ `PDF_PLUGIN_INSTALL_ERROR` sale de `arcli pdf instalar`. `sugerencia` está siempre: `null` si no hay nada que sugerir.
218
+ Qué hacer con cada código: tabla "Códigos de error" de https://github.com/LcsGrz/arcli/blob/main/docs/input-output.md. Los errores de uso (opción desconocida, valor faltante, comando inexistente) también salen en este JSON como `INPUT_VALIDATION_ERROR`, con el mensaje de commander en `error`. El proceso termina con
219
+ exit code `1` en cualquier error. Resumen: `0` aprobado (u observado), `1` error, `2` rechazado por ARCA.
151
220
 
152
221
  ## Comando `config`
153
222
 
154
223
  ```bash
155
224
  arcli config # ver config actual (agregar --json)
156
- arcli config revisar [--testing|--produccion] # valida credenciales + contexto real
157
- arcli config ruta # path del archivo de config
225
+ arcli config revisar # valida credenciales y contexto de los dos entornos (agregar --json)
226
+ arcli config ruta [--json] # path del archivo de config ({"ruta": ...})
158
227
  arcli config establecer <clave> <valor>
159
228
  arcli config eliminar <clave>
160
229
  ```
161
230
 
162
- Claves válidas: `cuit`, `cbu`, `aliasCbu` (solo facturas FCE), `verificarFce`, `alicuota`, `puntoVenta`, `comprobantesPorLista` (1 a 50, por defecto 15), `concepto`, `ivaReceptor`, `moneda`, `cotizacion`,
231
+ Claves válidas: `cuit`, `cbu`, `aliasCbu` (solo facturas FCE), `verificarFce`, `consultarPadron` (por defecto `true`), `alicuota`, `puntoVenta`, `comprobantesPorLista` (1 a 50, por defecto 15), `concepto`, `ivaReceptor`, `moneda`, `cotizacion`,
163
232
  `entorno` (`testing`/`produccion`), `emitir`, `json`, `bruto` (booleanos: `true/false`,
164
233
  `si/no`, `1/0`), `cert.testing`, `cert.produccion`, `key.testing`, `key.produccion`
165
- (rutas a archivos PEM, se validan al guardar), `ticketPath` (carpeta donde se cachea el
234
+ (rutas a archivos PEM, se validan al guardar), `exportacion.cert.testing`, `exportacion.cert.produccion`,
235
+ `exportacion.key.testing`, `exportacion.key.produccion` (credenciales propias de WSFEX para la factura
236
+ de exportación; si faltan, se usan `cert.*`/`key.*`), `exportacion.actividad` (código de la tabla de
237
+ actividades de WSFEX para la `E`; `--actividad` lo pisa), `ticketPath` (carpeta donde se cachea el
166
238
  ticket WSAA; por defecto una carpeta junto al archivo de config).
167
- Para el PDF: `pdf` (`siempre`/`preguntar`/`nunca`), `pdfCarpeta` (por defecto `~/arcli/comprobantes`; los de
168
- testing van a `testing/`), `pdfNavegador` (ruta a Chrome/Chromium/Edge), `emisor.razonSocial`, `emisor.domicilio`,
239
+ Para el PDF: `pdf` (`siempre`/`preguntar`/`nunca`), `pdfCarpeta` (por defecto `~/arcli/comprobantes`; una subcarpeta
240
+ por CUIT emisor, los de testing en `testing/<CUIT>/`, y nunca se pisa un PDF existente: se suma `-2`, `-3`), `pdfNavegador` (ruta a Chrome/Chromium/Edge), `emisor.razonSocial`, `emisor.domicilio`,
169
241
  `emisor.inicioActividades` (fecha con año), `emisor.iibb`, `emisor.condicionIva`, `emisor.logo` (PNG o JPG).
170
242
 
171
- `config revisar` también avisa si un certificado ya venció o vence en menos de 30 días.
243
+ `config revisar` también avisa si un certificado ya venció o vence en menos de 30 días. Con `--json` devuelve
244
+ `{ok, chequeos: [{categoria: "ok"|"warning"|"error", etiqueta, detalle}]}`; `ok: false` sale igual con exit code `0`.
245
+ `arcli config --json` devuelve la config con las rutas enmascaradas (`cert`, `key` y `emisor` como objetos).
246
+ Además, a menos de 30 días de vencer cualquiera de los certificados configurados (testing o producción, sin importar el entorno
247
+ en uso), cada comando que va a ARCA avisa en stderr (nunca en stdout) y la facturación lo suma a `avisos` del JSON.
172
248
 
173
249
  ## Otros comandos
174
250
 
175
251
  - `arcli ultimos <tipo> [--cantidad N] [--pv N] [--json]`: últimos comprobantes emitidos (de 1 a 50; por defecto `config.comprobantesPorLista` o 15), del más nuevo al más viejo. `tipo` es el atajo (`fb`, `nca`…).
176
252
  - `arcli consultar <tipo> <numero> [--pv N] [--json]`: detalle de un comprobante emitido (CAE, vencimiento, importes, receptor). Si no existe, el error es `VOUCHER_NOT_FOUND`. Sirve para verificar después de emitir.
177
253
  - `arcli pdf [estado|instalar|desinstalar] [--json]`: plugin que genera los PDFs. `arcli pdf instalar` lo descarga sin preguntar (sirve en scripts).
178
- - `arcli estado [--json]`: si ARCA responde (servidores app/db/auth, latencia) y si el punto de venta configurado está habilitado. `listo: true` = se puede emitir. En testing ARCA no informa puntos de venta (`puntoVenta.estado: "sin-datos"`).
179
- - `arcli parametros [tabla] [--json]`: tablas de ARCA vigentes: `puntos-venta`, `comprobantes`, `documentos`, `alicuotas`, `iva-receptor`, `monedas`, `conceptos`, `opcionales`, `tributos`. `arcli parametros cotizacion USD` da la cotización oficial (`{moneda, cotizacion, fecha}`).
254
+ - `arcli estado [--json]`: si ARCA responde y si el punto de venta configurado está habilitado: `{entorno, latenciaMs, listo, puntoVenta: {estado, numero, tipoEmision}, servidores: {aplicacion, baseDeDatos, autenticacion}}`. `listo: true` = se puede emitir; `listo: false` sale igual con exit code `0`, así que hay que leer `listo`. En testing ARCA no informa puntos de venta (`puntoVenta.estado: "sin-datos"`). Si ARCA no responde: error `ARCA_UNAVAILABLE`.
255
+ - `arcli parametros [tabla] [--json]`: tablas de ARCA vigentes: `puntos-venta`, `comprobantes`, `documentos`, `alicuotas`, `iva-receptor`, `monedas`, `conceptos`, `opcionales`, `tributos`. Sin tabla: `{tablas: [{tabla, descripcion}]}`; con tabla: `{entorno, tabla, valores: [{id, descripcion, detalle, vigenteHasta}]}`. `arcli parametros cotizacion USD` da la cotización oficial (`{cotizacion, entorno, fecha, moneda}`, con `moneda` en código ARCA: `DOL`).
180
256
  - `arcli ejemplos`: comandos listos para copiar por cada tipo de comprobante.
181
- - `arcli storybook [escena]`: demos visuales de la UI (sin llamar a ARCA).
182
257
  - `arcli <cualquier comando> ayuda` o `--ayuda`: ayuda contextual con ejemplos (nota: el flag
183
258
  estándar `--help` de commander está deshabilitado, usar `--ayuda` o el subcomando `ayuda`).
184
259
 
185
260
  ## Más detalle
186
261
 
187
- - `docs/cli-reference.md`: referencia completa de comandos y flags.
188
- - `docs/configuration.md`: config persistente, claves soportadas, ticketPath.
189
- - `docs/validation-rules.md` y `docs/input-output.md`: reglas de validación y formatos de entrada/salida.
190
- - `docs/troubleshooting.md`: errores comunes de ARCA y como resolverlos.
191
- - `docs/pdf.md`: PDF de comprobantes, plugin, carpeta y nombre del archivo.
192
- - `docs/modo-interactivo.md`: asistente interactivo (un agente no debe usarlo).
193
- - `AGENTS.md`: para agentes que van a modificar el código de este repo (no para usar el CLI).
262
+ Los docs no vienen en el paquete de npm: están en GitHub.
263
+
264
+ - https://github.com/LcsGrz/arcli/blob/main/docs/cli-reference.md: referencia completa de comandos y flags.
265
+ - https://github.com/LcsGrz/arcli/blob/main/docs/configuration.md: config persistente, claves soportadas, ticketPath.
266
+ - https://github.com/LcsGrz/arcli/blob/main/docs/validation-rules.md y https://github.com/LcsGrz/arcli/blob/main/docs/input-output.md: reglas de validación y formatos de entrada/salida, con el JSON de cada comando y los códigos de error.
267
+ - https://github.com/LcsGrz/arcli/blob/main/docs/troubleshooting.md: errores comunes de ARCA y como resolverlos.
268
+ - https://github.com/LcsGrz/arcli/blob/main/docs/pdf.md: PDF de comprobantes, plugin, carpeta y nombre del archivo.
269
+ - https://github.com/LcsGrz/arcli/blob/main/docs/modo-interactivo.md: asistente interactivo (un agente no debe usarlo).
270
+ - https://github.com/LcsGrz/arcli/blob/main/AGENTS.md: para agentes que van a modificar el código de este repo (no para usar el CLI).