@celsoft/platform 0.16.0 → 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/dist/schema.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { sql } from "drizzle-orm";
2
- import { boolean, check, foreignKey, index, integer, jsonb, pgTable, primaryKey, smallint, text, timestamp, unique, uuid } from "drizzle-orm/pg-core";
3
- // Better Auth's tables, with its core, admin and organization fields, transcribed from
2
+ import { boolean, check, foreignKey, index, integer, jsonb, pgTable, smallint, text, timestamp, unique, uniqueIndex, uuid } from "drizzle-orm/pg-core";
3
+ // Better Auth's tables, with its core and admin fields, transcribed from
4
4
  // getAuthTables() in the installed version; schema.test.ts fails when they drift apart.
5
5
  // Property keys stay camelCase because the Drizzle adapter matches Better Auth's field names
6
6
  // against them; column names are snake_case like the rest of an app's tables.
@@ -33,8 +33,6 @@ export const session = pgTable("session", {
33
33
  .notNull()
34
34
  .references(() => user.id, { onDelete: "cascade" }),
35
35
  impersonatedBy: uuid("impersonated_by"),
36
- activeOrganizationId: uuid("active_organization_id"),
37
- activeTeamId: uuid("active_team_id"),
38
36
  ...timestamps(),
39
37
  }, (t) => [index("session_user_id_idx").on(t.userId)]);
