@dcyfr/ai 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +27 -1
  3. package/README.md +359 -23
  4. package/bin/cli.js +12 -0
  5. package/bin/tui/config-wizard.js +107 -0
  6. package/bin/tui/validation-dashboard.js +123 -0
  7. package/bin/tui.js +259 -0
  8. package/dist/ai/agents/agent-loader.d.ts.map +1 -1
  9. package/dist/ai/agents/agent-loader.js +4 -2
  10. package/dist/ai/agents/agent-loader.js.map +1 -1
  11. package/dist/ai/index.d.ts +2 -0
  12. package/dist/ai/index.d.ts.map +1 -1
  13. package/dist/ai/index.js +2 -0
  14. package/dist/ai/index.js.map +1 -1
  15. package/dist/ai/mcp/index.d.ts +14 -2
  16. package/dist/ai/mcp/index.d.ts.map +1 -1
  17. package/dist/ai/mcp/index.js +11 -1
  18. package/dist/ai/mcp/index.js.map +1 -1
  19. package/dist/ai/mcp/servers/analytics/index.d.ts +19 -0
  20. package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -0
  21. package/dist/ai/mcp/servers/analytics/index.js +556 -0
  22. package/dist/ai/mcp/servers/analytics/index.js.map +1 -0
  23. package/dist/ai/mcp/servers/content-manager/content-provider.d.ts +61 -0
  24. package/dist/ai/mcp/servers/content-manager/content-provider.d.ts.map +1 -0
  25. package/dist/ai/mcp/servers/content-manager/content-provider.js +8 -0
  26. package/dist/ai/mcp/servers/content-manager/content-provider.js.map +1 -0
  27. package/dist/ai/mcp/servers/content-manager/index.d.ts +19 -0
  28. package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -0
  29. package/dist/ai/mcp/servers/content-manager/index.js +236 -0
  30. package/dist/ai/mcp/servers/content-manager/index.js.map +1 -0
  31. package/dist/ai/mcp/servers/design-tokens/index.d.ts +19 -0
  32. package/dist/ai/mcp/servers/design-tokens/index.d.ts.map +1 -0
  33. package/dist/ai/mcp/servers/design-tokens/index.js +422 -0
  34. package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -0
  35. package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts +59 -0
  36. package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts.map +1 -0
  37. package/dist/ai/mcp/servers/design-tokens/token-provider.js +8 -0
  38. package/dist/ai/mcp/servers/design-tokens/token-provider.js.map +1 -0
  39. package/dist/ai/mcp/servers/promptintel/index.d.ts +19 -0
  40. package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -0
  41. package/dist/ai/mcp/servers/promptintel/index.js +323 -0
  42. package/dist/ai/mcp/servers/promptintel/index.js.map +1 -0
  43. package/dist/ai/mcp/servers/shared/cache.d.ts +62 -0
  44. package/dist/ai/mcp/servers/shared/cache.d.ts.map +1 -0
  45. package/dist/ai/mcp/servers/shared/cache.js +117 -0
  46. package/dist/ai/mcp/servers/shared/cache.js.map +1 -0
  47. package/dist/ai/mcp/servers/shared/promptintel-client.d.ts +53 -0
  48. package/dist/ai/mcp/servers/shared/promptintel-client.d.ts.map +1 -0
  49. package/dist/ai/mcp/servers/shared/promptintel-client.js +185 -0
  50. package/dist/ai/mcp/servers/shared/promptintel-client.js.map +1 -0
  51. package/dist/ai/mcp/servers/shared/promptintel-types.d.ts +85 -0
  52. package/dist/ai/mcp/servers/shared/promptintel-types.d.ts.map +1 -0
  53. package/dist/ai/mcp/servers/shared/promptintel-types.js +7 -0
  54. package/dist/ai/mcp/servers/shared/promptintel-types.js.map +1 -0
  55. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts +54 -0
  56. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -0
  57. package/dist/ai/mcp/servers/shared/rate-limiter.js +122 -0
  58. package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -0
  59. package/dist/ai/mcp/servers/shared/redis-client.d.ts +54 -0
  60. package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -0
  61. package/dist/ai/mcp/servers/shared/redis-client.js +225 -0
  62. package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -0
  63. package/dist/ai/mcp/servers/shared/types.d.ts +292 -0
  64. package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -0
  65. package/dist/ai/mcp/servers/shared/types.js +6 -0
  66. package/dist/ai/mcp/servers/shared/types.js.map +1 -0
  67. package/dist/ai/mcp/servers/shared/utils.d.ts +41 -0
  68. package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -0
  69. package/dist/ai/mcp/servers/shared/utils.js +183 -0
  70. package/dist/ai/mcp/servers/shared/utils.js.map +1 -0
  71. package/dist/ai/memory/config.d.ts +87 -0
  72. package/dist/ai/memory/config.d.ts.map +1 -0
  73. package/dist/ai/memory/config.js +154 -0
  74. package/dist/ai/memory/config.js.map +1 -0
  75. package/dist/ai/memory/dcyfr-memory.d.ts +63 -0
  76. package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -0
  77. package/dist/ai/memory/dcyfr-memory.js +270 -0
  78. package/dist/ai/memory/dcyfr-memory.js.map +1 -0
  79. package/dist/ai/memory/index.d.ts +15 -0
  80. package/dist/ai/memory/index.d.ts.map +1 -0
  81. package/dist/ai/memory/index.js +15 -0
  82. package/dist/ai/memory/index.js.map +1 -0
  83. package/dist/ai/memory/mem0-client.d.ts +108 -0
  84. package/dist/ai/memory/mem0-client.d.ts.map +1 -0
  85. package/dist/ai/memory/mem0-client.js +166 -0
  86. package/dist/ai/memory/mem0-client.js.map +1 -0
  87. package/dist/ai/memory/types.d.ts +175 -0
  88. package/dist/ai/memory/types.d.ts.map +1 -0
  89. package/dist/ai/memory/types.js +10 -0
  90. package/dist/ai/memory/types.js.map +1 -0
  91. package/package.json +46 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-provider.js","sourceRoot":"","sources":["../../../../../packages/ai/mcp/servers/content-manager/content-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Content Manager MCP Server
