Files
financial/app/investor/package.json
dev 36b0395e47 feat(investor): G-22 Stage 10.2 (documents) + 10.3 (inbox) + 10.6 (tax)
Documents (Stage 10.2):
* Tree view of doc categories — subscription agreements, K-1s, 1099s,
  annual reports, side letters, offering memoranda, custody statements.
* Per-doc rows: filename, type, issuer, issued-date, size, SHA-256,
  view / download / share-with-advisor actions.
* Every body fetch re-verifies the SHA-256 against the WORM manifest in
  the browser (lib/worm/sha256.ts), throwing IntegrityError on mismatch.
* Scoped, time-limited 'share with advisor' link generator
  (lib/gateway/document.ts share()) — every grant is audit-logged.
* Free-text + category filtering on the index.

Inbox (Stage 10.3):
* Notice list filtered by type — regulatory / dividend / proxy /
  corp-action / distribution / KYC-refresh / general — backed by
  captable/comms Notice records.
* Detail panel with full body + structured action button (proxy vote
  hand-off, KYC refresh hand-off to Agent C, ack-required regulatory
  disclosures).
* Optimistic mark-read on selection; acknowledge fires an attestation
  event to the audit trail.
* Shared useUnreadCount hook (lib/notifications) drives the sidebar
  inbox badge; 60s polling, paused when tab hidden. Other portal
  sections can consume the same hook for their own badge needs.

Tax (Stage 10.6):
* Per-tax-year folder of every 1099 family form (DIV / B / INT / MISC /
  NEC / OID / K / R) plus Schedule K-1, pulled from captable/tax
  (which routes 1099 e-file through IRIS + FIRE adapters).
* Cost-basis report — per-lot detail with FIFO / LIFO / specific-lot
  toggle; renders short-term + long-term aggregates and wash-sale flag.
* 8949-ready CSV export — server-side preferred, client-side fallback
  (costBasisToCsv8949 in lib/gateway/tax.ts) so the export still works
  offline / air-gapped.
* Per-form: view / download with SHA-256 verification (same WORM path
  as documents).
* 'Send to my CPA' — scoped, time-limited link bundling selected forms
  plus optional cost-basis report. Audit-logged.

Cross-cutting:
* Three new gateway clients on top of Agent A's transport: document,
  comms, tax — all enforce investor scope through the operator gateway
  identity headers.
* Sidebar wired to useUnreadCount for the live inbox badge.
* 13 G-22b tests added — 5 WORM SHA-256 golden vectors, 5 CSV-8949
  serializer cases, 1 page render each for documents / inbox / tax.
  All passing.

Source-of-design: Lux-Prior-IP
Source-ref: transfer@6f327c998e159728c5e1692f6771554a344279cd, captable@3bcf2a834ae821e8dd96a1d9bc21ec8b30012c92
Clean-Team-Member: dev-agent (G-22b documents + inbox + tax)
Signed-off-by: dev <[email protected]>
2026-05-26 21:00:38 -07:00

39 lines
1.0 KiB
JSON

{
"name": "@luxbank/investor",
"version": "0.1.1",
"private": true,
"scripts": {
"dev": "next dev -p 3002",
"build": "next build",
"export": "STATIC_EXPORT=true next build",
"deploy:cf": "pnpm export && wrangler pages deploy out --project-name=lux-financial-investor",
"start": "next start -p 3002",
"lint": "next lint",
"test": "vitest run",
"test:watch": "vitest"
},
"dependencies": {
"@luxbank/brand": "workspace:*",
"@luxfi/logo": "^1.0.0",
"geist": "^1.7.0",
"jose": "^5.9.6",
"next": "^15.1.6",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"@tailwindcss/postcss": "^4.0.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.1.0",
"@types/node": "^20",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^4.3.4",
"happy-dom": "^15.11.7",
"postcss": "^8.4.49",
"tailwindcss": "^4.0.0",
"typescript": "^5.5.4",
"vitest": "^2.1.8"
}
}