@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.
Files changed (178) hide show
  1. package/LICENSE +214 -0
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/bin.js +7 -0
  5. package/dist/bin.js.map +1 -0
  6. package/dist/bootstrap.d.ts +89 -0
  7. package/dist/bootstrap.d.ts.map +1 -0
  8. package/dist/bootstrap.js +161 -0
  9. package/dist/bootstrap.js.map +1 -0
  10. package/dist/index.d.ts +10 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +17 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/middleware/rate-limiter.d.ts +136 -0
  15. package/dist/middleware/rate-limiter.d.ts.map +1 -0
  16. package/dist/middleware/rate-limiter.js +262 -0
  17. package/dist/middleware/rate-limiter.js.map +1 -0
  18. package/dist/prompts/agent-guide.d.ts +16 -0
  19. package/dist/prompts/agent-guide.d.ts.map +1 -0
  20. package/dist/prompts/agent-guide.js +391 -0
  21. package/dist/prompts/agent-guide.js.map +1 -0
  22. package/dist/prompts/explain-workflow.d.ts +15 -0
  23. package/dist/prompts/explain-workflow.d.ts.map +1 -0
  24. package/dist/prompts/explain-workflow.js +157 -0
  25. package/dist/prompts/explain-workflow.js.map +1 -0
  26. package/dist/prompts/index.d.ts +39 -0
  27. package/dist/prompts/index.d.ts.map +1 -0
  28. package/dist/prompts/index.js +83 -0
  29. package/dist/prompts/index.js.map +1 -0
  30. package/dist/prompts/review-changes.d.ts +15 -0
  31. package/dist/prompts/review-changes.d.ts.map +1 -0
  32. package/dist/prompts/review-changes.js +102 -0
  33. package/dist/prompts/review-changes.js.map +1 -0
  34. package/dist/prompts/troubleshoot-session.d.ts +15 -0
  35. package/dist/prompts/troubleshoot-session.d.ts.map +1 -0
  36. package/dist/prompts/troubleshoot-session.js +156 -0
  37. package/dist/prompts/troubleshoot-session.js.map +1 -0
  38. package/dist/registry-accessor.d.ts +83 -0
  39. package/dist/registry-accessor.d.ts.map +1 -0
  40. package/dist/registry-accessor.js +153 -0
  41. package/dist/registry-accessor.js.map +1 -0
  42. package/dist/resources/agents.d.ts +40 -0
  43. package/dist/resources/agents.d.ts.map +1 -0
  44. package/dist/resources/agents.js +123 -0
  45. package/dist/resources/agents.js.map +1 -0
  46. package/dist/resources/config.d.ts +57 -0
  47. package/dist/resources/config.d.ts.map +1 -0
  48. package/dist/resources/config.js +222 -0
  49. package/dist/resources/config.js.map +1 -0
  50. package/dist/resources/index.d.ts +38 -0
  51. package/dist/resources/index.d.ts.map +1 -0
  52. package/dist/resources/index.js +132 -0
  53. package/dist/resources/index.js.map +1 -0
  54. package/dist/resources/policies.d.ts +40 -0
  55. package/dist/resources/policies.d.ts.map +1 -0
  56. package/dist/resources/policies.js +122 -0
  57. package/dist/resources/policies.js.map +1 -0
  58. package/dist/resources/sessions.d.ts +30 -0
  59. package/dist/resources/sessions.d.ts.map +1 -0
  60. package/dist/resources/sessions.js +64 -0
  61. package/dist/resources/sessions.js.map +1 -0
  62. package/dist/resources/workflows.d.ts +40 -0
  63. package/dist/resources/workflows.d.ts.map +1 -0
  64. package/dist/resources/workflows.js +143 -0
  65. package/dist/resources/workflows.js.map +1 -0
  66. package/dist/schema-registry.d.ts +23 -0
  67. package/dist/schema-registry.d.ts.map +1 -0
  68. package/dist/schema-registry.js +225 -0
  69. package/dist/schema-registry.js.map +1 -0
  70. package/dist/server.d.ts +63 -0
  71. package/dist/server.d.ts.map +1 -0
  72. package/dist/server.js +393 -0
  73. package/dist/server.js.map +1 -0
  74. package/dist/session-accessor.d.ts +23 -0
  75. package/dist/session-accessor.d.ts.map +1 -0
  76. package/dist/session-accessor.js +39 -0
  77. package/dist/session-accessor.js.map +1 -0
  78. package/dist/shared-registry.d.ts +23 -0
  79. package/dist/shared-registry.d.ts.map +1 -0
  80. package/dist/shared-registry.js +235 -0
  81. package/dist/shared-registry.js.map +1 -0
  82. package/dist/stdio.d.ts +6 -0
  83. package/dist/stdio.d.ts.map +1 -0
  84. package/dist/stdio.js +152 -0
  85. package/dist/stdio.js.map +1 -0
  86. package/dist/tool-namespacing.d.ts +28 -0
  87. package/dist/tool-namespacing.d.ts.map +1 -0
  88. package/dist/tool-namespacing.js +80 -0
  89. package/dist/tool-namespacing.js.map +1 -0
  90. package/dist/tools/ability.d.ts +55 -0
  91. package/dist/tools/ability.d.ts.map +1 -0
  92. package/dist/tools/ability.js +560 -0
  93. package/dist/tools/ability.js.map +1 -0
  94. package/dist/tools/agent.d.ts +73 -0
  95. package/dist/tools/agent.d.ts.map +1 -0
  96. package/dist/tools/agent.js +895 -0
  97. package/dist/tools/agent.js.map +1 -0
  98. package/dist/tools/config.d.ts +36 -0
  99. package/dist/tools/config.d.ts.map +1 -0
  100. package/dist/tools/config.js +265 -0
  101. package/dist/tools/config.js.map +1 -0
  102. package/dist/tools/design.d.ts +42 -0
  103. package/dist/tools/design.d.ts.map +1 -0
  104. package/dist/tools/design.js +736 -0
  105. package/dist/tools/design.js.map +1 -0
  106. package/dist/tools/discuss.d.ts +40 -0
  107. package/dist/tools/discuss.d.ts.map +1 -0
  108. package/dist/tools/discuss.js +331 -0
  109. package/dist/tools/discuss.js.map +1 -0
  110. package/dist/tools/file-system.d.ts +63 -0
  111. package/dist/tools/file-system.d.ts.map +1 -0
  112. package/dist/tools/file-system.js +513 -0
  113. package/dist/tools/file-system.js.map +1 -0
  114. package/dist/tools/guard.d.ts +29 -0
  115. package/dist/tools/guard.d.ts.map +1 -0
  116. package/dist/tools/guard.js +311 -0
  117. package/dist/tools/guard.js.map +1 -0
  118. package/dist/tools/index.d.ts +35 -0
  119. package/dist/tools/index.d.ts.map +1 -0
  120. package/dist/tools/index.js +178 -0
  121. package/dist/tools/index.js.map +1 -0
  122. package/dist/tools/memory.d.ts +101 -0
  123. package/dist/tools/memory.d.ts.map +1 -0
  124. package/dist/tools/memory.js +704 -0
  125. package/dist/tools/memory.js.map +1 -0
  126. package/dist/tools/orchestration.d.ts +58 -0
  127. package/dist/tools/orchestration.d.ts.map +1 -0
  128. package/dist/tools/orchestration.js +714 -0
  129. package/dist/tools/orchestration.js.map +1 -0
  130. package/dist/tools/review.d.ts +40 -0
  131. package/dist/tools/review.d.ts.map +1 -0
  132. package/dist/tools/review.js +319 -0
  133. package/dist/tools/review.js.map +1 -0
  134. package/dist/tools/scaffold.d.ts +27 -0
  135. package/dist/tools/scaffold.d.ts.map +1 -0
  136. package/dist/tools/scaffold.js +495 -0
  137. package/dist/tools/scaffold.js.map +1 -0
  138. package/dist/tools/session.d.ts +75 -0
  139. package/dist/tools/session.d.ts.map +1 -0
  140. package/dist/tools/session.js +749 -0
  141. package/dist/tools/session.js.map +1 -0
  142. package/dist/tools/telemetry.d.ts +58 -0
  143. package/dist/tools/telemetry.d.ts.map +1 -0
  144. package/dist/tools/telemetry.js +638 -0
  145. package/dist/tools/telemetry.js.map +1 -0
  146. package/dist/tools/trace.d.ts +29 -0
  147. package/dist/tools/trace.d.ts.map +1 -0
  148. package/dist/tools/trace.js +191 -0
  149. package/dist/tools/trace.js.map +1 -0
  150. package/dist/tools/workflow.d.ts +26 -0
  151. package/dist/tools/workflow.d.ts.map +1 -0
  152. package/dist/tools/workflow.js +269 -0
  153. package/dist/tools/workflow.js.map +1 -0
  154. package/dist/trace-wrapper.d.ts +79 -0
  155. package/dist/trace-wrapper.d.ts.map +1 -0
  156. package/dist/trace-wrapper.js +151 -0
  157. package/dist/trace-wrapper.js.map +1 -0
  158. package/dist/types.d.ts +185 -0
  159. package/dist/types.d.ts.map +1 -0
  160. package/dist/types.js +11 -0
  161. package/dist/types.js.map +1 -0
  162. package/dist/utils/artifact-store.d.ts +49 -0
  163. package/dist/utils/artifact-store.d.ts.map +1 -0
  164. package/dist/utils/artifact-store.js +102 -0
  165. package/dist/utils/artifact-store.js.map +1 -0
  166. package/dist/utils/index.d.ts +6 -0
  167. package/dist/utils/index.d.ts.map +1 -0
  168. package/dist/utils/index.js +10 -0
  169. package/dist/utils/index.js.map +1 -0
  170. package/dist/utils/response.d.ts +139 -0
  171. package/dist/utils/response.d.ts.map +1 -0
  172. package/dist/utils/response.js +293 -0
  173. package/dist/utils/response.js.map +1 -0
  174. package/dist/validation.d.ts +223 -0
  175. package/dist/validation.d.ts.map +1 -0
  176. package/dist/validation.js +372 -0
  177. package/dist/validation.js.map +1 -0
  178. 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"}