atabey 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/ATABEY.md +45 -499
  2. package/PRIVACY.md +161 -0
  3. package/README.md +353 -88
  4. package/bin/validate-al-registry.js +4 -4
  5. package/dist/framework-mcp/src/tools/definitions.js +23 -1
  6. package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
  7. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.d.ts +19 -0
  8. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +138 -0
  9. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js.map +1 -0
  10. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.d.ts +8 -0
  11. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +91 -0
  12. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js.map +1 -0
  13. package/dist/framework-mcp/src/tools/index.d.ts +1 -1
  14. package/dist/framework-mcp/src/tools/index.js +35 -20
  15. package/dist/framework-mcp/src/tools/index.js.map +1 -1
  16. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.d.ts +11 -0
  17. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +166 -0
  18. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js.map +1 -0
  19. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.d.ts +11 -0
  20. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +135 -0
  21. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js.map +1 -0
  22. package/dist/framework-mcp/src/tools/schemas.d.ts +88 -8
  23. package/dist/framework-mcp/src/tools/schemas.js +29 -0
  24. package/dist/framework-mcp/src/tools/schemas.js.map +1 -1
  25. package/dist/framework-mcp/src/tools/shell/run_command.js +2 -2
  26. package/dist/framework-mcp/src/tools/shell/run_command.js.map +1 -1
  27. package/dist/src/cli/commands/check.js +2 -2
  28. package/dist/src/cli/commands/check.js.map +1 -1
  29. package/dist/src/cli/commands/dashboard.d.ts +1 -1
  30. package/dist/src/cli/commands/dashboard.js +264 -41
  31. package/dist/src/cli/commands/dashboard.js.map +1 -1
  32. package/dist/src/cli/commands/gateway.d.ts +1 -0
  33. package/dist/src/cli/commands/gateway.js +172 -0
  34. package/dist/src/cli/commands/gateway.js.map +1 -0
  35. package/dist/src/cli/commands/init/create-agent.js +3 -3
  36. package/dist/src/cli/commands/init/create-agent.js.map +1 -1
  37. package/dist/src/cli/commands/init/scaffold-core.d.ts +1 -1
  38. package/dist/src/cli/commands/init/scaffold-core.js +1 -1
  39. package/dist/src/cli/commands/init/scaffold-core.js.map +1 -1
  40. package/dist/src/cli/commands/init.d.ts +2 -0
  41. package/dist/src/cli/commands/init.js +105 -23
  42. package/dist/src/cli/commands/init.js.map +1 -1
  43. package/dist/src/cli/commands/mcp.d.ts +7 -0
  44. package/dist/src/cli/commands/mcp.js +45 -22
  45. package/dist/src/cli/commands/mcp.js.map +1 -1
  46. package/dist/src/cli/commands/orchestrate.d.ts +8 -7
  47. package/dist/src/cli/commands/orchestrate.js +2 -1
  48. package/dist/src/cli/commands/orchestrate.js.map +1 -1
  49. package/dist/src/cli/commands/quickstart.d.ts +5 -5
  50. package/dist/src/cli/commands/quickstart.js +36 -36
  51. package/dist/src/cli/commands/quickstart.js.map +1 -1
  52. package/dist/src/cli/index.js +230 -320
  53. package/dist/src/cli/index.js.map +1 -1
  54. package/dist/src/cli/platforms/core.d.ts +12 -0
  55. package/dist/src/cli/platforms/core.js +73 -0
  56. package/dist/src/cli/platforms/core.js.map +1 -0
  57. package/dist/src/cli/platforms/index.d.ts +5 -0
  58. package/dist/src/cli/platforms/index.js +6 -0
  59. package/dist/src/cli/platforms/index.js.map +1 -0
  60. package/dist/src/cli/platforms/paths.d.ts +15 -0
  61. package/dist/src/cli/platforms/paths.js +102 -0
  62. package/dist/src/cli/platforms/paths.js.map +1 -0
  63. package/dist/src/cli/platforms/scaffold.d.ts +2 -0
  64. package/dist/src/cli/platforms/scaffold.js +73 -0
  65. package/dist/src/cli/platforms/scaffold.js.map +1 -0
  66. package/dist/src/cli/platforms/utils.d.ts +4 -0
  67. package/dist/src/cli/platforms/utils.js +76 -0
  68. package/dist/src/cli/platforms/utils.js.map +1 -0
  69. package/dist/src/cli/shims.js +4 -4
  70. package/dist/src/cli/utils/fs.d.ts +1 -1
  71. package/dist/src/cli/utils/fs.js +1 -1
  72. package/dist/src/cli/utils/fs.js.map +1 -1
  73. package/dist/src/modules/agents/definitions.d.ts +2 -2
  74. package/dist/src/modules/agents/definitions.js +59 -23
  75. package/dist/src/modules/agents/definitions.js.map +1 -1
  76. package/dist/src/modules/contracts/api.d.ts +178 -0
  77. package/dist/src/modules/contracts/api.js +56 -0
  78. package/dist/src/modules/contracts/api.js.map +1 -0
  79. package/dist/src/modules/contracts/index.d.ts +5 -0
  80. package/dist/src/modules/contracts/index.js +6 -0
  81. package/dist/src/modules/contracts/index.js.map +1 -0
  82. package/dist/src/modules/engines/agent-executor.d.ts +27 -28
  83. package/dist/src/modules/engines/agent-executor.js +97 -69
  84. package/dist/src/modules/engines/agent-executor.js.map +1 -1
  85. package/dist/src/modules/engines/quality-gate.d.ts +7 -7
  86. package/dist/src/modules/engines/quality-gate.js +7 -7
  87. package/dist/src/modules/engines/routing-engine.d.ts +18 -27
  88. package/dist/src/modules/engines/routing-engine.js +70 -44
  89. package/dist/src/modules/engines/routing-engine.js.map +1 -1
  90. package/dist/src/modules/gateway/circuit-breaker.d.ts +40 -0
  91. package/dist/src/modules/gateway/circuit-breaker.js +163 -0
  92. package/dist/src/modules/gateway/circuit-breaker.js.map +1 -0
  93. package/dist/src/modules/gateway/cost-tracker.d.ts +55 -0
  94. package/dist/src/modules/gateway/cost-tracker.js +127 -0
  95. package/dist/src/modules/gateway/cost-tracker.js.map +1 -0
  96. package/dist/src/modules/gateway/gateway.d.ts +68 -0
  97. package/dist/src/modules/gateway/gateway.js +235 -0
  98. package/dist/src/modules/gateway/gateway.js.map +1 -0
  99. package/dist/src/modules/gateway/index.d.ts +19 -0
  100. package/dist/src/modules/gateway/index.js +19 -0
  101. package/dist/src/modules/gateway/index.js.map +1 -0
  102. package/dist/src/modules/gateway/load-balancer.d.ts +86 -0
  103. package/dist/src/modules/gateway/load-balancer.js +230 -0
  104. package/dist/src/modules/gateway/load-balancer.js.map +1 -0
  105. package/dist/src/modules/gateway/providers/anthropic.d.ts +14 -0
  106. package/dist/src/modules/gateway/providers/anthropic.js +169 -0
  107. package/dist/src/modules/gateway/providers/anthropic.js.map +1 -0
  108. package/dist/src/modules/gateway/providers/base.d.ts +38 -0
  109. package/dist/src/modules/gateway/providers/base.js +42 -0
  110. package/dist/src/modules/gateway/providers/base.js.map +1 -0
  111. package/dist/src/modules/gateway/providers/google.d.ts +18 -0
  112. package/dist/src/modules/gateway/providers/google.js +176 -0
  113. package/dist/src/modules/gateway/providers/google.js.map +1 -0
  114. package/dist/src/modules/gateway/providers/grok.d.ts +14 -0
  115. package/dist/src/modules/gateway/providers/grok.js +166 -0
  116. package/dist/src/modules/gateway/providers/grok.js.map +1 -0
  117. package/dist/src/modules/gateway/providers/index.d.ts +21 -0
  118. package/dist/src/modules/gateway/providers/index.js +38 -0
  119. package/dist/src/modules/gateway/providers/index.js.map +1 -0
  120. package/dist/src/modules/gateway/providers/ollama.d.ts +23 -0
  121. package/dist/src/modules/gateway/providers/ollama.js +187 -0
  122. package/dist/src/modules/gateway/providers/ollama.js.map +1 -0
  123. package/dist/src/modules/gateway/providers/openai.d.ts +14 -0
  124. package/dist/src/modules/gateway/providers/openai.js +170 -0
  125. package/dist/src/modules/gateway/providers/openai.js.map +1 -0
  126. package/dist/src/modules/gateway/rate-limiter.d.ts +41 -0
  127. package/dist/src/modules/gateway/rate-limiter.js +119 -0
  128. package/dist/src/modules/gateway/rate-limiter.js.map +1 -0
  129. package/dist/src/modules/gateway/types.d.ts +114 -0
  130. package/dist/src/modules/gateway/types.js +8 -0
  131. package/dist/src/modules/gateway/types.js.map +1 -0
  132. package/dist/src/modules/memory/core.d.ts +4 -12
  133. package/dist/src/modules/memory/core.js +10 -17
  134. package/dist/src/modules/memory/core.js.map +1 -1
  135. package/dist/src/modules/memory/embedding.d.ts +28 -0
  136. package/dist/src/modules/memory/embedding.js +131 -0
  137. package/dist/src/modules/memory/embedding.js.map +1 -0
  138. package/dist/src/modules/providers/definitions.d.ts +9 -0
  139. package/dist/src/modules/providers/definitions.js +141 -0
  140. package/dist/src/modules/providers/definitions.js.map +1 -0
  141. package/dist/src/modules/providers/registry.d.ts +12 -0
  142. package/dist/src/modules/providers/registry.js +19 -0
  143. package/dist/src/modules/providers/registry.js.map +1 -0
  144. package/dist/src/modules/providers/shared.d.ts +1 -0
  145. package/dist/src/modules/providers/shared.js +105 -0
  146. package/dist/src/modules/providers/shared.js.map +1 -0
  147. package/dist/src/modules/providers/types.d.ts +14 -0
  148. package/dist/src/modules/providers/types.js +2 -0
  149. package/dist/src/modules/providers/types.js.map +1 -0
  150. package/dist/src/modules/skills/adapter-skills.d.ts +68 -0
  151. package/dist/src/modules/skills/adapter-skills.js +450 -0
  152. package/dist/src/modules/skills/adapter-skills.js.map +1 -0
  153. package/dist/src/shared/audit.d.ts +105 -0
  154. package/dist/src/shared/audit.js +220 -0
  155. package/dist/src/shared/audit.js.map +1 -0
  156. package/dist/src/shared/fs.js +4 -2
  157. package/dist/src/shared/fs.js.map +1 -1
  158. package/dist/src/shared/lock.d.ts +82 -0
  159. package/dist/src/shared/lock.js +160 -0
  160. package/dist/src/shared/lock.js.map +1 -0
  161. package/dist/src/shared/logger.d.ts +2 -0
  162. package/dist/src/shared/logger.js +15 -5
  163. package/dist/src/shared/logger.js.map +1 -1
  164. package/dist/src/shared/pii.d.ts +37 -0
  165. package/dist/src/shared/pii.js +122 -0
  166. package/dist/src/shared/pii.js.map +1 -0
  167. package/dist/src/shared/retention.d.ts +63 -0
  168. package/dist/src/shared/retention.js +171 -0
  169. package/dist/src/shared/retention.js.map +1 -0
  170. package/dist/src/shared/storage.d.ts +3 -1
  171. package/dist/src/shared/storage.js +3 -1
  172. package/dist/src/shared/storage.js.map +1 -1
  173. package/dist/tests/adapter.test.js +1 -1
  174. package/dist/tests/adapter.test.js.map +1 -1
  175. package/dist/tests/adapters/paths.test.js +4 -4
  176. package/dist/tests/adapters/paths.test.js.map +1 -1
  177. package/dist/tests/cli/commands/dashboard-coverage.test.d.ts +1 -0
  178. package/dist/tests/cli/commands/dashboard-coverage.test.js +88 -0
  179. package/dist/tests/cli/commands/dashboard-coverage.test.js.map +1 -0
  180. package/dist/tests/cli/init/adapter_init.test.js +4 -5
  181. package/dist/tests/cli/init/adapter_init.test.js.map +1 -1
  182. package/dist/tests/cli/init/unified_init.test.js +5 -7
  183. package/dist/tests/cli/init/unified_init.test.js.map +1 -1
  184. package/dist/tests/integration/agent_flow.test.js +14 -8
  185. package/dist/tests/integration/agent_flow.test.js.map +1 -1
  186. package/dist/tests/modules/adapters/adapters.test.js +2 -2
  187. package/dist/tests/modules/adapters/adapters.test.js.map +1 -1
  188. package/dist/tests/modules/contracts/contracts.test.d.ts +1 -0
  189. package/dist/tests/modules/contracts/contracts.test.js +73 -0
  190. package/dist/tests/modules/contracts/contracts.test.js.map +1 -0
  191. package/dist/tests/modules/engines/agent-executor.test.js +30 -23
  192. package/dist/tests/modules/engines/agent-executor.test.js.map +1 -1
  193. package/dist/tests/modules/gateway/circuit-breaker.test.d.ts +1 -0
  194. package/dist/tests/modules/gateway/circuit-breaker.test.js +124 -0
  195. package/dist/tests/modules/gateway/circuit-breaker.test.js.map +1 -0
  196. package/dist/tests/modules/gateway/cost-tracker.test.d.ts +1 -0
  197. package/dist/tests/modules/gateway/cost-tracker.test.js +74 -0
  198. package/dist/tests/modules/gateway/cost-tracker.test.js.map +1 -0
  199. package/dist/tests/modules/gateway/load-balancer.test.d.ts +1 -0
  200. package/dist/tests/modules/gateway/load-balancer.test.js +70 -0
  201. package/dist/tests/modules/gateway/load-balancer.test.js.map +1 -0
  202. package/dist/tests/modules/gateway/rate-limiter.test.d.ts +1 -0
  203. package/dist/tests/modules/gateway/rate-limiter.test.js +62 -0
  204. package/dist/tests/modules/gateway/rate-limiter.test.js.map +1 -0
  205. package/dist/tests/orchestrator-dependencies.test.js +23 -6
  206. package/dist/tests/orchestrator-dependencies.test.js.map +1 -1
  207. package/dist/tests/shared/audit.test.d.ts +1 -0
  208. package/dist/tests/shared/audit.test.js +53 -0
  209. package/dist/tests/shared/audit.test.js.map +1 -0
  210. package/dist/tests/storage-operations.test.d.ts +1 -0
  211. package/dist/tests/storage-operations.test.js +116 -0
  212. package/dist/tests/storage-operations.test.js.map +1 -0
  213. package/framework-mcp/README.md +324 -77
  214. package/framework-mcp/dist/dashboard/assets/index-BAPGLiWE.js +267 -0
  215. package/framework-mcp/dist/dashboard/index.html +15 -0
  216. package/framework-mcp/dist/framework-mcp/src/tools/definitions.js +23 -1
  217. package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +137 -0
  218. package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +90 -0
  219. package/framework-mcp/dist/framework-mcp/src/tools/index.js +35 -20
  220. package/framework-mcp/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +165 -0
  221. package/framework-mcp/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +134 -0
  222. package/framework-mcp/dist/framework-mcp/src/tools/schemas.js +29 -0
  223. package/framework-mcp/dist/framework-mcp/src/tools/shell/run_command.js +2 -2
  224. package/framework-mcp/dist/src/modules/memory/core.js +10 -17
  225. package/framework-mcp/dist/src/modules/memory/embedding.js +130 -0
  226. package/framework-mcp/dist/src/shared/fs.js +4 -2
  227. package/framework-mcp/dist/src/shared/logger.js +15 -5
  228. package/framework-mcp/dist/src/shared/pii.js +121 -0
  229. package/framework-mcp/dist/src/shared/storage.js +3 -1
  230. package/framework-mcp/package.json +1 -1
  231. package/package.json +10 -4
  232. package/templates/full/ATABEY_FULL.md +515 -0
