funifier-mcp 0.3.10 → 0.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/.cursor/rules/funifier.mdc +1 -0
  2. package/.github/copilot-instructions.md +1 -0
  3. package/AGENTS.md +46 -1
  4. package/README.md +13 -2
  5. package/datasource-funifier-docs/.coverage.json +1 -1
  6. package/dist/cli/config-writers.d.ts +3 -3
  7. package/dist/cli/config-writers.d.ts.map +1 -1
  8. package/dist/cli/config-writers.js +22 -24
  9. package/dist/cli/config-writers.js.map +1 -1
  10. package/dist/cli/config-writers.test.js +7 -2
  11. package/dist/cli/config-writers.test.js.map +1 -1
  12. package/dist/cli/init.d.ts.map +1 -1
  13. package/dist/cli/init.js +19 -11
  14. package/dist/cli/init.js.map +1 -1
  15. package/dist/cli/init.test.js +46 -0
  16. package/dist/cli/init.test.js.map +1 -1
  17. package/dist/core/api-client.d.ts +4 -0
  18. package/dist/core/api-client.d.ts.map +1 -1
  19. package/dist/core/api-client.js +23 -0
  20. package/dist/core/api-client.js.map +1 -1
  21. package/dist/mcp/bundle.js +110 -107
  22. package/dist/mcp/tools/_backup.d.ts +89 -0
  23. package/dist/mcp/tools/_backup.d.ts.map +1 -0
  24. package/dist/mcp/tools/_backup.js +325 -0
  25. package/dist/mcp/tools/_backup.js.map +1 -0
  26. package/dist/mcp/tools/_backup.test.d.ts +2 -0
  27. package/dist/mcp/tools/_backup.test.d.ts.map +1 -0
  28. package/dist/mcp/tools/_backup.test.js +342 -0
  29. package/dist/mcp/tools/_backup.test.js.map +1 -0
  30. package/dist/mcp/tools/database.d.ts.map +1 -1
  31. package/dist/mcp/tools/database.js +14 -0
  32. package/dist/mcp/tools/database.js.map +1 -1
  33. package/dist/mcp/tools/database.test.js +40 -0
  34. package/dist/mcp/tools/database.test.js.map +1 -1
  35. package/dist/mcp/tools/list-tools.d.ts.map +1 -1
  36. package/dist/mcp/tools/list-tools.js +3 -2
  37. package/dist/mcp/tools/list-tools.js.map +1 -1
  38. package/dist/mcp/tools/permissions.d.ts.map +1 -1
  39. package/dist/mcp/tools/permissions.js +231 -4
  40. package/dist/mcp/tools/permissions.js.map +1 -1
  41. package/dist/mcp/tools/permissions.test.js +562 -12
  42. package/dist/mcp/tools/permissions.test.js.map +1 -1
  43. package/package.json +1 -1
  44. package/skills/funifier/references/configure-security.md +18 -0
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerPermissionsTool = registerPermissionsTool;
4
4
  const zod_1 = require("zod");
5
+ const _backup_1 = require("./_backup");
5
6
  function parseJsonObject(value, label) {
6
7
  if (!value) {
7
8
  throw new Error(`'${label}' is required as a JSON object.`);
@@ -64,11 +65,32 @@ function maskSecurityApplications(apps) {
64
65
  }));
65
66
  }
66
67
  async function loadSecurityDocument(api) {
67
- const docs = await api.queryCollection("security", {}, { limit: 1, skip: 0 });
68
- const security = Array.isArray(docs) ? docs[0] : undefined;
68
+ // Try aggregate with $toString to normalize an object _id to its canonical hex string.
69
+ let security;
70
+ if (typeof api.aggregateCollection === "function") {
71
+ try {
72
+ const docs = await api.aggregateCollection("security", [
73
+ { $addFields: { _id: { $toString: "$_id" } } },
74
+ { $limit: 1 },
75
+ ]);
76
+ if (Array.isArray(docs) && docs.length > 0 && docs[0]?._id)
77
+ security = docs[0];
78
+ }
79
+ catch {
80
+ // fall through to queryCollection
81
+ }
82
+ }
83
+ if (!security) {
84
+ const docs = await api.queryCollection("security", {}, { limit: 1, skip: 0 });
85
+ security = Array.isArray(docs) ? docs[0] : undefined;
86
+ }
69
87
  if (!security || !security._id) {
70
88
  throw new Error("Security document not found in collection 'security'.");
71
89
  }
90
+ // Write requires a string _id (Gson Security.id: String); an object _id would 500 on PUT.
91
+ if (typeof security._id !== "string") {
92
+ throw new Error("Could not resolve a string _id for the security document; aborting to avoid corrupting it.");
93
+ }
72
94
  return security;
73
95
  }
