@codemieai/code 0.0.2 → 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/CLAUDE.md +130 -760
- 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 +291 -31
- 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,523 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CodeMie Native Agent Implementation
|
|
3
|
+
*
|
|
4
|
+
* Core LangGraph ReAct agent using LangChain v1.0+ with streaming support
|
|
5
|
+
*/
|
|
6
|
+
import { createReactAgent } from '@langchain/langgraph/prebuilt';
|
|
7
|
+
import { ChatOpenAI } from '@langchain/openai';
|
|
8
|
+
import { ChatAnthropic } from '@langchain/anthropic';
|
|
9
|
+
import { HumanMessage } from '@langchain/core/messages';
|
|
10
|
+
import { getSystemPrompt } from './prompts.js';
|
|
11
|
+
import { CodeMieAgentError } from './types.js';
|
|
12
|
+
import { extractToolMetadata } from './toolMetadata.js';
|
|
13
|
+
import { extractTokenUsageFromStreamChunk, extractTokenUsageFromFinalState } from './tokenUtils.js';
|
|
14
|
+
export class CodeMieAgent {
|
|
15
|
+
agent;
|
|
16
|
+
config;
|
|
17
|
+
tools;
|
|
18
|
+
conversationHistory = [];
|
|
19
|
+
toolCallArgs = new Map(); // Store tool args by tool call ID
|
|
20
|
+
currentExecutionSteps = [];
|
|
21
|
+
currentStepNumber = 0;
|
|
22
|
+
currentLLMTokenUsage = null; // Store token usage for associating with next tool call
|
|
23
|
+
isFirstLLMCall = true; // Track if this is the initial user input processing
|
|
24
|
+
stats = {
|
|
25
|
+
inputTokens: 0,
|
|
26
|
+
outputTokens: 0,
|
|
27
|
+
cachedTokens: 0,
|
|
28
|
+
totalTokens: 0,
|
|
29
|
+
estimatedTotalCost: 0,
|
|
30
|
+
executionTime: 0,
|
|
31
|
+
toolCalls: 0,
|
|
32
|
+
successfulTools: 0,
|
|
33
|
+
failedTools: 0,
|
|
34
|
+
llmCalls: 0,
|
|
35
|
+
executionSteps: []
|
|
36
|
+
};
|
|
37
|
+
constructor(config, tools) {
|
|
38
|
+
this.config = config;
|
|
39
|
+
this.tools = tools;
|
|
40
|
+
// Create the appropriate LLM based on provider
|
|
41
|
+
const llm = this.createLLM();
|
|
42
|
+
// Create LangGraph ReAct agent with system prompt
|
|
43
|
+
this.agent = createReactAgent({
|
|
44
|
+
llm,
|
|
45
|
+
tools: this.tools,
|
|
46
|
+
messageModifier: getSystemPrompt(config.workingDirectory)
|
|
47
|
+
});
|
|
48
|
+
if (config.debug) {
|
|
49
|
+
console.log(`[DEBUG] CodeMie Agent initialized with ${tools.length} tools`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Create the appropriate LLM instance based on provider configuration
|
|
54
|
+
*/
|
|
55
|
+
createLLM() {
|
|
56
|
+
const commonConfig = {
|
|
57
|
+
temperature: 0.7,
|
|
58
|
+
maxTokens: 4096,
|
|
59
|
+
timeout: this.config.timeout * 1000
|
|
60
|
+
};
|
|
61
|
+
switch (this.config.provider) {
|
|
62
|
+
case 'anthropic':
|
|
63
|
+
return new ChatAnthropic({
|
|
64
|
+
model: this.config.model,
|
|
65
|
+
apiKey: this.config.authToken,
|
|
66
|
+
// Note: Custom baseUrl not currently supported in ChatAnthropic
|
|
67
|
+
...commonConfig
|
|
68
|
+
});
|
|
69
|
+
case 'openai':
|
|
70
|
+
return new ChatOpenAI({
|
|
71
|
+
model: this.config.model,
|
|
72
|
+
apiKey: this.config.authToken,
|
|
73
|
+
configuration: {
|
|
74
|
+
...(this.config.baseUrl !== 'https://api.openai.com/v1' && {
|
|
75
|
+
baseURL: this.config.baseUrl
|
|
76
|
+
})
|
|
77
|
+
},
|
|
78
|
+
...commonConfig
|
|
79
|
+
});
|
|
80
|
+
case 'azure':
|
|
81
|
+
return new ChatOpenAI({
|
|
82
|
+
model: this.config.model,
|
|
83
|
+
apiKey: this.config.authToken,
|
|
84
|
+
configuration: {
|
|
85
|
+
baseURL: this.config.baseUrl,
|
|
86
|
+
defaultQuery: { 'api-version': '2024-02-01' }
|
|
87
|
+
},
|
|
88
|
+
...commonConfig
|
|
89
|
+
});
|
|
90
|
+
case 'bedrock':
|
|
91
|
+
// For Bedrock, we'll use Anthropic format but with special configuration
|
|
92
|
+
// Note: Bedrock configuration may need special handling
|
|
93
|
+
return new ChatAnthropic({
|
|
94
|
+
model: this.config.model,
|
|
95
|
+
apiKey: this.config.authToken,
|
|
96
|
+
// baseUrl not supported in ChatAnthropic - will handle differently in future
|
|
97
|
+
...commonConfig
|
|
98
|
+
});
|
|
99
|
+
case 'litellm':
|
|
100
|
+
// LiteLLM proxy - use OpenAI format as it's most compatible
|
|
101
|
+
return new ChatOpenAI({
|
|
102
|
+
model: this.config.model,
|
|
103
|
+
apiKey: this.config.authToken,
|
|
104
|
+
configuration: {
|
|
105
|
+
baseURL: this.config.baseUrl
|
|
106
|
+
},
|
|
107
|
+
...commonConfig
|
|
108
|
+
});
|
|
109
|
+
default:
|
|
110
|
+
throw new CodeMieAgentError(`Unsupported provider: ${this.config.provider}`, 'INVALID_PROVIDER', { provider: this.config.provider });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Create a HumanMessage with optional image support (multiple images)
|
|
115
|
+
*/
|
|
116
|
+
createHumanMessage(text, images = []) {
|
|
117
|
+
if (images.length === 0) {
|
|
118
|
+
// Text-only message
|
|
119
|
+
return new HumanMessage(text);
|
|
120
|
+
}
|
|
121
|
+
// Multimodal message with images
|
|
122
|
+
const content = [
|
|
123
|
+
{
|
|
124
|
+
type: "text",
|
|
125
|
+
text: text
|
|
126
|
+
}
|
|
127
|
+
];
|
|
128
|
+
// Add all images to the content
|
|
129
|
+
for (const image of images) {
|
|
130
|
+
content.push({
|
|
131
|
+
type: "image_url",
|
|
132
|
+
image_url: `data:${image.mimeType};base64,${image.data}`
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return new HumanMessage({
|
|
136
|
+
content: content
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Stream a chat interaction with the agent
|
|
141
|
+
*/
|
|
142
|
+
async chatStream(message, onEvent, images = []) {
|
|
143
|
+
const startTime = Date.now();
|
|
144
|
+
let currentToolCall = null;
|
|
145
|
+
let currentStep = null;
|
|
146
|
+
// Reset execution steps for new conversation
|
|
147
|
+
this.currentExecutionSteps = [];
|
|
148
|
+
this.currentStepNumber = 0;
|
|
149
|
+
this.isFirstLLMCall = true;
|
|
150
|
+
try {
|
|
151
|
+
if (this.config.debug) {
|
|
152
|
+
console.log(`[DEBUG] Processing message: ${message.substring(0, 100)}...`);
|
|
153
|
+
}
|
|
154
|
+
// Add user message to conversation history (with optional images)
|
|
155
|
+
const userMessage = this.createHumanMessage(message, images);
|
|
156
|
+
this.conversationHistory.push(userMessage);
|
|
157
|
+
// Notify start of thinking
|
|
158
|
+
onEvent({ type: 'thinking_start' });
|
|
159
|
+
// Start the first LLM call step
|
|
160
|
+
currentStep = this.startLLMStep();
|
|
161
|
+
// Create the stream with conversation history
|
|
162
|
+
const stream = await this.agent.stream({ messages: this.conversationHistory }, {
|
|
163
|
+
streamMode: 'updates',
|
|
164
|
+
recursionLimit: 50
|
|
165
|
+
});
|
|
166
|
+
let hasContent = false;
|
|
167
|
+
// Process stream chunks
|
|
168
|
+
for await (const chunk of stream) {
|
|
169
|
+
// Try to extract token usage from stream chunk
|
|
170
|
+
const tokenUsage = extractTokenUsageFromStreamChunk(chunk, this.config.model, this.config.provider);
|
|
171
|
+
if (tokenUsage && currentStep && currentStep.type === 'llm_call') {
|
|
172
|
+
// Update current step with token usage
|
|
173
|
+
currentStep.tokenUsage = tokenUsage;
|
|
174
|
+
this.updateStatsWithTokenUsage(tokenUsage);
|
|
175
|
+
// Store token usage to associate with next tool call
|
|
176
|
+
this.currentLLMTokenUsage = tokenUsage;
|
|
177
|
+
if (this.config.debug) {
|
|
178
|
+
console.log(`[DEBUG] Token usage: ${tokenUsage.inputTokens} in, ${tokenUsage.outputTokens} out`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
this.processStreamChunk(chunk, onEvent, (toolStarted) => {
|
|
182
|
+
if (toolStarted) {
|
|
183
|
+
// Complete current LLM step if it exists
|
|
184
|
+
if (currentStep && currentStep.type === 'llm_call') {
|
|
185
|
+
this.completeStep(currentStep);
|
|
186
|
+
currentStep = null;
|
|
187
|
+
}
|
|
188
|
+
// Start tool execution step
|
|
189
|
+
currentStep = this.startToolStep(toolStarted);
|
|
190
|
+
currentToolCall = toolStarted;
|
|
191
|
+
this.stats.toolCalls++;
|
|
192
|
+
}
|
|
193
|
+
else if (currentToolCall && currentStep) {
|
|
194
|
+
// Complete tool step
|
|
195
|
+
currentStep.toolSuccess = true;
|
|
196
|
+
this.completeStep(currentStep);
|
|
197
|
+
currentStep = null;
|
|
198
|
+
this.stats.successfulTools++;
|
|
199
|
+
currentToolCall = null;
|
|
200
|
+
// Start new LLM step for next reasoning cycle (processing tool result)
|
|
201
|
+
currentStep = this.startLLMStep();
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
// Check if we have content
|
|
205
|
+
if (chunk.agent?.messages) {
|
|
206
|
+
const lastMessage = chunk.agent.messages.at(-1);
|
|
207
|
+
if (lastMessage?.content && !hasContent) {
|
|
208
|
+
hasContent = true;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// Complete any remaining step
|
|
213
|
+
if (currentStep) {
|
|
214
|
+
this.completeStep(currentStep);
|
|
215
|
+
}
|
|
216
|
+
// Update conversation history with final messages and try to extract any missed token usage
|
|
217
|
+
try {
|
|
218
|
+
const finalState = await this.agent.getState();
|
|
219
|
+
if (finalState?.messages) {
|
|
220
|
+
this.conversationHistory = finalState.messages;
|
|
221
|
+
// Try to extract token usage from final state if we missed it during streaming
|
|
222
|
+
const finalTokenUsage = extractTokenUsageFromFinalState(finalState, this.config.model, this.config.provider);
|
|
223
|
+
if (finalTokenUsage && this.currentExecutionSteps.length > 0) {
|
|
224
|
+
// Find the last LLM step that doesn't have token usage
|
|
225
|
+
for (let i = this.currentExecutionSteps.length - 1; i >= 0; i--) {
|
|
226
|
+
const step = this.currentExecutionSteps[i];
|
|
227
|
+
if (step.type === 'llm_call' && !step.tokenUsage) {
|
|
228
|
+
step.tokenUsage = finalTokenUsage;
|
|
229
|
+
this.updateStatsWithTokenUsage(finalTokenUsage);
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// If getState fails, continue without updating history
|
|
238
|
+
if (this.config.debug) {
|
|
239
|
+
console.log('[DEBUG] Could not get final state, continuing...');
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Finalize execution statistics
|
|
243
|
+
this.stats.executionTime = Date.now() - startTime;
|
|
244
|
+
this.stats.executionSteps = [...this.currentExecutionSteps];
|
|
245
|
+
// Notify thinking end and completion
|
|
246
|
+
onEvent({ type: 'thinking_end' });
|
|
247
|
+
onEvent({ type: 'complete' });
|
|
248
|
+
if (this.config.debug) {
|
|
249
|
+
console.log(`[DEBUG] Agent completed in ${this.stats.executionTime}ms`);
|
|
250
|
+
console.log(`[DEBUG] Total tokens: ${this.stats.totalTokens} (${this.stats.inputTokens} in, ${this.stats.outputTokens} out)`);
|
|
251
|
+
console.log(`[DEBUG] Estimated cost: $${this.stats.estimatedTotalCost.toFixed(4)}`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
this.stats.executionTime = Date.now() - startTime;
|
|
256
|
+
if (currentToolCall) {
|
|
257
|
+
this.stats.failedTools++;
|
|
258
|
+
}
|
|
259
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
260
|
+
if (this.config.debug) {
|
|
261
|
+
console.error(`[DEBUG] Agent error:`, error);
|
|
262
|
+
}
|
|
263
|
+
onEvent({
|
|
264
|
+
type: 'error',
|
|
265
|
+
error: errorMessage
|
|
266
|
+
});
|
|
267
|
+
throw new CodeMieAgentError(`Agent execution failed: ${errorMessage}`, 'EXECUTION_ERROR', { originalError: error, stats: this.stats });
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Process individual stream chunks from LangGraph
|
|
272
|
+
*/
|
|
273
|
+
processStreamChunk(chunk, onEvent, onToolEvent) {
|
|
274
|
+
try {
|
|
275
|
+
// Handle agent node updates (LLM responses)
|
|
276
|
+
if (chunk.agent?.messages) {
|
|
277
|
+
const messages = chunk.agent.messages;
|
|
278
|
+
const lastMessage = messages[messages.length - 1];
|
|
279
|
+
// Stream content chunks
|
|
280
|
+
if (lastMessage?.content && typeof lastMessage.content === 'string') {
|
|
281
|
+
onEvent({
|
|
282
|
+
type: 'content_chunk',
|
|
283
|
+
content: lastMessage.content
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
// Handle tool calls
|
|
287
|
+
if (lastMessage?.tool_calls && lastMessage.tool_calls.length > 0) {
|
|
288
|
+
for (const toolCall of lastMessage.tool_calls) {
|
|
289
|
+
// Store tool args for later use in result processing
|
|
290
|
+
// Use tool name as key since LangGraph may not preserve IDs consistently
|
|
291
|
+
this.toolCallArgs.set(toolCall.name, toolCall.args);
|
|
292
|
+
onEvent({
|
|
293
|
+
type: 'tool_call_start',
|
|
294
|
+
toolName: toolCall.name,
|
|
295
|
+
toolArgs: toolCall.args
|
|
296
|
+
});
|
|
297
|
+
if (onToolEvent) {
|
|
298
|
+
onToolEvent(toolCall.name);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Handle tool node updates (tool execution results)
|
|
304
|
+
if (chunk.tools?.messages) {
|
|
305
|
+
const messages = chunk.tools.messages;
|
|
306
|
+
for (const toolMessage of messages) {
|
|
307
|
+
const toolName = toolMessage.name || 'unknown';
|
|
308
|
+
const result = toolMessage.content || '';
|
|
309
|
+
// Get the stored tool args for this tool name
|
|
310
|
+
const toolArgs = this.toolCallArgs.get(toolName);
|
|
311
|
+
if (toolArgs) {
|
|
312
|
+
this.toolCallArgs.delete(toolName); // Clean up after use
|
|
313
|
+
}
|
|
314
|
+
// Extract enhanced metadata from the tool result
|
|
315
|
+
let toolMetadata = extractToolMetadata(toolName, result, toolArgs);
|
|
316
|
+
// Associate token usage from the LLM call that triggered this tool
|
|
317
|
+
if (toolMetadata && this.currentLLMTokenUsage) {
|
|
318
|
+
toolMetadata = {
|
|
319
|
+
...toolMetadata,
|
|
320
|
+
tokenUsage: this.currentLLMTokenUsage
|
|
321
|
+
};
|
|
322
|
+
// Clear the stored token usage after associating it
|
|
323
|
+
this.currentLLMTokenUsage = null;
|
|
324
|
+
}
|
|
325
|
+
onEvent({
|
|
326
|
+
type: 'tool_call_result',
|
|
327
|
+
toolName,
|
|
328
|
+
result,
|
|
329
|
+
toolMetadata
|
|
330
|
+
});
|
|
331
|
+
if (onToolEvent) {
|
|
332
|
+
onToolEvent(); // Signal tool completion
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
if (this.config.debug) {
|
|
339
|
+
console.error(`[DEBUG] Error processing stream chunk:`, error);
|
|
340
|
+
}
|
|
341
|
+
// Don't throw here, just log - let the main stream continue
|
|
342
|
+
onEvent({
|
|
343
|
+
type: 'error',
|
|
344
|
+
error: `Stream processing error: ${error instanceof Error ? error.message : String(error)}`
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Execute a single message without streaming (for non-interactive use)
|
|
350
|
+
*/
|
|
351
|
+
async executeMessage(message) {
|
|
352
|
+
return new Promise((resolve, reject) => {
|
|
353
|
+
let response = '';
|
|
354
|
+
let hasError = false;
|
|
355
|
+
this.chatStream(message, (event) => {
|
|
356
|
+
switch (event.type) {
|
|
357
|
+
case 'content_chunk':
|
|
358
|
+
response += event.content || '';
|
|
359
|
+
break;
|
|
360
|
+
case 'complete':
|
|
361
|
+
if (!hasError) {
|
|
362
|
+
resolve(response.trim());
|
|
363
|
+
}
|
|
364
|
+
break;
|
|
365
|
+
case 'error':
|
|
366
|
+
hasError = true;
|
|
367
|
+
reject(new Error(event.error));
|
|
368
|
+
break;
|
|
369
|
+
}
|
|
370
|
+
}).catch(reject);
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Clear conversation history
|
|
375
|
+
*/
|
|
376
|
+
clearHistory() {
|
|
377
|
+
this.conversationHistory = [];
|
|
378
|
+
this.toolCallArgs.clear(); // Clear stored tool args
|
|
379
|
+
this.currentExecutionSteps = [];
|
|
380
|
+
this.currentStepNumber = 0;
|
|
381
|
+
this.currentLLMTokenUsage = null;
|
|
382
|
+
this.isFirstLLMCall = true;
|
|
383
|
+
// Reset stats
|
|
384
|
+
this.stats = {
|
|
385
|
+
inputTokens: 0,
|
|
386
|
+
outputTokens: 0,
|
|
387
|
+
cachedTokens: 0,
|
|
388
|
+
totalTokens: 0,
|
|
389
|
+
estimatedTotalCost: 0,
|
|
390
|
+
executionTime: 0,
|
|
391
|
+
toolCalls: 0,
|
|
392
|
+
successfulTools: 0,
|
|
393
|
+
failedTools: 0,
|
|
394
|
+
llmCalls: 0,
|
|
395
|
+
executionSteps: []
|
|
396
|
+
};
|
|
397
|
+
if (this.config.debug) {
|
|
398
|
+
console.log('[DEBUG] Conversation history cleared');
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Get current conversation history
|
|
403
|
+
*/
|
|
404
|
+
getHistory() {
|
|
405
|
+
return [...this.conversationHistory];
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Get agent runtime statistics
|
|
409
|
+
*/
|
|
410
|
+
getStats() {
|
|
411
|
+
return { ...this.stats };
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Get available tools
|
|
415
|
+
*/
|
|
416
|
+
getTools() {
|
|
417
|
+
return [...this.tools];
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Get agent configuration
|
|
421
|
+
*/
|
|
422
|
+
getConfig() {
|
|
423
|
+
// Return sanitized config (without sensitive data)
|
|
424
|
+
return {
|
|
425
|
+
...this.config,
|
|
426
|
+
authToken: `${this.config.authToken.substring(0, 8)}***`
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Health check for the agent
|
|
431
|
+
*/
|
|
432
|
+
async healthCheck() {
|
|
433
|
+
try {
|
|
434
|
+
// Simple test message
|
|
435
|
+
await this.executeMessage('Hello, can you confirm you are working?');
|
|
436
|
+
return {
|
|
437
|
+
status: 'healthy',
|
|
438
|
+
provider: this.config.provider,
|
|
439
|
+
model: this.config.model,
|
|
440
|
+
toolCount: this.tools.length
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
catch (error) {
|
|
444
|
+
return {
|
|
445
|
+
status: 'unhealthy',
|
|
446
|
+
provider: this.config.provider,
|
|
447
|
+
model: this.config.model,
|
|
448
|
+
toolCount: this.tools.length,
|
|
449
|
+
error: error instanceof Error ? error.message : String(error)
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Start a new LLM call step
|
|
455
|
+
*/
|
|
456
|
+
startLLMStep() {
|
|
457
|
+
// Determine the context based on whether this is the first call and if we just had a tool execution
|
|
458
|
+
let llmContext;
|
|
459
|
+
if (this.isFirstLLMCall) {
|
|
460
|
+
llmContext = 'initial_input';
|
|
461
|
+
this.isFirstLLMCall = false;
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
// Check if the previous step was a tool execution
|
|
465
|
+
const prevStep = this.currentExecutionSteps[this.currentExecutionSteps.length - 1];
|
|
466
|
+
llmContext = (prevStep?.type === 'tool_execution') ? 'processing_tool_result' : 'final_response';
|
|
467
|
+
}
|
|
468
|
+
const step = {
|
|
469
|
+
stepNumber: ++this.currentStepNumber,
|
|
470
|
+
type: 'llm_call',
|
|
471
|
+
startTime: Date.now(),
|
|
472
|
+
llmContext
|
|
473
|
+
};
|
|
474
|
+
this.currentExecutionSteps.push(step);
|
|
475
|
+
this.stats.llmCalls++;
|
|
476
|
+
if (this.config.debug) {
|
|
477
|
+
console.log(`[DEBUG] Started LLM step ${step.stepNumber} (${llmContext})`);
|
|
478
|
+
}
|
|
479
|
+
return step;
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Start a new tool execution step
|
|
483
|
+
*/
|
|
484
|
+
startToolStep(toolName) {
|
|
485
|
+
const step = {
|
|
486
|
+
stepNumber: ++this.currentStepNumber,
|
|
487
|
+
type: 'tool_execution',
|
|
488
|
+
startTime: Date.now(),
|
|
489
|
+
toolName
|
|
490
|
+
};
|
|
491
|
+
this.currentExecutionSteps.push(step);
|
|
492
|
+
if (this.config.debug) {
|
|
493
|
+
console.log(`[DEBUG] Started tool step ${step.stepNumber}: ${toolName}`);
|
|
494
|
+
}
|
|
495
|
+
return step;
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Complete an execution step
|
|
499
|
+
*/
|
|
500
|
+
completeStep(step) {
|
|
501
|
+
step.endTime = Date.now();
|
|
502
|
+
step.duration = step.endTime - step.startTime;
|
|
503
|
+
if (this.config.debug) {
|
|
504
|
+
const type = step.type === 'llm_call' ? 'LLM' : `Tool (${step.toolName})`;
|
|
505
|
+
console.log(`[DEBUG] Completed ${type} step ${step.stepNumber} in ${step.duration}ms`);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Update aggregate statistics with token usage
|
|
510
|
+
*/
|
|
511
|
+
updateStatsWithTokenUsage(tokenUsage) {
|
|
512
|
+
this.stats.inputTokens += tokenUsage.inputTokens;
|
|
513
|
+
this.stats.outputTokens += tokenUsage.outputTokens;
|
|
514
|
+
if (tokenUsage.cachedTokens) {
|
|
515
|
+
this.stats.cachedTokens += tokenUsage.cachedTokens;
|
|
516
|
+
}
|
|
517
|
+
this.stats.totalTokens = this.stats.inputTokens + this.stats.outputTokens;
|
|
518
|
+
if (tokenUsage.estimatedCost) {
|
|
519
|
+
this.stats.estimatedTotalCost += tokenUsage.estimatedCost;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/agents/codemie-code/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Management for CodeMie Native Agent
|
|
3
|
+
*
|
|
4
|
+
* Integrates with the existing CodeMie configuration system while providing
|
|
5
|
+
* agent-specific configuration loading and validation.
|
|
6
|
+
*/
|
|
7
|
+
import { type CodeMieConfigOptions } from '../../utils/config-loader.js';
|
|
8
|
+
import type { CodeMieConfig, ProviderConfig } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Load and validate configuration for the CodeMie native agent
|
|
11
|
+
*/
|
|
12
|
+
export declare function loadCodeMieConfig(workingDir?: string, cliOverrides?: Partial<CodeMieConfigOptions>): Promise<CodeMieConfig>;
|
|
13
|
+
/**
|
|
14
|
+
* Get provider-specific environment variables for the agent
|
|
15
|
+
*/
|
|
16
|
+
export declare function getProviderEnvVars(config: CodeMieConfig): Record<string, string>;
|
|
17
|
+
/**
|
|
18
|
+
* Create provider-specific configuration
|
|
19
|
+
*/
|
|
20
|
+
export declare function createProviderConfig(config: CodeMieConfig): ProviderConfig[keyof ProviderConfig];
|
|
21
|
+
/**
|
|
22
|
+
* Get configuration summary for display
|
|
23
|
+
*/
|
|
24
|
+
export declare function getConfigSummary(config: CodeMieConfig): string;
|
|
25
|
+
/**
|
|
26
|
+
* Check if configuration is valid without throwing
|
|
27
|
+
*/
|
|
28
|
+
export declare function isConfigValid(workingDir?: string): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Get configuration status for health checks
|
|
31
|
+
*/
|
|
32
|
+
export declare function getConfigStatus(workingDir?: string): Promise<{
|
|
33
|
+
valid: boolean;
|
|
34
|
+
hasGlobalConfig: boolean;
|
|
35
|
+
hasProjectConfig: boolean;
|
|
36
|
+
provider?: string;
|
|
37
|
+
model?: string;
|
|
38
|
+
error?: string;
|
|
39
|
+
}>;
|
|
40
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agents/codemie-code/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAgB,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGhE;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAC3C,OAAO,CAAC,aAAa,CAAC,CA6BxB;AAsJD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAShF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAAC,MAAM,cAAc,CAAC,CAwChG;AAiBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAU9D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOzE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA0BD"}
|