@astrale-domains/shell 0.1.0-beta.26 → 0.1.0-beta.28

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 (50) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +29 -7
  3. package/dist/application.d.ts +11 -2240
  4. package/dist/application.js +2 -2
  5. package/dist/functions/group/assign-member-to-group.d.ts +102 -0
  6. package/dist/functions/group/{unassign-user-from-group.js → assign-member-to-group.js} +2 -2
  7. package/dist/functions/group/{change-user-group-membership.d.ts → change-group-membership.d.ts} +1 -1
  8. package/dist/functions/group/{change-user-group-membership.js → change-group-membership.js} +1 -1
  9. package/dist/functions/group/group-membership-errors.d.ts +1 -1
  10. package/dist/functions/group/group-membership-errors.js +1 -1
  11. package/dist/functions/group/index.d.ts +2 -2
  12. package/dist/functions/group/index.js +2 -2
  13. package/dist/functions/group/unassign-member-from-group.d.ts +102 -0
  14. package/dist/functions/group/unassign-member-from-group.js +4 -0
  15. package/dist/functions/user/invite-user.d.ts +11 -2240
  16. package/dist/mutations/group/index.d.ts +1 -1
  17. package/dist/mutations/group/index.js +1 -1
  18. package/dist/mutations/group/set-group-membership.d.ts +101 -0
  19. package/dist/mutations/group/{set-user-group-membership.js → set-group-membership.js} +1 -1
  20. package/dist/queries/group/index.d.ts +1 -1
  21. package/dist/queries/group/index.js +1 -1
  22. package/dist/queries/group/read-group-membership-endpoints.d.ts +12 -2241
  23. package/dist/queries/group/read-group-membership-endpoints.js +2 -2
  24. package/dist/queries/group/read-group-membership.d.ts +90 -0
  25. package/dist/queries/group/{read-user-group-membership.js → read-group-membership.js} +2 -2
  26. package/dist/runtime.d.ts +35 -6722
  27. package/dist/runtime.js +2 -2
  28. package/dist/schema/modules/group/classes/group.d.ts +5 -1237
  29. package/dist/schema/modules/group/classes/group.js +2 -2
  30. package/dist/schema/modules/group/classes/member-of-group.d.ts +1 -1
  31. package/dist/schema/modules/group/classes/member-of-group.js +5 -1
  32. package/dist/schema/modules/group/functions/{unassign-user-from-group.d.ts → assign-member-to-group.d.ts} +2 -2
  33. package/dist/schema/modules/group/functions/{assign-user-to-group.js → assign-member-to-group.js} +1 -1
  34. package/dist/schema/modules/group/functions/index.d.ts +2 -2
  35. package/dist/schema/modules/group/functions/index.js +2 -2
  36. package/dist/schema/modules/group/functions/unassign-member-from-group.d.ts +7 -0
  37. package/dist/schema/modules/group/functions/{unassign-user-from-group.js → unassign-member-from-group.js} +1 -1
  38. package/dist/schema/modules/group/types/{group-user-reference.d.ts → group-membership-input.d.ts} +1 -1
  39. package/dist/schema/modules/group/types/{group-user-reference.js → group-membership-input.js} +1 -1
  40. package/dist/schema/modules/group/types/index.d.ts +1 -1
  41. package/dist/schema/modules/group/types/index.js +1 -1
  42. package/dist/schema/modules/user/classes/user.d.ts +1 -997
  43. package/dist/schema/schema.d.ts +43 -8957
  44. package/package.json +3 -3
  45. package/dist/functions/group/assign-user-to-group.d.ts +0 -2331
  46. package/dist/functions/group/assign-user-to-group.js +0 -4
  47. package/dist/functions/group/unassign-user-from-group.d.ts +0 -2331
  48. package/dist/mutations/group/set-user-group-membership.d.ts +0 -2330
  49. package/dist/queries/group/read-user-group-membership.d.ts +0 -2319
  50. package/dist/schema/modules/group/functions/assign-user-to-group.d.ts +0 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.0-beta.28](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.27...shell-domain-v0.1.0-beta.28) (2026-09-08)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * **core:** support users and groups as Shell members ([#205](https://github.com/astrale-os/shell/issues/205))
9
+
10
+ ### Features
11
+
12
+ * **core:** support users and groups as Shell members ([#205](https://github.com/astrale-os/shell/issues/205)) ([e9ce4f6](https://github.com/astrale-os/shell/commit/e9ce4f627a88c4d22efd2d84b1e0dafe73783875))
13
+
14
+ ## [0.1.0-beta.27](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.26...shell-domain-v0.1.0-beta.27) (2026-09-08)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **domain:** publish compact inferred Kernel references ([#203](https://github.com/astrale-os/shell/issues/203)) ([ab2d0d9](https://github.com/astrale-os/shell/commit/ab2d0d9170ba7cd688f30cae6ece94b140d29ffd))
20
+
3
21
  ## [0.1.0-beta.26](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.25...shell-domain-v0.1.0-beta.26) (2026-09-07)
4
22
 
5
23
 
package/README.md CHANGED
@@ -9,8 +9,8 @@ no Space, setup function, personal home, application catalogue, or public repair
9
9
  | Static method | Input | Output |
10
10
  | --- | --- | --- |
11
11
  | User.invite | `{ user: UserPath, email: string }` | `{ invitationId, user, state }` |
12
- | Group.assignUser | `{ user: UserPath, group: GroupPath }` | `{}` |
13
- | Group.unassignUser | Same | `{}` |
12
+ | Group.assignMember | `{ member: UserPath \| GroupPath, group: GroupPath }` | `{}` |
13
+ | Group.unassignMember | Same | `{}` |
14
14
 
15
15
  User extends Kernel.Identity and owns only optional creationKey correlation.
16
16
  Concrete business classes may declare their own displayName/email; Shell never reads or writes them.
@@ -20,12 +20,12 @@ Kernel-owned, write-once iss/sub binding. Invitation email is explicit input, no
20
20
  | Operation | Schema Policy alternatives, in addition to Kernel admission |
21
21
  | --- | --- |
22
22
  | invite | Core admin membership AND Shell-owned concrete User class; or ownership of the User's concrete class |
23
- | assignUser / unassignUser | Core admin membership AND Shell-owned concrete Group class; or ownership of the Group's concrete class |
23
+ | assignMember / unassignMember | Core admin membership AND Shell-owned concrete Group class; or ownership of the Group's concrete class |
24
24
 
25
25
  ownsClass follows instance_of → concrete class → of_domain → caller. It does not
26
26
  infer ownership from an email, a subclass name, or ownership of an ancestor class.
27
27
  A Domain cannot assign its Employee to Core member merely by owning Employee. Admin's invitation
28
- orchestration retains that responsibility. A Group's owner may manage any admitted User in that Group.
28
+ orchestration retains that responsibility. A Group's owner may manage any admitted User or Group in that Group.
29
29
  administersShellClass connects Core admin membership and concrete ownership in one Policy pattern;
30
30
  it does not treat inheritance from Shell as ownership. These are callable restrictions, not an
31
31
  isolation boundary against Root/Manager or the existing broad administrator Kernel profile.
@@ -40,8 +40,8 @@ Domain creates Employee extending User → unregistered, no group
40
40
  Direct credential-evidenced Register → same node authenticates, still no group
41
41
  User.invite → provider authentication → Admin ingress → WorkOS/login
42
42
  → Admin Register on that same node → member assignment → completed
43
- Group.assignUser → member_of_group + Kernel.extends_with in one atomic mutation
44
- Group.unassignUser → remove both edges in one atomic mutation
43
+ Group.assignMember → member_of_group + Kernel.extends_with in one atomic mutation
44
+ Group.unassignMember → remove both edges in one atomic mutation
45
45
  ```
46
46
 
47
47
  The invitation flow is coordinated by Admin, not by an Employee callback. Shell's Integration
@@ -49,6 +49,16 @@ carries only user/email/requestId/requestedBy. Its Provider mints an invocation-
49
49
  proof for its configured HTTPS ingress audience; target/sourceProof are not business inputs.
50
50
  A returned pending invitation does not prove email delivery or completed registration.
51
51
 
52
+ `assignMember({ member: A, group: B })` adds A to B. A and its current and future members inherit
53
+ B's authority. Groups can have several parents; Kernel rejects self-membership and cycles in the
54
+ same transaction as both membership edges. The target Group's manager authorizes this delegation;
55
+ the child Group's managers can subsequently change the population that inherits it.
56
+
57
+ `unassignMember` removes only that direct pair. Another membership path can preserve effective
58
+ access. Queries of `member_of_group` continue to return direct facts; Grant evaluation expands
59
+ identity composition for Policies. Shell must be able to traverse both concrete endpoint Classes,
60
+ including a foreign Group used as the member.
61
+
52
62
  Membership methods converge both edges, including an observed partial membership.
53
63
  After an uncertain mutation response they re-read the pair; an unconfirmed outcome remains
54
64
  explicitly unconfirmed. This is not a global repair scan or an exactly-once guarantee.
@@ -62,7 +72,7 @@ Kernel E2E evidence, not a handler test, qualifies this behavior.
62
72
 
63
73
  The Shell principal requests all Kernel root functions, the required extends_with operations,
64
74
  and the declared grant/revoke authority. Core admin receives the full declared Shell profile,
65
- including invite, assignUser and unassignUser so humans inheriting admin can call those methods.
75
+ including invite, assignMember and unassignMember so humans inheriting admin can call those methods.
66
76
  Core member receives Introspect, Query, Mutate and View.resolve, not blanket class-read grants.
67
77
  Application requirements, including Core Identity capabilities in requirements.core, are owned by application.ts and materialized by installation,
68
78
  never by invitation handlers.
@@ -104,3 +114,15 @@ schema import cannot traverse Shell's private application or runtime implementat
104
114
  Source, package, and deterministic test qualification remain distinct from installed-instance,
105
115
  released-package, browser, and live-credential evidence. Shell does not broker authentication
106
116
  tokens; standard Domain token exchange is owned by Protocol, Server, and SDK.
117
+
118
+ ### Breaking membership API migration
119
+
120
+ `Group.assignMember` / `Group.unassignMember` replace `assignUser` / `unassignUser` without aliases.
121
+ Callers must change `{ user, group }` to `{ member, group }` and declare the new exact callable
122
+ requirements. The `member_of_group` Class key is preserved; its source role is now `member` and
123
+ accepts User or Group families. Existing User memberships remain valid.
124
+
125
+ Rebuild and install all affected Schema dependents as one coherent revision closure. Admin bootstrap
126
+ and invitation completion must use the new API when this Shell revision is installed. A downgrade
127
+ to the User-only contract requires handling any Group-to-Group facts first. Validate public admission,
128
+ foreign endpoint traversal, and deployed revisions during the coordinated release.