@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,372 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Input/Output Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates tool inputs and outputs against Zod schemas.
|
|
5
|
+
*
|
|
6
|
+
* Invariants:
|
|
7
|
+
* - INV-MCP-001: Input validation MUST occur before tool execution
|
|
8
|
+
* - INV-MCP-003: Standardized error codes for all failures
|
|
9
|
+
* - INV-MCP-005: Input isolation - inputs MUST NOT be mutated
|
|
10
|
+
* - INV-MCP-VAL-001: Output validation failures logged but don't break response
|
|
11
|
+
* - INV-MCP-VAL-002: All schemas defined in contracts package
|
|
12
|
+
*/
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Standard Error Codes (INV-MCP-003)
|
|
15
|
+
// ============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Standard error codes per INV-MCP-003
|
|
18
|
+
* Must match StandardErrorCodes from @defai.digital/contracts
|
|
19
|
+
*/
|
|
20
|
+
export const ToolErrorCodes = {
|
|
21
|
+
INVALID_INPUT: 'INVALID_INPUT',
|
|
22
|
+
INVALID_OUTPUT: 'INVALID_OUTPUT',
|
|
23
|
+
RESOURCE_NOT_FOUND: 'RESOURCE_NOT_FOUND',
|
|
24
|
+
PERMISSION_DENIED: 'PERMISSION_DENIED',
|
|
25
|
+
RATE_LIMITED: 'RATE_LIMITED',
|
|
26
|
+
INTERNAL_ERROR: 'INTERNAL_ERROR',
|
|
27
|
+
TIMEOUT: 'TIMEOUT',
|
|
28
|
+
NOT_IMPLEMENTED: 'NOT_IMPLEMENTED',
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Creates a standardized tool error response
|
|
32
|
+
* INV-MCP-003: All failures MUST return standardized error codes
|
|
33
|
+
*/
|
|
34
|
+
export function createToolError(code, message, toolName, details) {
|
|
35
|
+
const error = {
|
|
36
|
+
code,
|
|
37
|
+
message,
|
|
38
|
+
tool: toolName,
|
|
39
|
+
};
|
|
40
|
+
if (details !== undefined) {
|
|
41
|
+
error.details = details;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
46
|
+
type: 'text',
|
|
47
|
+
text: JSON.stringify(error),
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
isError: true,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates an INVALID_INPUT error
|
|
55
|
+
* INV-MCP-003: Standardized error codes
|
|
56
|
+
*/
|
|
57
|
+
export function createInputError(toolName, message, details) {
|
|
58
|
+
return createToolError(ToolErrorCodes.INVALID_INPUT, message, toolName, details);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Creates an INTERNAL_ERROR error
|
|
62
|
+
* INV-MCP-003: Standardized error codes
|
|
63
|
+
*/
|
|
64
|
+
export function createInternalError(toolName, message, details) {
|
|
65
|
+
return createToolError(ToolErrorCodes.INTERNAL_ERROR, message, toolName, details);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Creates a RESOURCE_NOT_FOUND error
|
|
69
|
+
* INV-MCP-003: Standardized error codes
|
|
70
|
+
*/
|
|
71
|
+
export function createNotFoundError(toolName, message, details) {
|
|
72
|
+
return createToolError(ToolErrorCodes.RESOURCE_NOT_FOUND, message, toolName, details);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Creates a NOT_IMPLEMENTED error
|
|
76
|
+
* INV-MCP-003: Standardized error codes
|
|
77
|
+
*/
|
|
78
|
+
export function createNotImplementedError(toolName, message) {
|
|
79
|
+
return createToolError(ToolErrorCodes.NOT_IMPLEMENTED, message, toolName);
|
|
80
|
+
}
|
|
81
|
+
// ============================================================================
|
|
82
|
+
// Input Isolation (INV-MCP-005)
|
|
83
|
+
// ============================================================================
|
|
84
|
+
/**
|
|
85
|
+
* Deep freezes an object to prevent mutation
|
|
86
|
+
* INV-MCP-005: Tools MUST NOT modify their input objects
|
|
87
|
+
*
|
|
88
|
+
* Handles circular references by tracking visited objects
|
|
89
|
+
*/
|
|
90
|
+
export function deepFreeze(obj, visited = new WeakSet()) {
|
|
91
|
+
if (obj === null || typeof obj !== 'object') {
|
|
92
|
+
return obj;
|
|
93
|
+
}
|
|
94
|
+
// Check for circular reference
|
|
95
|
+
if (visited.has(obj)) {
|
|
96
|
+
return obj; // Already frozen or in process of being frozen
|
|
97
|
+
}
|
|
98
|
+
// Mark as visited before recursing to handle circular refs
|
|
99
|
+
visited.add(obj);
|
|
100
|
+
// Freeze arrays
|
|
101
|
+
if (Array.isArray(obj)) {
|
|
102
|
+
obj.forEach((item) => deepFreeze(item, visited));
|
|
103
|
+
return Object.freeze(obj);
|
|
104
|
+
}
|
|
105
|
+
// Freeze object properties recursively
|
|
106
|
+
const propNames = Object.getOwnPropertyNames(obj);
|
|
107
|
+
for (const name of propNames) {
|
|
108
|
+
const value = obj[name];
|
|
109
|
+
if (value !== null && typeof value === 'object') {
|
|
110
|
+
deepFreeze(value, visited);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return Object.freeze(obj);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Default console logger
|
|
117
|
+
*/
|
|
118
|
+
const defaultLogger = {
|
|
119
|
+
warn: (message, context) => {
|
|
120
|
+
console.warn(`[MCP-VALIDATION] ${message}`, context ?? '');
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
let currentLogger = defaultLogger;
|
|
124
|
+
/**
|
|
125
|
+
* Sets the validation logger
|
|
126
|
+
*/
|
|
127
|
+
export function setValidationLogger(logger) {
|
|
128
|
+
currentLogger = logger;
|
|
129
|
+
}
|
|
130
|
+
// ============================================================================
|
|
131
|
+
// Validation Functions
|
|
132
|
+
// ============================================================================
|
|
133
|
+
/**
|
|
134
|
+
* Validates output against a Zod schema
|
|
135
|
+
*
|
|
136
|
+
* INV-MCP-VAL-001: Logs failures but returns original data
|
|
137
|
+
*/
|
|
138
|
+
export function validateOutput(schema, toolName, output) {
|
|
139
|
+
const result = schema.safeParse(output);
|
|
140
|
+
if (result.success) {
|
|
141
|
+
return { valid: true, data: result.data };
|
|
142
|
+
}
|
|
143
|
+
// INV-MCP-VAL-001: Log but don't fail
|
|
144
|
+
const errors = result.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`);
|
|
145
|
+
currentLogger.warn(`Output validation failed for ${toolName}`, {
|
|
146
|
+
errors,
|
|
147
|
+
output,
|
|
148
|
+
});
|
|
149
|
+
return { valid: false, data: output, errors };
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Parses JSON from tool result content
|
|
153
|
+
*/
|
|
154
|
+
export function parseToolResultContent(result) {
|
|
155
|
+
if (result.content.length === 0) {
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
const firstContent = result.content[0];
|
|
159
|
+
if (firstContent?.text === undefined) {
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
return JSON.parse(firstContent.text);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// ============================================================================
|
|
170
|
+
// Validation Wrapper
|
|
171
|
+
// ============================================================================
|
|
172
|
+
/**
|
|
173
|
+
* Wraps a tool handler with output validation
|
|
174
|
+
*
|
|
175
|
+
* INV-MCP-VAL-001: Validation failures logged but response still returned
|
|
176
|
+
*/
|
|
177
|
+
export function withValidation(handler, outputSchema, toolName) {
|
|
178
|
+
return async (args) => {
|
|
179
|
+
const result = await handler(args);
|
|
180
|
+
// Parse and validate output
|
|
181
|
+
const parsed = parseToolResultContent(result);
|
|
182
|
+
if (parsed !== undefined) {
|
|
183
|
+
validateOutput(outputSchema, toolName, parsed);
|
|
184
|
+
}
|
|
185
|
+
// Always return original result (INV-MCP-VAL-001)
|
|
186
|
+
return result;
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Wraps all handlers with validation using a schema registry
|
|
191
|
+
*/
|
|
192
|
+
export function wrapHandlersWithValidation(handlers, schemas) {
|
|
193
|
+
const wrapped = {};
|
|
194
|
+
for (const [name, handler] of Object.entries(handlers)) {
|
|
195
|
+
const schema = schemas[name];
|
|
196
|
+
if (schema !== undefined) {
|
|
197
|
+
wrapped[name] = withValidation(handler, schema, name);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
// No schema defined - pass through unchanged
|
|
201
|
+
wrapped[name] = handler;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return wrapped;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Creates an INVALID_INPUT error response for schema validation failures
|
|
208
|
+
* INV-MCP-001: Validation failures return INVALID_INPUT error
|
|
209
|
+
* INV-MCP-003: Uses standardized error code
|
|
210
|
+
*/
|
|
211
|
+
export function createInvalidInputError(toolName, errors) {
|
|
212
|
+
return createToolError(ToolErrorCodes.INVALID_INPUT, `Input validation failed for ${toolName}`, toolName, { validationErrors: errors });
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Validates input against a Zod schema
|
|
216
|
+
* INV-MCP-001: Input validation MUST occur before tool execution
|
|
217
|
+
*
|
|
218
|
+
* @returns validated data or null if validation fails
|
|
219
|
+
*/
|
|
220
|
+
export function validateInput(schema, data) {
|
|
221
|
+
const result = schema.safeParse(data);
|
|
222
|
+
if (result.success) {
|
|
223
|
+
return { success: true, data: result.data };
|
|
224
|
+
}
|
|
225
|
+
const errors = result.error.errors.map((e) => `${e.path.length > 0 ? e.path.join('.') + ': ' : ''}${e.message}`);
|
|
226
|
+
return { success: false, errors };
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Wraps a tool handler with input validation and isolation
|
|
230
|
+
* INV-MCP-001: Input validation MUST occur before tool execution
|
|
231
|
+
* INV-MCP-005: Input isolation - inputs MUST NOT be mutated
|
|
232
|
+
*/
|
|
233
|
+
export function withInputValidation(handler, inputSchema, toolName) {
|
|
234
|
+
return async (args) => {
|
|
235
|
+
// INV-MCP-001: Validate input BEFORE execution
|
|
236
|
+
const validation = validateInput(inputSchema, args);
|
|
237
|
+
if (!validation.success) {
|
|
238
|
+
currentLogger.warn(`Input validation failed for ${toolName}`, {
|
|
239
|
+
errors: validation.errors,
|
|
240
|
+
input: args,
|
|
241
|
+
});
|
|
242
|
+
return createInvalidInputError(toolName, validation.errors);
|
|
243
|
+
}
|
|
244
|
+
// INV-MCP-005: Freeze input to prevent mutation
|
|
245
|
+
const frozenInput = deepFreeze(validation.data);
|
|
246
|
+
// Execute with validated and frozen data
|
|
247
|
+
return handler(frozenInput);
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Wraps a tool handler with both input and output validation
|
|
252
|
+
* INV-MCP-001: Input validation before execution
|
|
253
|
+
* INV-MCP-005: Input isolation - inputs MUST NOT be mutated
|
|
254
|
+
* INV-MCP-VAL-001: Output validation after execution
|
|
255
|
+
*/
|
|
256
|
+
export function withFullValidation(handler, inputSchema, outputSchema, toolName) {
|
|
257
|
+
return async (args) => {
|
|
258
|
+
// INV-MCP-001: Validate input BEFORE execution
|
|
259
|
+
const inputValidation = validateInput(inputSchema, args);
|
|
260
|
+
if (!inputValidation.success) {
|
|
261
|
+
currentLogger.warn(`Input validation failed for ${toolName}`, {
|
|
262
|
+
errors: inputValidation.errors,
|
|
263
|
+
input: args,
|
|
264
|
+
});
|
|
265
|
+
return createInvalidInputError(toolName, inputValidation.errors);
|
|
266
|
+
}
|
|
267
|
+
// INV-MCP-005: Freeze input to prevent mutation
|
|
268
|
+
const frozenInput = deepFreeze(inputValidation.data);
|
|
269
|
+
// Execute with validated and frozen data
|
|
270
|
+
const result = await handler(frozenInput);
|
|
271
|
+
// INV-MCP-VAL-001: Validate output (log but don't fail)
|
|
272
|
+
const parsed = parseToolResultContent(result);
|
|
273
|
+
if (parsed !== undefined) {
|
|
274
|
+
validateOutput(outputSchema, toolName, parsed);
|
|
275
|
+
}
|
|
276
|
+
return result;
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Wraps all handlers with input validation using a schema registry
|
|
281
|
+
*/
|
|
282
|
+
export function wrapHandlersWithInputValidation(handlers, inputSchemas) {
|
|
283
|
+
const wrapped = {};
|
|
284
|
+
for (const [name, handler] of Object.entries(handlers)) {
|
|
285
|
+
const schema = inputSchemas[name];
|
|
286
|
+
if (schema !== undefined) {
|
|
287
|
+
wrapped[name] = withInputValidation(handler, schema, name);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
// No schema defined - pass through unchanged (but log warning)
|
|
291
|
+
currentLogger.warn(`No input schema defined for tool: ${name}`);
|
|
292
|
+
wrapped[name] = handler;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return wrapped;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Wraps all handlers with both input and output validation
|
|
299
|
+
*/
|
|
300
|
+
export function wrapHandlersWithFullValidation(handlers, inputSchemas, outputSchemas) {
|
|
301
|
+
const wrapped = {};
|
|
302
|
+
for (const [name, handler] of Object.entries(handlers)) {
|
|
303
|
+
const inputSchema = inputSchemas[name];
|
|
304
|
+
const outputSchema = outputSchemas[name];
|
|
305
|
+
if (inputSchema !== undefined && outputSchema !== undefined) {
|
|
306
|
+
wrapped[name] = withFullValidation(handler, inputSchema, outputSchema, name);
|
|
307
|
+
}
|
|
308
|
+
else if (inputSchema !== undefined) {
|
|
309
|
+
wrapped[name] = withInputValidation(handler, inputSchema, name);
|
|
310
|
+
}
|
|
311
|
+
else if (outputSchema !== undefined) {
|
|
312
|
+
wrapped[name] = withValidation(handler, outputSchema, name);
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
wrapped[name] = handler;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return wrapped;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Creates a type-safe tool handler
|
|
322
|
+
* Input is already validated by withInputValidation wrapper
|
|
323
|
+
*
|
|
324
|
+
* INV-MCP-001: Input has been validated before this handler is called
|
|
325
|
+
* INV-MCP-005: Input is frozen and MUST NOT be mutated
|
|
326
|
+
*
|
|
327
|
+
* @example
|
|
328
|
+
* ```typescript
|
|
329
|
+
* export const handleMemoryStore = createTypedHandler<MemoryStoreInput>((input) => {
|
|
330
|
+
* const { key, value, namespace } = input;
|
|
331
|
+
* // Type-safe access without casts!
|
|
332
|
+
* });
|
|
333
|
+
* ```
|
|
334
|
+
*/
|
|
335
|
+
export function createTypedHandler(handler) {
|
|
336
|
+
// The wrapper will validate input before calling this
|
|
337
|
+
// We trust the input is validated and typed
|
|
338
|
+
return (args) => handler(args);
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Extracts typed input from validated args
|
|
342
|
+
* Use when you can't use createTypedHandler pattern
|
|
343
|
+
*
|
|
344
|
+
* INV-MCP-001: Only use AFTER validation wrapper has run
|
|
345
|
+
*
|
|
346
|
+
* @example
|
|
347
|
+
* ```typescript
|
|
348
|
+
* export const handleTool: ToolHandler = (args) => {
|
|
349
|
+
* const input = getValidatedInput<MyInputType>(args);
|
|
350
|
+
* // Now input is properly typed
|
|
351
|
+
* };
|
|
352
|
+
* ```
|
|
353
|
+
*/
|
|
354
|
+
export function getValidatedInput(args) {
|
|
355
|
+
// Input has been validated by wrapper - safe to cast
|
|
356
|
+
return args;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Creates a success response with JSON content
|
|
360
|
+
* INV-MCP-003: Consistent response format
|
|
361
|
+
*/
|
|
362
|
+
export function createSuccessResponse(data) {
|
|
363
|
+
return {
|
|
364
|
+
content: [
|
|
365
|
+
{
|
|
366
|
+
type: 'text',
|
|
367
|
+
text: JSON.stringify(data, null, 2),
|
|
368
|
+
},
|
|
369
|
+
],
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@defai.digital/mcp-server",
|
|
3
|
+
"version": "13.0.3",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "MCP (Model Context Protocol) server for AutomatosX - Exposes AI orchestration tools via MCP",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"author": "DEFAI Private Limited",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/defai-digital/automatosx.git",
|
|
11
|
+
"directory": "packages/mcp-server"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/defai-digital/automatosx#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/defai-digital/automatosx/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"mcp",
|
|
19
|
+
"model-context-protocol",
|
|
20
|
+
"automatosx",
|
|
21
|
+
"ai",
|
|
22
|
+
"llm",
|
|
23
|
+
"server"
|
|
24
|
+
],
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"bin": {
|
|
28
|
+
"automatosx-mcp": "./dist/bin.js"
|
|
29
|
+
},
|
|
30
|
+
"exports": {
|
|
31
|
+
".": {
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
33
|
+
"import": "./dist/index.js"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist"
|
|
38
|
+
],
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=20.0.0"
|
|
41
|
+
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
47
|
+
"hono": "^4.0.0",
|
|
48
|
+
"zod": "^3.22.4",
|
|
49
|
+
"@defai.digital/ability-domain": "13.0.3",
|
|
50
|
+
"@defai.digital/config-domain": "13.0.3",
|
|
51
|
+
"@defai.digital/agent-domain": "13.0.3",
|
|
52
|
+
"@defai.digital/contracts": "13.0.3",
|
|
53
|
+
"@defai.digital/discussion-domain": "13.0.3",
|
|
54
|
+
"@defai.digital/guard": "13.0.3",
|
|
55
|
+
"@defai.digital/provider-adapters": "13.0.3",
|
|
56
|
+
"@defai.digital/review-domain": "13.0.3",
|
|
57
|
+
"@defai.digital/memory-domain": "13.0.3",
|
|
58
|
+
"@defai.digital/routing-engine": "13.0.3",
|
|
59
|
+
"@defai.digital/trace-domain": "13.0.3",
|
|
60
|
+
"@defai.digital/session-domain": "13.0.3",
|
|
61
|
+
"@defai.digital/workflow-engine": "13.0.3"
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"build": "tsc --build",
|
|
65
|
+
"clean": "rm -rf dist *.tsbuildinfo"
|
|
66
|
+
}
|
|
67
|
+
}
|