kemdicode-mcp 1.15.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 (872) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +486 -0
  3. package/dist/ai/agents.d.ts +40 -0
  4. package/dist/ai/agents.d.ts.map +1 -0
  5. package/dist/ai/agents.js +164 -0
  6. package/dist/ai/agents.js.map +1 -0
  7. package/dist/ai/client.d.ts +73 -0
  8. package/dist/ai/client.d.ts.map +1 -0
  9. package/dist/ai/client.js +235 -0
  10. package/dist/ai/client.js.map +1 -0
  11. package/dist/ai/execute.d.ts +61 -0
  12. package/dist/ai/execute.d.ts.map +1 -0
  13. package/dist/ai/execute.js +98 -0
  14. package/dist/ai/execute.js.map +1 -0
  15. package/dist/ai/file-context.d.ts +44 -0
  16. package/dist/ai/file-context.d.ts.map +1 -0
  17. package/dist/ai/file-context.js +220 -0
  18. package/dist/ai/file-context.js.map +1 -0
  19. package/dist/ai/index.d.ts +14 -0
  20. package/dist/ai/index.d.ts.map +1 -0
  21. package/dist/ai/index.js +21 -0
  22. package/dist/ai/index.js.map +1 -0
  23. package/dist/ai/model-spec.d.ts +33 -0
  24. package/dist/ai/model-spec.d.ts.map +1 -0
  25. package/dist/ai/model-spec.js +106 -0
  26. package/dist/ai/model-spec.js.map +1 -0
  27. package/dist/ai/providers/anthropic.provider.d.ts +23 -0
  28. package/dist/ai/providers/anthropic.provider.d.ts.map +1 -0
  29. package/dist/ai/providers/anthropic.provider.js +135 -0
  30. package/dist/ai/providers/anthropic.provider.js.map +1 -0
  31. package/dist/ai/providers/gemini.provider.d.ts +20 -0
  32. package/dist/ai/providers/gemini.provider.d.ts.map +1 -0
  33. package/dist/ai/providers/gemini.provider.js +113 -0
  34. package/dist/ai/providers/gemini.provider.js.map +1 -0
  35. package/dist/ai/providers/index.d.ts +13 -0
  36. package/dist/ai/providers/index.d.ts.map +1 -0
  37. package/dist/ai/providers/index.js +12 -0
  38. package/dist/ai/providers/index.js.map +1 -0
  39. package/dist/ai/providers/openai-compat.provider.d.ts +13 -0
  40. package/dist/ai/providers/openai-compat.provider.d.ts.map +1 -0
  41. package/dist/ai/providers/openai-compat.provider.js +68 -0
  42. package/dist/ai/providers/openai-compat.provider.js.map +1 -0
  43. package/dist/ai/providers/openai-shared.d.ts +41 -0
  44. package/dist/ai/providers/openai-shared.d.ts.map +1 -0
  45. package/dist/ai/providers/openai-shared.js +67 -0
  46. package/dist/ai/providers/openai-shared.js.map +1 -0
  47. package/dist/ai/providers/openai.provider.d.ts +22 -0
  48. package/dist/ai/providers/openai.provider.d.ts.map +1 -0
  49. package/dist/ai/providers/openai.provider.js +74 -0
  50. package/dist/ai/providers/openai.provider.js.map +1 -0
  51. package/dist/ai/providers/registry.d.ts +33 -0
  52. package/dist/ai/providers/registry.d.ts.map +1 -0
  53. package/dist/ai/providers/registry.js +137 -0
  54. package/dist/ai/providers/registry.js.map +1 -0
  55. package/dist/ai/providers/types.d.ts +59 -0
  56. package/dist/ai/providers/types.d.ts.map +1 -0
  57. package/dist/ai/providers/types.js +58 -0
  58. package/dist/ai/providers/types.js.map +1 -0
  59. package/dist/ai/workspace-editor.d.ts +59 -0
  60. package/dist/ai/workspace-editor.d.ts.map +1 -0
  61. package/dist/ai/workspace-editor.js +155 -0
  62. package/dist/ai/workspace-editor.js.map +1 -0
  63. package/dist/config/defaults.d.ts +31 -0
  64. package/dist/config/defaults.d.ts.map +1 -0
  65. package/dist/config/defaults.js +100 -0
  66. package/dist/config/defaults.js.map +1 -0
  67. package/dist/config/index.d.ts +45 -0
  68. package/dist/config/index.d.ts.map +1 -0
  69. package/dist/config/index.js +44 -0
  70. package/dist/config/index.js.map +1 -0
  71. package/dist/config/manager.d.ts +101 -0
  72. package/dist/config/manager.d.ts.map +1 -0
  73. package/dist/config/manager.js +338 -0
  74. package/dist/config/manager.js.map +1 -0
  75. package/dist/config/schema.d.ts +382 -0
  76. package/dist/config/schema.d.ts.map +1 -0
  77. package/dist/config/schema.js +150 -0
  78. package/dist/config/schema.js.map +1 -0
  79. package/dist/config/types.d.ts +189 -0
  80. package/dist/config/types.d.ts.map +1 -0
  81. package/dist/config/types.js +32 -0
  82. package/dist/config/types.js.map +1 -0
  83. package/dist/constants.d.ts +92 -0
  84. package/dist/constants.d.ts.map +1 -0
  85. package/dist/constants.js +100 -0
  86. package/dist/constants.js.map +1 -0
  87. package/dist/context/agent-monitor.d.ts +173 -0
  88. package/dist/context/agent-monitor.d.ts.map +1 -0
  89. package/dist/context/agent-monitor.js +958 -0
  90. package/dist/context/agent-monitor.js.map +1 -0
  91. package/dist/context/feedback-loop.d.ts +73 -0
  92. package/dist/context/feedback-loop.d.ts.map +1 -0
  93. package/dist/context/feedback-loop.js +303 -0
  94. package/dist/context/feedback-loop.js.map +1 -0
  95. package/dist/context/index.d.ts +29 -0
  96. package/dist/context/index.d.ts.map +1 -0
  97. package/dist/context/index.js +29 -0
  98. package/dist/context/index.js.map +1 -0
  99. package/dist/context/integration.d.ts +83 -0
  100. package/dist/context/integration.d.ts.map +1 -0
  101. package/dist/context/integration.js +276 -0
  102. package/dist/context/integration.js.map +1 -0
  103. package/dist/context/iteration-tracker.d.ts +87 -0
  104. package/dist/context/iteration-tracker.d.ts.map +1 -0
  105. package/dist/context/iteration-tracker.js +333 -0
  106. package/dist/context/iteration-tracker.js.map +1 -0
  107. package/dist/context/storage.d.ts +234 -0
  108. package/dist/context/storage.d.ts.map +1 -0
  109. package/dist/context/storage.js +513 -0
  110. package/dist/context/storage.js.map +1 -0
  111. package/dist/context/types.d.ts +396 -0
  112. package/dist/context/types.d.ts.map +1 -0
  113. package/dist/context/types.js +125 -0
  114. package/dist/context/types.js.map +1 -0
  115. package/dist/index.d.ts +70 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +207 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/infrastructure/redis/connection.d.ts +111 -0
  120. package/dist/infrastructure/redis/connection.d.ts.map +1 -0
  121. package/dist/infrastructure/redis/connection.js +242 -0
  122. package/dist/infrastructure/redis/connection.js.map +1 -0
  123. package/dist/infrastructure/redis/index.d.ts +2 -0
  124. package/dist/infrastructure/redis/index.d.ts.map +1 -0
  125. package/dist/infrastructure/redis/index.js +2 -0
  126. package/dist/infrastructure/redis/index.js.map +1 -0
  127. package/dist/infrastructure/redis/redis-backed-service.d.ts +35 -0
  128. package/dist/infrastructure/redis/redis-backed-service.d.ts.map +1 -0
  129. package/dist/infrastructure/redis/redis-backed-service.js +55 -0
  130. package/dist/infrastructure/redis/redis-backed-service.js.map +1 -0
  131. package/dist/kanban/board-store.d.ts +222 -0
  132. package/dist/kanban/board-store.d.ts.map +1 -0
  133. package/dist/kanban/board-store.js +486 -0
  134. package/dist/kanban/board-store.js.map +1 -0
  135. package/dist/kanban/index.d.ts +33 -0
  136. package/dist/kanban/index.d.ts.map +1 -0
  137. package/dist/kanban/index.js +37 -0
  138. package/dist/kanban/index.js.map +1 -0
  139. package/dist/kanban/kanban-store.d.ts +236 -0
  140. package/dist/kanban/kanban-store.d.ts.map +1 -0
  141. package/dist/kanban/kanban-store.js +854 -0
  142. package/dist/kanban/kanban-store.js.map +1 -0
  143. package/dist/kanban/membership-store.d.ts +230 -0
  144. package/dist/kanban/membership-store.d.ts.map +1 -0
  145. package/dist/kanban/membership-store.js +384 -0
  146. package/dist/kanban/membership-store.js.map +1 -0
  147. package/dist/kanban/migration.d.ts +131 -0
  148. package/dist/kanban/migration.d.ts.map +1 -0
  149. package/dist/kanban/migration.js +275 -0
  150. package/dist/kanban/migration.js.map +1 -0
  151. package/dist/kanban/types.d.ts +314 -0
  152. package/dist/kanban/types.d.ts.map +1 -0
  153. package/dist/kanban/types.js +126 -0
  154. package/dist/kanban/types.js.map +1 -0
  155. package/dist/kanban/workspace-store.d.ts +193 -0
  156. package/dist/kanban/workspace-store.d.ts.map +1 -0
  157. package/dist/kanban/workspace-store.js +386 -0
  158. package/dist/kanban/workspace-store.js.map +1 -0
  159. package/dist/loci/graph-storage.d.ts +120 -0
  160. package/dist/loci/graph-storage.d.ts.map +1 -0
  161. package/dist/loci/graph-storage.js +489 -0
  162. package/dist/loci/graph-storage.js.map +1 -0
  163. package/dist/loci/graph-traversal.d.ts +56 -0
  164. package/dist/loci/graph-traversal.d.ts.map +1 -0
  165. package/dist/loci/graph-traversal.js +291 -0
  166. package/dist/loci/graph-traversal.js.map +1 -0
  167. package/dist/loci/index.d.ts +30 -0
  168. package/dist/loci/index.d.ts.map +1 -0
  169. package/dist/loci/index.js +27 -0
  170. package/dist/loci/index.js.map +1 -0
  171. package/dist/loci/loci-manager.d.ts +119 -0
  172. package/dist/loci/loci-manager.d.ts.map +1 -0
  173. package/dist/loci/loci-manager.js +435 -0
  174. package/dist/loci/loci-manager.js.map +1 -0
  175. package/dist/loci/sequence-tracker.d.ts +89 -0
  176. package/dist/loci/sequence-tracker.d.ts.map +1 -0
  177. package/dist/loci/sequence-tracker.js +311 -0
  178. package/dist/loci/sequence-tracker.js.map +1 -0
  179. package/dist/loci/types.d.ts +306 -0
  180. package/dist/loci/types.d.ts.map +1 -0
  181. package/dist/loci/types.js +143 -0
  182. package/dist/loci/types.js.map +1 -0
  183. package/dist/mpc/auth.d.ts +67 -0
  184. package/dist/mpc/auth.d.ts.map +1 -0
  185. package/dist/mpc/auth.js +173 -0
  186. package/dist/mpc/auth.js.map +1 -0
  187. package/dist/mpc/crypto.d.ts +139 -0
  188. package/dist/mpc/crypto.d.ts.map +1 -0
  189. package/dist/mpc/crypto.js +287 -0
  190. package/dist/mpc/crypto.js.map +1 -0
  191. package/dist/mpc/index.d.ts +30 -0
  192. package/dist/mpc/index.d.ts.map +1 -0
  193. package/dist/mpc/index.js +27 -0
  194. package/dist/mpc/index.js.map +1 -0
  195. package/dist/mpc/redis-store.d.ts +88 -0
  196. package/dist/mpc/redis-store.d.ts.map +1 -0
  197. package/dist/mpc/redis-store.js +337 -0
  198. package/dist/mpc/redis-store.js.map +1 -0
  199. package/dist/mpc/share-manager.d.ts +59 -0
  200. package/dist/mpc/share-manager.d.ts.map +1 -0
  201. package/dist/mpc/share-manager.js +254 -0
  202. package/dist/mpc/share-manager.js.map +1 -0
  203. package/dist/mpc/types.d.ts +213 -0
  204. package/dist/mpc/types.d.ts.map +1 -0
  205. package/dist/mpc/types.js +42 -0
  206. package/dist/mpc/types.js.map +1 -0
  207. package/dist/recursive/index.d.ts +27 -0
  208. package/dist/recursive/index.d.ts.map +1 -0
  209. package/dist/recursive/index.js +27 -0
  210. package/dist/recursive/index.js.map +1 -0
  211. package/dist/recursive/tool-invoker.d.ts +51 -0
  212. package/dist/recursive/tool-invoker.d.ts.map +1 -0
  213. package/dist/recursive/tool-invoker.js +293 -0
  214. package/dist/recursive/tool-invoker.js.map +1 -0
  215. package/dist/recursive/types.d.ts +110 -0
  216. package/dist/recursive/types.d.ts.map +1 -0
  217. package/dist/recursive/types.js +52 -0
  218. package/dist/recursive/types.js.map +1 -0
  219. package/dist/rl/dopamine.d.ts +96 -0
  220. package/dist/rl/dopamine.d.ts.map +1 -0
  221. package/dist/rl/dopamine.js +242 -0
  222. package/dist/rl/dopamine.js.map +1 -0
  223. package/dist/rl/index.d.ts +30 -0
  224. package/dist/rl/index.d.ts.map +1 -0
  225. package/dist/rl/index.js +27 -0
  226. package/dist/rl/index.js.map +1 -0
  227. package/dist/rl/potential.d.ts +78 -0
  228. package/dist/rl/potential.d.ts.map +1 -0
  229. package/dist/rl/potential.js +152 -0
  230. package/dist/rl/potential.js.map +1 -0
  231. package/dist/rl/rewards.d.ts +92 -0
  232. package/dist/rl/rewards.d.ts.map +1 -0
  233. package/dist/rl/rewards.js +278 -0
  234. package/dist/rl/rewards.js.map +1 -0
  235. package/dist/rl/state-tracker.d.ts +107 -0
  236. package/dist/rl/state-tracker.d.ts.map +1 -0
  237. package/dist/rl/state-tracker.js +285 -0
  238. package/dist/rl/state-tracker.js.map +1 -0
  239. package/dist/rl/types.d.ts +274 -0
  240. package/dist/rl/types.d.ts.map +1 -0
  241. package/dist/rl/types.js +145 -0
  242. package/dist/rl/types.js.map +1 -0
  243. package/dist/runtime/crypto.d.ts +87 -0
  244. package/dist/runtime/crypto.d.ts.map +1 -0
  245. package/dist/runtime/crypto.js +226 -0
  246. package/dist/runtime/crypto.js.map +1 -0
  247. package/dist/runtime/http.d.ts +111 -0
  248. package/dist/runtime/http.d.ts.map +1 -0
  249. package/dist/runtime/http.js +350 -0
  250. package/dist/runtime/http.js.map +1 -0
  251. package/dist/runtime/index.d.ts +48 -0
  252. package/dist/runtime/index.d.ts.map +1 -0
  253. package/dist/runtime/index.js +43 -0
  254. package/dist/runtime/index.js.map +1 -0
  255. package/dist/runtime/net.d.ts +42 -0
  256. package/dist/runtime/net.d.ts.map +1 -0
  257. package/dist/runtime/net.js +108 -0
  258. package/dist/runtime/net.js.map +1 -0
  259. package/dist/runtime/process.d.ts +54 -0
  260. package/dist/runtime/process.d.ts.map +1 -0
  261. package/dist/runtime/process.js +247 -0
  262. package/dist/runtime/process.js.map +1 -0
  263. package/dist/runtime/types.d.ts +143 -0
  264. package/dist/runtime/types.d.ts.map +1 -0
  265. package/dist/runtime/types.js +19 -0
  266. package/dist/runtime/types.js.map +1 -0
  267. package/dist/server/http-server.d.ts +26 -0
  268. package/dist/server/http-server.d.ts.map +1 -0
  269. package/dist/server/http-server.js +290 -0
  270. package/dist/server/http-server.js.map +1 -0
  271. package/dist/server/index.d.ts +22 -0
  272. package/dist/server/index.d.ts.map +1 -0
  273. package/dist/server/index.js +25 -0
  274. package/dist/server/index.js.map +1 -0
  275. package/dist/server/progress.d.ts +74 -0
  276. package/dist/server/progress.d.ts.map +1 -0
  277. package/dist/server/progress.js +174 -0
  278. package/dist/server/progress.js.map +1 -0
  279. package/dist/server/session-server.d.ts +76 -0
  280. package/dist/server/session-server.d.ts.map +1 -0
  281. package/dist/server/session-server.js +186 -0
  282. package/dist/server/session-server.js.map +1 -0
  283. package/dist/server/types.d.ts +82 -0
  284. package/dist/server/types.d.ts.map +1 -0
  285. package/dist/server/types.js +25 -0
  286. package/dist/server/types.js.map +1 -0
  287. package/dist/session/cwd-resolver.d.ts +136 -0
  288. package/dist/session/cwd-resolver.d.ts.map +1 -0
  289. package/dist/session/cwd-resolver.js +715 -0
  290. package/dist/session/cwd-resolver.js.map +1 -0
  291. package/dist/session/index.d.ts +27 -0
  292. package/dist/session/index.d.ts.map +1 -0
  293. package/dist/session/index.js +27 -0
  294. package/dist/session/index.js.map +1 -0
  295. package/dist/session/manager.d.ts +296 -0
  296. package/dist/session/manager.d.ts.map +1 -0
  297. package/dist/session/manager.js +605 -0
  298. package/dist/session/manager.js.map +1 -0
  299. package/dist/session/types.d.ts +152 -0
  300. package/dist/session/types.d.ts.map +1 -0
  301. package/dist/session/types.js +60 -0
  302. package/dist/session/types.js.map +1 -0
  303. package/dist/tools/agents/agent-alert.tool.d.ts +20 -0
  304. package/dist/tools/agents/agent-alert.tool.d.ts.map +1 -0
  305. package/dist/tools/agents/agent-alert.tool.js +103 -0
  306. package/dist/tools/agents/agent-alert.tool.js.map +1 -0
  307. package/dist/tools/agents/agent-history.tool.d.ts +20 -0
  308. package/dist/tools/agents/agent-history.tool.d.ts.map +1 -0
  309. package/dist/tools/agents/agent-history.tool.js +133 -0
  310. package/dist/tools/agents/agent-history.tool.js.map +1 -0
  311. package/dist/tools/agents/agent-inject.tool.d.ts +39 -0
  312. package/dist/tools/agents/agent-inject.tool.d.ts.map +1 -0
  313. package/dist/tools/agents/agent-inject.tool.js +121 -0
  314. package/dist/tools/agents/agent-inject.tool.js.map +1 -0
  315. package/dist/tools/agents/agent-list.tool.d.ts +20 -0
  316. package/dist/tools/agents/agent-list.tool.d.ts.map +1 -0
  317. package/dist/tools/agents/agent-list.tool.js +86 -0
  318. package/dist/tools/agents/agent-list.tool.js.map +1 -0
  319. package/dist/tools/agents/agent-register.tool.d.ts +20 -0
  320. package/dist/tools/agents/agent-register.tool.d.ts.map +1 -0
  321. package/dist/tools/agents/agent-register.tool.js +114 -0
  322. package/dist/tools/agents/agent-register.tool.js.map +1 -0
  323. package/dist/tools/agents/agent-summary.tool.d.ts +20 -0
  324. package/dist/tools/agents/agent-summary.tool.d.ts.map +1 -0
  325. package/dist/tools/agents/agent-summary.tool.js +99 -0
  326. package/dist/tools/agents/agent-summary.tool.js.map +1 -0
  327. package/dist/tools/agents/agent-watch.tool.d.ts +20 -0
  328. package/dist/tools/agents/agent-watch.tool.d.ts.map +1 -0
  329. package/dist/tools/agents/agent-watch.tool.js +56 -0
  330. package/dist/tools/agents/agent-watch.tool.js.map +1 -0
  331. package/dist/tools/agents/index.d.ts +41 -0
  332. package/dist/tools/agents/index.d.ts.map +1 -0
  333. package/dist/tools/agents/index.js +41 -0
  334. package/dist/tools/agents/index.js.map +1 -0
  335. package/dist/tools/agents/monitor.tool.d.ts +20 -0
  336. package/dist/tools/agents/monitor.tool.d.ts.map +1 -0
  337. package/dist/tools/agents/monitor.tool.js +314 -0
  338. package/dist/tools/agents/monitor.tool.js.map +1 -0
  339. package/dist/tools/agents/queue-message.tool.d.ts +20 -0
  340. package/dist/tools/agents/queue-message.tool.d.ts.map +1 -0
  341. package/dist/tools/agents/queue-message.tool.js +176 -0
  342. package/dist/tools/agents/queue-message.tool.js.map +1 -0
  343. package/dist/tools/ask-ai.tool.d.ts +20 -0
  344. package/dist/tools/ask-ai.tool.d.ts.map +1 -0
  345. package/dist/tools/ask-ai.tool.js +49 -0
  346. package/dist/tools/ask-ai.tool.js.map +1 -0
  347. package/dist/tools/batch.tool.d.ts +42 -0
  348. package/dist/tools/batch.tool.d.ts.map +1 -0
  349. package/dist/tools/batch.tool.js +146 -0
  350. package/dist/tools/batch.tool.js.map +1 -0
  351. package/dist/tools/brainstorm.tool.d.ts +20 -0
  352. package/dist/tools/brainstorm.tool.d.ts.map +1 -0
  353. package/dist/tools/brainstorm.tool.js +86 -0
  354. package/dist/tools/brainstorm.tool.js.map +1 -0
  355. package/dist/tools/code/code-outline.tool.d.ts +20 -0
  356. package/dist/tools/code/code-outline.tool.d.ts.map +1 -0
  357. package/dist/tools/code/code-outline.tool.js +803 -0
  358. package/dist/tools/code/code-outline.tool.js.map +1 -0
  359. package/dist/tools/code/find-definition.tool.d.ts +20 -0
  360. package/dist/tools/code/find-definition.tool.d.ts.map +1 -0
  361. package/dist/tools/code/find-definition.tool.js +218 -0
  362. package/dist/tools/code/find-definition.tool.js.map +1 -0
  363. package/dist/tools/code/find-references.tool.d.ts +20 -0
  364. package/dist/tools/code/find-references.tool.d.ts.map +1 -0
  365. package/dist/tools/code/find-references.tool.js +207 -0
  366. package/dist/tools/code/find-references.tool.js.map +1 -0
  367. package/dist/tools/code/find-symbols.tool.d.ts +20 -0
  368. package/dist/tools/code/find-symbols.tool.d.ts.map +1 -0
  369. package/dist/tools/code/find-symbols.tool.js +367 -0
  370. package/dist/tools/code/find-symbols.tool.js.map +1 -0
  371. package/dist/tools/code/index.d.ts +34 -0
  372. package/dist/tools/code/index.d.ts.map +1 -0
  373. package/dist/tools/code/index.js +35 -0
  374. package/dist/tools/code/index.js.map +1 -0
  375. package/dist/tools/code/insert-after-symbol.tool.d.ts +20 -0
  376. package/dist/tools/code/insert-after-symbol.tool.d.ts.map +1 -0
  377. package/dist/tools/code/insert-after-symbol.tool.js +224 -0
  378. package/dist/tools/code/insert-after-symbol.tool.js.map +1 -0
  379. package/dist/tools/code/insert-before-symbol.tool.d.ts +20 -0
  380. package/dist/tools/code/insert-before-symbol.tool.d.ts.map +1 -0
  381. package/dist/tools/code/insert-before-symbol.tool.js +136 -0
  382. package/dist/tools/code/insert-before-symbol.tool.js.map +1 -0
  383. package/dist/tools/code/rename-symbol.tool.d.ts +20 -0
  384. package/dist/tools/code/rename-symbol.tool.d.ts.map +1 -0
  385. package/dist/tools/code/rename-symbol.tool.js +255 -0
  386. package/dist/tools/code/rename-symbol.tool.js.map +1 -0
  387. package/dist/tools/code/semantic-search.tool.d.ts +20 -0
  388. package/dist/tools/code/semantic-search.tool.d.ts.map +1 -0
  389. package/dist/tools/code/semantic-search.tool.js +172 -0
  390. package/dist/tools/code/semantic-search.tool.js.map +1 -0
  391. package/dist/tools/code/symbol-search.d.ts +39 -0
  392. package/dist/tools/code/symbol-search.d.ts.map +1 -0
  393. package/dist/tools/code/symbol-search.js +118 -0
  394. package/dist/tools/code/symbol-search.js.map +1 -0
  395. package/dist/tools/context/feedback.tool.d.ts +20 -0
  396. package/dist/tools/context/feedback.tool.d.ts.map +1 -0
  397. package/dist/tools/context/feedback.tool.js +176 -0
  398. package/dist/tools/context/feedback.tool.js.map +1 -0
  399. package/dist/tools/context/get-shared-context.tool.d.ts +20 -0
  400. package/dist/tools/context/get-shared-context.tool.d.ts.map +1 -0
  401. package/dist/tools/context/get-shared-context.tool.js +83 -0
  402. package/dist/tools/context/get-shared-context.tool.js.map +1 -0
  403. package/dist/tools/context/index.d.ts +26 -0
  404. package/dist/tools/context/index.d.ts.map +1 -0
  405. package/dist/tools/context/index.js +26 -0
  406. package/dist/tools/context/index.js.map +1 -0
  407. package/dist/tools/context/shared-thoughts.tool.d.ts +20 -0
  408. package/dist/tools/context/shared-thoughts.tool.d.ts.map +1 -0
  409. package/dist/tools/context/shared-thoughts.tool.js +199 -0
  410. package/dist/tools/context/shared-thoughts.tool.js.map +1 -0
  411. package/dist/tools/edit/delete-lines.tool.d.ts +20 -0
  412. package/dist/tools/edit/delete-lines.tool.d.ts.map +1 -0
  413. package/dist/tools/edit/delete-lines.tool.js +88 -0
  414. package/dist/tools/edit/delete-lines.tool.js.map +1 -0
  415. package/dist/tools/edit/edit-shared.d.ts +55 -0
  416. package/dist/tools/edit/edit-shared.d.ts.map +1 -0
  417. package/dist/tools/edit/edit-shared.js +122 -0
  418. package/dist/tools/edit/edit-shared.js.map +1 -0
  419. package/dist/tools/edit/index.d.ts +29 -0
  420. package/dist/tools/edit/index.d.ts.map +1 -0
  421. package/dist/tools/edit/index.js +29 -0
  422. package/dist/tools/edit/index.js.map +1 -0
  423. package/dist/tools/edit/insert-at-line.tool.d.ts +20 -0
  424. package/dist/tools/edit/insert-at-line.tool.d.ts.map +1 -0
  425. package/dist/tools/edit/insert-at-line.tool.js +92 -0
  426. package/dist/tools/edit/insert-at-line.tool.js.map +1 -0
  427. package/dist/tools/edit/replace-content.tool.d.ts +20 -0
  428. package/dist/tools/edit/replace-content.tool.d.ts.map +1 -0
  429. package/dist/tools/edit/replace-content.tool.js +214 -0
  430. package/dist/tools/edit/replace-content.tool.js.map +1 -0
  431. package/dist/tools/edit/replace-lines.tool.d.ts +20 -0
  432. package/dist/tools/edit/replace-lines.tool.d.ts.map +1 -0
  433. package/dist/tools/edit/replace-lines.tool.js +97 -0
  434. package/dist/tools/edit/replace-lines.tool.js.map +1 -0
  435. package/dist/tools/file/file-diff.tool.d.ts +20 -0
  436. package/dist/tools/file/file-diff.tool.d.ts.map +1 -0
  437. package/dist/tools/file/file-diff.tool.js +359 -0
  438. package/dist/tools/file/file-diff.tool.js.map +1 -0
  439. package/dist/tools/file/file-read.tool.d.ts +20 -0
  440. package/dist/tools/file/file-read.tool.d.ts.map +1 -0
  441. package/dist/tools/file/file-read.tool.js +270 -0
  442. package/dist/tools/file/file-read.tool.js.map +1 -0
  443. package/dist/tools/file/file-search.tool.d.ts +20 -0
  444. package/dist/tools/file/file-search.tool.d.ts.map +1 -0
  445. package/dist/tools/file/file-search.tool.js +339 -0
  446. package/dist/tools/file/file-search.tool.js.map +1 -0
  447. package/dist/tools/file/file-tree.tool.d.ts +49 -0
  448. package/dist/tools/file/file-tree.tool.d.ts.map +1 -0
  449. package/dist/tools/file/file-tree.tool.js +398 -0
  450. package/dist/tools/file/file-tree.tool.js.map +1 -0
  451. package/dist/tools/file/file-write.tool.d.ts +20 -0
  452. package/dist/tools/file/file-write.tool.d.ts.map +1 -0
  453. package/dist/tools/file/file-write.tool.js +204 -0
  454. package/dist/tools/file/file-write.tool.js.map +1 -0
  455. package/dist/tools/file/index.d.ts +31 -0
  456. package/dist/tools/file/index.d.ts.map +1 -0
  457. package/dist/tools/file/index.js +31 -0
  458. package/dist/tools/file/index.js.map +1 -0
  459. package/dist/tools/git/git-blame.tool.d.ts +20 -0
  460. package/dist/tools/git/git-blame.tool.d.ts.map +1 -0
  461. package/dist/tools/git/git-blame.tool.js +138 -0
  462. package/dist/tools/git/git-blame.tool.js.map +1 -0
  463. package/dist/tools/git/git-branch.tool.d.ts +20 -0
  464. package/dist/tools/git/git-branch.tool.d.ts.map +1 -0
  465. package/dist/tools/git/git-branch.tool.js +158 -0
  466. package/dist/tools/git/git-branch.tool.js.map +1 -0
  467. package/dist/tools/git/git-diff.tool.d.ts +20 -0
  468. package/dist/tools/git/git-diff.tool.d.ts.map +1 -0
  469. package/dist/tools/git/git-diff.tool.js +117 -0
  470. package/dist/tools/git/git-diff.tool.js.map +1 -0
  471. package/dist/tools/git/git-log.tool.d.ts +20 -0
  472. package/dist/tools/git/git-log.tool.d.ts.map +1 -0
  473. package/dist/tools/git/git-log.tool.js +150 -0
  474. package/dist/tools/git/git-log.tool.js.map +1 -0
  475. package/dist/tools/git/git-status.tool.d.ts +20 -0
  476. package/dist/tools/git/git-status.tool.d.ts.map +1 -0
  477. package/dist/tools/git/git-status.tool.js +81 -0
  478. package/dist/tools/git/git-status.tool.js.map +1 -0
  479. package/dist/tools/git/index.d.ts +31 -0
  480. package/dist/tools/git/index.d.ts.map +1 -0
  481. package/dist/tools/git/index.js +32 -0
  482. package/dist/tools/git/index.js.map +1 -0
  483. package/dist/tools/index.d.ts +19 -0
  484. package/dist/tools/index.d.ts.map +1 -0
  485. package/dist/tools/index.js +170 -0
  486. package/dist/tools/index.js.map +1 -0
  487. package/dist/tools/kanban/board-create.tool.d.ts +20 -0
  488. package/dist/tools/kanban/board-create.tool.d.ts.map +1 -0
  489. package/dist/tools/kanban/board-create.tool.js +92 -0
  490. package/dist/tools/kanban/board-create.tool.js.map +1 -0
  491. package/dist/tools/kanban/board-invite.tool.d.ts +20 -0
  492. package/dist/tools/kanban/board-invite.tool.d.ts.map +1 -0
  493. package/dist/tools/kanban/board-invite.tool.js +96 -0
  494. package/dist/tools/kanban/board-invite.tool.js.map +1 -0
  495. package/dist/tools/kanban/board-list.tool.d.ts +20 -0
  496. package/dist/tools/kanban/board-list.tool.d.ts.map +1 -0
  497. package/dist/tools/kanban/board-list.tool.js +94 -0
  498. package/dist/tools/kanban/board-list.tool.js.map +1 -0
  499. package/dist/tools/kanban/board-members.tool.d.ts +20 -0
  500. package/dist/tools/kanban/board-members.tool.d.ts.map +1 -0
  501. package/dist/tools/kanban/board-members.tool.js +153 -0
  502. package/dist/tools/kanban/board-members.tool.js.map +1 -0
  503. package/dist/tools/kanban/board-share.tool.d.ts +20 -0
  504. package/dist/tools/kanban/board-share.tool.d.ts.map +1 -0
  505. package/dist/tools/kanban/board-share.tool.js +91 -0
  506. package/dist/tools/kanban/board-share.tool.js.map +1 -0
  507. package/dist/tools/kanban/board-status.tool.d.ts +20 -0
  508. package/dist/tools/kanban/board-status.tool.d.ts.map +1 -0
  509. package/dist/tools/kanban/board-status.tool.js +79 -0
  510. package/dist/tools/kanban/board-status.tool.js.map +1 -0
  511. package/dist/tools/kanban/index.d.ts +42 -0
  512. package/dist/tools/kanban/index.d.ts.map +1 -0
  513. package/dist/tools/kanban/index.js +46 -0
  514. package/dist/tools/kanban/index.js.map +1 -0
  515. package/dist/tools/kanban/task-assign.tool.d.ts +20 -0
  516. package/dist/tools/kanban/task-assign.tool.d.ts.map +1 -0
  517. package/dist/tools/kanban/task-assign.tool.js +103 -0
  518. package/dist/tools/kanban/task-assign.tool.js.map +1 -0
  519. package/dist/tools/kanban/task-claim.tool.d.ts +20 -0
  520. package/dist/tools/kanban/task-claim.tool.d.ts.map +1 -0
  521. package/dist/tools/kanban/task-claim.tool.js +107 -0
  522. package/dist/tools/kanban/task-claim.tool.js.map +1 -0
  523. package/dist/tools/kanban/task-create.tool.d.ts +20 -0
  524. package/dist/tools/kanban/task-create.tool.d.ts.map +1 -0
  525. package/dist/tools/kanban/task-create.tool.js +123 -0
  526. package/dist/tools/kanban/task-create.tool.js.map +1 -0
  527. package/dist/tools/kanban/task-list.tool.d.ts +20 -0
  528. package/dist/tools/kanban/task-list.tool.d.ts.map +1 -0
  529. package/dist/tools/kanban/task-list.tool.js +95 -0
  530. package/dist/tools/kanban/task-list.tool.js.map +1 -0
  531. package/dist/tools/kanban/task-push-multi.tool.d.ts +20 -0
  532. package/dist/tools/kanban/task-push-multi.tool.d.ts.map +1 -0
  533. package/dist/tools/kanban/task-push-multi.tool.js +273 -0
  534. package/dist/tools/kanban/task-push-multi.tool.js.map +1 -0
  535. package/dist/tools/kanban/task-update.tool.d.ts +20 -0
  536. package/dist/tools/kanban/task-update.tool.d.ts.map +1 -0
  537. package/dist/tools/kanban/task-update.tool.js +173 -0
  538. package/dist/tools/kanban/task-update.tool.js.map +1 -0
  539. package/dist/tools/kanban/workspace-create.tool.d.ts +20 -0
  540. package/dist/tools/kanban/workspace-create.tool.d.ts.map +1 -0
  541. package/dist/tools/kanban/workspace-create.tool.js +84 -0
  542. package/dist/tools/kanban/workspace-create.tool.js.map +1 -0
  543. package/dist/tools/kanban/workspace-join.tool.d.ts +20 -0
  544. package/dist/tools/kanban/workspace-join.tool.d.ts.map +1 -0
  545. package/dist/tools/kanban/workspace-join.tool.js +76 -0
  546. package/dist/tools/kanban/workspace-join.tool.js.map +1 -0
  547. package/dist/tools/kanban/workspace-leave.tool.d.ts +20 -0
  548. package/dist/tools/kanban/workspace-leave.tool.d.ts.map +1 -0
  549. package/dist/tools/kanban/workspace-leave.tool.js +74 -0
  550. package/dist/tools/kanban/workspace-leave.tool.js.map +1 -0
  551. package/dist/tools/kanban/workspace-list.tool.d.ts +20 -0
  552. package/dist/tools/kanban/workspace-list.tool.d.ts.map +1 -0
  553. package/dist/tools/kanban/workspace-list.tool.js +75 -0
  554. package/dist/tools/kanban/workspace-list.tool.js.map +1 -0
  555. package/dist/tools/loci/graph-find-path.tool.d.ts +38 -0
  556. package/dist/tools/loci/graph-find-path.tool.d.ts.map +1 -0
  557. package/dist/tools/loci/graph-find-path.tool.js +133 -0
  558. package/dist/tools/loci/graph-find-path.tool.js.map +1 -0
  559. package/dist/tools/loci/graph-query.tool.d.ts +55 -0
  560. package/dist/tools/loci/graph-query.tool.d.ts.map +1 -0
  561. package/dist/tools/loci/graph-query.tool.js +98 -0
  562. package/dist/tools/loci/graph-query.tool.js.map +1 -0
  563. package/dist/tools/loci/index.d.ts +27 -0
  564. package/dist/tools/loci/index.d.ts.map +1 -0
  565. package/dist/tools/loci/index.js +27 -0
  566. package/dist/tools/loci/index.js.map +1 -0
  567. package/dist/tools/loci/loci-recall.tool.d.ts +33 -0
  568. package/dist/tools/loci/loci-recall.tool.d.ts.map +1 -0
  569. package/dist/tools/loci/loci-recall.tool.js +156 -0
  570. package/dist/tools/loci/loci-recall.tool.js.map +1 -0
  571. package/dist/tools/loci/sequence-recommend.tool.d.ts +33 -0
  572. package/dist/tools/loci/sequence-recommend.tool.d.ts.map +1 -0
  573. package/dist/tools/loci/sequence-recommend.tool.js +114 -0
  574. package/dist/tools/loci/sequence-recommend.tool.js.map +1 -0
  575. package/dist/tools/memory/delete-memory.tool.d.ts +20 -0
  576. package/dist/tools/memory/delete-memory.tool.d.ts.map +1 -0
  577. package/dist/tools/memory/delete-memory.tool.js +96 -0
  578. package/dist/tools/memory/delete-memory.tool.js.map +1 -0
  579. package/dist/tools/memory/edit-memory.tool.d.ts +20 -0
  580. package/dist/tools/memory/edit-memory.tool.d.ts.map +1 -0
  581. package/dist/tools/memory/edit-memory.tool.js +172 -0
  582. package/dist/tools/memory/edit-memory.tool.js.map +1 -0
  583. package/dist/tools/memory/index.d.ts +31 -0
  584. package/dist/tools/memory/index.d.ts.map +1 -0
  585. package/dist/tools/memory/index.js +31 -0
  586. package/dist/tools/memory/index.js.map +1 -0
  587. package/dist/tools/memory/list-memories.tool.d.ts +20 -0
  588. package/dist/tools/memory/list-memories.tool.d.ts.map +1 -0
  589. package/dist/tools/memory/list-memories.tool.js +142 -0
  590. package/dist/tools/memory/list-memories.tool.js.map +1 -0
  591. package/dist/tools/memory/read-memory.tool.d.ts +20 -0
  592. package/dist/tools/memory/read-memory.tool.d.ts.map +1 -0
  593. package/dist/tools/memory/read-memory.tool.js +98 -0
  594. package/dist/tools/memory/read-memory.tool.js.map +1 -0
  595. package/dist/tools/memory/write-memory.tool.d.ts +20 -0
  596. package/dist/tools/memory/write-memory.tool.d.ts.map +1 -0
  597. package/dist/tools/memory/write-memory.tool.js +162 -0
  598. package/dist/tools/memory/write-memory.tool.js.map +1 -0
  599. package/dist/tools/mpc/index.d.ts +27 -0
  600. package/dist/tools/mpc/index.d.ts.map +1 -0
  601. package/dist/tools/mpc/index.js +27 -0
  602. package/dist/tools/mpc/index.js.map +1 -0
  603. package/dist/tools/mpc/mpc-distribute.tool.d.ts +36 -0
  604. package/dist/tools/mpc/mpc-distribute.tool.d.ts.map +1 -0
  605. package/dist/tools/mpc/mpc-distribute.tool.js +129 -0
  606. package/dist/tools/mpc/mpc-distribute.tool.js.map +1 -0
  607. package/dist/tools/mpc/mpc-reconstruct.tool.d.ts +28 -0
  608. package/dist/tools/mpc/mpc-reconstruct.tool.d.ts.map +1 -0
  609. package/dist/tools/mpc/mpc-reconstruct.tool.js +125 -0
  610. package/dist/tools/mpc/mpc-reconstruct.tool.js.map +1 -0
  611. package/dist/tools/mpc/mpc-split.tool.d.ts +43 -0
  612. package/dist/tools/mpc/mpc-split.tool.d.ts.map +1 -0
  613. package/dist/tools/mpc/mpc-split.tool.js +120 -0
  614. package/dist/tools/mpc/mpc-split.tool.js.map +1 -0
  615. package/dist/tools/mpc/mpc-status.tool.d.ts +33 -0
  616. package/dist/tools/mpc/mpc-status.tool.d.ts.map +1 -0
  617. package/dist/tools/mpc/mpc-status.tool.js +129 -0
  618. package/dist/tools/mpc/mpc-status.tool.js.map +1 -0
  619. package/dist/tools/multi-llm/consensus-prompt.tool.d.ts +9 -0
  620. package/dist/tools/multi-llm/consensus-prompt.tool.d.ts.map +1 -0
  621. package/dist/tools/multi-llm/consensus-prompt.tool.js +165 -0
  622. package/dist/tools/multi-llm/consensus-prompt.tool.js.map +1 -0
  623. package/dist/tools/multi-llm/index.d.ts +8 -0
  624. package/dist/tools/multi-llm/index.d.ts.map +1 -0
  625. package/dist/tools/multi-llm/index.js +8 -0
  626. package/dist/tools/multi-llm/index.js.map +1 -0
  627. package/dist/tools/multi-llm/multi-prompt.tool.d.ts +9 -0
  628. package/dist/tools/multi-llm/multi-prompt.tool.d.ts.map +1 -0
  629. package/dist/tools/multi-llm/multi-prompt.tool.js +90 -0
  630. package/dist/tools/multi-llm/multi-prompt.tool.js.map +1 -0
  631. package/dist/tools/project/check-types.tool.d.ts +20 -0
  632. package/dist/tools/project/check-types.tool.d.ts.map +1 -0
  633. package/dist/tools/project/check-types.tool.js +254 -0
  634. package/dist/tools/project/check-types.tool.js.map +1 -0
  635. package/dist/tools/project/index.d.ts +35 -0
  636. package/dist/tools/project/index.d.ts.map +1 -0
  637. package/dist/tools/project/index.js +35 -0
  638. package/dist/tools/project/index.js.map +1 -0
  639. package/dist/tools/project/project-info.tool.d.ts +20 -0
  640. package/dist/tools/project/project-info.tool.d.ts.map +1 -0
  641. package/dist/tools/project/project-info.tool.js +364 -0
  642. package/dist/tools/project/project-info.tool.js.map +1 -0
  643. package/dist/tools/project/run-lint.tool.d.ts +20 -0
  644. package/dist/tools/project/run-lint.tool.d.ts.map +1 -0
  645. package/dist/tools/project/run-lint.tool.js +279 -0
  646. package/dist/tools/project/run-lint.tool.js.map +1 -0
  647. package/dist/tools/project/run-script.tool.d.ts +20 -0
  648. package/dist/tools/project/run-script.tool.d.ts.map +1 -0
  649. package/dist/tools/project/run-script.tool.js +141 -0
  650. package/dist/tools/project/run-script.tool.js.map +1 -0
  651. package/dist/tools/project/run-tests.tool.d.ts +20 -0
  652. package/dist/tools/project/run-tests.tool.d.ts.map +1 -0
  653. package/dist/tools/project/run-tests.tool.js +357 -0
  654. package/dist/tools/project/run-tests.tool.js.map +1 -0
  655. package/dist/tools/recursive/index.d.ts +28 -0
  656. package/dist/tools/recursive/index.d.ts.map +1 -0
  657. package/dist/tools/recursive/index.js +28 -0
  658. package/dist/tools/recursive/index.js.map +1 -0
  659. package/dist/tools/recursive/invocation-log.tool.d.ts +20 -0
  660. package/dist/tools/recursive/invocation-log.tool.d.ts.map +1 -0
  661. package/dist/tools/recursive/invocation-log.tool.js +110 -0
  662. package/dist/tools/recursive/invocation-log.tool.js.map +1 -0
  663. package/dist/tools/recursive/invoke-batch.tool.d.ts +20 -0
  664. package/dist/tools/recursive/invoke-batch.tool.d.ts.map +1 -0
  665. package/dist/tools/recursive/invoke-batch.tool.js +99 -0
  666. package/dist/tools/recursive/invoke-batch.tool.js.map +1 -0
  667. package/dist/tools/recursive/invoke-tool.tool.d.ts +20 -0
  668. package/dist/tools/recursive/invoke-tool.tool.d.ts.map +1 -0
  669. package/dist/tools/recursive/invoke-tool.tool.js +100 -0
  670. package/dist/tools/recursive/invoke-tool.tool.js.map +1 -0
  671. package/dist/tools/registry.d.ts +261 -0
  672. package/dist/tools/registry.d.ts.map +1 -0
  673. package/dist/tools/registry.js +462 -0
  674. package/dist/tools/registry.js.map +1 -0
  675. package/dist/tools/rl/index.d.ts +25 -0
  676. package/dist/tools/rl/index.d.ts.map +1 -0
  677. package/dist/tools/rl/index.js +25 -0
  678. package/dist/tools/rl/index.js.map +1 -0
  679. package/dist/tools/rl/rl-dopamine-log.tool.d.ts +32 -0
  680. package/dist/tools/rl/rl-dopamine-log.tool.d.ts.map +1 -0
  681. package/dist/tools/rl/rl-dopamine-log.tool.js +112 -0
  682. package/dist/tools/rl/rl-dopamine-log.tool.js.map +1 -0
  683. package/dist/tools/rl/rl-reward-stats.tool.d.ts +33 -0
  684. package/dist/tools/rl/rl-reward-stats.tool.d.ts.map +1 -0
  685. package/dist/tools/rl/rl-reward-stats.tool.js +100 -0
  686. package/dist/tools/rl/rl-reward-stats.tool.js.map +1 -0
  687. package/dist/tools/session/index.d.ts +28 -0
  688. package/dist/tools/session/index.d.ts.map +1 -0
  689. package/dist/tools/session/index.js +28 -0
  690. package/dist/tools/session/index.js.map +1 -0
  691. package/dist/tools/session/session-create.tool.d.ts +35 -0
  692. package/dist/tools/session/session-create.tool.d.ts.map +1 -0
  693. package/dist/tools/session/session-create.tool.js +74 -0
  694. package/dist/tools/session/session-create.tool.js.map +1 -0
  695. package/dist/tools/session/session-delete.tool.d.ts +32 -0
  696. package/dist/tools/session/session-delete.tool.d.ts.map +1 -0
  697. package/dist/tools/session/session-delete.tool.js +94 -0
  698. package/dist/tools/session/session-delete.tool.js.map +1 -0
  699. package/dist/tools/session/session-info.tool.d.ts +30 -0
  700. package/dist/tools/session/session-info.tool.d.ts.map +1 -0
  701. package/dist/tools/session/session-info.tool.js +89 -0
  702. package/dist/tools/session/session-info.tool.js.map +1 -0
  703. package/dist/tools/session/session-list.tool.d.ts +43 -0
  704. package/dist/tools/session/session-list.tool.d.ts.map +1 -0
  705. package/dist/tools/session/session-list.tool.js +85 -0
  706. package/dist/tools/session/session-list.tool.js.map +1 -0
  707. package/dist/tools/session/session-switch.tool.d.ts +32 -0
  708. package/dist/tools/session/session-switch.tool.d.ts.map +1 -0
  709. package/dist/tools/session/session-switch.tool.js +75 -0
  710. package/dist/tools/session/session-switch.tool.js.map +1 -0
  711. package/dist/tools/simple-tools.d.ts +23 -0
  712. package/dist/tools/simple-tools.d.ts.map +1 -0
  713. package/dist/tools/simple-tools.js +73 -0
  714. package/dist/tools/simple-tools.js.map +1 -0
  715. package/dist/tools/specialized/analyze-deps.tool.d.ts +20 -0
  716. package/dist/tools/specialized/analyze-deps.tool.d.ts.map +1 -0
  717. package/dist/tools/specialized/analyze-deps.tool.js +102 -0
  718. package/dist/tools/specialized/analyze-deps.tool.js.map +1 -0
  719. package/dist/tools/specialized/auto-fix-agent.tool.d.ts +12 -0
  720. package/dist/tools/specialized/auto-fix-agent.tool.d.ts.map +1 -0
  721. package/dist/tools/specialized/auto-fix-agent.tool.js +154 -0
  722. package/dist/tools/specialized/auto-fix-agent.tool.js.map +1 -0
  723. package/dist/tools/specialized/auto-fix.tool.d.ts +20 -0
  724. package/dist/tools/specialized/auto-fix.tool.d.ts.map +1 -0
  725. package/dist/tools/specialized/auto-fix.tool.js +264 -0
  726. package/dist/tools/specialized/auto-fix.tool.js.map +1 -0
  727. package/dist/tools/specialized/code-review.tool.d.ts +20 -0
  728. package/dist/tools/specialized/code-review.tool.d.ts.map +1 -0
  729. package/dist/tools/specialized/code-review.tool.js +140 -0
  730. package/dist/tools/specialized/code-review.tool.js.map +1 -0
  731. package/dist/tools/specialized/explain-code.tool.d.ts +20 -0
  732. package/dist/tools/specialized/explain-code.tool.d.ts.map +1 -0
  733. package/dist/tools/specialized/explain-code.tool.js +90 -0
  734. package/dist/tools/specialized/explain-code.tool.js.map +1 -0
  735. package/dist/tools/specialized/fix-bug.tool.d.ts +20 -0
  736. package/dist/tools/specialized/fix-bug.tool.d.ts.map +1 -0
  737. package/dist/tools/specialized/fix-bug.tool.js +107 -0
  738. package/dist/tools/specialized/fix-bug.tool.js.map +1 -0
  739. package/dist/tools/specialized/index.d.ts +26 -0
  740. package/dist/tools/specialized/index.d.ts.map +1 -0
  741. package/dist/tools/specialized/index.js +26 -0
  742. package/dist/tools/specialized/index.js.map +1 -0
  743. package/dist/tools/specialized/refactor.tool.d.ts +20 -0
  744. package/dist/tools/specialized/refactor.tool.d.ts.map +1 -0
  745. package/dist/tools/specialized/refactor.tool.js +115 -0
  746. package/dist/tools/specialized/refactor.tool.js.map +1 -0
  747. package/dist/tools/specialized/write-tests.tool.d.ts +20 -0
  748. package/dist/tools/specialized/write-tests.tool.d.ts.map +1 -0
  749. package/dist/tools/specialized/write-tests.tool.js +115 -0
  750. package/dist/tools/specialized/write-tests.tool.js.map +1 -0
  751. package/dist/tools/system/ai-config.tool.d.ts +13 -0
  752. package/dist/tools/system/ai-config.tool.d.ts.map +1 -0
  753. package/dist/tools/system/ai-config.tool.js +252 -0
  754. package/dist/tools/system/ai-config.tool.js.map +1 -0
  755. package/dist/tools/system/ai-models.tool.d.ts +45 -0
  756. package/dist/tools/system/ai-models.tool.d.ts.map +1 -0
  757. package/dist/tools/system/ai-models.tool.js +194 -0
  758. package/dist/tools/system/ai-models.tool.js.map +1 -0
  759. package/dist/tools/system/config.tool.d.ts +57 -0
  760. package/dist/tools/system/config.tool.d.ts.map +1 -0
  761. package/dist/tools/system/config.tool.js +320 -0
  762. package/dist/tools/system/config.tool.js.map +1 -0
  763. package/dist/tools/system/env-info.tool.d.ts +20 -0
  764. package/dist/tools/system/env-info.tool.d.ts.map +1 -0
  765. package/dist/tools/system/env-info.tool.js +228 -0
  766. package/dist/tools/system/env-info.tool.js.map +1 -0
  767. package/dist/tools/system/index.d.ts +37 -0
  768. package/dist/tools/system/index.d.ts.map +1 -0
  769. package/dist/tools/system/index.js +37 -0
  770. package/dist/tools/system/index.js.map +1 -0
  771. package/dist/tools/system/memory-usage.tool.d.ts +20 -0
  772. package/dist/tools/system/memory-usage.tool.d.ts.map +1 -0
  773. package/dist/tools/system/memory-usage.tool.js +223 -0
  774. package/dist/tools/system/memory-usage.tool.js.map +1 -0
  775. package/dist/tools/system/process-list.tool.d.ts +20 -0
  776. package/dist/tools/system/process-list.tool.d.ts.map +1 -0
  777. package/dist/tools/system/process-list.tool.js +202 -0
  778. package/dist/tools/system/process-list.tool.js.map +1 -0
  779. package/dist/tools/system/shell-exec.tool.d.ts +20 -0
  780. package/dist/tools/system/shell-exec.tool.d.ts.map +1 -0
  781. package/dist/tools/system/shell-exec.tool.js +293 -0
  782. package/dist/tools/system/shell-exec.tool.js.map +1 -0
  783. package/dist/tools/timeout-test.tool.d.ts +20 -0
  784. package/dist/tools/timeout-test.tool.d.ts.map +1 -0
  785. package/dist/tools/timeout-test.tool.js +46 -0
  786. package/dist/tools/timeout-test.tool.js.map +1 -0
  787. package/dist/tree-sitter/index.d.ts +27 -0
  788. package/dist/tree-sitter/index.d.ts.map +1 -0
  789. package/dist/tree-sitter/index.js +27 -0
  790. package/dist/tree-sitter/index.js.map +1 -0
  791. package/dist/tree-sitter/parser-manager.d.ts +83 -0
  792. package/dist/tree-sitter/parser-manager.d.ts.map +1 -0
  793. package/dist/tree-sitter/parser-manager.js +430 -0
  794. package/dist/tree-sitter/parser-manager.js.map +1 -0
  795. package/dist/tree-sitter/types.d.ts +117 -0
  796. package/dist/tree-sitter/types.d.ts.map +1 -0
  797. package/dist/tree-sitter/types.js +375 -0
  798. package/dist/tree-sitter/types.js.map +1 -0
  799. package/dist/types/file-types.d.ts +277 -0
  800. package/dist/types/file-types.d.ts.map +1 -0
  801. package/dist/types/file-types.js +75 -0
  802. package/dist/types/file-types.js.map +1 -0
  803. package/dist/types/git-types.d.ts +270 -0
  804. package/dist/types/git-types.d.ts.map +1 -0
  805. package/dist/types/git-types.js +26 -0
  806. package/dist/types/git-types.js.map +1 -0
  807. package/dist/types/index.d.ts +28 -0
  808. package/dist/types/index.d.ts.map +1 -0
  809. package/dist/types/index.js +31 -0
  810. package/dist/types/index.js.map +1 -0
  811. package/dist/types/tool-types.d.ts +231 -0
  812. package/dist/types/tool-types.d.ts.map +1 -0
  813. package/dist/types/tool-types.js +30 -0
  814. package/dist/types/tool-types.js.map +1 -0
  815. package/dist/utils/bun-file.d.ts +99 -0
  816. package/dist/utils/bun-file.d.ts.map +1 -0
  817. package/dist/utils/bun-file.js +393 -0
  818. package/dist/utils/bun-file.js.map +1 -0
  819. package/dist/utils/cache.d.ts +124 -0
  820. package/dist/utils/cache.d.ts.map +1 -0
  821. package/dist/utils/cache.js +228 -0
  822. package/dist/utils/cache.js.map +1 -0
  823. package/dist/utils/commandExecutor.d.ts +54 -0
  824. package/dist/utils/commandExecutor.d.ts.map +1 -0
  825. package/dist/utils/commandExecutor.js +165 -0
  826. package/dist/utils/commandExecutor.js.map +1 -0
  827. package/dist/utils/edit-utils.d.ts +72 -0
  828. package/dist/utils/edit-utils.d.ts.map +1 -0
  829. package/dist/utils/edit-utils.js +129 -0
  830. package/dist/utils/edit-utils.js.map +1 -0
  831. package/dist/utils/errors.d.ts +170 -0
  832. package/dist/utils/errors.d.ts.map +1 -0
  833. package/dist/utils/errors.js +304 -0
  834. package/dist/utils/errors.js.map +1 -0
  835. package/dist/utils/file-utils.d.ts +195 -0
  836. package/dist/utils/file-utils.d.ts.map +1 -0
  837. package/dist/utils/file-utils.js +401 -0
  838. package/dist/utils/file-utils.js.map +1 -0
  839. package/dist/utils/git-utils.d.ts +204 -0
  840. package/dist/utils/git-utils.d.ts.map +1 -0
  841. package/dist/utils/git-utils.js +352 -0
  842. package/dist/utils/git-utils.js.map +1 -0
  843. package/dist/utils/languageDetection.d.ts +54 -0
  844. package/dist/utils/languageDetection.d.ts.map +1 -0
  845. package/dist/utils/languageDetection.js +340 -0
  846. package/dist/utils/languageDetection.js.map +1 -0
  847. package/dist/utils/logger.d.ts +207 -0
  848. package/dist/utils/logger.d.ts.map +1 -0
  849. package/dist/utils/logger.js +484 -0
  850. package/dist/utils/logger.js.map +1 -0
  851. package/dist/utils/process-utils.d.ts +196 -0
  852. package/dist/utils/process-utils.d.ts.map +1 -0
  853. package/dist/utils/process-utils.js +302 -0
  854. package/dist/utils/process-utils.js.map +1 -0
  855. package/dist/utils/projectContext.enhanced.d.ts +71 -0
  856. package/dist/utils/projectContext.enhanced.d.ts.map +1 -0
  857. package/dist/utils/projectContext.enhanced.js +816 -0
  858. package/dist/utils/projectContext.enhanced.js.map +1 -0
  859. package/dist/utils/security.d.ts +123 -0
  860. package/dist/utils/security.d.ts.map +1 -0
  861. package/dist/utils/security.js +337 -0
  862. package/dist/utils/security.js.map +1 -0
  863. package/dist/utils/validation.d.ts +163 -0
  864. package/dist/utils/validation.d.ts.map +1 -0
  865. package/dist/utils/validation.js +558 -0
  866. package/dist/utils/validation.js.map +1 -0
  867. package/dist/version.d.ts +17 -0
  868. package/dist/version.d.ts.map +1 -0
  869. package/dist/version.js +17 -0
  870. package/dist/version.js.map +1 -0
  871. package/kemdi-code-mcp-logo.png +0 -0
  872. package/package.json +136 -0
