@elliotding/ai-agent-mcp 0.1.2 → 0.1.4

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 (104) hide show
  1. package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-generate-testcase.md +101 -0
  2. package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-submit_zct_job.md +158 -0
  3. package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-conf-status.md +311 -0
  4. package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-sdk-log.md +64 -0
  5. package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-zmb-log-errors.md +84 -0
  6. package/ai-resource-telemetry.json +22 -0
  7. package/dist/api/client.d.ts +76 -8
  8. package/dist/api/client.d.ts.map +1 -1
  9. package/dist/api/client.js +86 -40
  10. package/dist/api/client.js.map +1 -1
  11. package/dist/auth/permissions.d.ts.map +1 -1
  12. package/dist/auth/permissions.js +6 -0
  13. package/dist/auth/permissions.js.map +1 -1
  14. package/dist/config/index.d.ts +6 -1
  15. package/dist/config/index.d.ts.map +1 -1
  16. package/dist/config/index.js +1 -3
  17. package/dist/config/index.js.map +1 -1
  18. package/dist/index.js +12 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/prompts/cache.d.ts +69 -0
  21. package/dist/prompts/cache.d.ts.map +1 -0
  22. package/dist/prompts/cache.js +163 -0
  23. package/dist/prompts/cache.js.map +1 -0
  24. package/dist/prompts/generator.d.ts +49 -0
  25. package/dist/prompts/generator.d.ts.map +1 -0
  26. package/dist/prompts/generator.js +158 -0
  27. package/dist/prompts/generator.js.map +1 -0
  28. package/dist/prompts/index.d.ts +13 -0
  29. package/dist/prompts/index.d.ts.map +1 -0
  30. package/dist/prompts/index.js +24 -0
  31. package/dist/prompts/index.js.map +1 -0
  32. package/dist/prompts/manager.d.ts +106 -0
  33. package/dist/prompts/manager.d.ts.map +1 -0
  34. package/dist/prompts/manager.js +263 -0
  35. package/dist/prompts/manager.js.map +1 -0
  36. package/dist/server/http.d.ts.map +1 -1
  37. package/dist/server/http.js +61 -17
  38. package/dist/server/http.js.map +1 -1
  39. package/dist/server.d.ts.map +1 -1
  40. package/dist/server.js +43 -0
  41. package/dist/server.js.map +1 -1
  42. package/dist/telemetry/index.d.ts +3 -0
  43. package/dist/telemetry/index.d.ts.map +1 -0
  44. package/dist/telemetry/index.js +7 -0
  45. package/dist/telemetry/index.js.map +1 -0
  46. package/dist/telemetry/manager.d.ts +149 -0
  47. package/dist/telemetry/manager.d.ts.map +1 -0
  48. package/dist/telemetry/manager.js +368 -0
  49. package/dist/telemetry/manager.js.map +1 -0
  50. package/dist/tools/index.d.ts +1 -0
  51. package/dist/tools/index.d.ts.map +1 -1
  52. package/dist/tools/index.js +1 -0
  53. package/dist/tools/index.js.map +1 -1
  54. package/dist/tools/manage-subscription.d.ts +4 -0
  55. package/dist/tools/manage-subscription.d.ts.map +1 -1
  56. package/dist/tools/manage-subscription.js +36 -7
  57. package/dist/tools/manage-subscription.js.map +1 -1
  58. package/dist/tools/search-resources.d.ts +4 -0
  59. package/dist/tools/search-resources.d.ts.map +1 -1
  60. package/dist/tools/search-resources.js +6 -1
  61. package/dist/tools/search-resources.js.map +1 -1
  62. package/dist/tools/sync-resources.d.ts +13 -4
  63. package/dist/tools/sync-resources.d.ts.map +1 -1
  64. package/dist/tools/sync-resources.js +127 -6
  65. package/dist/tools/sync-resources.js.map +1 -1
  66. package/dist/tools/track-usage.d.ts +63 -0
  67. package/dist/tools/track-usage.d.ts.map +1 -0
  68. package/dist/tools/track-usage.js +90 -0
  69. package/dist/tools/track-usage.js.map +1 -0
  70. package/dist/tools/uninstall-resource.d.ts.map +1 -1
  71. package/dist/tools/uninstall-resource.js +53 -3
  72. package/dist/tools/uninstall-resource.js.map +1 -1
  73. package/dist/tools/upload-resource.d.ts +4 -0
  74. package/dist/tools/upload-resource.d.ts.map +1 -1
  75. package/dist/tools/upload-resource.js +164 -23
  76. package/dist/tools/upload-resource.js.map +1 -1
  77. package/dist/types/tools.d.ts +17 -2
  78. package/dist/types/tools.d.ts.map +1 -1
  79. package/dist/utils/cursor-paths.d.ts +10 -0
  80. package/dist/utils/cursor-paths.d.ts.map +1 -1
  81. package/dist/utils/cursor-paths.js +13 -0
  82. package/dist/utils/cursor-paths.js.map +1 -1
  83. package/package.json +1 -1
  84. package/src/api/client.ts +191 -71
  85. package/src/auth/permissions.ts +6 -0
  86. package/src/config/index.ts +11 -5
  87. package/src/index.ts +18 -0
  88. package/src/prompts/cache.ts +140 -0
  89. package/src/prompts/generator.ts +142 -0
  90. package/src/prompts/index.ts +20 -0
  91. package/src/prompts/manager.ts +342 -0
  92. package/src/server/http.ts +69 -17
  93. package/src/server.ts +13 -0
  94. package/src/telemetry/index.ts +10 -0
  95. package/src/telemetry/manager.ts +419 -0
  96. package/src/tools/index.ts +1 -0
  97. package/src/tools/manage-subscription.ts +41 -7
  98. package/src/tools/search-resources.ts +14 -6
  99. package/src/tools/sync-resources.ts +141 -9
  100. package/src/tools/track-usage.ts +113 -0
  101. package/src/tools/uninstall-resource.ts +62 -4
  102. package/src/tools/upload-resource.ts +204 -31
  103. package/src/types/tools.ts +17 -2
  104. package/src/utils/cursor-paths.ts +13 -0
