@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.
- package/CHANGELOG.md +18 -0
- package/README.md +29 -7
- package/dist/application.d.ts +11 -2240
- package/dist/application.js +2 -2
- package/dist/functions/group/assign-member-to-group.d.ts +102 -0
- package/dist/functions/group/{unassign-user-from-group.js → assign-member-to-group.js} +2 -2
- package/dist/functions/group/{change-user-group-membership.d.ts → change-group-membership.d.ts} +1 -1
- package/dist/functions/group/{change-user-group-membership.js → change-group-membership.js} +1 -1
- package/dist/functions/group/group-membership-errors.d.ts +1 -1
- package/dist/functions/group/group-membership-errors.js +1 -1
- package/dist/functions/group/index.d.ts +2 -2
- package/dist/functions/group/index.js +2 -2
- package/dist/functions/group/unassign-member-from-group.d.ts +102 -0
- package/dist/functions/group/unassign-member-from-group.js +4 -0
- package/dist/functions/user/invite-user.d.ts +11 -2240
- package/dist/mutations/group/index.d.ts +1 -1
- package/dist/mutations/group/index.js +1 -1
- package/dist/mutations/group/set-group-membership.d.ts +101 -0
- package/dist/mutations/group/{set-user-group-membership.js → set-group-membership.js} +1 -1
- package/dist/queries/group/index.d.ts +1 -1
- package/dist/queries/group/index.js +1 -1
- package/dist/queries/group/read-group-membership-endpoints.d.ts +12 -2241
- package/dist/queries/group/read-group-membership-endpoints.js +2 -2
- package/dist/queries/group/read-group-membership.d.ts +90 -0
- package/dist/queries/group/{read-user-group-membership.js → read-group-membership.js} +2 -2
- package/dist/runtime.d.ts +35 -6722
- package/dist/runtime.js +2 -2
- package/dist/schema/modules/group/classes/group.d.ts +5 -1237
- package/dist/schema/modules/group/classes/group.js +2 -2
- package/dist/schema/modules/group/classes/member-of-group.d.ts +1 -1
- package/dist/schema/modules/group/classes/member-of-group.js +5 -1
- package/dist/schema/modules/group/functions/{unassign-user-from-group.d.ts → assign-member-to-group.d.ts} +2 -2
- package/dist/schema/modules/group/functions/{assign-user-to-group.js → assign-member-to-group.js} +1 -1
- package/dist/schema/modules/group/functions/index.d.ts +2 -2
- package/dist/schema/modules/group/functions/index.js +2 -2
- package/dist/schema/modules/group/functions/unassign-member-from-group.d.ts +7 -0
- package/dist/schema/modules/group/functions/{unassign-user-from-group.js → unassign-member-from-group.js} +1 -1
- package/dist/schema/modules/group/types/{group-user-reference.d.ts → group-membership-input.d.ts} +1 -1
- package/dist/schema/modules/group/types/{group-user-reference.js → group-membership-input.js} +1 -1
- package/dist/schema/modules/group/types/index.d.ts +1 -1
- package/dist/schema/modules/group/types/index.js +1 -1
- package/dist/schema/modules/user/classes/user.d.ts +1 -997
- package/dist/schema/schema.d.ts +43 -8957
- package/package.json +3 -3
- package/dist/functions/group/assign-user-to-group.d.ts +0 -2331
- package/dist/functions/group/assign-user-to-group.js +0 -4
- package/dist/functions/group/unassign-user-from-group.d.ts +0 -2331
- package/dist/mutations/group/set-user-group-membership.d.ts +0 -2330
- package/dist/queries/group/read-user-group-membership.d.ts +0 -2319
- 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.
|
|
13
|
-
| Group.
|
|
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
|
-
|
|
|
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.
|
|
44
|
-
Group.
|
|
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,
|
|
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.
|