50382553c2
Add the missing Tauri command layer for the node-families contract and switch
the wallet's real provider onto it (node-families-real-ipc groups 1-3, docs).
Rust command layer (src-tauri/src/operations/families/):
- execute.rs: 9 state-changing commands over NodeFamiliesSigningClient, auto/
simulated gas; create_family attaches create_family_fee as base-denom funds.
Returns TransactionExecuteResult (family_events omitted per D2 - the provider
refreshAll()s reads after every execute).
- query.rs: 9 reads over NodeFamiliesQueryClient, normalised at the IPC boundary
to the wallet shapes in src/types/families.ts: base Coin -> display DecCoin
(paid_fee, create_family_fee), per-page contract envelopes -> { items,
start_next_after }, cw_serde tagged FamilyInvitationStatus -> { kind, at }.
get_family_config reads raw contract state at the "config" key (no smart query).
- Registered all 18 commands in main.rs; added the contract-common path dep.
- cargo build + cargo clippy clean.
Provider wiring:
- Replace the controlledNodeIds = [] stub in FamiliesContextProvider with a
derivation from useBondingContext().bondedNode ([nodeId]/[mixId]/[]); wrap the
/family route in BondingContextProvider (it is per-route, not global). D3.
- Fix the requests/families.ts execute bindings to pass camelCase arg keys
(Tauri maps JS camelCase -> Rust snake_case params).
Types reconciliation + drift guard:
- Fix the generated FamilyInvitationStatus `at` field (bigint -> number) and
export the 18 generated family types from the @nymproject/types barrel.
- Add src/types/families.contract-guard.ts: tsc-checked assertions locking the
wallet families types against the ts-rs-generated contract types; IPC-normalised
fields excluded with documented reasons.
Docs: real-IPC path + guarded sandbox write-flow procedure in e2e/README.md;
design D3 one-bonded-node-per-account note; parent change 9.4/9.5 cross-ref;
update_family arg shape confirmed against the contract (6.2).
Families Jest suites green; contract guard passes. Remaining sandbox read/write
smokes (3.3, groups 4-5) need a wired native build + sandbox + the funded test
account, tracked in tasks.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>