@convertcom/mcp-server 0.0.1-beta.6 → 0.0.1-beta.7

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.
@@ -0,0 +1,97 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ const MODEL_ID = 'Xenova/all-MiniLM-L6-v2';
3
+ const EMBEDDING_DIM = 384;
4
+ export class SemanticKbSearchService {
5
+ _isReady = false;
6
+ _initPromise;
7
+ _collection = null;
8
+ _extractor = null;
9
+ _chunks = [];
10
+ _hasLoadedNativeRuntime = false;
11
+ constructor(kbJsonPath, vectorsDir) {
12
+ this._initPromise = this._init(kbJsonPath, vectorsDir);
13
+ }
14
+ isReady() {
15
+ return this._isReady;
16
+ }
17
+ waitReady() {
18
+ return this._initPromise;
19
+ }
20
+ hasNativeRuntimeLoaded() {
21
+ return this._hasLoadedNativeRuntime;
22
+ }
23
+ async search(query, limit = 5) {
24
+ if (!this._isReady || !this._collection || !this._extractor) {
25
+ return [];
26
+ }
27
+ try {
28
+ const output = await this._extractor(query, { pooling: 'mean', normalize: true });
29
+ const queryVec = new Float32Array(output.data);
30
+ if (queryVec.length !== EMBEDDING_DIM) {
31
+ console.error(`[SemanticKbSearch] Unexpected embedding dimension: ${queryVec.length}, expected ${EMBEDDING_DIM}`);
32
+ return [];
33
+ }
34
+ const docs = this._collection.querySync({
35
+ fieldName: 'embedding',
36
+ vector: queryVec,
37
+ topk: limit,
38
+ outputFields: ['chunk_id'],
39
+ });
40
+ return docs.map((doc) => {
41
+ const chunkId = Number(doc.fields.chunk_id);
42
+ const chunk = this._chunks[chunkId];
43
+ if (!chunk)
44
+ return null;
45
+ const snippet = chunk.content.length > 360
46
+ ? chunk.content.slice(0, 360) + '...'
47
+ : chunk.content;
48
+ return {
49
+ chunk,
50
+ score: doc.score,
51
+ snippet,
52
+ };
53
+ }).filter((r) => r !== null);
54
+ }
55
+ catch (err) {
56
+ console.error('[SemanticKbSearch] Query error:', err instanceof Error ? err.message : err);
57
+ return [];
58
+ }
59
+ }
60
+ close() {
61
+ this._collection = null;
62
+ this._extractor = null;
63
+ this._isReady = false;
64
+ }
65
+ async _init(kbJsonPath, vectorsDir) {
66
+ try {
67
+ if (!existsSync(vectorsDir)) {
68
+ console.error(`[SemanticKbSearch] Vectors directory not found: ${vectorsDir} — falling back to keyword-only search.`);
69
+ return false;
70
+ }
71
+ // Load chunks for content lookup by chunk_id
72
+ const raw = readFileSync(kbJsonPath, 'utf8');
73
+ this._chunks = JSON.parse(raw);
74
+ // Dynamic imports — missing packages throw catchable errors.
75
+ // Zvec is CJS, so dynamic import yields { default: { ZVecOpen, ... } }.
76
+ const [hf, zvecMod] = await Promise.all([
77
+ import('@huggingface/transformers'),
78
+ import('@zvec/zvec'),
79
+ ]);
80
+ this._hasLoadedNativeRuntime = true;
81
+ const { ZVecOpen } = zvecMod.default ?? zvecMod;
82
+ this._extractor = await hf.pipeline('feature-extraction', MODEL_ID, {
83
+ dtype: 'fp32',
84
+ });
85
+ this._collection = ZVecOpen(vectorsDir, { readOnly: true });
86
+ this._isReady = true;
87
+ console.error(`[SemanticKbSearch] Ready — ${this._chunks.length} chunks, model: ${MODEL_ID}`);
88
+ return true;
89
+ }
90
+ catch (err) {
91
+ console.error('[SemanticKbSearch] Init failed (keyword-only fallback):', err instanceof Error ? err.message : err);
92
+ this._isReady = false;
93
+ return false;
94
+ }
95
+ }
96
+ }
97
+ //# sourceMappingURL=kb-semantic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kb-semantic.js","sourceRoot":"","sources":["../src/kb-semantic.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import { Tool, CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ /**
3
+ * Per-action agent guidance. Appended to generated descriptions as "Agent Notes:".
4
+ * Keys are "namespace.action" strings matching REGISTRY entries.
5
+ * This map survives `yarn generate` — it's hand-curated like REGISTRY.
6
+ */
7
+ export declare const ACTION_NOTES: Record<string, string>;
2
8
  export declare function getNamespacedTools(toolSet: string): Tool[];
