ekwo-os 0.12.2 → 0.14.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 (215) hide show
  1. package/README.md +6 -2
  2. package/dist/assets/expected-objects.json +614 -9
  3. package/dist/assets/migrations/20261011192741_pack_certification_proven.sql +28 -0
  4. package/dist/assets/migrations/20261012050145_pack_evidence.sql +28 -0
  5. package/dist/assets/migrations/20261014081008_a_bank_line_settles_with_its_fees.sql +608 -0
  6. package/dist/assets/migrations/20261014081038_an_opening_on_the_day_of_the_takeover.sql +699 -0
  7. package/dist/assets/migrations/20261014152111_what_the_accounts_mean_to_an_analysis.sql +378 -0
  8. package/dist/assets/migrations/20261014164531_schema_version_0_13_0.sql +42 -0
  9. package/dist/assets/migrations/20261015042916_an_archive_is_given_its_time.sql +113 -0
  10. package/dist/assets/migrations/20261016065440_an_analysis_for_every_country.sql +292 -0
  11. package/dist/assets/migrations/20261016145816_product_report.sql +92 -0
  12. package/dist/assets/migrations/20261018014537_a_country_chains_its_invoices.sql +41 -0
  13. package/dist/assets/migrations/20261018023930_a_country_reports_its_invoices.sql +34 -0
  14. package/dist/assets/migrations/20261018102431_a_piece_goes_on_its_document.sql +57 -0
  15. package/dist/assets/migrations/20261018130000_a_closed_year_reopens_a_final_close_does_not.sql +364 -0
  16. package/dist/assets/migrations/20261018135109_schema_version_0_14_0.sql +46 -0
  17. package/dist/assets/modules/einvoicing/module.json +2 -2
  18. package/dist/assets/modules/einvoicing/supabase/migrations/20261018015212_einvoicing_fiscalisation.sql +1083 -0
  19. package/dist/assets/seed/00_currencies.sql +5 -1
  20. package/dist/assets/seed/00_territories.sql +199 -5
  21. package/dist/assets/seed/05_framework_generic.sql +148 -2
  22. package/dist/assets/seed/100_pack_uy.sql +122 -0
  23. package/dist/assets/seed/101_pack_ec.sql +31 -0
  24. package/dist/assets/seed/102_pack_bo.sql +36 -0
  25. package/dist/assets/seed/103_pack_py.sql +35 -0
  26. package/dist/assets/seed/104_pack_do.sql +29 -0
  27. package/dist/assets/seed/105_pack_cr.sql +36 -0
  28. package/dist/assets/seed/106_pack_gt.sql +44 -0
  29. package/dist/assets/seed/107_pack_pa.sql +34 -0
  30. package/dist/assets/seed/108_pack_in.sql +44 -0
  31. package/dist/assets/seed/109_pack_cn.sql +115 -0
  32. package/dist/assets/seed/10_pack_be.sql +230 -9
  33. package/dist/assets/seed/110_pack_ge.sql +29 -0
  34. package/dist/assets/seed/111_pack_md.sql +50 -0
  35. package/dist/assets/seed/112_pack_rs.sql +62 -0
  36. package/dist/assets/seed/113_pack_ba.sql +58 -0
  37. package/dist/assets/seed/114_pack_al.sql +131 -0
  38. package/dist/assets/seed/115_pack_mk.sql +45 -0
  39. package/dist/assets/seed/116_pack_me.sql +44 -0
  40. package/dist/assets/seed/117_pack_bh.sql +35 -0
  41. package/dist/assets/seed/118_pack_om.sql +36 -0
  42. package/dist/assets/seed/119_pack_gh.sql +38 -0
  43. package/dist/assets/seed/11_pack_fr.sql +367 -5
  44. package/dist/assets/seed/120_pack_tz.sql +38 -0
  45. package/dist/assets/seed/121_pack_ug.sql +38 -0
  46. package/dist/assets/seed/122_pack_rw.sql +38 -0
  47. package/dist/assets/seed/123_pack_xk.sql +31 -0
  48. package/dist/assets/seed/124_pack_kz.sql +45 -0
  49. package/dist/assets/seed/125_pack_pk.sql +38 -0
  50. package/dist/assets/seed/126_pack_bd.sql +38 -0
  51. package/dist/assets/seed/127_pack_lk.sql +38 -0
  52. package/dist/assets/seed/128_pack_am.sql +39 -0
  53. package/dist/assets/seed/129_pack_az.sql +64 -0
  54. package/dist/assets/seed/12_pack_lu.sql +752 -0
  55. package/dist/assets/seed/130_pack_hn.sql +44 -0
  56. package/dist/assets/seed/131_pack_sv.sql +36 -0
  57. package/dist/assets/seed/132_pack_ni.sql +44 -0
  58. package/dist/assets/seed/133_pack_et.sql +38 -0
  59. package/dist/assets/seed/134_pack_mu.sql +38 -0
  60. package/dist/assets/seed/135_pack_mz.sql +89 -0
  61. package/dist/assets/seed/136_pack_ao.sql +51 -0
  62. package/dist/assets/seed/137_pack_zm.sql +38 -0
  63. package/dist/assets/seed/138_pack_bm.sql +29 -0
  64. package/dist/assets/seed/139_pack_ky.sql +28 -0
  65. package/dist/assets/seed/13_pack_ee.sql +197 -5
  66. package/dist/assets/seed/140_pack_vg.sql +32 -0
  67. package/dist/assets/seed/141_pack_gg.sql +36 -0
  68. package/dist/assets/seed/142_pack_qa.sql +33 -0
  69. package/dist/assets/seed/143_pack_kw.sql +29 -0
  70. package/dist/assets/seed/144_pack_bn.sql +35 -0
  71. package/dist/assets/seed/145_pack_mo.sql +45 -0
  72. package/dist/assets/seed/146_pack_je.sql +36 -0
  73. package/dist/assets/seed/147_pack_zw.sql +38 -0
  74. package/dist/assets/seed/14_pack_gb.sql +53 -0
  75. package/dist/assets/seed/15_pack_us.sql +48 -0
  76. package/dist/assets/seed/16_pack_ie.sql +83 -0
  77. package/dist/assets/seed/17_pack_nl.sql +70 -0
  78. package/dist/assets/seed/18_pack_de.sql +85 -0
  79. package/dist/assets/seed/19_pack_es.sql +273 -5
  80. package/dist/assets/seed/200_pack_jm.sql +579 -0
  81. package/dist/assets/seed/202_pack_dm.sql +570 -0
  82. package/dist/assets/seed/203_pack_gd.sql +579 -0
  83. package/dist/assets/seed/20_pack_sn.sql +150 -0
  84. package/dist/assets/seed/21_pack_ci.sql +150 -0
  85. package/dist/assets/seed/22_pack_bj.sql +150 -0
  86. package/dist/assets/seed/23_pack_bf.sql +150 -0
  87. package/dist/assets/seed/24_pack_cm.sql +150 -0
  88. package/dist/assets/seed/25_pack_cf.sql +150 -0
  89. package/dist/assets/seed/26_pack_km.sql +150 -0
  90. package/dist/assets/seed/27_pack_cg.sql +150 -0
  91. package/dist/assets/seed/28_pack_ga.sql +150 -0
  92. package/dist/assets/seed/29_pack_gn.sql +150 -0
  93. package/dist/assets/seed/30_pack_gw.sql +150 -0
  94. package/dist/assets/seed/31_pack_gq.sql +150 -0
  95. package/dist/assets/seed/32_pack_ml.sql +150 -0
  96. package/dist/assets/seed/33_pack_ne.sql +150 -0
  97. package/dist/assets/seed/34_pack_cd.sql +150 -0
  98. package/dist/assets/seed/35_pack_td.sql +150 -0
  99. package/dist/assets/seed/36_pack_tg.sql +150 -0
  100. package/dist/assets/seed/37_pack_it.sql +39 -0
  101. package/dist/assets/seed/38_pack_id.sql +21 -0
  102. package/dist/assets/seed/39_pack_my.sql +43 -0
  103. package/dist/assets/seed/400_pack_ag.sql +641 -0
  104. package/dist/assets/seed/401_pack_bs.sql +649 -0
  105. package/dist/assets/seed/402_pack_gy.sql +559 -0
  106. package/dist/assets/seed/40_pack_au.sql +38 -0
  107. package/dist/assets/seed/41_pack_nz.sql +39 -0
  108. package/dist/assets/seed/42_pack_mx.sql +78 -0
  109. package/dist/assets/seed/43_pack_pt.sql +52 -0
  110. package/dist/assets/seed/44_pack_ph.sql +26 -0
  111. package/dist/assets/seed/45_pack_ar.sql +36 -0
  112. package/dist/assets/seed/46_pack_cl.sql +125 -0
  113. package/dist/assets/seed/47_pack_co.sql +32 -0
  114. package/dist/assets/seed/48_pack_pe.sql +46 -0
  115. package/dist/assets/seed/49_pack_ng.sql +31 -0
  116. package/dist/assets/seed/50_pack_sg.sql +38 -0
  117. package/dist/assets/seed/51_pack_jp.sql +71 -0
  118. package/dist/assets/seed/52_pack_hk.sql +29 -0
  119. package/dist/assets/seed/53_pack_tw.sql +18 -0
  120. package/dist/assets/seed/54_pack_kr.sql +66 -0
  121. package/dist/assets/seed/55_pack_vn.sql +27 -0
  122. package/dist/assets/seed/56_pack_th.sql +26 -0
  123. package/dist/assets/seed/57_pack_ua.sql +71 -0
  124. package/dist/assets/seed/58_pack_ca.sql +30 -0
  125. package/dist/assets/seed/60_pack_ae.sql +36 -0
  126. package/dist/assets/seed/61_pack_se.sql +80 -0
  127. package/dist/assets/seed/62_pack_ch.sql +30 -0
  128. package/dist/assets/seed/63_pack_at.sql +43 -0
  129. package/dist/assets/seed/64_pack_pl.sql +45 -0
  130. package/dist/assets/seed/65_pack_dk.sql +33 -0
  131. package/dist/assets/seed/66_pack_no.sql +35 -0
  132. package/dist/assets/seed/67_pack_fi.sql +40 -0
  133. package/dist/assets/seed/68_pack_cz.sql +111 -0
  134. package/dist/assets/seed/69_pack_sk.sql +50 -0
  135. package/dist/assets/seed/70_pack_hu.sql +45 -0
  136. package/dist/assets/seed/71_pack_sa.sql +38 -0
  137. package/dist/assets/seed/72_pack_ro.sql +91 -0
  138. package/dist/assets/seed/73_pack_bg.sql +26 -0
  139. package/dist/assets/seed/74_pack_hr.sql +40 -0
  140. package/dist/assets/seed/75_pack_si.sql +46 -0
  141. package/dist/assets/seed/76_pack_gr.sql +28 -0
  142. package/dist/assets/seed/77_pack_lt.sql +31 -0
  143. package/dist/assets/seed/78_pack_lv.sql +26 -0
  144. package/dist/assets/seed/79_pack_cy.sql +38 -0
  145. package/dist/assets/seed/80_pack_mt.sql +87 -0
  146. package/dist/assets/seed/81_pack_is.sql +31 -0
  147. package/dist/assets/seed/82_pack_tr.sql +50 -0
  148. package/dist/assets/seed/83_pack_eg.sql +36 -0
  149. package/dist/assets/seed/84_pack_ma.sql +66 -0
  150. package/dist/assets/seed/85_pack_tn.sql +51 -0
  151. package/dist/assets/seed/86_pack_dz.sql +113 -0
  152. package/dist/assets/seed/87_pack_il.sql +30 -0
  153. package/dist/assets/seed/88_pack_za.sql +38 -0
  154. package/dist/assets/seed/89_pack_ke.sql +38 -0
  155. package/dist/assets/seed/modules/corporate_tax/10_pack_be.sql +1 -1
  156. package/dist/assets/seed/modules/corporate_tax/11_pack_fr.sql +1 -1
  157. package/dist/assets/seed/modules/corporate_tax/19_pack_es.sql +1 -1
  158. package/dist/assets/seed/modules/fixed_assets/10_pack_be.sql +1 -1
  159. package/dist/assets/seed/modules/fixed_assets/11_pack_fr.sql +1 -1
  160. package/dist/assets/seed/modules/fixed_assets/19_pack_es.sql +1 -1
  161. package/dist/cli.d.ts +3 -2
  162. package/dist/cli.d.ts.map +1 -1
  163. package/dist/cli.js +36 -3
  164. package/dist/cli.js.map +1 -1
  165. package/dist/commands/einvoice.d.ts +3 -2
  166. package/dist/commands/einvoice.d.ts.map +1 -1
  167. package/dist/commands/einvoice.js +123 -5
  168. package/dist/commands/einvoice.js.map +1 -1
  169. package/dist/commands/import.d.ts.map +1 -1
  170. package/dist/commands/import.js +7 -2
  171. package/dist/commands/import.js.map +1 -1
  172. package/dist/commands/pack.d.ts.map +1 -1
  173. package/dist/commands/pack.js +24 -1
  174. package/dist/commands/pack.js.map +1 -1
  175. package/dist/commands/payment.d.ts +4 -2
  176. package/dist/commands/payment.d.ts.map +1 -1
  177. package/dist/commands/payment.js +48 -9
  178. package/dist/commands/payment.js.map +1 -1
  179. package/dist/commands/peppol.d.ts +29 -0
  180. package/dist/commands/peppol.d.ts.map +1 -0
  181. package/dist/commands/peppol.js +135 -0
  182. package/dist/commands/peppol.js.map +1 -0
  183. package/dist/index.d.ts +3 -2
  184. package/dist/index.d.ts.map +1 -1
  185. package/dist/index.js +2 -1
  186. package/dist/index.js.map +1 -1
  187. package/dist/output.js +1 -1
  188. package/dist/output.js.map +1 -1
  189. package/dist/pack/analysis.d.ts +87 -0
  190. package/dist/pack/analysis.d.ts.map +1 -0
  191. package/dist/pack/analysis.js +240 -0
  192. package/dist/pack/analysis.js.map +1 -0
  193. package/dist/pack/certification.d.ts +23 -6
  194. package/dist/pack/certification.d.ts.map +1 -1
  195. package/dist/pack/certification.js +27 -5
  196. package/dist/pack/certification.js.map +1 -1
  197. package/dist/pack/compile.d.ts.map +1 -1
  198. package/dist/pack/compile.js +88 -8
  199. package/dist/pack/compile.js.map +1 -1
  200. package/dist/pack/describe.d.ts +15 -3
  201. package/dist/pack/describe.d.ts.map +1 -1
  202. package/dist/pack/describe.js +5 -1
  203. package/dist/pack/describe.js.map +1 -1
  204. package/dist/pack/read.d.ts +162 -1
  205. package/dist/pack/read.d.ts.map +1 -1
  206. package/dist/pack/read.js +384 -25
  207. package/dist/pack/read.js.map +1 -1
  208. package/dist/pack/rules.d.ts +24 -0
  209. package/dist/pack/rules.d.ts.map +1 -0
  210. package/dist/pack/rules.js +29 -0
  211. package/dist/pack/rules.js.map +1 -0
  212. package/dist/schema.d.ts +1 -1
  213. package/dist/schema.js +1 -1
  214. package/package.json +3 -3
  215. package/schema/output.1.json +94 -1
