@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.
- package/CHANGELOG.md +21 -0
- package/LICENSE +27 -1
- package/README.md +359 -23
- package/bin/cli.js +12 -0
- package/bin/tui/config-wizard.js +107 -0
- package/bin/tui/validation-dashboard.js +123 -0
- package/bin/tui.js +259 -0
- package/dist/ai/agents/agent-loader.d.ts.map +1 -1
- package/dist/ai/agents/agent-loader.js +4 -2
- package/dist/ai/agents/agent-loader.js.map +1 -1
- package/dist/ai/index.d.ts +2 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +2 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/mcp/index.d.ts +14 -2
- package/dist/ai/mcp/index.d.ts.map +1 -1
- package/dist/ai/mcp/index.js +11 -1
- package/dist/ai/mcp/index.js.map +1 -1
- package/dist/ai/mcp/servers/analytics/index.d.ts +19 -0
- package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/analytics/index.js +556 -0
- package/dist/ai/mcp/servers/analytics/index.js.map +1 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.d.ts +61 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.d.ts.map +1 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.js +8 -0
- package/dist/ai/mcp/servers/content-manager/content-provider.js.map +1 -0
- package/dist/ai/mcp/servers/content-manager/index.d.ts +19 -0
- package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/content-manager/index.js +236 -0
- package/dist/ai/mcp/servers/content-manager/index.js.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/index.d.ts +19 -0
- package/dist/ai/mcp/servers/design-tokens/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/index.js +422 -0
- package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts +59 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts.map +1 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.js +8 -0
- package/dist/ai/mcp/servers/design-tokens/token-provider.js.map +1 -0
- package/dist/ai/mcp/servers/promptintel/index.d.ts +19 -0
- package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -0
- package/dist/ai/mcp/servers/promptintel/index.js +323 -0
- package/dist/ai/mcp/servers/promptintel/index.js.map +1 -0
- package/dist/ai/mcp/servers/shared/cache.d.ts +62 -0
- package/dist/ai/mcp/servers/shared/cache.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/cache.js +117 -0
- package/dist/ai/mcp/servers/shared/cache.js.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.d.ts +53 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.js +185 -0
- package/dist/ai/mcp/servers/shared/promptintel-client.js.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.d.ts +85 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.js +7 -0
- package/dist/ai/mcp/servers/shared/promptintel-types.js.map +1 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.d.ts +54 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.js +122 -0
- package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -0
- package/dist/ai/mcp/servers/shared/redis-client.d.ts +54 -0
- package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/redis-client.js +225 -0
- package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -0
- package/dist/ai/mcp/servers/shared/types.d.ts +292 -0
- package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/types.js +6 -0
- package/dist/ai/mcp/servers/shared/types.js.map +1 -0
- package/dist/ai/mcp/servers/shared/utils.d.ts +41 -0
- package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -0
- package/dist/ai/mcp/servers/shared/utils.js +183 -0
- package/dist/ai/mcp/servers/shared/utils.js.map +1 -0
- package/dist/ai/memory/config.d.ts +87 -0
- package/dist/ai/memory/config.d.ts.map +1 -0
- package/dist/ai/memory/config.js +154 -0
- package/dist/ai/memory/config.js.map +1 -0
- package/dist/ai/memory/dcyfr-memory.d.ts +63 -0
- package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -0
- package/dist/ai/memory/dcyfr-memory.js +270 -0
- package/dist/ai/memory/dcyfr-memory.js.map +1 -0
- package/dist/ai/memory/index.d.ts +15 -0
- package/dist/ai/memory/index.d.ts.map +1 -0
- package/dist/ai/memory/index.js +15 -0
- package/dist/ai/memory/index.js.map +1 -0
- package/dist/ai/memory/mem0-client.d.ts +108 -0
- package/dist/ai/memory/mem0-client.d.ts.map +1 -0
- package/dist/ai/memory/mem0-client.js +166 -0
- package/dist/ai/memory/mem0-client.js.map +1 -0
- package/dist/ai/memory/types.d.ts +175 -0
- package/dist/ai/memory/types.d.ts.map +1 -0
- package/dist/ai/memory/types.js +10 -0
- package/dist/ai/memory/types.js.map +1 -0
- 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"}
|