atabey 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/ATABEY.md +52 -249
  2. package/PRIVACY.md +161 -0
  3. package/README.md +355 -140
  4. package/bin/completion.sh +30 -0
  5. package/bin/{validate-agent-army.js → validate-al-registry.js} +6 -6
  6. package/dist/framework-mcp/src/index.js +14 -2
  7. package/dist/framework-mcp/src/index.js.map +1 -1
  8. package/dist/framework-mcp/src/resources/index.js +5 -5
  9. package/dist/framework-mcp/src/resources/index.js.map +1 -1
  10. package/dist/framework-mcp/src/tools/control_plane/locking.d.ts +1 -1
  11. package/dist/framework-mcp/src/tools/control_plane/locking.js +11 -9
  12. package/dist/framework-mcp/src/tools/control_plane/locking.js.map +1 -1
  13. package/dist/framework-mcp/src/tools/definitions.d.ts +5 -0
  14. package/dist/framework-mcp/src/tools/definitions.js +116 -241
  15. package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
  16. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +4 -4
  17. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js.map +1 -1
  18. package/dist/framework-mcp/src/tools/file_system/read_file.js +1 -1
  19. package/dist/framework-mcp/src/tools/file_system/replace_text.js +3 -3
  20. package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +1 -1
  21. package/dist/framework-mcp/src/tools/file_system/write_file.d.ts +1 -1
  22. package/dist/framework-mcp/src/tools/file_system/write_file.js +4 -4
  23. package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -1
  24. package/dist/framework-mcp/src/tools/framework/audit_deps.js +1 -1
  25. package/dist/framework-mcp/src/tools/framework/audit_deps.js.map +1 -1
  26. package/dist/framework-mcp/src/tools/framework/submit_plan.d.ts +4 -3
  27. package/dist/framework-mcp/src/tools/framework/submit_plan.js.map +1 -1
  28. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.d.ts +19 -0
  29. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +138 -0
  30. package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js.map +1 -0
  31. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.d.ts +8 -0
  32. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +91 -0
  33. package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js.map +1 -0
  34. package/dist/framework-mcp/src/tools/index.d.ts +2 -0
  35. package/dist/framework-mcp/src/tools/index.js +81 -17
  36. package/dist/framework-mcp/src/tools/index.js.map +1 -1
  37. package/dist/framework-mcp/src/tools/memory/delete_knowledge.d.ts +8 -0
  38. package/dist/framework-mcp/src/tools/memory/delete_knowledge.js +29 -0
  39. package/dist/framework-mcp/src/tools/memory/delete_knowledge.js.map +1 -0
  40. package/dist/framework-mcp/src/tools/memory/read_memory.js +1 -1
  41. package/dist/framework-mcp/src/tools/memory/read_memory.js.map +1 -1
  42. package/dist/framework-mcp/src/tools/memory/search_knowledge.d.ts +8 -0
  43. package/dist/framework-mcp/src/tools/memory/search_knowledge.js +49 -0
  44. package/dist/framework-mcp/src/tools/memory/search_knowledge.js.map +1 -0
  45. package/dist/framework-mcp/src/tools/memory/store_knowledge.d.ts +10 -0
  46. package/dist/framework-mcp/src/tools/memory/store_knowledge.js +31 -0
  47. package/dist/framework-mcp/src/tools/memory/store_knowledge.js.map +1 -0
  48. package/dist/framework-mcp/src/tools/messaging/ask_human.d.ts +6 -0
  49. package/dist/framework-mcp/src/tools/messaging/ask_human.js +31 -0
  50. package/dist/framework-mcp/src/tools/messaging/ask_human.js.map +1 -0
  51. package/dist/framework-mcp/src/tools/observability/check_ports.js +1 -1
  52. package/dist/framework-mcp/src/tools/observability/check_ports.js.map +1 -1
  53. package/dist/framework-mcp/src/tools/observability/get_health.js +1 -1
  54. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.d.ts +11 -0
  55. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +166 -0
  56. package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js.map +1 -0
  57. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.d.ts +11 -0
  58. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +135 -0
  59. package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js.map +1 -0
  60. package/dist/framework-mcp/src/tools/schemas.d.ts +439 -0
  61. package/dist/framework-mcp/src/tools/schemas.js +183 -0
  62. package/dist/framework-mcp/src/tools/schemas.js.map +1 -0
  63. package/dist/framework-mcp/src/tools/search/get_map.js +2 -2
  64. package/dist/framework-mcp/src/tools/search/get_map.js.map +1 -1
  65. package/dist/framework-mcp/src/tools/search/grep_search.js +10 -7
  66. package/dist/framework-mcp/src/tools/search/grep_search.js.map +1 -1
  67. package/dist/framework-mcp/src/tools/shell/run_command.js +72 -7
  68. package/dist/framework-mcp/src/tools/shell/run_command.js.map +1 -1
  69. package/dist/framework-mcp/src/tools/types.d.ts +10 -9
  70. package/dist/framework-mcp/src/utils/compliance.d.ts +10 -0
  71. package/dist/framework-mcp/src/utils/compliance.js +102 -41
  72. package/dist/framework-mcp/src/utils/compliance.js.map +1 -1
  73. package/dist/framework-mcp/src/utils/fs.d.ts +10 -7
  74. package/dist/framework-mcp/src/utils/fs.js +10 -7
  75. package/dist/framework-mcp/src/utils/fs.js.map +1 -1
  76. package/dist/framework-mcp/src/utils/types.d.ts +8 -0
  77. package/dist/framework-mcp/src/utils/types.js +4 -0
  78. package/dist/framework-mcp/src/utils/types.js.map +1 -1
  79. package/dist/framework-mcp/src/utils/zod-to-mcp.d.ts +10 -0
  80. package/dist/framework-mcp/src/utils/zod-to-mcp.js +80 -0
  81. package/dist/framework-mcp/src/utils/zod-to-mcp.js.map +1 -0
  82. package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js +4 -4
  83. package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js.map +1 -1
  84. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +17 -16
  85. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +1 -1
  86. package/dist/src/cli/adapters/core.js +2 -1
  87. package/dist/src/cli/adapters/core.js.map +1 -1
  88. package/dist/src/cli/adapters/scaffold.js +2 -1
  89. package/dist/src/cli/adapters/scaffold.js.map +1 -1
  90. package/dist/src/cli/commands/check.js +17 -17
  91. package/dist/src/cli/commands/check.js.map +1 -1
  92. package/dist/src/cli/commands/compliance.d.ts +5 -1
  93. package/dist/src/cli/commands/compliance.js +34 -42
  94. package/dist/src/cli/commands/compliance.js.map +1 -1
  95. package/dist/src/cli/commands/contract.js +6 -5
  96. package/dist/src/cli/commands/contract.js.map +1 -1
  97. package/dist/src/cli/commands/coverage.d.ts +1 -0
  98. package/dist/src/cli/commands/coverage.js +121 -0
  99. package/dist/src/cli/commands/coverage.js.map +1 -0
  100. package/dist/src/cli/commands/dashboard.d.ts +1 -1
  101. package/dist/src/cli/commands/dashboard.js +479 -39
  102. package/dist/src/cli/commands/dashboard.js.map +1 -1
  103. package/dist/src/cli/commands/explorer.js +8 -7
  104. package/dist/src/cli/commands/explorer.js.map +1 -1
  105. package/dist/src/cli/commands/gateway.d.ts +1 -0
  106. package/dist/src/cli/commands/gateway.js +172 -0
  107. package/dist/src/cli/commands/gateway.js.map +1 -0
  108. package/dist/src/cli/commands/git.js +8 -9
  109. package/dist/src/cli/commands/git.js.map +1 -1
  110. package/dist/src/cli/commands/index-codebase.d.ts +4 -0
  111. package/dist/src/cli/commands/index-codebase.js +52 -0
  112. package/dist/src/cli/commands/index-codebase.js.map +1 -0
  113. package/dist/src/cli/commands/init/create-agent.js +3 -3
  114. package/dist/src/cli/commands/init/create-agent.js.map +1 -1
  115. package/dist/src/cli/commands/init/scaffold-core.d.ts +1 -1
  116. package/dist/src/cli/commands/init/scaffold-core.js +7 -6
  117. package/dist/src/cli/commands/init/scaffold-core.js.map +1 -1
  118. package/dist/src/cli/commands/init/scaffold-docs.js +4 -3
  119. package/dist/src/cli/commands/init/scaffold-docs.js.map +1 -1
  120. package/dist/src/cli/commands/init/scaffold-ops.js +3 -3
  121. package/dist/src/cli/commands/init/scaffold-ops.js.map +1 -1
  122. package/dist/src/cli/commands/init/scaffold-standards.js +11 -7
  123. package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -1
  124. package/dist/src/cli/commands/init.d.ts +2 -0
  125. package/dist/src/cli/commands/init.js +127 -45
  126. package/dist/src/cli/commands/init.js.map +1 -1
  127. package/dist/src/cli/commands/knowledge.js +5 -32
  128. package/dist/src/cli/commands/knowledge.js.map +1 -1
  129. package/dist/src/cli/commands/lint.js +5 -4
  130. package/dist/src/cli/commands/lint.js.map +1 -1
  131. package/dist/src/cli/commands/mcp.d.ts +11 -0
  132. package/dist/src/cli/commands/mcp.js +130 -0
  133. package/dist/src/cli/commands/mcp.js.map +1 -0
  134. package/dist/src/cli/commands/orchestrate.d.ts +10 -9
  135. package/dist/src/cli/commands/orchestrate.js +132 -66
  136. package/dist/src/cli/commands/orchestrate.js.map +1 -1
  137. package/dist/src/cli/commands/plan.js +16 -14
  138. package/dist/src/cli/commands/plan.js.map +1 -1
  139. package/dist/src/cli/commands/quickstart.d.ts +9 -0
  140. package/dist/src/cli/commands/quickstart.js +72 -0
  141. package/dist/src/cli/commands/quickstart.js.map +1 -0
  142. package/dist/src/cli/commands/script.js +6 -5
  143. package/dist/src/cli/commands/script.js.map +1 -1
  144. package/dist/src/cli/commands/security.js +5 -8
  145. package/dist/src/cli/commands/security.js.map +1 -1
  146. package/dist/src/cli/commands/status.js +23 -19
  147. package/dist/src/cli/commands/status.js.map +1 -1
  148. package/dist/src/cli/commands/trace.d.ts +2 -0
  149. package/dist/src/cli/commands/trace.js +59 -61
  150. package/dist/src/cli/commands/trace.js.map +1 -1
  151. package/dist/src/cli/index.js +236 -294
  152. package/dist/src/cli/index.js.map +1 -1
  153. package/dist/src/cli/platforms/core.d.ts +12 -0
  154. package/dist/src/cli/platforms/core.js +73 -0
  155. package/dist/src/cli/platforms/core.js.map +1 -0
  156. package/dist/src/cli/platforms/index.d.ts +5 -0
  157. package/dist/src/cli/platforms/index.js +6 -0
  158. package/dist/src/cli/platforms/index.js.map +1 -0
  159. package/dist/src/cli/platforms/paths.d.ts +15 -0
  160. package/dist/src/cli/platforms/paths.js +102 -0
  161. package/dist/src/cli/platforms/paths.js.map +1 -0
  162. package/dist/src/cli/platforms/scaffold.d.ts +2 -0
  163. package/dist/src/cli/platforms/scaffold.js +73 -0
  164. package/dist/src/cli/platforms/scaffold.js.map +1 -0
  165. package/dist/src/cli/platforms/utils.d.ts +4 -0
  166. package/dist/src/cli/platforms/utils.js +76 -0
  167. package/dist/src/cli/platforms/utils.js.map +1 -0
  168. package/dist/src/cli/shims.js +5 -5
  169. package/dist/src/cli/utils/claude.js +2 -1
  170. package/dist/src/cli/utils/claude.js.map +1 -1
  171. package/dist/src/cli/utils/compliance.d.ts +10 -9
  172. package/dist/src/cli/utils/compliance.js +10 -171
  173. package/dist/src/cli/utils/compliance.js.map +1 -1
  174. package/dist/src/cli/utils/fs.d.ts +3 -3
  175. package/dist/src/cli/utils/fs.js +8 -7
  176. package/dist/src/cli/utils/fs.js.map +1 -1
  177. package/dist/src/cli/utils/i18n.d.ts +5 -0
  178. package/dist/src/cli/utils/i18n.js +5 -0
  179. package/dist/src/cli/utils/i18n.js.map +1 -1
  180. package/dist/src/cli/utils/memory.js +9 -6
  181. package/dist/src/cli/utils/memory.js.map +1 -1
  182. package/dist/src/cli/utils/pkg.js +8 -7
  183. package/dist/src/cli/utils/pkg.js.map +1 -1
  184. package/dist/src/cli/utils/schemas.d.ts +4 -4
  185. package/dist/src/cli/utils/ui.d.ts +23 -0
  186. package/dist/src/cli/utils/ui.js +42 -0
  187. package/dist/src/cli/utils/ui.js.map +1 -1
  188. package/dist/src/contracts/tasks.d.ts +4 -4
  189. package/dist/src/dashboard/src/hooks/useApi.d.ts +18 -0
  190. package/dist/src/dashboard/src/hooks/useApi.js +47 -0
  191. package/dist/src/dashboard/src/hooks/useApi.js.map +1 -0
  192. package/dist/src/dashboard/src/hooks/useSSE.d.ts +12 -0
  193. package/dist/src/dashboard/src/hooks/useSSE.js +60 -0
  194. package/dist/src/dashboard/src/hooks/useSSE.js.map +1 -0
  195. package/dist/src/modules/adapters/shared.js +3 -3
  196. package/dist/src/modules/adapters/shared.js.map +1 -1
  197. package/dist/src/modules/agents/definitions.d.ts +5 -13
  198. package/dist/src/modules/agents/definitions.js +179 -78
  199. package/dist/src/modules/agents/definitions.js.map +1 -1
  200. package/dist/src/modules/agents/registry/analyst.js +2 -1
  201. package/dist/src/modules/agents/registry/analyst.js.map +1 -1
  202. package/dist/src/modules/agents/registry/architect.js +1 -0
  203. package/dist/src/modules/agents/registry/architect.js.map +1 -1
  204. package/dist/src/modules/agents/registry/backend.js +8 -6
  205. package/dist/src/modules/agents/registry/backend.js.map +1 -1
  206. package/dist/src/modules/agents/registry/database.js.map +1 -1
  207. package/dist/src/modules/agents/registry/devops.js.map +1 -1
  208. package/dist/src/modules/agents/registry/explorer.js +2 -0
  209. package/dist/src/modules/agents/registry/explorer.js.map +1 -1
  210. package/dist/src/modules/agents/registry/frontend.js +8 -6
  211. package/dist/src/modules/agents/registry/frontend.js.map +1 -1
  212. package/dist/src/modules/agents/registry/git.js.map +1 -1
  213. package/dist/src/modules/agents/registry/manager.js +11 -4
  214. package/dist/src/modules/agents/registry/manager.js.map +1 -1
  215. package/dist/src/modules/agents/registry/mobile.js +7 -5
  216. package/dist/src/modules/agents/registry/mobile.js.map +1 -1
  217. package/dist/src/modules/agents/registry/native.js +7 -5
  218. package/dist/src/modules/agents/registry/native.js.map +1 -1
  219. package/dist/src/modules/agents/registry/quality.js +11 -8
  220. package/dist/src/modules/agents/registry/quality.js.map +1 -1
  221. package/dist/src/modules/agents/registry/security.js.map +1 -1
  222. package/dist/src/modules/contracts/api.d.ts +178 -0
  223. package/dist/src/modules/contracts/api.js +56 -0
  224. package/dist/src/modules/contracts/api.js.map +1 -0
  225. package/dist/src/modules/contracts/index.d.ts +5 -0
  226. package/dist/src/modules/contracts/index.js +6 -0
  227. package/dist/src/modules/contracts/index.js.map +1 -0
  228. package/dist/src/modules/engines/agent-executor.d.ts +50 -0
  229. package/dist/src/modules/engines/agent-executor.js +188 -0
  230. package/dist/src/modules/engines/agent-executor.js.map +1 -0
  231. package/dist/src/modules/engines/health-engine.d.ts +7 -1
  232. package/dist/src/modules/engines/health-engine.js +85 -8
  233. package/dist/src/modules/engines/health-engine.js.map +1 -1
  234. package/dist/src/modules/engines/planning-engine.d.ts +1 -1
  235. package/dist/src/modules/engines/planning-engine.js +5 -4
  236. package/dist/src/modules/engines/planning-engine.js.map +1 -1
  237. package/dist/src/modules/engines/quality-gate.d.ts +23 -0
  238. package/dist/src/modules/engines/quality-gate.js +85 -0
  239. package/dist/src/modules/engines/quality-gate.js.map +1 -0
  240. package/dist/src/modules/engines/risk-engine.js +6 -6
  241. package/dist/src/modules/engines/risk-engine.js.map +1 -1
  242. package/dist/src/modules/engines/routing-engine.d.ts +59 -1
  243. package/dist/src/modules/engines/routing-engine.js +353 -25
  244. package/dist/src/modules/engines/routing-engine.js.map +1 -1
  245. package/dist/src/modules/engines/types.d.ts +7 -3
  246. package/dist/src/modules/gateway/circuit-breaker.d.ts +40 -0
  247. package/dist/src/modules/gateway/circuit-breaker.js +163 -0
  248. package/dist/src/modules/gateway/circuit-breaker.js.map +1 -0
  249. package/dist/src/modules/gateway/cost-tracker.d.ts +55 -0
  250. package/dist/src/modules/gateway/cost-tracker.js +127 -0
  251. package/dist/src/modules/gateway/cost-tracker.js.map +1 -0
  252. package/dist/src/modules/gateway/gateway.d.ts +68 -0
  253. package/dist/src/modules/gateway/gateway.js +235 -0
  254. package/dist/src/modules/gateway/gateway.js.map +1 -0
  255. package/dist/src/modules/gateway/index.d.ts +19 -0
  256. package/dist/src/modules/gateway/index.js +19 -0
  257. package/dist/src/modules/gateway/index.js.map +1 -0
  258. package/dist/src/modules/gateway/load-balancer.d.ts +86 -0
  259. package/dist/src/modules/gateway/load-balancer.js +230 -0
  260. package/dist/src/modules/gateway/load-balancer.js.map +1 -0
  261. package/dist/src/modules/gateway/providers/anthropic.d.ts +14 -0
  262. package/dist/src/modules/gateway/providers/anthropic.js +169 -0
  263. package/dist/src/modules/gateway/providers/anthropic.js.map +1 -0
  264. package/dist/src/modules/gateway/providers/base.d.ts +38 -0
  265. package/dist/src/modules/gateway/providers/base.js +42 -0
  266. package/dist/src/modules/gateway/providers/base.js.map +1 -0
  267. package/dist/src/modules/gateway/providers/google.d.ts +18 -0
  268. package/dist/src/modules/gateway/providers/google.js +176 -0
  269. package/dist/src/modules/gateway/providers/google.js.map +1 -0
  270. package/dist/src/modules/gateway/providers/grok.d.ts +14 -0
  271. package/dist/src/modules/gateway/providers/grok.js +166 -0
  272. package/dist/src/modules/gateway/providers/grok.js.map +1 -0
  273. package/dist/src/modules/gateway/providers/index.d.ts +21 -0
  274. package/dist/src/modules/gateway/providers/index.js +38 -0
  275. package/dist/src/modules/gateway/providers/index.js.map +1 -0
  276. package/dist/src/modules/gateway/providers/ollama.d.ts +23 -0
  277. package/dist/src/modules/gateway/providers/ollama.js +187 -0
  278. package/dist/src/modules/gateway/providers/ollama.js.map +1 -0
  279. package/dist/src/modules/gateway/providers/openai.d.ts +14 -0
  280. package/dist/src/modules/gateway/providers/openai.js +170 -0
  281. package/dist/src/modules/gateway/providers/openai.js.map +1 -0
  282. package/dist/src/modules/gateway/rate-limiter.d.ts +41 -0
  283. package/dist/src/modules/gateway/rate-limiter.js +119 -0
  284. package/dist/src/modules/gateway/rate-limiter.js.map +1 -0
  285. package/dist/src/modules/gateway/types.d.ts +114 -0
  286. package/dist/src/modules/gateway/types.js +8 -0
  287. package/dist/src/modules/gateway/types.js.map +1 -0
  288. package/dist/src/modules/memory/core.d.ts +42 -0
  289. package/dist/src/modules/memory/core.js +100 -0
  290. package/dist/src/modules/memory/core.js.map +1 -0
  291. package/dist/src/modules/memory/embedding.d.ts +28 -0
  292. package/dist/src/modules/memory/embedding.js +131 -0
  293. package/dist/src/modules/memory/embedding.js.map +1 -0
  294. package/dist/src/modules/memory/types.d.ts +18 -0
  295. package/dist/src/modules/memory/types.js +2 -0
  296. package/dist/src/modules/memory/types.js.map +1 -0
  297. package/dist/src/modules/memory/vector-store.d.ts +13 -0
  298. package/dist/src/modules/memory/vector-store.js +75 -0
  299. package/dist/src/modules/memory/vector-store.js.map +1 -0
  300. package/dist/src/modules/providers/definitions.d.ts +9 -0
  301. package/dist/src/modules/providers/definitions.js +141 -0
  302. package/dist/src/modules/providers/definitions.js.map +1 -0
  303. package/dist/src/modules/providers/registry.d.ts +12 -0
  304. package/dist/src/modules/providers/registry.js +19 -0
  305. package/dist/src/modules/providers/registry.js.map +1 -0
  306. package/dist/src/modules/providers/shared.d.ts +1 -0
  307. package/dist/src/modules/providers/shared.js +105 -0
  308. package/dist/src/modules/providers/shared.js.map +1 -0
  309. package/dist/src/modules/providers/types.d.ts +14 -0
  310. package/dist/src/modules/providers/types.js +2 -0
  311. package/dist/src/modules/providers/types.js.map +1 -0
  312. package/dist/src/modules/skills/adapter-skills.d.ts +68 -0
  313. package/dist/src/modules/skills/adapter-skills.js +450 -0
  314. package/dist/src/modules/skills/adapter-skills.js.map +1 -0
  315. package/dist/src/shared/audit.d.ts +105 -0
  316. package/dist/src/shared/audit.js +220 -0
  317. package/dist/src/shared/audit.js.map +1 -0
  318. package/dist/src/shared/constants.d.ts +11 -11
  319. package/dist/src/shared/constants.js +3 -3
  320. package/dist/src/shared/constants.js.map +1 -1
  321. package/dist/src/shared/fs.js +4 -2
  322. package/dist/src/shared/fs.js.map +1 -1
  323. package/dist/src/shared/lock.d.ts +82 -0
  324. package/dist/src/shared/lock.js +160 -0
  325. package/dist/src/shared/lock.js.map +1 -0
  326. package/dist/src/shared/logger.d.ts +2 -0
  327. package/dist/src/shared/logger.js +15 -5
  328. package/dist/src/shared/logger.js.map +1 -1
  329. package/dist/src/shared/pii.d.ts +37 -0
  330. package/dist/src/shared/pii.js +122 -0
  331. package/dist/src/shared/pii.js.map +1 -0
  332. package/dist/src/shared/retention.d.ts +63 -0
  333. package/dist/src/shared/retention.js +171 -0
  334. package/dist/src/shared/retention.js.map +1 -0
  335. package/dist/src/shared/storage.d.ts +13 -11
  336. package/dist/src/shared/storage.js +18 -14
  337. package/dist/src/shared/storage.js.map +1 -1
  338. package/dist/src/shared/string.d.ts +1 -0
  339. package/dist/src/shared/string.js +30 -0
  340. package/dist/src/shared/string.js.map +1 -0
  341. package/dist/src/shared/types.d.ts +8 -0
  342. package/dist/src/shared/types.js +4 -0
  343. package/dist/src/shared/types.js.map +1 -1
  344. package/dist/tests/adapter.test.js +3 -2
  345. package/dist/tests/adapter.test.js.map +1 -1
  346. package/dist/tests/adapters/paths.test.js +4 -4
  347. package/dist/tests/adapters/paths.test.js.map +1 -1
  348. package/dist/tests/cli/commands/check.test.d.ts +1 -0
  349. package/dist/tests/cli/commands/check.test.js +9 -0
  350. package/dist/tests/cli/commands/check.test.js.map +1 -0
  351. package/dist/tests/cli/commands/coverage.test.d.ts +1 -0
  352. package/dist/tests/cli/commands/coverage.test.js +9 -0
  353. package/dist/tests/cli/commands/coverage.test.js.map +1 -0
  354. package/dist/tests/cli/commands/dashboard-coverage.test.d.ts +1 -0
  355. package/dist/tests/cli/commands/dashboard-coverage.test.js +88 -0
  356. package/dist/tests/cli/commands/dashboard-coverage.test.js.map +1 -0
  357. package/dist/tests/cli/commands/exports.test.d.ts +1 -0
  358. package/dist/tests/cli/commands/exports.test.js +61 -0
  359. package/dist/tests/cli/commands/exports.test.js.map +1 -0
  360. package/dist/tests/cli/commands/lint.test.d.ts +1 -0
  361. package/dist/tests/cli/commands/lint.test.js +9 -0
  362. package/dist/tests/cli/commands/lint.test.js.map +1 -0
  363. package/dist/tests/cli/init/adapter_init.test.js +4 -5
  364. package/dist/tests/cli/init/adapter_init.test.js.map +1 -1
  365. package/dist/tests/cli/init/unified_init.test.js +5 -7
  366. package/dist/tests/cli/init/unified_init.test.js.map +1 -1
  367. package/dist/tests/core-memory.test.d.ts +1 -0
  368. package/dist/tests/core-memory.test.js +78 -0
  369. package/dist/tests/core-memory.test.js.map +1 -0
  370. package/dist/tests/dashboard.test.d.ts +1 -0
  371. package/dist/tests/dashboard.test.js +116 -0
  372. package/dist/tests/dashboard.test.js.map +1 -0
  373. package/dist/tests/fs-utils.test.js +5 -5
  374. package/dist/tests/fs-utils.test.js.map +1 -1
  375. package/dist/tests/integration/agent_flow.test.js +24 -10
  376. package/dist/tests/integration/agent_flow.test.js.map +1 -1
  377. package/dist/tests/modules/adapters/adapters.test.js +2 -2
  378. package/dist/tests/modules/adapters/adapters.test.js.map +1 -1
  379. package/dist/tests/modules/contracts/contracts.test.d.ts +1 -0
  380. package/dist/tests/modules/contracts/contracts.test.js +73 -0
  381. package/dist/tests/modules/contracts/contracts.test.js.map +1 -0
  382. package/dist/tests/modules/engines/agent-executor.test.d.ts +1 -0
  383. package/dist/tests/modules/engines/agent-executor.test.js +61 -0
  384. package/dist/tests/modules/engines/agent-executor.test.js.map +1 -0
  385. package/dist/tests/modules/engines/evaluation-engine.test.d.ts +1 -0
  386. package/dist/tests/modules/engines/evaluation-engine.test.js +45 -0
  387. package/dist/tests/modules/engines/evaluation-engine.test.js.map +1 -0
  388. package/dist/tests/modules/engines/health-engine.test.d.ts +1 -0
  389. package/dist/tests/modules/engines/health-engine.test.js +56 -0
  390. package/dist/tests/modules/engines/health-engine.test.js.map +1 -0
  391. package/dist/tests/modules/engines/planning-engine.test.d.ts +1 -0
  392. package/dist/tests/modules/engines/planning-engine.test.js +75 -0
  393. package/dist/tests/modules/engines/planning-engine.test.js.map +1 -0
  394. package/dist/tests/modules/engines/risk-engine.test.d.ts +1 -0
  395. package/dist/tests/modules/engines/risk-engine.test.js +61 -0
  396. package/dist/tests/modules/engines/risk-engine.test.js.map +1 -0
  397. package/dist/tests/modules/engines/routing-engine.test.d.ts +1 -0
  398. package/dist/tests/modules/engines/routing-engine.test.js +56 -0
  399. package/dist/tests/modules/engines/routing-engine.test.js.map +1 -0
  400. package/dist/tests/modules/gateway/circuit-breaker.test.d.ts +1 -0
  401. package/dist/tests/modules/gateway/circuit-breaker.test.js +124 -0
  402. package/dist/tests/modules/gateway/circuit-breaker.test.js.map +1 -0
  403. package/dist/tests/modules/gateway/cost-tracker.test.d.ts +1 -0
  404. package/dist/tests/modules/gateway/cost-tracker.test.js +74 -0
  405. package/dist/tests/modules/gateway/cost-tracker.test.js.map +1 -0
  406. package/dist/tests/modules/gateway/load-balancer.test.d.ts +1 -0
  407. package/dist/tests/modules/gateway/load-balancer.test.js +70 -0
  408. package/dist/tests/modules/gateway/load-balancer.test.js.map +1 -0
  409. package/dist/tests/modules/gateway/rate-limiter.test.d.ts +1 -0
  410. package/dist/tests/modules/gateway/rate-limiter.test.js +62 -0
  411. package/dist/tests/modules/gateway/rate-limiter.test.js.map +1 -0
  412. package/dist/tests/modules/memory/vector-store.test.d.ts +1 -0
  413. package/dist/tests/modules/memory/vector-store.test.js +109 -0
  414. package/dist/tests/modules/memory/vector-store.test.js.map +1 -0
  415. package/dist/tests/orchestrator-dependencies.test.js +40 -22
  416. package/dist/tests/orchestrator-dependencies.test.js.map +1 -1
  417. package/dist/tests/planning-engine.test.js +9 -8
  418. package/dist/tests/planning-engine.test.js.map +1 -1
  419. package/dist/tests/risk-engine.test.d.ts +1 -0
  420. package/dist/tests/risk-engine.test.js +44 -0
  421. package/dist/tests/risk-engine.test.js.map +1 -0
  422. package/dist/tests/shared/audit.test.d.ts +1 -0
  423. package/dist/tests/shared/audit.test.js +53 -0
  424. package/dist/tests/shared/audit.test.js.map +1 -0
  425. package/dist/tests/status-cost.test.js +15 -24
  426. package/dist/tests/status-cost.test.js.map +1 -1
  427. package/dist/tests/status.test.js +16 -17
  428. package/dist/tests/status.test.js.map +1 -1
  429. package/dist/tests/storage-operations.test.d.ts +1 -0
  430. package/dist/tests/storage-operations.test.js +116 -0
  431. package/dist/tests/storage-operations.test.js.map +1 -0
  432. package/dist/tests/trace-replay.test.js +34 -40
  433. package/dist/tests/trace-replay.test.js.map +1 -1
  434. package/dist/ui/assets/index-B-d2ejS8.js +519 -0
  435. package/dist/ui/assets/index-CyXywq5G.css +1 -0
  436. package/dist/ui/index.html +2 -2
  437. package/dist/vitest.config.js +5 -5
  438. package/dist/vitest.config.js.map +1 -1
  439. package/framework-mcp/README.md +339 -25
  440. package/framework-mcp/dist/dashboard/assets/index-BAPGLiWE.js +267 -0
  441. package/framework-mcp/dist/dashboard/index.html +15 -0
  442. package/framework-mcp/dist/framework-mcp/src/constants.js +64 -0
  443. package/framework-mcp/dist/framework-mcp/src/index.js +156 -0
  444. package/framework-mcp/dist/framework-mcp/src/resources/index.js +58 -0
  445. package/framework-mcp/dist/framework-mcp/src/tools/control_plane/locking.js +84 -0
  446. package/framework-mcp/dist/framework-mcp/src/tools/control_plane/registry.js +35 -0
  447. package/framework-mcp/dist/framework-mcp/src/tools/definitions.js +197 -0
  448. package/framework-mcp/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +64 -0
  449. package/framework-mcp/dist/framework-mcp/src/tools/file_system/patch_file.js +34 -0
  450. package/framework-mcp/dist/framework-mcp/src/tools/file_system/read_file.js +51 -0
  451. package/framework-mcp/dist/framework-mcp/src/tools/file_system/replace_text.js +50 -0
  452. package/framework-mcp/dist/framework-mcp/src/tools/file_system/write_file.js +55 -0
  453. package/framework-mcp/dist/framework-mcp/src/tools/framework/audit_deps.js +41 -0
  454. package/framework-mcp/dist/framework-mcp/src/tools/framework/get_status.js +5 -0
  455. package/framework-mcp/dist/framework-mcp/src/tools/framework/orchestrate.js +5 -0
  456. package/framework-mcp/dist/framework-mcp/src/tools/framework/run_tests.js +27 -0
  457. package/framework-mcp/dist/framework-mcp/src/tools/framework/submit_plan.js +13 -0
  458. package/framework-mcp/dist/framework-mcp/src/tools/framework/update_contract_hash.js +5 -0
  459. package/framework-mcp/dist/framework-mcp/src/tools/framework/update_memory.js +8 -0
  460. package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +137 -0
  461. package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +90 -0
  462. package/framework-mcp/dist/framework-mcp/src/tools/index.js +126 -0
  463. package/framework-mcp/dist/framework-mcp/src/tools/memory/delete_knowledge.js +28 -0
  464. package/framework-mcp/dist/framework-mcp/src/tools/memory/get_insights.js +22 -0
  465. package/framework-mcp/dist/framework-mcp/src/tools/memory/read_memory.js +28 -0
  466. package/framework-mcp/dist/framework-mcp/src/tools/memory/search_knowledge.js +48 -0
  467. package/framework-mcp/dist/framework-mcp/src/tools/memory/store_knowledge.js +30 -0
  468. package/framework-mcp/dist/framework-mcp/src/tools/messaging/ask_human.js +30 -0
  469. package/framework-mcp/dist/framework-mcp/src/tools/messaging/log_action.js +22 -0
  470. package/framework-mcp/dist/framework-mcp/src/tools/messaging/send_message.js +94 -0
  471. package/framework-mcp/dist/framework-mcp/src/tools/observability/check_ports.js +26 -0
  472. package/framework-mcp/dist/framework-mcp/src/tools/observability/get_health.js +19 -0
  473. package/framework-mcp/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +165 -0
  474. package/framework-mcp/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +134 -0
  475. package/framework-mcp/dist/framework-mcp/src/tools/quality/check_lint.js +30 -0
  476. package/framework-mcp/dist/framework-mcp/src/tools/schemas.js +182 -0
  477. package/framework-mcp/dist/framework-mcp/src/tools/search/get_gaps.js +48 -0
  478. package/framework-mcp/dist/framework-mcp/src/tools/search/get_map.js +43 -0
  479. package/framework-mcp/dist/framework-mcp/src/tools/search/grep_search.js +78 -0
  480. package/framework-mcp/dist/framework-mcp/src/tools/search/list_dir.js +28 -0
  481. package/framework-mcp/dist/framework-mcp/src/tools/shell/run_command.js +121 -0
  482. package/framework-mcp/dist/framework-mcp/src/tools/types.js +1 -0
  483. package/framework-mcp/dist/framework-mcp/src/utils/cli.js +59 -0
  484. package/framework-mcp/dist/framework-mcp/src/utils/compliance.js +292 -0
  485. package/framework-mcp/dist/framework-mcp/src/utils/errors.js +68 -0
  486. package/framework-mcp/dist/framework-mcp/src/utils/fs.js +47 -0
  487. package/framework-mcp/dist/framework-mcp/src/utils/memory.js +74 -0
  488. package/framework-mcp/dist/framework-mcp/src/utils/metrics.js +56 -0
  489. package/framework-mcp/dist/framework-mcp/src/utils/permissions.js +71 -0
  490. package/framework-mcp/dist/framework-mcp/src/utils/security.js +60 -0
  491. package/framework-mcp/dist/framework-mcp/src/utils/storage.js +207 -0
  492. package/framework-mcp/dist/framework-mcp/src/utils/types.js +16 -0
  493. package/framework-mcp/dist/framework-mcp/src/utils/zod-to-mcp.js +79 -0
  494. package/framework-mcp/dist/index.js +14 -2
  495. package/framework-mcp/dist/src/cli/utils/memory.js +279 -0
  496. package/framework-mcp/dist/src/cli/utils/time.js +27 -0
  497. package/framework-mcp/dist/src/cli/utils/ui.js +100 -0
  498. package/framework-mcp/dist/src/modules/memory/core.js +99 -0
  499. package/framework-mcp/dist/src/modules/memory/embedding.js +130 -0
  500. package/framework-mcp/dist/src/modules/memory/types.js +1 -0
  501. package/framework-mcp/dist/src/modules/memory/vector-store.js +74 -0
  502. package/framework-mcp/dist/src/shared/constants.js +187 -0
  503. package/framework-mcp/dist/src/shared/fs.js +53 -0
  504. package/framework-mcp/dist/src/shared/logger.js +126 -0
  505. package/framework-mcp/dist/src/shared/pii.js +121 -0
  506. package/framework-mcp/dist/src/shared/storage.js +211 -0
  507. package/framework-mcp/dist/src/shared/types.js +16 -0
  508. package/framework-mcp/dist/tools/definitions.js +79 -247
  509. package/framework-mcp/dist/tools/index.js +37 -0
  510. package/framework-mcp/dist/tools/schemas.js +133 -0
  511. package/framework-mcp/dist/utils/types.js +4 -0
  512. package/framework-mcp/dist/utils/zod-to-mcp.js +77 -0
  513. package/framework-mcp/package.json +2 -2
  514. package/mcp.json +5 -4
  515. package/package.json +19 -17
  516. package/templates/full/ATABEY_FULL.md +515 -0
  517. package/templates/standards/crud-governance.md +1 -1
  518. package/templates/standards/logging-and-secrets.md +1 -1
  519. package/templates/standards/performance-standards.md +2 -2
  520. package/templates/standards/quality-standards.md +1 -1
  521. package/dist/ui/assets/index-Bkt7APzu.css +0 -1
  522. package/dist/ui/assets/index-CeX-06mI.js +0 -49