package/README.md CHANGED
@@ -173,12 +173,14 @@ project reports what was already there and creates nothing a second time.
173
173
  | `ekwo cancel <document>` | Undoes a posted invoice, and says how. Back to draft, through `unpost_document()`, where its country allows it and nothing about it has left; otherwise through `cancel_document()`: the credit note that names it, posted and matched against it, and the invoice cancelled. `--date` books the credit note on another day than the invoice's, which is how a locked period is stepped over; `--credit` asks for the note where a draft was possible. |
174
174
  | `ekwo reverse <entry>` | Undoes a posted entry keyed by hand, through `reverse_entry()`: its mirror, posted and matched against it. By id or by number; `--date` as for `cancel`. |
175
175
  | `ekwo payment record` | Money in or out, booked and matched. With `--doc`, against that document. |
176
- | `ekwo match <transaction> <document>` | A bank statement line pays a document, through `settle_from_statement()`. |
176
+ | `ekwo match <transaction> <document>… [--amount <amount>]… [--extra "account=<code>,amount=<amount>,tax=<code>"]…` | A bank statement line pays documents, through `settle_from_statement()`: `--amount`, once per document, says how much settles each; `--extra` books the fee or the charges the line is net of in the same entry, and alone settles a bank charge. The line balances to the cent or is refused. |
177
177
  | `ekwo import <source> <file>…` | Books kept elsewhere — `trial-balance`, `fec`, `journal-items`, `journal-report`, `transaction-journal`, `xaf` — whole or not at all, through `import_books()`, with a correspondence of accounts and journals you save and give back; or a bank statement — `camt.053`, `coda`, `cfonb120` — as pending lines. `--dry-run` rehearses. See [taking over books](#taking-over-books-ekwo-import). |
178
178
  | `ekwo doc list` / `show` | What exists, and with `--unpaid` what is posted and still owed. See [keeping books](#keeping-books). |
179
179
  | `ekwo doc pdf <document>` | The PDF of a sale invoice or credit note, rendered from the books by [`@ekwo-ai/invoice-pdf`](../formats/invoice-pdf/README.md), with the logo the company names by URL (fetched by this command, from a public http(s) address only). Written to `--out`, or under its own name in the current directory. `--factur-x` embeds the CII of a posted sale and makes it a Factur-X PDF/A-3 (the rules it breaks end on exit 1); `--page-size Letter`; `--labels <file.json>` gives the words of the layout in the document's language. `ekwo document` is the whole word of `ekwo doc`. Records nothing. |
180
180
  | `ekwo proof stamp` / `upgrade` / `verify` | The sha256 of a filed file — a declaration, the annual accounts of a financial year, a document — committed to Bitcoin through the public OpenTimestamps calendars; only the hash leaves. `upgrade` completes the pending proofs of the company and is made to run on a schedule; `verify` checks a file against its proof and the block it names, and `--out` writes the `.ots` file any verifier reads. See [`docs/filing-proofs.md`](../../docs/filing-proofs.md). |
181
181
  | `ekwo einvoice validate` / `issue` / `status` / `list` | The electronic invoice of a posted sale, in the format its country pack declares, through the `einvoicing` module: `validate` writes it and names the rules it breaks (exit 1 if any), `issue` keeps it and with `--send --to <directory>` writes it to that folder, `status --refresh` follows it. See [`modules/einvoicing`](../../modules/einvoicing/README.md). |
182
+ | `ekwo einvoice fiscalise` / `fiscalisation` | The fiscal record a country's fiscalisation regime requires for every invoice — VERI*FACTU is one — written by the brick its pack names and chained after the last record of the invoicing system described by `--system <file>` (or `EKWO_FISCAL_SYSTEM`); `--dry-run` writes it and chains nothing, a record that breaks a rule is never chained (exit 1). `fiscalisation` walks each chain, and names the records still to send and the posted sales without a record. |
183
+ | `ekwo peppol validate <file>` / `lookup <participant>` | The Peppol network, with no installation and no sign-in. `validate` reads a UBL invoice or credit note as it arrived and names the rules it breaks — the arithmetic of EN 16931 and the electronic addresses of both parties — with exit 1 if any; nothing is booked. `lookup` checks a participant identifier (`0208:0999999922`, `iso6523-actorid-upis::…` or a symbolic scheme) and asks the DNS of the Service Metadata Locator whether it is registered, and with which Service Metadata Publisher; `--test` asks the acceptance network. Exit 0 only for a registered participant. See [`@ekwo-ai/peppol-ubl`](../formats/peppol-ubl/README.md#participant-identifiers-and-the-sml). |
182
184
 
183
185
  There is no `eject`, because there is nothing to eject from. The schema is in
184
186
  your database, the migrations are in the repository under AGPL-3.0, and
@@ -262,6 +264,7 @@ ekwo post job-7
262
264
  ekwo cancel job-7 # back to draft where the country allows it, else the credit note
263
265
  ekwo payment record --doc job-7 --amount 1750.00 --date 2026-06-30 --bank-account <id> --ref bank-1
264
266
  ekwo match <bank transaction id> job-9
267
+ ekwo match <payout id> job-9 --extra "account=<fee account>,amount=3.00,tax=<tax code>"
265
268
  ekwo doc list --unpaid --since 2026-06-01 --json
266
269
  ```
267
270
 
@@ -468,6 +471,7 @@ Every command takes `--json`; see [what a command answers](#what-a-command-answe
468
471
  | `EKWO_ACCESS_TOKEN` | The same, with a session token already in hand. It is not renewed. |
469
472
  | `EKWO_PROFILE` | `--profile` |
470
473
  | `EKWO_EINVOICE_DIRECTORY` | `--to`, for `ekwo einvoice`. The MCP server reads it too. |
474
+ | `EKWO_FISCAL_SYSTEM` | `--system`, as the JSON itself, for `ekwo einvoice fiscalise`. The MCP server reads it too. |
471
475
  | `EKWO_CONFIG_DIR` | Where profiles and sessions are kept. |
472
476
  | `EKWO_REGISTRY_URL` | `--registry-url`. Default `https://api.ekwo.ai/v1/registrations`. |
473
477
  | `EKWO_NO_REGISTER_INVITE` | Set to `1` to hide the invitation to register that `ekwo init` and `ekwo status` show on an installation that is not registered. The MCP server reads it too. |
@@ -517,7 +521,7 @@ exactly six fields:
517
521
  "organization": "My Organisation",
518
522
  "country": "<cc>",
519
523
  "edition": "community",
520
- "schema_version": "0.12.2",
524
+ "schema_version": "0.14.0",
521
525
  "contact_email": "you@example.com"
522
526
  }
523
527
  ```