atabey 0.0.16 → 0.0.17

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 (905) hide show
  1. package/dist/atabey/src/cli/commands/approve.d.ts +1 -0
  2. package/dist/atabey/src/cli/commands/approve.js +64 -0
  3. package/dist/atabey/src/cli/commands/approve.js.map +1 -0
  4. package/dist/atabey/src/cli/commands/check.d.ts +1 -0
  5. package/dist/atabey/src/cli/commands/check.js +197 -0
  6. package/dist/atabey/src/cli/commands/check.js.map +1 -0
  7. package/dist/atabey/src/cli/commands/compliance.d.ts +5 -0
  8. package/dist/atabey/src/cli/commands/compliance.js +43 -0
  9. package/dist/atabey/src/cli/commands/compliance.js.map +1 -0
  10. package/dist/atabey/src/cli/commands/contract.d.ts +10 -0
  11. package/dist/atabey/src/cli/commands/contract.js +52 -0
  12. package/dist/atabey/src/cli/commands/contract.js.map +1 -0
  13. package/dist/atabey/src/cli/commands/coverage.d.ts +1 -0
  14. package/dist/atabey/src/cli/commands/coverage.js +121 -0
  15. package/dist/atabey/src/cli/commands/coverage.js.map +1 -0
  16. package/dist/atabey/src/cli/commands/dashboard.d.ts +5 -0
  17. package/dist/atabey/src/cli/commands/dashboard.js +753 -0
  18. package/dist/atabey/src/cli/commands/dashboard.js.map +1 -0
  19. package/dist/atabey/src/cli/commands/explorer.d.ts +2 -0
  20. package/dist/atabey/src/cli/commands/explorer.js +44 -0
  21. package/dist/atabey/src/cli/commands/explorer.js.map +1 -0
  22. package/dist/atabey/src/cli/commands/git.d.ts +2 -0
  23. package/dist/atabey/src/cli/commands/git.js +40 -0
  24. package/dist/atabey/src/cli/commands/git.js.map +1 -0
  25. package/dist/atabey/src/cli/commands/index-codebase.d.ts +4 -0
  26. package/dist/atabey/src/cli/commands/index-codebase.js +52 -0
  27. package/dist/atabey/src/cli/commands/index-codebase.js.map +1 -0
  28. package/dist/atabey/src/cli/commands/init/create-agent.d.ts +4 -0
  29. package/dist/atabey/src/cli/commands/init/create-agent.js +59 -0
  30. package/dist/atabey/src/cli/commands/init/create-agent.js.map +1 -0
  31. package/dist/atabey/src/cli/commands/init/scaffold-core.d.ts +13 -0
  32. package/dist/atabey/src/cli/commands/init/scaffold-core.js +129 -0
  33. package/dist/atabey/src/cli/commands/init/scaffold-core.js.map +1 -0
  34. package/dist/atabey/src/cli/commands/init/scaffold-docs.d.ts +4 -0
  35. package/dist/atabey/src/cli/commands/init/scaffold-docs.js +36 -0
  36. package/dist/atabey/src/cli/commands/init/scaffold-docs.js.map +1 -0
  37. package/dist/atabey/src/cli/commands/init/scaffold-ops.d.ts +1 -0
  38. package/dist/atabey/src/cli/commands/init/scaffold-ops.js +81 -0
  39. package/dist/atabey/src/cli/commands/init/scaffold-ops.js.map +1 -0
  40. package/dist/atabey/src/cli/commands/init/scaffold-standards.d.ts +2 -0
  41. package/dist/atabey/src/cli/commands/init/scaffold-standards.js +84 -0
  42. package/dist/atabey/src/cli/commands/init/scaffold-standards.js.map +1 -0
  43. package/dist/atabey/src/cli/commands/init.d.ts +11 -0
  44. package/dist/atabey/src/cli/commands/init.js +362 -0
  45. package/dist/atabey/src/cli/commands/init.js.map +1 -0
  46. package/dist/atabey/src/cli/commands/knowledge.d.ts +2 -0
  47. package/dist/atabey/src/cli/commands/knowledge.js +16 -0
  48. package/dist/atabey/src/cli/commands/knowledge.js.map +1 -0
  49. package/dist/atabey/src/cli/commands/lint.d.ts +4 -0
  50. package/dist/atabey/src/cli/commands/lint.js +24 -0
  51. package/dist/atabey/src/cli/commands/lint.js.map +1 -0
  52. package/dist/atabey/src/cli/commands/log.d.ts +10 -0
  53. package/dist/atabey/src/cli/commands/log.js +14 -0
  54. package/dist/atabey/src/cli/commands/log.js.map +1 -0
  55. package/dist/atabey/src/cli/commands/mcp.d.ts +11 -0
  56. package/dist/atabey/src/cli/commands/mcp.js +132 -0
  57. package/dist/atabey/src/cli/commands/mcp.js.map +1 -0
  58. package/dist/atabey/src/cli/commands/memory.d.ts +1 -0
  59. package/dist/atabey/src/cli/commands/memory.js +5 -0
  60. package/dist/atabey/src/cli/commands/memory.js.map +1 -0
  61. package/dist/atabey/src/cli/commands/orchestrate.d.ts +61 -0
  62. package/dist/atabey/src/cli/commands/orchestrate.js +238 -0
  63. package/dist/atabey/src/cli/commands/orchestrate.js.map +1 -0
  64. package/dist/atabey/src/cli/commands/plan.d.ts +11 -0
  65. package/dist/atabey/src/cli/commands/plan.js +120 -0
  66. package/dist/atabey/src/cli/commands/plan.js.map +1 -0
  67. package/dist/atabey/src/cli/commands/quickstart.d.ts +9 -0
  68. package/dist/atabey/src/cli/commands/quickstart.js +60 -0
  69. package/dist/atabey/src/cli/commands/quickstart.js.map +1 -0
  70. package/dist/atabey/src/cli/commands/script.d.ts +1 -0
  71. package/dist/atabey/src/cli/commands/script.js +28 -0
  72. package/dist/atabey/src/cli/commands/script.js.map +1 -0
  73. package/dist/atabey/src/cli/commands/security.d.ts +1 -0
  74. package/dist/atabey/src/cli/commands/security.js +34 -0
  75. package/dist/atabey/src/cli/commands/security.js.map +1 -0
  76. package/dist/atabey/src/cli/commands/status.d.ts +4 -0
  77. package/dist/atabey/src/cli/commands/status.js +122 -0
  78. package/dist/atabey/src/cli/commands/status.js.map +1 -0
  79. package/dist/atabey/src/cli/commands/trace.d.ts +10 -0
  80. package/dist/atabey/src/cli/commands/trace.js +108 -0
  81. package/dist/atabey/src/cli/commands/trace.js.map +1 -0
  82. package/dist/atabey/src/cli/index.js +282 -0
  83. package/dist/atabey/src/cli/index.js.map +1 -0
  84. package/dist/atabey/src/cli/platforms/core.d.ts +12 -0
  85. package/dist/atabey/src/cli/platforms/core.js +73 -0
  86. package/dist/atabey/src/cli/platforms/core.js.map +1 -0
  87. package/dist/atabey/src/cli/platforms/index.d.ts +5 -0
  88. package/dist/atabey/src/cli/platforms/index.js +6 -0
  89. package/dist/atabey/src/cli/platforms/index.js.map +1 -0
  90. package/dist/atabey/src/cli/platforms/paths.d.ts +15 -0
  91. package/dist/atabey/src/cli/platforms/paths.js +102 -0
  92. package/dist/atabey/src/cli/platforms/paths.js.map +1 -0
  93. package/dist/atabey/src/cli/platforms/scaffold.d.ts +2 -0
  94. package/dist/atabey/src/cli/platforms/scaffold.js +73 -0
  95. package/dist/atabey/src/cli/platforms/scaffold.js.map +1 -0
  96. package/dist/atabey/src/cli/platforms/utils.d.ts +4 -0
  97. package/dist/atabey/src/cli/platforms/utils.js.map +1 -0
  98. package/dist/atabey/src/cli/shims.d.ts +1 -0
  99. package/dist/atabey/src/cli/shims.js +67 -0
  100. package/dist/atabey/src/cli/shims.js.map +1 -0
  101. package/dist/atabey/src/cli/utils/claude.d.ts +8 -0
  102. package/dist/atabey/src/cli/utils/claude.js +58 -0
  103. package/dist/atabey/src/cli/utils/claude.js.map +1 -0
  104. package/dist/atabey/src/cli/utils/compliance.d.ts +42 -0
  105. package/dist/atabey/src/cli/utils/compliance.js +150 -0
  106. package/dist/atabey/src/cli/utils/compliance.js.map +1 -0
  107. package/dist/atabey/src/cli/utils/config-schema.d.ts +139 -0
  108. package/dist/atabey/src/cli/utils/config-schema.js +43 -0
  109. package/dist/atabey/src/cli/utils/config-schema.js.map +1 -0
  110. package/dist/atabey/src/cli/utils/fs.d.ts +10 -0
  111. package/dist/atabey/src/cli/utils/fs.js +139 -0
  112. package/dist/atabey/src/cli/utils/fs.js.map +1 -0
  113. package/dist/atabey/src/cli/utils/i18n.d.ts +21 -0
  114. package/dist/atabey/src/cli/utils/i18n.js +36 -0
  115. package/dist/atabey/src/cli/utils/i18n.js.map +1 -0
  116. package/dist/atabey/src/cli/utils/memory.d.ts +39 -0
  117. package/dist/atabey/src/cli/utils/memory.js +281 -0
  118. package/dist/atabey/src/cli/utils/memory.js.map +1 -0
  119. package/dist/atabey/src/cli/utils/pkg.d.ts +43 -0
  120. package/dist/atabey/src/cli/utils/pkg.js +283 -0
  121. package/dist/atabey/src/cli/utils/pkg.js.map +1 -0
  122. package/dist/atabey/src/cli/utils/quality.d.ts +25 -0
  123. package/dist/atabey/src/cli/utils/quality.js +66 -0
  124. package/dist/atabey/src/cli/utils/quality.js.map +1 -0
  125. package/dist/atabey/src/cli/utils/schemas.d.ts +49 -0
  126. package/dist/atabey/src/cli/utils/schemas.js +20 -0
  127. package/dist/atabey/src/cli/utils/schemas.js.map +1 -0
  128. package/dist/atabey/src/cli/utils/string.d.ts +7 -0
  129. package/dist/atabey/src/cli/utils/string.js +50 -0
  130. package/dist/atabey/src/cli/utils/string.js.map +1 -0
  131. package/dist/atabey/src/cli/utils/time.d.ts +2 -0
  132. package/dist/atabey/src/cli/utils/time.js +28 -0
  133. package/dist/atabey/src/cli/utils/time.js.map +1 -0
  134. package/dist/atabey/src/cli/utils/ui.d.ts +53 -0
  135. package/dist/atabey/src/cli/utils/ui.js +101 -0
  136. package/dist/atabey/src/cli/utils/ui.js.map +1 -0
  137. package/dist/atabey/src/contracts/index.d.ts +1 -0
  138. package/dist/atabey/src/contracts/index.js +2 -0
  139. package/dist/atabey/src/contracts/index.js.map +1 -0
  140. package/dist/atabey/src/contracts/tasks.d.ts +44 -0
  141. package/dist/atabey/src/contracts/tasks.js +21 -0
  142. package/dist/atabey/src/contracts/tasks.js.map +1 -0
  143. package/dist/atabey/src/modules/agents/definitions.d.ts +26 -0
  144. package/dist/atabey/src/modules/agents/definitions.js +564 -0
  145. package/dist/atabey/src/modules/agents/definitions.js.map +1 -0
  146. package/dist/atabey/src/modules/agents/registry/analyst.d.ts +2 -0
  147. package/dist/atabey/src/modules/agents/registry/analyst.js +40 -0
  148. package/dist/atabey/src/modules/agents/registry/analyst.js.map +1 -0
  149. package/dist/atabey/src/modules/agents/registry/architect.d.ts +2 -0
  150. package/dist/atabey/src/modules/agents/registry/architect.js +43 -0
  151. package/dist/atabey/src/modules/agents/registry/architect.js.map +1 -0
  152. package/dist/atabey/src/modules/agents/registry/backend.d.ts +2 -0
  153. package/dist/atabey/src/modules/agents/registry/backend.js +51 -0
  154. package/dist/atabey/src/modules/agents/registry/backend.js.map +1 -0
  155. package/dist/atabey/src/modules/agents/registry/database.d.ts +2 -0
  156. package/dist/atabey/src/modules/agents/registry/database.js +46 -0
  157. package/dist/atabey/src/modules/agents/registry/database.js.map +1 -0
  158. package/dist/atabey/src/modules/agents/registry/devops.d.ts +2 -0
  159. package/dist/atabey/src/modules/agents/registry/devops.js +46 -0
  160. package/dist/atabey/src/modules/agents/registry/devops.js.map +1 -0
  161. package/dist/atabey/src/modules/agents/registry/explorer.d.ts +2 -0
  162. package/dist/atabey/src/modules/agents/registry/explorer.js +38 -0
  163. package/dist/atabey/src/modules/agents/registry/explorer.js.map +1 -0
  164. package/dist/atabey/src/modules/agents/registry/frontend.d.ts +2 -0
  165. package/dist/atabey/src/modules/agents/registry/frontend.js +53 -0
  166. package/dist/atabey/src/modules/agents/registry/frontend.js.map +1 -0
  167. package/dist/atabey/src/modules/agents/registry/git.d.ts +2 -0
  168. package/dist/atabey/src/modules/agents/registry/git.js +37 -0
  169. package/dist/atabey/src/modules/agents/registry/git.js.map +1 -0
  170. package/dist/atabey/src/modules/agents/registry/manager.d.ts +2 -0
  171. package/dist/atabey/src/modules/agents/registry/manager.js +65 -0
  172. package/dist/atabey/src/modules/agents/registry/manager.js.map +1 -0
  173. package/dist/atabey/src/modules/agents/registry/mobile.d.ts +2 -0
  174. package/dist/atabey/src/modules/agents/registry/mobile.js +42 -0
  175. package/dist/atabey/src/modules/agents/registry/mobile.js.map +1 -0
  176. package/dist/atabey/src/modules/agents/registry/native.d.ts +2 -0
  177. package/dist/atabey/src/modules/agents/registry/native.js +42 -0
  178. package/dist/atabey/src/modules/agents/registry/native.js.map +1 -0
  179. package/dist/atabey/src/modules/agents/registry/quality.d.ts +2 -0
  180. package/dist/atabey/src/modules/agents/registry/quality.js +44 -0
  181. package/dist/atabey/src/modules/agents/registry/quality.js.map +1 -0
  182. package/dist/atabey/src/modules/agents/registry/security.d.ts +2 -0
  183. package/dist/atabey/src/modules/agents/registry/security.js +43 -0
  184. package/dist/atabey/src/modules/agents/registry/security.js.map +1 -0
  185. package/dist/atabey/src/modules/agents/types.d.ts +33 -0
  186. package/dist/atabey/src/modules/agents/types.js +2 -0
  187. package/dist/atabey/src/modules/agents/types.js.map +1 -0
  188. package/dist/atabey/src/modules/contracts/api.d.ts +178 -0
  189. package/dist/atabey/src/modules/contracts/api.js +56 -0
  190. package/dist/atabey/src/modules/contracts/api.js.map +1 -0
  191. package/dist/atabey/src/modules/contracts/index.d.ts +5 -0
  192. package/dist/atabey/src/modules/contracts/index.js +6 -0
  193. package/dist/atabey/src/modules/contracts/index.js.map +1 -0
  194. package/dist/atabey/src/modules/engines/agent-executor.d.ts +46 -0
  195. package/dist/atabey/src/modules/engines/agent-executor.js +241 -0
  196. package/dist/atabey/src/modules/engines/agent-executor.js.map +1 -0
  197. package/dist/atabey/src/modules/engines/agent-loop.d.ts +34 -0
  198. package/dist/atabey/src/modules/engines/agent-loop.js +102 -0
  199. package/dist/atabey/src/modules/engines/agent-loop.js.map +1 -0
  200. package/dist/atabey/src/modules/engines/contract-engine.d.ts +46 -0
  201. package/dist/atabey/src/modules/engines/contract-engine.js +116 -0
  202. package/dist/atabey/src/modules/engines/contract-engine.js.map +1 -0
  203. package/dist/atabey/src/modules/engines/crud-governance.d.ts +64 -0
  204. package/dist/atabey/src/modules/engines/crud-governance.js +184 -0
  205. package/dist/atabey/src/modules/engines/crud-governance.js.map +1 -0
  206. package/dist/atabey/src/modules/engines/discovery-engine.d.ts +42 -0
  207. package/dist/atabey/src/modules/engines/discovery-engine.js +161 -0
  208. package/dist/atabey/src/modules/engines/discovery-engine.js.map +1 -0
  209. package/dist/atabey/src/modules/engines/evaluation-engine.d.ts +18 -0
  210. package/dist/atabey/src/modules/engines/evaluation-engine.js +171 -0
  211. package/dist/atabey/src/modules/engines/evaluation-engine.js.map +1 -0
  212. package/dist/atabey/src/modules/engines/file-lock.d.ts +41 -0
  213. package/dist/atabey/src/modules/engines/file-lock.js +168 -0
  214. package/dist/atabey/src/modules/engines/file-lock.js.map +1 -0
  215. package/dist/atabey/src/modules/engines/health-engine.d.ts +22 -0
  216. package/dist/atabey/src/modules/engines/health-engine.js +127 -0
  217. package/dist/atabey/src/modules/engines/health-engine.js.map +1 -0
  218. package/dist/atabey/src/modules/engines/phase-engine.d.ts +82 -0
  219. package/dist/atabey/src/modules/engines/phase-engine.js +211 -0
  220. package/dist/atabey/src/modules/engines/phase-engine.js.map +1 -0
  221. package/dist/atabey/src/modules/engines/planning-engine.d.ts +25 -0
  222. package/dist/atabey/src/modules/engines/planning-engine.js +80 -0
  223. package/dist/atabey/src/modules/engines/planning-engine.js.map +1 -0
  224. package/dist/atabey/src/modules/engines/policy-engine.d.ts +63 -0
  225. package/dist/atabey/src/modules/engines/policy-engine.js +186 -0
  226. package/dist/atabey/src/modules/engines/policy-engine.js.map +1 -0
  227. package/dist/atabey/src/modules/engines/quality-gate.d.ts +31 -0
  228. package/dist/atabey/src/modules/engines/quality-gate.js +95 -0
  229. package/dist/atabey/src/modules/engines/quality-gate.js.map +1 -0
  230. package/dist/atabey/src/modules/engines/risk-engine.d.ts +34 -0
  231. package/dist/atabey/src/modules/engines/risk-engine.js +201 -0
  232. package/dist/atabey/src/modules/engines/risk-engine.js.map +1 -0
  233. package/dist/atabey/src/modules/engines/routing-engine.d.ts +96 -0
  234. package/dist/atabey/src/modules/engines/routing-engine.js +505 -0
  235. package/dist/atabey/src/modules/engines/routing-engine.js.map +1 -0
  236. package/dist/atabey/src/modules/engines/session-engine.d.ts +68 -0
  237. package/dist/atabey/src/modules/engines/session-engine.js +141 -0
  238. package/dist/atabey/src/modules/engines/session-engine.js.map +1 -0
  239. package/dist/atabey/src/modules/engines/types.d.ts +51 -0
  240. package/dist/atabey/src/modules/engines/types.js +2 -0
  241. package/dist/atabey/src/modules/engines/types.js.map +1 -0
  242. package/dist/atabey/src/modules/memory/core.d.ts +42 -0
  243. package/dist/atabey/src/modules/memory/core.js +100 -0
  244. package/dist/atabey/src/modules/memory/core.js.map +1 -0
  245. package/dist/atabey/src/modules/memory/embedding.d.ts +28 -0
  246. package/dist/atabey/src/modules/memory/embedding.js +131 -0
  247. package/dist/atabey/src/modules/memory/embedding.js.map +1 -0
  248. package/dist/atabey/src/modules/memory/types.d.ts +18 -0
  249. package/dist/atabey/src/modules/memory/types.js +2 -0
  250. package/dist/atabey/src/modules/memory/types.js.map +1 -0
  251. package/dist/atabey/src/modules/memory/vector-store.d.ts +13 -0
  252. package/dist/atabey/src/modules/memory/vector-store.js +75 -0
  253. package/dist/atabey/src/modules/memory/vector-store.js.map +1 -0
  254. package/dist/atabey/src/modules/providers/definitions.js.map +1 -0
  255. package/dist/atabey/src/modules/providers/llm-provider.d.ts +87 -0
  256. package/dist/atabey/src/modules/providers/llm-provider.js +242 -0
  257. package/dist/atabey/src/modules/providers/llm-provider.js.map +1 -0
  258. package/dist/atabey/src/modules/providers/registry.js.map +1 -0
  259. package/dist/atabey/src/modules/providers/shared.js +104 -0
  260. package/dist/atabey/src/modules/providers/shared.js.map +1 -0
  261. package/dist/atabey/src/modules/providers/types.js.map +1 -0
  262. package/dist/atabey/src/modules/skills/adapter-skills.d.ts +68 -0
  263. package/dist/atabey/src/modules/skills/adapter-skills.js +450 -0
  264. package/dist/atabey/src/modules/skills/adapter-skills.js.map +1 -0
  265. package/dist/atabey/src/modules/skills/definitions.d.ts +48 -0
  266. package/dist/atabey/src/modules/skills/definitions.js +71 -0
  267. package/dist/atabey/src/modules/skills/definitions.js.map +1 -0
  268. package/dist/atabey/src/shared/audit.d.ts +105 -0
  269. package/dist/atabey/src/shared/audit.js +221 -0
  270. package/dist/atabey/src/shared/audit.js.map +1 -0
  271. package/dist/atabey/src/shared/constants.d.ts +120 -0
  272. package/dist/atabey/src/shared/constants.js +188 -0
  273. package/dist/atabey/src/shared/constants.js.map +1 -0
  274. package/dist/atabey/src/shared/errors.js.map +1 -0
  275. package/dist/atabey/src/shared/fs.d.ts +9 -0
  276. package/dist/atabey/src/shared/fs.js +54 -0
  277. package/dist/atabey/src/shared/fs.js.map +1 -0
  278. package/dist/atabey/src/shared/lock.d.ts +82 -0
  279. package/dist/atabey/src/shared/lock.js +160 -0
  280. package/dist/atabey/src/shared/lock.js.map +1 -0
  281. package/dist/atabey/src/shared/logger.d.ts +30 -0
  282. package/dist/atabey/src/shared/logger.js +127 -0
  283. package/dist/atabey/src/shared/logger.js.map +1 -0
  284. package/dist/atabey/src/shared/pii.d.ts +69 -0
  285. package/dist/atabey/src/shared/pii.js +213 -0
  286. package/dist/atabey/src/shared/pii.js.map +1 -0
  287. package/dist/atabey/src/shared/retention.d.ts +63 -0
  288. package/dist/atabey/src/shared/retention.js +171 -0
  289. package/dist/atabey/src/shared/retention.js.map +1 -0
  290. package/dist/atabey/src/shared/storage.d.ts +141 -0
  291. package/dist/atabey/src/shared/storage.js +326 -0
  292. package/dist/atabey/src/shared/storage.js.map +1 -0
  293. package/dist/atabey/src/shared/string.d.ts +1 -0
  294. package/dist/atabey/src/shared/string.js +30 -0
  295. package/dist/atabey/src/shared/string.js.map +1 -0
  296. package/dist/atabey/src/shared/types.d.ts +27 -0
  297. package/dist/atabey/src/shared/types.js +17 -0
  298. package/dist/atabey/src/shared/types.js.map +1 -0
  299. package/dist/atabey-mcp/src/mcp/utils/auth.d.ts +40 -0
  300. package/dist/atabey-mcp/src/mcp/utils/auth.js +154 -0
  301. package/dist/atabey-mcp/src/mcp/utils/auth.js.map +1 -0
  302. package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js.map +1 -0
  303. package/dist/atabey-mcp/src/mcp/utils/context-optimizer.d.ts +110 -0
  304. package/dist/atabey-mcp/src/mcp/utils/context-optimizer.js +391 -0
  305. package/dist/atabey-mcp/src/mcp/utils/context-optimizer.js.map +1 -0
  306. package/dist/atabey-mcp/src/mcp/utils/discipline.js.map +1 -0
  307. package/dist/atabey-mcp/src/mcp/utils/finops.js.map +1 -0
  308. package/dist/atabey-mcp/src/mcp/utils/license-scanner.js.map +1 -0
  309. package/dist/atabey-mcp/src/mcp/utils/loop-detector.js.map +1 -0
  310. package/dist/atabey-mcp/src/mcp/utils/memory.js.map +1 -0
  311. package/dist/atabey-mcp/src/mcp/utils/quality.js.map +1 -0
  312. package/dist/atabey-mcp/src/mcp/utils/rules-engine.js.map +1 -0
  313. package/dist/atabey-mcp/src/mcp/utils/telemetry-streamer.js +397 -0
  314. package/dist/atabey-mcp/src/mcp/utils/telemetry-streamer.js.map +1 -0
  315. package/dist/atabey-mcp/src/shared/fs.d.ts +9 -0
  316. package/dist/atabey-mcp/src/shared/fs.js +54 -0
  317. package/dist/atabey-mcp/src/shared/fs.js.map +1 -0
  318. package/dist/atabey-mcp/src/shared/logger.d.ts +30 -0
  319. package/dist/atabey-mcp/src/shared/logger.js +127 -0
  320. package/dist/atabey-mcp/src/shared/logger.js.map +1 -0
  321. package/dist/atabey-mcp/src/shared/pii.d.ts +69 -0
  322. package/dist/atabey-mcp/src/shared/pii.js +213 -0
  323. package/dist/atabey-mcp/src/shared/pii.js.map +1 -0
  324. package/dist/atabey-mcp/src/shared/storage.d.ts +167 -0
  325. package/dist/atabey-mcp/src/shared/storage.js +293 -0
  326. package/dist/atabey-mcp/src/shared/storage.js.map +1 -0
  327. package/dist/atabey-mcp/src/shared/types.js.map +1 -0
  328. package/dist/src/cli/commands/check.js +1 -1
  329. package/dist/src/cli/commands/check.js.map +1 -1
  330. package/dist/src/cli/commands/dashboard.js +19 -19
  331. package/dist/src/cli/commands/dashboard.js.map +1 -1
  332. package/dist/src/cli/commands/mcp.js +3 -3
  333. package/dist/src/cli/commands/mcp.js.map +1 -1
  334. package/dist/src/cli/commands/orchestrate.d.ts +4 -4
  335. package/dist/src/cli/utils/compliance.d.ts +37 -7
  336. package/dist/src/cli/utils/compliance.js +144 -7
  337. package/dist/src/cli/utils/compliance.js.map +1 -1
  338. package/dist/src/cli/utils/pkg.js +1 -1
  339. package/dist/src/cli/utils/pkg.js.map +1 -1
  340. package/dist/src/cli/utils/quality.d.ts +4 -6
  341. package/dist/src/cli/utils/quality.js +3 -5
  342. package/dist/src/cli/utils/quality.js.map +1 -1
  343. package/dist/src/cli/utils/schemas.d.ts +2 -2
  344. package/dist/src/contracts/tasks.d.ts +2 -2
  345. package/dist/src/modules/contracts/api.d.ts +6 -6
  346. package/dist/src/modules/engines/contract-engine.d.ts +46 -0
  347. package/dist/src/modules/engines/contract-engine.js +116 -0
  348. package/dist/src/modules/engines/contract-engine.js.map +1 -0
  349. package/dist/src/modules/engines/crud-governance.d.ts +64 -0
  350. package/dist/src/modules/engines/crud-governance.js +184 -0
  351. package/dist/src/modules/engines/crud-governance.js.map +1 -0
  352. package/dist/src/modules/engines/discovery-engine.d.ts +42 -0
  353. package/dist/src/modules/engines/discovery-engine.js +161 -0
  354. package/dist/src/modules/engines/discovery-engine.js.map +1 -0
  355. package/dist/src/modules/engines/file-lock.d.ts +41 -0
  356. package/dist/src/modules/engines/file-lock.js +168 -0
  357. package/dist/src/modules/engines/file-lock.js.map +1 -0
  358. package/dist/src/modules/engines/phase-engine.d.ts +82 -0
  359. package/dist/src/modules/engines/phase-engine.js +211 -0
  360. package/dist/src/modules/engines/phase-engine.js.map +1 -0
  361. package/dist/src/modules/engines/policy-engine.d.ts +63 -0
  362. package/dist/src/modules/engines/policy-engine.js +186 -0
  363. package/dist/src/modules/engines/policy-engine.js.map +1 -0
  364. package/dist/src/modules/engines/session-engine.d.ts +68 -0
  365. package/dist/src/modules/engines/session-engine.js +141 -0
  366. package/dist/src/modules/engines/session-engine.js.map +1 -0
  367. package/dist/src/modules/providers/llm-provider.d.ts +87 -0
  368. package/dist/src/modules/providers/llm-provider.js +242 -0
  369. package/dist/src/modules/providers/llm-provider.js.map +1 -0
  370. package/dist/src/shared/constants.d.ts +1 -1
  371. package/dist/src/shared/constants.js +1 -1
  372. package/dist/src/shared/constants.js.map +1 -1
  373. package/package.json +12 -54
  374. package/LICENSE +0 -672
  375. package/README.md +0 -782
  376. package/dist/framework-mcp/src/constants.d.ts +0 -47
  377. package/dist/framework-mcp/src/constants.js +0 -65
  378. package/dist/framework-mcp/src/constants.js.map +0 -1
  379. package/dist/framework-mcp/src/index.js +0 -1141
  380. package/dist/framework-mcp/src/index.js.map +0 -1
  381. package/dist/framework-mcp/src/resources/index.d.ts +0 -10
  382. package/dist/framework-mcp/src/resources/index.js +0 -59
  383. package/dist/framework-mcp/src/resources/index.js.map +0 -1
  384. package/dist/framework-mcp/src/tools/compliance/mask_pii.d.ts +0 -17
  385. package/dist/framework-mcp/src/tools/compliance/mask_pii.js +0 -56
  386. package/dist/framework-mcp/src/tools/compliance/mask_pii.js.map +0 -1
  387. package/dist/framework-mcp/src/tools/control_plane/locking.d.ts +0 -9
  388. package/dist/framework-mcp/src/tools/control_plane/locking.js +0 -85
  389. package/dist/framework-mcp/src/tools/control_plane/locking.js.map +0 -1
  390. package/dist/framework-mcp/src/tools/control_plane/registry.d.ts +0 -6
  391. package/dist/framework-mcp/src/tools/control_plane/registry.js +0 -84
  392. package/dist/framework-mcp/src/tools/control_plane/registry.js.map +0 -1
  393. package/dist/framework-mcp/src/tools/definitions.d.ts +0 -7
  394. package/dist/framework-mcp/src/tools/definitions.js +0 -199
  395. package/dist/framework-mcp/src/tools/definitions.js.map +0 -1
  396. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.d.ts +0 -5
  397. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +0 -65
  398. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js.map +0 -1
  399. package/dist/framework-mcp/src/tools/file_system/patch_file.d.ts +0 -2
  400. package/dist/framework-mcp/src/tools/file_system/patch_file.js +0 -35
  401. package/dist/framework-mcp/src/tools/file_system/patch_file.js.map +0 -1
  402. package/dist/framework-mcp/src/tools/file_system/read_file.d.ts +0 -2
  403. package/dist/framework-mcp/src/tools/file_system/read_file.js +0 -57
  404. package/dist/framework-mcp/src/tools/file_system/read_file.js.map +0 -1
  405. package/dist/framework-mcp/src/tools/file_system/replace_text.d.ts +0 -2
  406. package/dist/framework-mcp/src/tools/file_system/replace_text.js +0 -51
  407. package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +0 -1
  408. package/dist/framework-mcp/src/tools/file_system/write_file.d.ts +0 -2
  409. package/dist/framework-mcp/src/tools/file_system/write_file.js +0 -56
  410. package/dist/framework-mcp/src/tools/file_system/write_file.js.map +0 -1
  411. package/dist/framework-mcp/src/tools/framework/audit_deps.d.ts +0 -6
  412. package/dist/framework-mcp/src/tools/framework/audit_deps.js +0 -42
  413. package/dist/framework-mcp/src/tools/framework/audit_deps.js.map +0 -1
  414. package/dist/framework-mcp/src/tools/framework/get_status.d.ts +0 -2
  415. package/dist/framework-mcp/src/tools/framework/get_status.js +0 -6
  416. package/dist/framework-mcp/src/tools/framework/get_status.js.map +0 -1
  417. package/dist/framework-mcp/src/tools/framework/orchestrate.d.ts +0 -2
  418. package/dist/framework-mcp/src/tools/framework/orchestrate.js +0 -6
  419. package/dist/framework-mcp/src/tools/framework/orchestrate.js.map +0 -1
  420. package/dist/framework-mcp/src/tools/framework/run_tests.d.ts +0 -5
  421. package/dist/framework-mcp/src/tools/framework/run_tests.js +0 -53
  422. package/dist/framework-mcp/src/tools/framework/run_tests.js.map +0 -1
  423. package/dist/framework-mcp/src/tools/framework/submit_plan.d.ts +0 -11
  424. package/dist/framework-mcp/src/tools/framework/submit_plan.js +0 -14
  425. package/dist/framework-mcp/src/tools/framework/submit_plan.js.map +0 -1
  426. package/dist/framework-mcp/src/tools/framework/update_contract_hash.d.ts +0 -2
  427. package/dist/framework-mcp/src/tools/framework/update_contract_hash.js +0 -6
  428. package/dist/framework-mcp/src/tools/framework/update_contract_hash.js.map +0 -1
  429. package/dist/framework-mcp/src/tools/framework/update_memory.d.ts +0 -2
  430. package/dist/framework-mcp/src/tools/framework/update_memory.js +0 -9
  431. package/dist/framework-mcp/src/tools/framework/update_memory.js.map +0 -1
  432. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.d.ts +0 -19
  433. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +0 -138
  434. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js.map +0 -1
  435. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.d.ts +0 -8
  436. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +0 -91
  437. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js.map +0 -1
  438. package/dist/framework-mcp/src/tools/index.d.ts +0 -6
  439. package/dist/framework-mcp/src/tools/index.js +0 -126
  440. package/dist/framework-mcp/src/tools/index.js.map +0 -1
  441. package/dist/framework-mcp/src/tools/memory/delete_knowledge.d.ts +0 -8
  442. package/dist/framework-mcp/src/tools/memory/delete_knowledge.js +0 -29
  443. package/dist/framework-mcp/src/tools/memory/delete_knowledge.js.map +0 -1
  444. package/dist/framework-mcp/src/tools/memory/get_insights.d.ts +0 -6
  445. package/dist/framework-mcp/src/tools/memory/get_insights.js +0 -23
  446. package/dist/framework-mcp/src/tools/memory/get_insights.js.map +0 -1
  447. package/dist/framework-mcp/src/tools/memory/read_memory.d.ts +0 -6
  448. package/dist/framework-mcp/src/tools/memory/read_memory.js +0 -29
  449. package/dist/framework-mcp/src/tools/memory/read_memory.js.map +0 -1
  450. package/dist/framework-mcp/src/tools/memory/search_knowledge.d.ts +0 -8
  451. package/dist/framework-mcp/src/tools/memory/search_knowledge.js +0 -49
  452. package/dist/framework-mcp/src/tools/memory/search_knowledge.js.map +0 -1
  453. package/dist/framework-mcp/src/tools/memory/store_knowledge.d.ts +0 -10
  454. package/dist/framework-mcp/src/tools/memory/store_knowledge.js +0 -31
  455. package/dist/framework-mcp/src/tools/memory/store_knowledge.js.map +0 -1
  456. package/dist/framework-mcp/src/tools/messaging/approve_operation.d.ts +0 -24
  457. package/dist/framework-mcp/src/tools/messaging/approve_operation.js +0 -81
  458. package/dist/framework-mcp/src/tools/messaging/approve_operation.js.map +0 -1
  459. package/dist/framework-mcp/src/tools/messaging/ask_human.d.ts +0 -21
  460. package/dist/framework-mcp/src/tools/messaging/ask_human.js +0 -100
  461. package/dist/framework-mcp/src/tools/messaging/ask_human.js.map +0 -1
  462. package/dist/framework-mcp/src/tools/messaging/log_action.d.ts +0 -2
  463. package/dist/framework-mcp/src/tools/messaging/log_action.js +0 -23
  464. package/dist/framework-mcp/src/tools/messaging/log_action.js.map +0 -1
  465. package/dist/framework-mcp/src/tools/messaging/send_message.d.ts +0 -2
  466. package/dist/framework-mcp/src/tools/messaging/send_message.js +0 -111
  467. package/dist/framework-mcp/src/tools/messaging/send_message.js.map +0 -1
  468. package/dist/framework-mcp/src/tools/observability/check_ports.d.ts +0 -6
  469. package/dist/framework-mcp/src/tools/observability/check_ports.js +0 -43
  470. package/dist/framework-mcp/src/tools/observability/check_ports.js.map +0 -1
  471. package/dist/framework-mcp/src/tools/observability/get_health.d.ts +0 -5
  472. package/dist/framework-mcp/src/tools/observability/get_health.js +0 -20
  473. package/dist/framework-mcp/src/tools/observability/get_health.js.map +0 -1
  474. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.d.ts +0 -11
  475. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +0 -115
  476. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js.map +0 -1
  477. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.d.ts +0 -11
  478. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +0 -135
  479. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js.map +0 -1
  480. package/dist/framework-mcp/src/tools/quality/check_lint.d.ts +0 -5
  481. package/dist/framework-mcp/src/tools/quality/check_lint.js +0 -31
  482. package/dist/framework-mcp/src/tools/quality/check_lint.js.map +0 -1
  483. package/dist/framework-mcp/src/tools/schemas.d.ts +0 -434
  484. package/dist/framework-mcp/src/tools/schemas.js +0 -179
  485. package/dist/framework-mcp/src/tools/schemas.js.map +0 -1
  486. package/dist/framework-mcp/src/tools/search/get_gaps.d.ts +0 -6
  487. package/dist/framework-mcp/src/tools/search/get_gaps.js +0 -49
  488. package/dist/framework-mcp/src/tools/search/get_gaps.js.map +0 -1
  489. package/dist/framework-mcp/src/tools/search/get_map.d.ts +0 -6
  490. package/dist/framework-mcp/src/tools/search/get_map.js +0 -44
  491. package/dist/framework-mcp/src/tools/search/get_map.js.map +0 -1
  492. package/dist/framework-mcp/src/tools/search/grep_search.d.ts +0 -5
  493. package/dist/framework-mcp/src/tools/search/grep_search.js +0 -86
  494. package/dist/framework-mcp/src/tools/search/grep_search.js.map +0 -1
  495. package/dist/framework-mcp/src/tools/search/list_dir.d.ts +0 -5
  496. package/dist/framework-mcp/src/tools/search/list_dir.js +0 -32
  497. package/dist/framework-mcp/src/tools/search/list_dir.js.map +0 -1
  498. package/dist/framework-mcp/src/tools/shell/run_command.d.ts +0 -2
  499. package/dist/framework-mcp/src/tools/shell/run_command.js +0 -224
  500. package/dist/framework-mcp/src/tools/shell/run_command.js.map +0 -1
  501. package/dist/framework-mcp/src/tools/types.d.ts +0 -28
  502. package/dist/framework-mcp/src/tools/types.js +0 -3
  503. package/dist/framework-mcp/src/tools/types.js.map +0 -1
  504. package/dist/framework-mcp/src/utils/auth.d.ts +0 -60
  505. package/dist/framework-mcp/src/utils/auth.js +0 -146
  506. package/dist/framework-mcp/src/utils/auth.js.map +0 -1
  507. package/dist/framework-mcp/src/utils/auto-rollback.js.map +0 -1
  508. package/dist/framework-mcp/src/utils/cli.d.ts +0 -16
  509. package/dist/framework-mcp/src/utils/cli.js +0 -60
  510. package/dist/framework-mcp/src/utils/cli.js.map +0 -1
  511. package/dist/framework-mcp/src/utils/compliance.d.ts +0 -21
  512. package/dist/framework-mcp/src/utils/compliance.js +0 -333
  513. package/dist/framework-mcp/src/utils/compliance.js.map +0 -1
  514. package/dist/framework-mcp/src/utils/context-optimizer.d.ts +0 -69
  515. package/dist/framework-mcp/src/utils/context-optimizer.js +0 -157
  516. package/dist/framework-mcp/src/utils/context-optimizer.js.map +0 -1
  517. package/dist/framework-mcp/src/utils/discipline.js.map +0 -1
  518. package/dist/framework-mcp/src/utils/errors.js.map +0 -1
  519. package/dist/framework-mcp/src/utils/finops.js.map +0 -1
  520. package/dist/framework-mcp/src/utils/fs.d.ts +0 -19
  521. package/dist/framework-mcp/src/utils/fs.js +0 -48
  522. package/dist/framework-mcp/src/utils/fs.js.map +0 -1
  523. package/dist/framework-mcp/src/utils/human-in-loop.d.ts +0 -128
  524. package/dist/framework-mcp/src/utils/human-in-loop.js +0 -320
  525. package/dist/framework-mcp/src/utils/human-in-loop.js.map +0 -1
  526. package/dist/framework-mcp/src/utils/license-scanner.js.map +0 -1
  527. package/dist/framework-mcp/src/utils/loop-detector.js.map +0 -1
  528. package/dist/framework-mcp/src/utils/memory.js.map +0 -1
  529. package/dist/framework-mcp/src/utils/metrics.d.ts +0 -30
  530. package/dist/framework-mcp/src/utils/metrics.js +0 -57
  531. package/dist/framework-mcp/src/utils/metrics.js.map +0 -1
  532. package/dist/framework-mcp/src/utils/permissions.d.ts +0 -76
  533. package/dist/framework-mcp/src/utils/permissions.js +0 -208
  534. package/dist/framework-mcp/src/utils/permissions.js.map +0 -1
  535. package/dist/framework-mcp/src/utils/prompt-injection.d.ts +0 -20
  536. package/dist/framework-mcp/src/utils/prompt-injection.js +0 -64
  537. package/dist/framework-mcp/src/utils/prompt-injection.js.map +0 -1
  538. package/dist/framework-mcp/src/utils/quality.js.map +0 -1
  539. package/dist/framework-mcp/src/utils/rules-engine.js.map +0 -1
  540. package/dist/framework-mcp/src/utils/security.d.ts +0 -10
  541. package/dist/framework-mcp/src/utils/security.js +0 -61
  542. package/dist/framework-mcp/src/utils/security.js.map +0 -1
  543. package/dist/framework-mcp/src/utils/silent-router.d.ts +0 -49
  544. package/dist/framework-mcp/src/utils/silent-router.js +0 -155
  545. package/dist/framework-mcp/src/utils/silent-router.js.map +0 -1
  546. package/dist/framework-mcp/src/utils/storage.d.ts +0 -61
  547. package/dist/framework-mcp/src/utils/storage.js +0 -208
  548. package/dist/framework-mcp/src/utils/storage.js.map +0 -1
  549. package/dist/framework-mcp/src/utils/telemetry-streamer.js +0 -397
  550. package/dist/framework-mcp/src/utils/telemetry-streamer.js.map +0 -1
  551. package/dist/framework-mcp/src/utils/types.js.map +0 -1
  552. package/dist/framework-mcp/src/utils/zod-to-mcp.d.ts +0 -10
  553. package/dist/framework-mcp/src/utils/zod-to-mcp.js +0 -80
  554. package/dist/framework-mcp/src/utils/zod-to-mcp.js.map +0 -1
  555. package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.d.ts +0 -1
  556. package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.js +0 -84
  557. package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.js.map +0 -1
  558. package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.d.ts +0 -1
  559. package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js +0 -192
  560. package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js.map +0 -1
  561. package/dist/framework-mcp/tests/tools/file_system/permissions.test.d.ts +0 -1
  562. package/dist/framework-mcp/tests/tools/file_system/permissions.test.js +0 -195
  563. package/dist/framework-mcp/tests/tools/file_system/permissions.test.js.map +0 -1
  564. package/dist/framework-mcp/tests/tools/framework/run_tests.test.d.ts +0 -1
  565. package/dist/framework-mcp/tests/tools/framework/run_tests.test.js +0 -49
  566. package/dist/framework-mcp/tests/tools/framework/run_tests.test.js.map +0 -1
  567. package/dist/framework-mcp/tests/tools/messaging/send_message.test.d.ts +0 -1
  568. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +0 -131
  569. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +0 -1
  570. package/dist/framework-mcp/tests/tools/observability/check_ports.test.d.ts +0 -1
  571. package/dist/framework-mcp/tests/tools/observability/check_ports.test.js +0 -44
  572. package/dist/framework-mcp/tests/tools/observability/check_ports.test.js.map +0 -1
  573. package/dist/framework-mcp/tests/tools/quality/check_lint.test.d.ts +0 -1
  574. package/dist/framework-mcp/tests/tools/quality/check_lint.test.js +0 -36
  575. package/dist/framework-mcp/tests/tools/quality/check_lint.test.js.map +0 -1
  576. package/dist/framework-mcp/tests/tools/shell/run_command.test.d.ts +0 -1
  577. package/dist/framework-mcp/tests/tools/shell/run_command.test.js +0 -73
  578. package/dist/framework-mcp/tests/tools/shell/run_command.test.js.map +0 -1
  579. package/dist/framework-mcp/tests/utils/auto-rollback.test.d.ts +0 -7
  580. package/dist/framework-mcp/tests/utils/auto-rollback.test.js +0 -178
  581. package/dist/framework-mcp/tests/utils/auto-rollback.test.js.map +0 -1
  582. package/dist/framework-mcp/tests/utils/context-optimizer.test.d.ts +0 -1
  583. package/dist/framework-mcp/tests/utils/context-optimizer.test.js +0 -62
  584. package/dist/framework-mcp/tests/utils/context-optimizer.test.js.map +0 -1
  585. package/dist/framework-mcp/tests/utils/finops.test.d.ts +0 -7
  586. package/dist/framework-mcp/tests/utils/finops.test.js +0 -157
  587. package/dist/framework-mcp/tests/utils/finops.test.js.map +0 -1
  588. package/dist/framework-mcp/tests/utils/human-in-loop.test.d.ts +0 -1
  589. package/dist/framework-mcp/tests/utils/human-in-loop.test.js +0 -207
  590. package/dist/framework-mcp/tests/utils/human-in-loop.test.js.map +0 -1
  591. package/dist/framework-mcp/tests/utils/license-scanner.test.d.ts +0 -7
  592. package/dist/framework-mcp/tests/utils/license-scanner.test.js +0 -131
  593. package/dist/framework-mcp/tests/utils/license-scanner.test.js.map +0 -1
  594. package/dist/framework-mcp/tests/utils/loop-detector.test.d.ts +0 -7
  595. package/dist/framework-mcp/tests/utils/loop-detector.test.js +0 -202
  596. package/dist/framework-mcp/tests/utils/loop-detector.test.js.map +0 -1
  597. package/dist/framework-mcp/tests/utils/prompt-injection.test.d.ts +0 -1
  598. package/dist/framework-mcp/tests/utils/prompt-injection.test.js +0 -43
  599. package/dist/framework-mcp/tests/utils/prompt-injection.test.js.map +0 -1
  600. package/dist/framework-mcp/tests/utils/rules-engine.test.d.ts +0 -1
  601. package/dist/framework-mcp/tests/utils/rules-engine.test.js +0 -106
  602. package/dist/framework-mcp/tests/utils/rules-engine.test.js.map +0 -1
  603. package/dist/framework-mcp/tests/utils/telemetry-streamer.test.d.ts +0 -7
  604. package/dist/framework-mcp/tests/utils/telemetry-streamer.test.js +0 -201
  605. package/dist/framework-mcp/tests/utils/telemetry-streamer.test.js.map +0 -1
  606. package/dist/src/cli/adapters/core.d.ts +0 -12
  607. package/dist/src/cli/adapters/core.js +0 -73
  608. package/dist/src/cli/adapters/core.js.map +0 -1
  609. package/dist/src/cli/adapters/index.d.ts +0 -5
  610. package/dist/src/cli/adapters/index.js +0 -6
  611. package/dist/src/cli/adapters/index.js.map +0 -1
  612. package/dist/src/cli/adapters/paths.d.ts +0 -15
  613. package/dist/src/cli/adapters/paths.js +0 -102
  614. package/dist/src/cli/adapters/paths.js.map +0 -1
  615. package/dist/src/cli/adapters/scaffold.d.ts +0 -2
  616. package/dist/src/cli/adapters/scaffold.js +0 -73
  617. package/dist/src/cli/adapters/scaffold.js.map +0 -1
  618. package/dist/src/cli/adapters/utils.d.ts +0 -4
  619. package/dist/src/cli/adapters/utils.js.map +0 -1
  620. package/dist/src/cli/commands/gateway.d.ts +0 -1
  621. package/dist/src/cli/commands/gateway.js +0 -172
  622. package/dist/src/cli/commands/gateway.js.map +0 -1
  623. package/dist/src/dashboard/src/hooks/useApi.d.ts +0 -18
  624. package/dist/src/dashboard/src/hooks/useApi.js +0 -47
  625. package/dist/src/dashboard/src/hooks/useApi.js.map +0 -1
  626. package/dist/src/dashboard/src/hooks/useSSE.d.ts +0 -12
  627. package/dist/src/dashboard/src/hooks/useSSE.js +0 -60
  628. package/dist/src/dashboard/src/hooks/useSSE.js.map +0 -1
  629. package/dist/src/dashboard/vite.config.d.ts +0 -2
  630. package/dist/src/dashboard/vite.config.js +0 -16
  631. package/dist/src/dashboard/vite.config.js.map +0 -1
  632. package/dist/src/modules/adapters/definitions.js.map +0 -1
  633. package/dist/src/modules/adapters/registry.js.map +0 -1
  634. package/dist/src/modules/adapters/shared.js +0 -105
  635. package/dist/src/modules/adapters/shared.js.map +0 -1
  636. package/dist/src/modules/adapters/types.js.map +0 -1
  637. package/dist/src/modules/gateway/circuit-breaker.d.ts +0 -40
  638. package/dist/src/modules/gateway/circuit-breaker.js +0 -163
  639. package/dist/src/modules/gateway/circuit-breaker.js.map +0 -1
  640. package/dist/src/modules/gateway/cost-tracker.d.ts +0 -60
  641. package/dist/src/modules/gateway/cost-tracker.js +0 -198
  642. package/dist/src/modules/gateway/cost-tracker.js.map +0 -1
  643. package/dist/src/modules/gateway/gateway.d.ts +0 -72
  644. package/dist/src/modules/gateway/gateway.js +0 -243
  645. package/dist/src/modules/gateway/gateway.js.map +0 -1
  646. package/dist/src/modules/gateway/index.d.ts +0 -19
  647. package/dist/src/modules/gateway/index.js +0 -19
  648. package/dist/src/modules/gateway/index.js.map +0 -1
  649. package/dist/src/modules/gateway/load-balancer.d.ts +0 -86
  650. package/dist/src/modules/gateway/load-balancer.js +0 -230
  651. package/dist/src/modules/gateway/load-balancer.js.map +0 -1
  652. package/dist/src/modules/gateway/providers/anthropic.d.ts +0 -14
  653. package/dist/src/modules/gateway/providers/anthropic.js +0 -169
  654. package/dist/src/modules/gateway/providers/anthropic.js.map +0 -1
  655. package/dist/src/modules/gateway/providers/base.d.ts +0 -38
  656. package/dist/src/modules/gateway/providers/base.js +0 -42
  657. package/dist/src/modules/gateway/providers/base.js.map +0 -1
  658. package/dist/src/modules/gateway/providers/google.d.ts +0 -18
  659. package/dist/src/modules/gateway/providers/google.js +0 -176
  660. package/dist/src/modules/gateway/providers/google.js.map +0 -1
  661. package/dist/src/modules/gateway/providers/grok.d.ts +0 -14
  662. package/dist/src/modules/gateway/providers/grok.js +0 -166
  663. package/dist/src/modules/gateway/providers/grok.js.map +0 -1
  664. package/dist/src/modules/gateway/providers/index.d.ts +0 -21
  665. package/dist/src/modules/gateway/providers/index.js +0 -38
  666. package/dist/src/modules/gateway/providers/index.js.map +0 -1
  667. package/dist/src/modules/gateway/providers/ollama.d.ts +0 -23
  668. package/dist/src/modules/gateway/providers/ollama.js +0 -187
  669. package/dist/src/modules/gateway/providers/ollama.js.map +0 -1
  670. package/dist/src/modules/gateway/providers/openai.d.ts +0 -14
  671. package/dist/src/modules/gateway/providers/openai.js +0 -170
  672. package/dist/src/modules/gateway/providers/openai.js.map +0 -1
  673. package/dist/src/modules/gateway/rate-limiter.d.ts +0 -41
  674. package/dist/src/modules/gateway/rate-limiter.js +0 -119
  675. package/dist/src/modules/gateway/rate-limiter.js.map +0 -1
  676. package/dist/src/modules/gateway/types.d.ts +0 -114
  677. package/dist/src/modules/gateway/types.js +0 -8
  678. package/dist/src/modules/gateway/types.js.map +0 -1
  679. package/dist/tests/dashboard.test.d.ts +0 -1
  680. package/dist/tests/dashboard.test.js +0 -116
  681. package/dist/tests/dashboard.test.js.map +0 -1
  682. package/dist/tests/modules/gateway/circuit-breaker.test.d.ts +0 -1
  683. package/dist/tests/modules/gateway/circuit-breaker.test.js +0 -124
  684. package/dist/tests/modules/gateway/circuit-breaker.test.js.map +0 -1
  685. package/dist/tests/modules/gateway/cost-tracker.test.d.ts +0 -1
  686. package/dist/tests/modules/gateway/cost-tracker.test.js +0 -93
  687. package/dist/tests/modules/gateway/cost-tracker.test.js.map +0 -1
  688. package/dist/tests/modules/gateway/load-balancer.test.d.ts +0 -1
  689. package/dist/tests/modules/gateway/load-balancer.test.js +0 -70
  690. package/dist/tests/modules/gateway/load-balancer.test.js.map +0 -1
  691. package/dist/tests/modules/gateway/rate-limiter.test.d.ts +0 -1
  692. package/dist/tests/modules/gateway/rate-limiter.test.js +0 -62
  693. package/dist/tests/modules/gateway/rate-limiter.test.js.map +0 -1
  694. package/dist/tests/planning-engine.test.d.ts +0 -1
  695. package/dist/tests/planning-engine.test.js +0 -51
  696. package/dist/tests/planning-engine.test.js.map +0 -1
  697. package/dist/tests/risk-engine.test.d.ts +0 -1
  698. package/dist/tests/risk-engine.test.js +0 -44
  699. package/dist/tests/risk-engine.test.js.map +0 -1
  700. package/dist/ui/assets/index-B-d2ejS8.js +0 -519
  701. package/dist/ui/assets/index-CyXywq5G.css +0 -1
  702. package/dist/ui/index.html +0 -14
  703. package/dist/vitest.config.d.ts +0 -2
  704. package/dist/vitest.config.js +0 -22
  705. package/dist/vitest.config.js.map +0 -1
  706. package/framework-mcp/README.md +0 -620
  707. package/framework-mcp/dist/constants.js +0 -64
  708. package/framework-mcp/dist/dashboard/assets/index-B-Eu7_J9.js +0 -1260
  709. package/framework-mcp/dist/dashboard/index.html +0 -15
  710. package/framework-mcp/dist/framework-mcp/src/constants.js +0 -64
  711. package/framework-mcp/dist/framework-mcp/src/index.js +0 -1140
  712. package/framework-mcp/dist/framework-mcp/src/resources/index.js +0 -58
  713. package/framework-mcp/dist/framework-mcp/src/tools/compliance/mask_pii.js +0 -55
  714. package/framework-mcp/dist/framework-mcp/src/tools/control_plane/locking.js +0 -84
  715. package/framework-mcp/dist/framework-mcp/src/tools/control_plane/registry.js +0 -83
  716. package/framework-mcp/dist/framework-mcp/src/tools/definitions.js +0 -198
  717. package/framework-mcp/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +0 -64
  718. package/framework-mcp/dist/framework-mcp/src/tools/file_system/patch_file.js +0 -34
  719. package/framework-mcp/dist/framework-mcp/src/tools/file_system/read_file.js +0 -56
  720. package/framework-mcp/dist/framework-mcp/src/tools/file_system/replace_text.js +0 -50
  721. package/framework-mcp/dist/framework-mcp/src/tools/file_system/write_file.js +0 -55
  722. package/framework-mcp/dist/framework-mcp/src/tools/framework/audit_deps.js +0 -41
  723. package/framework-mcp/dist/framework-mcp/src/tools/framework/get_status.js +0 -5
  724. package/framework-mcp/dist/framework-mcp/src/tools/framework/orchestrate.js +0 -5
  725. package/framework-mcp/dist/framework-mcp/src/tools/framework/run_tests.js +0 -52
  726. package/framework-mcp/dist/framework-mcp/src/tools/framework/submit_plan.js +0 -13
  727. package/framework-mcp/dist/framework-mcp/src/tools/framework/update_contract_hash.js +0 -5
  728. package/framework-mcp/dist/framework-mcp/src/tools/framework/update_memory.js +0 -8
  729. package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +0 -137
  730. package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +0 -90
  731. package/framework-mcp/dist/framework-mcp/src/tools/index.js +0 -125
  732. package/framework-mcp/dist/framework-mcp/src/tools/memory/delete_knowledge.js +0 -28
  733. package/framework-mcp/dist/framework-mcp/src/tools/memory/get_insights.js +0 -22
  734. package/framework-mcp/dist/framework-mcp/src/tools/memory/read_memory.js +0 -28
  735. package/framework-mcp/dist/framework-mcp/src/tools/memory/search_knowledge.js +0 -48
  736. package/framework-mcp/dist/framework-mcp/src/tools/memory/store_knowledge.js +0 -30
  737. package/framework-mcp/dist/framework-mcp/src/tools/messaging/approve_operation.js +0 -80
  738. package/framework-mcp/dist/framework-mcp/src/tools/messaging/ask_human.js +0 -99
  739. package/framework-mcp/dist/framework-mcp/src/tools/messaging/log_action.js +0 -22
  740. package/framework-mcp/dist/framework-mcp/src/tools/messaging/send_message.js +0 -110
  741. package/framework-mcp/dist/framework-mcp/src/tools/observability/check_ports.js +0 -42
  742. package/framework-mcp/dist/framework-mcp/src/tools/observability/get_health.js +0 -19
  743. package/framework-mcp/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +0 -114
  744. package/framework-mcp/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +0 -134
  745. package/framework-mcp/dist/framework-mcp/src/tools/quality/check_lint.js +0 -30
  746. package/framework-mcp/dist/framework-mcp/src/tools/schemas.js +0 -178
  747. package/framework-mcp/dist/framework-mcp/src/tools/search/get_gaps.js +0 -48
  748. package/framework-mcp/dist/framework-mcp/src/tools/search/get_map.js +0 -43
  749. package/framework-mcp/dist/framework-mcp/src/tools/search/grep_search.js +0 -85
  750. package/framework-mcp/dist/framework-mcp/src/tools/search/list_dir.js +0 -31
  751. package/framework-mcp/dist/framework-mcp/src/tools/shell/run_command.js +0 -223
  752. package/framework-mcp/dist/framework-mcp/src/tools/types.js +0 -2
  753. package/framework-mcp/dist/framework-mcp/src/utils/auth.js +0 -145
  754. package/framework-mcp/dist/framework-mcp/src/utils/auto-rollback.js +0 -265
  755. package/framework-mcp/dist/framework-mcp/src/utils/cli.js +0 -59
  756. package/framework-mcp/dist/framework-mcp/src/utils/compliance.js +0 -332
  757. package/framework-mcp/dist/framework-mcp/src/utils/context-optimizer.js +0 -156
  758. package/framework-mcp/dist/framework-mcp/src/utils/discipline.js +0 -256
  759. package/framework-mcp/dist/framework-mcp/src/utils/errors.js +0 -68
  760. package/framework-mcp/dist/framework-mcp/src/utils/finops.js +0 -325
  761. package/framework-mcp/dist/framework-mcp/src/utils/fs.js +0 -47
  762. package/framework-mcp/dist/framework-mcp/src/utils/human-in-loop.js +0 -319
  763. package/framework-mcp/dist/framework-mcp/src/utils/license-scanner.js +0 -283
  764. package/framework-mcp/dist/framework-mcp/src/utils/loop-detector.js +0 -361
  765. package/framework-mcp/dist/framework-mcp/src/utils/memory.js +0 -74
  766. package/framework-mcp/dist/framework-mcp/src/utils/metrics.js +0 -56
  767. package/framework-mcp/dist/framework-mcp/src/utils/permissions.js +0 -207
  768. package/framework-mcp/dist/framework-mcp/src/utils/prompt-injection.js +0 -63
  769. package/framework-mcp/dist/framework-mcp/src/utils/quality.js +0 -124
  770. package/framework-mcp/dist/framework-mcp/src/utils/rules-engine.js +0 -231
  771. package/framework-mcp/dist/framework-mcp/src/utils/security.js +0 -60
  772. package/framework-mcp/dist/framework-mcp/src/utils/silent-router.js +0 -154
  773. package/framework-mcp/dist/framework-mcp/src/utils/storage.js +0 -207
  774. package/framework-mcp/dist/framework-mcp/src/utils/telemetry-streamer.js +0 -396
  775. package/framework-mcp/dist/framework-mcp/src/utils/types.js +0 -16
  776. package/framework-mcp/dist/framework-mcp/src/utils/zod-to-mcp.js +0 -79
  777. package/framework-mcp/dist/index.js +0 -156
  778. package/framework-mcp/dist/resources/index.js +0 -58
  779. package/framework-mcp/dist/src/cli/platforms/core.js +0 -72
  780. package/framework-mcp/dist/src/cli/platforms/index.js +0 -5
  781. package/framework-mcp/dist/src/cli/platforms/paths.js +0 -101
  782. package/framework-mcp/dist/src/cli/platforms/scaffold.js +0 -72
  783. package/framework-mcp/dist/src/cli/platforms/utils.js +0 -75
  784. package/framework-mcp/dist/src/cli/utils/claude.js +0 -57
  785. package/framework-mcp/dist/src/cli/utils/compliance.js +0 -12
  786. package/framework-mcp/dist/src/cli/utils/fs.js +0 -138
  787. package/framework-mcp/dist/src/cli/utils/memory.js +0 -280
  788. package/framework-mcp/dist/src/cli/utils/pkg.js +0 -282
  789. package/framework-mcp/dist/src/cli/utils/quality.js +0 -9
  790. package/framework-mcp/dist/src/cli/utils/time.js +0 -27
  791. package/framework-mcp/dist/src/cli/utils/ui.js +0 -100
  792. package/framework-mcp/dist/src/modules/agents/definitions.js +0 -563
  793. package/framework-mcp/dist/src/modules/agents/registry/analyst.js +0 -39
  794. package/framework-mcp/dist/src/modules/agents/registry/architect.js +0 -42
  795. package/framework-mcp/dist/src/modules/agents/registry/backend.js +0 -50
  796. package/framework-mcp/dist/src/modules/agents/registry/database.js +0 -45
  797. package/framework-mcp/dist/src/modules/agents/registry/devops.js +0 -45
  798. package/framework-mcp/dist/src/modules/agents/registry/explorer.js +0 -37
  799. package/framework-mcp/dist/src/modules/agents/registry/frontend.js +0 -52
  800. package/framework-mcp/dist/src/modules/agents/registry/git.js +0 -36
  801. package/framework-mcp/dist/src/modules/agents/registry/manager.js +0 -64
  802. package/framework-mcp/dist/src/modules/agents/registry/mobile.js +0 -41
  803. package/framework-mcp/dist/src/modules/agents/registry/native.js +0 -41
  804. package/framework-mcp/dist/src/modules/agents/registry/quality.js +0 -43
  805. package/framework-mcp/dist/src/modules/agents/registry/security.js +0 -42
  806. package/framework-mcp/dist/src/modules/agents/types.js +0 -1
  807. package/framework-mcp/dist/src/modules/engines/evaluation-engine.js +0 -170
  808. package/framework-mcp/dist/src/modules/engines/quality-gate.js +0 -94
  809. package/framework-mcp/dist/src/modules/engines/risk-engine.js +0 -200
  810. package/framework-mcp/dist/src/modules/engines/routing-engine.js +0 -504
  811. package/framework-mcp/dist/src/modules/engines/types.js +0 -1
  812. package/framework-mcp/dist/src/modules/memory/core.js +0 -99
  813. package/framework-mcp/dist/src/modules/memory/embedding.js +0 -130
  814. package/framework-mcp/dist/src/modules/memory/types.js +0 -1
  815. package/framework-mcp/dist/src/modules/memory/vector-store.js +0 -74
  816. package/framework-mcp/dist/src/modules/providers/definitions.js +0 -140
  817. package/framework-mcp/dist/src/modules/providers/registry.js +0 -18
  818. package/framework-mcp/dist/src/modules/providers/shared.js +0 -103
  819. package/framework-mcp/dist/src/modules/providers/types.js +0 -1
  820. package/framework-mcp/dist/src/modules/skills/adapter-skills.js +0 -449
  821. package/framework-mcp/dist/src/modules/skills/definitions.js +0 -70
  822. package/framework-mcp/dist/src/shared/audit.js +0 -220
  823. package/framework-mcp/dist/src/shared/constants.js +0 -187
  824. package/framework-mcp/dist/src/shared/errors.js +0 -68
  825. package/framework-mcp/dist/src/shared/fs.js +0 -53
  826. package/framework-mcp/dist/src/shared/lock.js +0 -159
  827. package/framework-mcp/dist/src/shared/logger.js +0 -126
  828. package/framework-mcp/dist/src/shared/pii.js +0 -212
  829. package/framework-mcp/dist/src/shared/retention.js +0 -170
  830. package/framework-mcp/dist/src/shared/storage.js +0 -325
  831. package/framework-mcp/dist/src/shared/string.js +0 -29
  832. package/framework-mcp/dist/src/shared/types.js +0 -16
  833. package/framework-mcp/dist/tools/control_plane/locking.js +0 -82
  834. package/framework-mcp/dist/tools/control_plane/registry.js +0 -35
  835. package/framework-mcp/dist/tools/definitions.js +0 -154
  836. package/framework-mcp/dist/tools/file_system/batch_surgical_edit.js +0 -64
  837. package/framework-mcp/dist/tools/file_system/patch_file.js +0 -34
  838. package/framework-mcp/dist/tools/file_system/read_file.js +0 -51
  839. package/framework-mcp/dist/tools/file_system/replace_text.js +0 -50
  840. package/framework-mcp/dist/tools/file_system/write_file.js +0 -55
  841. package/framework-mcp/dist/tools/framework/audit_deps.js +0 -41
  842. package/framework-mcp/dist/tools/framework/get_status.js +0 -5
  843. package/framework-mcp/dist/tools/framework/orchestrate.js +0 -5
  844. package/framework-mcp/dist/tools/framework/run_tests.js +0 -27
  845. package/framework-mcp/dist/tools/framework/submit_plan.js +0 -13
  846. package/framework-mcp/dist/tools/framework/update_contract_hash.js +0 -5
  847. package/framework-mcp/dist/tools/framework/update_memory.js +0 -8
  848. package/framework-mcp/dist/tools/index.js +0 -99
  849. package/framework-mcp/dist/tools/memory/get_insights.js +0 -22
  850. package/framework-mcp/dist/tools/memory/read_memory.js +0 -28
  851. package/framework-mcp/dist/tools/messaging/log_action.js +0 -22
  852. package/framework-mcp/dist/tools/messaging/send_message.js +0 -94
  853. package/framework-mcp/dist/tools/observability/check_ports.js +0 -26
  854. package/framework-mcp/dist/tools/observability/get_health.js +0 -19
  855. package/framework-mcp/dist/tools/quality/check_lint.js +0 -30
  856. package/framework-mcp/dist/tools/schemas.js +0 -133
  857. package/framework-mcp/dist/tools/search/get_gaps.js +0 -48
  858. package/framework-mcp/dist/tools/search/get_map.js +0 -43
  859. package/framework-mcp/dist/tools/search/grep_search.js +0 -75
  860. package/framework-mcp/dist/tools/search/list_dir.js +0 -28
  861. package/framework-mcp/dist/tools/shell/run_command.js +0 -56
  862. package/framework-mcp/dist/tools/types.js +0 -1
  863. package/framework-mcp/dist/utils/cli.js +0 -59
  864. package/framework-mcp/dist/utils/compliance.js +0 -231
  865. package/framework-mcp/dist/utils/errors.js +0 -68
  866. package/framework-mcp/dist/utils/fs.js +0 -44
  867. package/framework-mcp/dist/utils/memory.js +0 -74
  868. package/framework-mcp/dist/utils/metrics.js +0 -56
  869. package/framework-mcp/dist/utils/permissions.js +0 -71
  870. package/framework-mcp/dist/utils/security.js +0 -60
  871. package/framework-mcp/dist/utils/storage.js +0 -207
  872. package/framework-mcp/dist/utils/types.js +0 -16
  873. package/framework-mcp/dist/utils/zod-to-mcp.js +0 -77
  874. package/framework-mcp/package.json +0 -46
  875. package/mcp.json +0 -20
  876. /package/dist/{framework-mcp/src → atabey/src/cli}/index.d.ts +0 -0
  877. /package/dist/{src/cli/adapters → atabey/src/cli/platforms}/utils.js +0 -0
  878. /package/dist/{src/modules/adapters → atabey/src/modules/providers}/definitions.d.ts +0 -0
  879. /package/dist/{src/modules/adapters → atabey/src/modules/providers}/definitions.js +0 -0
  880. /package/dist/{src/modules/adapters → atabey/src/modules/providers}/registry.d.ts +0 -0
  881. /package/dist/{src/modules/adapters → atabey/src/modules/providers}/registry.js +0 -0
  882. /package/dist/{src/modules/adapters → atabey/src/modules/providers}/shared.d.ts +0 -0
  883. /package/dist/{src/modules/adapters → atabey/src/modules/providers}/types.d.ts +0 -0
  884. /package/dist/{src/modules/adapters → atabey/src/modules/providers}/types.js +0 -0
  885. /package/dist/{framework-mcp/src/utils → atabey/src/shared}/errors.d.ts +0 -0
  886. /package/dist/{framework-mcp/src/utils → atabey/src/shared}/errors.js +0 -0
  887. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/auto-rollback.d.ts +0 -0
  888. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/auto-rollback.js +0 -0
  889. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/discipline.d.ts +0 -0
  890. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/discipline.js +0 -0
  891. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/finops.d.ts +0 -0
  892. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/finops.js +0 -0
  893. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/license-scanner.d.ts +0 -0
  894. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/license-scanner.js +0 -0
  895. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/loop-detector.d.ts +0 -0
  896. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/loop-detector.js +0 -0
  897. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/memory.d.ts +0 -0
  898. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/memory.js +0 -0
  899. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/quality.d.ts +0 -0
  900. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/quality.js +0 -0
  901. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/rules-engine.d.ts +0 -0
  902. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/rules-engine.js +0 -0
  903. /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/telemetry-streamer.d.ts +0 -0
  904. /package/dist/{framework-mcp/src/utils → atabey-mcp/src/shared}/types.d.ts +0 -0
  905. /package/dist/{framework-mcp/src/utils → atabey-mcp/src/shared}/types.js +0 -0
