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,30 @@
1
+ import { exec } from "child_process";
2
+ import { Metrics } from "../../utils/metrics.js";
3
+ import { getBackendLanguage, getDefaultLintCommand } from "../../utils/cli.js";
4
+ const TIMEOUT = 60000; // 60 seconds
5
+ /**
6
+ * Handles running the project's linter.
7
+ */
8
+ export function handleCheckLint(projectRoot, _args) {
9
+ const language = getBackendLanguage(projectRoot);
10
+ const lintCommand = getDefaultLintCommand(language);
11
+ return new Promise((resolve) => {
12
+ exec(lintCommand, { cwd: projectRoot, timeout: TIMEOUT }, (error, stdout, stderr) => {
13
+ const output = stdout + stderr;
14
+ const tokens = Metrics.estimateTokens(output);
15
+ if (error) {
16
+ const err = `Linting failed for ${language} with command: ${lintCommand}. ${error.message}`;
17
+ Metrics.logError(projectRoot, "@mcp", "check_lint", err);
18
+ resolve({
19
+ isError: true,
20
+ content: [{ type: "text", text: `[ERROR] Lint Errors Found (${language}):\n\n${output}` }]
21
+ });
22
+ return;
23
+ }
24
+ Metrics.logUsage(projectRoot, "@mcp", "check_lint", tokens);
25
+ resolve({
26
+ content: [{ type: "text", text: `[OK] Lint check passed successfully for ${language}:\n\n${output}` }]
27
+ });
28
+ });
29
+ });
30
+ }
@@ -0,0 +1,182 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * ─── ATABEY VALIDATED TYPES ────────────────────────────────────────
4
+ * Zod schemas with regex + min-length validation for runtime safety.
5
+ * NOTE: Brand types (intersection types) are defined in src/shared/types.ts.
6
+ * These schemas provide runtime validation only; type branding is not
7
+ * possible at runtime via Zod's .brand() — it's a no-op.
8
+ */
9
+ export const AgentIDSchema = z.string()
10
+ .regex(/^@[a-zA-Z0-9_-]+$/, "AgentID must start with '@' followed by alphanumeric characters/underscores.")
11
+ .min(2);
12
+ export const TraceIDSchema = z.string()
13
+ .min(1, "TraceID cannot be empty");
14
+ export const TaskIDSchema = z.string()
15
+ .regex(/^TASK-[0-9]+$/, "TaskID must follow the format 'TASK-001'.")
16
+ .min(1);
17
+ export const PhaseIDSchema = z.enum(["PHASE_0", "PHASE_1", "PHASE_2", "PHASE_3", "PHASE_4"]);
18
+ /**
19
+ * ─── TOOL CONTRACTS ────────────────────────────────────────────────
20
+ * Every tool must have a strict schema defining its boundary.
21
+ * No unknown properties are allowed (.strict()).
22
+ */
23
+ // ─── File System
24
+ export const ReadFileSchema = z.object({
25
+ path: z.string().min(1, "Path is required"),
26
+ startLine: z.number().int().positive().optional(),
27
+ endLine: z.number().int().positive().optional(),
28
+ }).strict();
29
+ export const WriteFileSchema = z.object({
30
+ path: z.string().min(1, "Path is required"),
31
+ content: z.string(),
32
+ }).strict();
33
+ export const ReplaceTextSchema = z.object({
34
+ path: z.string().min(1, "Path is required"),
35
+ oldText: z.string().min(1, "oldText is required"),
36
+ newText: z.string(),
37
+ allowMultiple: z.boolean().default(false),
38
+ }).strict();
39
+ // ─── Search & Exploration
40
+ export const ListDirSchema = z.object({
41
+ path: z.string().default("."),
42
+ }).strict();
43
+ export const GrepSearchSchema = z.object({
44
+ pattern: z.string().min(1, "Pattern is required"),
45
+ includePattern: z.string().optional(),
46
+ excludePattern: z.string().optional(),
47
+ }).strict();
48
+ export const GetProjectMapSchema = z.object({
49
+ maxDepth: z.number().int().positive().default(3),
50
+ includeFiles: z.boolean().default(true),
51
+ }).strict();
52
+ export const GetProjectGapsSchema = z.object({
53
+ path: z.string().default("src"),
54
+ }).strict();
55
+ // ─── Batch & Patch
56
+ export const BatchSurgicalEditSchema = z.object({
57
+ edits: z.array(z.object({
58
+ path: z.string().min(1),
59
+ oldText: z.string().min(1),
60
+ newText: z.string(),
61
+ allowMultiple: z.boolean().default(false),
62
+ })),
63
+ }).strict();
64
+ export const PatchFileSchema = z.object({
65
+ path: z.string().min(1),
66
+ startLine: z.number().int().positive(),
67
+ endLine: z.number().int().positive(),
68
+ newContent: z.string(),
69
+ }).strict();
70
+ // ─── Framework & System
71
+ export const RunShellCommandSchema = z.object({
72
+ command: z.string().min(1),
73
+ }).strict();
74
+ export const RunTestsSchema = z.object({
75
+ command: z.string().optional(),
76
+ }).strict();
77
+ export const GetSystemHealthSchema = z.object({}).strict();
78
+ export const CheckPortsSchema = z.object({
79
+ filter: z.string().optional(),
80
+ }).strict();
81
+ export const GetFrameworkStatusSchema = z.object({}).strict();
82
+ export const ReadProjectMemorySchema = z.object({}).strict();
83
+ export const GetMemoryInsightsSchema = z.object({}).strict();
84
+ export const UpdateProjectMemorySchema = z.object({
85
+ section: z.string().min(1),
86
+ content: z.string().min(1),
87
+ }).strict();
88
+ export const OrchestrateLoopSchema = z.object({}).strict();
89
+ export const SubmitPlanSchema = z.object({
90
+ tasks: z.array(z.object({
91
+ id: TaskIDSchema,
92
+ agent: AgentIDSchema,
93
+ task: z.string().min(1),
94
+ dependencies: z.array(TaskIDSchema).optional(),
95
+ })),
96
+ }).strict();
97
+ export const AcquireLockSchema = z.object({
98
+ resource: z.string().min(1),
99
+ agent: AgentIDSchema,
100
+ ttl: z.number().int().positive().default(60),
101
+ }).strict();
102
+ export const ReleaseLockSchema = z.object({
103
+ resource: z.string().min(1),
104
+ agent: AgentIDSchema,
105
+ }).strict();
106
+ export const RegisterAgentSchema = z.object({
107
+ agent: AgentIDSchema,
108
+ role: z.string().min(1),
109
+ capability: z.number().int().min(1).max(10).default(5),
110
+ specialties: z.record(z.number()).optional(),
111
+ }).strict();
112
+ export const UpdateContractHashSchema = z.object({}).strict();
113
+ export const AuditDependenciesSchema = z.object({}).strict();
114
+ export const CheckLintSchema = z.object({}).strict();
115
+ // ─── Memory (Core Memory)
116
+ export const StoreKnowledgeSchema = z.object({
117
+ content: z.string().min(1, "Content is required"),
118
+ category: z.enum(["ARCHITECTURE", "DECISION", "CODE_SNIPPET", "RULE", "TASK_HISTORY"]),
119
+ tags: z.array(z.string()).optional(),
120
+ filePath: z.string().optional(),
121
+ traceId: z.string().optional(),
122
+ }).strict();
123
+ export const SearchKnowledgeSchema = z.object({
124
+ query: z.string().min(1, "Query is required"),
125
+ category: z.enum(["ARCHITECTURE", "DECISION", "CODE_SNIPPET", "RULE", "TASK_HISTORY"]).optional(),
126
+ limit: z.number().int().positive().default(5),
127
+ }).strict();
128
+ export const DeleteKnowledgeSchema = z.object({
129
+ id: z.string().optional(),
130
+ category: z.enum(["ARCHITECTURE", "DECISION", "CODE_SNIPPET", "RULE", "TASK_HISTORY"]).optional(),
131
+ }).strict();
132
+ // ─── Messaging (Hermes)
133
+ export const SendAgentMessageSchema = z.object({
134
+ from: AgentIDSchema,
135
+ to: AgentIDSchema,
136
+ category: z.enum(["ACTION", "DELEGATION", "SUBTASK", "REPLY", "ALERT"]),
137
+ content: z.string().min(1, "Content cannot be empty"),
138
+ traceId: TraceIDSchema,
139
+ parentId: TaskIDSchema.optional(),
140
+ priority: z.enum(["HIGH", "NORMAL", "LOW"]).default("NORMAL"),
141
+ requiresApproval: z.boolean().default(false),
142
+ }).strict();
143
+ export const LogAgentActionSchema = z.object({
144
+ agent: AgentIDSchema,
145
+ action: z.string().min(1),
146
+ traceId: TraceIDSchema,
147
+ status: z.enum(["SUCCESS", "FAILURE"]),
148
+ summary: z.string().min(1),
149
+ findings: z.string().optional(),
150
+ }).strict();
151
+ export const AskHumanSchema = z.object({
152
+ question: z.string().min(10, "Question must be clear and detailed."),
153
+ }).strict();
154
+ // ─── LLM Gateway ────────────────────────────────────────────────────
155
+ export const LLMGatewayQuerySchema = z.object({
156
+ messages: z.array(z.object({
157
+ role: z.enum(["system", "user", "assistant", "tool"]),
158
+ content: z.string().min(1),
159
+ })).min(1, "At least one message is required"),
160
+ system: z.string().optional(),
161
+ model: z.string().optional(),
162
+ provider: z.enum(["openai", "anthropic", "google", "grok", "ollama"]).optional(),
163
+ strategy: z.enum(["round-robin", "least-latency", "cost-optimized", "failover", "priority-based", "model-based"]).optional(),
164
+ temperature: z.number().min(0).max(2).optional(),
165
+ maxTokens: z.number().int().positive().optional(),
166
+ traceId: z.string().optional(),
167
+ }).strict();
168
+ export const LLMGatewayStatusSchema = z.object({
169
+ detail: z.enum(["overview", "providers", "stats"]).optional().default("overview"),
170
+ }).strict();
171
+ // ─── Code Quality Analysis ──────────────────────────────────────────
172
+ export const AnalyzeCodeQualitySchema = z.object({
173
+ path: z.string().min(1, "Path to analyze is required"),
174
+ checkTypes: z.boolean().optional().default(true),
175
+ checkLint: z.boolean().optional().default(true),
176
+ checkComplexity: z.boolean().optional().default(true),
177
+ }).strict();
178
+ // ─── Architecture Compliance ────────────────────────────────────────
179
+ export const CheckArchitectureComplianceSchema = z.object({
180
+ path: z.string().min(1, "Path to check is required"),
181
+ rules: z.array(z.string()).optional(),
182
+ }).strict();
@@ -0,0 +1,48 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { safePath } from "../../utils/security.js";
4
+ /**
5
+ * Scans the codebase for TODOs, FIXMEs, and empty function bodies.
6
+ * Helps identify what's left and where the agent might have skipped logic.
7
+ */
8
+ export function handleGetProjectGaps(projectRoot, args) {
9
+ const srcDir = safePath(projectRoot, args.path || "src");
10
+ const results = [];
11
+ const walk = (dir) => {
12
+ if (!fs.existsSync(dir))
13
+ return;
14
+ const files = fs.readdirSync(dir);
15
+ for (const file of files) {
16
+ const fullPath = path.join(dir, file);
17
+ const relativePath = path.relative(projectRoot, fullPath);
18
+ if (fs.statSync(fullPath).isDirectory()) {
19
+ if (file !== "node_modules" && file !== "dist" && !file.startsWith(".")) {
20
+ walk(fullPath);
21
+ }
22
+ }
23
+ else if (file.endsWith(".ts") || file.endsWith(".tsx")) {
24
+ const content = fs.readFileSync(fullPath, "utf8");
25
+ const lines = content.split("\n");
26
+ lines.forEach((line, index) => {
27
+ // 1. Scan for markers
28
+ if (line.includes("TODO") || line.includes("FIXME") || line.includes("!!!")) {
29
+ results.push(`[${relativePath}:${index + 1}] Marker found: ${line.trim()}`);
30
+ }
31
+ // 2. Scan for empty function placeholders (heuristic)
32
+ if (line.includes("throw new Error(\"Not implemented") || line.includes("// ... rest of code")) {
33
+ results.push(`[${relativePath}:${index + 1}] Gap found: ${line.trim()}`);
34
+ }
35
+ });
36
+ }
37
+ }
38
+ };
39
+ walk(srcDir);
40
+ return {
41
+ content: [{
42
+ type: "text",
43
+ text: results.length > 0
44
+ ? `Found ${results.length} gaps/todos:\n\n${results.join("\n")}`
45
+ : "[OK] No major gaps or TODOs found in the scanned directory."
46
+ }]
47
+ };
48
+ }
@@ -0,0 +1,43 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ /**
4
+ * Generates a tree-view map of the project structure.
5
+ * Helps agents visualize the entire project layout quickly.
6
+ */
7
+ export function handleGetProjectMap(projectRoot, args) {
8
+ const maxDepth = args.maxDepth || 3;
9
+ const includeFiles = args.includeFiles !== false;
10
+ const buildTree = (dir, depth) => {
11
+ if (depth > maxDepth)
12
+ return [];
13
+ const results = [];
14
+ const files = fs.readdirSync(dir);
15
+ files.forEach(file => {
16
+ if (file === "node_modules" || file === ".git" || file === "dist" || file.startsWith("."))
17
+ return;
18
+ const fullPath = path.join(dir, file);
19
+ const stat = fs.statSync(fullPath);
20
+ const indent = " ".repeat(depth);
21
+ if (stat.isDirectory()) {
22
+ results.push(`${indent}📁 ${file}/`);
23
+ results.push(...buildTree(fullPath, depth + 1));
24
+ }
25
+ else if (includeFiles) {
26
+ results.push(`${indent}[FILE] ${file}`);
27
+ }
28
+ });
29
+ return results;
30
+ };
31
+ try {
32
+ const tree = buildTree(projectRoot, 0);
33
+ return {
34
+ content: [{
35
+ type: "text",
36
+ text: `[MAP] **Project Map (Depth: ${maxDepth})**\n\n${tree.join("\n")}`
37
+ }]
38
+ };
39
+ }
40
+ catch (e) {
41
+ return { isError: true, content: [{ type: "text", text: `Failed to map project: ${String(e)}` }] };
42
+ }
43
+ }
@@ -0,0 +1,78 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { Metrics } from "../../utils/metrics.js";
4
+ /**
5
+ * Searches for a regex pattern within files in the project.
6
+ */
7
+ export function handleGrepSearch(projectRoot, args) {
8
+ const pattern = args.pattern;
9
+ const includePattern = args.includePattern || ""; // e.g., ".ts"
10
+ const excludePattern = args.excludePattern || "node_modules";
11
+ if (!pattern) {
12
+ const err = "Search pattern is required.";
13
+ Metrics.logError(projectRoot, "@mcp", "grep_search", err);
14
+ return { isError: true, content: [{ type: "text", text: `[ERROR] ${err}` }] };
15
+ }
16
+ const results = [];
17
+ try {
18
+ new RegExp(pattern);
19
+ }
20
+ catch (e) {
21
+ const err = `Invalid regex pattern: ${String(e)}`;
22
+ Metrics.logError(projectRoot, "@mcp", "grep_search", err);
23
+ return { isError: true, content: [{ type: "text", text: `[ERROR] ${err}` }] };
24
+ }
25
+ const walk = (dir) => {
26
+ if (results.length >= 30)
27
+ return;
28
+ try {
29
+ const files = fs.readdirSync(dir);
30
+ for (const file of files) {
31
+ if (results.length >= 30)
32
+ return;
33
+ const filePath = path.join(dir, file);
34
+ if (excludePattern && filePath.includes(excludePattern)) {
35
+ continue;
36
+ }
37
+ const stat = fs.statSync(filePath);
38
+ if (stat.isDirectory()) {
39
+ walk(filePath);
40
+ }
41
+ else if (stat.isFile()) {
42
+ if (includePattern && !filePath.endsWith(includePattern)) {
43
+ continue;
44
+ }
45
+ const content = fs.readFileSync(filePath, "utf8");
46
+ if (new RegExp(pattern).test(content)) {
47
+ if (results.length < 30) {
48
+ results.push(filePath);
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }
54
+ catch {
55
+ // Ignore directories that cannot be read
56
+ }
57
+ };
58
+ try {
59
+ walk(projectRoot);
60
+ }
61
+ catch (e) {
62
+ const err = `Search failed: ${String(e)}`;
63
+ Metrics.logError(projectRoot, "@mcp", "grep_search", err);
64
+ return { isError: true, content: [{ type: "text", text: `[ERROR] ${err}` }] };
65
+ }
66
+ let responseText = results.length > 0
67
+ ? `Found ${results.length} matches:\n\n${results.join("\n")}`
68
+ : "No matches found.";
69
+ if (results.length >= 30) {
70
+ responseText += "\n\n[TOKEN ECONOMY GUARD] Search truncated at 30 matches to save tokens. Please use a more specific 'pattern' or 'includePattern'.";
71
+ }
72
+ return {
73
+ content: [{
74
+ type: "text",
75
+ text: responseText
76
+ }]
77
+ };
78
+ }
@@ -0,0 +1,28 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { safePath } from "../../utils/security.js";
4
+ /**
5
+ * Lists the contents of a directory.
6
+ */
7
+ export function handleListDir(projectRoot, args) {
8
+ const dirPath = safePath(projectRoot, args.path || ".");
9
+ if (!fs.existsSync(dirPath)) {
10
+ throw new Error(`Directory not found: ${args.path}`);
11
+ }
12
+ const stats = fs.statSync(dirPath);
13
+ if (!stats.isDirectory()) {
14
+ throw new Error(`Path is not a directory: ${args.path}`);
15
+ }
16
+ const files = fs.readdirSync(dirPath);
17
+ const results = files.map(file => {
18
+ const fullPath = path.join(dirPath, file);
19
+ const isDir = fs.statSync(fullPath).isDirectory();
20
+ return `${isDir ? "[DIR] " : " "}${file}`;
21
+ });
22
+ return {
23
+ content: [{
24
+ type: "text",
25
+ text: `Directory listing for ${args.path || "."}:\n\n${results.join("\n")}`
26
+ }]
27
+ };
28
+ }
@@ -0,0 +1,121 @@
1
+ import { exec } from "child_process";
2
+ import { Metrics } from "../../utils/metrics.js";
3
+ const COMMAND_ALLOW_LIST = [
4
+ // Package managers
5
+ "npm test",
6
+ "npm run",
7
+ "npm install",
8
+ "npm ci",
9
+ "npm audit",
10
+ "npx vitest",
11
+ "npx tsc",
12
+ "npx eslint",
13
+ "yarn test",
14
+ "yarn run",
15
+ "yarn install",
16
+ "pnpm test",
17
+ "pnpm run",
18
+ "pnpm install",
19
+ // Git
20
+ "git status",
21
+ "git diff",
22
+ "git log",
23
+ "git branch",
24
+ "git stash",
25
+ "git add",
26
+ "git commit",
27
+ "git push",
28
+ "git pull",
29
+ "git fetch",
30
+ "git merge",
31
+ "git rebase",
32
+ "git checkout",
33
+ "git reset",
34
+ // Build tools
35
+ "npm run build",
36
+ "npx tsc",
37
+ "npx vite build",
38
+ "npx webpack",
39
+ "npx rollup",
40
+ "npx esbuild",
41
+ "make",
42
+ "cmake",
43
+ "dotnet test",
44
+ "dotnet format",
45
+ "dotnet build",
46
+ "dotnet run",
47
+ "dotnet restore",
48
+ "go test",
49
+ "go fmt",
50
+ "go build",
51
+ "go run",
52
+ "go vet",
53
+ "go mod",
54
+ "pytest",
55
+ "ruff check",
56
+ "ruff format",
57
+ "mvn",
58
+ "./gradlew",
59
+ "cargo test",
60
+ "cargo build",
61
+ "cargo check",
62
+ "cargo fmt",
63
+ // File operations (safe) — NOTE: "rm -rf" and "rm -r" intentionally excluded.
64
+ // Only "rmdir" is allowed to prevent dangerous commands like "rm -rf /".
65
+ "mkdir",
66
+ "cp",
67
+ "mv",
68
+ "rmdir",
69
+ "cat",
70
+ "ls",
71
+ "touch",
72
+ "head",
73
+ "tail",
74
+ "wc",
75
+ "grep",
76
+ "find",
77
+ "sort",
78
+ "uniq",
79
+ "echo",
80
+ "pwd",
81
+ "which",
82
+ "file",
83
+ "du",
84
+ "df",
85
+ ];
86
+ const TIMEOUT = 30000; // 30 seconds
87
+ export function handleRunCommand(projectRoot, args) {
88
+ const command = args.command;
89
+ const isAllowed = COMMAND_ALLOW_LIST.some(allowedCmd => command.startsWith(allowedCmd));
90
+ if (!isAllowed) {
91
+ const errorMsg = `Command not allowed: "${command}". Only commands starting with the following are allowed: ${COMMAND_ALLOW_LIST.join(", ")}`;
92
+ Metrics.logError(projectRoot, "@mcp", `run_shell_command: ${command} (denied)`, errorMsg);
93
+ return Promise.resolve({
94
+ content: [{ type: "text", text: `ERROR: ${errorMsg}` }],
95
+ isError: true,
96
+ });
97
+ }
98
+ return new Promise((resolve) => {
99
+ exec(command, { cwd: projectRoot, timeout: TIMEOUT }, (error, stdout, stderr) => {
100
+ const output = stdout + stderr;
101
+ const tokens = Metrics.estimateTokens(output);
102
+ Metrics.logUsage(projectRoot, "@mcp", `run_shell_command: ${command}`, tokens);
103
+ if (error) {
104
+ const errorMsg = `Command failed with exit code ${error.code}: ${error.message}.`;
105
+ Metrics.logError(projectRoot, "@mcp", `run_shell_command: ${command}`, errorMsg);
106
+ resolve({
107
+ content: [{ type: "text", text: `ERROR: ${errorMsg}. Output: ${output}` }],
108
+ isError: true,
109
+ });
110
+ return;
111
+ }
112
+ // Truncate long outputs
113
+ const MAX_OUTPUT_LENGTH = 5000;
114
+ let truncatedOutput = output;
115
+ if (output.length > MAX_OUTPUT_LENGTH) {
116
+ truncatedOutput = output.substring(0, MAX_OUTPUT_LENGTH) + "... [TRUNCATED] ..."; // Simplified
117
+ }
118
+ resolve({ content: [{ type: "text", text: truncatedOutput }] });
119
+ });
120
+ });
121
+ }
@@ -0,0 +1,59 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { execFileSync } from "child_process";
4
+ /**
5
+ * Executes a command safely and returns the output.
6
+ */
7
+ export function safeExec(cmd, args, cwd, timeout = 30000) {
8
+ try {
9
+ return execFileSync(cmd, args, { cwd, timeout, encoding: "utf8", stdio: "pipe" });
10
+ }
11
+ catch (err) {
12
+ const error = err;
13
+ return error.stdout?.toString() || error.stderr?.toString() || error.message || String(err);
14
+ }
15
+ }
16
+ /**
17
+ * Detects the backend language from the framework configuration.
18
+ */
19
+ export function getBackendLanguage(projectRoot) {
20
+ try {
21
+ const configPath = path.join(projectRoot, ".atabey", "config.json");
22
+ if (fs.existsSync(configPath)) {
23
+ const config = JSON.parse(fs.readFileSync(configPath, "utf8"));
24
+ return config.backendLanguage || "Node.js (TypeScript)";
25
+ }
26
+ }
27
+ catch {
28
+ // Fallback to default
29
+ }
30
+ return "Node.js (TypeScript)";
31
+ }
32
+ /**
33
+ * Returns the default lint command for the given language.
34
+ */
35
+ export function getDefaultLintCommand(language) {
36
+ if (language.includes("Go"))
37
+ return "go fmt ./...";
38
+ if (language.includes("Java"))
39
+ return "./gradlew check"; // or mvn check
40
+ if (language.includes("Python"))
41
+ return "ruff check .";
42
+ if (language.includes(".NET"))
43
+ return "dotnet format";
44
+ return "npm run lint";
45
+ }
46
+ /**
47
+ * Returns the default test command for the given language.
48
+ */
49
+ export function getDefaultTestCommand(language) {
50
+ if (language.includes("Go"))
51
+ return "go test ./...";
52
+ if (language.includes("Java"))
53
+ return "./gradlew test"; // or mvn test
54
+ if (language.includes("Python"))
55
+ return "pytest";
56
+ if (language.includes(".NET"))
57
+ return "dotnet test";
58
+ return "npm test";
59
+ }