@cl-mcp/core 2.0.0

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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/config.d.ts +18 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +23 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/data/metadata.d.ts +36 -0
  8. package/dist/data/metadata.d.ts.map +1 -0
  9. package/dist/data/metadata.js +98 -0
  10. package/dist/data/metadata.js.map +1 -0
  11. package/dist/data/paths.d.ts +17 -0
  12. package/dist/data/paths.d.ts.map +1 -0
  13. package/dist/data/paths.js +99 -0
  14. package/dist/data/paths.js.map +1 -0
  15. package/dist/data/registry.d.ts +48 -0
  16. package/dist/data/registry.d.ts.map +1 -0
  17. package/dist/data/registry.js +193 -0
  18. package/dist/data/registry.js.map +1 -0
  19. package/dist/data/schema.d.ts +4924 -0
  20. package/dist/data/schema.d.ts.map +1 -0
  21. package/dist/data/schema.js +356 -0
  22. package/dist/data/schema.js.map +1 -0
  23. package/dist/domain/context.d.ts +11 -0
  24. package/dist/domain/context.d.ts.map +1 -0
  25. package/dist/domain/context.js +168 -0
  26. package/dist/domain/context.js.map +1 -0
  27. package/dist/domain/formatters.d.ts +64 -0
  28. package/dist/domain/formatters.d.ts.map +1 -0
  29. package/dist/domain/formatters.js +607 -0
  30. package/dist/domain/formatters.js.map +1 -0
  31. package/dist/domain/resolver.d.ts +19 -0
  32. package/dist/domain/resolver.d.ts.map +1 -0
  33. package/dist/domain/resolver.js +146 -0
  34. package/dist/domain/resolver.js.map +1 -0
  35. package/dist/domain/search.d.ts +25 -0
  36. package/dist/domain/search.d.ts.map +1 -0
  37. package/dist/domain/search.js +177 -0
  38. package/dist/domain/search.js.map +1 -0
  39. package/dist/handlers.d.ts +24 -0
  40. package/dist/handlers.d.ts.map +1 -0
  41. package/dist/handlers.js +378 -0
  42. package/dist/handlers.js.map +1 -0
  43. package/dist/index.d.ts +25 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +28 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/types.d.ts +7 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +6 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +44 -0
