@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.
- package/README.md +29 -7
- package/dist/application.d.ts +5 -5
- package/dist/application.js +2 -2
- package/dist/functions/group/{unassign-user-from-group.d.ts → assign-member-to-group.d.ts} +8 -8
- 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/{assign-user-to-group.d.ts → unassign-member-from-group.d.ts} +8 -8
- package/dist/functions/group/unassign-member-from-group.js +4 -0
- package/dist/functions/user/invite-user.d.ts +5 -5
- package/dist/mutations/group/index.d.ts +1 -1
- package/dist/mutations/group/index.js +1 -1
- package/dist/mutations/group/{set-user-group-membership.d.ts → set-group-membership.d.ts} +6 -6
- 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 +6 -6
- package/dist/queries/group/read-group-membership-endpoints.js +2 -2
- package/dist/queries/group/{read-user-group-membership.d.ts → read-group-membership.d.ts} +6 -6
- package/dist/queries/group/{read-user-group-membership.js → read-group-membership.js} +2 -2
- package/dist/runtime.d.ts +19 -19
- package/dist/runtime.js +2 -2
- package/dist/schema/modules/group/classes/group.d.ts +4 -4
- 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/schema.d.ts +20 -20
- package/package.json +3 -3
- package/CHANGELOG.md +0 -233
- package/dist/functions/group/assign-user-to-group.js +0 -4
- 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.
|
|
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.
|
package/dist/application.d.ts
CHANGED
|
@@ -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
|
|
31
|
-
|
|
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
|
|
38
|
-
|
|
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: "
|
|
52
|
+
readonly as: "member";
|
|
53
53
|
readonly outgoing: "0..*";
|
|
54
54
|
};
|
|
55
55
|
readonly target: {
|
package/dist/application.js
CHANGED
|
@@ -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.
|
|
29
|
-
S.classes.Group.static.methods.
|
|
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
|
|
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
|
|
28
|
-
|
|
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
|
|
35
|
-
|
|
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: "
|
|
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.
|
|
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: '
|
|
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-
|
|
2
|
+
import { changeGroupMembership } from './change-group-membership.js';
|
|
3
3
|
import { groupMembershipErrors } from './group-membership-errors.js';
|
|
4
|
-
export const
|
|
4
|
+
export const assignMember = defineWorkflow()('Group.assignMember', { errors: groupMembershipErrors }, (context) => changeGroupMembership(context, true));
|
package/dist/functions/group/{change-user-group-membership.d.ts → change-group-membership.d.ts}
RENAMED
|
@@ -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.
|
|
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
|
-
|
|
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: '
|
|
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: '
|
|
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 {
|
|
2
|
-
export {
|
|
1
|
+
export { assignMember } from './assign-member-to-group.js';
|
|
2
|
+
export { unassignMember } from './unassign-member-from-group.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
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
|
|
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
|
|
28
|
-
|
|
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
|
|
35
|
-
|
|
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: "
|
|
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.
|
|
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: '
|
|
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
|
|
29
|
-
|
|
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
|
|
36
|
-
|
|
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: "
|
|
50
|
+
readonly as: "member";
|
|
51
51
|
readonly outgoing: "0..*";
|
|
52
52
|
};
|
|
53
53
|
readonly target: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { setGroupMembership } from './set-
|
|
1
|
+
export { setGroupMembership } from './set-group-membership.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { setGroupMembership } from './set-
|
|
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
|
|
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
|
|
52
|
-
|
|
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
|
|
59
|
-
|
|
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: "
|
|
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.
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
39
|
-
|
|
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
|
|
46
|
-
|
|
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: "
|
|
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: ({
|
|
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.
|
|
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
|
|
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
|
|
42
|
-
|
|
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
|
|
49
|
-
|
|
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: "
|
|
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({
|
|
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:
|
|
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
|
|
42
|
-
|
|
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
|
|
49
|
-
|
|
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: "
|
|
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
|
|
145
|
-
|
|
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
|
|
152
|
-
|
|
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: "
|
|
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.
|
|
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: '
|
|
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
|
|
246
|
-
|
|
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
|
|
253
|
-
|
|
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: "
|
|
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.
|
|
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: '
|
|
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 {
|
|
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,
|
|
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
|
|
6
|
-
|
|
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
|
|
13
|
-
|
|
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 {
|
|
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: {
|
|
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: "
|
|
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: {
|
|
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
|
|
2
|
-
|
|
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';
|
package/dist/schema/modules/group/functions/{assign-user-to-group.js → assign-member-to-group.js}
RENAMED
|
@@ -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
|
|
5
|
+
export const assignMember = method({
|
|
6
6
|
static: true,
|
|
7
7
|
auth: 'authorized',
|
|
8
8
|
input: groupMembershipInput,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { assignMember } from './assign-member-to-group.js';
|
|
2
|
+
export { unassignMember } from './unassign-member-from-group.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
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
|
|
5
|
+
export const unassignMember = method({
|
|
6
6
|
static: true,
|
|
7
7
|
auth: 'authorized',
|
|
8
8
|
input: groupMembershipInput,
|
package/dist/schema/modules/group/types/{group-user-reference.d.ts → group-membership-input.d.ts}
RENAMED
|
@@ -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
|
-
|
|
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>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { groupMembershipInput } from './group-
|
|
1
|
+
export { groupMembershipInput } from './group-membership-input.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { groupMembershipInput } from './group-
|
|
1
|
+
export { groupMembershipInput } from './group-membership-input.js';
|
package/dist/schema/schema.d.ts
CHANGED
|
@@ -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
|
|
29
|
-
|
|
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
|
|
36
|
-
|
|
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: "
|
|
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
|
|
92
|
-
|
|
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
|
|
99
|
-
|
|
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: "
|
|
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
|
|
167
|
-
|
|
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
|
|
174
|
-
|
|
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: "
|
|
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
|
|
244
|
-
|
|
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
|
|
251
|
-
|
|
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: "
|
|
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.
|
|
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.
|
|
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.
|
|
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));
|