kemdicode-mcp 1.15.6 → 1.17.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 (292) hide show
  1. package/README.md +253 -37
  2. package/dist/ai/execute.d.ts.map +1 -1
  3. package/dist/ai/execute.js +5 -1
  4. package/dist/ai/execute.js.map +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/recursive/tool-invoker.d.ts.map +1 -1
  9. package/dist/recursive/tool-invoker.js +76 -28
  10. package/dist/recursive/tool-invoker.js.map +1 -1
  11. package/dist/recursive/types.d.ts +1 -0
  12. package/dist/recursive/types.d.ts.map +1 -1
  13. package/dist/recursive/types.js.map +1 -1
  14. package/dist/server/http-server.d.ts.map +1 -1
  15. package/dist/server/http-server.js +47 -1
  16. package/dist/server/http-server.js.map +1 -1
  17. package/dist/server/index.d.ts +1 -1
  18. package/dist/server/index.d.ts.map +1 -1
  19. package/dist/server/index.js +1 -1
  20. package/dist/server/index.js.map +1 -1
  21. package/dist/server/session-server.d.ts +35 -0
  22. package/dist/server/session-server.d.ts.map +1 -1
  23. package/dist/server/session-server.js +73 -0
  24. package/dist/server/session-server.js.map +1 -1
  25. package/dist/tools/agents/agent-alert.tool.js +1 -1
  26. package/dist/tools/agents/agent-alert.tool.js.map +1 -1
  27. package/dist/tools/agents/agent-history.tool.js +1 -1
  28. package/dist/tools/agents/agent-history.tool.js.map +1 -1
  29. package/dist/tools/agents/agent-inject.tool.js +3 -3
  30. package/dist/tools/agents/agent-inject.tool.js.map +1 -1
  31. package/dist/tools/agents/agent-list.tool.d.ts.map +1 -1
  32. package/dist/tools/agents/agent-list.tool.js +1 -1
  33. package/dist/tools/agents/agent-list.tool.js.map +1 -1
  34. package/dist/tools/agents/agent-register.tool.d.ts.map +1 -1
  35. package/dist/tools/agents/agent-register.tool.js +1 -1
  36. package/dist/tools/agents/agent-register.tool.js.map +1 -1
  37. package/dist/tools/agents/agent-summary.tool.d.ts.map +1 -1
  38. package/dist/tools/agents/agent-summary.tool.js +1 -1
  39. package/dist/tools/agents/agent-summary.tool.js.map +1 -1
  40. package/dist/tools/agents/agent-watch.tool.js +1 -1
  41. package/dist/tools/agents/agent-watch.tool.js.map +1 -1
  42. package/dist/tools/agents/monitor.tool.js +1 -1
  43. package/dist/tools/agents/monitor.tool.js.map +1 -1
  44. package/dist/tools/agents/queue-message.tool.js +1 -1
  45. package/dist/tools/agents/queue-message.tool.js.map +1 -1
  46. package/dist/tools/ask-ai.tool.js +1 -1
  47. package/dist/tools/ask-ai.tool.js.map +1 -1
  48. package/dist/tools/batch.tool.d.ts.map +1 -1
  49. package/dist/tools/batch.tool.js +4 -17
  50. package/dist/tools/batch.tool.js.map +1 -1
  51. package/dist/tools/brainstorm.tool.js +5 -5
  52. package/dist/tools/brainstorm.tool.js.map +1 -1
  53. package/dist/tools/code/code-outline.tool.js +4 -4
  54. package/dist/tools/code/code-outline.tool.js.map +1 -1
  55. package/dist/tools/code/find-definition.tool.js +5 -5
  56. package/dist/tools/code/find-definition.tool.js.map +1 -1
  57. package/dist/tools/code/find-references.tool.js +7 -7
  58. package/dist/tools/code/find-references.tool.js.map +1 -1
  59. package/dist/tools/code/find-symbols.tool.js +4 -4
  60. package/dist/tools/code/find-symbols.tool.js.map +1 -1
  61. package/dist/tools/code/insert-after-symbol.tool.d.ts.map +1 -1
  62. package/dist/tools/code/insert-after-symbol.tool.js +6 -5
  63. package/dist/tools/code/insert-after-symbol.tool.js.map +1 -1
  64. package/dist/tools/code/insert-before-symbol.tool.d.ts.map +1 -1
  65. package/dist/tools/code/insert-before-symbol.tool.js +6 -5
  66. package/dist/tools/code/insert-before-symbol.tool.js.map +1 -1
  67. package/dist/tools/code/rename-symbol.tool.d.ts.map +1 -1
  68. package/dist/tools/code/rename-symbol.tool.js +5 -4
  69. package/dist/tools/code/rename-symbol.tool.js.map +1 -1
  70. package/dist/tools/code/semantic-search.tool.js +6 -6
  71. package/dist/tools/code/semantic-search.tool.js.map +1 -1
  72. package/dist/tools/context/feedback.tool.js +1 -1
  73. package/dist/tools/context/feedback.tool.js.map +1 -1
  74. package/dist/tools/context/get-shared-context.tool.js +3 -3
  75. package/dist/tools/context/get-shared-context.tool.js.map +1 -1
  76. package/dist/tools/context/shared-thoughts.tool.js +4 -4
  77. package/dist/tools/context/shared-thoughts.tool.js.map +1 -1
  78. package/dist/tools/edit/delete-lines.tool.d.ts.map +1 -1
  79. package/dist/tools/edit/delete-lines.tool.js +8 -6
  80. package/dist/tools/edit/delete-lines.tool.js.map +1 -1
  81. package/dist/tools/edit/edit-shared.d.ts +1 -0
  82. package/dist/tools/edit/edit-shared.d.ts.map +1 -1
  83. package/dist/tools/edit/edit-shared.js +1 -0
  84. package/dist/tools/edit/edit-shared.js.map +1 -1
  85. package/dist/tools/edit/insert-at-line.tool.d.ts.map +1 -1
  86. package/dist/tools/edit/insert-at-line.tool.js +6 -5
  87. package/dist/tools/edit/insert-at-line.tool.js.map +1 -1
  88. package/dist/tools/edit/replace-content.tool.d.ts.map +1 -1
  89. package/dist/tools/edit/replace-content.tool.js +9 -8
  90. package/dist/tools/edit/replace-content.tool.js.map +1 -1
  91. package/dist/tools/edit/replace-lines.tool.d.ts.map +1 -1
  92. package/dist/tools/edit/replace-lines.tool.js +7 -6
  93. package/dist/tools/edit/replace-lines.tool.js.map +1 -1
  94. package/dist/tools/file/file-diff.tool.d.ts.map +1 -1
  95. package/dist/tools/file/file-diff.tool.js +10 -8
  96. package/dist/tools/file/file-diff.tool.js.map +1 -1
  97. package/dist/tools/file/file-read.tool.d.ts.map +1 -1
  98. package/dist/tools/file/file-read.tool.js +7 -6
  99. package/dist/tools/file/file-read.tool.js.map +1 -1
  100. package/dist/tools/file/file-search.tool.js +16 -15
  101. package/dist/tools/file/file-search.tool.js.map +1 -1
  102. package/dist/tools/file/file-tree.tool.d.ts.map +1 -1
  103. package/dist/tools/file/file-tree.tool.js +18 -18
  104. package/dist/tools/file/file-tree.tool.js.map +1 -1
  105. package/dist/tools/file/file-write.tool.d.ts.map +1 -1
  106. package/dist/tools/file/file-write.tool.js +9 -8
  107. package/dist/tools/file/file-write.tool.js.map +1 -1
  108. package/dist/tools/git/git-blame.tool.js +13 -13
  109. package/dist/tools/git/git-blame.tool.js.map +1 -1
  110. package/dist/tools/git/git-branch.tool.js +13 -13
  111. package/dist/tools/git/git-branch.tool.js.map +1 -1
  112. package/dist/tools/git/git-diff.tool.d.ts.map +1 -1
  113. package/dist/tools/git/git-diff.tool.js +12 -12
  114. package/dist/tools/git/git-diff.tool.js.map +1 -1
  115. package/dist/tools/git/git-log.tool.d.ts.map +1 -1
  116. package/dist/tools/git/git-log.tool.js +16 -16
  117. package/dist/tools/git/git-log.tool.js.map +1 -1
  118. package/dist/tools/git/git-status.tool.d.ts.map +1 -1
  119. package/dist/tools/git/git-status.tool.js +6 -6
  120. package/dist/tools/git/git-status.tool.js.map +1 -1
  121. package/dist/tools/index.d.ts.map +1 -1
  122. package/dist/tools/index.js +4 -1
  123. package/dist/tools/index.js.map +1 -1
  124. package/dist/tools/kanban/board-create.tool.js +6 -6
  125. package/dist/tools/kanban/board-create.tool.js.map +1 -1
  126. package/dist/tools/kanban/board-invite.tool.js +6 -6
  127. package/dist/tools/kanban/board-invite.tool.js.map +1 -1
  128. package/dist/tools/kanban/board-list.tool.js +4 -4
  129. package/dist/tools/kanban/board-list.tool.js.map +1 -1
  130. package/dist/tools/kanban/board-members.tool.js +4 -4
  131. package/dist/tools/kanban/board-members.tool.js.map +1 -1
  132. package/dist/tools/kanban/board-share.tool.js +5 -5
  133. package/dist/tools/kanban/board-share.tool.js.map +1 -1
  134. package/dist/tools/kanban/board-status.tool.js +1 -1
  135. package/dist/tools/kanban/board-status.tool.js.map +1 -1
  136. package/dist/tools/kanban/task-assign.tool.d.ts.map +1 -1
  137. package/dist/tools/kanban/task-assign.tool.js +5 -5
  138. package/dist/tools/kanban/task-assign.tool.js.map +1 -1
  139. package/dist/tools/kanban/task-claim.tool.js +3 -3
  140. package/dist/tools/kanban/task-claim.tool.js.map +1 -1
  141. package/dist/tools/kanban/task-create.tool.d.ts.map +1 -1
  142. package/dist/tools/kanban/task-create.tool.js +10 -10
  143. package/dist/tools/kanban/task-create.tool.js.map +1 -1
  144. package/dist/tools/kanban/task-list.tool.js +6 -6
  145. package/dist/tools/kanban/task-list.tool.js.map +1 -1
  146. package/dist/tools/kanban/task-push-multi.tool.js +10 -10
  147. package/dist/tools/kanban/task-push-multi.tool.js.map +1 -1
  148. package/dist/tools/kanban/task-update.tool.d.ts.map +1 -1
  149. package/dist/tools/kanban/task-update.tool.js +14 -14
  150. package/dist/tools/kanban/task-update.tool.js.map +1 -1
  151. package/dist/tools/kanban/workspace-create.tool.js +4 -4
  152. package/dist/tools/kanban/workspace-create.tool.js.map +1 -1
  153. package/dist/tools/kanban/workspace-join.tool.js +3 -3
  154. package/dist/tools/kanban/workspace-join.tool.js.map +1 -1
  155. package/dist/tools/kanban/workspace-leave.tool.js +3 -3
  156. package/dist/tools/kanban/workspace-leave.tool.js.map +1 -1
  157. package/dist/tools/kanban/workspace-list.tool.js +3 -3
  158. package/dist/tools/kanban/workspace-list.tool.js.map +1 -1
  159. package/dist/tools/loci/graph-find-path.tool.d.ts.map +1 -1
  160. package/dist/tools/loci/graph-find-path.tool.js +4 -5
  161. package/dist/tools/loci/graph-find-path.tool.js.map +1 -1
  162. package/dist/tools/loci/graph-query.tool.js +5 -5
  163. package/dist/tools/loci/graph-query.tool.js.map +1 -1
  164. package/dist/tools/loci/loci-recall.tool.d.ts.map +1 -1
  165. package/dist/tools/loci/loci-recall.tool.js +3 -4
  166. package/dist/tools/loci/loci-recall.tool.js.map +1 -1
  167. package/dist/tools/loci/sequence-recommend.tool.d.ts.map +1 -1
  168. package/dist/tools/loci/sequence-recommend.tool.js +3 -4
  169. package/dist/tools/loci/sequence-recommend.tool.js.map +1 -1
  170. package/dist/tools/memory/checkpoint-restore.tool.d.ts +20 -0
  171. package/dist/tools/memory/checkpoint-restore.tool.d.ts.map +1 -0
  172. package/dist/tools/memory/checkpoint-restore.tool.js +94 -0
  173. package/dist/tools/memory/checkpoint-restore.tool.js.map +1 -0
  174. package/dist/tools/memory/checkpoint-save.tool.d.ts +20 -0
  175. package/dist/tools/memory/checkpoint-save.tool.d.ts.map +1 -0
  176. package/dist/tools/memory/checkpoint-save.tool.js +140 -0
  177. package/dist/tools/memory/checkpoint-save.tool.js.map +1 -0
  178. package/dist/tools/memory/delete-memory.tool.js +2 -2
  179. package/dist/tools/memory/delete-memory.tool.js.map +1 -1
  180. package/dist/tools/memory/edit-memory.tool.js +6 -6
  181. package/dist/tools/memory/edit-memory.tool.js.map +1 -1
  182. package/dist/tools/memory/index.d.ts +2 -0
  183. package/dist/tools/memory/index.d.ts.map +1 -1
  184. package/dist/tools/memory/index.js +2 -0
  185. package/dist/tools/memory/index.js.map +1 -1
  186. package/dist/tools/memory/list-memories.tool.js +4 -4
  187. package/dist/tools/memory/list-memories.tool.js.map +1 -1
  188. package/dist/tools/memory/read-memory.tool.js +2 -2
  189. package/dist/tools/memory/read-memory.tool.js.map +1 -1
  190. package/dist/tools/memory/write-memory.tool.js +4 -4
  191. package/dist/tools/memory/write-memory.tool.js.map +1 -1
  192. package/dist/tools/mpc/mpc-distribute.tool.d.ts.map +1 -1
  193. package/dist/tools/mpc/mpc-distribute.tool.js +4 -5
  194. package/dist/tools/mpc/mpc-distribute.tool.js.map +1 -1
  195. package/dist/tools/mpc/mpc-reconstruct.tool.d.ts.map +1 -1
  196. package/dist/tools/mpc/mpc-reconstruct.tool.js +3 -4
  197. package/dist/tools/mpc/mpc-reconstruct.tool.js.map +1 -1
  198. package/dist/tools/mpc/mpc-split.tool.d.ts.map +1 -1
  199. package/dist/tools/mpc/mpc-split.tool.js +10 -11
  200. package/dist/tools/mpc/mpc-split.tool.js.map +1 -1
  201. package/dist/tools/mpc/mpc-status.tool.js +4 -4
  202. package/dist/tools/mpc/mpc-status.tool.js.map +1 -1
  203. package/dist/tools/multi-llm/consensus-prompt.tool.d.ts.map +1 -1
  204. package/dist/tools/multi-llm/consensus-prompt.tool.js +9 -11
  205. package/dist/tools/multi-llm/consensus-prompt.tool.js.map +1 -1
  206. package/dist/tools/multi-llm/multi-prompt.tool.d.ts.map +1 -1
  207. package/dist/tools/multi-llm/multi-prompt.tool.js +4 -6
  208. package/dist/tools/multi-llm/multi-prompt.tool.js.map +1 -1
  209. package/dist/tools/project/check-types.tool.js +5 -5
  210. package/dist/tools/project/check-types.tool.js.map +1 -1
  211. package/dist/tools/project/project-info.tool.d.ts.map +1 -1
  212. package/dist/tools/project/project-info.tool.js +4 -4
  213. package/dist/tools/project/project-info.tool.js.map +1 -1
  214. package/dist/tools/project/run-lint.tool.js +5 -5
  215. package/dist/tools/project/run-lint.tool.js.map +1 -1
  216. package/dist/tools/project/run-script.tool.js +6 -6
  217. package/dist/tools/project/run-script.tool.js.map +1 -1
  218. package/dist/tools/project/run-tests.tool.js +5 -5
  219. package/dist/tools/project/run-tests.tool.js.map +1 -1
  220. package/dist/tools/recursive/invocation-log.tool.js +3 -3
  221. package/dist/tools/recursive/invocation-log.tool.js.map +1 -1
  222. package/dist/tools/recursive/invoke-batch.tool.js +5 -5
  223. package/dist/tools/recursive/invoke-batch.tool.js.map +1 -1
  224. package/dist/tools/recursive/invoke-tool.tool.js +6 -6
  225. package/dist/tools/recursive/invoke-tool.tool.js.map +1 -1
  226. package/dist/tools/registry.d.ts +5 -15
  227. package/dist/tools/registry.d.ts.map +1 -1
  228. package/dist/tools/registry.js +32 -7
  229. package/dist/tools/registry.js.map +1 -1
  230. package/dist/tools/rl/rl-dopamine-log.tool.js +4 -4
  231. package/dist/tools/rl/rl-dopamine-log.tool.js.map +1 -1
  232. package/dist/tools/rl/rl-reward-stats.tool.js +4 -4
  233. package/dist/tools/rl/rl-reward-stats.tool.js.map +1 -1
  234. package/dist/tools/session/session-create.tool.d.ts.map +1 -1
  235. package/dist/tools/session/session-create.tool.js +7 -7
  236. package/dist/tools/session/session-create.tool.js.map +1 -1
  237. package/dist/tools/session/session-delete.tool.d.ts.map +1 -1
  238. package/dist/tools/session/session-delete.tool.js +3 -3
  239. package/dist/tools/session/session-delete.tool.js.map +1 -1
  240. package/dist/tools/session/session-info.tool.d.ts.map +1 -1
  241. package/dist/tools/session/session-info.tool.js +2 -2
  242. package/dist/tools/session/session-info.tool.js.map +1 -1
  243. package/dist/tools/session/session-list.tool.js +1 -1
  244. package/dist/tools/session/session-list.tool.js.map +1 -1
  245. package/dist/tools/session/session-switch.tool.d.ts.map +1 -1
  246. package/dist/tools/session/session-switch.tool.js +4 -4
  247. package/dist/tools/session/session-switch.tool.js.map +1 -1
  248. package/dist/tools/specialized/analyze-deps.tool.js +2 -2
  249. package/dist/tools/specialized/analyze-deps.tool.js.map +1 -1
  250. package/dist/tools/specialized/auto-fix-agent.tool.d.ts.map +1 -1
  251. package/dist/tools/specialized/auto-fix-agent.tool.js +5 -5
  252. package/dist/tools/specialized/auto-fix-agent.tool.js.map +1 -1
  253. package/dist/tools/specialized/auto-fix.tool.d.ts.map +1 -1
  254. package/dist/tools/specialized/auto-fix.tool.js +4 -4
  255. package/dist/tools/specialized/auto-fix.tool.js.map +1 -1
  256. package/dist/tools/specialized/code-review.tool.js +4 -4
  257. package/dist/tools/specialized/code-review.tool.js.map +1 -1
  258. package/dist/tools/specialized/explain-code.tool.js +2 -2
  259. package/dist/tools/specialized/explain-code.tool.js.map +1 -1
  260. package/dist/tools/specialized/fix-bug.tool.js +3 -3
  261. package/dist/tools/specialized/fix-bug.tool.js.map +1 -1
  262. package/dist/tools/specialized/refactor.tool.js +2 -2
  263. package/dist/tools/specialized/refactor.tool.js.map +1 -1
  264. package/dist/tools/specialized/write-tests.tool.js +2 -2
  265. package/dist/tools/specialized/write-tests.tool.js.map +1 -1
  266. package/dist/tools/system/ai-config.tool.d.ts.map +1 -1
  267. package/dist/tools/system/ai-config.tool.js +7 -7
  268. package/dist/tools/system/ai-config.tool.js.map +1 -1
  269. package/dist/tools/system/ai-models.tool.d.ts.map +1 -1
  270. package/dist/tools/system/ai-models.tool.js +34 -8
  271. package/dist/tools/system/ai-models.tool.js.map +1 -1
  272. package/dist/tools/system/config.tool.js +1 -1
  273. package/dist/tools/system/config.tool.js.map +1 -1
  274. package/dist/tools/system/env-info.tool.d.ts.map +1 -1
  275. package/dist/tools/system/env-info.tool.js +13 -8
  276. package/dist/tools/system/env-info.tool.js.map +1 -1
  277. package/dist/tools/system/memory-usage.tool.js +3 -3
  278. package/dist/tools/system/memory-usage.tool.js.map +1 -1
  279. package/dist/tools/system/process-list.tool.js +9 -9
  280. package/dist/tools/system/process-list.tool.js.map +1 -1
  281. package/dist/tools/system/shell-exec.tool.d.ts.map +1 -1
  282. package/dist/tools/system/shell-exec.tool.js +73 -44
  283. package/dist/tools/system/shell-exec.tool.js.map +1 -1
  284. package/dist/tools/timeout-test.tool.js +2 -2
  285. package/dist/tools/timeout-test.tool.js.map +1 -1
  286. package/dist/utils/git-utils.d.ts.map +1 -1
  287. package/dist/utils/git-utils.js +5 -5
  288. package/dist/utils/git-utils.js.map +1 -1
  289. package/dist/utils/security.d.ts.map +1 -1
  290. package/dist/utils/security.js +20 -9
  291. package/dist/utils/security.js.map +1 -1
  292. package/package.json +1 -1