@@ -0,0 +1,958 @@
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
+ * Agent Monitor - Real-time multi-agent supervision via Redis Pub/Sub
20
+ *
21
+ * Enables:
22
+ * - Real-time monitoring of agent conversations
23
+ * - Sending alerts/directives to agents
24
+ * - Context injection during execution
25
+ * - Agent lifecycle management
26
+ */
27
+ import { Redis } from 'ioredis';
28
+ import { v4 as uuidv4 } from 'uuid';
29
+ import { Logger } from '../utils/logger.js';
30
+ import { REDIS_KEYS, TTL, } from './types.js';
31
+ export class AgentMonitor {
32
+ config;
33
+ redis = null;
34
+ subscriber = null;
35
+ connected = false;
36
+ messageHandlers = [];
37
+ alertHandlers = [];
38
+ statusHandlers = [];
39
+ messageHandlerRegistered = false;
40
+ alertHandlerRegistered = false;
41
+ statusHandlerRegistered = false;
42
+ constructor(config = {}) {
43
+ this.config = config;
44
+ }
45
+ /**
46
+ * Initialize Redis connections (main + subscriber)
47
+ */
48
+ async connect() {
49
+ if (this.connected)
50
+ return true;
51
+ try {
52
+ const redisConfig = {
53
+ host: this.config.host || process.env.REDIS_HOST || '127.0.0.1',
54
+ port: this.config.port || parseInt(process.env.REDIS_PORT || '6379'),
55
+ password: this.config.password || process.env.REDIS_PASSWORD || undefined,
56
+ db: this.config.db ?? 2,
57
+ keyPrefix: REDIS_KEYS.PREFIX,
58
+ lazyConnect: false,
59
+ maxRetriesPerRequest: 3,
60
+ };
61
+ // Main connection for commands
62
+ this.redis = new Redis(redisConfig);
63
+ await this.redis.ping();
64
+ // Separate connection for Pub/Sub (required by Redis)
65
+ this.subscriber = new Redis({
66
+ ...redisConfig,
67
+ keyPrefix: '', // No prefix for pub/sub channels
68
+ });
69
+ await this.subscriber.ping();
70
+ this.connected = true;
71
+ Logger.debug('AgentMonitor connected to Redis');
72
+ return true;
73
+ }
74
+ catch (error) {
75
+ Logger.error('AgentMonitor connection failed:', error);
76
+ this.redis = null;
77
+ this.subscriber = null;
78
+ this.connected = false;
79
+ return false;
80
+ }
81
+ }
82
+ isConnected() {
83
+ return this.connected && this.redis !== null;
84
+ }
85
+ async disconnect() {
86
+ if (this.subscriber) {
87
+ await this.subscriber.quit();
88
+ this.subscriber = null;
89
+ }
90
+ if (this.redis) {
91
+ await this.redis.quit();
92
+ this.redis = null;
93
+ }
94
+ this.connected = false;
95
+ this.messageHandlerRegistered = false;
96
+ this.alertHandlerRegistered = false;
97
+ this.statusHandlerRegistered = false;
98
+ }
99
+ // ═══════════════════════════════════════════════════════════════════════════
100
+ // AGENT REGISTRATION & LIFECYCLE
101
+ // ═══════════════════════════════════════════════════════════════════════════
102
+ /**
103
+ * Register a new agent in the system
104
+ */
105
+ async registerAgent(name, role, sessionId, serverId, model, metadata = {}) {
106
+ if (!this.redis)
107
+ return null;
108
+ const agent = {
109
+ id: `agent_${uuidv4().slice(0, 8)}`,
110
+ name,
111
+ role,
112
+ status: 'active',
113
+ sessionId,
114
+ serverId,
115
+ model,
116
+ registeredAt: Date.now(),
117
+ lastHeartbeat: Date.now(),
118
+ metadata,
119
+ };
120
+ try {
121
+ const key = `${REDIS_KEYS.AGENTS}${agent.id}`;
122
+ await this.redis.setex(key, TTL.SESSION, JSON.stringify(agent));
123
+ // Add to session's agent list
124
+ await this.redis.sadd(`${REDIS_KEYS.AGENTS}session:${sessionId}`, agent.id);
125
+ // Publish status update
126
+ await this.publishStatusUpdate(agent);
127
+ Logger.debug(`Agent registered: ${agent.id} (${name})`);
128
+ return agent;
129
+ }
130
+ catch (error) {
131
+ Logger.error('Failed to register agent:', error);
132
+ return null;
133
+ }
134
+ }
135
+ /**
136
+ * Update agent status
137
+ */
138
+ async updateAgentStatus(agentId, status, currentTask) {
139
+ if (!this.redis)
140
+ return false;
141
+ try {
142
+ const agent = await this.getAgent(agentId);
143
+ if (!agent)
144
+ return false;
145
+ agent.status = status;
146
+ agent.currentTask = currentTask;
147
+ agent.lastHeartbeat = Date.now();
148
+ const key = `${REDIS_KEYS.AGENTS}${agentId}`;
149
+ await this.redis.setex(key, TTL.SESSION, JSON.stringify(agent));
150
+ await this.publishStatusUpdate(agent);
151
+ return true;
152
+ }
153
+ catch (error) {
154
+ Logger.error('Failed to update agent status:', error);
155
+ return false;
156
+ }
157
+ }
158
+ /**
159
+ * Get agent by ID
160
+ */
161
+ async getAgent(agentId) {
162
+ if (!this.redis)
163
+ return null;
164
+ try {
165
+ const data = await this.redis.get(`${REDIS_KEYS.AGENTS}${agentId}`);
166
+ return data ? JSON.parse(data) : null;
167
+ }
168
+ catch {
169
+ return null;
170
+ }
171
+ }
172
+ /**
173
+ * List all active agents (optionally filtered by session)
174
+ */
175
+ async listAgents(sessionId) {
176
+ if (!this.redis)
177
+ return [];
178
+ try {
179
+ let agentIds;
180
+ if (sessionId) {
181
+ agentIds = await this.redis.smembers(`${REDIS_KEYS.AGENTS}session:${sessionId}`);
182
+ }
183
+ else {
184
+ // Scan for all agent keys
185
+ const keys = await this.redis.keys(`${REDIS_KEYS.AGENTS}agent_*`);
186
+ agentIds = keys.map((k) => k.replace(REDIS_KEYS.PREFIX + REDIS_KEYS.AGENTS, ''));
187
+ }
188
+ const agents = [];
189
+ for (const id of agentIds) {
190
+ const agent = await this.getAgent(id);
191
+ if (agent && agent.status !== 'terminated') {
192
+ agents.push(agent);
193
+ }
194
+ }
195
+ return agents.sort((a, b) => b.lastHeartbeat - a.lastHeartbeat);
196
+ }
197
+ catch (error) {
198
+ Logger.error('Failed to list agents:', error);
199
+ return [];
200
+ }
201
+ }
202
+ /**
203
+ * Send heartbeat for an agent
204
+ */
205
+ async heartbeat(agentId) {
206
+ if (!this.redis)
207
+ return false;
208
+ try {
209
+ const agent = await this.getAgent(agentId);
210
+ if (!agent)
211
+ return false;
212
+ agent.lastHeartbeat = Date.now();
213
+ const key = `${REDIS_KEYS.AGENTS}${agentId}`;
214
+ await this.redis.setex(key, TTL.SESSION, JSON.stringify(agent));
215
+ // Update heartbeat timestamp
216
+ await this.redis.setex(`${REDIS_KEYS.AGENT_HEARTBEAT}${agentId}`, 60, // 1 minute TTL
217
+ Date.now().toString());
218
+ return true;
219
+ }
220
+ catch {
221
+ return false;
222
+ }
223
+ }
224
+ // ═══════════════════════════════════════════════════════════════════════════
225
+ // MESSAGE HANDLING
226
+ // ═══════════════════════════════════════════════════════════════════════════
227
+ /**
228
+ * Send a message between agents or from supervisor
229
+ */
230
+ async sendMessage(fromAgentId, toAgentId, sessionId, content, type = 'chat', priority = 'normal', data, replyTo) {
231
+ if (!this.redis)
232
+ return null;
233
+ const message = {
234
+ id: `msg_${uuidv4().slice(0, 12)}`,
235
+ fromAgentId,
236
+ toAgentId,
237
+ sessionId,
238
+ type,
239
+ priority,
240
+ content,
241
+ data,
242
+ timestamp: Date.now(),
243
+ acknowledged: false,
244
+ replyTo,
245
+ };
246
+ try {
247
+ // Store message in history
248
+ const key = `${REDIS_KEYS.AGENT_MESSAGES}${sessionId}`;
249
+ await this.redis.zadd(key, message.timestamp, JSON.stringify(message));
250
+ await this.redis.expire(key, TTL.SESSION);
251
+ // Publish to channel for real-time subscribers
252
+ await this.redis.publish(REDIS_KEYS.PREFIX + REDIS_KEYS.CHANNEL_MESSAGES, JSON.stringify(message));
253
+ Logger.debug(`Message sent: ${message.id} (${type})`);
254
+ return message;
255
+ }
256
+ catch (error) {
257
+ Logger.error('Failed to send message:', error);
258
+ return null;
259
+ }
260
+ }
261
+ /**
262
+ * Send an alert from supervisor (e.g., "[ALERT: Słowo od Claude Opus 4.5]")
263
+ */
264
+ async sendAlert(targetAgentIds, content, source = 'Claude Opus 4.5', priority = 'high', interrupt = false, sessionId) {
265
+ if (!this.redis)
266
+ return null;
267
+ const alert = {
268
+ id: `alert_${uuidv4().slice(0, 8)}`,
269
+ targetAgentIds: targetAgentIds === '*' ? ['*'] : targetAgentIds,
270
+ content,
271
+ source,
272
+ priority,
273
+ timestamp: Date.now(),
274
+ interrupt,
275
+ };
276
+ try {
277
+ // Store alert
278
+ const key = sessionId
279
+ ? `${REDIS_KEYS.AGENT_ALERTS}${sessionId}`
280
+ : `${REDIS_KEYS.AGENT_ALERTS}global`;
281
+ await this.redis.zadd(key, alert.timestamp, JSON.stringify(alert));
282
+ await this.redis.expire(key, TTL.SESSION);
283
+ // Publish to alerts channel
284
+ await this.redis.publish(REDIS_KEYS.PREFIX + REDIS_KEYS.CHANNEL_ALERTS, JSON.stringify(alert));
285
+ // Also send as message to each target agent
286
+ const targets = targetAgentIds === '*'
287
+ ? (await this.listAgents(sessionId)).map((a) => a.id)
288
+ : targetAgentIds;
289
+ for (const agentId of targets) {
290
+ await this.sendMessage('supervisor', agentId, sessionId || 'global', `[ALERT: ${source}] ${content}`, 'alert', priority);
291
+ }
292
+ Logger.debug(`Alert sent: ${alert.id} to ${targets.length} agents`);
293
+ return alert;
294
+ }
295
+ catch (error) {
296
+ Logger.error('Failed to send alert:', error);
297
+ return null;
298
+ }
299
+ }
300
+ /**
301
+ * Inject context into an agent's stream
302
+ */
303
+ async injectContext(agentId, sessionId, context, data) {
304
+ const message = await this.sendMessage('supervisor', agentId, sessionId, context, 'context', 'high', data);
305
+ return message !== null;
306
+ }
307
+ /**
308
+ * Send directive to change agent behavior
309
+ */
310
+ async sendDirective(agentId, sessionId, directive, data) {
311
+ const message = await this.sendMessage('supervisor', agentId, sessionId, `[DIRECTIVE] ${directive}`, 'directive', 'critical', data);
312
+ return message !== null;
313
+ }
314
+ // ═══════════════════════════════════════════════════════════════════════════
315
+ // MESSAGE HISTORY & QUERIES
316
+ // ═══════════════════════════════════════════════════════════════════════════
317
+ /**
318
+ * Get message history for a session
319
+ */
320
+ async getMessageHistory(sessionId, limit = 50, since) {
321
+ if (!this.redis)
322
+ return [];
323
+ try {
324
+ const key = `${REDIS_KEYS.AGENT_MESSAGES}${sessionId}`;
325
+ const minScore = since || 0;
326
+ const rawMessages = await this.redis.zrangebyscore(key, minScore, '+inf', 'LIMIT', 0, limit);
327
+ return rawMessages
328
+ .map((m) => {
329
+ try {
330
+ return JSON.parse(m);
331
+ }
332
+ catch {
333
+ return null;
334
+ }
335
+ })
336
+ .filter(Boolean);
337
+ }
338
+ catch (error) {
339
+ Logger.error('Failed to get message history:', error);
340
+ return [];
341
+ }
342
+ }
343
+ /**
344
+ * Get recent messages for an agent
345
+ */
346
+ async getAgentMessages(agentId, sessionId, limit = 20) {
347
+ const history = await this.getMessageHistory(sessionId, limit * 2);
348
+ return history
349
+ .filter((m) => m.toAgentId === agentId || m.fromAgentId === agentId)
350
+ .slice(0, limit);
351
+ }
352
+ /**
353
+ * Get pending alerts for an agent
354
+ */
355
+ async getPendingAlerts(agentId, sessionId) {
356
+ if (!this.redis)
357
+ return [];
358
+ try {
359
+ const keys = sessionId
360
+ ? [`${REDIS_KEYS.AGENT_ALERTS}${sessionId}`]
361
+ : [`${REDIS_KEYS.AGENT_ALERTS}global`];
362
+ const alerts = [];
363
+ for (const key of keys) {
364
+ const rawAlerts = await this.redis.zrange(key, 0, -1);
365
+ for (const raw of rawAlerts) {
366
+ try {
367
+ const alert = JSON.parse(raw);
368
+ if (alert.targetAgentIds.includes('*') || alert.targetAgentIds.includes(agentId)) {
369
+ alerts.push(alert);
370
+ }
371
+ }
372
+ catch {
373
+ Logger.warn(`Failed to parse alert: ${raw.substring(0, 100)}`);
374
+ // Kontynuuj z następnym alertem
375
+ }
376
+ }
377
+ }
378
+ return alerts.sort((a, b) => b.timestamp - a.timestamp);
379
+ }
380
+ catch {
381
+ return [];
382
+ }
383
+ }
384
+ /**
385
+ * Get full conversation snapshot
386
+ */
387
+ async getConversationSnapshot(sessionId, messageLimit = 30) {
388
+ const [agents, messages] = await Promise.all([
389
+ this.listAgents(sessionId),
390
+ this.getMessageHistory(sessionId, messageLimit),
391
+ ]);
392
+ // Get pending alerts for all agents in session
393
+ const alertSets = await Promise.all(agents.map((a) => this.getPendingAlerts(a.id, sessionId)));
394
+ const pendingAlerts = [...new Map(alertSets.flat().map((a) => [a.id, a])).values()];
395
+ return {
396
+ sessionId,
397
+ agents,
398
+ recentMessages: messages,
399
+ pendingAlerts,
400
+ snapshotAt: Date.now(),
401
+ };
402
+ }
403
+ // ═══════════════════════════════════════════════════════════════════════════
404
+ // REAL-TIME SUBSCRIPTIONS (Pub/Sub)
405
+ // ═══════════════════════════════════════════════════════════════════════════
406
+ /**
407
+ * Subscribe to real-time message updates
408
+ */
409
+ async subscribeToMessages(handler) {
410
+ if (!this.subscriber)
411
+ return;
412
+ this.messageHandlers.push(handler);
413
+ if (!this.messageHandlerRegistered) {
414
+ this.messageHandlerRegistered = true;
415
+ await this.subscriber.subscribe(REDIS_KEYS.PREFIX + REDIS_KEYS.CHANNEL_MESSAGES);
416
+ this.subscriber.on('message', (channel, data) => {
417
+ if (channel.endsWith(REDIS_KEYS.CHANNEL_MESSAGES)) {
418
+ try {
419
+ const message = JSON.parse(data);
420
+ this.messageHandlers.forEach((h) => h(message));
421
+ }
422
+ catch {
423
+ /* ignore parse errors */
424
+ }
425
+ }
426
+ });
427
+ }
428
+ }
429
+ /**
430
+ * Subscribe to alerts
431
+ */
432
+ async subscribeToAlerts(handler) {
433
+ if (!this.subscriber)
434
+ return;
435
+ this.alertHandlers.push(handler);
436
+ if (!this.alertHandlerRegistered) {
437
+ this.alertHandlerRegistered = true;
438
+ await this.subscriber.subscribe(REDIS_KEYS.PREFIX + REDIS_KEYS.CHANNEL_ALERTS);
439
+ this.subscriber.on('message', (channel, data) => {
440
+ if (channel.endsWith(REDIS_KEYS.CHANNEL_ALERTS)) {
441
+ try {
442
+ const alert = JSON.parse(data);
443
+ this.alertHandlers.forEach((h) => h(alert));
444
+ }
445
+ catch {
446
+ /* ignore */
447
+ }
448
+ }
449
+ });
450
+ }
451
+ }
452
+ /**
453
+ * Subscribe to agent status changes
454
+ */
455
+ async subscribeToStatusUpdates(handler) {
456
+ if (!this.subscriber)
457
+ return;
458
+ this.statusHandlers.push(handler);
459
+ if (!this.statusHandlerRegistered) {
460
+ this.statusHandlerRegistered = true;
461
+ await this.subscriber.subscribe(REDIS_KEYS.PREFIX + REDIS_KEYS.CHANNEL_AGENT_STATUS);
462
+ this.subscriber.on('message', (channel, data) => {
463
+ if (channel.endsWith(REDIS_KEYS.CHANNEL_AGENT_STATUS)) {
464
+ try {
465
+ const agent = JSON.parse(data);
466
+ this.statusHandlers.forEach((h) => h(agent));
467
+ }
468
+ catch {
469
+ /* ignore */
470
+ }
471
+ }
472
+ });
473
+ }
474
+ }
475
+ async publishStatusUpdate(agent) {
476
+ if (!this.redis)
477
+ return;
478
+ try {
479
+ await this.redis.publish(REDIS_KEYS.PREFIX + REDIS_KEYS.CHANNEL_AGENT_STATUS, JSON.stringify(agent));
480
+ }
481
+ catch {
482
+ /* ignore */
483
+ }
484
+ }
485
+ // ═══════════════════════════════════════════════════════════════════════════
486
+ // AGENT ACTIVITY SUMMARIES
487
+ // ═══════════════════════════════════════════════════════════════════════════
488
+ /**
489
+ * Update agent activity summary (agent reports what they're doing)
490
+ */
491
+ async updateAgentSummary(agentId, summary) {
492
+ if (!this.redis)
493
+ return false;
494
+ try {
495
+ const fullSummary = {
496
+ ...summary,
497
+ agentId,
498
+ updatedAt: Date.now(),
499
+ };
500
+ const key = `${REDIS_KEYS.AGENT_SUMMARY}${agentId}`;
501
+ await this.redis.setex(key, 3600, JSON.stringify(fullSummary)); // 1 hour TTL
502
+ // Publish update for real-time monitoring
503
+ await this.redis.publish(REDIS_KEYS.PREFIX + REDIS_KEYS.CHANNEL_AGENT_SUMMARY, JSON.stringify(fullSummary));
504
+ Logger.debug(`Agent summary updated: ${agentId}`);
505
+ return true;
506
+ }
507
+ catch (error) {
508
+ Logger.error('Failed to update agent summary:', error);
509
+ return false;
510
+ }
511
+ }
512
+ /**
513
+ * Get current activity summary for an agent
514
+ */
515
+ async getAgentSummary(agentId) {
516
+ if (!this.redis)
517
+ return null;
518
+ try {
519
+ const data = await this.redis.get(`${REDIS_KEYS.AGENT_SUMMARY}${agentId}`);
520
+ return data ? JSON.parse(data) : null;
521
+ }
522
+ catch {
523
+ return null;
524
+ }
525
+ }
526
+ /**
527
+ * Get all activity summaries for agents in a session
528
+ */
529
+ async getSessionSummaries(sessionId) {
530
+ if (!this.redis)
531
+ return [];
532
+ try {
533
+ const agents = await this.listAgents(sessionId);
534
+ const summaries = [];
535
+ for (const agent of agents) {
536
+ const summary = await this.getAgentSummary(agent.id);
537
+ if (summary) {
538
+ summaries.push(summary);
539
+ }
540
+ }
541
+ return summaries.sort((a, b) => b.updatedAt - a.updatedAt);
542
+ }
543
+ catch (error) {
544
+ Logger.error('Failed to get session summaries:', error);
545
+ return [];
546
+ }
547
+ }
548
+ // ═══════════════════════════════════════════════════════════════════════════
549
+ // MESSAGE QUEUE - Supervisor pushes messages to agents
550
+ // ═══════════════════════════════════════════════════════════════════════════
551
+ /**
552
+ * Queue a message for an agent
553
+ * Messages are stored in a ZSET with priority-based scoring
554
+ */
555
+ async queueMessage(targetAgentId, sessionId, content, options = {}) {
556
+ if (!this.redis)
557
+ return null;
558
+ const priorityLevel = {
559
+ critical: 0,
560
+ high: 1,
561
+ normal: 2,
562
+ low: 3,
563
+ };
564
+ const priority = options.priority || 'normal';
565
+ const message = {
566
+ id: `qmsg_${uuidv4().slice(0, 12)}`,
567
+ targetAgentId,
568
+ sessionId,
569
+ content,
570
+ priority,
571
+ files: options.files,
572
+ context: options.context,
573
+ forceContextChange: options.forceContextChange,
574
+ createdAt: Date.now(),
575
+ expiresAt: options.expiresAt,
576
+ fromAgentId: options.fromAgentId || 'supervisor',
577
+ };
578
+ try {
579
+ const key = `${REDIS_KEYS.AGENT_QUEUE}${targetAgentId}`;
580
+ // Score: (4 - priorityLevel) * 1e12 + timestamp
581
+ // Higher priority = higher score, earlier timestamp = lower score within priority
582
+ const score = (4 - priorityLevel[priority]) * 1e12 + message.createdAt;
583
+ await this.redis.zadd(key, score, JSON.stringify(message));
584
+ await this.redis.expire(key, TTL.SESSION);
585
+ Logger.debug(`Message queued for ${targetAgentId}: ${message.id} (${priority})`);
586
+ return message;
587
+ }
588
+ catch (error) {
589
+ Logger.error('Failed to queue message:', error);
590
+ return null;
591
+ }
592
+ }
593
+ /**
594
+ * Get messages from agent's queue without removing them
595
+ */
596
+ async getMessageQueue(agentId, options = {}) {
597
+ if (!this.redis)
598
+ return [];
599
+ try {
600
+ const key = `${REDIS_KEYS.AGENT_QUEUE}${agentId}`;
601
+ const limit = options.limit || 50;
602
+ // Get messages in reverse order (highest score/priority first)
603
+ const rawMessages = await this.redis.zrevrange(key, 0, limit - 1);
604
+ const messages = rawMessages
605
+ .map((m) => {
606
+ try {
607
+ return JSON.parse(m);
608
+ }
609
+ catch {
610
+ return null;
611
+ }
612
+ })
613
+ .filter((m) => {
614
+ if (!m)
615
+ return false;
616
+ // Filter expired messages
617
+ if (m.expiresAt && m.expiresAt < Date.now())
618
+ return false;
619
+ // Filter by priority if specified
620
+ if (options.priority && m.priority !== options.priority)
621
+ return false;
622
+ return true;
623
+ });
624
+ return messages;
625
+ }
626
+ catch (error) {
627
+ Logger.error('Failed to get message queue:', error);
628
+ return [];
629
+ }
630
+ }
631
+ /**
632
+ * Pop the next message from agent's queue (removes it)
633
+ */
634
+ async popMessage(agentId) {
635
+ if (!this.redis)
636
+ return null;
637
+ try {
638
+ const key = `${REDIS_KEYS.AGENT_QUEUE}${agentId}`;
639
+ const maxAttempts = 100;
640
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
641
+ const result = await this.redis.zpopmax(key, 1);
642
+ if (!result || result.length === 0)
643
+ return null;
644
+ const message = JSON.parse(result[0]);
645
+ // Skip expired messages
646
+ if (message.expiresAt && message.expiresAt < Date.now()) {
647
+ continue;
648
+ }
649
+ Logger.debug(`Message popped for ${agentId}: ${message.id}`);
650
+ return message;
651
+ }
652
+ Logger.warn(`popMessage: skipped ${maxAttempts} expired messages for ${agentId}`);
653
+ return null;
654
+ }
655
+ catch (error) {
656
+ Logger.error('Failed to pop message:', error);
657
+ return null;
658
+ }
659
+ }
660
+ /**
661
+ * Clear all messages from agent's queue
662
+ */
663
+ async clearMessageQueue(agentId) {
664
+ if (!this.redis)
665
+ return 0;
666
+ try {
667
+ const key = `${REDIS_KEYS.AGENT_QUEUE}${agentId}`;
668
+ const count = await this.redis.zcard(key);
669
+ await this.redis.del(key);
670
+ Logger.debug(`Cleared ${count} messages from queue for ${agentId}`);
671
+ return count;
672
+ }
673
+ catch (error) {
674
+ Logger.error('Failed to clear message queue:', error);
675
+ return 0;
676
+ }
677
+ }
678
+ /**
679
+ * Get queue depth (number of pending messages) for an agent
680
+ */
681
+ async getQueueDepth(agentId) {
682
+ if (!this.redis)
683
+ return 0;
684
+ try {
685
+ const key = `${REDIS_KEYS.AGENT_QUEUE}${agentId}`;
686
+ return await this.redis.zcard(key);
687
+ }
688
+ catch {
689
+ return 0;
690
+ }
691
+ }
692
+ // ═══════════════════════════════════════════════════════════════════════════
693
+ // SESSION OVERVIEW - Hierarchical view of session state
694
+ // ═══════════════════════════════════════════════════════════════════════════
695
+ /**
696
+ * Get comprehensive overview of a session
697
+ * Includes: workspaces, boards, agents, tasks, activity
698
+ */
699
+ async getSessionOverview(sessionId) {
700
+ if (!this.redis) {
701
+ return this.emptySessionOverview(sessionId);
702
+ }
703
+ try {
704
+ // Get agents and their summaries
705
+ const agents = await this.listAgents(sessionId);
706
+ const agentOverviews = [];
707
+ for (const agent of agents) {
708
+ const overview = await this.getAgentOverview(agent.id);
709
+ if (overview) {
710
+ agentOverviews.push(overview);
711
+ }
712
+ }
713
+ // Get workspaces this session belongs to
714
+ const workspaceIds = await this.redis.smembers(`mcp:kanban:workspaces:session:${sessionId}`);
715
+ const workspaces = [];
716
+ for (const wsId of workspaceIds) {
717
+ const wsData = await this.redis.get(`mcp:kanban:workspace:${wsId}`);
718
+ if (wsData) {
719
+ const ws = JSON.parse(wsData);
720
+ const boardCount = await this.redis.scard(`mcp:kanban:boards:workspace:${wsId}`);
721
+ workspaces.push({
722
+ id: ws.id,
723
+ name: ws.name,
724
+ memberCount: ws.memberSessions?.length || 0,
725
+ boardCount,
726
+ isOwner: ws.ownerSessionId === sessionId,
727
+ });
728
+ }
729
+ }
730
+ // Get boards for this session (including from workspaces)
731
+ const boardIds = await this.redis.smembers(`mcp:kanban:boards:session:${sessionId}`);
732
+ const boards = [];
733
+ for (const boardId of boardIds) {
734
+ const boardData = await this.redis.get(`mcp:kanban:board:${boardId}`);
735
+ if (boardData) {
736
+ const board = JSON.parse(boardData);
737
+ const taskCount = await this.redis.zcard(`mcp:kanban:board:${boardId}:tasks`);
738
+ // Get tasks by status
739
+ const byStatus = {
740
+ backlog: 0,
741
+ in_progress: 0,
742
+ review: 0,
743
+ done: 0,
744
+ };
745
+ // Count tasks per status
746
+ const statusKeys = ['backlog', 'in_progress', 'review', 'done'];
747
+ for (const status of statusKeys) {
748
+ const count = await this.redis.scard(`mcp:kanban:status:${sessionId}:${status}`);
749
+ byStatus[status] = count;
750
+ }
751
+ // Get active agents on this board
752
+ const activeAgents = agentOverviews
753
+ .filter((a) => a.currentTask?.boardId === boardId && a.status === 'active')
754
+ .map((a) => a.id);
755
+ boards.push({
756
+ id: board.id,
757
+ name: board.name,
758
+ workspaceId: board.workspaceId,
759
+ taskCount,
760
+ byStatus,
761
+ activeAgents,
762
+ });
763
+ }
764
+ }
765
+ // Get recent activity from messages
766
+ const messages = await this.getMessageHistory(sessionId, 20);
767
+ const recentActivity = messages.map((msg) => ({
768
+ type: 'message',
769
+ timestamp: msg.timestamp,
770
+ agentId: msg.fromAgentId,
771
+ description: `${msg.fromAgentId} → ${msg.toAgentId}: ${msg.content.slice(0, 50)}...`,
772
+ data: { messageType: msg.type },
773
+ }));
774
+ // Calculate stats
775
+ const stats = {
776
+ totalAgents: agents.length,
777
+ activeAgents: agents.filter((a) => a.status === 'active' || a.status === 'processing')
778
+ .length,
779
+ totalTasks: boards.reduce((sum, b) => sum + b.taskCount, 0),
780
+ tasksInProgress: boards.reduce((sum, b) => sum + b.byStatus.in_progress, 0),
781
+ pendingMessages: await this.getTotalPendingMessages(agents.map((a) => a.id)),
782
+ workspaceCount: workspaces.length,
783
+ boardCount: boards.length,
784
+ };
785
+ return {
786
+ sessionId,
787
+ workspaces,
788
+ boards,
789
+ agents: agentOverviews,
790
+ recentActivity: recentActivity.slice(0, 10),
791
+ stats,
792
+ snapshotAt: Date.now(),
793
+ };
794
+ }
795
+ catch (error) {
796
+ Logger.error('Failed to get session overview:', error);
797
+ return this.emptySessionOverview(sessionId);
798
+ }
799
+ }
800
+ /**
801
+ * Get detailed overview of a single agent
802
+ */
803
+ async getAgentOverview(agentId) {
804
+ const agent = await this.getAgent(agentId);
805
+ if (!agent)
806
+ return null;
807
+ const summary = await this.getAgentSummary(agentId);
808
+ const pendingMessages = await this.getQueueDepth(agentId);
809
+ // Get current task from kanban (if any)
810
+ let currentTask;
811
+ if (this.redis) {
812
+ try {
813
+ const taskIds = await this.redis.smembers(`mcp:kanban:agent:${agentId}`);
814
+ for (const taskId of taskIds) {
815
+ const taskData = await this.redis.get(`mcp:kanban:task:${taskId}`);
816
+ if (taskData) {
817
+ const task = JSON.parse(taskData);
818
+ if (task.status === 'in_progress') {
819
+ currentTask = {
820
+ id: task.id,
821
+ title: task.title,
822
+ status: task.status,
823
+ boardId: task.boardId,
824
+ };
825
+ break;
826
+ }
827
+ }
828
+ }
829
+ }
830
+ catch {
831
+ /* ignore errors */
832
+ }
833
+ }
834
+ return {
835
+ id: agent.id,
836
+ name: agent.name,
837
+ role: agent.role,
838
+ status: agent.status,
839
+ summary: summary || undefined,
840
+ currentTask,
841
+ pendingMessages,
842
+ };
843
+ }
844
+ /**
845
+ * Helper: Get total pending messages for multiple agents
846
+ */
847
+ async getTotalPendingMessages(agentIds) {
848
+ let total = 0;
849
+ for (const id of agentIds) {
850
+ total += await this.getQueueDepth(id);
851
+ }
852
+ return total;
853
+ }
854
+ /**
855
+ * Helper: Create empty session overview
856
+ */
857
+ emptySessionOverview(sessionId) {
858
+ return {
859
+ sessionId,
860
+ workspaces: [],
861
+ boards: [],
862
+ agents: [],
863
+ recentActivity: [],
864
+ stats: {
865
+ totalAgents: 0,
866
+ activeAgents: 0,
867
+ totalTasks: 0,
868
+ tasksInProgress: 0,
869
+ pendingMessages: 0,
870
+ workspaceCount: 0,
871
+ boardCount: 0,
872
+ },
873
+ snapshotAt: Date.now(),
874
+ };
875
+ }
876
+ // ═══════════════════════════════════════════════════════════════════════════
877
+ // WATCH MODE - Continuous monitoring
878
+ // ═══════════════════════════════════════════════════════════════════════════
879
+ /**
880
+ * Watch session in real-time (returns formatted output)
881
+ */
882
+ async watchSession(sessionId, durationMs = 10000, onUpdate) {
883
+ const _startTime = Date.now(); // Track for potential future timing metrics
884
+ const outputs = [];
885
+ const formatMessage = (msg) => {
886
+ const time = new Date(msg.timestamp).toLocaleTimeString();
887
+ const priority = msg.priority === 'critical'
888
+ ? '🔴'
889
+ : msg.priority === 'high'
890
+ ? '🟠'
891
+ : msg.priority === 'normal'
892
+ ? '🟢'
893
+ : '⚪';
894
+ const type = msg.type.toUpperCase().padEnd(9);
895
+ return `[${time}] ${priority} ${type} ${msg.fromAgentId} → ${msg.toAgentId}: ${msg.content.slice(0, 100)}`;
896
+ };
897
+ // Get initial snapshot
898
+ const snapshot = await this.getConversationSnapshot(sessionId);
899
+ outputs.push(`\n═══════════════════════════════════════════════════════════════`);
900
+ outputs.push(` AGENT MONITOR - Session: ${sessionId}`);
901
+ outputs.push(`═══════════════════════════════════════════════════════════════`);
902
+ outputs.push(`\n📊 ACTIVE AGENTS (${snapshot.agents.length}):`);
903
+ for (const agent of snapshot.agents) {
904
+ const status = agent.status === 'active'
905
+ ? '🟢'
906
+ : agent.status === 'processing'
907
+ ? '🔄'
908
+ : agent.status === 'idle'
909
+ ? '💤'
910
+ : '⛔';
911
+ outputs.push(` ${status} ${agent.name} (${agent.id}) - ${agent.role} @ ${agent.serverId}`);
912
+ if (agent.currentTask) {
913
+ outputs.push(` └─ Task: ${agent.currentTask}`);
914
+ }
915
+ }
916
+ outputs.push(`\n💬 RECENT MESSAGES (${snapshot.recentMessages.length}):`);
917
+ for (const msg of snapshot.recentMessages.slice(-10)) {
918
+ outputs.push(` ${formatMessage(msg)}`);
919
+ }
920
+ if (snapshot.pendingAlerts.length > 0) {
921
+ outputs.push(`\n⚠️ PENDING ALERTS (${snapshot.pendingAlerts.length}):`);
922
+ for (const alert of snapshot.pendingAlerts) {
923
+ outputs.push(` [${alert.source}] ${alert.content}`);
924
+ }
925
+ }
926
+ // Subscribe to real-time updates
927
+ let messageCount = 0;
928
+ await this.subscribeToMessages((msg) => {
929
+ if (msg.sessionId === sessionId) {
930
+ messageCount++;
931
+ const line = ` ${formatMessage(msg)}`;
932
+ outputs.push(line);
933
+ if (onUpdate)
934
+ onUpdate(line);
935
+ }
936
+ });
937
+ // Wait for duration
938
+ await new Promise((resolve) => setTimeout(resolve, durationMs));
939
+ outputs.push(`\n───────────────────────────────────────────────────────────────`);
940
+ outputs.push(` Monitoring ended. New messages during watch: ${messageCount}`);
941
+ outputs.push(`───────────────────────────────────────────────────────────────\n`);
942
+ return outputs.join('\n');
943
+ }
944
+ }
945
+ // Singleton
946
+ let monitorInstance = null;
947
+ export function getAgentMonitor(config) {
948
+ if (!monitorInstance) {
949
+ monitorInstance = new AgentMonitor(config);
950
+ }
951
+ return monitorInstance;
952
+ }
953
+ export async function initAgentMonitor(config) {
954
+ const monitor = getAgentMonitor(config);
955
+ await monitor.connect();
956
+ return monitor;
957
+ }
958
+ //# sourceMappingURL=agent-monitor.js.map