mcp-ai-agent-guidelines 0.1.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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +336 -0
  3. package/dist/index.d.ts +10 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +307 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/prompts/index.d.ts +21 -0
  8. package/dist/prompts/index.d.ts.map +1 -0
  9. package/dist/prompts/index.js +504 -0
  10. package/dist/prompts/index.js.map +1 -0
  11. package/dist/resources/index.d.ts +14 -0
  12. package/dist/resources/index.d.ts.map +1 -0
  13. package/dist/resources/index.js +92 -0
  14. package/dist/resources/index.js.map +1 -0
  15. package/dist/resources/structured.d.ts +47 -0
  16. package/dist/resources/structured.d.ts.map +1 -0
  17. package/dist/resources/structured.js +857 -0
  18. package/dist/resources/structured.js.map +1 -0
  19. package/dist/tools/code-hygiene-analyzer.d.ts +7 -0
  20. package/dist/tools/code-hygiene-analyzer.d.ts.map +1 -0
  21. package/dist/tools/code-hygiene-analyzer.js +176 -0
  22. package/dist/tools/code-hygiene-analyzer.js.map +1 -0
  23. package/dist/tools/config/guidelines-config.d.ts +16 -0
  24. package/dist/tools/config/guidelines-config.d.ts.map +1 -0
  25. package/dist/tools/config/guidelines-config.js +236 -0
  26. package/dist/tools/config/guidelines-config.js.map +1 -0
  27. package/dist/tools/config/model-config.d.ts +33 -0
  28. package/dist/tools/config/model-config.d.ts.map +1 -0
  29. package/dist/tools/config/model-config.js +206 -0
  30. package/dist/tools/config/model-config.js.map +1 -0
  31. package/dist/tools/guidelines-validator.d.ts +7 -0
  32. package/dist/tools/guidelines-validator.d.ts.map +1 -0
  33. package/dist/tools/guidelines-validator.js +178 -0
  34. package/dist/tools/guidelines-validator.js.map +1 -0
  35. package/dist/tools/hierarchical-prompt-builder.d.ts +7 -0
  36. package/dist/tools/hierarchical-prompt-builder.d.ts.map +1 -0
  37. package/dist/tools/hierarchical-prompt-builder.js +147 -0
  38. package/dist/tools/hierarchical-prompt-builder.js.map +1 -0
  39. package/dist/tools/memory-context-optimizer.d.ts +7 -0
  40. package/dist/tools/memory-context-optimizer.d.ts.map +1 -0
  41. package/dist/tools/memory-context-optimizer.js +256 -0
  42. package/dist/tools/memory-context-optimizer.js.map +1 -0
  43. package/dist/tools/mermaid-diagram-generator.d.ts +7 -0
  44. package/dist/tools/mermaid-diagram-generator.d.ts.map +1 -0
  45. package/dist/tools/mermaid-diagram-generator.js +312 -0
  46. package/dist/tools/mermaid-diagram-generator.js.map +1 -0
  47. package/dist/tools/model-compatibility-checker.d.ts +7 -0
  48. package/dist/tools/model-compatibility-checker.d.ts.map +1 -0
  49. package/dist/tools/model-compatibility-checker.js +204 -0
  50. package/dist/tools/model-compatibility-checker.js.map +1 -0
  51. package/dist/tools/sprint-timeline-calculator.d.ts +7 -0
  52. package/dist/tools/sprint-timeline-calculator.d.ts.map +1 -0
  53. package/dist/tools/sprint-timeline-calculator.js +240 -0
  54. package/dist/tools/sprint-timeline-calculator.js.map +1 -0
  55. package/package.json +75 -0
