@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.
Files changed (360) hide show
  1. package/README.md +357 -719
  2. package/bin/codemie-claude.js +145 -0
  3. package/bin/codemie-code.js +128 -15
  4. package/bin/codemie-codex.js +137 -0
  5. package/bin/codemie.js +1 -1
  6. package/dist/agents/adapters/claude-code.d.ts +7 -2
  7. package/dist/agents/adapters/claude-code.d.ts.map +1 -1
  8. package/dist/agents/adapters/claude-code.js +94 -58
  9. package/dist/agents/adapters/claude-code.js.map +1 -1
  10. package/dist/agents/adapters/codemie-code.d.ts +11 -2
  11. package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
  12. package/dist/agents/adapters/codemie-code.js +93 -25
  13. package/dist/agents/adapters/codemie-code.js.map +1 -1
  14. package/dist/agents/adapters/codex.d.ts +7 -2
  15. package/dist/agents/adapters/codex.d.ts.map +1 -1
  16. package/dist/agents/adapters/codex.js +104 -39
  17. package/dist/agents/adapters/codex.js.map +1 -1
  18. package/dist/agents/codemie-code/agent.d.ts +89 -0
  19. package/dist/agents/codemie-code/agent.d.ts.map +1 -0
  20. package/dist/agents/codemie-code/agent.js +689 -0
  21. package/dist/agents/codemie-code/agent.js.map +1 -0
  22. package/dist/agents/codemie-code/config.d.ts +40 -0
  23. package/dist/agents/codemie-code/config.d.ts.map +1 -0
  24. package/dist/agents/codemie-code/config.js +278 -0
  25. package/dist/agents/codemie-code/config.js.map +1 -0
  26. package/dist/agents/codemie-code/filters.d.ts +91 -0
  27. package/dist/agents/codemie-code/filters.d.ts.map +1 -0
  28. package/dist/agents/codemie-code/filters.js +328 -0
  29. package/dist/agents/codemie-code/filters.js.map +1 -0
  30. package/dist/agents/codemie-code/index.d.ts +92 -0
  31. package/dist/agents/codemie-code/index.d.ts.map +1 -0
  32. package/dist/agents/codemie-code/index.js +327 -0
  33. package/dist/agents/codemie-code/index.js.map +1 -0
  34. package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
  35. package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
  36. package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
  37. package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
  38. package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
  39. package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
  40. package/dist/agents/codemie-code/modes/planMode.js +537 -0
  41. package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
  42. package/dist/agents/codemie-code/prompts.d.ts +40 -0
  43. package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
  44. package/dist/agents/codemie-code/prompts.js +160 -0
  45. package/dist/agents/codemie-code/prompts.js.map +1 -0
  46. package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
  47. package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
  48. package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
  49. package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
  50. package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
  51. package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
  52. package/dist/agents/codemie-code/tokenUtils.js +220 -0
  53. package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
  54. package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
  55. package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
  56. package/dist/agents/codemie-code/toolMetadata.js +315 -0
  57. package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
  58. package/dist/agents/codemie-code/tools/index.d.ts +45 -0
  59. package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
  60. package/dist/agents/codemie-code/tools/index.js +407 -0
  61. package/dist/agents/codemie-code/tools/index.js.map +1 -0
  62. package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
  63. package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
  64. package/dist/agents/codemie-code/tools/planning.js +224 -0
  65. package/dist/agents/codemie-code/tools/planning.js.map +1 -0
  66. package/dist/agents/codemie-code/types.d.ts +418 -0
  67. package/dist/agents/codemie-code/types.d.ts.map +1 -0
  68. package/dist/agents/codemie-code/types.js +35 -0
  69. package/dist/agents/codemie-code/types.js.map +1 -0
  70. package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
  71. package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
  72. package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
  73. package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
  74. package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
  75. package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
  76. package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
  77. package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
  78. package/dist/agents/codemie-code/ui.d.ts +179 -0
  79. package/dist/agents/codemie-code/ui.d.ts.map +1 -0
  80. package/dist/agents/codemie-code/ui.js +1408 -0
  81. package/dist/agents/codemie-code/ui.js.map +1 -0
  82. package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
  83. package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
  84. package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
  85. package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
  86. package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
  87. package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
  88. package/dist/agents/codemie-code/utils/todoParser.js +305 -0
  89. package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
  90. package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
  91. package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
  92. package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
  93. package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
  94. package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
  95. package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
  96. package/dist/agents/codemie-code/validators/planValidator.js +281 -0
  97. package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
  98. package/dist/agents/registry.d.ts +1 -1
  99. package/dist/agents/registry.d.ts.map +1 -1
  100. package/dist/agents/registry.js +11 -15
  101. package/dist/agents/registry.js.map +1 -1
  102. package/dist/cli/commands/auth.d.ts +3 -0
  103. package/dist/cli/commands/auth.d.ts.map +1 -0
  104. package/dist/cli/commands/auth.js +170 -0
  105. package/dist/cli/commands/auth.js.map +1 -0
  106. package/dist/cli/commands/config.d.ts +3 -0
  107. package/dist/cli/commands/config.d.ts.map +1 -0
  108. package/dist/cli/commands/config.js +350 -0
  109. package/dist/cli/commands/config.js.map +1 -0
  110. package/dist/cli/commands/doctor.d.ts.map +1 -1
  111. package/dist/cli/commands/doctor.js +308 -71
  112. package/dist/cli/commands/doctor.js.map +1 -1
  113. package/dist/cli/commands/env.d.ts +3 -0
  114. package/dist/cli/commands/env.d.ts.map +1 -0
  115. package/dist/cli/commands/env.js +19 -0
  116. package/dist/cli/commands/env.js.map +1 -0
  117. package/dist/cli/commands/install.d.ts.map +1 -1
  118. package/dist/cli/commands/install.js +28 -33
  119. package/dist/cli/commands/install.js.map +1 -1
  120. package/dist/cli/commands/list.js +18 -24
  121. package/dist/cli/commands/list.js.map +1 -1
  122. package/dist/cli/commands/run.d.ts.map +1 -1
  123. package/dist/cli/commands/run.js +297 -31
  124. package/dist/cli/commands/run.js.map +1 -1
  125. package/dist/cli/commands/setup.d.ts +3 -0
  126. package/dist/cli/commands/setup.d.ts.map +1 -0
  127. package/dist/cli/commands/setup.js +523 -0
  128. package/dist/cli/commands/setup.js.map +1 -0
  129. package/dist/cli/commands/tools.d.ts +6 -0
  130. package/dist/cli/commands/tools.d.ts.map +1 -0
  131. package/dist/cli/commands/tools.js +244 -0
  132. package/dist/cli/commands/tools.js.map +1 -0
  133. package/dist/cli/commands/uninstall.js +24 -30
  134. package/dist/cli/commands/uninstall.js.map +1 -1
  135. package/dist/cli/commands/version.d.ts.map +1 -1
  136. package/dist/cli/commands/version.js +11 -16
  137. package/dist/cli/commands/version.js.map +1 -1
  138. package/dist/cli/commands/workflow.d.ts +6 -0
  139. package/dist/cli/commands/workflow.d.ts.map +1 -0
  140. package/dist/cli/commands/workflow.js +424 -0
  141. package/dist/cli/commands/workflow.js.map +1 -0
  142. package/dist/cli/index.js +85 -35
  143. package/dist/cli/index.js.map +1 -1
  144. package/dist/clients/adapters/github.d.ts +17 -0
  145. package/dist/clients/adapters/github.d.ts.map +1 -0
  146. package/dist/clients/adapters/github.js +150 -0
  147. package/dist/clients/adapters/github.js.map +1 -0
  148. package/dist/clients/adapters/gitlab.d.ts +17 -0
  149. package/dist/clients/adapters/gitlab.d.ts.map +1 -0
  150. package/dist/clients/adapters/gitlab.js +147 -0
  151. package/dist/clients/adapters/gitlab.js.map +1 -0
  152. package/dist/clients/registry.d.ts +20 -0
  153. package/dist/clients/registry.d.ts.map +1 -0
  154. package/dist/clients/registry.js +27 -0
  155. package/dist/clients/registry.js.map +1 -0
  156. package/dist/env/manager.js +9 -46
  157. package/dist/env/manager.js.map +1 -1
  158. package/dist/index.d.ts +6 -13
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +6 -43
  161. package/dist/index.js.map +1 -1
  162. package/dist/tools/detector.d.ts +33 -0
  163. package/dist/tools/detector.d.ts.map +1 -0
  164. package/dist/tools/detector.js +145 -0
  165. package/dist/tools/detector.js.map +1 -0
  166. package/dist/tools/index.d.ts +8 -0
  167. package/dist/tools/index.d.ts.map +1 -0
  168. package/dist/tools/index.js +8 -0
  169. package/dist/tools/index.js.map +1 -0
  170. package/dist/tools/manager.d.ts +21 -0
  171. package/dist/tools/manager.d.ts.map +1 -0
  172. package/dist/tools/manager.js +104 -0
  173. package/dist/tools/manager.js.map +1 -0
  174. package/dist/tools/registry.d.ts +8 -0
  175. package/dist/tools/registry.d.ts.map +1 -0
  176. package/dist/tools/registry.js +36 -0
  177. package/dist/tools/registry.js.map +1 -0
  178. package/dist/tools/types.d.ts +41 -0
  179. package/dist/tools/types.d.ts.map +1 -0
  180. package/dist/tools/types.js +5 -0
  181. package/dist/tools/types.js.map +1 -0
  182. package/dist/types/sso.d.ts +42 -0
  183. package/dist/types/sso.d.ts.map +1 -0
  184. package/dist/types/sso.js +2 -0
  185. package/dist/types/sso.js.map +1 -0
  186. package/dist/utils/agent-compatibility.d.ts +32 -0
  187. package/dist/utils/agent-compatibility.d.ts.map +1 -0
  188. package/dist/utils/agent-compatibility.js +140 -0
  189. package/dist/utils/agent-compatibility.js.map +1 -0
  190. package/dist/utils/async-tips.d.ts.map +1 -1
  191. package/dist/utils/async-tips.js +16 -55
  192. package/dist/utils/async-tips.js.map +1 -1
  193. package/dist/utils/clipboard.d.ts +16 -0
  194. package/dist/utils/clipboard.d.ts.map +1 -0
  195. package/dist/utils/clipboard.js +179 -0
  196. package/dist/utils/clipboard.js.map +1 -0
  197. package/dist/utils/codemie-integration-validator.d.ts +17 -0
  198. package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
  199. package/dist/utils/codemie-integration-validator.js +105 -0
  200. package/dist/utils/codemie-integration-validator.js.map +1 -0
  201. package/dist/utils/codemie-model-fetcher.d.ts +11 -0
  202. package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
  203. package/dist/utils/codemie-model-fetcher.js +242 -0
  204. package/dist/utils/codemie-model-fetcher.js.map +1 -0
  205. package/dist/utils/config-loader.d.ts +118 -0
  206. package/dist/utils/config-loader.d.ts.map +1 -0
  207. package/dist/utils/config-loader.js +397 -0
  208. package/dist/utils/config-loader.js.map +1 -0
  209. package/dist/utils/credential-store.d.ts +16 -0
  210. package/dist/utils/credential-store.d.ts.map +1 -0
  211. package/dist/utils/credential-store.js +109 -0
  212. package/dist/utils/credential-store.js.map +1 -0
  213. package/dist/utils/dirname.d.ts +7 -0
  214. package/dist/utils/dirname.d.ts.map +1 -0
  215. package/dist/utils/dirname.js +11 -0
  216. package/dist/utils/dirname.js.map +1 -0
  217. package/dist/utils/errors.js +7 -17
  218. package/dist/utils/errors.js.map +1 -1
  219. package/dist/utils/exec.js +3 -6
  220. package/dist/utils/exec.js.map +1 -1
  221. package/dist/utils/first-time.d.ts +34 -0
  222. package/dist/utils/first-time.d.ts.map +1 -0
  223. package/dist/utils/first-time.js +226 -0
  224. package/dist/utils/first-time.js.map +1 -0
  225. package/dist/utils/health-checker.d.ts +20 -0
  226. package/dist/utils/health-checker.d.ts.map +1 -0
  227. package/dist/utils/health-checker.js +172 -0
  228. package/dist/utils/health-checker.js.map +1 -0
  229. package/dist/utils/logger.js +12 -18
  230. package/dist/utils/logger.js.map +1 -1
  231. package/dist/utils/model-fetcher.d.ts +21 -0
  232. package/dist/utils/model-fetcher.d.ts.map +1 -0
  233. package/dist/utils/model-fetcher.js +150 -0
  234. package/dist/utils/model-fetcher.js.map +1 -0
  235. package/dist/utils/sso-auth.d.ts +15 -0
  236. package/dist/utils/sso-auth.d.ts.map +1 -0
  237. package/dist/utils/sso-auth.js +207 -0
  238. package/dist/utils/sso-auth.js.map +1 -0
  239. package/dist/utils/sso-gateway.d.ts +47 -0
  240. package/dist/utils/sso-gateway.d.ts.map +1 -0
  241. package/dist/utils/sso-gateway.js +298 -0
  242. package/dist/utils/sso-gateway.js.map +1 -0
  243. package/dist/utils/tips.d.ts.map +1 -1
  244. package/dist/utils/tips.js +13 -52
  245. package/dist/utils/tips.js.map +1 -1
  246. package/dist/workflows/detector.d.ts +37 -0
  247. package/dist/workflows/detector.d.ts.map +1 -0
  248. package/dist/workflows/detector.js +160 -0
  249. package/dist/workflows/detector.js.map +1 -0
  250. package/dist/workflows/index.d.ts +8 -0
  251. package/dist/workflows/index.d.ts.map +1 -0
  252. package/dist/workflows/index.js +8 -0
  253. package/dist/workflows/index.js.map +1 -0
  254. package/dist/workflows/installer.d.ts +24 -0
  255. package/dist/workflows/installer.d.ts.map +1 -0
  256. package/dist/workflows/installer.js +105 -0
  257. package/dist/workflows/installer.js.map +1 -0
  258. package/dist/workflows/registry.d.ts +29 -0
  259. package/dist/workflows/registry.d.ts.map +1 -0
  260. package/dist/workflows/registry.js +54 -0
  261. package/dist/workflows/registry.js.map +1 -0
  262. package/dist/workflows/templates/github/metadata.d.ts +6 -0
  263. package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
  264. package/dist/workflows/templates/github/metadata.js +111 -0
  265. package/dist/workflows/templates/github/metadata.js.map +1 -0
  266. package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
  267. package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
  268. package/dist/workflows/templates/gitlab/metadata.js +14 -0
  269. package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
  270. package/dist/workflows/types.d.ts +71 -0
  271. package/dist/workflows/types.d.ts.map +1 -0
  272. package/dist/workflows/types.js +5 -0
  273. package/dist/workflows/types.js.map +1 -0
  274. package/package.json +32 -25
  275. package/src/workflows/templates/github/code-ci.yml +529 -0
  276. package/src/workflows/templates/github/inline-fix.yml +665 -0
  277. package/src/workflows/templates/github/pr-review.yml +677 -0
  278. package/.claude/agents/README.md +0 -298
  279. package/.claude/agents/release-manager.md +0 -857
  280. package/.codemie/guides/git-workflow.md +0 -493
  281. package/CLAUDE.md +0 -855
  282. package/dist/agents/adapters/aider.d.ts +0 -12
  283. package/dist/agents/adapters/aider.d.ts.map +0 -1
  284. package/dist/agents/adapters/aider.js +0 -80
  285. package/dist/agents/adapters/aider.js.map +0 -1
  286. package/dist/cli/cli.d.ts +0 -4
  287. package/dist/cli/cli.d.ts.map +0 -1
  288. package/dist/cli/cli.js +0 -107
  289. package/dist/cli/cli.js.map +0 -1
  290. package/dist/cli/commands/mcp.d.ts +0 -3
  291. package/dist/cli/commands/mcp.d.ts.map +0 -1
  292. package/dist/cli/commands/mcp.js +0 -459
  293. package/dist/cli/commands/mcp.js.map +0 -1
  294. package/dist/code/agent-events.d.ts +0 -39
  295. package/dist/code/agent-events.d.ts.map +0 -1
  296. package/dist/code/agent-events.js +0 -4
  297. package/dist/code/agent-events.js.map +0 -1
  298. package/dist/code/agent.d.ts +0 -19
  299. package/dist/code/agent.d.ts.map +0 -1
  300. package/dist/code/agent.js +0 -144
  301. package/dist/code/agent.js.map +0 -1
  302. package/dist/code/config.d.ts +0 -13
  303. package/dist/code/config.d.ts.map +0 -1
  304. package/dist/code/config.js +0 -41
  305. package/dist/code/config.js.map +0 -1
  306. package/dist/code/index.d.ts +0 -19
  307. package/dist/code/index.d.ts.map +0 -1
  308. package/dist/code/index.js +0 -400
  309. package/dist/code/index.js.map +0 -1
  310. package/dist/code/prompts.d.ts +0 -2
  311. package/dist/code/prompts.d.ts.map +0 -1
  312. package/dist/code/prompts.js +0 -45
  313. package/dist/code/prompts.js.map +0 -1
  314. package/dist/code/tools/command.d.ts +0 -8
  315. package/dist/code/tools/command.d.ts.map +0 -1
  316. package/dist/code/tools/command.js +0 -83
  317. package/dist/code/tools/command.js.map +0 -1
  318. package/dist/code/tools/diff-utils.d.ts +0 -2
  319. package/dist/code/tools/diff-utils.d.ts.map +0 -1
  320. package/dist/code/tools/diff-utils.js +0 -45
  321. package/dist/code/tools/diff-utils.js.map +0 -1
  322. package/dist/code/tools/filesystem.d.ts +0 -11
  323. package/dist/code/tools/filesystem.d.ts.map +0 -1
  324. package/dist/code/tools/filesystem.js +0 -442
  325. package/dist/code/tools/filesystem.js.map +0 -1
  326. package/dist/code/tools/git.d.ts +0 -7
  327. package/dist/code/tools/git.d.ts.map +0 -1
  328. package/dist/code/tools/git.js +0 -111
  329. package/dist/code/tools/git.js.map +0 -1
  330. package/dist/code/tools/mcp.d.ts +0 -13
  331. package/dist/code/tools/mcp.d.ts.map +0 -1
  332. package/dist/code/tools/mcp.js +0 -230
  333. package/dist/code/tools/mcp.js.map +0 -1
  334. package/dist/data/tips.json +0 -118
  335. package/dist/ui/terminal-ui.d.ts +0 -73
  336. package/dist/ui/terminal-ui.d.ts.map +0 -1
  337. package/dist/ui/terminal-ui.js +0 -900
  338. package/dist/ui/terminal-ui.js.map +0 -1
  339. package/dist/utils/env-mapper.d.ts +0 -40
  340. package/dist/utils/env-mapper.d.ts.map +0 -1
  341. package/dist/utils/env-mapper.js +0 -122
  342. package/dist/utils/env-mapper.js.map +0 -1
  343. package/docs/USER_GUIDE.md +0 -573
  344. package/eslint.config.mjs +0 -43
  345. package/tests/agent-direct.test.mjs +0 -45
  346. package/tests/agent-output.test.mjs +0 -64
  347. package/tests/codemie-code.test.mjs +0 -42
  348. package/tests/context7-only.test.mjs +0 -42
  349. package/tests/conversation-flow.test.mjs +0 -63
  350. package/tests/interactive-simulation.test.mjs +0 -60
  351. package/tests/live-output.test.mjs +0 -53
  352. package/tests/mcp-context7.test.mjs +0 -105
  353. package/tests/mcp-e2e.test.mjs +0 -109
  354. package/tests/mcp-time-server.test.mjs +0 -58
  355. package/tests/streaming.test.mjs +0 -57
  356. package/tests/test-helpers.mjs +0 -94
  357. package/tests/text-wrapping.test.mjs +0 -33
  358. package/tests/tool-count.test.mjs +0 -81
  359. package/tests/ui-format.test.mjs +0 -39
  360. 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"}