@defai.digital/mcp-server 13.0.3
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/LICENSE +214 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +7 -0
- package/dist/bin.js.map +1 -0
- package/dist/bootstrap.d.ts +89 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +161 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/rate-limiter.d.ts +136 -0
- package/dist/middleware/rate-limiter.d.ts.map +1 -0
- package/dist/middleware/rate-limiter.js +262 -0
- package/dist/middleware/rate-limiter.js.map +1 -0
- package/dist/prompts/agent-guide.d.ts +16 -0
- package/dist/prompts/agent-guide.d.ts.map +1 -0
- package/dist/prompts/agent-guide.js +391 -0
- package/dist/prompts/agent-guide.js.map +1 -0
- package/dist/prompts/explain-workflow.d.ts +15 -0
- package/dist/prompts/explain-workflow.d.ts.map +1 -0
- package/dist/prompts/explain-workflow.js +157 -0
- package/dist/prompts/explain-workflow.js.map +1 -0
- package/dist/prompts/index.d.ts +39 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +83 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/review-changes.d.ts +15 -0
- package/dist/prompts/review-changes.d.ts.map +1 -0
- package/dist/prompts/review-changes.js +102 -0
- package/dist/prompts/review-changes.js.map +1 -0
- package/dist/prompts/troubleshoot-session.d.ts +15 -0
- package/dist/prompts/troubleshoot-session.d.ts.map +1 -0
- package/dist/prompts/troubleshoot-session.js +156 -0
- package/dist/prompts/troubleshoot-session.js.map +1 -0
- package/dist/registry-accessor.d.ts +83 -0
- package/dist/registry-accessor.d.ts.map +1 -0
- package/dist/registry-accessor.js +153 -0
- package/dist/registry-accessor.js.map +1 -0
- package/dist/resources/agents.d.ts +40 -0
- package/dist/resources/agents.d.ts.map +1 -0
- package/dist/resources/agents.js +123 -0
- package/dist/resources/agents.js.map +1 -0
- package/dist/resources/config.d.ts +57 -0
- package/dist/resources/config.d.ts.map +1 -0
- package/dist/resources/config.js +222 -0
- package/dist/resources/config.js.map +1 -0
- package/dist/resources/index.d.ts +38 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +132 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/policies.d.ts +40 -0
- package/dist/resources/policies.d.ts.map +1 -0
- package/dist/resources/policies.js +122 -0
- package/dist/resources/policies.js.map +1 -0
- package/dist/resources/sessions.d.ts +30 -0
- package/dist/resources/sessions.d.ts.map +1 -0
- package/dist/resources/sessions.js +64 -0
- package/dist/resources/sessions.js.map +1 -0
- package/dist/resources/workflows.d.ts +40 -0
- package/dist/resources/workflows.d.ts.map +1 -0
- package/dist/resources/workflows.js +143 -0
- package/dist/resources/workflows.js.map +1 -0
- package/dist/schema-registry.d.ts +23 -0
- package/dist/schema-registry.d.ts.map +1 -0
- package/dist/schema-registry.js +225 -0
- package/dist/schema-registry.js.map +1 -0
- package/dist/server.d.ts +63 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +393 -0
- package/dist/server.js.map +1 -0
- package/dist/session-accessor.d.ts +23 -0
- package/dist/session-accessor.d.ts.map +1 -0
- package/dist/session-accessor.js +39 -0
- package/dist/session-accessor.js.map +1 -0
- package/dist/shared-registry.d.ts +23 -0
- package/dist/shared-registry.d.ts.map +1 -0
- package/dist/shared-registry.js +235 -0
- package/dist/shared-registry.js.map +1 -0
- package/dist/stdio.d.ts +6 -0
- package/dist/stdio.d.ts.map +1 -0
- package/dist/stdio.js +152 -0
- package/dist/stdio.js.map +1 -0
- package/dist/tool-namespacing.d.ts +28 -0
- package/dist/tool-namespacing.d.ts.map +1 -0
- package/dist/tool-namespacing.js +80 -0
- package/dist/tool-namespacing.js.map +1 -0
- package/dist/tools/ability.d.ts +55 -0
- package/dist/tools/ability.d.ts.map +1 -0
- package/dist/tools/ability.js +560 -0
- package/dist/tools/ability.js.map +1 -0
- package/dist/tools/agent.d.ts +73 -0
- package/dist/tools/agent.d.ts.map +1 -0
- package/dist/tools/agent.js +895 -0
- package/dist/tools/agent.js.map +1 -0
- package/dist/tools/config.d.ts +36 -0
- package/dist/tools/config.d.ts.map +1 -0
- package/dist/tools/config.js +265 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/design.d.ts +42 -0
- package/dist/tools/design.d.ts.map +1 -0
- package/dist/tools/design.js +736 -0
- package/dist/tools/design.js.map +1 -0
- package/dist/tools/discuss.d.ts +40 -0
- package/dist/tools/discuss.d.ts.map +1 -0
- package/dist/tools/discuss.js +331 -0
- package/dist/tools/discuss.js.map +1 -0
- package/dist/tools/file-system.d.ts +63 -0
- package/dist/tools/file-system.d.ts.map +1 -0
- package/dist/tools/file-system.js +513 -0
- package/dist/tools/file-system.js.map +1 -0
- package/dist/tools/guard.d.ts +29 -0
- package/dist/tools/guard.d.ts.map +1 -0
- package/dist/tools/guard.js +311 -0
- package/dist/tools/guard.js.map +1 -0
- package/dist/tools/index.d.ts +35 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +178 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/memory.d.ts +101 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +704 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/orchestration.d.ts +58 -0
- package/dist/tools/orchestration.d.ts.map +1 -0
- package/dist/tools/orchestration.js +714 -0
- package/dist/tools/orchestration.js.map +1 -0
- package/dist/tools/review.d.ts +40 -0
- package/dist/tools/review.d.ts.map +1 -0
- package/dist/tools/review.js +319 -0
- package/dist/tools/review.js.map +1 -0
- package/dist/tools/scaffold.d.ts +27 -0
- package/dist/tools/scaffold.d.ts.map +1 -0
- package/dist/tools/scaffold.js +495 -0
- package/dist/tools/scaffold.js.map +1 -0
- package/dist/tools/session.d.ts +75 -0
- package/dist/tools/session.d.ts.map +1 -0
- package/dist/tools/session.js +749 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/telemetry.d.ts +58 -0
- package/dist/tools/telemetry.d.ts.map +1 -0
- package/dist/tools/telemetry.js +638 -0
- package/dist/tools/telemetry.js.map +1 -0
- package/dist/tools/trace.d.ts +29 -0
- package/dist/tools/trace.d.ts.map +1 -0
- package/dist/tools/trace.js +191 -0
- package/dist/tools/trace.js.map +1 -0
- package/dist/tools/workflow.d.ts +26 -0
- package/dist/tools/workflow.d.ts.map +1 -0
- package/dist/tools/workflow.js +269 -0
- package/dist/tools/workflow.js.map +1 -0
- package/dist/trace-wrapper.d.ts +79 -0
- package/dist/trace-wrapper.d.ts.map +1 -0
- package/dist/trace-wrapper.js +151 -0
- package/dist/trace-wrapper.js.map +1 -0
- package/dist/types.d.ts +185 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/artifact-store.d.ts +49 -0
- package/dist/utils/artifact-store.d.ts.map +1 -0
- package/dist/utils/artifact-store.js +102 -0
- package/dist/utils/artifact-store.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/response.d.ts +139 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +293 -0
- package/dist/utils/response.js.map +1 -0
- package/dist/validation.d.ts +223 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +372 -0
- package/dist/validation.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Agent Registry
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for agent registry across all MCP components.
|
|
5
|
+
* Provides unified access to agents with auto-loading of example agents.
|
|
6
|
+
*
|
|
7
|
+
* Now includes ability integration (INV-AGT-ABL-001, INV-AGT-ABL-002, INV-AGT-ABL-003)
|
|
8
|
+
*
|
|
9
|
+
* ARCHITECTURE NOTE: This file imports from tools/index.js to get TOOL_HANDLERS.
|
|
10
|
+
* To avoid circular dependencies, accessor functions are in registry-accessor.ts.
|
|
11
|
+
* Tool files should import from registry-accessor.ts, NOT from this file.
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from 'node:fs';
|
|
14
|
+
import * as path from 'node:path';
|
|
15
|
+
import { createPersistentAgentRegistry, createEnhancedAgentExecutor, createProviderPromptExecutor, createAgentLoader, DEFAULT_AGENT_DOMAIN_CONFIG, } from '@defai.digital/agent-domain';
|
|
16
|
+
import { createToolExecutionSuccess, createToolExecutionFailure, ToolExecutorErrorCodes, DATA_DIR_NAME, AGENTS_FILENAME, TIMEOUT_PROVIDER_DEFAULT, LIMIT_ABILITY_TOKENS_AGENT, PROVIDER_DEFAULT, } from '@defai.digital/contracts';
|
|
17
|
+
import { createAbilityRegistry, createAbilityLoader, createAbilityManager, DEFAULT_ABILITY_DOMAIN_CONFIG, } from '@defai.digital/ability-domain';
|
|
18
|
+
// Provider registry from bootstrap (composition root)
|
|
19
|
+
import { createProviderRegistry } from './bootstrap.js';
|
|
20
|
+
import { TOOL_HANDLERS } from './tools/index.js';
|
|
21
|
+
import { setInitializer, setSingletons, resetSharedRegistry as resetAccessor, } from './registry-accessor.js';
|
|
22
|
+
// Re-export accessor functions for backwards compatibility
|
|
23
|
+
// Tools should import directly from registry-accessor.ts
|
|
24
|
+
export { getSharedRegistry, getSharedExecutor, getSharedAbilityRegistry, getSharedAbilityManager, getSharedToolExecutor, isInitialized, registerAgent, getAgent, listAgents, removeAgent, executeAgent, } from './registry-accessor.js';
|
|
25
|
+
// Storage path for persistent agents
|
|
26
|
+
const AGENT_STORAGE_PATH = path.join(process.cwd(), DATA_DIR_NAME, AGENTS_FILENAME);
|
|
27
|
+
// Path to example agents (relative to workspace root)
|
|
28
|
+
const EXAMPLE_AGENTS_DIR = path.join(process.cwd(), 'examples', 'agents');
|
|
29
|
+
// Path to example abilities (relative to workspace root)
|
|
30
|
+
const EXAMPLE_ABILITIES_DIR = path.join(process.cwd(), DEFAULT_ABILITY_DOMAIN_CONFIG.abilitiesDir);
|
|
31
|
+
// Local state for provider registry (not in accessor since it's provider-adapter specific)
|
|
32
|
+
let _providerRegistry = null;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a tool executor bridge that connects to MCP tool handlers
|
|
35
|
+
*
|
|
36
|
+
* INV-TOOL-001: Validates inputs via TOOL_HANDLERS (which use wrapHandlersWithInputValidation)
|
|
37
|
+
* INV-TOOL-002: Freezes outputs via createToolExecutionSuccess/Failure
|
|
38
|
+
* INV-TOOL-003: Returns errors gracefully for unknown tools
|
|
39
|
+
*/
|
|
40
|
+
function createToolExecutorBridge(handlers) {
|
|
41
|
+
const handlerMap = new Map(Object.entries(handlers));
|
|
42
|
+
return {
|
|
43
|
+
async execute(toolName, args) {
|
|
44
|
+
const startTime = Date.now();
|
|
45
|
+
const handler = handlerMap.get(toolName);
|
|
46
|
+
if (!handler) {
|
|
47
|
+
// INV-TOOL-003: Unknown tools return error, not throw
|
|
48
|
+
return createToolExecutionFailure(`Tool not found: ${toolName}`, ToolExecutorErrorCodes.TOOL_NOT_FOUND, false, Date.now() - startTime);
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
// Execute the handler (already validated by wrapHandlersWithInputValidation)
|
|
52
|
+
const result = await handler(args);
|
|
53
|
+
// Parse the MCPToolResult
|
|
54
|
+
const output = parseToolResultContent(result);
|
|
55
|
+
if (result.isError) {
|
|
56
|
+
return createToolExecutionFailure(typeof output === 'string' ? output : JSON.stringify(output), ToolExecutorErrorCodes.TOOL_EXECUTION_ERROR, true, // Most tool errors are retryable
|
|
57
|
+
Date.now() - startTime);
|
|
58
|
+
}
|
|
59
|
+
// INV-TOOL-002: createToolExecutionSuccess freezes the result
|
|
60
|
+
return createToolExecutionSuccess(output, Date.now() - startTime);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
return createToolExecutionFailure(error instanceof Error ? error.message : 'Unknown tool execution error', ToolExecutorErrorCodes.TOOL_EXECUTION_ERROR, true, Date.now() - startTime);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
isToolAvailable(toolName) {
|
|
67
|
+
return handlerMap.has(toolName);
|
|
68
|
+
},
|
|
69
|
+
getAvailableTools() {
|
|
70
|
+
return [...handlerMap.keys()];
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Parse MCPToolResult content into a usable value
|
|
76
|
+
*/
|
|
77
|
+
function parseToolResultContent(result) {
|
|
78
|
+
if (!result.content || result.content.length === 0) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
// Get the first text content
|
|
82
|
+
const textContent = result.content.find((c) => c.type === 'text');
|
|
83
|
+
if (textContent?.text === undefined) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
// Try to parse as JSON
|
|
87
|
+
try {
|
|
88
|
+
return JSON.parse(textContent.text);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// Return as string if not JSON
|
|
92
|
+
return textContent.text;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Initialize shared registry with example agents and abilities
|
|
97
|
+
*/
|
|
98
|
+
async function initializeRegistry() {
|
|
99
|
+
// Create provider registry
|
|
100
|
+
_providerRegistry = createProviderRegistry();
|
|
101
|
+
// Create prompt executor
|
|
102
|
+
const promptExecutor = createProviderPromptExecutor(_providerRegistry, {
|
|
103
|
+
defaultProvider: PROVIDER_DEFAULT,
|
|
104
|
+
defaultTimeout: TIMEOUT_PROVIDER_DEFAULT,
|
|
105
|
+
});
|
|
106
|
+
// Create tool executor bridge (INV-TOOL-001, INV-TOOL-002, INV-TOOL-003)
|
|
107
|
+
const toolExecutor = createToolExecutorBridge(TOOL_HANDLERS);
|
|
108
|
+
// Create ability registry and manager (INV-AGT-ABL-001)
|
|
109
|
+
const abilityRegistry = createAbilityRegistry();
|
|
110
|
+
const abilityManager = createAbilityManager(abilityRegistry);
|
|
111
|
+
// Load example abilities
|
|
112
|
+
await loadExampleAbilities(abilityRegistry);
|
|
113
|
+
// Create persistent agent registry
|
|
114
|
+
const registry = createPersistentAgentRegistry({
|
|
115
|
+
storagePath: AGENT_STORAGE_PATH,
|
|
116
|
+
createDir: true,
|
|
117
|
+
loadOnInit: true,
|
|
118
|
+
});
|
|
119
|
+
// Create enhanced executor with full features including ability and tool injection
|
|
120
|
+
const config = {
|
|
121
|
+
...DEFAULT_AGENT_DOMAIN_CONFIG,
|
|
122
|
+
promptExecutor,
|
|
123
|
+
// INV-TOOL-001, INV-TOOL-002, INV-TOOL-003: Tool executor for MCP tool calls
|
|
124
|
+
toolExecutor,
|
|
125
|
+
// INV-AGT-ABL-001: Ability manager for prompt injection
|
|
126
|
+
abilityManager,
|
|
127
|
+
enableAbilityInjection: true,
|
|
128
|
+
maxAbilityTokens: LIMIT_ABILITY_TOKENS_AGENT,
|
|
129
|
+
checkpointConfig: {
|
|
130
|
+
enabled: true,
|
|
131
|
+
intervalSteps: 1,
|
|
132
|
+
retentionHours: 24,
|
|
133
|
+
},
|
|
134
|
+
parallelConfig: {
|
|
135
|
+
enabled: true,
|
|
136
|
+
maxConcurrency: 5,
|
|
137
|
+
failureStrategy: 'failFast',
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
const executor = createEnhancedAgentExecutor(registry, config);
|
|
141
|
+
// Load example agents if directory exists
|
|
142
|
+
await loadExampleAgents(registry);
|
|
143
|
+
// Set singletons in accessor module
|
|
144
|
+
setSingletons({
|
|
145
|
+
registry,
|
|
146
|
+
executor,
|
|
147
|
+
abilityRegistry,
|
|
148
|
+
abilityManager,
|
|
149
|
+
toolExecutor,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Load example abilities from examples/abilities directory
|
|
154
|
+
*/
|
|
155
|
+
async function loadExampleAbilities(abilityRegistry) {
|
|
156
|
+
if (!fs.existsSync(EXAMPLE_ABILITIES_DIR)) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
try {
|
|
160
|
+
const loader = createAbilityLoader({
|
|
161
|
+
abilitiesDir: EXAMPLE_ABILITIES_DIR,
|
|
162
|
+
});
|
|
163
|
+
const abilities = await loader.loadAll();
|
|
164
|
+
for (const ability of abilities) {
|
|
165
|
+
try {
|
|
166
|
+
await abilityRegistry.register(ability);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
// Log duplicate registration but don't fail
|
|
170
|
+
const isDuplicate = error instanceof Error && error.message.includes('already');
|
|
171
|
+
if (!isDuplicate) {
|
|
172
|
+
console.warn(`Failed to register ability ${ability.abilityId}:`, error instanceof Error ? error.message : error);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
// Log but don't fail - example abilities are optional
|
|
179
|
+
console.warn('Failed to load example abilities:', error instanceof Error ? error.message : error);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Load example agents from examples/agents directory
|
|
184
|
+
*/
|
|
185
|
+
async function loadExampleAgents(registry) {
|
|
186
|
+
if (!fs.existsSync(EXAMPLE_AGENTS_DIR)) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
try {
|
|
190
|
+
const loader = createAgentLoader({
|
|
191
|
+
agentsDir: EXAMPLE_AGENTS_DIR,
|
|
192
|
+
extensions: ['.json', '.yaml', '.yml'],
|
|
193
|
+
});
|
|
194
|
+
const exampleAgents = await loader.loadAll();
|
|
195
|
+
for (const agent of exampleAgents) {
|
|
196
|
+
// Only load if not already registered
|
|
197
|
+
const exists = await registry.exists(agent.agentId);
|
|
198
|
+
if (!exists) {
|
|
199
|
+
try {
|
|
200
|
+
await registry.register(agent);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
// Log duplicate registration but don't fail
|
|
204
|
+
const isDuplicate = error instanceof Error && error.message.includes('already');
|
|
205
|
+
if (!isDuplicate) {
|
|
206
|
+
console.warn(`Failed to register agent ${agent.agentId}:`, error instanceof Error ? error.message : error);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
// Log but don't fail - example agents are optional
|
|
214
|
+
console.warn('Failed to load example agents:', error instanceof Error ? error.message : error);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get the shared provider registry
|
|
219
|
+
*/
|
|
220
|
+
export async function getSharedProviderRegistry() {
|
|
221
|
+
// Ensure initialization is complete by calling any accessor
|
|
222
|
+
const { getSharedRegistry } = await import('./registry-accessor.js');
|
|
223
|
+
await getSharedRegistry();
|
|
224
|
+
return _providerRegistry;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Reset shared registry (for testing)
|
|
228
|
+
*/
|
|
229
|
+
export function resetSharedRegistry() {
|
|
230
|
+
resetAccessor();
|
|
231
|
+
_providerRegistry = null;
|
|
232
|
+
}
|
|
233
|
+
// Register the initializer with the accessor module
|
|
234
|
+
setInitializer(initializeRegistry);
|
|
235
|
+
//# sourceMappingURL=shared-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-registry.js","sourceRoot":"","sources":["../src/shared-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/stdio.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAmKpD"}
|
package/dist/stdio.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
import { MCP_SERVER_NAME, DEFAULT_SCHEMA_VERSION } from '@defai.digital/contracts';
|
|
5
|
+
import { ALL_TOOLS, TOOL_HANDLERS } from './tools/index.js';
|
|
6
|
+
import { ALL_RESOURCES, readResource } from './resources/index.js';
|
|
7
|
+
import { ALL_PROMPTS, executePrompt, getPrompt } from './prompts/index.js';
|
|
8
|
+
import { getToolPrefix, namespaceTools, resolveToolName } from './tool-namespacing.js';
|
|
9
|
+
/**
|
|
10
|
+
* Runs the MCP server over stdio using the official MCP SDK
|
|
11
|
+
* This is the main entry point for the MCP server binary
|
|
12
|
+
*/
|
|
13
|
+
export async function runStdioServer() {
|
|
14
|
+
const toolPrefix = getToolPrefix();
|
|
15
|
+
const listableTools = namespaceTools(ALL_TOOLS, toolPrefix);
|
|
16
|
+
// Create MCP server with official SDK
|
|
17
|
+
const server = new Server({
|
|
18
|
+
name: MCP_SERVER_NAME,
|
|
19
|
+
version: DEFAULT_SCHEMA_VERSION, // Server software version, not protocol version
|
|
20
|
+
}, {
|
|
21
|
+
capabilities: {
|
|
22
|
+
tools: {},
|
|
23
|
+
resources: {},
|
|
24
|
+
prompts: {},
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
// Handle tools/list
|
|
28
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
29
|
+
return {
|
|
30
|
+
tools: listableTools.map((tool) => ({
|
|
31
|
+
name: tool.name,
|
|
32
|
+
description: tool.description,
|
|
33
|
+
inputSchema: tool.inputSchema,
|
|
34
|
+
})),
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
// Handle tools/call
|
|
38
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
39
|
+
const { name, arguments: args } = request.params;
|
|
40
|
+
const internalName = resolveToolName(name, toolPrefix);
|
|
41
|
+
const handler = TOOL_HANDLERS[internalName];
|
|
42
|
+
if (!handler) {
|
|
43
|
+
return {
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
46
|
+
type: 'text',
|
|
47
|
+
text: `Unknown tool: ${name}`,
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
isError: true,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const result = await handler(args ?? {});
|
|
55
|
+
// Map our MCPToolResult to SDK's CallToolResult format
|
|
56
|
+
return {
|
|
57
|
+
content: result.content.map((c) => ({
|
|
58
|
+
type: c.type,
|
|
59
|
+
text: c.text,
|
|
60
|
+
data: c.data,
|
|
61
|
+
mimeType: c.mimeType,
|
|
62
|
+
})),
|
|
63
|
+
isError: result.isError,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return {
|
|
68
|
+
content: [
|
|
69
|
+
{
|
|
70
|
+
type: 'text',
|
|
71
|
+
text: `Error: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
isError: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
// Handle resources/list
|
|
79
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
80
|
+
return {
|
|
81
|
+
resources: ALL_RESOURCES,
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
// Handle resources/read
|
|
85
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
86
|
+
const { uri } = request.params;
|
|
87
|
+
try {
|
|
88
|
+
const content = await readResource(uri);
|
|
89
|
+
return {
|
|
90
|
+
contents: [content],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
throw new Error(`Failed to read resource: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
// Handle prompts/list
|
|
98
|
+
server.setRequestHandler(ListPromptsRequestSchema, async () => {
|
|
99
|
+
return {
|
|
100
|
+
prompts: ALL_PROMPTS,
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
// Handle prompts/get
|
|
104
|
+
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
105
|
+
const { name, arguments: args } = request.params;
|
|
106
|
+
const prompt = getPrompt(name);
|
|
107
|
+
if (!prompt) {
|
|
108
|
+
throw new Error(`Unknown prompt: ${name}`);
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
const result = await executePrompt(name, args ?? {});
|
|
112
|
+
// Check if result is an error
|
|
113
|
+
if ('error' in result) {
|
|
114
|
+
throw new Error(result.message);
|
|
115
|
+
}
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
throw new Error(`Failed to execute prompt: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
// Connect to stdio transport
|
|
123
|
+
const transport = new StdioServerTransport();
|
|
124
|
+
await server.connect(transport);
|
|
125
|
+
// Log startup to stderr (not stdout, to avoid polluting MCP protocol)
|
|
126
|
+
console.error('AutomatosX MCP server started');
|
|
127
|
+
// Keep the server running until stdin closes
|
|
128
|
+
// This is necessary when running through CLI wrappers
|
|
129
|
+
await new Promise((resolve) => {
|
|
130
|
+
// Handle case where stdin is already closed
|
|
131
|
+
if (process.stdin.readableEnded) {
|
|
132
|
+
resolve();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// Create handlers that clean up after resolution
|
|
136
|
+
const cleanup = () => {
|
|
137
|
+
process.stdin.removeListener('end', onEnd);
|
|
138
|
+
process.stdin.removeListener('close', onClose);
|
|
139
|
+
};
|
|
140
|
+
const onEnd = () => {
|
|
141
|
+
cleanup();
|
|
142
|
+
resolve();
|
|
143
|
+
};
|
|
144
|
+
const onClose = () => {
|
|
145
|
+
cleanup();
|
|
146
|
+
resolve();
|
|
147
|
+
};
|
|
148
|
+
process.stdin.on('end', onEnd);
|
|
149
|
+
process.stdin.on('close', onClose);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { MCPTool } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Reads and sanitizes the tool prefix from environment or provided override.
|
|
4
|
+
*
|
|
5
|
+
* Priority order:
|
|
6
|
+
* 1. prefixOverride parameter (for testing/programmatic use)
|
|
7
|
+
* 2. AX_MCP_TOOL_PREFIX environment variable
|
|
8
|
+
* 3. MCP_TOOL_PREFIX_DEFAULT constant ('ax')
|
|
9
|
+
*
|
|
10
|
+
* Prefix is limited to [a-zA-Z0-9_-] per SEP-986 and will be suffixed with '_'.
|
|
11
|
+
* To disable prefixing, set AX_MCP_TOOL_PREFIX='' (empty string).
|
|
12
|
+
*
|
|
13
|
+
* Example tool names with default prefix:
|
|
14
|
+
* - ax_config_set
|
|
15
|
+
* - ax_agent_list
|
|
16
|
+
* - ax_workflow_run
|
|
17
|
+
*/
|
|
18
|
+
export declare function getToolPrefix(prefixOverride?: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Applies the configured prefix to tool names and drops duplicates after prefixing.
|
|
21
|
+
* Returns a new array to avoid mutating the original tool definitions.
|
|
22
|
+
*/
|
|
23
|
+
export declare function namespaceTools(tools: MCPTool[], prefixOverride?: string): MCPTool[];
|
|
24
|
+
/**
|
|
25
|
+
* Strips the configured prefix from a tool name when dispatching calls.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveToolName(requestedName: string, prefixOverride?: string): string;
|
|
28
|
+
//# sourceMappingURL=tool-namespacing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-namespacing.d.ts","sourceRoot":"","sources":["../src/tool-namespacing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAyB7D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,CA2BnF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAMtF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { MCP_TOOL_PREFIX_DEFAULT, ENV_MCP_TOOL_PREFIX } from '@defai.digital/contracts';
|
|
2
|
+
/**
|
|
3
|
+
* Reads and sanitizes the tool prefix from environment or provided override.
|
|
4
|
+
*
|
|
5
|
+
* Priority order:
|
|
6
|
+
* 1. prefixOverride parameter (for testing/programmatic use)
|
|
7
|
+
* 2. AX_MCP_TOOL_PREFIX environment variable
|
|
8
|
+
* 3. MCP_TOOL_PREFIX_DEFAULT constant ('ax')
|
|
9
|
+
*
|
|
10
|
+
* Prefix is limited to [a-zA-Z0-9_-] per SEP-986 and will be suffixed with '_'.
|
|
11
|
+
* To disable prefixing, set AX_MCP_TOOL_PREFIX='' (empty string).
|
|
12
|
+
*
|
|
13
|
+
* Example tool names with default prefix:
|
|
14
|
+
* - ax_config_set
|
|
15
|
+
* - ax_agent_list
|
|
16
|
+
* - ax_workflow_run
|
|
17
|
+
*/
|
|
18
|
+
export function getToolPrefix(prefixOverride) {
|
|
19
|
+
// Check for explicit override first
|
|
20
|
+
if (prefixOverride !== undefined) {
|
|
21
|
+
const rawPrefix = prefixOverride.trim();
|
|
22
|
+
if (rawPrefix === '') {
|
|
23
|
+
return '';
|
|
24
|
+
}
|
|
25
|
+
const sanitized = rawPrefix.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
26
|
+
return sanitized.endsWith('_') ? sanitized : `${sanitized}_`;
|
|
27
|
+
}
|
|
28
|
+
// Check environment variable (explicit empty string disables prefixing)
|
|
29
|
+
const envPrefix = process.env[ENV_MCP_TOOL_PREFIX];
|
|
30
|
+
if (envPrefix !== undefined) {
|
|
31
|
+
const rawPrefix = envPrefix.trim();
|
|
32
|
+
if (rawPrefix === '') {
|
|
33
|
+
return '';
|
|
34
|
+
}
|
|
35
|
+
const sanitized = rawPrefix.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
36
|
+
return sanitized.endsWith('_') ? sanitized : `${sanitized}_`;
|
|
37
|
+
}
|
|
38
|
+
// Use default prefix
|
|
39
|
+
const sanitized = MCP_TOOL_PREFIX_DEFAULT.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
40
|
+
return sanitized.endsWith('_') ? sanitized : `${sanitized}_`;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Applies the configured prefix to tool names and drops duplicates after prefixing.
|
|
44
|
+
* Returns a new array to avoid mutating the original tool definitions.
|
|
45
|
+
*/
|
|
46
|
+
export function namespaceTools(tools, prefixOverride) {
|
|
47
|
+
const prefix = getToolPrefix(prefixOverride);
|
|
48
|
+
if (prefix === '') {
|
|
49
|
+
return tools;
|
|
50
|
+
}
|
|
51
|
+
const seen = new Set();
|
|
52
|
+
const duplicates = [];
|
|
53
|
+
const namespaced = tools
|
|
54
|
+
.map((tool) => {
|
|
55
|
+
const namespacedName = tool.name.startsWith(prefix) ? tool.name : `${prefix}${tool.name}`;
|
|
56
|
+
if (seen.has(namespacedName)) {
|
|
57
|
+
duplicates.push(namespacedName);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
seen.add(namespacedName);
|
|
61
|
+
return { ...tool, name: namespacedName };
|
|
62
|
+
})
|
|
63
|
+
.filter((tool) => tool !== null);
|
|
64
|
+
if (duplicates.length > 0) {
|
|
65
|
+
// stderr to avoid polluting MCP protocol stdout
|
|
66
|
+
console.warn(`[MCP] Dropping duplicate tool names after prefixing: ${duplicates.join(', ')}`);
|
|
67
|
+
}
|
|
68
|
+
return namespaced;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Strips the configured prefix from a tool name when dispatching calls.
|
|
72
|
+
*/
|
|
73
|
+
export function resolveToolName(requestedName, prefixOverride) {
|
|
74
|
+
const prefix = getToolPrefix(prefixOverride);
|
|
75
|
+
if (prefix !== '' && requestedName.startsWith(prefix)) {
|
|
76
|
+
return requestedName.slice(prefix.length);
|
|
77
|
+
}
|
|
78
|
+
return requestedName;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=tool-namespacing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-namespacing.js","sourceRoot":"","sources":["../src/tool-namespacing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ability MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing abilities - reusable knowledge modules for agents.
|
|
5
|
+
* Uses the shared registry from registry-accessor.ts for unified ability management.
|
|
6
|
+
*/
|
|
7
|
+
import type { MCPTool, ToolHandler } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Ability list tool definition
|
|
10
|
+
* INV-MCP-004: Idempotent - read-only operation
|
|
11
|
+
*/
|
|
12
|
+
export declare const abilityListTool: MCPTool;
|
|
13
|
+
/**
|
|
14
|
+
* Ability get tool definition
|
|
15
|
+
* INV-MCP-004: Idempotent - read-only operation
|
|
16
|
+
*/
|
|
17
|
+
export declare const abilityGetTool: MCPTool;
|
|
18
|
+
/**
|
|
19
|
+
* Ability inject tool definition
|
|
20
|
+
* INV-MCP-004: Idempotent - returns computed content, no state changes
|
|
21
|
+
*/
|
|
22
|
+
export declare const abilityInjectTool: MCPTool;
|
|
23
|
+
/**
|
|
24
|
+
* Ability register tool definition
|
|
25
|
+
* INV-MCP-004: Non-idempotent - creates new ability
|
|
26
|
+
* INV-MCP-002: Side effects - modifies ability registry
|
|
27
|
+
*/
|
|
28
|
+
export declare const abilityRegisterTool: MCPTool;
|
|
29
|
+
/**
|
|
30
|
+
* Ability remove tool definition
|
|
31
|
+
* INV-MCP-004: Idempotent - removing non-existent ability returns removed=false
|
|
32
|
+
* INV-MCP-002: Side effects - deletes ability from registry
|
|
33
|
+
*/
|
|
34
|
+
export declare const abilityRemoveTool: MCPTool;
|
|
35
|
+
/**
|
|
36
|
+
* Handler for ability_list tool
|
|
37
|
+
*/
|
|
38
|
+
export declare const handleAbilityList: ToolHandler;
|
|
39
|
+
/**
|
|
40
|
+
* Handler for ability_get tool
|
|
41
|
+
*/
|
|
42
|
+
export declare const handleAbilityGet: ToolHandler;
|
|
43
|
+
/**
|
|
44
|
+
* Handler for ability_inject tool
|
|
45
|
+
*/
|
|
46
|
+
export declare const handleAbilityInject: ToolHandler;
|
|
47
|
+
/**
|
|
48
|
+
* Handler for ability_register tool
|
|
49
|
+
*/
|
|
50
|
+
export declare const handleAbilityRegister: ToolHandler;
|
|
51
|
+
/**
|
|
52
|
+
* Handler for ability_remove tool
|
|
53
|
+
*/
|
|
54
|
+
export declare const handleAbilityRemove: ToolHandler;
|
|
55
|
+
//# sourceMappingURL=ability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ability.d.ts","sourceRoot":"","sources":["../../src/tools/ability.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmBxD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,OAkD7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,OAmC5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAiD/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAgEjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAuB/B,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,WA2D/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAiE9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAyDjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,WA8EnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAuDjC,CAAC"}
|