40
38
  export const account = pgTable("account", {
@@ -60,62 +58,6 @@ export const verification = pgTable("verification", {
60
58
  expiresAt: timestamp("expires_at", { withTimezone: true }).notNull(),
61
59
  ...timestamps(),
62
60
  }, (t) => [index("verification_identifier_idx").on(t.identifier)]);
63
- // Organization tables exist whenever auth is on, so turning organizations off and on again
64
- // only hides and restores routes; no migration ever drops their data.
65
- export const organization = pgTable("organization", {
66
- id: id(),
67
- name: text("name").notNull(),
68
- slug: text("slug").notNull().unique(),
69
- logo: text("logo"),
70
- metadata: text("metadata"),
71
- ...timestamps(),
72
- });
73
- export const member = pgTable("member", {
74
- id: id(),
75
- organizationId: uuid("organization_id")
76
- .notNull()
77
- .references(() => organization.id, { onDelete: "cascade" }),
78
- userId: uuid("user_id")
79
- .notNull()
80
- .references(() => user.id, { onDelete: "cascade" }),
81
- role: text("role").notNull().default("member"),
82
- ...timestamps(),
83
- }, (t) => [index("member_organization_id_idx").on(t.organizationId), index("member_user_id_idx").on(t.userId)]);
84
- export const invitation = pgTable("invitation", {
85
- id: id(),
86
- organizationId: uuid("organization_id")
87
- .notNull()
88
- .references(() => organization.id, { onDelete: "cascade" }),
89
- email: text("email").notNull(),
90
- role: text("role"),
91
- teamId: uuid("team_id"),
92
- status: text("status").notNull().default("pending"),
93
- expiresAt: timestamp("expires_at", { withTimezone: true }).notNull(),
94
- inviterId: uuid("inviter_id")
95
- .notNull()
96
- .references(() => user.id, { onDelete: "cascade" }),
97
- ...timestamps(),
98
- }, (t) => [index("invitation_organization_id_idx").on(t.organizationId), index("invitation_email_idx").on(t.email)]);
99
- export const team = pgTable("team", {
100
- id: id(),
101
- name: text("name").notNull(),
102
- memberCount: integer("member_count").notNull().default(0),
103
- organizationId: uuid("organization_id")
104
- .notNull()
105
- .references(() => organization.id, { onDelete: "cascade" }),
106
- ...timestamps(),
107
- }, (t) => [index("team_organization_id_idx").on(t.organizationId)]);
108
- export const teamMember = pgTable("team_member", {
109
- id: id(),
110
- teamId: uuid("team_id")
111
- .notNull()
112
- .references(() => team.id, { onDelete: "cascade" }),
113
- userId: uuid("user_id")
114
- .notNull()
115
- .references(() => user.id, { onDelete: "cascade" }),
116
- membershipKey: text("membership_key").unique(),
117
- ...timestamps(),
118
- }, (t) => [index("team_member_team_id_idx").on(t.teamId), index("team_member_user_id_idx").on(t.userId)]);
119
61
  // The JWT and MCP plugins: signing keys, and the OAuth clients, tokens and consents of AI clients
120
62
  // that sign in to an app's MCP server. Installed for every app with auth, used when MCP is on.
121
63
  const at = (name) => timestamp(name, { withTimezone: true });
@@ -267,38 +209,107 @@ export const oauthClientAssertion = pgTable("oauth_client_assertion", {
267
209
  id: text("id").primaryKey(),
268
210
  expiresAt: at("expires_at").notNull(),
269
211
  });
270
- // Access: the item tree, grants and links behind app.access; see docs/design.md, App Code, Access.
271
- // Levels are stored as numbers, 1 read to 5 manage. An item's parent is another item, or the user
272
- // or organization at the top of its chain, named by the reserved kinds "user" and "organization".
273
- export const accessItem = pgTable("access_item", {
274
- kind: text("kind").notNull(),
275
- id: text("id").notNull(),
276
- parentKind: text("parent_kind").notNull(),
277
- parentId: text("parent_id").notNull(),
278
- restricted: boolean("restricted").notNull().default(false),
212
+ // The platform's own organizations, replacing Better Auth's organization plugin so no role checks
213
+ // run beside control points; see docs/design.md, Auth behavior, Organizations. Members carry no
214
+ // roles: each organization's built-in Admins team, the one team with `admins` set, does what an
215
+ // admin role would. The tables exist whenever auth is on, so turning organizations off and on
216
+ // again only hides and restores routes.
217
+ export const organization = pgTable("organization", {
218
+ id: id(),
219
+ name: text("name").notNull(),
220
+ slug: text("slug").notNull().unique(),
221
+ ...timestamps(),
222
+ });
223
+ export const member = pgTable("member", {
224
+ id: id(),
225
+ organizationId: uuid("organization_id")
226
+ .notNull()
227
+ .references(() => organization.id, { onDelete: "cascade" }),
228
+ userId: uuid("user_id")
229
+ .notNull()
230
+ .references(() => user.id, { onDelete: "cascade" }),
231
+ ...timestamps(),
232
+ }, (t) => [unique("member_once").on(t.organizationId, t.userId), index("member_user_id_idx").on(t.userId)]);
233
+ export const team = pgTable("team", {
234
+ id: id(),
235
+ name: text("name").notNull(),
236
+ organizationId: uuid("organization_id")
237
+ .notNull()
238
+ .references(() => organization.id, { onDelete: "cascade" }),
239
+ admins: boolean("admins").notNull().default(false),
240
+ ...timestamps(),
241
+ }, (t) => [index("team_organization_id_idx").on(t.organizationId), uniqueIndex("team_one_admins").on(t.organizationId).where(sql `${t.admins}`)]);
242
+ // A team member is also a member of the team's organization; leaving the organization leaves its
243
+ // teams in the same transaction, and checks ignore a team row whose user left anyway.
244
+ export const teamMember = pgTable("team_member", {
245
+ id: id(),
246
+ teamId: uuid("team_id")
247
+ .notNull()
248
+ .references(() => team.id, { onDelete: "cascade" }),
249
+ userId: uuid("user_id")
250
+ .notNull()
251
+ .references(() => user.id, { onDelete: "cascade" }),
252
+ ...timestamps(),
253
+ }, (t) => [unique("team_member_once").on(t.teamId, t.userId), index("team_member_user_id_idx").on(t.userId)]);
254
+ // Accepted by a signed-in user whose confirmed email matches, so the id in the link is no secret.
255
+ export const invitation = pgTable("invitation", {
256
+ id: id(),
257
+ organizationId: uuid("organization_id")
258
+ .notNull()
259
+ .references(() => organization.id, { onDelete: "cascade" }),
260
+ email: text("email").notNull(),
261
+ teamId: uuid("team_id").references(() => team.id, { onDelete: "cascade" }),
262
+ expiresAt: at("expires_at").notNull(),
263
+ inviterId: uuid("inviter_id").references(() => user.id, { onDelete: "set null" }),
264
+ ...timestamps(),
265
+ }, (t) => [unique("invitation_once").on(t.organizationId, t.email), index("invitation_email_idx").on(t.email), check("invitation_email_lower", sql `${t.email} = lower(${t.email})`)]);
266
+ // Access: control points, their grants and links behind app.access; see docs/design.md, App Code,
267
+ // Access. Levels are stored as numbers, 1 read to 5 manage. A point's id is the resource it gates,
268
+ // any globally unique text the app chooses; ids starting `organization:` and `team:` belong to the
269
+ // points the platform makes for each organization and team. `organization_id` is the organization
270
+ // a point sits under, kept on every point so admins and the across-organization rule need no walk.
271
+ export const accessPoint = pgTable("access_point", {
272
+ id: text("id").primaryKey(),
273
+ parentId: text("parent_id").references(() => accessPoint.id, { onDelete: "cascade" }),
274
+ organizationId: uuid("organization_id").references(() => organization.id, { onDelete: "cascade" }),
275
+ forOrganization: uuid("for_organization")
276
+ .unique()
277
+ .references(() => organization.id, { onDelete: "cascade" }),
278
+ forTeam: uuid("for_team")
279
+ .unique()
280
+ .references(() => team.id, { onDelete: "cascade" }),
281
+ inherits: boolean("inherits").notNull().default(false),
282
+ static: boolean("static").notNull().default(false),
283
+ createdBy: uuid("created_by").references(() => user.id, { onDelete: "set null" }),
279
284
  ...timestamps(),
280
285
  }, (t) => [
281
- primaryKey({ columns: [t.kind, t.id] }),
282
- index("access_item_parent_idx").on(t.parentKind, t.parentId),
283
- check("access_item_kind", sql `${t.kind} not in ('user', 'organization')`),
286
+ index("access_point_parent_idx").on(t.parentId),
287
+ index("access_point_organization_idx").on(t.organizationId),
288
+ check("access_point_id", sql `length(${t.id}) between 1 and 200`),
289
+ check("access_point_not_own_parent", sql `${t.parentId} is distinct from ${t.id}`),
290
+ check("access_point_organization_id", sql `(${t.forOrganization} is not null) = (${t.id} like 'organization:%')`),
291
+ check("access_point_team_id", sql `(${t.forTeam} is not null) = (${t.id} like 'team:%')`),
284
292
  ]);
285
293
  export const accessGrant = pgTable("access_grant", {
286
294
  id: id(),
287
- itemKind: text("item_kind").notNull(),
288
- itemId: text("item_id").notNull(),
295
+ pointId: text("point_id")
296
+ .notNull()
297
+ .references(() => accessPoint.id, { onDelete: "cascade" }),
289
298
  userId: uuid("user_id").references(() => user.id, { onDelete: "cascade" }),
290
299
  teamId: uuid("team_id").references(() => team.id, { onDelete: "cascade" }),
291
300
  organizationId: uuid("organization_id").references(() => organization.id, { onDelete: "cascade" }),
301
+ everyone: boolean("everyone"),
292
302
  email: text("email"),
293
303
  level: smallint("level").notNull(),
294
304
  grantedBy: uuid("granted_by").references(() => user.id, { onDelete: "set null" }),
295
305
  ...timestamps(),
296
306
  }, (t) => [
297
- foreignKey({ columns: [t.itemKind, t.itemId], foreignColumns: [accessItem.kind, accessItem.id], name: "access_grant_item_fk" }).onDelete("cascade"),
298
- unique("access_grant_once").on(t.itemKind, t.itemId, t.userId, t.teamId, t.organizationId, t.email).nullsNotDistinct(),
299
- check("access_grant_one_grantee", sql `num_nonnulls(${t.userId}, ${t.teamId}, ${t.organizationId}, ${t.email}) = 1`),
307
+ unique("access_grant_once").on(t.pointId, t.userId, t.teamId, t.organizationId, t.everyone, t.email).nullsNotDistinct(),
308
+ check("access_grant_one_grantee", sql `num_nonnulls(${t.userId}, ${t.teamId}, ${t.organizationId}, ${t.everyone}, ${t.email}) = 1`),
300
309
  check("access_grant_level", sql `${t.level} between 1 and 5`),
310
+ check("access_grant_everyone", sql `${t.everyone} is null or (${t.everyone} and ${t.level} = 1)`),
301
311
  check("access_grant_email_lower", sql `${t.email} = lower(${t.email})`),
312
+ index("access_grant_point_idx").on(t.pointId),
302
313
  index("access_grant_user_idx").on(t.userId),
303
314
  index("access_grant_team_idx").on(t.teamId),
304
315
  index("access_grant_organization_idx").on(t.organizationId),
@@ -307,28 +318,20 @@ export const accessGrant = pgTable("access_grant", {
307
318
  // Only a hash of each link's token is stored, so the database never holds a working link.
308
319
  export const accessLink = pgTable("access_link", {
309
320
  id: id(),
310
- itemKind: text("item_kind").notNull(),
311
- itemId: text("item_id").notNull(),
321
+ pointId: text("point_id")
322
+ .notNull()
323
+ .references(() => accessPoint.id, { onDelete: "cascade" }),
312
324
  tokenHash: text("token_hash").notNull().unique(),
313
325
  level: smallint("level").notNull(),
314
326
  expiresAt: at("expires_at"),
315
327
  createdBy: uuid("created_by").references(() => user.id, { onDelete: "set null" }),
316
328
  ...timestamps(),
317
- }, (t) => [
318
- foreignKey({ columns: [t.itemKind, t.itemId], foreignColumns: [accessItem.kind, accessItem.id], name: "access_link_item_fk" }).onDelete("cascade"),
319
- check("access_link_level", sql `${t.level} between 1 and 3`),
320
- index("access_link_item_idx").on(t.itemKind, t.itemId),
321
- ]);
329
+ }, (t) => [check("access_link_level", sql `${t.level} between 1 and 3`), index("access_link_point_idx").on(t.pointId)]);
322
330
  export const authSchema = {
323
331
  user,
324
332
  session,
325
333
  account,
326
334
  verification,
327
- organization,
328
- member,
329
- invitation,
330
- team,
331
- teamMember,
332
335
  jwks,
333
336
  oauthClient,
334
337
  oauthResource,
@@ -338,5 +341,6 @@ export const authSchema = {
338
341
  oauthConsent,
339
342
  oauthClientAssertion,
340
343
  };
341
- export const accessSchema = { accessItem, accessGrant, accessLink };
344
+ export const organizationSchema = { organization, member, team, teamMember, invitation };
345
+ export const accessSchema = { accessPoint, accessGrant, accessLink };
342
346
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celsoft/platform",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "Deploy apps to Cloudflare Workers with Neon Postgres, prod on push and a preview per pull request",
5
5
  "license": "MIT",
6
6
  "repository": {
package/schema.json CHANGED
@@ -85,7 +85,7 @@
85
85
  "properties": {
86
86
  "organizations": {
87
87
  "default": false,
88
- "description": "Organizations with members, roles, invitations and teams",
88
+ "description": "Organizations with members, invitations, teams and a built-in Admins team",
89
89
  "type": "boolean"
90
90
  }
91
91
  },
@@ -56,7 +56,7 @@ export default defineApp(undefined, {
56
56
  2. **Checks:** bad input is a 400; an output that does not match its schema is a 500, logged.
57
57
  3. **Errors:** throw `EndpointError(status, message)`; a thrown `Response`, as `requireUser()` throws, keeps its status.
58
58
  4. **Access:** every `/api/` path needs a signed-in user except under `/api/public/`; MCP calls always carry one.
59
- 5. **Item access:** with `access` on, `access: { kind: "note", id: "id", level: "write" }` in the definition checks the caller's level on the item whose id is in that input field before the function runs, and answers 404 when it falls short.
59
+ 5. **Point access:** with `access` on, every endpoint says `access: { point: "id", level: "write" }`, naming the input field or a function of the input that gives the control point, or `access: "none"`; the caller needs that level or gets a 404, over the API and MCP alike, and the function never runs.
60
60
  6. **Frontend calls:** a bundled frontend imports `call` from `.platform/client` and calls `call("getNote", { id })`, typed from the endpoints.
61
61
  7. **Hand-written routes:** the `handler` (first argument, or `undefined`) takes every request no endpoint answers, for uploads, downloads and streaming.
62
62
 
@@ -64,24 +64,36 @@ export default defineApp(undefined, {
64
64
 
65
65
  Each request gets `app`: `db` (Drizzle, typed with `schema`), `auth`, `session()`, `requireUser()`,
66
66
  `files` (R2, folders), `email` (`app.email.send(...)`), `live` (`app.live.publish(room, message)`),
67
- `access` (with `access` on), `env` and `waitUntil`. Each is created on first use.
67
+ `access` (with `access` on), `organizations` (with organizations on), `env` and `waitUntil`. Each is created on first use.
68
68
 
69
69
  ## Access
70
70
 
71
- With `"access": true`, the platform keeps who may do what to the app's items:
71
+ With `"access": true`, the platform keeps who may do what to the app's resources through control points:
72
72
 
73
- 1. **Place every item** when it is created or moved, in the same transaction as the app's own row:
74
- `await app.db.transaction(async (tx) => { ...insert...; await app.access.in(tx).place("note", id, "folder", folderId); })`.
75
- The top of a tree is `"user", userId` or `"organization", orgId`; an item never placed is reachable by nobody.
73
+ 1. **A point per resource:** `await app.db.transaction(async (tx) => { ...insert...; await app.access.in(tx).create(row.id, { parent, inherit }); })`.
74
+ The id is the resource's own id, any globally unique string; ids starting `organization:` or `team:` are the platform's. Whoever creates it gets `manage`; creating needs a signed-in user and, with a `parent`, `create` on it.
76
75
  2. **Levels:** `read` < `create` < `write` < `delete` < `manage`; each includes those below.
77
- 3. **Where they come from:** owning the item (`manage`), organization roles (member `read`, admin `delete`, owner `manage`), grants, and links; the highest wins, and a level on a folder covers everything inside it.
78
- 4. **Grants:** `app.access.share(kind, id, { user | team | organization | email }, level, { email: { path: "/notes/7" } })`, `revoke`, `grants`, `sharedWithMe(kind)`; sharing needs `manage`, and a new grant to a person emails them a link to `path` (`email: false` sends none).
79
- 5. **Links:** `app.access.link(kind, id, level, { expires })` returns a token, at most `write`; build addresses such as `/#note=7&link=<token>`, and `call()` sends the `#link=` token as the `x-access-link` header. Endpoints a signed-out link holder uses go under `/api/public/`.
80
- 6. **Restrict:** `app.access.restrict(kind, id)` stops levels from above reaching an item, except organization owners and admins.
81
- 7. **Check:** `can(kind, id, level)` and `require(kind, id, level)` in hand-written routes; `require` throws a 404.
82
- 8. **Lists:** `.where(await app.access.accessible("note", "read", notes.id))` filters in the same query.
83
- 9. **Delete:** `app.access.remove(kind, id)` needs `delete` and refuses an item that still has children.
84
- 10. **Kinds:** lowercase names the app chooses, never `user` or `organization`; ids are strings.
76
+ 3. **Principals:** a person (`{ user }` or a confirmed `{ email }`), `{ team }`, `{ organization }` and `{ everyone: true }` (read only, signed in or not).
77
+ 4. **Inheritance:** with `inherit: true` a point also uses its parent's grants, up to the first point that does not inherit. Each principal stops at its nearest grant and the highest wins, so a grant to a person on a note can lower that person there, while a grant to a whole organization never lowers its teams.
78
+ 5. **Grants:** `app.access.grant(point, to, level, { email: { path: "/notes/7" } })`, `revoke`, `grants`, `inherit(point, true)`; all need `manage`. A new grant to a person emails them a link to `path` (`email: false` sends none). Points under an organization take only its own teams and organization, plus people and Everyone.
79
+ 6. **Links:** `app.access.link(point, level, { expires })` returns a token, at most `write`, good on that one point only; build addresses such as `/#note=7&link=<token>`, and `call()` sends the `#link=` token as the `x-access-link` header. Endpoints a signed-out link holder uses go under `/api/public/`.
80
+ 7. **Endpoints:** with access on, every endpoint declares `access: { point: "id", level: "read" }`, `access: { point: (input) => organizationPoint(input.org), level: "create" }` or `access: "none"`; the app refuses every request until each one does.
81
+ 8. **Check:** `app.access.check(point)` returns the level or throws a 404 below `read`; `require(point, level)` and `can(point, level)` in hand-written routes; `point(id)` returns its parent and whether it inherits.
82
+ 9. **Lists:** `.where(await app.access.readable(notes.id))` or `allows(level, column)` filters in the same query.
83
+ 10. **Move and delete:** `move(point, parent)` needs `manage` and `create` on the new parent; `remove(point)` needs `delete` and returns the ids of the point and everything under it, so delete those rows in the same transaction.
84
+ 11. **Static points:** `defineApp(handler, { access: { points: { settings: { grants: [{ to: { email: "boss@x.com" }, level: "manage" }] } } } })`, applied at every start; their grants change only in code.
85
+ 12. **Organizations:** each has the point `organizationPoint(id)` granting its members `read`, and each team `teamPoint(id)` granting the team `write`; members of the built-in Admins team get `manage` on everything under their organization.
86
+ 13. **As the app:** `app.access.asApp()` passes every check, for work no person asked for; never use it for a request's own data.
87
+
88
+ ## Organizations
89
+
90
+ With `"auth": { "organizations": true }`, the platform keeps organizations, teams, members and invitations itself, with no roles:
91
+
92
+ 1. **In code:** `app.organizations` has `create`, `list`, `get`, `rename`, `remove`, `requireMember`, `members`, `removeMember`, `invite`, `invitations`, `revokeInvitation`, `accept`, `myInvitations`, `decline`, `teams`, `team`, `createTeam`, `renameTeam`, `removeTeam`, `teamMembers`, `addToTeam` and `removeFromTeam`.
93
+ 2. **From browsers:** the same under `/api/platform/`: `organizations`, `organizations/:id`, `organizations/:id/members`, `organizations/:id/invitations`, `invitations` (the caller's own), `invitations/:id/accept`, `invitations/:id` (decline), `organizations/:id/teams`, `teams/:id` and `teams/:id/members`.
94
+ 3. **Who may:** reading needs `read` on the organization's point, renaming `write`, deleting `delete`, inviting and removing others `manage`, creating teams `create`; a team's members need `manage` on its point. Anyone may leave, except the last admin.
95
+ 4. **Admins:** the creator is the first member of the Admins team; add others with `addToTeam(adminsTeamId, userId)`.
96
+ 5. **Invitations:** emailed with a link to `/login?invitation=<id>`, accepted by whoever signs in with that confirmed address; an invitation can name a team.
85
97
 
86
98
  ## Tables and migrations
87
99
 
@@ -95,11 +107,11 @@ With `"access": true`, the platform keeps who may do what to the app's items:
95
107
 
96
108
  1. **`database`:** a Neon project id; prod, each preview and `dev` get their own branch.
97
109
  2. **`email`:** sending from `noreply@<hostname>` through Resend; previews and `dev` capture email instead of sending, except that previews really email the addresses in `"previews": { "sendEmailTo": ["*@yourcompany.com"] }`, so testers can confirm accounts and receive sharing emails.
98
- 3. **`auth`:** sign-up and sign-in at `/login`, `/signup`, `/forgot`, `/reset`; `{ "organizations": true }` adds teams. Needs `database` and `email`.
110
+ 3. **`auth`:** sign-up and sign-in at `/login`, `/signup`, `/forgot`, `/reset`; `{ "organizations": true }` adds organizations and teams; see Organizations above. Needs `database` and `email`.
99
111
  4. **`files`:** `app.files` in an R2 bucket; previews share one bucket under their PR's folder.
100
112
  5. **`live`:** rooms over WebSockets; `live: { message: schema, canJoin, canSend, onMessage }` in `defineApp`; browsers use `live()` from `@celsoft/platform/live`. Joining and sending are refused unless `canJoin` and `canSend` say yes.
101
- 6. **`mcp`:** serves endpoints with `serve` including `"mcp"` at `/mcp` to AI clients that sign in with OAuth. Needs `auth`.
102
- 7. **`access`:** `app.access`, for who may do what to the app's items; see Access above. Needs `auth`.
113
+ 6. **`mcp`:** serves endpoints with `serve` including `"mcp"` at `/mcp` to AI clients that sign in with OAuth, with the same access checks as the API. Needs `auth`.
114
+ 7. **`access`:** `app.access`, for who may do what to the app's resources; see Access above. Needs `auth`.
103
115
 
104
116
  ## Commands
105
117