@odla-ai/chapter 0.15.1 → 0.17.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 +31 -16
- package/dist/chunk-HB2HUJCW.js +642 -0
- package/dist/chunk-HB2HUJCW.js.map +1 -0
- package/dist/index.cjs +154 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +95 -1
- package/dist/index.d.ts +95 -1
- package/dist/index.js +154 -6
- package/dist/index.js.map +1 -1
- package/dist/ui/admin/index.d.ts +74 -5
- package/dist/ui/admin/index.js +17 -3
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +17 -3
- package/dist/worker/index.cjs +820 -23
- package/dist/worker/index.cjs.map +1 -1
- package/dist/worker/index.d.cts +40 -0
- package/dist/worker/index.d.ts +40 -0
- package/dist/worker/index.js +820 -23
- package/dist/worker/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-YO6DY5DL.js +0 -281
- package/dist/chunk-YO6DY5DL.js.map +0 -1
package/README.md
CHANGED
|
@@ -235,22 +235,37 @@ These bite silently — a smoke test won't catch them:
|
|
|
235
235
|
- **`--legacy-peer-deps` is a diagnostic, not a setting.** It suppresses exactly
|
|
236
236
|
the peer conflict that tells you a pair is unsupported. If you need it, find out
|
|
237
237
|
why first.
|
|
238
|
-
- **The admin surface
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
238
|
+
- **The admin operational surface ships (0.16.0).** `/api/admin/*` is now a full
|
|
239
|
+
membership-operations API, admin-gated (`verifyUser` + `isAdmin`):
|
|
240
|
+
- **Roster/identity:** `GET /people` (union of `$users` + applications by email,
|
|
241
|
+
roles from `clerkListUsers`), `GET /people/access`, `POST /people/role`,
|
|
242
|
+
`POST /crm/sync` (backfill/reproject).
|
|
243
|
+
- **Pipeline/meetings:** `GET /dashboard` (flow counts, stage counts + weekly
|
|
244
|
+
delta, agenda, live revenue), `GET /meetings` (reconciled agenda),
|
|
245
|
+
`GET/PUT /scheduling`, `POST /meetings/:id/{reschedule,cancel}`,
|
|
246
|
+
`PATCH /applications/:id`.
|
|
247
|
+
- **Money:** `GET /billing` (applications ⋈ live Stripe subs; `truncated` flags a
|
|
248
|
+
>100 page instead of losing rows; `billingReady:false` when no Stripe key is
|
|
249
|
+
vaulted), `POST /applications/:id/{approve,refund}`.
|
|
250
|
+
- **Email:** `GET/PUT /group/email`, `GET /email/log`, `POST /email/test`,
|
|
251
|
+
`GET /people/:id/comms` (sent mail + reconstructed calendar invitations).
|
|
252
|
+
|
|
253
|
+
Two behaviours are **config, not code** — the mechanics are chapter's, the
|
|
254
|
+
decisions are yours (same model as `sends`):
|
|
255
|
+
|
|
256
|
+
```ts
|
|
257
|
+
defineChapter({ operations: {
|
|
258
|
+
onApprove: { promoteTo: "member", send: "onboardingInvite" }, // promoteTo defaults to the rung below admin; either can be false
|
|
259
|
+
refund: { allowedFrom: ["paid_pending_vetting"], cancelSubscription: true }, // allowedFrom validated against the pipeline
|
|
260
|
+
}});
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
The escalation rules (super-admin tier, self-demotion lockout) are **not** seams
|
|
264
|
+
— `canChangeRole` package-enforces them so a site can't weaken them. `approve`
|
|
265
|
+
is the caller `onboardingInvite` was missing.
|
|
266
|
+
- **The server-side Clerk primitives are exported too** — for host routes beyond
|
|
267
|
+
the built-in `/people/role`. Beside
|
|
268
|
+
`createClerkUser`/`createClerkInvitation`/`canChangeRole`, chapter exports
|
|
254
269
|
the odla→Clerk write half: `clerkGetUserByEmail`, `clerkGetUser`, `clerkListUsers`
|
|
255
270
|
(auto-paginated — never a silent 100-user cap), and `clerkSetRole`. Two
|
|
256
271
|
load-bearing semantics: an absent `public_metadata.role` reads as the lowest rung
|