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,100 @@
1
+ import chalk from "chalk";
2
+ import readline from "readline";
3
+ /**
4
+ * Professional UI Utilities for Agent Atabey CLI.
5
+ * Standardizes headers, status boxes, and strategic intent reporting.
6
+ */
7
+ export const UI = {
8
+ /**
9
+ * Renders a strategic intent block similar to Gemini CLI's topic updates.
10
+ */
11
+ intent: (title, intent) => {
12
+ process.stdout.write(`\n${chalk.bold.cyan(title)}:\n`);
13
+ process.stdout.write(`${chalk.italic.gray(` ${intent}`)}\n\n`);
14
+ },
15
+ /**
16
+ * Renders a professional agent execution box.
17
+ */
18
+ agentBox: (agentName, action, details) => {
19
+ const width = process.stdout.columns || 80;
20
+ const line = "─".repeat(Math.max(0, width - 2));
21
+ process.stdout.write(chalk.gray(`╭${line}╮`) + "\n");
22
+ const padding = Math.max(0, width - agentName.length - 27);
23
+ process.stdout.write(`${chalk.gray("│")} ${chalk.bold.yellow("=")} ${chalk.white(`Running Agent: ${chalk.bold.green(agentName)}...`)} ${chalk.gray("(ctrl+o to expand)".padStart(padding))} ${chalk.gray("│")}\n`);
24
+ if (action) {
25
+ const paddingAction = Math.max(0, width - action.length - 6);
26
+ process.stdout.write(`${chalk.gray("│")} ${chalk.blue("!")} ${chalk.cyan(action)} ${" ".repeat(paddingAction)} ${chalk.gray("│")}\n`);
27
+ }
28
+ if (details) {
29
+ const paddingDetails = Math.max(0, width - details.length - 7);
30
+ process.stdout.write(`${chalk.gray("│")} ${chalk.gray(details.slice(0, width - 10))} ${" ".repeat(paddingDetails)} ${chalk.gray("│")}\n`);
31
+ }
32
+ process.stdout.write(chalk.gray(`╰${line}╯`) + "\n");
33
+ },
34
+ /**
35
+ * Renders the live Terminal UI dashboard for Hermes.
36
+ */
37
+ renderDashboard: (state) => {
38
+ // Clear screen and move cursor to top-left
39
+ readline.cursorTo(process.stdout, 0, 0);
40
+ readline.clearScreenDown(process.stdout);
41
+ const width = process.stdout.columns || 80;
42
+ const line = chalk.gray("─".repeat(width));
43
+ // Header
44
+ process.stdout.write(chalk.bgBlue.white.bold(" [ATABEY] Hermes Terminal Dashboard ".padEnd(width)) + "\n");
45
+ process.stdout.write(` ${chalk.cyan("Active Trace:")} ${chalk.bold(state.traceId)} ${chalk.cyan("Phase:")} ${state.phase} ${chalk.cyan("Pending Tasks:")} ${state.pendingCount}\n`);
46
+ process.stdout.write(line + "\n");
47
+ // Agents Table
48
+ process.stdout.write(chalk.bold.yellow(" [AGENT STATUS]\n"));
49
+ process.stdout.write(chalk.gray(String(" Agent").padEnd(15)) + chalk.gray(String("State").padEnd(12)) + chalk.gray("Current Task\n"));
50
+ for (const a of state.agents) {
51
+ const nameColor = a.name === "manager" ? chalk.blueBright : a.name === "quality" ? chalk.magenta : chalk.green;
52
+ const stateColor = a.state === "EXECUTING" ? chalk.bgYellow.black : a.state === "READY" ? chalk.gray : chalk.white;
53
+ const cleanName = `@${a.name}`.padEnd(14);
54
+ const cleanState = `[${a.state}]`.padEnd(11);
55
+ const cleanTask = a.task.length > (width - 28) ? a.task.substring(0, width - 31) + "..." : a.task;
56
+ process.stdout.write(` ${nameColor(cleanName)} ${stateColor(cleanState)} ${chalk.white(cleanTask)}\n`);
57
+ }
58
+ process.stdout.write(line + "\n");
59
+ // Recent Logs
60
+ process.stdout.write(chalk.bold.yellow(" [RECENT ACTIVITY]\n"));
61
+ for (const log of state.logs.slice(0, 8)) {
62
+ const time = new Date(log.timestamp).toLocaleTimeString();
63
+ const logLine = ` [${chalk.gray(time)}] ${chalk.cyan(log.agent)}: ${log.action} - ${log.summary}`;
64
+ const cleanLog = logLine.length > width ? logLine.substring(0, width - 3) + "..." : logLine;
65
+ process.stdout.write(`${cleanLog}\n`);
66
+ }
67
+ process.stdout.write("\n" + chalk.italic.gray(" Press Ctrl+C to exit. Waiting for new messages...") + "\n");
68
+ },
69
+ /**
70
+ * Renders a success status message.
71
+ */
72
+ success: (msg) => {
73
+ process.stdout.write(`${chalk.bold.green("[OK]")} ${msg}\n`);
74
+ },
75
+ /**
76
+ * Renders an error status message.
77
+ */
78
+ error: (msg) => {
79
+ process.stderr.write(`${chalk.bold.red("[ERROR]")} ${chalk.red(msg)}\n`);
80
+ },
81
+ /**
82
+ * Renders a warning status message.
83
+ */
84
+ warning: (msg) => {
85
+ process.stdout.write(`${chalk.bold.yellow("[WARN]")} ${chalk.yellow(msg)}\n`);
86
+ },
87
+ /**
88
+ * Renders an info/log message (non-critical, informational).
89
+ */
90
+ info: (msg) => {
91
+ process.stdout.write(`${chalk.cyan("[INFO]")} ${msg}\n`);
92
+ },
93
+ /**
94
+ * Renders an info/divider line.
95
+ */
96
+ divider: () => {
97
+ const width = process.stdout.columns || 80;
98
+ process.stdout.write(chalk.gray("─".repeat(width)) + "\n");
99
+ }
100
+ };
@@ -0,0 +1,99 @@
1
+ import crypto from "crypto";
2
+ import { generateEmbedding } from "./embedding.js";
3
+ import { VectorStore } from "./vector-store.js";
4
+ /**
5
+ * [MEMORY] Core Memory Service
6
+ * High-level API for managing project knowledge and embeddings.
7
+ * Uses OpenAI Embedding API when available, falls back to TF-IDF.
8
+ */
9
+ export class CoreMemory {
10
+ static VECTOR_DIM = 384;
11
+ static STOP_WORDS = new Set([
12
+ "the", "a", "an", "and", "or", "but", "in", "on", "at", "to", "for",
13
+ "of", "with", "by", "from", "as", "is", "was", "are", "were", "be",
14
+ "been", "being", "have", "has", "had", "do", "does", "did", "will",
15
+ "would", "could", "should", "may", "might", "shall", "can", "need",
16
+ ]);
17
+ static async init() {
18
+ VectorStore.initialize();
19
+ }
20
+ /**
21
+ * Records a new piece of knowledge into the core memory.
22
+ * Uses OpenAI Embedding API when available, falls back to TF-IDF.
23
+ */
24
+ static async remember(params) {
25
+ const id = crypto.createHash("sha256").update(params.content + (params.filePath || "")).digest("hex");
26
+ // Use provided vector or generate via embedding service
27
+ const vector = params.vector || await generateEmbedding(params.content);
28
+ const entry = {
29
+ id,
30
+ content: params.content,
31
+ vector,
32
+ metadata: {
33
+ category: params.category,
34
+ traceId: params.traceId,
35
+ filePath: params.filePath,
36
+ tags: params.tags || [],
37
+ createdAt: new Date().toISOString()
38
+ }
39
+ };
40
+ await VectorStore.addEntry(entry);
41
+ return id;
42
+ }
43
+ /**
44
+ * Searches the memory for relevant knowledge using cosine similarity.
45
+ * Uses OpenAI Embedding API when available for the query vector.
46
+ */
47
+ static async recall(query, options) {
48
+ const vector = options.queryVector || await generateEmbedding(query);
49
+ return VectorStore.search(vector, options.limit || 5, options.category);
50
+ }
51
+ /**
52
+ * Generates a TF-IDF style embedding vector from text.
53
+ * Kept for backward compatibility and as fallback.
54
+ */
55
+ static generateEmbedding(text) {
56
+ const vector = new Array(this.VECTOR_DIM).fill(0);
57
+ // Tokenize and clean
58
+ const tokens = text
59
+ .toLowerCase()
60
+ .replace(/[^a-z0-9çşıöğü_ ]/g, " ")
61
+ .split(/\s+/)
62
+ .filter(t => t.length > 2 && !this.STOP_WORDS.has(t));
63
+ if (tokens.length === 0) {
64
+ return vector;
65
+ }
66
+ // Calculate term frequency
67
+ const tf = new Map();
68
+ for (const token of tokens) {
69
+ tf.set(token, (tf.get(token) || 0) + 1);
70
+ }
71
+ // Map each unique token to vector positions using hash
72
+ for (const [token, freq] of tf) {
73
+ for (let i = 0; i < token.length - 1; i++) {
74
+ const ngram = token.substring(i, i + 2);
75
+ const pos = this.hashToPosition(ngram);
76
+ vector[pos] += freq * (i + 1) / token.length;
77
+ }
78
+ }
79
+ // Normalize to unit vector
80
+ const magnitude = Math.sqrt(vector.reduce((sum, v) => sum + v * v, 0));
81
+ if (magnitude > 0) {
82
+ for (let i = 0; i < this.VECTOR_DIM; i++) {
83
+ vector[i] /= magnitude;
84
+ }
85
+ }
86
+ return vector;
87
+ }
88
+ /**
89
+ * Deterministically maps a string to a position in the vector.
90
+ */
91
+ static hashToPosition(value) {
92
+ let hash = 0;
93
+ for (let i = 0; i < value.length; i++) {
94
+ hash = ((hash << 5) - hash) + value.charCodeAt(i);
95
+ hash |= 0;
96
+ }
97
+ return Math.abs(hash) % this.VECTOR_DIM;
98
+ }
99
+ }
@@ -0,0 +1,130 @@
1
+ /**
2
+ * [MEMORY] Embedding Service
3
+ *
4
+ * Real embedding generation with OpenAI API integration.
5
+ * Falls back to TF-IDF if no API key is available.
6
+ *
7
+ * Supported methods:
8
+ * 1. OpenAI Embedding API (text-embedding-3-small) — 1536 dimensions
9
+ * 2. TF-IDF fallback (local method) — 384 dimensions
10
+ */
11
+ import fs from "fs";
12
+ import path from "path";
13
+ import { logger } from "../../shared/logger.js";
14
+ import { CoreMemory } from "./core.js";
15
+ const EMBEDDING_API = "https://api.openai.com/v1/embeddings";
16
+ const EMBEDDING_MODEL = "text-embedding-3-small";
17
+ const EMBEDDING_DIM = 1536;
18
+ /**
19
+ * Reads the API key from environment variable or .env file.
20
+ */
21
+ function getApiKey() {
22
+ if (process.env.OPENAI_API_KEY)
23
+ return process.env.OPENAI_API_KEY;
24
+ try {
25
+ const envPath = path.join(process.cwd(), ".env");
26
+ if (fs.existsSync(envPath)) {
27
+ const content = fs.readFileSync(envPath, "utf8");
28
+ const match = content.match(/^OPENAI_API_KEY=(.+)$/m);
29
+ if (match)
30
+ return match[1].trim();
31
+ }
32
+ }
33
+ catch {
34
+ // Silently ignore .env read errors
35
+ }
36
+ return null;
37
+ }
38
+ /**
39
+ * Generates an embedding vector for the given text.
40
+ *
41
+ * Priority:
42
+ * 1. OpenAI API (if API key is available)
43
+ * 2. TF-IDF fallback (local)
44
+ */
45
+ export async function generateEmbedding(text) {
46
+ const apiKey = getApiKey();
47
+ // Use OpenAI API if available
48
+ if (apiKey) {
49
+ try {
50
+ const response = await fetch(EMBEDDING_API, {
51
+ method: "POST",
52
+ headers: {
53
+ "Content-Type": "application/json",
54
+ "Authorization": `Bearer ${apiKey}`,
55
+ },
56
+ body: JSON.stringify({
57
+ input: text,
58
+ model: EMBEDDING_MODEL,
59
+ }),
60
+ });
61
+ if (!response.ok) {
62
+ logger.warn(`OpenAI API error: ${response.status}. Falling back to TF-IDF.`);
63
+ return fallbackEmbedding(text);
64
+ }
65
+ const data = await response.json();
66
+ if (data?.data?.[0]?.embedding) {
67
+ return data.data[0].embedding;
68
+ }
69
+ }
70
+ catch (err) {
71
+ logger.warn(`OpenAI API call failed: ${err.message}. Falling back to TF-IDF.`);
72
+ }
73
+ }
74
+ // Fallback: TF-IDF
75
+ return fallbackEmbedding(text);
76
+ }
77
+ /**
78
+ * TF-IDF fallback embedding using CoreMemory.generateEmbedding.
79
+ * OpenAI embedding is 1536 dimensions, TF-IDF is 384 dimensions.
80
+ * Pads TF-IDF output to 1536 for compatibility.
81
+ */
82
+ function fallbackEmbedding(text) {
83
+ const tfidfVector = CoreMemory.generateEmbedding(text); // 384 dimensions
84
+ // Pad 384 → 1536
85
+ const padded = new Array(EMBEDDING_DIM).fill(0);
86
+ for (let i = 0; i < tfidfVector.length; i++) {
87
+ padded[i] = tfidfVector[i];
88
+ }
89
+ return padded;
90
+ }
91
+ /**
92
+ * Batch embedding generation. Single API call for multiple texts.
93
+ * OpenAI supports batch requests natively.
94
+ */
95
+ export async function generateEmbeddings(texts) {
96
+ const apiKey = getApiKey();
97
+ if (apiKey) {
98
+ try {
99
+ const response = await fetch(EMBEDDING_API, {
100
+ method: "POST",
101
+ headers: {
102
+ "Content-Type": "application/json",
103
+ "Authorization": `Bearer ${apiKey}`,
104
+ },
105
+ body: JSON.stringify({
106
+ input: texts,
107
+ model: EMBEDDING_MODEL,
108
+ }),
109
+ });
110
+ if (response.ok) {
111
+ const data = await response.json();
112
+ if (data?.data) {
113
+ return data.data.map(d => d.embedding);
114
+ }
115
+ }
116
+ }
117
+ catch {
118
+ // fallback
119
+ }
120
+ }
121
+ // Fallback for each text
122
+ return Promise.all(texts.map(t => fallbackEmbedding(t)));
123
+ }
124
+ /**
125
+ * Checks if a vector is an OpenAI embedding (1536 dimensions)
126
+ * as opposed to TF-IDF (384 dimensions).
127
+ */
128
+ export function isOpenAIEmbedding(vector) {
129
+ return vector.length === EMBEDDING_DIM;
130
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,74 @@
1
+ import { Storage } from "../../shared/storage.js";
2
+ /**
3
+ * [MEMORY] Vector Store Implementation
4
+ * Uses SQLite for persistence and JS-based cosine similarity for retrieval.
5
+ * Zero-Docker, Lightweight, and Local.
6
+ */
7
+ export class VectorStore {
8
+ static TABLE_NAME = "vector_memory";
9
+ static initialize() {
10
+ const db = Storage.getDB();
11
+ db.exec(`
12
+ CREATE TABLE IF NOT EXISTS ${this.TABLE_NAME} (
13
+ id TEXT PRIMARY KEY,
14
+ content TEXT,
15
+ vector BLOB,
16
+ category TEXT,
17
+ metadata TEXT,
18
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
19
+ )
20
+ `);
21
+ }
22
+ static async addEntry(entry) {
23
+ const db = Storage.getDB();
24
+ const vectorBuffer = entry.vector ? Buffer.from(new Float32Array(entry.vector).buffer) : null;
25
+ db.prepare(`
26
+ INSERT INTO ${this.TABLE_NAME} (id, content, vector, category, metadata)
27
+ VALUES (?, ?, ?, ?, ?)
28
+ ON CONFLICT(id) DO UPDATE SET
29
+ content = excluded.content,
30
+ vector = excluded.vector,
31
+ metadata = excluded.metadata
32
+ `).run(entry.id, entry.content, vectorBuffer, entry.metadata.category, JSON.stringify(entry.metadata));
33
+ }
34
+ static async search(queryVector, limit = 5, category) {
35
+ const db = Storage.getDB();
36
+ let query = `SELECT * FROM ${this.TABLE_NAME}`;
37
+ const params = [];
38
+ if (category) {
39
+ query += " WHERE category = ?";
40
+ params.push(category);
41
+ }
42
+ const rows = db.prepare(query).all(...params);
43
+ const results = [];
44
+ for (const row of rows) {
45
+ if (!row.vector)
46
+ continue;
47
+ const entryVector = Array.from(new Float32Array(row.vector.buffer, row.vector.byteOffset, row.vector.byteLength / 4));
48
+ const score = this.cosineSimilarity(queryVector, entryVector);
49
+ results.push({
50
+ entry: {
51
+ id: row.id,
52
+ content: row.content,
53
+ vector: entryVector,
54
+ metadata: JSON.parse(row.metadata)
55
+ },
56
+ score
57
+ });
58
+ }
59
+ return results
60
+ .sort((a, b) => b.score - a.score)
61
+ .slice(0, limit);
62
+ }
63
+ static cosineSimilarity(vecA, vecB) {
64
+ let dotProduct = 0;
65
+ let normA = 0;
66
+ let normB = 0;
67
+ for (let i = 0; i < vecA.length; i++) {
68
+ dotProduct += vecA[i] * vecB[i];
69
+ normA += vecA[i] * vecA[i];
70
+ normB += vecB[i] * vecB[i];
71
+ }
72
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
73
+ }
74
+ }
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Agent Atabey — Single Source of Truth for framework constants.
3
+ * Import from here instead of hardcoding paths, phases, or directory names.
4
+ */
5
+ // ─── Framework identity ───────────────────────────────────────────────────────
6
+ export const FRAMEWORK = {
7
+ NAME: "Agent Atabey",
8
+ CORE_DIR: ".atabey",
9
+ UNIFIED_HUB_DIR: ".agents",
10
+ CONSTITUTION_FILE: "ATABEY.md",
11
+ DEFAULT_TRACE_ID: "T-000",
12
+ DEFAULT_PHASE: "PHASE_0",
13
+ DEFAULT_MANAGER_STATE: "ACTIVE",
14
+ DASHBOARD_PORT: parseInt(process.env.PORT || process.env.DASHBOARD_PORT || "5858"),
15
+ };
16
+ export const PROJECT_PHASES = [
17
+ "PHASE_0",
18
+ "PHASE_1",
19
+ "PHASE_2",
20
+ "PHASE_3",
21
+ "PHASE_4",
22
+ ];
23
+ // ─── Adapter platform directories (native / legacy) ───────────────────────────
24
+ export const ADAPTER_DIRS = {
25
+ GEMINI: ".gemini",
26
+ CLAUDE: ".claude",
27
+ GROK: ".grok",
28
+ CURSOR: ".cursor",
29
+ CODEX: ".agents",
30
+ ANTIGRAVITY: ".agents",
31
+ LOCAL: ".atabey",
32
+ LEGACY_AGENT: ".agent",
33
+ };
34
+ /** Priority order for framework directory resolution (CLI + MCP). */
35
+ export const FRAMEWORK_DIR_CANDIDATES = [
36
+ FRAMEWORK.CORE_DIR,
37
+ ADAPTER_DIRS.CODEX,
38
+ ADAPTER_DIRS.CLAUDE,
39
+ ADAPTER_DIRS.GEMINI,
40
+ ADAPTER_DIRS.GROK,
41
+ ADAPTER_DIRS.CURSOR,
42
+ ADAPTER_DIRS.ANTIGRAVITY,
43
+ ADAPTER_DIRS.LOCAL,
44
+ ];
45
+ /** Slug under `.agents/{slug}/` for each adapter in unified mode. */
46
+ export const UNIFIED_ADAPTER_SLUG = {
47
+ gemini: "gemini",
48
+ claude: "claude",
49
+ grok: "grok",
50
+ cursor: "cursor",
51
+ codex: "codex",
52
+ local: "local",
53
+ "antigravity-cli": "antigravity",
54
+ };
55
+ // ─── Native agent instruction paths (legacy tool compatibility) ───────────────
56
+ export const NATIVE_AGENT_PATHS = {
57
+ gemini: pathJoin(ADAPTER_DIRS.GEMINI, "agents"),
58
+ claude: pathJoin(ADAPTER_DIRS.CLAUDE, "agents"),
59
+ grok: pathJoin(ADAPTER_DIRS.GROK, "agents"),
60
+ cursor: pathJoin(ADAPTER_DIRS.CURSOR, "rules"),
61
+ codex: pathJoin(ADAPTER_DIRS.CODEX, "instructions"),
62
+ local: pathJoin(ADAPTER_DIRS.LOCAL, "agents"),
63
+ "antigravity-cli": pathJoin(ADAPTER_DIRS.ANTIGRAVITY, "agents"),
64
+ };
65
+ /** Legacy layout bases used by `check` and discovery (non-unified installs). */
66
+ export const LEGACY_AGENT_LAYOUT_BASES = [
67
+ NATIVE_AGENT_PATHS.gemini,
68
+ NATIVE_AGENT_PATHS.claude,
69
+ NATIVE_AGENT_PATHS.cursor,
70
+ NATIVE_AGENT_PATHS.grok,
71
+ NATIVE_AGENT_PATHS.codex,
72
+ NATIVE_AGENT_PATHS.local,
73
+ NATIVE_AGENT_PATHS["antigravity-cli"],
74
+ ];
75
+ // ─── Framework internal subdirectories (under `.atabey/`) ──────────────────
76
+ export const FRAMEWORK_SUBDIRS = {
77
+ AGENTS: "agents",
78
+ SKILLS: "skills",
79
+ KNOWLEDGE: "knowledge",
80
+ PROMPTS: "prompts",
81
+ MEMORY: "memory",
82
+ ROUTER: "router",
83
+ REGISTRY: "registry",
84
+ OBSERVABILITY: "observability",
85
+ RULES: "rules",
86
+ MESSAGES: "messages",
87
+ LOGS: "logs",
88
+ MEMORY_GRAPH: "memory-graph",
89
+ DASHBOARD: "dashboard",
90
+ UI_DIST: "ui",
91
+ };
92
+ export const CORE_SCAFFOLD_SUBDIRS = [
93
+ FRAMEWORK_SUBDIRS.KNOWLEDGE,
94
+ FRAMEWORK_SUBDIRS.PROMPTS,
95
+ FRAMEWORK_SUBDIRS.MEMORY,
96
+ FRAMEWORK_SUBDIRS.ROUTER,
97
+ FRAMEWORK_SUBDIRS.REGISTRY,
98
+ FRAMEWORK_SUBDIRS.OBSERVABILITY,
99
+ FRAMEWORK_SUBDIRS.RULES,
100
+ ];
101
+ export const RUNTIME_SUBDIRS = [
102
+ FRAMEWORK_SUBDIRS.MESSAGES,
103
+ FRAMEWORK_SUBDIRS.LOGS,
104
+ FRAMEWORK_SUBDIRS.MEMORY_GRAPH,
105
+ ];
106
+ export const MEMORY_SUBDIRS = {
107
+ TASKS: "tasks",
108
+ HISTORY: "history",
109
+ };
110
+ export const MEMORY_FILES = {
111
+ STATE: "state.json",
112
+ STATUS: "status.json",
113
+ PROJECT_MEMORY: "PROJECT_MEMORY.md",
114
+ SHARED_FACTS: "shared-facts.json",
115
+ };
116
+ // ─── Monorepo default paths ───────────────────────────────────────────────────
117
+ export const DEFAULT_MONOREPO_PATHS = {
118
+ backend: "apps/backend",
119
+ frontend: "apps/web",
120
+ mobile: "apps/mobile",
121
+ docs: "docs",
122
+ tests: "tests",
123
+ };
124
+ /** Cursor rule globs per agent role (enterprise monorepo layout). */
125
+ export const CURSOR_AGENT_GLOBS = {
126
+ manager: "**/*",
127
+ security: "**/*",
128
+ architect: "**/*",
129
+ backend: `${DEFAULT_MONOREPO_PATHS.backend}/**/*`,
130
+ frontend: `${DEFAULT_MONOREPO_PATHS.frontend}/**/*`,
131
+ mobile: `${DEFAULT_MONOREPO_PATHS.mobile}/**/*`,
132
+ native: "apps/native/**/*",
133
+ database: `${DEFAULT_MONOREPO_PATHS.backend}/src/database/**/*`,
134
+ devops: "{.github,docker,infra,scripts,*.yml,*.yaml,Dockerfile*}",
135
+ quality: "**/*",
136
+ analyst: "{docs,specs,contracts}/**/*",
137
+ explorer: "**/*",
138
+ git: "**/*",
139
+ };
140
+ // ─── MCP & environment ──────────────────────────────────────────────────────
141
+ export const MCP = {
142
+ SERVER_NAME: "atabey",
143
+ ROOT_CONFIG_FILE: "mcp.json",
144
+ PROJECT_ROOT_ENV: "ATABEY_PROJECT_ROOT",
145
+ TEST_DIR_ENV: "ATABEY_TEST_DIR",
146
+ SERVER_DIST_PATH: "framework-mcp/dist/index.js",
147
+ };
148
+ export const ROOT_CONFIG_FILES = {
149
+ MCP: MCP.ROOT_CONFIG_FILE,
150
+ DOT_MCP: ".mcp.json",
151
+ ENV_EXAMPLE: ".env.example",
152
+ VSCODE_MCP: ".vscode/mcp.json",
153
+ };
154
+ // ─── Shim template placeholders ───────────────────────────────────────────────
155
+ export const TEMPLATE_PLACEHOLDERS = {
156
+ FRAMEWORK_DIR: "{{FRAMEWORK_DIR}}",
157
+ ADAPTER: "{{ADAPTER}}",
158
+ BACKEND_DIR: "{{BACKEND_DIR}}",
159
+ FRONTEND_DIR: "{{FRONTEND_DIR}}",
160
+ DOCS_DIR: "{{DOCS_DIR}}",
161
+ TESTS_DIR: "{{TESTS_DIR}}",
162
+ };
163
+ // ─── File extensions ─────────────────────────────────────────────────────────
164
+ export const AGENT_FILE_EXT = {
165
+ MARKDOWN: ".md",
166
+ CURSOR_RULE: ".mdc",
167
+ };
168
+ // ─── Path helpers ─────────────────────────────────────────────────────────────
169
+ export function pathJoin(...segments) {
170
+ return segments.filter(Boolean).join("/");
171
+ }
172
+ export function corePath(...segments) {
173
+ return [FRAMEWORK.CORE_DIR, ...segments.filter(Boolean)].join("/");
174
+ }
175
+ export function unifiedHubPath(...segments) {
176
+ return [FRAMEWORK.UNIFIED_HUB_DIR, ...segments.filter(Boolean)].join("/");
177
+ }
178
+ export function unifiedAdapterPath(slug, ...segments) {
179
+ return unifiedHubPath(slug, ...segments);
180
+ }
181
+ export function knowledgePath(filename) {
182
+ return corePath(FRAMEWORK_SUBDIRS.KNOWLEDGE, filename);
183
+ }
184
+ /** Backward-compatible aliases */
185
+ export const CORE_FRAMEWORK_DIR = FRAMEWORK.CORE_DIR;
186
+ export const UNIFIED_HUB_DIR = FRAMEWORK.UNIFIED_HUB_DIR;
187
+ export const SKILLS_HUB_PATH = pathJoin(UNIFIED_HUB_DIR, FRAMEWORK_SUBDIRS.SKILLS);
@@ -0,0 +1,53 @@
1
+ import { execFileSync } from "child_process";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { logger } from "./logger.js";
5
+ export function ensureDir(dirPath, dryRun = false) {
6
+ if (!fs.existsSync(dirPath)) {
7
+ if (dryRun) {
8
+ logger.info(`[DRY RUN] Would create directory: ${dirPath}`);
9
+ }
10
+ else {
11
+ fs.mkdirSync(dirPath, { recursive: true });
12
+ }
13
+ }
14
+ }
15
+ /**
16
+ * Writes content to a file atomically by using a temporary file.
17
+ * This prevents data corruption during unexpected system failures.
18
+ */
19
+ export function writeTextFile(filePath, content, dryRun = false) {
20
+ if (dryRun) {
21
+ logger.info(`[DRY RUN] Would write file: ${filePath}`);
22
+ return;
23
+ }
24
+ const dir = path.dirname(filePath);
25
+ ensureDir(dir);
26
+ const tempPath = `${filePath}.${Math.random().toString(36).slice(2, 9)}.tmp`;
27
+ const finalContent = content.endsWith("\n") ? content : `${content}\n`;
28
+ try {
29
+ fs.writeFileSync(tempPath, finalContent, "utf8");
30
+ fs.renameSync(tempPath, filePath);
31
+ }
32
+ catch (err) {
33
+ if (fs.existsSync(tempPath))
34
+ fs.unlinkSync(tempPath);
35
+ throw err;
36
+ }
37
+ }
38
+ export function appendFile(filePath, content, dryRun = false) {
39
+ if (dryRun) {
40
+ logger.info(`[DRY RUN] Would append to file: ${filePath}`);
41
+ return;
42
+ }
43
+ ensureDir(path.dirname(filePath));
44
+ // Atomic append: oku → ekle → atomic yaz
45
+ const existing = fs.existsSync(filePath) ? fs.readFileSync(filePath, "utf8") : "";
46
+ writeTextFile(filePath, existing + content);
47
+ }
48
+ export function writeJsonFile(filePath, value, dryRun = false) {
49
+ writeTextFile(filePath, JSON.stringify(value, null, 2), dryRun);
50
+ }
51
+ export function runCommandQuiet(command, args, cwd) {
52
+ execFileSync(command, args, { cwd, stdio: "ignore" });
53
+ }