@qikdev/mcp 6.6.19 → 6.6.22

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.
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/tools/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK1D,eAAO,MAAM,iBAAiB,EAAE,IAqB/B,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAuH5J"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/tools/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK1D,eAAO,MAAM,iBAAiB,EAAE,IAqB/B,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA4D5J"}
@@ -1,5 +1,5 @@
1
1
  import { ConfigManager } from "../config.js";
2
- import { getUserSessionData, hasPermission, getAvailableScopes } from "./user.js";
2
+ import { getUserSessionData, getAvailableScopes, getScopeTitle } from "./user.js";
3
3
  export const createContentTool = {
4
4
  name: "create_content",
5
5
  description: "✨ Create new content items using Qik content types with guided field collection",
@@ -12,7 +12,7 @@ export const createContentTool = {
12
12
  },
13
13
  scope: {
14
14
  type: "string",
15
- description: "The scope to create the content in (optional - will prompt if not provided)"
15
+ description: "The scope to create the content in (optional - will prompt if not provided and multiple scopes available)"
16
16
  },
17
17
  data: {
18
18
  type: "object",
@@ -29,161 +29,126 @@ export async function handleCreateContent(args) {
29
29
  if (!config) {
30
30
  throw new Error('Qik MCP server not configured. Run setup first.');
31
31
  }
32
- const { typeKey, scope, data } = args;
33
- // STEP 1: User asks to create something - we have the typeKey
34
- // STEP 2: Load and check the glossary for the relevant entry
35
- const glossaryResponse = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/glossary/ai`, {
36
- headers: {
37
- 'Authorization': `Bearer ${config.accessToken}`,
38
- 'Content-Type': 'application/json',
39
- },
40
- });
41
- if (!glossaryResponse.ok) {
42
- throw new Error(`Failed to fetch glossary: HTTP ${glossaryResponse.status}`);
43
- }
44
- const glossaryData = await glossaryResponse.json();
45
- // Find the content type
46
- let contentType = glossaryData.find(ct => ct.key === typeKey);
47
- // If not found by key, try natural language matching
48
- if (!contentType) {
49
- contentType = findContentTypeByDescription(glossaryData, typeKey);
50
- }
32
+ const { typeKey, scope, data = {} } = args;
33
+ // STEP 1: Load glossary and find the most appropriate content type
34
+ const contentType = await findContentType(config, typeKey);
51
35
  if (!contentType) {
52
- const availableTypes = glossaryData.map(ct => `${ct.key} (${ct.title})`).join(', ');
53
- throw new Error(`Content type '${typeKey}' not found. Available types: ${availableTypes}`);
36
+ return createErrorResponse(`Content type '${typeKey}' not found. Please check available types using get_glossary.`);
54
37
  }
55
- // STEP 3: Understand how to create the JSON object from the glossary entry
56
- const payload = buildPayloadFromGlossary(contentType, data, scope);
57
- // Get user session for permissions and scope validation
38
+ // STEP 2: Get user session and determine available scopes for this content type
58
39
  const userSession = await getUserSessionData();
59
- const requiredPermission = `create.${contentType.key}`;
60
- if (!hasPermission(userSession, requiredPermission)) {
61
- throw new Error(`You don't have permission to create ${contentType.title} content. Required permission: ${requiredPermission}`);
40
+ const createPermission = `create.${contentType.key}`;
41
+ const availableScopes = getAvailableScopesForPermission(userSession, createPermission);
42
+ if (availableScopes.length === 0) {
43
+ return createErrorResponse(`You don't have permission to create ${contentType.title} content. Required permission: ${createPermission}`);
62
44
  }
63
- // Handle scope selection if not provided
64
- if (!payload.meta?.scopes) {
65
- const availableScopes = getAvailableScopes(userSession, requiredPermission);
66
- if (availableScopes.length === 0) {
67
- throw new Error(`No scopes available for creating ${contentType.title} content`);
68
- }
45
+ // STEP 3: Handle scope selection
46
+ let selectedScope = scope;
47
+ if (!selectedScope) {
69
48
  if (availableScopes.length === 1) {
70
- payload.meta = payload.meta || {};
71
- payload.meta.scopes = [availableScopes[0]];
49
+ selectedScope = availableScopes[0];
72
50
  }
73
51
  else {
74
- return {
75
- content: [{
76
- type: "text",
77
- text: `🎯 Multiple scopes available for creating ${contentType.title}:\n\n${availableScopes.map((s, i) => `${i + 1}. ${s}`).join('\n')}\n\nPlease call create_content again with the scope parameter set to one of: ${availableScopes.join(', ')}`
78
- }]
79
- };
52
+ return createScopeSelectionPrompt(contentType.title, availableScopes, userSession);
80
53
  }
81
54
  }
82
- // Check if we have all required data
83
- const missingFields = getMissingRequiredFields(contentType, payload);
84
- if (missingFields.length > 0) {
85
- const fieldPrompts = missingFields.map(field => {
86
- return `• ${field.title || field.path}: ${field.description || 'No description'}`;
87
- }).join('\n');
88
- return {
89
- content: [{
90
- type: "text",
91
- text: `📝 Missing required fields for ${contentType.title}:\n\n${fieldPrompts}\n\nPlease call create_content again with a 'data' object containing these fields.`
92
- }]
93
- };
55
+ else {
56
+ // Validate the provided scope is available
57
+ if (!availableScopes.includes(selectedScope)) {
58
+ return createErrorResponse(`Scope '${selectedScope}' is not available. Available scopes: ${availableScopes.join(', ')}`);
59
+ }
94
60
  }
95
- // Create the content
96
- const createResponse = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/content`, {
97
- method: 'POST',
98
- headers: {
99
- 'Authorization': `Bearer ${config.accessToken}`,
100
- 'Content-Type': 'application/json',
101
- },
102
- body: JSON.stringify(payload)
103
- });
104
- if (!createResponse.ok) {
105
- const errorText = await createResponse.text();
106
- throw new Error(`Failed to create content: HTTP ${createResponse.status} - ${errorText}`);
61
+ // STEP 4: Analyze fields and check for missing required data
62
+ const requiredFields = getRequiredNonReadOnlyFields(contentType);
63
+ const missingFields = findMissingRequiredFields(requiredFields, data);
64
+ if (missingFields.length > 0) {
65
+ return createFieldPrompt(contentType.title, missingFields);
107
66
  }
108
- const createdContent = await createResponse.json();
109
- return {
110
- content: [{
111
- type: "text",
112
- text: `✅ Successfully created ${contentType.title}!\n\nContent ID: ${createdContent.id || 'Unknown'}\nScope: ${payload.meta?.scopes?.[0] || 'Unknown'}\n\nCreated content:\n${JSON.stringify(createdContent, null, 2)}`
113
- }]
114
- };
67
+ // STEP 5: Build the payload from the glossary fields and user data
68
+ const payload = buildPayloadFromFields(contentType, data, selectedScope);
69
+ // STEP 6: Create the content via API
70
+ const createdContent = await createContentViaAPI(config, payload);
71
+ return createSuccessResponse(contentType.title, createdContent, selectedScope);
115
72
  }
116
73
  catch (error) {
117
- return {
118
- content: [{
119
- type: "text",
120
- text: `❌ Failed to create content: ${error.message}`
121
- }]
122
- };
74
+ return createErrorResponse(`Failed to create content: ${error.message}`);
123
75
  }
124
76
  }
125
- function findContentTypeByDescription(glossaryData, description) {
126
- const desc = description.toLowerCase();
127
- return glossaryData.find(contentType => {
128
- const title = (contentType.title || '').toLowerCase();
129
- const plural = (contentType.plural || '').toLowerCase();
130
- const key = (contentType.key || '').toLowerCase();
131
- return desc.includes(title) ||
132
- desc.includes(plural) ||
133
- desc.includes(key) ||
134
- title.includes(desc) ||
135
- plural.includes(desc);
77
+ // STEP 1: Find content type in glossary
78
+ async function findContentType(config, typeKey) {
79
+ const response = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/glossary/ai`, {
80
+ headers: {
81
+ 'Authorization': `Bearer ${config.accessToken}`,
82
+ 'Content-Type': 'application/json',
83
+ },
136
84
  });
137
- }
138
- function buildPayloadFromGlossary(contentType, userData = {}, scope) {
139
- const payload = {};
140
- // Set the content type
141
- payload.type = contentType.key;
142
- // Initialize meta object
143
- payload.meta = {};
144
- // Set scope if provided
145
- if (scope) {
146
- payload.meta.scopes = [scope];
85
+ if (!response.ok) {
86
+ throw new Error(`Failed to fetch glossary: HTTP ${response.status}`);
147
87
  }
148
- // Process fields from glossary definition
149
- if (contentType.fields && Array.isArray(contentType.fields)) {
150
- contentType.fields.forEach(field => {
151
- if (!field.path)
152
- return;
153
- let value = getUserDataValue(userData, field);
154
- // Use default value if no user value and default exists
155
- if (value === undefined && field.defaultValues && field.defaultValues.length > 0) {
156
- const defaultValue = field.defaultValues[0];
157
- if (defaultValue === 'now' && field.type === 'date') {
158
- value = new Date().toISOString();
159
- }
160
- else {
161
- value = defaultValue;
162
- }
163
- }
164
- // Set the value in the payload
165
- if (value !== undefined) {
166
- setNestedValue(payload, field.path, value);
167
- }
88
+ const glossaryData = await response.json();
89
+ // Try exact key match first
90
+ let contentType = glossaryData.find(ct => ct.key === typeKey);
91
+ // If not found, try fuzzy matching on title, plural, and key
92
+ if (!contentType) {
93
+ const searchTerm = typeKey.toLowerCase();
94
+ contentType = glossaryData.find(ct => {
95
+ const title = (ct.title || '').toLowerCase();
96
+ const plural = (ct.plural || '').toLowerCase();
97
+ const key = (ct.key || '').toLowerCase();
98
+ return title.includes(searchTerm) ||
99
+ plural.includes(searchTerm) ||
100
+ key.includes(searchTerm) ||
101
+ searchTerm.includes(title) ||
102
+ searchTerm.includes(plural) ||
103
+ searchTerm.includes(key);
168
104
  });
169
105
  }
170
- return payload;
106
+ return contentType || null;
107
+ }
108
+ // STEP 2: Get available scopes for a permission from user session
109
+ function getAvailableScopesForPermission(userSession, permission) {
110
+ // Use the updated getAvailableScopes function from user.ts
111
+ return getAvailableScopes(userSession, permission);
171
112
  }
172
- function getUserDataValue(userData, field) {
113
+ // STEP 3: Get required fields that are not readOnly and not reference types (for now)
114
+ function getRequiredNonReadOnlyFields(contentType) {
115
+ if (!contentType.fields || !Array.isArray(contentType.fields)) {
116
+ return [];
117
+ }
118
+ return contentType.fields.filter(field => field.required === true &&
119
+ field.readOnly !== true &&
120
+ field.type !== 'reference' // Skip reference types for now as per conversation
121
+ );
122
+ }
123
+ // STEP 4: Find missing required fields from user data
124
+ function findMissingRequiredFields(requiredFields, userData) {
125
+ const missingFields = [];
126
+ for (const field of requiredFields) {
127
+ if (!field.path)
128
+ continue;
129
+ const value = getValueFromUserData(userData, field);
130
+ if (value === undefined || value === null || value === '') {
131
+ missingFields.push(field);
132
+ }
133
+ }
134
+ return missingFields;
135
+ }
136
+ // Get value from user data for a specific field
137
+ function getValueFromUserData(userData, field) {
173
138
  if (!userData || typeof userData !== 'object')
174
139
  return undefined;
175
140
  // Try exact path match first
176
141
  if (userData[field.path] !== undefined) {
177
142
  return userData[field.path];
178
143
  }
179
- // Try field title match
144
+ // Try field title match (case insensitive)
180
145
  if (field.title) {
181
146
  const titleKey = Object.keys(userData).find(key => key.toLowerCase() === field.title.toLowerCase());
182
147
  if (titleKey && userData[titleKey] !== undefined) {
183
148
  return userData[titleKey];
184
149
  }
185
150
  }
186
- // Try last part of path (e.g., "title" for "content.title")
151
+ // Try last part of path (e.g., "title" for "meta.title")
187
152
  const pathParts = field.path.split('.');
188
153
  const lastPart = pathParts[pathParts.length - 1].replace('[]', '');
189
154
  const lastPartKey = Object.keys(userData).find(key => key.toLowerCase() === lastPart.toLowerCase());
@@ -192,12 +157,52 @@ function getUserDataValue(userData, field) {
192
157
  }
193
158
  return undefined;
194
159
  }
160
+ // STEP 5: Build payload from glossary fields and user data
161
+ function buildPayloadFromFields(contentType, userData, selectedScope) {
162
+ const payload = {};
163
+ if (!contentType.fields || !Array.isArray(contentType.fields)) {
164
+ return payload;
165
+ }
166
+ // Process each field in the glossary definition
167
+ contentType.fields.forEach(field => {
168
+ if (!field.path)
169
+ return;
170
+ let value = undefined;
171
+ // Skip readOnly fields - they shouldn't be set by user
172
+ if (field.readOnly === true) {
173
+ return;
174
+ }
175
+ // Get value from user data
176
+ value = getValueFromUserData(userData, field);
177
+ // If no user value, try default values
178
+ if (value === undefined && field.defaultValues && field.defaultValues.length > 0) {
179
+ const defaultValue = field.defaultValues[0];
180
+ if (defaultValue === 'now' && field.type === 'date') {
181
+ value = new Date().toISOString();
182
+ }
183
+ else {
184
+ value = defaultValue;
185
+ }
186
+ }
187
+ // Special handling for meta.scopes - always set to selected scope
188
+ if (field.path === 'meta.scopes') {
189
+ value = [selectedScope];
190
+ }
191
+ // Set the value in the payload using the field's path
192
+ if (value !== undefined) {
193
+ setNestedValue(payload, field.path, value);
194
+ }
195
+ });
196
+ return payload;
197
+ }
198
+ // Set nested value in object using dot notation path
195
199
  function setNestedValue(obj, path, value) {
196
200
  const parts = path.split('.');
197
201
  let current = obj;
198
202
  for (let i = 0; i < parts.length - 1; i++) {
199
203
  const part = parts[i];
200
204
  if (part.includes('[]')) {
205
+ // Handle array notation like "some.nested[]"
201
206
  const arrayName = part.replace('[]', '');
202
207
  if (!current[arrayName]) {
203
208
  current[arrayName] = [];
@@ -205,6 +210,7 @@ function setNestedValue(obj, path, value) {
205
210
  current = current[arrayName];
206
211
  }
207
212
  else {
213
+ // Handle regular object notation
208
214
  if (!current[part]) {
209
215
  current[part] = {};
210
216
  }
@@ -213,6 +219,7 @@ function setNestedValue(obj, path, value) {
213
219
  }
214
220
  const finalPart = parts[parts.length - 1];
215
221
  if (finalPart.includes('[]')) {
222
+ // Handle final array part like "title[]"
216
223
  const arrayName = finalPart.replace('[]', '');
217
224
  if (!current[arrayName]) {
218
225
  current[arrayName] = [];
@@ -225,43 +232,75 @@ function setNestedValue(obj, path, value) {
225
232
  }
226
233
  }
227
234
  else {
235
+ // Handle regular final part
228
236
  current[finalPart] = value;
229
237
  }
230
238
  }
231
- function getMissingRequiredFields(contentType, payload) {
232
- if (!contentType.fields || !Array.isArray(contentType.fields)) {
233
- return [];
234
- }
235
- const requiredFields = contentType.fields.filter(field => field.required === true);
236
- const missingFields = [];
237
- for (const field of requiredFields) {
238
- if (!field.path)
239
- continue;
240
- const value = getNestedValue(payload, field.path);
241
- if (value === undefined || value === null || value === '') {
242
- missingFields.push(field);
243
- }
239
+ // STEP 6: Create content via API
240
+ async function createContentViaAPI(config, payload) {
241
+ const response = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/content`, {
242
+ method: 'POST',
243
+ headers: {
244
+ 'Authorization': `Bearer ${config.accessToken}`,
245
+ 'Content-Type': 'application/json',
246
+ },
247
+ body: JSON.stringify(payload)
248
+ });
249
+ if (!response.ok) {
250
+ const errorText = await response.text();
251
+ throw new Error(`HTTP ${response.status} - ${errorText}`);
244
252
  }
245
- return missingFields;
253
+ return await response.json();
246
254
  }
247
- function getNestedValue(obj, path) {
248
- const parts = path.split('.');
249
- let current = obj;
250
- for (const part of parts) {
251
- if (part.includes('[]')) {
252
- const arrayName = part.replace('[]', '');
253
- if (!current[arrayName] || !Array.isArray(current[arrayName])) {
254
- return undefined;
255
- }
256
- current = current[arrayName];
255
+ // Helper functions for creating responses
256
+ function createErrorResponse(message) {
257
+ return {
258
+ content: [{
259
+ type: "text",
260
+ text: `❌ ${message}`
261
+ }]
262
+ };
263
+ }
264
+ function createScopeSelectionPrompt(contentTitle, availableScopes, userSession) {
265
+ const scopeList = availableScopes.map((scope, i) => {
266
+ const title = userSession ? getScopeTitle(userSession, scope) : scope;
267
+ return `${i + 1}. ${title} (${scope})`;
268
+ }).join('\n');
269
+ return {
270
+ content: [{
271
+ type: "text",
272
+ text: `🎯 Multiple scopes available for creating ${contentTitle}:\n\n${scopeList}\n\nPlease call create_content again with the 'scope' parameter set to one of: ${availableScopes.join(', ')}`
273
+ }]
274
+ };
275
+ }
276
+ function createFieldPrompt(contentTitle, missingFields) {
277
+ const fieldPrompts = missingFields.map(field => {
278
+ let prompt = `• **${field.title || field.path}**`;
279
+ if (field.description) {
280
+ prompt += `: ${field.description}`;
257
281
  }
258
- else {
259
- if (current === null || current === undefined || !(part in current)) {
260
- return undefined;
261
- }
262
- current = current[part];
282
+ if (field.type) {
283
+ prompt += ` (${field.type})`;
263
284
  }
264
- }
265
- return current;
285
+ if (field.options && Array.isArray(field.options)) {
286
+ const optionsList = field.options.map((opt) => opt.value || opt.title).join(', ');
287
+ prompt += ` - Options: ${optionsList}`;
288
+ }
289
+ return prompt;
290
+ }).join('\n');
291
+ return {
292
+ content: [{
293
+ type: "text",
294
+ text: `📝 Missing required fields for ${contentTitle}:\n\n${fieldPrompts}\n\nPlease call create_content again with a 'data' object containing these fields.`
295
+ }]
296
+ };
297
+ }
298
+ function createSuccessResponse(contentTitle, createdContent, scope) {
299
+ return {
300
+ content: [{
301
+ type: "text",
302
+ text: `✅ Successfully created ${contentTitle}!\n\nContent ID: ${createdContent._id || createdContent.id || 'Unknown'}\nScope: ${scope}\n\nCreated content:\n${JSON.stringify(createdContent, null, 2)}`
303
+ }]
304
+ };
266
305
  }
267
306
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/create.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,29 @@
1
1
  import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
- export interface PermissionSet {
3
- id: string;
4
- name: string;
5
- permissions: Permission[];
6
- }
7
- export interface Permission {
8
- permission: string;
9
- scopes: string[];
2
+ export interface ScopePermissions {
3
+ title: string;
4
+ _id: string;
5
+ children: string[];
6
+ permissions: string[];
10
7
  }
11
8
  export interface UserSession {
12
- id: string;
13
- firstName?: string;
14
- lastName?: string;
15
- email?: string;
9
+ _id: string;
16
10
  organisation?: {
17
- id: string;
11
+ _id: string;
18
12
  title: string;
13
+ status: string;
14
+ };
15
+ title?: string;
16
+ meta?: {
17
+ type: string;
18
+ slug: string;
19
+ };
20
+ permissions: {
21
+ [scopeId: string]: ScopePermissions;
19
22
  };
20
- permissionSets: PermissionSet[];
23
+ userPermissionSets?: any[];
24
+ accessToken?: string;
25
+ loggedIn?: string;
26
+ cacheKey?: string;
21
27
  [key: string]: any;
22
28
  }
23
29
  export declare const getUserSessionTool: Tool;
@@ -29,5 +35,7 @@ export declare function handleGetUserSession(): Promise<{
29
35
  }>;
30
36
  export declare function hasPermission(userSession: UserSession, permission: string): boolean;
31
37
  export declare function getAvailableScopes(userSession: UserSession, permission: string): string[];
38
+ export declare function hasPermissionInScope(userSession: UserSession, permission: string, scopeId: string): boolean;
39
+ export declare function getScopeTitle(userSession: UserSession, scopeId: string): string;
32
40
  export declare function getUserSessionData(): Promise<UserSession>;
33
41
  //# sourceMappingURL=user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/tools/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,IAOhC,CAAC;AAEF,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAqCxG;AAGD,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAYnF;AAGD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAuBzF;AAGD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,CAoB/D"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/tools/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,EAAE;QACX,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC;KACrC,CAAC;IACF,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,IAOhC,CAAC;AAEF,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAqCxG;AAGD,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAiBnF;AAGD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBzF;AAGD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAW3G;AAGD,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO/E;AAGD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,CAoB/D"}
@@ -40,38 +40,64 @@ export async function handleGetUserSession() {
40
40
  };
41
41
  }
42
42
  }
43
- // Helper function to check if user has a specific permission
43
+ // Helper function to check if user has a specific permission in any scope
44
44
  export function hasPermission(userSession, permission) {
45
- // Handle case where permissionSets might not exist or be structured differently
46
- if (!userSession.permissionSets || !Array.isArray(userSession.permissionSets)) {
47
- // For now, return true to allow testing - in production this should be more restrictive
48
- console.warn('Permission sets not found in user session, allowing access for testing');
49
- return true;
45
+ if (!userSession.permissions || typeof userSession.permissions !== 'object') {
46
+ console.warn('Permissions not found in user session');
47
+ return false;
50
48
  }
51
- return userSession.permissionSets.some(permissionSet => permissionSet.permissions && Array.isArray(permissionSet.permissions) &&
52
- permissionSet.permissions.some(perm => perm.permission === permission));
49
+ // Check all scopes for the permission
50
+ for (const scopeId in userSession.permissions) {
51
+ const scope = userSession.permissions[scopeId];
52
+ if (scope.permissions && Array.isArray(scope.permissions)) {
53
+ if (scope.permissions.includes(permission)) {
54
+ return true;
55
+ }
56
+ }
57
+ }
58
+ return false;
53
59
  }
54
60
  // Helper function to get available scopes for a specific permission
55
61
  export function getAvailableScopes(userSession, permission) {
56
62
  const scopes = [];
57
- // Handle case where permissionSets might not exist or be structured differently
58
- if (!userSession.permissionSets || !Array.isArray(userSession.permissionSets)) {
59
- // For testing purposes, return a default scope
60
- console.warn('Permission sets not found in user session, returning default scope for testing');
61
- return ['default'];
63
+ if (!userSession.permissions || typeof userSession.permissions !== 'object') {
64
+ console.warn('Permissions not found in user session');
65
+ return [];
62
66
  }
63
- userSession.permissionSets.forEach(permissionSet => {
64
- if (permissionSet.permissions && Array.isArray(permissionSet.permissions)) {
65
- permissionSet.permissions.forEach(perm => {
66
- if (perm.permission === permission && perm.scopes && Array.isArray(perm.scopes)) {
67
- scopes.push(...perm.scopes);
67
+ // Check each scope for the permission
68
+ for (const scopeId in userSession.permissions) {
69
+ const scope = userSession.permissions[scopeId];
70
+ if (scope.permissions && Array.isArray(scope.permissions)) {
71
+ if (scope.permissions.includes(permission)) {
72
+ scopes.push(scopeId);
73
+ // Also include child scopes if they exist
74
+ if (scope.children && Array.isArray(scope.children)) {
75
+ scopes.push(...scope.children);
68
76
  }
69
- });
77
+ }
70
78
  }
71
- });
72
- // Remove duplicates, or return default if no scopes found
73
- const uniqueScopes = [...new Set(scopes)];
74
- return uniqueScopes.length > 0 ? uniqueScopes : ['default'];
79
+ }
80
+ // Remove duplicates
81
+ return [...new Set(scopes)];
82
+ }
83
+ // Helper function to check if user has permission in a specific scope
84
+ export function hasPermissionInScope(userSession, permission, scopeId) {
85
+ if (!userSession.permissions || typeof userSession.permissions !== 'object') {
86
+ return false;
87
+ }
88
+ const scope = userSession.permissions[scopeId];
89
+ if (!scope || !scope.permissions || !Array.isArray(scope.permissions)) {
90
+ return false;
91
+ }
92
+ return scope.permissions.includes(permission);
93
+ }
94
+ // Helper function to get scope title by ID
95
+ export function getScopeTitle(userSession, scopeId) {
96
+ if (!userSession.permissions || typeof userSession.permissions !== 'object') {
97
+ return scopeId;
98
+ }
99
+ const scope = userSession.permissions[scopeId];
100
+ return scope?.title || scopeId;
75
101
  }
76
102
  // Helper function to get user session data
77
103
  export async function getUserSessionData() {
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/tools/user.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/tools/user.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qikdev/mcp",
3
- "version": "6.6.19",
3
+ "version": "6.6.22",
4
4
  "description": "A plug-and-play Model Context Protocol server for the Qik platform - enabling AI assistants to interact with Qik's content management system, user management, forms, files, and more.",
5
5
  "keywords": [
6
6
  "mcp",