74
96
  async function saveSecurityDocument(api, security) {
@@ -86,13 +108,174 @@ function upsertBy(items, candidate, matches) {
86
108
  function removeBy(items, matches) {
87
109
  return (Array.isArray(items) ? items : []).filter((item) => !matches(item));
88
110
  }
111
+ /** The whole security document is the replayable unit for the 4 security-doc branches. */
112
+ function securityPreImage(security) {
113
+ // Clone so the branch can mutate `security` afterwards without corrupting the snapshot.
114
+ return { existedBefore: true, preImage: structuredClone(security), resourceId: security._id };
115
+ }
116
+ /**
117
+ * Current studio role by `_id` (delete) or by full natural key `name`+`type`+`item` (save).
118
+ * Matching on `name` alone can hit the wrong role when a name repeats across `(type,item)`.
119
+ * Always records the natural key so a restore-to-absent can resolve the server `_id` later.
120
+ */
121
+ async function rolePreImage(api, role) {
122
+ let found = null;
123
+ if (role._id) {
124
+ const byId = await api.getRoleById(role._id);
125
+ if (!byId) {
126
+ throw new Error(`Studio role '${role._id}' not found or unreadable. Mutation aborted to avoid a restore that would delete a live role.`);
127
+ }
128
+ found = byId;
129
+ }
130
+ else if (role.name && role.type && role.item) {
131
+ const roles = await api.listRolesStrict();
132
+ found = roles.find((r) => r.name === role.name && r.type === role.type && r.item === role.item) ?? null;
133
+ }
134
+ const naturalKey = found
135
+ ? { name: found.name, type: found.type, item: found.item }
136
+ : { name: role.name ?? "", type: role.type ?? "", item: role.item ?? "" };
137
+ return {
138
+ existedBefore: found !== null,
139
+ preImage: found,
140
+ resourceId: found?._id ?? role._id ?? naturalKey.name,
141
+ naturalKey,
142
+ };
143
+ }
144
+ /** Current assignment state for a principal, matched in `listRoleAssignments(item)`. */
145
+ async function assignmentPreImage(api, pr) {
146
+ const assignments = await api.listRoleAssignmentsStrict(pr.item);
147
+ const found = assignments.find((a) => a.type === pr.type && a.item === pr.item && a.role === pr.role) ?? null;
148
+ return {
149
+ existedBefore: found !== null,
150
+ preImage: found,
151
+ resourceId: `${pr.type}:${pr.item}:${pr.role}`,
152
+ naturalKey: { type: pr.type, item: pr.item, role: pr.role },
153
+ };
154
+ }
155
+ /**
156
+ * The single chokepoint: serialize a pre-image to disk BEFORE the remote mutation.
157
+ * Throws (via {@link captureBackup}) on any IO/serialization failure, which the handler's
158
+ * try/catch turns into an `isError` response — aborting the mutation.
159
+ *
160
+ * Pass `skipContentCheck: true` when backing up state that may legitimately be truncated
161
+ * (e.g. restore's pre-backup of a broken live document).
162
+ */
163
+ function backupBeforeMutation(action, category, pre, serverUrl, opts = {}) {
164
+ const snapshot = {
165
+ version: 1,
166
+ action,
167
+ category,
168
+ resourceId: pre.resourceId,
169
+ naturalKey: pre.naturalKey,
170
+ existedBefore: pre.existedBefore,
171
+ capturedAt: new Date().toISOString(),
172
+ serverUrl,
173
+ preImage: pre.preImage,
174
+ };
175
+ try {
176
+ return (0, _backup_1.captureBackupVerified)(snapshot, (0, _backup_1.backupRoot)(), opts);
177
+ }
178
+ catch (error) {
179
+ if (error.message?.startsWith("Backup integrity check failed")) {
180
+ const detail = error.message.replace(/^Backup integrity check failed:\s*/, "");
181
+ throw new Error(`Backup integrity check failed (mutation aborted): ${detail}`);
182
+ }
183
+ throw new Error(`Backup write failed (mutation aborted): ${error.message}`);
184
+ }
185
+ }
186
+ /**
187
+ * Re-reads the security document after a write and confirms apps+roles are intact.
188
+ * Compares by name+count against `expected` (the document as sent), never strict full equality.
189
+ */
190
+ async function verifySecurityPersisted(api, expected, backupPath) {
191
+ let persisted;
192
+ try {
193
+ persisted = await loadSecurityDocument(api);
194
+ }
195
+ catch (error) {
196
+ throw new Error(`Could not verify the write persisted: failed to re-read security document: ${error.message}`);
197
+ }
198
+ // expectedApps/expectedRoles must be arrays — callers must validate the snapshot before calling applySnapshot.
199
+ if (!Array.isArray(expected.apps) || !Array.isArray(expected.roles)) {
200
+ throw new Error(`Post-write verification FAILED: expected security document is missing 'apps' or 'roles' arrays. ` +
201
+ `Pre-write backup is at ${backupPath}.`);
202
+ }
203
+ const expectedApps = expected.apps;
204
+ const persistedApps = persisted.apps ?? [];
205
+ const expectedRoles = expected.roles;
206
+ const persistedRoles = persisted.roles ?? [];
207
+ // Use app_secret (stable natural key) — name alone is not unique enough.
208
+ const missingApps = expectedApps
209
+ .filter((ea) => !persistedApps.some((pa) => pa.app_secret === ea.app_secret))
210
+ .map((a) => a.name);
211
+ const appCountShortfall = persistedApps.length < expectedApps.length;
212
+ if (missingApps.length > 0 || appCountShortfall) {
213
+ const detail = missingApps.length > 0
214
+ ? `apps:[${missingApps.join(",")}]`
215
+ : `apps count dropped from ${expectedApps.length} to ${persistedApps.length}`;
216
+ throw new Error(`Post-write verification FAILED: persisted security document is missing ${detail}. ` +
217
+ `The document may be truncated. Pre-write backup is at ${backupPath} — restore with funifier_permissions restore_backup.`);
218
+ }
219
+ // Use name as key for roles (only stable identifier) + count to catch silent drops.
220
+ const missingRoles = expectedRoles
221
+ .filter((er) => !persistedRoles.some((pr) => pr.name === er.name))
222
+ .map((r) => r.name);
223
+ const roleCountShortfall = persistedRoles.length < expectedRoles.length;
224
+ if (missingRoles.length > 0 || roleCountShortfall) {
225
+ const detail = missingRoles.length > 0
226
+ ? `roles:[${missingRoles.join(",")}]`
227
+ : `roles count dropped from ${expectedRoles.length} to ${persistedRoles.length}`;
228
+ throw new Error(`Post-write verification FAILED: persisted security document is missing ${detail}. ` +
229
+ `The document may be truncated. Pre-write backup is at ${backupPath} — restore with funifier_permissions restore_backup.`);
230
+ }
231
+ }
232
+ async function capturePreImage(action, fn) {
233
+ try {
234
+ return await fn();
235
+ }
236
+ catch (error) {
237
+ throw new Error(`Failed to capture pre-image for ${action}: ${error.message}`);
238
+ }
239
+ }
240
+ /** Block cross-tenant restore when both snapshot and current connection record a serverUrl. */
241
+ function assertSnapshotServerMatches(snapshot, currentServerUrl) {
242
+ if (snapshot.serverUrl && currentServerUrl && snapshot.serverUrl !== currentServerUrl) {
243
+ throw new Error(`Backup serverUrl mismatch: snapshot was captured from '${snapshot.serverUrl}' but current connection is '${currentServerUrl}'. Refusing cross-server restore.`);
244
+ }
245
+ }
246
+ /** Fetch the CURRENT state of the resource a snapshot targets — used for restore's own pre-write backup. */
247
+ async function currentPreImage(api, snapshot) {
248
+ switch (snapshot.category) {
249
+ case "security":
250
+ return securityPreImage(await loadSecurityDocument(api));
251
+ case "studio-role": {
252
+ const nk = snapshot.naturalKey;
253
+ if (!nk || !nk.name) {
254
+ throw new Error("Studio-role snapshot missing naturalKey.");
255
+ }
256
+ return rolePreImage(api, nk);
257
+ }
258
+ case "studio-assignment": {
259
+ const key = snapshot.naturalKey;
260
+ if (!key || !key.type || !key.item || !key.role) {
261
+ throw new Error("Studio-assignment snapshot missing naturalKey.");
262
+ }
263
+ return assignmentPreImage(api, { type: key.type, item: key.item, role: key.role });
264
+ }
265
+ default:
266
+ throw new Error(`Unknown backup category: ${snapshot.category}`);
267
+ }
268
+ }
89
269
  function registerPermissionsTool(server, apiHolder) {
90
270
  server.registerTool("funifier_permissions", {
91
271
  title: "Funifier Permissions Manager",
92
272
  description: "Manage Funifier permissions without mixing models. " +
93
273
  "API access permissions are stored in the gamification security document (apps[] and roles[] scopes). " +
94
274
  "Studio/UI permissions are stored in system roles (role collection) and assignments (principal_role). " +
95
- "Use API actions for app_secret/scope/whitelist management, and Studio actions for page/api/limit permissions and role assignments.",
275
+ "Use API actions for app_secret/scope/whitelist management, and Studio actions for page/api/limit permissions and role assignments. " +
276
+ "Every mutating action writes a complete pre-image snapshot under .funifier/backups/ (or FUNIFIER_BACKUP_ROOT) BEFORE the remote write; " +
277
+ "use list_backups to see them and restore_backup (with backup_path) to roll a change back. " +
278
+ "Snapshots accumulate without automatic retention — prune .funifier/backups/ manually when needed.",
96
279
  inputSchema: {
97
280
  action: zod_1.z
98
281
  .enum([
@@ -108,6 +291,8 @@ function registerPermissionsTool(server, apiHolder) {
108
291
  "list_studio_assignments",
109
292
  "assign_studio_role",
110
293
  "unassign_studio_role",
294
+ "list_backups",
295
+ "restore_backup",
111
296
  ])
112
297
  .describe("Permission operation to execute."),
113
298
  data: zod_1.z
@@ -130,6 +315,7 @@ function registerPermissionsTool(server, apiHolder) {
130
315
  .optional()
131
316
  .describe("Assignment principal type, if 'data' is not provided."),
132
317
  principal_item: zod_1.z.string().optional().describe("Assignment principal id, if 'data' is not provided."),
318
+ backup_path: zod_1.z.string().optional().describe("Path of a snapshot file to restore, required by restore_backup."),
133
319
  },
134
320
  annotations: {
135
321
  readOnlyHint: false,
@@ -137,9 +323,10 @@ function registerPermissionsTool(server, apiHolder) {
137
323
  idempotentHint: false,
138
324
  openWorldHint: true,
139
325
  },
140
- }, async ({ action, data, app_secret, name, role_id, role_type, item, principal_type, principal_item }) => {
326
+ }, async ({ action, data, app_secret, name, role_id, role_type, item, principal_type, principal_item, backup_path }) => {
141
327
  try {
142
328
  const api = apiHolder.requireClient();
329
+ const serverUrl = apiHolder.getConnectionInfo?.().serverUrl ?? null;
143
330
  if (action === "list_api_apps") {
144
331
  const security = await loadSecurityDocument(api);
145
332
  return formatResult(`API applications (${security.apps?.length ?? 0})`, maskSecurityApplications(security.apps));
@@ -150,15 +337,19 @@ function registerPermissionsTool(server, apiHolder) {
150
337
  throw new Error("API app requires 'name', 'app_secret', and 'scope'.");
151
338
  }
152
339
  const security = await loadSecurityDocument(api);
340
+ const backupPath = backupBeforeMutation("save_api_app", "security", securityPreImage(security), serverUrl);
153
341
  security.apps = upsertBy(security.apps, app, (current) => current.app_secret === app.app_secret);
154
342
  const saved = await saveSecurityDocument(api, security);
343
+ await verifySecurityPersisted(api, security, backupPath);
155
344
  return formatResult("API app saved in security.apps", maskSecurityApplications(saved.apps));
156
345
  }
157
346
  if (action === "delete_api_app") {
158
347
  const appSecret = requireAppSecret(app_secret);
159
348
  const security = await loadSecurityDocument(api);
349
+ const backupPath = backupBeforeMutation("delete_api_app", "security", securityPreImage(security), serverUrl);
160
350
  security.apps = removeBy(security.apps, (current) => current.app_secret === appSecret);
161
351
  const saved = await saveSecurityDocument(api, security);
352
+ await verifySecurityPersisted(api, security, backupPath);
162
353
  return formatResult("API app removed from security.apps", maskSecurityApplications(saved.apps));
163
354
  }
164
355
  if (action === "list_security_roles") {
@@ -171,15 +362,19 @@ function registerPermissionsTool(server, apiHolder) {
171
362
  throw new Error("Security role requires 'name', 'timeout', and 'scope'.");
172
363
  }
173
364
  const security = await loadSecurityDocument(api);
365
+ const backupPath = backupBeforeMutation("save_security_role", "security", securityPreImage(security), serverUrl);
174
366
  security.roles = upsertBy(security.roles, role, (current) => current.name === role.name);
175
367
  const saved = await saveSecurityDocument(api, security);
368
+ await verifySecurityPersisted(api, security, backupPath);
176
369
  return formatResult("Security role saved in security.roles", saved.roles ?? []);
177
370
  }
178
371
  if (action === "delete_security_role") {
179
372
  const roleName = requireName(name);
180
373
  const security = await loadSecurityDocument(api);
374
+ const backupPath = backupBeforeMutation("delete_security_role", "security", securityPreImage(security), serverUrl);
181
375
  security.roles = removeBy(security.roles, (current) => current.name === roleName);
182
376
  const saved = await saveSecurityDocument(api, security);
377
+ await verifySecurityPersisted(api, security, backupPath);
183
378
  return formatResult("Security role removed from security.roles", saved.roles ?? []);
184
379
  }
185
380
  if (action === "list_studio_roles") {
@@ -203,11 +398,13 @@ function registerPermissionsTool(server, apiHolder) {
203
398
  throw new Error("Each permission requires 'type', 'object', and 'operations'.");
204
399
  }
205
400
  });
401
+ backupBeforeMutation("save_studio_role", "studio-role", await capturePreImage("save_studio_role", () => rolePreImage(api, role)), serverUrl);
206
402
  const saved = await api.saveRole(role);
207
403
  return formatResult("Studio role saved", saved);
208
404
  }
209
405
  if (action === "delete_studio_role") {
210
406
  const id = requireRoleId(role_id);
407
+ backupBeforeMutation("delete_studio_role", "studio-role", await capturePreImage("delete_studio_role", () => rolePreImage(api, { _id: id })), serverUrl);
211
408
  const result = await api.deleteRole(id);
212
409
  return formatResult("Studio role deleted", result);
213
410
  }
@@ -217,14 +414,44 @@ function registerPermissionsTool(server, apiHolder) {
217
414
  }
218
415
  if (action === "assign_studio_role") {
219
416
  const assignment = parsePrincipalRole(data, principal_type, principal_item, role_id);
417
+ backupBeforeMutation("assign_studio_role", "studio-assignment", await capturePreImage("assign_studio_role", () => assignmentPreImage(api, assignment)), serverUrl);
220
418
  const saved = await api.assignRole(assignment);
221
419
  return formatResult("Studio role assigned", saved);
222
420
  }
223
421
  if (action === "unassign_studio_role") {
224
422
  const assignment = parsePrincipalRole(data, principal_type, principal_item, role_id);
423
+ backupBeforeMutation("unassign_studio_role", "studio-assignment", await capturePreImage("unassign_studio_role", () => assignmentPreImage(api, assignment)), serverUrl);
225
424
  const result = await api.unassignRole(assignment);
226
425
  return formatResult("Studio role unassigned", result);
227
426
  }
427
+ if (action === "list_backups") {
428
+ const snapshots = (0, _backup_1.listSnapshots)();
429
+ return formatResult(`Backups (${snapshots.length})`, snapshots);
430
+ }
431
+ if (action === "restore_backup") {
432
+ if (!backup_path)
433
+ throw new Error("'backup_path' is required for restore_backup.");
434
+ // Read + validate first: a missing/corrupt/invalid file throws before any remote write.
435
+ const snapshot = (0, _backup_1.readSnapshot)((0, _backup_1.resolveBackupPath)(backup_path));
436
+ // Critical #2: validate security snapshot schema before any side effects.
437
+ // A snapshot without apps/roles would re-truncate the document on write.
438
+ if (snapshot.category === "security") {
439
+ const pre = snapshot.preImage;
440
+ if (!pre || pre._id == null || !Array.isArray(pre.apps) || !Array.isArray(pre.roles)) {
441
+ throw new Error("Security snapshot pre-image is malformed: missing '_id', or 'apps'/'roles' are not arrays. " +
442
+ "Refusing to apply a snapshot that could truncate the document.");
443
+ }
444
+ }
445
+ assertSnapshotServerMatches(snapshot, serverUrl);
446
+ // Restore is itself a critical mutation, so it takes its own pre-write backup of current state.
447
+ // Critical #1: skipContentCheck — the live document may already be truncated (that is why we restore).
448
+ const restoreBackupPath = backupBeforeMutation("restore_backup", snapshot.category, await capturePreImage("restore_backup", () => currentPreImage(api, snapshot)), serverUrl, { skipContentCheck: true });
449
+ const result = await (0, _backup_1.applySnapshot)(api, snapshot);
450
+ if (snapshot.category === "security") {
451
+ await verifySecurityPersisted(api, snapshot.preImage, restoreBackupPath);
452
+ }
453
+ return formatResult(`Backup restored from ${backup_path}`, result);
454
+ }
228
455
  return {
229
456
  content: [{ type: "text", text: `Unknown action: ${action}` }],
230
457
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/mcp/tools/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/mcp/tools/permissions.ts"],"names":[],"mappings":"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"}