@headless-lms/server 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/app/community-mail.d.ts +10 -10
- package/dist/app/community-mail.js +72 -28
- package/dist/app/community-mail.js.map +1 -1
- package/dist/app/container.d.ts +48 -10
- package/dist/app/container.js +268 -48
- package/dist/app/container.js.map +1 -1
- package/dist/app/notification-channels.d.ts +47 -0
- package/dist/app/notification-channels.js +175 -0
- package/dist/app/notification-channels.js.map +1 -0
- package/dist/app/notification-reads.d.ts +23 -0
- package/dist/app/notification-reads.js +74 -0
- package/dist/app/notification-reads.js.map +1 -0
- package/dist/app/platform.d.ts +14 -0
- package/dist/app/platform.js +14 -0
- package/dist/app/platform.js.map +1 -0
- package/dist/http/config.d.ts +4 -0
- package/dist/http/errors.d.ts +1 -0
- package/dist/http/errors.js +24 -4
- package/dist/http/errors.js.map +1 -1
- package/dist/http/fastify.d.ts +8 -0
- package/dist/http/mcp/catalogue.d.ts +11 -9
- package/dist/http/mcp/catalogue.js +15 -21
- package/dist/http/mcp/catalogue.js.map +1 -1
- package/dist/http/mcp/challenge.js +3 -3
- package/dist/http/mcp/challenge.js.map +1 -1
- package/dist/http/mcp/route.js +7 -7
- package/dist/http/mcp/route.js.map +1 -1
- package/dist/http/mcp/test-support.d.ts +6 -5
- package/dist/http/mcp/test-support.js +32 -11
- package/dist/http/mcp/test-support.js.map +1 -1
- package/dist/http/mcp/tool.d.ts +3 -9
- package/dist/http/mcp/tool.js +14 -6
- package/dist/http/mcp/tool.js.map +1 -1
- package/dist/http/mcp/tools/automations.js +10 -20
- package/dist/http/mcp/tools/automations.js.map +1 -1
- package/dist/http/mcp/tools/catalog.js +25 -42
- package/dist/http/mcp/tools/catalog.js.map +1 -1
- package/dist/http/mcp/tools/comments.js +9 -19
- package/dist/http/mcp/tools/comments.js.map +1 -1
- package/dist/http/mcp/tools/communities.js +16 -31
- package/dist/http/mcp/tools/communities.js.map +1 -1
- package/dist/http/mcp/tools/community-members.js +9 -16
- package/dist/http/mcp/tools/community-members.js.map +1 -1
- package/dist/http/mcp/tools/community-moderation.js +13 -25
- package/dist/http/mcp/tools/community-moderation.js.map +1 -1
- package/dist/http/mcp/tools/courses.js +11 -21
- package/dist/http/mcp/tools/courses.js.map +1 -1
- package/dist/http/mcp/tools/events.d.ts +6 -0
- package/dist/http/mcp/tools/events.js +170 -0
- package/dist/http/mcp/tools/events.js.map +1 -0
- package/dist/http/mcp/tools/index.d.ts +5 -1
- package/dist/http/mcp/tools/index.js +45 -10
- package/dist/http/mcp/tools/index.js.map +1 -1
- package/dist/http/mcp/tools/organization.d.ts +6 -0
- package/dist/http/mcp/tools/organization.js +214 -0
- package/dist/http/mcp/tools/organization.js.map +1 -0
- package/dist/http/mcp/tools/people.js +30 -49
- package/dist/http/mcp/tools/people.js.map +1 -1
- package/dist/http/plugins/auth.js +37 -8
- package/dist/http/plugins/auth.js.map +1 -1
- package/dist/http/plugins/error-handler.d.ts +5 -1
- package/dist/http/plugins/error-handler.js +13 -3
- package/dist/http/plugins/error-handler.js.map +1 -1
- package/dist/http/plugins/openapi.js +18 -2
- package/dist/http/plugins/openapi.js.map +1 -1
- package/dist/http/plugins/platform.d.ts +7 -0
- package/dist/http/plugins/platform.js +13 -0
- package/dist/http/plugins/platform.js.map +1 -0
- package/dist/http/routes/access.js +54 -36
- package/dist/http/routes/access.js.map +1 -1
- package/dist/http/routes/activities.js +45 -45
- package/dist/http/routes/activities.js.map +1 -1
- package/dist/http/routes/assets.js +30 -65
- package/dist/http/routes/assets.js.map +1 -1
- package/dist/http/routes/automations.js +37 -42
- package/dist/http/routes/automations.js.map +1 -1
- package/dist/http/routes/bundles.js +33 -36
- package/dist/http/routes/bundles.js.map +1 -1
- package/dist/http/routes/communities.js +144 -136
- package/dist/http/routes/communities.js.map +1 -1
- package/dist/http/routes/community-moderation.js +83 -137
- package/dist/http/routes/community-moderation.js.map +1 -1
- package/dist/http/routes/course-analytics.js +32 -15
- package/dist/http/routes/course-analytics.js.map +1 -1
- package/dist/http/routes/courses.js +25 -32
- package/dist/http/routes/courses.js.map +1 -1
- package/dist/http/routes/dashboard.js +9 -9
- package/dist/http/routes/dashboard.js.map +1 -1
- package/dist/http/routes/discussion.js +21 -39
- package/dist/http/routes/discussion.js.map +1 -1
- package/dist/http/routes/downloads.js +41 -47
- package/dist/http/routes/downloads.js.map +1 -1
- package/dist/http/routes/entitlements.js +19 -23
- package/dist/http/routes/entitlements.js.map +1 -1
- package/dist/http/routes/events.d.ts +7 -0
- package/dist/http/routes/events.js +333 -0
- package/dist/http/routes/events.js.map +1 -0
- package/dist/http/routes/integrations.js +40 -73
- package/dist/http/routes/integrations.js.map +1 -1
- package/dist/http/routes/member/assets.js +10 -13
- package/dist/http/routes/member/assets.js.map +1 -1
- package/dist/http/routes/member/chats.js +177 -75
- package/dist/http/routes/member/chats.js.map +1 -1
- package/dist/http/routes/member/comments.js +65 -26
- package/dist/http/routes/member/comments.js.map +1 -1
- package/dist/http/routes/member/community.js +68 -51
- package/dist/http/routes/member/community.js.map +1 -1
- package/dist/http/routes/member/courses.js +12 -19
- package/dist/http/routes/member/courses.js.map +1 -1
- package/dist/http/routes/member/devices.d.ts +7 -0
- package/dist/http/routes/member/devices.js +97 -0
- package/dist/http/routes/member/devices.js.map +1 -0
- package/dist/http/routes/member/downloads.js +6 -9
- package/dist/http/routes/member/downloads.js.map +1 -1
- package/dist/http/routes/member/events.d.ts +7 -0
- package/dist/http/routes/member/events.js +386 -0
- package/dist/http/routes/member/events.js.map +1 -0
- package/dist/http/routes/member/files.js +71 -46
- package/dist/http/routes/member/files.js.map +1 -1
- package/dist/http/routes/member/index.js +6 -0
- package/dist/http/routes/member/index.js.map +1 -1
- package/dist/http/routes/member/notification-settings.d.ts +7 -0
- package/dist/http/routes/member/notification-settings.js +100 -0
- package/dist/http/routes/member/notification-settings.js.map +1 -0
- package/dist/http/routes/member/notifications.js +69 -45
- package/dist/http/routes/member/notifications.js.map +1 -1
- package/dist/http/routes/member/org.js +5 -15
- package/dist/http/routes/member/org.js.map +1 -1
- package/dist/http/routes/member/posts.js +94 -95
- package/dist/http/routes/member/posts.js.map +1 -1
- package/dist/http/routes/member/profile.js +15 -6
- package/dist/http/routes/member/profile.js.map +1 -1
- package/dist/http/routes/member/progress.js +7 -11
- package/dist/http/routes/member/progress.js.map +1 -1
- package/dist/http/routes/organizations.js +415 -110
- package/dist/http/routes/organizations.js.map +1 -1
- package/dist/http/routes/platform.d.ts +7 -0
- package/dist/http/routes/platform.js +61 -0
- package/dist/http/routes/platform.js.map +1 -0
- package/dist/http/routes/students.js +12 -75
- package/dist/http/routes/students.js.map +1 -1
- package/dist/http/routes/webhooks.js +30 -39
- package/dist/http/routes/webhooks.js.map +1 -1
- package/dist/http/routes.js +9 -0
- package/dist/http/routes.js.map +1 -1
- package/dist/http/schemas/access.d.ts +346 -64
- package/dist/http/schemas/access.js +39 -12
- package/dist/http/schemas/access.js.map +1 -1
- package/dist/http/schemas/assets.d.ts +13 -8
- package/dist/http/schemas/assets.js +6 -5
- package/dist/http/schemas/assets.js.map +1 -1
- package/dist/http/schemas/automations.d.ts +4 -8
- package/dist/http/schemas/chats.d.ts +238 -36
- package/dist/http/schemas/chats.js +14 -7
- package/dist/http/schemas/chats.js.map +1 -1
- package/dist/http/schemas/community.d.ts +140 -33
- package/dist/http/schemas/community.js +25 -9
- package/dist/http/schemas/community.js.map +1 -1
- package/dist/http/schemas/course-analytics.d.ts +51 -1
- package/dist/http/schemas/course-analytics.js +19 -1
- package/dist/http/schemas/course-analytics.js.map +1 -1
- package/dist/http/schemas/dashboard.d.ts +1 -0
- package/dist/http/schemas/dashboard.js +2 -1
- package/dist/http/schemas/dashboard.js.map +1 -1
- package/dist/http/schemas/discussion.d.ts +45 -73
- package/dist/http/schemas/discussion.js +16 -4
- package/dist/http/schemas/discussion.js.map +1 -1
- package/dist/http/schemas/entitlements.d.ts +9 -12
- package/dist/http/schemas/entitlements.js +11 -5
- package/dist/http/schemas/entitlements.js.map +1 -1
- package/dist/http/schemas/events.d.ts +527 -0
- package/dist/http/schemas/events.js +64 -0
- package/dist/http/schemas/events.js.map +1 -0
- package/dist/http/schemas/files.d.ts +15 -5
- package/dist/http/schemas/files.js +10 -2
- package/dist/http/schemas/files.js.map +1 -1
- package/dist/http/schemas/index.d.ts +14 -12
- package/dist/http/schemas/index.js +14 -12
- package/dist/http/schemas/invites.d.ts +3 -47
- package/dist/http/schemas/invites.js +4 -25
- package/dist/http/schemas/invites.js.map +1 -1
- package/dist/http/schemas/member.d.ts +94 -7
- package/dist/http/schemas/member.js +7 -3
- package/dist/http/schemas/member.js.map +1 -1
- package/dist/http/schemas/members.d.ts +329 -65
- package/dist/http/schemas/members.js +67 -25
- package/dist/http/schemas/members.js.map +1 -1
- package/dist/http/schemas/notifications.d.ts +502 -175
- package/dist/http/schemas/notifications.js +148 -28
- package/dist/http/schemas/notifications.js.map +1 -1
- package/dist/http/schemas/platform.d.ts +37 -0
- package/dist/http/schemas/platform.js +19 -0
- package/dist/http/schemas/platform.js.map +1 -0
- package/dist/http/schemas/posts.d.ts +92 -38
- package/dist/http/schemas/posts.js +4 -4
- package/dist/http/schemas/posts.js.map +1 -1
- package/dist/http/schemas/profile.d.ts +1 -1
- package/dist/http/schemas/shared.d.ts +10 -13
- package/dist/http/schemas/shared.js +3 -11
- package/dist/http/schemas/shared.js.map +1 -1
- package/dist/http/schemas/students.d.ts +22 -0
- package/dist/http/schemas/students.js +3 -1
- package/dist/http/schemas/students.js.map +1 -1
- package/dist/http/scope.d.ts +9 -12
- package/dist/http/scope.js +30 -35
- package/dist/http/scope.js.map +1 -1
- package/dist/http/server.js +9 -0
- package/dist/http/server.js.map +1 -1
- package/dist/http/shutdown.d.ts +11 -0
- package/dist/http/shutdown.js +40 -0
- package/dist/http/shutdown.js.map +1 -0
- package/dist/http/sse.d.ts +19 -0
- package/dist/http/sse.js +104 -0
- package/dist/http/sse.js.map +1 -0
- package/dist/http/test-caller.d.ts +13 -0
- package/dist/http/test-caller.js +14 -0
- package/dist/http/test-caller.js.map +1 -0
- package/dist/http/well-known.js +2 -2
- package/dist/http/well-known.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/packages/server/package.js +1 -1
- package/package.json +7 -6
- package/dist/http/routes/member/actor.d.ts +0 -14
- package/dist/http/routes/member/actor.js +0 -11
- package/dist/http/routes/member/actor.js.map +0 -1
|
@@ -1,172 +1,157 @@
|
|
|
1
1
|
import { CommunitiesQuery, CommunityIdParam, CommunitySpaceParam, CreateCommunity, CreateSpace, OrderedIds, PatchDmSettings, SetSpaceTopics, SpaceLinkBody, SpaceLinkParam, UpdateCommunity, UpdateSpace } from "../../schemas/community.js";
|
|
2
2
|
import "../../schemas/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { defineTool } from "../tool.js";
|
|
4
4
|
//#region src/http/mcp/tools/communities.ts
|
|
5
5
|
const communityTools = [
|
|
6
6
|
defineTool({
|
|
7
7
|
name: "list_communities",
|
|
8
8
|
title: "List communities",
|
|
9
9
|
description: "Search and page through the communities, drafts included, each with its status and direct-message settings. Filter by status, search by title.",
|
|
10
|
-
scope: "communities:read",
|
|
11
10
|
kind: "read",
|
|
12
11
|
idempotent: true,
|
|
13
12
|
openWorld: false,
|
|
14
13
|
input: CommunitiesQuery,
|
|
15
|
-
call: (input, { container,
|
|
14
|
+
call: (input, { container, caller }) => container.content.listCommunities(input, caller.actor)
|
|
16
15
|
}),
|
|
17
16
|
defineTool({
|
|
18
17
|
name: "list_spaces",
|
|
19
18
|
title: "List spaces",
|
|
20
19
|
description: "The spaces of a community, in order, each with its access rule, topics and links.",
|
|
21
|
-
scope: "communities:read",
|
|
22
20
|
kind: "read",
|
|
23
21
|
idempotent: true,
|
|
24
22
|
openWorld: false,
|
|
25
23
|
input: CommunityIdParam,
|
|
26
|
-
call: ({ communityId }, { container,
|
|
24
|
+
call: ({ communityId }, { container, caller }) => container.content.listSpaces(communityId, caller.actor)
|
|
27
25
|
}),
|
|
28
26
|
defineTool({
|
|
29
27
|
name: "create_community",
|
|
30
28
|
title: "Create community",
|
|
31
29
|
description: "Create a draft community with the default direct-message settings and no spaces. Add spaces with create_space and publish it with update_community.",
|
|
32
|
-
scope: "communities:write",
|
|
33
30
|
kind: "write",
|
|
34
31
|
idempotent: false,
|
|
35
32
|
openWorld: false,
|
|
36
33
|
input: CreateCommunity,
|
|
37
|
-
call: (input, { container,
|
|
34
|
+
call: (input, { container, caller }) => container.content.createCommunity(input, caller.actor)
|
|
38
35
|
}),
|
|
39
36
|
defineTool({
|
|
40
37
|
name: "update_community",
|
|
41
38
|
title: "Update community",
|
|
42
39
|
description: "Change a community title, description or cover image, or publish and unpublish it with status. The cover must be a ready image from list_media; null clears it. Fields left out stay as they are.",
|
|
43
|
-
scope: "communities:write",
|
|
44
40
|
kind: "write",
|
|
45
41
|
idempotent: true,
|
|
46
42
|
openWorld: false,
|
|
47
43
|
input: UpdateCommunity.extend(CommunityIdParam.shape),
|
|
48
|
-
call: ({ communityId, ...input }, { container,
|
|
44
|
+
call: ({ communityId, ...input }, { container, caller }) => container.content.updateCommunity(communityId, input, caller.actor)
|
|
49
45
|
}),
|
|
50
46
|
defineTool({
|
|
51
47
|
name: "update_community_messaging",
|
|
52
48
|
title: "Update community messaging",
|
|
53
49
|
description: "Change the direct-message settings of a community: who may message whom from now on. Settings left out stay as they are.",
|
|
54
|
-
scope: "communities:write",
|
|
55
50
|
kind: "write",
|
|
56
51
|
idempotent: true,
|
|
57
52
|
openWorld: false,
|
|
58
53
|
input: PatchDmSettings.extend(CommunityIdParam.shape),
|
|
59
|
-
call: ({ communityId, ...input }, { container,
|
|
54
|
+
call: ({ communityId, ...input }, { container, caller }) => container.content.patchCommunitySettings(communityId, input, caller.actor)
|
|
60
55
|
}),
|
|
61
56
|
defineTool({
|
|
62
57
|
name: "create_space",
|
|
63
58
|
title: "Create space",
|
|
64
59
|
description: "Add a space at the end of a community. Its access rule decides who can open it: all members, by request or by invite. A space open to all members cannot have a capacity.",
|
|
65
|
-
scope: "communities:write",
|
|
66
60
|
kind: "write",
|
|
67
61
|
idempotent: false,
|
|
68
62
|
openWorld: false,
|
|
69
63
|
input: CreateSpace.extend(CommunityIdParam.shape),
|
|
70
|
-
call: ({ communityId, ...input }, { container,
|
|
64
|
+
call: ({ communityId, ...input }, { container, caller }) => container.content.createSpace(communityId, input, caller.actor)
|
|
71
65
|
}),
|
|
72
66
|
defineTool({
|
|
73
67
|
name: "update_space",
|
|
74
68
|
title: "Update space",
|
|
75
69
|
description: "Change a space name, description, access rule, capacity or settings. settings merges into the current settings. Fields left out stay as they are.",
|
|
76
|
-
scope: "communities:write",
|
|
77
70
|
kind: "write",
|
|
78
71
|
idempotent: true,
|
|
79
72
|
openWorld: false,
|
|
80
73
|
input: UpdateSpace.extend(CommunitySpaceParam.shape),
|
|
81
|
-
call: ({ communityId, spaceId, ...input }, { container,
|
|
74
|
+
call: ({ communityId, spaceId, ...input }, { container, caller }) => container.content.updateSpace(communityId, spaceId, input, caller.actor)
|
|
82
75
|
}),
|
|
83
76
|
defineTool({
|
|
84
77
|
name: "reorder_spaces",
|
|
85
78
|
title: "Reorder spaces",
|
|
86
79
|
description: "Set the space order of a community. Pass every space id of the community in the new order.",
|
|
87
|
-
scope: "communities:write",
|
|
88
80
|
kind: "write",
|
|
89
81
|
idempotent: true,
|
|
90
82
|
openWorld: false,
|
|
91
83
|
input: OrderedIds.extend(CommunityIdParam.shape),
|
|
92
|
-
call: ({ communityId, ids }, { container,
|
|
84
|
+
call: ({ communityId, ids }, { container, caller }) => container.content.reorderSpaces(communityId, ids, caller.actor)
|
|
93
85
|
}),
|
|
94
86
|
defineTool({
|
|
95
87
|
name: "set_space_topics",
|
|
96
88
|
title: "Set space topics",
|
|
97
89
|
description: "Replace the topics of a space. An entry with an id keeps and renames that topic, one without adds a topic, and a topic left out is deleted. A topic that posts use cannot be deleted.",
|
|
98
|
-
scope: "communities:write",
|
|
99
90
|
kind: "write",
|
|
100
91
|
idempotent: true,
|
|
101
92
|
openWorld: false,
|
|
102
93
|
input: SetSpaceTopics.extend(CommunitySpaceParam.shape),
|
|
103
|
-
call: ({ communityId, spaceId, ...input }, { container,
|
|
94
|
+
call: ({ communityId, spaceId, ...input }, { container, caller }) => container.content.setSpaceTopics(communityId, spaceId, input, caller.actor)
|
|
104
95
|
}),
|
|
105
96
|
defineTool({
|
|
106
97
|
name: "add_space_link",
|
|
107
98
|
title: "Add space link",
|
|
108
99
|
description: "Link a course, download or community into a space, after its other links. Returns the space.",
|
|
109
|
-
scope: "communities:write",
|
|
110
100
|
kind: "write",
|
|
111
101
|
idempotent: false,
|
|
112
102
|
openWorld: false,
|
|
113
103
|
input: SpaceLinkBody.extend(CommunitySpaceParam.shape),
|
|
114
|
-
call: ({ communityId, spaceId, contentId }, { container,
|
|
104
|
+
call: ({ communityId, spaceId, contentId }, { container, caller }) => container.content.addSpaceLink(communityId, spaceId, contentId, caller.actor)
|
|
115
105
|
}),
|
|
116
106
|
defineTool({
|
|
117
107
|
name: "reorder_space_links",
|
|
118
108
|
title: "Reorder space links",
|
|
119
109
|
description: "Set the link order of a space. Pass every link id of the space in the new order.",
|
|
120
|
-
scope: "communities:write",
|
|
121
110
|
kind: "write",
|
|
122
111
|
idempotent: true,
|
|
123
112
|
openWorld: false,
|
|
124
113
|
input: OrderedIds.extend(CommunitySpaceParam.shape),
|
|
125
|
-
call: ({ communityId, spaceId, ids }, { container,
|
|
114
|
+
call: ({ communityId, spaceId, ids }, { container, caller }) => container.content.reorderSpaceLinks(communityId, spaceId, ids, caller.actor)
|
|
126
115
|
}),
|
|
127
116
|
defineTool({
|
|
128
117
|
name: "remove_space_link",
|
|
129
118
|
title: "Remove space link",
|
|
130
119
|
description: "Take a link out of a space. The linked content itself is kept. Returns the space.",
|
|
131
|
-
scope: "communities:write",
|
|
132
120
|
kind: "destructive",
|
|
133
121
|
idempotent: true,
|
|
134
122
|
openWorld: false,
|
|
135
123
|
input: SpaceLinkParam,
|
|
136
|
-
call: ({ communityId, spaceId, linkId }, { container,
|
|
124
|
+
call: ({ communityId, spaceId, linkId }, { container, caller }) => container.content.removeSpaceLink(communityId, spaceId, linkId, caller.actor)
|
|
137
125
|
}),
|
|
138
126
|
defineTool({
|
|
139
127
|
name: "delete_space",
|
|
140
128
|
title: "Delete space",
|
|
141
129
|
description: "Permanently delete a space with its posts, comments and members.",
|
|
142
|
-
scope: "communities:delete",
|
|
143
130
|
kind: "destructive",
|
|
144
131
|
idempotent: true,
|
|
145
132
|
openWorld: false,
|
|
146
133
|
input: CommunitySpaceParam,
|
|
147
|
-
call: ({ communityId, spaceId }, { container,
|
|
134
|
+
call: ({ communityId, spaceId }, { container, caller }) => container.content.deleteSpace(communityId, spaceId, caller.actor)
|
|
148
135
|
}),
|
|
149
136
|
defineTool({
|
|
150
137
|
name: "delete_community",
|
|
151
138
|
title: "Delete community",
|
|
152
139
|
description: "Permanently delete a community with its spaces. Links to it from other spaces are removed.",
|
|
153
|
-
scope: "communities:delete",
|
|
154
140
|
kind: "destructive",
|
|
155
141
|
idempotent: true,
|
|
156
142
|
openWorld: false,
|
|
157
143
|
input: CommunityIdParam,
|
|
158
|
-
call: ({ communityId }, { container,
|
|
144
|
+
call: ({ communityId }, { container, caller }) => container.content.deleteCommunity(communityId, caller.actor)
|
|
159
145
|
}),
|
|
160
146
|
defineTool({
|
|
161
147
|
name: "get_community_analytics",
|
|
162
148
|
title: "Get community analytics",
|
|
163
149
|
description: "Membership, activity and moderation counts for one community.",
|
|
164
|
-
scope: "analytics:read",
|
|
165
150
|
kind: "read",
|
|
166
151
|
idempotent: true,
|
|
167
152
|
openWorld: false,
|
|
168
153
|
input: CommunityIdParam,
|
|
169
|
-
call: ({ communityId }, { container,
|
|
154
|
+
call: ({ communityId }, { container, caller }) => container.reporting.admin.communityAnalytics(communityId, caller.actor)
|
|
170
155
|
})
|
|
171
156
|
];
|
|
172
157
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communities.js","names":[],"sources":["../../../../src/http/mcp/tools/communities.ts"],"sourcesContent":["import {\n CommunitiesQuery,\n CommunityIdParam,\n CommunitySpaceParam,\n CreateCommunity,\n CreateSpace,\n OrderedIds,\n PatchDmSettings,\n SetSpaceTopics,\n SpaceLinkBody,\n SpaceLinkParam,\n UpdateCommunity,\n UpdateSpace,\n} from '../../schemas/index.js';\nimport { actor, defineTool, type Tool } from '../tool.js';\n\nexport const communityTools: Tool[] = [\n defineTool({\n name: 'list_communities',\n title: 'List communities',\n description:\n 'Search and page through the communities, drafts included, each with its status and direct-message settings. Filter by status, search by title.',\n scope: 'communities:read',\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: CommunitiesQuery,\n call: (input, { container, scope }) => container.content.listCommunities(scope.orgId, input),\n }),\n defineTool({\n name: 'list_spaces',\n title: 'List spaces',\n description:\n 'The spaces of a community, in order, each with its access rule, topics and links.',\n scope: 'communities:read',\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: CommunityIdParam,\n call: ({ communityId }, { container, scope }) =>\n container.content.listSpaces(scope.orgId, communityId),\n }),\n defineTool({\n name: 'create_community',\n title: 'Create community',\n description:\n 'Create a draft community with the default direct-message settings and no spaces. Add spaces with create_space and publish it with update_community.',\n scope: 'communities:write',\n kind: 'write',\n idempotent: false,\n openWorld: false,\n input: CreateCommunity,\n call: (input, { container, scope }) =>\n container.content.createCommunity(scope.orgId, input, actor(scope)),\n }),\n defineTool({\n name: 'update_community',\n title: 'Update community',\n description:\n 'Change a community title, description or cover image, or publish and unpublish it with status. The cover must be a ready image from list_media; null clears it. Fields left out stay as they are.',\n scope: 'communities:write',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: UpdateCommunity.extend(CommunityIdParam.shape),\n call: ({ communityId, ...input }, { container, scope }) =>\n container.content.updateCommunity(scope.orgId, communityId, input, actor(scope)),\n }),\n defineTool({\n name: 'update_community_messaging',\n title: 'Update community messaging',\n description:\n 'Change the direct-message settings of a community: who may message whom from now on. Settings left out stay as they are.',\n scope: 'communities:write',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: PatchDmSettings.extend(CommunityIdParam.shape),\n call: ({ communityId, ...input }, { container, scope }) =>\n container.content.patchDmSettings(scope.orgId, communityId, input, actor(scope)),\n }),\n defineTool({\n name: 'create_space',\n title: 'Create space',\n description:\n 'Add a space at the end of a community. Its access rule decides who can open it: all members, by request or by invite. A space open to all members cannot have a capacity.',\n scope: 'communities:write',\n kind: 'write',\n idempotent: false,\n openWorld: false,\n input: CreateSpace.extend(CommunityIdParam.shape),\n call: ({ communityId, ...input }, { container, scope }) =>\n container.content.createSpace(scope.orgId, communityId, input, actor(scope)),\n }),\n defineTool({\n name: 'update_space',\n title: 'Update space',\n description:\n 'Change a space name, description, access rule, capacity or settings. settings merges into the current settings. Fields left out stay as they are.',\n scope: 'communities:write',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: UpdateSpace.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, ...input }, { container, scope }) =>\n container.content.updateSpace(scope.orgId, communityId, spaceId, input, actor(scope)),\n }),\n defineTool({\n name: 'reorder_spaces',\n title: 'Reorder spaces',\n description:\n 'Set the space order of a community. Pass every space id of the community in the new order.',\n scope: 'communities:write',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: OrderedIds.extend(CommunityIdParam.shape),\n call: ({ communityId, ids }, { container, scope }) =>\n container.content.reorderSpaces(scope.orgId, communityId, ids, actor(scope)),\n }),\n defineTool({\n name: 'set_space_topics',\n title: 'Set space topics',\n description:\n 'Replace the topics of a space. An entry with an id keeps and renames that topic, one without adds a topic, and a topic left out is deleted. A topic that posts use cannot be deleted.',\n scope: 'communities:write',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: SetSpaceTopics.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, ...input }, { container, scope }) =>\n container.content.setSpaceTopics(scope.orgId, communityId, spaceId, input, actor(scope)),\n }),\n defineTool({\n name: 'add_space_link',\n title: 'Add space link',\n description:\n 'Link a course, download or community into a space, after its other links. Returns the space.',\n scope: 'communities:write',\n kind: 'write',\n idempotent: false,\n openWorld: false,\n input: SpaceLinkBody.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, contentId }, { container, scope }) =>\n container.content.addSpaceLink(scope.orgId, communityId, spaceId, contentId, actor(scope)),\n }),\n defineTool({\n name: 'reorder_space_links',\n title: 'Reorder space links',\n description: 'Set the link order of a space. Pass every link id of the space in the new order.',\n scope: 'communities:write',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: OrderedIds.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, ids }, { container, scope }) =>\n container.content.reorderSpaceLinks(scope.orgId, communityId, spaceId, ids, actor(scope)),\n }),\n defineTool({\n name: 'remove_space_link',\n title: 'Remove space link',\n description:\n 'Take a link out of a space. The linked content itself is kept. Returns the space.',\n scope: 'communities:write',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: SpaceLinkParam,\n call: ({ communityId, spaceId, linkId }, { container, scope }) =>\n container.content.removeSpaceLink(scope.orgId, communityId, spaceId, linkId, actor(scope)),\n }),\n defineTool({\n name: 'delete_space',\n title: 'Delete space',\n description: 'Permanently delete a space with its posts, comments and members.',\n scope: 'communities:delete',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: CommunitySpaceParam,\n call: ({ communityId, spaceId }, { container, scope }) =>\n container.content.deleteSpace(scope.orgId, communityId, spaceId, actor(scope)),\n }),\n defineTool({\n name: 'delete_community',\n title: 'Delete community',\n description:\n 'Permanently delete a community with its spaces. Links to it from other spaces are removed.',\n scope: 'communities:delete',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: CommunityIdParam,\n call: ({ communityId }, { container, scope }) =>\n container.content.deleteCommunity(scope.orgId, communityId, actor(scope)),\n }),\n defineTool({\n name: 'get_community_analytics',\n title: 'Get community analytics',\n description: 'Membership, activity and moderation counts for one community.',\n scope: 'analytics:read',\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: CommunityIdParam,\n call: ({ communityId }, { container, scope }) =>\n container.reporting.admin.communityAnalytics(scope.orgId, communityId),\n }),\n];\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"communities.js","names":[],"sources":["../../../../src/http/mcp/tools/communities.ts"],"sourcesContent":["import {\n CommunitiesQuery,\n CommunityIdParam,\n CommunitySpaceParam,\n CreateCommunity,\n CreateSpace,\n OrderedIds,\n PatchDmSettings,\n SetSpaceTopics,\n SpaceLinkBody,\n SpaceLinkParam,\n UpdateCommunity,\n UpdateSpace,\n} from '../../schemas/index.js';\nimport { defineTool, type Tool } from '../tool.js';\n\nexport const communityTools: Tool[] = [\n defineTool({\n name: 'list_communities',\n title: 'List communities',\n description:\n 'Search and page through the communities, drafts included, each with its status and direct-message settings. Filter by status, search by title.',\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: CommunitiesQuery,\n call: (input, { container, caller }) => container.content.listCommunities(input, caller.actor),\n }),\n defineTool({\n name: 'list_spaces',\n title: 'List spaces',\n description:\n 'The spaces of a community, in order, each with its access rule, topics and links.',\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: CommunityIdParam,\n call: ({ communityId }, { container, caller }) =>\n container.content.listSpaces(communityId, caller.actor),\n }),\n defineTool({\n name: 'create_community',\n title: 'Create community',\n description:\n 'Create a draft community with the default direct-message settings and no spaces. Add spaces with create_space and publish it with update_community.',\n kind: 'write',\n idempotent: false,\n openWorld: false,\n input: CreateCommunity,\n call: (input, { container, caller }) => container.content.createCommunity(input, caller.actor),\n }),\n defineTool({\n name: 'update_community',\n title: 'Update community',\n description:\n 'Change a community title, description or cover image, or publish and unpublish it with status. The cover must be a ready image from list_media; null clears it. Fields left out stay as they are.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: UpdateCommunity.extend(CommunityIdParam.shape),\n call: ({ communityId, ...input }, { container, caller }) =>\n container.content.updateCommunity(communityId, input, caller.actor),\n }),\n defineTool({\n name: 'update_community_messaging',\n title: 'Update community messaging',\n description:\n 'Change the direct-message settings of a community: who may message whom from now on. Settings left out stay as they are.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: PatchDmSettings.extend(CommunityIdParam.shape),\n call: ({ communityId, ...input }, { container, caller }) =>\n container.content.patchCommunitySettings(communityId, input, caller.actor),\n }),\n defineTool({\n name: 'create_space',\n title: 'Create space',\n description:\n 'Add a space at the end of a community. Its access rule decides who can open it: all members, by request or by invite. A space open to all members cannot have a capacity.',\n kind: 'write',\n idempotent: false,\n openWorld: false,\n input: CreateSpace.extend(CommunityIdParam.shape),\n call: ({ communityId, ...input }, { container, caller }) =>\n container.content.createSpace(communityId, input, caller.actor),\n }),\n defineTool({\n name: 'update_space',\n title: 'Update space',\n description:\n 'Change a space name, description, access rule, capacity or settings. settings merges into the current settings. Fields left out stay as they are.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: UpdateSpace.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, ...input }, { container, caller }) =>\n container.content.updateSpace(communityId, spaceId, input, caller.actor),\n }),\n defineTool({\n name: 'reorder_spaces',\n title: 'Reorder spaces',\n description:\n 'Set the space order of a community. Pass every space id of the community in the new order.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: OrderedIds.extend(CommunityIdParam.shape),\n call: ({ communityId, ids }, { container, caller }) =>\n container.content.reorderSpaces(communityId, ids, caller.actor),\n }),\n defineTool({\n name: 'set_space_topics',\n title: 'Set space topics',\n description:\n 'Replace the topics of a space. An entry with an id keeps and renames that topic, one without adds a topic, and a topic left out is deleted. A topic that posts use cannot be deleted.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: SetSpaceTopics.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, ...input }, { container, caller }) =>\n container.content.setSpaceTopics(communityId, spaceId, input, caller.actor),\n }),\n defineTool({\n name: 'add_space_link',\n title: 'Add space link',\n description:\n 'Link a course, download or community into a space, after its other links. Returns the space.',\n kind: 'write',\n idempotent: false,\n openWorld: false,\n input: SpaceLinkBody.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, contentId }, { container, caller }) =>\n container.content.addSpaceLink(communityId, spaceId, contentId, caller.actor),\n }),\n defineTool({\n name: 'reorder_space_links',\n title: 'Reorder space links',\n description: 'Set the link order of a space. Pass every link id of the space in the new order.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: OrderedIds.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, ids }, { container, caller }) =>\n container.content.reorderSpaceLinks(communityId, spaceId, ids, caller.actor),\n }),\n defineTool({\n name: 'remove_space_link',\n title: 'Remove space link',\n description:\n 'Take a link out of a space. The linked content itself is kept. Returns the space.',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: SpaceLinkParam,\n call: ({ communityId, spaceId, linkId }, { container, caller }) =>\n container.content.removeSpaceLink(communityId, spaceId, linkId, caller.actor),\n }),\n defineTool({\n name: 'delete_space',\n title: 'Delete space',\n description: 'Permanently delete a space with its posts, comments and members.',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: CommunitySpaceParam,\n call: ({ communityId, spaceId }, { container, caller }) =>\n container.content.deleteSpace(communityId, spaceId, caller.actor),\n }),\n defineTool({\n name: 'delete_community',\n title: 'Delete community',\n description:\n 'Permanently delete a community with its spaces. Links to it from other spaces are removed.',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: CommunityIdParam,\n call: ({ communityId }, { container, caller }) =>\n container.content.deleteCommunity(communityId, caller.actor),\n }),\n defineTool({\n name: 'get_community_analytics',\n title: 'Get community analytics',\n description: 'Membership, activity and moderation counts for one community.',\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: CommunityIdParam,\n call: ({ communityId }, { container, caller }) =>\n container.reporting.admin.communityAnalytics(communityId, caller.actor),\n }),\n];\n"],"mappings":"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"}
|
|
@@ -2,85 +2,78 @@ import { PageQuery } from "../../schemas/shared.js";
|
|
|
2
2
|
import { CommunityIdParam, CommunityMembersQuery, CommunitySpaceParam, SpaceMemberParam } from "../../schemas/community.js";
|
|
3
3
|
import { OrgUserBody } from "../../schemas/chats.js";
|
|
4
4
|
import "../../schemas/index.js";
|
|
5
|
-
import {
|
|
5
|
+
import { defineTool } from "../tool.js";
|
|
6
6
|
//#region src/http/mcp/tools/community-members.ts
|
|
7
7
|
const communityMemberTools = [
|
|
8
8
|
defineTool({
|
|
9
9
|
name: "list_community_members",
|
|
10
10
|
title: "List community members",
|
|
11
11
|
description: "Page through everyone with active access to a community, granted directly or through a bundle. Search by name or email.",
|
|
12
|
-
scope: "community_members:read",
|
|
13
12
|
kind: "read",
|
|
14
13
|
idempotent: true,
|
|
15
14
|
openWorld: false,
|
|
16
15
|
input: CommunityMembersQuery.extend(CommunityIdParam.shape),
|
|
17
|
-
call: ({ communityId, ...query }, { container,
|
|
16
|
+
call: ({ communityId, ...query }, { container, caller }) => container.reporting.admin.communityMembers(communityId, query, caller.actor)
|
|
18
17
|
}),
|
|
19
18
|
defineTool({
|
|
20
19
|
name: "list_space_members",
|
|
21
20
|
title: "List space members",
|
|
22
|
-
description: "Page through a space
|
|
23
|
-
scope: "community_members:read",
|
|
21
|
+
description: "Page through the members of a space you can open. Community moderators also see its open requests to join and open invitations. People who open every space through their role are not listed.",
|
|
24
22
|
kind: "read",
|
|
25
23
|
idempotent: true,
|
|
26
24
|
openWorld: false,
|
|
27
25
|
input: PageQuery.extend(CommunitySpaceParam.shape),
|
|
28
|
-
call: ({ communityId, spaceId, ...page }, { container,
|
|
26
|
+
call: ({ communityId, spaceId, ...page }, { container, caller }) => container.entitlements.listSpaceMembers(communityId, spaceId, page, caller.actor)
|
|
29
27
|
}),
|
|
30
28
|
defineTool({
|
|
31
29
|
name: "add_space_member",
|
|
32
30
|
title: "Add space member",
|
|
33
31
|
description: "Place a member of the community straight into a space, with no request or invitation. Not for a space open to all members, or one that is full.",
|
|
34
|
-
scope: "community_members:write",
|
|
35
32
|
kind: "write",
|
|
36
33
|
idempotent: false,
|
|
37
34
|
openWorld: false,
|
|
38
35
|
input: OrgUserBody.extend(CommunitySpaceParam.shape),
|
|
39
|
-
call: ({ communityId, spaceId, orgUserId }, { container,
|
|
36
|
+
call: ({ communityId, spaceId, orgUserId }, { container, caller }) => container.entitlements.addSpaceMember(communityId, spaceId, orgUserId, caller.actor)
|
|
40
37
|
}),
|
|
41
38
|
defineTool({
|
|
42
39
|
name: "invite_space_member",
|
|
43
40
|
title: "Invite space member",
|
|
44
41
|
description: "Invite a member of the community into an invite-only space. They are notified and join when they accept.",
|
|
45
|
-
scope: "community_members:write",
|
|
46
42
|
kind: "write",
|
|
47
43
|
idempotent: false,
|
|
48
44
|
openWorld: true,
|
|
49
45
|
input: OrgUserBody.extend(CommunitySpaceParam.shape),
|
|
50
|
-
call: ({ communityId, spaceId, orgUserId }, { container,
|
|
46
|
+
call: ({ communityId, spaceId, orgUserId }, { container, caller }) => container.entitlements.invite(communityId, spaceId, orgUserId, caller.actor)
|
|
51
47
|
}),
|
|
52
48
|
defineTool({
|
|
53
49
|
name: "approve_space_request",
|
|
54
50
|
title: "Approve space request",
|
|
55
51
|
description: "Approve a person's request to join a space. Not when the space is full.",
|
|
56
|
-
scope: "community_members:write",
|
|
57
52
|
kind: "write",
|
|
58
53
|
idempotent: true,
|
|
59
54
|
openWorld: false,
|
|
60
55
|
input: SpaceMemberParam,
|
|
61
|
-
call: ({ communityId, spaceId, orgUserId }, { container,
|
|
56
|
+
call: ({ communityId, spaceId, orgUserId }, { container, caller }) => container.entitlements.approve(communityId, spaceId, orgUserId, caller.actor)
|
|
62
57
|
}),
|
|
63
58
|
defineTool({
|
|
64
59
|
name: "decline_space_request",
|
|
65
60
|
title: "Decline space request",
|
|
66
61
|
description: "Decline a person's request to join a space.",
|
|
67
|
-
scope: "community_members:write",
|
|
68
62
|
kind: "write",
|
|
69
63
|
idempotent: true,
|
|
70
64
|
openWorld: false,
|
|
71
65
|
input: SpaceMemberParam,
|
|
72
|
-
call: ({ communityId, spaceId, orgUserId }, { container,
|
|
66
|
+
call: ({ communityId, spaceId, orgUserId }, { container, caller }) => container.entitlements.decline(communityId, spaceId, orgUserId, caller.actor)
|
|
73
67
|
}),
|
|
74
68
|
defineTool({
|
|
75
69
|
name: "remove_space_member",
|
|
76
70
|
title: "Remove space member",
|
|
77
71
|
description: "Remove a person from a space, whether they are a member, asked to join or were invited. Their access to the community stays. Not for a space open to all members.",
|
|
78
|
-
scope: "community_members:write",
|
|
79
72
|
kind: "destructive",
|
|
80
73
|
idempotent: true,
|
|
81
74
|
openWorld: false,
|
|
82
75
|
input: SpaceMemberParam,
|
|
83
|
-
call: ({ communityId, spaceId, orgUserId }, { container,
|
|
76
|
+
call: ({ communityId, spaceId, orgUserId }, { container, caller }) => container.entitlements.remove(communityId, spaceId, orgUserId, caller.actor)
|
|
84
77
|
})
|
|
85
78
|
];
|
|
86
79
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"community-members.js","names":[],"sources":["../../../../src/http/mcp/tools/community-members.ts"],"sourcesContent":["import {\n CommunityIdParam,\n CommunityMembersQuery,\n CommunitySpaceParam,\n OrgUserBody,\n PageQuery,\n SpaceMemberParam,\n} from '../../schemas/index.js';\nimport {
|
|
1
|
+
{"version":3,"file":"community-members.js","names":[],"sources":["../../../../src/http/mcp/tools/community-members.ts"],"sourcesContent":["import {\n CommunityIdParam,\n CommunityMembersQuery,\n CommunitySpaceParam,\n OrgUserBody,\n PageQuery,\n SpaceMemberParam,\n} from '../../schemas/index.js';\nimport { defineTool, type Tool } from '../tool.js';\n\nexport const communityMemberTools: Tool[] = [\n defineTool({\n name: 'list_community_members',\n title: 'List community members',\n description:\n 'Page through everyone with active access to a community, granted directly or through a bundle. Search by name or email.',\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: CommunityMembersQuery.extend(CommunityIdParam.shape),\n call: ({ communityId, ...query }, { container, caller }) =>\n container.reporting.admin.communityMembers(communityId, query, caller.actor),\n }),\n defineTool({\n name: 'list_space_members',\n title: 'List space members',\n description:\n 'Page through the members of a space you can open. Community moderators also see its open requests to join and open invitations. People who open every space through their role are not listed.',\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: PageQuery.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, ...page }, { container, caller }) =>\n container.entitlements.listSpaceMembers(communityId, spaceId, page, caller.actor),\n }),\n defineTool({\n name: 'add_space_member',\n title: 'Add space member',\n description:\n 'Place a member of the community straight into a space, with no request or invitation. Not for a space open to all members, or one that is full.',\n kind: 'write',\n idempotent: false,\n openWorld: false,\n input: OrgUserBody.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, orgUserId }, { container, caller }) =>\n container.entitlements.addSpaceMember(communityId, spaceId, orgUserId, caller.actor),\n }),\n defineTool({\n name: 'invite_space_member',\n title: 'Invite space member',\n description:\n 'Invite a member of the community into an invite-only space. They are notified and join when they accept.',\n kind: 'write',\n idempotent: false,\n openWorld: true,\n input: OrgUserBody.extend(CommunitySpaceParam.shape),\n call: ({ communityId, spaceId, orgUserId }, { container, caller }) =>\n container.entitlements.invite(communityId, spaceId, orgUserId, caller.actor),\n }),\n defineTool({\n name: 'approve_space_request',\n title: 'Approve space request',\n description: \"Approve a person's request to join a space. Not when the space is full.\",\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: SpaceMemberParam,\n call: ({ communityId, spaceId, orgUserId }, { container, caller }) =>\n container.entitlements.approve(communityId, spaceId, orgUserId, caller.actor),\n }),\n defineTool({\n name: 'decline_space_request',\n title: 'Decline space request',\n description: \"Decline a person's request to join a space.\",\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: SpaceMemberParam,\n call: ({ communityId, spaceId, orgUserId }, { container, caller }) =>\n container.entitlements.decline(communityId, spaceId, orgUserId, caller.actor),\n }),\n defineTool({\n name: 'remove_space_member',\n title: 'Remove space member',\n description:\n 'Remove a person from a space, whether they are a member, asked to join or were invited. Their access to the community stays. Not for a space open to all members.',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: SpaceMemberParam,\n call: ({ communityId, spaceId, orgUserId }, { container, caller }) =>\n container.entitlements.remove(communityId, spaceId, orgUserId, caller.actor),\n }),\n];\n"],"mappings":";;;;;;AAUA,MAAa,uBAA+B;CAC1C,WAAW;EACT,MAAM;EACN,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,OAAO,sBAAsB,OAAO,iBAAiB,KAAK;EAC1D,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,WAAW,aAC7C,UAAU,UAAU,MAAM,iBAAiB,aAAa,OAAO,OAAO,KAAK;CAC/E,CAAC;CACD,WAAW;EACT,MAAM;EACN,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,OAAO,UAAU,OAAO,oBAAoB,KAAK;EACjD,OAAO,EAAE,aAAa,SAAS,GAAG,QAAQ,EAAE,WAAW,aACrD,UAAU,aAAa,iBAAiB,aAAa,SAAS,MAAM,OAAO,KAAK;CACpF,CAAC;CACD,WAAW;EACT,MAAM;EACN,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,OAAO,YAAY,OAAO,oBAAoB,KAAK;EACnD,OAAO,EAAE,aAAa,SAAS,aAAa,EAAE,WAAW,aACvD,UAAU,aAAa,eAAe,aAAa,SAAS,WAAW,OAAO,KAAK;CACvF,CAAC;CACD,WAAW;EACT,MAAM;EACN,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,OAAO,YAAY,OAAO,oBAAoB,KAAK;EACnD,OAAO,EAAE,aAAa,SAAS,aAAa,EAAE,WAAW,aACvD,UAAU,aAAa,OAAO,aAAa,SAAS,WAAW,OAAO,KAAK;CAC/E,CAAC;CACD,WAAW;EACT,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM;EACN,YAAY;EACZ,WAAW;EACX,OAAO;EACP,OAAO,EAAE,aAAa,SAAS,aAAa,EAAE,WAAW,aACvD,UAAU,aAAa,QAAQ,aAAa,SAAS,WAAW,OAAO,KAAK;CAChF,CAAC;CACD,WAAW;EACT,MAAM;EACN,OAAO;EACP,aAAa;EACb,MAAM;EACN,YAAY;EACZ,WAAW;EACX,OAAO;EACP,OAAO,EAAE,aAAa,SAAS,aAAa,EAAE,WAAW,aACvD,UAAU,aAAa,QAAQ,aAAa,SAAS,WAAW,OAAO,KAAK;CAChF,CAAC;CACD,WAAW;EACT,MAAM;EACN,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,OAAO;EACP,OAAO,EAAE,aAAa,SAAS,aAAa,EAAE,WAAW,aACvD,UAAU,aAAa,OAAO,aAAa,SAAS,WAAW,OAAO,KAAK;CAC/E,CAAC;AACH"}
|
|
@@ -2,140 +2,128 @@ import { CommunityChatParam, CommunityCommentParam, CommunityIdParam, CommunityM
|
|
|
2
2
|
import { ResolvePostFlags } from "../../schemas/posts.js";
|
|
3
3
|
import { ResolveMessageFlags } from "../../schemas/chats.js";
|
|
4
4
|
import "../../schemas/index.js";
|
|
5
|
-
import {
|
|
5
|
+
import { defineTool } from "../tool.js";
|
|
6
6
|
//#region src/http/mcp/tools/community-moderation.ts
|
|
7
7
|
const communityModerationTools = [
|
|
8
8
|
defineTool({
|
|
9
9
|
name: "get_space_moderation_queue",
|
|
10
10
|
title: "Get space moderation queue",
|
|
11
11
|
description: "The posts awaiting review in a space and the open flags on its posts and comments. Each list holds at most the 100 oldest; working the queue brings in the next ones.",
|
|
12
|
-
scope: "community_moderation:read",
|
|
13
12
|
kind: "read",
|
|
14
13
|
idempotent: true,
|
|
15
14
|
openWorld: false,
|
|
16
15
|
input: CommunitySpaceParam,
|
|
17
|
-
call: ({ communityId, spaceId }, { container,
|
|
16
|
+
call: ({ communityId, spaceId }, { container, caller }) => container.posts.moderationQueue(communityId, spaceId, caller.actor)
|
|
18
17
|
}),
|
|
19
18
|
defineTool({
|
|
20
19
|
name: "get_message_moderation_queue",
|
|
21
20
|
title: "Get message moderation queue",
|
|
22
21
|
description: "The messages in a community's chats with open flags, with the flags and the chat each is in. Holds at most the 100 oldest open flags.",
|
|
23
|
-
scope: "community_moderation:read",
|
|
24
22
|
kind: "read",
|
|
25
23
|
idempotent: true,
|
|
26
24
|
openWorld: false,
|
|
27
25
|
input: CommunityIdParam,
|
|
28
|
-
call: ({ communityId }, { container,
|
|
26
|
+
call: ({ communityId }, { container, caller }) => container.chats.messageQueue(communityId, caller.actor)
|
|
29
27
|
}),
|
|
30
28
|
defineTool({
|
|
31
29
|
name: "approve_post",
|
|
32
30
|
title: "Approve post",
|
|
33
31
|
description: "Publish a post that is awaiting review.",
|
|
34
|
-
scope: "community_moderation:write",
|
|
35
32
|
kind: "write",
|
|
36
33
|
idempotent: true,
|
|
37
34
|
openWorld: false,
|
|
38
35
|
input: CommunityPostParam,
|
|
39
|
-
call: ({ communityId, postId }, { container,
|
|
36
|
+
call: ({ communityId, postId }, { container, caller }) => container.posts.approve(postId, communityId, caller.actor)
|
|
40
37
|
}),
|
|
41
38
|
defineTool({
|
|
42
39
|
name: "dismiss_post_flags",
|
|
43
40
|
title: "Dismiss post flags",
|
|
44
41
|
description: "Close every open flag on a post and leave it up.",
|
|
45
|
-
scope: "community_moderation:write",
|
|
46
42
|
kind: "write",
|
|
47
43
|
idempotent: true,
|
|
48
44
|
openWorld: false,
|
|
49
45
|
input: ResolvePostFlags.extend(CommunityPostParam.shape),
|
|
50
|
-
call: ({ communityId, postId, resolution }, { container,
|
|
46
|
+
call: ({ communityId, postId, resolution }, { container, caller }) => container.posts.resolveFlags(postId, resolution, communityId, caller.actor)
|
|
51
47
|
}),
|
|
52
48
|
defineTool({
|
|
53
49
|
name: "remove_post",
|
|
54
50
|
title: "Remove post",
|
|
55
51
|
description: "Take a published or pending post down and resolve its open flags as removed. restore_post brings it back.",
|
|
56
|
-
scope: "community_moderation:write",
|
|
57
52
|
kind: "destructive",
|
|
58
53
|
idempotent: true,
|
|
59
54
|
openWorld: false,
|
|
60
55
|
input: CommunityPostParam,
|
|
61
|
-
call: ({ communityId, postId }, { container,
|
|
56
|
+
call: ({ communityId, postId }, { container, caller }) => container.posts.remove(postId, communityId, caller.actor)
|
|
62
57
|
}),
|
|
63
58
|
defineTool({
|
|
64
59
|
name: "restore_post",
|
|
65
60
|
title: "Restore post",
|
|
66
61
|
description: "Put a removed post back up.",
|
|
67
|
-
scope: "community_moderation:write",
|
|
68
62
|
kind: "write",
|
|
69
63
|
idempotent: true,
|
|
70
64
|
openWorld: false,
|
|
71
65
|
input: CommunityPostParam,
|
|
72
|
-
call: ({ communityId, postId }, { container,
|
|
66
|
+
call: ({ communityId, postId }, { container, caller }) => container.posts.restore(postId, communityId, caller.actor)
|
|
73
67
|
}),
|
|
74
68
|
defineTool({
|
|
75
69
|
name: "dismiss_post_comment_flags",
|
|
76
70
|
title: "Dismiss post comment flags",
|
|
77
71
|
description: "Close every open flag on a comment on a post and leave it up.",
|
|
78
|
-
scope: "community_moderation:write",
|
|
79
72
|
kind: "write",
|
|
80
73
|
idempotent: true,
|
|
81
74
|
openWorld: false,
|
|
82
75
|
input: CommunityCommentParam,
|
|
83
|
-
call: ({ communityId, commentId }, { container,
|
|
76
|
+
call: ({ communityId, commentId }, { container, caller }) => container.discussion.resolveReports(commentId, { communityId }, caller.actor)
|
|
84
77
|
}),
|
|
85
78
|
defineTool({
|
|
86
79
|
name: "remove_post_comment",
|
|
87
80
|
title: "Remove post comment",
|
|
88
81
|
description: "Hide a comment on a post and resolve its open flags as removed. restore_post_comment brings it back.",
|
|
89
|
-
scope: "community_moderation:write",
|
|
90
82
|
kind: "destructive",
|
|
91
83
|
idempotent: true,
|
|
92
84
|
openWorld: false,
|
|
93
85
|
input: CommunityCommentParam,
|
|
94
|
-
call: ({ communityId, commentId }, { container,
|
|
86
|
+
call: ({ communityId, commentId }, { container, caller }) => container.discussion.remove(commentId, { communityId }, caller.actor)
|
|
95
87
|
}),
|
|
96
88
|
defineTool({
|
|
97
89
|
name: "restore_post_comment",
|
|
98
90
|
title: "Restore post comment",
|
|
99
91
|
description: "Publish a removed comment on a post again.",
|
|
100
|
-
scope: "community_moderation:write",
|
|
101
92
|
kind: "write",
|
|
102
93
|
idempotent: true,
|
|
103
94
|
openWorld: false,
|
|
104
95
|
input: CommunityCommentParam,
|
|
105
|
-
call: ({ communityId, commentId }, { container,
|
|
96
|
+
call: ({ communityId, commentId }, { container, caller }) => container.discussion.restore(commentId, { communityId }, caller.actor)
|
|
106
97
|
}),
|
|
107
98
|
defineTool({
|
|
108
99
|
name: "dismiss_message_flags",
|
|
109
100
|
title: "Dismiss message flags",
|
|
110
101
|
description: "Close every open flag on a chat message and leave it up.",
|
|
111
|
-
scope: "community_moderation:write",
|
|
112
102
|
kind: "write",
|
|
113
103
|
idempotent: true,
|
|
114
104
|
openWorld: false,
|
|
115
105
|
input: ResolveMessageFlags.extend(CommunityMessageParam.shape),
|
|
116
|
-
call: ({ communityId, messageId, resolution }, { container,
|
|
106
|
+
call: ({ communityId, messageId, resolution }, { container, caller }) => container.chats.resolveMessageFlags(messageId, resolution, communityId, caller.actor)
|
|
117
107
|
}),
|
|
118
108
|
defineTool({
|
|
119
109
|
name: "lock_chat",
|
|
120
110
|
title: "Lock chat",
|
|
121
111
|
description: "Stop everyone sending or editing messages in a chat until it is unlocked. Its open message flags are resolved as locked.",
|
|
122
|
-
scope: "community_moderation:write",
|
|
123
112
|
kind: "destructive",
|
|
124
113
|
idempotent: true,
|
|
125
114
|
openWorld: false,
|
|
126
115
|
input: CommunityChatParam,
|
|
127
|
-
call: ({ communityId, chatId }, { container,
|
|
116
|
+
call: ({ communityId, chatId }, { container, caller }) => container.chats.lock(chatId, communityId, caller.actor)
|
|
128
117
|
}),
|
|
129
118
|
defineTool({
|
|
130
119
|
name: "unlock_chat",
|
|
131
120
|
title: "Unlock chat",
|
|
132
121
|
description: "Let the participants of a locked chat send messages again.",
|
|
133
|
-
scope: "community_moderation:write",
|
|
134
122
|
kind: "write",
|
|
135
123
|
idempotent: true,
|
|
136
124
|
openWorld: false,
|
|
137
125
|
input: CommunityChatParam,
|
|
138
|
-
call: ({ communityId, chatId }, { container,
|
|
126
|
+
call: ({ communityId, chatId }, { container, caller }) => container.chats.unlock(chatId, communityId, caller.actor)
|
|
139
127
|
})
|
|
140
128
|
];
|
|
141
129
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"community-moderation.js","names":[],"sources":["../../../../src/http/mcp/tools/community-moderation.ts"],"sourcesContent":["import {\n CommunityChatParam,\n CommunityCommentParam,\n CommunityIdParam,\n CommunityMessageParam,\n CommunityPostParam,\n CommunitySpaceParam,\n ResolveMessageFlags,\n ResolvePostFlags,\n} from '../../schemas/index.js';\nimport {
|
|
1
|
+
{"version":3,"file":"community-moderation.js","names":[],"sources":["../../../../src/http/mcp/tools/community-moderation.ts"],"sourcesContent":["import {\n CommunityChatParam,\n CommunityCommentParam,\n CommunityIdParam,\n CommunityMessageParam,\n CommunityPostParam,\n CommunitySpaceParam,\n ResolveMessageFlags,\n ResolvePostFlags,\n} from '../../schemas/index.js';\nimport { defineTool, type Tool } from '../tool.js';\n\nexport const communityModerationTools: Tool[] = [\n defineTool({\n name: 'get_space_moderation_queue',\n title: 'Get space moderation queue',\n description:\n 'The posts awaiting review in a space and the open flags on its posts and comments. Each list holds at most the 100 oldest; working the queue brings in the next ones.',\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: CommunitySpaceParam,\n call: ({ communityId, spaceId }, { container, caller }) =>\n container.posts.moderationQueue(communityId, spaceId, caller.actor),\n }),\n defineTool({\n name: 'get_message_moderation_queue',\n title: 'Get message moderation queue',\n description:\n \"The messages in a community's chats with open flags, with the flags and the chat each is in. Holds at most the 100 oldest open flags.\",\n kind: 'read',\n idempotent: true,\n openWorld: false,\n input: CommunityIdParam,\n call: ({ communityId }, { container, caller }) =>\n container.chats.messageQueue(communityId, caller.actor),\n }),\n defineTool({\n name: 'approve_post',\n title: 'Approve post',\n description: 'Publish a post that is awaiting review.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: CommunityPostParam,\n call: ({ communityId, postId }, { container, caller }) =>\n container.posts.approve(postId, communityId, caller.actor),\n }),\n defineTool({\n name: 'dismiss_post_flags',\n title: 'Dismiss post flags',\n description: 'Close every open flag on a post and leave it up.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: ResolvePostFlags.extend(CommunityPostParam.shape),\n call: ({ communityId, postId, resolution }, { container, caller }) =>\n container.posts.resolveFlags(postId, resolution, communityId, caller.actor),\n }),\n defineTool({\n name: 'remove_post',\n title: 'Remove post',\n description:\n 'Take a published or pending post down and resolve its open flags as removed. restore_post brings it back.',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: CommunityPostParam,\n call: ({ communityId, postId }, { container, caller }) =>\n container.posts.remove(postId, communityId, caller.actor),\n }),\n defineTool({\n name: 'restore_post',\n title: 'Restore post',\n description: 'Put a removed post back up.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: CommunityPostParam,\n call: ({ communityId, postId }, { container, caller }) =>\n container.posts.restore(postId, communityId, caller.actor),\n }),\n defineTool({\n name: 'dismiss_post_comment_flags',\n title: 'Dismiss post comment flags',\n description: 'Close every open flag on a comment on a post and leave it up.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: CommunityCommentParam,\n call: ({ communityId, commentId }, { container, caller }) =>\n container.discussion.resolveReports(commentId, { communityId }, caller.actor),\n }),\n defineTool({\n name: 'remove_post_comment',\n title: 'Remove post comment',\n description:\n 'Hide a comment on a post and resolve its open flags as removed. restore_post_comment brings it back.',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: CommunityCommentParam,\n call: ({ communityId, commentId }, { container, caller }) =>\n container.discussion.remove(commentId, { communityId }, caller.actor),\n }),\n defineTool({\n name: 'restore_post_comment',\n title: 'Restore post comment',\n description: 'Publish a removed comment on a post again.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: CommunityCommentParam,\n call: ({ communityId, commentId }, { container, caller }) =>\n container.discussion.restore(commentId, { communityId }, caller.actor),\n }),\n defineTool({\n name: 'dismiss_message_flags',\n title: 'Dismiss message flags',\n description: 'Close every open flag on a chat message and leave it up.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: ResolveMessageFlags.extend(CommunityMessageParam.shape),\n call: ({ communityId, messageId, resolution }, { container, caller }) =>\n container.chats.resolveMessageFlags(messageId, resolution, communityId, caller.actor),\n }),\n defineTool({\n name: 'lock_chat',\n title: 'Lock chat',\n description:\n 'Stop everyone sending or editing messages in a chat until it is unlocked. Its open message flags are resolved as locked.',\n kind: 'destructive',\n idempotent: true,\n openWorld: false,\n input: CommunityChatParam,\n call: ({ communityId, chatId }, { container, caller }) =>\n container.chats.lock(chatId, communityId, caller.actor),\n }),\n defineTool({\n name: 'unlock_chat',\n title: 'Unlock chat',\n description: 'Let the participants of a locked chat send messages again.',\n kind: 'write',\n idempotent: true,\n openWorld: false,\n input: CommunityChatParam,\n call: ({ communityId, chatId }, { container, caller }) =>\n container.chats.unlock(chatId, communityId, caller.actor),\n }),\n];\n"],"mappings":"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"}
|