funifier-mcp 0.3.9 → 0.3.11
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/.cursor/rules/funifier.mdc +4 -1
- package/.github/copilot-instructions.md +3 -0
- package/AGENTS.md +6 -44
- package/README.md +13 -1
- package/datasource-funifier-docs/.coverage.json +4 -1
- package/dist/cli/config-writers.d.ts +3 -3
- package/dist/cli/config-writers.d.ts.map +1 -1
- package/dist/cli/config-writers.js +22 -24
- package/dist/cli/config-writers.js.map +1 -1
- package/dist/cli/config-writers.test.js +7 -2
- package/dist/cli/config-writers.test.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +11 -9
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/init.test.js +26 -0
- package/dist/cli/init.test.js.map +1 -1
- package/dist/core/api-client.d.ts +12 -1
- package/dist/core/api-client.d.ts.map +1 -1
- package/dist/core/api-client.js +95 -0
- package/dist/core/api-client.js.map +1 -1
- package/dist/core/constants.d.ts +6 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +7 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/types/Role.d.ts +25 -0
- package/dist/core/types/Role.d.ts.map +1 -0
- package/dist/core/types/Role.js +3 -0
- package/dist/core/types/Role.js.map +1 -0
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +1 -0
- package/dist/core/types/index.js.map +1 -1
- package/dist/mcp/bundle.js +103 -98
- package/dist/mcp/tools/_backup.d.ts +74 -0
- package/dist/mcp/tools/_backup.d.ts.map +1 -0
- package/dist/mcp/tools/_backup.js +205 -0
- package/dist/mcp/tools/_backup.js.map +1 -0
- package/dist/mcp/tools/_backup.test.d.ts +2 -0
- package/dist/mcp/tools/_backup.test.d.ts.map +1 -0
- package/dist/mcp/tools/_backup.test.js +204 -0
- package/dist/mcp/tools/_backup.test.js.map +1 -0
- package/dist/mcp/tools/get.d.ts.map +1 -1
- package/dist/mcp/tools/get.js +4 -0
- package/dist/mcp/tools/get.js.map +1 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +2 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/list-tools.d.ts.map +1 -1
- package/dist/mcp/tools/list-tools.js +7 -0
- package/dist/mcp/tools/list-tools.js.map +1 -1
- package/dist/mcp/tools/list-tools.test.js +2 -1
- package/dist/mcp/tools/list-tools.test.js.map +1 -1
- package/dist/mcp/tools/list.d.ts.map +1 -1
- package/dist/mcp/tools/list.js +13 -0
- package/dist/mcp/tools/list.js.map +1 -1
- package/dist/mcp/tools/permissions.d.ts +4 -0
- package/dist/mcp/tools/permissions.d.ts.map +1 -0
- package/dist/mcp/tools/permissions.js +377 -0
- package/dist/mcp/tools/permissions.js.map +1 -0
- package/dist/mcp/tools/permissions.test.d.ts +2 -0
- package/dist/mcp/tools/permissions.test.d.ts.map +1 -0
- package/dist/mcp/tools/permissions.test.js +355 -0
- package/dist/mcp/tools/permissions.test.js.map +1 -0
- package/package.json +2 -2
- package/skills/funifier/SKILL.md +1 -0
- package/skills/funifier/references/configure-security.md +18 -0
- package/skills/funifier/references/create-aggregate.md +6 -0
- package/skills/funifier/references/date-handling.md +172 -0
- package/skills/funifier/references/debug.md +2 -0
- package/skills/funifier/references/implement-frontend.md +18 -0
|
@@ -64,6 +64,13 @@ const TOOL_CATALOG = {
|
|
|
64
64
|
description: "Manage MongoDB indexes: list existing indexes, create single-field or compound indexes, drop by name.",
|
|
65
65
|
keyParams: "action (list|create|drop), collection, keys?, name?",
|
|
66
66
|
},
|
|
67
|
+
{
|
|
68
|
+
name: "funifier_permissions",
|
|
69
|
+
requiresApi: true,
|
|
70
|
+
description: "Manage API scopes/security roles and Studio roles/assignments without mixing the two permission models. " +
|
|
71
|
+
"Every mutating action auto-backups prior state; use list_backups/restore_backup to roll back.",
|
|
72
|
+
keyParams: "action, data?, app_secret?, name?, role_id?, item?, backup_path?",
|
|
73
|
+
},
|
|
67
74
|
{
|
|
68
75
|
name: "funifier_folder",
|
|
69
76
|
requiresApi: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/list-tools.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"list-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/list-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ function makeInvoke() {
|
|
|
19
19
|
(0, vitest_1.expect)(result.isError).toBeUndefined();
|
|
20
20
|
(0, vitest_1.expect)(result.content[0].text).toBeTruthy();
|
|
21
21
|
});
|
|
22
|
-
(0, vitest_1.it)("lists all
|
|
22
|
+
(0, vitest_1.it)("lists all 14 tools", async () => {
|
|
23
23
|
const { invoke } = makeInvoke();
|
|
24
24
|
const { content } = await invoke();
|
|
25
25
|
const text = content[0].text;
|
|
@@ -33,6 +33,7 @@ function makeInvoke() {
|
|
|
33
33
|
"funifier_logs",
|
|
34
34
|
"funifier_database",
|
|
35
35
|
"funifier_index",
|
|
36
|
+
"funifier_permissions",
|
|
36
37
|
"funifier_folder",
|
|
37
38
|
"funifier_list_tools",
|
|
38
39
|
"funifier_search_docs",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-tools.test.js","sourceRoot":"","sources":["../../../src/mcp/tools/list-tools.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list-tools.test.js","sourceRoot":"","sources":["../../../src/mcp/tools/list-tools.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAuL1C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAkIvE"}
|
package/dist/mcp/tools/list.js
CHANGED
|
@@ -22,6 +22,7 @@ const RESOURCE_TYPES = [
|
|
|
22
22
|
"quiz",
|
|
23
23
|
"virtual-good-catalog",
|
|
24
24
|
"virtual-good-item",
|
|
25
|
+
"role",
|
|
25
26
|
];
|
|
26
27
|
/**
|
|
27
28
|
* Returns a summary view of items: only _id, name/title, and key identifying fields.
|
|
@@ -132,6 +133,15 @@ function summarizeItems(items, type) {
|
|
|
132
133
|
active: item.active,
|
|
133
134
|
amount: item.amount,
|
|
134
135
|
};
|
|
136
|
+
case "role":
|
|
137
|
+
return {
|
|
138
|
+
_id: item._id,
|
|
139
|
+
name: item.name,
|
|
140
|
+
type: item.type,
|
|
141
|
+
item: item.item,
|
|
142
|
+
description: item.description || "",
|
|
143
|
+
permissions_count: item.permissions?.length || 0,
|
|
144
|
+
};
|
|
135
145
|
default:
|
|
136
146
|
return {
|
|
137
147
|
_id: item._id,
|
|
@@ -257,6 +267,9 @@ function registerListTool(server, apiHolder) {
|
|
|
257
267
|
case "virtual-good-item":
|
|
258
268
|
results = await api.listVirtualGoodItems();
|
|
259
269
|
break;
|
|
270
|
+
case "role":
|
|
271
|
+
results = await api.listRoles();
|
|
272
|
+
break;
|
|
260
273
|
default:
|
|
261
274
|
return {
|
|
262
275
|
content: [{ type: "text", text: `Unknown resource type: ${type}` }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AA8P1C,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,QAgO9E"}
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerPermissionsTool = registerPermissionsTool;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const _backup_1 = require("./_backup");
|
|
6
|
+
function parseJsonObject(value, label) {
|
|
7
|
+
if (!value) {
|
|
8
|
+
throw new Error(`'${label}' is required as a JSON object.`);
|
|
9
|
+
}
|
|
10
|
+
const parsed = JSON.parse(value);
|
|
11
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
12
|
+
throw new Error(`'${label}' must be a JSON object.`);
|
|
13
|
+
}
|
|
14
|
+
return parsed;
|
|
15
|
+
}
|
|
16
|
+
function parsePrincipalRole(data, principalType, principalItem, roleId) {
|
|
17
|
+
if (data)
|
|
18
|
+
return parseJsonObject(data, "data");
|
|
19
|
+
if (!principalType || !principalItem || !roleId) {
|
|
20
|
+
throw new Error("Provide 'data' or all of 'principal_type', 'principal_item', and 'role_id'.");
|
|
21
|
+
}
|
|
22
|
+
if (!["user", "account", "gamification"].includes(principalType)) {
|
|
23
|
+
throw new Error("'principal_type' must be one of: user, account, gamification.");
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
type: principalType,
|
|
27
|
+
item: principalItem,
|
|
28
|
+
role: roleId,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function requireRoleId(roleId) {
|
|
32
|
+
if (!roleId)
|
|
33
|
+
throw new Error("'role_id' is required for this action.");
|
|
34
|
+
return roleId;
|
|
35
|
+
}
|
|
36
|
+
function requireAppSecret(appSecret) {
|
|
37
|
+
if (!appSecret)
|
|
38
|
+
throw new Error("'app_secret' is required for this action.");
|
|
39
|
+
return appSecret;
|
|
40
|
+
}
|
|
41
|
+
function requireName(name) {
|
|
42
|
+
if (!name)
|
|
43
|
+
throw new Error("'name' is required for this action.");
|
|
44
|
+
return name;
|
|
45
|
+
}
|
|
46
|
+
function formatResult(title, value) {
|
|
47
|
+
return {
|
|
48
|
+
content: [
|
|
49
|
+
{
|
|
50
|
+
type: "text",
|
|
51
|
+
text: `${title}:\n\n${JSON.stringify(value, null, 2)}`,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function maskSecret(secret) {
|
|
57
|
+
if (secret.length <= 8)
|
|
58
|
+
return "********";
|
|
59
|
+
return `${secret.slice(0, 4)}…${secret.slice(-4)}`;
|
|
60
|
+
}
|
|
61
|
+
function maskSecurityApplications(apps) {
|
|
62
|
+
return (apps ?? []).map((app) => ({
|
|
63
|
+
...app,
|
|
64
|
+
app_secret: maskSecret(app.app_secret),
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
async function loadSecurityDocument(api) {
|
|
68
|
+
const docs = await api.queryCollection("security", {}, { limit: 1, skip: 0 });
|
|
69
|
+
const security = Array.isArray(docs) ? docs[0] : undefined;
|
|
70
|
+
if (!security || !security._id) {
|
|
71
|
+
throw new Error("Security document not found in collection 'security'.");
|
|
72
|
+
}
|
|
73
|
+
return security;
|
|
74
|
+
}
|
|
75
|
+
async function saveSecurityDocument(api, security) {
|
|
76
|
+
return api.updateDocument("security", security);
|
|
77
|
+
}
|
|
78
|
+
function upsertBy(items, candidate, matches) {
|
|
79
|
+
const next = Array.isArray(items) ? [...items] : [];
|
|
80
|
+
const index = next.findIndex(matches);
|
|
81
|
+
if (index >= 0)
|
|
82
|
+
next[index] = candidate;
|
|
83
|
+
else
|
|
84
|
+
next.push(candidate);
|
|
85
|
+
return next;
|
|
86
|
+
}
|
|
87
|
+
function removeBy(items, matches) {
|
|
88
|
+
return (Array.isArray(items) ? items : []).filter((item) => !matches(item));
|
|
89
|
+
}
|
|
90
|
+
/** The whole security document is the replayable unit for the 4 security-doc branches. */
|
|
91
|
+
function securityPreImage(security) {
|
|
92
|
+
// Clone so the branch can mutate `security` afterwards without corrupting the snapshot.
|
|
93
|
+
return { existedBefore: true, preImage: structuredClone(security), resourceId: security._id };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Current studio role by `_id` (delete) or by full natural key `name`+`type`+`item` (save).
|
|
97
|
+
* Matching on `name` alone can hit the wrong role when a name repeats across `(type,item)`.
|
|
98
|
+
* Always records the natural key so a restore-to-absent can resolve the server `_id` later.
|
|
99
|
+
*/
|
|
100
|
+
async function rolePreImage(api, role) {
|
|
101
|
+
let found = null;
|
|
102
|
+
if (role._id) {
|
|
103
|
+
const byId = await api.getRoleById(role._id);
|
|
104
|
+
if (!byId) {
|
|
105
|
+
throw new Error(`Studio role '${role._id}' not found or unreadable. Mutation aborted to avoid a restore that would delete a live role.`);
|
|
106
|
+
}
|
|
107
|
+
found = byId;
|
|
108
|
+
}
|
|
109
|
+
else if (role.name && role.type && role.item) {
|
|
110
|
+
const roles = await api.listRolesStrict();
|
|
111
|
+
found = roles.find((r) => r.name === role.name && r.type === role.type && r.item === role.item) ?? null;
|
|
112
|
+
}
|
|
113
|
+
const naturalKey = found
|
|
114
|
+
? { name: found.name, type: found.type, item: found.item }
|
|
115
|
+
: { name: role.name ?? "", type: role.type ?? "", item: role.item ?? "" };
|
|
116
|
+
return {
|
|
117
|
+
existedBefore: found !== null,
|
|
118
|
+
preImage: found,
|
|
119
|
+
resourceId: found?._id ?? role._id ?? naturalKey.name,
|
|
120
|
+
naturalKey,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/** Current assignment state for a principal, matched in `listRoleAssignments(item)`. */
|
|
124
|
+
async function assignmentPreImage(api, pr) {
|
|
125
|
+
const assignments = await api.listRoleAssignmentsStrict(pr.item);
|
|
126
|
+
const found = assignments.find((a) => a.type === pr.type && a.item === pr.item && a.role === pr.role) ?? null;
|
|
127
|
+
return {
|
|
128
|
+
existedBefore: found !== null,
|
|
129
|
+
preImage: found,
|
|
130
|
+
resourceId: `${pr.type}:${pr.item}:${pr.role}`,
|
|
131
|
+
naturalKey: { type: pr.type, item: pr.item, role: pr.role },
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* The single chokepoint: serialize a pre-image to disk BEFORE the remote mutation.
|
|
136
|
+
* Throws (via {@link captureBackup}) on any IO/serialization failure, which the handler's
|
|
137
|
+
* try/catch turns into an `isError` response — aborting the mutation.
|
|
138
|
+
*/
|
|
139
|
+
function backupBeforeMutation(action, category, pre, serverUrl) {
|
|
140
|
+
const snapshot = {
|
|
141
|
+
version: 1,
|
|
142
|
+
action,
|
|
143
|
+
category,
|
|
144
|
+
resourceId: pre.resourceId,
|
|
145
|
+
naturalKey: pre.naturalKey,
|
|
146
|
+
existedBefore: pre.existedBefore,
|
|
147
|
+
capturedAt: new Date().toISOString(),
|
|
148
|
+
serverUrl,
|
|
149
|
+
preImage: pre.preImage,
|
|
150
|
+
};
|
|
151
|
+
try {
|
|
152
|
+
(0, _backup_1.captureBackup)(snapshot);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
throw new Error(`Backup write failed (mutation aborted): ${error.message}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async function capturePreImage(action, fn) {
|
|
159
|
+
try {
|
|
160
|
+
return await fn();
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
throw new Error(`Failed to capture pre-image for ${action}: ${error.message}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** Block cross-tenant restore when both snapshot and current connection record a serverUrl. */
|
|
167
|
+
function assertSnapshotServerMatches(snapshot, currentServerUrl) {
|
|
168
|
+
if (snapshot.serverUrl && currentServerUrl && snapshot.serverUrl !== currentServerUrl) {
|
|
169
|
+
throw new Error(`Backup serverUrl mismatch: snapshot was captured from '${snapshot.serverUrl}' but current connection is '${currentServerUrl}'. Refusing cross-server restore.`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/** Fetch the CURRENT state of the resource a snapshot targets — used for restore's own pre-write backup. */
|
|
173
|
+
async function currentPreImage(api, snapshot) {
|
|
174
|
+
switch (snapshot.category) {
|
|
175
|
+
case "security":
|
|
176
|
+
return securityPreImage(await loadSecurityDocument(api));
|
|
177
|
+
case "studio-role": {
|
|
178
|
+
const nk = snapshot.naturalKey;
|
|
179
|
+
if (!nk || !nk.name) {
|
|
180
|
+
throw new Error("Studio-role snapshot missing naturalKey.");
|
|
181
|
+
}
|
|
182
|
+
return rolePreImage(api, nk);
|
|
183
|
+
}
|
|
184
|
+
case "studio-assignment": {
|
|
185
|
+
const key = snapshot.naturalKey;
|
|
186
|
+
if (!key || !key.type || !key.item || !key.role) {
|
|
187
|
+
throw new Error("Studio-assignment snapshot missing naturalKey.");
|
|
188
|
+
}
|
|
189
|
+
return assignmentPreImage(api, { type: key.type, item: key.item, role: key.role });
|
|
190
|
+
}
|
|
191
|
+
default:
|
|
192
|
+
throw new Error(`Unknown backup category: ${snapshot.category}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function registerPermissionsTool(server, apiHolder) {
|
|
196
|
+
server.registerTool("funifier_permissions", {
|
|
197
|
+
title: "Funifier Permissions Manager",
|
|
198
|
+
description: "Manage Funifier permissions without mixing models. " +
|
|
199
|
+
"API access permissions are stored in the gamification security document (apps[] and roles[] scopes). " +
|
|
200
|
+
"Studio/UI permissions are stored in system roles (role collection) and assignments (principal_role). " +
|
|
201
|
+
"Use API actions for app_secret/scope/whitelist management, and Studio actions for page/api/limit permissions and role assignments. " +
|
|
202
|
+
"Every mutating action writes a complete pre-image snapshot under .funifier/backups/ (or FUNIFIER_BACKUP_ROOT) BEFORE the remote write; " +
|
|
203
|
+
"use list_backups to see them and restore_backup (with backup_path) to roll a change back. " +
|
|
204
|
+
"Snapshots accumulate without automatic retention — prune .funifier/backups/ manually when needed.",
|
|
205
|
+
inputSchema: {
|
|
206
|
+
action: zod_1.z
|
|
207
|
+
.enum([
|
|
208
|
+
"list_api_apps",
|
|
209
|
+
"save_api_app",
|
|
210
|
+
"delete_api_app",
|
|
211
|
+
"list_security_roles",
|
|
212
|
+
"save_security_role",
|
|
213
|
+
"delete_security_role",
|
|
214
|
+
"list_studio_roles",
|
|
215
|
+
"save_studio_role",
|
|
216
|
+
"delete_studio_role",
|
|
217
|
+
"list_studio_assignments",
|
|
218
|
+
"assign_studio_role",
|
|
219
|
+
"unassign_studio_role",
|
|
220
|
+
"list_backups",
|
|
221
|
+
"restore_backup",
|
|
222
|
+
])
|
|
223
|
+
.describe("Permission operation to execute."),
|
|
224
|
+
data: zod_1.z
|
|
225
|
+
.string()
|
|
226
|
+
.optional()
|
|
227
|
+
.describe("JSON object payload. For save_api_app: {name, app_secret, scope, whitelist?}. " +
|
|
228
|
+
"For save_security_role: {name, timeout, scope, whitelist?}. " +
|
|
229
|
+
"For save_studio_role: {_id?, name, type, item, permissions:[{type, object, operations}], gamification_whitelist?, gamification_blacklist?}. " +
|
|
230
|
+
"For assign/unassign_studio_role: {type:'user|account|gamification', item:'<principal id>', role:'<role id>'}."),
|
|
231
|
+
app_secret: zod_1.z.string().optional().describe("Application secret used by delete_api_app."),
|
|
232
|
+
name: zod_1.z.string().optional().describe("Security role name used by delete_security_role."),
|
|
233
|
+
role_id: zod_1.z.string().optional().describe("Studio role _id used by delete_studio_role or assignment helpers."),
|
|
234
|
+
role_type: zod_1.z
|
|
235
|
+
.enum(["system", "account", "gamification"])
|
|
236
|
+
.optional()
|
|
237
|
+
.describe("Optional filter for list_studio_roles."),
|
|
238
|
+
item: zod_1.z.string().optional().describe("Optional item filter for list_studio_roles/list_studio_assignments."),
|
|
239
|
+
principal_type: zod_1.z
|
|
240
|
+
.enum(["user", "account", "gamification"])
|
|
241
|
+
.optional()
|
|
242
|
+
.describe("Assignment principal type, if 'data' is not provided."),
|
|
243
|
+
principal_item: zod_1.z.string().optional().describe("Assignment principal id, if 'data' is not provided."),
|
|
244
|
+
backup_path: zod_1.z.string().optional().describe("Path of a snapshot file to restore, required by restore_backup."),
|
|
245
|
+
},
|
|
246
|
+
annotations: {
|
|
247
|
+
readOnlyHint: false,
|
|
248
|
+
destructiveHint: true,
|
|
249
|
+
idempotentHint: false,
|
|
250
|
+
openWorldHint: true,
|
|
251
|
+
},
|
|
252
|
+
}, async ({ action, data, app_secret, name, role_id, role_type, item, principal_type, principal_item, backup_path }) => {
|
|
253
|
+
try {
|
|
254
|
+
const api = apiHolder.requireClient();
|
|
255
|
+
const serverUrl = apiHolder.getConnectionInfo?.().serverUrl ?? null;
|
|
256
|
+
if (action === "list_api_apps") {
|
|
257
|
+
const security = await loadSecurityDocument(api);
|
|
258
|
+
return formatResult(`API applications (${security.apps?.length ?? 0})`, maskSecurityApplications(security.apps));
|
|
259
|
+
}
|
|
260
|
+
if (action === "save_api_app") {
|
|
261
|
+
const app = parseJsonObject(data, "data");
|
|
262
|
+
if (!app.name || !app.app_secret || !app.scope) {
|
|
263
|
+
throw new Error("API app requires 'name', 'app_secret', and 'scope'.");
|
|
264
|
+
}
|
|
265
|
+
const security = await loadSecurityDocument(api);
|
|
266
|
+
backupBeforeMutation("save_api_app", "security", securityPreImage(security), serverUrl);
|
|
267
|
+
security.apps = upsertBy(security.apps, app, (current) => current.app_secret === app.app_secret);
|
|
268
|
+
const saved = await saveSecurityDocument(api, security);
|
|
269
|
+
return formatResult("API app saved in security.apps", maskSecurityApplications(saved.apps));
|
|
270
|
+
}
|
|
271
|
+
if (action === "delete_api_app") {
|
|
272
|
+
const appSecret = requireAppSecret(app_secret);
|
|
273
|
+
const security = await loadSecurityDocument(api);
|
|
274
|
+
backupBeforeMutation("delete_api_app", "security", securityPreImage(security), serverUrl);
|
|
275
|
+
security.apps = removeBy(security.apps, (current) => current.app_secret === appSecret);
|
|
276
|
+
const saved = await saveSecurityDocument(api, security);
|
|
277
|
+
return formatResult("API app removed from security.apps", maskSecurityApplications(saved.apps));
|
|
278
|
+
}
|
|
279
|
+
if (action === "list_security_roles") {
|
|
280
|
+
const security = await loadSecurityDocument(api);
|
|
281
|
+
return formatResult(`Security roles (${security.roles?.length ?? 0})`, security.roles ?? []);
|
|
282
|
+
}
|
|
283
|
+
if (action === "save_security_role") {
|
|
284
|
+
const role = parseJsonObject(data, "data");
|
|
285
|
+
if (!role.name || !role.timeout || !role.scope) {
|
|
286
|
+
throw new Error("Security role requires 'name', 'timeout', and 'scope'.");
|
|
287
|
+
}
|
|
288
|
+
const security = await loadSecurityDocument(api);
|
|
289
|
+
backupBeforeMutation("save_security_role", "security", securityPreImage(security), serverUrl);
|
|
290
|
+
security.roles = upsertBy(security.roles, role, (current) => current.name === role.name);
|
|
291
|
+
const saved = await saveSecurityDocument(api, security);
|
|
292
|
+
return formatResult("Security role saved in security.roles", saved.roles ?? []);
|
|
293
|
+
}
|
|
294
|
+
if (action === "delete_security_role") {
|
|
295
|
+
const roleName = requireName(name);
|
|
296
|
+
const security = await loadSecurityDocument(api);
|
|
297
|
+
backupBeforeMutation("delete_security_role", "security", securityPreImage(security), serverUrl);
|
|
298
|
+
security.roles = removeBy(security.roles, (current) => current.name === roleName);
|
|
299
|
+
const saved = await saveSecurityDocument(api, security);
|
|
300
|
+
return formatResult("Security role removed from security.roles", saved.roles ?? []);
|
|
301
|
+
}
|
|
302
|
+
if (action === "list_studio_roles") {
|
|
303
|
+
const roles = await api.listRoles();
|
|
304
|
+
const filtered = roles.filter((role) => {
|
|
305
|
+
if (role_type && role.type !== role_type)
|
|
306
|
+
return false;
|
|
307
|
+
if (item && role.item !== item)
|
|
308
|
+
return false;
|
|
309
|
+
return true;
|
|
310
|
+
});
|
|
311
|
+
return formatResult(`Studio roles (${filtered.length})`, filtered);
|
|
312
|
+
}
|
|
313
|
+
if (action === "save_studio_role") {
|
|
314
|
+
const role = parseJsonObject(data, "data");
|
|
315
|
+
if (!role.name || !role.type || !role.item || !Array.isArray(role.permissions)) {
|
|
316
|
+
throw new Error("Studio role requires 'name', 'type', 'item', and 'permissions' array.");
|
|
317
|
+
}
|
|
318
|
+
role.permissions.forEach((permission) => {
|
|
319
|
+
if (!permission.type || !permission.object || !permission.operations) {
|
|
320
|
+
throw new Error("Each permission requires 'type', 'object', and 'operations'.");
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
backupBeforeMutation("save_studio_role", "studio-role", await capturePreImage("save_studio_role", () => rolePreImage(api, role)), serverUrl);
|
|
324
|
+
const saved = await api.saveRole(role);
|
|
325
|
+
return formatResult("Studio role saved", saved);
|
|
326
|
+
}
|
|
327
|
+
if (action === "delete_studio_role") {
|
|
328
|
+
const id = requireRoleId(role_id);
|
|
329
|
+
backupBeforeMutation("delete_studio_role", "studio-role", await capturePreImage("delete_studio_role", () => rolePreImage(api, { _id: id })), serverUrl);
|
|
330
|
+
const result = await api.deleteRole(id);
|
|
331
|
+
return formatResult("Studio role deleted", result);
|
|
332
|
+
}
|
|
333
|
+
if (action === "list_studio_assignments") {
|
|
334
|
+
const assignments = await api.listRoleAssignments(item);
|
|
335
|
+
return formatResult(`Studio role assignments (${assignments.length})`, assignments);
|
|
336
|
+
}
|
|
337
|
+
if (action === "assign_studio_role") {
|
|
338
|
+
const assignment = parsePrincipalRole(data, principal_type, principal_item, role_id);
|
|
339
|
+
backupBeforeMutation("assign_studio_role", "studio-assignment", await capturePreImage("assign_studio_role", () => assignmentPreImage(api, assignment)), serverUrl);
|
|
340
|
+
const saved = await api.assignRole(assignment);
|
|
341
|
+
return formatResult("Studio role assigned", saved);
|
|
342
|
+
}
|
|
343
|
+
if (action === "unassign_studio_role") {
|
|
344
|
+
const assignment = parsePrincipalRole(data, principal_type, principal_item, role_id);
|
|
345
|
+
backupBeforeMutation("unassign_studio_role", "studio-assignment", await capturePreImage("unassign_studio_role", () => assignmentPreImage(api, assignment)), serverUrl);
|
|
346
|
+
const result = await api.unassignRole(assignment);
|
|
347
|
+
return formatResult("Studio role unassigned", result);
|
|
348
|
+
}
|
|
349
|
+
if (action === "list_backups") {
|
|
350
|
+
const snapshots = (0, _backup_1.listSnapshots)();
|
|
351
|
+
return formatResult(`Backups (${snapshots.length})`, snapshots);
|
|
352
|
+
}
|
|
353
|
+
if (action === "restore_backup") {
|
|
354
|
+
if (!backup_path)
|
|
355
|
+
throw new Error("'backup_path' is required for restore_backup.");
|
|
356
|
+
// Read + validate first: a missing/corrupt/invalid file throws before any remote write.
|
|
357
|
+
const snapshot = (0, _backup_1.readSnapshot)((0, _backup_1.resolveBackupPath)(backup_path));
|
|
358
|
+
assertSnapshotServerMatches(snapshot, serverUrl);
|
|
359
|
+
// Restore is itself a critical mutation, so it takes its own pre-write backup of current state.
|
|
360
|
+
backupBeforeMutation("restore_backup", snapshot.category, await capturePreImage("restore_backup", () => currentPreImage(api, snapshot)), serverUrl);
|
|
361
|
+
const result = await (0, _backup_1.applySnapshot)(api, snapshot);
|
|
362
|
+
return formatResult(`Backup restored from ${backup_path}`, result);
|
|
363
|
+
}
|
|
364
|
+
return {
|
|
365
|
+
content: [{ type: "text", text: `Unknown action: ${action}` }],
|
|
366
|
+
isError: true,
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
return {
|
|
371
|
+
content: [{ type: "text", text: `Error in funifier_permissions ${action}: ${error.message}` }],
|
|
372
|
+
isError: true,
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/mcp/tools/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.test.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/permissions.test.ts"],"names":[],"mappings":""}
|