ekwo-os 0.9.0 → 0.11.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.
- package/README.md +42 -18
- package/dist/assets/expected-objects.json +1925 -196
- package/dist/assets/migrations/20260929094126_a_setting_nobody_owns.sql +167 -0
- package/dist/assets/migrations/20260929103358_a_trail_no_client_rewrites.sql +190 -0
- package/dist/assets/migrations/20260929141500_a_bank_account_is_not_an_iban.sql +120 -0
- package/dist/assets/migrations/20260929151700_an_archive_is_read_under_the_names_of_today.sql +541 -0
- package/dist/assets/migrations/20260929170005_a_member_leaves.sql +241 -0
- package/dist/assets/migrations/20260930103815_a_key_holds_what_its_issuer_holds.sql +447 -0
- package/dist/assets/migrations/20261002065918_schema_version_0_10_0.sql +46 -0
- package/dist/assets/migrations/20261005090000_a_guard_a_key_walks_past.sql +270 -0
- package/dist/assets/migrations/20261005160858_a_line_says_when_it_is_declared.sql +130 -0
- package/dist/assets/migrations/20261005160859_the_declared_day_of_lines_already_written.sql +58 -0
- package/dist/assets/migrations/20261005160900_a_period_is_read_through_its_index.sql +914 -0
- package/dist/assets/migrations/20261007041207_a_key_writes_as_its_issuer.sql +782 -0
- package/dist/assets/migrations/20261007060225_a_shared_instance_keeps_its_tenants_apart.sql +940 -0
- package/dist/assets/migrations/20261007113412_a_tenant_measures_nothing_of_another.sql +2199 -0
- package/dist/assets/migrations/20261007160000_a_person_joins_a_company_of_their_own_accord.sql +63 -0
- package/dist/assets/migrations/20261007180000_schema_version_0_11_0.sql +47 -0
- package/dist/assets/modules/budgets/supabase/migrations/20261007113413_budgets_rows_name_their_own_company.sql +29 -0
- package/dist/assets/modules/corporate-tax/module.json +12 -0
- package/dist/assets/modules/corporate-tax/supabase/migrations/20260930104417_corporate_tax.sql +1746 -0
- package/dist/assets/modules/corporate-tax/supabase/migrations/20261007041208_a_key_writes_as_its_issuer.sql +294 -0
- package/dist/assets/modules/corporate-tax/supabase/migrations/20261007113415_tax_rows_name_their_own_company.sql +29 -0
- package/dist/assets/modules/{assets → fixed-assets}/module.json +4 -4
- package/dist/assets/modules/fixed-assets/supabase/migrations/20260929151742_assets_schema_is_fixed_assets.sql +1081 -0
- package/dist/assets/modules/fixed-assets/supabase/migrations/20261007113414_assets_rows_name_their_own_company.sql +29 -0
- package/dist/assets/modules/schema/module.1.json +3 -3
- package/dist/assets/seed/104_pack_do.sql +3 -2
- package/dist/assets/seed/105_pack_cr.sql +3 -2
- package/dist/assets/seed/106_pack_gt.sql +3 -2
- package/dist/assets/seed/108_pack_in.sql +3 -2
- package/dist/assets/seed/10_pack_be.sql +15 -2
- package/dist/assets/seed/110_pack_ge.sql +3 -2
- package/dist/assets/seed/111_pack_md.sql +3 -2
- package/dist/assets/seed/112_pack_rs.sql +3 -2
- package/dist/assets/seed/113_pack_ba.sql +3 -2
- package/dist/assets/seed/114_pack_al.sql +3 -2
- package/dist/assets/seed/115_pack_mk.sql +3 -2
- package/dist/assets/seed/116_pack_me.sql +3 -2
- package/dist/assets/seed/117_pack_bh.sql +3 -2
- package/dist/assets/seed/118_pack_om.sql +1 -1
- package/dist/assets/seed/11_pack_fr.sql +13 -2
- package/dist/assets/seed/120_pack_tz.sql +1 -1
- package/dist/assets/seed/121_pack_ug.sql +1 -1
- package/dist/assets/seed/122_pack_rw.sql +1 -1
- package/dist/assets/seed/123_pack_xk.sql +3 -2
- package/dist/assets/seed/124_pack_kz.sql +3 -2
- package/dist/assets/seed/12_pack_lu.sql +3 -2
- package/dist/assets/seed/13_pack_ee.sql +3 -2
- package/dist/assets/seed/14_pack_gb.sql +25 -2
- package/dist/assets/seed/15_pack_us.sql +19 -2
- package/dist/assets/seed/16_pack_ie.sql +3 -2
- package/dist/assets/seed/17_pack_nl.sql +22 -3
- package/dist/assets/seed/18_pack_de.sql +10 -3
- package/dist/assets/seed/19_pack_es.sql +10 -3
- package/dist/assets/seed/20_pack_sn.sql +6 -3
- package/dist/assets/seed/21_pack_ci.sql +4 -3
- package/dist/assets/seed/22_pack_bj.sql +4 -3
- package/dist/assets/seed/23_pack_bf.sql +4 -3
- package/dist/assets/seed/24_pack_cm.sql +4 -3
- package/dist/assets/seed/25_pack_cf.sql +4 -3
- package/dist/assets/seed/26_pack_km.sql +4 -3
- package/dist/assets/seed/27_pack_cg.sql +4 -3
- package/dist/assets/seed/28_pack_ga.sql +4 -3
- package/dist/assets/seed/29_pack_gn.sql +2 -2
- package/dist/assets/seed/30_pack_gw.sql +4 -3
- package/dist/assets/seed/31_pack_gq.sql +4 -3
- package/dist/assets/seed/32_pack_ml.sql +4 -3
- package/dist/assets/seed/33_pack_ne.sql +4 -3
- package/dist/assets/seed/34_pack_cd.sql +2 -2
- package/dist/assets/seed/35_pack_td.sql +4 -3
- package/dist/assets/seed/36_pack_tg.sql +4 -3
- package/dist/assets/seed/37_pack_it.sql +3 -2
- package/dist/assets/seed/40_pack_au.sql +15 -2
- package/dist/assets/seed/41_pack_nz.sql +1 -1
- package/dist/assets/seed/42_pack_mx.sql +16 -3
- package/dist/assets/seed/43_pack_pt.sql +3 -2
- package/dist/assets/seed/44_pack_ph.sql +1 -1
- package/dist/assets/seed/49_pack_ng.sql +8 -4
- package/dist/assets/seed/50_pack_sg.sql +10 -2
- package/dist/assets/seed/51_pack_jp.sql +3 -2
- package/dist/assets/seed/52_pack_hk.sql +1 -1
- package/dist/assets/seed/56_pack_th.sql +1 -1
- package/dist/assets/seed/57_pack_ua.sql +3 -2
- package/dist/assets/seed/58_pack_ca.sql +3 -2
- package/dist/assets/seed/60_pack_ae.sql +13 -2
- package/dist/assets/seed/61_pack_se.sql +3 -2
- package/dist/assets/seed/62_pack_ch.sql +3 -2
- package/dist/assets/seed/63_pack_at.sql +3 -2
- package/dist/assets/seed/64_pack_pl.sql +3 -2
- package/dist/assets/seed/65_pack_dk.sql +3 -2
- package/dist/assets/seed/66_pack_no.sql +3 -2
- package/dist/assets/seed/67_pack_fi.sql +3 -2
- package/dist/assets/seed/68_pack_cz.sql +3 -2
- package/dist/assets/seed/69_pack_sk.sql +3 -2
- package/dist/assets/seed/70_pack_hu.sql +3 -2
- package/dist/assets/seed/71_pack_sa.sql +3 -2
- package/dist/assets/seed/72_pack_ro.sql +3 -2
- package/dist/assets/seed/73_pack_bg.sql +3 -2
- package/dist/assets/seed/74_pack_hr.sql +3 -2
- package/dist/assets/seed/75_pack_si.sql +3 -2
- package/dist/assets/seed/76_pack_gr.sql +3 -2
- package/dist/assets/seed/77_pack_lt.sql +3 -2
- package/dist/assets/seed/78_pack_lv.sql +3 -2
- package/dist/assets/seed/79_pack_cy.sql +3 -2
- package/dist/assets/seed/80_pack_mt.sql +3 -2
- package/dist/assets/seed/81_pack_is.sql +3 -2
- package/dist/assets/seed/82_pack_tr.sql +3 -2
- package/dist/assets/seed/83_pack_eg.sql +3 -2
- package/dist/assets/seed/85_pack_tn.sql +3 -2
- package/dist/assets/seed/87_pack_il.sql +3 -2
- package/dist/assets/seed/88_pack_za.sql +18 -2
- package/dist/assets/seed/89_pack_ke.sql +1 -1
- package/dist/assets/seed/modules/corporate_tax/10_pack_be.sql +127 -0
- package/dist/assets/seed/modules/corporate_tax/11_pack_fr.sql +113 -0
- package/dist/assets/seed/modules/corporate_tax/14_pack_gb.sql +100 -0
- package/dist/assets/seed/modules/corporate_tax/15_pack_us.sql +97 -0
- package/dist/assets/seed/modules/corporate_tax/17_pack_nl.sql +82 -0
- package/dist/assets/seed/modules/corporate_tax/18_pack_de.sql +90 -0
- package/dist/assets/seed/modules/corporate_tax/19_pack_es.sql +111 -0
- package/dist/assets/seed/modules/corporate_tax/20_pack_sn.sql +111 -0
- package/dist/assets/seed/modules/corporate_tax/40_pack_au.sql +94 -0
- package/dist/assets/seed/modules/corporate_tax/42_pack_mx.sql +82 -0
- package/dist/assets/seed/modules/corporate_tax/49_pack_ng.sql +96 -0
- package/dist/assets/seed/modules/corporate_tax/50_pack_sg.sql +97 -0
- package/dist/assets/seed/modules/corporate_tax/60_pack_ae.sql +84 -0
- package/dist/assets/seed/modules/corporate_tax/88_pack_za.sql +87 -0
- package/dist/assets/seed/modules/{assets → fixed_assets}/10_pack_be.sql +6 -6
- package/dist/assets/seed/modules/{assets → fixed_assets}/11_pack_fr.sql +6 -6
- package/dist/assets/seed/modules/{assets → fixed_assets}/14_pack_gb.sql +6 -6
- package/dist/assets/seed/modules/{assets → fixed_assets}/15_pack_us.sql +6 -6
- package/dist/assets/seed/modules/fixed_assets/17_pack_nl.sql +59 -0
- package/dist/assets/seed/modules/fixed_assets/18_pack_de.sql +56 -0
- package/dist/assets/seed/modules/fixed_assets/19_pack_es.sql +66 -0
- package/dist/assets/seed/modules/fixed_assets/20_pack_sn.sql +57 -0
- package/dist/assets/seed/modules/fixed_assets/40_pack_au.sql +57 -0
- package/dist/assets/seed/modules/fixed_assets/42_pack_mx.sql +53 -0
- package/dist/assets/seed/modules/fixed_assets/49_pack_ng.sql +57 -0
- package/dist/assets/seed/modules/fixed_assets/50_pack_sg.sql +57 -0
- package/dist/assets/seed/modules/fixed_assets/60_pack_ae.sql +57 -0
- package/dist/assets/seed/modules/fixed_assets/88_pack_za.sql +58 -0
- package/dist/bootstrap.d.ts +26 -6
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +34 -15
- package/dist/bootstrap.js.map +1 -1
- package/dist/bundle.d.ts +4 -3
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +4 -3
- package/dist/bundle.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +32 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/company.d.ts +3 -1
- package/dist/commands/company.d.ts.map +1 -1
- package/dist/commands/company.js +56 -1
- package/dist/commands/company.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +75 -21
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/module.d.ts.map +1 -1
- package/dist/commands/module.js +17 -1
- package/dist/commands/module.js.map +1 -1
- package/dist/commands/pack.d.ts.map +1 -1
- package/dist/commands/pack.js +13 -4
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +7 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/doctor.d.ts +22 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +112 -8
- package/dist/doctor.js.map +1 -1
- package/dist/grants.d.ts.map +1 -1
- package/dist/grants.js +15 -0
- package/dist/grants.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/invitation.d.ts +21 -0
- package/dist/invitation.d.ts.map +1 -0
- package/dist/invitation.js +27 -0
- package/dist/invitation.js.map +1 -0
- package/dist/module/read.d.ts +20 -7
- package/dist/module/read.d.ts.map +1 -1
- package/dist/module/read.js +41 -14
- package/dist/module/read.js.map +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +3 -1
- package/dist/output.js.map +1 -1
- package/dist/pack/compile.d.ts +21 -7
- package/dist/pack/compile.d.ts.map +1 -1
- package/dist/pack/compile.js +58 -27
- package/dist/pack/compile.js.map +1 -1
- package/dist/pack/corporate-tax.d.ts +164 -0
- package/dist/pack/corporate-tax.d.ts.map +1 -0
- package/dist/pack/corporate-tax.js +517 -0
- package/dist/pack/corporate-tax.js.map +1 -0
- package/dist/pack/describe.d.ts +9 -4
- package/dist/pack/describe.d.ts.map +1 -1
- package/dist/pack/describe.js +5 -3
- package/dist/pack/describe.js.map +1 -1
- package/dist/pack/read.d.ts +25 -11
- package/dist/pack/read.d.ts.map +1 -1
- package/dist/pack/read.js +112 -33
- package/dist/pack/read.js.map +1 -1
- package/dist/pack/territories.d.ts +1 -1
- package/dist/pack/territories.js +0 -0
- package/dist/pack/vat-codes.d.ts +18 -18
- package/dist/pack/vat-codes.js +24 -24
- package/dist/pack/vat-codes.js.map +1 -1
- package/dist/schema.d.ts +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +1 -1
- package/dist/schema.js.map +1 -1
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js +3 -1
- package/dist/sql.js.map +1 -1
- package/package.json +3 -3
- package/schema/output.1.json +46 -2
- /package/dist/assets/modules/{assets → fixed-assets}/supabase/migrations/20260913081447_assets.sql +0 -0
- /package/dist/assets/modules/{assets → fixed-assets}/supabase/migrations/20260913104234_foreign_key_indexes.sql +0 -0
- /package/dist/assets/modules/{assets → fixed-assets}/supabase/migrations/20260913104500_assets_capabilities.sql +0 -0
- /package/dist/assets/modules/{assets → fixed-assets}/supabase/migrations/20260914122100_assets_round_at_the_currency.sql +0 -0
- /package/dist/assets/modules/{assets → fixed-assets}/supabase/migrations/20260914145012_assets_accounts_in_use.sql +0 -0
- /package/dist/assets/modules/{assets → fixed-assets}/supabase/migrations/20260914151530_assets_grants_its_own_rights.sql +0 -0
- /package/dist/assets/modules/{assets → fixed-assets}/supabase/migrations/20260918113912_assets_client_reads.sql +0 -0
- /package/dist/assets/modules/{assets → fixed-assets}/supabase/migrations/20260918150801_assets_leave_with_the_company.sql +0 -0
- /package/dist/assets/modules/{assets → fixed-assets}/supabase/migrations/20260922162600_assets_reference_for_a_known_caller.sql +0 -0
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ either.
|
|
|
60
60
|
It asks for the connection string, the country, the chart of accounts and
|
|
61
61
|
the language where the pack offers a choice, your organisation, the
|
|
62
62
|
currency, the first company, the address of the first administrator and —
|
|
63
|
-
optionally — the
|
|
63
|
+
optionally — the identifier of your main bank account (an IBAN, a routing number and an account number, a sort code… whatever your country's banks use), then does the rest. Five
|
|
64
64
|
to ten seconds on a free project. Nothing is preselected for you on the
|
|
65
65
|
three questions whose wrong answer is expensive: the country, the chart and
|
|
66
66
|
the language.
|
|
@@ -90,7 +90,7 @@ npx -y ekwo-os@latest init \
|
|
|
90
90
|
--admin-email "you@example.com" \
|
|
91
91
|
--admin-password "a-long-password" \
|
|
92
92
|
--fiscal-year 2026 \
|
|
93
|
-
--
|
|
93
|
+
--bank-identifier "BE71096123456769" \
|
|
94
94
|
--yes
|
|
95
95
|
```
|
|
96
96
|
|
|
@@ -151,7 +151,7 @@ first administrator, `init_instance()` and `claim_instance_admin()`, and
|
|
|
151
151
|
nothing else. The instance row records no country. A flag that only describes
|
|
152
152
|
a company — `--country`, `--company`, `--chart`, `--language`, `--currency`,
|
|
153
153
|
`--fiscal-year`, `--fiscal-year-start`, `--vat-period`, `--filing-period`,
|
|
154
|
-
`--iban
|
|
154
|
+
`--bank-identifier` (and its old spelling `--iban`), `--bic`, `--bank-name` — is refused with it, exit code 2, before the
|
|
155
155
|
database is touched: it would describe nothing.
|
|
156
156
|
|
|
157
157
|
**`ekwo company new` is `create_company()`**, the function the `create_company`
|
|
@@ -274,7 +274,7 @@ and read by a person.
|
|
|
274
274
|
| 1 | Applies `supabase/migrations/*.sql` in order | Recorded in `supabase_migrations.schema_migrations`, the Supabase CLI's own history table, so `supabase db push` and `ekwo migrate` stay interchangeable |
|
|
275
275
|
| 2 | Applies every reference seed of `supabase/seed/`, in file-name order: `00_currencies.sql`, `00_territories.sql`, `05_framework_generic.sql`, then one `<n>_pack_<cc>.sql` per country pack, in the order of the number each pack declares | The currencies, the territories the tax rules name, the country-less financial statements every chart falls back on, and every country pack of the release — so a company in any of them can be created later without installing anything. They are exactly the seeds `supabase/config.toml` lists (a list `ekwo pack build` writes from `packs/`), so `supabase db push` installs the same set; a test compares both paths row by row. `90_demo_company.sql` is sample data and is never applied here |
|
|
276
276
|
| 3 | Creates the first administrator through the Supabase Auth admin API | See below: a database connection cannot be a signed-in user |
|
|
277
|
-
| 4 | `init_instance()`, `claim_instance_admin()`, the company, `company_members` as owner, `install_country_template()`, the first financial year, and the bank account when an
|
|
277
|
+
| 4 | `init_instance()`, `claim_instance_admin()`, the company, `company_members` as owner, `install_country_template()`, the first financial year, and the bank account when an identifier was given | The six steps of the root README, in the same order, plus the one thing nobody can derive |
|
|
278
278
|
| 5 | Writes `ekwo.json` | The installation: project URL and schema version. Nothing else, ever — no country, since each company carries its own. A file written by 0.6 or earlier also names a country; it is still read, and the key is taken for nothing |
|
|
279
279
|
| 6 | Asks whether to register with Ekwo | The default answer is no, and no is a supported answer forever |
|
|
280
280
|
|
|
@@ -305,13 +305,13 @@ instead if the account already exists, and no key is needed.
|
|
|
305
305
|
|---|---|
|
|
306
306
|
| `ekwo init` | The whole installation, interactive or not: the socle's migrations, the reference seeds, then the modules', as `ekwo migrate` applies them. `--no-company` stops before the first company: see [several countries](#several-countries-in-one-installation-init---no-company). |
|
|
307
307
|
| `ekwo migrate` | Applies the migrations this release adds, after showing the gap — the socle's, then the modules'. Re-applies the reference seeds, which are idempotent. `--no-modules` leaves the modules alone. |
|
|
308
|
-
| `ekwo status` | Schema version installed against available, pending migrations, the instance, its administrators, the country packs it holds and, per company, the pack version it copied. Exits 1 when something is pending. |
|
|
308
|
+
| `ekwo status` | Schema version installed against available, pending migrations, the instance, its administrators, the country packs it holds and, per company, the pack version it copied. On an installation that is not registered, a short invitation to [register](#registering-with-ekwo). Exits 1 when something is pending. |
|
|
309
309
|
| `ekwo doctor` | Every object this release defines and every privilege it grants, against what the database holds; row level security on every table, a policy on every protected table, no pending migration, no membership pointing at a deleted user, every company with a bank account, statements that tie to their lines, posted entries that balance. Exits 1 on a problem, 0 on warnings. |
|
|
310
|
-
| `ekwo register` | Opt in to security advisories and release notes. Also the retry when the announcement did not go through. |
|
|
310
|
+
| `ekwo register` | Opt in to security advisories and release notes. Optional: everything works the same without it. Also the retry when the announcement did not go through. |
|
|
311
311
|
| `ekwo unregister` | Opt back out. Clears the address and the date on the instance row. |
|
|
312
312
|
| `ekwo demo` | Loads the sample company. Fictional data, explicit request only. |
|
|
313
313
|
| `ekwo module` | What is installed beside the socle, applies a module's migrations and its country seeds, and turns one on or off for a company. |
|
|
314
|
-
| `ekwo company` | `new` creates a company in its own country, through `create_company()`, and `list` shows the companies held here. One company leaves an installation with its books — `export` writes an archive anybody can read, as a member under row level security — and arrives in another one alive: `import` takes it in whole or not at all. |
|
|
314
|
+
| `ekwo company` | `new` creates a company in its own country, through `create_company()`, and `list` shows the companies held here. `show` reads the company in use as the person signed in — its financial years, lock dates, journals and accounts by role — the same document as the MCP tool `get_company`. One company leaves an installation with its books — `export` writes an archive anybody can read, as a member under row level security — and arrives in another one alive: `import` takes it in whole or not at all. |
|
|
315
315
|
| `ekwo pack` | Compiles a country pack into its seed, and refuses a seed that is no longer the output of its pack. Runs in a checkout of the repository only. |
|
|
316
316
|
| `ekwo login` | Signs in to an instance as yourself and keeps the session, in your own configuration directory. See [acting as a person](#acting-as-a-person-login-use-whoami). |
|
|
317
317
|
| `ekwo logout` | Ends that session, here and on the instance. |
|
|
@@ -671,13 +671,15 @@ for a statement. [`docs/import.md`](../../docs/import.md) is the long form.
|
|
|
671
671
|
|
|
672
672
|
## `ekwo module`
|
|
673
673
|
|
|
674
|
-
A module is a Postgres schema beside the socle — `
|
|
675
|
-
`budgets` for a plan against the ledger
|
|
676
|
-
|
|
674
|
+
A module is a Postgres schema beside the socle — `fixed_assets` for fixed assets,
|
|
675
|
+
`budgets` for a plan against the ledger, `tax` for the corporate income tax
|
|
676
|
+
estimated from the books. Its migrations travel with this package, and
|
|
677
|
+
`ekwo migrate` applies them by default.
|
|
677
678
|
|
|
678
679
|
```sh
|
|
679
680
|
ekwo module list # what this release carries, and what the database holds
|
|
680
681
|
ekwo module migrate [<code>] # the migrations, and the country seeds they need
|
|
682
|
+
# (the code, `assets`, or the folder, `fixed-assets`)
|
|
681
683
|
ekwo module enable assets --company "…" # turn it on for one company
|
|
682
684
|
ekwo module disable assets --company "…" # turn it off; nothing it wrote is deleted
|
|
683
685
|
```
|
|
@@ -693,6 +695,14 @@ schemas. That is a setting of the API, not of the database, so `ekwo module
|
|
|
693
695
|
enable` prints the line to add — Supabase dashboard → Project Settings → API,
|
|
694
696
|
or `[api] schemas` in `supabase/config.toml`.
|
|
695
697
|
|
|
698
|
+
**When a release renames a module's schema**, `ekwo migrate` applies the
|
|
699
|
+
rename and says so: the exposed schemas of the project still name the old one,
|
|
700
|
+
and only the operator can change that. The fixed assets module moved from
|
|
701
|
+
`assets` to `fixed_assets` in its version 2.0.0 — replace one with the other in
|
|
702
|
+
Project Settings → API. Its code, `assets`, is what `ekwo module` takes, and
|
|
703
|
+
never changes; [`modules/fixed-assets/README.md`](../../modules/fixed-assets/README.md#upgrading-from-version-1-of-the-module)
|
|
704
|
+
is the whole upgrade.
|
|
705
|
+
|
|
696
706
|
**Before `supabase db push`**, run `ekwo migrate --no-modules`. The Supabase
|
|
697
707
|
CLI knows the socle's migration files and not a module's, so it would report
|
|
698
708
|
them as history it has no file for.
|
|
@@ -819,7 +829,8 @@ statements, the sentences the country requires on an invoice, the translations,
|
|
|
819
829
|
and a year of books with the figures it produces. The compiler turns one into
|
|
820
830
|
`supabase/seed/<n>_pack_<cc>.sql`, which is committed — and, where a pack
|
|
821
831
|
carries a section for a module, into
|
|
822
|
-
`supabase/seed/modules/<
|
|
832
|
+
`supabase/seed/modules/<section>/<n>_pack_<cc>.sql` — `fixed_assets` for the
|
|
833
|
+
fixed assets module — applied by the module
|
|
823
834
|
migration runner and by nothing else.
|
|
824
835
|
|
|
825
836
|
```sh
|
|
@@ -920,8 +931,8 @@ dashboard under Connect → Session pooler, is the form that is never derived.
|
|
|
920
931
|
| `--fiscal-year-start <date>` | The day that year opens, as `YYYY-MM-DD`. Needed only where the pack names no usual opening month (`defaults.fiscal_year_default`). |
|
|
921
932
|
| `--currency <code>` | Currency of the company. Defaults to the pack's `defaults.currency`. |
|
|
922
933
|
| `--language <xx>` | Language of the books, two letters. Defaults to `country_defaults.language_default`, which the pack fills. It decides which label of the pack lands on each account; the others are kept in `name_i18n`. |
|
|
923
|
-
| `--
|
|
924
|
-
| `--bic <bic>` | Optional, on that account. |
|
|
934
|
+
| `--bank-identifier <value>` | Creates the main bank account, wired to the bank journal and its ledger account. What it is written in is the country's: an IBAN, an ABA routing number and an account number (`"021000021 123456789"`), a sort code and an account number, a BSB, an IFSC, a CLABE… `ekwo pack describe <cc>` names it, and it is checked. A country whose pack declares none is asked for an account number as the bank wrote it. `--iban` is the old spelling and is refused where the banks do not use IBANs. Omitted, no bank account is created and `ekwo doctor` says so. |
|
|
935
|
+
| `--bic <bic>` | Optional, on that account, for a bank that has one. |
|
|
925
936
|
| `--bank-name <name>` | Optional. It also names the account in the books. |
|
|
926
937
|
| `--demo` | Also load the sample company. |
|
|
927
938
|
| `--register` | Register without being asked. `--register-email` sets the address. |
|
|
@@ -951,6 +962,7 @@ Every command takes `--json`; see [what a command answers](#what-a-command-answe
|
|
|
951
962
|
| `EKWO_PROFILE` | `--profile` |
|
|
952
963
|
| `EKWO_CONFIG_DIR` | Where profiles and sessions are kept. |
|
|
953
964
|
| `EKWO_REGISTRY_URL` | `--registry-url`. Default `https://api.ekwo.ai/v1/registrations`. |
|
|
965
|
+
| `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. |
|
|
954
966
|
| `NO_COLOR` | Plain output. |
|
|
955
967
|
|
|
956
968
|
See [`.env.example`](../../.env.example) at the root of the repository.
|
|
@@ -979,12 +991,24 @@ database the same way.
|
|
|
979
991
|
|
|
980
992
|
## Registering with Ekwo
|
|
981
993
|
|
|
982
|
-
At the end of `ekwo init
|
|
994
|
+
At the end of `ekwo init`, in a terminal, you are asked:
|
|
995
|
+
|
|
996
|
+
> Register this installation with Ekwo, for security advisories that concern
|
|
997
|
+
> your version and release notes? Everything works the same without it.
|
|
983
998
|
|
|
984
|
-
|
|
985
|
-
> release notes?
|
|
999
|
+
The default answer is no, and no is supported forever.
|
|
986
1000
|
|
|
987
|
-
|
|
1001
|
+
Where nobody is asked — `--yes`, `--json`, a script — the end of `ekwo init`
|
|
1002
|
+
shows a short invitation instead, after everything else, and `ekwo status`
|
|
1003
|
+
shows the same one on an installation that is not registered: what registering
|
|
1004
|
+
gives, the six fields it sends and the one command,
|
|
1005
|
+
`npx -y ekwo-os@latest register --email <your address>`. Under `--json` it is
|
|
1006
|
+
the field `registration` of the document, `{ "registered": false,
|
|
1007
|
+
"invitation": { … } }`, and the standard output stays one document. It never
|
|
1008
|
+
waits for an answer, it disappears once the installation is registered, and
|
|
1009
|
+
`EKWO_NO_REGISTER_INVITE=1` hides it. The MCP server gives its agent one line
|
|
1010
|
+
to relay to the person, once, on the same terms; see
|
|
1011
|
+
[`docs/agents.md`](../../docs/agents.md#registering-the-installation). Community works
|
|
988
1012
|
unregistered: nothing in the schema and nothing in this CLI reads
|
|
989
1013
|
`contact_email` or `registered_at` to decide what you may do, and `edition`
|
|
990
1014
|
gates no feature.
|
|
@@ -1065,7 +1089,7 @@ node packages/cli/dist/bin.js init \
|
|
|
1065
1089
|
--country BE --chart default --language fr \
|
|
1066
1090
|
--org "Scratch" --company "Scratch BV" \
|
|
1067
1091
|
--admin-email "you@example.com" --admin-password "a-long-password" \
|
|
1068
|
-
--fiscal-year 2026 --
|
|
1092
|
+
--fiscal-year 2026 --bank-identifier "BE71096123456769" --yes
|
|
1069
1093
|
|
|
1070
1094
|
# 2. Everything should be green, and nothing pending.
|
|
1071
1095
|
node packages/cli/dist/bin.js status --db-url "$URL"
|