package/README.md CHANGED
@@ -5,12 +5,12 @@
5
5
  <h3 align="center">Model Context Protocol Server for AI-Powered Development</h3>
6
6
 
7
7
  <p align="center">
8
- 100+ tools &bull; 7 LLM providers &bull; multi-agent orchestration &bull; kanban &bull; project memory
8
+ 103 tools &bull; 7 LLM providers &bull; multi-agent orchestration &bull; kanban &bull; project memory
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
12
  <a href="https://www.npmjs.com/package/kemdicode-mcp"><img src="https://img.shields.io/badge/npm-kemdicode--mcp-CB3837?style=flat-square&logo=npm&logoColor=white" alt="npm" /></a>
13
- <a href="https://github.com/kemdi-pl/kemdicode-mcp/releases"><img src="https://img.shields.io/badge/version-1.15.6-blue?style=flat-square" alt="Version" /></a>
13
+ <a href="https://github.com/kemdi-pl/kemdicode-mcp/releases"><img src="https://img.shields.io/badge/version-1.17.0-blue?style=flat-square" alt="Version" /></a>
14
14
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-GPL--3.0-green?style=flat-square" alt="License" /></a>
15
15
  </p>
16
16
 
@@ -28,6 +28,8 @@
28
28
  <details>
29
29
  <summary><strong>Table of Contents</strong></summary>
