atabey-mcp 0.0.23 → 0.0.26

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 (714) hide show
  1. package/README.md +5 -5
  2. package/bin/cli.js +1 -1
  3. package/dashboard/index.html +15 -0
  4. package/dashboard/package.json +29 -0
  5. package/dashboard/src/App.tsx +352 -0
  6. package/dashboard/src/components/AdapterSkillsPanel.tsx +100 -0
  7. package/dashboard/src/components/AgentMonitor.tsx +90 -0
  8. package/dashboard/src/components/ApprovalCenter.tsx +74 -0
  9. package/dashboard/src/components/CompliancePanel.tsx +72 -0
  10. package/dashboard/src/components/DisciplinePanel.tsx +148 -0
  11. package/dashboard/src/components/ErrorTracker.tsx +97 -0
  12. package/dashboard/src/components/FinOpsPanel.tsx +236 -0
  13. package/dashboard/src/components/HermesBrokerView.tsx +59 -0
  14. package/dashboard/src/components/HermesStats.tsx +108 -0
  15. package/dashboard/src/components/LicensePanel.tsx +199 -0
  16. package/dashboard/src/components/LogViewer.tsx +87 -0
  17. package/dashboard/src/components/LoopDetectorPanel.tsx +203 -0
  18. package/dashboard/src/components/MCPSetupPanel.tsx +423 -0
  19. package/dashboard/src/components/MemoryInsights.tsx +107 -0
  20. package/dashboard/src/components/PlanViewer.tsx +95 -0
  21. package/dashboard/src/components/PrivacyPanel.tsx +276 -0
  22. package/dashboard/src/components/QualityPanel.tsx +98 -0
  23. package/dashboard/src/components/TelemetryPanel.tsx +197 -0
  24. package/dashboard/src/components/TokenEconomyPanel.tsx +285 -0
  25. package/dashboard/src/hooks/useApi.ts +39 -0
  26. package/dashboard/src/hooks/useWS.ts +47 -0
  27. package/dashboard/src/main.tsx +22 -0
  28. package/dashboard/src/styles.ts +908 -0
  29. package/dashboard/tsconfig.json +20 -0
  30. package/dashboard/vite.config.ts +25 -0
  31. package/dist/atabey/src/cli/utils/pkg.js +1 -0
  32. package/dist/atabey/src/cli/utils/pkg.js.map +1 -1
  33. package/dist/atabey/src/modules/agents/registry/manager.js +1 -1
  34. package/dist/atabey/src/modules/agents/registry/security.js +1 -1
  35. package/dist/atabey/src/modules/agents/registry/security.js.map +1 -1
  36. package/dist/atabey/src/modules/engines/agent-executor.js +82 -47
  37. package/dist/atabey/src/modules/engines/agent-executor.js.map +1 -1
  38. package/dist/atabey/src/modules/engines/agent-loop.d.ts +5 -2
  39. package/dist/atabey/src/modules/engines/agent-loop.js +39 -13
  40. package/dist/atabey/src/modules/engines/agent-loop.js.map +1 -1
  41. package/dist/atabey/src/modules/engines/routing-engine.d.ts +3 -0
  42. package/dist/atabey/src/modules/engines/routing-engine.js +14 -4
  43. package/dist/atabey/src/modules/engines/routing-engine.js.map +1 -1
  44. package/dist/atabey/src/modules/memory/core.js +1 -1
  45. package/dist/atabey/src/modules/memory/core.js.map +1 -1
  46. package/dist/atabey/src/shared/storage.d.ts +8 -0
  47. package/dist/atabey/src/shared/storage.js +51 -40
  48. package/dist/atabey/src/shared/storage.js.map +1 -1
  49. package/dist/atabey-mcp/src/mcp/index.js +27 -11
  50. package/dist/atabey-mcp/src/mcp/index.js.map +1 -1
  51. package/dist/atabey-mcp/src/mcp/middleware/governance.js +34 -0
  52. package/dist/atabey-mcp/src/mcp/middleware/governance.js.map +1 -1
  53. package/dist/atabey-mcp/src/mcp/routes/api-governance.js +34 -0
  54. package/dist/atabey-mcp/src/mcp/routes/api-governance.js.map +1 -1
  55. package/dist/atabey-mcp/src/mcp/routes/index.js +24 -13
  56. package/dist/atabey-mcp/src/mcp/routes/index.js.map +1 -1
  57. package/dist/atabey-mcp/src/mcp/tools/control_plane/locking.js +52 -50
  58. package/dist/atabey-mcp/src/mcp/tools/control_plane/locking.js.map +1 -1
  59. package/dist/atabey-mcp/src/mcp/tools/file_system/batch_surgical_edit.js +3 -2
  60. package/dist/atabey-mcp/src/mcp/tools/file_system/batch_surgical_edit.js.map +1 -1
  61. package/dist/atabey-mcp/src/mcp/tools/file_system/patch_file.js +2 -1
  62. package/dist/atabey-mcp/src/mcp/tools/file_system/patch_file.js.map +1 -1
  63. package/dist/atabey-mcp/src/mcp/tools/file_system/replace_text.js +4 -2
  64. package/dist/atabey-mcp/src/mcp/tools/file_system/replace_text.js.map +1 -1
  65. package/dist/atabey-mcp/src/mcp/tools/file_system/write_file.js +7 -3
  66. package/dist/atabey-mcp/src/mcp/tools/file_system/write_file.js.map +1 -1
  67. package/dist/atabey-mcp/src/mcp/tools/schemas.d.ts +12 -12
  68. package/dist/atabey-mcp/src/mcp/tools/shell/run_command.js +57 -51
  69. package/dist/atabey-mcp/src/mcp/tools/shell/run_command.js.map +1 -1
  70. package/dist/atabey-mcp/src/mcp/utils/auth.d.ts +49 -22
  71. package/dist/atabey-mcp/src/mcp/utils/auth.js +220 -78
  72. package/dist/atabey-mcp/src/mcp/utils/auth.js.map +1 -1
  73. package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js +114 -5
  74. package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js.map +1 -1
  75. package/dist/atabey-mcp/src/mcp/utils/compliance-bootstrap.js +57 -1
  76. package/dist/atabey-mcp/src/mcp/utils/compliance-bootstrap.js.map +1 -1
  77. package/dist/atabey-mcp/src/mcp/utils/discipline.js +92 -10
  78. package/dist/atabey-mcp/src/mcp/utils/discipline.js.map +1 -1
  79. package/dist/atabey-mcp/src/mcp/utils/file-lock-guard.d.ts +13 -0
  80. package/dist/atabey-mcp/src/mcp/utils/file-lock-guard.js +47 -0
  81. package/dist/atabey-mcp/src/mcp/utils/file-lock-guard.js.map +1 -0
  82. package/dist/atabey-mcp/src/mcp/utils/framework-config.d.ts +26 -0
  83. package/dist/atabey-mcp/src/mcp/utils/framework-config.js +70 -0
  84. package/dist/atabey-mcp/src/mcp/utils/framework-config.js.map +1 -1
  85. package/dist/atabey-mcp/src/mcp/utils/human-in-loop.js +59 -3
  86. package/dist/atabey-mcp/src/mcp/utils/human-in-loop.js.map +1 -1
  87. package/dist/atabey-mcp/src/mcp/utils/loop-detector.d.ts +1 -0
  88. package/dist/atabey-mcp/src/mcp/utils/loop-detector.js +64 -9
  89. package/dist/atabey-mcp/src/mcp/utils/loop-detector.js.map +1 -1
  90. package/dist/atabey-mcp/src/mcp/utils/metrics.d.ts +10 -1
  91. package/dist/atabey-mcp/src/mcp/utils/metrics.js +17 -2
  92. package/dist/atabey-mcp/src/mcp/utils/metrics.js.map +1 -1
  93. package/dist/atabey-mcp/src/mcp/utils/orchestrator-bootstrap.js +1 -1
  94. package/dist/atabey-mcp/src/mcp/utils/orchestrator-bootstrap.js.map +1 -1
  95. package/dist/atabey-mcp/src/mcp/utils/policy-gate.d.ts +23 -0
  96. package/dist/atabey-mcp/src/mcp/utils/policy-gate.js +40 -0
  97. package/dist/atabey-mcp/src/mcp/utils/policy-gate.js.map +1 -0
  98. package/dist/atabey-mcp/src/mcp/utils/prompt-injection.js +10 -4
  99. package/dist/atabey-mcp/src/mcp/utils/prompt-injection.js.map +1 -1
  100. package/dist/atabey-mcp/src/mcp/utils/security-state.d.ts +59 -0
  101. package/dist/atabey-mcp/src/mcp/utils/security-state.js +59 -0
  102. package/dist/atabey-mcp/src/mcp/utils/security-state.js.map +1 -0
  103. package/dist/atabey-mcp/src/shared/storage.d.ts +83 -0
  104. package/dist/atabey-mcp/src/shared/storage.js +275 -23
  105. package/dist/atabey-mcp/src/shared/storage.js.map +1 -1
  106. package/dist/dashboard/assets/{index-DEzcOfjO.js → index-D4PE1jZ_.js} +2 -2
  107. package/dist/dashboard/index.html +1 -1
  108. package/dist/mcp/constants.d.ts +5 -0
  109. package/dist/mcp/constants.js +6 -0
  110. package/dist/mcp/constants.js.map +1 -0
  111. package/dist/mcp/index.d.ts +2 -0
  112. package/dist/mcp/index.js +322 -0
  113. package/dist/mcp/index.js.map +1 -0
  114. package/dist/mcp/middleware/governance.d.ts +15 -0
  115. package/dist/mcp/middleware/governance.js +328 -0
  116. package/dist/mcp/middleware/governance.js.map +1 -0
  117. package/dist/mcp/resources/index.d.ts +10 -0
  118. package/dist/mcp/resources/index.js +59 -0
  119. package/dist/mcp/resources/index.js.map +1 -0
  120. package/dist/mcp/routes/api-agents.d.ts +3 -0
  121. package/dist/mcp/routes/api-agents.js +97 -0
  122. package/dist/mcp/routes/api-agents.js.map +1 -0
  123. package/dist/mcp/routes/api-common.d.ts +3 -0
  124. package/dist/mcp/routes/api-common.js +63 -0
  125. package/dist/mcp/routes/api-common.js.map +1 -0
  126. package/dist/mcp/routes/api-config.d.ts +3 -0
  127. package/dist/mcp/routes/api-config.js +639 -0
  128. package/dist/mcp/routes/api-config.js.map +1 -0
  129. package/dist/mcp/routes/api-governance.d.ts +3 -0
  130. package/dist/mcp/routes/api-governance.js +271 -0
  131. package/dist/mcp/routes/api-governance.js.map +1 -0
  132. package/dist/mcp/routes/api-orchestrator.d.ts +3 -0
  133. package/dist/mcp/routes/api-orchestrator.js +145 -0
  134. package/dist/mcp/routes/api-orchestrator.js.map +1 -0
  135. package/dist/mcp/routes/api-workspace.d.ts +3 -0
  136. package/dist/mcp/routes/api-workspace.js +274 -0
  137. package/dist/mcp/routes/api-workspace.js.map +1 -0
  138. package/dist/mcp/routes/index.d.ts +26 -0
  139. package/dist/mcp/routes/index.js +153 -0
  140. package/dist/mcp/routes/index.js.map +1 -0
  141. package/dist/mcp/routes/types.d.ts +18 -0
  142. package/dist/mcp/routes/types.js +23 -0
  143. package/dist/mcp/routes/types.js.map +1 -0
  144. package/dist/mcp/tools/compliance/mask_pii.d.ts +17 -0
  145. package/dist/mcp/tools/compliance/mask_pii.js +56 -0
  146. package/dist/mcp/tools/compliance/mask_pii.js.map +1 -0
  147. package/dist/mcp/tools/control_plane/locking.d.ts +9 -0
  148. package/dist/mcp/tools/control_plane/locking.js +85 -0
  149. package/dist/mcp/tools/control_plane/locking.js.map +1 -0
  150. package/dist/mcp/tools/control_plane/registry.d.ts +6 -0
  151. package/dist/mcp/tools/control_plane/registry.js +84 -0
  152. package/dist/mcp/tools/control_plane/registry.js.map +1 -0
  153. package/dist/mcp/tools/definitions.d.ts +7 -0
  154. package/dist/mcp/tools/definitions.js +216 -0
  155. package/dist/mcp/tools/definitions.js.map +1 -0
  156. package/dist/mcp/tools/file_system/batch_surgical_edit.d.ts +5 -0
  157. package/dist/mcp/tools/file_system/batch_surgical_edit.js +65 -0
  158. package/dist/mcp/tools/file_system/batch_surgical_edit.js.map +1 -0
  159. package/dist/mcp/tools/file_system/compress.d.ts +2 -0
  160. package/dist/mcp/tools/file_system/compress.js +123 -0
  161. package/dist/mcp/tools/file_system/compress.js.map +1 -0
  162. package/dist/mcp/tools/file_system/decompress.d.ts +2 -0
  163. package/dist/mcp/tools/file_system/decompress.js +143 -0
  164. package/dist/mcp/tools/file_system/decompress.js.map +1 -0
  165. package/dist/mcp/tools/file_system/patch_file.d.ts +2 -0
  166. package/dist/mcp/tools/file_system/patch_file.js +35 -0
  167. package/dist/mcp/tools/file_system/patch_file.js.map +1 -0
  168. package/dist/mcp/tools/file_system/read_file.d.ts +2 -0
  169. package/dist/mcp/tools/file_system/read_file.js +57 -0
  170. package/dist/mcp/tools/file_system/read_file.js.map +1 -0
  171. package/dist/mcp/tools/file_system/replace_text.d.ts +2 -0
  172. package/dist/mcp/tools/file_system/replace_text.js +51 -0
  173. package/dist/mcp/tools/file_system/replace_text.js.map +1 -0
  174. package/dist/mcp/tools/file_system/write_file.d.ts +2 -0
  175. package/dist/mcp/tools/file_system/write_file.js +56 -0
  176. package/dist/mcp/tools/file_system/write_file.js.map +1 -0
  177. package/dist/mcp/tools/framework/audit_deps.d.ts +6 -0
  178. package/dist/mcp/tools/framework/audit_deps.js +42 -0
  179. package/dist/mcp/tools/framework/audit_deps.js.map +1 -0
  180. package/dist/mcp/tools/framework/get_status.d.ts +2 -0
  181. package/dist/mcp/tools/framework/get_status.js +6 -0
  182. package/dist/mcp/tools/framework/get_status.js.map +1 -0
  183. package/dist/mcp/tools/framework/orchestrate.d.ts +2 -0
  184. package/dist/mcp/tools/framework/orchestrate.js +13 -0
  185. package/dist/mcp/tools/framework/orchestrate.js.map +1 -0
  186. package/dist/mcp/tools/framework/run_tests.d.ts +5 -0
  187. package/dist/mcp/tools/framework/run_tests.js +53 -0
  188. package/dist/mcp/tools/framework/run_tests.js.map +1 -0
  189. package/dist/mcp/tools/framework/submit_plan.d.ts +11 -0
  190. package/dist/mcp/tools/framework/submit_plan.js +14 -0
  191. package/dist/mcp/tools/framework/submit_plan.js.map +1 -0
  192. package/dist/mcp/tools/framework/update_contract_hash.d.ts +2 -0
  193. package/dist/mcp/tools/framework/update_contract_hash.js +6 -0
  194. package/dist/mcp/tools/framework/update_contract_hash.js.map +1 -0
  195. package/dist/mcp/tools/framework/update_memory.d.ts +2 -0
  196. package/dist/mcp/tools/framework/update_memory.js +9 -0
  197. package/dist/mcp/tools/framework/update_memory.js.map +1 -0
  198. package/dist/mcp/tools/index.d.ts +6 -0
  199. package/dist/mcp/tools/index.js +135 -0
  200. package/dist/mcp/tools/index.js.map +1 -0
  201. package/dist/mcp/tools/memory/delete_knowledge.d.ts +8 -0
  202. package/dist/mcp/tools/memory/delete_knowledge.js +29 -0
  203. package/dist/mcp/tools/memory/delete_knowledge.js.map +1 -0
  204. package/dist/mcp/tools/memory/get_insights.d.ts +6 -0
  205. package/dist/mcp/tools/memory/get_insights.js +23 -0
  206. package/dist/mcp/tools/memory/get_insights.js.map +1 -0
  207. package/dist/mcp/tools/memory/read_memory.d.ts +6 -0
  208. package/dist/mcp/tools/memory/read_memory.js +29 -0
  209. package/dist/mcp/tools/memory/read_memory.js.map +1 -0
  210. package/dist/mcp/tools/memory/search_knowledge.d.ts +8 -0
  211. package/dist/mcp/tools/memory/search_knowledge.js +49 -0
  212. package/dist/mcp/tools/memory/search_knowledge.js.map +1 -0
  213. package/dist/mcp/tools/memory/store_knowledge.d.ts +10 -0
  214. package/dist/mcp/tools/memory/store_knowledge.js +31 -0
  215. package/dist/mcp/tools/memory/store_knowledge.js.map +1 -0
  216. package/dist/mcp/tools/messaging/approve_operation.d.ts +24 -0
  217. package/dist/mcp/tools/messaging/approve_operation.js +81 -0
  218. package/dist/mcp/tools/messaging/approve_operation.js.map +1 -0
  219. package/dist/mcp/tools/messaging/ask_human.d.ts +21 -0
  220. package/dist/mcp/tools/messaging/ask_human.js +100 -0
  221. package/dist/mcp/tools/messaging/ask_human.js.map +1 -0
  222. package/dist/mcp/tools/messaging/log_action.d.ts +2 -0
  223. package/dist/mcp/tools/messaging/log_action.js +23 -0
  224. package/dist/mcp/tools/messaging/log_action.js.map +1 -0
  225. package/dist/mcp/tools/messaging/send_message.d.ts +2 -0
  226. package/dist/mcp/tools/messaging/send_message.js +111 -0
  227. package/dist/mcp/tools/messaging/send_message.js.map +1 -0
  228. package/dist/mcp/tools/network/http_proxy.d.ts +9 -0
  229. package/dist/mcp/tools/network/http_proxy.js +166 -0
  230. package/dist/mcp/tools/network/http_proxy.js.map +1 -0
  231. package/dist/mcp/tools/observability/check_ports.d.ts +6 -0
  232. package/dist/mcp/tools/observability/check_ports.js +43 -0
  233. package/dist/mcp/tools/observability/check_ports.js.map +1 -0
  234. package/dist/mcp/tools/observability/get_health.d.ts +5 -0
  235. package/dist/mcp/tools/observability/get_health.js +20 -0
  236. package/dist/mcp/tools/observability/get_health.js.map +1 -0
  237. package/dist/mcp/tools/quality/analyze_code_quality.d.ts +11 -0
  238. package/dist/mcp/tools/quality/analyze_code_quality.js +115 -0
  239. package/dist/mcp/tools/quality/analyze_code_quality.js.map +1 -0
  240. package/dist/mcp/tools/quality/check_architecture_compliance.d.ts +11 -0
  241. package/dist/mcp/tools/quality/check_architecture_compliance.js +135 -0
  242. package/dist/mcp/tools/quality/check_architecture_compliance.js.map +1 -0
  243. package/dist/mcp/tools/quality/check_lint.d.ts +5 -0
  244. package/dist/mcp/tools/quality/check_lint.js +31 -0
  245. package/dist/mcp/tools/quality/check_lint.js.map +1 -0
  246. package/dist/mcp/tools/schemas.d.ts +482 -0
  247. package/dist/mcp/tools/schemas.js +198 -0
  248. package/dist/mcp/tools/schemas.js.map +1 -0
  249. package/dist/mcp/tools/search/get_gaps.d.ts +6 -0
  250. package/dist/mcp/tools/search/get_gaps.js +49 -0
  251. package/dist/mcp/tools/search/get_gaps.js.map +1 -0
  252. package/dist/mcp/tools/search/get_map.d.ts +6 -0
  253. package/dist/mcp/tools/search/get_map.js +44 -0
  254. package/dist/mcp/tools/search/get_map.js.map +1 -0
  255. package/dist/mcp/tools/search/grep_search.d.ts +5 -0
  256. package/dist/mcp/tools/search/grep_search.js +86 -0
  257. package/dist/mcp/tools/search/grep_search.js.map +1 -0
  258. package/dist/mcp/tools/search/list_dir.d.ts +5 -0
  259. package/dist/mcp/tools/search/list_dir.js +32 -0
  260. package/dist/mcp/tools/search/list_dir.js.map +1 -0
  261. package/dist/mcp/tools/shell/run_command.d.ts +2 -0
  262. package/dist/mcp/tools/shell/run_command.js +224 -0
  263. package/dist/mcp/tools/shell/run_command.js.map +1 -0
  264. package/dist/mcp/tools/types.d.ts +28 -0
  265. package/dist/mcp/tools/types.js +3 -0
  266. package/dist/mcp/tools/types.js.map +1 -0
  267. package/dist/mcp/utils/auth.d.ts +40 -0
  268. package/dist/mcp/utils/auth.js +154 -0
  269. package/dist/mcp/utils/auth.js.map +1 -0
  270. package/dist/mcp/utils/auto-rollback.d.ts +71 -0
  271. package/dist/mcp/utils/auto-rollback.js +375 -0
  272. package/dist/mcp/utils/auto-rollback.js.map +1 -0
  273. package/dist/mcp/utils/cli.d.ts +16 -0
  274. package/dist/mcp/utils/cli.js +60 -0
  275. package/dist/mcp/utils/cli.js.map +1 -0
  276. package/dist/mcp/utils/client-config.d.ts +56 -0
  277. package/dist/mcp/utils/client-config.js +181 -0
  278. package/dist/mcp/utils/client-config.js.map +1 -0
  279. package/dist/mcp/utils/compliance-bootstrap.d.ts +8 -0
  280. package/dist/mcp/utils/compliance-bootstrap.js +46 -0
  281. package/dist/mcp/utils/compliance-bootstrap.js.map +1 -0
  282. package/dist/mcp/utils/compliance.d.ts +21 -0
  283. package/dist/mcp/utils/compliance.js +333 -0
  284. package/dist/mcp/utils/compliance.js.map +1 -0
  285. package/dist/mcp/utils/consent.d.ts +25 -0
  286. package/dist/mcp/utils/consent.js +60 -0
  287. package/dist/mcp/utils/consent.js.map +1 -0
  288. package/dist/mcp/utils/context-optimizer.d.ts +110 -0
  289. package/dist/mcp/utils/context-optimizer.js +391 -0
  290. package/dist/mcp/utils/context-optimizer.js.map +1 -0
  291. package/dist/mcp/utils/discipline.d.ts +69 -0
  292. package/dist/mcp/utils/discipline.js +317 -0
  293. package/dist/mcp/utils/discipline.js.map +1 -0
  294. package/dist/mcp/utils/errors.d.ts +46 -0
  295. package/dist/mcp/utils/errors.js +69 -0
  296. package/dist/mcp/utils/errors.js.map +1 -0
  297. package/dist/mcp/utils/finops.d.ts +139 -0
  298. package/dist/mcp/utils/finops.js +324 -0
  299. package/dist/mcp/utils/finops.js.map +1 -0
  300. package/dist/mcp/utils/framework-config.d.ts +27 -0
  301. package/dist/mcp/utils/framework-config.js +81 -0
  302. package/dist/mcp/utils/framework-config.js.map +1 -0
  303. package/dist/mcp/utils/fs.d.ts +19 -0
  304. package/dist/mcp/utils/fs.js +48 -0
  305. package/dist/mcp/utils/fs.js.map +1 -0
  306. package/dist/mcp/utils/human-in-loop.d.ts +130 -0
  307. package/dist/mcp/utils/human-in-loop.js +382 -0
  308. package/dist/mcp/utils/human-in-loop.js.map +1 -0
  309. package/dist/mcp/utils/license-scanner.d.ts +71 -0
  310. package/dist/mcp/utils/license-scanner.js +284 -0
  311. package/dist/mcp/utils/license-scanner.js.map +1 -0
  312. package/dist/mcp/utils/loop-detector.d.ts +106 -0
  313. package/dist/mcp/utils/loop-detector.js +413 -0
  314. package/dist/mcp/utils/loop-detector.js.map +1 -0
  315. package/dist/mcp/utils/memory.d.ts +3 -0
  316. package/dist/mcp/utils/memory.js +75 -0
  317. package/dist/mcp/utils/memory.js.map +1 -0
  318. package/dist/mcp/utils/metrics.d.ts +39 -0
  319. package/dist/mcp/utils/metrics.js +72 -0
  320. package/dist/mcp/utils/metrics.js.map +1 -0
  321. package/dist/mcp/utils/orchestrator-bootstrap.d.ts +14 -0
  322. package/dist/mcp/utils/orchestrator-bootstrap.js +101 -0
  323. package/dist/mcp/utils/orchestrator-bootstrap.js.map +1 -0
  324. package/dist/mcp/utils/permissions.d.ts +76 -0
  325. package/dist/mcp/utils/permissions.js +208 -0
  326. package/dist/mcp/utils/permissions.js.map +1 -0
  327. package/dist/mcp/utils/prompt-injection.d.ts +20 -0
  328. package/dist/mcp/utils/prompt-injection.js +70 -0
  329. package/dist/mcp/utils/prompt-injection.js.map +1 -0
  330. package/dist/mcp/utils/quality.d.ts +19 -0
  331. package/dist/mcp/utils/quality.js +125 -0
  332. package/dist/mcp/utils/quality.js.map +1 -0
  333. package/dist/mcp/utils/rules-engine.d.ts +78 -0
  334. package/dist/mcp/utils/rules-engine.js +232 -0
  335. package/dist/mcp/utils/rules-engine.js.map +1 -0
  336. package/dist/mcp/utils/security.d.ts +10 -0
  337. package/dist/mcp/utils/security.js +61 -0
  338. package/dist/mcp/utils/security.js.map +1 -0
  339. package/dist/mcp/utils/silent-router.d.ts +49 -0
  340. package/dist/mcp/utils/silent-router.js +155 -0
  341. package/dist/mcp/utils/silent-router.js.map +1 -0
  342. package/dist/mcp/utils/storage.d.ts +61 -0
  343. package/dist/mcp/utils/storage.js +400 -0
  344. package/dist/mcp/utils/storage.js.map +1 -0
  345. package/dist/mcp/utils/telemetry-streamer.d.ts +133 -0
  346. package/dist/mcp/utils/telemetry-streamer.js +397 -0
  347. package/dist/mcp/utils/telemetry-streamer.js.map +1 -0
  348. package/dist/mcp/utils/types.d.ts +27 -0
  349. package/dist/mcp/utils/types.js +17 -0
  350. package/dist/mcp/utils/types.js.map +1 -0
  351. package/dist/mcp/utils/web-config.d.ts +31 -0
  352. package/dist/mcp/utils/web-config.js +89 -0
  353. package/dist/mcp/utils/web-config.js.map +1 -0
  354. package/dist/mcp/utils/workspace.d.ts +98 -0
  355. package/dist/mcp/utils/workspace.js +201 -0
  356. package/dist/mcp/utils/workspace.js.map +1 -0
  357. package/dist/mcp/utils/zod-to-mcp.d.ts +10 -0
  358. package/dist/mcp/utils/zod-to-mcp.js +80 -0
  359. package/dist/mcp/utils/zod-to-mcp.js.map +1 -0
  360. package/dist/shared/audit.d.ts +1 -0
  361. package/dist/shared/audit.js +2 -0
  362. package/dist/shared/audit.js.map +1 -0
  363. package/dist/shared/constants.d.ts +1 -0
  364. package/dist/shared/constants.js +2 -0
  365. package/dist/shared/constants.js.map +1 -0
  366. package/dist/shared/errors.d.ts +1 -0
  367. package/dist/shared/errors.js +2 -0
  368. package/dist/shared/errors.js.map +1 -0
  369. package/dist/shared/fs.d.ts +1 -0
  370. package/dist/shared/fs.js +2 -0
  371. package/dist/shared/fs.js.map +1 -0
  372. package/dist/shared/lock.d.ts +1 -0
  373. package/dist/shared/lock.js +2 -0
  374. package/dist/shared/lock.js.map +1 -0
  375. package/dist/shared/logger.d.ts +1 -0
  376. package/dist/shared/logger.js +2 -0
  377. package/dist/shared/logger.js.map +1 -0
  378. package/dist/shared/pii.d.ts +1 -0
  379. package/dist/shared/pii.js +2 -0
  380. package/dist/shared/pii.js.map +1 -0
  381. package/dist/shared/retention.d.ts +1 -0
  382. package/dist/shared/retention.js +2 -0
  383. package/dist/shared/retention.js.map +1 -0
  384. package/dist/shared/src/audit-chain.d.ts +51 -0
  385. package/dist/shared/src/audit-chain.js +85 -0
  386. package/dist/shared/src/audit-chain.js.map +1 -0
  387. package/dist/shared/src/audit.d.ts +8 -0
  388. package/dist/shared/src/audit.js +82 -18
  389. package/dist/shared/src/audit.js.map +1 -1
  390. package/dist/shared/src/file-lock.d.ts +85 -0
  391. package/dist/shared/src/file-lock.js +246 -0
  392. package/dist/shared/src/file-lock.js.map +1 -0
  393. package/dist/shared/src/index.d.ts +9 -0
  394. package/dist/shared/src/index.js +9 -0
  395. package/dist/shared/src/index.js.map +1 -1
  396. package/dist/shared/src/job-queue.d.ts +53 -0
  397. package/dist/shared/src/job-queue.js +127 -0
  398. package/dist/shared/src/job-queue.js.map +1 -0
  399. package/dist/shared/src/policy-gate.d.ts +42 -0
  400. package/dist/shared/src/policy-gate.js +148 -0
  401. package/dist/shared/src/policy-gate.js.map +1 -0
  402. package/dist/shared/src/resilience.d.ts +84 -0
  403. package/dist/shared/src/resilience.js +217 -0
  404. package/dist/shared/src/resilience.js.map +1 -0
  405. package/dist/shared/src/sandbox-fs.d.ts +28 -0
  406. package/dist/shared/src/sandbox-fs.js +148 -0
  407. package/dist/shared/src/sandbox-fs.js.map +1 -0
  408. package/dist/shared/src/sandbox-runtime.d.ts +85 -0
  409. package/dist/shared/src/sandbox-runtime.js +250 -0
  410. package/dist/shared/src/sandbox-runtime.js.map +1 -0
  411. package/dist/shared/src/sandbox.d.ts +54 -0
  412. package/dist/shared/src/sandbox.js +179 -0
  413. package/dist/shared/src/sandbox.js.map +1 -0
  414. package/dist/shared/src/worker-pool.d.ts +52 -0
  415. package/dist/shared/src/worker-pool.js +210 -0
  416. package/dist/shared/src/worker-pool.js.map +1 -0
  417. package/dist/shared/src/worker-thread.d.ts +21 -0
  418. package/dist/shared/src/worker-thread.js +67 -0
  419. package/dist/shared/src/worker-thread.js.map +1 -0
  420. package/dist/shared/storage.d.ts +238 -0
  421. package/dist/shared/storage.js +500 -0
  422. package/dist/shared/storage.js.map +1 -0
  423. package/dist/shared/string.d.ts +1 -0
  424. package/dist/shared/string.js +2 -0
  425. package/dist/shared/string.js.map +1 -0
  426. package/dist/shared/types.d.ts +1 -0
  427. package/dist/shared/types.js +2 -0
  428. package/dist/shared/types.js.map +1 -0
  429. package/dist/src/mcp/constants.d.ts +5 -0
  430. package/dist/src/mcp/constants.js +6 -0
  431. package/dist/src/mcp/constants.js.map +1 -0
  432. package/dist/src/mcp/index.d.ts +2 -0
  433. package/dist/src/mcp/index.js +322 -0
  434. package/dist/src/mcp/index.js.map +1 -0
  435. package/dist/src/mcp/middleware/governance.d.ts +15 -0
  436. package/dist/src/mcp/middleware/governance.js +328 -0
  437. package/dist/src/mcp/middleware/governance.js.map +1 -0
  438. package/dist/src/mcp/resources/index.d.ts +10 -0
  439. package/dist/src/mcp/resources/index.js +59 -0
  440. package/dist/src/mcp/resources/index.js.map +1 -0
  441. package/dist/src/mcp/routes/api-agents.d.ts +3 -0
  442. package/dist/src/mcp/routes/api-agents.js +97 -0
  443. package/dist/src/mcp/routes/api-agents.js.map +1 -0
  444. package/dist/src/mcp/routes/api-common.d.ts +3 -0
  445. package/dist/src/mcp/routes/api-common.js +63 -0
  446. package/dist/src/mcp/routes/api-common.js.map +1 -0
  447. package/dist/src/mcp/routes/api-config.d.ts +3 -0
  448. package/dist/src/mcp/routes/api-config.js +639 -0
  449. package/dist/src/mcp/routes/api-config.js.map +1 -0
  450. package/dist/src/mcp/routes/api-governance.d.ts +3 -0
  451. package/dist/src/mcp/routes/api-governance.js +271 -0
  452. package/dist/src/mcp/routes/api-governance.js.map +1 -0
  453. package/dist/src/mcp/routes/api-orchestrator.d.ts +3 -0
  454. package/dist/src/mcp/routes/api-orchestrator.js +145 -0
  455. package/dist/src/mcp/routes/api-orchestrator.js.map +1 -0
  456. package/dist/src/mcp/routes/api-workspace.d.ts +3 -0
  457. package/dist/src/mcp/routes/api-workspace.js +274 -0
  458. package/dist/src/mcp/routes/api-workspace.js.map +1 -0
  459. package/dist/src/mcp/routes/index.d.ts +26 -0
  460. package/dist/src/mcp/routes/index.js +153 -0
  461. package/dist/src/mcp/routes/index.js.map +1 -0
  462. package/dist/src/mcp/routes/types.d.ts +18 -0
  463. package/dist/src/mcp/routes/types.js +23 -0
  464. package/dist/src/mcp/routes/types.js.map +1 -0
  465. package/dist/src/mcp/tools/compliance/mask_pii.d.ts +17 -0
  466. package/dist/src/mcp/tools/compliance/mask_pii.js +56 -0
  467. package/dist/src/mcp/tools/compliance/mask_pii.js.map +1 -0
  468. package/dist/src/mcp/tools/control_plane/locking.d.ts +9 -0
  469. package/dist/src/mcp/tools/control_plane/locking.js +85 -0
  470. package/dist/src/mcp/tools/control_plane/locking.js.map +1 -0
  471. package/dist/src/mcp/tools/control_plane/registry.d.ts +6 -0
  472. package/dist/src/mcp/tools/control_plane/registry.js +84 -0
  473. package/dist/src/mcp/tools/control_plane/registry.js.map +1 -0
  474. package/dist/src/mcp/tools/definitions.d.ts +7 -0
  475. package/dist/src/mcp/tools/definitions.js +216 -0
  476. package/dist/src/mcp/tools/definitions.js.map +1 -0
  477. package/dist/src/mcp/tools/file_system/batch_surgical_edit.d.ts +5 -0
  478. package/dist/src/mcp/tools/file_system/batch_surgical_edit.js +65 -0
  479. package/dist/src/mcp/tools/file_system/batch_surgical_edit.js.map +1 -0
  480. package/dist/src/mcp/tools/file_system/compress.d.ts +2 -0
  481. package/dist/src/mcp/tools/file_system/compress.js +123 -0
  482. package/dist/src/mcp/tools/file_system/compress.js.map +1 -0
  483. package/dist/src/mcp/tools/file_system/decompress.d.ts +2 -0
  484. package/dist/src/mcp/tools/file_system/decompress.js +143 -0
  485. package/dist/src/mcp/tools/file_system/decompress.js.map +1 -0
  486. package/dist/src/mcp/tools/file_system/patch_file.d.ts +2 -0
  487. package/dist/src/mcp/tools/file_system/patch_file.js +35 -0
  488. package/dist/src/mcp/tools/file_system/patch_file.js.map +1 -0
  489. package/dist/src/mcp/tools/file_system/read_file.d.ts +2 -0
  490. package/dist/src/mcp/tools/file_system/read_file.js +57 -0
  491. package/dist/src/mcp/tools/file_system/read_file.js.map +1 -0
  492. package/dist/src/mcp/tools/file_system/replace_text.d.ts +2 -0
  493. package/dist/src/mcp/tools/file_system/replace_text.js +51 -0
  494. package/dist/src/mcp/tools/file_system/replace_text.js.map +1 -0
  495. package/dist/src/mcp/tools/file_system/write_file.d.ts +2 -0
  496. package/dist/src/mcp/tools/file_system/write_file.js +56 -0
  497. package/dist/src/mcp/tools/file_system/write_file.js.map +1 -0
  498. package/dist/src/mcp/tools/framework/audit_deps.d.ts +6 -0
  499. package/dist/src/mcp/tools/framework/audit_deps.js +42 -0
  500. package/dist/src/mcp/tools/framework/audit_deps.js.map +1 -0
  501. package/dist/src/mcp/tools/framework/get_status.d.ts +2 -0
  502. package/dist/src/mcp/tools/framework/get_status.js +6 -0
  503. package/dist/src/mcp/tools/framework/get_status.js.map +1 -0
  504. package/dist/src/mcp/tools/framework/orchestrate.d.ts +2 -0
  505. package/dist/src/mcp/tools/framework/orchestrate.js +13 -0
  506. package/dist/src/mcp/tools/framework/orchestrate.js.map +1 -0
  507. package/dist/src/mcp/tools/framework/run_tests.d.ts +5 -0
  508. package/dist/src/mcp/tools/framework/run_tests.js +53 -0
  509. package/dist/src/mcp/tools/framework/run_tests.js.map +1 -0
  510. package/dist/src/mcp/tools/framework/submit_plan.d.ts +11 -0
  511. package/dist/src/mcp/tools/framework/submit_plan.js +14 -0
  512. package/dist/src/mcp/tools/framework/submit_plan.js.map +1 -0
  513. package/dist/src/mcp/tools/framework/update_contract_hash.d.ts +2 -0
  514. package/dist/src/mcp/tools/framework/update_contract_hash.js +6 -0
  515. package/dist/src/mcp/tools/framework/update_contract_hash.js.map +1 -0
  516. package/dist/src/mcp/tools/framework/update_memory.d.ts +2 -0
  517. package/dist/src/mcp/tools/framework/update_memory.js +9 -0
  518. package/dist/src/mcp/tools/framework/update_memory.js.map +1 -0
  519. package/dist/src/mcp/tools/index.d.ts +6 -0
  520. package/dist/src/mcp/tools/index.js +135 -0
  521. package/dist/src/mcp/tools/index.js.map +1 -0
  522. package/dist/src/mcp/tools/memory/delete_knowledge.d.ts +8 -0
  523. package/dist/src/mcp/tools/memory/delete_knowledge.js +29 -0
  524. package/dist/src/mcp/tools/memory/delete_knowledge.js.map +1 -0
  525. package/dist/src/mcp/tools/memory/get_insights.d.ts +6 -0
  526. package/dist/src/mcp/tools/memory/get_insights.js +23 -0
  527. package/dist/src/mcp/tools/memory/get_insights.js.map +1 -0
  528. package/dist/src/mcp/tools/memory/read_memory.d.ts +6 -0
  529. package/dist/src/mcp/tools/memory/read_memory.js +29 -0
  530. package/dist/src/mcp/tools/memory/read_memory.js.map +1 -0
  531. package/dist/src/mcp/tools/memory/search_knowledge.d.ts +8 -0
  532. package/dist/src/mcp/tools/memory/search_knowledge.js +49 -0
  533. package/dist/src/mcp/tools/memory/search_knowledge.js.map +1 -0
  534. package/dist/src/mcp/tools/memory/store_knowledge.d.ts +10 -0
  535. package/dist/src/mcp/tools/memory/store_knowledge.js +31 -0
  536. package/dist/src/mcp/tools/memory/store_knowledge.js.map +1 -0
  537. package/dist/src/mcp/tools/messaging/approve_operation.d.ts +24 -0
  538. package/dist/src/mcp/tools/messaging/approve_operation.js +81 -0
  539. package/dist/src/mcp/tools/messaging/approve_operation.js.map +1 -0
  540. package/dist/src/mcp/tools/messaging/ask_human.d.ts +21 -0
  541. package/dist/src/mcp/tools/messaging/ask_human.js +100 -0
  542. package/dist/src/mcp/tools/messaging/ask_human.js.map +1 -0
  543. package/dist/src/mcp/tools/messaging/log_action.d.ts +2 -0
  544. package/dist/src/mcp/tools/messaging/log_action.js +23 -0
  545. package/dist/src/mcp/tools/messaging/log_action.js.map +1 -0
  546. package/dist/src/mcp/tools/messaging/send_message.d.ts +2 -0
  547. package/dist/src/mcp/tools/messaging/send_message.js +111 -0
  548. package/dist/src/mcp/tools/messaging/send_message.js.map +1 -0
  549. package/dist/src/mcp/tools/network/http_proxy.d.ts +9 -0
  550. package/dist/src/mcp/tools/network/http_proxy.js +166 -0
  551. package/dist/src/mcp/tools/network/http_proxy.js.map +1 -0
  552. package/dist/src/mcp/tools/observability/check_ports.d.ts +6 -0
  553. package/dist/src/mcp/tools/observability/check_ports.js +43 -0
  554. package/dist/src/mcp/tools/observability/check_ports.js.map +1 -0
  555. package/dist/src/mcp/tools/observability/get_health.d.ts +5 -0
  556. package/dist/src/mcp/tools/observability/get_health.js +20 -0
  557. package/dist/src/mcp/tools/observability/get_health.js.map +1 -0
  558. package/dist/src/mcp/tools/quality/analyze_code_quality.d.ts +11 -0
  559. package/dist/src/mcp/tools/quality/analyze_code_quality.js +115 -0
  560. package/dist/src/mcp/tools/quality/analyze_code_quality.js.map +1 -0
  561. package/dist/src/mcp/tools/quality/check_architecture_compliance.d.ts +11 -0
  562. package/dist/src/mcp/tools/quality/check_architecture_compliance.js +135 -0
  563. package/dist/src/mcp/tools/quality/check_architecture_compliance.js.map +1 -0
  564. package/dist/src/mcp/tools/quality/check_lint.d.ts +5 -0
  565. package/dist/src/mcp/tools/quality/check_lint.js +31 -0
  566. package/dist/src/mcp/tools/quality/check_lint.js.map +1 -0
  567. package/dist/src/mcp/tools/schemas.d.ts +482 -0
  568. package/dist/src/mcp/tools/schemas.js +198 -0
  569. package/dist/src/mcp/tools/schemas.js.map +1 -0
  570. package/dist/src/mcp/tools/search/get_gaps.d.ts +6 -0
  571. package/dist/src/mcp/tools/search/get_gaps.js +49 -0
  572. package/dist/src/mcp/tools/search/get_gaps.js.map +1 -0
  573. package/dist/src/mcp/tools/search/get_map.d.ts +6 -0
  574. package/dist/src/mcp/tools/search/get_map.js +44 -0
  575. package/dist/src/mcp/tools/search/get_map.js.map +1 -0
  576. package/dist/src/mcp/tools/search/grep_search.d.ts +5 -0
  577. package/dist/src/mcp/tools/search/grep_search.js +86 -0
  578. package/dist/src/mcp/tools/search/grep_search.js.map +1 -0
  579. package/dist/src/mcp/tools/search/list_dir.d.ts +5 -0
  580. package/dist/src/mcp/tools/search/list_dir.js +32 -0
  581. package/dist/src/mcp/tools/search/list_dir.js.map +1 -0
  582. package/dist/src/mcp/tools/shell/run_command.d.ts +2 -0
  583. package/dist/src/mcp/tools/shell/run_command.js +224 -0
  584. package/dist/src/mcp/tools/shell/run_command.js.map +1 -0
  585. package/dist/src/mcp/tools/types.d.ts +28 -0
  586. package/dist/src/mcp/tools/types.js +3 -0
  587. package/dist/src/mcp/tools/types.js.map +1 -0
  588. package/dist/src/mcp/utils/auth.d.ts +40 -0
  589. package/dist/src/mcp/utils/auth.js +154 -0
  590. package/dist/src/mcp/utils/auth.js.map +1 -0
  591. package/dist/src/mcp/utils/auto-rollback.d.ts +71 -0
  592. package/dist/src/mcp/utils/auto-rollback.js +375 -0
  593. package/dist/src/mcp/utils/auto-rollback.js.map +1 -0
  594. package/dist/src/mcp/utils/cli.d.ts +16 -0
  595. package/dist/src/mcp/utils/cli.js +60 -0
  596. package/dist/src/mcp/utils/cli.js.map +1 -0
  597. package/dist/src/mcp/utils/client-config.d.ts +56 -0
  598. package/dist/src/mcp/utils/client-config.js +181 -0
  599. package/dist/src/mcp/utils/client-config.js.map +1 -0
  600. package/dist/src/mcp/utils/compliance-bootstrap.d.ts +8 -0
  601. package/dist/src/mcp/utils/compliance-bootstrap.js +46 -0
  602. package/dist/src/mcp/utils/compliance-bootstrap.js.map +1 -0
  603. package/dist/src/mcp/utils/compliance.d.ts +21 -0
  604. package/dist/src/mcp/utils/compliance.js +333 -0
  605. package/dist/src/mcp/utils/compliance.js.map +1 -0
  606. package/dist/src/mcp/utils/consent.d.ts +25 -0
  607. package/dist/src/mcp/utils/consent.js +60 -0
  608. package/dist/src/mcp/utils/consent.js.map +1 -0
  609. package/dist/src/mcp/utils/context-optimizer.d.ts +110 -0
  610. package/dist/src/mcp/utils/context-optimizer.js +391 -0
  611. package/dist/src/mcp/utils/context-optimizer.js.map +1 -0
  612. package/dist/src/mcp/utils/discipline.d.ts +69 -0
  613. package/dist/src/mcp/utils/discipline.js +257 -0
  614. package/dist/src/mcp/utils/discipline.js.map +1 -0
  615. package/dist/src/mcp/utils/errors.d.ts +46 -0
  616. package/dist/src/mcp/utils/errors.js +69 -0
  617. package/dist/src/mcp/utils/errors.js.map +1 -0
  618. package/dist/src/mcp/utils/finops.d.ts +139 -0
  619. package/dist/src/mcp/utils/finops.js +324 -0
  620. package/dist/src/mcp/utils/finops.js.map +1 -0
  621. package/dist/src/mcp/utils/framework-config.d.ts +27 -0
  622. package/dist/src/mcp/utils/framework-config.js +81 -0
  623. package/dist/src/mcp/utils/framework-config.js.map +1 -0
  624. package/dist/src/mcp/utils/fs.d.ts +19 -0
  625. package/dist/src/mcp/utils/fs.js +48 -0
  626. package/dist/src/mcp/utils/fs.js.map +1 -0
  627. package/dist/src/mcp/utils/human-in-loop.d.ts +130 -0
  628. package/dist/src/mcp/utils/human-in-loop.js +326 -0
  629. package/dist/src/mcp/utils/human-in-loop.js.map +1 -0
  630. package/dist/src/mcp/utils/license-scanner.d.ts +71 -0
  631. package/dist/src/mcp/utils/license-scanner.js +284 -0
  632. package/dist/src/mcp/utils/license-scanner.js.map +1 -0
  633. package/dist/src/mcp/utils/loop-detector.d.ts +106 -0
  634. package/dist/src/mcp/utils/loop-detector.js +413 -0
  635. package/dist/src/mcp/utils/loop-detector.js.map +1 -0
  636. package/dist/src/mcp/utils/memory.d.ts +3 -0
  637. package/dist/src/mcp/utils/memory.js +75 -0
  638. package/dist/src/mcp/utils/memory.js.map +1 -0
  639. package/dist/src/mcp/utils/metrics.d.ts +39 -0
  640. package/dist/src/mcp/utils/metrics.js +72 -0
  641. package/dist/src/mcp/utils/metrics.js.map +1 -0
  642. package/dist/src/mcp/utils/orchestrator-bootstrap.d.ts +14 -0
  643. package/dist/src/mcp/utils/orchestrator-bootstrap.js +98 -0
  644. package/dist/src/mcp/utils/orchestrator-bootstrap.js.map +1 -0
  645. package/dist/src/mcp/utils/permissions.d.ts +76 -0
  646. package/dist/src/mcp/utils/permissions.js +208 -0
  647. package/dist/src/mcp/utils/permissions.js.map +1 -0
  648. package/dist/src/mcp/utils/prompt-injection.d.ts +20 -0
  649. package/dist/src/mcp/utils/prompt-injection.js +70 -0
  650. package/dist/src/mcp/utils/prompt-injection.js.map +1 -0
  651. package/dist/src/mcp/utils/quality.d.ts +19 -0
  652. package/dist/src/mcp/utils/quality.js +125 -0
  653. package/dist/src/mcp/utils/quality.js.map +1 -0
  654. package/dist/src/mcp/utils/rules-engine.d.ts +78 -0
  655. package/dist/src/mcp/utils/rules-engine.js +232 -0
  656. package/dist/src/mcp/utils/rules-engine.js.map +1 -0
  657. package/dist/src/mcp/utils/security.d.ts +10 -0
  658. package/dist/src/mcp/utils/security.js +61 -0
  659. package/dist/src/mcp/utils/security.js.map +1 -0
  660. package/dist/src/mcp/utils/silent-router.d.ts +49 -0
  661. package/dist/src/mcp/utils/silent-router.js +155 -0
  662. package/dist/src/mcp/utils/silent-router.js.map +1 -0
  663. package/dist/src/mcp/utils/storage.d.ts +61 -0
  664. package/dist/src/mcp/utils/storage.js +400 -0
  665. package/dist/src/mcp/utils/storage.js.map +1 -0
  666. package/dist/src/mcp/utils/telemetry-streamer.d.ts +133 -0
  667. package/dist/src/mcp/utils/telemetry-streamer.js +397 -0
  668. package/dist/src/mcp/utils/telemetry-streamer.js.map +1 -0
  669. package/dist/src/mcp/utils/types.d.ts +27 -0
  670. package/dist/src/mcp/utils/types.js +17 -0
  671. package/dist/src/mcp/utils/types.js.map +1 -0
  672. package/dist/src/mcp/utils/web-config.d.ts +31 -0
  673. package/dist/src/mcp/utils/web-config.js +89 -0
  674. package/dist/src/mcp/utils/web-config.js.map +1 -0
  675. package/dist/src/mcp/utils/workspace.d.ts +98 -0
  676. package/dist/src/mcp/utils/workspace.js +201 -0
  677. package/dist/src/mcp/utils/workspace.js.map +1 -0
  678. package/dist/src/mcp/utils/zod-to-mcp.d.ts +10 -0
  679. package/dist/src/mcp/utils/zod-to-mcp.js +80 -0
  680. package/dist/src/mcp/utils/zod-to-mcp.js.map +1 -0
  681. package/dist/src/shared/audit.d.ts +1 -0
  682. package/dist/src/shared/audit.js +2 -0
  683. package/dist/src/shared/audit.js.map +1 -0
  684. package/dist/src/shared/constants.d.ts +1 -0
  685. package/dist/src/shared/constants.js +2 -0
  686. package/dist/src/shared/constants.js.map +1 -0
  687. package/dist/src/shared/errors.d.ts +1 -0
  688. package/dist/src/shared/errors.js +2 -0
  689. package/dist/src/shared/errors.js.map +1 -0
  690. package/dist/src/shared/fs.d.ts +1 -0
  691. package/dist/src/shared/fs.js +2 -0
  692. package/dist/src/shared/fs.js.map +1 -0
  693. package/dist/src/shared/lock.d.ts +1 -0
  694. package/dist/src/shared/lock.js +2 -0
  695. package/dist/src/shared/lock.js.map +1 -0
  696. package/dist/src/shared/logger.d.ts +1 -0
  697. package/dist/src/shared/logger.js +2 -0
  698. package/dist/src/shared/logger.js.map +1 -0
  699. package/dist/src/shared/pii.d.ts +1 -0
  700. package/dist/src/shared/pii.js +2 -0
  701. package/dist/src/shared/pii.js.map +1 -0
  702. package/dist/src/shared/retention.d.ts +1 -0
  703. package/dist/src/shared/retention.js +2 -0
  704. package/dist/src/shared/retention.js.map +1 -0
  705. package/dist/src/shared/storage.d.ts +176 -0
  706. package/dist/src/shared/storage.js +346 -0
  707. package/dist/src/shared/storage.js.map +1 -0
  708. package/dist/src/shared/string.d.ts +1 -0
  709. package/dist/src/shared/string.js +2 -0
  710. package/dist/src/shared/string.js.map +1 -0
  711. package/dist/src/shared/types.d.ts +1 -0
  712. package/dist/src/shared/types.js +2 -0
  713. package/dist/src/shared/types.js.map +1 -0
  714. package/package.json +7 -10
