modular-studio 0.2.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 (187) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +261 -0
  3. package/dist/assets/graphPopulator-C6jg83nL.js +1 -0
  4. package/dist/assets/index-CXhIX28x.js +634 -0
  5. package/dist/assets/index-CeNF0r-K.css +1 -0
  6. package/dist/assets/jszip.min-BlpRodxc.js +2 -0
  7. package/dist/index.html +16 -0
  8. package/dist/vite.svg +1 -0
  9. package/dist-server/bin/modular-mcp.d.ts +8 -0
  10. package/dist-server/bin/modular-mcp.d.ts.map +1 -0
  11. package/dist-server/bin/modular-mcp.js +158 -0
  12. package/dist-server/bin/modular-mcp.js.map +1 -0
  13. package/dist-server/bin/modular-studio.d.ts +3 -0
  14. package/dist-server/bin/modular-studio.d.ts.map +1 -0
  15. package/dist-server/bin/modular-studio.js +63 -0
  16. package/dist-server/bin/modular-studio.js.map +1 -0
  17. package/dist-server/server/config.d.ts +4 -0
  18. package/dist-server/server/config.d.ts.map +1 -0
  19. package/dist-server/server/config.js +33 -0
  20. package/dist-server/server/config.js.map +1 -0
  21. package/dist-server/server/data/mcp-clients.json +5 -0
  22. package/dist-server/server/index.d.ts +3 -0
  23. package/dist-server/server/index.d.ts.map +1 -0
  24. package/dist-server/server/index.js +174 -0
  25. package/dist-server/server/index.js.map +1 -0
  26. package/dist-server/server/mcp/manager.d.ts +47 -0
  27. package/dist-server/server/mcp/manager.d.ts.map +1 -0
  28. package/dist-server/server/mcp/manager.js +203 -0
  29. package/dist-server/server/mcp/manager.js.map +1 -0
  30. package/dist-server/server/mcp/modular-server.d.ts +55 -0
  31. package/dist-server/server/mcp/modular-server.d.ts.map +1 -0
  32. package/dist-server/server/mcp/modular-server.js +492 -0
  33. package/dist-server/server/mcp/modular-server.js.map +1 -0
  34. package/dist-server/server/mcp/transport.d.ts +29 -0
  35. package/dist-server/server/mcp/transport.d.ts.map +1 -0
  36. package/dist-server/server/mcp/transport.js +61 -0
  37. package/dist-server/server/mcp/transport.js.map +1 -0
  38. package/dist-server/server/routes/agent-sdk.d.ts +3 -0
  39. package/dist-server/server/routes/agent-sdk.d.ts.map +1 -0
  40. package/dist-server/server/routes/agent-sdk.js +99 -0
  41. package/dist-server/server/routes/agent-sdk.js.map +1 -0
  42. package/dist-server/server/routes/agents.d.ts +10 -0
  43. package/dist-server/server/routes/agents.d.ts.map +1 -0
  44. package/dist-server/server/routes/agents.js +61 -0
  45. package/dist-server/server/routes/agents.js.map +1 -0
  46. package/dist-server/server/routes/auth-codex.d.ts +3 -0
  47. package/dist-server/server/routes/auth-codex.d.ts.map +1 -0
  48. package/dist-server/server/routes/auth-codex.js +51 -0
  49. package/dist-server/server/routes/auth-codex.js.map +1 -0
  50. package/dist-server/server/routes/capabilities.d.ts +3 -0
  51. package/dist-server/server/routes/capabilities.d.ts.map +1 -0
  52. package/dist-server/server/routes/capabilities.js +32 -0
  53. package/dist-server/server/routes/capabilities.js.map +1 -0
  54. package/dist-server/server/routes/claude-config.d.ts +3 -0
  55. package/dist-server/server/routes/claude-config.d.ts.map +1 -0
  56. package/dist-server/server/routes/claude-config.js +146 -0
  57. package/dist-server/server/routes/claude-config.js.map +1 -0
  58. package/dist-server/server/routes/connectors.d.ts +12 -0
  59. package/dist-server/server/routes/connectors.d.ts.map +1 -0
  60. package/dist-server/server/routes/connectors.js +325 -0
  61. package/dist-server/server/routes/connectors.js.map +1 -0
  62. package/dist-server/server/routes/embeddings.d.ts +6 -0
  63. package/dist-server/server/routes/embeddings.d.ts.map +1 -0
  64. package/dist-server/server/routes/embeddings.js +130 -0
  65. package/dist-server/server/routes/embeddings.js.map +1 -0
  66. package/dist-server/server/routes/health.d.ts +9 -0
  67. package/dist-server/server/routes/health.d.ts.map +1 -0
  68. package/dist-server/server/routes/health.js +284 -0
  69. package/dist-server/server/routes/health.js.map +1 -0
  70. package/dist-server/server/routes/knowledge.d.ts +3 -0
  71. package/dist-server/server/routes/knowledge.d.ts.map +1 -0
  72. package/dist-server/server/routes/knowledge.js +534 -0
  73. package/dist-server/server/routes/knowledge.js.map +1 -0
  74. package/dist-server/server/routes/llm.d.ts +3 -0
  75. package/dist-server/server/routes/llm.d.ts.map +1 -0
  76. package/dist-server/server/routes/llm.js +200 -0
  77. package/dist-server/server/routes/llm.js.map +1 -0
  78. package/dist-server/server/routes/mcp-oauth.d.ts +12 -0
  79. package/dist-server/server/routes/mcp-oauth.d.ts.map +1 -0
  80. package/dist-server/server/routes/mcp-oauth.js +137 -0
  81. package/dist-server/server/routes/mcp-oauth.js.map +1 -0
  82. package/dist-server/server/routes/mcp.d.ts +3 -0
  83. package/dist-server/server/routes/mcp.d.ts.map +1 -0
  84. package/dist-server/server/routes/mcp.js +177 -0
  85. package/dist-server/server/routes/mcp.js.map +1 -0
  86. package/dist-server/server/routes/pipeline.d.ts +45 -0
  87. package/dist-server/server/routes/pipeline.d.ts.map +1 -0
  88. package/dist-server/server/routes/pipeline.js +483 -0
  89. package/dist-server/server/routes/pipeline.js.map +1 -0
  90. package/dist-server/server/routes/providers.d.ts +3 -0
  91. package/dist-server/server/routes/providers.d.ts.map +1 -0
  92. package/dist-server/server/routes/providers.js +204 -0
  93. package/dist-server/server/routes/providers.js.map +1 -0
  94. package/dist-server/server/routes/qualification.d.ts +3 -0
  95. package/dist-server/server/routes/qualification.d.ts.map +1 -0
  96. package/dist-server/server/routes/qualification.js +105 -0
  97. package/dist-server/server/routes/qualification.js.map +1 -0
  98. package/dist-server/server/routes/repo-index.d.ts +4 -0
  99. package/dist-server/server/routes/repo-index.d.ts.map +1 -0
  100. package/dist-server/server/routes/repo-index.js +318 -0
  101. package/dist-server/server/routes/repo-index.js.map +1 -0
  102. package/dist-server/server/routes/runtime.d.ts +3 -0
  103. package/dist-server/server/routes/runtime.d.ts.map +1 -0
  104. package/dist-server/server/routes/runtime.js +122 -0
  105. package/dist-server/server/routes/runtime.js.map +1 -0
  106. package/dist-server/server/routes/skills-search.d.ts +3 -0
  107. package/dist-server/server/routes/skills-search.d.ts.map +1 -0
  108. package/dist-server/server/routes/skills-search.js +198 -0
  109. package/dist-server/server/routes/skills-search.js.map +1 -0
  110. package/dist-server/server/routes/worktrees.d.ts +3 -0
  111. package/dist-server/server/routes/worktrees.d.ts.map +1 -0
  112. package/dist-server/server/routes/worktrees.js +70 -0
  113. package/dist-server/server/routes/worktrees.js.map +1 -0
  114. package/dist-server/server/services/__tests__/embeddingService.test.d.ts +5 -0
  115. package/dist-server/server/services/__tests__/embeddingService.test.d.ts.map +1 -0
  116. package/dist-server/server/services/__tests__/embeddingService.test.js +233 -0
  117. package/dist-server/server/services/__tests__/embeddingService.test.js.map +1 -0
  118. package/dist-server/server/services/agentRunner.d.ts +46 -0
  119. package/dist-server/server/services/agentRunner.d.ts.map +1 -0
  120. package/dist-server/server/services/agentRunner.js +295 -0
  121. package/dist-server/server/services/agentRunner.js.map +1 -0
  122. package/dist-server/server/services/agentStore.d.ts +40 -0
  123. package/dist-server/server/services/agentStore.d.ts.map +1 -0
  124. package/dist-server/server/services/agentStore.js +62 -0
  125. package/dist-server/server/services/agentStore.js.map +1 -0
  126. package/dist-server/server/services/contentStore.d.ts +32 -0
  127. package/dist-server/server/services/contentStore.d.ts.map +1 -0
  128. package/dist-server/server/services/contentStore.js +68 -0
  129. package/dist-server/server/services/contentStore.js.map +1 -0
  130. package/dist-server/server/services/embeddingService.d.ts +53 -0
  131. package/dist-server/server/services/embeddingService.d.ts.map +1 -0
  132. package/dist-server/server/services/embeddingService.js +199 -0
  133. package/dist-server/server/services/embeddingService.js.map +1 -0
  134. package/dist-server/server/services/factExtractor.d.ts +14 -0
  135. package/dist-server/server/services/factExtractor.d.ts.map +1 -0
  136. package/dist-server/server/services/factExtractor.js +126 -0
  137. package/dist-server/server/services/factExtractor.js.map +1 -0
  138. package/dist-server/server/services/githubIndexer.d.ts +59 -0
  139. package/dist-server/server/services/githubIndexer.d.ts.map +1 -0
  140. package/dist-server/server/services/githubIndexer.js +183 -0
  141. package/dist-server/server/services/githubIndexer.js.map +1 -0
  142. package/dist-server/server/services/mcpOAuth.d.ts +32 -0
  143. package/dist-server/server/services/mcpOAuth.d.ts.map +1 -0
  144. package/dist-server/server/services/mcpOAuth.js +264 -0
  145. package/dist-server/server/services/mcpOAuth.js.map +1 -0
  146. package/dist-server/server/services/memoryScorer.d.ts +19 -0
  147. package/dist-server/server/services/memoryScorer.d.ts.map +1 -0
  148. package/dist-server/server/services/memoryScorer.js +147 -0
  149. package/dist-server/server/services/memoryScorer.js.map +1 -0
  150. package/dist-server/server/services/repoIndexer.d.ts +91 -0
  151. package/dist-server/server/services/repoIndexer.d.ts.map +1 -0
  152. package/dist-server/server/services/repoIndexer.js +512 -0
  153. package/dist-server/server/services/repoIndexer.js.map +1 -0
  154. package/dist-server/server/services/teamRunner.d.ts +39 -0
  155. package/dist-server/server/services/teamRunner.d.ts.map +1 -0
  156. package/dist-server/server/services/teamRunner.js +76 -0
  157. package/dist-server/server/services/teamRunner.js.map +1 -0
  158. package/dist-server/server/services/worktreeManager.d.ts +27 -0
  159. package/dist-server/server/services/worktreeManager.d.ts.map +1 -0
  160. package/dist-server/server/services/worktreeManager.js +107 -0
  161. package/dist-server/server/services/worktreeManager.js.map +1 -0
  162. package/dist-server/server/types.d.ts +30 -0
  163. package/dist-server/server/types.d.ts.map +1 -0
  164. package/dist-server/server/types.js +2 -0
  165. package/dist-server/server/types.js.map +1 -0
  166. package/dist-server/server/utils/pathSecurity.d.ts +34 -0
  167. package/dist-server/server/utils/pathSecurity.d.ts.map +1 -0
  168. package/dist-server/server/utils/pathSecurity.js +78 -0
  169. package/dist-server/server/utils/pathSecurity.js.map +1 -0
  170. package/dist-server/src/services/budgetAllocator.d.ts +37 -0
  171. package/dist-server/src/services/budgetAllocator.d.ts.map +1 -0
  172. package/dist-server/src/services/budgetAllocator.js +120 -0
  173. package/dist-server/src/services/budgetAllocator.js.map +1 -0
  174. package/dist-server/src/services/contradictionDetector.d.ts +18 -0
  175. package/dist-server/src/services/contradictionDetector.d.ts.map +1 -0
  176. package/dist-server/src/services/contradictionDetector.js +111 -0
  177. package/dist-server/src/services/contradictionDetector.js.map +1 -0
  178. package/dist-server/src/services/treeIndexer.d.ts +91 -0
  179. package/dist-server/src/services/treeIndexer.d.ts.map +1 -0
  180. package/dist-server/src/services/treeIndexer.js +289 -0
  181. package/dist-server/src/services/treeIndexer.js.map +1 -0
  182. package/dist-server/src/store/knowledgeBase.d.ts +130 -0
  183. package/dist-server/src/store/knowledgeBase.d.ts.map +1 -0
  184. package/dist-server/src/store/knowledgeBase.js +299 -0
  185. package/dist-server/src/store/knowledgeBase.js.map +1 -0
  186. package/dist-server/tsconfig.server.tsbuildinfo +1 -0
  187. package/package.json +92 -0