@@ -0,0 +1,256 @@
1
+ import { z } from "zod";
2
+ const MemoryOptimizationSchema = z.object({
3
+ contextContent: z.string(),
4
+ maxTokens: z.number().optional(),
5
+ cacheStrategy: z.enum(["aggressive", "conservative", "balanced"]).optional(),
6
+ includeReferences: z.boolean().optional().default(true),
7
+ language: z.string().optional(),
8
+ includeMetadata: z.boolean().optional().default(true),
9
+ inputFile: z.string().optional(),
10
+ });
11
+ export async function memoryContextOptimizer(args) {
12
+ const input = MemoryOptimizationSchema.parse(args);
13
+ const optimization = optimizeMemoryContext(input);
14
+ const references = input.includeReferences
15
+ ? [
16
+ "- Prompt Caching overview (Anthropic): https://www.anthropic.com/news/prompt-caching",
17
+ "- Anthropic docs on caching: https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching",
18
+ "- Token usage optimization tips: https://caylent.com/blog/prompt-caching-saving-time-and-money-in-llm-applications",
19
+ ].join("\n")
20
+ : undefined;
21
+ const fence = input.language ? input.language.toLowerCase() : "";
22
+ const segmentsList = optimization.cacheSegments.length
23
+ ? optimization.cacheSegments
24
+ .map((s, i) => `${i + 1}. **${s.type}** (${s.tokens} tokens): ${s.description}`)
25
+ .join("\n")
26
+ : "";
27
+ const segmentsTable = optimization.cacheSegments.length
28
+ ? `\n#### Cache Segment Table\n| # | Type | Tokens | Purpose |\n|---:|---|---:|---|\n${optimization.cacheSegments
29
+ .map((s, i) => `| ${i + 1} | ${s.type} | ${s.tokens} | ${s.description} |`)
30
+ .join("\n")}`
31
+ : "";
32
+ const pie = (() => {
33
+ const total = optimization.cacheSegments.reduce((acc, s) => acc + (s.tokens || 0), 0);
34
+ if (!total)
35
+ return "";
36
+ const lines = optimization.cacheSegments
37
+ .map((s) => ` "${s.type}" : ${Math.max(0, s.tokens || 0)}`)
38
+ .join("\n");
39
+ return `\n#### Mermaid: Cache Tokens by Segment\n\n\`\`\`mermaid\npie showData\n title Cache Tokens by Segment\n${lines}\n\`\`\``;
40
+ })();
41
+ const usage = fence === "python"
42
+ ? `\`\`\`python\n# Example: prepare concise context and request optimization\ncontext = "Python repo. Fix security issues; add validation and logging. Key: UserManager, calculate_discount, process_user_data."\n# In an MCP call, pass as { contextContent: context, cacheStrategy: 'balanced', language: 'python' }\n# This tool returns a Markdown report with an optimized context block.\n\`\`\``
43
+ : `\`\`\`ts\n// Example: prepare concise context and request optimization\nconst context = "Python repo. Fix security issues; add validation and logging. Key: UserManager, calculate_discount, process_user_data.";\n// In an MCP call, pass as { contextContent: context, cacheStrategy: 'balanced', language: 'typescript' }\n// This tool returns a Markdown report with an optimized context block.\n\`\`\``;
44
+ const metadata = input.includeMetadata
45
+ ? [
46
+ "### Metadata",
47
+ `- Updated: ${new Date().toISOString().slice(0, 10)}`,
48
+ "- Source tool: mcp_ai-agent-guid_memory-context-optimizer",
49
+ input.inputFile ? `- Input file: ${input.inputFile}` : undefined,
50
+ "",
51
+ ]
52
+ .filter(Boolean)
53
+ .join("\n")
54
+ : "";
55
+ const text = `## 🧠 Memory Context Optimization Report
56
+
57
+ ${metadata}
58
+
59
+ ### 🔎 Input Analysis
60
+ - **Original Length**: ${input.contextContent.length} characters
61
+ - **Estimated Tokens**: ~${Math.ceil(input.contextContent.length / 4)}
62
+ - **Max Tokens Limit**: ${input.maxTokens || "Not specified"}
63
+ - **Cache Strategy**: ${input.cacheStrategy || "balanced"}
64
+
65
+ ### ✅ Optimization Results
66
+ - **Optimized Length**: ${optimization.optimizedContent.length} characters
67
+ - **Estimated Tokens**: ~${Math.ceil(optimization.optimizedContent.length / 4)}
68
+ - **Reduction**: ${optimization.reductionPercentage}%
69
+ - **Cache Segments**: ${optimization.cacheSegments.length}
70
+
71
+ ### 📊 Summary
72
+ | Metric | Value |
73
+ |---|---|
74
+ | Original Length | ${input.contextContent.length} chars |
75
+ | Original Tokens (est.) | ~${Math.ceil(input.contextContent.length / 4)} |
76
+ | Optimized Length | ${optimization.optimizedContent.length} chars |
77
+ | Optimized Tokens (est.) | ~${Math.ceil(optimization.optimizedContent.length / 4)} |
78
+ | Reduction | ${optimization.reductionPercentage}% |
79
+ | Cache Strategy | ${optimization.cacheStrategy} |
80
+ | Max Tokens | ${input.maxTokens || "Not specified"} |
81
+ | Cache Segments | ${optimization.cacheSegments.length} |
82
+
83
+ ### ✂️ Optimized Content
84
+ \`\`\`${fence}
85
+ ${optimization.optimizedContent}
86
+ \`\`\`
87
+
88
+ ### 🧩 Caching Strategy
89
+ ${(input.cacheStrategy || "balanced") === "aggressive"
90
+ ? "**Aggressive Caching**: Maximizes cache usage, suitable for repetitive contexts"
91
+ : (input.cacheStrategy || "balanced") === "conservative"
92
+ ? "**Conservative Caching**: Minimal caching, preserves most context freshness"
93
+ : "**Balanced Caching**: Optimizes between cache efficiency and context freshness"}
94
+
95
+ ${optimization.cacheSegments.length ? `### 🧱 Cache Segments\n${segmentsList}\n${segmentsTable}\n${pie}\n` : ""}
96
+
97
+ ### 🔧 Implementation Tips
98
+ 1. **Use prompt caching** for repeated system messages and tool definitions
99
+ 2. **Implement conversation summarization** for long sessions
100
+ 3. **Clear unnecessary context** periodically to reduce token usage
101
+ 4. **Prioritize recent context** over older conversation history
102
+ 5. **Cache static resources** like guidelines and templates
103
+
104
+ ### 🧭 Memory Management Best Practices
105
+ - Monitor token usage in real-time
106
+ - Implement automatic context compression when approaching limits
107
+ - Use structured data formats to reduce token overhead
108
+ - Leverage semantic similarity to identify redundant information
109
+ - Implement rolling window approach for conversation history
110
+ ${references ? `\n### References\n${references}\n` : ""}
111
+
112
+ ### 📁 Files
113
+ - Source tool: src/tools/memory-context-optimizer.ts
114
+ - Demo output: demos/demo-code-analysis.memory-optimizer.md
115
+
116
+ ### 🚀 Quick Usage Example
117
+ ${usage}
118
+
119
+ ### ⚠️ Disclaimer
120
+ - Caching effectiveness and token estimates vary by provider and model. Validate in your environment.
121
+ `;
122
+ return { content: [{ type: "text", text }] };
123
+ }
124
+ function optimizeMemoryContext(input) {
125
+ const { contextContent, maxTokens, cacheStrategy = "balanced" } = input;
126
+ let optimizedContent = contextContent;
127
+ const cacheSegments = [];
128
+ // Preserve code formatting for likely code blocks
129
+ const looksLikeCode = /\b(class |def |function |import |const |let |{ |}\s*$)/m.test(contextContent);
130
+ if (!looksLikeCode) {
131
+ optimizedContent = optimizedContent.replace(/\s+/g, " ").trim();
132
+ }
133
+ const systemPrompts = extractSystemPrompts(optimizedContent);
134
+ const toolDefinitions = extractToolDefinitions(optimizedContent);
135
+ const staticResources = extractStaticResources(optimizedContent);
136
+ switch (cacheStrategy) {
137
+ case "aggressive": {
138
+ if (systemPrompts.length > 0) {
139
+ cacheSegments.push({
140
+ type: "System Prompts",
141
+ tokens: Math.ceil(systemPrompts.join(" ").length / 4),
142
+ description: "Cached system-level instructions and guidelines",
143
+ });
144
+ }
145
+ if (toolDefinitions.length > 0) {
146
+ cacheSegments.push({
147
+ type: "Tool Definitions",
148
+ tokens: Math.ceil(toolDefinitions.join(" ").length / 4),
149
+ description: "Cached tool schemas and descriptions",
150
+ });
151
+ }
152
+ if (staticResources.length > 0) {
153
+ cacheSegments.push({
154
+ type: "Static Resources",
155
+ tokens: Math.ceil(staticResources.join(" ").length / 4),
156
+ description: "Cached documentation and reference materials",
157
+ });
158
+ }
159
+ break;
160
+ }
161
+ case "conservative": {
162
+ if (systemPrompts.length > 0) {
163
+ cacheSegments.push({
164
+ type: "Core System Prompt",
165
+ tokens: Math.ceil((systemPrompts[0] || "").length / 4),
166
+ description: "Primary system instructions only",
167
+ });
168
+ }
169
+ break;
170
+ }
171
+ default: {
172
+ if (systemPrompts.length > 0) {
173
+ cacheSegments.push({
174
+ type: "System Prompts",
175
+ tokens: Math.ceil(systemPrompts.join(" ").length / 4),
176
+ description: "System-level instructions and core guidelines",
177
+ });
178
+ }
179
+ if (toolDefinitions.length > 0) {
180
+ cacheSegments.push({
181
+ type: "Tool Definitions",
182
+ tokens: Math.ceil(toolDefinitions.join(" ").length / 4),
183
+ description: "Tool schemas and function descriptions",
184
+ });
185
+ }
186
+ break;
187
+ }
188
+ }
189
+ if (maxTokens) {
190
+ const currentTokens = Math.ceil(optimizedContent.length / 4);
191
+ if (currentTokens > maxTokens) {
192
+ const targetLength = maxTokens * 4;
193
+ optimizedContent = intelligentTruncate(optimizedContent, targetLength);
194
+ }
195
+ }
196
+ const originalLength = contextContent.length;
197
+ const optimizedLength = optimizedContent.length;
198
+ const reductionPercentage = Math.round((1 - optimizedLength / originalLength) * 100);
199
+ return {
200
+ optimizedContent,
201
+ reductionPercentage,
202
+ cacheSegments,
203
+ cacheStrategy,
204
+ };
205
+ }
206
+ function extractSystemPrompts(content) {
207
+ const patterns = [
208
+ /You are a[^.]+\./gi,
209
+ /System:[^\n]+/gi,
210
+ /Instructions:[^\n]+/gi,
211
+ ];
212
+ const results = [];
213
+ patterns.forEach((p) => {
214
+ const m = content.match(p);
215
+ if (m)
216
+ results.push(...m);
217
+ });
218
+ return results;
219
+ }
220
+ function extractToolDefinitions(content) {
221
+ const patterns = [
222
+ /function\s+\w+[^}]+}/gi,
223
+ /tool\s*:\s*[^\n]+/gi,
224
+ /"name"\s*:\s*"[^"]+"/gi,
225
+ ];
226
+ const results = [];
227
+ patterns.forEach((p) => {
228
+ const m = content.match(p);
229
+ if (m)
230
+ results.push(...m);
231
+ });
232
+ return results;
233
+ }
234
+ function extractStaticResources(content) {
235
+ const patterns = [/# [A-Z][^\n]+/g, /## [A-Z][^\n]+/g, /- [A-Z][^\n]+/g];
236
+ const results = [];
237
+ patterns.forEach((p) => {
238
+ const m = content.match(p);
239
+ if (m)
240
+ results.push(...m);
241
+ });
242
+ return results;
243
+ }
244
+ function intelligentTruncate(content, targetLength) {
245
+ if (content.length <= targetLength)
246
+ return content;
247
+ const sentences = content.split(/[.!?]+/);
248
+ let truncated = "";
249
+ for (const sentence of sentences) {
250
+ if ((truncated + sentence).length > targetLength)
251
+ break;
252
+ truncated += `${sentence}. `;
253
+ }
254
+ return truncated.trim() || content.substring(0, targetLength);
255
+ }
256
+ //# sourceMappingURL=memory-context-optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-context-optimizer.js","sourceRoot":"","sources":["../../src/tools/memory-context-optimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function mermaidDiagramGenerator(args: unknown): Promise<{
2
+ content: {
3
+ type: string;
4
+ text: string;
5
+ }[];
6
+ }>;
7
+ //# sourceMappingURL=mermaid-diagram-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-diagram-generator.d.ts","sourceRoot":"","sources":["../../src/tools/mermaid-diagram-generator.ts"],"names":[],"mappings":"AA+CA,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,OAAO;;;;;GAoF1D"}
@@ -0,0 +1,312 @@
1
+ import { z } from "zod";
2
+ async function validateDiagram(code) {
3
+ try {
4
+ // dynamic import keeps tool lightweight if mermaid not installed
5
+ const mermaid = await import("mermaid");
6
+ // mermaid.parse will throw on error
7
+ // Some versions expose parse async; wrap in Promise.resolve
8
+ // @ts-ignore
9
+ await Promise.resolve(mermaid.parse(code));
10
+ return { valid: true };
11
+ }
12
+ catch (err) {
13
+ const msg = err.message || String(err);
14
+ // If mermaid is not installed/available, skip validation but allow diagram output
15
+ if (/Cannot find module 'mermaid'|Cannot use import statement|module not found/i.test(msg)) {
16
+ return { valid: true, skipped: true };
17
+ }
18
+ return { valid: false, error: msg };
19
+ }
20
+ }
21
+ const MermaidDiagramSchema = z.object({
22
+ description: z.string(),
23
+ diagramType: z.enum([
24
+ "flowchart",
25
+ "sequence",
26
+ "class",
27
+ "state",
28
+ "gantt",
29
+ "pie",
30
+ ]),
31
+ theme: z.string().optional(),
32
+ strict: z.boolean().optional().default(true), // if true, never emit invalid diagram; fallback if needed
33
+ repair: z.boolean().optional().default(true), // attempt auto-repair on failure
34
+ // Accessibility metadata (added as Mermaid comments to avoid requiring specific Mermaid versions)
35
+ accTitle: z.string().optional(),
36
+ accDescr: z.string().optional(),
37
+ });
38
+ export async function mermaidDiagramGenerator(args) {
39
+ const input = MermaidDiagramSchema.parse(args);
40
+ let diagram = generateMermaidDiagram(input);
41
+ // Prepend accessibility comments if provided
42
+ const accLines = [];
43
+ if (input.accTitle)
44
+ accLines.push(`%% AccTitle: ${input.accTitle} %%`);
45
+ if (input.accDescr)
46
+ accLines.push(`%% AccDescr: ${input.accDescr} %%`);
47
+ if (accLines.length) {
48
+ diagram = [accLines.join("\n"), diagram].join("\n");
49
+ }
50
+ let validation = await validateDiagram(diagram);
51
+ let repaired = false;
52
+ if (!validation.valid && input.repair) {
53
+ const attempt = repairDiagram(diagram);
54
+ if (attempt !== diagram) {
55
+ diagram = attempt;
56
+ validation = await validateDiagram(diagram);
57
+ repaired = validation.valid;
58
+ }
59
+ }
60
+ if (!validation.valid && input.strict) {
61
+ // Provide safe fallback minimal valid diagram
62
+ diagram = fallbackDiagram();
63
+ validation = await validateDiagram(diagram); // should pass; if not, still return with flag
64
+ }
65
+ const validityNote = validation.valid
66
+ ? validation.skipped
67
+ ? `ℹ️ Validation skipped (mermaid not available). Diagram generated.`
68
+ : `✅ Diagram validated successfully${repaired ? " (after auto-repair)" : ""}.`
69
+ : `❌ Diagram invalid even after attempts: ${validation.error}`;
70
+ const feedback = validation.valid
71
+ ? ""
72
+ : [
73
+ "### Feedback Loop",
74
+ "- Try simplifying node labels (avoid punctuation that Mermaid may misparse)",
75
+ "- Ensure a single diagram header (e.g., 'flowchart TD')",
76
+ "- Replace complex punctuation with plain words",
77
+ "- If describing a pipeline, try a simpler 5-step flow and add branches gradually",
78
+ ].join("\n");
79
+ return {
80
+ content: [
81
+ {
82
+ type: "text",
83
+ text: [
84
+ "## Generated Mermaid Diagram",
85
+ "",
86
+ "### Description",
87
+ input.description,
88
+ "",
89
+ "### Diagram Code",
90
+ "```mermaid",
91
+ diagram,
92
+ "```",
93
+ "",
94
+ "### Accessibility",
95
+ input.accTitle || input.accDescr
96
+ ? [
97
+ input.accTitle ? `- Title: ${input.accTitle}` : undefined,
98
+ input.accDescr ? `- Description: ${input.accDescr}` : undefined,
99
+ ]
100
+ .filter(Boolean)
101
+ .join("\n")
102
+ : "- You can provide accTitle and accDescr to improve screen reader context.",
103
+ "",
104
+ "### Validation",
105
+ validityNote,
106
+ feedback,
107
+ "",
108
+ "### Generation Settings",
109
+ `Type: ${input.diagramType}`,
110
+ `Strict: ${input.strict}`,
111
+ `Repair: ${input.repair}`,
112
+ "",
113
+ "### Usage Instructions",
114
+ "1. Copy the Mermaid code above",
115
+ "2. Paste it into any Mermaid-enabled Markdown renderer or the Live Editor",
116
+ "3. Adjust styling, layout, or relationships as needed",
117
+ "",
118
+ "### Notes",
119
+ "Repair heuristics: classDef style tokens normalized, ensures colon syntax, fallback to minimal diagram if unrecoverable.",
120
+ ].join("\n"),
121
+ },
122
+ ],
123
+ };
124
+ }
125
+ function repairDiagram(diagram) {
126
+ let repaired = diagram;
127
+ // Normalize classDef syntax (convert fill= to fill: etc.)
128
+ repaired = repaired.replace(/classDef (\w+) ([^\n;]+);?/g, (_m, name, body) => {
129
+ const fixed = body
130
+ .split(/[, ]+/)
131
+ .filter(Boolean)
132
+ .map((pair) => pair.replace(/=/g, ":"))
133
+ .join(",");
134
+ return `classDef ${name} ${fixed};`;
135
+ });
136
+ // Ensure flowchart header present
137
+ if (!/^\s*flowchart /.test(repaired) && /\bflowchart\b/.test(repaired)) {
138
+ repaired = `flowchart TD\n${repaired}`;
139
+ }
140
+ return repaired;
141
+ }
142
+ function fallbackDiagram() {
143
+ return [
144
+ "flowchart TD",
145
+ "A([Start]) --> B[Fallback Diagram]",
146
+ "B --> C([End])",
147
+ ].join("\n");
148
+ }
149
+ function generateMermaidDiagram(input) {
150
+ const { description, diagramType, theme } = input;
151
+ switch (diagramType) {
152
+ case "flowchart":
153
+ return generateFlowchart(description, theme);
154
+ case "sequence":
155
+ return generateSequenceDiagram(description, theme);
156
+ case "class":
157
+ return generateClassDiagram(description, theme);
158
+ case "state":
159
+ return generateStateDiagram(description, theme);
160
+ case "gantt":
161
+ return generateGanttChart(description, theme);
162
+ case "pie":
163
+ return generatePieChart(description, theme);
164
+ default:
165
+ return generateFlowchart(description, theme);
166
+ }
167
+ }
168
+ function generateFlowchart(description, theme) {
169
+ const steps = extractSteps(description);
170
+ const lines = ["flowchart TD"];
171
+ if (theme)
172
+ lines.unshift(`%%{init: {'theme':'${theme}'}}%%`);
173
+ if (!steps.length) {
174
+ // Provide a simple user->system->processor->output pipeline if description lacks clear steps
175
+ lines.push("U([User]) --> R[Read users.json]", "R --> P[Filter active users with permissions]", "P --> A[Append to result]", "A --> O([Summary Output])");
176
+ return lines.join("\n");
177
+ }
178
+ // Build main chain with optional branching for filter step
179
+ let offset = 0;
180
+ for (let i = 0; i < steps.length; i++) {
181
+ const id = String.fromCharCode(65 + i + offset);
182
+ const label = steps[i];
183
+ const isFilter = /filter .*active .*users/i.test(label);
184
+ const decisionLike = /(decision|choose|\?)/i.test(label) || isFilter;
185
+ if (isFilter) {
186
+ // Create decision node with yes/no branches
187
+ lines.push(`${id}{${label}?}`);
188
+ const yesId = String.fromCharCode(65 + i + 1 + offset);
189
+ const noId = String.fromCharCode(65 + i + 2 + offset);
190
+ lines.push(`${id} -->|Yes| ${yesId}[Append to result]`);
191
+ lines.push(`${id} -->|No| ${noId}[Skip]`);
192
+ // Advance offset because we injected two extra nodes
193
+ offset += 2;
194
+ const nextId = String.fromCharCode(65 + i + 1 + offset);
195
+ if (i < steps.length - 1) {
196
+ lines.push(`${yesId} --> ${nextId}`);
197
+ lines.push(`${noId} --> ${nextId}`);
198
+ }
199
+ }
200
+ else {
201
+ lines.push(decisionLike ? `${id}{${label}}` : `${id}[${label}]`);
202
+ if (i < steps.length - 1) {
203
+ const nextId = String.fromCharCode(65 + i + 1 + offset);
204
+ lines.push(`${id} --> ${nextId}`);
205
+ }
206
+ }
207
+ }
208
+ const lastId = String.fromCharCode(65 + steps.length - 1 + offset);
209
+ const endId = String.fromCharCode(65 + steps.length + offset);
210
+ lines.push(`${lastId} --> ${endId}([End])`);
211
+ // Enrich with risk / smell nodes based on keywords
212
+ const riskNodes = [];
213
+ let riskIndex = steps.length + 1 + offset; // starting after End
214
+ const addRisk = (id, label, connectFrom) => {
215
+ lines.push(`${id}[${label}]`);
216
+ lines.push(`${connectFrom} -.-> ${id}`);
217
+ riskNodes.push(id);
218
+ };
219
+ const lower = description.toLowerCase();
220
+ const firstId = "A";
221
+ if (/api key|secret/.test(lower)) {
222
+ const id = String.fromCharCode(65 + riskIndex++);
223
+ addRisk(id, "Hardcoded Secret", firstId);
224
+ }
225
+ if (/sql/.test(lower)) {
226
+ const id = String.fromCharCode(65 + riskIndex++);
227
+ addRisk(id, "Raw SQL Query Risk", firstId);
228
+ }
229
+ if (/deprecated|old method|old\b/.test(lower)) {
230
+ const id = String.fromCharCode(65 + riskIndex++);
231
+ addRisk(id, "Deprecated Method", firstId);
232
+ }
233
+ if (riskNodes.length) {
234
+ lines.push("classDef risk fill:#fee,stroke:#d33,stroke-width:1px;");
235
+ lines.push(`class ${riskNodes.join(",")} risk;`);
236
+ }
237
+ return lines.join("\n");
238
+ }
239
+ function generateSequenceDiagram(_description, theme) {
240
+ const header = ["sequenceDiagram"];
241
+ if (theme)
242
+ header.unshift(`%%{init: {'theme':'${theme}'}}%%`);
243
+ // For now still static; could parse description for interactions later
244
+ const body = [
245
+ "participant U as User",
246
+ "participant S as System",
247
+ "participant D as Database",
248
+ "U->>S: Request",
249
+ "S->>D: Query",
250
+ "D-->>S: Data",
251
+ "S-->>U: Response",
252
+ ];
253
+ return [...header, ...body].join("\n");
254
+ }
255
+ function generateClassDiagram(_description, theme) {
256
+ const lines = ["classDiagram"];
257
+ if (theme)
258
+ lines.unshift(`%%{init: {'theme':'${theme}'}}%%`);
259
+ lines.push("class User {", " +String name", " +String email", " +login()", " +logout()", "}", "class System {", " +processRequest()", " +validateUser()", "}", "User --> System : uses");
260
+ return lines.join("\n");
261
+ }
262
+ function generateStateDiagram(_description, theme) {
263
+ const lines = ["stateDiagram-v2"];
264
+ if (theme)
265
+ lines.unshift(`%%{init: {'theme':'${theme}'}}%%`);
266
+ lines.push("[*] --> Idle", "Idle --> Processing : start", "Processing --> Complete : finish", "Processing --> Error : fail", "Complete --> [*]", "Error --> Idle : retry");
267
+ return lines.join("\n");
268
+ }
269
+ function generateGanttChart(_description, _theme) {
270
+ // Generate dynamic dates starting from current date
271
+ const today = new Date();
272
+ const formatDate = (date) => date.toISOString().split("T")[0];
273
+ const startDate = formatDate(today);
274
+ const researchEnd = formatDate(new Date(today.getTime() + 4 * 24 * 60 * 60 * 1000)); // +4 days
275
+ const designStart = formatDate(new Date(today.getTime() + 5 * 24 * 60 * 60 * 1000)); // +5 days
276
+ const designEnd = formatDate(new Date(today.getTime() + 11 * 24 * 60 * 60 * 1000)); // +11 days
277
+ // Derive implementation and testing phases from design end
278
+ const implementationStart = formatDate(new Date(new Date(designEnd).getTime() + 1 * 24 * 60 * 60 * 1000)); // day after design end
279
+ const implementationEnd = formatDate(new Date(new Date(designEnd).getTime() + 11 * 24 * 60 * 60 * 1000)); // +10 days duration
280
+ const testingStart = formatDate(new Date(new Date(implementationEnd).getTime() + 1 * 24 * 60 * 60 * 1000)); // day after implementation
281
+ const testingEnd = formatDate(new Date(new Date(implementationEnd).getTime() + 6 * 24 * 60 * 60 * 1000)); // +5 days duration
282
+ return [
283
+ "gantt",
284
+ "title Project Timeline",
285
+ "dateFormat YYYY-MM-DD",
286
+ "section Planning",
287
+ `Research :done, research, ${startDate}, ${researchEnd}`,
288
+ `Design :active, design, ${designStart}, ${designEnd}`,
289
+ "section Development",
290
+ `Implementation :impl, ${implementationStart}, ${implementationEnd}`,
291
+ `Testing :test, ${testingStart}, ${testingEnd}`,
292
+ ].join("\n");
293
+ }
294
+ function generatePieChart(_description, _theme) {
295
+ return [
296
+ "pie title Sample Distribution",
297
+ '"Category A" : 45',
298
+ '"Category B" : 30',
299
+ '"Category C" : 15',
300
+ '"Category D" : 10',
301
+ ].join("\n");
302
+ }
303
+ function extractSteps(description) {
304
+ // Simple step extraction logic: split on sentence terminators & newlines
305
+ const sentences = description
306
+ .split(/[.!?\n]+/)
307
+ .map((s) => s.trim())
308
+ .filter((s) => s.length > 0);
309
+ // Allow up to 12 steps for better granularity while keeping diagram readable
310
+ return sentences.slice(0, 12);
311
+ }
312
+ //# sourceMappingURL=mermaid-diagram-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-diagram-generator.js","sourceRoot":"","sources":["../../src/tools/mermaid-diagram-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function modelCompatibilityChecker(args: unknown): Promise<{
2
+ content: {
3
+ type: string;
4
+ text: string;
5
+ }[];
6
+ }>;
7
+ //# sourceMappingURL=model-compatibility-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-compatibility-checker.d.ts","sourceRoot":"","sources":["../../src/tools/model-compatibility-checker.ts"],"names":[],"mappings":"AA4BA,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,OAAO;;;;;GAoG5D"}