@@ -1,29 +1,20 @@
1
- import http from "http";
2
1
  import fs from "fs";
2
+ import http from "http";
3
3
  import path from "path";
4
4
  import { fileURLToPath } from "url";
5
+ import { WebSocket, WebSocketServer } from "ws";
6
+ import { FRAMEWORK } from "../../shared/constants.js";
7
+ import { appendFile } from "../../shared/fs.js";
8
+ import { Storage } from "../../shared/storage.js";
9
+ import { asTraceID } from "../../shared/types.js";
5
10
  import { getFrameworkDir } from "../utils/memory.js";
6
11
  import { UI } from "../utils/ui.js";
7
- import { FRAMEWORK } from "../../shared/constants.js";
8
12
  /**
9
- * Serves a JSON file.
13
+ * Serves a JSON response.
10
14
  */
11
- function serveJson(res, filePath) {
12
- if (fs.existsSync(filePath)) {
13
- try {
14
- const content = fs.readFileSync(filePath, "utf8");
15
- res.writeHead(200, { "Content-Type": "application/json" });
16
- res.end(content);
17
- }
18
- catch (e) {
19
- res.writeHead(500);
20
- res.end(JSON.stringify({ error: "Read Error", message: e.message }));
21
- }
22
- }
23
- else {
24
- res.writeHead(404);
25
- res.end(JSON.stringify({ error: "Not Found", path: filePath }));
26
- }
15
+ function serveJson(res, statusCode, data) {
16
+ res.writeHead(statusCode, { "Content-Type": "application/json" });
17
+ res.end(JSON.stringify(data));
27
18
  }
28
19
  /**
29
20
  * Serves a file with specific content type.
@@ -46,18 +37,52 @@ function serveFile(res, filePath, contentType) {
46
37
  }
47
38
  }
48
39
  /**
49
- * 🖥️ Hermes Visual Control Plane (Dashboard Server)
40
+ * Parses the URL path and query parameters.
41
+ */
42
+ function parseUrl(url) {
43
+ const [pathname, queryString] = url.split("?");
44
+ const params = {};
45
+ if (queryString) {
46
+ queryString.split("&").forEach((pair) => {
47
+ const [key, value] = pair.split("=");
48
+ params[decodeURIComponent(key)] = decodeURIComponent(value || "");
49
+ });
50
+ }
51
+ return { pathname, params };
52
+ }
53
+ /**
54
+ * WebSocket clients store for real-time updates.
55
+ */
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
+ }
67
+ }
68
+ else {
69
+ wsClients.delete(ws);
70
+ }
71
+ });
72
+ }
73
+ /**
74
+ * [SERVER] Hermes Visual Control Plane (Dashboard Server) — Extended
50
75
  * Serves the framework state as a JSON API and the bundled Web UI.
51
76
  */
