@codemieai/code 0.0.3 ā 0.0.5
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/README.md +375 -325
- package/bin/codemie-claude.js +23 -0
- package/bin/codemie-code.js +49 -11
- package/bin/codemie-codex.js +12 -13
- package/dist/agents/adapters/claude-code.d.ts +5 -0
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +76 -18
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +5 -0
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +75 -17
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +187 -21
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/config.d.ts.map +1 -1
- package/dist/agents/codemie-code/config.js +29 -27
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/index.d.ts +16 -2
- package/dist/agents/codemie-code/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/index.js +74 -6
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.js +537 -0
- package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +29 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
- package/dist/agents/codemie-code/prompts.js +129 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -1
- package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +1 -1
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -1
- package/dist/agents/codemie-code/tools/index.d.ts +26 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +182 -14
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/planning.js +224 -0
- package/dist/agents/codemie-code/tools/planning.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +170 -6
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/codemie-code/types.js.map +1 -1
- package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
- package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +106 -10
- package/dist/agents/codemie-code/ui.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui.js +913 -129
- package/dist/agents/codemie-code/ui.js.map +1 -1
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.js +305 -0
- package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
- package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.js +281 -0
- package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +7 -5
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +170 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +40 -13
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +209 -16
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.js +3 -3
- package/dist/cli/commands/env.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +2 -1
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +15 -9
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +177 -11
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/tools.d.ts +6 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +244 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/commands/version.js +1 -1
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +424 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.js +39 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/clients/adapters/github.d.ts +17 -0
- package/dist/clients/adapters/github.d.ts.map +1 -0
- package/dist/clients/adapters/github.js +150 -0
- package/dist/clients/adapters/github.js.map +1 -0
- package/dist/clients/adapters/gitlab.d.ts +17 -0
- package/dist/clients/adapters/gitlab.d.ts.map +1 -0
- package/dist/clients/adapters/gitlab.js +147 -0
- package/dist/clients/adapters/gitlab.js.map +1 -0
- package/dist/clients/registry.d.ts +20 -0
- package/dist/clients/registry.d.ts.map +1 -0
- package/dist/clients/registry.js +27 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/tools/detector.d.ts +33 -0
- package/dist/tools/detector.d.ts.map +1 -0
- package/dist/tools/detector.js +145 -0
- package/dist/tools/detector.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/manager.d.ts +21 -0
- package/dist/tools/manager.d.ts.map +1 -0
- package/dist/tools/manager.js +104 -0
- package/dist/tools/manager.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +36 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/sso.d.ts +42 -0
- package/dist/types/sso.d.ts.map +1 -0
- package/dist/types/sso.js +2 -0
- package/dist/types/sso.js.map +1 -0
- package/dist/utils/agent-compatibility.d.ts +32 -0
- package/dist/utils/agent-compatibility.d.ts.map +1 -0
- package/dist/utils/agent-compatibility.js +140 -0
- package/dist/utils/agent-compatibility.js.map +1 -0
- package/dist/utils/codemie-integration-validator.d.ts +17 -0
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
- package/dist/utils/codemie-integration-validator.js +105 -0
- package/dist/utils/codemie-integration-validator.js.map +1 -0
- package/dist/utils/codemie-model-fetcher.d.ts +11 -0
- package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
- package/dist/utils/codemie-model-fetcher.js +242 -0
- package/dist/utils/codemie-model-fetcher.js.map +1 -0
- package/dist/utils/config-loader.d.ts +23 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +73 -27
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -0
- package/dist/utils/credential-store.js +109 -0
- package/dist/utils/credential-store.js.map +1 -0
- package/dist/utils/first-time.d.ts +1 -1
- package/dist/utils/first-time.d.ts.map +1 -1
- package/dist/utils/first-time.js +52 -71
- package/dist/utils/first-time.js.map +1 -1
- package/dist/utils/health-checker.d.ts.map +1 -1
- package/dist/utils/health-checker.js +5 -1
- package/dist/utils/health-checker.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts.map +1 -1
- package/dist/utils/model-fetcher.js +15 -2
- package/dist/utils/model-fetcher.js.map +1 -1
- package/dist/utils/sso-auth.d.ts +15 -0
- package/dist/utils/sso-auth.d.ts.map +1 -0
- package/dist/utils/sso-auth.js +207 -0
- package/dist/utils/sso-auth.js.map +1 -0
- package/dist/utils/sso-gateway.d.ts +47 -0
- package/dist/utils/sso-gateway.d.ts.map +1 -0
- package/dist/utils/sso-gateway.js +298 -0
- package/dist/utils/sso-gateway.js.map +1 -0
- package/dist/workflows/detector.d.ts +37 -0
- package/dist/workflows/detector.d.ts.map +1 -0
- package/dist/workflows/detector.js +160 -0
- package/dist/workflows/detector.js.map +1 -0
- package/dist/workflows/index.d.ts +8 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +8 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/installer.d.ts +24 -0
- package/dist/workflows/installer.d.ts.map +1 -0
- package/dist/workflows/installer.js +105 -0
- package/dist/workflows/installer.js.map +1 -0
- package/dist/workflows/registry.d.ts +29 -0
- package/dist/workflows/registry.d.ts.map +1 -0
- package/dist/workflows/registry.js +54 -0
- package/dist/workflows/registry.js.map +1 -0
- package/dist/workflows/templates/github/metadata.d.ts +6 -0
- package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/github/metadata.js +111 -0
- package/dist/workflows/templates/github/metadata.js.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.js +14 -0
- package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
- package/dist/workflows/types.d.ts +71 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +5 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +19 -6
- package/src/workflows/templates/github/code-ci.yml +529 -0
- package/src/workflows/templates/github/inline-fix.yml +665 -0
- package/src/workflows/templates/github/pr-review.yml +677 -0
- package/.claude/agents/README.md +0 -298
- package/.claude/agents/release-manager.md +0 -857
- package/.codemie/guides/git-workflow.md +0 -493
- package/CLAUDE.md +0 -225
- package/config.example.json +0 -10
- package/dist/agents/codemie-code/streaming/events.d.ts +0 -7
- package/dist/agents/codemie-code/streaming/events.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/events.js +0 -7
- package/dist/agents/codemie-code/streaming/events.js.map +0 -1
- package/dist/agents/codemie-code/streaming/formatter.d.ts +0 -2
- package/dist/agents/codemie-code/streaming/formatter.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/formatter.js +0 -2
- package/dist/agents/codemie-code/streaming/formatter.js.map +0 -1
- package/dist/agents/codemie-code/streaming/ui.d.ts +0 -2
- package/dist/agents/codemie-code/streaming/ui.d.ts.map +0 -1
- package/dist/agents/codemie-code/streaming/ui.js +0 -2
- package/dist/agents/codemie-code/streaming/ui.js.map +0 -1
- package/dist/agents/codemie-code/tools/command.d.ts +0 -2
- package/dist/agents/codemie-code/tools/command.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/command.js +0 -2
- package/dist/agents/codemie-code/tools/command.js.map +0 -1
- package/dist/agents/codemie-code/tools/filesystem.d.ts +0 -2
- package/dist/agents/codemie-code/tools/filesystem.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/filesystem.js +0 -2
- package/dist/agents/codemie-code/tools/filesystem.js.map +0 -1
- package/dist/agents/codemie-code/tools/git.d.ts +0 -2
- package/dist/agents/codemie-code/tools/git.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/git.js +0 -2
- package/dist/agents/codemie-code/tools/git.js.map +0 -1
- package/dist/agents/codemie-code/tools/security.d.ts +0 -2
- package/dist/agents/codemie-code/tools/security.d.ts.map +0 -1
- package/dist/agents/codemie-code/tools/security.js +0 -2
- package/dist/agents/codemie-code/tools/security.js.map +0 -1
- package/eslint.config.mjs +0 -43
- package/scripts/README.md +0 -80
- package/scripts/release.sh +0 -156
|
@@ -33,13 +33,77 @@ class ReadFileTool extends StructuredTool {
|
|
|
33
33
|
if (!resolvedPath.startsWith(this.workingDirectory)) {
|
|
34
34
|
throw new Error('Access denied: Path is outside working directory');
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
// Emit progress: starting file read
|
|
37
|
+
emitToolProgress(this.name, {
|
|
38
|
+
percentage: 10,
|
|
39
|
+
operation: `Reading ${path.basename(filePath)}...`,
|
|
40
|
+
details: `Opening file: ${filePath}`
|
|
41
|
+
});
|
|
42
|
+
// Check file stats for progress estimation
|
|
43
|
+
const stats = await fs.stat(resolvedPath);
|
|
44
|
+
const fileSize = stats.size;
|
|
45
|
+
// Emit progress: file opened
|
|
46
|
+
emitToolProgress(this.name, {
|
|
47
|
+
percentage: 30,
|
|
48
|
+
operation: `Reading ${path.basename(filePath)}...`,
|
|
49
|
+
details: `File size: ${this.formatFileSize(fileSize)}`
|
|
50
|
+
});
|
|
51
|
+
// For large files, simulate progress by reading in chunks
|
|
52
|
+
if (fileSize > 50000) { // 50KB threshold for showing progress
|
|
53
|
+
let content = '';
|
|
54
|
+
const chunkSize = 8192; // 8KB chunks
|
|
55
|
+
const totalChunks = Math.ceil(fileSize / chunkSize);
|
|
56
|
+
const fileHandle = await fs.open(resolvedPath, 'r');
|
|
57
|
+
const buffer = Buffer.alloc(chunkSize);
|
|
58
|
+
try {
|
|
59
|
+
for (let i = 0; i < totalChunks; i++) {
|
|
60
|
+
const { bytesRead } = await fileHandle.read(buffer, 0, chunkSize, i * chunkSize);
|
|
61
|
+
content += buffer.subarray(0, bytesRead).toString('utf-8');
|
|
62
|
+
const progress = Math.min(30 + Math.round((i + 1) / totalChunks * 60), 90);
|
|
63
|
+
emitToolProgress(this.name, {
|
|
64
|
+
percentage: progress,
|
|
65
|
+
operation: `Reading ${path.basename(filePath)}...`,
|
|
66
|
+
details: `${Math.round((i + 1) / totalChunks * 100)}% complete`
|
|
67
|
+
});
|
|
68
|
+
// Small delay for large files to show progress
|
|
69
|
+
if (i % 10 === 0) {
|
|
70
|
+
await new Promise(resolve => setTimeout(resolve, 1));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
await fileHandle.close();
|
|
76
|
+
}
|
|
77
|
+
// Final progress
|
|
78
|
+
emitToolProgress(this.name, {
|
|
79
|
+
percentage: 100,
|
|
80
|
+
operation: `Completed reading ${path.basename(filePath)}`,
|
|
81
|
+
details: `Read ${this.formatFileSize(fileSize)}`
|
|
82
|
+
});
|
|
83
|
+
return `File: ${filePath}\n\n${content}`;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// For small files, read normally but still show progress
|
|
87
|
+
const content = await fs.readFile(resolvedPath, 'utf-8');
|
|
88
|
+
emitToolProgress(this.name, {
|
|
89
|
+
percentage: 100,
|
|
90
|
+
operation: `Completed reading ${path.basename(filePath)}`,
|
|
91
|
+
details: `Read ${this.formatFileSize(fileSize)}`
|
|
92
|
+
});
|
|
93
|
+
return `File: ${filePath}\n\n${content}`;
|
|
94
|
+
}
|
|
38
95
|
}
|
|
39
96
|
catch (error) {
|
|
40
97
|
return `Error reading file: ${error instanceof Error ? error.message : String(error)}`;
|
|
41
98
|
}
|
|
42
99
|
}
|
|
100
|
+
formatFileSize(bytes) {
|
|
101
|
+
if (bytes < 1024)
|
|
102
|
+
return `${bytes} B`;
|
|
103
|
+
if (bytes < 1024 * 1024)
|
|
104
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
105
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
106
|
+
}
|
|
43
107
|
}
|
|
44
108
|
/**
|
|
45
109
|
* Basic file write tool - writes content to a file
|
|
@@ -96,22 +160,83 @@ class ExecuteCommandTool extends StructuredTool {
|
|
|
96
160
|
if (dangerousCommands.some(cmd => command.toLowerCase().includes(cmd))) {
|
|
97
161
|
return `Error: Command rejected for security reasons: ${command}`;
|
|
98
162
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
163
|
+
// Emit progress: command starting
|
|
164
|
+
emitToolProgress(this.name, {
|
|
165
|
+
percentage: 10,
|
|
166
|
+
operation: `Executing command...`,
|
|
167
|
+
details: command.length > 50 ? `${command.substring(0, 47)}...` : command
|
|
103
168
|
});
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
169
|
+
// Start timer for progress estimation
|
|
170
|
+
const startTime = Date.now();
|
|
171
|
+
let progressInterval;
|
|
172
|
+
// For long-running commands, simulate progress
|
|
173
|
+
const estimatedTime = this.estimateCommandTime(command);
|
|
174
|
+
if (estimatedTime > 2000) { // Only show progress for commands estimated > 2s
|
|
175
|
+
progressInterval = setInterval(() => {
|
|
176
|
+
const elapsed = Date.now() - startTime;
|
|
177
|
+
const progress = Math.min(10 + Math.round((elapsed / estimatedTime) * 80), 90);
|
|
178
|
+
emitToolProgress(this.name, {
|
|
179
|
+
percentage: progress,
|
|
180
|
+
operation: `Executing command...`,
|
|
181
|
+
details: `Running for ${Math.round(elapsed / 1000)}s`,
|
|
182
|
+
estimatedTimeRemaining: Math.max(0, estimatedTime - elapsed)
|
|
183
|
+
});
|
|
184
|
+
}, 1000);
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
const { stdout, stderr } = await execAsync(command, {
|
|
188
|
+
cwd: this.workingDirectory,
|
|
189
|
+
timeout: 30000, // 30 second timeout
|
|
190
|
+
maxBuffer: 1024 * 1024 // 1MB output limit
|
|
191
|
+
});
|
|
192
|
+
// Clear interval and emit completion
|
|
193
|
+
if (progressInterval) {
|
|
194
|
+
clearInterval(progressInterval);
|
|
195
|
+
}
|
|
196
|
+
const executionTime = Date.now() - startTime;
|
|
197
|
+
emitToolProgress(this.name, {
|
|
198
|
+
percentage: 100,
|
|
199
|
+
operation: `Command completed`,
|
|
200
|
+
details: `Finished in ${executionTime}ms`
|
|
201
|
+
});
|
|
202
|
+
let result = '';
|
|
203
|
+
if (stdout)
|
|
204
|
+
result += `STDOUT:\n${stdout}\n`;
|
|
205
|
+
if (stderr)
|
|
206
|
+
result += `STDERR:\n${stderr}\n`;
|
|
207
|
+
return result || 'Command executed successfully (no output)';
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
if (progressInterval) {
|
|
211
|
+
clearInterval(progressInterval);
|
|
212
|
+
}
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
110
215
|
}
|
|
111
216
|
catch (error) {
|
|
112
217
|
return `Error executing command: ${error instanceof Error ? error.message : String(error)}`;
|
|
113
218
|
}
|
|
114
219
|
}
|
|
220
|
+
estimateCommandTime(command) {
|
|
221
|
+
// Simple heuristics for command execution time estimation
|
|
222
|
+
const lowerCommand = command.toLowerCase();
|
|
223
|
+
if (lowerCommand.includes('npm install') || lowerCommand.includes('yarn install')) {
|
|
224
|
+
return 15000; // 15s for package installs
|
|
225
|
+
}
|
|
226
|
+
if (lowerCommand.includes('npm run build') || lowerCommand.includes('yarn build')) {
|
|
227
|
+
return 10000; // 10s for builds
|
|
228
|
+
}
|
|
229
|
+
if (lowerCommand.includes('git clone') || lowerCommand.includes('git pull')) {
|
|
230
|
+
return 8000; // 8s for git operations
|
|
231
|
+
}
|
|
232
|
+
if (lowerCommand.includes('find') || lowerCommand.includes('grep -r')) {
|
|
233
|
+
return 5000; // 5s for search operations
|
|
234
|
+
}
|
|
235
|
+
if (lowerCommand.includes('tar') || lowerCommand.includes('zip') || lowerCommand.includes('unzip')) {
|
|
236
|
+
return 6000; // 6s for compression operations
|
|
237
|
+
}
|
|
238
|
+
return 2000; // Default 2s
|
|
239
|
+
}
|
|
115
240
|
}
|
|
116
241
|
/**
|
|
117
242
|
* Directory listing tool - lists files and directories with intelligent filtering
|
|
@@ -200,6 +325,28 @@ class ListDirectoryTool extends StructuredTool {
|
|
|
200
325
|
}
|
|
201
326
|
}
|
|
202
327
|
}
|
|
328
|
+
/**
|
|
329
|
+
* Global tool event emitter - set during chatStream
|
|
330
|
+
*/
|
|
331
|
+
let globalToolEventCallback = null;
|
|
332
|
+
/**
|
|
333
|
+
* Set the global tool event callback for the current execution
|
|
334
|
+
*/
|
|
335
|
+
export function setGlobalToolEventCallback(callback) {
|
|
336
|
+
globalToolEventCallback = callback;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Emit a tool progress event using the global callback
|
|
340
|
+
*/
|
|
341
|
+
export function emitToolProgress(toolName, progress) {
|
|
342
|
+
if (globalToolEventCallback) {
|
|
343
|
+
globalToolEventCallback({
|
|
344
|
+
type: 'tool_call_progress',
|
|
345
|
+
toolName,
|
|
346
|
+
progress
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
203
350
|
/**
|
|
204
351
|
* Create system tools available to the CodeMie agent
|
|
205
352
|
*/
|
|
@@ -212,8 +359,24 @@ export async function createSystemTools(config) {
|
|
|
212
359
|
tools.push(new ListDirectoryTool(config.workingDirectory, config.directoryFilters));
|
|
213
360
|
// Command execution tool
|
|
214
361
|
tools.push(new ExecuteCommandTool(config.workingDirectory));
|
|
362
|
+
// Planning and todo tools
|
|
363
|
+
try {
|
|
364
|
+
const { planningTools, initializeTodoStorage } = await import('./planning.js');
|
|
365
|
+
// Initialize todo storage for this working directory
|
|
366
|
+
initializeTodoStorage(config.workingDirectory, config.debug);
|
|
367
|
+
tools.push(...planningTools);
|
|
368
|
+
if (config.debug) {
|
|
369
|
+
console.log(`[DEBUG] Added ${planningTools.length} planning tools`);
|
|
370
|
+
console.log(`[DEBUG] Initialized todo storage for: ${config.workingDirectory}`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
catch (error) {
|
|
374
|
+
if (config.debug) {
|
|
375
|
+
console.warn('[DEBUG] Planning tools not available:', error);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
215
378
|
if (config.debug) {
|
|
216
|
-
console.log(`[DEBUG] Created ${tools.length} system tools`);
|
|
379
|
+
console.log(`[DEBUG] Created ${tools.length} total system tools`);
|
|
217
380
|
}
|
|
218
381
|
return tools;
|
|
219
382
|
}
|
|
@@ -233,7 +396,12 @@ export function getToolSummary() {
|
|
|
233
396
|
{ name: 'read_file', description: 'Read the contents of a file from the filesystem' },
|
|
234
397
|
{ name: 'write_file', description: 'Write content to a file in the filesystem' },
|
|
235
398
|
{ 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' }
|
|
399
|
+
{ name: 'execute_command', description: 'Execute a shell command in the working directory' },
|
|
400
|
+
{ name: 'write_todos', description: 'Create or update a structured todo list for planning and progress tracking' },
|
|
401
|
+
{ name: 'update_todo_status', description: 'Update the status of a specific todo by index' },
|
|
402
|
+
{ name: 'append_todo', description: 'Add a new todo item to the existing list' },
|
|
403
|
+
{ name: 'clear_todos', description: 'Clear all todos from the list' },
|
|
404
|
+
{ name: 'show_todos', description: 'Display the current todo list with progress information' }
|
|
237
405
|
];
|
|
238
406
|
}
|
|
239
407
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planning Tools for CodeMie Agent
|
|
3
|
+
*
|
|
4
|
+
* Implementation of todo management tools with persistent file storage
|
|
5
|
+
*/
|
|
6
|
+
import { StructuredTool } from '@langchain/core/tools';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import type { Todo, TodoUpdateEvent } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Initialize todo storage for the current working directory
|
|
11
|
+
*/
|
|
12
|
+
export declare function initializeTodoStorage(workingDirectory: string, debug?: boolean): void;
|
|
13
|
+
/**
|
|
14
|
+
* Simple Write Todos Tool
|
|
15
|
+
*/
|
|
16
|
+
declare class WriteSimpleTodosTool extends StructuredTool {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
schema: z.ZodObject<{
|
|
20
|
+
todos: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
|
|
21
|
+
content: z.ZodString;
|
|
22
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
23
|
+
in_progress: "in_progress";
|
|
24
|
+
completed: "completed";
|
|
25
|
+
pending: "pending";
|
|
26
|
+
}>>;
|
|
27
|
+
}, z.core.$strip>>]>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
_call(input: {
|
|
30
|
+
todos: any;
|
|
31
|
+
}): Promise<string>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Show Todos Tool with Storage Information
|
|
35
|
+
*/
|
|
36
|
+
declare class ShowSimpleTodosTool extends StructuredTool {
|
|
37
|
+
name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
schema: z.ZodObject<{}, z.core.$strip>;
|
|
40
|
+
_call(): Promise<string>;
|
|
41
|
+
}
|
|
42
|
+
export declare const planningTools: (WriteSimpleTodosTool | ShowSimpleTodosTool)[];
|
|
43
|
+
export declare const writeTodos: WriteSimpleTodosTool;
|
|
44
|
+
export declare const showTodos: ShowSimpleTodosTool;
|
|
45
|
+
export declare class TodoStateManager {
|
|
46
|
+
static addEventCallback(callback: (event: TodoUpdateEvent) => void): void;
|
|
47
|
+
static removeEventCallback(callback: (event: TodoUpdateEvent) => void): void;
|
|
48
|
+
static getCurrentTodos(): Todo[];
|
|
49
|
+
static clearTodos(): Promise<void>;
|
|
50
|
+
static getStorageInfo(): any;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=planning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/planning.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQzD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,IAAI,CAmCnF;AAED;;GAEG;AACH,cAAM,oBAAqB,SAAQ,cAAc;IAC/C,IAAI,SAAiB;IACrB,WAAW,SAAgF;IAE3F,MAAM;;;;;;;;;sBASH;IAEG,KAAK,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAwEpD;AAED;;GAEG;AACH,cAAM,mBAAoB,SAAQ,cAAc;IAC9C,IAAI,SAAgB;IACpB,WAAW,SAAiF;IAE5F,MAAM,iCAAgB;IAEhB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CA0C/B;AAGD,eAAO,MAAM,aAAa,gDAGzB,CAAC;AAGF,eAAO,MAAM,UAAU,sBAA6B,CAAC;AACrD,eAAO,MAAM,SAAS,qBAA4B,CAAC;AAGnD,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAIzE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAO5E,MAAM,CAAC,eAAe,IAAI,IAAI,EAAE;WAInB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BxC,MAAM,CAAC,cAAc,IAAI,GAAG;CAG7B"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planning Tools for CodeMie Agent
|
|
3
|
+
*
|
|
4
|
+
* Implementation of todo management tools with persistent file storage
|
|
5
|
+
*/
|
|
6
|
+
import { StructuredTool } from '@langchain/core/tools';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { TodoFileStorage } from '../storage/todoStorage.js';
|
|
9
|
+
// Global todo state and storage for integration with plan mode
|
|
10
|
+
let globalTodos = [];
|
|
11
|
+
let eventCallbacks = [];
|
|
12
|
+
let todoStorage = null;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize todo storage for the current working directory
|
|
15
|
+
*/
|
|
16
|
+
export function initializeTodoStorage(workingDirectory, debug = false) {
|
|
17
|
+
todoStorage = new TodoFileStorage({
|
|
18
|
+
workingDirectory,
|
|
19
|
+
enableGlobalBackup: true,
|
|
20
|
+
debug
|
|
21
|
+
});
|
|
22
|
+
// Load existing todos on initialization
|
|
23
|
+
todoStorage.loadTodos().then(todos => {
|
|
24
|
+
globalTodos = todos;
|
|
25
|
+
if (debug && todos.length > 0) {
|
|
26
|
+
console.log(`[TodoStorage] Loaded ${todos.length} existing todos`);
|
|
27
|
+
}
|
|
28
|
+
// Emit loaded todos event
|
|
29
|
+
if (todos.length > 0) {
|
|
30
|
+
const todoEvent = {
|
|
31
|
+
type: 'todo_update',
|
|
32
|
+
todos: todos,
|
|
33
|
+
changeType: 'update',
|
|
34
|
+
timestamp: new Date()
|
|
35
|
+
};
|
|
36
|
+
eventCallbacks.forEach(callback => {
|
|
37
|
+
try {
|
|
38
|
+
callback(todoEvent);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.warn('[TodoStorage] Event callback error:', error);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}).catch(error => {
|
|
46
|
+
console.warn('[TodoStorage] Failed to load initial todos:', error);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Simple Write Todos Tool
|
|
51
|
+
*/
|
|
52
|
+
class WriteSimpleTodosTool extends StructuredTool {
|
|
53
|
+
name = 'write_todos';
|
|
54
|
+
description = 'Create or update a structured todo list for planning and progress tracking';
|
|
55
|
+
schema = z.object({
|
|
56
|
+
todos: z.union([
|
|
57
|
+
z.string(),
|
|
58
|
+
z.array(z.string()),
|
|
59
|
+
z.array(z.object({
|
|
60
|
+
content: z.string(),
|
|
61
|
+
status: z.enum(['pending', 'in_progress', 'completed']).optional()
|
|
62
|
+
}))
|
|
63
|
+
]).describe('The todo list in various supported formats')
|
|
64
|
+
});
|
|
65
|
+
async _call(input) {
|
|
66
|
+
try {
|
|
67
|
+
// Simple parsing - convert any format to string array
|
|
68
|
+
let todoItems = [];
|
|
69
|
+
if (typeof input.todos === 'string') {
|
|
70
|
+
// Handle string format
|
|
71
|
+
todoItems = input.todos.split('\n')
|
|
72
|
+
.filter(line => line.trim())
|
|
73
|
+
.map(line => line.replace(/^[-*ā¢]\s*/, '').trim())
|
|
74
|
+
.filter(item => item);
|
|
75
|
+
}
|
|
76
|
+
else if (Array.isArray(input.todos)) {
|
|
77
|
+
todoItems = input.todos.map(item => typeof item === 'string' ? item : item.content || String(item));
|
|
78
|
+
}
|
|
79
|
+
if (todoItems.length === 0) {
|
|
80
|
+
return 'ā No valid todos found in input';
|
|
81
|
+
}
|
|
82
|
+
// Create proper Todo objects
|
|
83
|
+
const todos = todoItems.map((content, index) => ({
|
|
84
|
+
content: content.trim(),
|
|
85
|
+
status: 'pending',
|
|
86
|
+
index,
|
|
87
|
+
timestamp: new Date()
|
|
88
|
+
}));
|
|
89
|
+
// Store in global state
|
|
90
|
+
globalTodos = todos;
|
|
91
|
+
// Save to file storage
|
|
92
|
+
if (todoStorage) {
|
|
93
|
+
try {
|
|
94
|
+
await todoStorage.saveTodos(todos);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
console.warn('[write_todos] Failed to save to file:', error);
|
|
98
|
+
// Continue execution - file save failure shouldn't break todo creation
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Emit todo_update event for plan mode integration
|
|
102
|
+
const todoEvent = {
|
|
103
|
+
type: 'todo_update',
|
|
104
|
+
todos: todos,
|
|
105
|
+
changeType: 'create',
|
|
106
|
+
timestamp: new Date()
|
|
107
|
+
};
|
|
108
|
+
// Notify all callbacks (plan mode, UI, etc.)
|
|
109
|
+
eventCallbacks.forEach(callback => {
|
|
110
|
+
try {
|
|
111
|
+
callback(todoEvent);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.warn('[write_todos] Event callback error:', error);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
// Format response
|
|
118
|
+
const response = `ā
**Todo List Created** (${todoItems.length} items)\n\n` +
|
|
119
|
+
todoItems.map((item, i) => `${i + 1}. ${item}`).join('\n') +
|
|
120
|
+
'\n\nšÆ **Status**: Ready for execution\n' +
|
|
121
|
+
'š” **Tip**: Use Ctrl+T to view todos during execution';
|
|
122
|
+
return response;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
126
|
+
return `ā Error creating todos: ${errorMessage}`;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Show Todos Tool with Storage Information
|
|
132
|
+
*/
|
|
133
|
+
class ShowSimpleTodosTool extends StructuredTool {
|
|
134
|
+
name = 'show_todos';
|
|
135
|
+
description = 'Display the current todo list with progress information and storage details';
|
|
136
|
+
schema = z.object({});
|
|
137
|
+
async _call() {
|
|
138
|
+
const todos = globalTodos;
|
|
139
|
+
if (todos.length === 0) {
|
|
140
|
+
return `š **Current Todo List**\n\n` +
|
|
141
|
+
`No todos currently active.\n` +
|
|
142
|
+
`Use the write_todos tool to create a structured plan.\n\n` +
|
|
143
|
+
`š” **Tip**: Start with write_todos to create your task list`;
|
|
144
|
+
}
|
|
145
|
+
const completed = todos.filter(t => t.status === 'completed').length;
|
|
146
|
+
const inProgress = todos.filter(t => t.status === 'in_progress').length;
|
|
147
|
+
const pending = todos.filter(t => t.status === 'pending').length;
|
|
148
|
+
const statusIcon = (status) => {
|
|
149
|
+
switch (status) {
|
|
150
|
+
case 'completed': return 'ā
';
|
|
151
|
+
case 'in_progress': return 'š';
|
|
152
|
+
case 'pending': return 'ā³';
|
|
153
|
+
default: return 'ā';
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
let result = `š **Current Todo List** (${todos.length} items)\n\n`;
|
|
157
|
+
todos.forEach((todo, i) => {
|
|
158
|
+
result += `${statusIcon(todo.status)} ${i + 1}. ${todo.content}\n`;
|
|
159
|
+
});
|
|
160
|
+
result += `\n**Progress**: ${completed} completed, ${inProgress} in progress, ${pending} pending`;
|
|
161
|
+
// Add storage information
|
|
162
|
+
const storageInfo = TodoStateManager.getStorageInfo();
|
|
163
|
+
if (storageInfo) {
|
|
164
|
+
result += `\n\nš **Storage**: Project todos saved to .codemie/todos.json`;
|
|
165
|
+
result += `\nš **Backup**: Global backup at ~/.codemie/todos/${storageInfo.projectHash}.json`;
|
|
166
|
+
}
|
|
167
|
+
result += `\nš” **Tip**: Use Ctrl+T to view todos in interactive mode`;
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Export the tools
|
|
172
|
+
export const planningTools = [
|
|
173
|
+
new WriteSimpleTodosTool(),
|
|
174
|
+
new ShowSimpleTodosTool()
|
|
175
|
+
];
|
|
176
|
+
// Also export individual tools for compatibility
|
|
177
|
+
export const writeTodos = new WriteSimpleTodosTool();
|
|
178
|
+
export const showTodos = new ShowSimpleTodosTool();
|
|
179
|
+
// Todo state manager for plan mode integration
|
|
180
|
+
export class TodoStateManager {
|
|
181
|
+
static addEventCallback(callback) {
|
|
182
|
+
eventCallbacks.push(callback);
|
|
183
|
+
}
|
|
184
|
+
static removeEventCallback(callback) {
|
|
185
|
+
const index = eventCallbacks.indexOf(callback);
|
|
186
|
+
if (index > -1) {
|
|
187
|
+
eventCallbacks.splice(index, 1);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
static getCurrentTodos() {
|
|
191
|
+
return [...globalTodos];
|
|
192
|
+
}
|
|
193
|
+
static async clearTodos() {
|
|
194
|
+
globalTodos = [];
|
|
195
|
+
// Clear file storage
|
|
196
|
+
if (todoStorage) {
|
|
197
|
+
try {
|
|
198
|
+
await todoStorage.clearTodos();
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
console.warn('[TodoStateManager] Failed to clear file storage:', error);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Emit clear event
|
|
205
|
+
const todoEvent = {
|
|
206
|
+
type: 'todo_update',
|
|
207
|
+
todos: [],
|
|
208
|
+
changeType: 'delete',
|
|
209
|
+
timestamp: new Date()
|
|
210
|
+
};
|
|
211
|
+
eventCallbacks.forEach(callback => {
|
|
212
|
+
try {
|
|
213
|
+
callback(todoEvent);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.warn('[TodoStateManager] Event callback error:', error);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
static getStorageInfo() {
|
|
221
|
+
return todoStorage?.getStorageInfo() || null;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=planning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/planning.ts"],"names":[],"mappings":"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"}
|