@merabylabs/promptarchitect-mcp 0.3.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,384 @@
1
+ /**
2
+ * Workflow Tools
3
+ * Enables tool composition and multi-step workflows
4
+ *
5
+ * These tools allow chaining multiple operations together:
6
+ * - Analyze → Refine → Save workflow
7
+ * - Read → Generate → Write workflow
8
+ * - Search → Read → Modify → Write workflow
9
+ */
10
+ import { z } from 'zod';
11
+ import { logger } from '../utils/index.js';
12
+ import { generatePrompt } from './generatePrompt.js';
13
+ import { refinePrompt } from './refinePrompt.js';
14
+ import { analyzePrompt } from './analyzePrompt.js';
15
+ import { readFile, writeFile, getWorkspaceContext, } from './workspaceTools.js';
16
+ import { executeCommand } from './executeCommand.js';
17
+ // ============================================================================
18
+ // PROMPT WORKFLOW TOOL
19
+ // ============================================================================
20
+ export const promptWorkflowSchema = z.object({
21
+ workflow: z.enum([
22
+ 'analyze_and_refine',
23
+ 'generate_and_analyze',
24
+ 'full_optimization',
25
+ 'context_aware_generate',
26
+ ]).describe('Predefined workflow to execute'),
27
+ prompt: z.string().optional().describe('Initial prompt (for refine/analyze workflows)'),
28
+ idea: z.string().optional().describe('Initial idea (for generate workflows)'),
29
+ template: z.string().optional().describe('Template type for generation'),
30
+ targetModel: z.string().optional().describe('Target AI model'),
31
+ feedback: z.string().optional().describe('Refinement feedback'),
32
+ saveToFile: z.string().optional().describe('Save final result to this file path'),
33
+ workspaceContext: z.string().optional().describe('Workspace context to include'),
34
+ });
35
+ export async function executePromptWorkflow(input) {
36
+ const { workflow, prompt, idea, template, targetModel, feedback, saveToFile, workspaceContext } = input;
37
+ logger.info('Executing prompt workflow', { workflow });
38
+ const steps = [];
39
+ let currentPrompt = prompt || '';
40
+ let analysis;
41
+ let improvements = [];
42
+ try {
43
+ switch (workflow) {
44
+ case 'analyze_and_refine': {
45
+ // Step 1: Analyze the prompt
46
+ if (!prompt)
47
+ throw new Error('Prompt is required for analyze_and_refine workflow');
48
+ const analyzeResult = await analyzePrompt({ prompt });
49
+ steps.push({ name: 'analyze', success: true, output: analyzeResult });
50
+ analysis = analyzeResult;
51
+ // Step 2: Refine based on analysis suggestions
52
+ if (analyzeResult.suggestions.length > 0) {
53
+ const refineFeedback = feedback || analyzeResult.suggestions.slice(0, 3).join('. ');
54
+ const refineResult = await refinePrompt({
55
+ prompt,
56
+ feedback: refineFeedback,
57
+ preserveStructure: true,
58
+ targetModel: targetModel || 'general',
59
+ workspaceContext,
60
+ });
61
+ steps.push({ name: 'refine', success: true, output: refineResult });
62
+ currentPrompt = refineResult.refinedPrompt;
63
+ improvements = refineResult.changes;
64
+ }
65
+ else {
66
+ currentPrompt = prompt;
67
+ }
68
+ break;
69
+ }
70
+ case 'generate_and_analyze': {
71
+ // Step 1: Generate prompt from idea
72
+ if (!idea)
73
+ throw new Error('Idea is required for generate_and_analyze workflow');
74
+ const generateResult = await generatePrompt({
75
+ idea,
76
+ template: template,
77
+ targetModel: targetModel,
78
+ workspaceContext,
79
+ });
80
+ steps.push({ name: 'generate', success: true, output: generateResult });
81
+ currentPrompt = generateResult.prompt;
82
+ // Step 2: Analyze the generated prompt
83
+ const analyzeResult = await analyzePrompt({ prompt: currentPrompt });
84
+ steps.push({ name: 'analyze', success: true, output: analyzeResult });
85
+ analysis = analyzeResult;
86
+ break;
87
+ }
88
+ case 'full_optimization': {
89
+ // Step 1: Generate or use provided prompt
90
+ if (idea) {
91
+ const generateResult = await generatePrompt({
92
+ idea,
93
+ template: template,
94
+ targetModel: targetModel,
95
+ workspaceContext,
96
+ });
97
+ steps.push({ name: 'generate', success: true, output: generateResult });
98
+ currentPrompt = generateResult.prompt;
99
+ }
100
+ else if (prompt) {
101
+ currentPrompt = prompt;
102
+ }
103
+ else {
104
+ throw new Error('Either idea or prompt is required');
105
+ }
106
+ // Step 2: Analyze
107
+ let analyzeResult = await analyzePrompt({ prompt: currentPrompt });
108
+ steps.push({ name: 'analyze', success: true, output: analyzeResult });
109
+ analysis = analyzeResult;
110
+ // Step 3: Refine if score is below threshold
111
+ const QUALITY_THRESHOLD = 80;
112
+ let iterations = 0;
113
+ const MAX_ITERATIONS = 3;
114
+ while (analyzeResult.scores.overall < QUALITY_THRESHOLD && iterations < MAX_ITERATIONS) {
115
+ const refineFeedback = analyzeResult.suggestions.slice(0, 2).join('. ');
116
+ const refineResult = await refinePrompt({
117
+ prompt: currentPrompt,
118
+ feedback: refineFeedback,
119
+ preserveStructure: true,
120
+ targetModel: targetModel || 'general',
121
+ workspaceContext,
122
+ });
123
+ steps.push({ name: `refine_${iterations + 1}`, success: true, output: refineResult });
124
+ currentPrompt = refineResult.refinedPrompt;
125
+ improvements.push(...refineResult.changes);
126
+ // Re-analyze
127
+ analyzeResult = await analyzePrompt({ prompt: currentPrompt });
128
+ steps.push({ name: `analyze_${iterations + 1}`, success: true, output: analyzeResult });
129
+ analysis = analyzeResult;
130
+ iterations++;
131
+ }
132
+ break;
133
+ }
134
+ case 'context_aware_generate': {
135
+ // Step 1: Get workspace context if not provided
136
+ let context = workspaceContext;
137
+ if (!context) {
138
+ const wsContext = await getWorkspaceContext({
139
+ directory: '.',
140
+ includePackageJson: true,
141
+ maxFiles: 100,
142
+ });
143
+ steps.push({ name: 'get_context', success: true, output: wsContext });
144
+ context = formatWorkspaceContext(wsContext);
145
+ }
146
+ // Step 2: Generate with context
147
+ if (!idea)
148
+ throw new Error('Idea is required for context_aware_generate workflow');
149
+ const generateResult = await generatePrompt({
150
+ idea,
151
+ template: template,
152
+ targetModel: targetModel,
153
+ workspaceContext: context,
154
+ });
155
+ steps.push({ name: 'generate', success: true, output: generateResult });
156
+ currentPrompt = generateResult.prompt;
157
+ // Step 3: Analyze
158
+ const analyzeResult = await analyzePrompt({ prompt: currentPrompt });
159
+ steps.push({ name: 'analyze', success: true, output: analyzeResult });
160
+ analysis = analyzeResult;
161
+ break;
162
+ }
163
+ }
164
+ // Optional: Save to file
165
+ let savedTo;
166
+ if (saveToFile && currentPrompt) {
167
+ const writeResult = await writeFile({
168
+ filePath: saveToFile,
169
+ content: currentPrompt,
170
+ createDirectories: true,
171
+ overwrite: true,
172
+ });
173
+ steps.push({ name: 'save', success: true, output: writeResult });
174
+ savedTo = writeResult.filePath;
175
+ }
176
+ return {
177
+ workflow,
178
+ steps,
179
+ finalPrompt: currentPrompt,
180
+ analysis,
181
+ savedTo,
182
+ improvements: improvements.length > 0 ? improvements : undefined,
183
+ };
184
+ }
185
+ catch (error) {
186
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
187
+ logger.error('Workflow failed', { workflow, error: errorMessage });
188
+ steps.push({ name: 'error', success: false, error: errorMessage });
189
+ return {
190
+ workflow,
191
+ steps,
192
+ finalPrompt: currentPrompt,
193
+ analysis,
194
+ improvements,
195
+ };
196
+ }
197
+ }
198
+ // ============================================================================
199
+ // CUSTOM WORKFLOW TOOL
200
+ // ============================================================================
201
+ export const customWorkflowSchema = z.object({
202
+ steps: z.array(z.object({
203
+ tool: z.enum([
204
+ 'generate_prompt',
205
+ 'refine_prompt',
206
+ 'analyze_prompt',
207
+ 'read_file',
208
+ 'write_file',
209
+ 'execute_command',
210
+ 'get_workspace_context',
211
+ ]),
212
+ params: z.record(z.any()),
213
+ outputVar: z.string().optional(),
214
+ condition: z.string().optional(),
215
+ })).describe('Array of workflow steps to execute'),
216
+ stopOnError: z.boolean().optional().default(true).describe('Stop workflow on first error'),
217
+ });
218
+ export async function executeCustomWorkflow(input) {
219
+ const { steps, stopOnError } = input;
220
+ logger.info('Executing custom workflow', { stepCount: steps.length });
221
+ const startTime = Date.now();
222
+ const results = [];
223
+ const variables = {};
224
+ let finalOutput;
225
+ for (const step of steps) {
226
+ const stepStart = Date.now();
227
+ try {
228
+ // Check condition if specified
229
+ if (step.condition) {
230
+ const conditionMet = evaluateCondition(step.condition, variables);
231
+ if (!conditionMet) {
232
+ results.push({
233
+ tool: step.tool,
234
+ success: true,
235
+ result: 'Skipped (condition not met)',
236
+ duration: 0,
237
+ });
238
+ continue;
239
+ }
240
+ }
241
+ // Interpolate variables in params
242
+ const interpolatedParams = interpolateParams(step.params, variables);
243
+ // Execute the tool
244
+ let result;
245
+ switch (step.tool) {
246
+ case 'generate_prompt':
247
+ result = await generatePrompt(interpolatedParams);
248
+ break;
249
+ case 'refine_prompt':
250
+ result = await refinePrompt(interpolatedParams);
251
+ break;
252
+ case 'analyze_prompt':
253
+ result = await analyzePrompt(interpolatedParams);
254
+ break;
255
+ case 'read_file':
256
+ result = await readFile(interpolatedParams);
257
+ break;
258
+ case 'write_file':
259
+ result = await writeFile(interpolatedParams);
260
+ break;
261
+ case 'execute_command':
262
+ result = await executeCommand(interpolatedParams);
263
+ break;
264
+ case 'get_workspace_context':
265
+ result = await getWorkspaceContext(interpolatedParams);
266
+ break;
267
+ default:
268
+ throw new Error(`Unknown tool: ${step.tool}`);
269
+ }
270
+ // Store output in variable if specified
271
+ if (step.outputVar) {
272
+ variables[step.outputVar] = result;
273
+ }
274
+ finalOutput = result;
275
+ results.push({
276
+ tool: step.tool,
277
+ success: true,
278
+ result,
279
+ duration: Date.now() - stepStart,
280
+ });
281
+ }
282
+ catch (error) {
283
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
284
+ results.push({
285
+ tool: step.tool,
286
+ success: false,
287
+ error: errorMessage,
288
+ duration: Date.now() - stepStart,
289
+ });
290
+ if (stopOnError) {
291
+ break;
292
+ }
293
+ }
294
+ }
295
+ const allSuccess = results.every(r => r.success);
296
+ return {
297
+ success: allSuccess,
298
+ steps: results,
299
+ finalOutput,
300
+ totalDuration: Date.now() - startTime,
301
+ variables,
302
+ };
303
+ }
304
+ // ============================================================================
305
+ // HELPER FUNCTIONS
306
+ // ============================================================================
307
+ function formatWorkspaceContext(context) {
308
+ const parts = [];
309
+ parts.push(`Project: ${context.name}`);
310
+ if (context.techStack.length > 0) {
311
+ parts.push(`Tech Stack: ${context.techStack.join(', ')}`);
312
+ }
313
+ if (Object.keys(context.dependencies).length > 0) {
314
+ const topDeps = Object.keys(context.dependencies).slice(0, 10);
315
+ parts.push(`Dependencies: ${topDeps.join(', ')}`);
316
+ }
317
+ if (context.structure.length > 0) {
318
+ parts.push(`Structure: ${context.structure.slice(0, 20).join(', ')}`);
319
+ }
320
+ if (context.patterns.length > 0) {
321
+ parts.push(`Patterns: ${context.patterns.join(', ')}`);
322
+ }
323
+ return parts.join('\n');
324
+ }
325
+ function evaluateCondition(condition, variables) {
326
+ try {
327
+ // Simple condition evaluation (e.g., "score > 50", "exists(result)")
328
+ // This is a basic implementation - could be expanded
329
+ // Check for "exists(varName)"
330
+ const existsMatch = condition.match(/exists\((\w+)\)/);
331
+ if (existsMatch) {
332
+ return variables[existsMatch[1]] !== undefined;
333
+ }
334
+ // Check for "varName.property > value"
335
+ const comparisonMatch = condition.match(/(\w+)\.(\w+)\s*(>|<|>=|<=|==|!=)\s*(\d+)/);
336
+ if (comparisonMatch) {
337
+ const [, varName, prop, operator, valueStr] = comparisonMatch;
338
+ const varValue = variables[varName]?.[prop];
339
+ const compareValue = parseFloat(valueStr);
340
+ switch (operator) {
341
+ case '>': return varValue > compareValue;
342
+ case '<': return varValue < compareValue;
343
+ case '>=': return varValue >= compareValue;
344
+ case '<=': return varValue <= compareValue;
345
+ case '==': return varValue == compareValue;
346
+ case '!=': return varValue != compareValue;
347
+ }
348
+ }
349
+ // Default: true
350
+ return true;
351
+ }
352
+ catch {
353
+ return true;
354
+ }
355
+ }
356
+ function interpolateParams(params, variables) {
357
+ const result = {};
358
+ for (const [key, value] of Object.entries(params)) {
359
+ if (typeof value === 'string') {
360
+ // Replace ${varName} or ${varName.property} with actual values
361
+ result[key] = value.replace(/\$\{(\w+)(?:\.(\w+))?\}/g, (_, varName, prop) => {
362
+ const varValue = variables[varName];
363
+ if (prop && varValue && typeof varValue === 'object') {
364
+ return String(varValue[prop] ?? '');
365
+ }
366
+ return String(varValue ?? '');
367
+ });
368
+ }
369
+ else if (typeof value === 'object' && value !== null) {
370
+ result[key] = interpolateParams(value, variables);
371
+ }
372
+ else {
373
+ result[key] = value;
374
+ }
375
+ }
376
+ return result;
377
+ }
378
+ export default {
379
+ executePromptWorkflow,
380
+ promptWorkflowSchema,
381
+ executeCustomWorkflow,
382
+ customWorkflowSchema,
383
+ };
384
+ //# sourceMappingURL=workflowTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflowTools.js","sourceRoot":"","sources":["../../src/tools/workflowTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAuB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAqB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAsC,MAAM,oBAAoB,CAAC;AACvF,OAAO,EACL,QAAQ,EACR,SAAS,EACT,mBAAmB,GAEpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA2BrD,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC;QACf,oBAAoB;QACpB,sBAAsB;QACtB,mBAAmB;QACnB,wBAAwB;KACzB,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACvF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACxE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC9D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACjF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CACjF,CAAC,CAAC;AAkBH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAA0B;IACpE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IAExG,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAkC,EAAE,CAAC;IAChD,IAAI,aAAa,GAAG,MAAM,IAAI,EAAE,CAAC;IACjC,IAAI,QAAoC,CAAC;IACzC,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,6BAA6B;gBAC7B,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBAEnF,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACtE,QAAQ,GAAG,aAAa,CAAC;gBAEzB,+CAA+C;gBAC/C,IAAI,aAAa,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzC,MAAM,cAAc,GAAG,QAAQ,IAAI,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpF,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC;wBACtC,MAAM;wBACN,QAAQ,EAAE,cAAc;wBACxB,iBAAiB,EAAE,IAAI;wBACvB,WAAW,EAAG,WAAmB,IAAI,SAAS;wBAC9C,gBAAgB;qBACjB,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;oBACpE,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;oBAC3C,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,MAAM,CAAC;gBACzB,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,oCAAoC;gBACpC,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBAEjF,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;oBAC1C,IAAI;oBACJ,QAAQ,EAAE,QAAe;oBACzB,WAAW,EAAE,WAAkB;oBAC/B,gBAAgB;iBACjB,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;gBACxE,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;gBAEtC,uCAAuC;gBACvC,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACrE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACtE,QAAQ,GAAG,aAAa,CAAC;gBACzB,MAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,0CAA0C;gBAC1C,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;wBAC1C,IAAI;wBACJ,QAAQ,EAAE,QAAe;wBACzB,WAAW,EAAE,WAAkB;wBAC/B,gBAAgB;qBACjB,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;oBACxE,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;gBACxC,CAAC;qBAAM,IAAI,MAAM,EAAE,CAAC;oBAClB,aAAa,GAAG,MAAM,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACvD,CAAC;gBAED,kBAAkB;gBAClB,IAAI,aAAa,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACnE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACtE,QAAQ,GAAG,aAAa,CAAC;gBAEzB,6CAA6C;gBAC7C,MAAM,iBAAiB,GAAG,EAAE,CAAC;gBAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;gBACnB,MAAM,cAAc,GAAG,CAAC,CAAC;gBAEzB,OAAO,aAAa,CAAC,MAAM,CAAC,OAAO,GAAG,iBAAiB,IAAI,UAAU,GAAG,cAAc,EAAE,CAAC;oBACvF,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxE,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC;wBACtC,MAAM,EAAE,aAAa;wBACrB,QAAQ,EAAE,cAAc;wBACxB,iBAAiB,EAAE,IAAI;wBACvB,WAAW,EAAG,WAAmB,IAAI,SAAS;wBAC9C,gBAAgB;qBACjB,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,UAAU,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;oBACtF,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;oBAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;oBAE3C,aAAa;oBACb,aAAa,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;oBAC/D,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,UAAU,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;oBACxF,QAAQ,GAAG,aAAa,CAAC;oBACzB,UAAU,EAAE,CAAC;gBACf,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,gDAAgD;gBAChD,IAAI,OAAO,GAAG,gBAAgB,CAAC;gBAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC;wBAC1C,SAAS,EAAE,GAAG;wBACd,kBAAkB,EAAE,IAAI;wBACxB,QAAQ,EAAE,GAAG;qBACd,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBACtE,OAAO,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAC9C,CAAC;gBAED,gCAAgC;gBAChC,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBAEnF,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;oBAC1C,IAAI;oBACJ,QAAQ,EAAE,QAAe;oBACzB,WAAW,EAAE,WAAkB;oBAC/B,gBAAgB,EAAE,OAAO;iBAC1B,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;gBACxE,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;gBAEtC,kBAAkB;gBAClB,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACrE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACtE,QAAQ,GAAG,aAAa,CAAC;gBACzB,MAAM;YACR,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,IAAI,OAA2B,CAAC;QAChC,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC;gBAClC,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,aAAa;gBACtB,iBAAiB,EAAE,IAAI;gBACvB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACjE,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC;QACjC,CAAC;QAED,OAAO;YACL,QAAQ;YACR,KAAK;YACL,WAAW,EAAE,aAAa;YAC1B,QAAQ;YACR,OAAO;YACP,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;SACjE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAEnE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAEnE,OAAO;YACL,QAAQ;YACR,KAAK;YACL,WAAW,EAAE,aAAa;YAC1B,QAAQ;YACR,YAAY;SACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;YACX,iBAAiB;YACjB,eAAe;YACf,gBAAgB;YAChB,WAAW;YACX,YAAY;YACZ,iBAAiB;YACjB,uBAAuB;SACxB,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACjC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CAC3F,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAA0B;IACpE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAErC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAEtE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAwB,EAAE,CAAC;IAC1C,IAAI,WAAgB,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,+BAA+B;YAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAClE,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,6BAA6B;wBACrC,QAAQ,EAAE,CAAC;qBACZ,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAErE,mBAAmB;YACnB,IAAI,MAAW,CAAC;YAChB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,iBAAiB;oBACpB,MAAM,GAAG,MAAM,cAAc,CAAC,kBAAyC,CAAC,CAAC;oBACzE,MAAM;gBACR,KAAK,eAAe;oBAClB,MAAM,GAAG,MAAM,YAAY,CAAC,kBAAuC,CAAC,CAAC;oBACrE,MAAM;gBACR,KAAK,gBAAgB;oBACnB,MAAM,GAAG,MAAM,aAAa,CAAC,kBAAwC,CAAC,CAAC;oBACvE,MAAM;gBACR,KAAK,WAAW;oBACd,MAAM,GAAG,MAAM,QAAQ,CAAC,kBAAyB,CAAC,CAAC;oBACnD,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,GAAG,MAAM,SAAS,CAAC,kBAAyB,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,iBAAiB;oBACpB,MAAM,GAAG,MAAM,cAAc,CAAC,kBAAyB,CAAC,CAAC;oBACzD,MAAM;gBACR,KAAK,uBAAuB;oBAC1B,MAAM,GAAG,MAAM,mBAAmB,CAAC,kBAAyB,CAAC,CAAC;oBAC9D,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;YAED,wCAAwC;YACxC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YACrC,CAAC;YAED,WAAW,GAAG,MAAM,CAAC;YAErB,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,MAAM;gBACN,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACjC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAE9E,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACjC,CAAC,CAAC;YAEH,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAEjD,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,OAAO;QACd,WAAW;QACX,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;QACrC,SAAS;KACV,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,SAAS,sBAAsB,CAAC,OAAyB;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB,EAAE,SAA8B;IAC1E,IAAI,CAAC;QACH,qEAAqE;QACrE,qDAAqD;QAErD,8BAA8B;QAC9B,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;QACjD,CAAC;QAED,uCAAuC;QACvC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACpF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC;YAC9D,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE1C,QAAQ,QAAQ,EAAE,CAAC;gBACjB,KAAK,GAAG,CAAC,CAAC,OAAO,QAAQ,GAAG,YAAY,CAAC;gBACzC,KAAK,GAAG,CAAC,CAAC,OAAO,QAAQ,GAAG,YAAY,CAAC;gBACzC,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,IAAI,YAAY,CAAC;gBAC3C,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,IAAI,YAAY,CAAC;gBAC3C,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,IAAI,YAAY,CAAC;gBAC3C,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,IAAI,YAAY,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,MAA2B,EAAE,SAA8B;IACpF,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,+DAA+D;YAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBAC3E,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,IAAI,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,eAAe;IACb,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;CACrB,CAAC"}
@@ -0,0 +1,255 @@
1
+ /**
2
+ * Workspace Tools
3
+ * File system and workspace operations for the MCP agent
4
+ *
5
+ * These tools enable the agent to:
6
+ * - Read files from the workspace
7
+ * - Write/create files
8
+ * - List directory contents
9
+ * - Search for files by pattern
10
+ * - Get workspace context
11
+ */
12
+ import { z } from 'zod';
13
+ export declare const readFileSchema: z.ZodObject<{
14
+ filePath: z.ZodString;
15
+ startLine: z.ZodOptional<z.ZodNumber>;
16
+ endLine: z.ZodOptional<z.ZodNumber>;
17
+ encoding: z.ZodDefault<z.ZodOptional<z.ZodEnum<["utf-8", "base64"]>>>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ filePath: string;
20
+ encoding: "utf-8" | "base64";
21
+ startLine?: number | undefined;
22
+ endLine?: number | undefined;
23
+ }, {
24
+ filePath: string;
25
+ startLine?: number | undefined;
26
+ endLine?: number | undefined;
27
+ encoding?: "utf-8" | "base64" | undefined;
28
+ }>;
29
+ export type ReadFileInput = z.infer<typeof readFileSchema>;
30
+ export interface ReadFileResult {
31
+ content: string;
32
+ filePath: string;
33
+ lineCount: number;
34
+ language: string;
35
+ truncated: boolean;
36
+ startLine?: number;
37
+ endLine?: number;
38
+ }
39
+ export declare function readFile(input: ReadFileInput): Promise<ReadFileResult>;
40
+ export declare const writeFileSchema: z.ZodObject<{
41
+ filePath: z.ZodString;
42
+ content: z.ZodString;
43
+ createDirectories: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
44
+ overwrite: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ filePath: string;
47
+ content: string;
48
+ createDirectories: boolean;
49
+ overwrite: boolean;
50
+ }, {
51
+ filePath: string;
52
+ content: string;
53
+ createDirectories?: boolean | undefined;
54
+ overwrite?: boolean | undefined;
55
+ }>;
56
+ export type WriteFileInput = z.infer<typeof writeFileSchema>;
57
+ export interface WriteFileResult {
58
+ filePath: string;
59
+ created: boolean;
60
+ bytesWritten: number;
61
+ message: string;
62
+ }
63
+ export declare function writeFile(input: WriteFileInput): Promise<WriteFileResult>;
64
+ export declare const listFilesSchema: z.ZodObject<{
65
+ directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
66
+ pattern: z.ZodOptional<z.ZodString>;
67
+ recursive: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
68
+ includeHidden: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
69
+ maxDepth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ directory: string;
72
+ recursive: boolean;
73
+ includeHidden: boolean;
74
+ maxDepth: number;
75
+ pattern?: string | undefined;
76
+ }, {
77
+ directory?: string | undefined;
78
+ pattern?: string | undefined;
79
+ recursive?: boolean | undefined;
80
+ includeHidden?: boolean | undefined;
81
+ maxDepth?: number | undefined;
82
+ }>;
83
+ export type ListFilesInput = z.infer<typeof listFilesSchema>;
84
+ export interface FileInfo {
85
+ name: string;
86
+ path: string;
87
+ type: 'file' | 'directory';
88
+ size?: number;
89
+ language?: string;
90
+ }
91
+ export interface ListFilesResult {
92
+ directory: string;
93
+ files: FileInfo[];
94
+ totalCount: number;
95
+ truncated: boolean;
96
+ }
97
+ export declare function listFiles(input: ListFilesInput): Promise<ListFilesResult>;
98
+ export declare const searchFilesSchema: z.ZodObject<{
99
+ query: z.ZodString;
100
+ directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
101
+ filePattern: z.ZodOptional<z.ZodString>;
102
+ caseSensitive: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
103
+ maxResults: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
104
+ contextLines: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
105
+ }, "strip", z.ZodTypeAny, {
106
+ directory: string;
107
+ query: string;
108
+ caseSensitive: boolean;
109
+ maxResults: number;
110
+ contextLines: number;
111
+ filePattern?: string | undefined;
112
+ }, {
113
+ query: string;
114
+ directory?: string | undefined;
115
+ filePattern?: string | undefined;
116
+ caseSensitive?: boolean | undefined;
117
+ maxResults?: number | undefined;
118
+ contextLines?: number | undefined;
119
+ }>;
120
+ export type SearchFilesInput = z.infer<typeof searchFilesSchema>;
121
+ export interface SearchMatch {
122
+ file: string;
123
+ line: number;
124
+ column: number;
125
+ match: string;
126
+ context: string;
127
+ }
128
+ export interface SearchFilesResult {
129
+ query: string;
130
+ matches: SearchMatch[];
131
+ filesSearched: number;
132
+ totalMatches: number;
133
+ truncated: boolean;
134
+ }
135
+ export declare function searchFiles(input: SearchFilesInput): Promise<SearchFilesResult>;
136
+ export declare const getWorkspaceContextSchema: z.ZodObject<{
137
+ directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
138
+ includePackageJson: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
139
+ maxFiles: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
140
+ }, "strip", z.ZodTypeAny, {
141
+ directory: string;
142
+ includePackageJson: boolean;
143
+ maxFiles: number;
144
+ }, {
145
+ directory?: string | undefined;
146
+ includePackageJson?: boolean | undefined;
147
+ maxFiles?: number | undefined;
148
+ }>;
149
+ export type GetWorkspaceContextInput = z.infer<typeof getWorkspaceContextSchema>;
150
+ export interface WorkspaceContext {
151
+ name: string;
152
+ path: string;
153
+ techStack: string[];
154
+ dependencies: Record<string, string>;
155
+ devDependencies: Record<string, string>;
156
+ structure: string[];
157
+ patterns: string[];
158
+ summary: string;
159
+ }
160
+ export declare function getWorkspaceContext(input: GetWorkspaceContextInput): Promise<WorkspaceContext>;
161
+ declare const _default: {
162
+ readFile: typeof readFile;
163
+ readFileSchema: z.ZodObject<{
164
+ filePath: z.ZodString;
165
+ startLine: z.ZodOptional<z.ZodNumber>;
166
+ endLine: z.ZodOptional<z.ZodNumber>;
167
+ encoding: z.ZodDefault<z.ZodOptional<z.ZodEnum<["utf-8", "base64"]>>>;
168
+ }, "strip", z.ZodTypeAny, {
169
+ filePath: string;
170
+ encoding: "utf-8" | "base64";
171
+ startLine?: number | undefined;
172
+ endLine?: number | undefined;
173
+ }, {
174
+ filePath: string;
175
+ startLine?: number | undefined;
176
+ endLine?: number | undefined;
177
+ encoding?: "utf-8" | "base64" | undefined;
178
+ }>;
179
+ writeFile: typeof writeFile;
180
+ writeFileSchema: z.ZodObject<{
181
+ filePath: z.ZodString;
182
+ content: z.ZodString;
183
+ createDirectories: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
184
+ overwrite: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
185
+ }, "strip", z.ZodTypeAny, {
186
+ filePath: string;
187
+ content: string;
188
+ createDirectories: boolean;
189
+ overwrite: boolean;
190
+ }, {
191
+ filePath: string;
192
+ content: string;
193
+ createDirectories?: boolean | undefined;
194
+ overwrite?: boolean | undefined;
195
+ }>;
196
+ listFiles: typeof listFiles;
197
+ listFilesSchema: z.ZodObject<{
198
+ directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
199
+ pattern: z.ZodOptional<z.ZodString>;
200
+ recursive: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
201
+ includeHidden: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
202
+ maxDepth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
203
+ }, "strip", z.ZodTypeAny, {
204
+ directory: string;
205
+ recursive: boolean;
206
+ includeHidden: boolean;
207
+ maxDepth: number;
208
+ pattern?: string | undefined;
209
+ }, {
210
+ directory?: string | undefined;
211
+ pattern?: string | undefined;
212
+ recursive?: boolean | undefined;
213
+ includeHidden?: boolean | undefined;
214
+ maxDepth?: number | undefined;
215
+ }>;
216
+ searchFiles: typeof searchFiles;
217
+ searchFilesSchema: z.ZodObject<{
218
+ query: z.ZodString;
219
+ directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
220
+ filePattern: z.ZodOptional<z.ZodString>;
221
+ caseSensitive: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
222
+ maxResults: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
223
+ contextLines: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
224
+ }, "strip", z.ZodTypeAny, {
225
+ directory: string;
226
+ query: string;
227
+ caseSensitive: boolean;
228
+ maxResults: number;
229
+ contextLines: number;
230
+ filePattern?: string | undefined;
231
+ }, {
232
+ query: string;
233
+ directory?: string | undefined;
234
+ filePattern?: string | undefined;
235
+ caseSensitive?: boolean | undefined;
236
+ maxResults?: number | undefined;
237
+ contextLines?: number | undefined;
238
+ }>;
239
+ getWorkspaceContext: typeof getWorkspaceContext;
240
+ getWorkspaceContextSchema: z.ZodObject<{
241
+ directory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
242
+ includePackageJson: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
243
+ maxFiles: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
244
+ }, "strip", z.ZodTypeAny, {
245
+ directory: string;
246
+ includePackageJson: boolean;
247
+ maxFiles: number;
248
+ }, {
249
+ directory?: string | undefined;
250
+ includePackageJson?: boolean | undefined;
251
+ maxFiles?: number | undefined;
252
+ }>;
253
+ };
254
+ export default _default;
255
+ //# sourceMappingURL=workspaceTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceTools.d.ts","sourceRoot":"","sources":["../../src/tools/workspaceTools.ts"],"names":[],"mappings":"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"}