@haverstack/core 0.33.0 → 0.36.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.
Files changed (48) hide show
  1. package/README.md +1 -1
  2. package/dist/access.d.ts +39 -34
  3. package/dist/access.d.ts.map +1 -1
  4. package/dist/access.js +94 -68
  5. package/dist/access.js.map +1 -1
  6. package/dist/changes.d.ts +74 -58
  7. package/dist/changes.d.ts.map +1 -1
  8. package/dist/changes.js +115 -101
  9. package/dist/changes.js.map +1 -1
  10. package/dist/combine.d.ts.map +1 -1
  11. package/dist/combine.js +7 -0
  12. package/dist/combine.js.map +1 -1
  13. package/dist/grants.d.ts +78 -33
  14. package/dist/grants.d.ts.map +1 -1
  15. package/dist/grants.js +164 -72
  16. package/dist/grants.js.map +1 -1
  17. package/dist/index.d.ts +3 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/query-validation.d.ts +30 -1
  21. package/dist/query-validation.d.ts.map +1 -1
  22. package/dist/query-validation.js +128 -2
  23. package/dist/query-validation.js.map +1 -1
  24. package/dist/record-changes.d.ts +77 -57
  25. package/dist/record-changes.d.ts.map +1 -1
  26. package/dist/record-changes.js +153 -89
  27. package/dist/record-changes.js.map +1 -1
  28. package/dist/scoped-stack.d.ts +120 -120
  29. package/dist/scoped-stack.d.ts.map +1 -1
  30. package/dist/scoped-stack.js +210 -190
  31. package/dist/scoped-stack.js.map +1 -1
  32. package/dist/stack.d.ts +178 -168
  33. package/dist/stack.d.ts.map +1 -1
  34. package/dist/stack.js +346 -277
  35. package/dist/stack.js.map +1 -1
  36. package/dist/testing.d.ts +16 -5
  37. package/dist/testing.d.ts.map +1 -1
  38. package/dist/testing.js +124 -52
  39. package/dist/testing.js.map +1 -1
  40. package/dist/types.d.ts +155 -113
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/types.js.map +1 -1
  43. package/dist/validate.d.ts.map +1 -1
  44. package/dist/validate.js +0 -2
  45. package/dist/validate.js.map +1 -1
  46. package/dist/wire-record.d.ts.map +1 -1
  47. package/dist/wire-record.js.map +1 -1
  48. package/package.json +1 -1
package/dist/stack.d.ts CHANGED
@@ -13,8 +13,8 @@
13
13
  *
14
14
  * Apps should never talk to a StackAdapter directly.
15
15
  */
16
- import type { StackRecord, StackType, TypeSchema, TypeId, StackAdapter, StackQuery, QueryResult, Association, Permission, Migration, RecordVersion, StackFeatures, GrantAction, AttachmentContent, FileId, EntityId, AppId, TokenSession, ActorOptions, RecordChange, RecordChanges, SubscribeOptions, Unsubscribe, JournalQuery, RecordJournalEntry } from './types.js';
17
- import type { GrantTarget } from './grants.js';
16
+ import type { StackRecord, StackType, TypeSchema, TypeId, StackAdapter, StackQuery, QueryResult, AuthorityAssociation, DataAssociation, Migration, RecordVersion, StackFeatures, GrantAction, AttachmentContent, FileId, EntityId, AppId, TokenSession, ActorOptions, RecordChange, RecordChanges, SubscribeOptions, Unsubscribe, JournalQuery, RecordJournalEntry } from './types.js';
17
+ import type { GrantQuery, GrantTarget } from './grants.js';
18
18
  import { ScopedStack } from './scoped-stack.js';
