open-agent-sdk 0.1.0-alpha.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.
- package/LICENSE +21 -0
- package/README.md +284 -0
- package/README.zh.md +285 -0
- package/dist/agent/agent-definition.d.ts +107 -0
- package/dist/agent/agent-definition.d.ts.map +1 -0
- package/dist/agent/agent-definition.js +90 -0
- package/dist/agent/agent-definition.js.map +1 -0
- package/dist/agent/react-loop.d.ts +117 -0
- package/dist/agent/react-loop.d.ts.map +1 -0
- package/dist/agent/react-loop.js +674 -0
- package/dist/agent/react-loop.js.map +1 -0
- package/dist/agent/subagent-runner.d.ts +67 -0
- package/dist/agent/subagent-runner.d.ts.map +1 -0
- package/dist/agent/subagent-runner.js +168 -0
- package/dist/agent/subagent-runner.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/inputs.d.ts +56 -0
- package/dist/hooks/inputs.d.ts.map +1 -0
- package/dist/hooks/inputs.js +150 -0
- package/dist/hooks/inputs.js.map +1 -0
- package/dist/hooks/manager.d.ts +63 -0
- package/dist/hooks/manager.d.ts.map +1 -0
- package/dist/hooks/manager.js +137 -0
- package/dist/hooks/manager.js.map +1 -0
- package/dist/hooks/types.d.ts +191 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +6 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +109 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +218 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/errors.d.ts +26 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +43 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/index.d.ts +11 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +13 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +50 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +170 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/server-registry.d.ts +48 -0
- package/dist/mcp/server-registry.d.ts.map +1 -0
- package/dist/mcp/server-registry.js +121 -0
- package/dist/mcp/server-registry.js.map +1 -0
- package/dist/mcp/tool-adapter.d.ts +42 -0
- package/dist/mcp/tool-adapter.d.ts.map +1 -0
- package/dist/mcp/tool-adapter.js +89 -0
- package/dist/mcp/tool-adapter.js.map +1 -0
- package/dist/mcp/types.d.ts +74 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +21 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/permissions/index.d.ts +3 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +4 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/manager.d.ts +40 -0
- package/dist/permissions/manager.d.ts.map +1 -0
- package/dist/permissions/manager.js +115 -0
- package/dist/permissions/manager.js.map +1 -0
- package/dist/permissions/types.d.ts +124 -0
- package/dist/permissions/types.d.ts.map +1 -0
- package/dist/permissions/types.js +25 -0
- package/dist/permissions/types.js.map +1 -0
- package/dist/providers/anthropic.d.ts +18 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +126 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +85 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +36 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/google.d.ts +12 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +123 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/openai.d.ts +12 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +110 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/session/factory.d.ts +156 -0
- package/dist/session/factory.d.ts.map +1 -0
- package/dist/session/factory.js +311 -0
- package/dist/session/factory.js.map +1 -0
- package/dist/session/index.d.ts +8 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +7 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/session.d.ts +144 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/session/session.js +319 -0
- package/dist/session/session.js.map +1 -0
- package/dist/session/storage.d.ts +105 -0
- package/dist/session/storage.d.ts.map +1 -0
- package/dist/session/storage.js +148 -0
- package/dist/session/storage.js.map +1 -0
- package/dist/tools/ask-user-question.d.ts +31 -0
- package/dist/tools/ask-user-question.d.ts.map +1 -0
- package/dist/tools/ask-user-question.js +66 -0
- package/dist/tools/ask-user-question.js.map +1 -0
- package/dist/tools/bash-output.d.ts +22 -0
- package/dist/tools/bash-output.d.ts.map +1 -0
- package/dist/tools/bash-output.js +43 -0
- package/dist/tools/bash-output.js.map +1 -0
- package/dist/tools/bash.d.ts +36 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +161 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +24 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +83 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +22 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +248 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +39 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +312 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/kill-bash.d.ts +19 -0
- package/dist/tools/kill-bash.d.ts.map +1 -0
- package/dist/tools/kill-bash.js +64 -0
- package/dist/tools/kill-bash.js.map +1 -0
- package/dist/tools/read.d.ts +26 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +87 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/registry.d.ts +32 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +91 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/task-create.d.ts +22 -0
- package/dist/tools/task-create.d.ts.map +1 -0
- package/dist/tools/task-create.js +42 -0
- package/dist/tools/task-create.js.map +1 -0
- package/dist/tools/task-get.d.ts +19 -0
- package/dist/tools/task-get.d.ts.map +1 -0
- package/dist/tools/task-get.js +38 -0
- package/dist/tools/task-get.js.map +1 -0
- package/dist/tools/task-list.d.ts +18 -0
- package/dist/tools/task-list.d.ts.map +1 -0
- package/dist/tools/task-list.js +27 -0
- package/dist/tools/task-list.js.map +1 -0
- package/dist/tools/task-storage.d.ts +6 -0
- package/dist/tools/task-storage.d.ts.map +1 -0
- package/dist/tools/task-storage.js +83 -0
- package/dist/tools/task-storage.js.map +1 -0
- package/dist/tools/task-update.d.ts +28 -0
- package/dist/tools/task-update.d.ts.map +1 -0
- package/dist/tools/task-update.js +118 -0
- package/dist/tools/task-update.js.map +1 -0
- package/dist/tools/task.d.ts +80 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +99 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +21 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +124 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +20 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +127 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/write.d.ts +22 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +46 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types/messages.d.ts +138 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +88 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/task.d.ts +29 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +5 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/tools.d.ts +56 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +25 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +46 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/uuid.d.ts +3 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +5 -0
- package/dist/utils/uuid.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grep tool - Search file contents using regex patterns
|
|
3
|
+
*/
|
|
4
|
+
import { readdirSync, statSync, existsSync, readFileSync } from 'fs';
|
|
5
|
+
import { resolve, join, relative } from 'path';
|
|
6
|
+
const parameters = {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
pattern: {
|
|
10
|
+
type: 'string',
|
|
11
|
+
description: 'Regular expression pattern to search for',
|
|
12
|
+
},
|
|
13
|
+
path: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
description: 'Directory to search in (defaults to cwd)',
|
|
16
|
+
},
|
|
17
|
+
glob: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Glob pattern to filter files (e.g., "*.ts")',
|
|
20
|
+
},
|
|
21
|
+
multiline: {
|
|
22
|
+
type: 'boolean',
|
|
23
|
+
description: 'Enable multiline matching (default: false)',
|
|
24
|
+
},
|
|
25
|
+
ignoreCase: {
|
|
26
|
+
type: 'boolean',
|
|
27
|
+
description: 'Case insensitive matching (default: false)',
|
|
28
|
+
},
|
|
29
|
+
output_mode: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
enum: ['files_with_matches', 'content', 'count'],
|
|
32
|
+
description: 'Output format: files_with_matches (file paths only), content (matching lines), count (match counts per file)',
|
|
33
|
+
},
|
|
34
|
+
head_limit: {
|
|
35
|
+
type: 'number',
|
|
36
|
+
description: 'Maximum number of matches to return (default: 100)',
|
|
37
|
+
},
|
|
38
|
+
offset: {
|
|
39
|
+
type: 'number',
|
|
40
|
+
description: 'Number of matches to skip from the beginning',
|
|
41
|
+
},
|
|
42
|
+
context: {
|
|
43
|
+
type: 'number',
|
|
44
|
+
description: 'Number of context lines to show before and after each match (like -C in grep)',
|
|
45
|
+
},
|
|
46
|
+
before_context: {
|
|
47
|
+
type: 'number',
|
|
48
|
+
description: 'Number of context lines to show before each match (like -B in grep)',
|
|
49
|
+
},
|
|
50
|
+
after_context: {
|
|
51
|
+
type: 'number',
|
|
52
|
+
description: 'Number of context lines to show after each match (like -A in grep)',
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
required: ['pattern'],
|
|
56
|
+
};
|
|
57
|
+
const MAX_MATCHES = 100;
|
|
58
|
+
const MAX_FILE_SIZE = 1024 * 1024; // 1MB
|
|
59
|
+
/**
|
|
60
|
+
* Simple glob matching function
|
|
61
|
+
* Supports: * (any chars), ? (single char), ** (recursive)
|
|
62
|
+
*/
|
|
63
|
+
function matchGlob(filePath, pattern) {
|
|
64
|
+
const normalizedPath = filePath.replace(/\\/g, '/');
|
|
65
|
+
const normalizedPattern = pattern.replace(/\\/g, '/');
|
|
66
|
+
// Handle **/ prefix
|
|
67
|
+
if (normalizedPattern.startsWith('**/')) {
|
|
68
|
+
const restPattern = normalizedPattern.slice(3);
|
|
69
|
+
const parts = normalizedPath.split('/');
|
|
70
|
+
for (let i = 0; i < parts.length; i++) {
|
|
71
|
+
const subPath = parts.slice(i).join('/');
|
|
72
|
+
if (matchSimpleGlob(subPath, restPattern)) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
return matchSimpleGlob(normalizedPath, normalizedPattern);
|
|
79
|
+
}
|
|
80
|
+
function matchSimpleGlob(path, pattern) {
|
|
81
|
+
// Convert simple glob to regex
|
|
82
|
+
let regex = '';
|
|
83
|
+
for (let i = 0; i < pattern.length; i++) {
|
|
84
|
+
const c = pattern[i];
|
|
85
|
+
if (c === '*') {
|
|
86
|
+
regex += '.*';
|
|
87
|
+
}
|
|
88
|
+
else if (c === '?') {
|
|
89
|
+
regex += '.';
|
|
90
|
+
}
|
|
91
|
+
else if ('\\^$.|+()[]{}'.includes(c)) {
|
|
92
|
+
regex += '\\' + c;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
regex += c;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const re = new RegExp('^' + regex + '$');
|
|
99
|
+
return re.test(path);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Search a single file for pattern matches
|
|
103
|
+
*/
|
|
104
|
+
function searchFile(filePath, regex, matches, maxMatches, beforeContext, afterContext) {
|
|
105
|
+
if (matches.length >= maxMatches) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
// Check file size
|
|
110
|
+
const stats = statSync(filePath);
|
|
111
|
+
if (stats.size > MAX_FILE_SIZE) {
|
|
112
|
+
return; // Skip large files
|
|
113
|
+
}
|
|
114
|
+
// Read file content
|
|
115
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
116
|
+
// Check for binary content (null bytes)
|
|
117
|
+
if (content.includes('\x00')) {
|
|
118
|
+
return; // Skip binary files
|
|
119
|
+
}
|
|
120
|
+
const lines = content.split('\n');
|
|
121
|
+
if (regex.multiline) {
|
|
122
|
+
// Multiline mode: search entire content
|
|
123
|
+
const text = content;
|
|
124
|
+
let match;
|
|
125
|
+
regex.lastIndex = 0;
|
|
126
|
+
while ((match = regex.exec(text)) !== null && matches.length < maxMatches) {
|
|
127
|
+
// Find line number for the match
|
|
128
|
+
const linesBefore = text.slice(0, match.index).split('\n');
|
|
129
|
+
const lineNum = linesBefore.length;
|
|
130
|
+
const lineContent = linesBefore[linesBefore.length - 1] + text.slice(match.index).split('\n')[0];
|
|
131
|
+
const result = {
|
|
132
|
+
filePath,
|
|
133
|
+
line: lineNum,
|
|
134
|
+
content: lineContent.slice(0, 200), // Limit content length
|
|
135
|
+
};
|
|
136
|
+
// Add context if requested
|
|
137
|
+
if (beforeContext > 0) {
|
|
138
|
+
const startLine = Math.max(0, lineNum - beforeContext - 1);
|
|
139
|
+
result.context_before = lines.slice(startLine, lineNum - 1);
|
|
140
|
+
}
|
|
141
|
+
if (afterContext > 0) {
|
|
142
|
+
const endLine = Math.min(lines.length, lineNum + afterContext);
|
|
143
|
+
result.context_after = lines.slice(lineNum, endLine);
|
|
144
|
+
}
|
|
145
|
+
matches.push(result);
|
|
146
|
+
// Prevent infinite loop on zero-length matches
|
|
147
|
+
if (match[0].length === 0) {
|
|
148
|
+
regex.lastIndex++;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// Line-by-line mode
|
|
154
|
+
for (let i = 0; i < lines.length && matches.length < maxMatches; i++) {
|
|
155
|
+
const line = lines[i];
|
|
156
|
+
regex.lastIndex = 0;
|
|
157
|
+
if (regex.test(line)) {
|
|
158
|
+
const result = {
|
|
159
|
+
filePath,
|
|
160
|
+
line: i + 1,
|
|
161
|
+
content: line.slice(0, 200), // Limit content length
|
|
162
|
+
};
|
|
163
|
+
// Add context if requested
|
|
164
|
+
if (beforeContext > 0) {
|
|
165
|
+
const startLine = Math.max(0, i - beforeContext);
|
|
166
|
+
result.context_before = lines.slice(startLine, i);
|
|
167
|
+
}
|
|
168
|
+
if (afterContext > 0) {
|
|
169
|
+
const endLine = Math.min(lines.length, i + 1 + afterContext);
|
|
170
|
+
result.context_after = lines.slice(i + 1, endLine);
|
|
171
|
+
}
|
|
172
|
+
matches.push(result);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
// Skip files we can't read
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Recursively find and search files
|
|
183
|
+
*/
|
|
184
|
+
function findAndSearch(dir, pattern, glob, regex, baseDir, matches, maxMatches, beforeContext, afterContext, visited = new Set()) {
|
|
185
|
+
if (matches.length >= maxMatches) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
// Prevent infinite loops from symlinks
|
|
189
|
+
try {
|
|
190
|
+
const realPath = statSync(dir);
|
|
191
|
+
if (!realPath.isDirectory() || visited.has(dir)) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
visited.add(dir);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
try {
|
|
200
|
+
const entries = readdirSync(dir);
|
|
201
|
+
for (const entry of entries) {
|
|
202
|
+
if (matches.length >= maxMatches) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const fullPath = join(dir, entry);
|
|
206
|
+
const relativePath = relative(baseDir, fullPath);
|
|
207
|
+
try {
|
|
208
|
+
const stats = statSync(fullPath);
|
|
209
|
+
if (stats.isDirectory()) {
|
|
210
|
+
// Recurse into subdirectories
|
|
211
|
+
findAndSearch(fullPath, pattern, glob, regex, baseDir, matches, maxMatches, beforeContext, afterContext, visited);
|
|
212
|
+
}
|
|
213
|
+
else if (stats.isFile()) {
|
|
214
|
+
// Check glob filter if specified
|
|
215
|
+
if (glob && !matchGlob(relativePath, glob)) {
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
// Search the file
|
|
219
|
+
searchFile(fullPath, regex, matches, maxMatches, beforeContext, afterContext);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
// Skip entries we can't stat
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
// Skip directories we can't read
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
export class GrepTool {
|
|
232
|
+
name = 'Grep';
|
|
233
|
+
description = 'Search file contents using regular expressions. Returns matching lines with file path and line number. Supports glob filtering and multiline matching.';
|
|
234
|
+
parameters = parameters;
|
|
235
|
+
handler = async (input, context) => {
|
|
236
|
+
try {
|
|
237
|
+
// Resolve search directory
|
|
238
|
+
const searchDir = input.path
|
|
239
|
+
? resolve(context.cwd, input.path)
|
|
240
|
+
: context.cwd;
|
|
241
|
+
if (!existsSync(searchDir)) {
|
|
242
|
+
return { error: `Path "${input.path}" does not exist` };
|
|
243
|
+
}
|
|
244
|
+
const stats = statSync(searchDir);
|
|
245
|
+
if (!stats.isDirectory()) {
|
|
246
|
+
return { error: `Path "${input.path}" is not a directory` };
|
|
247
|
+
}
|
|
248
|
+
// Validate pattern
|
|
249
|
+
if (!input.pattern || input.pattern.trim() === '') {
|
|
250
|
+
return { error: 'Pattern is required' };
|
|
251
|
+
}
|
|
252
|
+
// Create regex
|
|
253
|
+
let regex;
|
|
254
|
+
try {
|
|
255
|
+
const flags = `g${input.ignoreCase ? 'i' : ''}${input.multiline ? 'm' : ''}`;
|
|
256
|
+
regex = new RegExp(input.pattern, flags);
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
260
|
+
return { error: `Invalid regex pattern: ${message}` };
|
|
261
|
+
}
|
|
262
|
+
// Determine output mode
|
|
263
|
+
const outputMode = input.output_mode ?? 'content';
|
|
264
|
+
// Determine max matches (for content mode)
|
|
265
|
+
const maxMatches = input.head_limit ?? MAX_MATCHES;
|
|
266
|
+
// Determine context lines
|
|
267
|
+
const beforeContext = input.before_context ?? input.context ?? 0;
|
|
268
|
+
const afterContext = input.after_context ?? input.context ?? 0;
|
|
269
|
+
// Find and search files
|
|
270
|
+
const matches = [];
|
|
271
|
+
findAndSearch(searchDir, input.pattern, input.glob, regex, searchDir, matches, outputMode === 'content' ? maxMatches + (input.offset ?? 0) : Infinity, beforeContext, afterContext);
|
|
272
|
+
// Apply offset
|
|
273
|
+
const offset = input.offset ?? 0;
|
|
274
|
+
const offsetMatches = matches.slice(offset);
|
|
275
|
+
// Format output based on mode
|
|
276
|
+
switch (outputMode) {
|
|
277
|
+
case 'files_with_matches': {
|
|
278
|
+
const files = [...new Set(offsetMatches.map((m) => m.filePath))];
|
|
279
|
+
return { files };
|
|
280
|
+
}
|
|
281
|
+
case 'count': {
|
|
282
|
+
const fileCounts = {};
|
|
283
|
+
for (const match of offsetMatches) {
|
|
284
|
+
fileCounts[match.filePath] = (fileCounts[match.filePath] ?? 0) + 1;
|
|
285
|
+
}
|
|
286
|
+
return { fileCounts };
|
|
287
|
+
}
|
|
288
|
+
case 'content':
|
|
289
|
+
default: {
|
|
290
|
+
const limitedMatches = offsetMatches.slice(0, maxMatches);
|
|
291
|
+
return {
|
|
292
|
+
matches: limitedMatches.map((m) => ({
|
|
293
|
+
file: m.filePath,
|
|
294
|
+
line: m.line,
|
|
295
|
+
content: m.content,
|
|
296
|
+
context_before: m.context_before,
|
|
297
|
+
context_after: m.context_after,
|
|
298
|
+
})),
|
|
299
|
+
count: limitedMatches.length,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
306
|
+
return { error: `Grep error: ${message}` };
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
// Export singleton instance
|
|
311
|
+
export const grepTool = new GrepTool();
|
|
312
|
+
//# sourceMappingURL=grep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../src/tools/grep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KillBash tool - Kill a background bash process
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool, ToolContext, JSONSchema } from '../types/tools';
|
|
5
|
+
export interface KillBashInput {
|
|
6
|
+
shellId: string;
|
|
7
|
+
}
|
|
8
|
+
export interface KillBashOutput {
|
|
9
|
+
success: boolean;
|
|
10
|
+
message: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class KillBashTool implements Tool<KillBashInput, KillBashOutput> {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
parameters: JSONSchema;
|
|
16
|
+
handler: (input: KillBashInput, _context: ToolContext) => Promise<KillBashOutput>;
|
|
17
|
+
}
|
|
18
|
+
export declare const killBashTool: KillBashTool;
|
|
19
|
+
//# sourceMappingURL=kill-bash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kill-bash.d.ts","sourceRoot":"","sources":["../../src/tools/kill-bash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGpE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAcD,qBAAa,YAAa,YAAW,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC;IACtE,IAAI,SAAc;IAClB,WAAW,SAC4H;IACvI,UAAU,aAAc;IAExB,OAAO,GACL,OAAO,aAAa,EACpB,UAAU,WAAW,KACpB,OAAO,CAAC,cAAc,CAAC,CA+CxB;CACH;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KillBash tool - Kill a background bash process
|
|
3
|
+
*/
|
|
4
|
+
import { backgroundProcesses } from './bash';
|
|
5
|
+
const parameters = {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
shellId: {
|
|
9
|
+
type: 'string',
|
|
10
|
+
description: 'The shell ID returned by Bash tool when run_in_background is true',
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
required: ['shellId'],
|
|
14
|
+
};
|
|
15
|
+
export class KillBashTool {
|
|
16
|
+
name = 'KillBash';
|
|
17
|
+
description = 'Kill a background bash process started with run_in_background. Sends SIGTERM first, then SIGKILL after 5 seconds if still running.';
|
|
18
|
+
parameters = parameters;
|
|
19
|
+
handler = async (input, _context) => {
|
|
20
|
+
const { shellId } = input;
|
|
21
|
+
const bgProcess = backgroundProcesses.get(shellId);
|
|
22
|
+
if (!bgProcess) {
|
|
23
|
+
return {
|
|
24
|
+
success: false,
|
|
25
|
+
message: `No background process found with ID: ${shellId}`,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// Check if process has already exited
|
|
29
|
+
if (bgProcess.exitCode !== null) {
|
|
30
|
+
return {
|
|
31
|
+
success: true,
|
|
32
|
+
message: `Process ${shellId} already exited with code ${bgProcess.exitCode}`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// Send SIGTERM
|
|
36
|
+
bgProcess.process.kill('SIGTERM');
|
|
37
|
+
// Wait up to 5 seconds for graceful exit, then SIGKILL
|
|
38
|
+
return new Promise((resolve) => {
|
|
39
|
+
const checkInterval = setInterval(() => {
|
|
40
|
+
if (bgProcess.exitCode !== null) {
|
|
41
|
+
clearInterval(checkInterval);
|
|
42
|
+
clearTimeout(forceKillTimeout);
|
|
43
|
+
resolve({
|
|
44
|
+
success: true,
|
|
45
|
+
message: `Process ${shellId} terminated with exit code ${bgProcess.exitCode}`,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}, 100);
|
|
49
|
+
const forceKillTimeout = setTimeout(() => {
|
|
50
|
+
clearInterval(checkInterval);
|
|
51
|
+
if (bgProcess.exitCode === null) {
|
|
52
|
+
bgProcess.process.kill('SIGKILL');
|
|
53
|
+
resolve({
|
|
54
|
+
success: true,
|
|
55
|
+
message: `Process ${shellId} force-killed with SIGKILL`,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}, 5000);
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
// Export singleton instance
|
|
63
|
+
export const killBashTool = new KillBashTool();
|
|
64
|
+
//# sourceMappingURL=kill-bash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kill-bash.js","sourceRoot":"","sources":["../../src/tools/kill-bash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAW7C,MAAM,UAAU,GAAe;IAC7B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mEAAmE;SACjF;KACF;IACD,QAAQ,EAAE,CAAC,SAAS,CAAC;CACtB,CAAC;AAGF,MAAM,OAAO,YAAY;IACvB,IAAI,GAAG,UAAU,CAAC;IAClB,WAAW,GACT,oIAAoI,CAAC;IACvI,UAAU,GAAG,UAAU,CAAC;IAExB,OAAO,GAAG,KAAK,EACb,KAAoB,EACpB,QAAqB,EACI,EAAE;QAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QAE1B,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,wCAAwC,OAAO,EAAE;aAC3D,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,WAAW,OAAO,6BAA6B,SAAS,CAAC,QAAQ,EAAE;aAC7E,CAAC;QACJ,CAAC;QAED,eAAe;QACf,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElC,uDAAuD;QACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;gBACrC,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAChC,aAAa,CAAC,aAAa,CAAC,CAAC;oBAC7B,YAAY,CAAC,gBAAgB,CAAC,CAAC;oBAC/B,OAAO,CAAC;wBACN,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,WAAW,OAAO,8BAA8B,SAAS,CAAC,QAAQ,EAAE;qBAC9E,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACvC,aAAa,CAAC,aAAa,CAAC,CAAC;gBAC7B,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAChC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,OAAO,CAAC;wBACN,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,WAAW,OAAO,4BAA4B;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;CACH;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read tool - Read file contents with support for text and images
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool, ToolContext, JSONSchema } from '../types/tools';
|
|
5
|
+
export interface ReadInput {
|
|
6
|
+
file_path: string;
|
|
7
|
+
offset?: number;
|
|
8
|
+
limit?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface ReadOutput {
|
|
11
|
+
content?: string;
|
|
12
|
+
image?: string;
|
|
13
|
+
mime_type?: string;
|
|
14
|
+
file_size?: number;
|
|
15
|
+
total_lines?: number;
|
|
16
|
+
lines_returned?: number;
|
|
17
|
+
error?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class ReadTool implements Tool<ReadInput, ReadOutput> {
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
parameters: JSONSchema;
|
|
23
|
+
handler: (input: ReadInput, context: ToolContext) => Promise<ReadOutput>;
|
|
24
|
+
}
|
|
25
|
+
export declare const readTool: ReadTool;
|
|
26
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsCD,qBAAa,QAAS,YAAW,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAC1D,IAAI,SAAU;IACd,WAAW,SACkH;IAC7H,UAAU,aAAc;IAExB,OAAO,GACL,OAAO,SAAS,EAChB,SAAS,WAAW,KACnB,OAAO,CAAC,UAAU,CAAC,CA6CpB;CACH;AAGD,eAAO,MAAM,QAAQ,UAAiB,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read tool - Read file contents with support for text and images
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync, existsSync, statSync } from 'fs';
|
|
5
|
+
import { resolve } from 'path';
|
|
6
|
+
const parameters = {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
file_path: {
|
|
10
|
+
type: 'string',
|
|
11
|
+
description: 'Absolute path to the file to read',
|
|
12
|
+
},
|
|
13
|
+
offset: {
|
|
14
|
+
type: 'number',
|
|
15
|
+
description: 'Starting line number (1-indexed)',
|
|
16
|
+
},
|
|
17
|
+
limit: {
|
|
18
|
+
type: 'number',
|
|
19
|
+
description: 'Maximum number of lines to read',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
required: ['file_path'],
|
|
23
|
+
};
|
|
24
|
+
const IMAGE_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.bmp'];
|
|
25
|
+
function isImageFile(filePath) {
|
|
26
|
+
const lower = filePath.toLowerCase();
|
|
27
|
+
return IMAGE_EXTENSIONS.some((ext) => lower.endsWith(ext));
|
|
28
|
+
}
|
|
29
|
+
function getMimeType(filePath) {
|
|
30
|
+
const lower = filePath.toLowerCase();
|
|
31
|
+
if (lower.endsWith('.png'))
|
|
32
|
+
return 'image/png';
|
|
33
|
+
if (lower.endsWith('.jpg') || lower.endsWith('.jpeg'))
|
|
34
|
+
return 'image/jpeg';
|
|
35
|
+
if (lower.endsWith('.gif'))
|
|
36
|
+
return 'image/gif';
|
|
37
|
+
if (lower.endsWith('.webp'))
|
|
38
|
+
return 'image/webp';
|
|
39
|
+
if (lower.endsWith('.bmp'))
|
|
40
|
+
return 'image/bmp';
|
|
41
|
+
return 'application/octet-stream';
|
|
42
|
+
}
|
|
43
|
+
export class ReadTool {
|
|
44
|
+
name = 'Read';
|
|
45
|
+
description = 'Read the contents of a file. For text files, returns content with line numbers. For images, returns base64-encoded data.';
|
|
46
|
+
parameters = parameters;
|
|
47
|
+
handler = async (input, context) => {
|
|
48
|
+
const filePath = resolve(context.cwd, input.file_path);
|
|
49
|
+
if (!existsSync(filePath)) {
|
|
50
|
+
return { error: `File "${input.file_path}" does not exist` };
|
|
51
|
+
}
|
|
52
|
+
const stats = statSync(filePath);
|
|
53
|
+
if (stats.isDirectory()) {
|
|
54
|
+
return { error: `"${input.file_path}" is a directory, not a file` };
|
|
55
|
+
}
|
|
56
|
+
// Handle image files
|
|
57
|
+
if (isImageFile(filePath)) {
|
|
58
|
+
const data = readFileSync(filePath);
|
|
59
|
+
return {
|
|
60
|
+
image: data.toString('base64'),
|
|
61
|
+
mime_type: getMimeType(filePath),
|
|
62
|
+
file_size: stats.size,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Handle text files
|
|
66
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
67
|
+
const lines = content.split('\n');
|
|
68
|
+
const totalLines = lines.length;
|
|
69
|
+
// Apply offset and limit
|
|
70
|
+
const offset = input.offset ?? 1;
|
|
71
|
+
const limit = input.limit ?? totalLines;
|
|
72
|
+
const startIndex = Math.max(0, offset - 1);
|
|
73
|
+
const endIndex = Math.min(startIndex + limit, totalLines);
|
|
74
|
+
const selectedLines = lines.slice(startIndex, endIndex);
|
|
75
|
+
const numberedContent = selectedLines
|
|
76
|
+
.map((line, idx) => `${startIndex + idx + 1}\t${line}`)
|
|
77
|
+
.join('\n');
|
|
78
|
+
return {
|
|
79
|
+
content: numberedContent,
|
|
80
|
+
total_lines: totalLines,
|
|
81
|
+
lines_returned: selectedLines.length,
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// Export singleton instance
|
|
86
|
+
export const readTool = new ReadTool();
|
|
87
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool registry - manages available tools
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool, ToolDefinition } from '../types/tools';
|
|
5
|
+
export declare class ToolRegistry {
|
|
6
|
+
private tools;
|
|
7
|
+
register(tool: Tool<any, any>): void;
|
|
8
|
+
unregister(name: string): boolean;
|
|
9
|
+
get(name: string): Tool<any, any> | undefined;
|
|
10
|
+
has(name: string): boolean;
|
|
11
|
+
getAll(): Tool<any, any>[];
|
|
12
|
+
getDefinitions(): ToolDefinition[];
|
|
13
|
+
getAllowedTools(allowedTools?: string[]): Tool<any, any>[];
|
|
14
|
+
}
|
|
15
|
+
export declare function createDefaultRegistry(): ToolRegistry;
|
|
16
|
+
export declare const defaultToolRegistry: ToolRegistry;
|
|
17
|
+
export { readTool, ReadTool } from './read';
|
|
18
|
+
export { writeTool, WriteTool } from './write';
|
|
19
|
+
export { editTool, EditTool } from './edit';
|
|
20
|
+
export { bashTool, BashTool } from './bash';
|
|
21
|
+
export { globTool, GlobTool } from './glob';
|
|
22
|
+
export { grepTool, GrepTool } from './grep';
|
|
23
|
+
export { taskListTool, TaskListTool } from './task-list';
|
|
24
|
+
export { taskCreateTool, TaskCreateTool } from './task-create';
|
|
25
|
+
export { taskGetTool, TaskGetTool } from './task-get';
|
|
26
|
+
export { taskUpdateTool, TaskUpdateTool } from './task-update';
|
|
27
|
+
export { webSearchTool, WebSearchTool } from './web-search';
|
|
28
|
+
export { webFetchTool, WebFetchTool } from './web-fetch';
|
|
29
|
+
export { bashOutputTool, BashOutputTool } from './bash-output';
|
|
30
|
+
export { killBashTool, KillBashTool } from './kill-bash';
|
|
31
|
+
export { askUserQuestionTool, AskUserQuestionTool } from './ask-user-question';
|
|
32
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAgB3D,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAqC;IAElD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;IAIpC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS;IAI7C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;IAI1B,cAAc,IAAI,cAAc,EAAE;IAWlC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;CAQ3D;AAGD,wBAAgB,qBAAqB,IAAI,YAAY,CAiBpD;AAGD,eAAO,MAAM,mBAAmB,cAA0B,CAAC;AAG3D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
|