@codemieai/code 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codemie/guides/git-workflow.md +493 -0
- package/CLAUDE.md +130 -761
- package/README.md +283 -695
- package/bin/codemie-claude.js +122 -0
- package/bin/codemie-code.js +90 -15
- package/bin/codemie-codex.js +138 -0
- package/bin/codemie.js +1 -1
- package/config.example.json +10 -0
- package/dist/agents/adapters/claude-code.d.ts +2 -2
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +20 -42
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codemie-code.d.ts +11 -2
- package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
- package/dist/agents/adapters/codemie-code.js +93 -25
- package/dist/agents/adapters/codemie-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +2 -2
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +31 -24
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts +89 -0
- package/dist/agents/codemie-code/agent.d.ts.map +1 -0
- package/dist/agents/codemie-code/agent.js +523 -0
- package/dist/agents/codemie-code/agent.js.map +1 -0
- package/dist/agents/codemie-code/config.d.ts +40 -0
- package/dist/agents/codemie-code/config.d.ts.map +1 -0
- package/dist/agents/codemie-code/config.js +276 -0
- package/dist/agents/codemie-code/config.js.map +1 -0
- package/dist/agents/codemie-code/filters.d.ts +91 -0
- package/dist/agents/codemie-code/filters.d.ts.map +1 -0
- package/dist/agents/codemie-code/filters.js +328 -0
- package/dist/agents/codemie-code/filters.js.map +1 -0
- package/dist/agents/codemie-code/index.d.ts +78 -0
- package/dist/agents/codemie-code/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/index.js +259 -0
- package/dist/agents/codemie-code/index.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +11 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
- package/dist/agents/codemie-code/prompts.js +31 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -0
- package/dist/agents/codemie-code/streaming/events.d.ts +7 -0
- package/dist/agents/codemie-code/streaming/events.d.ts.map +1 -0
- package/dist/agents/codemie-code/streaming/events.js +7 -0
- package/dist/agents/codemie-code/streaming/events.js.map +1 -0
- package/dist/agents/codemie-code/streaming/formatter.d.ts +2 -0
- package/dist/agents/codemie-code/streaming/formatter.d.ts.map +1 -0
- package/dist/agents/codemie-code/streaming/formatter.js +2 -0
- package/dist/agents/codemie-code/streaming/formatter.js.map +1 -0
- package/dist/agents/codemie-code/streaming/ui.d.ts +2 -0
- package/dist/agents/codemie-code/streaming/ui.d.ts.map +1 -0
- package/dist/agents/codemie-code/streaming/ui.js +2 -0
- package/dist/agents/codemie-code/streaming/ui.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +220 -0
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.js +315 -0
- package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
- package/dist/agents/codemie-code/tools/command.d.ts +2 -0
- package/dist/agents/codemie-code/tools/command.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/command.js +2 -0
- package/dist/agents/codemie-code/tools/command.js.map +1 -0
- package/dist/agents/codemie-code/tools/filesystem.d.ts +2 -0
- package/dist/agents/codemie-code/tools/filesystem.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/filesystem.js +2 -0
- package/dist/agents/codemie-code/tools/filesystem.js.map +1 -0
- package/dist/agents/codemie-code/tools/git.d.ts +2 -0
- package/dist/agents/codemie-code/tools/git.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/git.js +2 -0
- package/dist/agents/codemie-code/tools/git.js.map +1 -0
- package/dist/agents/codemie-code/tools/index.d.ts +19 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/index.js +239 -0
- package/dist/agents/codemie-code/tools/index.js.map +1 -0
- package/dist/agents/codemie-code/tools/security.d.ts +2 -0
- package/dist/agents/codemie-code/tools/security.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/security.js +2 -0
- package/dist/agents/codemie-code/tools/security.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +254 -0
- package/dist/agents/codemie-code/types.d.ts.map +1 -0
- package/dist/agents/codemie-code/types.js +35 -0
- package/dist/agents/codemie-code/types.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +83 -0
- package/dist/agents/codemie-code/ui.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui.js +624 -0
- package/dist/agents/codemie-code/ui.js.map +1 -0
- package/dist/agents/registry.d.ts +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +7 -13
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +323 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +113 -69
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.d.ts +3 -0
- package/dist/cli/commands/env.d.ts.map +1 -0
- package/dist/cli/commands/env.js +19 -0
- package/dist/cli/commands/env.js.map +1 -0
- package/dist/cli/commands/install.js +27 -33
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.js +18 -24
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +307 -21
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +357 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/uninstall.js +24 -30
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/version.d.ts.map +1 -1
- package/dist/cli/commands/version.js +11 -16
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/index.js +47 -31
- package/dist/cli/index.js.map +1 -1
- package/dist/env/manager.js +9 -46
- package/dist/env/manager.js.map +1 -1
- package/dist/index.d.ts +6 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -43
- package/dist/index.js.map +1 -1
- package/dist/utils/async-tips.d.ts.map +1 -1
- package/dist/utils/async-tips.js +16 -55
- package/dist/utils/async-tips.js.map +1 -1
- package/dist/utils/clipboard.d.ts +16 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +179 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/config-loader.d.ts +96 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +351 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/dirname.d.ts +7 -0
- package/dist/utils/dirname.d.ts.map +1 -0
- package/dist/utils/dirname.js +11 -0
- package/dist/utils/dirname.js.map +1 -0
- package/dist/utils/errors.js +7 -17
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/exec.js +3 -6
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/first-time.d.ts +34 -0
- package/dist/utils/first-time.d.ts.map +1 -0
- package/dist/utils/first-time.js +245 -0
- package/dist/utils/first-time.js.map +1 -0
- package/dist/utils/health-checker.d.ts +20 -0
- package/dist/utils/health-checker.d.ts.map +1 -0
- package/dist/utils/health-checker.js +168 -0
- package/dist/utils/health-checker.js.map +1 -0
- package/dist/utils/logger.js +12 -18
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts +21 -0
- package/dist/utils/model-fetcher.d.ts.map +1 -0
- package/dist/utils/model-fetcher.js +137 -0
- package/dist/utils/model-fetcher.js.map +1 -0
- package/dist/utils/tips.d.ts.map +1 -1
- package/dist/utils/tips.js +13 -52
- package/dist/utils/tips.js.map +1 -1
- package/package.json +17 -23
- package/scripts/README.md +80 -0
- package/scripts/release.sh +156 -0
- package/dist/agents/adapters/aider.d.ts +0 -12
- package/dist/agents/adapters/aider.d.ts.map +0 -1
- package/dist/agents/adapters/aider.js +0 -80
- package/dist/agents/adapters/aider.js.map +0 -1
- package/dist/cli/cli.d.ts +0 -4
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js +0 -107
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/commands/mcp.d.ts +0 -3
- package/dist/cli/commands/mcp.d.ts.map +0 -1
- package/dist/cli/commands/mcp.js +0 -459
- package/dist/cli/commands/mcp.js.map +0 -1
- package/dist/code/agent-events.d.ts +0 -39
- package/dist/code/agent-events.d.ts.map +0 -1
- package/dist/code/agent-events.js +0 -4
- package/dist/code/agent-events.js.map +0 -1
- package/dist/code/agent.d.ts +0 -19
- package/dist/code/agent.d.ts.map +0 -1
- package/dist/code/agent.js +0 -144
- package/dist/code/agent.js.map +0 -1
- package/dist/code/config.d.ts +0 -13
- package/dist/code/config.d.ts.map +0 -1
- package/dist/code/config.js +0 -41
- package/dist/code/config.js.map +0 -1
- package/dist/code/index.d.ts +0 -19
- package/dist/code/index.d.ts.map +0 -1
- package/dist/code/index.js +0 -400
- package/dist/code/index.js.map +0 -1
- package/dist/code/prompts.d.ts +0 -2
- package/dist/code/prompts.d.ts.map +0 -1
- package/dist/code/prompts.js +0 -45
- package/dist/code/prompts.js.map +0 -1
- package/dist/code/tools/command.d.ts +0 -8
- package/dist/code/tools/command.d.ts.map +0 -1
- package/dist/code/tools/command.js +0 -83
- package/dist/code/tools/command.js.map +0 -1
- package/dist/code/tools/diff-utils.d.ts +0 -2
- package/dist/code/tools/diff-utils.d.ts.map +0 -1
- package/dist/code/tools/diff-utils.js +0 -45
- package/dist/code/tools/diff-utils.js.map +0 -1
- package/dist/code/tools/filesystem.d.ts +0 -11
- package/dist/code/tools/filesystem.d.ts.map +0 -1
- package/dist/code/tools/filesystem.js +0 -442
- package/dist/code/tools/filesystem.js.map +0 -1
- package/dist/code/tools/git.d.ts +0 -7
- package/dist/code/tools/git.d.ts.map +0 -1
- package/dist/code/tools/git.js +0 -111
- package/dist/code/tools/git.js.map +0 -1
- package/dist/code/tools/mcp.d.ts +0 -13
- package/dist/code/tools/mcp.d.ts.map +0 -1
- package/dist/code/tools/mcp.js +0 -230
- package/dist/code/tools/mcp.js.map +0 -1
- package/dist/data/tips.json +0 -118
- package/dist/ui/terminal-ui.d.ts +0 -73
- package/dist/ui/terminal-ui.d.ts.map +0 -1
- package/dist/ui/terminal-ui.js +0 -900
- package/dist/ui/terminal-ui.js.map +0 -1
- package/dist/utils/env-mapper.d.ts +0 -40
- package/dist/utils/env-mapper.d.ts.map +0 -1
- package/dist/utils/env-mapper.js +0 -122
- package/dist/utils/env-mapper.js.map +0 -1
- package/docs/USER_GUIDE.md +0 -573
- package/tests/agent-direct.test.mjs +0 -45
- package/tests/agent-output.test.mjs +0 -64
- package/tests/codemie-code.test.mjs +0 -42
- package/tests/context7-only.test.mjs +0 -42
- package/tests/conversation-flow.test.mjs +0 -63
- package/tests/interactive-simulation.test.mjs +0 -60
- package/tests/live-output.test.mjs +0 -53
- package/tests/mcp-context7.test.mjs +0 -105
- package/tests/mcp-e2e.test.mjs +0 -109
- package/tests/mcp-time-server.test.mjs +0 -58
- package/tests/streaming.test.mjs +0 -57
- package/tests/test-helpers.mjs +0 -94
- package/tests/text-wrapping.test.mjs +0 -33
- package/tests/tool-count.test.mjs +0 -81
- package/tests/ui-format.test.mjs +0 -39
- package/tests/ui-state.test.mjs +0 -72
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Metadata Extraction Utilities
|
|
3
|
+
*
|
|
4
|
+
* Extracts meaningful information from tool results for enhanced UI display
|
|
5
|
+
*/
|
|
6
|
+
import { formatTokens, formatCost } from './tokenUtils.js';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* Extract metadata from tool results based on tool name and result
|
|
10
|
+
*/
|
|
11
|
+
export function extractToolMetadata(toolName, result, toolArgs) {
|
|
12
|
+
try {
|
|
13
|
+
switch (toolName) {
|
|
14
|
+
case 'read_file':
|
|
15
|
+
return extractReadFileMetadata(result, toolArgs);
|
|
16
|
+
case 'write_file':
|
|
17
|
+
return extractWriteFileMetadata(result, toolArgs);
|
|
18
|
+
case 'list_directory':
|
|
19
|
+
return extractListDirectoryMetadata(result, toolArgs);
|
|
20
|
+
case 'execute_command':
|
|
21
|
+
return extractExecuteCommandMetadata(result, toolArgs);
|
|
22
|
+
default:
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// If metadata extraction fails, return basic info
|
|
28
|
+
return {
|
|
29
|
+
success: !result.toLowerCase().includes('error'),
|
|
30
|
+
errorMessage: result.toLowerCase().includes('error') ? result : undefined
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Extract metadata from read_file tool results
|
|
36
|
+
*/
|
|
37
|
+
function extractReadFileMetadata(result, toolArgs) {
|
|
38
|
+
const isError = result.toLowerCase().startsWith('error');
|
|
39
|
+
if (isError) {
|
|
40
|
+
return {
|
|
41
|
+
success: false,
|
|
42
|
+
errorMessage: result,
|
|
43
|
+
filePath: toolArgs?.filePath
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Parse successful read result: "File: {filePath}\n\n{content}"
|
|
47
|
+
const lines = result.split('\n');
|
|
48
|
+
let filePath = toolArgs?.filePath;
|
|
49
|
+
// Try to extract file path from result if not in args
|
|
50
|
+
if (!filePath && lines[0]?.startsWith('File: ')) {
|
|
51
|
+
filePath = lines[0].substring(6); // Remove "File: " prefix
|
|
52
|
+
}
|
|
53
|
+
// Extract content (skip "File: path" and empty line)
|
|
54
|
+
const contentStart = result.indexOf('\n\n');
|
|
55
|
+
const content = contentStart >= 0 ? result.substring(contentStart + 2) : '';
|
|
56
|
+
// Create content preview (first 3 lines or 100 characters)
|
|
57
|
+
const contentLines = content.split('\n');
|
|
58
|
+
const lineCount = contentLines.length;
|
|
59
|
+
let contentPreview = '';
|
|
60
|
+
if (lineCount > 3) {
|
|
61
|
+
contentPreview = contentLines.slice(0, 3).join('\n') + `\n... (${lineCount} lines total)`;
|
|
62
|
+
}
|
|
63
|
+
else if (content.length > 100) {
|
|
64
|
+
contentPreview = content.substring(0, 100) + '...';
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
contentPreview = content;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
success: true,
|
|
71
|
+
filePath,
|
|
72
|
+
fileSize: Buffer.byteLength(content, 'utf8'),
|
|
73
|
+
contentPreview
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extract metadata from write_file tool results
|
|
78
|
+
*/
|
|
79
|
+
function extractWriteFileMetadata(result, toolArgs) {
|
|
80
|
+
const isError = result.toLowerCase().startsWith('error');
|
|
81
|
+
if (isError) {
|
|
82
|
+
return {
|
|
83
|
+
success: false,
|
|
84
|
+
errorMessage: result,
|
|
85
|
+
filePath: toolArgs?.filePath
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Parse successful result: "Successfully wrote {length} characters to {filePath}"
|
|
89
|
+
const bytesMatch = result.match(/wrote (\d+) characters/);
|
|
90
|
+
const bytesWritten = bytesMatch ? parseInt(bytesMatch[1], 10) : undefined;
|
|
91
|
+
// Try to extract file path from result or use from args
|
|
92
|
+
let filePath = toolArgs?.filePath;
|
|
93
|
+
if (!filePath) {
|
|
94
|
+
const pathMatch = result.match(/to (.+)$/);
|
|
95
|
+
if (pathMatch) {
|
|
96
|
+
filePath = pathMatch[1].trim();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
success: true,
|
|
101
|
+
filePath,
|
|
102
|
+
bytesWritten,
|
|
103
|
+
contentPreview: toolArgs?.content ?
|
|
104
|
+
(toolArgs.content.length > 50 ?
|
|
105
|
+
toolArgs.content.substring(0, 50) + '...' :
|
|
106
|
+
toolArgs.content) : undefined
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Extract metadata from list_directory tool results
|
|
111
|
+
*/
|
|
112
|
+
function extractListDirectoryMetadata(result, toolArgs) {
|
|
113
|
+
const isError = result.toLowerCase().startsWith('error');
|
|
114
|
+
if (isError) {
|
|
115
|
+
return {
|
|
116
|
+
success: false,
|
|
117
|
+
errorMessage: result,
|
|
118
|
+
directoryPath: toolArgs?.directoryPath || '.'
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// Count files and directories from the result and extract items for preview
|
|
122
|
+
const lines = result.split('\n');
|
|
123
|
+
let fileCount = 0;
|
|
124
|
+
let directoryCount = 0;
|
|
125
|
+
let inFilesSection = false;
|
|
126
|
+
let inDirectoriesSection = false;
|
|
127
|
+
let directoryPath = toolArgs?.directoryPath;
|
|
128
|
+
const items = [];
|
|
129
|
+
for (const line of lines) {
|
|
130
|
+
const trimmedLine = line.trim();
|
|
131
|
+
// Extract directory path from the result header
|
|
132
|
+
if (trimmedLine.startsWith('Directory:') && !directoryPath) {
|
|
133
|
+
directoryPath = trimmedLine.substring(10).trim();
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (trimmedLine === 'Files:') {
|
|
137
|
+
inFilesSection = true;
|
|
138
|
+
inDirectoriesSection = false;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (trimmedLine === 'Directories:') {
|
|
142
|
+
inDirectoriesSection = true;
|
|
143
|
+
inFilesSection = false;
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (trimmedLine === '' || trimmedLine.startsWith('Directory:')) {
|
|
147
|
+
inFilesSection = false;
|
|
148
|
+
inDirectoriesSection = false;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
// Count items and collect for preview in each section
|
|
152
|
+
if (inFilesSection && line.startsWith(' ') && trimmedLine.length > 0) {
|
|
153
|
+
fileCount++;
|
|
154
|
+
if (items.length < 3) {
|
|
155
|
+
items.push(trimmedLine);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (inDirectoriesSection && line.startsWith(' ') && trimmedLine.length > 0) {
|
|
159
|
+
directoryCount++;
|
|
160
|
+
if (items.length < 3) {
|
|
161
|
+
items.push(trimmedLine);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Handle empty directory case
|
|
166
|
+
if (result.includes('Directory is empty')) {
|
|
167
|
+
fileCount = 0;
|
|
168
|
+
directoryCount = 0;
|
|
169
|
+
}
|
|
170
|
+
// Create item preview
|
|
171
|
+
let itemPreview = '';
|
|
172
|
+
if (items.length > 0) {
|
|
173
|
+
itemPreview = items.join(', ');
|
|
174
|
+
if (fileCount + directoryCount > items.length) {
|
|
175
|
+
const remaining = (fileCount + directoryCount) - items.length;
|
|
176
|
+
itemPreview += ` +${remaining} more`;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
itemPreview = 'Empty directory';
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
success: true,
|
|
184
|
+
directoryPath: directoryPath || '.',
|
|
185
|
+
fileCount,
|
|
186
|
+
directoryCount,
|
|
187
|
+
contentPreview: itemPreview
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Extract metadata from execute_command tool results
|
|
192
|
+
*/
|
|
193
|
+
function extractExecuteCommandMetadata(result, toolArgs) {
|
|
194
|
+
const isError = result.toLowerCase().includes('error executing command') ||
|
|
195
|
+
result.toLowerCase().includes('command rejected for security');
|
|
196
|
+
if (isError) {
|
|
197
|
+
return {
|
|
198
|
+
success: false,
|
|
199
|
+
errorMessage: result,
|
|
200
|
+
command: toolArgs?.command
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
const command = toolArgs?.command;
|
|
204
|
+
// Extract output preview (first few lines)
|
|
205
|
+
let outputPreview = '';
|
|
206
|
+
if (result.includes('STDOUT:')) {
|
|
207
|
+
const stdoutStart = result.indexOf('STDOUT:\n') + 8;
|
|
208
|
+
const stdoutEnd = result.indexOf('\nSTDERR:');
|
|
209
|
+
const stdout = result.substring(stdoutStart, stdoutEnd > 0 ? stdoutEnd : result.length);
|
|
210
|
+
const lines = stdout.trim().split('\n').filter(line => line.trim() !== '');
|
|
211
|
+
if (lines.length > 3) {
|
|
212
|
+
outputPreview = lines.slice(0, 3).join('\n') + `\n... (${lines.length} lines total)`;
|
|
213
|
+
}
|
|
214
|
+
else if (lines.length > 0) {
|
|
215
|
+
outputPreview = stdout.trim();
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
outputPreview = 'No output';
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (result === 'Command executed successfully (no output)') {
|
|
222
|
+
outputPreview = 'No output';
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
// Fallback for other formats - take first few non-empty lines
|
|
226
|
+
const lines = result.split('\n').filter(line => line.trim() !== '');
|
|
227
|
+
if (lines.length > 3) {
|
|
228
|
+
outputPreview = lines.slice(0, 3).join('\n') + '...';
|
|
229
|
+
}
|
|
230
|
+
else if (lines.length > 0) {
|
|
231
|
+
outputPreview = result.trim();
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
outputPreview = 'Command executed successfully';
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
success: true,
|
|
239
|
+
command,
|
|
240
|
+
outputPreview: outputPreview || 'Command executed successfully'
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Format tool metadata for display
|
|
245
|
+
*/
|
|
246
|
+
export function formatToolMetadata(toolName, metadata) {
|
|
247
|
+
if (!metadata.success) {
|
|
248
|
+
const baseMsg = `✗ ${toolName} failed${metadata.filePath ? ` (${path.basename(metadata.filePath)})` : ''}`;
|
|
249
|
+
return addTokenInfo(baseMsg, metadata);
|
|
250
|
+
}
|
|
251
|
+
let baseMessage = '';
|
|
252
|
+
switch (toolName) {
|
|
253
|
+
case 'read_file': {
|
|
254
|
+
const fileName = metadata.filePath ? path.basename(metadata.filePath) : 'file';
|
|
255
|
+
const sizeInfo = metadata.fileSize ? ` (${formatBytes(metadata.fileSize)})` : '';
|
|
256
|
+
baseMessage = `✓ Read ${fileName}${sizeInfo}`;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
case 'write_file': {
|
|
260
|
+
const writeFileName = metadata.filePath ? path.basename(metadata.filePath) : 'file';
|
|
261
|
+
const bytesInfo = metadata.bytesWritten ? ` (${formatBytes(metadata.bytesWritten)})` : '';
|
|
262
|
+
baseMessage = `✓ Wrote ${writeFileName}${bytesInfo}`;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
case 'list_directory': {
|
|
266
|
+
const dirName = metadata.directoryPath === '.' ? 'current directory' : path.basename(metadata.directoryPath || '');
|
|
267
|
+
const counts = `${metadata.fileCount || 0} files, ${metadata.directoryCount || 0} dirs`;
|
|
268
|
+
baseMessage = `✓ Listed ${dirName} (${counts})`;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
case 'execute_command': {
|
|
272
|
+
const cmd = metadata.command ? metadata.command.split(' ')[0] : 'command';
|
|
273
|
+
baseMessage = `✓ Executed ${cmd}`;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
default:
|
|
277
|
+
baseMessage = `✓ ${toolName} completed`;
|
|
278
|
+
}
|
|
279
|
+
return addTokenInfo(baseMessage, metadata);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Add token usage information to the tool message
|
|
283
|
+
*/
|
|
284
|
+
function addTokenInfo(baseMessage, metadata) {
|
|
285
|
+
if (!metadata.tokenUsage) {
|
|
286
|
+
return baseMessage;
|
|
287
|
+
}
|
|
288
|
+
const tokenInfo = [];
|
|
289
|
+
// Add token counts with clear input/output labels
|
|
290
|
+
tokenInfo.push(`${formatTokens(metadata.tokenUsage.inputTokens)} in, ${formatTokens(metadata.tokenUsage.outputTokens)} out`);
|
|
291
|
+
// Add cached tokens if present
|
|
292
|
+
if (metadata.tokenUsage.cachedTokens && metadata.tokenUsage.cachedTokens > 0) {
|
|
293
|
+
tokenInfo.push(`${formatTokens(metadata.tokenUsage.cachedTokens)} cached`);
|
|
294
|
+
}
|
|
295
|
+
// Add cost if present
|
|
296
|
+
if (metadata.tokenUsage.estimatedCost && metadata.tokenUsage.estimatedCost > 0) {
|
|
297
|
+
tokenInfo.push(formatCost(metadata.tokenUsage.estimatedCost));
|
|
298
|
+
}
|
|
299
|
+
if (tokenInfo.length > 0) {
|
|
300
|
+
return `${baseMessage} [${tokenInfo.join(', ')}]`;
|
|
301
|
+
}
|
|
302
|
+
return baseMessage;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Format bytes in human readable format
|
|
306
|
+
*/
|
|
307
|
+
function formatBytes(bytes) {
|
|
308
|
+
if (bytes === 0)
|
|
309
|
+
return '0 B';
|
|
310
|
+
const k = 1024;
|
|
311
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
312
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
313
|
+
return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i];
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=toolMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolMetadata.js","sourceRoot":"","sources":["../../../src/agents/codemie-code/toolMetadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/command.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/command.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/filesystem.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/filesystem.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/git.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/git.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Tools Registry for CodeMie Native Agent
|
|
3
|
+
*
|
|
4
|
+
* Creates and manages system tools available to the LangGraph ReAct agent
|
|
5
|
+
*/
|
|
6
|
+
import { StructuredTool } from '@langchain/core/tools';
|
|
7
|
+
import type { CodeMieConfig } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create system tools available to the CodeMie agent
|
|
10
|
+
*/
|
|
11
|
+
export declare function createSystemTools(config: CodeMieConfig): Promise<StructuredTool[]>;
|
|
12
|
+
/**
|
|
13
|
+
* Get available tool names and descriptions
|
|
14
|
+
*/
|
|
15
|
+
export declare function getToolSummary(): Array<{
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA2OjD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAyBxF;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAO7E"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Tools Registry for CodeMie Native Agent
|
|
3
|
+
*
|
|
4
|
+
* Creates and manages system tools available to the LangGraph ReAct agent
|
|
5
|
+
*/
|
|
6
|
+
import { StructuredTool } from '@langchain/core/tools';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { promises as fs } from 'fs';
|
|
9
|
+
import { exec } from 'child_process';
|
|
10
|
+
import { promisify } from 'util';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import { filterDirectoryEntries, createFilterConfig, DEFAULT_FILTER_CONFIG, generateFilterStats } from '../filters.js';
|
|
13
|
+
const execAsync = promisify(exec);
|
|
14
|
+
/**
|
|
15
|
+
* Basic file read tool - reads file contents
|
|
16
|
+
*/
|
|
17
|
+
class ReadFileTool extends StructuredTool {
|
|
18
|
+
name = 'read_file';
|
|
19
|
+
description = 'Read the contents of a file from the filesystem';
|
|
20
|
+
schema = z.object({
|
|
21
|
+
filePath: z.string().describe('Path to the file to read'),
|
|
22
|
+
});
|
|
23
|
+
workingDirectory;
|
|
24
|
+
constructor(workingDirectory) {
|
|
25
|
+
super();
|
|
26
|
+
this.workingDirectory = workingDirectory;
|
|
27
|
+
}
|
|
28
|
+
async _call({ filePath }) {
|
|
29
|
+
try {
|
|
30
|
+
// Resolve path relative to working directory
|
|
31
|
+
const resolvedPath = path.resolve(this.workingDirectory, filePath);
|
|
32
|
+
// Basic security check - ensure we're not escaping working directory
|
|
33
|
+
if (!resolvedPath.startsWith(this.workingDirectory)) {
|
|
34
|
+
throw new Error('Access denied: Path is outside working directory');
|
|
35
|
+
}
|
|
36
|
+
const content = await fs.readFile(resolvedPath, 'utf-8');
|
|
37
|
+
return `File: ${filePath}\n\n${content}`;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
return `Error reading file: ${error instanceof Error ? error.message : String(error)}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Basic file write tool - writes content to a file
|
|
46
|
+
*/
|
|
47
|
+
class WriteFileTool extends StructuredTool {
|
|
48
|
+
name = 'write_file';
|
|
49
|
+
description = 'Write content to a file in the filesystem';
|
|
50
|
+
schema = z.object({
|
|
51
|
+
filePath: z.string().describe('Path to the file to write'),
|
|
52
|
+
content: z.string().describe('Content to write to the file'),
|
|
53
|
+
});
|
|
54
|
+
workingDirectory;
|
|
55
|
+
constructor(workingDirectory) {
|
|
56
|
+
super();
|
|
57
|
+
this.workingDirectory = workingDirectory;
|
|
58
|
+
}
|
|
59
|
+
async _call({ filePath, content }) {
|
|
60
|
+
try {
|
|
61
|
+
// Resolve path relative to working directory
|
|
62
|
+
const resolvedPath = path.resolve(this.workingDirectory, filePath);
|
|
63
|
+
// Basic security check - ensure we're not escaping working directory
|
|
64
|
+
if (!resolvedPath.startsWith(this.workingDirectory)) {
|
|
65
|
+
throw new Error('Access denied: Path is outside working directory');
|
|
66
|
+
}
|
|
67
|
+
// Ensure directory exists
|
|
68
|
+
const dir = path.dirname(resolvedPath);
|
|
69
|
+
await fs.mkdir(dir, { recursive: true });
|
|
70
|
+
await fs.writeFile(resolvedPath, content, 'utf-8');
|
|
71
|
+
return `Successfully wrote ${content.length} characters to ${filePath}`;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
return `Error writing file: ${error instanceof Error ? error.message : String(error)}`;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Basic command execution tool - runs shell commands
|
|
80
|
+
*/
|
|
81
|
+
class ExecuteCommandTool extends StructuredTool {
|
|
82
|
+
name = 'execute_command';
|
|
83
|
+
description = 'Execute a shell command in the working directory';
|
|
84
|
+
schema = z.object({
|
|
85
|
+
command: z.string().describe('Shell command to execute'),
|
|
86
|
+
});
|
|
87
|
+
workingDirectory;
|
|
88
|
+
constructor(workingDirectory) {
|
|
89
|
+
super();
|
|
90
|
+
this.workingDirectory = workingDirectory;
|
|
91
|
+
}
|
|
92
|
+
async _call({ command }) {
|
|
93
|
+
try {
|
|
94
|
+
// Basic security checks
|
|
95
|
+
const dangerousCommands = ['rm -rf', 'sudo', 'chmod +x', 'curl', 'wget'];
|
|
96
|
+
if (dangerousCommands.some(cmd => command.toLowerCase().includes(cmd))) {
|
|
97
|
+
return `Error: Command rejected for security reasons: ${command}`;
|
|
98
|
+
}
|
|
99
|
+
const { stdout, stderr } = await execAsync(command, {
|
|
100
|
+
cwd: this.workingDirectory,
|
|
101
|
+
timeout: 30000, // 30 second timeout
|
|
102
|
+
maxBuffer: 1024 * 1024 // 1MB output limit
|
|
103
|
+
});
|
|
104
|
+
let result = '';
|
|
105
|
+
if (stdout)
|
|
106
|
+
result += `STDOUT:\n${stdout}\n`;
|
|
107
|
+
if (stderr)
|
|
108
|
+
result += `STDERR:\n${stderr}\n`;
|
|
109
|
+
return result || 'Command executed successfully (no output)';
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
return `Error executing command: ${error instanceof Error ? error.message : String(error)}`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Directory listing tool - lists files and directories with intelligent filtering
|
|
118
|
+
*/
|
|
119
|
+
class ListDirectoryTool extends StructuredTool {
|
|
120
|
+
name = 'list_directory';
|
|
121
|
+
description = 'List files and directories in a given path, automatically filtering out common ignore patterns (node_modules, .git, build artifacts, etc.)';
|
|
122
|
+
schema = z.object({
|
|
123
|
+
directoryPath: z.string().optional().describe('Directory path to list (defaults to working directory)'),
|
|
124
|
+
showAll: z.boolean().optional().describe('Show all files including normally filtered ones (default: false)'),
|
|
125
|
+
includeHidden: z.boolean().optional().describe('Include hidden files and directories (default: false)'),
|
|
126
|
+
});
|
|
127
|
+
workingDirectory;
|
|
128
|
+
filterConfig;
|
|
129
|
+
constructor(workingDirectory, filterConfig) {
|
|
130
|
+
super();
|
|
131
|
+
this.workingDirectory = workingDirectory;
|
|
132
|
+
this.filterConfig = filterConfig || DEFAULT_FILTER_CONFIG;
|
|
133
|
+
}
|
|
134
|
+
async _call({ directoryPath, showAll = false, includeHidden = false }) {
|
|
135
|
+
try {
|
|
136
|
+
const targetPath = directoryPath
|
|
137
|
+
? path.resolve(this.workingDirectory, directoryPath)
|
|
138
|
+
: this.workingDirectory;
|
|
139
|
+
// Security check
|
|
140
|
+
if (!targetPath.startsWith(this.workingDirectory)) {
|
|
141
|
+
throw new Error('Access denied: Path is outside working directory');
|
|
142
|
+
}
|
|
143
|
+
const entries = await fs.readdir(targetPath, { withFileTypes: true });
|
|
144
|
+
// Convert to our format for filtering
|
|
145
|
+
let directoryEntries = entries.map(entry => ({
|
|
146
|
+
name: entry.name,
|
|
147
|
+
isDirectory: entry.isDirectory()
|
|
148
|
+
}));
|
|
149
|
+
// Filter hidden files if not requested
|
|
150
|
+
if (!includeHidden) {
|
|
151
|
+
directoryEntries = directoryEntries.filter(entry => !entry.name.startsWith('.'));
|
|
152
|
+
}
|
|
153
|
+
// Store original count for statistics
|
|
154
|
+
const originalEntries = [...directoryEntries];
|
|
155
|
+
// Apply filtering if not showAll
|
|
156
|
+
let filteredEntries = directoryEntries;
|
|
157
|
+
let filterStats;
|
|
158
|
+
if (!showAll) {
|
|
159
|
+
const filterConfig = createFilterConfig({
|
|
160
|
+
...this.filterConfig,
|
|
161
|
+
enabled: true
|
|
162
|
+
});
|
|
163
|
+
filteredEntries = filterDirectoryEntries(directoryEntries, filterConfig, directoryPath || '');
|
|
164
|
+
filterStats = generateFilterStats(originalEntries, filteredEntries, filterConfig);
|
|
165
|
+
}
|
|
166
|
+
// Separate into files and directories
|
|
167
|
+
const files = [];
|
|
168
|
+
const directories = [];
|
|
169
|
+
for (const entry of filteredEntries) {
|
|
170
|
+
if (entry.isDirectory) {
|
|
171
|
+
directories.push(`${entry.name}/`);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
files.push(entry.name);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Build result string
|
|
178
|
+
let result = `Directory: ${directoryPath || '.'}\n\n`;
|
|
179
|
+
if (directories.length > 0) {
|
|
180
|
+
result += 'Directories:\n';
|
|
181
|
+
result += directories.map(dir => ` ${dir}`).join('\n') + '\n\n';
|
|
182
|
+
}
|
|
183
|
+
if (files.length > 0) {
|
|
184
|
+
result += 'Files:\n';
|
|
185
|
+
result += files.map(file => ` ${file}`).join('\n');
|
|
186
|
+
}
|
|
187
|
+
if (directories.length === 0 && files.length === 0) {
|
|
188
|
+
result += 'Directory is empty';
|
|
189
|
+
}
|
|
190
|
+
// Add filtering summary if filtering was applied
|
|
191
|
+
if (!showAll && filterStats && filterStats.ignoredEntries > 0) {
|
|
192
|
+
result += `\n\n--- Filtered out ${filterStats.ignoredEntries} items ---`;
|
|
193
|
+
result += `\nShowing ${filterStats.filteredEntries} of ${filterStats.totalEntries} total items`;
|
|
194
|
+
result += `\nUse showAll: true to see all items`;
|
|
195
|
+
}
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
return `Error listing directory: ${error instanceof Error ? error.message : String(error)}`;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Create system tools available to the CodeMie agent
|
|
205
|
+
*/
|
|
206
|
+
export async function createSystemTools(config) {
|
|
207
|
+
const tools = [];
|
|
208
|
+
try {
|
|
209
|
+
// Basic file system tools
|
|
210
|
+
tools.push(new ReadFileTool(config.workingDirectory));
|
|
211
|
+
tools.push(new WriteFileTool(config.workingDirectory));
|
|
212
|
+
tools.push(new ListDirectoryTool(config.workingDirectory, config.directoryFilters));
|
|
213
|
+
// Command execution tool
|
|
214
|
+
tools.push(new ExecuteCommandTool(config.workingDirectory));
|
|
215
|
+
if (config.debug) {
|
|
216
|
+
console.log(`[DEBUG] Created ${tools.length} system tools`);
|
|
217
|
+
}
|
|
218
|
+
return tools;
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
if (config.debug) {
|
|
222
|
+
console.error('[DEBUG] Error creating system tools:', error);
|
|
223
|
+
}
|
|
224
|
+
// Return empty array on error to allow agent to function
|
|
225
|
+
return [];
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get available tool names and descriptions
|
|
230
|
+
*/
|
|
231
|
+
export function getToolSummary() {
|
|
232
|
+
return [
|
|
233
|
+
{ name: 'read_file', description: 'Read the contents of a file from the filesystem' },
|
|
234
|
+
{ name: 'write_file', description: 'Write content to a file in the filesystem' },
|
|
235
|
+
{ name: 'list_directory', description: 'List files and directories in a given path, automatically filtering out common ignore patterns (node_modules, .git, build artifacts, etc.)' },
|
|
236
|
+
{ name: 'execute_command', description: 'Execute a shell command in the working directory' }
|
|
237
|
+
];
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvH,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,YAAa,SAAQ,cAAc;IACvC,IAAI,GAAG,WAAW,CAAC;IACnB,WAAW,GAAG,iDAAiD,CAAC;IAEhE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC1D,CAAC,CAAC;IAEK,gBAAgB,CAAS;IAEjC,YAAY,gBAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAA+B;QACnD,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEnE,qEAAqE;YACrE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,SAAS,QAAQ,OAAO,OAAO,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzF,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,aAAc,SAAQ,cAAc;IACxC,IAAI,GAAG,YAAY,CAAC;IACpB,WAAW,GAAG,2CAA2C,CAAC;IAE1D,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC7D,CAAC,CAAC;IAEK,gBAAgB,CAAS;IAEjC,YAAY,gBAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,EAA+B;QAC5D,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEnE,qEAAqE;YACrE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YAED,0BAA0B;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzC,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,sBAAsB,OAAO,CAAC,MAAM,kBAAkB,QAAQ,EAAE,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzF,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,kBAAmB,SAAQ,cAAc;IAC7C,IAAI,GAAG,iBAAiB,CAAC;IACzB,WAAW,GAAG,kDAAkD,CAAC;IAEjE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACzD,CAAC,CAAC;IAEK,gBAAgB,CAAS;IAEjC,YAAY,gBAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAA+B;QAClD,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACzE,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACvE,OAAO,iDAAiD,OAAO,EAAE,CAAC;YACpE,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE;gBAClD,GAAG,EAAE,IAAI,CAAC,gBAAgB;gBAC1B,OAAO,EAAE,KAAK,EAAE,oBAAoB;gBACpC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC,mBAAmB;aAC3C,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM;gBAAE,MAAM,IAAI,YAAY,MAAM,IAAI,CAAC;YAC7C,IAAI,MAAM;gBAAE,MAAM,IAAI,YAAY,MAAM,IAAI,CAAC;YAE7C,OAAO,MAAM,IAAI,2CAA2C,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,iBAAkB,SAAQ,cAAc;IAC5C,IAAI,GAAG,gBAAgB,CAAC;IACxB,WAAW,GAAG,4IAA4I,CAAC;IAE3J,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAChB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACvG,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QAC5G,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KACxG,CAAC,CAAC;IAEK,gBAAgB,CAAS;IACzB,YAAY,CAAM;IAE1B,YAAY,gBAAwB,EAAE,YAAkB;QACtD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,qBAAqB,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,OAAO,GAAG,KAAK,EAAE,aAAa,GAAG,KAAK,EAA+B;QAChG,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,aAAa;gBAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC;gBACpD,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAE1B,iBAAiB;YACjB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtE,sCAAsC;YACtC,IAAI,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;aACjC,CAAC,CAAC,CAAC;YAEJ,uCAAuC;YACvC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACnF,CAAC;YAED,sCAAsC;YACtC,MAAM,eAAe,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAE9C,iCAAiC;YACjC,IAAI,eAAe,GAAG,gBAAgB,CAAC;YACvC,IAAI,WAAW,CAAC;YAEhB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,YAAY,GAAG,kBAAkB,CAAC;oBACtC,GAAG,IAAI,CAAC,YAAY;oBACpB,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,eAAe,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,YAAY,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;gBAC9F,WAAW,GAAG,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;YACpF,CAAC;YAED,sCAAsC;YACtC,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACtB,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,IAAI,MAAM,GAAG,cAAc,aAAa,IAAI,GAAG,MAAM,CAAC;YAEtD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,gBAAgB,CAAC;gBAC3B,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YACnE,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,UAAU,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,oBAAoB,CAAC;YACjC,CAAC;YAED,iDAAiD;YACjD,IAAI,CAAC,OAAO,IAAI,WAAW,IAAI,WAAW,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,wBAAwB,WAAW,CAAC,cAAc,YAAY,CAAC;gBACzE,MAAM,IAAI,aAAa,WAAW,CAAC,eAAe,OAAO,WAAW,CAAC,YAAY,cAAc,CAAC;gBAChG,MAAM,IAAI,sCAAsC,CAAC;YACnD,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAqB;IAC3D,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,0BAA0B;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEpF,yBAAyB;QACzB,KAAK,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE5D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,MAAM,eAAe,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;QAED,yDAAyD;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,iDAAiD,EAAE;QACrF,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,2CAA2C,EAAE;QAChF,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,4IAA4I,EAAE;QACrL,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,kDAAkD,EAAE;KAC7F,CAAC;AACJ,CAAC"}
|