19
19
  export type CreateRecordOptions = {
20
20
  /**
@@ -34,8 +34,8 @@ export type CreateRecordOptions = {
34
34
  * reconstructing a delegated write. See StackRecord.principalId.
35
35
  */
36
36
  principalId?: EntityId;
37
- permissions?: Permission[];
38
- associations?: Association[];
37
+ permissions?: AuthorityAssociation[];
38
+ associations?: DataAssociation[];
39
39
  /**
40
40
  * Create the record already unlisted, so the create event itself is
41
41
  * withheld from the feed — there is no window where the record exists
@@ -46,16 +46,11 @@ export type CreateRecordOptions = {
46
46
  };
47
47
  /**
48
48
  * CreateRecordOptions extended with createdAt/updatedAt, for backdating a
49
- * record's clock fields on import (e.g. migrating an existing archive with
50
- * its original dates). Accepted unconditionally by unscoped Stack.create().
51
- * ScopedStack.create() accepts the same two fields, but only from the
52
- * stack owner acting alone (undelegated, authenticated as themselves) — a
53
- * grantee, or a delegated app acting for the owner, is refused, since
54
- * either could otherwise forge a sort position the same way a raw `id`
55
- * could. A server built on ScopedStack inherits this automatically: an
56
- * owner-authenticated `POST /records` may carry both fields; anyone else's
57
- * request has them ignored, as before. See docs/spec/data-model.md §
58
- * Record IDs and docs/spec/wire-format.md § Records.
49
+ * record's clock fields on import. Unscoped Stack.create() accepts them
50
+ * unconditionally; ScopedStack.create() only from the stack owner acting
51
+ * alone, since a grantee or a delegated app could otherwise forge a sort
52
+ * position the same way a raw `id` could.
53
+ * See docs/spec/data-model.md § Record IDs.
59
54
  */
60
55
  export type BackdatableCreateRecordOptions = CreateRecordOptions & {
61
56
  /**
@@ -138,6 +133,22 @@ export type DeleteRecordOptions = IfVersionOptions & {
138
133
  /** If true, permanently remove the record and all its history. Default: false */
139
134
  hard?: boolean;
140
135
  };
136
+ /**
137
+ * What a delete reports back. Information, not action: a purge never
138
+ * touches the blob store, and nothing here is deleted by having been
139
+ * named. See docs/spec/attachments.md § A purge strands the bytes it
140
+ * referenced.
141
+ */
142
+ export type DeleteResult = {
143
+ /**
144
+ * The files the purged record referenced — its attachment associations
145
+ * and its `file-ref` content fields, deduplicated. The purge removes the
146
+ * only rows naming them, so this is the caller's one chance to hold the
147
+ * argument `deleteAttachment()` takes. Empty on a soft delete, which
148
+ * strands nothing: a tombstone's references stand.
149
+ */
150
+ referencedFileIds: FileId[];
151
+ };
141
152
  export type DefineTypeOptions = {
142
153
  migratesFrom?: TypeId;
143
154
  };
@@ -165,8 +176,9 @@ export interface StackClient {
165
176
  getOwnerEntity(): Promise<StackRecord | null>;
166
177
  /**
167
178
  * Apply a change set: any combination of content patch, `parentId`,
168
- * `permissions`, `associations` and `unlisted`, in one atomic write
169
- * producing one version. Keys are read for presence, so `unlisted: false`
179
+ * `permissions`, `associations` and `unlisted`, in one atomic write —
180
+ * producing one version where it names `contentPatch`, and none where it
181
+ * doesn't. Keys are read for presence, so `unlisted: false`
170
182
  * and `parentId: null` are changes; a change set naming no key at all is
171
183
  * a StackQueryError. Under ScopedStack each key carries its own gate and
172
184
  * one refused key refuses the call.
@@ -177,14 +189,22 @@ export interface StackClient {
177
189
  patchContent(id: string, patch: Record<string, unknown | null>, opts?: IfVersionOptions): Promise<StackRecord>;
178
190
  /**
179
191
  * Add an association. Never bumps `version`/`updatedAt` and takes no
180
- * `ifVersion` — a set-add composes correctly regardless of write order,
181
- * so it needs no OCC precondition. See docs/spec/versioning.md § Version
182
- * history.
192
+ * `ifVersion` — a set-add composes regardless of write order.
193
+ * See docs/spec/versioning.md § Version history.
183
194
  */
184
- associate(id: string, association: Association): Promise<StackRecord>;
195
+ associate(id: string, association: DataAssociation): Promise<StackRecord>;
185
196
  /** Remove an association. Never bumps `version`/`updatedAt` — see associate(). */
186
- dissociate(id: string, association: Association): Promise<StackRecord>;
187
- delete(id: string, opts?: DeleteRecordOptions): Promise<void>;
197
+ dissociate(id: string, association: DataAssociation): Promise<StackRecord>;
198
+ /**
199
+ * Extend who reaches a record by one element — the record-level mirror of
200
+ * the type-level `grant()`, and the amending spelling of the
201
+ * `permissions` key, which replaces the whole set. No-bump, like
202
+ * associate(). See docs/spec/access-control.md § Record-level permissions.
203
+ */
204
+ grantAccess(id: string, permission: AuthorityAssociation): Promise<StackRecord>;
205
+ /** Withdraw one element of who reaches a record — see grantAccess(). */
206
+ revokeAccess(id: string, permission: AuthorityAssociation): Promise<StackRecord>;
207
+ delete(id: string, opts?: DeleteRecordOptions): Promise<DeleteResult>;
188
208
  undelete(id: string, opts?: IfVersionOptions): Promise<StackRecord>;
189
209
  getVersions(id: string): Promise<RecordVersion[]>;
190
210
  getVersion(id: string, version: number): Promise<RecordVersion | null>;
@@ -193,15 +213,10 @@ export interface StackClient {
193
213
  * A record's change journal, oldest first. On the mutate surface, on the
194
214
  * same footing as getVersions() — a plain reader is refused.
195
215
  *
196
- * **Local adapters only, for now.** There is no wire surface yet, so
197
- * over `APIAdapter` this throws `APIAdapterCapabilityError` against any
198
- * server, not merely one advertising no journal. It is on this interface
199
- * regardless, for the reason the adapter contract requires it rather
200
- * than making it optional: an adapter with nothing to read refuses and
201
- * names why, so an empty log always means "nothing changed" and never
202
- * "this stack does not remember". A caller deserves that refusal over a
203
- * method that isn't there. See docs/spec/versioning.md § The change
204
- * journal.
216
+ * Required of every adapter rather than optional, which is why it sits
217
+ * here beside the rest: an empty log has to mean "nothing changed"
218
+ * unconditionally, so an adapter with nothing to read refuses and names
219
+ * why instead. See docs/spec/journal.md § Reading it.
205
220
  */
206
221
  getJournal(id: string, query?: JournalQuery): Promise<RecordJournalEntry[]>;
207
222
  /**
@@ -254,7 +269,7 @@ export declare class Stack implements StackClient {
254
269
  * and nothing about work they deferred. A handler cannot fail the write:
255
270
  * there is nothing left to fail. See docs/spec/events.md § Handlers.
256
271
  */
257
- private emitChange;
272
+ private announce;
258
273
  /**
259
274
  * The actor for a `create` journal entry, read off the record as just
260
275
  * built. Create is the one journaled write that stamps the requester
@@ -389,20 +404,14 @@ export declare class Stack implements StackClient {
389
404
  */
390
405
  get(id: string, opts?: GetRecordOptions): Promise<StackRecord | null>;
391
406
  /**
392
- * Apply a change set — content patch, `parentId`, `permissions`,
393
- * `associations`, `unlisted`, in any combination — as one atomic write
394
- * producing one version and one snapshot. Keys are read for presence, so
395
- * `unlisted: false` and `parentId: null` are changes.
396
- *
397
- * Every key present is checked against the record as it stands, and a
398
- * change set already satisfied in all of them writes nothing and returns
399
- * the record unchanged. The ops the change event carries are derived
400
- * from that same comparison, so naming an aspect without moving it is
401
- * never reported as moving it.
407
+ * Apply a change set as one atomic write — see the StackClient
408
+ * declaration above for what it accepts. Atomicity is what it is for: a
409
+ * publish is one act, so nothing it names may half-land.
402
410
  *
403
- * Content is validated against the record's *current* stored type and
404
- * `typeId` never changes (see docs/spec/data-model.md § Type
405
- * migrations). See docs/spec/data-model.md § Mutations.
411
+ * Every key present is checked against the record as it stands, and a set
412
+ * already satisfied in all of them writes nothing. Content is validated
413
+ * against the record's *current* stored type; `typeId` never changes here.
414
+ * See docs/spec/data-model.md § Mutations.
406
415
  */
407
416
  mutate(id: string, changes: RecordChanges, opts?: IfVersionOptions & ActorOptions): Promise<StackRecord>;
408
417
  /**
@@ -424,52 +433,58 @@ export declare class Stack implements StackClient {
424
433
  */
425
434
  private validateChangeSet;
426
435
  /**
427
- * Refuse a write that would leave a `_group` Record with no `admin` on
428
- * its roster. Asked of the roster the write would *produce* — the one
429
- * place a change-set check reads the post-state rather than the
430
- * pre-state, because the rule is about what is left behind rather than
431
- * what the caller named.
432
- *
433
- * That framing is the whole of the self-removal question: an `admin`
434
- * removing themselves passes while another remains and is refused when
435
- * they are the last, and neither case needs to know whose entry went.
436
+ * Refuse a write that would leave a `_group` Record with no `admin` on its
437
+ * roster. Asked of the roster the write would *produce*, which is the
438
+ * whole of the self-removal question: an admin removing themselves passes
439
+ * while another remains and is refused when they are the last, without
440
+ * either case naming who is going.
436
441
  *
437
- * Lives here rather than in `ScopedStack` deliberately. Who may write a
438
- * `_group` is a permission question and belongs to the gate up there;
439
- * this is an integrity constraint on the Record, so it binds every
440
- * requester — the stack owner included, who would otherwise be the hole
441
- * that stops anything downstream relying on the invariant.
442
- * See docs/spec/identity.md § Group.
442
+ * An integrity constraint on the Record, not a permission question, so it
443
+ * lives here rather than in `ScopedStack` and binds every requester — the
444
+ * stack owner included. See docs/spec/identity.md § Group.
443
445
  */
444
446
  private assertGroupAdminRemains;
445
447
  /**
446
- * Add an association to a record. Never bumps `version`/`updatedAt` and
447
- * never snapshots — a set-add composes correctly regardless of write
448
- * order, so it needs neither the OCC `ifVersion` guards content,
449
- * `parentId` and `permissions`, nor the rollback history that guards.
450
- * See docs/spec/versioning.md § Version history.
448
+ * Add an association to a record — no-bump and no snapshot, per the
449
+ * StackClient declaration above.
451
450
  *
452
451
  * An association the record already holds, saying the same thing, is a
453
452
  * no-op; one matching an existing association's identity but naming a
454
453
  * different `attachmentRecordId` — or none, which clears the one stored —
455
- * re-points that association in place, rather than adding a second
456
- * reference to the same file. The emitted event's `associationsAdded`
457
- * carries the association as it now stands either way — a re-point's
458
- * old `attachmentRecordId` is not reported anywhere; nothing keeps it
459
- * once this call lands. See docs/spec/events.md § The event shape.
460
- * Returns the record as it now stands — unchanged on a no-op.
454
+ * re-points it in place rather than adding a second reference to the same
455
+ * file. What a re-point overwrote is kept only by the journal, on that
456
+ * entry's `repoint`. See docs/spec/journal.md § The entry.
457
+ */
458
+ associate(id: string, association: DataAssociation, opts?: ActorOptions): Promise<StackRecord>;
459
+ /**
460
+ * Remove an association from a record — see associate(). Matched by kind,
461
+ * label and payload; a no-op if not found. The emitted event names the
462
+ * association by identity only, since an attachment's
463
+ * `attachmentRecordId` describes nothing current once it is gone; the
464
+ * journal is where it survives.
461
465
  */
462
- associate(id: string, association: Association, opts?: ActorOptions): Promise<StackRecord>;
466
+ dissociate(id: string, association: DataAssociation, opts?: ActorOptions): Promise<StackRecord>;
463
467
  /**
464
- * Remove an association from a record. Never bumps `version`/`updatedAt`
465
- * — see associate(). Matched by kind, label, and payload. No-op if not
466
- * found. The emitted event's `associationsRemoved` names the association
467
- * by identity only — an attachment's `attachmentRecordId` is not
468
- * repeated there, since it no longer describes anything current. See
469
- * docs/spec/events.md § The event shape. Returns the record as it now
470
- * stands — unchanged on a no-op.
468
+ * Extend who reaches a record by one element. The spelling that survives
469
+ * two admins sharing a record at once: a `permissions` key write replaces
470
+ * the whole set, so the later of two concurrent ones drops what the
471
+ * earlier granted. No-bump, like associate(); an element the record
472
+ * already carries is a no-op.
471
473
  */
472
- dissociate(id: string, association: Association, opts?: ActorOptions): Promise<StackRecord>;
474
+ grantAccess(id: string, permission: AuthorityAssociation, opts?: ActorOptions): Promise<StackRecord>;
475
+ /**
476
+ * Withdraw one element of who reaches a record — see grantAccess() for
477
+ * why this is a verb rather than a key write. An element the record does
478
+ * not carry is a no-op. Returns the record as it now stands.
479
+ */
480
+ revokeAccess(id: string, permission: AuthorityAssociation, opts?: ActorOptions): Promise<StackRecord>;
481
+ /**
482
+ * Hold a permission set to the cross-element invariant — see
483
+ * validatePermissions() in access.ts for why it reads the post-state.
484
+ */
485
+ private assertPermissionSet;
486
+ /** The record, or the not-found refusal every mutating verb owes. */
487
+ private requireRecord;
473
488
  /**
474
489
  * The checks a *caller-named* destination owes, before the cycle walk:
475
490
  * `parentId` is a real, well-formed record id. Format first, so a
@@ -484,24 +499,18 @@ export declare class Stack implements StackClient {
484
499
  private assertParentExists;
485
500
  /**
486
501
  * Refuse an edge that would make a record its own ancestor — asked at
487
- * every site that adds one: a change set naming `parentId`, a restore
488
- * putting a container back, and a create naming both its own id and a parent. Nothing
489
- * downstream (a generator deriving a page path, a folder view) is
490
- * written to survive a cycle.
502
+ * every site that adds one. Nothing downstream (a generator deriving a
503
+ * page path, a folder view) is written to survive a cycle.
491
504
  *
492
- * Walks with the unscoped adapter deliberately: a walk that skipped the
493
- * links a requester cannot read would let a cycle be assembled through
494
- * them and break the invariant for every reader. The walk is bounded
495
- * because a chain long enough to exhaust it is already pathological.
505
+ * Walks with the unscoped adapter: a walk that skipped the links a
506
+ * requester cannot read would let a cycle be assembled through them and
507
+ * break the invariant for every reader.
496
508
  *
497
509
  * Read-then-write, so two moves racing on opposite ends of one chain can
498
- * both pass — closing that means the invariant lives in the adapter,
499
- * where the write is atomic, which puts a graph constraint in the
500
- * storage contract every adapter then implements. Same deferral as
501
- * checkBindingUnique() above. Consumers that walk `parentId` should
502
- * carry a visited set rather than trust this alone; MAX_PARENT_DEPTH is
503
- * the same posture applied here.
504
- * See docs/spec/data-model.md § Reparenting.
510
+ * both pass — the same deferral as checkBindingUnique() above, since
511
+ * closing it would put a graph constraint in the storage contract.
512
+ * Consumers walking `parentId` should carry a visited set rather than
513
+ * trust this alone. See docs/spec/data-model.md § Reparenting.
505
514
  */
506
515
  private assertNoParentCycle;
507
516
  /**
@@ -510,8 +519,22 @@ export declare class Stack implements StackClient {
510
519
  * version; a no-op if already deleted. `_config` is never deletable
511
520
  * (docs/spec.md § The `_config` record). See docs/spec/versioning.md
512
521
  * § Deletion.
522
+ *
523
+ * A purge reports the files the record referenced. It deletes none of
524
+ * them — byte lifetime is not the purged record's to decide — but it
525
+ * destroys the only rows naming them, so a caller who means to erase the
526
+ * bytes too has nowhere else to read the argument from afterwards. See
527
+ * docs/spec/attachments.md § A purge strands the bytes it referenced.
513
528
  */
514
- delete(id: string, opts?: DeleteRecordOptions & ActorOptions): Promise<void>;
529
+ delete(id: string, opts?: DeleteRecordOptions & ActorOptions): Promise<DeleteResult>;
530
+ /**
531
+ * The files a record references, by the same definition
532
+ * deleteAttachment() and the garbage sweep use: attachment associations
533
+ * and top-level `file-ref` content fields. An `_attachment` record's own
534
+ * `fileId` is a plain string by design and is not one, which is why
535
+ * purging a metadata record reports nothing — see initSystemTypes().
536
+ */
537
+ private referencedFileIds;
515
538
  /**
516
539
  * Reverse a soft delete. Idempotent — undeleting a record that isn't
517
540
  * deleted returns it unchanged. Hard-deleted records are gone, so this
@@ -535,48 +558,33 @@ export declare class Stack implements StackClient {
535
558
  private resolveBaseIdFilter;
536
559
  getVersions(id: string): Promise<RecordVersion[]>;
537
560
  /**
538
- * A record's change journal, oldest first — what moved, who moved it,
539
- * and the association deltas nothing else retains. The mutation
540
- * surface's read, on the same footing as getVersions(): a log of who
541
- * changed what, gated on current read access, would make a record's past
542
- * exactly as reachable as its present. `ScopedStack` applies that gate;
543
- * this layer is unscoped and trusted by definition.
561
+ * A record's change journal, oldest first — what moved, who moved it, and
562
+ * the association deltas nothing else retains. `ScopedStack` applies the
563
+ * mutate-surface gate; this layer is unscoped and trusted by definition.
544
564
  *
545
- * An adapter with no journal to read refuses rather than answering an
546
- * empty log — "nothing changed" and "this stack does not remember" are
547
- * not the same answer, and a caller reconstructing an association's
548
- * history cannot tell them apart. The refusal is the adapter's own, so
549
- * it can name why. See docs/spec/versioning.md § The change journal.
565
+ * A record that isn't there is StackNotFoundError, a purged one included:
566
+ * a destroyed log and an empty one are not the same answer.
567
+ * See docs/spec/journal.md § Reading it.
550
568
  */
551
569
  getJournal(id: string, query?: JournalQuery): Promise<RecordJournalEntry[]>;
552
570
  getVersion(id: string, version: number): Promise<RecordVersion | null>;
553
571
  /**
554
572
  * Restore a record to a previous version by creating a new version —
555
573
  * never rewrites history. The snapshot is validated against its own
556
- * stored typeId (not the record's current type), restores `parentId`
557
- * (absent on the snapshot is the root, so a restore always settles
558
- * containment), and restores neither associations nor permissions. See
559
- * docs/spec/versioning.md § Restore semantics.
574
+ * stored typeId, and puts back `content` and `typeId` alone: a snapshot
575
+ * carries nothing else. See docs/spec/versioning.md § Restore semantics.
560
576
  */
561
577
  restoreVersion(id: string, version: number, opts?: IfVersionOptions & ActorOptions): Promise<StackRecord>;
562
578
  /**
563
- * Commit a per-record migration: replace `content` and `typeId` together
564
- * in one step, validated against `toTypeId`'s schema exactly as
565
- * create()/mutate() validate against a type's schema. The single-record
566
- * counterpart to migrateAll() — content here is supplied by the caller
567
- * (computed client-side by the type's owning app, per
568
- * docs/spec/wire-format.md § Migration commit) rather than a registered
569
- * Migration function. Snapshots the prior state to version history, same
570
- * as mutate()/restoreVersion(), and takes the same optional `ifVersion`
571
- * precondition every version-bumping mutation takes — checked atomically
572
- * at the adapter, not here (see docs/spec/versioning.md § Optimistic
573
- * concurrency).
579
+ * Commit a per-record migration — the single-record counterpart to
580
+ * migrateAll(), with `content` supplied by the caller rather than by a
581
+ * registered Migration function. See docs/spec/wire-format.md § Migration
582
+ * commit.
574
583
  *
575
584
  * Because `content` is a full replacement written under a new `typeId`,
576
585
  * this is create-shaped at the destination *and* update-shaped over the
577
- * record as it stands, so it owes both sets of integrity checks — the
578
- * binding rules, the attachment rules, and `_config`'s. Missing either
579
- * half would make migrate a second, unguarded write path to the same
586
+ * record as it stands, so it owes both sets of integrity checks. Missing
587
+ * either half would make migrate a second, unguarded write path to a
580
588
  * state create()/mutate() refuse to reach.
581
589
  */
582
590
  commitMigration(id: string, toTypeId: TypeId, content: Record<string, unknown>, opts?: IfVersionOptions & ActorOptions): Promise<StackRecord>;
@@ -606,18 +614,14 @@ export declare class Stack implements StackClient {
606
614
  */
607
615
  private checkBindingsOnUpdate;
608
616
  /**
609
- * Bindings across a migration. `content` is a full replacement rather
610
- * than a patch, so there is no "field absent from the patch" case to
611
- * exempt: every binding field either keeps its value, moves to a new
612
- * one, or is shed by omission — and immutability refuses the last two
613
- * whichever family they happen in. Asked across the union of the two
614
- * families' binding fields, so a card can neither shed its DID by
615
- * migrating out of `_entity`/`_app` nor pick one up on the way in.
617
+ * Bindings across a migration. `content` is a full replacement, so every
618
+ * binding field either keeps its value, moves to a new one, or is shed by
619
+ * omission — and immutability refuses the last two. Asked across the
620
+ * union of both families' binding fields, so a card can neither shed its
621
+ * DID by migrating out of `_entity`/`_app` nor pick one up on the way in.
616
622
  *
617
- * Uniqueness is asked only of the destination family, which is where the
618
- * record's claim lives once the write lands, and excludes the record
619
- * itself — re-sending the value it already holds claims nothing.
620
- * See docs/spec/identity.md § DID bindings.
623
+ * Uniqueness is asked only of the destination family, excluding the
624
+ * record itself. See docs/spec/identity.md § DID bindings.
621
625
  */
622
626
  private checkBindingsOnMigrate;
623
627
  /**
@@ -626,16 +630,10 @@ export declare class Stack implements StackClient {
626
630
  * claiming one value would leave that lookup without a single answer, and
627
631
  * ambiguity is all an impersonating card needs. Enforced here rather than
628
632
  * by schema, since uniqueness is a property of the set, not of the value.
629
- * Called by the paths that can introduce a binding: create and update.
630
- *
631
- * Short-circuits on the first clash rather than materialising the family,
632
- * so a stack whose `_entity` family is larger than a single scan settles
633
- * the common case — the value is already taken — without walking the rest.
634
633
  *
635
- * Read-then-write, so two creates racing on one value can both pass.
636
- * Closing that properly means a unique index over a JSON field, which
637
- * each adapter would enforce separately — a decision about where
638
- * uniqueness lives, not a local fix.
634
+ * Read-then-write, so two creates racing on one value can both pass:
635
+ * closing that means a unique index over a JSON field, which is a
636
+ * decision about where uniqueness lives rather than a local fix.
639
637
  * See docs/spec/identity.md § DID bindings.
640
638
  */
641
639
  private checkBindingUnique;
@@ -799,9 +797,10 @@ export declare class Stack implements StackClient {
799
797
  assertOpen(): void;
800
798
  /**
801
799
  * Create _grant records authorizing entities to act on records of
802
- * specific types; null target writes a default grant (any authenticated
803
- * entity); `{ groupId }` targets a `_group` Record's roster instead of a
804
- * single entity.
800
+ * specific types. The target is the grantee the record carries:
801
+ * `{ kind: 'entity' }` for one DID, `{ kind: 'group' }` for a `_group`
802
+ * Record's roster at a role, `{ kind: 'authenticated' }` for any
803
+ * authenticated entity.
805
804
  *
806
805
  * Granting an **app** a `-own` action does not contain it the way the
807
806
  * suffix suggests: when that app acts for someone, `-own` is read as the
@@ -811,32 +810,44 @@ export declare class Stack implements StackClient {
811
810
  * needs, not the suffix that looks narrowest. See
812
811
  * docs/spec/access-control.md § Delegation: principal and subject.
813
812
  *
814
- * The grantee lives in content.granteeEntityId / content.granteeGroupId,
815
- * not record.entityId. See docs/spec/access-control.md § Type-level
816
- * grants.
813
+ * The grantee lives in content.grantee, not record.entityId. See
814
+ * docs/spec/access-control.md § Type-level grants.
817
815
  */
818
816
  grant(target: GrantTarget, grants: Array<{
819
817
  actions: GrantAction[];
820
818
  typeId: TypeId;
821
819
  }>): Promise<StackRecord[]>;
822
820
  /**
823
- * List _grant records. Omit `target` for all grants; pass null for only
824
- * default grants; pass `{ groupId }` for grants naming that exact group;
825
- * pass a specific entityId for the grants that currently apply to that
826
- * entity (ones naming them, ones naming a group they belong to, plus
827
- * every default grant) — the same resolution hasGrant() uses.
821
+ * List _grant records. Omit `query` for all grants;
822
+ * `{ kind: 'authenticated' }` for only default grants;
823
+ * `{ kind: 'group' }` for grants naming that exact group and role, or
824
+ * `role: 'any'` for every grant naming the group;
825
+ * `{ kind: 'entity' }` for the grants that currently apply to that entity
826
+ * (ones naming them, ones naming a group they belong to at a role they
827
+ * hold, plus every default grant) — the same resolution hasGrant() uses.
828
+ *
829
+ * Every arm but `entity` answers identity — what `grant()` would have
830
+ * written with the same argument. The `entity` arm answers coverage, so
831
+ * its result is not a preview of what `revoke()` would withdraw.
832
+ * See docs/spec/access-control.md § Type-level grants.
828
833
  */
829
- listGrants(target?: GrantTarget): Promise<StackRecord[]>;
834
+ listGrants(query?: GrantQuery): Promise<StackRecord[]>;
830
835
  /**
831
836
  * The inverse of grant(): soft-deletes _grant records matching `target`
832
- * (null for default grants) and each `{ typeId, actions }` pair, at the
833
- * same granularity grant() writes. A soft delete like any other — the
834
- * owner can undelete a revocation.
837
+ * and each `{ typeId, actions }` pair, at the same granularity grant()
838
+ * writes — the grantee is matched whole, role included. A soft delete
839
+ * like any other — the owner can undelete a revocation.
840
+ *
841
+ * Returns the grants it withdrew, as they stood, so a revocation that
842
+ * matched nothing says so rather than passing in silence. An empty result
843
+ * is not an error — a grant already withdrawn or never written is the
844
+ * ordinary case, and re-running a revocation has to stay safe.
845
+ * See docs/spec/access-control.md § Type-level grants.
835
846
  */
836
847
  revoke(target: GrantTarget, grants: Array<{
837
848
  actions: GrantAction[];
838
849
  typeId: TypeId;
839
- }>): Promise<void>;
850
+ }>): Promise<StackRecord[]>;
840
851
  /**
841
852
  * Validates the whole grant batch before any record is created, so a bad
842
853
  * entry fails clean rather than leaving a partial set written. Actions
@@ -864,13 +875,12 @@ export declare class Stack implements StackClient {
864
875
  private writeOptions;
865
876
  /**
866
877
  * Snapshot of a record's prior state, passed with the mutating adapter
867
- * call so snapshot and mutation land in one atomic write. `parentId` is
868
- * always present (`null` where the record has none) so restore can
869
- * distinguish "at the root" from a snapshot that omits the key entirely
870
- * ("leave as-is"). Never carries `associations` — associate()/
871
- * dissociate() don't bump, so no version ever snapshots the association
872
- * set, and there is nothing for a restore to roll back to. See
873
- * docs/spec/versioning.md § Version history.
878
+ * call so snapshot and mutation land in one atomic write. Carries what
879
+ * only a snapshot preserves: `content` and the `typeId` it is read
880
+ * under. Containment, listing and associations — the authority ones
881
+ * among them — are all kept by the journal instead, so no version ever
882
+ * snapshots them and there is nothing for a restore to roll them back
883
+ * to. See docs/spec/versioning.md § Version history.
874
884
  */
875
885
  private buildVersionSnapshot;
876
886
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../src/stack.ts"],"names":[],"mappings":"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"}