3
9
  export declare function executeNamespacedTool(namespace: string, args: any): Promise<CallToolResult>;
4
10
  export declare function isNamespace(name: string): boolean;
@@ -121,6 +121,234 @@ const REGISTRY = {
121
121
  delete: 'deletefeature',
122
122
  },
123
123
  };
124
+ /** Human-readable titles for each namespace */
125
+ const NAMESPACE_TITLES = {
126
+ accounts: 'Accounts',
127
+ projects: 'Projects',
128
+ domains: 'Domains',
129
+ experiences: 'Experiences',
130
+ sections: 'Sections',
131
+ goals: 'Goals',
132
+ tags: 'Tags',
133
+ hypotheses: 'Hypotheses',
134
+ knowledgebases: 'Knowledge Bases',
135
+ observations: 'Observations',
136
+ locations: 'Locations',
137
+ audiences: 'Audiences',
138
+ features: 'Features',
139
+ };
140
+ /** Namespace-level descriptions for agents — richer than the auto-generated "Namespace 'X'" */
141
+ const NAMESPACE_DESCRIPTIONS = {
142
+ accounts: 'Manage Convert.com accounts via the live API — get account details, live visitor data, history, users, API/SDK keys.',
143
+ projects: 'Manage Convert.com projects via the live API — list, create, update projects, get live visitor data and change history.',
144
+ domains: 'Manage domains in the user\'s Convert.com account — add, verify (check_code), update, delete domains for a project.',
145
+ experiences: 'Manage A/B tests, MVTs, split URL tests, deploys, and feature rollouts in the user\'s Convert.com account. Use type "a/b" (with slash, not underscore).',
146
+ sections: 'Manage multi-page sections within MVT experiences via the Convert.com API. Requires experience_id in path — sections are experience-scoped.',
147
+ goals: 'Manage conversion goals in the user\'s Convert.com account — page visits, clicks, form submits, revenue, custom JS. Use goal_key for get_by_key.',
148
+ tags: 'Manage tags in the user\'s Convert.com account for organizing experiences and other resources.',
149
+ hypotheses: 'Manage CRO hypotheses in the user\'s Convert.com account with PIE/ICE prioritization scoring (UPPERCASE).',
150
+ knowledgebases: 'Manage knowledge base entries in the user\'s Convert.com account. Note: path param uses underscores — knowledge_base_id (not knowledgebase_id).',
151
+ observations: 'Manage observations in the user\'s Convert.com account. ⚠️ update action has a known backend bug (500).',
152
+ locations: 'Manage page targeting rules in the user\'s Convert.com account (URL match, JS condition, DOM element trigger). Rules use nested OR→AND→OR_WHEN structure.',
153
+ audiences: 'Manage visitor segmentation rules in the user\'s Convert.com account. Rules use nested OR→AND→OR_WHEN structure similar to locations.',
154
+ features: 'Manage feature flags in the user\'s Convert.com account — only works in fullstack project types. Returns 422 for web/standard projects.',
155
+ };
156
+ /**
157
+ * Per-action agent guidance. Appended to generated descriptions as "Agent Notes:".
158
+ * Keys are "namespace.action" strings matching REGISTRY entries.
159
+ * This map survives `yarn generate` — it's hand-curated like REGISTRY.
160
+ */
161
+ export const ACTION_NOTES = {
162
+ // ── experiences ──────────────────────────────────────────
163
+ 'experiences.create': [
164
+ 'Type enum: "a/b", "a/a", "mvt", "split_url", "multipage", "deploy" (standard projects), "a/b_fullstack", "feature_rollout" (fullstack projects only).',
165
+ 'Required body fields: name, type, status (use "draft"), url.',
166
+ 'a/b_fullstack and feature_rollout return 422 on non-fullstack projects.',
167
+ 'Minimal example: { "body": { "name": "My Test", "type": "a/b", "status": "draft", "url": "https://example.com" } }',
168
+ ].join('\n'),
169
+ 'experiences.get_by_key': 'Path parameter is "experience_key" (not "key"). Pass in path: { "experience_key": "abc123" }.',
170
+ 'experiences.daily_traffic_allocation': 'Only works when MAB (Multi-Armed Bandit) is configured on the experience. Returns 422 otherwise.',
171
+ 'experiences.update_variation': [
172
+ 'Requires "variation_id" in path. Get variation IDs from experiences.get with query: { "include": ["variations"], "expand": ["variations"] }.',
173
+ 'To add CSS/JS changes, use the "changes" array in body. Each change needs "type" and "data":',
174
+ ' - type "customCode": data = { css: "...", js: "..." } — for custom CSS/JS code',
175
+ ' - type "defaultCode": data = { css: "...", js: "...", custom_js: "..." } — for Visual Editor changes',
176
+ ' - type "defaultRedirect": data = { original_pattern, variation_pattern, case_sensitive } — for split URL',
177
+ ' - type "fullStackFeature": data = { feature_id, variables_data } — for fullstack features',
178
+ 'Example adding custom CSS+JS: { "body": { "changes": [{ "type": "customCode", "data": { "css": "body{color:red}", "js": "console.log(1)" } }] } }',
179
+ 'To clear all changes: { "body": { "changes": [] } }',
180
+ 'To update an existing change, include its integer "id" from the previous response.',
181
+ ].join('\n'),
182
+ 'experiences.get_variation_screenshot': 'Requires "variation_id" in path. Returns 404 ("No image found") for draft experiences or variations with no visual editor changes yet — this is normal.',
183
+ 'experiences.get_change': [
184
+ 'Requires account_id, project_id, experience_id, and change_id in path.',
185
+ '⚠️ Known schema issue: path params may not be auto-validated. Pass all four IDs explicitly in path.',
186
+ 'Get change IDs from the update_variation response or from experiences.get with include/expand variations.',
187
+ ].join('\n'),
188
+ 'experiences.update_change': [
189
+ 'Requires account_id, project_id, experience_id, and change_id in path.',
190
+ '⚠️ Known schema issue: path params may not be auto-validated. Pass all four IDs explicitly in path.',
191
+ 'Body uses same structure as update_variation changes: { type, data }.',
192
+ 'For customCode: { "type": "customCode", "data": { "css": "...", "js": "..." } }',
193
+ 'For defaultCode: { "type": "defaultCode", "data": { "css": "...", "js": "...", "custom_js": "..." } }',
194
+ ].join('\n'),
195
+ 'experiences.aggregated_report': 'Works on any experience. Returns empty data arrays for draft/inactive experiences.',
196
+ 'experiences.daily_report': 'Works on any experience. Returns empty data arrays for draft/inactive experiences.',
197
+ // ── locations ────────────────────────────────────────────
198
+ 'locations.create': [
199
+ 'Required body fields: name, rules, trigger.',
200
+ 'Rules use nested OR→AND→OR_WHEN structure.',
201
+ 'Minimal example: { "body": { "name": "Homepage", "rules": { "OR": [{ "AND": [{ "OR_WHEN": [{ "rule_type": "url", "value": "example.com", "matching": { "match_type": "contains" } }] }] }] }, "trigger": { "type": "upon_run" } } }',
202
+ ].join('\n'),
203
+ // ── audiences ────────────────────────────────────────────
204
+ 'audiences.create': [
205
+ 'Required body fields: name, type, rules.',
206
+ 'Type enum: "segmentation", "transient_condition", "permanent".',
207
+ 'Rules use nested OR→AND→OR_WHEN structure (same as locations but more rule_type options).',
208
+ 'For visitor_type rules, use match_type: "equals" (not "matches").',
209
+ 'Minimal example: { "body": { "name": "Returning Visitors", "type": "segmentation", "rules": { "OR": [{ "AND": [{ "OR_WHEN": [{ "rule_type": "visitor_type", "value": "returning", "matching": { "match_type": "equals" } }] }] }] } } }',
210
+ ].join('\n'),
211
+ // ── hypotheses ───────────────────────────────────────────
212
+ 'hypotheses.create': [
213
+ 'Required body fields: name, status (use "draft"), prioritization_score_type, prioritization_score_attributes.',
214
+ 'prioritization_score_type: "PIE" or "ICE" (UPPERCASE only).',
215
+ 'For PIE: attributes are { potential, importance, ease } (values 1-5).',
216
+ 'For ICE: attributes are { impact, confidence, ease } (values 1-5).',
217
+ 'Minimal example: { "body": { "name": "Bigger CTA button", "status": "draft", "prioritization_score_type": "PIE", "prioritization_score_attributes": { "potential": 4, "importance": 3, "ease": 5 } } }',
218
+ ].join('\n'),
219
+ 'hypotheses.convert': 'Converts hypothesis to experience. The hypothesis must have associated goals and locations first. Returns 422 if prerequisites are missing.',
220
+ 'hypotheses.update_status': [
221
+ 'Body is { "status": "<value>" }. Valid statuses: "draft", "applied", "completed", "archived", "proven", "disproven".',
222
+ 'Status transitions follow a strict state machine:',
223
+ ' draft ↔ applied → completed → { archived, proven, disproven }',
224
+ 'Only allowed transitions: draft→applied, applied→draft, applied→completed, completed→archived, completed→proven, completed→disproven.',
225
+ 'Returns 422 "Status cannot be updated to the desired one" for invalid transitions.',
226
+ ].join('\n'),
227
+ // ── knowledgebases ───────────────────────────────────────
228
+ 'knowledgebases.create': 'Required body fields: name, summary. Optional: description, url, start_date, end_date.',
229
+ 'knowledgebases.get': 'Path parameter is "knowledge_base_id" (with underscores, not "knowledgebase_id").',
230
+ 'knowledgebases.update': [
231
+ 'Path parameter is "knowledge_base_id" (with underscores).',
232
+ 'Currently only accepts "status" field in body ("active" or "archived"). Other fields like name or summary will fail Zod validation.',
233
+ ].join('\n'),
234
+ 'knowledgebases.delete': 'Path parameter is "knowledge_base_id" (with underscores, not "knowledgebase_id").',
235
+ // ── observations ─────────────────────────────────────────
236
+ 'observations.update': '⚠️ Known backend bug — API returns 500 on update. Workaround: create a new observation + delete the old one.',
237
+ // ── features ─────────────────────────────────────────────
238
+ 'features.create': [
239
+ 'Only works in fullstack project types. Returns 422 for web/standard projects.',
240
+ 'Required body fields: name, key, variables (array).',
241
+ 'Variable type enum: "boolean", "string", "integer", "json". default_value must match the type (e.g., true for boolean, not "true").',
242
+ 'Minimal example: { "body": { "name": "Dark Mode", "key": "dark_mode", "variables": [{ "key": "enabled", "type": "boolean", "default_value": false }] } }',
243
+ ].join('\n'),
244
+ 'features.get_by_key': 'Path parameter is "feature_key" (not "key"). Pass in path: { "feature_key": "abc123" }.',
245
+ // ── sections ─────────────────────────────────────────────
246
+ 'sections.list': 'Requires "experience_id" in path — sections are experience-scoped, not project-scoped.',
247
+ 'sections.create': [
248
+ 'Requires "experience_id" in path — sections are experience-scoped.',
249
+ 'Only works for MVT (multivariate) experiences. Returns 403 for A/B and other types.',
250
+ 'Required body field: "versions" array with at least one version object.',
251
+ 'Minimal example: { "body": { "name": "New Section", "versions": [{ "name": "Original", "url": "https://example.com" }] } }',
252
+ ].join('\n'),
253
+ 'sections.update': [
254
+ 'Requires "experience_id" and "section_id" in path — sections are experience-scoped.',
255
+ 'Required body field: "versions" array (same format as sections.create).',
256
+ 'Example: { "body": { "name": "Updated Section", "versions": [{ "name": "V1", "url": "https://example.com" }] } }',
257
+ ].join('\n'),
258
+ // ── goals ────────────────────────────────────────────────
259
+ 'goals.get_by_key': 'Path parameter is "goal_key" (not "key"). Pass in path: { "goal_key": "abc123" }.',
260
+ 'goals.create': [
261
+ 'Type enum: "visits_page", "clicks_link", "submits_form", "revenue", "engagement", "scrolls_to", "custom_js".',
262
+ 'For page-visit goals, include "urls" array with objects: { "match_type": "contains"|"equals"|"regex", "value": "https://..." }.',
263
+ ].join('\n'),
264
+ // ── accounts ─────────────────────────────────────────────
265
+ 'accounts.list_sdk_keys': 'Requires "project_id" in path even though it\'s under the accounts namespace.',
266
+ 'accounts.create_sdk_key': 'Requires "project_id" in path even though it\'s under the accounts namespace. May return 401 if API credentials lack SDK key management permissions.',
267
+ };
268
+ /**
269
+ * Walk a JSON Schema tree and extract all enum fields with their paths
270
+ * and required fields. Handles allOf/oneOf/anyOf composition.
271
+ * Used to surface schema constraints that LLMs can't parse from raw JSON Schema.
272
+ */
273
+ function extractBodyHints(inputSchema) {
274
+ const rbSchema = inputSchema?.properties?.requestBody;
275
+ if (!rbSchema)
276
+ return null;
277
+ const visited = new WeakSet();
278
+ const enumMap = new Map();
279
+ const requiredAtLevel = new Map();
280
+ function walk(schema, path) {
281
+ if (!schema || typeof schema !== 'object')
282
+ return;
283
+ if (visited.has(schema))
284
+ return;
285
+ visited.add(schema);
286
+ // Collect enum values
287
+ if (Array.isArray(schema.enum)) {
288
+ const vals = schema.enum.filter((v) => typeof v === 'string' || typeof v === 'number');
289
+ if (vals.length > 0 && path) {
290
+ const existing = enumMap.get(path) || new Set();
291
+ vals.forEach((v) => existing.add(String(v)));
292
+ enumMap.set(path, existing);
293
+ }
294
+ }
295
+ // Collect required fields
296
+ if (Array.isArray(schema.required) && schema.required.length > 0) {
297
+ const level = path || '(root)';
298
+ const existing = requiredAtLevel.get(level) || new Set();
299
+ schema.required.forEach((r) => existing.add(r));
300
+ requiredAtLevel.set(level, existing);
301
+ }
302
+ // Walk properties
303
+ if (schema.properties && typeof schema.properties === 'object') {
304
+ for (const [key, value] of Object.entries(schema.properties)) {
305
+ const prop = value;
306
+ if (prop.readOnly)
307
+ continue; // skip auto-generated IDs
308
+ walk(prop, path ? `${path}.${key}` : key);
309
+ }
310
+ }
311
+ // Walk array items
312
+ if (schema.items) {
313
+ walk(schema.items, `${path}[]`);
314
+ }
315
+ // Walk composition keywords
316
+ for (const kw of ['allOf', 'oneOf', 'anyOf']) {
317
+ if (Array.isArray(schema[kw])) {
318
+ for (const sub of schema[kw]) {
319
+ walk(sub, path);
320
+ }
321
+ }
322
+ }
323
+ }
324
+ walk(rbSchema, '');
325
+ const lines = [];
326
+ // Show enum fields with valid values (sorted by path depth, shallow first)
327
+ const enumEntries = [...enumMap.entries()]
328
+ .sort((a, b) => a[0].split('.').length - b[0].split('.').length);
329
+ for (const [field, values] of enumEntries) {
330
+ const valArr = [...values];
331
+ if (valArr.length > 12) {
332
+ lines.push(` ${field}: ${valArr.slice(0, 10).map(v => `"${v}"`).join(', ')}, ... (${valArr.length} values)`);
333
+ }
334
+ else {
335
+ lines.push(` ${field}: ${valArr.map(v => `"${v}"`).join(', ')}`);
336
+ }
337
+ }
338
+ // Show required fields per level
339
+ for (const [level, fields] of requiredAtLevel) {
340
+ const fieldArr = [...fields].filter(f => f !== 'id'); // skip auto-assigned ids
341
+ if (fieldArr.length === 0)
342
+ continue;
343
+ if (level === '(root)') {
344
+ lines.push(` Required: ${fieldArr.join(', ')}`);
345
+ }
346
+ else {
347
+ lines.push(` Required in ${level}: ${fieldArr.join(', ')}`);
348
+ }
349
+ }
350
+ return lines.length > 0 ? lines.join('\n') : null;
351
+ }
124
352
  function actionsForToolset(namespace, toolSet) {
125
353
  const all = Object.entries(REGISTRY[namespace] || {});
126
354
  if (toolSet === 'all')
@@ -128,11 +356,35 @@ function actionsForToolset(namespace, toolSet) {
128
356
  // reporting/readOnly: include only underlying tools that start with 'get'
129
357
  return all.filter(([, tool]) => tool.startsWith('get')).map(([a]) => a);
130
358
  }
359
+ /**
360
+ * Compute MCP tool annotations from the filtered action set.
361
+ * Annotations reflect the worst-case capability of the exposed actions:
362
+ * - readOnlyHint: true only when ALL actions are reads
363
+ * - destructiveHint: true when ANY action is a delete
364
+ * - idempotentHint: true only when ALL actions are reads (GETs are idempotent)
365
+ * - openWorldHint: false — all tools affect bounded Convert API resources
366
+ */
367
+ function annotationsForNamespace(ns, actions) {
368
+ const hasWriteAction = actions.some((a) => {
369
+ const toolName = REGISTRY[ns]?.[a];
370
+ return toolName && !toolName.startsWith('get');
371
+ });
372
+ const hasDeleteAction = actions.includes('delete');
373
+ return {
374
+ title: NAMESPACE_TITLES[ns] ?? ns,
375
+ readOnlyHint: !hasWriteAction,
376
+ destructiveHint: hasWriteAction && hasDeleteAction,
377
+ idempotentHint: !hasWriteAction,
378
+ openWorldHint: false,
379
+ };
380
+ }
131
381
  export function getNamespacedTools(toolSet) {
132
382
  return Object.keys(REGISTRY).map((ns) => {
133
383
  const actions = actionsForToolset(ns, toolSet);
134
- const description = `Namespace '${ns}'. Actions: ${actions.join(', ')}.`;
135
- // Build structured metadata for each action
384
+ // Build rich namespace description from curated map or fallback
385
+ const nsDesc = NAMESPACE_DESCRIPTIONS[ns] || `Manage ${ns} in the user's Convert.com account via the live API.`;
386
+ const description = `${nsDesc} Available actions: ${actions.join(', ')}.`;
387
+ // Build structured metadata for each action, merging ACTION_NOTES
136
388
  const actionMetadata = actions.map((action) => {
137
389
  const toolName = REGISTRY[ns][action];
138
390
  const def = toolDefinitionMap.get(toolName);
@@ -145,22 +397,37 @@ export function getNamespacedTools(toolSet) {
145
397
  .filter((p) => p.in === 'query')
146
398
  .map((p) => p.name);
147
399
  const hasBody = !!def.requestBodyContentType;
400
+ const baseDesc = def.description || 'No description';
401
+ const note = ACTION_NOTES[`${ns}.${action}`];
402
+ const bodyHints = hasBody ? extractBodyHints(def.inputSchema) : null;
403
+ const parts = [baseDesc];
404
+ if (note)
405
+ parts.push(`Agent Notes:\n${note}`);
406
+ if (bodyHints)
407
+ parts.push(`Body schema:\n${bodyHints}`);
408
+ const fullDesc = parts.join('\n\n');
148
409
  return {
149
410
  action,
150
- description: def.description || 'No description',
411
+ description: fullDesc,
151
412
  method: def.method.toUpperCase(),
152
413
  path_parameters: pathParams,
153
414
  query_parameters: queryParams,
154
415
  accepts_body: hasBody,
155
416
  };
156
417
  });
418
+ // Hint in action description when notes are available
419
+ const actionsWithNotes = actions.filter(a => ACTION_NOTES[`${ns}.${a}`]);
420
+ const actionDesc = actionsWithNotes.length
421
+ ? 'Action to perform. See _meta.available_actions for detailed per-action guidance.'
422
+ : 'Action to perform';
157
423
  return {
158
424
  name: ns,
425
+ title: NAMESPACE_TITLES[ns] ?? ns,
159
426
  description,
160
427
  inputSchema: {
161
428
  type: 'object',
162
429
  properties: {
163
- action: { type: 'string', enum: actions, description: 'Action to perform' },
430
+ action: { type: 'string', enum: actions, description: actionDesc },
164
431
  path: { type: 'object', additionalProperties: true, description: 'Path params: e.g., account_id, project_id, experience_id' },
165
432
  query: { type: 'object', additionalProperties: true, description: 'Query parameters for the API request. Array parameters (like include, expand) must always be passed as arrays, even for single values. IMPORTANT: When using "include" to fetch related resources, you MUST also use "expand" with identical values to get complete object data instead of just numeric IDs. Examples: {"include": ["goals"], "expand": ["goals"]} (correct) vs {"include": ["goals"]} (incorrect - returns useless IDs only).' },
166
433
  body: { type: 'object', additionalProperties: true, description: 'Request body (for create/update/clone, etc.)' },
@@ -171,6 +438,7 @@ export function getNamespacedTools(toolSet) {
171
438
  available_actions: actionMetadata,
172
439
  },
173
440
  },
441
+ annotations: annotationsForNamespace(ns, actions),
174
442
  };
175
443
  });
176
444
  }
@@ -178,20 +446,16 @@ export async function executeNamespacedTool(namespace, args) {
178
446
  if (!REGISTRY[namespace]) {
179
447
  const error = { error: 'UnknownNamespace', namespace, available_namespaces: Object.keys(REGISTRY) };
180
448
  return {
181
- content: [
182
- { type: 'text', text: `Unknown namespace: ${namespace}` },
183
- { type: 'text', text: JSON.stringify(error, null, 2) }
184
- ],
449
+ content: [{ type: 'text', text: `Unknown namespace: ${namespace}` }],
450
+ structuredContent: error,
185
451
  isError: true,
186
452
  };
187
453
  }
188
454
  if (!args || typeof args !== 'object') {
189
455
  const error = { error: 'InvalidArguments', message: 'Expected object with fields: action, path, query, body' };
190
456
  return {
191
- content: [
192
- { type: 'text', text: `Invalid arguments. Expected object with fields: action, path, query, body.` },
193
- { type: 'text', text: JSON.stringify(error, null, 2) }
194
- ],
457
+ content: [{ type: 'text', text: `Invalid arguments. Expected object with fields: action, path, query, body.` }],
458
+ structuredContent: error,
195
459
  isError: true,
196
460
  };
197
461
  }
@@ -199,10 +463,8 @@ export async function executeNamespacedTool(namespace, args) {
199
463
  if (!action || typeof action !== 'string') {
200
464
  const error = { error: 'MissingAction', message: 'The action field is required and must be a string' };
201
465
  return {
202
- content: [
203
- { type: 'text', text: `Missing or invalid 'action'.` },
204
- { type: 'text', text: JSON.stringify(error, null, 2) }
205
- ],
466
+ content: [{ type: 'text', text: `Missing or invalid 'action'.` }],
467
+ structuredContent: error,
206
468
  isError: true,
207
469
  };
208
470
  }
@@ -211,10 +473,8 @@ export async function executeNamespacedTool(namespace, args) {
211
473
  const available = Object.keys(REGISTRY[namespace]);
212
474
  const error = { error: 'UnknownAction', namespace, action, available_actions: available };
213
475
  return {
214
- content: [
215
- { type: 'text', text: `Unknown action '${action}' for namespace '${namespace}'. Available: ${available.join(', ')}` },
216
- { type: 'text', text: JSON.stringify(error, null, 2) }
217
- ],
476
+ content: [{ type: 'text', text: `Unknown action '${action}' for namespace '${namespace}'. Available: ${available.join(', ')}` }],
477
+ structuredContent: error,
218
478
  isError: true,
219
479
  };
220
480
  }
@@ -222,10 +482,8 @@ export async function executeNamespacedTool(namespace, args) {
222
482
  if (!def) {
223
483
  const error = { error: 'InternalError', message: 'Delegate tool not found', delegate };
224
484
  return {
225
- content: [
226
- { type: 'text', text: `Internal error: delegate tool not found: ${delegate}` },
227
- { type: 'text', text: JSON.stringify(error, null, 2) }
228
- ],
485
+ content: [{ type: 'text', text: `Internal error: delegate tool not found: ${delegate}` }],
486
+ structuredContent: error,
229
487
  isError: true,
230
488
  };
231
489
  }
@@ -233,12 +491,12 @@ export async function executeNamespacedTool(namespace, args) {
233
491
  const requiredPathParams = (def.executionParameters || []).filter((p) => p.in === 'path').map((p) => p.name);
234
492
  const missing = requiredPathParams.filter((k) => !(k in path));
235
493
  if (missing.length) {
494
+ const note = ACTION_NOTES[`${namespace}.${action}`];
495
+ const hint = note ? `\n\nHint for ${namespace}.${action}:\n${note}` : '';
236
496
  const error = { error: 'MissingPathParameters', namespace, action, missing_parameters: missing };
237
497
  return {
238
- content: [
239
- { type: 'text', text: `Missing required path parameters: ${missing.map(k => `path.${k}`).join(', ')}` },
240
- { type: 'text', text: JSON.stringify(error, null, 2) }
241
- ],
498
+ content: [{ type: 'text', text: `Missing required path parameters: ${missing.map(k => `path.${k}`).join(', ')}${hint}` }],
499
+ structuredContent: error,
242
500
  isError: true,
243
501
  };
244
502
  }
@@ -249,7 +507,15 @@ export async function executeNamespacedTool(namespace, args) {
249
507
  else if (def.requestBodyContentType && typeof body === 'undefined') {
250
508
  // Do not set requestBody; zod schema will enforce when required
251
509
  }
252
- return await executeToolByName(delegate, flattenedArgs);
510
+ const result = await executeToolByName(delegate, flattenedArgs);
511
+ // Append action-specific guidance to error messages so agents can self-correct
512
+ if (result.isError) {
513
+ const note = ACTION_NOTES[`${namespace}.${action}`];
514
+ if (note && result.content?.[0]?.type === 'text') {
515
+ result.content[0].text += `\n\nHint for ${namespace}.${action}:\n${note}`;
516
+ }
517
+ }
518
+ return result;
253
519
  }
254
520
  export function isNamespace(name) {
255
521
  return Object.prototype.hasOwnProperty.call(REGISTRY, name);
@@ -1 +1 @@
1
- {"version":3,"file":"namespaced.js","sourceRoot":"","sources":["../src/namespaced.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOlD,MAAM,QAAQ,GAAa;IACzB,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,mBAAmB;QACxB,aAAa,EAAE,oBAAoB;QACnC,WAAW,EAAE,mBAAmB;QAChC,mBAAmB,EAAE,6BAA6B;QAClD,aAAa,EAAE,gBAAgB;QAC/B,aAAa,EAAE,gBAAgB;QAC/B,cAAc,EAAE,cAAc;KAC/B;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,eAAe;QACvB,aAAa,EAAE,oBAAoB;QACnC,WAAW,EAAE,mBAAmB;KACjC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,gBAAgB;QACtB,GAAG,EAAE,WAAW;QAChB,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,iBAAiB;QAC7B,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,cAAc;KACvB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,oBAAoB;QAC1B,GAAG,EAAE,eAAe;QACpB,UAAU,EAAE,oBAAoB;QAChC,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,uBAAuB;QACtC,WAAW,EAAE,sBAAsB;QACnC,iBAAiB,EAAE,+BAA+B;QAClD,YAAY,EAAE,0BAA0B;QACxC,wBAAwB,EAAE,qCAAqC;QAC/D,gBAAgB,EAAE,2BAA2B;QAC7C,wBAAwB,EAAE,kCAAkC;QAC5D,2BAA2B,EAAE,qCAAqC;QAClE,iBAAiB,EAAE,4BAA4B;QAC/C,UAAU,EAAE,qBAAqB;QACjC,aAAa,EAAE,wBAAwB;KACxC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,eAAe;QACvB,0BAA0B,EAAE,0BAA0B;QACtD,WAAW,EAAE,6BAA6B;QAC1C,cAAc,EAAE,gCAAgC;KACjD;IACD,KAAK,EAAE;QACL,IAAI,EAAE,cAAc;QACpB,GAAG,EAAE,SAAS;QACd,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,WAAW;KACnB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,QAAQ;QACb,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,WAAW;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,mBAAmB;QACzB,GAAG,EAAE,eAAe;QACpB,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,wBAAwB;QACvC,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,kBAAkB;KAC3B;IACD,cAAc,EAAE;QACd,IAAI,EAAE,uBAAuB;QAC7B,GAAG,EAAE,kBAAkB;QACvB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,qBAAqB;KAC9B;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,qBAAqB;QAC3B,GAAG,EAAE,gBAAgB;QACrB,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,mBAAmB;KAC5B;IACD,SAAS,EAAE;QACT,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,aAAa;QAClB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,qBAAqB;QAC9B,KAAK,EAAE,eAAe;KACvB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,aAAa;QAClB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,qBAAqB;QAC9B,KAAK,EAAE,eAAe;KACvB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,YAAY;QACjB,UAAU,EAAE,iBAAiB;QAC7B,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,eAAe;KACxB;CACF,CAAC;AAEF,SAAS,iBAAiB,CAAC,SAAoB,EAAE,OAAe;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,0EAA0E;IAC1E,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,cAAc,EAAE,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAEzE,4CAA4C;QAC5C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;YAElE,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;iBAC/C,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;iBACnC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;iBAChD,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC;YAE7C,OAAO;gBACL,MAAM;gBACN,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,gBAAgB;gBAChD,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE;gBAChC,eAAe,EAAE,UAAU;gBAC3B,gBAAgB,EAAE,WAAW;gBAC7B,YAAY,EAAE,OAAO;aACtB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,EAAE;YACR,WAAW;YACX,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE;oBAC3E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,0DAA0D,EAAE;oBAC7H,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,gbAAgb,EAAE;oBACpf,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,8CAA8C,EAAE;iBAClH;gBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;gBACpB,KAAK,EAAE;oBACL,SAAS,EAAE,EAAE;oBACb,iBAAiB,EAAE,cAAc;iBAClC;aACK;SACD,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAiB,EAAE,IAAS;IACtE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpG,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,SAAS,EAAE,EAAE;gBACzD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACvD;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,wDAAwD,EAAE,CAAC;QAC/G,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4EAA4E,EAAE;gBACpG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACvD;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACrD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC;QACvG,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE;gBACtD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACvD;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC;QAC1F,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,MAAM,oBAAoB,SAAS,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACrH,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACvD;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,CAAC;QACvF,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4CAA4C,QAAQ,EAAE,EAAE;gBAC9E,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACvD;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,MAAM,kBAAkB,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvH,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC;QACjG,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACvG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACvD;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAwB,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;IACjE,IAAI,GAAG,CAAC,sBAAsB,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9D,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;IACnC,CAAC;SAAM,IAAI,GAAG,CAAC,sBAAsB,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;QACrE,gEAAgE;IAClE,CAAC;IAED,OAAO,MAAM,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"namespaced.js","sourceRoot":"","sources":["../src/namespaced.ts"],"names":[],"mappings":"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"}