@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,495 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* MCP tools for scaffolding contract-first project components.
|
|
5
|
+
* Uses file_write tool for file creation.
|
|
6
|
+
*
|
|
7
|
+
* @module mcp-server/tools/scaffold
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Tool Definitions
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Scaffold contract tool
|
|
14
|
+
*/
|
|
15
|
+
export const scaffoldContractTool = {
|
|
16
|
+
name: 'scaffold_contract',
|
|
17
|
+
description: 'Generate Zod schema and invariants for a domain. SIDE EFFECTS: Creates files on disk.',
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
name: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Domain name (kebab-case)',
|
|
24
|
+
},
|
|
25
|
+
description: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'Domain description',
|
|
28
|
+
},
|
|
29
|
+
output: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'Output directory (default: packages/contracts/src/<name>/v1)',
|
|
32
|
+
},
|
|
33
|
+
dryRun: {
|
|
34
|
+
type: 'boolean',
|
|
35
|
+
description: 'Preview without writing files',
|
|
36
|
+
default: false,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
required: ['name'],
|
|
40
|
+
},
|
|
41
|
+
idempotent: false,
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Scaffold domain tool
|
|
45
|
+
*/
|
|
46
|
+
export const scaffoldDomainTool = {
|
|
47
|
+
name: 'scaffold_domain',
|
|
48
|
+
description: 'Generate complete domain package with service, types, and tests. SIDE EFFECTS: Creates files on disk.',
|
|
49
|
+
inputSchema: {
|
|
50
|
+
type: 'object',
|
|
51
|
+
properties: {
|
|
52
|
+
name: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
description: 'Domain name (kebab-case)',
|
|
55
|
+
},
|
|
56
|
+
output: {
|
|
57
|
+
type: 'string',
|
|
58
|
+
description: 'Output directory (default: packages/core/<name>-domain)',
|
|
59
|
+
},
|
|
60
|
+
scope: {
|
|
61
|
+
type: 'string',
|
|
62
|
+
description: 'Package scope (default: @defai.digital)',
|
|
63
|
+
default: '@defai.digital',
|
|
64
|
+
},
|
|
65
|
+
includeTests: {
|
|
66
|
+
type: 'boolean',
|
|
67
|
+
description: 'Include test scaffolds',
|
|
68
|
+
default: true,
|
|
69
|
+
},
|
|
70
|
+
includeGuard: {
|
|
71
|
+
type: 'boolean',
|
|
72
|
+
description: 'Include guard policy',
|
|
73
|
+
default: true,
|
|
74
|
+
},
|
|
75
|
+
dryRun: {
|
|
76
|
+
type: 'boolean',
|
|
77
|
+
description: 'Preview without writing files',
|
|
78
|
+
default: false,
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
required: ['name'],
|
|
82
|
+
},
|
|
83
|
+
idempotent: false,
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Scaffold guard tool
|
|
87
|
+
*/
|
|
88
|
+
export const scaffoldGuardTool = {
|
|
89
|
+
name: 'scaffold_guard',
|
|
90
|
+
description: 'Generate guard policy for a domain. SIDE EFFECTS: Creates file on disk.',
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: 'object',
|
|
93
|
+
properties: {
|
|
94
|
+
policyId: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Policy ID (e.g., "payment-development")',
|
|
97
|
+
},
|
|
98
|
+
domain: {
|
|
99
|
+
type: 'string',
|
|
100
|
+
description: 'Domain name (default: derived from policyId)',
|
|
101
|
+
},
|
|
102
|
+
radius: {
|
|
103
|
+
type: 'number',
|
|
104
|
+
description: 'Change radius limit',
|
|
105
|
+
default: 3,
|
|
106
|
+
},
|
|
107
|
+
gates: {
|
|
108
|
+
type: 'array',
|
|
109
|
+
items: { type: 'string' },
|
|
110
|
+
description: 'Gates to include',
|
|
111
|
+
default: ['path_violation', 'dependency', 'change_radius', 'contract_tests'],
|
|
112
|
+
},
|
|
113
|
+
dryRun: {
|
|
114
|
+
type: 'boolean',
|
|
115
|
+
description: 'Preview without writing files',
|
|
116
|
+
default: false,
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
required: ['policyId'],
|
|
120
|
+
},
|
|
121
|
+
idempotent: false,
|
|
122
|
+
};
|
|
123
|
+
// ============================================================================
|
|
124
|
+
// Template Functions
|
|
125
|
+
// ============================================================================
|
|
126
|
+
function toPascalCase(str) {
|
|
127
|
+
return str
|
|
128
|
+
.split(/[-_]/)
|
|
129
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
130
|
+
.join('');
|
|
131
|
+
}
|
|
132
|
+
function generateSchemaTemplate(name, description) {
|
|
133
|
+
const pascalName = toPascalCase(name);
|
|
134
|
+
const domainCode = name.substring(0, 3).toUpperCase();
|
|
135
|
+
return `/**
|
|
136
|
+
* ${pascalName} Domain Contracts v1
|
|
137
|
+
*
|
|
138
|
+
* ${description}
|
|
139
|
+
*
|
|
140
|
+
* @module @defai.digital/contracts/${name}/v1
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
import { z } from 'zod';
|
|
144
|
+
|
|
145
|
+
// ============================================================================
|
|
146
|
+
// Value Objects
|
|
147
|
+
// ============================================================================
|
|
148
|
+
|
|
149
|
+
export const ${pascalName}IdSchema = z.string().uuid();
|
|
150
|
+
export type ${pascalName}Id = z.infer<typeof ${pascalName}IdSchema>;
|
|
151
|
+
|
|
152
|
+
// ============================================================================
|
|
153
|
+
// Enums
|
|
154
|
+
// ============================================================================
|
|
155
|
+
|
|
156
|
+
export const ${pascalName}StatusSchema = z.enum([
|
|
157
|
+
'draft',
|
|
158
|
+
'active',
|
|
159
|
+
'completed',
|
|
160
|
+
'cancelled',
|
|
161
|
+
]);
|
|
162
|
+
export type ${pascalName}Status = z.infer<typeof ${pascalName}StatusSchema>;
|
|
163
|
+
|
|
164
|
+
// ============================================================================
|
|
165
|
+
// Entities
|
|
166
|
+
// ============================================================================
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* ${pascalName} entity - Aggregate Root
|
|
170
|
+
*
|
|
171
|
+
* Invariants:
|
|
172
|
+
* - INV-${domainCode}-001: ID must be valid UUID
|
|
173
|
+
* - INV-${domainCode}-002: Status must be valid enum value
|
|
174
|
+
*/
|
|
175
|
+
export const ${pascalName}Schema = z.object({
|
|
176
|
+
id: ${pascalName}IdSchema,
|
|
177
|
+
status: ${pascalName}StatusSchema,
|
|
178
|
+
createdAt: z.string().datetime(),
|
|
179
|
+
updatedAt: z.string().datetime(),
|
|
180
|
+
});
|
|
181
|
+
export type ${pascalName} = z.infer<typeof ${pascalName}Schema>;
|
|
182
|
+
|
|
183
|
+
// ============================================================================
|
|
184
|
+
// Domain Events
|
|
185
|
+
// ============================================================================
|
|
186
|
+
|
|
187
|
+
export const ${pascalName}EventSchema = z.discriminatedUnion('type', [
|
|
188
|
+
z.object({
|
|
189
|
+
type: z.literal('${name}.created'),
|
|
190
|
+
${name}Id: ${pascalName}IdSchema,
|
|
191
|
+
occurredAt: z.string().datetime(),
|
|
192
|
+
}),
|
|
193
|
+
z.object({
|
|
194
|
+
type: z.literal('${name}.updated'),
|
|
195
|
+
${name}Id: ${pascalName}IdSchema,
|
|
196
|
+
changes: z.record(z.unknown()),
|
|
197
|
+
occurredAt: z.string().datetime(),
|
|
198
|
+
}),
|
|
199
|
+
]);
|
|
200
|
+
export type ${pascalName}Event = z.infer<typeof ${pascalName}EventSchema>;
|
|
201
|
+
|
|
202
|
+
// ============================================================================
|
|
203
|
+
// Validation
|
|
204
|
+
// ============================================================================
|
|
205
|
+
|
|
206
|
+
export function validate${pascalName}(data: unknown): ${pascalName} {
|
|
207
|
+
return ${pascalName}Schema.parse(data);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// ============================================================================
|
|
211
|
+
// Error Codes
|
|
212
|
+
// ============================================================================
|
|
213
|
+
|
|
214
|
+
export const ${pascalName}ErrorCode = {
|
|
215
|
+
NOT_FOUND: '${domainCode}_NOT_FOUND',
|
|
216
|
+
INVALID_STATUS: '${domainCode}_INVALID_STATUS',
|
|
217
|
+
} as const;
|
|
218
|
+
`;
|
|
219
|
+
}
|
|
220
|
+
function generateInvariantsTemplate(name, description) {
|
|
221
|
+
const pascalName = toPascalCase(name);
|
|
222
|
+
const domainCode = name.substring(0, 3).toUpperCase();
|
|
223
|
+
return `# ${pascalName} Domain Invariants
|
|
224
|
+
|
|
225
|
+
## Overview
|
|
226
|
+
|
|
227
|
+
${description}
|
|
228
|
+
|
|
229
|
+
## Schema Invariants
|
|
230
|
+
|
|
231
|
+
### INV-${domainCode}-001: Valid ID Format
|
|
232
|
+
${pascalName} ID MUST be a valid UUID v4.
|
|
233
|
+
- **Enforcement**: schema
|
|
234
|
+
- **Test**: \`z.string().uuid()\` rejects invalid UUIDs
|
|
235
|
+
|
|
236
|
+
### INV-${domainCode}-002: Valid Status
|
|
237
|
+
Status MUST be one of the defined enum values.
|
|
238
|
+
- **Enforcement**: schema
|
|
239
|
+
- **Test**: \`z.enum([...])\` rejects invalid values
|
|
240
|
+
|
|
241
|
+
## Runtime Invariants
|
|
242
|
+
|
|
243
|
+
### INV-${domainCode}-101: Status Transitions
|
|
244
|
+
Status transitions MUST follow the defined state machine.
|
|
245
|
+
- **Enforcement**: runtime
|
|
246
|
+
- **Valid Transitions**:
|
|
247
|
+
\`\`\`
|
|
248
|
+
draft → active, cancelled
|
|
249
|
+
active → completed, cancelled
|
|
250
|
+
\`\`\`
|
|
251
|
+
|
|
252
|
+
## Business Invariants
|
|
253
|
+
|
|
254
|
+
### INV-${domainCode}-201: [Add business rules]
|
|
255
|
+
[Description of business invariant]
|
|
256
|
+
- **Enforcement**: [schema|runtime|test]
|
|
257
|
+
- **Test**: [How to verify]
|
|
258
|
+
`;
|
|
259
|
+
}
|
|
260
|
+
function generateIndexTemplate(_name) {
|
|
261
|
+
return `export * from './schema.js';
|
|
262
|
+
`;
|
|
263
|
+
}
|
|
264
|
+
function generateGuardPolicyTemplate(policyId, domain, radius, gates) {
|
|
265
|
+
return `# ${toPascalCase(domain)} Domain Guard Policy
|
|
266
|
+
|
|
267
|
+
policy_id: ${policyId}
|
|
268
|
+
|
|
269
|
+
description: |
|
|
270
|
+
Guard policy for ${domain} domain development.
|
|
271
|
+
|
|
272
|
+
allowed_paths:
|
|
273
|
+
- packages/contracts/src/${domain}/**
|
|
274
|
+
- packages/core/${domain}-domain/**
|
|
275
|
+
- tests/contract/${domain}.test.ts
|
|
276
|
+
- tests/core/${domain}-domain.test.ts
|
|
277
|
+
|
|
278
|
+
forbidden_paths:
|
|
279
|
+
- packages/contracts/src/*/v1/schema.ts
|
|
280
|
+
- "!packages/contracts/src/${domain}/v1/schema.ts"
|
|
281
|
+
- packages/cli/**
|
|
282
|
+
- packages/mcp-server/**
|
|
283
|
+
- packages/adapters/**
|
|
284
|
+
|
|
285
|
+
required_contracts:
|
|
286
|
+
- ${domain}
|
|
287
|
+
|
|
288
|
+
gates:
|
|
289
|
+
${gates.map((g) => ` - ${g}`).join('\n')}
|
|
290
|
+
|
|
291
|
+
change_radius_limit: ${radius}
|
|
292
|
+
|
|
293
|
+
variables:
|
|
294
|
+
domain: ${domain}
|
|
295
|
+
|
|
296
|
+
metadata:
|
|
297
|
+
owner: ${domain}-team
|
|
298
|
+
created_at: "${new Date().toISOString().split('T')[0]}"
|
|
299
|
+
severity: medium
|
|
300
|
+
auto_apply: false
|
|
301
|
+
`;
|
|
302
|
+
}
|
|
303
|
+
// ============================================================================
|
|
304
|
+
// Tool Handlers
|
|
305
|
+
// ============================================================================
|
|
306
|
+
export const handleScaffoldContract = async (args) => {
|
|
307
|
+
const name = args.name;
|
|
308
|
+
const description = args.description || `${toPascalCase(name)} domain.`;
|
|
309
|
+
const output = args.output || `packages/contracts/src/${name}/v1`;
|
|
310
|
+
const dryRun = args.dryRun || false;
|
|
311
|
+
const files = [
|
|
312
|
+
{ path: `${output}/schema.ts`, content: generateSchemaTemplate(name, description) },
|
|
313
|
+
{ path: `${output}/invariants.md`, content: generateInvariantsTemplate(name, description) },
|
|
314
|
+
{ path: `${output}/index.ts`, content: generateIndexTemplate(name) },
|
|
315
|
+
];
|
|
316
|
+
if (dryRun) {
|
|
317
|
+
return {
|
|
318
|
+
content: [
|
|
319
|
+
{
|
|
320
|
+
type: 'text',
|
|
321
|
+
text: JSON.stringify({
|
|
322
|
+
success: true,
|
|
323
|
+
dryRun: true,
|
|
324
|
+
name,
|
|
325
|
+
files: files.map((f) => ({ path: f.path, size: f.content.length })),
|
|
326
|
+
message: `Would create ${files.length} files for contract "${name}"`,
|
|
327
|
+
}),
|
|
328
|
+
},
|
|
329
|
+
],
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
// In a real implementation, this would use file_write tool
|
|
333
|
+
// For now, return the generated content
|
|
334
|
+
return {
|
|
335
|
+
content: [
|
|
336
|
+
{
|
|
337
|
+
type: 'text',
|
|
338
|
+
text: JSON.stringify({
|
|
339
|
+
success: true,
|
|
340
|
+
dryRun: false,
|
|
341
|
+
name,
|
|
342
|
+
files: files.map((f) => ({ path: f.path, size: f.content.length })),
|
|
343
|
+
generatedContent: files,
|
|
344
|
+
message: `Generated contract scaffold for "${name}". Use file_write tool to persist files.`,
|
|
345
|
+
}),
|
|
346
|
+
},
|
|
347
|
+
],
|
|
348
|
+
};
|
|
349
|
+
};
|
|
350
|
+
export const handleScaffoldDomain = async (args) => {
|
|
351
|
+
const name = args.name;
|
|
352
|
+
const output = args.output || `packages/core/${name}-domain`;
|
|
353
|
+
const scope = args.scope || '@defai.digital';
|
|
354
|
+
const includeGuard = args.includeGuard !== false;
|
|
355
|
+
const dryRun = args.dryRun || false;
|
|
356
|
+
const pascalName = toPascalCase(name);
|
|
357
|
+
const files = [
|
|
358
|
+
{
|
|
359
|
+
path: `${output}/package.json`,
|
|
360
|
+
content: JSON.stringify({
|
|
361
|
+
name: `${scope}/${name}-domain`,
|
|
362
|
+
version: '1.0.0',
|
|
363
|
+
type: 'module',
|
|
364
|
+
main: 'dist/index.js',
|
|
365
|
+
types: 'dist/index.d.ts',
|
|
366
|
+
}, null, 2),
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
path: `${output}/src/index.ts`,
|
|
370
|
+
content: `export * from './types.js';\nexport * from './service.js';\n`,
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
path: `${output}/src/types.ts`,
|
|
374
|
+
content: `import type { ${pascalName} } from '@defai.digital/contracts';
|
|
375
|
+
|
|
376
|
+
export interface ${pascalName}Repository {
|
|
377
|
+
findById(id: string): Promise<${pascalName} | undefined>;
|
|
378
|
+
save(entity: ${pascalName}): Promise<void>;
|
|
379
|
+
}
|
|
380
|
+
`,
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
path: `${output}/src/service.ts`,
|
|
384
|
+
content: `import type { ${pascalName} } from '@defai.digital/contracts';
|
|
385
|
+
import type { ${pascalName}Repository } from './types.js';
|
|
386
|
+
|
|
387
|
+
export class ${pascalName}Service {
|
|
388
|
+
constructor(private readonly repository: ${pascalName}Repository) {}
|
|
389
|
+
|
|
390
|
+
async findById(id: string): Promise<${pascalName} | undefined> {
|
|
391
|
+
return this.repository.findById(id);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
`,
|
|
395
|
+
},
|
|
396
|
+
];
|
|
397
|
+
if (includeGuard) {
|
|
398
|
+
files.push({
|
|
399
|
+
path: `packages/guard/policies/${name}-development.yaml`,
|
|
400
|
+
content: generateGuardPolicyTemplate(`${name}-development`, name, 3, ['path_violation', 'dependency', 'change_radius', 'contract_tests']),
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
if (dryRun) {
|
|
404
|
+
return {
|
|
405
|
+
content: [
|
|
406
|
+
{
|
|
407
|
+
type: 'text',
|
|
408
|
+
text: JSON.stringify({
|
|
409
|
+
success: true,
|
|
410
|
+
dryRun: true,
|
|
411
|
+
name,
|
|
412
|
+
files: files.map((f) => ({ path: f.path, size: f.content.length })),
|
|
413
|
+
message: `Would create ${files.length} files for domain "${name}"`,
|
|
414
|
+
}),
|
|
415
|
+
},
|
|
416
|
+
],
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
return {
|
|
420
|
+
content: [
|
|
421
|
+
{
|
|
422
|
+
type: 'text',
|
|
423
|
+
text: JSON.stringify({
|
|
424
|
+
success: true,
|
|
425
|
+
dryRun: false,
|
|
426
|
+
name,
|
|
427
|
+
files: files.map((f) => ({ path: f.path, size: f.content.length })),
|
|
428
|
+
generatedContent: files,
|
|
429
|
+
message: `Generated domain scaffold for "${name}". Use file_write tool to persist files.`,
|
|
430
|
+
}),
|
|
431
|
+
},
|
|
432
|
+
],
|
|
433
|
+
};
|
|
434
|
+
};
|
|
435
|
+
export const handleScaffoldGuard = async (args) => {
|
|
436
|
+
const policyId = args.policyId;
|
|
437
|
+
const domain = args.domain || policyId.replace(/-development$/, '');
|
|
438
|
+
const radius = args.radius || 3;
|
|
439
|
+
const gates = args.gates || [
|
|
440
|
+
'path_violation',
|
|
441
|
+
'dependency',
|
|
442
|
+
'change_radius',
|
|
443
|
+
'contract_tests',
|
|
444
|
+
];
|
|
445
|
+
const dryRun = args.dryRun || false;
|
|
446
|
+
const content = generateGuardPolicyTemplate(policyId, domain, radius, gates);
|
|
447
|
+
const filePath = `packages/guard/policies/${policyId}.yaml`;
|
|
448
|
+
if (dryRun) {
|
|
449
|
+
return {
|
|
450
|
+
content: [
|
|
451
|
+
{
|
|
452
|
+
type: 'text',
|
|
453
|
+
text: JSON.stringify({
|
|
454
|
+
success: true,
|
|
455
|
+
dryRun: true,
|
|
456
|
+
policyId,
|
|
457
|
+
domain,
|
|
458
|
+
file: { path: filePath, size: content.length },
|
|
459
|
+
message: `Would create guard policy "${policyId}"`,
|
|
460
|
+
}),
|
|
461
|
+
},
|
|
462
|
+
],
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
return {
|
|
466
|
+
content: [
|
|
467
|
+
{
|
|
468
|
+
type: 'text',
|
|
469
|
+
text: JSON.stringify({
|
|
470
|
+
success: true,
|
|
471
|
+
dryRun: false,
|
|
472
|
+
policyId,
|
|
473
|
+
domain,
|
|
474
|
+
file: { path: filePath, size: content.length },
|
|
475
|
+
generatedContent: { path: filePath, content },
|
|
476
|
+
message: `Generated guard policy "${policyId}". Use file_write tool to persist.`,
|
|
477
|
+
}),
|
|
478
|
+
},
|
|
479
|
+
],
|
|
480
|
+
};
|
|
481
|
+
};
|
|
482
|
+
// ============================================================================
|
|
483
|
+
// Exports
|
|
484
|
+
// ============================================================================
|
|
485
|
+
export const SCAFFOLD_TOOLS = [
|
|
486
|
+
scaffoldContractTool,
|
|
487
|
+
scaffoldDomainTool,
|
|
488
|
+
scaffoldGuardTool,
|
|
489
|
+
];
|
|
490
|
+
export const SCAFFOLD_HANDLERS = {
|
|
491
|
+
scaffold_contract: handleScaffoldContract,
|
|
492
|
+
scaffold_domain: handleScaffoldDomain,
|
|
493
|
+
scaffold_guard: handleScaffoldGuard,
|
|
494
|
+
};
|
|
495
|
+
//# sourceMappingURL=scaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/tools/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { MCPTool, ToolHandler } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Session create tool definition
|
|
4
|
+
* INV-MCP-004: Non-idempotent - creates new session each call
|
|
5
|
+
* INV-MCP-002: Side effects - creates session in store
|
|
6
|
+
*/
|
|
7
|
+
export declare const sessionCreateTool: MCPTool;
|
|
8
|
+
/**
|
|
9
|
+
* Session status tool definition
|
|
10
|
+
* INV-MCP-004: Idempotent - read-only operation
|
|
11
|
+
*/
|
|
12
|
+
export declare const sessionStatusTool: MCPTool;
|
|
13
|
+
/**
|
|
14
|
+
* Session complete tool definition
|
|
15
|
+
* INV-MCP-004: Idempotent - completing already completed session is safe
|
|
16
|
+
* INV-MCP-002: Side effects - updates session status to completed
|
|
17
|
+
*/
|
|
18
|
+
export declare const sessionCompleteTool: MCPTool;
|
|
19
|
+
/**
|
|
20
|
+
* Session list tool definition
|
|
21
|
+
* INV-MCP-004: Idempotent - read-only operation
|
|
22
|
+
*/
|
|
23
|
+
export declare const sessionListTool: MCPTool;
|
|
24
|
+
/**
|
|
25
|
+
* Session join tool definition
|
|
26
|
+
* INV-MCP-004: Idempotent - joining twice returns existing participation
|
|
27
|
+
* INV-MCP-002: Side effects - adds participant to session
|
|
28
|
+
*/
|
|
29
|
+
export declare const sessionJoinTool: MCPTool;
|
|
30
|
+
/**
|
|
31
|
+
* Session leave tool definition
|
|
32
|
+
* INV-MCP-004: Non-idempotent - fails if not a participant
|
|
33
|
+
* INV-MCP-002: Side effects - removes participant from session
|
|
34
|
+
*/
|
|
35
|
+
export declare const sessionLeaveTool: MCPTool;
|
|
36
|
+
/**
|
|
37
|
+
* Session fail tool definition
|
|
38
|
+
* INV-MCP-004: Non-idempotent - only active sessions can be failed
|
|
39
|
+
* INV-MCP-002: Side effects - updates session status to failed
|
|
40
|
+
*/
|
|
41
|
+
export declare const sessionFailTool: MCPTool;
|
|
42
|
+
/**
|
|
43
|
+
* Handler for session_create tool
|
|
44
|
+
*/
|
|
45
|
+
export declare const handleSessionCreate: ToolHandler;
|
|
46
|
+
/**
|
|
47
|
+
* Handler for session_status tool
|
|
48
|
+
*/
|
|
49
|
+
export declare const handleSessionStatus: ToolHandler;
|
|
50
|
+
/**
|
|
51
|
+
* Handler for session_complete tool
|
|
52
|
+
*/
|
|
53
|
+
export declare const handleSessionComplete: ToolHandler;
|
|
54
|
+
/**
|
|
55
|
+
* Handler for session_list tool
|
|
56
|
+
*/
|
|
57
|
+
export declare const handleSessionList: ToolHandler;
|
|
58
|
+
/**
|
|
59
|
+
* Handler for session_join tool
|
|
60
|
+
* INV-MCP-SES-001: Cannot join completed/failed session
|
|
61
|
+
* INV-MCP-SES-002: Joining twice returns existing participation (idempotent)
|
|
62
|
+
* INV-MCP-SES-003: Max participants enforced (default: 10)
|
|
63
|
+
*/
|
|
64
|
+
export declare const handleSessionJoin: ToolHandler;
|
|
65
|
+
/**
|
|
66
|
+
* Handler for session_leave tool
|
|
67
|
+
* INV-MCP-SES-004: Cannot leave if not a participant
|
|
68
|
+
* INV-MCP-SES-005: Initiator cannot leave active session
|
|
69
|
+
*/
|
|
70
|
+
export declare const handleSessionLeave: ToolHandler;
|
|
71
|
+
/**
|
|
72
|
+
* Handler for session_fail tool
|
|
73
|
+
*/
|
|
74
|
+
export declare const handleSessionFail: ToolHandler;
|
|
75
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAcxD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAsC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAuC/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,OA4BjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,OA4C7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,OAmC7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,OA4B9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,OAkC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAgDjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAiEjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAwCnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,WA0D/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAmG/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WA2FhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAiF/B,CAAC"}
|