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
@@ -1,21 +1,26 @@
1
1
  import { logger } from "../../shared/logger.js";
2
- import { Storage } from "../../shared/storage.js";
3
- import { asTraceID } from "../../shared/types.js";
2
+ import { AtabeyStorage } from "../../shared/storage.js";
3
+ import { asAgentID, asTraceID } from "../../shared/types.js";
4
4
  import { CoreMemory } from "../memory/core.js";
5
- import { RoutingEngine } from "./routing-engine.js";
6
5
  import { QualityGate } from "./quality-gate.js";
6
+ import { RoutingEngine } from "./routing-engine.js";
7
7
  /**
8
- * [ENGINE] Agent Executor
9
- * Gerçek ajan çağrılarını yönetir. Görevleri agent'lara dağıtır,
10
- * sonuçları toplar, quality gate'den geçirir ve memory'ye kaydeder.
8
+ * [ENGINE] Agent Executor — Production Implementation
9
+ *
10
+ * Manages real agent calls through the Hermes messaging system.
11
+ * Distributes tasks to agents, collects results, passes through quality gate,
12
+ * and saves to memory.
13
+ *
14
+ * Uses real Hermes message queue (not simulated).
11
15
  */
12
16
  export class AgentExecutor {
13
17
  /**
14
- * Bir görevi ilgili ajana dağıtır ve çalıştırır.
15
- * 1. Routing Engine ile uygun ajanı seç
16
- * 2. Ajanı çalıştır (task-specific output üret)
17
- * 3. Quality check'ten geçir
18
- * 4. Sonucu memory'ye kaydet
18
+ * Distributes a task to the relevant agent and executes it.
19
+ * 1. Select the best agent via Routing Engine
20
+ * 2. Send Hermes message
21
+ * 3. Wait for agent response (polling)
22
+ * 4. Pass through quality check
23
+ * 5. Save result to memory
19
24
  */
20
25
  static async execute(taskDescription, traceId) {
21
26
  // 1. Route the task to the best agent
@@ -29,7 +34,7 @@ export class AgentExecutor {
29
34
  for (let attempt = 1; attempt <= 3; attempt++) {
30
35
  try {
31
36
  logger.info(`[EXECUTOR] Attempt ${attempt}/3: ${agent} executing...`);
32
- // Execute the agent task
37
+ // Execute the agent task via Hermes messaging
33
38
  const output = await AgentExecutor.runAgentTask(agent, taskDescription, subTasks, traceId);
34
39
  lastOutput = output;
35
40
  // 3. Quality check
@@ -39,7 +44,7 @@ export class AgentExecutor {
39
44
  // 4. Save to memory
40
45
  await AgentExecutor.saveToMemory(agent, taskDescription, output, traceId);
41
46
  // Update agent status
42
- Storage.updateAgentStatus(agent.replace("@", ""), "COMPLETED", taskDescription);
47
+ AtabeyStorage.updateAgentStatus(agent.replace("@", ""), "COMPLETED", taskDescription);
43
48
  return {
44
49
  success: true,
45
50
  agent,
@@ -57,7 +62,7 @@ export class AgentExecutor {
57
62
  }
58
63
  // All attempts failed
59
64
  logger.error(`[EXECUTOR] ${agent} FAILED after 3 attempts. Last error: ${lastError}`);
60
- Storage.updateAgentStatus(agent.replace("@", ""), "BLOCKED", `Failed: ${taskDescription.substring(0, 60)}`);
65
+ AtabeyStorage.updateAgentStatus(agent.replace("@", ""), "BLOCKED", `Failed: ${taskDescription.substring(0, 60)}`);
61
66
  return {
62
67
  success: false,
63
68
  agent,
@@ -66,72 +71,95 @@ export class AgentExecutor {
66
71
  };
67
72
  }
68
73
  /**
69
- * Ajanı çalıştırır ve task-specific output üretir.
70
- *
71
- * Her ajan tipi için farklı bir "görev tamamlama" mantığı:
72
- * - @backend: API endpoint'i oluşturur
73
- * - @frontend: UI component'i oluşturur
74
- * - @database: Migration script'i oluşturur
75
- * - @security: Security audit raporu oluşturur
76
- * - Diğer: Genel task çıktısı
74
+ * Runs the agent via the Hermes messaging system.
77
75
  *
78
- * IMPLEMENTATION PLAN (v0.1.0):
79
- * 1. Agent'e Hermes mesajı gönder: sendMessage({ from: "@manager", to: agent, ... })
80
- * 2. Agent'in yanıtını bekle (polling veya event-driven)
81
- * 3. Yanıtı işle ve çıktı olarak döndür
76
+ * Flow:
77
+ * 1. Write DELEGATION message to agent's message queue
78
+ * 2. Wait for agent response (polling, max 30 seconds)
79
+ * 3. Parse response and return as output
82
80
  *
83
- * BLOCKER: Henüz gerçek agent'lar MCP üzerinden çalışmıyor.
84
- * Mevcut durum: generateAgentOutput() simülasyon string döndürüyor.
85
- * Priority: HIGH — v0.1.0 için implemente edilmeli.
81
+ * NOTE: In real MCP environment, agents read and process their own
82
+ * message queues. Here the queue is managed via SQLite.
86
83
  */
87
- static async runAgentTask(agent, taskDescription, subTasks, _traceId) {
84
+ static async runAgentTask(agent, taskDescription, subTasks, traceId) {
88
85
  const agentName = agent.replace("@", "");
89
- // TODO(v0.1.0): Replace with real Hermes agent delegation
90
- // const { sendMessage } = await import("../../cli/commands/orchestrate.js");
91
- // await sendMessage({
92
- // from: "@manager",
93
- // to: agent,
94
- // category: "DELEGATION",
95
- // content: taskDescription,
96
- // traceId: _traceId,
97
- // });
98
- // Update status
99
- Storage.updateAgentStatus(agentName, "EXECUTING", taskDescription);
86
+ const from = "@manager";
87
+ // ─── 1. Send Hermes Message ──────────────────────────────────────
88
+ const messagePayload = JSON.stringify({
89
+ type: "DELEGATION",
90
+ task: taskDescription,
91
+ subTasks,
92
+ traceId,
93
+ from,
94
+ });
95
+ AtabeyStorage.saveMessage({
96
+ from: asAgentID(from),
97
+ to: asAgentID(agent),
98
+ category: "DELEGATION",
99
+ content: messagePayload,
100
+ traceId: asTraceID(traceId),
101
+ timestamp: new Date().toISOString(),
102
+ status: "PENDING",
103
+ priority: "HIGH",
104
+ requiresApproval: false,
105
+ });
106
+ // Update agent status
107
+ AtabeyStorage.updateAgentStatus(agentName, "EXECUTING", taskDescription);
100
108
  // Log action
101
- Storage.getDB().prepare(`
109
+ AtabeyStorage.getDB().prepare(`
102
110
  INSERT INTO logs (agent, action, trace_id, status, summary)
103
111
  VALUES (?, ?, ?, ?, ?)
104
- `).run(agentName, "EXECUTING", _traceId, "IN_PROGRESS", taskDescription.substring(0, 200));
105
- // Agent-specific task execution (SIMULATED replace with real agent call in v0.1.0)
106
- const output = AgentExecutor.generateAgentOutput(agent, taskDescription, subTasks);
112
+ `).run(agentName, "DELEGATION_SENT", traceId, "IN_PROGRESS", taskDescription.substring(0, 200));
113
+ logger.info(`[HERMES] Delegation sent to ${agent} (trace: ${traceId})`);
114
+ // ─── 2. Wait for Agent Response (Polling) ────────────────────────
115
+ const output = await AgentExecutor.pollForAgentResponse(agentName, traceId);
107
116
  return output;
108
117
  }
109
118
  /**
110
- * Agent tipine göre mantıklı bir çıktı üretir.
119
+ * Polls for agent response from the Hermes message queue.
111
120
  *
112
- * NOTE: This is a SIMULATED implementation.
113
- * Replace with real agent output from Hermes message responses in v0.1.0.
121
+ * Polling strategy:
122
+ * - Check every 500ms
123
+ * - Max 30 seconds wait (60 attempts)
124
+ * - Return response if found, timeout if not
114
125
  */
115
- static generateAgentOutput(agent, task, subTasks) {
116
- const taskShort = task.length > 100 ? task.substring(0, 100) + "..." : task;
117
- const outputs = {
118
- "@manager": `[MANAGER] Orchestration completed for: ${taskShort}\nSubtasks planned: ${subTasks.length}`,
119
- "@backend": `[BACKEND] Service implementation completed for: ${taskShort}\nEndpoints and business logic implemented according to API contracts.`,
120
- "@frontend": `[FRONTEND] UI component built for: ${taskShort}\nResponsive design applied with atomic component structure.`,
121
- "@quality": `[QUALITY] Audit completed for: ${taskShort}\nCompliance, lint, and test coverage verified.`,
122
- "@database": `[DATABASE] Migration and optimization completed for: ${taskShort}\nSchema updated and queries optimized.`,
123
- "@security": `[SECURITY] Security audit completed for: ${taskShort}\nVulnerability scan and access control verified.`,
124
- "@devops": `[DEVOPS] Infrastructure configuration completed for: ${taskShort}\nCI/CD pipeline and deployment config prepared.`,
125
- "@architect": `[ARCHITECT] Architecture design completed for: ${taskShort}\nContracts and system design documented.`,
126
- "@analyst": `[ANALYST] Analysis completed for: ${taskShort}\nRequirements mapped and validated against contracts.`,
127
- "@mobile": `[MOBILE] Mobile implementation completed for: ${taskShort}\nReact Native components with offline-first support.`,
128
- "@explorer": `[EXPLORER] Codebase exploration completed for: ${taskShort}\nDependency graph and project map generated.`,
129
- "@git": `[GIT] Version control operations completed for: ${taskShort}\nCommit prepared with Trace ID.`,
130
- };
131
- return outputs[agent] || `[${agent.toUpperCase()}] Task completed: ${taskShort}`;
126
+ static async pollForAgentResponse(agentName, traceId) {
127
+ const maxAttempts = 60; // 30 seconds (500ms * 60)
128
+ const pollInterval = 500; // 500ms
129
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
130
+ // Check RESPONSE messages sent by the agent
131
+ const messages = AtabeyStorage.getPendingMessages();
132
+ const response = messages.find(m => m.from.replace("@", "") === agentName
133
+ && m.category === "RESPONSE"
134
+ && m.traceId === traceId
135
+ && m.status === "PENDING");
136
+ if (response) {
137
+ // Mark message as processed
138
+ if (response.id !== undefined) {
139
+ AtabeyStorage.updateMessageStatus(response.id, "PROCESSED");
140
+ }
141
+ // Log response
142
+ AtabeyStorage.getDB().prepare(`
143
+ INSERT INTO logs (agent, action, trace_id, status, summary)
144
+ VALUES (?, ?, ?, ?, ?)
145
+ `).run(agentName, "RESPONSE_RECEIVED", traceId, "SUCCESS", response.content.substring(0, 200));
146
+ logger.info(`[HERMES] Response received from @${agentName} (trace: ${traceId})`);
147
+ return response.content;
148
+ }
149
+ // Short delay before next poll
150
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
151
+ }
152
+ // Timeout — agent did not respond
153
+ const timeoutMsg = `[TIMEOUT] @${agentName} did not respond within ${(maxAttempts * pollInterval) / 1000}s`;
154
+ logger.warn(`[HERMES] ${timeoutMsg} (trace: ${traceId})`);
155
+ AtabeyStorage.getDB().prepare(`
156
+ INSERT INTO logs (agent, action, trace_id, status, summary)
157
+ VALUES (?, ?, ?, ?, ?)
158
+ `).run(agentName, "RESPONSE_TIMEOUT", traceId, "FAILED", timeoutMsg);
159
+ return timeoutMsg;
132
160
  }
133
161
  /**
134
- * Task sonucunu memory'ye kaydeder.
162
+ * Saves the task result to memory.
135
163
  */
136
164
  static async saveToMemory(agent, taskDescription, output, traceId) {
137
165
  // Save to Vector Memory
@@ -142,15 +170,15 @@ export class AgentExecutor {
142
170
  tags: [agent.replace("@", ""), "task-execution"],
143
171
  });
144
172
  // Save to SQLite logs
145
- Storage.getDB().prepare(`
173
+ AtabeyStorage.getDB().prepare(`
146
174
  INSERT INTO logs (agent, action, trace_id, status, summary)
147
175
  VALUES (?, ?, ?, ?, ?)
148
176
  `).run(agent.replace("@", ""), "COMPLETED", traceId, "SUCCESS", output.substring(0, 200));
149
177
  // Update task status
150
- const tasks = Storage.getTasks(asTraceID(traceId));
178
+ const tasks = AtabeyStorage.getTasks(asTraceID(traceId));
151
179
  const pendingTask = tasks.find(t => t.status === "IN_PROGRESS");
152
180
  if (pendingTask) {
153
- Storage.saveTask({
181
+ AtabeyStorage.saveTask({
154
182
  ...pendingTask,
155
183
  status: "COMPLETED",
156
184
  });
@@ -1 +1 @@
1
- {"version":3,"file":"agent-executor.js","sourceRoot":"","sources":["../../../../src/modules/engines/agent-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-executor.js","sourceRoot":"","sources":["../../../../src/modules/engines/agent-executor.ts"],"names":[],"mappings":"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"}
@@ -5,19 +5,19 @@ export interface QualityResult {
5
5
  }
6
6
  /**
7
7
  * [ENGINE] Quality Gate
8
- * Atabey Order v2 — Deterministik Kalite Denetim Merkezi.
9
- * Ajan çıktılarını ve kod tabanını anayasal kurallara göre denetler.
8
+ * Atabey Order v2 — Deterministic Quality Inspection Center.
9
+ * Inspects agent outputs and codebase against constitutional rules.
10
10
  */
11
11
  export declare class QualityGate {
12
12
  /**
13
- * Bir ajanın çalışmasını kalite testinden geçirir.
14
- * 1. Compliance (Anayasal uyumluluk)
15
- * 2. Lint (Kod standartları)
16
- * 3. Tests (Birim ve entegrasyon testleri)
13
+ * Puts an agent's work through quality testing.
14
+ * 1. Compliance (Constitutional compliance)
15
+ * 2. Lint (Code standards)
16
+ * 3. Tests (Unit and integration tests)
17
17
  */
18
18
  static check(agent: string, output: string, task: string): Promise<QualityResult>;
19
19
  /**
20
- * Ajan çıktısının temel mantıksal kontrolü
20
+ * Basic logical validation of agent output
21
21
  */
22
22
  private static validateOutputContent;
23
23
  }
@@ -3,15 +3,15 @@ import { scanProjectCompliance } from "../../cli/utils/compliance.js";
3
3
  import { logger } from "../../shared/logger.js";
4
4
  /**
5
5
  * [ENGINE] Quality Gate
6
- * Atabey Order v2 — Deterministik Kalite Denetim Merkezi.
7
- * Ajan çıktılarını ve kod tabanını anayasal kurallara göre denetler.
6
+ * Atabey Order v2 — Deterministic Quality Inspection Center.
7
+ * Inspects agent outputs and codebase against constitutional rules.
8
8
  */
9
9
  export class QualityGate {
10
10
  /**
11
- * Bir ajanın çalışmasını kalite testinden geçirir.
12
- * 1. Compliance (Anayasal uyumluluk)
13
- * 2. Lint (Kod standartları)
14
- * 3. Tests (Birim ve entegrasyon testleri)
11
+ * Puts an agent's work through quality testing.
12
+ * 1. Compliance (Constitutional compliance)
13
+ * 2. Lint (Code standards)
14
+ * 3. Tests (Unit and integration tests)
15
15
  */
16
16
  static async check(agent, output, task) {
17
17
  logger.info(`[QUALITY_GATE] Starting audit for ${agent}...`);
@@ -67,7 +67,7 @@ export class QualityGate {
67
67
  return { passed: true, reason: "All quality gates passed." };
68
68
  }
69
69
  /**
70
- * Ajan çıktısının temel mantıksal kontrolü
70
+ * Basic logical validation of agent output
71
71
  */
72
72
  static validateOutputContent(output, _task) {
73
73
  if (!output || output.trim().length < 10) {
@@ -15,64 +15,55 @@ export interface RoutingResult {
15
15
  }
16
16
  export declare class RoutingEngine {
17
17
  /**
18
- * Gelişmiş Routing Engine — görev tanımını analiz eder,
19
- * en uygun ajanı seçer ve alt görevleri belirler.
18
+ * Advanced Routing Engine — analyzes task descriptions,
19
+ * selects the most suitable agent, and determines subtasks.
20
20
  *
21
- * TF-IDF benzeri kelime ağırlıklandırma ile çalışır.
21
+ * Uses TF-IDF-like keyword weighting.
22
22
  */
23
23
  static resolveAgent(taskDescription: string): string;
24
24
  /**
25
- * Detaylı routing sonucu döndürür — score, confidence, reasoning, subTasks
25
+ * Returns detailed routing result — score, confidence, reasoning, subTasks
26
26
  */
27
27
  static resolveWithDetails(taskDescription: string): RoutingResult;
28
28
  /**
29
- * Görevi otomatik alt görevlere böler
29
+ * Automatically splits the task into subtasks
30
30
  */
31
31
  static planTask(taskDescription: string): string[];
32
32
  private static tokenize;
33
33
  /**
34
- * Basit term frequency hesaplama
34
+ * Simple term frequency calculation
35
35
  */
36
36
  private static calculateTf;
37
37
  private static fallbackRouting;
38
38
  private static generateSubTasks;
39
39
  /**
40
- * Kalite geri besleme loop'u — @quality reddederse tekrar dener
41
- * Gerçek MCP çağrıları kullanılır, simülasyon değil.
40
+ * Quality feedback loop — retries if @quality rejects
41
+ * Uses real MCP calls, not simulations.
42
42
  */
43
43
  static qualityLoop(agent: string, taskDescription: string, maxRetries?: number): Promise<{
44
44
  success: boolean;
45
45
  attempts: number;
46
46
  }>;
47
47
  /**
48
- * Ajanı MCP üzerinden çalıştırır.
48
+ * Runs the agent through the Hermes messaging system.
49
49
  *
50
- * IMPLEMENTATION PLAN (v0.1.0):
51
- * 1. Send message via Hermes: sendMessage({ from: "@manager", to: agent, category: "DELEGATION", content: task, traceId })
52
- * 2. Poll for response in .atabey/messages/ via Storage.getPendingMessages()
53
- * 3. Parse and return the agent's output
54
- *
55
- * BLOCKER: AgentExecutor.execute() uses simulated output (generateAgentOutput).
56
- * This method is only called from qualityLoop which is NOT yet used by orchestrate.ts.
57
- * Priority: MEDIUM — implement after AgentExecutor is production-ready.
50
+ * Flow:
51
+ * 1. Write DELEGATION message to agent's queue (Storage.saveMessage)
52
+ * 2. Wait for agent response (polling, max 30 seconds)
53
+ * 3. Parse response and return as output
58
54
  */
59
55
  private static runAgent;
60
56
  /**
61
- * Kalite kontrolünü MCP üzerinden çalıştırır.
62
- *
63
- * IMPLEMENTATION PLAN (v0.1.0):
64
- * 1. Call scanProjectCompliance() from compliance.ts
65
- * 2. Call lintCommand() from lint.ts
66
- * 3. Run vitest via runTests()
67
- * 4. Aggregate results into { passed, reason }
57
+ * Runs quality control through the real QualityGate.
68
58
  *
69
- * BLOCKER: scanProjectCompliance is in framework-mcp which has circular dependency risk.
70
- * Priority: MEDIUM implement after compliance module is consolidated.
59
+ * Flow:
60
+ * 1. QualityGate.check() for compliance + lint + test + content validation
61
+ * 2. Aggregate results
71
62
  */
72
63
  private static runQualityCheck;
73
64
  private static getCandidates;
74
65
  /**
75
- * Specialties alanı olmayan agent'lar için varsayılan değerler
66
+ * Default values for agents without a specialties field
76
67
  */
77
68
  private static defaultSpecialties;
78
69
  }
@@ -2,19 +2,21 @@ import fs from "fs";
2
2
  import path from "path";
3
3
  import { getFrameworkDir } from "../../cli/utils/memory.js";
4
4
  import { logger } from "../../shared/logger.js";
5
+ import { AtabeyStorage } from "../../shared/storage.js";
6
+ import { asAgentID, asTraceID } from "../../shared/types.js";
5
7
  import { ALL_AGENTS } from "../agents/definitions.js";
6
8
  export class RoutingEngine {
7
9
  /**
8
- * Gelişmiş Routing Engine — görev tanımını analiz eder,
9
- * en uygun ajanı seçer ve alt görevleri belirler.
10
+ * Advanced Routing Engine — analyzes task descriptions,
11
+ * selects the most suitable agent, and determines subtasks.
10
12
  *
11
- * TF-IDF benzeri kelime ağırlıklandırma ile çalışır.
13
+ * Uses TF-IDF-like keyword weighting.
12
14
  */
13
15
  static resolveAgent(taskDescription) {
14
16
  return this.resolveWithDetails(taskDescription).agent;
15
17
  }
16
18
  /**
17
- * Detaylı routing sonucu döndürür — score, confidence, reasoning, subTasks
19
+ * Returns detailed routing result — score, confidence, reasoning, subTasks
18
20
  */
19
21
  static resolveWithDetails(taskDescription) {
20
22
  const textLower = taskDescription.toLowerCase();
@@ -59,7 +61,7 @@ export class RoutingEngine {
59
61
  bestScore = score;
60
62
  bestAgent = candidate.agent;
61
63
  bestReasoning = matches.length > 0
62
- ? `Eşleşen alanlar: ${[...new Set(matches)].join(", ")}`
64
+ ? `Matching fields: ${[...new Set(matches)].join(", ")}`
63
65
  : "Selected based on general capability";
64
66
  bestSubTasks = this.generateSubTasks(candidate.agent, taskDescription);
65
67
  }
@@ -83,7 +85,7 @@ export class RoutingEngine {
83
85
  };
84
86
  }
85
87
  /**
86
- * Görevi otomatik alt görevlere böler
88
+ * Automatically splits the task into subtasks
87
89
  */
88
90
  static planTask(taskDescription) {
89
91
  const result = this.resolveWithDetails(taskDescription);
@@ -110,11 +112,11 @@ export class RoutingEngine {
110
112
  .filter(t => t.length > 1);
111
113
  }
112
114
  /**
113
- * Basit term frequency hesaplama
115
+ * Simple term frequency calculation
114
116
  */
115
117
  static calculateTf(term, tokens) {
116
118
  const count = tokens.filter(t => t === term).length;
117
- return 1 + (count * 0.5); // Base 1, her tekrar +0.5
119
+ return 1 + (count * 0.5); // Base 1, each repetition +0.5
118
120
  }
119
121
  static fallbackRouting(tokens) {
120
122
  const text = tokens.join(" ");
@@ -237,8 +239,8 @@ export class RoutingEngine {
237
239
  return [...specific, ...base];
238
240
  }
239
241
  /**
240
- * Kalite geri besleme loop'u — @quality reddederse tekrar dener
241
- * Gerçek MCP çağrıları kullanılır, simülasyon değil.
242
+ * Quality feedback loop — retries if @quality rejects
243
+ * Uses real MCP calls, not simulations.
242
244
  */
243
245
  static async qualityLoop(agent, taskDescription, maxRetries = 3) {
244
246
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
@@ -271,46 +273,70 @@ export class RoutingEngine {
271
273
  return { success: false, attempts: maxRetries };
272
274
  }
273
275
  /**
274
- * Ajanı MCP üzerinden çalıştırır.
276
+ * Runs the agent through the Hermes messaging system.
275
277
  *
276
- * IMPLEMENTATION PLAN (v0.1.0):
277
- * 1. Send message via Hermes: sendMessage({ from: "@manager", to: agent, category: "DELEGATION", content: task, traceId })
278
- * 2. Poll for response in .atabey/messages/ via Storage.getPendingMessages()
279
- * 3. Parse and return the agent's output
280
- *
281
- * BLOCKER: AgentExecutor.execute() uses simulated output (generateAgentOutput).
282
- * This method is only called from qualityLoop which is NOT yet used by orchestrate.ts.
283
- * Priority: MEDIUM — implement after AgentExecutor is production-ready.
278
+ * Flow:
279
+ * 1. Write DELEGATION message to agent's queue (Storage.saveMessage)
280
+ * 2. Wait for agent response (polling, max 30 seconds)
281
+ * 3. Parse response and return as output
284
282
  */
285
283
  static async runAgent(agent, task) {
286
- // TODO(v0.1.0): Replace with real MCP/Hermes call chain
287
- // const { sendMessage } = await import("../../cli/commands/orchestrate.js");
288
- // await sendMessage({ from: "@manager", to: agent, category: "DELEGATION", content: task, traceId: "T-000" });
289
- // const response = await pollForAgentResponse(agent, task);
290
- // return response;
291
- logger.debug(`[MCP] runAgent: ${agent} executing task (SIMULATED)`, { agent, task: task.substring(0, 100) });
292
- return `${agent} completed task: ${task}`;
284
+ const agentName = agent.replace("@", "");
285
+ const traceId = `T-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;
286
+ const messagePayload = JSON.stringify({
287
+ type: "DELEGATION",
288
+ task,
289
+ traceId,
290
+ from: "@manager",
291
+ });
292
+ AtabeyStorage.saveMessage({
293
+ from: asAgentID("@manager"),
294
+ to: asAgentID(agent),
295
+ category: "DELEGATION",
296
+ content: messagePayload,
297
+ traceId: asTraceID(traceId),
298
+ timestamp: new Date().toISOString(),
299
+ status: "PENDING",
300
+ priority: "HIGH",
301
+ requiresApproval: false,
302
+ });
303
+ logger.info(`[HERMES] Delegation sent to ${agent} (trace: ${traceId})`);
304
+ // Poll for response (max 30 seconds)
305
+ const maxAttempts = 60;
306
+ const pollInterval = 500;
307
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
308
+ const messages = AtabeyStorage.getPendingMessages();
309
+ const response = messages.find(m => m.from.replace("@", "") === agentName
310
+ && m.category === "RESPONSE"
311
+ && m.traceId === traceId
312
+ && m.status === "PENDING");
313
+ if (response) {
314
+ if (response.id !== undefined) {
315
+ AtabeyStorage.updateMessageStatus(response.id, "PROCESSED");
316
+ }
317
+ logger.info(`[HERMES] Response received from ${agent} (trace: ${traceId})`);
318
+ return response.content;
319
+ }
320
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
321
+ }
322
+ const timeoutMsg = `[TIMEOUT] ${agent} did not respond within 30s`;
323
+ logger.warn(`[HERMES] ${timeoutMsg} (trace: ${traceId})`);
324
+ return timeoutMsg;
293
325
  }
294
326
  /**
295
- * Kalite kontrolünü MCP üzerinden çalıştırır.
296
- *
297
- * IMPLEMENTATION PLAN (v0.1.0):
298
- * 1. Call scanProjectCompliance() from compliance.ts
299
- * 2. Call lintCommand() from lint.ts
300
- * 3. Run vitest via runTests()
301
- * 4. Aggregate results into { passed, reason }
327
+ * Runs quality control through the real QualityGate.
302
328
  *
303
- * BLOCKER: scanProjectCompliance is in framework-mcp which has circular dependency risk.
304
- * Priority: MEDIUM implement after compliance module is consolidated.
329
+ * Flow:
330
+ * 1. QualityGate.check() for compliance + lint + test + content validation
331
+ * 2. Aggregate results
305
332
  */
306
333
  static async runQualityCheck(result) {
307
- // TODO(v0.1.0): Replace with real compliance + lint + test pipeline
308
- // const { scanProjectCompliance } = await import("../../cli/utils/compliance.js");
309
- // const issues = scanProjectCompliance("src");
310
- // const passed = issues.length === 0;
311
- // return { passed, reason: passed ? "All checks passed" : `${issues.length} compliance issues found` };
312
- logger.debug("[MCP] runQualityCheck: evaluating result (SIMULATED)", { resultLength: result.length });
313
- return { passed: true, reason: "All checks passed (simulated)" };
334
+ const { QualityGate } = await import("./quality-gate.js");
335
+ const qualityResult = await QualityGate.check("@quality", result, "Quality check via routing engine");
336
+ return {
337
+ passed: qualityResult.passed,
338
+ reason: qualityResult.reason,
339
+ };
314
340
  }
315
341
  static getCandidates() {
316
342
  const frameworkDir = getFrameworkDir();
@@ -342,7 +368,7 @@ export class RoutingEngine {
342
368
  if (candidates.length === 0) {
343
369
  candidates = ALL_AGENTS.map(ag => ({
344
370
  agent: ag.name.startsWith("@") ? ag.name : `@${ag.name}`,
345
- specialties: ag.specialties || this.defaultSpecialties(ag.name),
371
+ specialties: ag.specialties ?? this.defaultSpecialties(ag.name),
346
372
  displayName: ag.displayName,
347
373
  role: ag.role,
348
374
  capability: ag.capability,
@@ -352,7 +378,7 @@ export class RoutingEngine {
352
378
  return candidates;
353
379
  }
354
380
  /**
355
- * Specialties alanı olmayan agent'lar için varsayılan değerler
381
+ * Default values for agents without a specialties field
356
382
  */
357
383
  static defaultSpecialties(name) {
358
384
  const defaults = {