atabey 0.0.11 → 0.0.13

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 (522) hide show
  1. package/ATABEY.md +52 -249
  2. package/PRIVACY.md +161 -0
  3. package/README.md +355 -140
  4. package/bin/completion.sh +30 -0
  5. package/bin/{validate-agent-army.js → validate-al-registry.js} +6 -6
  6. package/dist/framework-mcp/src/index.js +14 -2
  7. package/dist/framework-mcp/src/index.js.map +1 -1
  8. package/dist/framework-mcp/src/resources/index.js +5 -5
  9. package/dist/framework-mcp/src/resources/index.js.map +1 -1
  10. package/dist/framework-mcp/src/tools/control_plane/locking.d.ts +1 -1
  11. package/dist/framework-mcp/src/tools/control_plane/locking.js +11 -9
  12. package/dist/framework-mcp/src/tools/control_plane/locking.js.map +1 -1
  13. package/dist/framework-mcp/src/tools/definitions.d.ts +5 -0
  14. package/dist/framework-mcp/src/tools/definitions.js +116 -241
  15. package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
  16. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +4 -4
  17. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js.map +1 -1
  18. package/dist/framework-mcp/src/tools/file_system/read_file.js +1 -1
  19. package/dist/framework-mcp/src/tools/file_system/replace_text.js +3 -3
  20. package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +1 -1
  21. package/dist/framework-mcp/src/tools/file_system/write_file.d.ts +1 -1
  22. package/dist/framework-mcp/src/tools/file_system/write_file.js +4 -4
  23. package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -1
  24. package/dist/framework-mcp/src/tools/framework/audit_deps.js +1 -1
  25. package/dist/framework-mcp/src/tools/framework/audit_deps.js.map +1 -1
  26. package/dist/framework-mcp/src/tools/framework/submit_plan.d.ts +4 -3
  27. package/dist/framework-mcp/src/tools/framework/submit_plan.js.map +1 -1
  28. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.d.ts +19 -0
  29. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +138 -0
  30. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js.map +1 -0
  31. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.d.ts +8 -0
  32. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +91 -0
  33. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js.map +1 -0
  34. package/dist/framework-mcp/src/tools/index.d.ts +2 -0
  35. package/dist/framework-mcp/src/tools/index.js +81 -17
  36. package/dist/framework-mcp/src/tools/index.js.map +1 -1
  37. package/dist/framework-mcp/src/tools/memory/delete_knowledge.d.ts +8 -0
  38. package/dist/framework-mcp/src/tools/memory/delete_knowledge.js +29 -0
  39. package/dist/framework-mcp/src/tools/memory/delete_knowledge.js.map +1 -0
  40. package/dist/framework-mcp/src/tools/memory/read_memory.js +1 -1
  41. package/dist/framework-mcp/src/tools/memory/read_memory.js.map +1 -1
  42. package/dist/framework-mcp/src/tools/memory/search_knowledge.d.ts +8 -0
  43. package/dist/framework-mcp/src/tools/memory/search_knowledge.js +49 -0
  44. package/dist/framework-mcp/src/tools/memory/search_knowledge.js.map +1 -0
  45. package/dist/framework-mcp/src/tools/memory/store_knowledge.d.ts +10 -0
  46. package/dist/framework-mcp/src/tools/memory/store_knowledge.js +31 -0
  47. package/dist/framework-mcp/src/tools/memory/store_knowledge.js.map +1 -0
  48. package/dist/framework-mcp/src/tools/messaging/ask_human.d.ts +6 -0
  49. package/dist/framework-mcp/src/tools/messaging/ask_human.js +31 -0
  50. package/dist/framework-mcp/src/tools/messaging/ask_human.js.map +1 -0
  51. package/dist/framework-mcp/src/tools/observability/check_ports.js +1 -1
  52. package/dist/framework-mcp/src/tools/observability/check_ports.js.map +1 -1
  53. package/dist/framework-mcp/src/tools/observability/get_health.js +1 -1
  54. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.d.ts +11 -0
  55. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +166 -0
  56. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js.map +1 -0
  57. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.d.ts +11 -0
  58. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +135 -0
  59. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js.map +1 -0
  60. package/dist/framework-mcp/src/tools/schemas.d.ts +439 -0
  61. package/dist/framework-mcp/src/tools/schemas.js +183 -0
  62. package/dist/framework-mcp/src/tools/schemas.js.map +1 -0
  63. package/dist/framework-mcp/src/tools/search/get_map.js +2 -2
  64. package/dist/framework-mcp/src/tools/search/get_map.js.map +1 -1
  65. package/dist/framework-mcp/src/tools/search/grep_search.js +10 -7
  66. package/dist/framework-mcp/src/tools/search/grep_search.js.map +1 -1
  67. package/dist/framework-mcp/src/tools/shell/run_command.js +72 -7
  68. package/dist/framework-mcp/src/tools/shell/run_command.js.map +1 -1
  69. package/dist/framework-mcp/src/tools/types.d.ts +10 -9
  70. package/dist/framework-mcp/src/utils/compliance.d.ts +10 -0
  71. package/dist/framework-mcp/src/utils/compliance.js +102 -41
  72. package/dist/framework-mcp/src/utils/compliance.js.map +1 -1
  73. package/dist/framework-mcp/src/utils/fs.d.ts +10 -7
  74. package/dist/framework-mcp/src/utils/fs.js +10 -7
  75. package/dist/framework-mcp/src/utils/fs.js.map +1 -1
  76. package/dist/framework-mcp/src/utils/types.d.ts +8 -0
  77. package/dist/framework-mcp/src/utils/types.js +4 -0
  78. package/dist/framework-mcp/src/utils/types.js.map +1 -1
  79. package/dist/framework-mcp/src/utils/zod-to-mcp.d.ts +10 -0
  80. package/dist/framework-mcp/src/utils/zod-to-mcp.js +80 -0
  81. package/dist/framework-mcp/src/utils/zod-to-mcp.js.map +1 -0
  82. package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js +4 -4
  83. package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js.map +1 -1
  84. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +17 -16
  85. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +1 -1
  86. package/dist/src/cli/adapters/core.js +2 -1
  87. package/dist/src/cli/adapters/core.js.map +1 -1
  88. package/dist/src/cli/adapters/scaffold.js +2 -1
  89. package/dist/src/cli/adapters/scaffold.js.map +1 -1
  90. package/dist/src/cli/commands/check.js +17 -17
  91. package/dist/src/cli/commands/check.js.map +1 -1
  92. package/dist/src/cli/commands/compliance.d.ts +5 -1
  93. package/dist/src/cli/commands/compliance.js +34 -42
  94. package/dist/src/cli/commands/compliance.js.map +1 -1
  95. package/dist/src/cli/commands/contract.js +6 -5
  96. package/dist/src/cli/commands/contract.js.map +1 -1
  97. package/dist/src/cli/commands/coverage.d.ts +1 -0
  98. package/dist/src/cli/commands/coverage.js +121 -0
  99. package/dist/src/cli/commands/coverage.js.map +1 -0
  100. package/dist/src/cli/commands/dashboard.d.ts +1 -1
  101. package/dist/src/cli/commands/dashboard.js +479 -39
  102. package/dist/src/cli/commands/dashboard.js.map +1 -1
  103. package/dist/src/cli/commands/explorer.js +8 -7
  104. package/dist/src/cli/commands/explorer.js.map +1 -1
  105. package/dist/src/cli/commands/gateway.d.ts +1 -0
  106. package/dist/src/cli/commands/gateway.js +172 -0
  107. package/dist/src/cli/commands/gateway.js.map +1 -0
  108. package/dist/src/cli/commands/git.js +8 -9
  109. package/dist/src/cli/commands/git.js.map +1 -1
  110. package/dist/src/cli/commands/index-codebase.d.ts +4 -0
  111. package/dist/src/cli/commands/index-codebase.js +52 -0
  112. package/dist/src/cli/commands/index-codebase.js.map +1 -0
  113. package/dist/src/cli/commands/init/create-agent.js +3 -3
  114. package/dist/src/cli/commands/init/create-agent.js.map +1 -1
  115. package/dist/src/cli/commands/init/scaffold-core.d.ts +1 -1
  116. package/dist/src/cli/commands/init/scaffold-core.js +7 -6
  117. package/dist/src/cli/commands/init/scaffold-core.js.map +1 -1
  118. package/dist/src/cli/commands/init/scaffold-docs.js +4 -3
  119. package/dist/src/cli/commands/init/scaffold-docs.js.map +1 -1
  120. package/dist/src/cli/commands/init/scaffold-ops.js +3 -3
  121. package/dist/src/cli/commands/init/scaffold-ops.js.map +1 -1
  122. package/dist/src/cli/commands/init/scaffold-standards.js +11 -7
  123. package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -1
  124. package/dist/src/cli/commands/init.d.ts +2 -0
  125. package/dist/src/cli/commands/init.js +127 -45
  126. package/dist/src/cli/commands/init.js.map +1 -1
  127. package/dist/src/cli/commands/knowledge.js +5 -32
  128. package/dist/src/cli/commands/knowledge.js.map +1 -1
  129. package/dist/src/cli/commands/lint.js +5 -4
  130. package/dist/src/cli/commands/lint.js.map +1 -1
  131. package/dist/src/cli/commands/mcp.d.ts +11 -0
  132. package/dist/src/cli/commands/mcp.js +130 -0
  133. package/dist/src/cli/commands/mcp.js.map +1 -0
  134. package/dist/src/cli/commands/orchestrate.d.ts +10 -9
  135. package/dist/src/cli/commands/orchestrate.js +132 -66
  136. package/dist/src/cli/commands/orchestrate.js.map +1 -1
  137. package/dist/src/cli/commands/plan.js +16 -14
  138. package/dist/src/cli/commands/plan.js.map +1 -1
  139. package/dist/src/cli/commands/quickstart.d.ts +9 -0
  140. package/dist/src/cli/commands/quickstart.js +72 -0
  141. package/dist/src/cli/commands/quickstart.js.map +1 -0
  142. package/dist/src/cli/commands/script.js +6 -5
  143. package/dist/src/cli/commands/script.js.map +1 -1
  144. package/dist/src/cli/commands/security.js +5 -8
  145. package/dist/src/cli/commands/security.js.map +1 -1
  146. package/dist/src/cli/commands/status.js +23 -19
  147. package/dist/src/cli/commands/status.js.map +1 -1
  148. package/dist/src/cli/commands/trace.d.ts +2 -0
  149. package/dist/src/cli/commands/trace.js +59 -61
  150. package/dist/src/cli/commands/trace.js.map +1 -1
  151. package/dist/src/cli/index.js +236 -294
  152. package/dist/src/cli/index.js.map +1 -1
  153. package/dist/src/cli/platforms/core.d.ts +12 -0
  154. package/dist/src/cli/platforms/core.js +73 -0
  155. package/dist/src/cli/platforms/core.js.map +1 -0
  156. package/dist/src/cli/platforms/index.d.ts +5 -0
  157. package/dist/src/cli/platforms/index.js +6 -0
  158. package/dist/src/cli/platforms/index.js.map +1 -0
  159. package/dist/src/cli/platforms/paths.d.ts +15 -0
  160. package/dist/src/cli/platforms/paths.js +102 -0
  161. package/dist/src/cli/platforms/paths.js.map +1 -0
  162. package/dist/src/cli/platforms/scaffold.d.ts +2 -0
  163. package/dist/src/cli/platforms/scaffold.js +73 -0
  164. package/dist/src/cli/platforms/scaffold.js.map +1 -0
  165. package/dist/src/cli/platforms/utils.d.ts +4 -0
  166. package/dist/src/cli/platforms/utils.js +76 -0
  167. package/dist/src/cli/platforms/utils.js.map +1 -0
  168. package/dist/src/cli/shims.js +5 -5
  169. package/dist/src/cli/utils/claude.js +2 -1
  170. package/dist/src/cli/utils/claude.js.map +1 -1
  171. package/dist/src/cli/utils/compliance.d.ts +10 -9
  172. package/dist/src/cli/utils/compliance.js +10 -171
  173. package/dist/src/cli/utils/compliance.js.map +1 -1
  174. package/dist/src/cli/utils/fs.d.ts +3 -3
  175. package/dist/src/cli/utils/fs.js +8 -7
  176. package/dist/src/cli/utils/fs.js.map +1 -1
  177. package/dist/src/cli/utils/i18n.d.ts +5 -0
  178. package/dist/src/cli/utils/i18n.js +5 -0
  179. package/dist/src/cli/utils/i18n.js.map +1 -1
  180. package/dist/src/cli/utils/memory.js +9 -6
  181. package/dist/src/cli/utils/memory.js.map +1 -1
  182. package/dist/src/cli/utils/pkg.js +8 -7
  183. package/dist/src/cli/utils/pkg.js.map +1 -1
  184. package/dist/src/cli/utils/schemas.d.ts +4 -4
  185. package/dist/src/cli/utils/ui.d.ts +23 -0
  186. package/dist/src/cli/utils/ui.js +42 -0
  187. package/dist/src/cli/utils/ui.js.map +1 -1
  188. package/dist/src/contracts/tasks.d.ts +4 -4
  189. package/dist/src/dashboard/src/hooks/useApi.d.ts +18 -0
  190. package/dist/src/dashboard/src/hooks/useApi.js +47 -0
  191. package/dist/src/dashboard/src/hooks/useApi.js.map +1 -0
  192. package/dist/src/dashboard/src/hooks/useSSE.d.ts +12 -0
  193. package/dist/src/dashboard/src/hooks/useSSE.js +60 -0
  194. package/dist/src/dashboard/src/hooks/useSSE.js.map +1 -0
  195. package/dist/src/modules/adapters/shared.js +3 -3
  196. package/dist/src/modules/adapters/shared.js.map +1 -1
  197. package/dist/src/modules/agents/definitions.d.ts +5 -13
  198. package/dist/src/modules/agents/definitions.js +179 -78
  199. package/dist/src/modules/agents/definitions.js.map +1 -1
  200. package/dist/src/modules/agents/registry/analyst.js +2 -1
  201. package/dist/src/modules/agents/registry/analyst.js.map +1 -1
  202. package/dist/src/modules/agents/registry/architect.js +1 -0
  203. package/dist/src/modules/agents/registry/architect.js.map +1 -1
  204. package/dist/src/modules/agents/registry/backend.js +8 -6
  205. package/dist/src/modules/agents/registry/backend.js.map +1 -1
  206. package/dist/src/modules/agents/registry/database.js.map +1 -1
  207. package/dist/src/modules/agents/registry/devops.js.map +1 -1
  208. package/dist/src/modules/agents/registry/explorer.js +2 -0
  209. package/dist/src/modules/agents/registry/explorer.js.map +1 -1
  210. package/dist/src/modules/agents/registry/frontend.js +8 -6
  211. package/dist/src/modules/agents/registry/frontend.js.map +1 -1
  212. package/dist/src/modules/agents/registry/git.js.map +1 -1
  213. package/dist/src/modules/agents/registry/manager.js +11 -4
  214. package/dist/src/modules/agents/registry/manager.js.map +1 -1
  215. package/dist/src/modules/agents/registry/mobile.js +7 -5
  216. package/dist/src/modules/agents/registry/mobile.js.map +1 -1
  217. package/dist/src/modules/agents/registry/native.js +7 -5
  218. package/dist/src/modules/agents/registry/native.js.map +1 -1
  219. package/dist/src/modules/agents/registry/quality.js +11 -8
  220. package/dist/src/modules/agents/registry/quality.js.map +1 -1
  221. package/dist/src/modules/agents/registry/security.js.map +1 -1
  222. package/dist/src/modules/contracts/api.d.ts +178 -0
  223. package/dist/src/modules/contracts/api.js +56 -0
  224. package/dist/src/modules/contracts/api.js.map +1 -0
  225. package/dist/src/modules/contracts/index.d.ts +5 -0
  226. package/dist/src/modules/contracts/index.js +6 -0
  227. package/dist/src/modules/contracts/index.js.map +1 -0
  228. package/dist/src/modules/engines/agent-executor.d.ts +50 -0
  229. package/dist/src/modules/engines/agent-executor.js +188 -0
  230. package/dist/src/modules/engines/agent-executor.js.map +1 -0
  231. package/dist/src/modules/engines/health-engine.d.ts +7 -1
  232. package/dist/src/modules/engines/health-engine.js +85 -8
  233. package/dist/src/modules/engines/health-engine.js.map +1 -1
  234. package/dist/src/modules/engines/planning-engine.d.ts +1 -1
  235. package/dist/src/modules/engines/planning-engine.js +5 -4
  236. package/dist/src/modules/engines/planning-engine.js.map +1 -1
  237. package/dist/src/modules/engines/quality-gate.d.ts +23 -0
  238. package/dist/src/modules/engines/quality-gate.js +85 -0
  239. package/dist/src/modules/engines/quality-gate.js.map +1 -0
  240. package/dist/src/modules/engines/risk-engine.js +6 -6
  241. package/dist/src/modules/engines/risk-engine.js.map +1 -1
  242. package/dist/src/modules/engines/routing-engine.d.ts +59 -1
  243. package/dist/src/modules/engines/routing-engine.js +353 -25
  244. package/dist/src/modules/engines/routing-engine.js.map +1 -1
  245. package/dist/src/modules/engines/types.d.ts +7 -3
  246. package/dist/src/modules/gateway/circuit-breaker.d.ts +40 -0
  247. package/dist/src/modules/gateway/circuit-breaker.js +163 -0
  248. package/dist/src/modules/gateway/circuit-breaker.js.map +1 -0
  249. package/dist/src/modules/gateway/cost-tracker.d.ts +55 -0
  250. package/dist/src/modules/gateway/cost-tracker.js +127 -0
  251. package/dist/src/modules/gateway/cost-tracker.js.map +1 -0
  252. package/dist/src/modules/gateway/gateway.d.ts +68 -0
  253. package/dist/src/modules/gateway/gateway.js +235 -0
  254. package/dist/src/modules/gateway/gateway.js.map +1 -0
  255. package/dist/src/modules/gateway/index.d.ts +19 -0
  256. package/dist/src/modules/gateway/index.js +19 -0
  257. package/dist/src/modules/gateway/index.js.map +1 -0
  258. package/dist/src/modules/gateway/load-balancer.d.ts +86 -0
  259. package/dist/src/modules/gateway/load-balancer.js +230 -0
  260. package/dist/src/modules/gateway/load-balancer.js.map +1 -0
  261. package/dist/src/modules/gateway/providers/anthropic.d.ts +14 -0
  262. package/dist/src/modules/gateway/providers/anthropic.js +169 -0
  263. package/dist/src/modules/gateway/providers/anthropic.js.map +1 -0
  264. package/dist/src/modules/gateway/providers/base.d.ts +38 -0
  265. package/dist/src/modules/gateway/providers/base.js +42 -0
  266. package/dist/src/modules/gateway/providers/base.js.map +1 -0
  267. package/dist/src/modules/gateway/providers/google.d.ts +18 -0
  268. package/dist/src/modules/gateway/providers/google.js +176 -0
  269. package/dist/src/modules/gateway/providers/google.js.map +1 -0
  270. package/dist/src/modules/gateway/providers/grok.d.ts +14 -0
  271. package/dist/src/modules/gateway/providers/grok.js +166 -0
  272. package/dist/src/modules/gateway/providers/grok.js.map +1 -0
  273. package/dist/src/modules/gateway/providers/index.d.ts +21 -0
  274. package/dist/src/modules/gateway/providers/index.js +38 -0
  275. package/dist/src/modules/gateway/providers/index.js.map +1 -0
  276. package/dist/src/modules/gateway/providers/ollama.d.ts +23 -0
  277. package/dist/src/modules/gateway/providers/ollama.js +187 -0
  278. package/dist/src/modules/gateway/providers/ollama.js.map +1 -0
  279. package/dist/src/modules/gateway/providers/openai.d.ts +14 -0
  280. package/dist/src/modules/gateway/providers/openai.js +170 -0
  281. package/dist/src/modules/gateway/providers/openai.js.map +1 -0
  282. package/dist/src/modules/gateway/rate-limiter.d.ts +41 -0
  283. package/dist/src/modules/gateway/rate-limiter.js +119 -0
  284. package/dist/src/modules/gateway/rate-limiter.js.map +1 -0
  285. package/dist/src/modules/gateway/types.d.ts +114 -0
  286. package/dist/src/modules/gateway/types.js +8 -0
  287. package/dist/src/modules/gateway/types.js.map +1 -0
  288. package/dist/src/modules/memory/core.d.ts +42 -0
  289. package/dist/src/modules/memory/core.js +100 -0
  290. package/dist/src/modules/memory/core.js.map +1 -0
  291. package/dist/src/modules/memory/embedding.d.ts +28 -0
  292. package/dist/src/modules/memory/embedding.js +131 -0
  293. package/dist/src/modules/memory/embedding.js.map +1 -0
  294. package/dist/src/modules/memory/types.d.ts +18 -0
  295. package/dist/src/modules/memory/types.js +2 -0
  296. package/dist/src/modules/memory/types.js.map +1 -0
  297. package/dist/src/modules/memory/vector-store.d.ts +13 -0
  298. package/dist/src/modules/memory/vector-store.js +75 -0
  299. package/dist/src/modules/memory/vector-store.js.map +1 -0
  300. package/dist/src/modules/providers/definitions.d.ts +9 -0
  301. package/dist/src/modules/providers/definitions.js +141 -0
  302. package/dist/src/modules/providers/definitions.js.map +1 -0
  303. package/dist/src/modules/providers/registry.d.ts +12 -0
  304. package/dist/src/modules/providers/registry.js +19 -0
  305. package/dist/src/modules/providers/registry.js.map +1 -0
  306. package/dist/src/modules/providers/shared.d.ts +1 -0
  307. package/dist/src/modules/providers/shared.js +105 -0
  308. package/dist/src/modules/providers/shared.js.map +1 -0
  309. package/dist/src/modules/providers/types.d.ts +14 -0
  310. package/dist/src/modules/providers/types.js +2 -0
  311. package/dist/src/modules/providers/types.js.map +1 -0
  312. package/dist/src/modules/skills/adapter-skills.d.ts +68 -0
  313. package/dist/src/modules/skills/adapter-skills.js +450 -0
  314. package/dist/src/modules/skills/adapter-skills.js.map +1 -0
  315. package/dist/src/shared/audit.d.ts +105 -0
  316. package/dist/src/shared/audit.js +220 -0
  317. package/dist/src/shared/audit.js.map +1 -0
  318. package/dist/src/shared/constants.d.ts +11 -11
  319. package/dist/src/shared/constants.js +3 -3
  320. package/dist/src/shared/constants.js.map +1 -1
  321. package/dist/src/shared/fs.js +4 -2
  322. package/dist/src/shared/fs.js.map +1 -1
  323. package/dist/src/shared/lock.d.ts +82 -0
  324. package/dist/src/shared/lock.js +160 -0
  325. package/dist/src/shared/lock.js.map +1 -0
  326. package/dist/src/shared/logger.d.ts +2 -0
  327. package/dist/src/shared/logger.js +15 -5
  328. package/dist/src/shared/logger.js.map +1 -1
  329. package/dist/src/shared/pii.d.ts +37 -0
  330. package/dist/src/shared/pii.js +122 -0
  331. package/dist/src/shared/pii.js.map +1 -0
  332. package/dist/src/shared/retention.d.ts +63 -0
  333. package/dist/src/shared/retention.js +171 -0
  334. package/dist/src/shared/retention.js.map +1 -0
  335. package/dist/src/shared/storage.d.ts +13 -11
  336. package/dist/src/shared/storage.js +18 -14
  337. package/dist/src/shared/storage.js.map +1 -1
  338. package/dist/src/shared/string.d.ts +1 -0
  339. package/dist/src/shared/string.js +30 -0
  340. package/dist/src/shared/string.js.map +1 -0
  341. package/dist/src/shared/types.d.ts +8 -0
  342. package/dist/src/shared/types.js +4 -0
  343. package/dist/src/shared/types.js.map +1 -1
  344. package/dist/tests/adapter.test.js +3 -2
  345. package/dist/tests/adapter.test.js.map +1 -1
  346. package/dist/tests/adapters/paths.test.js +4 -4
  347. package/dist/tests/adapters/paths.test.js.map +1 -1
  348. package/dist/tests/cli/commands/check.test.d.ts +1 -0
  349. package/dist/tests/cli/commands/check.test.js +9 -0
  350. package/dist/tests/cli/commands/check.test.js.map +1 -0
  351. package/dist/tests/cli/commands/coverage.test.d.ts +1 -0
  352. package/dist/tests/cli/commands/coverage.test.js +9 -0
  353. package/dist/tests/cli/commands/coverage.test.js.map +1 -0
  354. package/dist/tests/cli/commands/dashboard-coverage.test.d.ts +1 -0
  355. package/dist/tests/cli/commands/dashboard-coverage.test.js +88 -0
  356. package/dist/tests/cli/commands/dashboard-coverage.test.js.map +1 -0
  357. package/dist/tests/cli/commands/exports.test.d.ts +1 -0
  358. package/dist/tests/cli/commands/exports.test.js +61 -0
  359. package/dist/tests/cli/commands/exports.test.js.map +1 -0
  360. package/dist/tests/cli/commands/lint.test.d.ts +1 -0
  361. package/dist/tests/cli/commands/lint.test.js +9 -0
  362. package/dist/tests/cli/commands/lint.test.js.map +1 -0
  363. package/dist/tests/cli/init/adapter_init.test.js +4 -5
  364. package/dist/tests/cli/init/adapter_init.test.js.map +1 -1
  365. package/dist/tests/cli/init/unified_init.test.js +5 -7
  366. package/dist/tests/cli/init/unified_init.test.js.map +1 -1
  367. package/dist/tests/core-memory.test.d.ts +1 -0
  368. package/dist/tests/core-memory.test.js +78 -0
  369. package/dist/tests/core-memory.test.js.map +1 -0
  370. package/dist/tests/dashboard.test.d.ts +1 -0
  371. package/dist/tests/dashboard.test.js +116 -0
  372. package/dist/tests/dashboard.test.js.map +1 -0
  373. package/dist/tests/fs-utils.test.js +5 -5
  374. package/dist/tests/fs-utils.test.js.map +1 -1
  375. package/dist/tests/integration/agent_flow.test.js +24 -10
  376. package/dist/tests/integration/agent_flow.test.js.map +1 -1
  377. package/dist/tests/modules/adapters/adapters.test.js +2 -2
  378. package/dist/tests/modules/adapters/adapters.test.js.map +1 -1
  379. package/dist/tests/modules/contracts/contracts.test.d.ts +1 -0
  380. package/dist/tests/modules/contracts/contracts.test.js +73 -0
  381. package/dist/tests/modules/contracts/contracts.test.js.map +1 -0
  382. package/dist/tests/modules/engines/agent-executor.test.d.ts +1 -0
  383. package/dist/tests/modules/engines/agent-executor.test.js +61 -0
  384. package/dist/tests/modules/engines/agent-executor.test.js.map +1 -0
  385. package/dist/tests/modules/engines/evaluation-engine.test.d.ts +1 -0
  386. package/dist/tests/modules/engines/evaluation-engine.test.js +45 -0
  387. package/dist/tests/modules/engines/evaluation-engine.test.js.map +1 -0
  388. package/dist/tests/modules/engines/health-engine.test.d.ts +1 -0
  389. package/dist/tests/modules/engines/health-engine.test.js +56 -0
  390. package/dist/tests/modules/engines/health-engine.test.js.map +1 -0
  391. package/dist/tests/modules/engines/planning-engine.test.d.ts +1 -0
  392. package/dist/tests/modules/engines/planning-engine.test.js +75 -0
  393. package/dist/tests/modules/engines/planning-engine.test.js.map +1 -0
  394. package/dist/tests/modules/engines/risk-engine.test.d.ts +1 -0
  395. package/dist/tests/modules/engines/risk-engine.test.js +61 -0
  396. package/dist/tests/modules/engines/risk-engine.test.js.map +1 -0
  397. package/dist/tests/modules/engines/routing-engine.test.d.ts +1 -0
  398. package/dist/tests/modules/engines/routing-engine.test.js +56 -0
  399. package/dist/tests/modules/engines/routing-engine.test.js.map +1 -0
  400. package/dist/tests/modules/gateway/circuit-breaker.test.d.ts +1 -0
  401. package/dist/tests/modules/gateway/circuit-breaker.test.js +124 -0
  402. package/dist/tests/modules/gateway/circuit-breaker.test.js.map +1 -0
  403. package/dist/tests/modules/gateway/cost-tracker.test.d.ts +1 -0
  404. package/dist/tests/modules/gateway/cost-tracker.test.js +74 -0
  405. package/dist/tests/modules/gateway/cost-tracker.test.js.map +1 -0
  406. package/dist/tests/modules/gateway/load-balancer.test.d.ts +1 -0
  407. package/dist/tests/modules/gateway/load-balancer.test.js +70 -0
  408. package/dist/tests/modules/gateway/load-balancer.test.js.map +1 -0
  409. package/dist/tests/modules/gateway/rate-limiter.test.d.ts +1 -0
  410. package/dist/tests/modules/gateway/rate-limiter.test.js +62 -0
  411. package/dist/tests/modules/gateway/rate-limiter.test.js.map +1 -0
  412. package/dist/tests/modules/memory/vector-store.test.d.ts +1 -0
  413. package/dist/tests/modules/memory/vector-store.test.js +109 -0
  414. package/dist/tests/modules/memory/vector-store.test.js.map +1 -0
  415. package/dist/tests/orchestrator-dependencies.test.js +40 -22
  416. package/dist/tests/orchestrator-dependencies.test.js.map +1 -1
  417. package/dist/tests/planning-engine.test.js +9 -8
  418. package/dist/tests/planning-engine.test.js.map +1 -1
  419. package/dist/tests/risk-engine.test.d.ts +1 -0
  420. package/dist/tests/risk-engine.test.js +44 -0
  421. package/dist/tests/risk-engine.test.js.map +1 -0
  422. package/dist/tests/shared/audit.test.d.ts +1 -0
  423. package/dist/tests/shared/audit.test.js +53 -0
  424. package/dist/tests/shared/audit.test.js.map +1 -0
  425. package/dist/tests/status-cost.test.js +15 -24
  426. package/dist/tests/status-cost.test.js.map +1 -1
  427. package/dist/tests/status.test.js +16 -17
  428. package/dist/tests/status.test.js.map +1 -1
  429. package/dist/tests/storage-operations.test.d.ts +1 -0
  430. package/dist/tests/storage-operations.test.js +116 -0
  431. package/dist/tests/storage-operations.test.js.map +1 -0
  432. package/dist/tests/trace-replay.test.js +34 -40
  433. package/dist/tests/trace-replay.test.js.map +1 -1
  434. package/dist/ui/assets/index-B-d2ejS8.js +519 -0
  435. package/dist/ui/assets/index-CyXywq5G.css +1 -0
  436. package/dist/ui/index.html +2 -2
  437. package/dist/vitest.config.js +5 -5
  438. package/dist/vitest.config.js.map +1 -1
  439. package/framework-mcp/README.md +339 -25
  440. package/framework-mcp/dist/dashboard/assets/index-BAPGLiWE.js +267 -0
  441. package/framework-mcp/dist/dashboard/index.html +15 -0
  442. package/framework-mcp/dist/framework-mcp/src/constants.js +64 -0
  443. package/framework-mcp/dist/framework-mcp/src/index.js +156 -0
  444. package/framework-mcp/dist/framework-mcp/src/resources/index.js +58 -0
  445. package/framework-mcp/dist/framework-mcp/src/tools/control_plane/locking.js +84 -0
  446. package/framework-mcp/dist/framework-mcp/src/tools/control_plane/registry.js +35 -0
  447. package/framework-mcp/dist/framework-mcp/src/tools/definitions.js +197 -0
  448. package/framework-mcp/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +64 -0
  449. package/framework-mcp/dist/framework-mcp/src/tools/file_system/patch_file.js +34 -0
  450. package/framework-mcp/dist/framework-mcp/src/tools/file_system/read_file.js +51 -0
  451. package/framework-mcp/dist/framework-mcp/src/tools/file_system/replace_text.js +50 -0
  452. package/framework-mcp/dist/framework-mcp/src/tools/file_system/write_file.js +55 -0
  453. package/framework-mcp/dist/framework-mcp/src/tools/framework/audit_deps.js +41 -0
  454. package/framework-mcp/dist/framework-mcp/src/tools/framework/get_status.js +5 -0
  455. package/framework-mcp/dist/framework-mcp/src/tools/framework/orchestrate.js +5 -0
  456. package/framework-mcp/dist/framework-mcp/src/tools/framework/run_tests.js +27 -0
  457. package/framework-mcp/dist/framework-mcp/src/tools/framework/submit_plan.js +13 -0
  458. package/framework-mcp/dist/framework-mcp/src/tools/framework/update_contract_hash.js +5 -0
  459. package/framework-mcp/dist/framework-mcp/src/tools/framework/update_memory.js +8 -0
  460. package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +137 -0
  461. package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +90 -0
  462. package/framework-mcp/dist/framework-mcp/src/tools/index.js +126 -0
  463. package/framework-mcp/dist/framework-mcp/src/tools/memory/delete_knowledge.js +28 -0
  464. package/framework-mcp/dist/framework-mcp/src/tools/memory/get_insights.js +22 -0
  465. package/framework-mcp/dist/framework-mcp/src/tools/memory/read_memory.js +28 -0
  466. package/framework-mcp/dist/framework-mcp/src/tools/memory/search_knowledge.js +48 -0
  467. package/framework-mcp/dist/framework-mcp/src/tools/memory/store_knowledge.js +30 -0
  468. package/framework-mcp/dist/framework-mcp/src/tools/messaging/ask_human.js +30 -0
  469. package/framework-mcp/dist/framework-mcp/src/tools/messaging/log_action.js +22 -0
  470. package/framework-mcp/dist/framework-mcp/src/tools/messaging/send_message.js +94 -0
  471. package/framework-mcp/dist/framework-mcp/src/tools/observability/check_ports.js +26 -0
  472. package/framework-mcp/dist/framework-mcp/src/tools/observability/get_health.js +19 -0
  473. package/framework-mcp/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +165 -0
  474. package/framework-mcp/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +134 -0
  475. package/framework-mcp/dist/framework-mcp/src/tools/quality/check_lint.js +30 -0
  476. package/framework-mcp/dist/framework-mcp/src/tools/schemas.js +182 -0
  477. package/framework-mcp/dist/framework-mcp/src/tools/search/get_gaps.js +48 -0
  478. package/framework-mcp/dist/framework-mcp/src/tools/search/get_map.js +43 -0
  479. package/framework-mcp/dist/framework-mcp/src/tools/search/grep_search.js +78 -0
  480. package/framework-mcp/dist/framework-mcp/src/tools/search/list_dir.js +28 -0
  481. package/framework-mcp/dist/framework-mcp/src/tools/shell/run_command.js +121 -0
  482. package/framework-mcp/dist/framework-mcp/src/tools/types.js +1 -0
  483. package/framework-mcp/dist/framework-mcp/src/utils/cli.js +59 -0
  484. package/framework-mcp/dist/framework-mcp/src/utils/compliance.js +292 -0
  485. package/framework-mcp/dist/framework-mcp/src/utils/errors.js +68 -0
  486. package/framework-mcp/dist/framework-mcp/src/utils/fs.js +47 -0
  487. package/framework-mcp/dist/framework-mcp/src/utils/memory.js +74 -0
  488. package/framework-mcp/dist/framework-mcp/src/utils/metrics.js +56 -0
  489. package/framework-mcp/dist/framework-mcp/src/utils/permissions.js +71 -0
  490. package/framework-mcp/dist/framework-mcp/src/utils/security.js +60 -0
  491. package/framework-mcp/dist/framework-mcp/src/utils/storage.js +207 -0
  492. package/framework-mcp/dist/framework-mcp/src/utils/types.js +16 -0
  493. package/framework-mcp/dist/framework-mcp/src/utils/zod-to-mcp.js +79 -0
  494. package/framework-mcp/dist/index.js +14 -2
  495. package/framework-mcp/dist/src/cli/utils/memory.js +279 -0
  496. package/framework-mcp/dist/src/cli/utils/time.js +27 -0
  497. package/framework-mcp/dist/src/cli/utils/ui.js +100 -0
  498. package/framework-mcp/dist/src/modules/memory/core.js +99 -0
  499. package/framework-mcp/dist/src/modules/memory/embedding.js +130 -0
  500. package/framework-mcp/dist/src/modules/memory/types.js +1 -0
  501. package/framework-mcp/dist/src/modules/memory/vector-store.js +74 -0
  502. package/framework-mcp/dist/src/shared/constants.js +187 -0
  503. package/framework-mcp/dist/src/shared/fs.js +53 -0
  504. package/framework-mcp/dist/src/shared/logger.js +126 -0
  505. package/framework-mcp/dist/src/shared/pii.js +121 -0
  506. package/framework-mcp/dist/src/shared/storage.js +211 -0
  507. package/framework-mcp/dist/src/shared/types.js +16 -0
  508. package/framework-mcp/dist/tools/definitions.js +79 -247
  509. package/framework-mcp/dist/tools/index.js +37 -0
  510. package/framework-mcp/dist/tools/schemas.js +133 -0
  511. package/framework-mcp/dist/utils/types.js +4 -0
  512. package/framework-mcp/dist/utils/zod-to-mcp.js +77 -0
  513. package/framework-mcp/package.json +2 -2
  514. package/mcp.json +5 -4
  515. package/package.json +19 -17
  516. package/templates/full/ATABEY_FULL.md +515 -0
  517. package/templates/standards/crud-governance.md +1 -1
  518. package/templates/standards/logging-and-secrets.md +1 -1
  519. package/templates/standards/performance-standards.md +2 -2
  520. package/templates/standards/quality-standards.md +1 -1
  521. package/dist/ui/assets/index-Bkt7APzu.css +0 -1
  522. package/dist/ui/assets/index-CeX-06mI.js +0 -49
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Hermes Control Center | Agent Atabey</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
10
+ <script type="module" crossorigin src="/assets/index-BAPGLiWE.js"></script>
11
+ </head>
12
+ <body>
13
+ <div id="root"></div>
14
+ </body>
15
+ </html>
@@ -0,0 +1,64 @@
1
+ import path from "path";
2
+ /**
3
+ * Agent Atabey — Single Source of Truth for framework constants.
4
+ * Import from here instead of hardcoding paths, phases, or directory names.
5
+ */
6
+ // ─── Framework identity ───────────────────────────────────────────────────
7
+ export const FRAMEWORK = {
8
+ NAME: "Agent Atabey",
9
+ CORE_DIR: ".atabey",
10
+ // This is the hub for unified adapter layouts (e.g. .agents/gemini, .agents/claude)
11
+ UNIFIED_HUB_DIR: ".agents",
12
+ // This is the default directory to scaffold new apps into
13
+ APPS_DIR: "apps",
14
+ // This is where all skills are stored
15
+ SKILLS_DIR: "skills",
16
+ };
17
+ export const FRAMEWORK_SUBDIRS = {
18
+ AGENTS: "agents",
19
+ SKILLS: "skills",
20
+ KNOWLEDGE: "knowledge",
21
+ MESSAGES: "messages",
22
+ MEMORY: "memory",
23
+ MEMORY_GRAPH: "memory-graph",
24
+ LOGS: "logs",
25
+ CONFIG: "config",
26
+ };
27
+ export const ROOT_CONFIG_FILES = {
28
+ MCP: "mcp.json",
29
+ NATIVE_MODULES: "native-modules.json",
30
+ TSCONFIG: "tsconfig.json",
31
+ ESLINT: "eslint.config.js",
32
+ };
33
+ export const MCP = {
34
+ // Environment variable used by MCP to identify project root
35
+ PROJECT_ROOT_ENV: "ATABEY_PROJECT_ROOT",
36
+ // Environment variable for test mode
37
+ TEST_DIR_ENV: "ATABEY_TEST_DIR",
38
+ };
39
+ export const MEMORY_FILES = {
40
+ STATE: "state.json",
41
+ SHARED_FACTS: "shared_facts.json",
42
+ };
43
+ export const NATIVE_AGENT_PATHS = {
44
+ gemini: ".gemini/agents",
45
+ claude: ".claude/agents",
46
+ cursor: ".cursor/rules",
47
+ codex: ".agents/instructions",
48
+ grok: ".grok",
49
+ "antigravity-cli": ".agents/agents",
50
+ };
51
+ // ─── Backward-compatible aliases ──────────────────────────────────────────
52
+ export const CORE_FRAMEWORK_DIR = FRAMEWORK.CORE_DIR;
53
+ export const UNIFIED_HUB_DIR = FRAMEWORK.UNIFIED_HUB_DIR;
54
+ export const SKILLS_HUB_PATH = pathJoin(UNIFIED_HUB_DIR, FRAMEWORK_SUBDIRS.SKILLS);
55
+ // ─── Path Helpers ─────────────────────────────────────────────────────────
56
+ function pathJoin(...args) {
57
+ return path.join(...args);
58
+ }
59
+ function corePath(subdir, filename) {
60
+ return pathJoin(FRAMEWORK.CORE_DIR, subdir, filename);
61
+ }
62
+ export function knowledgePath(filename) {
63
+ return corePath(FRAMEWORK_SUBDIRS.KNOWLEDGE, filename);
64
+ }
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/env node
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { fileURLToPath } from "url";
5
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
6
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
7
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
8
+ import { TOOLS, toolHandlers, toolSchemas } from "./tools/index.js";
9
+ import { RESOURCES, handleReadResource } from "./resources/index.js";
10
+ // ─── Server Setup ─────────────────────────────────────────────────
11
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
12
+ // Robustly find package.json by walking up from __dirname
13
+ function findPackageJson(startDir) {
14
+ let currentDir = startDir;
15
+ while (currentDir !== path.parse(currentDir).root) {
16
+ const pkgPath = path.join(currentDir, "package.json");
17
+ if (fs.existsSync(pkgPath))
18
+ return pkgPath;
19
+ currentDir = path.dirname(currentDir);
20
+ }
21
+ throw new Error("Could not find package.json for atabey-mcp");
22
+ }
23
+ const pkgPath = findPackageJson(__dirname);
24
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
25
+ const serverVersion = pkg.version;
26
+ const server = new Server({
27
+ name: "atabey-mcp",
28
+ version: serverVersion,
29
+ }, {
30
+ capabilities: {
31
+ tools: {},
32
+ resources: {},
33
+ },
34
+ });
35
+ /**
36
+ * Validates tool arguments using Zod schemas for "Zero Type Hole" compliance.
37
+ * Falls back to basic presence check if no Zod schema is defined for the tool.
38
+ */
39
+ function validateArgs(toolName, args) {
40
+ const schema = toolSchemas[toolName];
41
+ if (schema) {
42
+ const result = schema.safeParse(args);
43
+ if (!result.success) {
44
+ return result.error.errors.map(e => `${e.path.join(".")}: ${e.message}`).join(", ");
45
+ }
46
+ return null;
47
+ }
48
+ // Fallback for tools without Zod schemas yet
49
+ const definition = TOOLS.find(t => t.name === toolName);
50
+ if (!definition)
51
+ return `Unknown tool: ${toolName}`;
52
+ const required = definition.inputSchema.required || [];
53
+ for (const field of required) {
54
+ if (args[field] === undefined || args[field] === null || args[field] === "") {
55
+ return `Missing required argument: '${field}' for tool '${toolName}'`;
56
+ }
57
+ }
58
+ return null;
59
+ }
60
+ server.setRequestHandler(ListToolsRequestSchema, async (request) => {
61
+ // 2026 Stateless Spec: Log client info from metadata if available
62
+ const meta = request._meta;
63
+ if (meta) {
64
+ process.stderr.write(`[MCP] Stateless ListTools from ${meta.client?.name || "unknown"} v${meta.client?.version || "?.?"}\n`);
65
+ }
66
+ return { tools: TOOLS };
67
+ });
68
+ server.setRequestHandler(ListResourcesRequestSchema, async () => {
69
+ return { resources: RESOURCES };
70
+ });
71
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
72
+ const uri = request.params.uri;
73
+ try {
74
+ const content = await handleReadResource(uri);
75
+ return {
76
+ contents: [
77
+ {
78
+ uri,
79
+ mimeType: "text/markdown",
80
+ text: content,
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ catch (error) {
86
+ const message = error instanceof Error ? error.message : String(error);
87
+ throw new Error(`Failed to read resource: ${message}`, { cause: error });
88
+ }
89
+ });
90
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
91
+ const req = request;
92
+ const { name, arguments: args } = req.params;
93
+ const meta = request._meta;
94
+ // 2026 Stateless Spec: Prioritize metadata-driven context
95
+ if (meta) {
96
+ process.stderr.write(`[MCP] Stateless CallTool: ${name} (Client: ${meta.client?.name || "unknown"})\n`);
97
+ }
98
+ const projectRoot = process.env.ATABEY_PROJECT_ROOT || process.cwd();
99
+ try {
100
+ const handler = toolHandlers[name];
101
+ if (!handler) {
102
+ return {
103
+ isError: true,
104
+ content: [{ type: "text", text: `[ERROR] Unknown tool: ${name}` }],
105
+ };
106
+ }
107
+ // [SECURITY] Runtime Validation
108
+ const validationError = validateArgs(name, args || {});
109
+ if (validationError) {
110
+ return {
111
+ isError: true,
112
+ content: [{ type: "text", text: `[ERROR] Validation Error: ${validationError}` }],
113
+ };
114
+ }
115
+ return await handler(projectRoot, args || {});
116
+ }
117
+ catch (error) {
118
+ const message = error instanceof Error ? error.message : "Unknown error occurred";
119
+ return {
120
+ isError: true,
121
+ content: [{ type: "text", text: `[ERROR] Execution failed: ${message}` }],
122
+ };
123
+ }
124
+ });
125
+ // ─── Graceful Startup & Shutdown ──────────────────────────────────
126
+ async function run() {
127
+ const transport = new StdioServerTransport();
128
+ // Prevent unhandled errors from crashing the MCP stream
129
+ process.on("uncaughtException", (error) => {
130
+ process.stderr.write(`[atabey-mcp] Uncaught exception: ${error.message}
131
+ `);
132
+ });
133
+ process.on("unhandledRejection", (reason) => {
134
+ const message = reason instanceof Error ? reason.message : String(reason);
135
+ process.stderr.write(`[atabey-mcp] Unhandled rejection: ${message}
136
+ `);
137
+ });
138
+ // Graceful shutdown on SIGINT/SIGTERM
139
+ const shutdown = async () => {
140
+ try {
141
+ await server.close();
142
+ }
143
+ catch {
144
+ // Already closed or failed — safe to ignore
145
+ }
146
+ process.exit(0);
147
+ };
148
+ process.on("SIGINT", shutdown);
149
+ process.on("SIGTERM", shutdown);
150
+ await server.connect(transport);
151
+ }
152
+ run().catch((error) => {
153
+ process.stderr.write(`[atabey-mcp] Fatal startup error: ${error.message}
154
+ `);
155
+ process.exit(1);
156
+ });
@@ -0,0 +1,58 @@
1
+ import { Storage } from "../utils/storage.js";
2
+ /**
3
+ * [DATA] MCP Resource Definitions
4
+ */
5
+ export const RESOURCES = [
6
+ {
7
+ uri: "atabey://AL/status",
8
+ name: "AL Registry Status",
9
+ description: "Real-time state and active tasks of all specialized agents.",
10
+ mimeType: "text/markdown"
11
+ },
12
+ {
13
+ uri: "atabey://plan/active",
14
+ name: "Active Execution Plan",
15
+ description: "The current DAG of tasks and their completion status.",
16
+ mimeType: "text/markdown"
17
+ },
18
+ {
19
+ uri: "atabey://memory/project",
20
+ name: "Project Memory",
21
+ description: "The central source of truth for project context (PROJECT_MEMORY.md).",
22
+ mimeType: "text/markdown"
23
+ }
24
+ ];
25
+ export async function handleReadResource(uri) {
26
+ if (uri === "atabey://AL/status") {
27
+ const agents = Storage.getAllAgents();
28
+ let md = "# [AI] AL Registry Status\n\n| Agent | State | Active Task | Last Updated |\n| :--- | :--- | :--- | :--- |\n";
29
+ agents.forEach((a) => {
30
+ md += `| @${a.name} | ${a.state} | ${a.task} | ${a.last_updated} |\n`;
31
+ });
32
+ return md;
33
+ }
34
+ if (uri === "atabey://plan/active") {
35
+ const tasks = Storage.getTasks();
36
+ let md = "# [LIST] Active Execution Plan\n\n| ID | Task | Agent | Status | Dependencies |\n| :--- | :--- | :--- | :--- | :--- |\n";
37
+ tasks.forEach((t) => {
38
+ const deps = t.dependencies.join(", ") || "-";
39
+ md += `| ${t.id} | ${t.description} | ${t.agent} | ${t.status} | ${deps} |\n`;
40
+ });
41
+ return md;
42
+ }
43
+ if (uri === "atabey://memory/project") {
44
+ const fs = await import("fs");
45
+ const path = await import("path");
46
+ const { getFrameworkDir } = await import("../utils/memory.js");
47
+ const projectRoot = process.env.ATABEY_PROJECT_ROOT || process.cwd();
48
+ const fwDir = getFrameworkDir();
49
+ const p = path.isAbsolute(fwDir)
50
+ ? path.join(fwDir, "memory", "PROJECT_MEMORY.md")
51
+ : path.join(projectRoot, fwDir, "memory", "PROJECT_MEMORY.md");
52
+ if (fs.existsSync(p)) {
53
+ return fs.readFileSync(p, "utf8");
54
+ }
55
+ return "Project memory not found. Run 'atabey init' first.";
56
+ }
57
+ throw new Error(`Unknown resource URI: ${uri}`);
58
+ }
@@ -0,0 +1,84 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { resolveFrameworkDir } from "../../utils/security.js";
4
+ import { Metrics } from "../../utils/metrics.js";
5
+ /**
6
+ * Handles acquiring a stateful lock on a resource with Deadlock Resolution.
7
+ */
8
+ export async function handleAcquireLock(projectRoot, args) {
9
+ const { resource, agent, ttl = 300 } = args; // Default TTL 5 minutes to prevent deadlocks
10
+ const frameworkDir = resolveFrameworkDir(projectRoot);
11
+ const lockDir = path.join(projectRoot, frameworkDir, "locks");
12
+ const lockPath = path.join(lockDir, `${resource}.lock`);
13
+ try {
14
+ if (!fs.existsSync(lockDir))
15
+ fs.mkdirSync(lockDir, { recursive: true });
16
+ // Check for stale lock first (DEADLOCK RESOLUTION)
17
+ if (fs.existsSync(lockPath)) {
18
+ const stat = fs.statSync(lockPath);
19
+ const now = new Date().getTime();
20
+ const age = (now - stat.mtimeMs) / 1000;
21
+ if (age < ttl) {
22
+ return {
23
+ isError: true,
24
+ content: [{ type: "text", text: `[LOCKED] Resource '${resource}' is currently locked by another agent. Try again later.` }]
25
+ };
26
+ }
27
+ // Lock expired: Force Eviction
28
+ const oldLockData = JSON.parse(fs.readFileSync(lockPath, "utf8"));
29
+ Metrics.logError(projectRoot, "@mcp", "lock_eviction", `Forcefully evicted stale lock on '${resource}' held by ${oldLockData.agent} for ${Math.round(age)}s.`);
30
+ const tempLockPath = `${lockPath}.${Math.random().toString(36).substring(2)}.old`;
31
+ try {
32
+ fs.renameSync(lockPath, tempLockPath);
33
+ fs.unlinkSync(tempLockPath);
34
+ }
35
+ catch {
36
+ // Ignore if already evicted by race condition
37
+ }
38
+ }
39
+ // Use 'wx' flag for atomic file creation
40
+ const lockData = JSON.stringify({ agent, timestamp: new Date().toISOString() });
41
+ fs.writeFileSync(lockPath, lockData, { flag: "wx" });
42
+ return {
43
+ content: [{ type: "text", text: `[OK] Lock acquired for resource '${resource}' by ${agent}.` }]
44
+ };
45
+ }
46
+ catch (e) {
47
+ const error = e;
48
+ if (error.code === "EEXIST") {
49
+ return {
50
+ isError: true,
51
+ content: [{ type: "text", text: `[LOCKED] Resource '${resource}' was just acquired by another agent.` }]
52
+ };
53
+ }
54
+ return {
55
+ isError: true,
56
+ content: [{ type: "text", text: `Failed to acquire lock: ${String(e)}` }]
57
+ };
58
+ }
59
+ }
60
+ /**
61
+ * Handles releasing a lock.
62
+ */
63
+ export async function handleReleaseLock(projectRoot, args) {
64
+ const { resource, agent } = args;
65
+ const frameworkDir = resolveFrameworkDir(projectRoot);
66
+ const lockPath = path.join(projectRoot, frameworkDir, "locks", `${resource}.lock`);
67
+ try {
68
+ if (!fs.existsSync(lockPath)) {
69
+ return { content: [{ type: "text", text: `[INFO] No lock found for resource '${resource}'.` }] };
70
+ }
71
+ const lockData = JSON.parse(fs.readFileSync(lockPath, "utf8"));
72
+ if (lockData.agent !== agent) {
73
+ return {
74
+ isError: true,
75
+ content: [{ type: "text", text: `[ERROR] Denied: You do not own the lock for '${resource}'. Owned by ${lockData.agent}.` }]
76
+ };
77
+ }
78
+ fs.unlinkSync(lockPath);
79
+ return { content: [{ type: "text", text: `[OK] Lock released for resource '${resource}' by ${agent}.` }] };
80
+ }
81
+ catch (e) {
82
+ return { isError: true, content: [{ type: "text", text: `Failed to release lock: ${String(e)}` }] };
83
+ }
84
+ }
@@ -0,0 +1,35 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { resolveFrameworkDir } from "../../utils/security.js";
4
+ /**
5
+ * Handles agent registration with the Control Plane.
6
+ * This can be used to validate permissions and active status.
7
+ */
8
+ export async function handleRegisterAgent(projectRoot, args) {
9
+ const { agent, role, capability = 5, specialties } = args;
10
+ const frameworkDir = resolveFrameworkDir(projectRoot);
11
+ const registryDir = path.join(projectRoot, frameworkDir, "registry");
12
+ const agentFile = path.join(registryDir, `${agent.replace("@", "")}_active.json`);
13
+ try {
14
+ if (!fs.existsSync(registryDir))
15
+ fs.mkdirSync(registryDir, { recursive: true });
16
+ const agentData = {
17
+ agent,
18
+ role,
19
+ capability,
20
+ specialties,
21
+ last_seen: new Date().toISOString(),
22
+ status: "ACTIVE"
23
+ };
24
+ fs.writeFileSync(agentFile, JSON.stringify(agentData, null, 2));
25
+ return {
26
+ content: [{ type: "text", text: `[ATABEY] Agent ${agent} (${role}) registered successfully in the Atabey Control Plane.` }]
27
+ };
28
+ }
29
+ catch (e) {
30
+ return {
31
+ isError: true,
32
+ content: [{ type: "text", text: `Failed to register agent: ${String(e)}` }]
33
+ };
34
+ }
35
+ }
@@ -0,0 +1,197 @@
1
+ import { zodToMcpSchema } from "../utils/zod-to-mcp.js";
2
+ import * as schemas from "./schemas.js";
3
+ /**
4
+ * ─── SUPREME TOOL REGISTRY ─────────────────────────────────────────
5
+ * Every tool is dynamically generated from its Zod schema.
6
+ * ZERO manual JSON schema maintenance permitted.
7
+ */
8
+ export const TOOLS = [
9
+ // File System
10
+ {
11
+ name: "read_file",
12
+ description: "Read the content of a file within the project. Supports optional line range reading to prevent stream overload.",
13
+ inputSchema: zodToMcpSchema(schemas.ReadFileSchema),
14
+ },
15
+ {
16
+ name: "view_file",
17
+ description: "Alias for read_file. Reads the content of a file within the project.",
18
+ inputSchema: zodToMcpSchema(schemas.ReadFileSchema),
19
+ },
20
+ {
21
+ name: "write_file",
22
+ description: "Write content to a file. Creates directories if missing.",
23
+ inputSchema: zodToMcpSchema(schemas.WriteFileSchema),
24
+ },
25
+ {
26
+ name: "replace_text",
27
+ description: "Surgically replace a string in a file with another string.",
28
+ inputSchema: zodToMcpSchema(schemas.ReplaceTextSchema),
29
+ },
30
+ {
31
+ name: "batch_surgical_edit",
32
+ description: "Perform multiple surgical text replacements across multiple files in a single batch request.",
33
+ inputSchema: zodToMcpSchema(schemas.BatchSurgicalEditSchema),
34
+ },
35
+ {
36
+ name: "patch_file",
37
+ description: "Safely update a file by replacing a specific line range with new content.",
38
+ inputSchema: zodToMcpSchema(schemas.PatchFileSchema),
39
+ },
40
+ // Search & Exploration
41
+ {
42
+ name: "list_dir",
43
+ description: "List the contents of a directory. Essential for codebase exploration.",
44
+ inputSchema: zodToMcpSchema(schemas.ListDirSchema),
45
+ },
46
+ {
47
+ name: "grep_search",
48
+ description: "Perform a recursive regex search across the codebase.",
49
+ inputSchema: zodToMcpSchema(schemas.GrepSearchSchema),
50
+ },
51
+ {
52
+ name: "get_project_map",
53
+ description: "Generate a tree-view map of the project structure.",
54
+ inputSchema: zodToMcpSchema(schemas.GetProjectMapSchema),
55
+ },
56
+ {
57
+ name: "get_project_gaps",
58
+ description: "Scans the codebase for TODOs, FIXMEs, and empty function bodies.",
59
+ inputSchema: zodToMcpSchema(schemas.GetProjectGapsSchema),
60
+ },
61
+ // Framework & System
62
+ {
63
+ name: "run_shell_command",
64
+ description: "Execute a shell command. Restricted for security.",
65
+ inputSchema: zodToMcpSchema(schemas.RunShellCommandSchema),
66
+ },
67
+ {
68
+ name: "run_tests",
69
+ description: "Execute project test suites and capture pass/fail reports.",
70
+ inputSchema: zodToMcpSchema(schemas.RunTestsSchema),
71
+ },
72
+ {
73
+ name: "get_system_health",
74
+ description: "Retrieve real-time system metrics (CPU, RAM).",
75
+ inputSchema: zodToMcpSchema(schemas.GetSystemHealthSchema),
76
+ },
77
+ {
78
+ name: "check_active_ports",
79
+ description: "Identify which network ports are currently active.",
80
+ inputSchema: zodToMcpSchema(schemas.CheckPortsSchema),
81
+ },
82
+ {
83
+ name: "get_framework_status",
84
+ description: "Get the current project phase, active traces, and agent states.",
85
+ inputSchema: zodToMcpSchema(schemas.GetFrameworkStatusSchema),
86
+ },
87
+ {
88
+ name: "read_project_memory",
89
+ description: "Read the full project central memory (PROJECT_MEMORY.md).",
90
+ inputSchema: zodToMcpSchema(schemas.ReadProjectMemorySchema),
91
+ },
92
+ {
93
+ name: "get_memory_insights",
94
+ description: "Retrieve a summarized version of the project memory.",
95
+ inputSchema: zodToMcpSchema(schemas.GetMemoryInsightsSchema),
96
+ },
97
+ {
98
+ name: "update_project_memory",
99
+ description: "Update a specific section in PROJECT_MEMORY.md.",
100
+ inputSchema: zodToMcpSchema(schemas.UpdateProjectMemorySchema),
101
+ },
102
+ // Memory (Core Memory)
103
+ {
104
+ name: "store_knowledge",
105
+ description: "Store a new piece of project knowledge, decision, or code snippet into the vector-based core memory.",
106
+ inputSchema: zodToMcpSchema(schemas.StoreKnowledgeSchema),
107
+ },
108
+ {
109
+ name: "search_knowledge",
110
+ description: "Search the vector-based core memory for relevant project knowledge, past decisions, or rules.",
111
+ inputSchema: zodToMcpSchema(schemas.SearchKnowledgeSchema),
112
+ },
113
+ {
114
+ name: "delete_knowledge",
115
+ description: "Delete an obsolete or incorrect knowledge entry from the Core Memory.",
116
+ inputSchema: zodToMcpSchema(schemas.DeleteKnowledgeSchema),
117
+ },
118
+ {
119
+ name: "orchestrate_loop",
120
+ description: "Process pending Hermes messages and trigger transitions.",
121
+ inputSchema: zodToMcpSchema(schemas.OrchestrateLoopSchema),
122
+ },
123
+ {
124
+ name: "submit_plan",
125
+ description: "Submit a structured DAG plan of tasks for the project.",
126
+ inputSchema: zodToMcpSchema(schemas.SubmitPlanSchema),
127
+ },
128
+ {
129
+ name: "update_contract_hash",
130
+ description: "Re-generate and synchronize the backend contract SHA-256 hash.",
131
+ inputSchema: zodToMcpSchema(schemas.UpdateContractHashSchema),
132
+ },
133
+ {
134
+ name: "audit_dependencies",
135
+ description: "Audits package.json for unused or redundant packages.",
136
+ inputSchema: zodToMcpSchema(schemas.AuditDependenciesSchema),
137
+ },
138
+ {
139
+ name: "check_lint",
140
+ description: "Run the project's linter (e.g., ESLint).",
141
+ inputSchema: zodToMcpSchema(schemas.CheckLintSchema),
142
+ },
143
+ // Control Plane
144
+ {
145
+ name: "acquire_lock",
146
+ description: "Acquire a stateful lock on a shared resource.",
147
+ inputSchema: zodToMcpSchema(schemas.AcquireLockSchema),
148
+ },
149
+ {
150
+ name: "release_lock",
151
+ description: "Release a previously acquired lock.",
152
+ inputSchema: zodToMcpSchema(schemas.ReleaseLockSchema),
153
+ },
154
+ {
155
+ name: "register_agent",
156
+ description: "Register an agent instance with the Control Plane.",
157
+ inputSchema: zodToMcpSchema(schemas.RegisterAgentSchema),
158
+ },
159
+ // Messaging (Hermes)
160
+ {
161
+ name: "send_agent_message",
162
+ description: "Send a Hermes protocol message to another agent.",
163
+ inputSchema: zodToMcpSchema(schemas.SendAgentMessageSchema),
164
+ },
165
+ {
166
+ name: "log_agent_action",
167
+ description: "Log an agent action to the framework logs.",
168
+ inputSchema: zodToMcpSchema(schemas.LogAgentActionSchema),
169
+ },
170
+ {
171
+ name: "ask_human",
172
+ description: "Pause execution and ask the human developer a clarifying question via the terminal.",
173
+ inputSchema: zodToMcpSchema(schemas.AskHumanSchema),
174
+ },
175
+ // ─── Code Quality ─────────────────────────────────────────────
176
+ {
177
+ name: "analyze_code_quality",
178
+ description: "Analyze code quality in a given path. Checks TypeScript types, lint rules, and code complexity.",
179
+ inputSchema: zodToMcpSchema(schemas.AnalyzeCodeQualitySchema),
180
+ },
181
+ {
182
+ name: "check_architecture_compliance",
183
+ description: "Check architecture compliance in a given path. Verifies layer boundaries (Controller→Service→Repository), import direction rules, and strict mode.",
184
+ inputSchema: zodToMcpSchema(schemas.CheckArchitectureComplianceSchema),
185
+ },
186
+ // ─── LLM Gateway ─────────────────────────────────────────
187
+ {
188
+ name: "llm_gateway_query",
189
+ description: "Send a chat completion request through the ATABEY LLM Gateway. The gateway automatically load-balances across providers (OpenAI, Anthropic, Google, Grok, Ollama) using configurable strategies (failover, round-robin, cost-optimized). Allows any MCP-connected AI to route LLM requests through the gateway.",
190
+ inputSchema: zodToMcpSchema(schemas.LLMGatewayQuerySchema),
191
+ },
192
+ {
193
+ name: "llm_gateway_status",
194
+ description: "Get the current status of the LLM Gateway including provider health, load balancing strategy, usage statistics, and budget information.",
195
+ inputSchema: zodToMcpSchema(schemas.LLMGatewayStatusSchema),
196
+ },
197
+ ];
@@ -0,0 +1,64 @@
1
+ import fs from "fs";
2
+ import { verifyCorporateCompliance, verifyRiskAndAwaitApproval } from "../../utils/compliance.js";
3
+ import { writeTextFile } from "../../utils/fs.js";
4
+ import { Metrics } from "../../utils/metrics.js";
5
+ import { verifyWritePermission } from "../../utils/permissions.js";
6
+ import { safePath } from "../../utils/security.js";
7
+ /**
8
+ * Performs multiple surgical text replacements across multiple files in a single batch.
9
+ */
10
+ export async function handleBatchSurgicalEdit(projectRoot, args) {
11
+ const edits = args.edits;
12
+ if (!Array.isArray(edits) || edits.length === 0) {
13
+ const err = "No edits provided in the batch request.";
14
+ Metrics.logError(projectRoot, "@mcp", "batch_surgical_edit", err);
15
+ throw new Error(err);
16
+ }
17
+ const results = [];
18
+ let totalTokens = 0;
19
+ for (const edit of edits) {
20
+ const filePath = safePath(projectRoot, edit.path);
21
+ // ENFORCE PERMISSION MATRIX
22
+ verifyWritePermission(projectRoot, edit.path);
23
+ if (!fs.existsSync(filePath)) {
24
+ const err = `File not found: ${edit.path}`;
25
+ Metrics.logError(projectRoot, "@mcp", `batch_surgical_edit:${edit.path}`, err);
26
+ throw new Error(err);
27
+ }
28
+ const content = fs.readFileSync(filePath, "utf8");
29
+ const { oldText, newText, allowMultiple = false } = edit;
30
+ if (!content.includes(oldText)) {
31
+ const err = `Text not found in file ${edit.path}`;
32
+ Metrics.logError(projectRoot, "@mcp", `batch_surgical_edit:${edit.path}`, err);
33
+ throw new Error(err);
34
+ }
35
+ // Surgical precision guard
36
+ if (!allowMultiple) {
37
+ const firstIndex = content.indexOf(oldText);
38
+ const lastIndex = content.lastIndexOf(oldText);
39
+ if (firstIndex !== lastIndex) {
40
+ const err = `Ambiguous replacement in ${edit.path}`;
41
+ Metrics.logError(projectRoot, "@mcp", `batch_surgical_edit:${edit.path}`, err);
42
+ throw new Error(err);
43
+ }
44
+ }
45
+ const newContent = allowMultiple
46
+ ? content.replace(new RegExp(oldText.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), newText)
47
+ : content.replace(oldText, newText);
48
+ // ENFORCE CORPORATE COMPLIANCE
49
+ verifyCorporateCompliance(newContent, edit.path);
50
+ // ENFORCE RISK & HUMAN APPROVAL GATEWAY
51
+ await verifyRiskAndAwaitApproval(projectRoot, newContent, edit.path);
52
+ writeTextFile(filePath, newContent);
53
+ const tokens = Metrics.estimateTokens(newText);
54
+ totalTokens += tokens;
55
+ results.push(`[OK] Edited ${edit.path}`);
56
+ }
57
+ Metrics.logUsage(projectRoot, "@mcp", `batch_surgical_edit: ${edits.length} files`, totalTokens);
58
+ return {
59
+ content: [{
60
+ type: "text",
61
+ text: `Successfully performed ${edits.length} edits:\n${results.join("\n")}`
62
+ }]
63
+ };
64
+ }