@@ -0,0 +1,492 @@
1
+ /**
2
+ * Modular MCP Server - Universal Context Provider
3
+ *
4
+ * Exposes Modular Studio's context engineering pipeline as MCP tools:
5
+ * - modular_context: Full context engineering pipeline
6
+ * - modular_tree: Document tree indexing
7
+ * - modular_classify: Knowledge type classification
8
+ * - modular_facts: Fact extraction from text
9
+ * - modular_consolidate: Memory consolidation
10
+ */
11
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
12
+ import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } from '@modelcontextprotocol/sdk/types.js';
13
+ import * as fs from 'fs/promises';
14
+ // Import pipeline services
15
+ import { indexMarkdown } from '../../src/services/treeIndexer.js';
16
+ import { classifyKnowledge, KNOWLEDGE_TYPES } from '../../src/store/knowledgeBase.js';
17
+ import { allocateBudgets } from '../../src/services/budgetAllocator.js';
18
+ import { resolveContradictions } from '../../src/services/contradictionDetector.js';
19
+ import { extractFacts } from '../services/factExtractor.js';
20
+ import { rankFacts } from '../services/memoryScorer.js';
21
+ import { validateFilePath, validateFilePaths } from '../utils/pathSecurity.js';
22
+ /**
23
+ * Core context engineering pipeline
24
+ */
25
+ export async function processModularContext(input) {
26
+ const { sources, task, tokenBudget = 32000 } = input;
27
+ // Step 1: Index all sources
28
+ const indexedSources = [];
29
+ // SECURITY: Validate all source paths first
30
+ try {
31
+ validateFilePaths(sources.map(s => s.path));
32
+ }
33
+ catch (error) {
34
+ throw new McpError(ErrorCode.InvalidRequest, `Path validation failed: ${error}`);
35
+ }
36
+ for (const source of sources) {
37
+ try {
38
+ const content = await fs.readFile(source.path, 'utf-8');
39
+ // Index the content
40
+ const tree = indexMarkdown(source.path, content);
41
+ // Classify if type not provided
42
+ const classification = source.type
43
+ ? { knowledgeType: source.type, depth: 0, confidence: 'high', reason: 'Provided explicitly' }
44
+ : classifyKnowledge(source.path, content);
45
+ indexedSources.push({
46
+ name: source.name,
47
+ path: source.path,
48
+ tree,
49
+ classification,
50
+ });
51
+ }
52
+ catch (error) {
53
+ throw new McpError(ErrorCode.InvalidRequest, `Failed to process source ${source.name}: ${error}`);
54
+ }
55
+ }
56
+ // Step 2: Budget allocation
57
+ const budgetSources = indexedSources.map(source => ({
58
+ name: source.name,
59
+ knowledgeType: source.classification.knowledgeType,
60
+ rawTokens: source.tree.totalTokens,
61
+ depthMultiplier: source.classification.depth === 0 ? 1.5 : 1.0,
62
+ }));
63
+ const budgetAllocation = allocateBudgets(budgetSources, tokenBudget);
64
+ // Step 3: Assemble context with depth filtering
65
+ const knowledgeBlocks = [];
66
+ for (const source of indexedSources) {
67
+ const allocation = budgetAllocation.find(a => a.name === source.name);
68
+ if (!allocation || allocation.allocatedTokens === 0)
69
+ continue;
70
+ // Extract content based on allocated tokens
71
+ const content = extractContentFromTree(source.tree.root, allocation.allocatedTokens);
72
+ if (content.trim()) {
73
+ knowledgeBlocks.push({
74
+ name: source.name,
75
+ type: source.classification.knowledgeType,
76
+ content: content,
77
+ });
78
+ }
79
+ }
80
+ // Step 4: Detect and resolve contradictions
81
+ const contradictionResult = resolveContradictions(knowledgeBlocks.map(block => ({
82
+ name: block.name,
83
+ type: block.type,
84
+ content: block.content,
85
+ })));
86
+ // Step 5: Assemble final context with attention ordering
87
+ const contextParts = [];
88
+ // Add task framing
89
+ contextParts.push(`<task>${task}</task>`);
90
+ // Add knowledge sources in epistemic priority order
91
+ const typeOrder = ['ground-truth', 'guideline', 'framework', 'evidence', 'signal', 'hypothesis'];
92
+ for (const type of typeOrder) {
93
+ const typeBlocks = knowledgeBlocks.filter(b => b.type === type);
94
+ if (typeBlocks.length === 0)
95
+ continue;
96
+ const typeInfo = KNOWLEDGE_TYPES[type];
97
+ contextParts.push(`[${typeInfo.label.toUpperCase()}] ${typeInfo.instruction}`);
98
+ for (const block of typeBlocks) {
99
+ const allocation = budgetAllocation.find(a => a.name === block.name);
100
+ contextParts.push(`<source name="${block.name}" type="${typeInfo.label}" tokens="${allocation?.allocatedTokens || 0}">\n${block.content}\n</source>`);
101
+ }
102
+ }
103
+ // Add contradiction annotations if any
104
+ if (contradictionResult.annotations.length > 0) {
105
+ contextParts.push('<contradictions>\n' + contradictionResult.annotations.join('\n') + '\n</contradictions>');
106
+ }
107
+ const finalContext = contextParts.join('\n\n');
108
+ return {
109
+ context: finalContext,
110
+ metadata: {
111
+ totalTokens: budgetAllocation.reduce((sum, a) => sum + a.allocatedTokens, 0),
112
+ sources: indexedSources.map(source => {
113
+ const allocation = budgetAllocation.find(a => a.name === source.name);
114
+ return {
115
+ name: source.name,
116
+ type: source.classification.knowledgeType,
117
+ tokens: allocation?.allocatedTokens || 0,
118
+ depth: source.classification.depth,
119
+ };
120
+ }),
121
+ budgetAllocation,
122
+ contradictions: contradictionResult.contradictionsFound,
123
+ },
124
+ };
125
+ }
126
+ /**
127
+ * Extract content from tree node respecting token budget
128
+ */
129
+ function extractContentFromTree(node, tokenBudget) {
130
+ if (tokenBudget <= 0)
131
+ return '';
132
+ let content = '';
133
+ let usedTokens = 0;
134
+ // Add node title if it's not the root
135
+ if (node.depth > 0) {
136
+ const titleTokens = Math.ceil(node.title.length / 4);
137
+ if (usedTokens + titleTokens <= tokenBudget) {
138
+ content += '#'.repeat(node.depth) + ' ' + node.title + '\n\n';
139
+ usedTokens += titleTokens;
140
+ }
141
+ }
142
+ // Add node text
143
+ if (node.text && usedTokens < tokenBudget) {
144
+ const remainingBudget = tokenBudget - usedTokens;
145
+ const textTokens = Math.ceil(node.text.length / 4);
146
+ if (textTokens <= remainingBudget) {
147
+ content += node.text + '\n\n';
148
+ usedTokens += textTokens;
149
+ }
150
+ else {
151
+ // Truncate text to fit budget
152
+ const charBudget = remainingBudget * 4;
153
+ content += node.text.slice(0, charBudget) + '...\n\n';
154
+ usedTokens = tokenBudget;
155
+ }
156
+ }
157
+ // Add children if budget allows
158
+ for (const child of node.children) {
159
+ if (usedTokens >= tokenBudget)
160
+ break;
161
+ const childContent = extractContentFromTree(child, tokenBudget - usedTokens);
162
+ if (childContent.trim()) {
163
+ content += childContent;
164
+ usedTokens += Math.ceil(childContent.length / 4);
165
+ }
166
+ }
167
+ return content;
168
+ }
169
+ /**
170
+ * Create and configure the MCP server
171
+ */
172
+ export function createModularServer() {
173
+ const server = new Server({
174
+ name: 'modular-mcp-server',
175
+ version: '0.1.0',
176
+ }, {
177
+ capabilities: {
178
+ tools: {},
179
+ },
180
+ });
181
+ // List available tools
182
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
183
+ return {
184
+ tools: [
185
+ {
186
+ name: 'modular_context',
187
+ description: 'Process sources through the full context engineering pipeline with epistemic weighting, budget allocation, and attention ordering',
188
+ inputSchema: {
189
+ type: 'object',
190
+ properties: {
191
+ sources: {
192
+ type: 'array',
193
+ description: 'Array of source files to process',
194
+ items: {
195
+ type: 'object',
196
+ properties: {
197
+ path: { type: 'string', description: 'File path to source' },
198
+ name: { type: 'string', description: 'Human-readable name' },
199
+ type: {
200
+ type: 'string',
201
+ enum: ['ground-truth', 'signal', 'evidence', 'framework', 'hypothesis', 'guideline'],
202
+ description: 'Knowledge type (optional, will auto-classify if not provided)'
203
+ },
204
+ },
205
+ required: ['path', 'name'],
206
+ },
207
+ },
208
+ task: {
209
+ type: 'string',
210
+ description: 'The task or question this context will help answer',
211
+ },
212
+ tokenBudget: {
213
+ type: 'number',
214
+ description: 'Maximum tokens to allocate (default: 32000)',
215
+ },
216
+ },
217
+ required: ['sources', 'task'],
218
+ },
219
+ },
220
+ {
221
+ name: 'modular_tree',
222
+ description: 'Index a document into tree structure and return tree with headline summary',
223
+ inputSchema: {
224
+ type: 'object',
225
+ properties: {
226
+ path: {
227
+ type: 'string',
228
+ description: 'Path to the file to index',
229
+ },
230
+ },
231
+ required: ['path'],
232
+ },
233
+ },
234
+ {
235
+ name: 'modular_classify',
236
+ description: 'Auto-classify a document or content by knowledge type with suggested depth and budget weight',
237
+ inputSchema: {
238
+ type: 'object',
239
+ properties: {
240
+ path: {
241
+ type: 'string',
242
+ description: 'File path (optional if content provided)',
243
+ },
244
+ content: {
245
+ type: 'string',
246
+ description: 'Text content to classify (optional if path provided)',
247
+ },
248
+ },
249
+ },
250
+ },
251
+ {
252
+ name: 'modular_facts',
253
+ description: 'Extract structured facts from text using epistemic classification',
254
+ inputSchema: {
255
+ type: 'object',
256
+ properties: {
257
+ text: {
258
+ type: 'string',
259
+ description: 'Text to extract facts from',
260
+ },
261
+ agentId: {
262
+ type: 'string',
263
+ description: 'Agent identifier for fact attribution (optional)',
264
+ },
265
+ },
266
+ required: ['text'],
267
+ },
268
+ },
269
+ {
270
+ name: 'modular_consolidate',
271
+ description: 'Consolidate memory facts using ranking, deduplication, and promotion',
272
+ inputSchema: {
273
+ type: 'object',
274
+ properties: {
275
+ facts: {
276
+ type: 'array',
277
+ description: 'Array of facts to consolidate',
278
+ items: {
279
+ type: 'object',
280
+ properties: {
281
+ key: { type: 'string' },
282
+ value: { type: 'string' },
283
+ epistemicType: {
284
+ type: 'string',
285
+ enum: ['observation', 'inference', 'decision', 'hypothesis', 'contract'],
286
+ },
287
+ confidence: { type: 'number' },
288
+ source: { type: 'string' },
289
+ importance: { type: 'number' },
290
+ created_at: { type: 'number' },
291
+ accessed_at: { type: 'number' },
292
+ access_count: { type: 'number' },
293
+ },
294
+ required: ['key', 'value', 'epistemicType', 'confidence', 'source'],
295
+ },
296
+ },
297
+ },
298
+ required: ['facts'],
299
+ },
300
+ },
301
+ ],
302
+ };
303
+ });
304
+ // Handle tool calls
305
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
306
+ const { name, arguments: args } = request.params;
307
+ try {
308
+ switch (name) {
309
+ case 'modular_context': {
310
+ const input = args;
311
+ const result = await processModularContext(input);
312
+ return {
313
+ content: [
314
+ {
315
+ type: 'text',
316
+ text: JSON.stringify(result, null, 2),
317
+ },
318
+ ],
319
+ };
320
+ }
321
+ case 'modular_tree': {
322
+ const { path: filePath } = args;
323
+ if (!filePath) {
324
+ throw new McpError(ErrorCode.InvalidParams, 'path is required');
325
+ }
326
+ // SECURITY: Validate file path
327
+ try {
328
+ validateFilePath(filePath);
329
+ }
330
+ catch (error) {
331
+ throw new McpError(ErrorCode.InvalidRequest, `${error}`);
332
+ }
333
+ const content = await fs.readFile(filePath, 'utf-8');
334
+ const tree = indexMarkdown(filePath, content);
335
+ // Generate headlines summary
336
+ const headlines = extractHeadlines(tree.root);
337
+ return {
338
+ content: [
339
+ {
340
+ type: 'text',
341
+ text: JSON.stringify({
342
+ tree,
343
+ headlines: headlines.join('\n'),
344
+ }, null, 2),
345
+ },
346
+ ],
347
+ };
348
+ }
349
+ case 'modular_classify': {
350
+ const { path: filePath, content } = args;
351
+ if (!filePath && !content) {
352
+ throw new McpError(ErrorCode.InvalidParams, 'Either path or content is required');
353
+ }
354
+ let textContent = content;
355
+ if (!textContent && filePath) {
356
+ // SECURITY: Validate file path
357
+ try {
358
+ validateFilePath(filePath);
359
+ }
360
+ catch (error) {
361
+ throw new McpError(ErrorCode.InvalidRequest, `${error}`);
362
+ }
363
+ textContent = await fs.readFile(filePath, 'utf-8');
364
+ }
365
+ const classification = classifyKnowledge(filePath || 'content', textContent || '');
366
+ const typeInfo = KNOWLEDGE_TYPES[classification.knowledgeType];
367
+ return {
368
+ content: [
369
+ {
370
+ type: 'text',
371
+ text: JSON.stringify({
372
+ knowledgeType: classification.knowledgeType,
373
+ suggestedDepth: classification.depth,
374
+ budgetWeight: getBudgetWeight(classification.knowledgeType),
375
+ confidence: classification.confidence,
376
+ reason: classification.reason,
377
+ instruction: typeInfo.instruction,
378
+ }, null, 2),
379
+ },
380
+ ],
381
+ };
382
+ }
383
+ case 'modular_facts': {
384
+ const { text, agentId = 'mcp-client' } = args;
385
+ if (!text) {
386
+ throw new McpError(ErrorCode.InvalidParams, 'text is required');
387
+ }
388
+ const facts = extractFacts(text, agentId);
389
+ return {
390
+ content: [
391
+ {
392
+ type: 'text',
393
+ text: JSON.stringify(facts, null, 2),
394
+ },
395
+ ],
396
+ };
397
+ }
398
+ case 'modular_consolidate': {
399
+ const { facts } = args;
400
+ if (!Array.isArray(facts)) {
401
+ throw new McpError(ErrorCode.InvalidParams, 'facts must be an array');
402
+ }
403
+ const result = consolidateMemory(facts);
404
+ return {
405
+ content: [
406
+ {
407
+ type: 'text',
408
+ text: JSON.stringify(result, null, 2),
409
+ },
410
+ ],
411
+ };
412
+ }
413
+ default:
414
+ throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
415
+ }
416
+ }
417
+ catch (error) {
418
+ if (error instanceof McpError) {
419
+ throw error;
420
+ }
421
+ throw new McpError(ErrorCode.InternalError, `Error executing ${name}: ${error}`);
422
+ }
423
+ });
424
+ return server;
425
+ }
426
+ /**
427
+ * Extract headlines from tree for summary
428
+ */
429
+ function extractHeadlines(node) {
430
+ const headlines = [];
431
+ if (node.depth > 0) {
432
+ headlines.push('#'.repeat(node.depth) + ' ' + node.title);
433
+ }
434
+ for (const child of node.children) {
435
+ headlines.push(...extractHeadlines(child));
436
+ }
437
+ return headlines;
438
+ }
439
+ /**
440
+ * Get budget weight for knowledge type
441
+ */
442
+ function getBudgetWeight(type) {
443
+ const weights = {
444
+ 'ground-truth': 0.30,
445
+ 'guideline': 0.15,
446
+ 'framework': 0.15,
447
+ 'evidence': 0.20,
448
+ 'signal': 0.12,
449
+ 'hypothesis': 0.08,
450
+ };
451
+ return weights[type];
452
+ }
453
+ /**
454
+ * Consolidate memory facts with ranking and deduplication
455
+ */
456
+ function consolidateMemory(facts) {
457
+ // Simulate consolidation using ranking algorithm
458
+ const query = "general"; // Default query for ranking
459
+ const rankedFacts = rankFacts(facts, query, facts.length);
460
+ // Split based on scores and patterns
461
+ const kept = rankedFacts.filter(f => f.confidence > 0.7);
462
+ const pruned = rankedFacts.filter(f => f.confidence <= 0.3);
463
+ // Find potential merges (facts with similar keys/values)
464
+ const merged = [];
465
+ const mergedSet = new Set();
466
+ for (let i = 0; i < kept.length; i++) {
467
+ if (mergedSet.has(kept[i].key))
468
+ continue;
469
+ const similar = kept.slice(i + 1).filter(f => !mergedSet.has(f.key) &&
470
+ (f.key.startsWith(kept[i].key) || kept[i].key.startsWith(f.key) ||
471
+ f.value.includes(kept[i].value.slice(0, 20)) || kept[i].value.includes(f.value.slice(0, 20))));
472
+ if (similar.length > 0) {
473
+ merged.push({
474
+ primary: kept[i],
475
+ merged: similar,
476
+ });
477
+ similar.forEach(f => mergedSet.add(f.key));
478
+ mergedSet.add(kept[i].key);
479
+ }
480
+ }
481
+ // Promote high-confidence, frequently accessed facts
482
+ const promoted = kept.filter(f => f.confidence > 0.9 &&
483
+ (f.access_count || 0) > 3 &&
484
+ !mergedSet.has(f.key));
485
+ return {
486
+ kept: kept.filter(f => !mergedSet.has(f.key) && !promoted.includes(f)),
487
+ pruned,
488
+ merged,
489
+ promoted,
490
+ };
491
+ }
492
+ //# sourceMappingURL=modular-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modular-server.js","sourceRoot":"","sources":["../../../server/mcp/modular-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * MCP Transport Layer
3
+ *
4
+ * Handles stdio and HTTP transport for the MCP server
5
+ */
6
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
+ export interface TransportOptions {
8
+ /**
9
+ * Transport type: 'stdio' for CLI, 'sse' for HTTP
10
+ */
11
+ type: 'stdio' | 'sse';
12
+ /**
13
+ * Port for SSE transport (ignored for stdio)
14
+ */
15
+ port?: number;
16
+ /**
17
+ * Host for SSE transport (default: 'localhost')
18
+ */
19
+ host?: string;
20
+ }
21
+ /**
22
+ * Create and run transport for MCP server
23
+ */
24
+ export declare function runTransport(server: Server, options?: TransportOptions): Promise<void>;
25
+ /**
26
+ * Graceful shutdown handler
27
+ */
28
+ export declare function setupGracefulShutdown(server: Server): void;
29
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../server/mcp/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IAEtB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB/G;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA6B1D"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * MCP Transport Layer
3
+ *
4
+ * Handles stdio and HTTP transport for the MCP server
5
+ */
6
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
7
+ /**
8
+ * Create and run transport for MCP server
9
+ */
10
+ export async function runTransport(server, options = { type: 'stdio' }) {
11
+ const { type } = options;
12
+ switch (type) {
13
+ case 'stdio': {
14
+ // Use stdio transport for CLI usage
15
+ const transport = new StdioServerTransport();
16
+ await server.connect(transport);
17
+ console.error('Modular MCP Server running on stdio');
18
+ break;
19
+ }
20
+ case 'sse': {
21
+ // For HTTP mode, we'll use a simple express server
22
+ // The SSE transport in MCP SDK might have a different API
23
+ console.error(`HTTP transport not yet implemented. Use stdio transport instead.`);
24
+ console.error(`To use HTTP, run: npx modular-mcp-server`);
25
+ throw new Error('HTTP transport not implemented');
26
+ }
27
+ default:
28
+ throw new Error(`Unsupported transport type: ${type}`);
29
+ }
30
+ }
31
+ /**
32
+ * Graceful shutdown handler
33
+ */
34
+ export function setupGracefulShutdown(server) {
35
+ async function shutdown(signal) {
36
+ console.error(`\nReceived ${signal}, shutting down gracefully...`);
37
+ try {
38
+ await server.close();
39
+ console.error('MCP Server closed successfully');
40
+ process.exit(0);
41
+ }
42
+ catch (error) {
43
+ console.error('Error during shutdown:', error);
44
+ process.exit(1);
45
+ }
46
+ }
47
+ // Handle common termination signals
48
+ process.on('SIGINT', () => shutdown('SIGINT'));
49
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
50
+ process.on('SIGQUIT', () => shutdown('SIGQUIT'));
51
+ // Handle uncaught exceptions and unhandled rejections
52
+ process.on('uncaughtException', (error) => {
53
+ console.error('Uncaught Exception:', error);
54
+ shutdown('uncaughtException');
55
+ });
56
+ process.on('unhandledRejection', (reason, promise) => {
57
+ console.error('Unhandled Rejection at:', promise, 'reason:', reason);
58
+ shutdown('unhandledRejection');
59
+ });
60
+ }
61
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../server/mcp/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAoBjF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,UAA4B,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9F,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,oCAAoC;YACpC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACrD,MAAM;QACR,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,mDAAmD;YACnD,0DAA0D;YAC1D,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,KAAK,UAAU,QAAQ,CAAC,MAAc;QACpC,OAAO,CAAC,KAAK,CAAC,cAAc,MAAM,+BAA+B,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEjD,sDAAsD;IACtD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;QACxC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5C,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QACnD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=agent-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-sdk.d.ts","sourceRoot":"","sources":["../../../server/routes/agent-sdk.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA+GxB,eAAe,MAAM,CAAC"}