package/README.md CHANGED
@@ -4,9 +4,9 @@
4
4
  [![npm](https://img.shields.io/npm/v/atabey-mcp)](https://www.npmjs.com/package/atabey-mcp)
5
5
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
6
6
  [![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io)
7
- [![MCP Tools](https://img.shields.io/badge/MCP%20Tools-32-blue)](https://github.com/ysf-bkr/atabey)
7
+ [![MCP Tools](https://img.shields.io/badge/MCP%20Tools-39-blue)](https://github.com/ysf-bkr/atabey)
8
8
 
9
- **Atabey MCP** is the MCP (Model Context Protocol) server component of the Agent Atabey framework. It provides 32 MCP tools, a multi-layer governance pipeline (validation, PII masking, discipline, loop detection, FinOps, CRUD governance, risk gating, and more), vector memory, risk engine, loop detection, FinOps budget management, auto-rollback, prompt injection protection, and a real-time WebSocket dashboard.
9
+ **Atabey MCP** is the MCP (Model Context Protocol) server component of the Agent Atabey framework. It provides 39 MCP tools, a multi-layer governance pipeline (validation, PII masking, discipline, loop detection, FinOps, CRUD governance, risk gating, and more), vector memory, risk engine, loop detection, FinOps budget management, auto-rollback, prompt injection protection, and a real-time WebSocket dashboard.
10
10
 
11
11
  ---
12
12
 
@@ -14,10 +14,10 @@
14
14
 
15
15
  | Capability | Description |
16
16
  |-----------|-------------|
17
- | **MCP Tools** | 32 tools across 8 categories: file system, search, messaging, governance, memory, quality, network, orchestration |
17
+ | **MCP Tools** | 39 tools across 8 categories: file system, search, messaging, governance, memory, quality, network, orchestration |
18
18
  | **Governance Pipeline** | Multi-layer pre/post execution validation: PII masking, risk gate, discipline, loop detection, FinOps, license scan, CRUD governance, and more |
19
19
  | **Memory** | Vector memory with TF-IDF/OpenAI embeddings, project memory, knowledge base |
20
- | **Dashboard** | Real-time WebSocket dashboard with 12 live modules |
20
+ | **Dashboard** | Real-time WebSocket dashboard with extensive live modules (Agent, Hermes, Approvals, Quality, Compliance, FinOps, Privacy, Loop Detection, etc.) |
21
21
  | **Auth** | Bearer token authentication for HTTP/SSE mode |
22
22
  | **Multi-Transport** | Stdio (per-developer) + HTTP/SSE (team server) |
23
23
 
@@ -42,7 +42,7 @@ MCP_TRANSPORT=http MCP_PORT=5858 atabey-mcp
42
42
 
43
43
  ---
44
44
 
45
- ## 🛠️ 32 MCP Tools
45
+ ## 🛠️ 39 MCP Tools
46
46
 
47
47
  ### File System (6)
48
48
  | Tool | Description |
package/bin/cli.js CHANGED
@@ -66,8 +66,8 @@ if (nodeMajor < 18) {
66
66
 
67
67
  // ─── Start MCP Server ─────────────────────────────────────────────
68
68
  const candidates = [
69
- join(__dirname, "../dist/mcp/index.js"),
70
69
  join(__dirname, "../dist/atabey-mcp/src/mcp/index.js"),
70
+ join(__dirname, "../dist/mcp/index.js"),
71
71
  ];
72
72
 
73
73
  let serverPath = "";
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Hermes Control Center | Agent Atabey</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ <script type="module" src="/src/main.tsx"></script>
14
+ </body>
15
+ </html>
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@atabey/dashboard-ui",
3
+ "version": "0.0.26",
4
+ "private": false,
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "type": "module",
9
+ "scripts": {
10
+ "dev": "vite",
11
+ "build": "vite build",
12
+ "preview": "vite preview",
13
+ "test": "node -e \"process.exit(0)\""
14
+ },
15
+ "dependencies": {
16
+ "react": "^19.0.0",
17
+ "react-dom": "^19.0.0",
18
+ "lucide-react": "^0.471.0",
19
+ "framer-motion": "^12.0.0",
20
+ "@tanstack/react-query": "^5.64.0"
21
+ },
22
+ "devDependencies": {
23
+ "@types/react": "^19.0.0",
24
+ "@types/react-dom": "^19.0.0",
25
+ "@vitejs/plugin-react": "^4.3.4",
26
+ "vite": "^6.0.7",
27
+ "typescript": "^5.9.3"
28
+ }
29
+ }
@@ -0,0 +1,352 @@
1
+ import {
2
+ Activity,
3
+ AlertTriangle,
4
+ Ban,
5
+ BarChart3,
6
+ BookOpen,
7
+ Bot,
8
+ Brain,
9
+ CheckCircle,
10
+ Cpu,
11
+ DollarSign,
12
+ ExternalLink,
13
+ GitBranch,
14
+ Github,
15
+ LayoutDashboard,
16
+ Lock,
17
+ Menu,
18
+ MessageSquare,
19
+ Moon,
20
+ Plug,
21
+ ScrollText,
22
+ Server,
23
+ ShieldCheck,
24
+ Sun,
25
+ Unlock,
26
+ Wifi,
27
+ X,
28
+ } from "lucide-react";
29
+ import { useEffect, useState } from "react";
30
+ import { AdapterSkillsPanel } from "./components/AdapterSkillsPanel";
31
+ import { AgentMonitor } from "./components/AgentMonitor";
32
+ import { ApprovalCenter } from "./components/ApprovalCenter";
33
+ import { CompliancePanel } from "./components/CompliancePanel";
34
+ import { DisciplinePanel } from "./components/DisciplinePanel";
35
+ import { ErrorTracker } from "./components/ErrorTracker";
36
+ import { FinOpsPanel } from "./components/FinOpsPanel";
37
+ import { HermesBrokerView } from "./components/HermesBrokerView";
38
+ import { HermesStats } from "./components/HermesStats";
39
+ import { LicensePanel } from "./components/LicensePanel";
40
+ import { LogViewer } from "./components/LogViewer";
41
+ import { LoopDetectorPanel } from "./components/LoopDetectorPanel";
42
+ import { MCPSetupPanel } from "./components/MCPSetupPanel";
43
+ import { MemoryInsights } from "./components/MemoryInsights";
44
+ import { PlanViewer } from "./components/PlanViewer";
45
+ import { PrivacyPanel } from "./components/PrivacyPanel";
46
+ import { QualityPanel } from "./components/QualityPanel";
47
+ import { TelemetryPanel } from "./components/TelemetryPanel";
48
+ import { TokenEconomyPanel } from "./components/TokenEconomyPanel";
49
+ import { useApi } from "./hooks/useApi";
50
+ import { useWS } from "./hooks/useWS";
51
+ import { css } from "./styles";
52
+
53
+ interface AgentInfo {
54
+ name: string;
55
+ state: string;
56
+ task: string;
57
+ last_updated: string;
58
+ }
59
+
60
+ interface HermesStatsInfo {
61
+ total: number;
62
+ pending: number;
63
+ byCategory: Record<string, number>;
64
+ byStatus: Record<string, number>;
65
+ lastMessage: unknown;
66
+ }
67
+
68
+ interface ApprovalInfo {
69
+ id: string;
70
+ traceId: string;
71
+ description: string;
72
+ status: string;
73
+ timestamp: string;
74
+ }
75
+
76
+ interface ComplianceInfo {
77
+ summary: {
78
+ totalFiles: number;
79
+ totalViolations: number;
80
+ byType: Record<string, number>;
81
+ };
82
+ violations: unknown[];
83
+ }
84
+
85
+ const TABS = [
86
+ { id: "dashboard", label: "Overview", Component: null, desc: "Governance Overview", icon: LayoutDashboard },
87
+ { id: "agents", label: "Specialists", Component: AgentMonitor, desc: "13 Governed Specialists", icon: Bot },
88
+ { id: "hermes", label: "Hermes", Component: HermesStats, desc: "Message Queue Stats", icon: BarChart3 },
89
+ { id: "messages", label: "Audit Trail", Component: HermesBrokerView, desc: "Hermes Message Queue", icon: MessageSquare },
90
+ { id: "approvals", label: "HITL Gates", Component: ApprovalCenter, desc: "Human-in-the-Loop Gates", icon: ShieldCheck },
91
+ { id: "tasks", label: "Tasks", Component: PlanViewer, desc: "Task Planning & DAG", icon: GitBranch },
92
+ { id: "logs", label: "Execution", Component: LogViewer, desc: "Specialist Execution Logs", icon: ScrollText },
93
+ { id: "quality", label: "Quality", Component: QualityPanel, desc: "Code Quality Analysis", icon: Activity },
94
+ { id: "errors", label: "Exceptions", Component: ErrorTracker, desc: "Policy & Audit Exceptions", icon: AlertTriangle },
95
+ { id: "memory", label: "Memory", Component: MemoryInsights, desc: "Vector Memory Search", icon: Brain },
96
+ { id: "compliance", label: "Compliance", Component: CompliancePanel, desc: "Quality Gate Status", icon: CheckCircle },
97
+ { id: "finops", label: "FinOps", Component: FinOpsPanel, desc: "Budget & Cost Management", icon: DollarSign },
98
+ { id: "loop", label: "Loop Detector", Component: LoopDetectorPanel, desc: "Loop Prevention & Cooldowns", icon: Ban },
99
+ { id: "license", label: "License", Component: LicensePanel, desc: "SPDX & Copyleft Scanner", icon: BookOpen },
100
+ { id: "telemetry", label: "Telemetry", Component: TelemetryPanel, desc: "Edge-to-Cloud Streaming", icon: Wifi },
101
+ { id: "privacy", label: "GDPR / KVKK", Component: PrivacyPanel, desc: "GDPR & KVKK Compliance", icon: ShieldCheck },
102
+ { id: "discipline", label: "Discipline", Component: DisciplinePanel, desc: "AI Discipline & Rules", icon: Ban },
103
+ { id: "mcp", label: "MCP Setup", Component: MCPSetupPanel, desc: "MCP Configuration", icon: Server },
104
+ { id: "adapters", label: "Adapters", Component: AdapterSkillsPanel, desc: "Adapter-Skill Mapping", icon: Plug },
105
+ { id: "tokens", label: "Token Econ", Component: TokenEconomyPanel, desc: "Token Economy & Cost", icon: Cpu },
106
+ ];
107
+
108
+ const TAB_ICONS: Record<string, typeof Bot> = {};
109
+ TABS.forEach(t => { TAB_ICONS[t.id] = t.icon; });
110
+
111
+ interface DashboardOverviewProps {
112
+ onNavigate: (tabId: string) => void;
113
+ }
114
+
115
+ const ALL_AGENT_NAMES = [
116
+ "manager", "security", "architect", "backend", "frontend", "quality",
117
+ "database", "analyst", "mobile", "native", "devops", "explorer", "git"
118
+ ];
119
+
120
+ function DashboardOverview({ onNavigate }: DashboardOverviewProps) {
121
+ const { data: agents } = useApi<AgentInfo[]>("/agents", 5000);
122
+ const { data: queueStats } = useApi<HermesStatsInfo>("/hermes/stats", 5000);
123
+ const { data: approvals } = useApi<ApprovalInfo[]>("/approvals", 5000);
124
+ const { data: compliance } = useApi<ComplianceInfo>("/compliance?path=src", 10000);
125
+
126
+ const activeAgentsCount = Array.isArray(agents) ? agents.filter(a => a.state !== "READY" && a.state !== "Idle").length : 0;
127
+ const totalAgentsCount = ALL_AGENT_NAMES.length;
128
+ const pendingMessages = queueStats?.pending ?? 0;
129
+ const pendingApprovalsCount = Array.isArray(approvals) ? approvals.filter(a => a.status === "PENDING").length : 0;
130
+ const totalViolations = compliance?.summary?.totalViolations ?? 0;
131
+
132
+ const { data: privacyStats } = useApi<{ stats: { total: number; byAction: Record<string, number>; byCategory: Record<string, number> } }>("/audit", 10000);
133
+ const piiMaskedCount = privacyStats?.stats?.byAction?.["MASK_PII"] || privacyStats?.stats?.byAction?.["PII_MASKED"] || 0;
134
+ const piiDetectedCount = privacyStats?.stats?.byAction?.["PII_DETECTED"] || 0;
135
+ const restrictedCount = privacyStats?.stats?.byCategory?.["RESTRICTED"] || 0;
136
+
137
+ const { data: metricsData } = useApi<{ totalToolCalls: number; totalEstimatedTokens: number; totalEstimatedCost: number }>("/metrics", 10000);
138
+ const totalToolCalls = metricsData?.totalToolCalls ?? 0;
139
+ const totalEstimatedTokens = metricsData?.totalEstimatedTokens ?? 0;
140
+ const totalEstimatedCost = metricsData?.totalEstimatedCost ?? 0;
141
+
142
+ const { data: mcpSessions } = useApi<{ total: number }>("/mcp/sessions", 10000);
143
+ const activeSessions = mcpSessions?.total ?? 0;
144
+
145
+ // Discipline stats
146
+ const { data: disciplineData } = useApi<Record<string, { violations: number; totalCalls: number; inCooldown: boolean }>>("/discipline", 10000);
147
+ const totalViolationsCount = Object.values(disciplineData || {}).reduce((s: number, v: Record<string, unknown>) => s + ((v.violations as number) || 0), 0);
148
+ const inCooldown = Object.values(disciplineData || {}).some((v: Record<string, unknown>) => v.inCooldown);
149
+
150
+ return (
151
+ <div className="dashboard-overview animate-fade-in">
152
+ <div className="hero-banner">
153
+ <div className="hero-title-group">
154
+ <h1>Governance Plane</h1>
155
+ <p style={{ marginTop: "0.25rem", fontSize: "0.85rem", opacity: 0.8 }}>
156
+ Governance Engine: <span style={{ color: "var(--color-success)", fontWeight: 600 }}>Active</span> | Policy Target: <span style={{ color: "var(--color-highlight)", fontWeight: 600 }}>Phase 0 Enforced</span>
157
+ </p>
158
+ </div>
159
+ <div className="hero-meta">
160
+ <span className="hero-badge">v0.0.23</span>
161
+ </div>
162
+ </div>
163
+
164
+ <div style={{ marginBottom: "1.5rem" }}>
165
+ <h3 style={{ fontSize: "0.8rem", textTransform: "uppercase", color: "var(--color-text-secondary)", letterSpacing: "0.08em", marginBottom: "0.75rem", borderLeft: "3px solid var(--color-accent-primary)", paddingLeft: "8px", fontWeight: 700 }}>
166
+ Active Session & Specialist Status
167
+ </h3>
168
+ <div className="quick-stats-grid">
169
+ <div className="stat-card clickable" onClick={() => onNavigate("agents")}>
170
+ <div className="stat-card-header"><Bot size={18} className="stat-icon" /><span className="stat-title">Specialists</span></div>
171
+ <div className="stat-card-value">{activeAgentsCount} / {totalAgentsCount}</div>
172
+ <div className="stat-card-desc">Governed specialist nodes active</div>
173
+ </div>
174
+
175
+ <div className="stat-card clickable" onClick={() => onNavigate("hermes")}>
176
+ <div className="stat-card-header"><BarChart3 size={18} className="stat-icon" /><span className="stat-title">Hermes Queue</span></div>
177
+ <div className="stat-card-value">{pendingMessages}</div>
178
+ <div className="stat-card-desc">Pending messages in transit</div>
179
+ </div>
180
+
181
+ <div className="stat-card clickable" onClick={() => onNavigate("approvals")} style={{
182
+ borderColor: pendingApprovalsCount > 0 ? "var(--color-accent-primary)" : undefined,
183
+ background: pendingApprovalsCount > 0 ? "var(--color-accent-glow)" : undefined
184
+ }}>
185
+ <div className="stat-card-header"><ShieldCheck size={18} className="stat-icon" /><span className="stat-title">HITL Gates</span></div>
186
+ <div className="stat-card-value" style={{ color: pendingApprovalsCount > 0 ? "var(--color-accent-primary)" : undefined }}>{pendingApprovalsCount}</div>
187
+ <div className="stat-card-desc">{pendingApprovalsCount > 0 ? "Manual overrides pending" : "All gates clear"}</div>
188
+ </div>
189
+
190
+ <div className="stat-card clickable" onClick={() => onNavigate("mcp")}>
191
+ <div className="stat-card-header"><Server size={18} style={{ color: "var(--color-accent-primary)" }} /><span className="stat-title">MCP Server</span></div>
192
+ <div className="stat-card-value" style={{ color: "var(--color-accent-primary)", fontSize: "1.1rem" }}>{activeSessions > 0 ? `${activeSessions} session(s)` : "Ready"}</div>
193
+ <div className="stat-card-desc">{activeSessions > 0 ? "AI clients connected" : "Waiting for AI clients"}</div>
194
+ </div>
195
+ </div>
196
+ </div>
197
+
198
+ <div style={{ marginBottom: "2rem" }}>
199
+ <h3 style={{ fontSize: "0.8rem", textTransform: "uppercase", color: "var(--color-text-secondary)", letterSpacing: "0.08em", marginBottom: "0.75rem", borderLeft: "3px solid var(--color-accent-primary)", paddingLeft: "8px", fontWeight: 700 }}>
200
+ AI Policy & Governance Gates
201
+ </h3>
202
+ <div className="quick-stats-grid">
203
+ <div className="stat-card clickable" onClick={() => onNavigate("compliance")}>
204
+ <div className="stat-card-header"><CheckCircle size={18} className="stat-icon" /><span className="stat-title">Gate Auditing</span></div>
205
+ <div className="stat-card-value" style={{ color: totalViolations > 0 ? "var(--color-warning)" : undefined }}>{totalViolations}</div>
206
+ <div className="stat-card-desc">Quality Gate violations</div>
207
+ </div>
208
+
209
+ <div className="stat-card clickable" onClick={() => onNavigate("privacy")} style={{ borderColor: piiDetectedCount > 0 ? "var(--color-accent-primary)" : undefined }}>
210
+ <div className="stat-card-header"><ShieldCheck size={18} style={{ color: "var(--color-accent-primary)" }} /><span className="stat-title">GDPR / KVKK</span></div>
211
+ <div className="stat-card-value" style={{ color: "var(--color-accent-primary)", fontSize: "1.1rem" }}>{piiMaskedCount > 0 ? `${piiMaskedCount} masked` : "Active"}</div>
212
+ <div className="stat-card-desc">{piiDetectedCount > 0 ? `${piiDetectedCount} PII · ${restrictedCount} restricted` : "PII masking active"}</div>
213
+ </div>
214
+
215
+ <div className="stat-card clickable" onClick={() => onNavigate("discipline")} style={{ borderColor: inCooldown ? "var(--color-warning)" : undefined }}>
216
+ <div className="stat-card-header"><Ban size={18} style={{ color: totalViolationsCount > 0 ? "var(--color-error)" : "var(--color-success)" }} /><span className="stat-title">Discipline</span></div>
217
+ <div className="stat-card-value" style={{ color: totalViolationsCount > 0 ? "var(--color-error)" : "var(--color-success)", fontSize: "1.1rem" }}>
218
+ {totalViolationsCount > 0 ? `${totalViolationsCount} violations` : "All Clean"}
219
+ </div>
220
+ <div className="stat-card-desc">{inCooldown ? "Agent(s) in cooldown" : "All agents compliant"}</div>
221
+ </div>
222
+
223
+ <div className="stat-card clickable" onClick={() => onNavigate("tokens")} style={{ borderColor: totalEstimatedCost > 0.1 ? "var(--color-warning)" : undefined }}>
224
+ <div className="stat-card-header"><Cpu size={18} style={{ color: "var(--color-accent-muted)" }} /><span className="stat-title">Token Economy</span></div>
225
+ <div className="stat-card-value" style={{ color: "var(--color-accent-muted)", fontSize: "1.1rem" }}>{totalToolCalls > 0 ? `${totalToolCalls} calls` : "Active"}</div>
226
+ <div className="stat-card-desc">{totalEstimatedTokens > 0 ? `${(totalEstimatedTokens / 1000).toFixed(1)}K tokens · ~$${totalEstimatedCost.toFixed(2)}` : "Tracking tool call metrics"}</div>
227
+ </div>
228
+ </div>
229
+ </div>
230
+
231
+ <div className="overview-sections-layout">
232
+ <div className="overview-left-column">
233
+ <AgentMonitor />
234
+ <ApprovalCenter />
235
+ </div>
236
+ <div className="overview-right-column">
237
+ <HermesStats />
238
+ <LogViewer />
239
+ </div>
240
+ </div>
241
+ </div>
242
+ );
243
+ }
244
+
245
+ export default function App() {
246
+ const [activeTab, setActiveTab] = useState("dashboard");
247
+ const [sidebarOpen, setSidebarOpen] = useState(false);
248
+ const [theme, setTheme] = useState<"dark" | "light">(() => {
249
+ const saved = localStorage.getItem("atabey-theme");
250
+ return (saved as "dark" | "light") || "dark";
251
+ });
252
+ const [authToken, setAuthTokenState] = useState(() => localStorage.getItem("atabey-auth-token") || "");
253
+ const saveAuthToken = (val: string) => {
254
+ localStorage.setItem("atabey-auth-token", val);
255
+ setAuthTokenState(val);
256
+ };
257
+ const wsConnected = useWS();
258
+
259
+ useEffect(() => {
260
+ document.documentElement.classList.remove("theme-dark", "theme-light");
261
+ document.documentElement.classList.add(`theme-${theme}`);
262
+ }, [theme]);
263
+
264
+ const toggleTheme = () => {
265
+ const next = theme === "dark" ? "light" : "dark";
266
+ setTheme(next);
267
+ localStorage.setItem("atabey-theme", next);
268
+ };
269
+
270
+ const activeTabObj = TABS.find(t => t.id === activeTab) || TABS[0];
271
+ const ActiveComponent = activeTabObj.Component;
272
+
273
+ return (
274
+ <>
275
+ <style>{css}</style>
276
+ <div className={`sidebar-overlay ${sidebarOpen ? "open" : ""}`} onClick={() => setSidebarOpen(false)} />
277
+ <div className="app-shell">
278
+ <aside className={`sidebar ${sidebarOpen ? "open" : ""}`}>
279
+ <div className="sidebar-header"><span className="sidebar-logo">[ATABEY]</span></div>
280
+ <nav className="sidebar-nav">
281
+ {TABS.map(t => {
282
+ const Icon = t.icon;
283
+ return (
284
+ <button key={t.id} className={`sidebar-btn ${activeTab === t.id ? "active" : ""}`} onClick={() => { setActiveTab(t.id); setSidebarOpen(false); }} title={t.desc}>
285
+ <Icon /><span className="sidebar-label">{t.label}</span>
286
+ </button>
287
+ );
288
+ })}
289
+ </nav>
290
+ <div className="sidebar-footer">
291
+ <div className="ws-indicator">
292
+ <span className="ws-dot" style={{ background: wsConnected ? "var(--color-success)" : "var(--color-error)", boxShadow: wsConnected ? "0 0 6px var(--color-success)" : "none" }} />
293
+ {wsConnected ? "WS Live" : "WS Offline"}
294
+ </div>
295
+ <div style={{ marginTop: 6, opacity: 0.6 }}>Atabey Governance Engine v0.0.23</div>
296
+ </div>
297
+ </aside>
298
+ <div className="main-area">
299
+ <header className="main-header">
300
+ <div className="main-header-left">
301
+ <button className="menu-toggle" onClick={() => setSidebarOpen(!sidebarOpen)}>
302
+ {sidebarOpen ? <X /> : <Menu />}
303
+ </button>
304
+ <span style={{ display: "flex", alignItems: "center", gap: "0.5rem", fontWeight: 500, fontSize: "0.95rem" }}>
305
+ <span style={{ opacity: 0.85 }}>Hermes Control Center</span>
306
+ <span style={{ opacity: 0.4 }}>/</span>
307
+ <span style={{ color: "var(--color-accent-primary)", fontWeight: 600 }}>{activeTabObj.label}</span>
308
+ </span>
309
+ </div>
310
+ <div className="main-header-right">
311
+ <div className="auth-token-input-wrapper" style={{ position: "relative" }}>
312
+ {authToken ? (
313
+ <Lock size={12} style={{ position: "absolute", left: "6px", top: "50%", transform: "translateY(-50%)", color: "var(--color-success)" }} />
314
+ ) : (
315
+ <Unlock size={12} style={{ position: "absolute", left: "6px", top: "50%", transform: "translateY(-50%)", color: "var(--color-text-muted)" }} />
316
+ )}
317
+ <input
318
+ type="password"
319
+ placeholder="MCP Token..."
320
+ className="auth-token-input"
321
+ value={authToken}
322
+ onChange={(e) => saveAuthToken(e.target.value)}
323
+ title="Enter MCP_AUTH_TOKEN if configured"
324
+ />
325
+ </div>
326
+ <button className="theme-toggle-btn" onClick={toggleTheme} title={`Switch to ${theme === "dark" ? "light" : "dark"} mode`} style={{ marginRight: "0.5rem" }}>
327
+ {theme === "dark" ? <Sun size={16} /> : <Moon size={16} />}
328
+ </button>
329
+ <span className="badge">{TABS.length - 1} modules</span>
330
+ <a href="/api/health" target="_blank" rel="noopener noreferrer" style={{ color: "var(--color-accent-primary)", display: "flex", alignItems: "center", gap: 4 }}>
331
+ <ExternalLink size={14} /> API
332
+ </a>
333
+ <a href="https://github.com/ysf-bkr/atabey" target="_blank" rel="noopener noreferrer" style={{ color: "var(--color-accent-primary)", display: "flex", alignItems: "center", gap: 4 }}>
334
+ <Github size={14} /> GitHub
335
+ </a>
336
+ </div>
337
+ </header>
338
+ <main className="main-content">
339
+ {activeTab === "dashboard" ? (
340
+ <DashboardOverview onNavigate={(tabId) => setActiveTab(tabId)} />
341
+ ) : (
342
+ <div className="focused-view animate-fade-in">
343
+ {ActiveComponent && <ActiveComponent />}
344
+ </div>
345
+ )}
346
+ </main>
347
+ <footer className="main-footer">{TABS.length - 1} Modules Live · Port {window.location.port || "5858"}</footer>
348
+ </div>
349
+ </div>
350
+ </>
351
+ );
352
+ }
@@ -0,0 +1,100 @@
1
+ import { useEffect, useState } from "react";
2
+ import {
3
+ Plug,
4
+ Cpu,
5
+ Wrench,
6
+ Folder,
7
+ Edit,
8
+ RefreshCw,
9
+ Lock,
10
+ Check,
11
+ Search,
12
+ Brain
13
+ } from "lucide-react";
14
+
15
+ interface AdapterSkillSummary {
16
+ id: string;
17
+ skillCount: number;
18
+ toolsCount: number;
19
+ skills: string[];
20
+ }
21
+
22
+ export function AdapterSkillsPanel() {
23
+ const [adapters, setAdapters] = useState<AdapterSkillSummary[]>([]);
24
+ const [loading, setLoading] = useState(true);
25
+
26
+ useEffect(() => {
27
+ const fetchAdapters = () => {
28
+ fetch("/api/adapters/skills")
29
+ .then(r => r.json())
30
+ .then(d => {
31
+ if (d.success) setAdapters(d.data);
32
+ setLoading(false);
33
+ })
34
+ .catch(() => setLoading(false));
35
+ };
36
+ fetchAdapters();
37
+ const interval = setInterval(fetchAdapters, 15000);
38
+ return () => clearInterval(interval);
39
+ }, []);
40
+
41
+ const SKILL_ICONS: Record<string, React.ComponentType<{ size?: number; style?: React.CSSProperties }>> = {
42
+ file_system: Folder,
43
+ editing: Edit,
44
+ orchestration: RefreshCw,
45
+ governance: Lock,
46
+ quality: Check,
47
+ search: Search,
48
+ memory: Brain,
49
+ };
50
+
51
+ return (
52
+ <div className="card">
53
+ <div className="card-header">
54
+ <h2>
55
+ <Plug size={20} style={{ display: "inline-block", verticalAlign: "middle", marginRight: 8 }} />
56
+ Adapter Skills
57
+ </h2>
58
+ {!loading && <span className="badge">{adapters.length} adapters</span>}
59
+ </div>
60
+
61
+ {loading && <div className="empty-state">Loading adapter skills...</div>}
62
+
63
+ {!loading && (
64
+ <div className="adapter-list">
65
+ {adapters.map(adapter => {
66
+ return (
67
+ <div key={adapter.id} className="adapter-item">
68
+ <div className="adapter-header">
69
+ <span className="adapter-name">
70
+ <Cpu size={14} style={{ display: "inline-block", verticalAlign: "middle", marginRight: 6 }} />
71
+ {adapter.id}
72
+ </span>
73
+ <span className="adapter-meta">
74
+ <Wrench size={12} style={{ display: "inline-block", verticalAlign: "middle", marginRight: 4 }} />
75
+ {adapter.toolsCount} tools · {adapter.skillCount} skills
76
+ </span>
77
+ </div>
78
+ <div className="adapter-skills-grid">
79
+ {adapter.skills.map(skill => {
80
+ const IconComp = SKILL_ICONS[skill];
81
+ return (
82
+ <span key={skill} className="skill-badge" style={{ display: "inline-flex", alignItems: "center", gap: "4px" }}>
83
+ {IconComp ? (
84
+ <IconComp size={12} />
85
+ ) : (
86
+ <span style={{ fontSize: "10px" }}>•</span>
87
+ )}
88
+ {skill.replace(/_/g, " ")}
89
+ </span>
90
+ );
91
+ })}
92
+ </div>
93
+ </div>
94
+ );
95
+ })}
96
+ </div>
97
+ )}
98
+ </div>
99
+ );
100
+ }
@@ -0,0 +1,90 @@
1
+ import { Bot, ChevronDown, ChevronUp } from "lucide-react";
2
+ import { useState } from "react";
3
+ import { useApi } from "../hooks/useApi";
4
+ import { useWS } from "../hooks/useWS";
5
+
6
+ interface Agent {
7
+ name: string; state: string; task: string; last_updated: string;
8
+ }
9
+
10
+ const ALL_AGENT_NAMES = [
11
+ "manager",
12
+ "security",
13
+ "architect",
14
+ "backend",
15
+ "frontend",
16
+ "quality",
17
+ "database",
18
+ "analyst",
19
+ "mobile",
20
+ "native",
21
+ "devops",
22
+ "explorer",
23
+ "git"
24
+ ];
25
+
26
+ export function AgentMonitor() {
27
+ const { data: initial, loading, error } = useApi<Agent[]>("/agents", 5000);
28
+ const [agents, setAgents] = useState<Agent[]>([]);
29
+ const [expanded, setExpanded] = useState<string | null>(null);
30
+
31
+ useWS({ handlers: { agent_update: (d) => {
32
+ const u = d as unknown as Agent;
33
+ if (u.name) setAgents(prev => {
34
+ const cleanName = u.name.replace("@", "");
35
+ const exists = prev.some(a => a.name.replace("@", "") === cleanName);
36
+ if (exists) {
37
+ return prev.map(a => a.name.replace("@", "") === cleanName ? { ...a, ...u } : a);
38
+ }
39
+ return [...prev, u];
40
+ });
41
+ }}});
42
+
43
+ const rawList = agents.length ? agents : (Array.isArray(initial) ? initial : []);
44
+ if (Array.isArray(initial) && agents.length === 0 && initial.length > 0) setAgents(initial);
45
+
46
+ // Merge database state with the full list of 13 corporate agents
47
+ const list = ALL_AGENT_NAMES.map(name => {
48
+ const existing = rawList.find(a => a.name.replace("@", "") === name);
49
+ if (existing) {
50
+ return {
51
+ ...existing,
52
+ name: name
53
+ };
54
+ }
55
+ return {
56
+ name: name,
57
+ state: "READY",
58
+ task: "Idle",
59
+ last_updated: new Date().toISOString()
60
+ };
61
+ });
62
+
63
+ if (loading && !rawList.length) return <div className="card"><div className="card-header"><h2><Bot size={20} /> Governed Specialist Monitor</h2></div><div className="empty-state">Loading specialists...</div></div>;
64
+ if (error && !rawList.length) return <div className="card"><div className="card-header"><h2><Bot size={20} /> Governed Specialist Monitor</h2></div><div className="error">Error: {error}</div></div>;
65
+
66
+ return <div className="card">
67
+ <div className="card-header">
68
+ <h2><Bot size={20} /> Specialist Monitor</h2>
69
+ <span className="badge">{list.length} specialists</span>
70
+ </div>
71
+ <div className="agent-list-container">
72
+ <div className="agent-grid">
73
+ {list.map(a => {
74
+ const open = expanded === a.name;
75
+ const statusClass = a.state.toLowerCase();
76
+ return <div key={a.name} className={`agent-card ${open ? "expanded" : ""}`} onClick={() => setExpanded(open ? null : a.name)}>
77
+ <div className="agent-header">
78
+ <span className={`agent-dot ${statusClass}`} />
79
+ <span className="agent-name">@{a.name}</span>
80
+ <span className={`agent-state ${statusClass}`}>{a.state}</span>
81
+ {open ? <ChevronUp size={14} className="text-muted" /> : <ChevronDown size={14} className="text-muted" />}
82
+ </div>
83
+ <div className="detail-row"><span className="detail-label">Task:</span><span className="detail-value">{a.task || "Idle"}</span></div>
84
+ {open && <div className="detail-row"><span className="detail-label">Updated:</span><span className="detail-value">{new Date(a.last_updated).toLocaleString()}</span></div>}
85
+ </div>;
86
+ })}
87
+ </div>
88
+ </div>
89
+ </div>;
90
+ }