@elliotding/ai-agent-mcp 0.2.21 → 0.2.23

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 (75) hide show
  1. package/dist/api/client.d.ts +4 -1
  2. package/dist/api/client.d.ts.map +1 -1
  3. package/dist/api/client.js +7 -1
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/client-adapters/codex-adapter.d.ts +49 -0
  6. package/dist/client-adapters/codex-adapter.d.ts.map +1 -0
  7. package/dist/client-adapters/codex-adapter.js +72 -0
  8. package/dist/client-adapters/codex-adapter.js.map +1 -0
  9. package/dist/client-adapters/cursor-adapter.d.ts +37 -0
  10. package/dist/client-adapters/cursor-adapter.d.ts.map +1 -0
  11. package/dist/client-adapters/cursor-adapter.js +68 -0
  12. package/dist/client-adapters/cursor-adapter.js.map +1 -0
  13. package/dist/client-adapters/index.d.ts +91 -0
  14. package/dist/client-adapters/index.d.ts.map +1 -0
  15. package/dist/client-adapters/index.js +49 -0
  16. package/dist/client-adapters/index.js.map +1 -0
  17. package/dist/config/index.d.ts +19 -1
  18. package/dist/config/index.d.ts.map +1 -1
  19. package/dist/config/index.js +12 -2
  20. package/dist/config/index.js.map +1 -1
  21. package/dist/prompts/manager.d.ts +73 -0
  22. package/dist/prompts/manager.d.ts.map +1 -1
  23. package/dist/prompts/manager.js +243 -7
  24. package/dist/prompts/manager.js.map +1 -1
  25. package/dist/server/http.d.ts +10 -6
  26. package/dist/server/http.d.ts.map +1 -1
  27. package/dist/server/http.js +130 -89
  28. package/dist/server/http.js.map +1 -1
  29. package/dist/server/streamable-http.d.ts +28 -0
  30. package/dist/server/streamable-http.d.ts.map +1 -0
  31. package/dist/server/streamable-http.js +147 -0
  32. package/dist/server/streamable-http.js.map +1 -0
  33. package/dist/server.d.ts +8 -1
  34. package/dist/server.d.ts.map +1 -1
  35. package/dist/server.js +60 -96
  36. package/dist/server.js.map +1 -1
  37. package/dist/telemetry/manager.d.ts +5 -0
  38. package/dist/telemetry/manager.d.ts.map +1 -1
  39. package/dist/telemetry/manager.js +5 -0
  40. package/dist/telemetry/manager.js.map +1 -1
  41. package/dist/tools/manage-subscription.d.ts.map +1 -1
  42. package/dist/tools/manage-subscription.js +162 -20
  43. package/dist/tools/manage-subscription.js.map +1 -1
  44. package/dist/tools/policy-generator.d.ts +31 -0
  45. package/dist/tools/policy-generator.d.ts.map +1 -0
  46. package/dist/tools/policy-generator.js +53 -0
  47. package/dist/tools/policy-generator.js.map +1 -0
  48. package/dist/tools/query-usage-stats.d.ts +8 -0
  49. package/dist/tools/query-usage-stats.d.ts.map +1 -1
  50. package/dist/tools/query-usage-stats.js +26 -1
  51. package/dist/tools/query-usage-stats.js.map +1 -1
  52. package/dist/tools/resolve-prompt-content.d.ts.map +1 -1
  53. package/dist/tools/resolve-prompt-content.js +39 -1
  54. package/dist/tools/resolve-prompt-content.js.map +1 -1
  55. package/dist/tools/search-resources.d.ts +5 -0
  56. package/dist/tools/search-resources.d.ts.map +1 -1
  57. package/dist/tools/search-resources.js +73 -7
  58. package/dist/tools/search-resources.js.map +1 -1
  59. package/dist/tools/sync-resources.d.ts.map +1 -1
  60. package/dist/tools/sync-resources.js +284 -99
  61. package/dist/tools/sync-resources.js.map +1 -1
  62. package/dist/tools/uninstall-resource.d.ts.map +1 -1
  63. package/dist/tools/uninstall-resource.js +100 -12
  64. package/dist/tools/uninstall-resource.js.map +1 -1
  65. package/dist/types/tools.d.ts +128 -1
  66. package/dist/types/tools.d.ts.map +1 -1
  67. package/dist/utils/codex-paths.d.ts +39 -0
  68. package/dist/utils/codex-paths.d.ts.map +1 -0
  69. package/dist/utils/codex-paths.js +56 -0
  70. package/dist/utils/codex-paths.js.map +1 -0
  71. package/package.json +1 -1
  72. package/dist/transport/sse.d.ts +0 -29
  73. package/dist/transport/sse.d.ts.map +0 -1
  74. package/dist/transport/sse.js +0 -271
  75. package/dist/transport/sse.js.map +0 -1