@@ -2,7 +2,9 @@ import fs from "fs";
2
2
  import http from "http";
3
3
  import path from "path";
4
4
  import { fileURLToPath } from "url";
5
+ import { WebSocket, WebSocketServer } from "ws";
5
6
  import { FRAMEWORK } from "../../shared/constants.js";
7
+ import { appendFile } from "../../shared/fs.js";
6
8
  import { Storage } from "../../shared/storage.js";
7
9
  import { asTraceID } from "../../shared/types.js";
8
10
  import { getFrameworkDir } from "../utils/memory.js";
@@ -49,30 +51,34 @@ function parseUrl(url) {
49
51
  return { pathname, params };
50
52
  }
51
53
  /**
52
- * SSE clients store for real-time updates.
54
+ * WebSocket clients store for real-time updates.
53
55
  */
54
- const sseClients = [];
55
- let sseClientId = 0;
56
- function sendSSEEvent(event, data) {
57
- const payload = `event: ${event}\ndata: ${JSON.stringify(data)}\n\n`;
58
- sseClients.forEach((client) => {
59
- try {
60
- client.res.write(payload);
56
+ const wsClients = new Set();
57
+ function broadcastWS(type, payload) {
58
+ const msg = JSON.stringify({ type, payload });
59
+ wsClients.forEach((ws) => {
60
+ if (ws.readyState === WebSocket.OPEN) {
61
+ try {
62
+ ws.send(msg);
63
+ }
64
+ catch {
65
+ wsClients.delete(ws);
66
+ }
61
67
  }
62
- catch {
63
- // Remove disconnected clients
68
+ else {
69
+ wsClients.delete(ws);
64
70
  }
65
71
  });
66
72
  }
67
73
  /**
68
- * [SERVER] Hermes Visual Control Plane (Dashboard Server) — Genişletilmiş
74
+ * [SERVER] Hermes Visual Control Plane (Dashboard Server) — Extended
69
75
  * Serves the framework state as a JSON API and the bundled Web UI.
70
76
  */
71
77
  export async function dashboardCommand(port = FRAMEWORK.DASHBOARD_PORT) {
72
78
  const frameworkDir = getFrameworkDir();
73
79
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
74
80
  const projectRoot = path.resolve(__dirname, "../../../../");
75
- const uiDistPath = path.join(projectRoot, "dist/ui");
81
+ const uiDistPath = path.join(projectRoot, "framework-mcp/dist/dashboard");
76
82
  const server = http.createServer((req, res) => {
77
83
  // CORS Headers
78
84
  res.setHeader("Access-Control-Allow-Origin", "*");
@@ -180,30 +186,196 @@ export async function dashboardCommand(port = FRAMEWORK.DASHBOARD_PORT) {
180
186
  return;
181
187
  }
182
188
  try {
183
- const db = Storage.getDB();
184
- const messages = db.prepare("SELECT * FROM messages WHERE trace_id = ? AND status = 'PENDING' AND (category = 'ALERT' OR category = 'ACTION')").all(traceId);
185
- if (messages.length === 0) {
189
+ // Approval process via storage abstraction
190
+ const pendingMessages = Storage.getPendingMessages().filter(m => m.traceId === traceId && (m.category === "ALERT" || m.category === "ACTION"));
191
+ if (pendingMessages.length === 0) {
186
192
  serveJson(res, 404, { success: false, error: "No pending approval found for this trace ID" });
187
193
  return;
188
194
  }
189
- messages.forEach((msg) => {
190
- Storage.updateMessageStatus(msg.id, "APPROVED");
195
+ pendingMessages.forEach((msg) => {
196
+ if (msg.id !== undefined) {
197
+ Storage.updateMessageStatus(msg.id, "APPROVED");
198
+ }
191
199
  });
192
- // Log approval to audit
200
+ // Log approval to audit — atomic appendFile kullan
193
201
  const auditPath = path.join(frameworkDir, "observability/audit_log.md");
194
202
  if (fs.existsSync(auditPath)) {
195
203
  const logEntry = "\n- **[" + new Date().toISOString() + "]** USER -> @manager | APPROVED | Trace: " + traceId;
196
- fs.appendFileSync(auditPath, logEntry);
204
+ appendFile(auditPath, logEntry);
205
+ }
206
+ // Notify WS clients
207
+ broadcastWS("approval", { traceId, status: "APPROVED" });
208
+ serveJson(res, 200, { success: true, message: `Trace ${traceId} approved successfully`, approved: pendingMessages.length });
209
+ }
210
+ catch (e) {
211
+ serveJson(res, 500, { success: false, error: e.message });
212
+ }
213
+ return;
214
+ }
215
+ // ─── Hermes Message Queue Stats ────────────────────────────────
216
+ if (pathname === "/api/hermes/stats") {
217
+ try {
218
+ const messages = Storage.getPendingMessages();
219
+ const totalMessages = Storage.getDB().prepare("SELECT COUNT(*) as count FROM messages").get();
220
+ const byCategory = {};
221
+ const byStatus = {};
222
+ messages.forEach(m => {
223
+ byCategory[m.category] = (byCategory[m.category] || 0) + 1;
224
+ byStatus[m.status] = (byStatus[m.status] || 0) + 1;
225
+ });
226
+ serveJson(res, 200, {
227
+ success: true,
228
+ data: {
229
+ total: totalMessages.count,
230
+ pending: messages.length,
231
+ byCategory,
232
+ byStatus,
233
+ lastMessage: messages.length > 0 ? messages[messages.length - 1] : null,
234
+ }
235
+ });
236
+ }
237
+ catch (e) {
238
+ serveJson(res, 500, { success: false, error: e.message });
239
+ }
240
+ return;
241
+ }
242
+ // ─── Code Quality API ──────────────────────────────────────────
243
+ if (pathname === "/api/quality") {
244
+ try {
245
+ const targetPath = params.path || "src";
246
+ const issues = [];
247
+ function collectFilesSync(dir, exts) {
248
+ const results = [];
249
+ if (!fs.existsSync(dir))
250
+ return results;
251
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
252
+ for (const entry of entries) {
253
+ const fullPath = path.join(dir, entry.name);
254
+ if (entry.isDirectory() && !entry.name.startsWith("node_modules") && !entry.name.startsWith(".")) {
255
+ results.push(...collectFilesSync(fullPath, exts));
256
+ }
257
+ else if (entry.isFile() && exts.some((ext) => entry.name.endsWith(ext))) {
258
+ results.push(fullPath);
259
+ }
260
+ }
261
+ return results;
197
262
  }
198
- // Notify SSE clients
199
- sendSSEEvent("approval", { traceId, status: "APPROVED" });
200
- serveJson(res, 200, { success: true, message: `Trace ${traceId} approved successfully`, approved: messages.length });
263
+ const files = collectFilesSync(path.join(projectRoot, targetPath), [".ts", ".tsx"]);
264
+ let longFunctions = 0;
265
+ let deepNesting = 0;
266
+ let anyTypes = 0;
267
+ files.forEach((f) => {
268
+ const content = fs.readFileSync(f, "utf8");
269
+ const lines = content.split("\n");
270
+ const relativePath = path.relative(projectRoot, f);
271
+ // Check for `any` type
272
+ lines.forEach((line, idx) => {
273
+ if (line.trim().startsWith("//") || line.trim().startsWith("/*"))
274
+ return;
275
+ if (line.match(/\bany\b/) && !line.includes("// eslint-disable") && !line.includes("as any")) {
276
+ anyTypes++;
277
+ issues.push({ file: relativePath, type: "any-type", message: `Line ${idx + 1}: Usage of 'any' type` });
278
+ }
279
+ });
280
+ // Check for long functions
281
+ let inFunc = false;
282
+ let funcLines = 0;
283
+ for (const line of lines) {
284
+ if (line.match(/(?:function|=>)\s*\(/)) {
285
+ inFunc = true;
286
+ funcLines = 0;
287
+ }
288
+ if (inFunc) {
289
+ funcLines++;
290
+ if (line.includes("}") && funcLines > 50) {
291
+ longFunctions++;
292
+ issues.push({ file: relativePath, type: "complexity", message: `Function ${funcLines} lines (max: 50)` });
293
+ inFunc = false;
294
+ }
295
+ }
296
+ }
297
+ // Check nesting depth
298
+ lines.forEach((line, idx) => {
299
+ const indentMatch = line.match(/^(?:\s{2}){5,}/);
300
+ if (indentMatch && !line.trim().startsWith("//")) {
301
+ const depth = Math.floor(indentMatch[0].length / 2);
302
+ if (depth > 4) {
303
+ deepNesting++;
304
+ issues.push({ file: relativePath, type: "complexity", message: `Line ${idx + 1}: Nesting depth ${depth}` });
305
+ }
306
+ }
307
+ });
308
+ });
309
+ serveJson(res, 200, {
310
+ success: true,
311
+ data: {
312
+ totalFiles: files.length,
313
+ totalIssues: issues.length,
314
+ longFunctions,
315
+ deepNesting,
316
+ anyTypes,
317
+ issues: issues.slice(0, 50),
318
+ }
319
+ });
201
320
  }
202
321
  catch (e) {
203
322
  serveJson(res, 500, { success: false, error: e.message });
204
323
  }
205
324
  return;
206
325
  }
326
+ // ─── LLM Gateway API ─────────────────────────────────────────────
327
+ if (pathname === "/api/gateway/status") {
328
+ import("../../modules/gateway/index.js").then(({ gateway }) => {
329
+ const providers = gateway.getProviderHealth();
330
+ const strategy = gateway.loadBalancer.getStrategy();
331
+ const budget = gateway.costTracker.getBudgetStatus();
332
+ serveJson(res, 200, { success: true, data: { providers, strategy, budget } });
333
+ }).catch(e => {
334
+ serveJson(res, 200, { success: false, error: "Gateway not available: " + e.message });
335
+ });
336
+ return;
337
+ }
338
+ if (pathname === "/api/gateway/stats") {
339
+ import("../../modules/gateway/index.js").then(({ gateway }) => {
340
+ const stats = gateway.getStats();
341
+ const budget = gateway.costTracker.getBudgetStatus();
342
+ serveJson(res, 200, { success: true, data: { stats, budget } });
343
+ }).catch(e => {
344
+ serveJson(res, 200, { success: false, error: "Gateway not available: " + e.message });
345
+ });
346
+ return;
347
+ }
348
+ if (pathname === "/api/gateway/providers") {
349
+ import("../../modules/gateway/index.js").then(({ gateway, getAvailableProviderIds }) => {
350
+ const providers = gateway.getProviderHealth();
351
+ const available = getAvailableProviderIds();
352
+ const allProviders = available.map(id => {
353
+ const p = providers.find(pr => pr.id === id);
354
+ return p || { id, name: id, healthy: false, latencyMs: 0, priority: 99, enabled: false, models: [] };
355
+ });
356
+ serveJson(res, 200, { success: true, data: allProviders });
357
+ }).catch(e => {
358
+ serveJson(res, 200, { success: false, error: "Gateway not available: " + e.message });
359
+ });
360
+ return;
361
+ }
362
+ // ─── Adapter-Skills API ─────────────────────────────────────────
363
+ if (pathname === "/api/adapters/skills") {
364
+ import("../../modules/skills/adapter-skills.js")
365
+ .then(({ ADAPTER_SKILLS }) => {
366
+ const summary = Object.entries(ADAPTER_SKILLS).map(([id, config]) => ({
367
+ id,
368
+ skillCount: Object.keys(config.enabledSkills).length,
369
+ toolsCount: config.toolMapping ? Object.keys(config.toolMapping).length : 0,
370
+ skills: Object.keys(config.enabledSkills),
371
+ }));
372
+ serveJson(res, 200, { success: true, data: summary });
373
+ })
374
+ .catch((e) => {
375
+ serveJson(res, 500, { success: false, error: e.message });
376
+ });
377
+ return;
378
+ }
207
379
  // ─── Compliance API ────────────────────────────────────────────
208
380
  if (pathname === "/api/compliance") {
209
381
  try {
@@ -274,7 +446,7 @@ export async function dashboardCommand(port = FRAMEWORK.DASHBOARD_PORT) {
274
446
  }
275
447
  return;
276
448
  }
277
- // ─── SSE (Server-Sent Events) ──────────────────────────────────
449
+ // ─── SSE (Server-Sent Events) — Legacy support ─────────────────
278
450
  if (pathname === "/api/events") {
279
451
  res.writeHead(200, {
280
452
  "Content-Type": "text/event-stream",
@@ -282,16 +454,11 @@ export async function dashboardCommand(port = FRAMEWORK.DASHBOARD_PORT) {
282
454
  "Connection": "keep-alive",
283
455
  "Access-Control-Allow-Origin": "*",
284
456
  });
285
- const clientId = ++sseClientId;
286
- sseClients.push({ id: clientId, res });
287
457
  // Send initial keepalive
288
458
  res.write(": connected\n\n");
289
- // Remove client on disconnect
290
- req.on("close", () => {
291
- const index = sseClients.findIndex((c) => c.id === clientId);
292
- if (index !== -1)
293
- sseClients.splice(index, 1);
294
- });
459
+ // Keep connection alive
460
+ const keepAlive = setInterval(() => res.write(": keepalive\n\n"), 30000);
461
+ req.on("close", () => clearInterval(keepAlive));
295
462
  return;
296
463
  }
297
464
  // ─── Static UI Serving ─────────────────────────────────────────
@@ -320,21 +487,77 @@ export async function dashboardCommand(port = FRAMEWORK.DASHBOARD_PORT) {
320
487
  serveJson(res, 404, { error: "Not Found", message: "Route not found" });
321
488
  }
322
489
  });
490
+ // ─── WebSocket Server ──────────────────────────────────────────────
491
+ const wss = new WebSocketServer({ server, path: "/ws" });
492
+ wss.on("connection", (ws) => {
493
+ wsClients.add(ws);
494
+ // Send full state immediately on connect
495
+ const agents = Storage.getAllAgents();
496
+ const messages = Storage.getPendingMessages();
497
+ broadcastWS("agent_update", agents);
498
+ broadcastWS("message", messages);
499
+ ws.on("close", () => wsClients.delete(ws));
500
+ ws.on("message", (data) => {
501
+ try {
502
+ const msg = JSON.parse(data.toString());
503
+ if (msg.type === "ping") {
504
+ ws.send(JSON.stringify({ type: "pong" }));
505
+ }
506
+ }
507
+ catch { /* ignore */ }
508
+ });
509
+ });
510
+ // ─── Periodic Live Broadcast (every 5s) ────────────────────────────
511
+ const broadcastInterval = setInterval(() => {
512
+ try {
513
+ // Agents
514
+ const agents = Storage.getAllAgents();
515
+ broadcastWS("agent_update", { agents, timestamp: new Date().toISOString() });
516
+ // Pending Messages
517
+ const messages = Storage.getPendingMessages();
518
+ broadcastWS("message", { messages, timestamp: new Date().toISOString() });
519
+ // Approvals (pending) — via storage abstraction
520
+ const allMessages = Storage.getPendingMessages();
521
+ const approvals = allMessages.filter(m => m.category === "ALERT" || m.category === "ACTION");
522
+ broadcastWS("approval", { approvals, timestamp: new Date().toISOString() });
523
+ // Logs
524
+ const logs = Storage.getLogs().slice(-10);
525
+ broadcastWS("log", { logs, timestamp: new Date().toISOString() });
526
+ }
527
+ catch { /* silent */ }
528
+ }, 5000);
529
+ // Cleanup on server close
530
+ server.on("close", () => {
531
+ clearInterval(broadcastInterval);
532
+ wsClients.clear();
533
+ });
323
534
  server.listen(port, () => {
324
535
  UI.success("\n[START] Hermes Visual Control Plane is running!");
325
536
  UI.success(`[INFO] Web UI: http://localhost:${port}`);
326
537
  UI.success(`[DATA] API Base: http://localhost:${port}/api`);
327
- UI.success(`[SSE] Events: http://localhost:${port}/api/events`);
538
+ UI.success(`[WS] WebSocket: ws://localhost:${port}/ws`);
328
539
  UI.success("[ENDPOINTS]");
329
- UI.success(" GET /api/health → System health check");
330
- UI.success(" GET /api/status → Agent statuses");
331
- UI.success(" GET /api/memory → Project memory (Markdown)");
332
- UI.success(" GET /api/messages → Pending Hermes messages");
333
- UI.success(" GET /api/tasks → Active tasks (?traceId=...)");
334
- UI.success(" GET /api/agents → All registered agents");
335
- UI.success(" POST /api/approve/:id → Approve a trace");
336
- UI.success(" GET /api/compliance → Compliance violations (?path=...)");
337
- UI.success(" GET /api/events SSE real-time updates");
540
+ UI.success(" GET /api/health → System health check");
541
+ UI.success(" GET /api/status → Agent statuses");
542
+ UI.success(" GET /api/memory → Project memory (Markdown)");
543
+ UI.success(" GET /api/messages → Pending Hermes messages");
544
+ UI.success(" GET /api/tasks → Active tasks (?traceId=...)");
545
+ UI.success(" GET /api/agents → All registered agents");
546
+ UI.success(" POST /api/approve/:id → Approve a trace");
547
+ UI.success(" GET /api/compliance → Compliance violations (?path=...)");
548
+ UI.success(" GET /api/gateway/status LLM Gateway status + providers");
549
+ UI.success(" GET /api/gateway/stats → LLM Gateway usage stats");
550
+ UI.success(" GET /api/gateway/providers → All providers detail");
551
+ UI.success(" GET /api/events → SSE (legacy)");
552
+ UI.success(" WS /ws → WebSocket real-time (5s interval)");
553
+ UI.success("[LIVE MODULES]");
554
+ UI.success(" 🤖 Agents → agent_update (every 5s)");
555
+ UI.success(" 📨 Messages → message (every 5s)");
556
+ UI.success(" 🔐 Approvals → approval (every 5s)");
557
+ UI.success(" 🔁 Gateway → gateway updates (every 5s)");
558
+ UI.success(" 🧠 Memory → Memory API (on request)");
559
+ UI.success(" 🛡️ Compliance → Compliance API (on request)");
560
+ UI.success(" 📝 Logs → log (every 5s)");
338
561
  UI.warning("\n(Press Ctrl+C to stop the server)\n");
339
562
  });
340
563
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function gatewayCommand(args: string[]): Promise<void>;
@@ -0,0 +1,172 @@
1
+ /**
2
+ * ATABEY CLI — Gateway Commands
3
+ *
4
+ * Manage the LLM Gateway / Load Balancer from the CLI.
5
+ *
6
+ * Usage:
7
+ * atabey gateway status — Show gateway health & stats
8
+ * atabey gateway providers — List all providers
9
+ * atabey gateway stats — Show usage statistics & costs
10
+ * atabey gateway strategy <name> — Set load balancing strategy
11
+ * atabey gateway toggle <provider> — Enable/disable a provider
12
+ * atabey gateway reset — Reset all circuit breakers
13
+ * atabey gateway call <prompt> — Send a test query through the gateway
14
+ * atabey gateway budget <amount> — Set monthly budget in USD
15
+ */
16
+ import { LLMGateway } from "../../modules/gateway/gateway.js";
17
+ import { UI } from "../utils/ui.js";
18
+ const gateway = new LLMGateway();
19
+ export async function gatewayCommand(args) {
20
+ const subcommand = args[0] || "status";
21
+ switch (subcommand) {
22
+ case "status":
23
+ showGatewayStatus();
24
+ break;
25
+ case "providers":
26
+ listProviders();
27
+ break;
28
+ case "stats":
29
+ showStats();
30
+ break;
31
+ case "strategy": {
32
+ const strategy = args[1];
33
+ if (!strategy) {
34
+ process.stdout.write(`[GATEWAY] Current strategy: ${gateway.loadBalancer.getStrategy()}\n`);
35
+ process.stdout.write("[GATEWAY] Available: round-robin, least-latency, cost-optimized, failover, priority-based, model-based\n");
36
+ return;
37
+ }
38
+ const valid = [
39
+ "round-robin", "least-latency", "cost-optimized",
40
+ "failover", "priority-based", "model-based"
41
+ ];
42
+ if (!valid.includes(strategy)) {
43
+ UI.error(`Invalid strategy. Available: ${valid.join(", ")}`);
44
+ process.exit(64);
45
+ }
46
+ gateway.loadBalancer.setStrategy(strategy);
47
+ process.stdout.write(`[GATEWAY] Strategy set to: ${strategy}\n`);
48
+ break;
49
+ }
50
+ case "toggle": {
51
+ const providerId = args[1];
52
+ if (!providerId) {
53
+ UI.error("Provider ID required. Available: openai, anthropic, google, grok, ollama");
54
+ process.exit(64);
55
+ }
56
+ const provider = gateway.loadBalancer.getProvider(providerId);
57
+ if (!provider) {
58
+ UI.error(`Unknown provider: ${providerId}`);
59
+ process.exit(64);
60
+ }
61
+ const newState = !provider.config.enabled;
62
+ gateway.setProviderEnabled(providerId, newState);
63
+ process.stdout.write(`[GATEWAY] ${providerId} ${newState ? "enabled" : "disabled"}\n`);
64
+ break;
65
+ }
66
+ case "reset":
67
+ gateway.resetCircuitBreakers();
68
+ process.stdout.write("[GATEWAY] All circuit breakers reset\n");
69
+ break;
70
+ case "call": {
71
+ const prompt = args.slice(1).join(" ");
72
+ if (!prompt) {
73
+ UI.error("Prompt required. Usage: atabey gateway call \"your prompt\"");
74
+ process.exit(64);
75
+ }
76
+ await callGateway(prompt);
77
+ break;
78
+ }
79
+ case "budget": {
80
+ const amount = parseFloat(args[1]);
81
+ if (isNaN(amount) || amount <= 0) {
82
+ UI.error("Valid budget amount required (USD). Usage: atabey gateway budget 50");
83
+ process.exit(64);
84
+ }
85
+ gateway.costTracker.setBudget(amount);
86
+ process.stdout.write(`[GATEWAY] Monthly budget set to $${amount}\n`);
87
+ break;
88
+ }
89
+ default:
90
+ process.stdout.write(`
91
+ Usage: atabey gateway <subcommand>
92
+
93
+ Subcommands:
94
+ status Show gateway health and status
95
+ providers List all registered providers
96
+ stats Show usage statistics and costs
97
+ strategy [name] Set load balancing strategy
98
+ toggle <provider> Enable/disable a provider
99
+ reset Reset all circuit breakers
100
+ call <prompt> Send a test query through the gateway
101
+ budget <amount> Set monthly budget in USD
102
+ \n`);
103
+ }
104
+ }
105
+ function showGatewayStatus() {
106
+ const health = gateway.loadBalancer.getProviderHealthList();
107
+ const strategy = gateway.loadBalancer.getStrategy();
108
+ const budget = gateway.costTracker.getBudgetStatus();
109
+ process.stdout.write("\n=== Gateway Status ===\n\n");
110
+ process.stdout.write(`Strategy: ${strategy}\n`);
111
+ process.stdout.write(`Budget: ${budget ? `$${budget.spent.toFixed(2)} / $${budget.budget} (${budget.percentUsed.toFixed(1)}%)` : "Not set"}\n\n`);
112
+ process.stdout.write("Providers:\n");
113
+ for (const p of health) {
114
+ const icon = p.healthy ? "●" : "○";
115
+ const color = p.enabled ? "" : " (disabled)";
116
+ process.stdout.write(` ${icon} ${p.id}${color} — ${p.latencyMs.toFixed(0)}ms (priority ${p.priority})\n`);
117
+ }
118
+ process.stdout.write("\n");
119
+ }
120
+ function listProviders() {
121
+ const health = gateway.loadBalancer.getProviderHealthList();
122
+ process.stdout.write("\nRegistered Providers:\n\n");
123
+ for (const p of health) {
124
+ process.stdout.write(` ${p.name} (${p.id}):\n`);
125
+ process.stdout.write(` Status: ${p.enabled ? (p.healthy ? "Healthy" : "Unhealthy") : "Disabled"}\n`);
126
+ process.stdout.write(` Latency: ${p.latencyMs.toFixed(0)}ms\n`);
127
+ process.stdout.write(` Models: ${p.models.join(", ")}\n\n`);
128
+ }
129
+ }
130
+ function showStats() {
131
+ const stats = gateway.costTracker.getStats();
132
+ const budget = gateway.costTracker.getBudgetStatus();
133
+ process.stdout.write("\n=== Gateway Statistics ===\n\n");
134
+ process.stdout.write(`Total Requests: ${stats.totalRequests}\n`);
135
+ process.stdout.write(`Total Cost: $${stats.totalCost.toFixed(4)}\n`);
136
+ if (budget) {
137
+ process.stdout.write(`Budget Usage: $${budget.spent.toFixed(2)} / $${budget.budget} (${budget.percentUsed.toFixed(1)}%)\n`);
138
+ }
139
+ process.stdout.write("\nCosts by Provider:\n");
140
+ for (const [provider, cost] of Object.entries(stats.costsByProvider)) {
141
+ if (cost > 0) {
142
+ process.stdout.write(` ${provider}: $${cost.toFixed(4)}\n`);
143
+ }
144
+ }
145
+ process.stdout.write(`\nUptime: ${Math.floor(stats.uptime / 3600)}h ${Math.floor((stats.uptime % 3600) / 60)}m\n`);
146
+ process.stdout.write("\n");
147
+ }
148
+ async function callGateway(prompt) {
149
+ process.stdout.write(`\n[GATEWAY] Sending query: "${prompt.substring(0, 80)}..."\n`);
150
+ try {
151
+ const result = await gateway.chat({
152
+ messages: [{ role: "user", content: prompt }],
153
+ system: "You are a helpful assistant.",
154
+ provider: undefined,
155
+ model: undefined,
156
+ });
157
+ if (result.success) {
158
+ process.stdout.write(`\n✓ Response from ${result.provider} (${result.model})\n`);
159
+ process.stdout.write(` Cost: $${result.cost.toFixed(6)}\n`);
160
+ process.stdout.write(` Tokens: ${result.usage.totalTokens}\n`);
161
+ process.stdout.write(` Latency: ${result.latencyMs}ms\n\n`);
162
+ process.stdout.write(`${result.content.substring(0, 1000)}\n`);
163
+ }
164
+ else {
165
+ UI.error("Gateway call failed");
166
+ }
167
+ }
168
+ catch (err) {
169
+ UI.error(`Gateway call failed: ${err.message}`);
170
+ }
171
+ }
172
+ //# sourceMappingURL=gateway.js.map