@@ -1,1140 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
- import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
4
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
- import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
6
- import fs from "fs";
7
- import http from "http";
8
- import path from "path";
9
- import { fileURLToPath } from "url";
10
- import { WebSocket, WebSocketServer } from "ws";
11
- import { generateULID } from "../../src/cli/utils/time.js";
12
- import { Audit } from "../../src/shared/audit.js";
13
- import { maskText, maskToolArgs, maskToolResult } from "../../src/shared/pii.js";
14
- import { Storage } from "../../src/shared/storage.js";
15
- import { RESOURCES, handleReadResource } from "./resources/index.js";
16
- import { TOOLS, toolHandlers, toolSchemas } from "./tools/index.js";
17
- // ─── Paths ────────────────────────────────────────────────────────
18
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
19
- // ─── Friendly Startup Validation ──────────────────────────────────
20
- function validateEnvironment() {
21
- // Node.js version check
22
- const nodeMajor = parseInt(process.versions.node.split(".")[0], 10);
23
- if (nodeMajor < 18) {
24
- process.stderr.write(`
25
- ╔══════════════════════════════════════════════════════════╗
26
- ║ ⚠️ Unsupported Node.js version ║
27
- ╠══════════════════════════════════════════════════════════╣
28
- ║ Atabey MCP requires Node.js >= 18.0.0 ║
29
- ║ ║
30
- ║ Current version: ${process.versions.node} ║
31
- ║ ║
32
- ║ 📋 To fix this: ║
33
- ║ nvm install 18 && nvm use 18 (if using nvm) ║
34
- ║ brew install node (if using Homebrew) ║
35
- ║ https://nodejs.org (official installer) ║
36
- ╚══════════════════════════════════════════════════════════╝
37
- `);
38
- process.exit(1);
39
- }
40
- }
41
- function findPackageJson(startDir) {
42
- let currentDir = startDir;
43
- while (currentDir !== path.parse(currentDir).root) {
44
- const pkgPath = path.join(currentDir, "package.json");
45
- if (fs.existsSync(pkgPath))
46
- return pkgPath;
47
- currentDir = path.dirname(currentDir);
48
- }
49
- process.stderr.write(`
50
- ╔══════════════════════════════════════════════════════════╗
51
- ║ 🚧 Package not found ║
52
- ╠══════════════════════════════════════════════════════════╣
53
- ║ Atabey MCP package.json could not be located. ║
54
- ║ ║
55
- ║ This usually means: ║
56
- ║ 1. The package was not installed correctly ║
57
- ║ 2. Node modules are missing ║
58
- ║ ║
59
- ║ 📋 To fix this: ║
60
- ║ npm install -g atabey (global install) ║
61
- ║ npm install (local install) ║
62
- ║ npm run build (if developing) ║
63
- ╚══════════════════════════════════════════════════════════╝
64
- `);
65
- process.exit(1);
66
- }
67
- validateEnvironment();
68
- const pkgPath = findPackageJson(__dirname);
69
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
70
- const serverVersion = pkg.version;
71
- // Validate environment variables with friendly messages
72
- const PROJECT_ROOT = process.env.ATABEY_PROJECT_ROOT || process.cwd();
73
- if (!process.env.ATABEY_PROJECT_ROOT) {
74
- const transportMode = process.env.MCP_TRANSPORT || "unified";
75
- if (transportMode !== "stdio") {
76
- process.stderr.write(`
77
- ╔══════════════════════════════════════════════════════════╗
78
- ║ 💡 Tip: Set ATABEY_PROJECT_ROOT ║
79
- ╠══════════════════════════════════════════════════════════╣
80
- ║ In HTTP/SSE mode, it's recommended to explicitly set ║
81
- ║ the project root to avoid confusion. ║
82
- ║ ║
83
- ║ Example: ║
84
- ║ export ATABEY_PROJECT_ROOT=/path/to/your/project ║
85
- ║ ║
86
- ║ Using current directory: ${process.cwd()} ║
87
- ╚══════════════════════════════════════════════════════════╝
88
- `);
89
- }
90
- }
91
- const FRAMEWORK_DIR = process.env.ATABEY_FRAMEWORK_DIR || path.join(PROJECT_ROOT, ".atabey");
92
- const UI_DIST_PATH = path.join(__dirname, "../../dashboard/dist");
93
- // ─── Ports ────────────────────────────────────────────────────────
94
- const PORT = parseInt(process.env.MCP_PORT || "5858", 10);
95
- if (isNaN(PORT) || PORT < 1 || PORT > 65535) {
96
- process.stderr.write(`
97
- ╔══════════════════════════════════════════════════════════╗
98
- ║ ❌ Invalid MCP_PORT ║
99
- ╠══════════════════════════════════════════════════════════╣
100
- ║ The port must be a number between 1 and 65535. ║
101
- ║ ║
102
- ║ You set: MCP_PORT=${process.env.MCP_PORT || "(empty)"} ║
103
- ║ ║
104
- ║ 📋 To fix this: ║
105
- ║ export MCP_PORT=5858 (default) ║
106
- ║ export MCP_PORT=8080 (alternative) ║
107
- ╚══════════════════════════════════════════════════════════╝
108
- `);
109
- process.exit(1);
110
- }
111
- const HOST = process.env.MCP_HOST || "0.0.0.0";
112
- // ─── MCP Server ───────────────────────────────────────────────────
113
- const server = new Server({ name: "atabey-mcp", version: serverVersion }, { capabilities: { tools: {}, resources: {} } });
114
- // Track multiple SSE sessions with user identity
115
- const sessions = new Map();
116
- // ─── WebSocket Clients ────────────────────────────────────────────
117
- const wsClients = new Set();
118
- function broadcastWS(type, payload) {
119
- const msg = JSON.stringify({ type, payload });
120
- wsClients.forEach((ws) => {
121
- if (ws.readyState === WebSocket.OPEN) {
122
- try {
123
- ws.send(msg);
124
- }
125
- catch {
126
- wsClients.delete(ws);
127
- }
128
- }
129
- else {
130
- wsClients.delete(ws);
131
- }
132
- });
133
- }
134
- // ─── Validation ───────────────────────────────────────────────────
135
- function validateArgs(toolName, args) {
136
- const schema = toolSchemas[toolName];
137
- if (schema) {
138
- const result = schema.safeParse(args);
139
- if (!result.success) {
140
- return result.error.errors.map(e => `${e.path.join(".")}: ${e.message}`).join(", ");
141
- }
142
- return null;
143
- }
144
- const definition = TOOLS.find(t => t.name === toolName);
145
- if (!definition)
146
- return `Unknown tool: ${toolName}`;
147
- const required = definition.inputSchema.required || [];
148
- for (const field of required) {
149
- if (args[field] === undefined || args[field] === null || args[field] === "") {
150
- return `Missing required argument: '${field}' for tool '${toolName}'`;
151
- }
152
- }
153
- return null;
154
- }
155
- // ─── MCP Handlers ─────────────────────────────────────────────────
156
- server.setRequestHandler(ListToolsRequestSchema, async (request) => {
157
- const meta = request._meta;
158
- if (meta) {
159
- process.stderr.write(`[MCP] ListTools from ${meta.client?.name || "unknown"} v${meta.client?.version || "?.?"}\n`);
160
- }
161
- return { tools: TOOLS };
162
- });
163
- server.setRequestHandler(ListResourcesRequestSchema, async () => {
164
- return { resources: RESOURCES };
165
- });
166
- server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
167
- const uri = request.params.uri;
168
- try {
169
- const content = await handleReadResource(uri);
170
- return { contents: [{ uri, mimeType: "text/markdown", text: content }] };
171
- }
172
- catch (error) {
173
- const message = error instanceof Error ? error.message : String(error);
174
- throw new Error(`Failed to read resource: ${message}`, { cause: error });
175
- }
176
- });
177
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
178
- const req = request;
179
- const { name, arguments: args } = req.params;
180
- const meta = request._meta;
181
- if (meta) {
182
- process.stderr.write(`[MCP] CallTool: ${name} (Client: ${meta.client?.name || "unknown"})\n`);
183
- }
184
- try {
185
- const handler = toolHandlers[name];
186
- if (!handler) {
187
- return { isError: true, content: [{ type: "text", text: `[ERROR] Unknown tool: ${name}` }] };
188
- }
189
- const validationError = validateArgs(name, args || {});
190
- if (validationError) {
191
- return { isError: true, content: [{ type: "text", text: `[ERROR] Validation Error: ${validationError}` }] };
192
- }
193
- // [PII/GDPR/KVKK] Mask args before handler
194
- const maskedArgs = maskToolArgs(args || {});
195
- // [TOKEN ECONOMY] Log token usage
196
- const argsJson = JSON.stringify(maskedArgs);
197
- const estimatedTokens = Math.ceil(argsJson.length / 4);
198
- const clientAgent = meta?.client?.name || "mcp-client";
199
- try {
200
- const { Metrics } = await import("./utils/metrics.js");
201
- Metrics.logUsage(PROJECT_ROOT, clientAgent, name, estimatedTokens);
202
- }
203
- catch { /* metrics should not block */ }
204
- // [GOVERNANCE] Validate arguments against governance rules (pre-execution)
205
- try {
206
- const { validateArgsAgainstRules } = await import("./utils/rules-engine.js");
207
- const governanceError = validateArgsAgainstRules(name, maskedArgs);
208
- if (governanceError) {
209
- process.stderr.write(`[GOVERNANCE] Blocked: ${governanceError}\n`);
210
- broadcastWS("governance_violation", { agent: clientAgent, tool: name, error: governanceError, timestamp: new Date().toISOString() });
211
- return { isError: true, content: [{ type: "text", text: governanceError }] };
212
- }
213
- }
214
- catch { /* governance should not block */ }
215
- // [DISCIPLINE] Enforce AI discipline at tool level BEFORE execution
216
- try {
217
- const { enforceDiscipline } = await import("./utils/discipline.js");
218
- const disciplineError = await enforceDiscipline(clientAgent, name, maskedArgs);
219
- if (disciplineError) {
220
- process.stderr.write(`[DISCIPLINE] Blocked: ${disciplineError}\n`);
221
- broadcastWS("discipline_violation", { agent: clientAgent, tool: name, error: disciplineError, timestamp: new Date().toISOString() });
222
- return { isError: true, content: [{ type: "text", text: `[DISCIPLINE] ${disciplineError}` }] };
223
- }
224
- }
225
- catch { /* discipline should not block execution if module fails */ }
226
- // [SILENT ROUTER] Detect agent from context and inject rules
227
- const traceId = generateULID();
228
- let detectedAgent = clientAgent;
229
- try {
230
- const { detectAgent, stealthNotify } = await import("./utils/silent-router.js");
231
- detectedAgent = detectAgent(name, maskedArgs);
232
- if (detectedAgent !== clientAgent) {
233
- stealthNotify(detectedAgent, name, `Silently routed from ${clientAgent}`);
234
- process.stderr.write(`[SILENT ROUTER] ${name} → ${detectedAgent} (from ${clientAgent})\n`);
235
- }
236
- }
237
- catch { /* silent router should not block */ }
238
- // [LOOP DETECTION] Check for infinite loop patterns
239
- try {
240
- const { recordAndCheck } = await import("./utils/loop-detector.js");
241
- const loopAlert = recordAndCheck(detectedAgent, name, maskedArgs);
242
- if (loopAlert) {
243
- process.stderr.write(`[LOOP DETECT] ${loopAlert.type}: ${loopAlert.detail}\n`);
244
- broadcastWS("loop_detected", { agent: detectedAgent, tool: name, alert: loopAlert, timestamp: new Date().toISOString() });
245
- if (loopAlert.severity === "critical" && loopAlert.cooldownUntil) {
246
- const remaining = Math.ceil((loopAlert.cooldownUntil - Date.now()) / 1000);
247
- return {
248
- isError: true,
249
- content: [{ type: "text", text: `[LOOP DETECTED] ${loopAlert.detail} Cooldown: ${remaining}s. Please change your approach.` }]
250
- };
251
- }
252
- }
253
- }
254
- catch { /* loop detection should not block */ }
255
- // [FINOPS] Check budget BEFORE execution (record usage)
256
- try {
257
- const { budgetManager } = await import("./utils/finops.js");
258
- const budgetError = budgetManager.recordUsage(detectedAgent, estimatedTokens);
259
- if (budgetError) {
260
- process.stderr.write(`[FINOPS] Budget blocked: ${budgetError}\n`);
261
- broadcastWS("budget_blocked", { agent: detectedAgent, tool: name, error: budgetError, timestamp: new Date().toISOString() });
262
- return { isError: true, content: [{ type: "text", text: budgetError }] };
263
- }
264
- }
265
- catch { /* finops should not block */ }
266
- // [LICENSE] Validate write content for license compliance (pre-execution)
267
- if (name === "write_file" || name === "replace_text" || name === "patch_file") {
268
- try {
269
- const { validateLicenseCompliance } = await import("./utils/license-scanner.js");
270
- const filePath = maskedArgs.path || "";
271
- const content = maskedArgs.content || "";
272
- if (filePath && content) {
273
- const licenseError = validateLicenseCompliance(filePath, content);
274
- if (licenseError) {
275
- process.stderr.write(`[LICENSE] Blocked: ${licenseError}\n`);
276
- broadcastWS("license_violation", { agent: detectedAgent, tool: name, error: licenseError, timestamp: new Date().toISOString() });
277
- return { isError: true, content: [{ type: "text", text: licenseError }] };
278
- }
279
- }
280
- }
281
- catch { /* license scan should not block */ }
282
- }
283
- // [AUTO-ROLLBACK] Prepare snapshot for write operations
284
- if (name === "write_file" || name === "replace_text" || name === "patch_file") {
285
- try {
286
- const { AutoRollbackEngine } = await import("./utils/auto-rollback.js");
287
- const filePath = maskedArgs.path || "";
288
- if (filePath) {
289
- AutoRollbackEngine.prepareWrite(filePath, traceId);
290
- }
291
- }
292
- catch { /* auto-rollback should not block */ }
293
- }
294
- // [HUMAN-IN-LOOP] Check risk gate before execution
295
- try {
296
- const { RiskEngine } = await import("../../src/modules/engines/risk-engine.js");
297
- const riskContext = `${name} ${JSON.stringify(maskedArgs)}`;
298
- const riskResult = RiskEngine.assessTaskRisk(riskContext);
299
- if (riskResult.totalScore > 0) {
300
- const { checkRiskGate } = await import("./utils/human-in-loop.js");
301
- const riskReason = riskResult.factors.map(f => f.description).join("; ") || "High-risk operation detected";
302
- const gateResult = checkRiskGate(traceId, name, detectedAgent, riskResult.totalScore, riskReason, maskedArgs);
303
- if (gateResult?.blocked) {
304
- process.stderr.write(`[RISK GATE] Blocked: ${riskReason} (score: ${riskResult.totalScore})\n`);
305
- broadcastWS("risk_blocked", { agent: detectedAgent, tool: name, riskScore: riskResult.totalScore, traceId, timestamp: new Date().toISOString() });
306
- return { isError: true, content: [{ type: "text", text: gateResult.message }] };
307
- }
308
- if (gateResult?.warning) {
309
- process.stderr.write(`[RISK WARNING] ${gateResult.warning}\n`);
310
- }
311
- }
312
- }
313
- catch { /* risk gate should not block */ }
314
- // Execute
315
- const result = await handler(PROJECT_ROOT, maskedArgs);
316
- // [AUTO-ROLLBACK] Check write results for governance violations
317
- if (name === "write_file" || name === "replace_text" || name === "patch_file") {
318
- try {
319
- const filePath = maskedArgs.path || "";
320
- const content = maskedArgs.content || "";
321
- if (filePath && content) {
322
- const { AutoRollbackEngine } = await import("./utils/auto-rollback.js");
323
- const { scanFileForViolations } = await import("./utils/rules-engine.js");
324
- const violations = scanFileForViolations(filePath, content);
325
- if (violations.length > 0) {
326
- const violationRecords = violations.map(v => ({
327
- rule: v.rule.name,
328
- severity: v.rule.priority,
329
- filePath,
330
- line: v.line,
331
- detail: `Line ${v.line}: ${v.match}`,
332
- regenerateInstruction: v.rule.errorMessage,
333
- }));
334
- const rolledBack = AutoRollbackEngine.validateAndRollback(filePath, content, violationRecords);
335
- if (rolledBack) {
336
- const instruction = AutoRollbackEngine.buildRegenerateInstruction(rolledBack, name);
337
- broadcastWS("rollback_violation", { agent: detectedAgent, tool: name, violations: rolledBack, timestamp: new Date().toISOString() });
338
- return { isError: true, content: [{ type: "text", text: instruction }] };
339
- }
340
- }
341
- }
342
- }
343
- catch { /* auto-rollback should not block */ }
344
- }
345
- // [DISCIPLINE] Validate response content BEFORE returning to AI
346
- try {
347
- const { validateResponse } = await import("./utils/discipline.js");
348
- const responseError = validateResponse(name, result);
349
- if (responseError) {
350
- process.stderr.write(`[DISCIPLINE] Response blocked: ${responseError}\n`);
351
- broadcastWS("discipline_violation", { agent: detectedAgent, tool: name, error: responseError, timestamp: new Date().toISOString() });
352
- return { isError: true, content: [{ type: "text", text: `[DISCIPLINE] ${responseError}` }] };
353
- }
354
- }
355
- catch { /* response validation should not block */ }
356
- // [INJECTION PROTECTION] Sanitize prompt injection attempts in response text
357
- try {
358
- const { PromptInjectionProtection } = await import("./utils/prompt-injection.js");
359
- if (result.content) {
360
- for (let i = 0; i < result.content.length; i++) {
361
- const block = result.content[i];
362
- if (block.type === "text" && block.text) {
363
- const scan = PromptInjectionProtection.sanitizeResponse(block.text);
364
- if (scan.detected) {
365
- process.stderr.write(`[INJECTION PROTECTION] Neutralized prompt injection pattern: ${scan.patterns.join(", ")}\n`);
366
- // Record in immutable logs
367
- const { Storage } = await import("../../src/shared/storage.js");
368
- Storage.saveLog({
369
- agent: detectedAgent,
370
- action: "INJECTION_DETECTION",
371
- trace_id: traceId || undefined,
372
- status: "WARNING",
373
- summary: `Prompt injection patterns neutralized: ${scan.patterns.join(", ")}`,
374
- });
375
- // Broadcast to dashboard
376
- broadcastWS("injection_violation", {
377
- agent: detectedAgent,
378
- tool: name,
379
- patterns: scan.patterns,
380
- timestamp: new Date().toISOString()
381
- });
382
- result.content[i] = {
383
- ...block,
384
- text: scan.sanitized,
385
- };
386
- }
387
- }
388
- }
389
- }
390
- }
391
- catch (err) {
392
- process.stderr.write(`[INJECTION PROTECTION] Error: ${err.message}\n`);
393
- }
394
- // [GOVERNANCE] Validate response against governance rules (post-execution)
395
- try {
396
- const { validateResponseAgainstRules } = await import("./utils/rules-engine.js");
397
- const responseText = result.content?.filter(b => b.type === "text").map(b => b.text).join(" ") || "";
398
- const govResponseError = validateResponseAgainstRules(name, responseText);
399
- if (govResponseError) {
400
- process.stderr.write(`[GOVERNANCE] Response violation: ${govResponseError}\n`);
401
- broadcastWS("governance_violation", { agent: detectedAgent, tool: name, error: govResponseError, timestamp: new Date().toISOString() });
402
- // Don't block the response, just warn
403
- }
404
- }
405
- catch { /* governance response validation should not block */ }
406
- // [CONTEXT OPTIMIZER] Check token budget after execution
407
- try {
408
- const { checkTokenBudget } = await import("./utils/context-optimizer.js");
409
- const responseText = result.content?.filter(b => b.type === "text").map(b => b.text).join(" ") || "";
410
- const budgetError = checkTokenBudget(detectedAgent, name, responseText);
411
- if (budgetError) {
412
- process.stderr.write(`[TOKEN BUDGET] Warning: ${budgetError}\n`);
413
- broadcastWS("token_budget_warning", { agent: detectedAgent, tool: name, error: budgetError, timestamp: new Date().toISOString() });
414
- }
415
- }
416
- catch { /* token budget should not block */ }
417
- // [SILENT ROUTER] Build silent context injection
418
- try {
419
- const { buildSilentContext } = await import("./utils/silent-router.js");
420
- if (result.content) {
421
- for (let i = 0; i < result.content.length; i++) {
422
- const block = result.content[i];
423
- if (block.type === "text") {
424
- result.content[i] = {
425
- ...block,
426
- text: await buildSilentContext(detectedAgent, name, block.text),
427
- };
428
- }
429
- }
430
- }
431
- }
432
- catch { /* silent context injection should not block */ }
433
- // Broadcast to dashboard WS
434
- broadcastWS("tool_call", { agent: detectedAgent, action: name, tokens: estimatedTokens, traceId, timestamp: new Date().toISOString() });
435
- // [PII/GDPR/KVKK] Mask result before returning to AI
436
- return maskToolResult(result);
437
- }
438
- catch (error) {
439
- const message = error instanceof Error ? error.message : "Unknown error occurred";
440
- return { isError: true, content: [{ type: "text", text: `[ERROR] Execution failed: ${message}` }] };
441
- }
442
- });
443
- // ─── API Helpers ──────────────────────────────────────────────────
444
- function serveJson(res, statusCode, data) {
445
- res.writeHead(statusCode, { "Content-Type": "application/json" });
446
- res.end(JSON.stringify(data));
447
- }
448
- function serveFile(res, filePath, contentType) {
449
- if (fs.existsSync(filePath)) {
450
- try {
451
- const content = fs.readFileSync(filePath);
452
- res.writeHead(200, { "Content-Type": contentType });
453
- res.end(content);
454
- }
455
- catch (e) {
456
- res.writeHead(500);
457
- res.end(e.message);
458
- }
459
- }
460
- else {
461
- res.writeHead(404);
462
- res.end("Not Found");
463
- }
464
- }
465
- function parseUrl(url) {
466
- const [pathname, queryString] = url.split("?");
467
- const params = {};
468
- if (queryString) {
469
- queryString.split("&").forEach((pair) => {
470
- const [key, value] = pair.split("=");
471
- params[decodeURIComponent(key)] = decodeURIComponent(value || "");
472
- });
473
- }
474
- return { pathname, params };
475
- }
476
- // ─── Unified HTTP Server ──────────────────────────────────────────
477
- function createUnifiedServer() {
478
- const httpServer = http.createServer(async (req, res) => {
479
- const url = req.url || "/";
480
- const { pathname, params } = parseUrl(url);
481
- const method = req.method || "GET";
482
- // CORS
483
- res.setHeader("Access-Control-Allow-Origin", "*");
484
- res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
485
- res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
486
- if (req.method === "OPTIONS") {
487
- res.writeHead(204);
488
- res.end();
489
- return;
490
- }
491
- // [SECURITY] Authentication check for API/MCP routes
492
- // Skip auth for static UI and health endpoints
493
- const needsAuth = pathname.startsWith("/api/") || pathname.startsWith("/mcp/");
494
- const isPublicPath = pathname === "/api/health" || pathname === "/mcp/health" || !pathname.startsWith("/api/") && !pathname.startsWith("/mcp/");
495
- if (needsAuth && !isPublicPath) {
496
- const { authenticate } = await import("./utils/auth.js");
497
- const auth = authenticate(req);
498
- if (!auth.authenticated) {
499
- process.stderr.write(`[AUTH] Unauthorized request: ${pathname}\n`);
500
- serveJson(res, 401, { error: "Unauthorized. Provide Authorization: Bearer <token> header. Set MCP_AUTH_TOKEN env var to configure." });
501
- return;
502
- }
503
- }
504
- // ───────────── MCP ROUTES (prefix: /mcp) ─────────────
505
- if (pathname === "/mcp/health") {
506
- serveJson(res, 200, { status: "ok", version: serverVersion, sessions: sessions.size });
507
- return;
508
- }
509
- if (pathname === "/mcp/sse") {
510
- const transport = new SSEServerTransport("/mcp/messages", res);
511
- const sessionId = transport.sessionId;
512
- // Get user identity from auth header or default to anonymous
513
- const { authenticate, getCurrentUser } = await import("./utils/auth.js");
514
- const auth = authenticate(req);
515
- const userName = auth.authenticated ? auth.user : getCurrentUser();
516
- const clientName = "mcp-client";
517
- const session = {
518
- transport,
519
- user: userName,
520
- clientName,
521
- connectedAt: new Date().toISOString(),
522
- lastActivity: new Date().toISOString(),
523
- toolCalls: 0,
524
- };
525
- sessions.set(sessionId, session);
526
- process.stderr.write(`[MCP] Client connected: ${sessionId} (user: ${userName}, total: ${sessions.size})\n`);
527
- broadcastWS("mcp_session", { sessionId, user: userName, action: "connected", total: sessions.size });
528
- res.on("close", () => {
529
- sessions.delete(sessionId);
530
- process.stderr.write(`[MCP] Client disconnected: ${sessionId} (user: ${userName}, remaining: ${sessions.size})\n`);
531
- broadcastWS("mcp_session", { sessionId, user: userName, action: "disconnected", total: sessions.size });
532
- });
533
- await server.connect(transport);
534
- return;
535
- }
536
- if (pathname === "/mcp/messages") {
537
- const sessionId = params.sessionId;
538
- if (!sessionId || !sessions.has(sessionId)) {
539
- serveJson(res, 400, { error: "Invalid or missing sessionId" });
540
- return;
541
- }
542
- const session = sessions.get(sessionId);
543
- session.lastActivity = new Date().toISOString();
544
- await session.transport.handlePostMessage(req, res);
545
- return;
546
- }
547
- // ───────────── DASHBOARD API ROUTES (/api) ───────────
548
- // Health
549
- if (pathname === "/api/health") {
550
- serveJson(res, 200, { status: "healthy", version: serverVersion, frameworkDir: FRAMEWORK_DIR });
551
- return;
552
- }
553
- // Status
554
- if (pathname === "/api/status") {
555
- const statusPath = path.join(FRAMEWORK_DIR, "memory", "status.json");
556
- if (fs.existsSync(statusPath)) {
557
- serveFile(res, statusPath, "application/json");
558
- return;
559
- }
560
- serveJson(res, 200, { success: true, data: { status: "initializing" } });
561
- return;
562
- }
563
- // Memory (PROJECT_MEMORY.md)
564
- if (pathname === "/api/memory") {
565
- const memoryPath = path.join(FRAMEWORK_DIR, "memory", "PROJECT_MEMORY.md");
566
- if (fs.existsSync(memoryPath)) {
567
- serveFile(res, memoryPath, "text/markdown");
568
- return;
569
- }
570
- serveJson(res, 200, { success: true, data: "No memory file yet." });
571
- return;
572
- }
573
- // Memory Search
574
- if (pathname === "/api/memory/search") {
575
- try {
576
- const query = params.q || "";
577
- const limit = parseInt(params.limit || "10", 10);
578
- if (!query) {
579
- const db = Storage.getDB();
580
- const rows = db.prepare("SELECT * FROM vector_memory ORDER BY created_at DESC LIMIT ?").all(limit);
581
- // [KVKK/GDPR] Mask PII in memory content before returning
582
- const results = rows.map(row => {
583
- const meta = JSON.parse(row.metadata || "{}");
584
- return { id: row.id, content: maskText(row.content), type: row.category || meta.category || "memory", timestamp: meta.createdAt || row.created_at, relevance: 1.0 };
585
- });
586
- serveJson(res, 200, { success: true, data: results });
587
- return;
588
- }
589
- const { CoreMemory } = await import("../../src/modules/memory/core.js");
590
- const results = await CoreMemory.recall(query, { limit });
591
- // [KVKK/GDPR] Mask PII in memory content before returning
592
- const flattened = results.map(r => ({
593
- id: r.entry.id, content: maskText(r.entry.content), type: r.entry.metadata.category || "memory",
594
- timestamp: r.entry.metadata.createdAt || new Date().toISOString(), relevance: r.score
595
- }));
596
- serveJson(res, 200, { success: true, data: flattened });
597
- }
598
- catch (e) {
599
- serveJson(res, 500, { success: false, error: e.message });
600
- }
601
- return;
602
- }
603
- // Agents
604
- if (pathname === "/api/agents") {
605
- try {
606
- const agents = Storage.getAllAgents();
607
- serveJson(res, 200, { success: true, data: agents });
608
- }
609
- catch (e) {
610
- serveJson(res, 500, { success: false, error: e.message });
611
- }
612
- return;
613
- }
614
- // Messages (Hermes queue)
615
- if (pathname === "/api/messages") {
616
- try {
617
- const messages = Storage.getPendingMessages();
618
- serveJson(res, 200, { success: true, data: messages });
619
- }
620
- catch (e) {
621
- serveJson(res, 500, { success: false, error: e.message });
622
- }
623
- return;
624
- }
625
- // Hermes Stats
626
- if (pathname === "/api/hermes/stats") {
627
- try {
628
- const messages = Storage.getPendingMessages();
629
- const totalMessages = Storage.getDB().prepare("SELECT COUNT(*) as count FROM messages").get();
630
- const byCategory = {};
631
- const byStatus = {};
632
- messages.forEach(m => {
633
- byCategory[m.category] = (byCategory[m.category] || 0) + 1;
634
- byStatus[m.status] = (byStatus[m.status] || 0) + 1;
635
- });
636
- serveJson(res, 200, {
637
- success: true, data: {
638
- total: totalMessages.count, pending: messages.length, byCategory, byStatus,
639
- lastMessage: messages.length > 0 ? messages[messages.length - 1] : null,
640
- }
641
- });
642
- }
643
- catch (e) {
644
- serveJson(res, 500, { success: false, error: e.message });
645
- }
646
- return;
647
- }
648
- // Tasks
649
- if (pathname === "/api/tasks") {
650
- try {
651
- const { asTraceID } = await import("../../src/shared/types.js");
652
- const traceId = params.traceId ? asTraceID(params.traceId) : undefined;
653
- const tasks = Storage.getTasks(traceId);
654
- // [KVKK/GDPR] Mask PII in task descriptions before returning
655
- const maskedTasks = tasks.map(t => ({
656
- ...t,
657
- description: maskText(t.description),
658
- }));
659
- serveJson(res, 200, { success: true, data: maskedTasks });
660
- }
661
- catch (e) {
662
- serveJson(res, 500, { success: false, error: e.message });
663
- }
664
- return;
665
- }
666
- // Logs
667
- if (pathname.startsWith("/api/logs")) {
668
- try {
669
- const logs = Storage.getLogs();
670
- const agent = pathname.split("/api/logs/")[1];
671
- const filteredLogs = agent ? logs.filter(l => l.agent === agent) : logs;
672
- serveJson(res, 200, { success: true, data: filteredLogs });
673
- }
674
- catch (e) {
675
- serveJson(res, 500, { success: false, error: e.message });
676
- }
677
- return;
678
- }
679
- // Approvals
680
- if (pathname === "/api/approvals") {
681
- try {
682
- const allMessages = Storage.getPendingMessages();
683
- // [KVKK/GDPR] Mask PII in approval descriptions
684
- const approvals = allMessages.filter(m => m.category === "ALERT" || m.category === "ACTION")
685
- .map(m => ({
686
- id: String(m.id || m.traceId), traceId: m.traceId,
687
- description: m.content ? (typeof m.content === "string" ? maskText(m.content) : maskText(JSON.stringify(m.content))) : "Approval required",
688
- status: m.status || "PENDING", timestamp: m.timestamp || new Date().toISOString()
689
- }));
690
- serveJson(res, 200, { success: true, data: approvals });
691
- }
692
- catch (e) {
693
- serveJson(res, 500, { success: false, error: e.message });
694
- }
695
- return;
696
- }
697
- // Approve
698
- if (pathname.startsWith("/api/approve/") && method === "POST") {
699
- const traceId = pathname.replace("/api/approve/", "");
700
- if (!traceId) {
701
- serveJson(res, 400, { success: false, error: "Trace ID required" });
702
- return;
703
- }
704
- try {
705
- const pendingMessages = Storage.getPendingMessages().filter(m => m.traceId === traceId && (m.category === "ALERT" || m.category === "ACTION"));
706
- if (pendingMessages.length === 0) {
707
- serveJson(res, 404, { success: false, error: "No pending approval found" });
708
- return;
709
- }
710
- pendingMessages.forEach(msg => { if (msg.id !== undefined)
711
- Storage.updateMessageStatus(msg.id, "APPROVED"); });
712
- broadcastWS("approval", { traceId, status: "APPROVED" });
713
- serveJson(res, 200, { success: true, message: `Trace ${traceId} approved`, approved: pendingMessages.length });
714
- }
715
- catch (e) {
716
- serveJson(res, 500, { success: false, error: e.message });
717
- }
718
- return;
719
- }
720
- // Reject
721
- if (pathname.startsWith("/api/reject/") && method === "POST") {
722
- const traceId = pathname.replace("/api/reject/", "");
723
- if (!traceId) {
724
- serveJson(res, 400, { success: false, error: "Trace ID required" });
725
- return;
726
- }
727
- try {
728
- const pendingMessages = Storage.getPendingMessages().filter(m => m.traceId === traceId && (m.category === "ALERT" || m.category === "ACTION"));
729
- if (pendingMessages.length === 0) {
730
- serveJson(res, 404, { success: false, error: "No pending approval found" });
731
- return;
732
- }
733
- pendingMessages.forEach(msg => { if (msg.id !== undefined)
734
- Storage.updateMessageStatus(msg.id, "REJECTED"); });
735
- broadcastWS("approval", { traceId, status: "REJECTED" });
736
- serveJson(res, 200, { success: true, message: `Trace ${traceId} rejected`, rejected: pendingMessages.length });
737
- }
738
- catch (e) {
739
- serveJson(res, 500, { success: false, error: e.message });
740
- }
741
- return;
742
- }
743
- // Audit (GDPR/KVKK)
744
- if (pathname === "/api/audit") {
745
- try {
746
- Audit.initialize();
747
- const stats = Audit.getStats();
748
- const entries = Audit.query({ limit: 100 });
749
- serveJson(res, 200, { success: true, data: { stats, entries } });
750
- }
751
- catch (e) {
752
- serveJson(res, 500, { success: false, error: e.message });
753
- }
754
- return;
755
- }
756
- // Audit Erase (GDPR/KVKK Right to Erasure)
757
- if (pathname === "/api/audit/erase" && method === "POST") {
758
- try {
759
- Audit.initialize();
760
- let body = "";
761
- req.on("data", chunk => { body += chunk.toString(); });
762
- req.on("end", () => {
763
- try {
764
- const parsed = JSON.parse(body);
765
- const confirmation = parsed.confirmationCode || "";
766
- const changes = Audit.clearAll(confirmation);
767
- serveJson(res, 200, { success: true, message: `${changes} records cleared under KVKK/GDPR right to erasure.` });
768
- }
769
- catch (err) {
770
- serveJson(res, 400, { success: false, error: err.message });
771
- }
772
- });
773
- }
774
- catch (e) {
775
- serveJson(res, 500, { success: false, error: e.message });
776
- }
777
- return;
778
- }
779
- // Compliance
780
- if (pathname === "/api/compliance") {
781
- try {
782
- const { scanProjectCompliance } = await import("../../src/cli/utils/compliance.js");
783
- const targetPath = params.path || "src";
784
- const scanPath = path.join(PROJECT_ROOT, targetPath);
785
- const rawIssues = scanProjectCompliance(scanPath);
786
- const violations = rawIssues.map(issue => {
787
- const ruleLower = issue.rule.toLowerCase();
788
- const type = ruleLower.includes("any") ? "any-type" : ruleLower.includes("console") ? "console-log" : "other";
789
- return { file: path.relative(PROJECT_ROOT, issue.file), line: issue.line, type, message: issue.rule.replace(/^\[ERROR\]\s*Corporate\s*Compliance\s*Breach:\s*/i, "") };
790
- });
791
- const violatingFiles = new Set(violations.map(v => v.file));
792
- serveJson(res, 200, {
793
- success: true, data: {
794
- summary: { totalFiles: violatingFiles.size, totalViolations: violations.length, byType: { "any-type": violations.filter(v => v.type === "any-type").length, "console-log": violations.filter(v => v.type === "console-log").length } },
795
- violations
796
- }
797
- });
798
- }
799
- catch (e) {
800
- serveJson(res, 500, { success: false, error: e.message });
801
- }
802
- return;
803
- }
804
- // Quality
805
- if (pathname === "/api/quality") {
806
- try {
807
- const { analyzePathQuality } = await import("../../src/cli/utils/quality.js");
808
- const targetPath = params.path || "src";
809
- const result = analyzePathQuality(PROJECT_ROOT, targetPath);
810
- serveJson(res, 200, {
811
- success: true, data: {
812
- totalFiles: result.totalFiles, totalIssues: result.totalIssues,
813
- longFunctions: result.longFunctions, deepNesting: result.deepNesting,
814
- anyTypes: result.anyTypes, issues: result.issues.slice(0, 50),
815
- }
816
- });
817
- }
818
- catch (e) {
819
- serveJson(res, 500, { success: false, error: e.message });
820
- }
821
- return;
822
- }
823
- // Adapter Skills
824
- if (pathname === "/api/adapters/skills") {
825
- try {
826
- const { ADAPTER_SKILLS } = await import("../../src/modules/skills/adapter-skills.js");
827
- const summary = Object.entries(ADAPTER_SKILLS).map(([id, config]) => ({
828
- id, skillCount: Object.keys(config.enabledSkills).length,
829
- toolsCount: config.toolMapping ? Object.keys(config.toolMapping).length : 0,
830
- skills: Object.keys(config.enabledSkills),
831
- }));
832
- serveJson(res, 200, { success: true, data: summary });
833
- }
834
- catch (e) {
835
- serveJson(res, 500, { success: false, error: e.message });
836
- }
837
- return;
838
- }
839
- // MCP Sessions (with user identity)
840
- if (pathname === "/api/mcp/sessions") {
841
- const sessionList = Array.from(sessions.entries()).map(([id, session]) => ({
842
- id,
843
- user: session.user,
844
- clientName: session.clientName,
845
- connectedAt: session.connectedAt,
846
- lastActivity: session.lastActivity,
847
- toolCalls: session.toolCalls,
848
- }));
849
- serveJson(res, 200, { success: true, data: { total: sessions.size, sessions: sessionList } });
850
- return;
851
- }
852
- // Discipline Stats
853
- if (pathname === "/api/discipline") {
854
- try {
855
- const { getAllDisciplineStats } = await import("./utils/discipline.js");
856
- const stats = getAllDisciplineStats();
857
- serveJson(res, 200, { success: true, data: stats });
858
- }
859
- catch (e) {
860
- serveJson(res, 500, { success: false, error: e.message });
861
- }
862
- return;
863
- }
864
- // Token Economy / Metrics
865
- if (pathname === "/api/metrics") {
866
- try {
867
- const metricsPath = path.join(FRAMEWORK_DIR, "observability/metrics.json");
868
- let entries = [];
869
- if (fs.existsSync(metricsPath)) {
870
- entries = JSON.parse(fs.readFileSync(metricsPath, "utf8"));
871
- }
872
- const byAgent = {};
873
- const byAction = {};
874
- let totalTokens = 0;
875
- for (const entry of entries) {
876
- const agent = entry.agent || "unknown";
877
- const action = entry.action || "unknown";
878
- const tokens = entry.estimatedTokens || 0;
879
- if (!byAgent[agent])
880
- byAgent[agent] = { calls: 0, tokens: 0, cost: 0 };
881
- byAgent[agent].calls++;
882
- byAgent[agent].tokens += tokens;
883
- byAgent[agent].cost = +(byAgent[agent].tokens / 1000 * 0.003).toFixed(4);
884
- if (!byAction[action])
885
- byAction[action] = { calls: 0, tokens: 0 };
886
- byAction[action].calls++;
887
- byAction[action].tokens += tokens;
888
- totalTokens += tokens;
889
- }
890
- serveJson(res, 200, {
891
- success: true, data: {
892
- totalToolCalls: entries.length, totalEstimatedTokens: totalTokens,
893
- totalEstimatedCost: +(totalTokens / 1000 * 0.003).toFixed(4),
894
- mcpSessions: sessions.size, byAgent, byAction, recentEntries: entries.slice(-100),
895
- }
896
- });
897
- }
898
- catch (e) {
899
- serveJson(res, 500, { success: false, error: e.message });
900
- }
901
- return;
902
- }
903
- // Telemetry Status
904
- if (pathname === "/api/telemetry") {
905
- try {
906
- const { telemetryStreamer, TelemetryConfig } = await import("./utils/telemetry-streamer.js");
907
- const status = telemetryStreamer.getStatus();
908
- serveJson(res, 200, { success: true, data: { ...status, config: { ...TelemetryConfig, AUTH_TOKEN: TelemetryConfig.AUTH_TOKEN ? "***" : "" } } });
909
- }
910
- catch (e) {
911
- serveJson(res, 500, { success: false, error: e.message });
912
- }
913
- return;
914
- }
915
- // Loop Detection Stats
916
- if (pathname === "/api/loop-detector") {
917
- try {
918
- const { getAllLoopStats } = await import("./utils/loop-detector.js");
919
- const agent = params.agent;
920
- const stats = agent
921
- ? (await import("./utils/loop-detector.js")).getLoopStats(agent)
922
- : getAllLoopStats();
923
- serveJson(res, 200, { success: true, data: stats });
924
- }
925
- catch (e) {
926
- serveJson(res, 500, { success: false, error: e.message });
927
- }
928
- return;
929
- }
930
- // Clear Loop Cooldown
931
- if (pathname.startsWith("/api/loop-detector/clear/") && method === "POST") {
932
- const agent = decodeURIComponent(pathname.replace("/api/loop-detector/clear/", ""));
933
- try {
934
- const { clearCooldown } = await import("./utils/loop-detector.js");
935
- const cleared = clearCooldown(agent);
936
- serveJson(res, 200, { success: true, data: { agent, cleared } });
937
- }
938
- catch (e) {
939
- serveJson(res, 500, { success: false, error: e.message });
940
- }
941
- return;
942
- }
943
- // Budget / FinOps Status
944
- if (pathname === "/api/finops") {
945
- try {
946
- const { budgetManager } = await import("./utils/finops.js");
947
- const state = budgetManager.getState();
948
- serveJson(res, 200, { success: true, data: state });
949
- }
950
- catch (e) {
951
- serveJson(res, 500, { success: false, error: e.message });
952
- }
953
- return;
954
- }
955
- // Budget Check for an agent
956
- if (pathname === "/api/finops/check") {
957
- try {
958
- const agent = params.agent || "default";
959
- const { budgetManager } = await import("./utils/finops.js");
960
- const result = budgetManager.checkBudget(agent);
961
- serveJson(res, 200, { success: true, data: result });
962
- }
963
- catch (e) {
964
- serveJson(res, 500, { success: false, error: e.message });
965
- }
966
- return;
967
- }
968
- // Budget Reset
969
- if (pathname === "/api/finops/reset" && method === "POST") {
970
- try {
971
- const { budgetManager } = await import("./utils/finops.js");
972
- budgetManager.resetPeriod();
973
- serveJson(res, 200, { success: true, message: "Budget period reset." });
974
- }
975
- catch (e) {
976
- serveJson(res, 500, { success: false, error: e.message });
977
- }
978
- return;
979
- }
980
- // License Scanner
981
- if (pathname === "/api/license") {
982
- try {
983
- const { scanForLicenses, getLicenseSeveritySummary, LicenseScannerConfig } = await import("./utils/license-scanner.js");
984
- const filePath = params.path || "";
985
- const content = params.content || "";
986
- const matches = filePath && content ? scanForLicenses(filePath, content) : [];
987
- const summary = matches.length > 0 ? getLicenseSeveritySummary(matches) : null;
988
- serveJson(res, 200, {
989
- success: true, data: {
990
- matches,
991
- summary,
992
- config: LicenseScannerConfig,
993
- }
994
- });
995
- }
996
- catch (e) {
997
- serveJson(res, 500, { success: false, error: e.message });
998
- }
999
- return;
1000
- }
1001
- // Auto-Rollback Stats
1002
- if (pathname === "/api/rollback") {
1003
- try {
1004
- const { AutoRollbackEngine } = await import("./utils/auto-rollback.js");
1005
- const stats = AutoRollbackEngine.getSnapshotStats();
1006
- serveJson(res, 200, { success: true, data: stats });
1007
- }
1008
- catch (e) {
1009
- serveJson(res, 500, { success: false, error: e.message });
1010
- }
1011
- return;
1012
- }
1013
- // All Governance Stats (combined endpoint)
1014
- if (pathname === "/api/governance") {
1015
- try {
1016
- const { getAllDisciplineStats } = await import("./utils/discipline.js");
1017
- const { getAllTokenBudgetStats } = await import("./utils/context-optimizer.js");
1018
- const { getAllLoopStats } = await import("./utils/loop-detector.js");
1019
- const { getAllRules } = await import("./utils/rules-engine.js");
1020
- const { AutoRollbackEngine } = await import("./utils/auto-rollback.js");
1021
- const { budgetManager } = await import("./utils/finops.js");
1022
- serveJson(res, 200, {
1023
- success: true, data: {
1024
- discipline: getAllDisciplineStats(),
1025
- tokenBudget: getAllTokenBudgetStats(),
1026
- loopDetection: getAllLoopStats(),
1027
- rules: getAllRules().map(r => ({ id: r.id, name: r.name, priority: r.priority, bypassable: r.bypassable })),
1028
- rollback: AutoRollbackEngine.getSnapshotStats(),
1029
- budget: budgetManager.getState(),
1030
- telemetry: (await import("./utils/telemetry-streamer.js")).telemetryStreamer.getStatus(),
1031
- }
1032
- });
1033
- }
1034
- catch (e) {
1035
- serveJson(res, 500, { success: false, error: e.message });
1036
- }
1037
- return;
1038
- }
1039
- // SSE (legacy support)
1040
- if (pathname === "/api/events") {
1041
- res.writeHead(200, { "Content-Type": "text/event-stream", "Cache-Control": "no-cache", "Connection": "keep-alive" });
1042
- res.write(": connected\n\n");
1043
- const keepAlive = setInterval(() => res.write(": keepalive\n\n"), 30000);
1044
- req.on("close", () => clearInterval(keepAlive));
1045
- return;
1046
- }
1047
- // ───────────── STATIC UI ─────────────────────────────
1048
- const uiPath = path.join(UI_DIST_PATH, pathname === "/" ? "index.html" : pathname);
1049
- const finalPath = (fs.existsSync(uiPath) && !fs.statSync(uiPath).isDirectory())
1050
- ? uiPath
1051
- : path.join(UI_DIST_PATH, "index.html");
1052
- if (fs.existsSync(finalPath) && !fs.statSync(finalPath).isDirectory()) {
1053
- const ext = path.extname(finalPath).toLowerCase();
1054
- const mimeTypes = {
1055
- ".html": "text/html", ".js": "application/javascript", ".css": "text/css",
1056
- ".json": "application/json", ".png": "image/png", ".jpg": "image/jpg",
1057
- ".gif": "image/gif", ".svg": "image/svg+xml", ".ico": "image/x-icon",
1058
- };
1059
- serveFile(res, finalPath, mimeTypes[ext] || "application/octet-stream");
1060
- }
1061
- else {
1062
- serveJson(res, 404, { error: "Not Found" });
1063
- }
1064
- });
1065
- // ─── WebSocket Server ────────────────────────────────────
1066
- const wss = new WebSocketServer({ server: httpServer, path: "/ws" });
1067
- wss.on("connection", (ws) => {
1068
- wsClients.add(ws);
1069
- ws.send(JSON.stringify({ type: "mcp_session", payload: { total: sessions.size, sessions: Array.from(sessions.keys()) } }));
1070
- ws.on("close", () => wsClients.delete(ws));
1071
- ws.on("message", (data) => {
1072
- try {
1073
- const msg = JSON.parse(data.toString());
1074
- if (msg.type === "ping")
1075
- ws.send(JSON.stringify({ type: "pong" }));
1076
- }
1077
- catch { /* ignore */ }
1078
- });
1079
- });
1080
- // ─── Periodic Broadcast ──────────────────────────────────
1081
- const broadcastInterval = setInterval(() => {
1082
- try {
1083
- broadcastWS("mcp_heartbeat", { sessions: sessions.size, timestamp: new Date().toISOString() });
1084
- }
1085
- catch { /* silent */ }
1086
- }, 10000);
1087
- httpServer.on("close", () => {
1088
- clearInterval(broadcastInterval);
1089
- wsClients.clear();
1090
- });
1091
- // ─── Start ───────────────────────────────────────────────
1092
- httpServer.listen(PORT, HOST, () => {
1093
- process.stderr.write("\n");
1094
- process.stderr.write("╔══════════════════════════════════════════════════════╗\n");
1095
- process.stderr.write("║ ATABEY UNIFIED SERVER ║\n");
1096
- process.stderr.write("╠══════════════════════════════════════════════════════╣\n");
1097
- process.stderr.write(`║ Dashboard: http://localhost:${PORT} \n`);
1098
- process.stderr.write(`║ MCP SSE: http://localhost:${PORT}/mcp/sse \n`);
1099
- process.stderr.write(`║ WS Live: ws://localhost:${PORT}/ws \n`);
1100
- process.stderr.write(`║ API: http://localhost:${PORT}/api/health \n`);
1101
- process.stderr.write(`║ Sessions: ${sessions.size} active \n`);
1102
- process.stderr.write("╚══════════════════════════════════════════════════════╝\n");
1103
- process.stderr.write("\n");
1104
- process.stderr.write(`[atabey-mcp] Unified server ready on port ${PORT}\n`);
1105
- process.stderr.write(`[atabey-mcp] mcp.json: { "url": "http://localhost:${PORT}/mcp/sse" }\n`);
1106
- process.stderr.write("\n");
1107
- });
1108
- }
1109
- // ─── Startup ──────────────────────────────────────────────────────
1110
- async function run() {
1111
- const transportMode = process.env.MCP_TRANSPORT || "unified";
1112
- process.on("uncaughtException", (error) => {
1113
- process.stderr.write(`[atabey-mcp] Uncaught exception: ${error.message}\n`);
1114
- });
1115
- process.on("unhandledRejection", (reason) => {
1116
- const message = reason instanceof Error ? reason.message : String(reason);
1117
- process.stderr.write(`[atabey-mcp] Unhandled rejection: ${message}\n`);
1118
- });
1119
- const shutdown = async () => {
1120
- try {
1121
- await server.close();
1122
- }
1123
- catch { /* ignore */ }
1124
- process.exit(0);
1125
- };
1126
- process.on("SIGINT", shutdown);
1127
- process.on("SIGTERM", shutdown);
1128
- if (transportMode === "stdio") {
1129
- const transport = new StdioServerTransport();
1130
- process.stderr.write("[atabey-mcp] Stdio mode (single client).\n");
1131
- await server.connect(transport);
1132
- }
1133
- else {
1134
- createUnifiedServer();
1135
- }
1136
- }
1137
- run().catch((error) => {
1138
- process.stderr.write(`[atabey-mcp] Fatal startup error: ${error.message}\n`);
1139
- process.exit(1);
1140
- });