@@ -12,7 +12,18 @@ const errors_1 = require("../types/errors");
12
12
  const sync_resources_1 = require("./sync-resources");
13
13
  const uninstall_resource_1 = require("./uninstall-resource");
14
14
  const index_js_1 = require("../prompts/index.js");
15
- const cursor_paths_js_1 = require("../utils/cursor-paths.js");
15
+ const index_js_2 = require("../client-adapters/index.js");
16
+ const index_js_3 = require("../config/index.js");
17
+ function buildLocalActionsSummary(localActions) {
18
+ if (!localActions || localActions.length === 0) {
19
+ return undefined;
20
+ }
21
+ return {
22
+ action_count: localActions.length,
23
+ action_types: Array.from(new Set(localActions.map((action) => action.action))),
24
+ message: 'Execute every local_actions_required item immediately on the user\'s local machine before treating this subscription change as complete or verifying local state.',
25
+ };
26
+ }
16
27
  async function manageSubscription(params) {
17
28
  const startTime = Date.now();
18
29
  // Type assertion for params
@@ -29,22 +40,33 @@ async function manageSubscription(params) {
29
40
  logger_1.logger.debug({ resourceIds: typedParams.resource_ids, autoSync: typedParams.auto_sync }, 'Subscribing to resources...');
30
41
  // Subscribe to resources
31
42
  const subResult = await client_1.apiClient.subscribe(typedParams.resource_ids, typedParams.auto_sync, undefined, typedParams.user_token);
43
+ index_js_1.promptManager.clearSuppressedSubscriptions(typedParams.user_token ?? '', typedParams.resource_ids);
32
44
  logger_1.logger.info({ count: subResult.subscriptions.length }, 'Resources subscribed successfully');
33
45
  // Auto-sync newly subscribed resources immediately (default: true)
34
46
  const shouldAutoSync = typedParams.auto_sync !== false;
35
47
  let syncSummary;
36
48
  let syncDetails;
37
49
  let pendingSetup;
38
- if (shouldAutoSync && subResult.subscriptions.length > 0) {
39
- logger_1.logger.info({ resourceIds: typedParams.resource_ids }, 'Auto-syncing newly subscribed resources...');
50
+ let subscribeLocalActions;
51
+ const resourceIdsForAutoSync = Array.from(new Set(typedParams.resource_ids));
52
+ if (shouldAutoSync && resourceIdsForAutoSync.length > 0) {
53
+ logger_1.logger.info({
54
+ resourceIds: resourceIdsForAutoSync,
55
+ newlyCreatedSubscriptionCount: subResult.subscriptions.length,
56
+ }, 'Auto-syncing requested subscribed resources...');
40
57
  // Scope auto-sync to only the newly subscribed resource(s).
41
58
  // Passing resource_ids prevents processing all other subscribed resources,
42
59
  // which would generate unnecessary local_actions and waste context window.
60
+ // Important: sync the requested ids even when the subscribe API returns
61
+ // zero newly-created rows. Default/baseline resources can be locally
62
+ // suppressed and then restored without creating a server-side row; they
63
+ // still need prompt registration and local actions rebuilt immediately.
43
64
  const syncResult = await (0, sync_resources_1.syncResources)({
44
65
  mode: 'incremental',
45
66
  scope: typedParams.scope || 'global',
46
67
  user_token: typedParams.user_token,
47
- resource_ids: typedParams.resource_ids,
68
+ resource_ids: resourceIdsForAutoSync,
69
+ agent_profile: typedParams.agent_profile,
48
70
  });
49
71
  if (syncResult.success && syncResult.data) {
50
72
  const sd = syncResult.data;
@@ -53,6 +75,9 @@ async function manageSubscription(params) {
53
75
  if (sd.pending_setup && sd.pending_setup.length > 0) {
54
76
  pendingSetup = sd.pending_setup;
55
77
  }
78
+ if (sd.local_actions_required && sd.local_actions_required.length > 0) {
79
+ subscribeLocalActions = sd.local_actions_required;
80
+ }
56
81
  logger_1.logger.info({ summary: sd.summary }, 'Auto-sync after subscribe completed');
57
82
  }
58
83
  else {
@@ -62,10 +87,11 @@ async function manageSubscription(params) {
62
87
  }
63
88
  // Build per-resource sync hint so the AI knows to use resource_ids
64
89
  // for a scoped incremental sync instead of syncing all resources.
65
- const subscribedIds = subResult.subscriptions.map(s => s.id);
90
+ const subscribedIds = resourceIdsForAutoSync;
66
91
  const syncHint = subscribedIds.length > 0
67
- ? `To sync ONLY the newly subscribed resource(s), call: sync_resources(mode="incremental", resource_ids=${JSON.stringify(subscribedIds)}). This avoids returning local_actions for ALL subscribed resources and drastically reduces context overhead.`
92
+ ? `To sync ONLY the requested resource(s), call: sync_resources(mode="incremental", resource_ids=${JSON.stringify(subscribedIds)}). This avoids returning local_actions for ALL subscribed resources and drastically reduces context overhead.`
68
93
  : undefined;
94
+ const subscribeLocalActionsSummary = buildLocalActionsSummary(subscribeLocalActions);
69
95
  result = {
70
96
  action: 'subscribe',
71
97
  success: true,
@@ -76,13 +102,24 @@ async function manageSubscription(params) {
76
102
  subscribed_at: sub.subscribed_at,
77
103
  })),
78
104
  message: [
79
- `Successfully subscribed to ${subResult.subscriptions.length} resource${subResult.subscriptions.length > 1 ? 's' : ''}.`,
105
+ `Successfully processed subscribe request for ${resourceIdsForAutoSync.length} resource id${resourceIdsForAutoSync.length > 1 ? 's' : ''}.`,
106
+ `Server created ${subResult.subscriptions.length} new subscription${subResult.subscriptions.length !== 1 ? 's' : ''}.`,
107
+ subResult.subscriptions.length === 0 && shouldAutoSync
108
+ ? 'Requested resource(s) may already be subscribed or provided by baseline defaults; scoped auto-sync was still executed.'
109
+ : null,
80
110
  syncSummary,
81
111
  syncHint,
112
+ subscribeLocalActions && subscribeLocalActions.length > 0
113
+ ? `IMPORTANT: ${subscribeLocalActions.length} local action(s) are still pending. Execute local_actions_required or fetch csp-ai-agent-setup before treating the resource as installed.`
114
+ : null,
82
115
  'If you need to execute a newly subscribed Command or Skill in this same conversation, call resolve_prompt_content next to retrieve the real prompt body.',
83
116
  ].filter(Boolean).join(' '),
84
117
  ...(syncDetails ? { sync_details: syncDetails } : {}),
85
118
  ...(pendingSetup ? { pending_setup: pendingSetup } : {}),
119
+ ...(subscribeLocalActions ? { local_actions_required: subscribeLocalActions } : {}),
120
+ ...(subscribeLocalActionsSummary
121
+ ? { setup_required: true, local_actions_summary: subscribeLocalActionsSummary }
122
+ : {}),
86
123
  };
87
124
  break;
88
125
  }
@@ -91,6 +128,12 @@ async function manageSubscription(params) {
91
128
  if (!typedParams.resource_ids || typedParams.resource_ids.length === 0) {
92
129
  throw (0, errors_1.createValidationError)('resource_ids', 'array', 'resource_ids is required for unsubscribe action');
93
130
  }
131
+ // Resolve the client adapter: prefer caller-supplied agent_profile, fall
132
+ // back to server-wide config (set via CSP_AGENT_PROFILE env var).
133
+ // This mirrors the same resolution logic in sync-resources.ts so that
134
+ // Codex unsubscribes emit remove_toml_entry instead of remove_mcp_json_entry.
135
+ const resolvedUnsubProfile = typedParams.agent_profile ?? index_js_3.config.agentProfile ?? 'cursor';
136
+ const unsubClientAdapter = index_js_2.adapterRegistry.get(resolvedUnsubProfile);
94
137
  logger_1.logger.debug({ resourceIds: typedParams.resource_ids }, 'Unsubscribing from resources...');
95
138
  // Build resource_id → type and resource_id → name maps from the current
96
139
  // subscription list so uninstall actions can be scoped precisely to
@@ -110,9 +153,21 @@ async function manageSubscription(params) {
110
153
  catch (e) {
111
154
  logger_1.logger.warn({ error: e.message }, 'Could not fetch subscriptions for type resolution — uninstall will emit both rule+mcp actions as fallback');
112
155
  }
113
- // Cancel server-side subscription
114
- await client_1.apiClient.unsubscribe(typedParams.resource_ids, typedParams.user_token);
115
- logger_1.logger.info({ count: typedParams.resource_ids.length }, 'Server-side subscriptions removed');
156
+ // Cancel server-side subscription. Baseline/default subscriptions may
157
+ // be exposed by list/search but have no removable user row on the
158
+ // server; in that case the API returns removed_count=0. Do not abort
159
+ // local cleanup here: apply a local suppression after verification so
160
+ // prompts/list/search/sync are consistent for this user.
161
+ const unsubscribeResponse = await client_1.apiClient.unsubscribe(typedParams.resource_ids, typedParams.user_token);
162
+ const serverRemovedAll = unsubscribeResponse.removed_count === typedParams.resource_ids.length;
163
+ if (!serverRemovedAll) {
164
+ logger_1.logger.warn({
165
+ requested: unsubscribeResponse.requested_count,
166
+ removed: unsubscribeResponse.removed_count,
167
+ resourceIds: typedParams.resource_ids,
168
+ }, 'Unsubscribe API reported partial removal; continuing local cleanup and will verify list state');
169
+ }
170
+ logger_1.logger.info({ requested: unsubscribeResponse.requested_count, removed: unsubscribeResponse.removed_count }, 'Server-side subscriptions removed');
116
171
  // Uninstall local files and MCP config for each resource.
117
172
  // For Command/Skill: unregister MCP Prompt instead of deleting local files.
118
173
  const uninstallResults = [];
@@ -139,8 +194,10 @@ async function manageSubscription(params) {
139
194
  // find no matching prompts and skip the skill cleanup branch entirely.
140
195
  // Instead, we directly build the delete_file local_actions for the AI to execute.
141
196
  if (resourceType === 'skill') {
142
- const skillDir = `${(0, cursor_paths_js_1.getCspAgentDirForClient)('skills')}/${resourceName}`;
143
- const manifestFile = `${(0, cursor_paths_js_1.getCspAgentDirForClient)('.manifests')}/${resourceName}.md`;
197
+ // Use adapter-resolved path so Codex cleans ~/.csp-ai-agent/codex/skills/<name>/
198
+ // instead of the Cursor-only ~/.csp-ai-agent/skills/<name>/.
199
+ const skillDir = unsubClientAdapter.getSkillDir(resourceName);
200
+ const manifestFile = `${unsubClientAdapter.getManifestDir()}/${resourceName}.md`;
144
201
  unsubscribeLocalActions.push({ action: 'delete_file', path: skillDir, recursive: true }, { action: 'delete_file', path: manifestFile, recursive: false });
145
202
  logger_1.logger.info({ resourceName, skillDir, manifestFile }, 'Local skill directory and manifest queued for deletion on unsubscribe');
146
203
  }
@@ -175,8 +232,15 @@ async function manageSubscription(params) {
175
232
  for (const pattern of patternsToTry) {
176
233
  const uninstallResult = await (0, uninstall_resource_1.uninstallResource)({
177
234
  resource_id_or_name: pattern,
235
+ resource_id: resourceId,
178
236
  remove_from_account: false, // already unsubscribed above
237
+ user_token: typedParams.user_token,
179
238
  ...(resolvedType ? { resource_type: resolvedType } : {}),
239
+ // Always forward the resolved agent_profile so uninstall_resource emits
240
+ // the correct config action:
241
+ // Cursor → remove_mcp_json_entry targeting ~/.cursor/mcp.json
242
+ // Codex → remove_toml_entry targeting ~/.codex/config.toml
243
+ agent_profile: resolvedUnsubProfile,
180
244
  });
181
245
  if (uninstallResult.success && uninstallResult.data && uninstallResult.data.removed_resources.length > 0) {
182
246
  // Collect local_actions_required (e.g. remove_mcp_json_entry for mcp-type resources,
@@ -196,6 +260,43 @@ async function manageSubscription(params) {
196
260
  }
197
261
  const removedCount = uninstallResults.filter(r => r.removed).length;
198
262
  const notFoundCount = uninstallResults.filter(r => !r.removed).length;
263
+ // Verify server-side unsubscription with retry (up to 3 attempts, 300 ms apart).
264
+ // The API may have a short propagation delay before list reflects the removal.
265
+ const removedIds = new Set(typedParams.resource_ids);
266
+ let verifiedRemoval = false;
267
+ let stillPresentIds = [];
268
+ for (let attempt = 0; attempt < 3; attempt++) {
269
+ if (attempt > 0) {
270
+ await new Promise((resolve) => setTimeout(resolve, 300));
271
+ }
272
+ try {
273
+ const verifySubs = await client_1.apiClient.getSubscriptions({}, typedParams.user_token);
274
+ const stillPresent = verifySubs.subscriptions.filter((s) => removedIds.has(s.id));
275
+ stillPresentIds = stillPresent.map((s) => s.id);
276
+ if (stillPresent.length === 0) {
277
+ verifiedRemoval = true;
278
+ break;
279
+ }
280
+ logger_1.logger.info({ attempt, stillPresent: stillPresent.map((s) => s.id) }, 'manage_subscription unsubscribe: server list still contains removed IDs, retrying verification');
281
+ }
282
+ catch (verifyErr) {
283
+ logger_1.logger.warn({ attempt, error: verifyErr.message }, 'manage_subscription unsubscribe: verification list call failed, skipping retry');
284
+ break;
285
+ }
286
+ }
287
+ const localSuppressionApplied = stillPresentIds.length > 0;
288
+ if (localSuppressionApplied) {
289
+ index_js_1.promptManager.suppressSubscriptions(typedParams.user_token ?? '', stillPresentIds);
290
+ verifiedRemoval = true;
291
+ logger_1.logger.info({ stillPresentIds }, 'manage_subscription unsubscribe: applied local suppression for server-visible default subscriptions');
292
+ }
293
+ if (!verifiedRemoval) {
294
+ logger_1.logger.warn({ resourceIds: typedParams.resource_ids }, 'manage_subscription unsubscribe: server list still shows resources after 3 verification attempts and no local suppression was applied');
295
+ }
296
+ const unsubscribeLocalActionsSummary = buildLocalActionsSummary(unsubscribeLocalActions);
297
+ if (unsubscribeLocalActions.length > 0) {
298
+ index_js_1.promptManager.storeSyncActions(typedParams.user_token ?? '', unsubscribeLocalActions);
299
+ }
199
300
  result = {
200
301
  action: 'unsubscribe',
201
302
  success: true,
@@ -204,31 +305,49 @@ async function manageSubscription(params) {
204
305
  removedCount > 0 ? `Removed local files for ${removedCount} resource${removedCount > 1 ? 's' : ''}.` : null,
205
306
  notFoundCount > 0 ? `${notFoundCount} resource${notFoundCount > 1 ? 's were' : ' was'} not installed locally.` : null,
206
307
  unsubscribeLocalActions.length > 0
207
- ? `Execute ${unsubscribeLocalActions.length} action(s) in local_actions_required to delete local skill files and manifests.`
308
+ ? `IMPORTANT: You MUST execute ALL ${unsubscribeLocalActions.length} action(s) in local_actions_required immediately before verifying local filesystem or config state. Do not report C5/C9 cleanup complete until these actions have been applied.`
309
+ : null,
310
+ localSuppressionApplied
311
+ ? `NOTE: ${stillPresentIds.length} default/baseline subscription${stillPresentIds.length > 1 ? 's were' : ' was'} still returned by the server, so a local unsubscribe override was applied for this MCP session.`
312
+ : null,
313
+ !verifiedRemoval
314
+ ? `WARNING: The server subscription list may still show these resources due to propagation delay. If manage_subscription(list) still returns them, wait 1-2 seconds and retry.`
208
315
  : null,
209
316
  ].filter(Boolean).join(' '),
210
317
  sync_details: uninstallResults.map(r => ({ id: r.id, name: r.id, action: r.removed ? 'uninstalled' : 'not_found_locally' })),
211
318
  ...(unsubscribeLocalActions.length > 0 ? { local_actions_required: unsubscribeLocalActions } : {}),
319
+ ...(unsubscribeLocalActionsSummary
320
+ ? {
321
+ setup_required: true,
322
+ local_actions_block_completion: true,
323
+ local_actions_summary: unsubscribeLocalActionsSummary,
324
+ }
325
+ : {}),
212
326
  };
213
- logger_1.logger.info({ count: typedParams.resource_ids.length, removedCount }, 'Resources unsubscribed and local files cleaned up');
327
+ logger_1.logger.info({ count: typedParams.resource_ids.length, removedCount, verifiedRemoval }, 'Resources unsubscribed and local files cleaned up');
214
328
  break;
215
329
  }
216
330
  case 'list': {
217
331
  logger_1.logger.debug({ scope: typedParams.scope || 'all' }, 'Listing subscriptions...');
218
332
  // Get subscriptions list
219
333
  const subs = await client_1.apiClient.getSubscriptions({}, typedParams.user_token);
334
+ const visibleSubscriptions = index_js_1.promptManager.filterSuppressedSubscriptions(typedParams.user_token ?? '', subs.subscriptions);
335
+ const hiddenCount = subs.subscriptions.length - visibleSubscriptions.length;
220
336
  result = {
221
337
  action: 'list',
222
338
  success: true,
223
- subscriptions: subs.subscriptions.map(sub => ({
339
+ subscriptions: visibleSubscriptions.map(sub => ({
224
340
  id: sub.id,
225
341
  name: sub.name,
226
342
  type: sub.type,
227
343
  subscribed_at: sub.subscribed_at,
228
344
  })),
229
- message: `Found ${subs.total} subscription${subs.total !== 1 ? 's' : ''}`,
345
+ message: [
346
+ `Found ${visibleSubscriptions.length} subscription${visibleSubscriptions.length !== 1 ? 's' : ''}`,
347
+ hiddenCount > 0 ? `(${hiddenCount} locally unsubscribed default subscription${hiddenCount > 1 ? 's are' : ' is'} hidden)` : null,
348
+ ].filter(Boolean).join(' '),
230
349
  };
231
- logger_1.logger.info({ total: subs.total }, 'Subscriptions listed successfully');
350
+ logger_1.logger.info({ total: visibleSubscriptions.length, hiddenCount }, 'Subscriptions listed successfully');
232
351
  break;
233
352
  }
234
353
  case 'batch_subscribe': {
@@ -238,18 +357,26 @@ async function manageSubscription(params) {
238
357
  }
239
358
  logger_1.logger.debug({ count: typedParams.resource_ids.length, autoSync: typedParams.auto_sync }, 'Batch subscribing to resources...');
240
359
  const batchSubResult = await client_1.apiClient.subscribe(typedParams.resource_ids, typedParams.auto_sync, undefined, typedParams.user_token);
360
+ index_js_1.promptManager.clearSuppressedSubscriptions(typedParams.user_token ?? '', typedParams.resource_ids);
241
361
  logger_1.logger.info({ count: batchSubResult.subscriptions.length }, 'Batch subscription completed');
242
362
  // Auto-sync newly subscribed resources immediately (default: true)
243
363
  const shouldBatchAutoSync = typedParams.auto_sync !== false;
244
364
  let batchSyncSummary;
245
365
  let batchSyncDetails;
246
366
  let batchPendingSetup;
247
- if (shouldBatchAutoSync && batchSubResult.subscriptions.length > 0) {
248
- logger_1.logger.info({ count: batchSubResult.subscriptions.length }, 'Auto-syncing batch subscribed resources...');
367
+ let batchLocalActions;
368
+ const batchResourceIdsForAutoSync = Array.from(new Set(typedParams.resource_ids));
369
+ if (shouldBatchAutoSync && batchResourceIdsForAutoSync.length > 0) {
370
+ logger_1.logger.info({
371
+ requestedCount: batchResourceIdsForAutoSync.length,
372
+ newlyCreatedSubscriptionCount: batchSubResult.subscriptions.length,
373
+ }, 'Auto-syncing requested batch subscribed resources...');
249
374
  const batchSyncResult = await (0, sync_resources_1.syncResources)({
250
375
  mode: 'incremental',
251
376
  scope: typedParams.scope || 'global',
252
377
  user_token: typedParams.user_token,
378
+ resource_ids: batchResourceIdsForAutoSync,
379
+ agent_profile: typedParams.agent_profile,
253
380
  });
254
381
  if (batchSyncResult.success && batchSyncResult.data) {
255
382
  const sd = batchSyncResult.data;
@@ -258,11 +385,15 @@ async function manageSubscription(params) {
258
385
  if (sd.pending_setup && sd.pending_setup.length > 0) {
259
386
  batchPendingSetup = sd.pending_setup;
260
387
  }
388
+ if (sd.local_actions_required && sd.local_actions_required.length > 0) {
389
+ batchLocalActions = sd.local_actions_required;
390
+ }
261
391
  }
262
392
  else {
263
393
  batchSyncSummary = 'Auto-sync failed — run sync_resources manually if needed';
264
394
  }
265
395
  }
396
+ const batchLocalActionsSummary = buildLocalActionsSummary(batchLocalActions);
266
397
  result = {
267
398
  action: 'batch_subscribe',
268
399
  success: true,
@@ -273,11 +404,22 @@ async function manageSubscription(params) {
273
404
  subscribed_at: sub.subscribed_at,
274
405
  })),
275
406
  message: [
276
- `Successfully batch subscribed to ${batchSubResult.subscriptions.length} resource${batchSubResult.subscriptions.length > 1 ? 's' : ''}.`,
407
+ `Successfully processed batch subscribe request for ${batchResourceIdsForAutoSync.length} resource id${batchResourceIdsForAutoSync.length > 1 ? 's' : ''}.`,
408
+ `Server created ${batchSubResult.subscriptions.length} new subscription${batchSubResult.subscriptions.length !== 1 ? 's' : ''}.`,
409
+ batchSubResult.subscriptions.length === 0 && shouldBatchAutoSync
410
+ ? 'Requested resource(s) may already be subscribed or provided by baseline defaults; scoped auto-sync was still executed.'
411
+ : null,
277
412
  batchSyncSummary,
413
+ batchLocalActions && batchLocalActions.length > 0
414
+ ? `IMPORTANT: ${batchLocalActions.length} local action(s) are still pending. Execute local_actions_required or fetch csp-ai-agent-setup before treating these resources as installed.`
415
+ : null,
278
416
  ].filter(Boolean).join(' '),
279
417
  ...(batchSyncDetails ? { sync_details: batchSyncDetails } : {}),
280
418
  ...(batchPendingSetup ? { pending_setup: batchPendingSetup } : {}),
419
+ ...(batchLocalActions ? { local_actions_required: batchLocalActions } : {}),
420
+ ...(batchLocalActionsSummary
421
+ ? { setup_required: true, local_actions_summary: batchLocalActionsSummary }
422
+ : {}),
281
423
  };
282
424
  break;
283
425
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manage-subscription.js","sourceRoot":"","sources":["../../src/tools/manage-subscription.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manage-subscription.js","sourceRoot":"","sources":["../../src/tools/manage-subscription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Codex Policy Generator
3
+ *
4
+ * Aggregates all subscribed CSP routing rule contents into a single
5
+ * `csp-routing-policy.md` markdown file that is injected into Codex via
6
+ * the `developer_instructions` key in `~/.codex/config.toml`.
7
+ *
8
+ * Design rationale:
9
+ * - Codex does not support per-file `.mdc` rule directories like Cursor does.
10
+ * - The `developer_instructions` config key accepts a freeform string that
11
+ * Codex loads at session startup as additional system instructions.
12
+ * - Rather than dumping raw rule content into config.toml (size / escaping
13
+ * issues), we write a stable policy file path and instruct Codex to read it.
14
+ * - The policy file itself is a well-structured markdown document that Codex
15
+ * can parse and apply during the session.
16
+ */
17
+ export interface RuleContent {
18
+ name: string;
19
+ content: string;
20
+ }
21
+ /**
22
+ * Generates the aggregated `csp-routing-policy.md` content from the given
23
+ * list of rule contents.
24
+ *
25
+ * The output format is a self-describing markdown document with:
26
+ * - A header section explaining the file purpose.
27
+ * - One `##` section per rule, using the rule name as the heading.
28
+ * - A generation timestamp for cache-busting diagnostics.
29
+ */
30
+ export declare function generatePolicyContent(rules: RuleContent[]): string;
31
+ //# sourceMappingURL=policy-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-generator.d.ts","sourceRoot":"","sources":["../../src/tools/policy-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAyBlE"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * Codex Policy Generator
4
+ *
5
+ * Aggregates all subscribed CSP routing rule contents into a single
6
+ * `csp-routing-policy.md` markdown file that is injected into Codex via
7
+ * the `developer_instructions` key in `~/.codex/config.toml`.
8
+ *
9
+ * Design rationale:
10
+ * - Codex does not support per-file `.mdc` rule directories like Cursor does.
11
+ * - The `developer_instructions` config key accepts a freeform string that
12
+ * Codex loads at session startup as additional system instructions.
13
+ * - Rather than dumping raw rule content into config.toml (size / escaping
14
+ * issues), we write a stable policy file path and instruct Codex to read it.
15
+ * - The policy file itself is a well-structured markdown document that Codex
16
+ * can parse and apply during the session.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.generatePolicyContent = generatePolicyContent;
20
+ /**
21
+ * Generates the aggregated `csp-routing-policy.md` content from the given
22
+ * list of rule contents.
23
+ *
24
+ * The output format is a self-describing markdown document with:
25
+ * - A header section explaining the file purpose.
26
+ * - One `##` section per rule, using the rule name as the heading.
27
+ * - A generation timestamp for cache-busting diagnostics.
28
+ */
29
+ function generatePolicyContent(rules) {
30
+ const timestamp = new Date().toISOString();
31
+ const ruleSections = rules
32
+ .map(({ name, content }) => {
33
+ const sanitisedName = name.replace(/[`*#]/g, ' ').trim();
34
+ return `## ${sanitisedName}\n\n${content.trim()}`;
35
+ })
36
+ .join('\n\n---\n\n');
37
+ return [
38
+ '---',
39
+ 'title: CSP AI Agent Routing Policy',
40
+ `generated_at: ${timestamp}`,
41
+ `rule_count: ${rules.length}`,
42
+ '---',
43
+ '',
44
+ '# CSP AI Agent Routing Policy',
45
+ '',
46
+ '> Auto-generated by CSP AI Agent MCP. Do not edit manually.',
47
+ '> This file is refreshed automatically on `sync_resources`.',
48
+ '',
49
+ ruleSections,
50
+ '',
51
+ ].join('\n');
52
+ }
53
+ //# sourceMappingURL=policy-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-generator.js","sourceRoot":"","sources":["../../src/tools/policy-generator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAgBH,sDAyBC;AAlCD;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CAAC,KAAoB;IACxD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,MAAM,YAAY,GAAG,KAAK;SACvB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,OAAO,MAAM,aAAa,OAAO,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvB,OAAO;QACL,KAAK;QACL,oCAAoC;QACpC,iBAAiB,SAAS,EAAE;QAC5B,eAAe,KAAK,CAAC,MAAM,EAAE;QAC7B,KAAK;QACL,EAAE;QACF,+BAA+B;QAC/B,EAAE;QACF,6DAA6D;QAC7D,6DAA6D;QAC7D,EAAE;QACF,YAAY;QACZ,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -5,11 +5,13 @@
5
5
  * Returns aggregated usage data including user info and resource usage list.
6
6
  */
7
7
  import { ToolResult } from '../types/tools';
8
+ import type { AgentProfile } from '../client-adapters/index.js';
8
9
  export interface QueryUsageStatsParams {
9
10
  resource_type?: 'command' | 'skill' | 'rule' | 'mcp' | 'all';
10
11
  start_date?: string;
11
12
  end_date?: string;
12
13
  user_token?: string;
14
+ agent_profile?: 'cursor' | 'codex';
13
15
  }
14
16
  export interface UsageStatsResource {
15
17
  resource_id: string;
@@ -18,6 +20,7 @@ export interface UsageStatsResource {
18
20
  invocation_count: number;
19
21
  }
20
22
  export interface UsageStatsResult {
23
+ agent_profile: AgentProfile;
21
24
  user_id: number;
22
25
  user_name: string;
23
26
  user_email: string;
@@ -59,6 +62,11 @@ export declare const queryUsageStatsTool: {
59
62
  type: string;
60
63
  description: string;
61
64
  };
65
+ agent_profile: {
66
+ type: string;
67
+ enum: string[];
68
+ description: string;
69
+ };
62
70
  };
63
71
  required: never[];
64
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"query-usage-stats.d.ts","sourceRoot":"","sources":["../../src/tools/query-usage-stats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAuG5F;AAGD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD/B,CAAC"}
1
+ {"version":3,"file":"query-usage-stats.d.ts","sourceRoot":"","sources":["../../src/tools/query-usage-stats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,YAAY,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CA2H5F;AAGD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsD/B,CAAC"}
@@ -9,7 +9,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.queryUsageStatsTool = void 0;
10
10
  exports.queryUsageStats = queryUsageStats;
11
11
  const client_1 = require("../api/client");
12
+ const index_js_1 = require("../telemetry/index.js");
12
13
  const logger_1 = require("../utils/logger");
14
+ const index_js_2 = require("../config/index.js");
13
15
  /**
14
16
  * Query current user's resource usage statistics.
15
17
  *
@@ -22,10 +24,12 @@ const logger_1 = require("../utils/logger");
22
24
  async function queryUsageStats(params) {
23
25
  const p = params;
24
26
  const userToken = p.user_token ?? '';
27
+ const agentProfile = p.agent_profile ?? index_js_2.config.agentProfile ?? 'cursor';
25
28
  (0, logger_1.logToolStep)('query_usage_stats', 'Starting usage stats query', {
26
29
  resource_type: p.resource_type ?? 'all',
27
30
  start_date: p.start_date,
28
31
  end_date: p.end_date,
32
+ agent_profile: agentProfile,
29
33
  has_token: !!userToken,
30
34
  });
31
35
  // Validate user token
@@ -40,6 +44,17 @@ async function queryUsageStats(params) {
40
44
  };
41
45
  }
42
46
  try {
47
+ try {
48
+ index_js_1.telemetry.setUserToken(userToken);
49
+ await index_js_1.telemetry.flush();
50
+ (0, logger_1.logToolStep)('query_usage_stats', 'Flushed local telemetry before querying remote usage');
51
+ }
52
+ catch (flushError) {
53
+ logger_1.logger.warn({
54
+ tool: 'query_usage_stats',
55
+ error: flushError instanceof Error ? flushError.message : String(flushError),
56
+ }, 'Telemetry flush failed before usage query; continuing with remote read');
57
+ }
43
58
  // Build API request parameters
44
59
  const apiParams = {};
45
60
  if (p.resource_type && p.resource_type !== 'all') {
@@ -73,13 +88,17 @@ async function queryUsageStats(params) {
73
88
  };
74
89
  }
75
90
  (0, logger_1.logToolStep)('query_usage_stats', 'Successfully retrieved usage stats', {
91
+ agent_profile: agentProfile,
76
92
  user_id: response.data.user_id,
77
93
  total_invocations: response.data.total_invocations,
78
94
  resource_count: response.data.resource_usage.length,
79
95
  });
80
96
  return {
81
97
  success: true,
82
- data: response.data,
98
+ data: {
99
+ ...response.data,
100
+ agent_profile: agentProfile,
101
+ },
83
102
  };
84
103
  }
85
104
  catch (error) {
@@ -116,6 +135,7 @@ Supports optional filtering by:
116
135
  - resource_type: Filter by 'command', 'skill', 'rule', or 'mcp' (default: all types)
117
136
  - start_date: Filter events from this date onward (yyyy-MM-dd format)
118
137
  - end_date: Filter events up to this date (yyyy-MM-dd format)
138
+ - agent_profile: Echo the resolved caller profile ('cursor' or 'codex') for release-check verification
119
139
 
120
140
  User identity is automatically derived from the Authorization token.
121
141
 
@@ -146,6 +166,11 @@ Example usage:
146
166
  type: 'string',
147
167
  description: 'User authentication token (auto-injected by MCP server)',
148
168
  },
169
+ agent_profile: {
170
+ type: 'string',
171
+ enum: ['cursor', 'codex'],
172
+ description: 'AI client profile to echo in the response for release-check verification',
173
+ },
149
174
  },
150
175
  required: [],
151
176
  },