kemdicode-mcp 1.18.0 → 1.20.0

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 (441) hide show
  1. package/README.md +16 -3
  2. package/dist/ai/execute.d.ts.map +1 -1
  3. package/dist/ai/execute.js +11 -1
  4. package/dist/ai/execute.js.map +1 -1
  5. package/dist/context/agent-monitor.d.ts +3 -3
  6. package/dist/context/agent-monitor.d.ts.map +1 -1
  7. package/dist/context/agent-monitor.js +15 -9
  8. package/dist/context/agent-monitor.js.map +1 -1
  9. package/dist/context/storage.d.ts.map +1 -1
  10. package/dist/context/storage.js +18 -2
  11. package/dist/context/storage.js.map +1 -1
  12. package/dist/kanban/index.d.ts +1 -0
  13. package/dist/kanban/index.d.ts.map +1 -1
  14. package/dist/kanban/index.js +2 -0
  15. package/dist/kanban/index.js.map +1 -1
  16. package/dist/kanban/kanban-store.d.ts +44 -19
  17. package/dist/kanban/kanban-store.d.ts.map +1 -1
  18. package/dist/kanban/kanban-store.js +172 -80
  19. package/dist/kanban/kanban-store.js.map +1 -1
  20. package/dist/kanban/resolvers.d.ts +72 -0
  21. package/dist/kanban/resolvers.d.ts.map +1 -0
  22. package/dist/kanban/resolvers.js +159 -0
  23. package/dist/kanban/resolvers.js.map +1 -0
  24. package/dist/kanban/types.d.ts +8 -0
  25. package/dist/kanban/types.d.ts.map +1 -1
  26. package/dist/kanban/types.js.map +1 -1
  27. package/dist/recursive/tool-invoker.d.ts.map +1 -1
  28. package/dist/recursive/tool-invoker.js +5 -8
  29. package/dist/recursive/tool-invoker.js.map +1 -1
  30. package/dist/server/session-server.d.ts.map +1 -1
  31. package/dist/server/session-server.js +3 -0
  32. package/dist/server/session-server.js.map +1 -1
  33. package/dist/session/manager.d.ts.map +1 -1
  34. package/dist/session/manager.js +10 -3
  35. package/dist/session/manager.js.map +1 -1
  36. package/dist/tools/agents/agent-alert.tool.d.ts.map +1 -1
  37. package/dist/tools/agents/agent-alert.tool.js +16 -21
  38. package/dist/tools/agents/agent-alert.tool.js.map +1 -1
  39. package/dist/tools/agents/agent-history.tool.d.ts.map +1 -1
  40. package/dist/tools/agents/agent-history.tool.js +9 -0
  41. package/dist/tools/agents/agent-history.tool.js.map +1 -1
  42. package/dist/tools/agents/agent-inject.tool.d.ts.map +1 -1
  43. package/dist/tools/agents/agent-inject.tool.js +20 -23
  44. package/dist/tools/agents/agent-inject.tool.js.map +1 -1
  45. package/dist/tools/agents/agent-list.tool.d.ts.map +1 -1
  46. package/dist/tools/agents/agent-list.tool.js +9 -0
  47. package/dist/tools/agents/agent-list.tool.js.map +1 -1
  48. package/dist/tools/agents/agent-register.tool.d.ts.map +1 -1
  49. package/dist/tools/agents/agent-register.tool.js +10 -1
  50. package/dist/tools/agents/agent-register.tool.js.map +1 -1
  51. package/dist/tools/agents/agent-summary.tool.d.ts.map +1 -1
  52. package/dist/tools/agents/agent-summary.tool.js +9 -0
  53. package/dist/tools/agents/agent-summary.tool.js.map +1 -1
  54. package/dist/tools/agents/agent-watch.tool.d.ts.map +1 -1
  55. package/dist/tools/agents/agent-watch.tool.js +10 -0
  56. package/dist/tools/agents/agent-watch.tool.js.map +1 -1
  57. package/dist/tools/agents/monitor.tool.d.ts.map +1 -1
  58. package/dist/tools/agents/monitor.tool.js +10 -0
  59. package/dist/tools/agents/monitor.tool.js.map +1 -1
  60. package/dist/tools/agents/queue-message.tool.d.ts.map +1 -1
  61. package/dist/tools/agents/queue-message.tool.js +11 -2
  62. package/dist/tools/agents/queue-message.tool.js.map +1 -1
  63. package/dist/tools/ask-ai.tool.d.ts.map +1 -1
  64. package/dist/tools/ask-ai.tool.js +10 -0
  65. package/dist/tools/ask-ai.tool.js.map +1 -1
  66. package/dist/tools/batch.tool.d.ts +1 -0
  67. package/dist/tools/batch.tool.d.ts.map +1 -1
  68. package/dist/tools/batch.tool.js +18 -3
  69. package/dist/tools/batch.tool.js.map +1 -1
  70. package/dist/tools/brainstorm.tool.d.ts.map +1 -1
  71. package/dist/tools/brainstorm.tool.js +10 -0
  72. package/dist/tools/brainstorm.tool.js.map +1 -1
  73. package/dist/tools/code/code-outline.tool.d.ts.map +1 -1
  74. package/dist/tools/code/code-outline.tool.js +11 -0
  75. package/dist/tools/code/code-outline.tool.js.map +1 -1
  76. package/dist/tools/code/find-definition.tool.d.ts.map +1 -1
  77. package/dist/tools/code/find-definition.tool.js +11 -0
  78. package/dist/tools/code/find-definition.tool.js.map +1 -1
  79. package/dist/tools/code/find-references.tool.d.ts.map +1 -1
  80. package/dist/tools/code/find-references.tool.js +11 -0
  81. package/dist/tools/code/find-references.tool.js.map +1 -1
  82. package/dist/tools/code/find-symbols.tool.d.ts.map +1 -1
  83. package/dist/tools/code/find-symbols.tool.js +11 -0
  84. package/dist/tools/code/find-symbols.tool.js.map +1 -1
  85. package/dist/tools/code/insert-after-symbol.tool.d.ts.map +1 -1
  86. package/dist/tools/code/insert-after-symbol.tool.js +16 -0
  87. package/dist/tools/code/insert-after-symbol.tool.js.map +1 -1
  88. package/dist/tools/code/insert-before-symbol.tool.d.ts.map +1 -1
  89. package/dist/tools/code/insert-before-symbol.tool.js +16 -0
  90. package/dist/tools/code/insert-before-symbol.tool.js.map +1 -1
  91. package/dist/tools/code/rename-symbol.tool.d.ts.map +1 -1
  92. package/dist/tools/code/rename-symbol.tool.js +11 -0
  93. package/dist/tools/code/rename-symbol.tool.js.map +1 -1
  94. package/dist/tools/code/semantic-search.tool.d.ts.map +1 -1
  95. package/dist/tools/code/semantic-search.tool.js +12 -0
  96. package/dist/tools/code/semantic-search.tool.js.map +1 -1
  97. package/dist/tools/context/feedback.tool.d.ts.map +1 -1
  98. package/dist/tools/context/feedback.tool.js +10 -0
  99. package/dist/tools/context/feedback.tool.js.map +1 -1
  100. package/dist/tools/context/get-shared-context.tool.d.ts.map +1 -1
  101. package/dist/tools/context/get-shared-context.tool.js +9 -0
  102. package/dist/tools/context/get-shared-context.tool.js.map +1 -1
  103. package/dist/tools/context/shared-thoughts.tool.d.ts.map +1 -1
  104. package/dist/tools/context/shared-thoughts.tool.js +9 -0
  105. package/dist/tools/context/shared-thoughts.tool.js.map +1 -1
  106. package/dist/tools/edit/delete-lines.tool.d.ts.map +1 -1
  107. package/dist/tools/edit/delete-lines.tool.js +11 -0
  108. package/dist/tools/edit/delete-lines.tool.js.map +1 -1
  109. package/dist/tools/edit/insert-at-line.tool.d.ts.map +1 -1
  110. package/dist/tools/edit/insert-at-line.tool.js +11 -0
  111. package/dist/tools/edit/insert-at-line.tool.js.map +1 -1
  112. package/dist/tools/edit/replace-content.tool.d.ts.map +1 -1
  113. package/dist/tools/edit/replace-content.tool.js +10 -1
  114. package/dist/tools/edit/replace-content.tool.js.map +1 -1
  115. package/dist/tools/edit/replace-lines.tool.d.ts.map +1 -1
  116. package/dist/tools/edit/replace-lines.tool.js +16 -0
  117. package/dist/tools/edit/replace-lines.tool.js.map +1 -1
  118. package/dist/tools/file/file-backup-restore.tool.d.ts +20 -0
  119. package/dist/tools/file/file-backup-restore.tool.d.ts.map +1 -0
  120. package/dist/tools/file/file-backup-restore.tool.js +301 -0
  121. package/dist/tools/file/file-backup-restore.tool.js.map +1 -0
  122. package/dist/tools/file/file-copy.tool.d.ts +20 -0
  123. package/dist/tools/file/file-copy.tool.d.ts.map +1 -0
  124. package/dist/tools/file/file-copy.tool.js +215 -0
  125. package/dist/tools/file/file-copy.tool.js.map +1 -0
  126. package/dist/tools/file/file-delete.tool.d.ts +20 -0
  127. package/dist/tools/file/file-delete.tool.d.ts.map +1 -0
  128. package/dist/tools/file/file-delete.tool.js +195 -0
  129. package/dist/tools/file/file-delete.tool.js.map +1 -0
  130. package/dist/tools/file/file-diff.tool.d.ts.map +1 -1
  131. package/dist/tools/file/file-diff.tool.js +95 -72
  132. package/dist/tools/file/file-diff.tool.js.map +1 -1
  133. package/dist/tools/file/file-move.tool.d.ts +20 -0
  134. package/dist/tools/file/file-move.tool.d.ts.map +1 -0
  135. package/dist/tools/file/file-move.tool.js +227 -0
  136. package/dist/tools/file/file-move.tool.js.map +1 -0
  137. package/dist/tools/file/file-read.tool.d.ts.map +1 -1
  138. package/dist/tools/file/file-read.tool.js +123 -123
  139. package/dist/tools/file/file-read.tool.js.map +1 -1
  140. package/dist/tools/file/file-search.tool.d.ts.map +1 -1
  141. package/dist/tools/file/file-search.tool.js +9 -0
  142. package/dist/tools/file/file-search.tool.js.map +1 -1
  143. package/dist/tools/file/file-tree.tool.d.ts.map +1 -1
  144. package/dist/tools/file/file-tree.tool.js +9 -0
  145. package/dist/tools/file/file-tree.tool.js.map +1 -1
  146. package/dist/tools/file/file-write.tool.d.ts.map +1 -1
  147. package/dist/tools/file/file-write.tool.js +105 -102
  148. package/dist/tools/file/file-write.tool.js.map +1 -1
  149. package/dist/tools/file/index.d.ts +4 -0
  150. package/dist/tools/file/index.d.ts.map +1 -1
  151. package/dist/tools/file/index.js +4 -0
  152. package/dist/tools/file/index.js.map +1 -1
  153. package/dist/tools/git/git-add.tool.d.ts +20 -0
  154. package/dist/tools/git/git-add.tool.d.ts.map +1 -0
  155. package/dist/tools/git/git-add.tool.js +83 -0
  156. package/dist/tools/git/git-add.tool.js.map +1 -0
  157. package/dist/tools/git/git-blame.tool.d.ts.map +1 -1
  158. package/dist/tools/git/git-blame.tool.js +9 -0
  159. package/dist/tools/git/git-blame.tool.js.map +1 -1
  160. package/dist/tools/git/git-branch.tool.d.ts.map +1 -1
  161. package/dist/tools/git/git-branch.tool.js +9 -0
  162. package/dist/tools/git/git-branch.tool.js.map +1 -1
  163. package/dist/tools/git/git-commit.tool.d.ts +20 -0
  164. package/dist/tools/git/git-commit.tool.d.ts.map +1 -0
  165. package/dist/tools/git/git-commit.tool.js +77 -0
  166. package/dist/tools/git/git-commit.tool.js.map +1 -0
  167. package/dist/tools/git/git-diff.tool.d.ts.map +1 -1
  168. package/dist/tools/git/git-diff.tool.js +27 -6
  169. package/dist/tools/git/git-diff.tool.js.map +1 -1
  170. package/dist/tools/git/git-log.tool.d.ts.map +1 -1
  171. package/dist/tools/git/git-log.tool.js +13 -1
  172. package/dist/tools/git/git-log.tool.js.map +1 -1
  173. package/dist/tools/git/git-stash.tool.d.ts +20 -0
  174. package/dist/tools/git/git-stash.tool.d.ts.map +1 -0
  175. package/dist/tools/git/git-stash.tool.js +125 -0
  176. package/dist/tools/git/git-stash.tool.js.map +1 -0
  177. package/dist/tools/git/git-status.tool.d.ts.map +1 -1
  178. package/dist/tools/git/git-status.tool.js +21 -3
  179. package/dist/tools/git/git-status.tool.js.map +1 -1
  180. package/dist/tools/git/index.d.ts +3 -0
  181. package/dist/tools/git/index.d.ts.map +1 -1
  182. package/dist/tools/git/index.js +3 -0
  183. package/dist/tools/git/index.js.map +1 -1
  184. package/dist/tools/index.d.ts.map +1 -1
  185. package/dist/tools/index.js +19 -4
  186. package/dist/tools/index.js.map +1 -1
  187. package/dist/tools/kanban/board-create.tool.d.ts.map +1 -1
  188. package/dist/tools/kanban/board-create.tool.js +61 -37
  189. package/dist/tools/kanban/board-create.tool.js.map +1 -1
  190. package/dist/tools/kanban/board-delete.tool.d.ts +20 -0
  191. package/dist/tools/kanban/board-delete.tool.d.ts.map +1 -0
  192. package/dist/tools/kanban/board-delete.tool.js +125 -0
  193. package/dist/tools/kanban/board-delete.tool.js.map +1 -0
  194. package/dist/tools/kanban/board-invite.tool.d.ts.map +1 -1
  195. package/dist/tools/kanban/board-invite.tool.js +67 -44
  196. package/dist/tools/kanban/board-invite.tool.js.map +1 -1
  197. package/dist/tools/kanban/board-list.tool.d.ts.map +1 -1
  198. package/dist/tools/kanban/board-list.tool.js +23 -8
  199. package/dist/tools/kanban/board-list.tool.js.map +1 -1
  200. package/dist/tools/kanban/board-members.tool.d.ts.map +1 -1
  201. package/dist/tools/kanban/board-members.tool.js +138 -99
  202. package/dist/tools/kanban/board-members.tool.js.map +1 -1
  203. package/dist/tools/kanban/board-share.tool.d.ts.map +1 -1
  204. package/dist/tools/kanban/board-share.tool.js +65 -41
  205. package/dist/tools/kanban/board-share.tool.js.map +1 -1
  206. package/dist/tools/kanban/board-status.tool.d.ts.map +1 -1
  207. package/dist/tools/kanban/board-status.tool.js +15 -4
  208. package/dist/tools/kanban/board-status.tool.js.map +1 -1
  209. package/dist/tools/kanban/index.d.ts +5 -0
  210. package/dist/tools/kanban/index.d.ts.map +1 -1
  211. package/dist/tools/kanban/index.js +6 -0
  212. package/dist/tools/kanban/index.js.map +1 -1
  213. package/dist/tools/kanban/task-assign.tool.d.ts.map +1 -1
  214. package/dist/tools/kanban/task-assign.tool.js +9 -0
  215. package/dist/tools/kanban/task-assign.tool.js.map +1 -1
  216. package/dist/tools/kanban/task-claim.tool.d.ts.map +1 -1
  217. package/dist/tools/kanban/task-claim.tool.js +13 -10
  218. package/dist/tools/kanban/task-claim.tool.js.map +1 -1
  219. package/dist/tools/kanban/task-comment.tool.d.ts +20 -0
  220. package/dist/tools/kanban/task-comment.tool.d.ts.map +1 -0
  221. package/dist/tools/kanban/task-comment.tool.js +119 -0
  222. package/dist/tools/kanban/task-comment.tool.js.map +1 -0
  223. package/dist/tools/kanban/task-create.tool.d.ts.map +1 -1
  224. package/dist/tools/kanban/task-create.tool.js +23 -7
  225. package/dist/tools/kanban/task-create.tool.js.map +1 -1
  226. package/dist/tools/kanban/task-delete.tool.d.ts +20 -0
  227. package/dist/tools/kanban/task-delete.tool.d.ts.map +1 -0
  228. package/dist/tools/kanban/task-delete.tool.js +101 -0
  229. package/dist/tools/kanban/task-delete.tool.js.map +1 -0
  230. package/dist/tools/kanban/task-get.tool.d.ts +20 -0
  231. package/dist/tools/kanban/task-get.tool.d.ts.map +1 -0
  232. package/dist/tools/kanban/task-get.tool.js +103 -0
  233. package/dist/tools/kanban/task-get.tool.js.map +1 -0
  234. package/dist/tools/kanban/task-list.tool.d.ts.map +1 -1
  235. package/dist/tools/kanban/task-list.tool.js +22 -6
  236. package/dist/tools/kanban/task-list.tool.js.map +1 -1
  237. package/dist/tools/kanban/task-push-multi.tool.d.ts.map +1 -1
  238. package/dist/tools/kanban/task-push-multi.tool.js +19 -4
  239. package/dist/tools/kanban/task-push-multi.tool.js.map +1 -1
  240. package/dist/tools/kanban/task-update.tool.d.ts.map +1 -1
  241. package/dist/tools/kanban/task-update.tool.js +12 -2
  242. package/dist/tools/kanban/task-update.tool.js.map +1 -1
  243. package/dist/tools/kanban/workspace-create.tool.d.ts.map +1 -1
  244. package/dist/tools/kanban/workspace-create.tool.js +53 -31
  245. package/dist/tools/kanban/workspace-create.tool.js.map +1 -1
  246. package/dist/tools/kanban/workspace-delete.tool.d.ts +20 -0
  247. package/dist/tools/kanban/workspace-delete.tool.d.ts.map +1 -0
  248. package/dist/tools/kanban/workspace-delete.tool.js +141 -0
  249. package/dist/tools/kanban/workspace-delete.tool.js.map +1 -0
  250. package/dist/tools/kanban/workspace-join.tool.d.ts.map +1 -1
  251. package/dist/tools/kanban/workspace-join.tool.js +20 -8
  252. package/dist/tools/kanban/workspace-join.tool.js.map +1 -1
  253. package/dist/tools/kanban/workspace-leave.tool.d.ts.map +1 -1
  254. package/dist/tools/kanban/workspace-leave.tool.js +19 -7
  255. package/dist/tools/kanban/workspace-leave.tool.js.map +1 -1
  256. package/dist/tools/kanban/workspace-list.tool.d.ts.map +1 -1
  257. package/dist/tools/kanban/workspace-list.tool.js +9 -0
  258. package/dist/tools/kanban/workspace-list.tool.js.map +1 -1
  259. package/dist/tools/loci/graph-find-path.tool.d.ts.map +1 -1
  260. package/dist/tools/loci/graph-find-path.tool.js +9 -0
  261. package/dist/tools/loci/graph-find-path.tool.js.map +1 -1
  262. package/dist/tools/loci/graph-query.tool.d.ts.map +1 -1
  263. package/dist/tools/loci/graph-query.tool.js +9 -0
  264. package/dist/tools/loci/graph-query.tool.js.map +1 -1
  265. package/dist/tools/loci/loci-recall.tool.d.ts.map +1 -1
  266. package/dist/tools/loci/loci-recall.tool.js +9 -0
  267. package/dist/tools/loci/loci-recall.tool.js.map +1 -1
  268. package/dist/tools/loci/sequence-recommend.tool.d.ts.map +1 -1
  269. package/dist/tools/loci/sequence-recommend.tool.js +9 -0
  270. package/dist/tools/loci/sequence-recommend.tool.js.map +1 -1
  271. package/dist/tools/memory/checkpoint-diff.tool.d.ts +20 -0
  272. package/dist/tools/memory/checkpoint-diff.tool.d.ts.map +1 -0
  273. package/dist/tools/memory/checkpoint-diff.tool.js +235 -0
  274. package/dist/tools/memory/checkpoint-diff.tool.js.map +1 -0
  275. package/dist/tools/memory/checkpoint-restore.tool.d.ts.map +1 -1
  276. package/dist/tools/memory/checkpoint-restore.tool.js +9 -9
  277. package/dist/tools/memory/checkpoint-restore.tool.js.map +1 -1
  278. package/dist/tools/memory/checkpoint-save.tool.d.ts.map +1 -1
  279. package/dist/tools/memory/checkpoint-save.tool.js +11 -28
  280. package/dist/tools/memory/checkpoint-save.tool.js.map +1 -1
  281. package/dist/tools/memory/delete-memory.tool.d.ts.map +1 -1
  282. package/dist/tools/memory/delete-memory.tool.js +43 -35
  283. package/dist/tools/memory/delete-memory.tool.js.map +1 -1
  284. package/dist/tools/memory/edit-memory.tool.d.ts.map +1 -1
  285. package/dist/tools/memory/edit-memory.tool.js +98 -117
  286. package/dist/tools/memory/edit-memory.tool.js.map +1 -1
  287. package/dist/tools/memory/index.d.ts +1 -0
  288. package/dist/tools/memory/index.d.ts.map +1 -1
  289. package/dist/tools/memory/index.js +1 -0
  290. package/dist/tools/memory/index.js.map +1 -1
  291. package/dist/tools/memory/list-memories.tool.d.ts.map +1 -1
  292. package/dist/tools/memory/list-memories.tool.js +62 -46
  293. package/dist/tools/memory/list-memories.tool.js.map +1 -1
  294. package/dist/tools/memory/read-memory.tool.d.ts.map +1 -1
  295. package/dist/tools/memory/read-memory.tool.js +54 -39
  296. package/dist/tools/memory/read-memory.tool.js.map +1 -1
  297. package/dist/tools/memory/shared.d.ts +61 -0
  298. package/dist/tools/memory/shared.d.ts.map +1 -0
  299. package/dist/tools/memory/shared.js +63 -0
  300. package/dist/tools/memory/shared.js.map +1 -0
  301. package/dist/tools/memory/write-memory.tool.d.ts.map +1 -1
  302. package/dist/tools/memory/write-memory.tool.js +90 -107
  303. package/dist/tools/memory/write-memory.tool.js.map +1 -1
  304. package/dist/tools/mpc/mpc-distribute.tool.d.ts.map +1 -1
  305. package/dist/tools/mpc/mpc-distribute.tool.js +8 -0
  306. package/dist/tools/mpc/mpc-distribute.tool.js.map +1 -1
  307. package/dist/tools/mpc/mpc-reconstruct.tool.d.ts.map +1 -1
  308. package/dist/tools/mpc/mpc-reconstruct.tool.js +8 -0
  309. package/dist/tools/mpc/mpc-reconstruct.tool.js.map +1 -1
  310. package/dist/tools/mpc/mpc-split.tool.d.ts.map +1 -1
  311. package/dist/tools/mpc/mpc-split.tool.js +8 -0
  312. package/dist/tools/mpc/mpc-split.tool.js.map +1 -1
  313. package/dist/tools/mpc/mpc-status.tool.d.ts.map +1 -1
  314. package/dist/tools/mpc/mpc-status.tool.js +9 -0
  315. package/dist/tools/mpc/mpc-status.tool.js.map +1 -1
  316. package/dist/tools/multi-llm/consensus-prompt.tool.d.ts.map +1 -1
  317. package/dist/tools/multi-llm/consensus-prompt.tool.js +16 -3
  318. package/dist/tools/multi-llm/consensus-prompt.tool.js.map +1 -1
  319. package/dist/tools/multi-llm/multi-prompt.tool.d.ts.map +1 -1
  320. package/dist/tools/multi-llm/multi-prompt.tool.js +9 -0
  321. package/dist/tools/multi-llm/multi-prompt.tool.js.map +1 -1
  322. package/dist/tools/pipeline.tool.d.ts +45 -0
  323. package/dist/tools/pipeline.tool.d.ts.map +1 -0
  324. package/dist/tools/pipeline.tool.js +161 -0
  325. package/dist/tools/pipeline.tool.js.map +1 -0
  326. package/dist/tools/project/check-types.tool.d.ts.map +1 -1
  327. package/dist/tools/project/check-types.tool.js +11 -0
  328. package/dist/tools/project/check-types.tool.js.map +1 -1
  329. package/dist/tools/project/project-info.tool.d.ts.map +1 -1
  330. package/dist/tools/project/project-info.tool.js +9 -0
  331. package/dist/tools/project/project-info.tool.js.map +1 -1
  332. package/dist/tools/project/run-lint.tool.d.ts.map +1 -1
  333. package/dist/tools/project/run-lint.tool.js +14 -3
  334. package/dist/tools/project/run-lint.tool.js.map +1 -1
  335. package/dist/tools/project/run-tests.tool.d.ts.map +1 -1
  336. package/dist/tools/project/run-tests.tool.js +11 -0
  337. package/dist/tools/project/run-tests.tool.js.map +1 -1
  338. package/dist/tools/recursive/invocation-log.tool.d.ts.map +1 -1
  339. package/dist/tools/recursive/invocation-log.tool.js +9 -0
  340. package/dist/tools/recursive/invocation-log.tool.js.map +1 -1
  341. package/dist/tools/recursive/invoke-batch.tool.d.ts.map +1 -1
  342. package/dist/tools/recursive/invoke-batch.tool.js +9 -0
  343. package/dist/tools/recursive/invoke-batch.tool.js.map +1 -1
  344. package/dist/tools/recursive/invoke-tool.tool.d.ts.map +1 -1
  345. package/dist/tools/recursive/invoke-tool.tool.js +9 -0
  346. package/dist/tools/recursive/invoke-tool.tool.js.map +1 -1
  347. package/dist/tools/registry.d.ts +20 -0
  348. package/dist/tools/registry.d.ts.map +1 -1
  349. package/dist/tools/registry.js +25 -0
  350. package/dist/tools/registry.js.map +1 -1
  351. package/dist/tools/rl/rl-dopamine-log.tool.d.ts.map +1 -1
  352. package/dist/tools/rl/rl-dopamine-log.tool.js +9 -0
  353. package/dist/tools/rl/rl-dopamine-log.tool.js.map +1 -1
  354. package/dist/tools/rl/rl-reward-stats.tool.d.ts.map +1 -1
  355. package/dist/tools/rl/rl-reward-stats.tool.js +9 -0
  356. package/dist/tools/rl/rl-reward-stats.tool.js.map +1 -1
  357. package/dist/tools/session/session-create.tool.d.ts +8 -6
  358. package/dist/tools/session/session-create.tool.d.ts.map +1 -1
  359. package/dist/tools/session/session-create.tool.js +53 -34
  360. package/dist/tools/session/session-create.tool.js.map +1 -1
  361. package/dist/tools/session/session-delete.tool.d.ts +4 -2
  362. package/dist/tools/session/session-delete.tool.d.ts.map +1 -1
  363. package/dist/tools/session/session-delete.tool.js +60 -53
  364. package/dist/tools/session/session-delete.tool.js.map +1 -1
  365. package/dist/tools/session/session-info.tool.d.ts.map +1 -1
  366. package/dist/tools/session/session-info.tool.js +8 -0
  367. package/dist/tools/session/session-info.tool.js.map +1 -1
  368. package/dist/tools/session/session-list.tool.d.ts.map +1 -1
  369. package/dist/tools/session/session-list.tool.js +9 -0
  370. package/dist/tools/session/session-list.tool.js.map +1 -1
  371. package/dist/tools/session/session-switch.tool.d.ts.map +1 -1
  372. package/dist/tools/session/session-switch.tool.js +9 -0
  373. package/dist/tools/session/session-switch.tool.js.map +1 -1
  374. package/dist/tools/simple-tools.d.ts.map +1 -1
  375. package/dist/tools/simple-tools.js +23 -1
  376. package/dist/tools/simple-tools.js.map +1 -1
  377. package/dist/tools/specialized/analyze-deps.tool.d.ts.map +1 -1
  378. package/dist/tools/specialized/analyze-deps.tool.js +10 -0
  379. package/dist/tools/specialized/analyze-deps.tool.js.map +1 -1
  380. package/dist/tools/specialized/auto-fix-agent.tool.d.ts.map +1 -1
  381. package/dist/tools/specialized/auto-fix-agent.tool.js +10 -0
  382. package/dist/tools/specialized/auto-fix-agent.tool.js.map +1 -1
  383. package/dist/tools/specialized/auto-fix.tool.d.ts.map +1 -1
  384. package/dist/tools/specialized/auto-fix.tool.js +12 -2
  385. package/dist/tools/specialized/auto-fix.tool.js.map +1 -1
  386. package/dist/tools/specialized/code-review.tool.d.ts.map +1 -1
  387. package/dist/tools/specialized/code-review.tool.js +11 -1
  388. package/dist/tools/specialized/code-review.tool.js.map +1 -1
  389. package/dist/tools/specialized/explain-code.tool.d.ts.map +1 -1
  390. package/dist/tools/specialized/explain-code.tool.js +11 -1
  391. package/dist/tools/specialized/explain-code.tool.js.map +1 -1
  392. package/dist/tools/specialized/fix-bug.tool.d.ts.map +1 -1
  393. package/dist/tools/specialized/fix-bug.tool.js +11 -1
  394. package/dist/tools/specialized/fix-bug.tool.js.map +1 -1
  395. package/dist/tools/specialized/refactor.tool.d.ts.map +1 -1
  396. package/dist/tools/specialized/refactor.tool.js +11 -1
  397. package/dist/tools/specialized/refactor.tool.js.map +1 -1
  398. package/dist/tools/specialized/write-tests.tool.d.ts.map +1 -1
  399. package/dist/tools/specialized/write-tests.tool.js +11 -1
  400. package/dist/tools/specialized/write-tests.tool.js.map +1 -1
  401. package/dist/tools/system/ai-config.tool.d.ts.map +1 -1
  402. package/dist/tools/system/ai-config.tool.js +10 -0
  403. package/dist/tools/system/ai-config.tool.js.map +1 -1
  404. package/dist/tools/system/ai-models.tool.d.ts.map +1 -1
  405. package/dist/tools/system/ai-models.tool.js +10 -0
  406. package/dist/tools/system/ai-models.tool.js.map +1 -1
  407. package/dist/tools/system/config.tool.d.ts +1 -1
  408. package/dist/tools/system/config.tool.d.ts.map +1 -1
  409. package/dist/tools/system/config.tool.js +10 -0
  410. package/dist/tools/system/config.tool.js.map +1 -1
  411. package/dist/tools/system/env-info.tool.d.ts.map +1 -1
  412. package/dist/tools/system/env-info.tool.js +10 -0
  413. package/dist/tools/system/env-info.tool.js.map +1 -1
  414. package/dist/tools/system/memory-usage.tool.d.ts.map +1 -1
  415. package/dist/tools/system/memory-usage.tool.js +9 -0
  416. package/dist/tools/system/memory-usage.tool.js.map +1 -1
  417. package/dist/tools/system/process-list.tool.d.ts.map +1 -1
  418. package/dist/tools/system/process-list.tool.js +10 -0
  419. package/dist/tools/system/process-list.tool.js.map +1 -1
  420. package/dist/tools/system/shell-exec.tool.d.ts.map +1 -1
  421. package/dist/tools/system/shell-exec.tool.js +10 -0
  422. package/dist/tools/system/shell-exec.tool.js.map +1 -1
  423. package/dist/tools/timeout-test.tool.d.ts.map +1 -1
  424. package/dist/tools/timeout-test.tool.js +9 -0
  425. package/dist/tools/timeout-test.tool.js.map +1 -1
  426. package/dist/utils/format-helpers.d.ts +41 -0
  427. package/dist/utils/format-helpers.d.ts.map +1 -0
  428. package/dist/utils/format-helpers.js +76 -0
  429. package/dist/utils/format-helpers.js.map +1 -0
  430. package/dist/utils/projectContext.enhanced.d.ts.map +1 -1
  431. package/dist/utils/projectContext.enhanced.js +19 -4
  432. package/dist/utils/projectContext.enhanced.js.map +1 -1
  433. package/dist/utils/security.d.ts.map +1 -1
  434. package/dist/utils/security.js +11 -2
  435. package/dist/utils/security.js.map +1 -1
  436. package/dist/utils/validation.d.ts.map +1 -1
  437. package/dist/utils/validation.js +2 -4
  438. package/dist/utils/validation.js.map +1 -1
  439. package/dist/version.d.ts +1 -1
  440. package/dist/version.js +1 -1
  441. package/package.json +1 -1