@@ -0,0 +1,63 @@
1
+ /**
2
+ * track_usage Tool
3
+ *
4
+ * Records an AI Resource invocation for telemetry purposes.
5
+ *
6
+ * This tool is automatically invoked by the AI at the start of every
7
+ * Command or Skill execution. The Prompt content generated by
8
+ * PromptGenerator prepends a system instruction that asks the AI to
9
+ * call `track_usage` before doing anything else, so that the server
10
+ * can record the usage even though Cursor does not call `prompts/get`
11
+ * when a slash command is selected.
12
+ *
13
+ * The tool is intentionally lightweight:
14
+ * - No external API calls.
15
+ * - Fire-and-forget write to the local telemetry file.
16
+ * - Always returns a success response so the AI continues normally.
17
+ */
18
+ import type { ToolResult } from '../types/tools';
19
+ export interface TrackUsageParams {
20
+ resource_id: string;
21
+ resource_type: 'command' | 'skill';
22
+ resource_name: string;
23
+ /** Automatically injected by the MCP server from the SSE token. */
24
+ user_token?: string;
25
+ /** Optional Jira Issue ID for usage correlation (e.g. "PROJ-12345"). */
26
+ jira_id?: string;
27
+ }
28
+ export declare function trackUsage(params: unknown): Promise<ToolResult<{
29
+ recorded: boolean;
30
+ }>>;
31
+ export declare const trackUsageTool: {
32
+ name: string;
33
+ description: string;
34
+ inputSchema: {
35
+ type: "object";
36
+ properties: {
37
+ resource_id: {
38
+ type: string;
39
+ description: string;
40
+ };
41
+ resource_type: {
42
+ type: string;
43
+ enum: string[];
44
+ description: string;
45
+ };
46
+ resource_name: {
47
+ type: string;
48
+ description: string;
49
+ };
50
+ user_token: {
51
+ type: string;
52
+ description: string;
53
+ };
54
+ jira_id: {
55
+ type: string;
56
+ description: string;
57
+ };
58
+ };
59
+ required: string[];
60
+ };
61
+ handler: typeof trackUsage;
62
+ };
63
+ //# sourceMappingURL=track-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-usage.d.ts","sourceRoot":"","sources":["../../src/tools/track-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,SAAS,GAAG,OAAO,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAoC5F;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0C1B,CAAC"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ /**
3
+ * track_usage Tool
4
+ *
5
+ * Records an AI Resource invocation for telemetry purposes.
6
+ *
7
+ * This tool is automatically invoked by the AI at the start of every
8
+ * Command or Skill execution. The Prompt content generated by
9
+ * PromptGenerator prepends a system instruction that asks the AI to
10
+ * call `track_usage` before doing anything else, so that the server
11
+ * can record the usage even though Cursor does not call `prompts/get`
12
+ * when a slash command is selected.
13
+ *
14
+ * The tool is intentionally lightweight:
15
+ * - No external API calls.
16
+ * - Fire-and-forget write to the local telemetry file.
17
+ * - Always returns a success response so the AI continues normally.
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.trackUsageTool = void 0;
21
+ exports.trackUsage = trackUsage;
22
+ const logger_1 = require("../utils/logger");
23
+ const index_js_1 = require("../telemetry/index.js");
24
+ async function trackUsage(params) {
25
+ const p = params;
26
+ const resourceId = p.resource_id ?? '';
27
+ const resourceType = p.resource_type ?? 'command';
28
+ const resourceName = p.resource_name ?? '';
29
+ const userToken = p.user_token ?? '';
30
+ const jiraId = typeof p.jira_id === 'string' && p.jira_id.trim() !== ''
31
+ ? p.jira_id.trim()
32
+ : undefined;
33
+ if (!resourceId || !userToken) {
34
+ // Missing required fields — log and return without recording so the AI
35
+ // is not blocked. This should not happen in normal operation.
36
+ logger_1.logger.warn({ resourceId, userToken: !!userToken }, 'track_usage called with missing resource_id or user_token — skipping');
37
+ return { success: true, data: { recorded: false } };
38
+ }
39
+ // Await the write to ensure the event is persisted before the periodic flush
40
+ // timer fires and clears pending_events. File write latency is negligible
41
+ // (< 1 ms) so this does not meaningfully delay the tool response.
42
+ await index_js_1.telemetry
43
+ .recordInvocation(resourceId, resourceType, resourceName, userToken, jiraId)
44
+ .catch((err) => {
45
+ logger_1.logger.warn({ resourceId, error: err.message }, 'track_usage: telemetry write failed (non-critical)');
46
+ });
47
+ logger_1.logger.info({ resourceId, resourceType, resourceName, jiraId: jiraId ?? '(none)' }, 'track_usage: invocation recorded');
48
+ return { success: true, data: { recorded: true } };
49
+ }
50
+ exports.trackUsageTool = {
51
+ name: 'track_usage',
52
+ description: 'Record the invocation of an AI Resource (Command or Skill) for telemetry. ' +
53
+ 'MUST be called at the very beginning of every Command or Skill execution, ' +
54
+ 'before performing any other action. ' +
55
+ 'The resource_id, resource_type, and resource_name are provided in the prompt header — ' +
56
+ 'copy them exactly as given. ' +
57
+ 'user_token is injected automatically by the server; do NOT ask the user for it. ' +
58
+ 'jira_id is optional — only include it if the user explicitly mentions a Jira issue number.',
59
+ inputSchema: {
60
+ type: 'object',
61
+ properties: {
62
+ resource_id: {
63
+ type: 'string',
64
+ description: 'Canonical resource ID as shown in the prompt header (e.g. "cmd-client-sdk-ai-hub-generate-testcase").',
65
+ },
66
+ resource_type: {
67
+ type: 'string',
68
+ enum: ['command', 'skill'],
69
+ description: 'Resource type: "command" or "skill".',
70
+ },
71
+ resource_name: {
72
+ type: 'string',
73
+ description: 'Human-readable resource name as shown in the prompt header (e.g. "generate-testcase").',
74
+ },
75
+ user_token: {
76
+ type: 'string',
77
+ description: 'DO NOT set this field — it is automatically injected by the MCP server from ' +
78
+ 'the authenticated SSE connection.',
79
+ },
80
+ jira_id: {
81
+ type: 'string',
82
+ description: 'Optional Jira Issue ID for usage correlation (e.g. "PROJ-12345"). ' +
83
+ 'Only include if the user explicitly mentioned a Jira issue in this conversation.',
84
+ },
85
+ },
86
+ required: ['resource_id', 'resource_type', 'resource_name'],
87
+ },
88
+ handler: trackUsage,
89
+ };
90
+ //# sourceMappingURL=track-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-usage.js","sourceRoot":"","sources":["../../src/tools/track-usage.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAgBH,gCAoCC;AAlDD,4CAAyC;AACzC,oDAAkD;AAa3C,KAAK,UAAU,UAAU,CAAC,MAAe;IAC9C,MAAM,CAAC,GAAG,MAA0B,CAAC;IAErC,MAAM,UAAU,GAAK,CAAC,CAAC,WAAW,IAAM,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,CAAC,CAAC,aAAa,IAAI,SAAS,CAAC;IAClD,MAAM,YAAY,GAAG,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAM,CAAC,CAAC,UAAU,IAAO,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAS,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAC3E,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;QAClB,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,uEAAuE;QACvE,+DAA+D;QAC/D,eAAM,CAAC,IAAI,CACT,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EACtC,sEAAsE,CACvE,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;IACtD,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,kEAAkE;IAClE,MAAM,oBAAS;SACZ,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;SAC3E,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,eAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,oDAAoD,CAAC,CAAC;IACnH,CAAC,CAAC,CAAC;IAEL,eAAM,CAAC,IAAI,CACT,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,QAAQ,EAAE,EACtE,kCAAkC,CACnC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;AACrD,CAAC;AAEY,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,4EAA4E;QAC5E,4EAA4E;QAC5E,sCAAsC;QACtC,wFAAwF;QACxF,8BAA8B;QAC9B,kFAAkF;QAClF,4FAA4F;IAC9F,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uGAAuG;aACrH;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;gBAC1B,WAAW,EAAE,sCAAsC;aACpD;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wFAAwF;aACtG;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,8EAA8E;oBAC9E,mCAAmC;aACtC;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,oEAAoE;oBACpE,kFAAkF;aACrF;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC;KAC5D;IACD,OAAO,EAAE,UAAU;CACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall-resource.d.ts","sourceRoot":"","sources":["../../src/tools/uninstall-resource.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EAA2B,uBAAuB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA0GnG,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAmGrG;AAGD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;CAuBjC,CAAC"}
1
+ {"version":3,"file":"uninstall-resource.d.ts","sourceRoot":"","sources":["../../src/tools/uninstall-resource.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EAA2B,uBAAuB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA2GnG,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CA4JrG;AAGD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;CAuBjC,CAAC"}
@@ -50,6 +50,7 @@ const manager_1 = require("../filesystem/manager");
50
50
  const client_1 = require("../api/client");
51
51
  const cursor_paths_js_1 = require("../utils/cursor-paths.js");
52
52
  const errors_1 = require("../types/errors");
53
+ const index_js_1 = require("../prompts/index.js");
53
54
  /**
54
55
  * Find installed resource files/directories by pattern.
55
56
  * - File-based types (rule, command): scan for matching .md/.mdc files
@@ -153,15 +154,64 @@ async function uninstallResource(params) {
153
154
  try {
154
155
  const pattern = typedParams.resource_id_or_name;
155
156
  const removeFromAccount = typedParams.remove_from_account || false;
157
+ const removedResources = [];
158
+ let subscriptionRemoved = false;
159
+ let mcpJsonCleaned = false;
160
+ // ── Command / Skill: unregister MCP Prompt + delete cache ─────────────
161
+ // Match registered prompt names that contain the pattern.
162
+ const matchedPromptNames = index_js_1.promptManager.promptNames().filter((name) => name === pattern || name.includes(pattern));
163
+ if (matchedPromptNames.length > 0) {
164
+ for (const promptName of matchedPromptNames) {
165
+ // Prompt name format: <team>/<type>/<resource_name>
166
+ const parts = promptName.split('/');
167
+ const team = parts[0] ?? 'general';
168
+ const resourceType = parts[1];
169
+ const resourceName = parts.slice(2).join('/') || promptName;
170
+ // Find the resource_id from the registered prompt (best-effort via name).
171
+ // For unsubscription, we pass the promptName as id if no better source.
172
+ const resourceId = pattern.startsWith('cmd-') || pattern.startsWith('skill-')
173
+ ? pattern
174
+ : promptName;
175
+ // Unregister from the in-memory prompt registry only.
176
+ // The server-side .prompt-cache/ files are intentionally NOT deleted here —
177
+ // they are shared across all users and will be regenerated on the next git pull.
178
+ index_js_1.promptManager.unregisterPrompt(resourceId, resourceType ?? 'command', resourceName);
179
+ removedResources.push({ id: resourceId, name: resourceName, path: `[MCP Prompt: ${promptName}]` });
180
+ logger_1.logger.info({ promptName, team, resourceType, resourceName }, 'MCP Prompt unregistered via uninstall');
181
+ }
182
+ // Remove from server subscription if requested
183
+ if (removeFromAccount) {
184
+ for (const r of removedResources) {
185
+ try {
186
+ await client_1.apiClient.unsubscribe(r.id);
187
+ subscriptionRemoved = true;
188
+ }
189
+ catch (err) {
190
+ logger_1.logger.warn({ resourceId: r.id, err }, 'Failed to unsubscribe Command/Skill Prompt from account');
191
+ }
192
+ }
193
+ }
194
+ // Return early — Command/Skill resources have no local filesystem footprint.
195
+ const result = {
196
+ success: true,
197
+ removed_resources: removedResources,
198
+ subscription_removed: subscriptionRemoved,
199
+ message: [
200
+ `Successfully unregistered ${removedResources.length} MCP Prompt${removedResources.length > 1 ? 's' : ''}.`,
201
+ subscriptionRemoved ? 'Subscription removed from account.' : null,
202
+ ].filter(Boolean).join(' '),
203
+ };
204
+ const duration = Date.now() - startTime;
205
+ (0, logger_1.logToolCall)('uninstall_resource', 'user-id', params, duration);
206
+ return { success: true, data: result };
207
+ }
208
+ // ── Rule / MCP: original local-filesystem removal path ────────────────
156
209
  logger_1.logger.debug({ pattern }, 'Finding installed resources...');
157
210
  const matched = await findInstalledResources(pattern);
158
211
  if (matched.length === 0) {
159
212
  throw (0, errors_1.createValidationError)(pattern, 'resource_id_or_name', 'No installed resources found matching pattern. Use search_resources to find available resources');
160
213
  }
161
214
  logger_1.logger.info({ pattern, count: matched.length }, 'Found matching installed resources');
162
- const removedResources = [];
163
- let subscriptionRemoved = false;
164
- let mcpJsonCleaned = false;
165
215
  for (const resource of matched) {
166
216
  try {
167
217
  if (resource.isDirectory) {
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall-resource.js","sourceRoot":"","sources":["../../src/tools/uninstall-resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall-resource.js","sourceRoot":"","sources":["../../src/tools/uninstall-resource.ts"],"names":[],"mappings":"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"}
@@ -69,6 +69,10 @@ export declare const uploadResourceTool: {
69
69
  description: string;
70
70
  default: boolean;
71
71
  };
72
+ user_token: {
73
+ type: string;
74
+ description: string;
75
+ };
72
76
  };
73
77
  required: string[];
74
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"upload-resource.d.ts","sourceRoot":"","sources":["../../src/tools/upload-resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAwB,oBAAoB,EAAE,UAAU,EAAa,MAAM,gBAAgB,CAAC;AAsDxG,wBAAsB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAuG/F;AAGD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6E9B,CAAC"}
1
+ {"version":3,"file":"upload-resource.d.ts","sourceRoot":"","sources":["../../src/tools/upload-resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAwB,oBAAoB,EAAE,UAAU,EAAa,MAAM,gBAAgB,CAAC;AAwJxG,wBAAsB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CA4J/F;AAGD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkG9B,CAAC"}
@@ -54,12 +54,86 @@ const logger_1 = require("../utils/logger");
54
54
  const client_1 = require("../api/client");
55
55
  const resources_1 = require("../resources");
56
56
  const errors_1 = require("../types/errors");
57
+ const index_js_1 = require("../prompts/index.js");
58
+ /** Extract the `description` field from YAML frontmatter (--- ... ---) in Markdown content. */
59
+ function extractFrontmatterDescription(content) {
60
+ if (!content.startsWith('---'))
61
+ return undefined;
62
+ const end = content.indexOf('\n---', 3);
63
+ if (end === -1)
64
+ return undefined;
65
+ const frontmatter = content.slice(3, end);
66
+ for (const line of frontmatter.split('\n')) {
67
+ const match = /^description:\s*(.+)$/.exec(line.trim());
68
+ if (match)
69
+ return match[1].trim().replace(/^['"]|['"]$/g, '');
70
+ }
71
+ return undefined;
72
+ }
73
+ /**
74
+ * Infer the resource type from the uploaded file list ONLY when the user has
75
+ * not explicitly stated a type. If the user declared a type, that always wins.
76
+ *
77
+ * Auto-detection rules (in priority order, applied only when declaredType is absent):
78
+ * 1. Any file named "mcp-config.json" → mcp
79
+ * 2. Any file named "SKILL.md" → skill
80
+ * 3. Single file ending with ".mdc" → rule
81
+ * 4. Single file ending with ".md" → command
82
+ * 5. Cannot determine → throw validation error
83
+ */
84
+ function inferResourceType(declaredType, files) {
85
+ // User explicitly specified the type — honour it unconditionally.
86
+ if (declaredType)
87
+ return declaredType;
88
+ const names = files.map((f) => path.basename(f.path).toLowerCase());
89
+ if (names.includes('mcp-config.json'))
90
+ return 'mcp';
91
+ if (names.includes('skill.md'))
92
+ return 'skill';
93
+ if (files.length === 1) {
94
+ if (names[0].endsWith('.mdc'))
95
+ return 'rule';
96
+ if (names[0].endsWith('.md'))
97
+ return 'command';
98
+ }
99
+ throw (0, errors_1.createValidationError)('type', 'required', 'Cannot auto-detect the resource type from the provided files. ' +
100
+ 'Please specify "type" explicitly: "command" (single .md), "skill" (contains SKILL.md), ' +
101
+ '"rule" (single .mdc), or "mcp" (contains mcp-config.json).');
102
+ }
103
+ /**
104
+ * Derive a human-readable resource name from the primary file in the upload list.
105
+ * The original filename (without extension) is used as-is — never renamed.
106
+ *
107
+ * - Single-file upload: strip extension from the filename.
108
+ * "code-review.md" → "code-review"
109
+ * "csp-agent.mdc" → "csp-agent"
110
+ * - Multi-file upload: use the top-level directory name when the first
111
+ * path contains a directory component.
112
+ * "code-review/SKILL.md" → "code-review"
113
+ * Falls back to the first file's base name otherwise.
114
+ *
115
+ * Returns undefined when the files array is empty (caller should error).
116
+ */
117
+ function deriveNameFromFiles(files) {
118
+ if (!files || files.length === 0)
119
+ return undefined;
120
+ const first = files[0].path;
121
+ // For paths like "code-review/SKILL.md", use the top-level directory.
122
+ const dir = path.dirname(first);
123
+ if (dir && dir !== '.')
124
+ return dir;
125
+ // Strip extension from bare filename.
126
+ const base = path.basename(first, path.extname(first));
127
+ return base || undefined;
128
+ }
57
129
  /**
58
130
  * Validate and return the files[] array.
59
131
  * Each entry path must be a relative path with no traversal.
60
132
  * For MCP resources, mcp-config.json must be present.
133
+ *
134
+ * @param resolvedType The already-inferred resource type (never undefined here).
61
135
  */
62
- function collectFiles(typedParams) {
136
+ function collectFiles(typedParams, resolvedType) {
63
137
  if (!typedParams.files || typedParams.files.length === 0) {
64
138
  throw (0, errors_1.createValidationError)('files', 'required', '"files" must be a non-empty array of {path, content} entries.');
65
139
  }
@@ -71,12 +145,24 @@ function collectFiles(typedParams) {
71
145
  }
72
146
  // MCP resources must include mcp-config.json so the client can auto-register
73
147
  // the server in ~/.cursor/mcp.json after sync_resources installs it.
74
- if (typedParams.type === 'mcp') {
148
+ if (resolvedType === 'mcp') {
75
149
  const hasMcpConfig = typedParams.files.some((f) => path.basename(f.path) === 'mcp-config.json');
76
150
  if (!hasMcpConfig) {
151
+ // Look for other files that might already describe the server configuration
152
+ // (e.g. pyproject.toml, package.json, README.md, config.json, server.py).
153
+ // If found, surface a targeted hint so the user knows exactly what to create.
154
+ const configHints = typedParams.files
155
+ .map((f) => path.basename(f.path))
156
+ .filter((n) => /\.(toml|yaml|yml|json|cfg|ini|conf|py|js|ts|md)$/i.test(n) &&
157
+ n !== 'mcp-config.json');
158
+ const hintNote = configHints.length > 0
159
+ ? `\nFound related files (${configHints.join(', ')}) that may already describe the server ` +
160
+ `configuration — please create "mcp-config.json" based on those files.`
161
+ : '';
77
162
  throw (0, errors_1.createValidationError)('files', 'required', 'MCP resources must include a "mcp-config.json" file. ' +
78
- 'This file tells the client how to start the MCP server after installation. ' +
79
- 'Required format:\n' +
163
+ 'This file tells the client how to start the MCP server after installation.' +
164
+ hintNote +
165
+ '\n\nRequired format:\n' +
80
166
  '{\n' +
81
167
  ' "name": "<server-name>",\n' +
82
168
  ' "command": "python3", // or "node", "uvx", etc.\n' +
@@ -92,11 +178,20 @@ async function uploadResource(params) {
92
178
  const typedParams = params;
93
179
  logger_1.logger.info({ tool: 'upload_resource', params }, 'upload_resource called');
94
180
  try {
95
- const resourceType = typedParams.type;
96
181
  const resourceId = typedParams.resource_id;
97
- const resourceName = typedParams.name ?? resourceId; // API uses "name" field
98
- const targetSource = typedParams.target_source ?? 'csp'; // default to "csp" repo
182
+ const userToken = typedParams.user_token;
183
+ const targetSource = typedParams.target_source ?? 'csp';
99
184
  const force = typedParams.force || false;
185
+ // User-declared type always wins; auto-detect only when omitted.
186
+ const resourceType = inferResourceType(typedParams.type, typedParams.files);
187
+ // Name: explicit user value > derived from filename (no extension).
188
+ // Never fall back to resource_id — that is an internal identifier, not a name.
189
+ const derivedName = typedParams.name ?? deriveNameFromFiles(typedParams.files);
190
+ if (!derivedName) {
191
+ throw (0, errors_1.createValidationError)('name', 'required', 'Could not determine a resource name from the provided files. ' +
192
+ 'Please provide a "name" field explicitly.');
193
+ }
194
+ const resourceName = derivedName;
100
195
  logger_1.logger.info({ resourceId, resourceType, targetSource }, 'Upload target resolved');
101
196
  // ========== Step 1: Duplicate-name check ==========
102
197
  try {
@@ -130,7 +225,7 @@ async function uploadResource(params) {
130
225
  throw (0, errors_1.createValidationError)('message', 'string', `Commit message must be 5-200 characters, got ${typedParams.message.length}`);
131
226
  }
132
227
  // ========== Step 4: Collect files ==========
133
- const fileEntries = collectFiles(typedParams);
228
+ const fileEntries = collectFiles(typedParams, resourceType);
134
229
  logger_1.logger.info({ resourceId, fileCount: fileEntries.length }, 'Files collected for upload');
135
230
  // ========== Step 5: Call CSP API — upload (staging) ==========
136
231
  logger_1.logger.info({ resourceName, resourceType, targetSource }, 'Calling CSP upload API...');
@@ -140,17 +235,47 @@ async function uploadResource(params) {
140
235
  files: fileEntries,
141
236
  target_source: targetSource,
142
237
  force,
143
- });
238
+ }, userToken);
144
239
  const uploadId = uploadResp.upload_id;
145
240
  logger_1.logger.info({ uploadId, expiresAt: uploadResp.expires_at }, 'Upload staged successfully');
146
241
  // ========== Step 6: Call CSP API — finalize (Git commit) ==========
147
242
  logger_1.logger.info({ uploadId }, 'Calling CSP finalize API...');
148
- const finalizeResp = await client_1.apiClient.finalizeResourceUpload(uploadId, typedParams.message);
243
+ const finalizeResp = await client_1.apiClient.finalizeResourceUpload(uploadId, typedParams.message, userToken);
149
244
  const finalResourceId = finalizeResp.resource_id;
150
245
  const version = finalizeResp.version ?? '1.0.0';
151
246
  const resourceUrl = finalizeResp.url ?? '';
152
247
  const commitHash = finalizeResp.commit_hash ?? '';
153
248
  logger_1.logger.info({ finalResourceId, version, commitHash }, 'Upload finalized successfully');
249
+ // For Command / Skill: register the uploaded content as an MCP Prompt immediately,
250
+ // so the user can invoke it via slash-command without a full sync cycle.
251
+ if (resourceType === 'command' || resourceType === 'skill') {
252
+ try {
253
+ const primaryFile = resourceType === 'skill'
254
+ ? (fileEntries.find((f) => path.basename(f.path) === 'SKILL.md') ??
255
+ fileEntries.find((f) => f.path.endsWith('.md')) ??
256
+ fileEntries[0])
257
+ : (fileEntries.find((f) => path.basename(f.path).replace(/\.md$/, '') === resourceName) ??
258
+ fileEntries.find((f) => f.path.endsWith('.md')) ??
259
+ fileEntries[0]);
260
+ const rawContent = primaryFile?.content ?? '';
261
+ const team = typedParams.team ?? 'general';
262
+ const frontmatterDesc = extractFrontmatterDescription(rawContent);
263
+ const description = frontmatterDesc ?? typedParams.message ?? resourceName;
264
+ await index_js_1.promptManager.registerPrompt({
265
+ resource_id: finalResourceId,
266
+ resource_type: resourceType,
267
+ resource_name: resourceName,
268
+ team,
269
+ description,
270
+ rawContent,
271
+ });
272
+ logger_1.logger.info({ finalResourceId, resourceType }, 'MCP Prompt registered after upload');
273
+ }
274
+ catch (promptErr) {
275
+ // Non-fatal: the resource is uploaded; Prompt registration is best-effort.
276
+ logger_1.logger.warn({ finalResourceId, error: promptErr.message }, 'MCP Prompt registration after upload failed (non-fatal)');
277
+ }
278
+ }
154
279
  const result = {
155
280
  resource_id: finalResourceId,
156
281
  version,
@@ -178,15 +303,26 @@ async function uploadResource(params) {
178
303
  exports.uploadResourceTool = {
179
304
  name: 'upload_resource',
180
305
  description: 'Upload a new AI resource (command, skill, rule, or mcp) to a CSP source repository. ' +
181
- 'The user selects files from anywhere on their local machine — read each file and pass its content in files[]. ' +
182
- 'ALWAYS confirm two things with the user before uploading: ' +
183
- '(1) the resource type (command/skill/rule/mcp), and ' +
184
- '(2) the target source repo (e.g. "csp" (default) or "client-sdk-ai-hub"). ' +
185
- 'The tool uses a two-step CSP API: first stages files and gets an upload_id, then finalizes the Git commit. ' +
186
- 'Pass files[] — an array of {path, content} entries. ' +
187
- 'path is the filename the resource should be stored as (e.g. "csp-ai-agent.mdc", "SKILL.md"). ' +
188
- 'Single-file upload: one entry in files[]. Multi-file upload: multiple entries. ' +
189
- 'No restriction on file extensions — mcp packages may include .py, .js, package.json, etc.',
306
+ 'The user selects files from their local machine — read each file and pass its content in files[]. ' +
307
+ 'ALWAYS confirm the target source repo with the user (e.g. "csp" (default) or "client-sdk-ai-hub"). ' +
308
+ '\n\nResource type rules:\n' +
309
+ ' If the user explicitly states the type, use it as-is — no overriding.\n' +
310
+ ' If the user does NOT state a type, auto-detect from file structure:\n' +
311
+ ' - Contains mcp-config.json → type="mcp"\n' +
312
+ ' - Contains SKILL.md → type="skill"\n' +
313
+ ' - Single .mdc file type="rule"\n' +
314
+ ' - Single .md file type="command"\n' +
315
+ ' • If the user says type="mcp" but mcp-config.json is missing, the tool will\n' +
316
+ ' return an error with a hint about creating mcp-config.json.\n' +
317
+ '\n\nResource name rules:\n' +
318
+ ' • If the user provides a name, use it.\n' +
319
+ ' • Otherwise derive the name from the filename WITHOUT its extension.\n' +
320
+ ' Keep the original filename — NEVER rename files (e.g. do not rename any .md file).\n' +
321
+ ' Examples: "code-review.md" → name="code-review"; "code-review/SKILL.md" → name="code-review".\n' +
322
+ '\n\nPass files[] — an array of {path, content} entries. ' +
323
+ 'path must be the original filename as-is (relative, no path traversal). ' +
324
+ 'No restriction on file extensions — mcp packages may include .py, .js, package.json, etc.\n' +
325
+ '\nThe user_token is injected automatically by the server — do NOT read or pass it manually.',
190
326
  inputSchema: {
191
327
  type: 'object',
192
328
  properties: {
@@ -201,11 +337,11 @@ exports.uploadResourceTool = {
201
337
  type: {
202
338
  type: 'string',
203
339
  enum: ['command', 'skill', 'rule', 'mcp'],
204
- description: 'Resource category — MUST be confirmed with the user. ' +
340
+ description: 'Resource category. Auto-detected from file structure only set explicitly when detection is ambiguous. ' +
205
341
  'command: single .md slash-command file; ' +
206
- 'skill: directory with SKILL.md + supporting files; ' +
342
+ 'skill: directory or file set containing SKILL.md; ' +
207
343
  'rule: single .mdc Cursor rule file; ' +
208
- 'mcp: MCP server package — MUST include mcp-config.json (defines command/args/env for auto-registration into ~/.cursor/mcp.json).',
344
+ 'mcp: MCP server package — MUST include mcp-config.json.',
209
345
  },
210
346
  message: {
211
347
  type: 'string',
@@ -244,8 +380,13 @@ exports.uploadResourceTool = {
244
380
  description: 'Overwrite if a resource with the same name already exists',
245
381
  default: false,
246
382
  },
383
+ user_token: {
384
+ type: 'string',
385
+ description: 'DO NOT set this field — it is automatically injected by the MCP server from ' +
386
+ 'the authenticated SSE connection. The server always provides the correct token.',
387
+ },
247
388
  },
248
- required: ['resource_id', 'type', 'message', 'files'],
389
+ required: ['resource_id', 'message', 'files'],
249
390
  },
250
391
  handler: uploadResource,
251
392
  };
@@ -1 +1 @@
1
- {"version":3,"file":"upload-resource.js","sourceRoot":"","sources":["../../src/tools/upload-resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload-resource.js","sourceRoot":"","sources":["../../src/tools/upload-resource.ts"],"names":[],"mappings":"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"}