52
77
  export async function dashboardCommand(port = FRAMEWORK.DASHBOARD_PORT) {
53
78
  const frameworkDir = getFrameworkDir();
54
79
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
55
- const projectRoot = path.resolve(__dirname, "../../../");
56
- const uiDistPath = path.join(projectRoot, "dist/ui");
80
+ const projectRoot = path.resolve(__dirname, "../../../../");
81
+ const uiDistPath = path.join(projectRoot, "framework-mcp/dist/dashboard");
57
82
  const server = http.createServer((req, res) => {
58
83
  // CORS Headers
59
84
  res.setHeader("Access-Control-Allow-Origin", "*");
60
- res.setHeader("Access-Control-Allow-Methods", "GET, OPTIONS");
85
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
61
86
  res.setHeader("Access-Control-Allow-Headers", "Content-Type");
62
87
  if (req.method === "OPTIONS") {
63
88
  res.writeHead(204);
@@ -65,32 +90,381 @@ export async function dashboardCommand(port = FRAMEWORK.DASHBOARD_PORT) {
65
90
  return;
66
91
  }
67
92
  const url = req.url || "/";
68
- // API Routes
69
- if (url === "/api/status") {
93
+ const { pathname, params } = parseUrl(url);
94
+ // ─── API Routes ────────────────────────────────────────────────
95
+ // Health check
96
+ if (pathname === "/api/health") {
97
+ serveJson(res, 200, { status: "healthy", version: "0.0.6", frameworkDir });
98
+ return;
99
+ }
100
+ // System status
101
+ if (pathname === "/api/status") {
70
102
  const statusPath = path.join(frameworkDir, "memory", "status.json");
71
- serveJson(res, statusPath);
103
+ serveFile(res, statusPath, "application/json");
72
104
  return;
73
105
  }
74
- if (url === "/api/memory") {
106
+ // Project memory (Markdown)
107
+ if (pathname === "/api/memory") {
75
108
  const memoryPath = path.join(frameworkDir, "memory", "PROJECT_MEMORY.md");
76
109
  serveFile(res, memoryPath, "text/markdown");
77
110
  return;
78
111
  }
79
- if (url.startsWith("/api/logs/")) {
80
- const agent = url.replace("/api/logs/", "");
81
- const logPath = path.join(frameworkDir, "logs", `${agent}.json`);
82
- serveJson(res, logPath);
112
+ // Memory Search (Vector Embeddings)
113
+ if (pathname === "/api/memory/search") {
114
+ try {
115
+ const query = params.q || "";
116
+ const limit = parseInt(params.limit || "5", 10);
117
+ if (!query) {
118
+ serveJson(res, 400, { success: false, error: "Search query 'q' is required" });
119
+ return;
120
+ }
121
+ import("../../modules/memory/core.js").then(async ({ CoreMemory }) => {
122
+ const results = await CoreMemory.recall(query, { limit });
123
+ serveJson(res, 200, { success: true, data: results });
124
+ }).catch(e => {
125
+ serveJson(res, 500, { success: false, error: "Failed to load memory module: " + e.message });
126
+ });
127
+ }
128
+ catch (e) {
129
+ serveJson(res, 500, { success: false, error: e.message });
130
+ }
83
131
  return;
84
132
  }
85
- if (url === "/api/health") {
86
- res.writeHead(200, { "Content-Type": "application/json" });
87
- res.end(JSON.stringify({ status: "healthy", version: "0.0.6", frameworkDir }));
133
+ // Agent & System Logs (SQLite)
134
+ if (pathname.startsWith("/api/logs")) {
135
+ try {
136
+ const logs = Storage.getLogs();
137
+ // Optionally filter by agent if /api/logs/:agent is requested
138
+ const agent = pathname.split("/api/logs/")[1];
139
+ const filteredLogs = agent ? logs.filter(l => l.agent === agent) : logs;
140
+ serveJson(res, 200, { success: true, data: filteredLogs });
141
+ }
142
+ catch (e) {
143
+ serveJson(res, 500, { success: false, error: e.message });
144
+ }
88
145
  return;
89
146
  }
90
- // Static UI Serving
91
- let filePath = path.join(uiDistPath, url === "/" ? "index.html" : url);
147
+ // ─── Messages API ──────────────────────────────────────────────
148
+ if (pathname === "/api/messages") {
149
+ try {
150
+ const messages = Storage.getPendingMessages();
151
+ serveJson(res, 200, { success: true, data: messages });
152
+ }
153
+ catch (e) {
154
+ serveJson(res, 500, { success: false, error: e.message });
155
+ }
156
+ return;
157
+ }
158
+ // ─── Tasks API ─────────────────────────────────────────────────
159
+ if (pathname === "/api/tasks") {
160
+ try {
161
+ const traceId = params.traceId ? asTraceID(params.traceId) : undefined;
162
+ const tasks = Storage.getTasks(traceId);
163
+ serveJson(res, 200, { success: true, data: tasks });
164
+ }
165
+ catch (e) {
166
+ serveJson(res, 500, { success: false, error: e.message });
167
+ }
168
+ return;
169
+ }
170
+ // ─── Agents API ────────────────────────────────────────────────
171
+ if (pathname === "/api/agents") {
172
+ try {
173
+ const agents = Storage.getAllAgents();
174
+ serveJson(res, 200, { success: true, data: agents });
175
+ }
176
+ catch (e) {
177
+ serveJson(res, 500, { success: false, error: e.message });
178
+ }
179
+ return;
180
+ }
181
+ // ─── Approval API ──────────────────────────────────────────────
182
+ if (pathname.startsWith("/api/approve/") && req.method === "POST") {
183
+ const traceId = pathname.replace("/api/approve/", "");
184
+ if (!traceId) {
185
+ serveJson(res, 400, { success: false, error: "Trace ID is required" });
186
+ return;
187
+ }
188
+ try {
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) {
192
+ serveJson(res, 404, { success: false, error: "No pending approval found for this trace ID" });
193
+ return;
194
+ }
195
+ pendingMessages.forEach((msg) => {
196
+ if (msg.id !== undefined) {
197
+ Storage.updateMessageStatus(msg.id, "APPROVED");
198
+ }
199
+ });
200
+ // Log approval to audit — atomic appendFile kullan
201
+ const auditPath = path.join(frameworkDir, "observability/audit_log.md");
202
+ if (fs.existsSync(auditPath)) {
203
+ const logEntry = "\n- **[" + new Date().toISOString() + "]** USER -> @manager | APPROVED | Trace: " + traceId;
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;
262
+ }
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
+ });
320
+ }
321
+ catch (e) {
322
+ serveJson(res, 500, { success: false, error: e.message });
323
+ }
324
+ return;
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
+ }
379
+ // ─── Compliance API ────────────────────────────────────────────
380
+ if (pathname === "/api/compliance") {
381
+ try {
382
+ const targetPath = params.path || "src";
383
+ const violations = [];
384
+ // Collect source files synchronously
385
+ function collectFilesSync(dir, exts) {
386
+ const results = [];
387
+ if (!fs.existsSync(dir))
388
+ return results;
389
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
390
+ for (const entry of entries) {
391
+ const fullPath = path.join(dir, entry.name);
392
+ if (entry.isDirectory()) {
393
+ results.push(...collectFilesSync(fullPath, exts));
394
+ }
395
+ else if (entry.isFile() && exts.some((ext) => entry.name.endsWith(ext))) {
396
+ results.push(fullPath);
397
+ }
398
+ }
399
+ return results;
400
+ }
401
+ const files = collectFilesSync(path.join(projectRoot, targetPath), [".ts", ".tsx", ".js", ".jsx"]);
402
+ files.forEach((f) => {
403
+ const content = fs.readFileSync(f, "utf8");
404
+ const lines = content.split("\n");
405
+ // Check for `any` type usage
406
+ lines.forEach((line, idx) => {
407
+ // Skip comments and type definitions
408
+ if (line.trim().startsWith("//") || line.trim().startsWith("/*") || line.trim().startsWith("*"))
409
+ return;
410
+ const anyMatch = line.match(/\bany\b/);
411
+ if (anyMatch && !line.includes("// eslint-disable") && !line.includes("as any")) {
412
+ violations.push({
413
+ file: path.relative(projectRoot, f),
414
+ line: idx + 1,
415
+ type: "any-type",
416
+ message: "Usage of `any` type is forbidden by ATABEY.md"
417
+ });
418
+ }
419
+ });
420
+ // Check for console.log
421
+ lines.forEach((line, idx) => {
422
+ if (line.trim().startsWith("//") || line.trim().startsWith("/*"))
423
+ return;
424
+ if (line.includes("console.log") && !line.includes("// eslint-disable")) {
425
+ violations.push({
426
+ file: path.relative(projectRoot, f),
427
+ line: idx + 1,
428
+ type: "console-log",
429
+ message: "Usage of `console.log` is forbidden; use EnterpriseLogger instead"
430
+ });
431
+ }
432
+ });
433
+ });
434
+ const summary = {
435
+ totalFiles: files.length,
436
+ totalViolations: violations.length,
437
+ byType: {
438
+ "any-type": violations.filter((v) => v.type === "any-type").length,
439
+ "console-log": violations.filter((v) => v.type === "console-log").length,
440
+ },
441
+ };
442
+ serveJson(res, 200, { success: true, data: { summary, violations } });
443
+ }
444
+ catch (e) {
445
+ serveJson(res, 500, { success: false, error: e.message });
446
+ }
447
+ return;
448
+ }
449
+ // ─── SSE (Server-Sent Events) — Legacy support ─────────────────
450
+ if (pathname === "/api/events") {
451
+ res.writeHead(200, {
452
+ "Content-Type": "text/event-stream",
453
+ "Cache-Control": "no-cache",
454
+ "Connection": "keep-alive",
455
+ "Access-Control-Allow-Origin": "*",
456
+ });
457
+ // Send initial keepalive
458
+ res.write(": connected\n\n");
459
+ // Keep connection alive
460
+ const keepAlive = setInterval(() => res.write(": keepalive\n\n"), 30000);
461
+ req.on("close", () => clearInterval(keepAlive));
462
+ return;
463
+ }
464
+ // ─── Static UI Serving ─────────────────────────────────────────
465
+ let filePath = path.join(uiDistPath, pathname === "/" ? "index.html" : pathname);
92
466
  // Fallback to index.html for SPA routing if file not found
93
- if (!fs.existsSync(filePath) && !url.startsWith("/api")) {
467
+ if (!fs.existsSync(filePath) && !pathname.startsWith("/api")) {
94
468
  filePath = path.join(uiDistPath, "index.html");
95
469
  }
96
470
  if (fs.existsSync(filePath) && !fs.statSync(filePath).isDirectory()) {
@@ -110,14 +484,80 @@ export async function dashboardCommand(port = FRAMEWORK.DASHBOARD_PORT) {
110
484
  serveFile(res, filePath, contentType);
111
485
  }
112
486
  else {
113
- res.writeHead(404, { "Content-Type": "application/json" });
114
- res.end(JSON.stringify({ error: "Not Found", message: "Route not found" }));
487
+ serveJson(res, 404, { error: "Not Found", message: "Route not found" });
488
+ }
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() });
115
526
  }
527
+ catch { /* silent */ }
528
+ }, 5000);
529
+ // Cleanup on server close
530
+ server.on("close", () => {
531
+ clearInterval(broadcastInterval);
532
+ wsClients.clear();
116
533
  });
117
534
  server.listen(port, () => {
118
535
  UI.success("\n[START] Hermes Visual Control Plane is running!");
119
536
  UI.success(`[INFO] Web UI: http://localhost:${port}`);
120
537
  UI.success(`[DATA] API Base: http://localhost:${port}/api`);
538
+ UI.success(`[WS] WebSocket: ws://localhost:${port}/ws`);
539
+ UI.success("[ENDPOINTS]");
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)");
121
561
  UI.warning("\n(Press Ctrl+C to stop the server)\n");
122
562
  });
123
563
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD;;GAEG;AACH,SAAS,SAAS,CAAC,GAAwB,EAAE,QAAgB;IACzD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,GAAwB,EAAE,QAAgB,EAAE,WAAmB;IAC9E,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;YACpD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,SAAS,CAAC,cAAc;IAC1E,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,eAAe;QACf,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;QAC9D,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;QAE9D,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAE3B,aAAa;QACb,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACpE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3B,OAAO;QACX,CAAC;QAED,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAC1E,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;YAC5C,OAAO;QACX,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;YACjE,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACxB,OAAO;QACX,CAAC;QAED,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACxB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YAC/E,OAAO;QACX,CAAC;QAED,oBAAoB;QACpB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEvE,2DAA2D;QAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,SAAS,GAA2B;gBACtC,OAAO,EAAE,WAAW;gBACpB,KAAK,EAAE,wBAAwB;gBAC/B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,kBAAkB;gBAC3B,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,cAAc;aACzB,CAAC;YACF,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC;YACjE,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;QAChE,EAAE,CAAC,OAAO,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;QACzD,EAAE,CAAC,OAAO,CAAC,sCAAsC,IAAI,MAAM,CAAC,CAAC;QAC7D,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC;;GAEG;AACH,SAAS,SAAS,CAAC,GAAwB,EAAE,UAAkB,EAAE,IAAa;IAC1E,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAClE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,GAAwB,EAAE,QAAgB,EAAE,WAAmB;IAC9E,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;YACpD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW;IACzB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,WAAW,EAAE,CAAC;QACd,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,SAAS,GAAmB,IAAI,GAAG,EAAE,CAAC;AAE5C,SAAS,WAAW,CAAC,IAAY,EAAE,OAAgB;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACrB,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,SAAS,CAAC,cAAc;IAC1E,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,eAAe;QACf,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,CAAC;QACpE,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;QAE9D,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE3C,kEAAkE;QAElE,eAAe;QACf,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC7B,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;YAC3E,OAAO;QACX,CAAC;QAED,gBAAgB;QAChB,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACpE,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAC/C,OAAO;QACX,CAAC;QAED,4BAA4B;QAC5B,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAC1E,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;YAC5C,OAAO;QACX,CAAC;QAED,oCAAoC;QACpC,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;YACpC,IAAI,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBAEhD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;oBAC/E,OAAO;gBACX,CAAC;gBAED,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;oBACjE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC1D,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjG,CAAC,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;QACX,CAAC;QAED,+BAA+B;QAC/B,IAAI,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC/B,8DAA8D;gBAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACxE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;gBAC9C,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACvE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACxC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;gBACtC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;gBACvE,OAAO;YACX,CAAC;YACD,IAAI,CAAC;gBACD,2CAA2C;gBAC3C,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,CACvD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CACpF,CAAC;gBAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/B,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC,CAAC;oBAC9F,OAAO;gBACX,CAAC;gBAED,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC5B,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;wBACvB,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBACpD,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,mDAAmD;gBACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,4BAA4B,CAAC,CAAC;gBACxE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,2CAA2C,GAAG,OAAO,CAAC;oBAC9G,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpC,CAAC;gBAED,oBAAoB;gBACpB,WAAW,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAEzD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,OAAO,wBAAwB,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YAChI,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,KAAK,mBAAmB,EAAE,CAAC;YACnC,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;gBAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAuB,CAAC;gBACnH,MAAM,UAAU,GAA2B,EAAE,CAAC;gBAC9C,MAAM,QAAQ,GAA2B,EAAE,CAAC;gBAC5C,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACjB,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC3D,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;gBAEH,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;oBAChB,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE;wBACF,KAAK,EAAE,aAAa,CAAC,KAAK;wBAC1B,OAAO,EAAE,QAAQ,CAAC,MAAM;wBACxB,UAAU;wBACV,QAAQ;wBACR,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;qBAC1E;iBACJ,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;gBACxC,MAAM,MAAM,GAA2D,EAAE,CAAC;gBAE1E,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAc;oBACjD,MAAM,OAAO,GAAa,EAAE,CAAC;oBAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,OAAO,OAAO,CAAC;oBACxC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC/F,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;wBACtD,CAAC;6BAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;4BAChF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC3B,CAAC;oBACL,CAAC;oBACD,OAAO,OAAO,CAAC;gBACnB,CAAC;gBAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBACpF,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,IAAI,WAAW,GAAG,CAAC,CAAC;gBACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;gBAEjB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;oBACxB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;oBAEnD,uBAAuB;oBACvB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;wBACxC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;4BAAE,OAAO;wBACzE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC3F,QAAQ,EAAE,CAAC;4BACX,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;wBAC3G,CAAC;oBACL,CAAC,CAAC,CAAC;oBAEH,2BAA2B;oBAC3B,IAAI,MAAM,GAAG,KAAK,CAAC;oBACnB,IAAI,SAAS,GAAG,CAAC,CAAC;oBAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;4BAAC,MAAM,GAAG,IAAI,CAAC;4BAAC,SAAS,GAAG,CAAC,CAAC;wBAAC,CAAC;wBACzE,IAAI,MAAM,EAAE,CAAC;4BACT,SAAS,EAAE,CAAC;4BACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;gCACvC,aAAa,EAAE,CAAC;gCAChB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,SAAS,kBAAkB,EAAE,CAAC,CAAC;gCAC1G,MAAM,GAAG,KAAK,CAAC;4BACnB,CAAC;wBACL,CAAC;oBACL,CAAC;oBAED,sBAAsB;oBACtB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;wBACxC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;wBACjD,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACpD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gCACZ,WAAW,EAAE,CAAC;gCACd,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,GAAG,GAAG,CAAC,mBAAmB,KAAK,EAAE,EAAE,CAAC,CAAC;4BAChH,CAAC;wBACL,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;oBAChB,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE;wBACF,UAAU,EAAE,KAAK,CAAC,MAAM;wBACxB,WAAW,EAAE,MAAM,CAAC,MAAM;wBAC1B,aAAa;wBACb,WAAW;wBACX,QAAQ;wBACR,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;qBAC9B;iBACJ,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;QACX,CAAC;QAED,oEAAoE;QACpE,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;YACrC,MAAM,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;gBACpD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;gBACrD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;YACpC,MAAM,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;gBACrD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YACxC,MAAM,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,EAAE;gBACnF,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC9C,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;gBAC5C,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACpC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC7C,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBACzG,CAAC,CAAC,CAAC;gBACH,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,mEAAmE;QACnE,IAAI,QAAQ,KAAK,sBAAsB,EAAE,CAAC;YACtC,MAAM,CAAC,wCAAwC,CAAC;iBAC3C,IAAI,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;gBACzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClE,EAAE;oBACF,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM;oBACpD,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC3E,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC,CAAC;gBACJ,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;gBAChB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YACP,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACjC,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;gBACxC,MAAM,UAAU,GAAyE,EAAE,CAAC;gBAE5F,qCAAqC;gBACrC,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAc;oBACjD,MAAM,OAAO,GAAa,EAAE,CAAC;oBAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,OAAO,OAAO,CAAC;oBACxC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;4BACtB,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;wBACtD,CAAC;6BAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;4BAChF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC3B,CAAC;oBACL,CAAC;oBACD,OAAO,OAAO,CAAC;gBACnB,CAAC;gBACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAEnG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;oBACxB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAElC,6BAA6B;oBAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;wBACxC,qCAAqC;wBACrC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;4BAAE,OAAO;wBAExG,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACvC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC9E,UAAU,CAAC,IAAI,CAAC;gCACZ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gCACnC,IAAI,EAAE,GAAG,GAAG,CAAC;gCACb,IAAI,EAAE,UAAU;gCAChB,OAAO,EAAE,+CAA+C;6BAC3D,CAAC,CAAC;wBACP,CAAC;oBACL,CAAC,CAAC,CAAC;oBAEH,wBAAwB;oBACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;wBACxC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;4BAAE,OAAO;wBACzE,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;4BACtE,UAAU,CAAC,IAAI,CAAC;gCACZ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gCACnC,IAAI,EAAE,GAAG,GAAG,CAAC;gCACb,IAAI,EAAE,aAAa;gCACnB,OAAO,EAAE,mEAAmE;6BAC/E,CAAC,CAAC;wBACP,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG;oBACZ,UAAU,EAAE,KAAK,CAAC,MAAM;oBACxB,eAAe,EAAE,UAAU,CAAC,MAAM;oBAClC,MAAM,EAAE;wBACJ,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM;wBAClE,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,MAAM;qBAC3E;iBACJ,CAAC;gBAEF,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACf,cAAc,EAAE,mBAAmB;gBACnC,eAAe,EAAE,UAAU;gBAC3B,YAAY,EAAE,YAAY;gBAC1B,6BAA6B,EAAE,GAAG;aACrC,CAAC,CAAC;YAEH,yBAAyB;YACzB,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAE7B,wBAAwB;YACxB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,CAAC;YACzE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEjF,2DAA2D;QAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,SAAS,GAA2B;gBACtC,OAAO,EAAE,WAAW;gBACpB,KAAK,EAAE,wBAAwB;gBAC/B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,kBAAkB;gBAC3B,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,cAAc;aACzB,CAAC;YACF,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC;YACjE,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC5E,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sEAAsE;IACtE,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;QACxB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAElB,yCAAyC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC9C,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACpC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEjC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACxC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACtB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,CAAC;YACD,SAAS;YACT,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YACtC,WAAW,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAE7E,mBAAmB;YACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC9C,WAAW,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAE1E,gDAAgD;YAChD,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CACzD,CAAC;YACF,WAAW,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAE5E,OAAO;YACP,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1C,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,0BAA0B;IAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACpB,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACjC,SAAS,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;QAChE,EAAE,CAAC,OAAO,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;QACzD,EAAE,CAAC,OAAO,CAAC,sCAAsC,IAAI,MAAM,CAAC,CAAC;QAC7D,EAAE,CAAC,OAAO,CAAC,oCAAoC,IAAI,KAAK,CAAC,CAAC;QAC1D,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1B,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;QAC/D,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QAC1D,EAAE,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC;QACrE,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;QACnE,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC;QACvE,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;QACjE,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC3D,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC;QAC7E,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC;QAC1E,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;QACnE,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;QACnE,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;QACxD,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC;QAC7E,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC7B,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;QACxD,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QACnD,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QACpD,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC3D,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;QACxD,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;QAC7D,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QAC/C,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC"}