@@ -0,0 +1,607 @@
1
+ /**
2
+ * Component Data Formatters for @cl-mcp/mcp-server
3
+ *
4
+ * Transforms raw component metadata into formatted markdown responses
5
+ * for each detail_level: api, full, examples, types.
6
+ *
7
+ * Parametric — no hardcoded library names or import paths.
8
+ */
9
+ import { buildStrictAPIFromAnalysis } from "../types.js";
10
+ /**
11
+ * Sentinel rendered when a type-bearing field is `null` (schema v4.0).
12
+ * Replaces the legacy `'unknown'` / `'void'` strings the analyzer used to
13
+ * emit unconditionally. Surface this consistently so the LLM can recognize
14
+ * an unresolved type rather than treating it as a real type name.
15
+ */
16
+ const UNRESOLVED_TYPE = "<unresolved>";
17
+ function fmtType(t, resolved) {
18
+ if (t === null || t === undefined)
19
+ return UNRESOLVED_TYPE;
20
+ return resolved === false ? `${t} (unresolved)` : t;
21
+ }
22
+ import { getLibraryConfig } from "../config.js";
23
+ import { buildSearchMetadataMap, countDirectivesAndPipes, extractSelectors, getAnalyzedEntry, getComponentAnalysis, getPreloadedComponentMetadata, } from "../data/metadata.js";
24
+ import { resolveComponentName } from "./resolver.js";
25
+ import { getSearchOptions, searchComponents } from "./search.js";
26
+ function collectDirectives(analyses) {
27
+ const result = [];
28
+ for (const fileAnalysis of analyses) {
29
+ for (const directive of fileAnalysis.directives || []) {
30
+ if (!directive.metadata.selector)
31
+ continue;
32
+ result.push({ analysis: directive, api: buildStrictAPIFromAnalysis(directive) });
33
+ }
34
+ }
35
+ return result;
36
+ }
37
+ function collectPipes(analyses) {
38
+ const result = [];
39
+ for (const fileAnalysis of analyses) {
40
+ result.push(...(fileAnalysis.pipes || []));
41
+ }
42
+ return result;
43
+ }
44
+ function getImportPath(componentName) {
45
+ const config = getLibraryConfig();
46
+ if ((config.framework ?? "angular") === "react") {
47
+ // React: root import of the (namespace) symbol — `Dialog.Root` is used
48
+ // as `import { Dialog } from '<pkg>'` + `<Dialog.Root>`.
49
+ const symbol = componentName.split(".")[0];
50
+ return `import { ${symbol} } from '${config.packageName}';`;
51
+ }
52
+ return `import { ... } from '${config.packageName}/${componentName}';`;
53
+ }
54
+ /**
55
+ * Binding examples are generated by the analyzer in Angular syntax
56
+ * (`[name]="value"`, `(name)="handler($event)"`). For React libraries the
57
+ * same information is rendered in JSX syntax instead.
58
+ */
59
+ function frameworkizeExample(example) {
60
+ if ((getLibraryConfig().framework ?? "angular") !== "react")
61
+ return example;
62
+ return example.replace(/^\[([^\]]+)\]="(.*)"$/, "$1={$2}").replace(/^\(([^)]+)\)=".*"$/, "$1={handler}");
63
+ }
64
+ function renderInputsTable(inputs) {
65
+ if (inputs.length === 0)
66
+ return `*This component has NO inputs.*\n\n`;
67
+ let out = `| Input | Type | Required | Default | Example |\n`;
68
+ out += `|-------|------|----------|---------|--------|\n`;
69
+ for (const input of inputs) {
70
+ const req = input.required ? "YES" : "no";
71
+ const def = input.defaultValue || "-";
72
+ out += `| \`${input.name}\` | \`${fmtType(input.type, input.typeResolved)}\` | ${req} | ${def} | \`${frameworkizeExample(input.example)}\` |\n`;
73
+ }
74
+ out += `\n`;
75
+ return out;
76
+ }
77
+ function renderOutputsTable(outputs) {
78
+ if (outputs.length === 0)
79
+ return `*This component has NO outputs.*\n\n`;
80
+ let out = `| Output | Event Type | Example |\n`;
81
+ out += `|--------|------------|--------|\n`;
82
+ for (const output of outputs) {
83
+ out += `| \`${output.name}\` | \`${fmtType(output.eventType, output.eventTypeResolved)}\` | \`${frameworkizeExample(output.example)}\` |\n`;
84
+ }
85
+ out += `\n`;
86
+ return out;
87
+ }
88
+ function renderDirectivesSection(directives, inheritanceMap) {
89
+ if (directives.length === 0)
90
+ return "";
91
+ let out = `## Directives\n\n`;
92
+ for (const { analysis: dir, api } of directives) {
93
+ out += `### ${api.selector}\n`;
94
+ out += `**Class:** \`${api.className}\``;
95
+ if (dir.metadata.standalone !== undefined) {
96
+ out += ` | **Standalone:** ${dir.metadata.standalone ? "yes" : "no"}`;
97
+ }
98
+ out += `\n\n`;
99
+ out += `#### Inputs (${api.availableInputs.length})\n\n`;
100
+ out +=
101
+ api.availableInputs.length === 0 ? `*This directive has NO inputs.*\n\n` : renderInputsTable(api.availableInputs);
102
+ const dirInheritance = inheritanceMap?.[api.className];
103
+ if (dirInheritance?.inheritedInputs.length) {
104
+ out += `#### Inherited Inputs (from ${dirInheritance.baseClass || "base class"}) (${dirInheritance.inheritedInputs.length})\n\n`;
105
+ out += `| Input | Type | Required | Description |\n|-------|------|----------|-------------|\n`;
106
+ for (const input of dirInheritance.inheritedInputs) {
107
+ out += `| \`${input.name}\` | \`${fmtType(input.type, input.typeResolved)}\` | ${input.required ? "YES" : ""} | ${input.description || "-"} |\n`;
108
+ }
109
+ out += `\n`;
110
+ }
111
+ out += `#### Outputs (${api.availableOutputs.length})\n\n`;
112
+ out +=
113
+ api.availableOutputs.length === 0
114
+ ? `*This directive has NO outputs.*\n\n`
115
+ : renderOutputsTable(api.availableOutputs);
116
+ if (dirInheritance?.inheritedOutputs.length) {
117
+ out += `#### Inherited Outputs (from ${dirInheritance.baseClass || "base class"}) (${dirInheritance.inheritedOutputs.length})\n\n`;
118
+ out += `| Output | Event Type | Description |\n|--------|------------|-------------|\n`;
119
+ for (const output of dirInheritance.inheritedOutputs) {
120
+ out += `| \`${output.name}\` | \`${fmtType(output.eventType, output.eventTypeResolved)}\` | ${output.description || "-"} |\n`;
121
+ }
122
+ out += `\n`;
123
+ }
124
+ if (dir.publicMethods && dir.publicMethods.length > 0) {
125
+ out += `#### Public Methods\n\n`;
126
+ for (const method of dir.publicMethods) {
127
+ const params = method.parameters
128
+ .map((p) => `${p.name}${p.optional ? "?" : ""}: ${fmtType(p.type, p.typeResolved)}`)
129
+ .join(", ");
130
+ const asyncPrefix = method.isAsync ? "async " : "";
131
+ out += `- \`${asyncPrefix}${method.name}(${params}): ${fmtType(method.returnType, method.returnTypeResolved)}\`\n`;
132
+ }
133
+ out += `\n`;
134
+ }
135
+ if (dir.dependencies && dir.dependencies.length > 0) {
136
+ out += `#### Dependencies\n\n`;
137
+ for (const dep of dir.dependencies) {
138
+ const token = dep.injectionToken ? ` (${dep.injectionToken})` : "";
139
+ out += `- \`${dep.name}: ${fmtType(dep.type, dep.typeResolved)}\`${token}\n`;
140
+ }
141
+ out += `\n`;
142
+ }
143
+ }
144
+ return out;
145
+ }
146
+ function renderPipesSection(pipes) {
147
+ if (pipes.length === 0)
148
+ return "";
149
+ let out = `## Pipes\n\n`;
150
+ out += `| Pipe | Class | Transform | Pure | Standalone |\n`;
151
+ out += `|------|-------|-----------|------|------------|\n`;
152
+ for (const pipe of pipes) {
153
+ const params = pipe.transformMethod?.parameters
154
+ .map((p) => `${p.name}${p.optional ? "?" : ""}: ${fmtType(p.type, p.typeResolved)}`)
155
+ .join(", ") || "value: unknown";
156
+ const returnType = fmtType(pipe.transformMethod?.returnType ?? null, pipe.transformMethod?.returnTypeResolved);
157
+ out += `| \`${pipe.pipeName}\` | \`${pipe.className}\` | \`(${params}) → ${returnType}\` | ${pipe.pure ? "yes" : "no"} | ${pipe.standalone ? "yes" : "no"} |\n`;
158
+ }
159
+ out += `\n`;
160
+ return out;
161
+ }
162
+ // ── Response helpers ──────────────────────────────────────────────
163
+ export function jsonResponse(data) {
164
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
165
+ }
166
+ export function textResponse(text) {
167
+ return { content: [{ type: "text", text }] };
168
+ }
169
+ export function errorResponse(message) {
170
+ return { content: [{ type: "text", text: message }], isError: true };
171
+ }
172
+ export function requireComponent(componentName) {
173
+ const result = resolveComponentName(componentName);
174
+ if ("resolved" in result) {
175
+ return { resolved: result.resolved, matchedSelector: result.matchedSelector };
176
+ }
177
+ if ("suggestions" in result) {
178
+ return {
179
+ error: errorResponse(`Component "${componentName}" not found. Did you mean one of these?\n${result.suggestions
180
+ .map((s) => ` - ${s}`)
181
+ .join("\n")}\n\nUse the exact component name from the list above.`),
182
+ };
183
+ }
184
+ return { error: errorResponse(result.error) };
185
+ }
186
+ // ── Detail-level handlers ───────────────────────────────────────────
187
+ export function handleComponentApi(componentName, selectorFilter) {
188
+ const analyses = getComponentAnalysis(componentName);
189
+ let strictAPIs = [];
190
+ for (const fileAnalysis of analyses) {
191
+ for (const component of fileAnalysis.components) {
192
+ strictAPIs.push(buildStrictAPIFromAnalysis(component));
193
+ }
194
+ }
195
+ if (selectorFilter) {
196
+ strictAPIs = strictAPIs.filter((api) => api.selector === selectorFilter);
197
+ }
198
+ const preloadedEntry = getAnalyzedEntry(componentName);
199
+ const inheritanceMap = preloadedEntry?.inheritance || {};
200
+ const MULTI_SELECTOR_THRESHOLD = 3;
201
+ if (!selectorFilter && strictAPIs.length >= MULTI_SELECTOR_THRESHOLD) {
202
+ let idx = `# ${componentName} — ${strictAPIs.length} sub-components\n\n`;
203
+ idx += `**Import:** \`${getImportPath(componentName)}\`\n\n`;
204
+ idx += `| Selector | Class | Own Inputs | Own Outputs |\n`;
205
+ idx += `|----------|-------|------------|-------------|\n`;
206
+ for (const api of strictAPIs) {
207
+ idx += `| \`<${api.selector}>\` | \`${api.className}\` | ${api.availableInputs.length} | ${api.availableOutputs.length} |\n`;
208
+ }
209
+ idx += `\n`;
210
+ const firstInheritance = Object.values(inheritanceMap).find((inh) => inh.inheritedInputs.length > 0);
211
+ if (firstInheritance) {
212
+ idx += `**Shared inputs** (from ${firstInheritance.baseClass || "base class"}): ${firstInheritance.inheritedInputs
213
+ .map((i) => `\`${i.name}\`: ${fmtType(i.type, i.typeResolved)}`)
214
+ .join(", ")}\n\n`;
215
+ }
216
+ idx += `Use \`get_component\` with a specific selector (e.g. \`${strictAPIs[0].selector}\`) for full API details.\n`;
217
+ return textResponse(idx);
218
+ }
219
+ const displayName = selectorFilter ? `<${selectorFilter}>` : componentName;
220
+ let result = `# API Reference: ${displayName}\n\n`;
221
+ result += `**Import:** \`${getImportPath(componentName)}\`\n\n`;
222
+ result += `---\n\n`;
223
+ result += `## IMPORTANT: Use ONLY the inputs/outputs listed below.\n`;
224
+ result += `Do NOT assume common properties like \`label\`, \`name\`, \`title\` etc. unless explicitly listed.\n\n`;
225
+ for (const api of strictAPIs) {
226
+ result += `## <${api.selector}>\n\n`;
227
+ result += `**Class:** \`${api.className}\`\n\n`;
228
+ if (preloadedEntry?.deprecation) {
229
+ result += `### DEPRECATED\n`;
230
+ if (preloadedEntry.deprecation.reason)
231
+ result += `${preloadedEntry.deprecation.reason}\n`;
232
+ if (preloadedEntry.deprecation.replacement)
233
+ result += `Use \`${preloadedEntry.deprecation.replacement}\` instead.\n`;
234
+ result += `\n`;
235
+ }
236
+ result += `### Available Inputs (${api.availableInputs.length})\n\n`;
237
+ result += renderInputsTable(api.availableInputs);
238
+ const apiInheritance = inheritanceMap[api.className];
239
+ if (apiInheritance?.inheritedInputs.length) {
240
+ result += `### Inherited Inputs (from ${apiInheritance.baseClass || "base class"}) (${apiInheritance.inheritedInputs.length})\n\n`;
241
+ result += `| Input | Type | Required | Description |\n|-------|------|----------|-------------|\n`;
242
+ for (const input of apiInheritance.inheritedInputs) {
243
+ result += `| \`${input.name}\` | \`${fmtType(input.type, input.typeResolved)}\` | ${input.required ? "YES" : ""} | ${input.description || "-"} |\n`;
244
+ }
245
+ result += `\n`;
246
+ }
247
+ result += `### Available Outputs (${api.availableOutputs.length})\n\n`;
248
+ result += renderOutputsTable(api.availableOutputs);
249
+ if (apiInheritance?.inheritedOutputs.length) {
250
+ result += `### Inherited Outputs (from ${apiInheritance.baseClass || "base class"}) (${apiInheritance.inheritedOutputs.length})\n\n`;
251
+ result += `| Output | Event Type | Description |\n|--------|------------|-------------|\n`;
252
+ for (const output of apiInheritance.inheritedOutputs) {
253
+ result += `| \`${output.name}\` | \`${fmtType(output.eventType, output.eventTypeResolved)}\` | ${output.description || "-"} |\n`;
254
+ }
255
+ result += `\n`;
256
+ }
257
+ if (preloadedEntry?.contentProjection && preloadedEntry.contentProjection.length > 0) {
258
+ result += `### Content Projection Slots\n\n`;
259
+ for (const slot of preloadedEntry.contentProjection) {
260
+ result += `- **${slot.name}**`;
261
+ if (slot.selector)
262
+ result += ` (select="${slot.selector}")`;
263
+ result += `\n`;
264
+ }
265
+ result += `\n`;
266
+ }
267
+ if (api.requiredProviders.length > 0) {
268
+ result += `### Required Providers\n\n`;
269
+ for (const provider of api.requiredProviders) {
270
+ result += `- \`${provider}\`\n`;
271
+ }
272
+ result += `\n`;
273
+ }
274
+ }
275
+ result += renderDirectivesSection(collectDirectives(analyses), inheritanceMap);
276
+ result += renderPipesSection(collectPipes(analyses));
277
+ return textResponse(result);
278
+ }
279
+ export function handleComponentFull(componentName) {
280
+ const preloaded = getPreloadedComponentMetadata(componentName);
281
+ if (!preloaded)
282
+ return errorResponse("Error: Metadata not loaded");
283
+ if (preloaded.kind !== "analyzed") {
284
+ return errorResponse(`Component "${componentName}" was not analyzed (kind=${preloaded.kind}): ${preloaded.reason}`);
285
+ }
286
+ let result = `# Deep Dive: ${componentName}\n\n`;
287
+ result += `**Import:** \`${getImportPath(componentName)}\`\n\n`;
288
+ if (preloaded.llmSummary) {
289
+ result += `## Summary\n${preloaded.llmSummary}\n\n`;
290
+ }
291
+ const analyses = getComponentAnalysis(componentName);
292
+ const allStrictAPIs = [];
293
+ for (const fileAnalysis of analyses) {
294
+ for (const component of fileAnalysis.components) {
295
+ allStrictAPIs.push(buildStrictAPIFromAnalysis(component));
296
+ }
297
+ }
298
+ if (allStrictAPIs.length > 0) {
299
+ result += `## IMPORTANT: Use ONLY the inputs/outputs listed below.\n\n`;
300
+ for (const api of allStrictAPIs) {
301
+ result += `## <${api.selector}>\n\n`;
302
+ result += `**Class:** \`${api.className}\`\n\n`;
303
+ if (preloaded.deprecation) {
304
+ result += `### DEPRECATED\n`;
305
+ if (preloaded.deprecation.reason)
306
+ result += `**Reason:** ${preloaded.deprecation.reason}\n`;
307
+ if (preloaded.deprecation.since)
308
+ result += `**Since:** v${preloaded.deprecation.since}\n`;
309
+ if (preloaded.deprecation.replacement)
310
+ result += `**Use instead:** ${preloaded.deprecation.replacement}\n`;
311
+ result += `\n`;
312
+ }
313
+ result += `### Available Inputs (${api.availableInputs.length})\n\n`;
314
+ result += renderInputsTable(api.availableInputs);
315
+ const fullApiInheritance = preloaded.inheritance?.[api.className];
316
+ if (fullApiInheritance?.inheritedInputs.length) {
317
+ result += `### Inherited Inputs (from ${fullApiInheritance.baseClass || "base class"}) (${fullApiInheritance.inheritedInputs.length})\n\n`;
318
+ result += `| Input | Type | Required | Description |\n|-------|------|----------|-------------|\n`;
319
+ for (const input of fullApiInheritance.inheritedInputs) {
320
+ result += `| \`${input.name}\` | \`${fmtType(input.type, input.typeResolved)}\` | ${input.required ? "YES" : ""} | ${input.description || "-"} |\n`;
321
+ }
322
+ result += `\n`;
323
+ }
324
+ result += `### Available Outputs (${api.availableOutputs.length})\n\n`;
325
+ result += renderOutputsTable(api.availableOutputs);
326
+ if (fullApiInheritance?.inheritedOutputs.length) {
327
+ result += `### Inherited Outputs (from ${fullApiInheritance.baseClass || "base class"}) (${fullApiInheritance.inheritedOutputs.length})\n\n`;
328
+ result += `| Output | Event Type | Description |\n|--------|------------|-------------|\n`;
329
+ for (const output of fullApiInheritance.inheritedOutputs) {
330
+ result += `| \`${output.name}\` | \`${fmtType(output.eventType, output.eventTypeResolved)}\` | ${output.description || "-"} |\n`;
331
+ }
332
+ result += `\n`;
333
+ }
334
+ if (preloaded.contentProjection && preloaded.contentProjection.length > 0) {
335
+ result += `### Content Projection Slots\n\n`;
336
+ for (const slot of preloaded.contentProjection) {
337
+ result += `- **${slot.name}**`;
338
+ if (slot.selector)
339
+ result += ` (select="${slot.selector}")`;
340
+ result += `\n`;
341
+ }
342
+ result += `\n`;
343
+ }
344
+ if (api.requiredProviders.length > 0) {
345
+ result += `### Required Providers\n\n`;
346
+ for (const provider of api.requiredProviders) {
347
+ result += `- \`${provider}\`\n`;
348
+ }
349
+ result += `\n`;
350
+ }
351
+ }
352
+ result += `---\n\n`;
353
+ }
354
+ result += renderDirectivesSection(collectDirectives(analyses), preloaded.inheritance);
355
+ result += renderPipesSection(collectPipes(analyses));
356
+ if (preloaded.inheritance && Object.keys(preloaded.inheritance).length > 0) {
357
+ result += `## Inheritance\n\n`;
358
+ for (const [className, inh] of Object.entries(preloaded.inheritance)) {
359
+ result += `**${className}** extends \`${inh.baseClass}\``;
360
+ if (inh.baseClassPath)
361
+ result += ` (\`${inh.baseClassPath}\`)`;
362
+ result += `\n`;
363
+ }
364
+ result += `\n`;
365
+ }
366
+ if (preloaded.configTokens && preloaded.configTokens.length > 0) {
367
+ result += `## Config Tokens\n\n`;
368
+ for (const token of preloaded.configTokens) {
369
+ if (token.kind === "with-config") {
370
+ result += `### Global config key: \`${token.configKey}\` (@WithConfig)\n`;
371
+ result += `**Component:** \`${token.interface}\`\n\n`;
372
+ }
373
+ else {
374
+ result += `### ${token.token}\n`;
375
+ result += `**Interface:** \`${token.interface}\`\n\n`;
376
+ }
377
+ result += `| Property | Type | Optional | Description |\n|----------|------|----------|-------------|\n`;
378
+ for (const prop of token.properties) {
379
+ result += `| \`${prop.name}\` | \`${fmtType(prop.type, prop.typeResolved)}\` | ${prop.optional ? "YES" : ""} | ${prop.description || "-"} |\n`;
380
+ }
381
+ result += `\n`;
382
+ if (token.defaultValues) {
383
+ result += `**Defaults:**\n\`\`\`json\n${JSON.stringify(token.defaultValues, null, 2)}\n\`\`\`\n\n`;
384
+ }
385
+ if (token.kind === "with-config") {
386
+ result += `**Global config usage:** these inputs fall back to the global config when not bound in the template:\n`;
387
+ result += `\`\`\`typescript\nprovideNzConfig({ ${token.configKey}: { ${token.properties[0]?.name ?? "..."}: /* value */ } })\n\`\`\`\n\n`;
388
+ }
389
+ else {
390
+ result += `**Provider usage:**\n\`\`\`typescript\nproviders: [{ provide: ${token.token}, useValue: { ...config } }]\n\`\`\`\n\n`;
391
+ }
392
+ }
393
+ }
394
+ if (preloaded.relatedComponents && preloaded.relatedComponents.length > 0) {
395
+ result += `## Related Components\n\n`;
396
+ for (const rel of preloaded.relatedComponents) {
397
+ result += `- **${rel.name}** (${rel.relationship}): ${rel.reason}\n`;
398
+ }
399
+ result += `\n`;
400
+ }
401
+ if ((preloaded.importedBy && preloaded.importedBy.length > 0) ||
402
+ (preloaded.importsFrom && preloaded.importsFrom.length > 0)) {
403
+ result += `## Dependency Graph\n\n`;
404
+ if (preloaded.importsFrom && preloaded.importsFrom.length > 0)
405
+ result += `**Imports from:** ${preloaded.importsFrom.join(", ")}\n`;
406
+ if (preloaded.importedBy && preloaded.importedBy.length > 0)
407
+ result += `**Imported by:** ${preloaded.importedBy.join(", ")}\n`;
408
+ result += `\n`;
409
+ }
410
+ if (preloaded.commonPatterns && preloaded.commonPatterns.length > 0) {
411
+ result += `## Usage Patterns\n\n`;
412
+ for (const pattern of preloaded.commonPatterns) {
413
+ result += `- ${pattern}\n`;
414
+ }
415
+ result += `\n`;
416
+ }
417
+ if (preloaded.readme) {
418
+ result += `## README\n\n${preloaded.readme}\n\n`;
419
+ }
420
+ return textResponse(result);
421
+ }
422
+ export function handleComponentExamples(componentName) {
423
+ const preloaded = getPreloadedComponentMetadata(componentName);
424
+ if (!preloaded)
425
+ return errorResponse("Error: Metadata not loaded");
426
+ if (preloaded.kind !== "analyzed") {
427
+ return errorResponse(`Component "${componentName}" was not analyzed (kind=${preloaded.kind}): ${preloaded.reason}`);
428
+ }
429
+ let result = `# Usage Patterns: ${componentName}\n\n`;
430
+ if (preloaded.examples.length > 0) {
431
+ result += `## Curated Examples\n\n`;
432
+ for (const example of preloaded.examples) {
433
+ result += `### ${example.name}: ${example.description}\n\n`;
434
+ if (example.template)
435
+ result += `\`\`\`html\n${example.template}\n\`\`\`\n\n`;
436
+ if (example.typescript)
437
+ result += `\`\`\`typescript\n${example.typescript}\n\`\`\`\n\n`;
438
+ }
439
+ }
440
+ if (preloaded.storybookExamples && preloaded.storybookExamples.length > 0) {
441
+ result += `## Storybook Examples (auto-extracted)\n\n`;
442
+ for (const story of preloaded.storybookExamples) {
443
+ result += `### ${story.storyName}\n\n\`\`\`html\n${story.template}\n\`\`\`\n\n`;
444
+ if (Object.keys(story.args).length > 0)
445
+ result += `**Default args:** ${JSON.stringify(story.args)}\n`;
446
+ if (story.argTypes) {
447
+ for (const [argName, argType] of Object.entries(story.argTypes)) {
448
+ if (argType.options)
449
+ result += `**${argName} options:** ${argType.options.join(", ")}\n`;
450
+ }
451
+ }
452
+ result += `\n`;
453
+ }
454
+ }
455
+ if (preloaded.commonPatterns && preloaded.commonPatterns.length > 0) {
456
+ result += `## Common Patterns\n\n`;
457
+ for (const pattern of preloaded.commonPatterns)
458
+ result += `- ${pattern}\n`;
459
+ result += `\n`;
460
+ }
461
+ if (preloaded.relatedComponents && preloaded.relatedComponents.length > 0) {
462
+ result += `## Related Components\n\n`;
463
+ for (const rel of preloaded.relatedComponents)
464
+ result += `- **${rel.name}** (${rel.relationship}): ${rel.reason}\n`;
465
+ result += `\n`;
466
+ }
467
+ if (preloaded.configTokens && preloaded.configTokens.length > 0) {
468
+ result += `## Configuration\n\n`;
469
+ for (const token of preloaded.configTokens) {
470
+ if (token.kind === "with-config") {
471
+ result += `Inputs of \`${token.interface}\` marked @WithConfig fall back to the global config key \`${token.configKey}\` (${token.properties.map((p) => p.name).join(", ")}).\n`;
472
+ if (token.defaultValues)
473
+ result += `Defaults: \`${JSON.stringify(token.defaultValues)}\`\n`;
474
+ result += `\`\`\`typescript\nprovideNzConfig({ ${token.configKey}: { ...config } })\n\`\`\`\n`;
475
+ }
476
+ else {
477
+ result += `Use \`${token.token}\` InjectionToken with interface \`${token.interface}\` to configure.\n`;
478
+ if (token.defaultValues)
479
+ result += `Defaults: \`${JSON.stringify(token.defaultValues)}\`\n`;
480
+ result += `\`\`\`typescript\nproviders: [{ provide: ${token.token}, useValue: { ...config } }]\n\`\`\`\n`;
481
+ }
482
+ }
483
+ result += `\n`;
484
+ }
485
+ return textResponse(result);
486
+ }
487
+ export function handleComponentTypes(componentName, selectorFilter) {
488
+ const analyses = getComponentAnalysis(componentName);
489
+ const displayName = selectorFilter ? `<${selectorFilter}>` : componentName;
490
+ let result = `# Types: ${displayName}\n\n`;
491
+ result += `**Import:** \`${getImportPath(componentName).replace("{ ... }", "TypeName")}\`\n\n`;
492
+ const allTypes = [];
493
+ for (const fileAnalysis of analyses) {
494
+ allTypes.push(...fileAnalysis.exportedTypes);
495
+ for (const component of fileAnalysis.components) {
496
+ if (selectorFilter && component.metadata.selector !== selectorFilter)
497
+ continue;
498
+ allTypes.push(...component.exportedTypes);
499
+ }
500
+ for (const directive of fileAnalysis.directives || []) {
501
+ allTypes.push(...directive.exportedTypes);
502
+ }
503
+ }
504
+ if (allTypes.length === 0) {
505
+ result += `*No exported types found in this component.*\n`;
506
+ }
507
+ else {
508
+ for (const type of allTypes) {
509
+ result += `## ${type.kind} ${type.name}\n\n\`\`\`typescript\n${type.definition}\n\`\`\`\n\n`;
510
+ }
511
+ }
512
+ return textResponse(result);
513
+ }
514
+ // ── Search result formatting ──────────────────────────────────────
515
+ export function formatSelectorHints(selectors, match) {
516
+ if (match.matchedSelector) {
517
+ let hints = `**Matched Selector:** \`<${match.matchedSelector}>\` → use \`get_component("${match.matchedSelector}")\` for full API\n`;
518
+ const otherSelectors = selectors.filter((s) => s !== match.matchedSelector);
519
+ if (otherSelectors.length > 0)
520
+ hints += `**Other Selectors:** ${otherSelectors.map((s) => `\`<${s}>\``).join(", ")}\n`;
521
+ return hints;
522
+ }
523
+ if (selectors.length === 1)
524
+ return `**Selector:** \`<${selectors[0]}>\` → use \`get_component("${selectors[0]}")\` for full API\n`;
525
+ if (selectors.length > 1)
526
+ return `**Selectors:** ${selectors.map((s) => `\`<${s}>\``).join(", ")}\n`;
527
+ return "";
528
+ }
529
+ export function formatSearchResultEntry(match) {
530
+ const preloaded = getAnalyzedEntry(match.name);
531
+ const selectors = extractSelectors(preloaded);
532
+ const { directives, pipes } = countDirectivesAndPipes(preloaded);
533
+ let section = `## ${match.name}`;
534
+ if (preloaded?.deprecation)
535
+ section += ` (DEPRECATED)`;
536
+ section += `\n`;
537
+ section += formatSelectorHints(selectors, match);
538
+ section += `**Match:** ${match.reasons.join(", ")} (score: ${match.score})\n`;
539
+ if (preloaded?.llmSummary) {
540
+ section += `**Summary:** ${preloaded.llmSummary}`;
541
+ if (directives > 0 || pipes > 0) {
542
+ const parts = [];
543
+ if (directives > 0)
544
+ parts.push(`${directives} directive${directives !== 1 ? "s" : ""}`);
545
+ if (pipes > 0)
546
+ parts.push(`${pipes} pipe${pipes !== 1 ? "s" : ""}`);
547
+ section += ` (+ ${parts.join(", ")})`;
548
+ }
549
+ section += `\n`;
550
+ }
551
+ const basicExample = preloaded?.examples?.find((e) => e.name === "basic");
552
+ if (basicExample?.template)
553
+ section += `\n\`\`\`html\n${basicExample.template}\n\`\`\`\n`;
554
+ section += `\n---\n\n`;
555
+ return section;
556
+ }
557
+ export function formatSearchFooter(topResults) {
558
+ const exampleSelectors = topResults
559
+ .filter((m) => m.matchedSelector)
560
+ .map((m) => `\`${m.matchedSelector}\``)
561
+ .slice(0, 3);
562
+ const selectorHint = exampleSelectors.length > 0 ? `e.g. ${exampleSelectors.join(", ")}` : `e.g. a component selector`;
563
+ return `Use \`get_component\` with the **selector** (${selectorHint}) for full API details.\n`;
564
+ }
565
+ export function handleComponentSearch(query, components) {
566
+ const metadataMap = buildSearchMetadataMap(components);
567
+ const options = getSearchOptions();
568
+ const scored = searchComponents(query, components, metadataMap, options);
569
+ const topResults = scored.slice(0, 5);
570
+ if (topResults.length === 0) {
571
+ return textResponse(`No components found for "${query}".\n\nTry more specific terms.\n\nAll components:\n${components.join(", ")}`);
572
+ }
573
+ let result = `# Search Results for "${query}"\n\n`;
574
+ for (const match of topResults)
575
+ result += formatSearchResultEntry(match);
576
+ result += formatSearchFooter(topResults);
577
+ return textResponse(result);
578
+ }
579
+ export function handleComponentListing(components, listAll) {
580
+ let result = `# Available Components (${components.length})\n\n`;
581
+ for (const compName of components) {
582
+ const preloaded = getAnalyzedEntry(compName);
583
+ const selectors = extractSelectors(preloaded);
584
+ const { directives, pipes } = countDirectivesAndPipes(preloaded);
585
+ result += `- **${compName}**`;
586
+ if (selectors.length === 1)
587
+ result += ` \`<${selectors[0]}>\``;
588
+ else if (selectors.length > 1)
589
+ result += ` ${selectors.map((s) => `\`<${s}>\``).join(", ")}`;
590
+ if (directives > 0 || pipes > 0) {
591
+ const parts = [];
592
+ if (directives > 0)
593
+ parts.push(`${directives} directive${directives !== 1 ? "s" : ""}`);
594
+ if (pipes > 0)
595
+ parts.push(`${pipes} pipe${pipes !== 1 ? "s" : ""}`);
596
+ result += ` (+ ${parts.join(", ")})`;
597
+ }
598
+ if (preloaded?.deprecation)
599
+ result += ` (DEPRECATED)`;
600
+ if (preloaded?.llmSummary && !listAll)
601
+ result += ` — ${preloaded.llmSummary}`;
602
+ result += `\n`;
603
+ }
604
+ result += `\nUse \`get_component\` for full details on any component.\n`;
605
+ return textResponse(result);
606
+ }
607
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/domain/formatters.ts"],"names":[],"mappings":"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"}