@codemieai/code 0.0.2 → 0.0.4
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 +357 -719
- package/bin/codemie-claude.js +145 -0
- package/bin/codemie-code.js +128 -15
- package/bin/codemie-codex.js +137 -0
- package/bin/codemie.js +1 -1
- package/dist/agents/adapters/claude-code.d.ts +7 -2
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +94 -58
- 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 +7 -2
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +104 -39
- 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 +689 -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 +278 -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 +92 -0
- package/dist/agents/codemie-code/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/index.js +327 -0
- package/dist/agents/codemie-code/index.js.map +1 -0
- 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 +40 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
- package/dist/agents/codemie-code/prompts.js +160 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -0
- 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.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/index.d.ts +45 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/index.js +407 -0
- package/dist/agents/codemie-code/tools/index.js.map +1 -0
- 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 +418 -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/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 +179 -0
- package/dist/agents/codemie-code/ui.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui.js +1408 -0
- package/dist/agents/codemie-code/ui.js.map +1 -0
- 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 +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +11 -15
- 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 +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +350 -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 +308 -71
- 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.d.ts.map +1 -1
- package/dist/cli/commands/install.js +28 -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 +297 -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 +523 -0
- package/dist/cli/commands/setup.js.map +1 -0
- 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/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/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 +85 -35
- 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/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/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/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/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 +118 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +397 -0
- package/dist/utils/config-loader.js.map +1 -0
- 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/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 +226 -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 +172 -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 +150 -0
- package/dist/utils/model-fetcher.js.map +1 -0
- 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/utils/tips.d.ts.map +1 -1
- package/dist/utils/tips.js +13 -52
- package/dist/utils/tips.js.map +1 -1
- 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 +32 -25
- 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 -855
- 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/eslint.config.mjs +0 -43
- 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,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Usage and Cost Calculation Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for extracting token usage from LLM responses
|
|
5
|
+
* and calculating costs for different providers and models.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Provider pricing information (per 1M tokens)
|
|
9
|
+
* Updated as of November 2024 - check provider websites for latest pricing
|
|
10
|
+
*/
|
|
11
|
+
export const MODEL_PRICING = {
|
|
12
|
+
// OpenAI GPT Models
|
|
13
|
+
'gpt-4o': { input: 2.50, output: 10.00 },
|
|
14
|
+
'gpt-4o-mini': { input: 0.15, output: 0.60 },
|
|
15
|
+
'gpt-4-turbo': { input: 10.00, output: 30.00 },
|
|
16
|
+
'gpt-4': { input: 30.00, output: 60.00 },
|
|
17
|
+
'gpt-3.5-turbo': { input: 0.50, output: 1.50 },
|
|
18
|
+
// Claude Models (via LiteLLM/Bedrock)
|
|
19
|
+
'claude-3-5-sonnet-20241022': { input: 3.00, output: 15.00 },
|
|
20
|
+
'claude-3-5-sonnet-20240620': { input: 3.00, output: 15.00 },
|
|
21
|
+
'claude-3-5-haiku-20241022': { input: 0.25, output: 1.25 },
|
|
22
|
+
'claude-3-opus-20240229': { input: 15.00, output: 75.00 },
|
|
23
|
+
'claude-3-sonnet-20240229': { input: 3.00, output: 15.00 },
|
|
24
|
+
'claude-3-haiku-20240307': { input: 0.25, output: 1.25 },
|
|
25
|
+
// Generic fallbacks for unknown models
|
|
26
|
+
'gpt-4-*': { input: 10.00, output: 30.00 },
|
|
27
|
+
'gpt-3.5-*': { input: 0.50, output: 1.50 },
|
|
28
|
+
'claude-3-*': { input: 3.00, output: 15.00 },
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Extract token usage from LangChain AIMessage or response
|
|
32
|
+
* Based on LangChain v1.0+ usage_metadata format
|
|
33
|
+
*/
|
|
34
|
+
export function extractTokenUsage(response, model, _provider) {
|
|
35
|
+
try {
|
|
36
|
+
let inputTokens = 0;
|
|
37
|
+
let outputTokens = 0;
|
|
38
|
+
let cachedTokens = 0;
|
|
39
|
+
let usage = null;
|
|
40
|
+
// Extract from AIMessage usage_metadata (LangChain v1.0+ format)
|
|
41
|
+
if (response?.usage_metadata) {
|
|
42
|
+
usage = response.usage_metadata;
|
|
43
|
+
inputTokens = usage.input_tokens || 0;
|
|
44
|
+
outputTokens = usage.output_tokens || 0;
|
|
45
|
+
// Handle cache information from input_token_details
|
|
46
|
+
if (usage.input_token_details?.cache_read) {
|
|
47
|
+
cachedTokens = usage.input_token_details.cache_read;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Extract from response_metadata.usage (for direct LLM calls)
|
|
51
|
+
else if (response?.response_metadata?.usage) {
|
|
52
|
+
usage = response.response_metadata.usage;
|
|
53
|
+
inputTokens = usage.input_tokens || usage.prompt_tokens || 0;
|
|
54
|
+
outputTokens = usage.output_tokens || usage.completion_tokens || 0;
|
|
55
|
+
// Handle different cache formats
|
|
56
|
+
if (usage.input_token_details?.cache_read) {
|
|
57
|
+
cachedTokens = usage.input_token_details.cache_read;
|
|
58
|
+
}
|
|
59
|
+
else if (usage.cache_read_input_tokens) {
|
|
60
|
+
cachedTokens = usage.cache_read_input_tokens;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Legacy format support (older LangChain versions)
|
|
64
|
+
else if (response?.usage) {
|
|
65
|
+
usage = response.usage;
|
|
66
|
+
inputTokens = usage.input_tokens || usage.prompt_tokens || 0;
|
|
67
|
+
outputTokens = usage.output_tokens || usage.completion_tokens || 0;
|
|
68
|
+
cachedTokens = usage.cache_read_input_tokens || 0;
|
|
69
|
+
}
|
|
70
|
+
// Try to extract from response generations (older LangChain format)
|
|
71
|
+
else if (response?.generations?.[0]?.generationInfo?.usage) {
|
|
72
|
+
usage = response.generations[0].generationInfo.usage;
|
|
73
|
+
inputTokens = usage.prompt_tokens || usage.input_tokens || 0;
|
|
74
|
+
outputTokens = usage.completion_tokens || usage.output_tokens || 0;
|
|
75
|
+
cachedTokens = usage.cache_read_input_tokens || 0;
|
|
76
|
+
}
|
|
77
|
+
// If no tokens found, return null
|
|
78
|
+
if (inputTokens === 0 && outputTokens === 0) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
const totalTokens = inputTokens + outputTokens;
|
|
82
|
+
const estimatedCost = calculateCost(model, inputTokens, outputTokens);
|
|
83
|
+
return {
|
|
84
|
+
inputTokens,
|
|
85
|
+
outputTokens,
|
|
86
|
+
cachedTokens: cachedTokens > 0 ? cachedTokens : undefined,
|
|
87
|
+
totalTokens,
|
|
88
|
+
estimatedCost: estimatedCost > 0 ? estimatedCost : undefined
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.warn('[TokenUtils] Failed to extract token usage:', error);
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Calculate estimated cost for a model and token usage
|
|
98
|
+
*/
|
|
99
|
+
export function calculateCost(model, inputTokens, outputTokens) {
|
|
100
|
+
const pricing = getModelPricing(model);
|
|
101
|
+
if (!pricing)
|
|
102
|
+
return 0;
|
|
103
|
+
// Convert from per-million to per-token rates
|
|
104
|
+
const inputCost = (inputTokens / 1_000_000) * pricing.input;
|
|
105
|
+
const outputCost = (outputTokens / 1_000_000) * pricing.output;
|
|
106
|
+
return inputCost + outputCost;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get pricing information for a model
|
|
110
|
+
*/
|
|
111
|
+
export function getModelPricing(model) {
|
|
112
|
+
// Direct model match
|
|
113
|
+
if (MODEL_PRICING[model]) {
|
|
114
|
+
return MODEL_PRICING[model];
|
|
115
|
+
}
|
|
116
|
+
// Pattern matching for model families
|
|
117
|
+
if (model.startsWith('gpt-4')) {
|
|
118
|
+
return MODEL_PRICING['gpt-4-*'];
|
|
119
|
+
}
|
|
120
|
+
if (model.startsWith('gpt-3.5')) {
|
|
121
|
+
return MODEL_PRICING['gpt-3.5-*'];
|
|
122
|
+
}
|
|
123
|
+
if (model.startsWith('claude-3')) {
|
|
124
|
+
return MODEL_PRICING['claude-3-*'];
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Format cost as a human-readable string
|
|
130
|
+
*/
|
|
131
|
+
export function formatCost(cost) {
|
|
132
|
+
if (cost === 0)
|
|
133
|
+
return '$0.00';
|
|
134
|
+
if (cost < 0.001)
|
|
135
|
+
return '<$0.001';
|
|
136
|
+
if (cost < 0.01)
|
|
137
|
+
return `$${cost.toFixed(3)}`;
|
|
138
|
+
return `$${cost.toFixed(2)}`;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Format token count as a human-readable string
|
|
142
|
+
*/
|
|
143
|
+
export function formatTokens(tokens) {
|
|
144
|
+
if (tokens < 1000)
|
|
145
|
+
return tokens.toString();
|
|
146
|
+
if (tokens < 1_000_000)
|
|
147
|
+
return `${(tokens / 1000).toFixed(1)}K`;
|
|
148
|
+
return `${(tokens / 1_000_000).toFixed(2)}M`;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Create a formatted summary of token usage
|
|
152
|
+
*/
|
|
153
|
+
export function formatTokenUsageSummary(usage) {
|
|
154
|
+
const parts = [];
|
|
155
|
+
parts.push(`${formatTokens(usage.inputTokens)} in, ${formatTokens(usage.outputTokens)} out`);
|
|
156
|
+
if (usage.cachedTokens && usage.cachedTokens > 0) {
|
|
157
|
+
parts.push(`${formatTokens(usage.cachedTokens)} cached`);
|
|
158
|
+
}
|
|
159
|
+
if (usage.estimatedCost && usage.estimatedCost > 0) {
|
|
160
|
+
parts.push(`(${formatCost(usage.estimatedCost)})`);
|
|
161
|
+
}
|
|
162
|
+
return parts.join(', ');
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Extract token usage from LangGraph stream chunk
|
|
166
|
+
* Based on LangChain documentation about "messages" stream mode
|
|
167
|
+
*/
|
|
168
|
+
export function extractTokenUsageFromStreamChunk(chunk, model, provider) {
|
|
169
|
+
try {
|
|
170
|
+
// For LangGraph "updates" stream mode, check agent messages
|
|
171
|
+
if (chunk.agent?.messages) {
|
|
172
|
+
for (const message of chunk.agent.messages) {
|
|
173
|
+
// Check for usage_metadata in AIMessage (LangChain v1.0+ format)
|
|
174
|
+
if (message.usage_metadata) {
|
|
175
|
+
return extractTokenUsage(message, model, provider);
|
|
176
|
+
}
|
|
177
|
+
// Check for response_metadata.usage
|
|
178
|
+
if (message.response_metadata?.usage) {
|
|
179
|
+
return extractTokenUsage(message, model, provider);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// For "messages" stream mode, the chunk might be the message directly
|
|
184
|
+
if (chunk.usage_metadata) {
|
|
185
|
+
return extractTokenUsage(chunk, model, provider);
|
|
186
|
+
}
|
|
187
|
+
// Check chunk metadata for usage information
|
|
188
|
+
if (chunk.metadata?.usage) {
|
|
189
|
+
return extractTokenUsage({ usage: chunk.metadata.usage }, model, provider);
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
console.warn('[TokenUtils] Failed to extract tokens from stream chunk:', error);
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Extract token usage from final state after LangGraph completion
|
|
200
|
+
* This captures any usage information that wasn't caught during streaming
|
|
201
|
+
*/
|
|
202
|
+
export function extractTokenUsageFromFinalState(finalState, model, provider) {
|
|
203
|
+
try {
|
|
204
|
+
if (finalState?.messages) {
|
|
205
|
+
// Look through messages in reverse order to find the most recent one with usage
|
|
206
|
+
for (let i = finalState.messages.length - 1; i >= 0; i--) {
|
|
207
|
+
const message = finalState.messages[i];
|
|
208
|
+
if (message.usage_metadata || message.response_metadata?.usage) {
|
|
209
|
+
return extractTokenUsage(message, model, provider);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.warn('[TokenUtils] Failed to extract tokens from final state:', error);
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=tokenUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenUtils.js","sourceRoot":"","sources":["../../../src/agents/codemie-code/tokenUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Metadata Extraction Utilities
|
|
3
|
+
*
|
|
4
|
+
* Extracts meaningful information from tool results for enhanced UI display
|
|
5
|
+
*/
|
|
6
|
+
import { ToolMetadata } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Extract metadata from tool results based on tool name and result
|
|
9
|
+
*/
|
|
10
|
+
export declare function extractToolMetadata(toolName: string, result: string, toolArgs?: Record<string, any>): ToolMetadata | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Format tool metadata for display
|
|
13
|
+
*/
|
|
14
|
+
export declare function formatToolMetadata(toolName: string, metadata: ToolMetadata): string;
|
|
15
|
+
//# sourceMappingURL=toolMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolMetadata.d.ts","sourceRoot":"","sources":["../../../src/agents/codemie-code/toolMetadata.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1C;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,YAAY,GAAG,SAAS,CAyB1B;AAwOD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAyCnF"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Metadata Extraction Utilities
|
|
3
|
+
*
|
|
4
|
+
* Extracts meaningful information from tool results for enhanced UI display
|
|
5
|
+
*/
|
|
6
|
+
import { formatTokens, formatCost } from './tokenUtils.js';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* Extract metadata from tool results based on tool name and result
|
|
10
|
+
*/
|
|
11
|
+
export function extractToolMetadata(toolName, result, toolArgs) {
|
|
12
|
+
try {
|
|
13
|
+
switch (toolName) {
|
|
14
|
+
case 'read_file':
|
|
15
|
+
return extractReadFileMetadata(result, toolArgs);
|
|
16
|
+
case 'write_file':
|
|
17
|
+
return extractWriteFileMetadata(result, toolArgs);
|
|
18
|
+
case 'list_directory':
|
|
19
|
+
return extractListDirectoryMetadata(result, toolArgs);
|
|
20
|
+
case 'execute_command':
|
|
21
|
+
return extractExecuteCommandMetadata(result, toolArgs);
|
|
22
|
+
default:
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// If metadata extraction fails, return basic info
|
|
28
|
+
return {
|
|
29
|
+
success: !result.toLowerCase().includes('error'),
|
|
30
|
+
errorMessage: result.toLowerCase().includes('error') ? result : undefined
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Extract metadata from read_file tool results
|
|
36
|
+
*/
|
|
37
|
+
function extractReadFileMetadata(result, toolArgs) {
|
|
38
|
+
const isError = result.toLowerCase().startsWith('error');
|
|
39
|
+
if (isError) {
|
|
40
|
+
return {
|
|
41
|
+
success: false,
|
|
42
|
+
errorMessage: result,
|
|
43
|
+
filePath: toolArgs?.filePath
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Parse successful read result: "File: {filePath}\n\n{content}"
|
|
47
|
+
const lines = result.split('\n');
|
|
48
|
+
let filePath = toolArgs?.filePath;
|
|
49
|
+
// Try to extract file path from result if not in args
|
|
50
|
+
if (!filePath && lines[0]?.startsWith('File: ')) {
|
|
51
|
+
filePath = lines[0].substring(6); // Remove "File: " prefix
|
|
52
|
+
}
|
|
53
|
+
// Extract content (skip "File: path" and empty line)
|
|
54
|
+
const contentStart = result.indexOf('\n\n');
|
|
55
|
+
const content = contentStart >= 0 ? result.substring(contentStart + 2) : '';
|
|
56
|
+
// Create content preview (first 3 lines or 100 characters)
|
|
57
|
+
const contentLines = content.split('\n');
|
|
58
|
+
const lineCount = contentLines.length;
|
|
59
|
+
let contentPreview = '';
|
|
60
|
+
if (lineCount > 3) {
|
|
61
|
+
contentPreview = contentLines.slice(0, 3).join('\n') + `\n... (${lineCount} lines total)`;
|
|
62
|
+
}
|
|
63
|
+
else if (content.length > 100) {
|
|
64
|
+
contentPreview = content.substring(0, 100) + '...';
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
contentPreview = content;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
success: true,
|
|
71
|
+
filePath,
|
|
72
|
+
fileSize: Buffer.byteLength(content, 'utf8'),
|
|
73
|
+
contentPreview
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extract metadata from write_file tool results
|
|
78
|
+
*/
|
|
79
|
+
function extractWriteFileMetadata(result, toolArgs) {
|
|
80
|
+
const isError = result.toLowerCase().startsWith('error');
|
|
81
|
+
if (isError) {
|
|
82
|
+
return {
|
|
83
|
+
success: false,
|
|
84
|
+
errorMessage: result,
|
|
85
|
+
filePath: toolArgs?.filePath
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Parse successful result: "Successfully wrote {length} characters to {filePath}"
|
|
89
|
+
const bytesMatch = result.match(/wrote (\d+) characters/);
|
|
90
|
+
const bytesWritten = bytesMatch ? parseInt(bytesMatch[1], 10) : undefined;
|
|
91
|
+
// Try to extract file path from result or use from args
|
|
92
|
+
let filePath = toolArgs?.filePath;
|
|
93
|
+
if (!filePath) {
|
|
94
|
+
const pathMatch = result.match(/to (.+)$/);
|
|
95
|
+
if (pathMatch) {
|
|
96
|
+
filePath = pathMatch[1].trim();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
success: true,
|
|
101
|
+
filePath,
|
|
102
|
+
bytesWritten,
|
|
103
|
+
contentPreview: toolArgs?.content ?
|
|
104
|
+
(toolArgs.content.length > 50 ?
|
|
105
|
+
toolArgs.content.substring(0, 50) + '...' :
|
|
106
|
+
toolArgs.content) : undefined
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Extract metadata from list_directory tool results
|
|
111
|
+
*/
|
|
112
|
+
function extractListDirectoryMetadata(result, toolArgs) {
|
|
113
|
+
const isError = result.toLowerCase().startsWith('error');
|
|
114
|
+
if (isError) {
|
|
115
|
+
return {
|
|
116
|
+
success: false,
|
|
117
|
+
errorMessage: result,
|
|
118
|
+
directoryPath: toolArgs?.directoryPath || '.'
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// Count files and directories from the result and extract items for preview
|
|
122
|
+
const lines = result.split('\n');
|
|
123
|
+
let fileCount = 0;
|
|
124
|
+
let directoryCount = 0;
|
|
125
|
+
let inFilesSection = false;
|
|
126
|
+
let inDirectoriesSection = false;
|
|
127
|
+
let directoryPath = toolArgs?.directoryPath;
|
|
128
|
+
const items = [];
|
|
129
|
+
for (const line of lines) {
|
|
130
|
+
const trimmedLine = line.trim();
|
|
131
|
+
// Extract directory path from the result header
|
|
132
|
+
if (trimmedLine.startsWith('Directory:') && !directoryPath) {
|
|
133
|
+
directoryPath = trimmedLine.substring(10).trim();
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (trimmedLine === 'Files:') {
|
|
137
|
+
inFilesSection = true;
|
|
138
|
+
inDirectoriesSection = false;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (trimmedLine === 'Directories:') {
|
|
142
|
+
inDirectoriesSection = true;
|
|
143
|
+
inFilesSection = false;
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (trimmedLine === '' || trimmedLine.startsWith('Directory:')) {
|
|
147
|
+
inFilesSection = false;
|
|
148
|
+
inDirectoriesSection = false;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
// Count items and collect for preview in each section
|
|
152
|
+
if (inFilesSection && line.startsWith(' ') && trimmedLine.length > 0) {
|
|
153
|
+
fileCount++;
|
|
154
|
+
if (items.length < 3) {
|
|
155
|
+
items.push(trimmedLine);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (inDirectoriesSection && line.startsWith(' ') && trimmedLine.length > 0) {
|
|
159
|
+
directoryCount++;
|
|
160
|
+
if (items.length < 3) {
|
|
161
|
+
items.push(trimmedLine);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Handle empty directory case
|
|
166
|
+
if (result.includes('Directory is empty')) {
|
|
167
|
+
fileCount = 0;
|
|
168
|
+
directoryCount = 0;
|
|
169
|
+
}
|
|
170
|
+
// Create item preview
|
|
171
|
+
let itemPreview = '';
|
|
172
|
+
if (items.length > 0) {
|
|
173
|
+
itemPreview = items.join(', ');
|
|
174
|
+
if (fileCount + directoryCount > items.length) {
|
|
175
|
+
const remaining = (fileCount + directoryCount) - items.length;
|
|
176
|
+
itemPreview += ` +${remaining} more`;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
itemPreview = 'Empty directory';
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
success: true,
|
|
184
|
+
directoryPath: directoryPath || '.',
|
|
185
|
+
fileCount,
|
|
186
|
+
directoryCount,
|
|
187
|
+
contentPreview: itemPreview
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Extract metadata from execute_command tool results
|
|
192
|
+
*/
|
|
193
|
+
function extractExecuteCommandMetadata(result, toolArgs) {
|
|
194
|
+
const isError = result.toLowerCase().includes('error executing command') ||
|
|
195
|
+
result.toLowerCase().includes('command rejected for security');
|
|
196
|
+
if (isError) {
|
|
197
|
+
return {
|
|
198
|
+
success: false,
|
|
199
|
+
errorMessage: result,
|
|
200
|
+
command: toolArgs?.command
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
const command = toolArgs?.command;
|
|
204
|
+
// Extract output preview (first few lines)
|
|
205
|
+
let outputPreview = '';
|
|
206
|
+
if (result.includes('STDOUT:')) {
|
|
207
|
+
const stdoutStart = result.indexOf('STDOUT:\n') + 8;
|
|
208
|
+
const stdoutEnd = result.indexOf('\nSTDERR:');
|
|
209
|
+
const stdout = result.substring(stdoutStart, stdoutEnd > 0 ? stdoutEnd : result.length);
|
|
210
|
+
const lines = stdout.trim().split('\n').filter(line => line.trim() !== '');
|
|
211
|
+
if (lines.length > 3) {
|
|
212
|
+
outputPreview = lines.slice(0, 3).join('\n') + `\n... (${lines.length} lines total)`;
|
|
213
|
+
}
|
|
214
|
+
else if (lines.length > 0) {
|
|
215
|
+
outputPreview = stdout.trim();
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
outputPreview = 'No output';
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (result === 'Command executed successfully (no output)') {
|
|
222
|
+
outputPreview = 'No output';
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
// Fallback for other formats - take first few non-empty lines
|
|
226
|
+
const lines = result.split('\n').filter(line => line.trim() !== '');
|
|
227
|
+
if (lines.length > 3) {
|
|
228
|
+
outputPreview = lines.slice(0, 3).join('\n') + '...';
|
|
229
|
+
}
|
|
230
|
+
else if (lines.length > 0) {
|
|
231
|
+
outputPreview = result.trim();
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
outputPreview = 'Command executed successfully';
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
success: true,
|
|
239
|
+
command,
|
|
240
|
+
outputPreview: outputPreview || 'Command executed successfully'
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Format tool metadata for display
|
|
245
|
+
*/
|
|
246
|
+
export function formatToolMetadata(toolName, metadata) {
|
|
247
|
+
if (!metadata.success) {
|
|
248
|
+
const baseMsg = `✗ ${toolName} failed${metadata.filePath ? ` (${path.basename(metadata.filePath)})` : ''}`;
|
|
249
|
+
return addTokenInfo(baseMsg, metadata);
|
|
250
|
+
}
|
|
251
|
+
let baseMessage = '';
|
|
252
|
+
switch (toolName) {
|
|
253
|
+
case 'read_file': {
|
|
254
|
+
const fileName = metadata.filePath ? path.basename(metadata.filePath) : 'file';
|
|
255
|
+
const sizeInfo = metadata.fileSize ? ` (${formatBytes(metadata.fileSize)})` : '';
|
|
256
|
+
baseMessage = `✓ Read ${fileName}${sizeInfo}`;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
case 'write_file': {
|
|
260
|
+
const writeFileName = metadata.filePath ? path.basename(metadata.filePath) : 'file';
|
|
261
|
+
const bytesInfo = metadata.bytesWritten ? ` (${formatBytes(metadata.bytesWritten)})` : '';
|
|
262
|
+
baseMessage = `✓ Wrote ${writeFileName}${bytesInfo}`;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
case 'list_directory': {
|
|
266
|
+
const dirName = metadata.directoryPath === '.' ? 'current directory' : path.basename(metadata.directoryPath || '');
|
|
267
|
+
const counts = `${metadata.fileCount || 0} files, ${metadata.directoryCount || 0} dirs`;
|
|
268
|
+
baseMessage = `✓ Listed ${dirName} (${counts})`;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
case 'execute_command': {
|
|
272
|
+
const cmd = metadata.command ? metadata.command.split(' ')[0] : 'command';
|
|
273
|
+
baseMessage = `✓ Executed ${cmd}`;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
default:
|
|
277
|
+
baseMessage = `✓ ${toolName} completed`;
|
|
278
|
+
}
|
|
279
|
+
return addTokenInfo(baseMessage, metadata);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Add token usage information to the tool message
|
|
283
|
+
*/
|
|
284
|
+
function addTokenInfo(baseMessage, metadata) {
|
|
285
|
+
if (!metadata.tokenUsage) {
|
|
286
|
+
return baseMessage;
|
|
287
|
+
}
|
|
288
|
+
const tokenInfo = [];
|
|
289
|
+
// Add token counts with clear input/output labels
|
|
290
|
+
tokenInfo.push(`${formatTokens(metadata.tokenUsage.inputTokens)} in, ${formatTokens(metadata.tokenUsage.outputTokens)} out`);
|
|
291
|
+
// Add cached tokens if present
|
|
292
|
+
if (metadata.tokenUsage.cachedTokens && metadata.tokenUsage.cachedTokens > 0) {
|
|
293
|
+
tokenInfo.push(`${formatTokens(metadata.tokenUsage.cachedTokens)} cached`);
|
|
294
|
+
}
|
|
295
|
+
// Add cost if present
|
|
296
|
+
if (metadata.tokenUsage.estimatedCost && metadata.tokenUsage.estimatedCost > 0) {
|
|
297
|
+
tokenInfo.push(formatCost(metadata.tokenUsage.estimatedCost));
|
|
298
|
+
}
|
|
299
|
+
if (tokenInfo.length > 0) {
|
|
300
|
+
return `${baseMessage} [${tokenInfo.join(', ')}]`;
|
|
301
|
+
}
|
|
302
|
+
return baseMessage;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Format bytes in human readable format
|
|
306
|
+
*/
|
|
307
|
+
function formatBytes(bytes) {
|
|
308
|
+
if (bytes === 0)
|
|
309
|
+
return '0 B';
|
|
310
|
+
const k = 1024;
|
|
311
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
312
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
313
|
+
return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i];
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=toolMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolMetadata.js","sourceRoot":"","sources":["../../../src/agents/codemie-code/toolMetadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Tools Registry for CodeMie Native Agent
|
|
3
|
+
*
|
|
4
|
+
* Creates and manages system tools available to the LangGraph ReAct agent
|
|
5
|
+
*/
|
|
6
|
+
import { StructuredTool } from '@langchain/core/tools';
|
|
7
|
+
import type { CodeMieConfig } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Tool event callback type for progress reporting
|
|
10
|
+
*/
|
|
11
|
+
export type ToolEventCallback = (event: {
|
|
12
|
+
type: 'tool_call_progress';
|
|
13
|
+
toolName: string;
|
|
14
|
+
progress: {
|
|
15
|
+
percentage: number;
|
|
16
|
+
operation: string;
|
|
17
|
+
details?: string;
|
|
18
|
+
estimatedTimeRemaining?: number;
|
|
19
|
+
};
|
|
20
|
+
}) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Set the global tool event callback for the current execution
|
|
23
|
+
*/
|
|
24
|
+
export declare function setGlobalToolEventCallback(callback: ToolEventCallback | null): void;
|
|
25
|
+
/**
|
|
26
|
+
* Emit a tool progress event using the global callback
|
|
27
|
+
*/
|
|
28
|
+
export declare function emitToolProgress(toolName: string, progress: {
|
|
29
|
+
percentage: number;
|
|
30
|
+
operation: string;
|
|
31
|
+
details?: string;
|
|
32
|
+
estimatedTimeRemaining?: number;
|
|
33
|
+
}): void;
|
|
34
|
+
/**
|
|
35
|
+
* Create system tools available to the CodeMie agent
|
|
36
|
+
*/
|
|
37
|
+
export declare function createSystemTools(config: CodeMieConfig): Promise<StructuredTool[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Get available tool names and descriptions
|
|
40
|
+
*/
|
|
41
|
+
export declare function getToolSummary(): Array<{
|
|
42
|
+
name: string;
|
|
43
|
+
description: string;
|
|
44
|
+
}>;
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAwXjD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE;IACtC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,KAAK,IAAI,CAAC;AAOX;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAEnF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,GAAG,IAAI,CAQP;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA4CxF;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAY7E"}
|