30
30
 
31
+ - [What's New in 1.17.0](#whats-new-in-1170)
32
+ - [Usage Examples](#usage-examples)
31
33
  - [Highlights](#highlights)
32
34
  - [Compatibility](#compatibility)
33
35
  - [Quick Start](#quick-start)
@@ -48,11 +50,76 @@
48
50
 
49
51
  ---
50
52
 
53
+ ## What's New in 1.17.0
54
+
55
+ - **Checkpoint Save/Restore** &mdash; new tools `checkpoint-save` and `checkpoint-restore` for temporary state snapshots in Redis (7-day TTL). Save progress mid-task and restore later.
56
+ - **Session Resume** &mdash; new `/resume` HTTP endpoint returns the last active session with tool history, enabling post-compaction recovery. SSE connections receive a `resume` event on reconnect.
57
+ - **Runtime Tool Broadcast** &mdash; dynamically registered tools now trigger `notifications/tools/list_changed` to all connected MCP clients, so IDEs see new tools without reconnecting.
58
+ - **Session CWD Injection** &mdash; file tools automatically inherit the session's working directory for correct relative path resolution in multi-session setups.
59
+ - **Session Cleanup** &mdash; proper cleanup of activity tracking and server references on session close, preventing memory leaks in long-running servers.
60
+ - **Compact Tool Descriptions** &mdash; reduced tool description sizes across all 103 tools to slow down context compaction in long sessions.
61
+
62
+ ---
63
+
64
+ ## Usage Examples
65
+
66
+ ### Using kemdiCode MCP tools from your AI agent prompt
67
+
68
+ You don't call these tools directly &mdash; your AI agent (Claude Code, Cursor, etc.) invokes them when you describe what you need. Here are real prompts and what happens behind the scenes:
69
+
70
+ **Code review before committing:**
71
+ ```
72
+ You: "Review the auth module for security issues"
73
+ → Agent calls: code-review --files "@src/auth/**/*.ts" --focus "security"
74
+ ```
75
+
76
+ **Fix a bug with AI assistance:**
77
+ ```
78
+ You: "There's a race condition in the queue processor, find and fix it"
79
+ → Agent calls: fix-bug --description "race condition in queue processor" --files "@src/queue/"
80
+ ```
81
+
82
+ **Save progress and restore later:**
83
+ ```
84
+ You: "Save a checkpoint of the current refactoring state"
85
+ → Agent calls: checkpoint-save --name "auth-refactor-v2" --content "<state>" --tags '["refactor","auth"]'
86
+
87
+ You: "Restore the auth refactoring checkpoint"
88
+ → Agent calls: checkpoint-restore --name "auth-refactor-v2"
89
+ ```
90
+
91
+ **Multi-model comparison for architecture decisions:**
92
+ ```
93
+ You: "Ask 3 models whether we should use event sourcing or CRUD for the order service"
94
+ → Agent calls: consensus-prompt \
95
+ --prompt "Event sourcing vs CRUD for an order management service with 10k orders/day" \
96
+ --boardModels '["o:gpt-5","a:claude-sonnet-4-5","g:gemini-3-pro"]' \
97
+ --ceoModel "a:claude-opus-4-5:4k"
98
+ ```
99
+
100
+ **Project memory for persistent context:**
101
+ ```
102
+ You: "Remember that we use JWT with RS256 for auth in this project"
103
+ → Agent calls: write-memory --name "auth-strategy" --content "JWT with RS256, keys in /etc/keys/" --tags '["auth","architecture"]'
104
+
105
+ You: "What was our auth strategy?"
106
+ → Agent calls: read-memory --name "auth-strategy"
107
+ ```
108
+
109
+ **Multi-agent task distribution:**
110
+ ```
111
+ You: "Set up 3 agents: backend, frontend, QA. Backend works on the API, frontend on React components"
112
+ → Agent calls: agent-register → task-create → task-push-multi
113
+ → Agents coordinate via shared-thoughts and queue-message
114
+ ```
115
+
116
+ ---
117
+
51
118
  ## Highlights
52
119
 
53
120
  | Capability | Description |
54
121
  |:-----------|:------------|
55
- | **100+ MCP Tools** | Code review, refactoring, testing, git, file management, AST editing, memory, kanban |
122
+ | **103 MCP Tools** | Code review, refactoring, testing, git, file management, AST editing, memory, checkpoints, kanban |
56
123
  | **7 LLM Providers** | Native SDKs for OpenAI (GPT-5), Anthropic (Claude 4.5), Gemini (Gemini 3) + OpenAI-compatible for Groq, DeepSeek, Ollama, OpenRouter |
57
124
  | **Multi-Agent** | Agents connect via HTTP, share context through Redis Pub/Sub, coordinate via kanban boards |
58
125
  | **Parallel Multi-Model** | Send one prompt to N models simultaneously; CEO-and-Board consensus pattern |
@@ -271,7 +338,7 @@ ai-config --action test
271
338
 
272
339
  ## Tool Reference
273
340
 
274
- > **101 tools** across 20 categories.
341
+ > **103 tools** across 20 categories.
275
342
 
276
343
  | Category | # | Tools |
277
344
  |:---------|:-:|:------|
@@ -281,7 +348,7 @@ ai-config --action test
281
348
  | **Line Editing** | 4 | `insert-at-line` `delete-lines` `replace-lines` `replace-content` |
282
349
  | **Symbol Editing** | 3 | `insert-before-symbol` `insert-after-symbol` `rename-symbol` |
283
350
  | **Code Modification** | 5 | `fix-bug` `refactor` `auto-fix` `auto-fix-agent` `write-tests` |
284
- | **Project Memory** | 5 | `write-memory` `read-memory` `list-memories` `edit-memory` `delete-memory` |
351
+ | **Project Memory** | 7 | `write-memory` `read-memory` `list-memories` `edit-memory` `delete-memory` `checkpoint-save` `checkpoint-restore` |
285
352
  | **Git** | 5 | `git-status` `git-diff` `git-log` `git-blame` `git-branch` |
286
353
  | **File Operations** | 5 | `file-read` `file-write` `file-search` `file-tree` `file-diff` |
287
354
  | **Project** | 5 | `project-info` `run-script` `run-tests` `run-lint` `check-types` |
@@ -300,44 +367,193 @@ ai-config --action test
300
367
 
301
368
  ## Architecture
302
369
 
370
+ ### System Overview
371
+
372
+ ```
373
+ ┌─────────────────────────────────────────────────────────────────────────┐
374
+ │ IDE / AI Agent Layer │
375
+ │ │
376
+ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
377
+ │ │ Claude Code │ │ Cursor │ │ KiroCode │ │ RooCode │ │
378
+ │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └─────┬─────┘ │
379
+ │ │ │ │ │ │
380
+ └──────────┼─────────────────┼─────────────────┼─────────────────┼─────────┘
381
+ │ SSE + JSON-RPC (MCP Protocol) │ │
382
+ └─────────────────┼─────────────────┘ │
383
+ ▼ │
384
+ ┌────────────────────────────────────────────────────────────────┐│
385
+ │ kemdiCode MCP Server (HTTP :3100) ││
386
+ │ ┌───────────────────────────────────────────────────────────┐ ││
387
+ │ │ Session Manager │◄┘│
388
+ │ │ • Per-client sessions with CWD isolation │ │
389
+ │ │ • Activity tracking (last tool, args, timestamp) │ │
390
+ │ │ • /resume endpoint for post-compaction recovery │ │
391
+ │ │ • SSE keep-alive + resume events on reconnect │ │
392
+ │ └───────────────────────┬───────────────────────────────────┘ │
393
+ │ ▼ │
394
+ │ ┌───────────────────────────────────────────────────────────┐ │
395
+ │ │ Tool Registry (103 tools) │ │
396
+ │ │ │ │
397
+ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │
398
+ │ │ │Code │ │File & │ │Git │ │Multi-Agent │ │ │
399
+ │ │ │Analysis │ │Editing │ │Operations│ │Coordination │ │ │
400
+ │ │ │(8 tools) │ │(12 tools)│ │(5 tools) │ │(13 tools) │ │ │
401
+ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────────┘ │ │
402
+ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │
403
+ │ │ │AI Agents │ │Kanban │ │Project │ │Memory & │ │ │
404
+ │ │ │& LLM │ │& Boards │ │Management│ │Checkpoints │ │ │
405
+ │ │ │(6 tools) │ │(16 tools)│ │(5 tools) │ │(7 tools) │ │ │
406
+ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────────┘ │ │
407
+ │ │ • Runtime registration with tools/list_changed broadcast │ │
408
+ │ │ • Zod schema validation + auto JSON Schema generation │ │
409
+ │ └───────────────────────┬───────────────────────────────────┘ │
410
+ │ ▼ │
411
+ │ ┌───────────────────────────────────────────────────────────┐ │
412
+ │ │ Provider Registry (7 providers) │ │
413
+ │ │ │ │
414
+ │ │ ┌─────────┐ ┌──────────┐ ┌────────┐ ┌────────────────┐ │ │
415
+ │ │ │ OpenAI │ │Anthropic │ │ Gemini │ │ OpenAI-compat │ │ │
416
+ │ │ │ (native)│ │ (native) │ │(native)│ │ Groq DeepSeek │ │ │
417
+ │ │ │ │ │ │ │ │ │ Ollama OpenRtr │ │ │
418
+ │ │ └─────────┘ └──────────┘ └────────┘ └────────────────┘ │ │
419
+ │ │ • Lazy init on first use • Hot-reload without restart │ │
420
+ │ │ • Unified thinking tokens: effort / budget / budget │ │
421
+ │ │ • Model spec syntax: provider:model:thinking │ │
422
+ │ └───────────────────────────────────────────────────────────┘ │
423
+ │ │
424
+ │ ┌───────────────────────────────────────────────────────────┐ │
425
+ │ │ Tree-sitter AST Engine │ │
426
+ │ │ • WASM parsers for 19 languages │ │
427
+ │ │ • Symbol navigation, rename, insert before/after │ │
428
+ │ │ • Indentation detection + context-aware editing │ │
429
+ │ └───────────────────────────────────────────────────────────┘ │
430
+ │ │
431
+ │ ┌───────────────────────────────────────────────────────────┐ │
432
+ │ │ Runtime Abstraction Layer │ │
433
+ │ │ • Auto-detects Bun vs Node.js at startup │ │
434
+ │ │ • Unified HTTP server (Bun.serve / node:http) │ │
435
+ │ │ • Unified process spawning (Bun.spawn / child_process) │ │
436
+ │ └───────────────────────────────────────────────────────────┘ │
437
+ └────────────────────────────┬────────────────────────────────────┘
438
+
439
+
440
+ ┌────────────────────────────────────────────────────────────────┐
441
+ │ Redis (DB 2) │
442
+ │ │
443
+ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
444
+ │ │ Context │ │ Agents │ │ Kanban │ │
445
+ │ │ mcp:context: │ │ mcp:agents: │ │ mcp:kanban: │ │
446
+ │ │ mcp:memory: │ │ mcp:queue: │ │ workspace:<id> │ │
447
+ │ │ mcp:checkpoint│ │ mcp:messages:│ │ board:<id> │ │
448
+ │ └──────────────┘ └──────────────┘ │ task:<id> │ │
449
+ │ └──────────────────────┘ │
450
+ │ ┌─────────────────────────────────────────────────────────┐ │
451
+ │ │ Pub/Sub Channels │ │
452
+ │ │ mcp:channel:broadcast mcp:channel:inject:<agentId> │ │
453
+ │ │ mcp:channel:alerts mcp:channel:thoughts │ │
454
+ │ └─────────────────────────────────────────────────────────┘ │
455
+ └────────────────────────────────────────────────────────────────┘
456
+ ```
457
+
458
+ ### Request Lifecycle
459
+
303
460
  ```
304
- ┌──────────────────────────────────────┐
305
- kemdiCode MCP (HTTP :3100)
306
- └──────┬──────────────┬────────────────┘
307
-
308
- ┌───────────▼──┐ ┌──────▼────────┐
309
- │ Claude Code │ │ Cursor / IDE
310
- └───────────┬──┘ └──────┬────────┘
311
-
312
- ┌───────────▼──────────────▼────────┐
313
- Provider Registry
314
- OpenAI Anthropic Gemini ... │
315
- └───────────────────┬───────────────┘
316
-
317
- ┌───────────────────▼───────────────┐
318
- Redis (DB 2) │
319
- context · agents · kanban · pubsub│
320
- └───────────────────────────────────┘
461
+ Client (IDE) kemdiCode MCP Redis / LLM
462
+
463
+ │── GET /sse ──────────────────►│ │
464
+ │◄── SSE: endpoint + resume ───│ create session, track activity
465
+ │ │ │
466
+ │── POST /message ────────────►│
467
+ │ { tool: "code-review" } │ │
468
+ │── validate (Zod) ────────────►│
469
+ │ │── execute tool ──────────────►│
470
+ │ ├─ share result to Redis
471
+ └─ record session activity
472
+ │◄── SSE: result ─────────────│ │
473
+ │ │
474
+ │── POST /message ────────────►│ │
475
+ { tool: "ask-ai" } │── route to provider ────────►│
476
+ │◄── LLM response ────────────│
477
+ │◄── SSE: result ─────────────│ │
321
478
  ```
322
479
 
480
+ ### Source Tree
481
+
323
482
  ```
324
483
  src/
325
- ├── index.ts # HTTP server, SSE, MCP protocol
484
+ ├── index.ts # Entry point, CLI args, server bootstrap
485
+ ├── constants.ts # Error messages, timeouts, limits
486
+ ├── server/
487
+ │ ├── http-server.ts # HTTP routes: /sse, /message, /resume, /stream
488
+ │ ├── session-server.ts # MCP Server per session, CWD injection, activity tracking
489
+ │ ├── types.ts # ServerConfig, VERSION
490
+ │ └── index.ts # Public API exports
326
491
  ├── ai/
327
- │ ├── client.ts # Unified completion API
328
- │ ├── model-spec.ts # provider:model:thinking parser
329
- │ ├── providers/ # OpenAI, Anthropic, Gemini, OpenAI-compat
330
- │ ├── agents.ts # Agent system prompts (plan, build, explore)
331
- └── file-context.ts # File attachment handling
332
- ├── runtime/ # Bun / Node.js abstraction
333
- ├── config/ # Typed config with Zod validation
334
- ├── context/ # Redis Pub/Sub, agent monitor, feedback loop
335
- ├── kanban/ # Tasks, boards, workspaces, membership
336
- ├── recursive/ # Safe recursive tool invocation (depth 2)
337
- ├── session/ # Session lifecycle
338
- ├── tree-sitter/ # WASM-based AST parsing (19 languages)
339
- ├── tools/ # 20 tool categories (100+ tools)
340
- └── utils/ # Cache, validation, logging, errors
492
+ │ ├── client.ts # Completion router (multi-provider + fallback)
493
+ │ ├── execute.ts # High-level AI execution with agent prompts
494
+ │ ├── agents.ts # Agent configs: plan, build, explore
495
+ │ ├── model-spec.ts # Parser for provider:model:thinking syntax
496
+ ├── file-context.ts # File attachment → prompt injection
497
+ │ └── providers/
498
+ ├── types.ts # LLMProvider interface, ProviderId, ThinkingConfig
499
+ ├── registry.ts # Provider registry with lazy initialization
500
+ ├── openai.provider.ts # OpenAI (reasoning_effort)
501
+ ├── anthropic.provider.ts # Anthropic (thinking budget)
502
+ ├── gemini.provider.ts # Google GenAI (thinking budget)
503
+ │ └── openai-compat.provider.ts # Groq, DeepSeek, Ollama, OpenRouter
504
+ ├── runtime/
505
+ │ ├── index.ts # isBun / isNode detection
506
+ │ ├── http.ts # Bun.serve ↔ node:http
507
+ │ ├── process.ts # Bun.spawn ↔ child_process
508
+ │ └── crypto.ts # Crypto utilities
509
+ ├── context/
510
+ │ ├── agent-monitor.ts # Redis Pub/Sub for agent lifecycle
511
+ │ ├── storage.ts # Redis-based shared context (DB 2)
512
+ │ ├── feedback-loop.ts # Learning from iteration results
513
+ │ └── iteration-tracker.ts # Track fix attempts per issue
514
+ ├── kanban/
515
+ │ ├── kanban-store.ts # Task CRUD with Redis persistence
516
+ │ ├── workspace-store.ts # Workspace operations
517
+ │ ├── board-store.ts # Board management
518
+ │ ├── membership-store.ts # Role-based access (owner/admin/member/viewer)
519
+ │ └── migration.ts # Lazy migration to multi-board schema
520
+ ├── recursive/
521
+ │ └── tool-invoker.ts # Safe tool calls: max depth 2, rate-limited
522
+ ├── tree-sitter/
523
+ │ ├── parser-manager.ts # WASM parser lifecycle (19 languages)
524
+ │ └── types.ts # Language mappings, symbol types
525
+ ├── session/
526
+ │ ├── manager.ts # Session create/destroy lifecycle
527
+ │ └── cwd-resolver.ts # Project path resolution priority
528
+ ├── tools/ # 20 categories, 103 tools
529
+ │ ├── registry.ts # UnifiedTool interface, Zod → JSON Schema, broadcast
530
+ │ ├── index.ts # Tool registration
531
+ │ ├── agents/ # 9 tools: register, watch, alert, inject, monitor...
532
+ │ ├── code/ # 8 tools: find-definition, rename-symbol, outline...
533
+ │ ├── context/ # 4 tools: shared-thoughts, feedback, shared-context
534
+ │ ├── edit/ # 4 tools: insert-at-line, delete/replace-lines
535
+ │ ├── file/ # 5 tools: read, write, search, tree, diff
536
+ │ ├── git/ # 5 tools: status, diff, log, blame, branch
537
+ │ ├── kanban/ # 16 tools: tasks, boards, workspaces
538
+ │ ├── memory/ # 7 tools: CRUD + checkpoint-save/restore
539
+ │ ├── multi-llm/ # 2 tools: multi-prompt, consensus-prompt
540
+ │ ├── project/ # 5 tools: info, scripts, tests, lint, types
541
+ │ ├── recursive/ # 3 tools: invoke-tool, invoke-batch, log
542
+ │ ├── specialized/ # 8 tools: code-review, fix-bug, refactor, write-tests
543
+ │ ├── session/ # 5 tools: CRUD + switch
544
+ │ ├── system/ # 10 tools: shell, env, memory, ai-config, ping
545
+ │ ├── loci/ # 4 tools: graph-query, find-path, recall, recommend
546
+ │ ├── mpc/ # 4 tools: split, distribute, reconstruct, status
547
+ │ └── rl/ # 2 tools: reward-stats, dopamine-log
548
+ └── utils/
549
+ ├── commandExecutor.ts # Process spawning with timeout + kill
550
+ ├── file-utils.ts # Read/write with encoding detection
551
+ ├── edit-utils.ts # Line-based editing helpers
552
+ ├── git-utils.ts # Git command builders
553
+ ├── cache.ts # In-memory TTL cache
554
+ ├── validation.ts # Rate limiting, input sanitization
555
+ ├── errors.ts # Typed error classes
556
+ └── logger.ts # Structured logging
341
557
  ```
342
558
 
343
559
  ---
@@ -1 +1 @@
1
- {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/ai/execute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IAEf,mDAAmD;IACnD,KAAK,EAAE,SAAS,CAAC;IAEjB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB,yEAAyE;IACzE,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,gDAAgD;IAChD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtC,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAEhB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IAEd,iCAAiC;IACjC,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AA0CD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB1E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAS7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAM5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAKhE;AAGD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/ai/execute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IAEf,mDAAmD;IACnD,KAAK,EAAE,SAAS,CAAC;IAEjB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB,yEAAyE;IACzE,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,gDAAgD;IAChD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtC,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAEhB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IAEd,iCAAiC;IACjC,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6CD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB1E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAS7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAM5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAKhE;AAGD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -5,6 +5,7 @@
5
5
  * @license GPL-3.0
6
6
  */
7
7
  import { complete, getClientConfig } from './client.js';
8
+ import { hasProviderPrefix } from './model-spec.js';
8
9
  import { buildAgentMessages, getAgentTemperature, getAgentMaxTokens, } from './agents.js';
9
10
  import { loadFileContexts, formatFileContextForPrompt } from './file-context.js';
10
11
  // Simple in-memory session storage for conversation history
@@ -14,7 +15,10 @@ const sessionHistory = new Map();
14
15
  */
15
16
  async function prepareAndExecute(options) {
16
17
  const config = getClientConfig();
17
- if (!config) {
18
+ // Allow provider-prefixed models (e.g. "anthropic:claude-...") to work without
19
+ // initAIClient(). The multi-provider path in complete() does not require the
20
+ // OpenAI SDK client.
21
+ if (!config && !(options.model && hasProviderPrefix(options.model))) {
18
22
  throw new Error('AI client not initialized. Call initAIClient() first.');
19
23
  }
20
24
  const startTime = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/ai/execute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/ai/execute.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,kBAAkB,CAAC;AAS1B,OAAO,EAAW,KAAK,YAAY,EAAmC,MAAM,mBAAmB,CAAC;AAGhG,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAQ9C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAG/E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,CAGhD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAM/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,kBAAkB,CAAC;AAS1B,OAAO,EAAW,KAAK,YAAY,EAA0D,MAAM,mBAAmB,CAAC;AAIvH,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAQ9C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAG/E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,CAGhD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAM/C"}
package/dist/index.js CHANGED
@@ -49,7 +49,8 @@ import { config } from './config/index.js';
49
49
  import { initContext, initAgentMonitor, getSessionId } from './context/index.js';
50
50
  import { initAIClient } from './ai/index.js';
51
51
  import { registerBuiltinProviders, setProviderConfig } from './ai/providers/registry.js';
52
- import { VERSION, startHttpServer, stopHttpServer } from './server/index.js';
52
+ import { VERSION, startHttpServer, stopHttpServer, broadcastNotification } from './server/index.js';
53
+ import { initToolsBroadcast } from './tools/registry.js';
53
54
  // Re-export for backwards compatibility
54
55
  export { VERSION, SSEEventType, } from './server/index.js';
55
56
  export { sendSSEEvent, sendProgress, startProgress, stopProgress, updateProgressOutput, getProgressState, setProgressSSEResponse, deleteProgressState, } from './server/index.js';
@@ -199,6 +200,8 @@ async function main() {
199
200
  process.on('SIGINT', () => shutdown('SIGINT'));
200
201
  // Start HTTP server
201
202
  await startHttpServer(serverConfig.host, serverConfig.port);
203
+ // Enable runtime tool registration notifications
204
+ initToolsBroadcast(() => broadcastNotification('notifications/tools/list_changed'));
202
205
  }
203
206
  main().catch((error) => {
204
207
  Logger.error('Fatal:', error);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-invoker.d.ts","sourceRoot":"","sources":["../../src/recursive/tool-invoker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAOlB,MAAM,YAAY,CAAC;AAyBpB;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,GAAE,gBAAiC,GACxC,OAAO,CAAC,iBAAiB,CAAC,CAiF5B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,GAAE,gBAAiC,GACxC,OAAO,CAAC,oBAAoB,CAAC,CAyI/B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,qBAAqB,EAAE,EACjC,MAAM,GAAE,gBAAiC,EACzC,QAAQ,GAAE,OAAc,GACvB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAajC;AAyBD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,GACjB,OAAO,CACR,KAAK,CAAC;IACJ,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CACH,CAMA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAE3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD"}
1
+ {"version":3,"file":"tool-invoker.d.ts","sourceRoot":"","sources":["../../src/recursive/tool-invoker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAOlB,MAAM,YAAY,CAAC;AA0CpB;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,GAAE,gBAAiC,GACxC,OAAO,CAAC,iBAAiB,CAAC,CAiF5B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,GAAE,gBAAiC,GACxC,OAAO,CAAC,oBAAoB,CAAC,CAiK/B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,qBAAqB,EAAE,EACjC,MAAM,GAAE,gBAAiC,EACzC,QAAQ,GAAE,OAAc,GACvB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAajC;AA8BD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,GACjB,OAAO,CACR,KAAK,CAAC;IACJ,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CACH,CAWA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAE3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD"}
@@ -30,12 +30,27 @@ import { DEFAULT_POLICY, RECURSIVE_KEYS, INVOCATION_TTL, RATE_LIMIT_WINDOW, MAX_
30
30
  /** Current invocation context (per-request) */
31
31
  const contextStack = new Map();
32
32
  const getRedis = getSharedRedis;
33
+ /**
34
+ * Try to get Redis client, returning null if unavailable.
35
+ */
36
+ async function tryGetRedis() {
37
+ try {
38
+ return await getRedis();
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
33
44
  /**
34
45
  * Read and normalize rate limit entry from Redis.
35
46
  * Resets the window if expired.
47
+ * Returns default entry if Redis is unavailable.
36
48
  */
37
49
  async function getRateLimitEntry(agentId) {
38
- const client = await getRedis();
50
+ const client = await tryGetRedis();
51
+ if (!client) {
52
+ return { count: 0, windowStart: Date.now() };
53
+ }
39
54
  const rateLimitKey = RECURSIVE_KEYS.rateLimit(agentId);
40
55
  const data = await client.get(rateLimitKey);
41
56
  let entry = { count: 0, windowStart: Date.now() };
@@ -142,13 +157,22 @@ export async function invokeTool(request, policy = DEFAULT_POLICY) {
142
157
  // For now, we'll allow but log a warning
143
158
  Logger.warn(`invoke-tool: ${request.toolName} requires approval, proceeding anyway`);
144
159
  }
145
- const client = await getRedis();
160
+ const client = await tryGetRedis();
161
+ let redisAvailable = !!client;
146
162
  try {
147
- // Update rate limit
148
- const rateEntry = await getRateLimitEntry(request.agentId);
149
- rateEntry.count++;
150
- const rateLimitKey = RECURSIVE_KEYS.rateLimit(request.agentId);
151
- await client.setex(rateLimitKey, 120, JSON.stringify(rateEntry));
163
+ // Update rate limit (skip if Redis unavailable)
164
+ if (client) {
165
+ try {
166
+ const rateEntry = await getRateLimitEntry(request.agentId);
167
+ rateEntry.count++;
168
+ const rateLimitKey = RECURSIVE_KEYS.rateLimit(request.agentId);
169
+ await client.setex(rateLimitKey, 120, JSON.stringify(rateEntry));
170
+ }
171
+ catch {
172
+ redisAvailable = false;
173
+ Logger.warn('invoke-tool: Redis rate limit update failed, continuing without persistence');
174
+ }
175
+ }
152
176
  // Set up context
153
177
  const parentContext = contextStack.get(request.agentId);
154
178
  const context = {
@@ -158,13 +182,20 @@ export async function invokeTool(request, policy = DEFAULT_POLICY) {
158
182
  startTime,
159
183
  };
160
184
  contextStack.set(request.agentId, context);
161
- // Store invocation data
162
- await client.setex(RECURSIVE_KEYS.invocation(invocationId), INVOCATION_TTL, JSON.stringify({
163
- ...request,
164
- invocationId,
165
- depth: context.currentDepth,
166
- startTime,
167
- }));
185
+ // Store invocation data (skip if Redis unavailable)
186
+ if (client && redisAvailable) {
187
+ try {
188
+ await client.setex(RECURSIVE_KEYS.invocation(invocationId), INVOCATION_TTL, JSON.stringify({
189
+ ...request,
190
+ invocationId,
191
+ depth: context.currentDepth,
192
+ startTime,
193
+ }));
194
+ }
195
+ catch {
196
+ Logger.warn('invoke-tool: Redis invocation storage failed, continuing without persistence');
197
+ }
198
+ }
168
199
  // Get and execute tool
169
200
  const tool = getToolByName(request.toolName);
170
201
  if (!tool) {
@@ -172,7 +203,7 @@ export async function invokeTool(request, policy = DEFAULT_POLICY) {
172
203
  }
173
204
  const result = await executeTool(request.toolName, request.args);
174
205
  const duration = Date.now() - startTime;
175
- // Log invocation
206
+ // Log invocation (best-effort)
176
207
  await logInvocation(request.agentId, {
177
208
  invocationId,
178
209
  toolName: request.toolName,
@@ -198,27 +229,36 @@ export async function invokeTool(request, policy = DEFAULT_POLICY) {
198
229
  // Result is not JSON (e.g., ping returns plain text)
199
230
  parsedResult = result;
200
231
  }
201
- return {
232
+ const invocationResult = {
202
233
  invocationId,
203
234
  success: true,
204
235
  result: parsedResult,
205
236
  duration,
206
237
  depth: context.currentDepth,
207
238
  };
239
+ if (!redisAvailable) {
240
+ invocationResult.warning = 'Redis unavailable - rate limiting and logging degraded';
241
+ }
242
+ return invocationResult;
208
243
  }
209
244
  catch (error) {
210
245
  const errorMessage = error instanceof Error ? error.message : String(error);
211
246
  const duration = Date.now() - startTime;
212
- // Log failed invocation
213
- await logInvocation(request.agentId, {
214
- invocationId,
215
- toolName: request.toolName,
216
- success: false,
217
- error: errorMessage,
218
- duration,
219
- depth: safety.currentDepth || 0,
220
- timestamp: startTime,
221
- });
247
+ // Log failed invocation (best-effort, do not throw)
248
+ try {
249
+ await logInvocation(request.agentId, {
250
+ invocationId,
251
+ toolName: request.toolName,
252
+ success: false,
253
+ error: errorMessage,
254
+ duration,
255
+ depth: safety.currentDepth || 0,
256
+ timestamp: startTime,
257
+ });
258
+ }
259
+ catch {
260
+ Logger.warn('invoke-tool: Failed to log invocation error to Redis');
261
+ }
222
262
  // Restore context
223
263
  const parentContext = contextStack.get(request.agentId);
224
264
  if (parentContext && parentContext.currentDepth > 0) {
@@ -263,7 +303,11 @@ export async function invokeBatch(requests, policy = DEFAULT_POLICY, parallel =
263
303
  * Log an invocation
264
304
  */
265
305
  async function logInvocation(agentId, entry) {
266
- const client = await getRedis();
306
+ const client = await tryGetRedis();
307
+ if (!client) {
308
+ Logger.debug('invoke-tool: Redis unavailable, skipping invocation log');
309
+ return;
310
+ }
267
311
  const logKey = RECURSIVE_KEYS.log(agentId);
268
312
  await client.lpush(logKey, JSON.stringify(entry));
269
313
  await client.ltrim(logKey, 0, MAX_LOG_ENTRIES - 1);
@@ -273,7 +317,11 @@ async function logInvocation(agentId, entry) {
273
317
  * Get invocation log for an agent
274
318
  */
275
319
  export async function getInvocationLog(agentId, limit = 20) {
276
- const client = await getRedis();
320
+ const client = await tryGetRedis();
321
+ if (!client) {
322
+ Logger.debug('invoke-tool: Redis unavailable, returning empty invocation log');
323
+ return [];
324
+ }
277
325
  const logKey = RECURSIVE_KEYS.log(agentId);
278
326
  const entries = await client.lrange(logKey, 0, limit - 1);
279
327
  return entries.map((e) => JSON.parse(e));