4
+ *
5
+ * Query and analyze MDX blog posts and project content for strategic insights.
6
+ * AI assistants can discover content, analyze topics, and find related articles.
7
+ *
8
+ * Uses ContentProvider abstraction to decouple from specific content sources.
9
+ * @see content-provider.ts for the provider interface
10
+ */
11
+ import { FastMCP } from 'fastmcp';
12
+ import type { ContentProvider } from './content-provider.js';
13
+ /**
14
+ * Create Content Manager MCP Server with a content provider
15
+ * @param provider - ContentProvider implementation for reading content
16
+ */
17
+ export declare function createContentManagerServer(provider: ContentProvider): FastMCP<import("fastmcp").FastMCPSessionAuth>;
18
+ export default createContentManagerServer;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/mcp/servers/content-manager/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,uBAAuB,CAAC;AAE3F;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,eAAe,iDAqRnE;AAUD,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,236 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Content Manager MCP Server
4
+ *
5
+ * Query and analyze MDX blog posts and project content for strategic insights.
6
+ * AI assistants can discover content, analyze topics, and find related articles.
7
+ *
8
+ * Uses ContentProvider abstraction to decouple from specific content sources.
9
+ * @see content-provider.ts for the provider interface
10
+ */
11
+ import { FastMCP } from 'fastmcp';
12
+ import { z } from 'zod';
13
+ import { SimpleCache } from '../shared/cache.js';
14
+ /**
15
+ * Create Content Manager MCP Server with a content provider
16
+ * @param provider - ContentProvider implementation for reading content
17
+ */
18
+ export function createContentManagerServer(provider) {
19
+ const server = new FastMCP({
20
+ name: 'dcyfr-content',
21
+ version: '1.0.0',
22
+ instructions: 'Query and analyze MDX blog posts and project content. Use these tools to discover content, analyze topics, and find related articles.',
23
+ });
24
+ // Cache for content queries (5 minutes)
25
+ const contentCache = new SimpleCache(300000);
26
+ const topicsCache = new SimpleCache(300000);
27
+ // ============================================================================
28
+ // Tool 1: Query content
29
+ // ============================================================================
30
+ server.addTool({
31
+ name: 'content:query',
32
+ description: 'Search for blog posts or projects with optional query filter',
33
+ parameters: z.object({
34
+ type: z.enum(['blog', 'project']).describe('Content type to search'),
35
+ query: z
36
+ .string()
37
+ .optional()
38
+ .describe('Search query (searches title, description, tags, content)'),
39
+ limit: z.number().default(20).describe('Maximum results to return'),
40
+ }),
41
+ execute: async ({ type, query, limit, }) => {
42
+ const cacheKey = `query:${type}:${query || 'all'}:${limit}`;
43
+ let results = contentCache.get(cacheKey);
44
+ if (!results) {
45
+ results = await provider.listContent(type, { query, limit });
46
+ contentCache.set(cacheKey, results);
47
+ }
48
+ return {
49
+ type: 'text',
50
+ text: JSON.stringify({
51
+ type,
52
+ query: query || 'all',
53
+ count: results.length,
54
+ results: results.map((item) => ({
55
+ slug: item.slug,
56
+ title: item.metadata.title,
57
+ description: item.metadata.description,
58
+ date: item.metadata.date,
59
+ tags: item.metadata.tags,
60
+ category: item.metadata.category,
61
+ readingTime: item.metadata.readingTime,
62
+ })),
63
+ }, null, 2),
64
+ };
65
+ },
66
+ });
67
+ // ============================================================================
68
+ // Tool 2: Analyze content
69
+ // ============================================================================
70
+ server.addTool({
71
+ name: 'content:analyze',
72
+ description: 'Get detailed analysis of a specific content item',
73
+ parameters: z.object({
74
+ slug: z.string().describe('Content slug to analyze'),
75
+ type: z.enum(['blog', 'project']).describe('Content type'),
76
+ }),
77
+ execute: async ({ slug, type }) => {
78
+ const content = await provider.getContent(slug, type);
79
+ if (!content) {
80
+ return {
81
+ type: 'text',
82
+ text: JSON.stringify({ error: 'Content not found', slug, type }, null, 2),
83
+ };
84
+ }
85
+ return {
86
+ type: 'text',
87
+ text: JSON.stringify({
88
+ slug: content.slug,
89
+ type: content.type,
90
+ metadata: content.metadata,
91
+ excerpt: content.excerpt,
92
+ filePath: content.filePath,
93
+ }, null, 2),
94
+ };
95
+ },
96
+ });
97
+ // ============================================================================
98
+ // Tool 3: Find related content
99
+ // ============================================================================
100
+ server.addTool({
101
+ name: 'content:findRelated',
102
+ description: 'Find content related to a specific item by tags and topics',
103
+ parameters: z.object({
104
+ slug: z.string().describe('Reference content slug'),
105
+ type: z.enum(['blog', 'project']).describe('Content type'),
106
+ limit: z.number().default(5).describe('Maximum related items to return'),
107
+ }),
108
+ execute: async ({ slug, type, limit, }) => {
109
+ const content = await provider.getContent(slug, type);
110
+ if (!content) {
111
+ return {
112
+ type: 'text',
113
+ text: JSON.stringify({ error: 'Content not found', slug, type }, null, 2),
114
+ };
115
+ }
116
+ const tags = content.metadata.tags || [];
117
+ const allContent = await provider.listContent(type);
118
+ // Score by tag overlap
119
+ const scored = allContent
120
+ .filter((item) => item.slug !== slug)
121
+ .map((item) => {
122
+ const itemTags = item.metadata.tags || [];
123
+ const overlap = tags.filter((tag) => itemTags.includes(tag)).length;
124
+ return { item, score: overlap };
125
+ })
126
+ .filter(({ score }) => score > 0)
127
+ .sort((a, b) => b.score - a.score)
128
+ .slice(0, limit || 5)
129
+ .map(({ item }) => item);
130
+ return {
131
+ type: 'text',
132
+ text: JSON.stringify({
133
+ slug,
134
+ relatedCount: scored.length,
135
+ related: scored.map((item) => ({
136
+ slug: item.slug,
137
+ title: item.metadata.title,
138
+ tags: item.metadata.tags,
139
+ })),
140
+ }, null, 2),
141
+ };
142
+ },
143
+ });
144
+ // ============================================================================
145
+ // Tool 4: Get topics
146
+ // ============================================================================
147
+ server.addTool({
148
+ name: 'content:getTopics',
149
+ description: 'Get topic taxonomy with content counts',
150
+ parameters: z.object({
151
+ type: z.enum(['blog', 'project']).optional().describe('Filter by content type'),
152
+ }),
153
+ execute: async ({ type }) => {
154
+ const cacheKey = `topics:${type || 'all'}`;
155
+ let tags = topicsCache.get(cacheKey);
156
+ if (!tags) {
157
+ tags = await provider.getTags(type);
158
+ topicsCache.set(cacheKey, tags);
159
+ }
160
+ return {
161
+ type: 'text',
162
+ text: JSON.stringify({
163
+ type: type || 'all',
164
+ totalTopics: tags.length,
165
+ topics: tags,
166
+ }, null, 2),
167
+ };
168
+ },
169
+ });
170
+ // ============================================================================
171
+ // Tool 5: Search content
172
+ // ============================================================================
173
+ server.addTool({
174
+ name: 'content:search',
175
+ description: 'Full-text search across blog posts and projects',
176
+ parameters: z.object({
177
+ query: z.string().describe('Search query'),
178
+ type: z.enum(['blog', 'project']).optional().describe('Filter by content type'),
179
+ }),
180
+ execute: async ({ query, type }) => {
181
+ const results = await provider.searchContent(query, type);
182
+ return {
183
+ type: 'text',
184
+ text: JSON.stringify({
185
+ query,
186
+ type: type || 'all',
187
+ count: results.length,
188
+ results: results.slice(0, 20).map((item) => ({
189
+ type: item.type,
190
+ slug: item.slug,
191
+ title: item.metadata.title,
192
+ description: item.metadata.description,
193
+ excerpt: item.excerpt,
194
+ tags: item.metadata.tags,
195
+ })),
196
+ }, null, 2),
197
+ };
198
+ },
199
+ });
200
+ // ============================================================================
201
+ // Tool 6: Get content by tag
202
+ // ============================================================================
203
+ server.addTool({
204
+ name: 'content:getByTag',
205
+ description: 'Get all content with a specific tag',
206
+ parameters: z.object({
207
+ tag: z.string().describe('Tag to filter by'),
208
+ type: z.enum(['blog', 'project']).optional().describe('Filter by content type'),
209
+ }),
210
+ execute: async ({ tag, type }) => {
211
+ const results = await provider.getContentByTag(tag, type);
212
+ return {
213
+ type: 'text',
214
+ text: JSON.stringify({
215
+ tag,
216
+ type: type || 'all',
217
+ count: results.length,
218
+ results: results.map((item) => ({
219
+ slug: item.slug,
220
+ title: item.metadata.title,
221
+ type: item.type,
222
+ })),
223
+ }, null, 2),
224
+ };
225
+ },
226
+ });
227
+ return server;
228
+ }
229
+ // ============================================================================
230
+ // Standalone server (requires provider to be passed in)
231
+ // ============================================================================
232
+ // For standalone execution, this file should not auto-start the server.
233
+ // Instead, create a startup script that instantiates the provider and server.
234
+ // See dcyfr-labs/src/mcp/start-content-server.ts for example.
235
+ export default createContentManagerServer;
236
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ai/mcp/servers/content-manager/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Design Token Validator MCP Server
4
+ *
5
+ * Provides real-time design token validation and compliance checking.
6
+ * AI assistants can validate code against design tokens and get suggestions.
7
+ *
8
+ * Uses TokenProvider abstraction to decouple from specific design token sources.
9
+ * @see token-provider.ts for the provider interface
10
+ */
11
+ import { FastMCP } from 'fastmcp';
12
+ import type { TokenProvider } from './token-provider.js';
13
+ /**
14
+ * Create Design Token MCP Server with a token provider
15
+ * @param provider - TokenProvider implementation for design token access
16
+ */
17
+ export declare function createDesignTokenServer(provider: TokenProvider): FastMCP<import("fastmcp").FastMCPSessionAuth>;
18
+ export default createDesignTokenServer;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/mcp/servers/design-tokens/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKlC,OAAO,KAAK,EACV,aAAa,EAId,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,aAAa,iDAyd9D;AAUD,eAAe,uBAAuB,CAAC"}