@astrale-domains/shell 0.1.0-beta.27 → 0.1.0-beta.29

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 (45) hide show
  1. package/README.md +29 -7
  2. package/dist/application.d.ts +5 -5
  3. package/dist/application.js +2 -2
  4. package/dist/functions/group/{unassign-user-from-group.d.ts → assign-member-to-group.d.ts} +8 -8
  5. package/dist/functions/group/{unassign-user-from-group.js → assign-member-to-group.js} +2 -2
  6. package/dist/functions/group/{change-user-group-membership.d.ts → change-group-membership.d.ts} +1 -1
  7. package/dist/functions/group/{change-user-group-membership.js → change-group-membership.js} +1 -1
  8. package/dist/functions/group/group-membership-errors.d.ts +1 -1
  9. package/dist/functions/group/group-membership-errors.js +1 -1
  10. package/dist/functions/group/index.d.ts +2 -2
  11. package/dist/functions/group/index.js +2 -2
  12. package/dist/functions/group/{assign-user-to-group.d.ts → unassign-member-from-group.d.ts} +8 -8
  13. package/dist/functions/group/unassign-member-from-group.js +4 -0
  14. package/dist/functions/user/invite-user.d.ts +5 -5
  15. package/dist/mutations/group/index.d.ts +1 -1
  16. package/dist/mutations/group/index.js +1 -1
  17. package/dist/mutations/group/{set-user-group-membership.d.ts → set-group-membership.d.ts} +6 -6
  18. package/dist/mutations/group/{set-user-group-membership.js → set-group-membership.js} +1 -1
  19. package/dist/queries/group/index.d.ts +1 -1
  20. package/dist/queries/group/index.js +1 -1
  21. package/dist/queries/group/read-group-membership-endpoints.d.ts +6 -6
  22. package/dist/queries/group/read-group-membership-endpoints.js +2 -2
  23. package/dist/queries/group/{read-user-group-membership.d.ts → read-group-membership.d.ts} +6 -6
  24. package/dist/queries/group/{read-user-group-membership.js → read-group-membership.js} +2 -2
  25. package/dist/runtime.d.ts +19 -19
  26. package/dist/runtime.js +2 -2
  27. package/dist/schema/modules/group/classes/group.d.ts +4 -4
  28. package/dist/schema/modules/group/classes/group.js +2 -2
  29. package/dist/schema/modules/group/classes/member-of-group.d.ts +1 -1
  30. package/dist/schema/modules/group/classes/member-of-group.js +5 -1
  31. package/dist/schema/modules/group/functions/{unassign-user-from-group.d.ts → assign-member-to-group.d.ts} +2 -2
  32. package/dist/schema/modules/group/functions/{assign-user-to-group.js → assign-member-to-group.js} +1 -1
  33. package/dist/schema/modules/group/functions/index.d.ts +2 -2
  34. package/dist/schema/modules/group/functions/index.js +2 -2
  35. package/dist/schema/modules/group/functions/unassign-member-from-group.d.ts +7 -0
  36. package/dist/schema/modules/group/functions/{unassign-user-from-group.js → unassign-member-from-group.js} +1 -1
  37. package/dist/schema/modules/group/types/{group-user-reference.d.ts → group-membership-input.d.ts} +1 -1
  38. package/dist/schema/modules/group/types/{group-user-reference.js → group-membership-input.js} +1 -1
  39. package/dist/schema/modules/group/types/index.d.ts +1 -1
  40. package/dist/schema/modules/group/types/index.js +1 -1
  41. package/dist/schema/schema.d.ts +20 -20
  42. package/package.json +3 -3
  43. package/CHANGELOG.md +0 -233
  44. package/dist/functions/group/assign-user-to-group.js +0 -4
  45. package/dist/schema/modules/group/functions/assign-user-to-group.d.ts +0 -7
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.
@@ -27,15 +27,15 @@ declare const frontend: import("@astrale-os/sdk/view").Frontend<import("@astrale
27
27
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
28
28
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
29
29
  readonly methods: {
30
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
31
- user: string;
30
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
31
+ member: string;
32
32
  group: string;
33
33
  }, {
34
34
  readonly mode: 'value';
35
35
  readonly value: Record<string, never>;
36
36
  }, "authorized", true, false>>;
37
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
38
- user: string;
37
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
38
+ member: string;
39
39
  group: string;
40
40
  }, {
41
41
  readonly mode: 'value';
@@ -49,7 +49,7 @@ declare const frontend: import("@astrale-os/sdk/view").Frontend<import("@astrale
49
49
  readonly extends: readonly [];
50
50
  readonly properties: never;
51
51
  readonly source: {
52
- readonly as: "user";
52
+ readonly as: "member";
53
53
  readonly outgoing: "0..*";
54
54
  };
55
55
  readonly target: {
@@ -25,8 +25,8 @@ const applicationRequirements = requirements({
25
25
  functions: [
26
26
  ...KernelRootFunctions,
27
27
  S.classes.User.static.methods.invite,
28
- S.classes.Group.static.methods.assignUser,
29
- S.classes.Group.static.methods.unassignUser,
28
+ S.classes.Group.static.methods.assignMember,
29
+ S.classes.Group.static.methods.unassignMember,
30
30
  ],
31
31
  classes: [
32
32
  { class: S.classes.User, operations: ['create', 'read', 'traverse', 'update', 'delete'] },
@@ -1,4 +1,4 @@
1
- export declare const unassignUser: import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").AuthoredSchema<"shell.astrale.ai", readonly ["kernel.astrale.ai", import("@astrale-os/sdk/schema").KernelSchema] | readonly ["shell.astrale.ai", {
1
+ export declare const assignMember: import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").AuthoredSchema<"shell.astrale.ai", readonly ["kernel.astrale.ai", import("@astrale-os/sdk/schema").KernelSchema] | readonly ["shell.astrale.ai", {
2
2
  readonly classes: {
3
3
  readonly User: import("@astrale-os/sdk/schema").AuthoredNodeClass<{
4
4
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
@@ -24,15 +24,15 @@ export declare const unassignUser: import("@astrale-os/sdk/workflow").WorkflowDe
24
24
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
25
25
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
26
26
  readonly methods: {
27
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
28
- user: string;
27
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
28
+ member: string;
29
29
  group: string;
30
30
  }, {
31
31
  readonly mode: 'value';
32
32
  readonly value: Record<string, never>;
33
33
  }, "authorized", true, false>>;
34
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
35
- user: string;
34
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
35
+ member: string;
36
36
  group: string;
37
37
  }, {
38
38
  readonly mode: 'value';
@@ -46,7 +46,7 @@ export declare const unassignUser: import("@astrale-os/sdk/workflow").WorkflowDe
46
46
  readonly extends: readonly [];
47
47
  readonly properties: never;
48
48
  readonly source: {
49
- readonly as: "user";
49
+ readonly as: "member";
50
50
  readonly outgoing: "0..*";
51
51
  };
52
52
  readonly target: {
@@ -73,7 +73,7 @@ export declare const unassignUser: import("@astrale-os/sdk/workflow").WorkflowDe
73
73
  };
74
74
  }, {
75
75
  readonly kernel: "kernel.astrale.ai";
76
- }]>, "Group.unassignUser", Readonly<Record<never, never>>, {
76
+ }]>, "Group.assignMember", Readonly<Record<never, never>>, {
77
77
  readonly GROUP_MEMBERSHIP_ENDPOINTS_UNAVAILABLE: {
78
78
  readonly family: 'CONFLICT';
79
79
  readonly message: 'Shell must be able to traverse both membership endpoints before confirming membership.';
@@ -81,7 +81,7 @@ export declare const unassignUser: import("@astrale-os/sdk/workflow").WorkflowDe
81
81
  };
82
82
  readonly INVALID_GROUP_MEMBERSHIP_REFERENCE: {
83
83
  readonly family: 'VALIDATION_ERROR';
84
- readonly message: 'User and group must be exact canonical @NodeId paths.';
84
+ readonly message: 'Member and group must be exact canonical @NodeId paths.';
85
85
  readonly details: import("zod").ZodObject<{}, import("zod/v4/core").$strict>;
86
86
  };
87
87
  readonly GROUP_MEMBERSHIP_CONFLICT: {
@@ -1,4 +1,4 @@
1
1
  import { defineWorkflow } from '@astrale-os/sdk/workflow';
2
- import { changeGroupMembership } from './change-user-group-membership.js';
2
+ import { changeGroupMembership } from './change-group-membership.js';
3
3
  import { groupMembershipErrors } from './group-membership-errors.js';
4
- export const unassignUser = defineWorkflow()('Group.unassignUser', { errors: groupMembershipErrors }, (context) => changeGroupMembership(context, false));
4
+ export const assignMember = defineWorkflow()('Group.assignMember', { errors: groupMembershipErrors }, (context) => changeGroupMembership(context, true));
@@ -1,7 +1,7 @@
1
1
  import type { WorkflowContext } from '@astrale-os/sdk/workflow';
2
2
  import type { S, Shell } from '../../schema/index.js';
3
3
  import type { groupMembershipErrors } from './group-membership-errors.js';
4
- type GroupCallable = typeof S.classes.Group.static.methods.assignUser | typeof S.classes.Group.static.methods.unassignUser;
4
+ type GroupCallable = typeof S.classes.Group.static.methods.assignMember | typeof S.classes.Group.static.methods.unassignMember;
5
5
  type Context = WorkflowContext<GroupCallable, Shell, Readonly<Record<never, never>>, typeof groupMembershipErrors>;
6
6
  export declare function changeGroupMembership(context: Context, present: boolean): Promise<{}>;
7
7
  export {};
@@ -5,7 +5,7 @@ const matches = (state, present) => state.membership === present && state.author
5
5
  export async function changeGroupMembership(context, present) {
6
6
  const invalid = () => context.error('INVALID_GROUP_MEMBERSHIP_REFERENCE', {});
7
7
  const membership = {
8
- user: canonicalNodeId(context.input.user, invalid),
8
+ member: canonicalNodeId(context.input.member, invalid),
9
9
  group: canonicalNodeId(context.input.group, invalid),
10
10
  };
11
11
  const observe = async () => {
@@ -7,7 +7,7 @@ export declare const groupMembershipErrors: {
7
7
  };
8
8
  readonly INVALID_GROUP_MEMBERSHIP_REFERENCE: {
9
9
  readonly family: 'VALIDATION_ERROR';
10
- readonly message: 'User and group must be exact canonical @NodeId paths.';
10
+ readonly message: 'Member and group must be exact canonical @NodeId paths.';
11
11
  readonly details: z.ZodObject<{}, z.core.$strict>;
12
12
  };
13
13
  readonly GROUP_MEMBERSHIP_CONFLICT: {
@@ -7,7 +7,7 @@ export const groupMembershipErrors = {
7
7
  },
8
8
  INVALID_GROUP_MEMBERSHIP_REFERENCE: {
9
9
  family: 'VALIDATION_ERROR',
10
- message: 'User and group must be exact canonical @NodeId paths.',
10
+ message: 'Member and group must be exact canonical @NodeId paths.',
11
11
  details: z.strictObject({}),
12
12
  },
13
13
  GROUP_MEMBERSHIP_CONFLICT: {
@@ -1,2 +1,2 @@
1
- export { assignUser } from './assign-user-to-group.js';
2
- export { unassignUser } from './unassign-user-from-group.js';
1
+ export { assignMember } from './assign-member-to-group.js';
2
+ export { unassignMember } from './unassign-member-from-group.js';
@@ -1,2 +1,2 @@
1
- export { assignUser } from './assign-user-to-group.js';
2
- export { unassignUser } from './unassign-user-from-group.js';
1
+ export { assignMember } from './assign-member-to-group.js';
2
+ export { unassignMember } from './unassign-member-from-group.js';
@@ -1,4 +1,4 @@
1
- export declare const assignUser: import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").AuthoredSchema<"shell.astrale.ai", readonly ["kernel.astrale.ai", import("@astrale-os/sdk/schema").KernelSchema] | readonly ["shell.astrale.ai", {
1
+ export declare const unassignMember: import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").AuthoredSchema<"shell.astrale.ai", readonly ["kernel.astrale.ai", import("@astrale-os/sdk/schema").KernelSchema] | readonly ["shell.astrale.ai", {
2
2
  readonly classes: {
3
3
  readonly User: import("@astrale-os/sdk/schema").AuthoredNodeClass<{
4
4
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
@@ -24,15 +24,15 @@ export declare const assignUser: import("@astrale-os/sdk/workflow").WorkflowDefi
24
24
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
25
25
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
26
26
  readonly methods: {
27
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
28
- user: string;
27
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
28
+ member: string;
29
29
  group: string;
30
30
  }, {
31
31
  readonly mode: 'value';
32
32
  readonly value: Record<string, never>;
33
33
  }, "authorized", true, false>>;
34
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
35
- user: string;
34
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
35
+ member: string;
36
36
  group: string;
37
37
  }, {
38
38
  readonly mode: 'value';
@@ -46,7 +46,7 @@ export declare const assignUser: import("@astrale-os/sdk/workflow").WorkflowDefi
46
46
  readonly extends: readonly [];
47
47
  readonly properties: never;
48
48
  readonly source: {
49
- readonly as: "user";
49
+ readonly as: "member";
50
50
  readonly outgoing: "0..*";
51
51
  };
52
52
  readonly target: {
@@ -73,7 +73,7 @@ export declare const assignUser: import("@astrale-os/sdk/workflow").WorkflowDefi
73
73
  };
74
74
  }, {
75
75
  readonly kernel: "kernel.astrale.ai";
76
- }]>, "Group.assignUser", Readonly<Record<never, never>>, {
76
+ }]>, "Group.unassignMember", Readonly<Record<never, never>>, {
77
77
  readonly GROUP_MEMBERSHIP_ENDPOINTS_UNAVAILABLE: {
78
78
  readonly family: 'CONFLICT';
79
79
  readonly message: 'Shell must be able to traverse both membership endpoints before confirming membership.';
@@ -81,7 +81,7 @@ export declare const assignUser: import("@astrale-os/sdk/workflow").WorkflowDefi
81
81
  };
82
82
  readonly INVALID_GROUP_MEMBERSHIP_REFERENCE: {
83
83
  readonly family: 'VALIDATION_ERROR';
84
- readonly message: 'User and group must be exact canonical @NodeId paths.';
84
+ readonly message: 'Member and group must be exact canonical @NodeId paths.';
85
85
  readonly details: import("zod").ZodObject<{}, import("zod/v4/core").$strict>;
86
86
  };
87
87
  readonly GROUP_MEMBERSHIP_CONFLICT: {
@@ -0,0 +1,4 @@
1
+ import { defineWorkflow } from '@astrale-os/sdk/workflow';
2
+ import { changeGroupMembership } from './change-group-membership.js';
3
+ import { groupMembershipErrors } from './group-membership-errors.js';
4
+ export const unassignMember = defineWorkflow()('Group.unassignMember', { errors: groupMembershipErrors }, (context) => changeGroupMembership(context, false));
@@ -25,15 +25,15 @@ export declare const invite: import("@astrale-os/sdk/workflow").WorkflowDefiniti
25
25
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
26
26
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
27
27
  readonly methods: {
28
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
29
- user: string;
28
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
29
+ member: string;
30
30
  group: string;
31
31
  }, {
32
32
  readonly mode: 'value';
33
33
  readonly value: Record<string, never>;
34
34
  }, "authorized", true, false>>;
35
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
36
- user: string;
35
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
36
+ member: string;
37
37
  group: string;
38
38
  }, {
39
39
  readonly mode: 'value';
@@ -47,7 +47,7 @@ export declare const invite: import("@astrale-os/sdk/workflow").WorkflowDefiniti
47
47
  readonly extends: readonly [];
48
48
  readonly properties: never;
49
49
  readonly source: {
50
- readonly as: "user";
50
+ readonly as: "member";
51
51
  readonly outgoing: "0..*";
52
52
  };
53
53
  readonly target: {
@@ -1 +1 @@
1
- export { setGroupMembership } from './set-user-group-membership.js';
1
+ export { setGroupMembership } from './set-group-membership.js';
@@ -1 +1 @@
1
- export { setGroupMembership } from './set-user-group-membership.js';
1
+ export { setGroupMembership } from './set-group-membership.js';
@@ -2,7 +2,7 @@ import type { NodeId } from '@astrale-os/sdk/graph/node';
2
2
  import type { QueryEdgeAST, QueryNodeAST } from '@astrale-os/sdk/query';
3
3
  import { type QueryPrecondition } from '@astrale-os/sdk/mutation';
4
4
  interface GroupMembership {
5
- readonly user: NodeId;
5
+ readonly member: NodeId;
6
6
  readonly group: NodeId;
7
7
  }
8
8
  interface GroupMembershipObservation {
@@ -48,15 +48,15 @@ export declare const setGroupMembership: import("@astrale-os/sdk/mutation").Muta
48
48
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
49
49
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
50
50
  readonly methods: {
51
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
52
- user: string;
51
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
52
+ member: string;
53
53
  group: string;
54
54
  }, {
55
55
  readonly mode: 'value';
56
56
  readonly value: Record<string, never>;
57
57
  }, "authorized", true, false>>;
58
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
59
- user: string;
58
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
59
+ member: string;
60
60
  group: string;
61
61
  }, {
62
62
  readonly mode: 'value';
@@ -70,7 +70,7 @@ export declare const setGroupMembership: import("@astrale-os/sdk/mutation").Muta
70
70
  readonly extends: readonly [];
71
71
  readonly properties: never;
72
72
  readonly source: {
73
- readonly as: "user";
73
+ readonly as: "member";
74
74
  readonly outgoing: "0..*";
75
75
  };
76
76
  readonly target: {
@@ -4,7 +4,7 @@ export const setGroupMembership = defineMutation()((domain) => ({
4
4
  build(input, mutation) {
5
5
  mutation.expect.query(input.current.endpoints);
6
6
  mutation.expect.query(input.current.guard);
7
- const endpoints = { source: input.user, target: input.group };
7
+ const endpoints = { source: input.member, target: input.group };
8
8
  const changes = [
9
9
  { class: domain.classes.member_of_group, current: input.current.membership },
10
10
  { class: domain.dependencies.kernel.classes.extends_with, current: input.current.authority },
@@ -1,2 +1,2 @@
1
- export { readGroupMembership, type GroupMembershipObservation, type GroupMembershipState, } from './read-user-group-membership.js';
1
+ export { readGroupMembership, type GroupMembershipObservation, type GroupMembershipState, } from './read-group-membership.js';
2
2
  export { readGroupMembershipEndpoints } from './read-group-membership-endpoints.js';
@@ -1,2 +1,2 @@
1
- export { readGroupMembership, } from './read-user-group-membership.js';
1
+ export { readGroupMembership, } from './read-group-membership.js';
2
2
  export { readGroupMembershipEndpoints } from './read-group-membership-endpoints.js';
@@ -2,7 +2,7 @@ import type { NodeId } from '@astrale-os/sdk/graph/node';
2
2
  import type { QueryPrecondition } from '@astrale-os/sdk/mutation';
3
3
  import { type QueryNodeAST } from '@astrale-os/sdk/query';
4
4
  interface Endpoints {
5
- readonly user: NodeId;
5
+ readonly member: NodeId;
6
6
  readonly group: NodeId;
7
7
  }
8
8
  export interface GroupMembershipEndpoints {
@@ -35,15 +35,15 @@ export declare const readGroupMembershipEndpoints: import("@astrale-os/sdk/query
35
35
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
36
36
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
37
37
  readonly methods: {
38
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
39
- user: string;
38
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
39
+ member: string;
40
40
  group: string;
41
41
  }, {
42
42
  readonly mode: 'value';
43
43
  readonly value: Record<string, never>;
44
44
  }, "authorized", true, false>>;
45
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
46
- user: string;
45
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
46
+ member: string;
47
47
  group: string;
48
48
  }, {
49
49
  readonly mode: 'value';
@@ -57,7 +57,7 @@ export declare const readGroupMembershipEndpoints: import("@astrale-os/sdk/query
57
57
  readonly extends: readonly [];
58
58
  readonly properties: never;
59
59
  readonly source: {
60
- readonly as: "user";
60
+ readonly as: "member";
61
61
  readonly outgoing: "0..*";
62
62
  };
63
63
  readonly target: {
@@ -4,14 +4,14 @@ export const readGroupMembershipEndpoints = defineQuery()(() => ({
4
4
  id: 'shell.group.membership.endpoints',
5
5
  page: { size: 2 },
6
6
  pagination: { maximumPages: 2 },
7
- build: ({ user, group }) => Query.from({ nodes: [Path.id(user), Path.id(group)] }).select({
7
+ build: ({ member, group }) => Query.from({ nodes: [Path.id(member), Path.id(group)] }).select({
8
8
  kind: 'nodes',
9
9
  projection: { kind: 'reference' },
10
10
  }),
11
11
  project(pages, input, { ast, complete }) {
12
12
  const ids = queryResult.completeNodeIds(pages, 'Shell membership endpoints');
13
13
  return {
14
- visible: ids.includes(input.user) && ids.includes(input.group),
14
+ visible: ids.includes(input.member) && ids.includes(input.group),
15
15
  guard: { query: ast, equals: complete },
16
16
  };
17
17
  },
@@ -2,7 +2,7 @@ import type { NodeId } from '@astrale-os/sdk/graph/node';
2
2
  import type { QueryPrecondition } from '@astrale-os/sdk/mutation';
3
3
  import { type QueryEdgeAST } from '@astrale-os/sdk/query';
4
4
  export interface GroupMembership {
5
- readonly user: NodeId;
5
+ readonly member: NodeId;
6
6
  readonly group: NodeId;
7
7
  }
8
8
  export interface GroupMembershipState {
@@ -38,15 +38,15 @@ export declare const readGroupMembership: import("@astrale-os/sdk/query").Single
38
38
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
39
39
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
40
40
  readonly methods: {
41
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
42
- user: string;
41
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
42
+ member: string;
43
43
  group: string;
44
44
  }, {
45
45
  readonly mode: 'value';
46
46
  readonly value: Record<string, never>;
47
47
  }, "authorized", true, false>>;
48
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
49
- user: string;
48
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
49
+ member: string;
50
50
  group: string;
51
51
  }, {
52
52
  readonly mode: 'value';
@@ -60,7 +60,7 @@ export declare const readGroupMembership: import("@astrale-os/sdk/query").Single
60
60
  readonly extends: readonly [];
61
61
  readonly properties: never;
62
62
  readonly source: {
63
- readonly as: "user";
63
+ readonly as: "member";
64
64
  readonly outgoing: "0..*";
65
65
  };
66
66
  readonly target: {
@@ -1,12 +1,12 @@
1
1
  import { Query, defineQuery, queryResult, } from '@astrale-os/sdk/query';
2
2
  export const readGroupMembership = defineQuery()((domain) => ({
3
3
  id: 'shell.group.membership.read',
4
- build({ user, group }) {
4
+ build({ member, group }) {
5
5
  const edges = Query.from({
6
6
  edges: [domain.classes.member_of_group, domain.dependencies.kernel.classes.extends_with],
7
7
  });
8
8
  return edges
9
- .filter({ binding: edges.source, predicate: { kind: 'identity.equal', identity: user } })
9
+ .filter({ binding: edges.source, predicate: { kind: 'identity.equal', identity: member } })
10
10
  .filter({ binding: edges.target, predicate: { kind: 'identity.equal', identity: group } })
11
11
  .select({
12
12
  kind: 'edges',
package/dist/runtime.d.ts CHANGED
@@ -38,15 +38,15 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
38
38
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
39
39
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
40
40
  readonly methods: {
41
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
42
- user: string;
41
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
42
+ member: string;
43
43
  group: string;
44
44
  }, {
45
45
  readonly mode: 'value';
46
46
  readonly value: Record<string, never>;
47
47
  }, "authorized", true, false>>;
48
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
49
- user: string;
48
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
49
+ member: string;
50
50
  group: string;
51
51
  }, {
52
52
  readonly mode: 'value';
@@ -60,7 +60,7 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
60
60
  readonly extends: readonly [];
61
61
  readonly properties: never;
62
62
  readonly source: {
63
- readonly as: "user";
63
+ readonly as: "member";
64
64
  readonly outgoing: "0..*";
65
65
  };
66
66
  readonly target: {
@@ -141,15 +141,15 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
141
141
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
142
142
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
143
143
  readonly methods: {
144
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
145
- user: string;
144
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
145
+ member: string;
146
146
  group: string;
147
147
  }, {
148
148
  readonly mode: 'value';
149
149
  readonly value: Record<string, never>;
150
150
  }, "authorized", true, false>>;
151
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
152
- user: string;
151
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
152
+ member: string;
153
153
  group: string;
154
154
  }, {
155
155
  readonly mode: 'value';
@@ -163,7 +163,7 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
163
163
  readonly extends: readonly [];
164
164
  readonly properties: never;
165
165
  readonly source: {
166
- readonly as: "user";
166
+ readonly as: "member";
167
167
  readonly outgoing: "0..*";
168
168
  };
169
169
  readonly target: {
@@ -190,7 +190,7 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
190
190
  };
191
191
  }, {
192
192
  readonly kernel: "kernel.astrale.ai";
193
- }]>, "Group.assignUser", Readonly<Record<never, never>>, {
193
+ }]>, "Group.assignMember", Readonly<Record<never, never>>, {
194
194
  readonly GROUP_MEMBERSHIP_ENDPOINTS_UNAVAILABLE: {
195
195
  readonly family: 'CONFLICT';
196
196
  readonly message: 'Shell must be able to traverse both membership endpoints before confirming membership.';
@@ -198,7 +198,7 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
198
198
  };
199
199
  readonly INVALID_GROUP_MEMBERSHIP_REFERENCE: {
200
200
  readonly family: 'VALIDATION_ERROR';
201
- readonly message: 'User and group must be exact canonical @NodeId paths.';
201
+ readonly message: 'Member and group must be exact canonical @NodeId paths.';
202
202
  readonly details: import("zod").ZodObject<{}, import("zod/v4/core").$strict>;
203
203
  };
204
204
  readonly GROUP_MEMBERSHIP_CONFLICT: {
@@ -242,15 +242,15 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
242
242
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
243
243
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
244
244
  readonly methods: {
245
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
246
- user: string;
245
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
246
+ member: string;
247
247
  group: string;
248
248
  }, {
249
249
  readonly mode: 'value';
250
250
  readonly value: Record<string, never>;
251
251
  }, "authorized", true, false>>;
252
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
253
- user: string;
252
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
253
+ member: string;
254
254
  group: string;
255
255
  }, {
256
256
  readonly mode: 'value';
@@ -264,7 +264,7 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
264
264
  readonly extends: readonly [];
265
265
  readonly properties: never;
266
266
  readonly source: {
267
- readonly as: "user";
267
+ readonly as: "member";
268
268
  readonly outgoing: "0..*";
269
269
  };
270
270
  readonly target: {
@@ -291,7 +291,7 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
291
291
  };
292
292
  }, {
293
293
  readonly kernel: "kernel.astrale.ai";
294
- }]>, "Group.unassignUser", Readonly<Record<never, never>>, {
294
+ }]>, "Group.unassignMember", Readonly<Record<never, never>>, {
295
295
  readonly GROUP_MEMBERSHIP_ENDPOINTS_UNAVAILABLE: {
296
296
  readonly family: 'CONFLICT';
297
297
  readonly message: 'Shell must be able to traverse both membership endpoints before confirming membership.';
@@ -299,7 +299,7 @@ declare const functions: readonly [import("@astrale-os/sdk/workflow").WorkflowDe
299
299
  };
300
300
  readonly INVALID_GROUP_MEMBERSHIP_REFERENCE: {
301
301
  readonly family: 'VALIDATION_ERROR';
302
- readonly message: 'User and group must be exact canonical @NodeId paths.';
302
+ readonly message: 'Member and group must be exact canonical @NodeId paths.';
303
303
  readonly details: import("zod").ZodObject<{}, import("zod/v4/core").$strict>;
304
304
  };
305
305
  readonly GROUP_MEMBERSHIP_CONFLICT: {
package/dist/runtime.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { defineRuntime } from '@astrale-os/sdk/runtime';
2
- import { assignUser, unassignUser } from './functions/group/index.js';
2
+ import { assignMember, unassignMember } from './functions/group/index.js';
3
3
  import { invite } from './functions/user/index.js';
4
4
  import { integrations } from './integrations/index.js';
5
5
  import { enrollmentProvider } from './providers/admin-enrollment/index.js';
6
6
  const initialize = (environment) => ({
7
7
  providers: { enrollment: enrollmentProvider(environment) },
8
8
  });
9
- const functions = [invite, assignUser, unassignUser];
9
+ const functions = [invite, assignMember, unassignMember];
10
10
  const runtime = defineRuntime()({
11
11
  integrations,
12
12
  initialize,
@@ -2,15 +2,15 @@ export declare const Group: import("@astrale-os/sdk/schema").AuthoredNodeClass<{
2
2
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
3
3
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
4
4
  readonly methods: {
5
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
6
- user: string;
5
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
6
+ member: string;
7
7
  group: string;
8
8
  }, {
9
9
  readonly mode: 'value';
10
10
  readonly value: Record<string, never>;
11
11
  }, "authorized", true, false>>;
12
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
13
- user: string;
12
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
13
+ member: string;
14
14
  group: string;
15
15
  }, {
16
16
  readonly mode: 'value';
@@ -1,8 +1,8 @@
1
1
  import { K, classIcon, nodeClass } from '@astrale-os/sdk/schema';
2
2
  import { UsersRound } from '@astrale-os/sdk/schema/icons';
3
- import { assignUser, unassignUser } from '../functions/index.js';
3
+ import { assignMember, unassignMember } from '../functions/index.js';
4
4
  export const Group = nodeClass({
5
5
  icon: classIcon.lucide(UsersRound),
6
6
  extends: [K.classes.Identity, K.classes.Named, K.classes.Descriptable],
7
- methods: { assignUser, unassignUser },
7
+ methods: { assignMember, unassignMember },
8
8
  });
@@ -4,7 +4,7 @@ export declare const member_of_group: import("@astrale-os/sdk/schema").DirectedE
4
4
  readonly extends: readonly [];
5
5
  readonly properties: never;
6
6
  readonly source: {
7
- readonly as: "user";
7
+ readonly as: "member";
8
8
  readonly outgoing: "0..*";
9
9
  };
10
10
  readonly target: {
@@ -2,6 +2,10 @@ import { edgeClass } from '@astrale-os/sdk/schema';
2
2
  import { User } from '../../user/index.js';
3
3
  import { Group } from './group.js';
4
4
  export const member_of_group = edgeClass.directed({
5
- source: { as: 'user', accepts: [() => User], outgoing: '0..*' },
5
+ source: {
6
+ as: 'member',
7
+ accepts: [() => User, () => Group],
8
+ outgoing: '0..*',
9
+ },
6
10
  target: { as: 'group', accepts: [() => Group], incoming: '0..*' },
7
11
  });
@@ -1,5 +1,5 @@
1
- export declare const unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
2
- user: string;
1
+ export declare const assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
2
+ member: string;
3
3
  group: string;
4
4
  }, {
5
5
  readonly mode: 'value';
@@ -2,7 +2,7 @@ import { method } from '@astrale-os/sdk/schema';
2
2
  import { z } from 'zod';
3
3
  import { ownsClass, administersShellClass } from '../../../policies/index.js';
4
4
  import { groupMembershipInput } from '../types/index.js';
5
- export const assignUser = method({
5
+ export const assignMember = method({
6
6
  static: true,
7
7
  auth: 'authorized',
8
8
  input: groupMembershipInput,
@@ -1,2 +1,2 @@
1
- export { assignUser } from './assign-user-to-group.js';
2
- export { unassignUser } from './unassign-user-from-group.js';
1
+ export { assignMember } from './assign-member-to-group.js';
2
+ export { unassignMember } from './unassign-member-from-group.js';
@@ -1,2 +1,2 @@
1
- export { assignUser } from './assign-user-to-group.js';
2
- export { unassignUser } from './unassign-user-from-group.js';
1
+ export { assignMember } from './assign-member-to-group.js';
2
+ export { unassignMember } from './unassign-member-from-group.js';
@@ -0,0 +1,7 @@
1
+ export declare const unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
2
+ member: string;
3
+ group: string;
4
+ }, {
5
+ readonly mode: 'value';
6
+ readonly value: Record<string, never>;
7
+ }, "authorized", true, false>>;
@@ -2,7 +2,7 @@ import { method } from '@astrale-os/sdk/schema';
2
2
  import { z } from 'zod';
3
3
  import { ownsClass, administersShellClass } from '../../../policies/index.js';
4
4
  import { groupMembershipInput } from '../types/index.js';
5
- export const unassignUser = method({
5
+ export const unassignMember = method({
6
6
  static: true,
7
7
  auth: 'authorized',
8
8
  input: groupMembershipInput,
@@ -1,6 +1,6 @@
1
1
  import type { NodeClass } from '@astrale-os/sdk/schema';
2
2
  import { z } from 'zod';
3
3
  export declare const groupMembershipInput: z.ZodObject<{
4
- user: import("@astrale-os/sdk/schema").PathAuthoring<readonly [() => NodeClass]>;
4
+ member: import("@astrale-os/sdk/schema").PathAuthoring<readonly [() => NodeClass, () => NodeClass]>;
5
5
  group: import("@astrale-os/sdk/schema").PathAuthoring<readonly [() => NodeClass]>;
6
6
  }, z.core.$strip>;
@@ -3,6 +3,6 @@ import { z } from 'zod';
3
3
  import { User } from '../../user/index.js';
4
4
  import { Group } from '../classes/group.js';
5
5
  export const groupMembershipInput = z.object({
6
- user: path(() => User),
6
+ member: path(() => User, () => Group),
7
7
  group: path(() => Group),
8
8
  });
@@ -1 +1 @@
1
- export { groupMembershipInput } from './group-user-reference.js';
1
+ export { groupMembershipInput } from './group-membership-input.js';
@@ -1 +1 @@
1
- export { groupMembershipInput } from './group-user-reference.js';
1
+ export { groupMembershipInput } from './group-membership-input.js';
@@ -25,15 +25,15 @@ declare const classes: {
25
25
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
26
26
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
27
27
  readonly methods: {
28
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
29
- user: string;
28
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
29
+ member: string;
30
30
  group: string;
31
31
  }, {
32
32
  readonly mode: 'value';
33
33
  readonly value: Record<string, never>;
34
34
  }, "authorized", true, false>>;
35
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
36
- user: string;
35
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
36
+ member: string;
37
37
  group: string;
38
38
  }, {
39
39
  readonly mode: 'value';
@@ -47,7 +47,7 @@ declare const classes: {
47
47
  readonly extends: readonly [];
48
48
  readonly properties: never;
49
49
  readonly source: {
50
- readonly as: "user";
50
+ readonly as: "member";
51
51
  readonly outgoing: "0..*";
52
52
  };
53
53
  readonly target: {
@@ -88,15 +88,15 @@ declare const input: {
88
88
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
89
89
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
90
90
  readonly methods: {
91
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
92
- user: string;
91
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
92
+ member: string;
93
93
  group: string;
94
94
  }, {
95
95
  readonly mode: 'value';
96
96
  readonly value: Record<string, never>;
97
97
  }, "authorized", true, false>>;
98
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
99
- user: string;
98
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
99
+ member: string;
100
100
  group: string;
101
101
  }, {
102
102
  readonly mode: 'value';
@@ -110,7 +110,7 @@ declare const input: {
110
110
  readonly extends: readonly [];
111
111
  readonly properties: never;
112
112
  readonly source: {
113
- readonly as: "user";
113
+ readonly as: "member";
114
114
  readonly outgoing: "0..*";
115
115
  };
116
116
  readonly target: {
@@ -163,15 +163,15 @@ export declare const ShellSchema: import("@astrale-os/sdk/schema").AuthoredSchem
163
163
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
164
164
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
165
165
  readonly methods: {
166
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
167
- user: string;
166
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
167
+ member: string;
168
168
  group: string;
169
169
  }, {
170
170
  readonly mode: 'value';
171
171
  readonly value: Record<string, never>;
172
172
  }, "authorized", true, false>>;
173
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
174
- user: string;
173
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
174
+ member: string;
175
175
  group: string;
176
176
  }, {
177
177
  readonly mode: 'value';
@@ -185,7 +185,7 @@ export declare const ShellSchema: import("@astrale-os/sdk/schema").AuthoredSchem
185
185
  readonly extends: readonly [];
186
186
  readonly properties: never;
187
187
  readonly source: {
188
- readonly as: "user";
188
+ readonly as: "member";
189
189
  readonly outgoing: "0..*";
190
190
  };
191
191
  readonly target: {
@@ -240,15 +240,15 @@ export declare const S: schema.ResolvedDomainOf<import("@astrale-os/sdk/schema")
240
240
  readonly icon: import("@astrale-os/sdk/schema").ClassIcon;
241
241
  readonly extends: readonly [import("@astrale-os/sdk/schema").KernelClass<"Identity">, import("@astrale-os/sdk/schema").KernelClass<"Named">, import("@astrale-os/sdk/schema").KernelClass<"Descriptable">];
242
242
  readonly methods: {
243
- readonly assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
244
- user: string;
243
+ readonly assignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
244
+ member: string;
245
245
  group: string;
246
246
  }, {
247
247
  readonly mode: 'value';
248
248
  readonly value: Record<string, never>;
249
249
  }, "authorized", true, false>>;
250
- readonly unassignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
251
- user: string;
250
+ readonly unassignMember: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
251
+ member: string;
252
252
  group: string;
253
253
  }, {
254
254
  readonly mode: 'value';
@@ -262,7 +262,7 @@ export declare const S: schema.ResolvedDomainOf<import("@astrale-os/sdk/schema")
262
262
  readonly extends: readonly [];
263
263
  readonly properties: never;
264
264
  readonly source: {
265
- readonly as: "user";
265
+ readonly as: "member";
266
266
  readonly outgoing: "0..*";
267
267
  };
268
268
  readonly target: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrale-domains/shell",
3
- "version": "0.1.0-beta.27",
3
+ "version": "0.1.0-beta.29",
4
4
  "description": "Astrale Shell Domain schema and remote product implementation",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -58,7 +58,7 @@
58
58
  },
59
59
  "devDependencies": {
60
60
  "@astrale-os/ox": "0.1.4",
61
- "@astrale-os/sdk": "0.5.0-beta.128",
61
+ "@astrale-os/sdk": "0.5.0-beta.131",
62
62
  "@astrale/typescript-config": "npm:@jsr/astrale__typescript-config@~1.1.3",
63
63
  "@types/node": "26.2.0",
64
64
  "happy-dom": "20.11.2",
@@ -67,7 +67,7 @@
67
67
  "vitest": "4.1.10"
68
68
  },
69
69
  "peerDependencies": {
70
- "@astrale-os/sdk": ">=0.5.0-beta.128 <1.0.0"
70
+ "@astrale-os/sdk": ">=0.5.0-beta.131 <1.0.0"
71
71
  },
72
72
  "devEngines": {
73
73
  "runtime": {
package/CHANGELOG.md DELETED
@@ -1,233 +0,0 @@
1
- # Changelog
2
-
3
- ## [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)
4
-
5
-
6
- ### Bug Fixes
7
-
8
- * **domain:** publish compact inferred Kernel references ([#203](https://github.com/astrale-os/shell/issues/203)) ([ab2d0d9](https://github.com/astrale-os/shell/commit/ab2d0d9170ba7cd688f30cae6ece94b140d29ffd))
9
-
10
- ## [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)
11
-
12
-
13
- ### Bug Fixes
14
-
15
- * **domain:** infer public schema and class declarations ([#198](https://github.com/astrale-os/shell/issues/198)) ([d0741db](https://github.com/astrale-os/shell/commit/d0741db4c39c7144d2d93556edf253e277c6113b))
16
-
17
- ## [0.1.0-beta.25](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.24...shell-domain-v0.1.0-beta.25) (2026-09-07)
18
-
19
-
20
- ### ⚠ BREAKING CHANGES
21
-
22
- * **react:** preflight exact-class instance method targets ([#182](https://github.com/astrale-os/shell/issues/182))
23
-
24
- ### Features
25
-
26
- * **react:** preflight exact-class instance method targets ([#182](https://github.com/astrale-os/shell/issues/182)) ([305e92f](https://github.com/astrale-os/shell/commit/305e92f0578309e5e94d8fd78d874f7c5a60ee46))
27
-
28
-
29
- ### Bug Fixes
30
-
31
- * **runtime:** rename Core Identity requirements to core ([#192](https://github.com/astrale-os/shell/issues/192)) ([1c48e06](https://github.com/astrale-os/shell/commit/1c48e06e2db98ab758b2c5f952f2705090b52d43))
32
-
33
- ## [0.1.0-beta.24](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.23...shell-domain-v0.1.0-beta.24) (2026-09-07)
34
-
35
-
36
- ### ⚠ BREAKING CHANGES
37
-
38
- * **runtime:** simplify Shell users, groups and invitations ([#187](https://github.com/astrale-os/shell/issues/187))
39
-
40
- ### Features
41
-
42
- * **domain:** migrate Shell to project environments ([#183](https://github.com/astrale-os/shell/issues/183)) ([ec72b5d](https://github.com/astrale-os/shell/commit/ec72b5d11fea5ff3266d1fd0a823c4eff5cc6d3e))
43
- * **runtime:** simplify Shell users, groups and invitations ([#187](https://github.com/astrale-os/shell/issues/187)) ([7f00279](https://github.com/astrale-os/shell/commit/7f002791edae81944e6e80940834dee49212aa26))
44
-
45
- ## [0.1.0-beta.23](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.22...shell-domain-v0.1.0-beta.23) (2026-09-04)
46
-
47
-
48
- ### Bug Fixes
49
-
50
- * **deps:** align SDK and Kernel release cohort ([#177](https://github.com/astrale-os/shell/issues/177)) ([294ec8f](https://github.com/astrale-os/shell/commit/294ec8f6f7a908afb608a1078e03a84ff2cc09ca))
51
-
52
- ## [0.1.0-beta.22](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.21...shell-domain-v0.1.0-beta.22) (2026-09-03)
53
-
54
-
55
- ### Features
56
-
57
- * **core:** declare required node class icons ([#163](https://github.com/astrale-os/shell/issues/163)) ([2114424](https://github.com/astrale-os/shell/commit/2114424dc1295d978e49536aea76ace897917987))
58
-
59
-
60
- ### Bug Fixes
61
-
62
- * **domain:** authorize installed app discovery ([#164](https://github.com/astrale-os/shell/issues/164)) ([cbcb559](https://github.com/astrale-os/shell/commit/cbcb5594ffa9701ec979333f76f7c5dc3597401e))
63
-
64
- ## [0.1.0-beta.21](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.20...shell-domain-v0.1.0-beta.21) (2026-09-01)
65
-
66
-
67
- ### ⚠ BREAKING CHANGES
68
-
69
- * adopt unified Domain functions layer ([#157](https://github.com/astrale-os/shell/issues/157))
70
-
71
- ### Features
72
-
73
- * adopt unified Domain functions layer ([#157](https://github.com/astrale-os/shell/issues/157)) ([ae73910](https://github.com/astrale-os/shell/commit/ae739107da4b3827ff06f09a1bf86958135a2a5a))
74
-
75
-
76
- ### Bug Fixes
77
-
78
- * **domain:** stabilize executable declarations ([a12caa6](https://github.com/astrale-os/shell/commit/a12caa64cb42d8b7d623a53463ff2f1242d27052))
79
-
80
- ## [0.1.0-beta.20](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.19...shell-domain-v0.1.0-beta.20) (2026-08-31)
81
-
82
-
83
- ### Bug Fixes
84
-
85
- * **core:** complete member syscall profile ([#151](https://github.com/astrale-os/shell/issues/151)) ([961f4d6](https://github.com/astrale-os/shell/commit/961f4d6abc03b193d28a16d5bd21f43ea10c97d9))
86
-
87
- ## [0.1.0-beta.19](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.18...shell-domain-v0.1.0-beta.19) (2026-08-31)
88
-
89
-
90
- ### Bug Fixes
91
-
92
- * **domain:** preserve caller-owned Shell authority ([#143](https://github.com/astrale-os/shell/issues/143)) ([7150ce0](https://github.com/astrale-os/shell/commit/7150ce0890546b6c605f9192aa78177b95af3615))
93
-
94
- ## [0.1.0-beta.18](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.17...shell-domain-v0.1.0-beta.18) (2026-08-30)
95
-
96
-
97
- ### Features
98
-
99
- * grant trusted Shell exchange authority ([#140](https://github.com/astrale-os/shell/issues/140)) ([349c4b5](https://github.com/astrale-os/shell/commit/349c4b593b20245a8cb836f2370807b372faf23f))
100
-
101
-
102
- ### Bug Fixes
103
-
104
- * **deps:** consume Zod-coherent SDK cohort ([#145](https://github.com/astrale-os/shell/issues/145)) ([2d2027c](https://github.com/astrale-os/shell/commit/2d2027c749f83c1e35a5b4a28696761b1f8e71e1))
105
- * **domain:** adopt function and authority requirements ([#144](https://github.com/astrale-os/shell/issues/144)) ([016e306](https://github.com/astrale-os/shell/commit/016e30603591c32a2c8cf0073fe75995c67ae004))
106
-
107
- ## [0.1.0-beta.17](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.16...shell-domain-v0.1.0-beta.17) (2026-08-30)
108
-
109
-
110
- ### Bug Fixes
111
-
112
- * **domain:** require the SDK beta.82 cohort ([#138](https://github.com/astrale-os/shell/issues/138)) ([b37c745](https://github.com/astrale-os/shell/commit/b37c745cdc7c124003b5adb9104b52ca7bd548c1))
113
-
114
- ## [0.1.0-beta.16](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.15...shell-domain-v0.1.0-beta.16) (2026-08-29)
115
-
116
-
117
- ### Bug Fixes
118
-
119
- * **domain:** match beta.49 Kernel dependency ([#133](https://github.com/astrale-os/shell/issues/133)) ([b78db28](https://github.com/astrale-os/shell/commit/b78db28a8eaa7e1dc32dda8de2dacf2c605529a1))
120
- * **domain:** trust Shell with Kernel authority ([#136](https://github.com/astrale-os/shell/issues/136)) ([fa08461](https://github.com/astrale-os/shell/commit/fa084614844995f4e2a0d5fde4d8dee600d48e0c))
121
-
122
- ## [0.1.0-beta.15](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.14...shell-domain-v0.1.0-beta.15) (2026-08-29)
123
-
124
-
125
- ### Features
126
-
127
- * **runtime:** enforce declared iframe requirements ([#129](https://github.com/astrale-os/shell/issues/129)) ([7b8d84a](https://github.com/astrale-os/shell/commit/7b8d84a1189e95c94c2de9f1759b6510a5467813))
128
- * **shell:** adopt flat identity authentication ([#114](https://github.com/astrale-os/shell/issues/114)) ([f267a79](https://github.com/astrale-os/shell/commit/f267a79cd8bd58c29379c4be91b481c5dd20f1cf))
129
-
130
-
131
- ### Bug Fixes
132
-
133
- * **domain:** publish visibility-free Shell bundle ([#131](https://github.com/astrale-os/shell/issues/131)) ([61f48e5](https://github.com/astrale-os/shell/commit/61f48e56f9b18a0b83d395ce1bae648d2470140c))
134
-
135
- ## [0.1.0-beta.14](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.13...shell-domain-v0.1.0-beta.14) (2026-08-27)
136
-
137
-
138
- ### Bug Fixes
139
-
140
- * **domain:** align canonical SDK contracts ([#117](https://github.com/astrale-os/shell/issues/117)) ([78df43d](https://github.com/astrale-os/shell/commit/78df43df4b2878221c7bfc83b32944264b3835e8))
141
-
142
- ## [0.1.0-beta.13](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.12...shell-domain-v0.1.0-beta.13) (2026-08-26)
143
-
144
-
145
- ### Bug Fixes
146
-
147
- * **shell:** align the published Shell cohort ([#109](https://github.com/astrale-os/shell/issues/109)) ([6c79cb6](https://github.com/astrale-os/shell/commit/6c79cb6f0370aad84565dda27d2af1a5579c18ff))
148
-
149
-
150
- ### Documentation
151
-
152
- * document current Shell user registration journey ([#107](https://github.com/astrale-os/shell/issues/107)) ([b1fee2a](https://github.com/astrale-os/shell/commit/b1fee2a023d0e4e5661d90f862a74b54a0613cf1))
153
-
154
- ## [0.1.0-beta.12](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.11...shell-domain-v0.1.0-beta.12) (2026-08-26)
155
-
156
-
157
- ### Bug Fixes
158
-
159
- * **deps:** release current Shell contracts ([#104](https://github.com/astrale-os/shell/issues/104)) ([1412891](https://github.com/astrale-os/shell/commit/141289136f83228be0c5f808f3024792749b203b))
160
-
161
- ## [0.1.0-beta.11](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.10...shell-domain-v0.1.0-beta.11) (2026-08-25)
162
-
163
-
164
- ### Bug Fixes
165
-
166
- * **deploy:** consume current SDK toolchain ([#96](https://github.com/astrale-os/shell/issues/96)) ([73956a0](https://github.com/astrale-os/shell/commit/73956a05a2c9e107afedfa7b1878716644074bc1))
167
- * **deps:** consume cloudflare adapter beta.44 ([#101](https://github.com/astrale-os/shell/issues/101)) ([7e9f214](https://github.com/astrale-os/shell/commit/7e9f214fe06979d5e1a7f4ca3b00cf431ab50944))
168
- * **domain:** isolate public schema declaration ([#102](https://github.com/astrale-os/shell/issues/102)) ([ccdd6f3](https://github.com/astrale-os/shell/commit/ccdd6f33c2af1da3372357d70af0bbb8066e6efe))
169
- * **domain:** narrow existing user profile queries ([6d5815a](https://github.com/astrale-os/shell/commit/6d5815ab6b3ef8e452f3f198167d7e78ed34c3f4))
170
- * **runtime:** converge existing Shell users ([596e3db](https://github.com/astrale-os/shell/commit/596e3dbbb871ae8986d92777521182ea8ffc5a7c))
171
-
172
- ## [0.1.0-beta.10](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.9...shell-domain-v0.1.0-beta.10) (2026-08-25)
173
-
174
-
175
- ### Bug Fixes
176
-
177
- * **domain:** expose isolated deployment entrypoints ([#91](https://github.com/astrale-os/shell/issues/91)) ([542a300](https://github.com/astrale-os/shell/commit/542a3001f58b84871017bfe20cd5c15b61647d11))
178
-
179
- ## [0.1.0-beta.9](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.8...shell-domain-v0.1.0-beta.9) (2026-08-25)
180
-
181
-
182
- ### Bug Fixes
183
-
184
- * **packages:** keep install guards private ([#71](https://github.com/astrale-os/shell/issues/71)) ([20a34ee](https://github.com/astrale-os/shell/commit/20a34eeafea868f31663b3076928c3528f4e1aec))
185
-
186
- ## [0.1.0-beta.8](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.7...shell-domain-v0.1.0-beta.8) (2026-08-24)
187
-
188
-
189
- ### Bug Fixes
190
-
191
- * **deps:** align Shell packages with SDK beta.22 ([#65](https://github.com/astrale-os/shell/issues/65)) ([18db939](https://github.com/astrale-os/shell/commit/18db93958e64678f9c000e258c12a97525fa95ef))
192
-
193
- ## [0.1.0-beta.7](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.6...shell-domain-v0.1.0-beta.7) (2026-08-24)
194
-
195
-
196
- ### Bug Fixes
197
-
198
- * **release:** preserve SDK dependency ownership ([#62](https://github.com/astrale-os/shell/issues/62)) ([5199f73](https://github.com/astrale-os/shell/commit/5199f7358a64cfb1163ebb6d13c94a8b8080bcc1))
199
-
200
- ## [0.1.0-beta.6](https://github.com/astrale-os/shell/compare/shell-domain-v0.1.0-beta.5...shell-domain-v0.1.0-beta.6) (2026-08-24)
201
-
202
-
203
- ### Features
204
-
205
- * adopt Kernel V2 at the Shell client boundary ([6654ef7](https://github.com/astrale-os/shell/commit/6654ef7989691664af777824be2c97a2906b4008))
206
- * **domain:** deploy shell through default adapter ([ea96d06](https://github.com/astrale-os/shell/commit/ea96d06180ba65b67dda24ad25c95da621796f17))
207
- * **domain:** deploy Shell through default adapter ([43bc418](https://github.com/astrale-os/shell/commit/43bc418952666d7aac26194134c2776b58c355e7))
208
- * **domain:** publish @astrale-domains/shell ([905488b](https://github.com/astrale-os/shell/commit/905488b647e73793eb18ec50e5b06f763b7630e8))
209
- * **domain:** publish semantic Shell package ([959560c](https://github.com/astrale-os/shell/commit/959560c26e9b86a402b0f252f0a4763d76fd1e8a))
210
- * **shell:** author graph operations with direct node targets ([a189028](https://github.com/astrale-os/shell/commit/a189028cee3d5f14678325c713b9439487c9e224))
211
- * **shell:** author graph operations with node targets ([97f0599](https://github.com/astrale-os/shell/commit/97f05997bb34e8935349dbb6f5b9e55a2432cca3))
212
-
213
-
214
- ### Bug Fixes
215
-
216
- * adopt current Shell domain bindings ([121c7be](https://github.com/astrale-os/shell/commit/121c7bea57ad1bf4cedbab90ed8cba8f59955f06))
217
- * adopt source cohort domain bindings ([bf79155](https://github.com/astrale-os/shell/commit/bf7915555d7152b2e70127b54a1e8b4fdc269b04))
218
- * adopt the official kernel cohort ([#47](https://github.com/astrale-os/shell/issues/47)) ([c15a5b0](https://github.com/astrale-os/shell/commit/c15a5b0d8c9f4c3f6dd49bf122cfea09c4af42da))
219
- * align Shell with current Kernel cohort ([d1abeaf](https://github.com/astrale-os/shell/commit/d1abeaf2a418e7e6bf89ea85512cd0e8942d407b))
220
- * **ci:** publish semantic Shell on npm ([2ba1532](https://github.com/astrale-os/shell/commit/2ba1532f07d3b155d0456596c4b3d1e9bca31fdb))
221
- * **ci:** qualify Node 24 and standalone Domain ([873d70a](https://github.com/astrale-os/shell/commit/873d70aa71013de0096ec31c774ad33cc355800a))
222
- * **ci:** qualify Shell domain cohort ([a182141](https://github.com/astrale-os/shell/commit/a1821414552bd9fa5a7083086c7130b5ca27879b))
223
- * **ci:** use npmjs for standalone domain ([aafe1a7](https://github.com/astrale-os/shell/commit/aafe1a7dbb494c0acbb09282cc9162fe8bcbd767))
224
- * **deps:** require sdk runtime context ([91cf38d](https://github.com/astrale-os/shell/commit/91cf38d9d02aa92892a42e789d6f6393b7a318e1))
225
- * **domain:** align deployment with current SDK ([7a5fbae](https://github.com/astrale-os/shell/commit/7a5fbae7283aac0bb9f1aebd7b7bb0a753a1ba15))
226
- * **domain:** prove remote shell authority ([fad6dc5](https://github.com/astrale-os/shell/commit/fad6dc54e3686567282c8aee779a117bfbb7c6c5))
227
- * **domain:** publish the semantic Shell package ([c049a9d](https://github.com/astrale-os/shell/commit/c049a9dd581a569965907f549ef784bff03a37d3))
228
- * **domain:** refresh standalone dependency lock ([d4f09e0](https://github.com/astrale-os/shell/commit/d4f09e07f578763f079095bb05a268faf739aa1f))
229
- * **domain:** use the published SDK boundary ([2e494c6](https://github.com/astrale-os/shell/commit/2e494c6f8b4d3d25c71bbe51b37436fd35d6c42a))
230
- * preserve the shell domain package contract ([#49](https://github.com/astrale-os/shell/issues/49)) ([e187889](https://github.com/astrale-os/shell/commit/e18788936fa4f4cb15e4fbc7d0f28eaff0cbd543))
231
- * qualify the Shell release cohort ([8f837e1](https://github.com/astrale-os/shell/commit/8f837e1bf14600db18b96da6de7878f34321332c))
232
- * qualify the Shell release cohort ([efb23d7](https://github.com/astrale-os/shell/commit/efb23d71088a407209a01cec33e5571d86ecde51))
233
- * **release:** qualify published sdk runtime context ([b1411a0](https://github.com/astrale-os/shell/commit/b1411a01710bab785b31c02c81ea09bc902f4e42))
@@ -1,4 +0,0 @@
1
- import { defineWorkflow } from '@astrale-os/sdk/workflow';
2
- import { changeGroupMembership } from './change-user-group-membership.js';
3
- import { groupMembershipErrors } from './group-membership-errors.js';
4
- export const assignUser = defineWorkflow()('Group.assignUser', { errors: groupMembershipErrors }, (context) => changeGroupMembership(context, true));
@@ -1,7 +0,0 @@
1
- export declare const assignUser: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
2
- user: string;
3
- group: string;
4
- }, {
5
- readonly mode: 'value';
6
- readonly value: Record<string, never>;
7
- }, "authorized", true, false>>;