@@ -0,0 +1,301 @@
1
+ /**
2
+ * KemdiCode MCP Server
3
+ * Copyright (C) 2025-2026 Kemdi Sp. z o.o.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ /**
19
+ * File Backup Restore Tool
20
+ *
21
+ * List and restore file backups created by file-write tool.
22
+ * Backups use the `.bak` naming convention (e.g. `file.ts.bak`).
23
+ * Restoring creates a safety backup of the current file first.
24
+ *
25
+ * @module tools/file/file-backup-restore
26
+ */
27
+ import { z } from 'zod';
28
+ import { promises as fs } from 'fs';
29
+ import { dirname, basename } from 'path';
30
+ import { Logger } from '../../utils/logger.js';
31
+ import { fromNodeError, formatErrorResponse } from '../../utils/errors.js';
32
+ import { validatePath, ValidationError, checkRateLimit } from '../../utils/validation.js';
33
+ const schema = z.object({
34
+ action: z.enum(['list', 'restore']).describe('List available backups or restore one'),
35
+ path: z.string().min(1).describe('Original file path'),
36
+ backupPath: z.string().optional().describe('Specific backup to restore (for restore action)'),
37
+ });
38
+ /**
39
+ * Backup file patterns to search for.
40
+ * file-write creates backups as `<filename>.bak`
41
+ */
42
+ const BACKUP_SUFFIXES = ['.bak'];
43
+ /**
44
+ * Find all backup files for a given original file path
45
+ */
46
+ async function findBackups(originalPath) {
47
+ const dir = dirname(originalPath);
48
+ const base = basename(originalPath);
49
+ const backups = [];
50
+ try {
51
+ const entries = await fs.readdir(dir);
52
+ for (const entry of entries) {
53
+ // Match exact .bak suffix pattern
54
+ for (const suffix of BACKUP_SUFFIXES) {
55
+ if (entry === `${base}${suffix}`) {
56
+ const fullPath = `${dir}/${entry}`;
57
+ try {
58
+ const stats = await fs.stat(fullPath);
59
+ if (stats.isFile()) {
60
+ backups.push({
61
+ path: fullPath,
62
+ size: stats.size,
63
+ modifiedAt: stats.mtime.toISOString(),
64
+ });
65
+ }
66
+ }
67
+ catch {
68
+ // Skip inaccessible files
69
+ }
70
+ }
71
+ }
72
+ // Also match timestamped backup patterns like file.ts.bak.20260130-120000
73
+ if (entry.startsWith(`${base}.bak`)) {
74
+ const fullPath = `${dir}/${entry}`;
75
+ try {
76
+ const stats = await fs.stat(fullPath);
77
+ if (stats.isFile()) {
78
+ // Avoid duplicates
79
+ if (!backups.some((b) => b.path === fullPath)) {
80
+ backups.push({
81
+ path: fullPath,
82
+ size: stats.size,
83
+ modifiedAt: stats.mtime.toISOString(),
84
+ });
85
+ }
86
+ }
87
+ }
88
+ catch {
89
+ // Skip inaccessible files
90
+ }
91
+ }
92
+ }
93
+ }
94
+ catch (error) {
95
+ const nodeError = error;
96
+ if (nodeError.code !== 'ENOENT') {
97
+ throw error;
98
+ }
99
+ // Directory doesn't exist - no backups
100
+ }
101
+ // Sort by modification time, newest first
102
+ backups.sort((a, b) => new Date(b.modifiedAt).getTime() - new Date(a.modifiedAt).getTime());
103
+ return backups;
104
+ }
105
+ export const fileBackupRestoreTool = {
106
+ name: 'file-backup-restore',
107
+ description: 'List available backups or restore a backup file. Works with .bak backups created by file-write.',
108
+ zodSchema: schema,
109
+ metadata: { category: 'file', tags: ['backup', 'restore', 'recovery'] },
110
+ execute: async (args) => {
111
+ const { action, path: inputPath, backupPath } = args;
112
+ if (!checkRateLimit('file-operations', { maxRequests: 50, windowMs: 60000 })) {
113
+ return JSON.stringify({
114
+ success: false,
115
+ error: 'Rate limit exceeded for file operations',
116
+ code: 'RATE_LIMIT_EXCEEDED',
117
+ });
118
+ }
119
+ const sessionCwd = args._sessionCwd;
120
+ // Validate the original file path
121
+ let validatedPath;
122
+ try {
123
+ validatedPath = await validatePath(inputPath, {
124
+ allowSymlinks: false,
125
+ requireWithinProject: false,
126
+ allowReadFromBlocked: true,
127
+ operation: 'read',
128
+ projectRoot: sessionCwd,
129
+ });
130
+ }
131
+ catch (validationError) {
132
+ if (validationError instanceof ValidationError) {
133
+ Logger.warn(`file-backup-restore validation failed: ${validationError.message}`);
134
+ return JSON.stringify({
135
+ success: false,
136
+ error: validationError.message,
137
+ code: validationError.code,
138
+ path: inputPath,
139
+ });
140
+ }
141
+ throw validationError;
142
+ }
143
+ if (action === 'list') {
144
+ try {
145
+ const backups = await findBackups(validatedPath);
146
+ return JSON.stringify({
147
+ success: true,
148
+ action: 'list',
149
+ originalPath: validatedPath,
150
+ backupCount: backups.length,
151
+ backups,
152
+ });
153
+ }
154
+ catch (error) {
155
+ const errorMessage = error instanceof Error ? error.message : String(error);
156
+ Logger.error(`file-backup-restore list error: ${errorMessage}`);
157
+ return JSON.stringify({
158
+ success: false,
159
+ error: errorMessage,
160
+ code: 'LIST_ERROR',
161
+ path: validatedPath,
162
+ });
163
+ }
164
+ }
165
+ // action === 'restore'
166
+ try {
167
+ // Determine which backup to restore
168
+ let restoreFrom;
169
+ if (backupPath) {
170
+ // Validate the specified backup path
171
+ try {
172
+ restoreFrom = await validatePath(backupPath, {
173
+ allowSymlinks: false,
174
+ requireWithinProject: false,
175
+ allowReadFromBlocked: true,
176
+ operation: 'read',
177
+ projectRoot: sessionCwd,
178
+ });
179
+ }
180
+ catch (validationError) {
181
+ if (validationError instanceof ValidationError) {
182
+ return JSON.stringify({
183
+ success: false,
184
+ error: validationError.message,
185
+ code: validationError.code,
186
+ backupPath,
187
+ });
188
+ }
189
+ throw validationError;
190
+ }
191
+ }
192
+ else {
193
+ // Find the most recent backup
194
+ const backups = await findBackups(validatedPath);
195
+ if (backups.length === 0) {
196
+ return JSON.stringify({
197
+ success: false,
198
+ error: `No backups found for: ${validatedPath}`,
199
+ code: 'NO_BACKUPS',
200
+ path: validatedPath,
201
+ });
202
+ }
203
+ restoreFrom = backups[0].path;
204
+ }
205
+ // Check backup file exists
206
+ let backupStats;
207
+ try {
208
+ backupStats = await fs.stat(restoreFrom);
209
+ }
210
+ catch (error) {
211
+ const nodeError = error;
212
+ if (nodeError.code === 'ENOENT') {
213
+ return JSON.stringify({
214
+ success: false,
215
+ error: `Backup file not found: ${restoreFrom}`,
216
+ code: 'BACKUP_NOT_FOUND',
217
+ backupPath: restoreFrom,
218
+ });
219
+ }
220
+ throw error;
221
+ }
222
+ if (!backupStats.isFile()) {
223
+ return JSON.stringify({
224
+ success: false,
225
+ error: `Backup path is not a file: ${restoreFrom}`,
226
+ code: 'NOT_A_FILE',
227
+ backupPath: restoreFrom,
228
+ });
229
+ }
230
+ // Validate destination for write
231
+ let writePath;
232
+ try {
233
+ writePath = await validatePath(inputPath, {
234
+ allowSymlinks: false,
235
+ requireWithinProject: false,
236
+ allowReadFromBlocked: false,
237
+ operation: 'write',
238
+ projectRoot: sessionCwd,
239
+ });
240
+ }
241
+ catch (validationError) {
242
+ if (validationError instanceof ValidationError) {
243
+ return JSON.stringify({
244
+ success: false,
245
+ error: validationError.message,
246
+ code: validationError.code,
247
+ path: inputPath,
248
+ });
249
+ }
250
+ throw validationError;
251
+ }
252
+ // Create a safety backup of the current file before restoring
253
+ let safetyBackupPath = null;
254
+ try {
255
+ const currentStats = await fs.stat(writePath);
256
+ if (currentStats.isFile()) {
257
+ safetyBackupPath = `${writePath}.bak`;
258
+ await fs.copyFile(writePath, safetyBackupPath);
259
+ }
260
+ }
261
+ catch (error) {
262
+ const nodeError = error;
263
+ if (nodeError.code !== 'ENOENT') {
264
+ // Non-critical: log but continue
265
+ Logger.warn(`file-backup-restore: could not create safety backup: ${error.message}`);
266
+ safetyBackupPath = null;
267
+ }
268
+ }
269
+ // Restore: copy backup over original
270
+ await fs.copyFile(restoreFrom, writePath);
271
+ const restoredStats = await fs.stat(writePath);
272
+ Logger.debug(`file-backup-restore: restored ${restoreFrom} -> ${writePath}`);
273
+ return JSON.stringify({
274
+ success: true,
275
+ action: 'restore',
276
+ originalPath: writePath,
277
+ restoredFrom: restoreFrom,
278
+ safetyBackup: safetyBackupPath,
279
+ size: restoredStats.size,
280
+ restoredAt: new Date().toISOString(),
281
+ });
282
+ }
283
+ catch (error) {
284
+ const errorMessage = error instanceof Error ? error.message : String(error);
285
+ Logger.error(`file-backup-restore restore error: ${errorMessage}`);
286
+ const nodeError = error;
287
+ if (nodeError.code) {
288
+ const mcpError = fromNodeError(nodeError, inputPath, 'write');
289
+ const errorResponse = formatErrorResponse(mcpError);
290
+ return JSON.stringify({ success: false, ...errorResponse, path: inputPath });
291
+ }
292
+ return JSON.stringify({
293
+ success: false,
294
+ error: errorMessage,
295
+ code: 'RESTORE_ERROR',
296
+ path: inputPath,
297
+ });
298
+ }
299
+ },
300
+ };
301
+ //# sourceMappingURL=file-backup-restore.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-backup-restore.tool.js","sourceRoot":"","sources":["../../../src/tools/file/file-backup-restore.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * KemdiCode MCP Server
3
+ * Copyright (C) 2025-2026 Kemdi Sp. z o.o.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { UnifiedTool } from '../registry.js';
19
+ export declare const fileCopyTool: UnifiedTool;
20
+ //# sourceMappingURL=file-copy.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-copy.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/file/file-copy.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAkL7C,eAAO,MAAM,YAAY,EAAE,WAiC1B,CAAC"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * KemdiCode MCP Server
3
+ * Copyright (C) 2025-2026 Kemdi Sp. z o.o.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ /**
19
+ * File Copy Tool
20
+ *
21
+ * Copy files with security validation, overwrite protection,
22
+ * automatic directory creation, and batch operations.
23
+ *
24
+ * @module tools/file/file-copy
25
+ */
26
+ import { z } from 'zod';
27
+ import { promises as fs } from 'fs';
28
+ import { dirname } from 'path';
29
+ import { Logger } from '../../utils/logger.js';
30
+ import { fromNodeError, formatErrorResponse } from '../../utils/errors.js';
31
+ import { validatePath, ValidationError, checkRateLimit } from '../../utils/validation.js';
32
+ const schema = z.object({
33
+ operations: z
34
+ .array(z.object({
35
+ source: z.string().min(1).describe('Source file path'),
36
+ destination: z.string().min(1).describe('Destination file path'),
37
+ }))
38
+ .min(1)
39
+ .max(20)
40
+ .describe('Copy operations (1-20)'),
41
+ overwrite: z.boolean().default(false).describe('Overwrite if destination exists'),
42
+ createDirs: z.boolean().default(true).describe('Create destination directories'),
43
+ });
44
+ /**
45
+ * Create parent directories recursively
46
+ */
47
+ async function ensureDirectory(dirPath) {
48
+ try {
49
+ await fs.mkdir(dirPath, { recursive: true });
50
+ }
51
+ catch (error) {
52
+ const nodeError = error;
53
+ if (nodeError.code !== 'EEXIST') {
54
+ throw error;
55
+ }
56
+ }
57
+ }
58
+ /**
59
+ * Copy a single file and return structured result
60
+ */
61
+ async function copySingleFile(source, destination, overwrite, createDirs, sessionCwd) {
62
+ try {
63
+ // Validate source path
64
+ let validatedSource;
65
+ try {
66
+ validatedSource = await validatePath(source, {
67
+ allowSymlinks: false,
68
+ requireWithinProject: false,
69
+ allowReadFromBlocked: true,
70
+ operation: 'read',
71
+ projectRoot: sessionCwd,
72
+ });
73
+ }
74
+ catch (validationError) {
75
+ if (validationError instanceof ValidationError) {
76
+ Logger.warn(`file-copy source validation failed: ${validationError.message}`);
77
+ return {
78
+ success: false,
79
+ error: validationError.message,
80
+ code: validationError.code,
81
+ source,
82
+ };
83
+ }
84
+ throw validationError;
85
+ }
86
+ // Validate destination path
87
+ let validatedDest;
88
+ try {
89
+ validatedDest = await validatePath(destination, {
90
+ allowSymlinks: false,
91
+ requireWithinProject: false,
92
+ allowReadFromBlocked: false,
93
+ operation: 'write',
94
+ projectRoot: sessionCwd,
95
+ });
96
+ }
97
+ catch (validationError) {
98
+ if (validationError instanceof ValidationError) {
99
+ Logger.warn(`file-copy destination validation failed: ${validationError.message}`);
100
+ return {
101
+ success: false,
102
+ error: validationError.message,
103
+ code: validationError.code,
104
+ source,
105
+ destination,
106
+ };
107
+ }
108
+ throw validationError;
109
+ }
110
+ // Check source exists and is a file
111
+ let sourceStats;
112
+ try {
113
+ sourceStats = await fs.stat(validatedSource);
114
+ }
115
+ catch (error) {
116
+ const nodeError = error;
117
+ if (nodeError.code === 'ENOENT') {
118
+ return {
119
+ success: false,
120
+ error: `Source file not found: ${validatedSource}`,
121
+ code: 'FILE_NOT_FOUND',
122
+ source: validatedSource,
123
+ };
124
+ }
125
+ throw error;
126
+ }
127
+ if (!sourceStats.isFile()) {
128
+ return {
129
+ success: false,
130
+ error: `Source is not a file: ${validatedSource}`,
131
+ code: 'NOT_A_FILE',
132
+ source: validatedSource,
133
+ };
134
+ }
135
+ // Check destination does not exist (unless overwrite)
136
+ if (!overwrite) {
137
+ try {
138
+ await fs.stat(validatedDest);
139
+ return {
140
+ success: false,
141
+ error: `Destination already exists: ${validatedDest}`,
142
+ code: 'DESTINATION_EXISTS',
143
+ source: validatedSource,
144
+ destination: validatedDest,
145
+ };
146
+ }
147
+ catch (error) {
148
+ const nodeError = error;
149
+ if (nodeError.code !== 'ENOENT') {
150
+ throw error;
151
+ }
152
+ // ENOENT is expected - destination doesn't exist
153
+ }
154
+ }
155
+ // Create destination directories if needed
156
+ if (createDirs) {
157
+ const destDir = dirname(validatedDest);
158
+ try {
159
+ await fs.access(destDir);
160
+ }
161
+ catch {
162
+ await ensureDirectory(destDir);
163
+ }
164
+ }
165
+ // Copy file
166
+ const copyFlags = overwrite ? 0 : fs.constants.COPYFILE_EXCL;
167
+ await fs.copyFile(validatedSource, validatedDest, copyFlags);
168
+ const destStats = await fs.stat(validatedDest);
169
+ Logger.debug(`file-copy: copied ${validatedSource} -> ${validatedDest} (${destStats.size} bytes)`);
170
+ return {
171
+ success: true,
172
+ source: validatedSource,
173
+ destination: validatedDest,
174
+ size: destStats.size,
175
+ };
176
+ }
177
+ catch (error) {
178
+ const errorMessage = error instanceof Error ? error.message : String(error);
179
+ Logger.error(`file-copy error: ${errorMessage}`);
180
+ const nodeError = error;
181
+ if (nodeError.code) {
182
+ const mcpError = fromNodeError(nodeError, source, 'write');
183
+ const errorResponse = formatErrorResponse(mcpError);
184
+ return { success: false, ...errorResponse, source, destination };
185
+ }
186
+ return { success: false, error: errorMessage, code: 'UNKNOWN_ERROR', source, destination };
187
+ }
188
+ }
189
+ export const fileCopyTool = {
190
+ name: 'file-copy',
191
+ description: 'Copy 1-20 files with overwrite protection and automatic directory creation.',
192
+ zodSchema: schema,
193
+ metadata: { category: 'file', tags: ['copy', 'duplicate', 'batch'] },
194
+ execute: async (args) => {
195
+ const { operations, overwrite, createDirs } = args;
196
+ if (!checkRateLimit('file-operations', { maxRequests: 50, windowMs: 60000 })) {
197
+ return JSON.stringify({
198
+ success: false,
199
+ error: 'Rate limit exceeded for file operations',
200
+ code: 'RATE_LIMIT_EXCEEDED',
201
+ });
202
+ }
203
+ const sessionCwd = args._sessionCwd;
204
+ const results = await Promise.all(operations.map((op) => copySingleFile(op.source, op.destination, overwrite, createDirs, sessionCwd)));
205
+ const successful = results.filter((r) => r.success);
206
+ const failed = results.filter((r) => !r.success);
207
+ return JSON.stringify({
208
+ success: failed.length === 0,
209
+ copied: successful.length,
210
+ failed: failed.length,
211
+ results,
212
+ });
213
+ },
214
+ };
215
+ //# sourceMappingURL=file-copy.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-copy.tool.js","sourceRoot":"","sources":["../../../src/tools/file/file-copy.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE1F,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,UAAU,EAAE,CAAC;SACV,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACtD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACjE,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,wBAAwB,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACjF,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CACjF,CAAC,CAAC;AAIH;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,KAA8B,CAAC;QACjD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,MAAc,EACd,WAAmB,EACnB,SAAkB,EAClB,UAAmB,EACnB,UAAmB;IAEnB,IAAI,CAAC;QACH,uBAAuB;QACvB,IAAI,eAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,eAAe,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;gBAC3C,aAAa,EAAE,KAAK;gBACpB,oBAAoB,EAAE,KAAK;gBAC3B,oBAAoB,EAAE,IAAI;gBAC1B,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,eAAe,EAAE,CAAC;YACzB,IAAI,eAAe,YAAY,eAAe,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC,uCAAuC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9E,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,eAAe,CAAC,OAAO;oBAC9B,IAAI,EAAG,eAAmC,CAAC,IAAI;oBAC/C,MAAM;iBACP,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,CAAC;QACxB,CAAC;QAED,4BAA4B;QAC5B,IAAI,aAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE;gBAC9C,aAAa,EAAE,KAAK;gBACpB,oBAAoB,EAAE,KAAK;gBAC3B,oBAAoB,EAAE,KAAK;gBAC3B,SAAS,EAAE,OAAO;gBAClB,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,eAAe,EAAE,CAAC;YACzB,IAAI,eAAe,YAAY,eAAe,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC,4CAA4C,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnF,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,eAAe,CAAC,OAAO;oBAC9B,IAAI,EAAG,eAAmC,CAAC,IAAI;oBAC/C,MAAM;oBACN,WAAW;iBACZ,CAAC;YACJ,CAAC;YACD,MAAM,eAAe,CAAC;QACxB,CAAC;QAED,oCAAoC;QACpC,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,KAA8B,CAAC;YACjD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,0BAA0B,eAAe,EAAE;oBAClD,IAAI,EAAE,gBAAgB;oBACtB,MAAM,EAAE,eAAe;iBACxB,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,yBAAyB,eAAe,EAAE;gBACjD,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,eAAe;aACxB,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC7B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,+BAA+B,aAAa,EAAE;oBACrD,IAAI,EAAE,oBAAoB;oBAC1B,MAAM,EAAE,eAAe;oBACvB,WAAW,EAAE,aAAa;iBAC3B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,KAA8B,CAAC;gBACjD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAChC,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,iDAAiD;YACnD,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,YAAY;QACZ,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC;QAC7D,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAE7D,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE/C,MAAM,CAAC,KAAK,CAAC,qBAAqB,eAAe,OAAO,aAAa,KAAK,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC;QACnG,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,eAAe;YACvB,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;QAEjD,MAAM,SAAS,GAAG,KAA8B,CAAC;QACjD,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACnE,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,6EAA6E;IAC1F,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;IAEpE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAmB,EAAE;QACvC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAA+B,CAAC;QAE9E,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC7E,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,yCAAyC;gBAChD,IAAI,EAAE,qBAAqB;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAI,IAAgC,CAAC,WAAiC,CAAC;QAEvF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CACrG,CAAC;QAEF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * KemdiCode MCP Server
3
+ * Copyright (C) 2025-2026 Kemdi Sp. z o.o.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { UnifiedTool } from '../registry.js';
19
+ export declare const fileDeleteTool: UnifiedTool;
20
+ //# sourceMappingURL=file-delete.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-delete.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/file/file-delete.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAaH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAkK7C,eAAO,MAAM,cAAc,EAAE,WAkC5B,CAAC"}