@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,160 @@
1
+ /**
2
+ * System Prompts for CodeMie Native Agent
3
+ *
4
+ * Contains the system prompt and instructions for the LangGraph ReAct agent
5
+ */
6
+ export const SYSTEM_PROMPT = `You are CodeMie, an advanced AI coding assistant designed to help developers with various programming tasks.
7
+
8
+ CAPABILITIES:
9
+ - Read, write, and modify files in the project directory
10
+ - Execute shell commands for building, testing, and development tasks
11
+ - Perform Git operations (status, diff, add, commit, log)
12
+ - Analyze code structure and provide recommendations
13
+ - Help with debugging, refactoring, and code optimization
14
+
15
+ GUIDELINES:
16
+ - Always explain what you're doing before taking actions
17
+ - Ask for confirmation before making significant changes
18
+ - Provide clear, concise explanations of your reasoning
19
+ - Follow best practices for the programming language being used
20
+ - Be security-conscious when executing commands or modifying files
21
+
22
+ CURRENT WORKING DIRECTORY: {workingDirectory}
23
+
24
+ You have access to the following tools:`;
25
+ /**
26
+ * Planning mode suffix for structured todo-based execution
27
+ * Inspired by LangChain-Code's Deep Agent planning approach
28
+ */
29
+ export const PLANNING_SUFFIX = `
30
+ ## Planning & TODOs
31
+ - In your FIRST 1-2 tool calls, call \`write_todos([...])\` with 3-8 concrete steps
32
+ - Before working a step, call \`update_todo_status(index, "in_progress")\`
33
+ - After finishing it, call \`update_todo_status(index, "completed")\`
34
+ - Keep only one item "in_progress" at a time and keep todos verb-first and specific
35
+ - Use specific, actionable language: "Read config.ts file" not "Understand configuration"
36
+
37
+ ## Todo Guidelines
38
+ - pending: Task not yet started
39
+ - in_progress: Currently working on (ONLY ONE allowed)
40
+ - completed: Task finished successfully
41
+
42
+ ## Best Practices for Todos
43
+ - Start with action verbs (Read, Write, Create, Update, Fix, Test, etc.)
44
+ - Be specific about files, functions, or components
45
+ - Break complex tasks into 3-8 manageable steps
46
+ - Each step should have clear completion criteria
47
+ - Avoid vague language like "handle", "deal with", "work on"
48
+
49
+ Example good todos:
50
+ - "Read package.json to understand dependencies"
51
+ - "Create new React component in src/components/TodoList.tsx"
52
+ - "Update API endpoint to handle authentication"
53
+ - "Run tests to verify functionality"
54
+ - "Commit changes with descriptive message"
55
+
56
+ Example poor todos:
57
+ - "Handle configuration" (too vague)
58
+ - "Work on the authentication system" (too broad)
59
+ - "Fix stuff" (unclear what needs fixing)
60
+ `;
61
+ /**
62
+ * Task-focused planning prompt for feature implementation
63
+ */
64
+ export const FEATURE_PLANNING_PROMPT = `You are implementing a feature end-to-end with structured planning.
65
+
66
+ Your process:
67
+ 1. **Planning Phase**: Create a detailed plan using write_todos with specific steps
68
+ 2. **Discovery Phase**: Use tools to understand the current codebase structure
69
+ 3. **Implementation Phase**: Make targeted changes with progress tracking
70
+ 4. **Verification Phase**: Test and validate your changes
71
+ 5. **Completion Phase**: Summarize what was accomplished
72
+
73
+ Planning guidelines:
74
+ - Break the feature into logical, sequential steps
75
+ - Include discovery, implementation, testing, and documentation steps
76
+ - Be specific about files and components to modify
77
+ - Consider dependencies between steps
78
+ - Plan for error handling and edge cases`;
79
+ /**
80
+ * Bug fix planning prompt
81
+ */
82
+ export const BUGFIX_PLANNING_PROMPT = `You are fixing a bug with a systematic approach.
83
+
84
+ Your process:
85
+ 1. **Analysis Phase**: Understand the problem and create a plan using write_todos
86
+ 2. **Investigation Phase**: Use tools to locate the root cause
87
+ 3. **Fix Phase**: Implement a minimal, targeted fix
88
+ 4. **Testing Phase**: Verify the fix works and doesn't break anything else
89
+ 5. **Documentation Phase**: Document the fix and any lessons learned
90
+
91
+ Planning guidelines:
92
+ - Start by reproducing and understanding the issue
93
+ - Plan investigation steps to narrow down the root cause
94
+ - Design a minimal fix that addresses the core problem
95
+ - Include regression testing in your plan
96
+ - Consider edge cases and potential side effects`;
97
+ /**
98
+ * Analysis planning prompt for code exploration
99
+ */
100
+ export const ANALYSIS_PLANNING_PROMPT = `You are analyzing a codebase with a structured approach.
101
+
102
+ Your process:
103
+ 1. **Planning Phase**: Create a plan using write_todos for systematic analysis
104
+ 2. **Overview Phase**: Get high-level understanding of project structure
105
+ 3. **Deep Dive Phase**: Examine specific components, patterns, and relationships
106
+ 4. **Assessment Phase**: Identify strengths, weaknesses, and opportunities
107
+ 5. **Reporting Phase**: Summarize findings with actionable recommendations
108
+
109
+ Planning guidelines:
110
+ - Plan to explore from general to specific
111
+ - Include architecture, patterns, code quality, and dependencies
112
+ - Look for potential issues, security concerns, and improvement opportunities
113
+ - Structure findings in a clear, actionable format`;
114
+ /**
115
+ * Get the system prompt with working directory substitution
116
+ */
117
+ export function getSystemPrompt(workingDirectory) {
118
+ return SYSTEM_PROMPT.replace('{workingDirectory}', workingDirectory);
119
+ }
120
+ /**
121
+ * Get system prompt with planning mode enabled
122
+ */
123
+ export function getSystemPromptWithPlanning(workingDirectory) {
124
+ return getSystemPrompt(workingDirectory) + PLANNING_SUFFIX;
125
+ }
126
+ /**
127
+ * Get task-specific planning prompt
128
+ */
129
+ export function getTaskPlanningPrompt(taskType) {
130
+ switch (taskType) {
131
+ case 'feature':
132
+ return FEATURE_PLANNING_PROMPT;
133
+ case 'bugfix':
134
+ return BUGFIX_PLANNING_PROMPT;
135
+ case 'analysis':
136
+ return ANALYSIS_PLANNING_PROMPT;
137
+ default:
138
+ return FEATURE_PLANNING_PROMPT;
139
+ }
140
+ }
141
+ /**
142
+ * Detect task type from user input
143
+ */
144
+ export function detectTaskType(task) {
145
+ const lowerTask = task.toLowerCase();
146
+ // Bug fix indicators
147
+ if (lowerTask.includes('fix') || lowerTask.includes('bug') || lowerTask.includes('error') ||
148
+ lowerTask.includes('issue') || lowerTask.includes('broken') || lowerTask.includes('crash')) {
149
+ return 'bugfix';
150
+ }
151
+ // Analysis indicators
152
+ if (lowerTask.includes('analyze') || lowerTask.includes('review') || lowerTask.includes('understand') ||
153
+ lowerTask.includes('explain') || lowerTask.includes('explore') || lowerTask.includes('what') ||
154
+ lowerTask.includes('how') || lowerTask.includes('why')) {
155
+ return 'analysis';
156
+ }
157
+ // Default to feature implementation
158
+ return 'feature';
159
+ }
160
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agents/codemie-code/prompts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;wCAkBW,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;yCAcE,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;iDAcW,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;mDAaW,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,gBAAwB;IACtD,OAAO,aAAa,CAAC,OAAO,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,gBAAwB;IAClE,OAAO,eAAe,CAAC,gBAAgB,CAAC,GAAG,eAAe,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAA2C;IAC/E,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,uBAAuB,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,sBAAsB,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,wBAAwB,CAAC;QAClC;YACE,OAAO,uBAAuB,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAErC,qBAAqB;IACrB,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrF,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,sBAAsB;IACtB,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5F,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,oCAAoC;IACpC,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Todo File Storage System
3
+ *
4
+ * Provides persistent storage for todos with both project-level and global backup storage
5
+ */
6
+ import type { Todo } from '../types.js';
7
+ export interface TodoStorageConfig {
8
+ workingDirectory: string;
9
+ enableGlobalBackup?: boolean;
10
+ debug?: boolean;
11
+ }
12
+ export interface TodoStorageMetadata {
13
+ version: string;
14
+ projectPath: string;
15
+ projectHash: string;
16
+ lastModified: Date;
17
+ sessionId: string;
18
+ }
19
+ export interface TodoFile {
20
+ metadata: TodoStorageMetadata;
21
+ todos: Todo[];
22
+ }
23
+ export declare class TodoFileStorage {
24
+ private workingDirectory;
25
+ private projectTodoPath;
26
+ private globalBackupDir;
27
+ private projectHash;
28
+ private sessionId;
29
+ private enableGlobalBackup;
30
+ private debug;
31
+ constructor(config: TodoStorageConfig);
32
+ /**
33
+ * Generate a hash for the project path to use as filename
34
+ */
35
+ private generateProjectHash;
36
+ /**
37
+ * Generate a unique session ID
38
+ */
39
+ private generateSessionId;
40
+ /**
41
+ * Save todos to both project and global storage
42
+ */
43
+ saveTodos(todos: Todo[]): Promise<void>;
44
+ /**
45
+ * Load todos from project storage (with global backup fallback)
46
+ */
47
+ loadTodos(): Promise<Todo[]>;
48
+ /**
49
+ * Save to project-level storage (.codemie/todos.json)
50
+ */
51
+ private saveToProject;
52
+ /**
53
+ * Save to global backup storage (~/.codemie/todos/{hash}.json)
54
+ */
55
+ private saveToGlobalBackup;
56
+ /**
57
+ * Load from project-level storage
58
+ */
59
+ private loadFromProject;
60
+ /**
61
+ * Load from global backup storage
62
+ */
63
+ private loadFromGlobalBackup;
64
+ /**
65
+ * Clear todos from both storages
66
+ */
67
+ clearTodos(): Promise<void>;
68
+ /**
69
+ * Get storage information
70
+ */
71
+ getStorageInfo(): {
72
+ projectPath: string;
73
+ globalBackupPath: string;
74
+ projectHash: string;
75
+ sessionId: string;
76
+ };
77
+ }
78
+ //# sourceMappingURL=todoStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todoStorage.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/storage/todoStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,KAAK,CAAU;gBAEX,MAAM,EAAE,iBAAiB;IAwBrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B7C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAiClC;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,kBAAkB;IAahC;;OAEG;YACW,eAAe;IAkB7B;;OAEG;YACW,oBAAoB;IAwBlC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCjC;;OAEG;IACH,cAAc,IAAI;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB;CAQF"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Todo File Storage System
3
+ *
4
+ * Provides persistent storage for todos with both project-level and global backup storage
5
+ */
6
+ import { promises as fs } from 'fs';
7
+ import path from 'path';
8
+ import os from 'os';
9
+ import crypto from 'crypto';
10
+ export class TodoFileStorage {
11
+ workingDirectory;
12
+ projectTodoPath;
13
+ globalBackupDir;
14
+ projectHash;
15
+ sessionId;
16
+ enableGlobalBackup;
17
+ debug;
18
+ constructor(config) {
19
+ this.workingDirectory = config.workingDirectory;
20
+ this.enableGlobalBackup = config.enableGlobalBackup ?? true;
21
+ this.debug = config.debug ?? false;
22
+ // Project-level storage path
23
+ this.projectTodoPath = path.join(this.workingDirectory, '.codemie', 'todos.json');
24
+ // Generate project hash for global storage
25
+ this.projectHash = this.generateProjectHash(this.workingDirectory);
26
+ // Global backup storage path
27
+ this.globalBackupDir = path.join(os.homedir(), '.codemie', 'todos');
28
+ // Generate session ID
29
+ this.sessionId = this.generateSessionId();
30
+ if (this.debug) {
31
+ console.log(`[TodoStorage] Project path: ${this.projectTodoPath}`);
32
+ console.log(`[TodoStorage] Global backup: ${this.globalBackupDir}`);
33
+ console.log(`[TodoStorage] Project hash: ${this.projectHash}`);
34
+ }
35
+ }
36
+ /**
37
+ * Generate a hash for the project path to use as filename
38
+ */
39
+ generateProjectHash(projectPath) {
40
+ return crypto.createHash('md5').update(projectPath).digest('hex').substring(0, 12);
41
+ }
42
+ /**
43
+ * Generate a unique session ID
44
+ */
45
+ generateSessionId() {
46
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;
47
+ }
48
+ /**
49
+ * Save todos to both project and global storage
50
+ */
51
+ async saveTodos(todos) {
52
+ const todoFile = {
53
+ metadata: {
54
+ version: '1.0.0',
55
+ projectPath: this.workingDirectory,
56
+ projectHash: this.projectHash,
57
+ lastModified: new Date(),
58
+ sessionId: this.sessionId
59
+ },
60
+ todos: todos
61
+ };
62
+ try {
63
+ // Save to project-level storage
64
+ await this.saveToProject(todoFile);
65
+ // Save to global backup if enabled
66
+ if (this.enableGlobalBackup) {
67
+ await this.saveToGlobalBackup(todoFile);
68
+ }
69
+ if (this.debug) {
70
+ console.log(`[TodoStorage] Saved ${todos.length} todos successfully`);
71
+ }
72
+ }
73
+ catch (error) {
74
+ console.error('[TodoStorage] Failed to save todos:', error);
75
+ throw new Error(`Failed to save todos: ${error instanceof Error ? error.message : String(error)}`);
76
+ }
77
+ }
78
+ /**
79
+ * Load todos from project storage (with global backup fallback)
80
+ */
81
+ async loadTodos() {
82
+ try {
83
+ // Try project-level storage first
84
+ const projectTodos = await this.loadFromProject();
85
+ if (projectTodos.length > 0) {
86
+ if (this.debug) {
87
+ console.log(`[TodoStorage] Loaded ${projectTodos.length} todos from project storage`);
88
+ }
89
+ return projectTodos;
90
+ }
91
+ // Fallback to global backup
92
+ if (this.enableGlobalBackup) {
93
+ const globalTodos = await this.loadFromGlobalBackup();
94
+ if (globalTodos.length > 0) {
95
+ if (this.debug) {
96
+ console.log(`[TodoStorage] Loaded ${globalTodos.length} todos from global backup`);
97
+ }
98
+ return globalTodos;
99
+ }
100
+ }
101
+ if (this.debug) {
102
+ console.log('[TodoStorage] No existing todos found, starting fresh');
103
+ }
104
+ return [];
105
+ }
106
+ catch (error) {
107
+ console.warn('[TodoStorage] Failed to load todos:', error);
108
+ return [];
109
+ }
110
+ }
111
+ /**
112
+ * Save to project-level storage (.codemie/todos.json)
113
+ */
114
+ async saveToProject(todoFile) {
115
+ const projectDir = path.dirname(this.projectTodoPath);
116
+ await fs.mkdir(projectDir, { recursive: true });
117
+ await fs.writeFile(this.projectTodoPath, JSON.stringify(todoFile, null, 2), 'utf-8');
118
+ }
119
+ /**
120
+ * Save to global backup storage (~/.codemie/todos/{hash}.json)
121
+ */
122
+ async saveToGlobalBackup(todoFile) {
123
+ await fs.mkdir(this.globalBackupDir, { recursive: true });
124
+ const globalTodoPath = path.join(this.globalBackupDir, `${this.projectHash}.json`);
125
+ await fs.writeFile(globalTodoPath, JSON.stringify(todoFile, null, 2), 'utf-8');
126
+ // Also save a timestamped backup
127
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
128
+ const backupPath = path.join(this.globalBackupDir, 'history', `${this.projectHash}-${timestamp}.json`);
129
+ await fs.mkdir(path.dirname(backupPath), { recursive: true });
130
+ await fs.writeFile(backupPath, JSON.stringify(todoFile, null, 2), 'utf-8');
131
+ }
132
+ /**
133
+ * Load from project-level storage
134
+ */
135
+ async loadFromProject() {
136
+ try {
137
+ const content = await fs.readFile(this.projectTodoPath, 'utf-8');
138
+ const todoFile = JSON.parse(content);
139
+ // Validate the structure
140
+ if (!todoFile.todos || !Array.isArray(todoFile.todos)) {
141
+ console.warn('[TodoStorage] Invalid project todo file structure');
142
+ return [];
143
+ }
144
+ return todoFile.todos;
145
+ }
146
+ catch {
147
+ // File doesn't exist or is invalid
148
+ return [];
149
+ }
150
+ }
151
+ /**
152
+ * Load from global backup storage
153
+ */
154
+ async loadFromGlobalBackup() {
155
+ try {
156
+ const globalTodoPath = path.join(this.globalBackupDir, `${this.projectHash}.json`);
157
+ const content = await fs.readFile(globalTodoPath, 'utf-8');
158
+ const todoFile = JSON.parse(content);
159
+ // Validate the structure and project match
160
+ if (!todoFile.todos || !Array.isArray(todoFile.todos)) {
161
+ console.warn('[TodoStorage] Invalid global todo file structure');
162
+ return [];
163
+ }
164
+ if (todoFile.metadata.projectHash !== this.projectHash) {
165
+ console.warn('[TodoStorage] Project hash mismatch in global backup');
166
+ return [];
167
+ }
168
+ return todoFile.todos;
169
+ }
170
+ catch {
171
+ // File doesn't exist or is invalid
172
+ return [];
173
+ }
174
+ }
175
+ /**
176
+ * Clear todos from both storages
177
+ */
178
+ async clearTodos() {
179
+ try {
180
+ // Clear project storage
181
+ await this.saveToProject({
182
+ metadata: {
183
+ version: '1.0.0',
184
+ projectPath: this.workingDirectory,
185
+ projectHash: this.projectHash,
186
+ lastModified: new Date(),
187
+ sessionId: this.sessionId
188
+ },
189
+ todos: []
190
+ });
191
+ // Clear global backup
192
+ if (this.enableGlobalBackup) {
193
+ await this.saveToGlobalBackup({
194
+ metadata: {
195
+ version: '1.0.0',
196
+ projectPath: this.workingDirectory,
197
+ projectHash: this.projectHash,
198
+ lastModified: new Date(),
199
+ sessionId: this.sessionId
200
+ },
201
+ todos: []
202
+ });
203
+ }
204
+ if (this.debug) {
205
+ console.log('[TodoStorage] Cleared todos successfully');
206
+ }
207
+ }
208
+ catch (error) {
209
+ console.error('[TodoStorage] Failed to clear todos:', error);
210
+ throw new Error(`Failed to clear todos: ${error instanceof Error ? error.message : String(error)}`);
211
+ }
212
+ }
213
+ /**
214
+ * Get storage information
215
+ */
216
+ getStorageInfo() {
217
+ return {
218
+ projectPath: this.projectTodoPath,
219
+ globalBackupPath: path.join(this.globalBackupDir, `${this.projectHash}.json`),
220
+ projectHash: this.projectHash,
221
+ sessionId: this.sessionId
222
+ };
223
+ }
224
+ }
225
+ //# sourceMappingURL=todoStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todoStorage.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/storage/todoStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
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
+ import type { TokenUsage } from './types.js';
8
+ /**
9
+ * Provider pricing information (per 1M tokens)
10
+ * Updated as of November 2024 - check provider websites for latest pricing
11
+ */
12
+ export declare const MODEL_PRICING: {
13
+ readonly 'gpt-4o': {
14
+ readonly input: 2.5;
15
+ readonly output: 10;
16
+ };
17
+ readonly 'gpt-4o-mini': {
18
+ readonly input: 0.15;
19
+ readonly output: 0.6;
20
+ };
21
+ readonly 'gpt-4-turbo': {
22
+ readonly input: 10;
23
+ readonly output: 30;
24
+ };
25
+ readonly 'gpt-4': {
26
+ readonly input: 30;
27
+ readonly output: 60;
28
+ };
29
+ readonly 'gpt-3.5-turbo': {
30
+ readonly input: 0.5;
31
+ readonly output: 1.5;
32
+ };
33
+ readonly 'claude-3-5-sonnet-20241022': {
34
+ readonly input: 3;
35
+ readonly output: 15;
36
+ };
37
+ readonly 'claude-3-5-sonnet-20240620': {
38
+ readonly input: 3;
39
+ readonly output: 15;
40
+ };
41
+ readonly 'claude-3-5-haiku-20241022': {
42
+ readonly input: 0.25;
43
+ readonly output: 1.25;
44
+ };
45
+ readonly 'claude-3-opus-20240229': {
46
+ readonly input: 15;
47
+ readonly output: 75;
48
+ };
49
+ readonly 'claude-3-sonnet-20240229': {
50
+ readonly input: 3;
51
+ readonly output: 15;
52
+ };
53
+ readonly 'claude-3-haiku-20240307': {
54
+ readonly input: 0.25;
55
+ readonly output: 1.25;
56
+ };
57
+ readonly 'gpt-4-*': {
58
+ readonly input: 10;
59
+ readonly output: 30;
60
+ };
61
+ readonly 'gpt-3.5-*': {
62
+ readonly input: 0.5;
63
+ readonly output: 1.5;
64
+ };
65
+ readonly 'claude-3-*': {
66
+ readonly input: 3;
67
+ readonly output: 15;
68
+ };
69
+ };
70
+ /**
71
+ * Extract token usage from LangChain AIMessage or response
72
+ * Based on LangChain v1.0+ usage_metadata format
73
+ */
74
+ export declare function extractTokenUsage(response: any, model: string, _provider: string): TokenUsage | null;
75
+ /**
76
+ * Calculate estimated cost for a model and token usage
77
+ */
78
+ export declare function calculateCost(model: string, inputTokens: number, outputTokens: number): number;
79
+ /**
80
+ * Get pricing information for a model
81
+ */
82
+ export declare function getModelPricing(model: string): {
83
+ input: number;
84
+ output: number;
85
+ } | null;
86
+ /**
87
+ * Format cost as a human-readable string
88
+ */
89
+ export declare function formatCost(cost: number): string;
90
+ /**
91
+ * Format token count as a human-readable string
92
+ */
93
+ export declare function formatTokens(tokens: number): string;
94
+ /**
95
+ * Create a formatted summary of token usage
96
+ */
97
+ export declare function formatTokenUsageSummary(usage: TokenUsage): string;
98
+ /**
99
+ * Extract token usage from LangGraph stream chunk
100
+ * Based on LangChain documentation about "messages" stream mode
101
+ */
102
+ export declare function extractTokenUsageFromStreamChunk(chunk: any, model: string, provider: string): TokenUsage | null;
103
+ /**
104
+ * Extract token usage from final state after LangGraph completion
105
+ * This captures any usage information that wasn't caught during streaming
106
+ */
107
+ export declare function extractTokenUsageFromFinalState(finalState: any, model: string, provider: string): TokenUsage | null;
108
+ //# sourceMappingURL=tokenUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenUtils.d.ts","sourceRoot":"","sources":["../../../src/agents/codemie-code/tokenUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBhB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,GAAG,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,UAAU,GAAG,IAAI,CAoEnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkBvF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAcjE;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,GAAG,EACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,UAAU,GAAG,IAAI,CAgCnB;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,GAAG,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,UAAU,GAAG,IAAI,CAkBnB"}