@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,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directory and File Filtering System
|
|
3
|
+
*
|
|
4
|
+
* Provides intelligent filtering for directory listings to exclude common
|
|
5
|
+
* directories and files that are typically gitignored or not relevant
|
|
6
|
+
* for code analysis (dependencies, build artifacts, IDE files, etc.)
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Default filter patterns organized by category
|
|
10
|
+
*/
|
|
11
|
+
export const DEFAULT_IGNORE_PATTERNS = {
|
|
12
|
+
// Version Control
|
|
13
|
+
versionControl: [
|
|
14
|
+
'.git/**',
|
|
15
|
+
'.svn/**',
|
|
16
|
+
'.hg/**',
|
|
17
|
+
'.bzr/**'
|
|
18
|
+
],
|
|
19
|
+
// Dependencies & Package Managers
|
|
20
|
+
dependencies: [
|
|
21
|
+
'node_modules/**',
|
|
22
|
+
'bower_components/**',
|
|
23
|
+
'vendor/**',
|
|
24
|
+
'packages/**',
|
|
25
|
+
'.pnpm-store/**',
|
|
26
|
+
'.yarn/**'
|
|
27
|
+
],
|
|
28
|
+
// Build & Distribution
|
|
29
|
+
buildArtifacts: [
|
|
30
|
+
'dist/**',
|
|
31
|
+
'build/**',
|
|
32
|
+
'out/**',
|
|
33
|
+
'target/**',
|
|
34
|
+
'.next/**',
|
|
35
|
+
'.nuxt/**',
|
|
36
|
+
'.vuepress/**',
|
|
37
|
+
'public/build/**',
|
|
38
|
+
'.output/**'
|
|
39
|
+
],
|
|
40
|
+
// Test Coverage & Reports
|
|
41
|
+
testOutput: [
|
|
42
|
+
'coverage/**',
|
|
43
|
+
'.nyc_output/**',
|
|
44
|
+
'.pytest_cache/**',
|
|
45
|
+
'htmlcov/**',
|
|
46
|
+
'test-results/**',
|
|
47
|
+
'.coverage'
|
|
48
|
+
],
|
|
49
|
+
// IDE & Editor Files
|
|
50
|
+
ideFiles: [
|
|
51
|
+
'.vscode/**',
|
|
52
|
+
'.idea/**',
|
|
53
|
+
'.eclipse/**',
|
|
54
|
+
'*.swp',
|
|
55
|
+
'*.swo',
|
|
56
|
+
'*~',
|
|
57
|
+
'.*.swp',
|
|
58
|
+
'.*.swo'
|
|
59
|
+
],
|
|
60
|
+
// OS Files
|
|
61
|
+
osFiles: [
|
|
62
|
+
'.DS_Store',
|
|
63
|
+
'Thumbs.db',
|
|
64
|
+
'desktop.ini',
|
|
65
|
+
'*.tmp',
|
|
66
|
+
'*.temp',
|
|
67
|
+
'.Trashes',
|
|
68
|
+
'.fseventsd',
|
|
69
|
+
'.Spotlight-V100',
|
|
70
|
+
'.TemporaryItems'
|
|
71
|
+
],
|
|
72
|
+
// Cache & Temporary
|
|
73
|
+
cache: [
|
|
74
|
+
'.cache/**',
|
|
75
|
+
'.tmp/**',
|
|
76
|
+
'.temp/**',
|
|
77
|
+
'tmp/**',
|
|
78
|
+
'temp/**',
|
|
79
|
+
'.parcel-cache/**',
|
|
80
|
+
'.turbo/**'
|
|
81
|
+
],
|
|
82
|
+
// Language-Specific Patterns
|
|
83
|
+
python: [
|
|
84
|
+
'__pycache__/**',
|
|
85
|
+
'*.pyc',
|
|
86
|
+
'*.pyo',
|
|
87
|
+
'*.pyd',
|
|
88
|
+
'.Python',
|
|
89
|
+
'*.so',
|
|
90
|
+
'.venv/**',
|
|
91
|
+
'venv/**',
|
|
92
|
+
'env/**',
|
|
93
|
+
'.env/**',
|
|
94
|
+
'virtualenv/**',
|
|
95
|
+
'.virtualenv/**',
|
|
96
|
+
'myenv/**',
|
|
97
|
+
'.myenv/**',
|
|
98
|
+
'*venv/**', // Matches any directory ending with 'venv'
|
|
99
|
+
'.*venv/**', // Matches any hidden directory ending with 'venv'
|
|
100
|
+
'pip-log.txt',
|
|
101
|
+
'pip-delete-this-directory.txt',
|
|
102
|
+
'.pytest_cache/**',
|
|
103
|
+
'.tox/**',
|
|
104
|
+
'site-packages/**'
|
|
105
|
+
],
|
|
106
|
+
java: [
|
|
107
|
+
'*.class',
|
|
108
|
+
'*.jar',
|
|
109
|
+
'*.war',
|
|
110
|
+
'*.ear',
|
|
111
|
+
'.gradle/**',
|
|
112
|
+
'target/**',
|
|
113
|
+
'.mvn/**'
|
|
114
|
+
],
|
|
115
|
+
javascript: [
|
|
116
|
+
'node_modules/**',
|
|
117
|
+
'.npm/**',
|
|
118
|
+
'.yarn/**',
|
|
119
|
+
'yarn-error.log',
|
|
120
|
+
'npm-debug.log*',
|
|
121
|
+
'yarn-debug.log*',
|
|
122
|
+
'lerna-debug.log*'
|
|
123
|
+
],
|
|
124
|
+
go: [
|
|
125
|
+
'vendor/**',
|
|
126
|
+
'*.exe',
|
|
127
|
+
'*.test',
|
|
128
|
+
'*.prof'
|
|
129
|
+
],
|
|
130
|
+
rust: [
|
|
131
|
+
'target/**',
|
|
132
|
+
'Cargo.lock'
|
|
133
|
+
],
|
|
134
|
+
cCpp: [
|
|
135
|
+
'*.o',
|
|
136
|
+
'*.so',
|
|
137
|
+
'*.dll',
|
|
138
|
+
'*.exe',
|
|
139
|
+
'*.out',
|
|
140
|
+
'*.a',
|
|
141
|
+
'*.lib'
|
|
142
|
+
],
|
|
143
|
+
ruby: [
|
|
144
|
+
'.bundle/**',
|
|
145
|
+
'vendor/bundle/**',
|
|
146
|
+
'*.gem'
|
|
147
|
+
],
|
|
148
|
+
dotnet: [
|
|
149
|
+
'bin/**',
|
|
150
|
+
'obj/**',
|
|
151
|
+
'*.user',
|
|
152
|
+
'*.suo',
|
|
153
|
+
'*.sln.docstates'
|
|
154
|
+
]
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Compile all default patterns into a single array
|
|
158
|
+
*/
|
|
159
|
+
export function getDefaultIgnorePatterns() {
|
|
160
|
+
return Object.values(DEFAULT_IGNORE_PATTERNS).flat();
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Simple glob pattern matcher
|
|
164
|
+
* Supports * (any chars), ** (any dirs), and ? (single char)
|
|
165
|
+
*/
|
|
166
|
+
export function matchesPattern(filename, pattern, caseSensitive = false) {
|
|
167
|
+
if (!caseSensitive) {
|
|
168
|
+
filename = filename.toLowerCase();
|
|
169
|
+
pattern = pattern.toLowerCase();
|
|
170
|
+
}
|
|
171
|
+
// Handle simple cases first
|
|
172
|
+
if (pattern === filename)
|
|
173
|
+
return true;
|
|
174
|
+
if (pattern === '*')
|
|
175
|
+
return true;
|
|
176
|
+
if (pattern === '**')
|
|
177
|
+
return true;
|
|
178
|
+
// Split pattern into parts for better handling
|
|
179
|
+
const patternParts = pattern.split('/');
|
|
180
|
+
const filenameParts = filename.split('/');
|
|
181
|
+
// Handle directory patterns ending with **
|
|
182
|
+
if (pattern.endsWith('/**')) {
|
|
183
|
+
const baseParts = patternParts.slice(0, -1); // Remove the '**'
|
|
184
|
+
// Match the base directory first
|
|
185
|
+
if (filenameParts.length >= baseParts.length) {
|
|
186
|
+
for (let i = 0; i < baseParts.length; i++) {
|
|
187
|
+
if (!matchesSinglePattern(filenameParts[i], baseParts[i])) {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return true; // Base matches, ** matches the rest
|
|
192
|
+
}
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
// Handle exact path matching
|
|
196
|
+
if (patternParts.length !== filenameParts.length) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
// Match each part
|
|
200
|
+
for (let i = 0; i < patternParts.length; i++) {
|
|
201
|
+
if (!matchesSinglePattern(filenameParts[i], patternParts[i])) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Match a single pattern part (no slashes)
|
|
209
|
+
*/
|
|
210
|
+
function matchesSinglePattern(text, pattern) {
|
|
211
|
+
if (pattern === text)
|
|
212
|
+
return true;
|
|
213
|
+
if (pattern === '*')
|
|
214
|
+
return true;
|
|
215
|
+
if (pattern === '**')
|
|
216
|
+
return true;
|
|
217
|
+
// Convert simple glob to regex
|
|
218
|
+
let regexPattern = pattern
|
|
219
|
+
.replace(/\./g, '\\.') // Escape dots
|
|
220
|
+
.replace(/\+/g, '\\+') // Escape plus
|
|
221
|
+
.replace(/\^/g, '\\^') // Escape caret
|
|
222
|
+
.replace(/\$/g, '\\$') // Escape dollar
|
|
223
|
+
.replace(/\(/g, '\\(') // Escape parentheses
|
|
224
|
+
.replace(/\)/g, '\\)')
|
|
225
|
+
.replace(/\[/g, '\\[') // Escape brackets
|
|
226
|
+
.replace(/\]/g, '\\]')
|
|
227
|
+
.replace(/\{/g, '\\{') // Escape braces
|
|
228
|
+
.replace(/\}/g, '\\}')
|
|
229
|
+
.replace(/\*/g, '.*') // * matches anything
|
|
230
|
+
.replace(/\?/g, '.'); // ? matches single char
|
|
231
|
+
try {
|
|
232
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
233
|
+
return regex.test(text);
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return text === pattern;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Check if a file or directory should be ignored
|
|
241
|
+
*/
|
|
242
|
+
export function shouldIgnore(name, isDirectory, config, relativePath) {
|
|
243
|
+
if (!config.enabled) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
// Full path for matching (use name if no relative path provided)
|
|
247
|
+
const fullPath = relativePath || name;
|
|
248
|
+
const pathToCheck = isDirectory ? `${fullPath}/` : fullPath;
|
|
249
|
+
// Check force include patterns first
|
|
250
|
+
if (config.forceIncludePatterns) {
|
|
251
|
+
for (const pattern of config.forceIncludePatterns) {
|
|
252
|
+
if (matchesPattern(pathToCheck, pattern, config.caseSensitive)) {
|
|
253
|
+
return false; // Force include overrides ignore
|
|
254
|
+
}
|
|
255
|
+
if (matchesPattern(name, pattern, config.caseSensitive)) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// Get all ignore patterns (default + custom)
|
|
261
|
+
const ignorePatterns = [
|
|
262
|
+
...getDefaultIgnorePatterns(),
|
|
263
|
+
...(config.customIgnorePatterns || [])
|
|
264
|
+
];
|
|
265
|
+
// Check ignore patterns
|
|
266
|
+
for (const pattern of ignorePatterns) {
|
|
267
|
+
if (matchesPattern(pathToCheck, pattern, config.caseSensitive)) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
if (matchesPattern(name, pattern, config.caseSensitive)) {
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Filter an array of directory entries
|
|
278
|
+
*/
|
|
279
|
+
export function filterDirectoryEntries(entries, config, basePath = '') {
|
|
280
|
+
if (!config.enabled) {
|
|
281
|
+
return entries;
|
|
282
|
+
}
|
|
283
|
+
return entries.filter(entry => {
|
|
284
|
+
const relativePath = basePath ? `${basePath}/${entry.name}` : entry.name;
|
|
285
|
+
return !shouldIgnore(entry.name, entry.isDirectory, config, relativePath);
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Default filter configuration
|
|
290
|
+
*/
|
|
291
|
+
export const DEFAULT_FILTER_CONFIG = {
|
|
292
|
+
enabled: true,
|
|
293
|
+
caseSensitive: false,
|
|
294
|
+
customIgnorePatterns: [],
|
|
295
|
+
forceIncludePatterns: []
|
|
296
|
+
};
|
|
297
|
+
/**
|
|
298
|
+
* Create a filter configuration with custom settings
|
|
299
|
+
*/
|
|
300
|
+
export function createFilterConfig(overrides = {}) {
|
|
301
|
+
return {
|
|
302
|
+
...DEFAULT_FILTER_CONFIG,
|
|
303
|
+
...overrides
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Generate filtering statistics
|
|
308
|
+
*/
|
|
309
|
+
export function generateFilterStats(originalEntries, filteredEntries, config) {
|
|
310
|
+
const ignoredEntries = originalEntries.filter(entry => !filteredEntries.some(filtered => filtered.name === entry.name));
|
|
311
|
+
const ignoredByCategory = {};
|
|
312
|
+
if (config.enabled) {
|
|
313
|
+
for (const [category, patterns] of Object.entries(DEFAULT_IGNORE_PATTERNS)) {
|
|
314
|
+
ignoredByCategory[category] = ignoredEntries.filter(entry => {
|
|
315
|
+
const pathToCheck = entry.isDirectory ? `${entry.name}/` : entry.name;
|
|
316
|
+
return patterns.some(pattern => matchesPattern(pathToCheck, pattern, config.caseSensitive) ||
|
|
317
|
+
matchesPattern(entry.name, pattern, config.caseSensitive));
|
|
318
|
+
}).length;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
totalEntries: originalEntries.length,
|
|
323
|
+
filteredEntries: filteredEntries.length,
|
|
324
|
+
ignoredEntries: ignoredEntries.length,
|
|
325
|
+
ignoredByCategory
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/agents/codemie-code/filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CodeMie Native Agent - Main Entry Point
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the entire CodeMie native agent including initialization,
|
|
5
|
+
* tool loading, and interactive/non-interactive execution modes.
|
|
6
|
+
*/
|
|
7
|
+
import type { CodeMieConfig, InitializationResult, AgentStats } from './types.js';
|
|
8
|
+
export declare class CodeMieCode {
|
|
9
|
+
private agent;
|
|
10
|
+
private config;
|
|
11
|
+
private initializationResult;
|
|
12
|
+
constructor(workingDir?: string);
|
|
13
|
+
private workingDirectory;
|
|
14
|
+
/**
|
|
15
|
+
* Initialize the CodeMie agent asynchronously
|
|
16
|
+
*/
|
|
17
|
+
initialize(): Promise<InitializationResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Start interactive mode with modern terminal UI
|
|
20
|
+
*/
|
|
21
|
+
startInteractive(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Execute a single task (non-interactive mode)
|
|
24
|
+
*/
|
|
25
|
+
executeTask(task: string): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Execute a single task with modern UI feedback (for CLI usage)
|
|
28
|
+
*/
|
|
29
|
+
executeTaskWithUI(task: string): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Stream a task with event callbacks (for programmatic use)
|
|
32
|
+
*/
|
|
33
|
+
streamTask(task: string, onEvent: (event: any) => void): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Get agent statistics
|
|
36
|
+
*/
|
|
37
|
+
getStats(): AgentStats | null;
|
|
38
|
+
/**
|
|
39
|
+
* Get initialization result
|
|
40
|
+
*/
|
|
41
|
+
getInitializationResult(): InitializationResult | null;
|
|
42
|
+
/**
|
|
43
|
+
* Get agent configuration (sanitized)
|
|
44
|
+
*/
|
|
45
|
+
getConfig(): CodeMieConfig | null;
|
|
46
|
+
/**
|
|
47
|
+
* Clear conversation history
|
|
48
|
+
*/
|
|
49
|
+
clearHistory(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Health check for the entire system
|
|
52
|
+
*/
|
|
53
|
+
healthCheck(): Promise<{
|
|
54
|
+
status: 'healthy' | 'unhealthy';
|
|
55
|
+
initialized: boolean;
|
|
56
|
+
config: any;
|
|
57
|
+
agent?: any;
|
|
58
|
+
error?: string;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Dispose of resources
|
|
62
|
+
*/
|
|
63
|
+
dispose(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Static method to test connection and configuration
|
|
66
|
+
*/
|
|
67
|
+
static testConnection(workingDir?: string): Promise<{
|
|
68
|
+
success: boolean;
|
|
69
|
+
provider?: string;
|
|
70
|
+
model?: string;
|
|
71
|
+
error?: string;
|
|
72
|
+
}>;
|
|
73
|
+
}
|
|
74
|
+
export type { CodeMieConfig, AgentEvent, EventCallback, AgentStats, TokenUsage, ExecutionStep } from './types.js';
|
|
75
|
+
export { loadCodeMieConfig, getConfigSummary } from './config.js';
|
|
76
|
+
export { CodeMieAgent } from './agent.js';
|
|
77
|
+
export { formatCost, formatTokens, formatTokenUsageSummary, calculateCost } from './tokenUtils.js';
|
|
78
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/codemie-code/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIlF,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,oBAAoB,CAAqC;gBAErD,UAAU,CAAC,EAAE,MAAM;IAQ/B,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAqDjD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBvC;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoChD;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCtD;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;IAmBhB;;OAEG;IACH,QAAQ,IAAI,UAAU,GAAG,IAAI;IAI7B;;OAEG;IACH,uBAAuB,IAAI,oBAAoB,GAAG,IAAI;IAItD;;OAEG;IACH,SAAS,IAAI,aAAa,GAAG,IAAI;IAIjC;;OAEG;IACH,YAAY,IAAI,IAAI;IAMpB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAC3B,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC;QACZ,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IA4CF;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;WACU,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACxD,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CA0BH;AAGD,YAAY,EACV,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACd,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CodeMie Native Agent - Main Entry Point
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the entire CodeMie native agent including initialization,
|
|
5
|
+
* tool loading, and interactive/non-interactive execution modes.
|
|
6
|
+
*/
|
|
7
|
+
import { CodeMieAgent } from './agent.js';
|
|
8
|
+
import { loadCodeMieConfig, getConfigSummary } from './config.js';
|
|
9
|
+
import { createSystemTools } from './tools/index.js';
|
|
10
|
+
import { CodeMieAgentError } from './types.js';
|
|
11
|
+
import { hasClipboardImage, getClipboardImage } from '../../utils/clipboard.js';
|
|
12
|
+
export class CodeMieCode {
|
|
13
|
+
agent = null;
|
|
14
|
+
config;
|
|
15
|
+
initializationResult = null;
|
|
16
|
+
constructor(workingDir) {
|
|
17
|
+
// Load configuration first - this may throw if config is invalid
|
|
18
|
+
this.config = {}; // Temporary placeholder
|
|
19
|
+
// Actual loading happens in initialize() to handle async operations
|
|
20
|
+
this.workingDirectory = workingDir || process.cwd();
|
|
21
|
+
}
|
|
22
|
+
workingDirectory;
|
|
23
|
+
/**
|
|
24
|
+
* Initialize the CodeMie agent asynchronously
|
|
25
|
+
*/
|
|
26
|
+
async initialize() {
|
|
27
|
+
try {
|
|
28
|
+
// Load configuration
|
|
29
|
+
this.config = await loadCodeMieConfig(this.workingDirectory);
|
|
30
|
+
if (this.config.debug) {
|
|
31
|
+
console.log('[DEBUG] Configuration loaded:', getConfigSummary(this.config));
|
|
32
|
+
}
|
|
33
|
+
// Create system tools
|
|
34
|
+
const tools = await createSystemTools(this.config);
|
|
35
|
+
if (this.config.debug) {
|
|
36
|
+
console.log(`[DEBUG] Created ${tools.length} system tools`);
|
|
37
|
+
}
|
|
38
|
+
// Initialize the agent
|
|
39
|
+
this.agent = new CodeMieAgent(this.config, tools);
|
|
40
|
+
this.initializationResult = {
|
|
41
|
+
success: true,
|
|
42
|
+
toolCount: tools.length,
|
|
43
|
+
duration: 0
|
|
44
|
+
};
|
|
45
|
+
if (this.config.debug) {
|
|
46
|
+
console.log('[DEBUG] Agent initialized successfully');
|
|
47
|
+
}
|
|
48
|
+
return this.initializationResult;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
52
|
+
this.initializationResult = {
|
|
53
|
+
success: false,
|
|
54
|
+
toolCount: 0,
|
|
55
|
+
duration: 0,
|
|
56
|
+
error: errorMessage
|
|
57
|
+
};
|
|
58
|
+
if (this.config.debug) {
|
|
59
|
+
console.error('[DEBUG] Initialization failed:', error);
|
|
60
|
+
}
|
|
61
|
+
throw new CodeMieAgentError(`Failed to initialize CodeMie agent: ${errorMessage}`, 'INITIALIZATION_ERROR', { workingDirectory: this.workingDirectory, originalError: error });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Start interactive mode with modern terminal UI
|
|
66
|
+
*/
|
|
67
|
+
async startInteractive() {
|
|
68
|
+
if (!this.agent) {
|
|
69
|
+
throw new CodeMieAgentError('Agent not initialized. Call initialize() first.', 'NOT_INITIALIZED');
|
|
70
|
+
}
|
|
71
|
+
// Use modern Clack-based terminal UI
|
|
72
|
+
const { CodeMieTerminalUI } = await import('./ui.js');
|
|
73
|
+
const ui = new CodeMieTerminalUI(this.agent);
|
|
74
|
+
try {
|
|
75
|
+
await ui.startInteractive();
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
ui.dispose();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Execute a single task (non-interactive mode)
|
|
83
|
+
*/
|
|
84
|
+
async executeTask(task) {
|
|
85
|
+
if (!this.agent) {
|
|
86
|
+
throw new CodeMieAgentError('Agent not initialized. Call initialize() first.', 'NOT_INITIALIZED');
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
if (this.config.debug) {
|
|
90
|
+
console.log(`[DEBUG] Executing task: ${task.substring(0, 100)}...`);
|
|
91
|
+
}
|
|
92
|
+
let result = '';
|
|
93
|
+
await this.agent.chatStream(task, (event) => {
|
|
94
|
+
if (event.type === 'content_chunk') {
|
|
95
|
+
result += event.content || '';
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
102
|
+
if (this.config.debug) {
|
|
103
|
+
console.error('[DEBUG] Task execution failed:', error);
|
|
104
|
+
}
|
|
105
|
+
throw new CodeMieAgentError(`Task execution failed: ${errorMessage}`, 'TASK_EXECUTION_ERROR', { task, originalError: error });
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Execute a single task with modern UI feedback (for CLI usage)
|
|
110
|
+
*/
|
|
111
|
+
async executeTaskWithUI(task) {
|
|
112
|
+
if (!this.agent) {
|
|
113
|
+
throw new CodeMieAgentError('Agent not initialized. Call initialize() first.', 'NOT_INITIALIZED');
|
|
114
|
+
}
|
|
115
|
+
// Use modern Clack-based terminal UI for single task
|
|
116
|
+
const { CodeMieTerminalUI } = await import('./ui.js');
|
|
117
|
+
const ui = new CodeMieTerminalUI(this.agent);
|
|
118
|
+
try {
|
|
119
|
+
// Check for clipboard image
|
|
120
|
+
let clipboardImage;
|
|
121
|
+
if (await hasClipboardImage()) {
|
|
122
|
+
clipboardImage = await getClipboardImage() || undefined;
|
|
123
|
+
}
|
|
124
|
+
ui.showTaskWelcome(task);
|
|
125
|
+
const result = await ui.executeSingleTask(task, clipboardImage ? [clipboardImage] : []);
|
|
126
|
+
ui.showTaskComplete();
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
131
|
+
ui.showError(errorMessage);
|
|
132
|
+
throw error;
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
ui.dispose();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Stream a task with event callbacks (for programmatic use)
|
|
140
|
+
*/
|
|
141
|
+
async streamTask(task, onEvent) {
|
|
142
|
+
if (!this.agent) {
|
|
143
|
+
throw new CodeMieAgentError('Agent not initialized. Call initialize() first.', 'NOT_INITIALIZED');
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
await this.agent.chatStream(task, onEvent);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
throw new CodeMieAgentError(`Streaming task failed: ${error instanceof Error ? error.message : String(error)}`, 'STREAM_TASK_ERROR', { task, originalError: error });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get agent statistics
|
|
154
|
+
*/
|
|
155
|
+
getStats() {
|
|
156
|
+
return this.agent?.getStats() || null;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get initialization result
|
|
160
|
+
*/
|
|
161
|
+
getInitializationResult() {
|
|
162
|
+
return this.initializationResult;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get agent configuration (sanitized)
|
|
166
|
+
*/
|
|
167
|
+
getConfig() {
|
|
168
|
+
return this.agent?.getConfig() || null;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Clear conversation history
|
|
172
|
+
*/
|
|
173
|
+
clearHistory() {
|
|
174
|
+
if (this.agent) {
|
|
175
|
+
this.agent.clearHistory();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Health check for the entire system
|
|
180
|
+
*/
|
|
181
|
+
async healthCheck() {
|
|
182
|
+
try {
|
|
183
|
+
const configStatus = {
|
|
184
|
+
valid: !!this.config,
|
|
185
|
+
provider: this.config?.provider,
|
|
186
|
+
model: this.config?.model,
|
|
187
|
+
workingDirectory: this.config?.workingDirectory
|
|
188
|
+
};
|
|
189
|
+
if (!this.agent) {
|
|
190
|
+
return {
|
|
191
|
+
status: 'unhealthy',
|
|
192
|
+
initialized: false,
|
|
193
|
+
config: configStatus,
|
|
194
|
+
error: 'Agent not initialized'
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
const agentStats = this.agent.getStats();
|
|
198
|
+
const agentConfig = this.agent.getConfig();
|
|
199
|
+
return {
|
|
200
|
+
status: 'healthy',
|
|
201
|
+
initialized: true,
|
|
202
|
+
config: configStatus,
|
|
203
|
+
agent: {
|
|
204
|
+
stats: agentStats,
|
|
205
|
+
config: agentConfig ? {
|
|
206
|
+
provider: agentConfig.provider,
|
|
207
|
+
model: agentConfig.model
|
|
208
|
+
} : null
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
return {
|
|
214
|
+
status: 'unhealthy',
|
|
215
|
+
initialized: !!this.agent,
|
|
216
|
+
config: { valid: false },
|
|
217
|
+
error: error instanceof Error ? error.message : String(error)
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Dispose of resources
|
|
223
|
+
*/
|
|
224
|
+
async dispose() {
|
|
225
|
+
// Future: Clean up any resources, close connections, etc.
|
|
226
|
+
if (this.config.debug) {
|
|
227
|
+
console.log('[DEBUG] CodeMie agent disposed');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Static method to test connection and configuration
|
|
232
|
+
*/
|
|
233
|
+
static async testConnection(workingDir) {
|
|
234
|
+
try {
|
|
235
|
+
const config = await loadCodeMieConfig(workingDir);
|
|
236
|
+
// Basic validation that we can create an agent
|
|
237
|
+
const codeMie = new CodeMieCode(workingDir);
|
|
238
|
+
codeMie.config = config;
|
|
239
|
+
// Try to initialize (this will test tool creation and agent setup)
|
|
240
|
+
const initResult = await codeMie.initialize();
|
|
241
|
+
await codeMie.dispose();
|
|
242
|
+
return {
|
|
243
|
+
success: initResult.success,
|
|
244
|
+
provider: config.provider,
|
|
245
|
+
model: config.model
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
return {
|
|
250
|
+
success: false,
|
|
251
|
+
error: error instanceof Error ? error.message : String(error)
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
export { loadCodeMieConfig, getConfigSummary } from './config.js';
|
|
257
|
+
export { CodeMieAgent } from './agent.js';
|
|
258
|
+
export { formatCost, formatTokens, formatTokenUsageSummary, calculateCost } from './tokenUtils.js';
|
|
259
|
+
//# sourceMappingURL=index.js.map
|