atena-cli 0.1.0

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 (475) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -0
  3. package/dist/agent.d.ts +44 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +731 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/agents.d.ts +33 -0
  8. package/dist/agents.d.ts.map +1 -0
  9. package/dist/agents.js +162 -0
  10. package/dist/agents.js.map +1 -0
  11. package/dist/autocomplete.d.ts +4 -0
  12. package/dist/autocomplete.d.ts.map +1 -0
  13. package/dist/autocomplete.js +96 -0
  14. package/dist/autocomplete.js.map +1 -0
  15. package/dist/cli/commands/connect.d.ts +3 -0
  16. package/dist/cli/commands/connect.d.ts.map +1 -0
  17. package/dist/cli/commands/connect.js +31 -0
  18. package/dist/cli/commands/connect.js.map +1 -0
  19. package/dist/cli/commands/deploy.d.ts +3 -0
  20. package/dist/cli/commands/deploy.d.ts.map +1 -0
  21. package/dist/cli/commands/deploy.js +26 -0
  22. package/dist/cli/commands/deploy.js.map +1 -0
  23. package/dist/cli/commands/login.d.ts +3 -0
  24. package/dist/cli/commands/login.d.ts.map +1 -0
  25. package/dist/cli/commands/login.js +46 -0
  26. package/dist/cli/commands/login.js.map +1 -0
  27. package/dist/cli/commands/vault.d.ts +3 -0
  28. package/dist/cli/commands/vault.d.ts.map +1 -0
  29. package/dist/cli/commands/vault.js +73 -0
  30. package/dist/cli/commands/vault.js.map +1 -0
  31. package/dist/cli/index.d.ts +3 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +309 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/cli/init/setup.d.ts +3 -0
  36. package/dist/cli/init/setup.d.ts.map +1 -0
  37. package/dist/cli/init/setup.js +74 -0
  38. package/dist/cli/init/setup.js.map +1 -0
  39. package/dist/cli/menus.d.ts +2 -0
  40. package/dist/cli/menus.d.ts.map +1 -0
  41. package/dist/cli/menus.js +111 -0
  42. package/dist/cli/menus.js.map +1 -0
  43. package/dist/cli/postinstall.d.ts +9 -0
  44. package/dist/cli/postinstall.d.ts.map +1 -0
  45. package/dist/cli/postinstall.js +81 -0
  46. package/dist/cli/postinstall.js.map +1 -0
  47. package/dist/cli/realtime-input.d.ts +4 -0
  48. package/dist/cli/realtime-input.d.ts.map +1 -0
  49. package/dist/cli/realtime-input.js +268 -0
  50. package/dist/cli/realtime-input.js.map +1 -0
  51. package/dist/cli/setup.d.ts +26 -0
  52. package/dist/cli/setup.d.ts.map +1 -0
  53. package/dist/cli/setup.js +202 -0
  54. package/dist/cli/setup.js.map +1 -0
  55. package/dist/cli/themes.d.ts +30 -0
  56. package/dist/cli/themes.d.ts.map +1 -0
  57. package/dist/cli/themes.js +225 -0
  58. package/dist/cli/themes.js.map +1 -0
  59. package/dist/cli/ui.d.ts +70 -0
  60. package/dist/cli/ui.d.ts.map +1 -0
  61. package/dist/cli/ui.js +455 -0
  62. package/dist/cli/ui.js.map +1 -0
  63. package/dist/commands.d.ts +16 -0
  64. package/dist/commands.d.ts.map +1 -0
  65. package/dist/commands.js +230 -0
  66. package/dist/commands.js.map +1 -0
  67. package/dist/config.d.ts +42 -0
  68. package/dist/config.d.ts.map +1 -0
  69. package/dist/config.js +140 -0
  70. package/dist/config.js.map +1 -0
  71. package/dist/context.d.ts +23 -0
  72. package/dist/context.d.ts.map +1 -0
  73. package/dist/context.js +80 -0
  74. package/dist/context.js.map +1 -0
  75. package/dist/core/agent.d.ts +94 -0
  76. package/dist/core/agent.d.ts.map +1 -0
  77. package/dist/core/agent.js +1280 -0
  78. package/dist/core/agent.js.map +1 -0
  79. package/dist/core/agents/enterprise/backend.d.ts +3 -0
  80. package/dist/core/agents/enterprise/backend.d.ts.map +1 -0
  81. package/dist/core/agents/enterprise/backend.js +35 -0
  82. package/dist/core/agents/enterprise/backend.js.map +1 -0
  83. package/dist/core/agents/enterprise/cloud.d.ts +3 -0
  84. package/dist/core/agents/enterprise/cloud.d.ts.map +1 -0
  85. package/dist/core/agents/enterprise/cloud.js +35 -0
  86. package/dist/core/agents/enterprise/cloud.js.map +1 -0
  87. package/dist/core/agents/enterprise/datascience.d.ts +3 -0
  88. package/dist/core/agents/enterprise/datascience.d.ts.map +1 -0
  89. package/dist/core/agents/enterprise/datascience.js +35 -0
  90. package/dist/core/agents/enterprise/datascience.js.map +1 -0
  91. package/dist/core/agents/enterprise/design.d.ts +3 -0
  92. package/dist/core/agents/enterprise/design.d.ts.map +1 -0
  93. package/dist/core/agents/enterprise/design.js +35 -0
  94. package/dist/core/agents/enterprise/design.js.map +1 -0
  95. package/dist/core/agents/enterprise/devops.d.ts +3 -0
  96. package/dist/core/agents/enterprise/devops.d.ts.map +1 -0
  97. package/dist/core/agents/enterprise/devops.js +35 -0
  98. package/dist/core/agents/enterprise/devops.js.map +1 -0
  99. package/dist/core/agents/enterprise/finance.d.ts +3 -0
  100. package/dist/core/agents/enterprise/finance.d.ts.map +1 -0
  101. package/dist/core/agents/enterprise/finance.js +35 -0
  102. package/dist/core/agents/enterprise/finance.js.map +1 -0
  103. package/dist/core/agents/enterprise/frontend.d.ts +3 -0
  104. package/dist/core/agents/enterprise/frontend.d.ts.map +1 -0
  105. package/dist/core/agents/enterprise/frontend.js +35 -0
  106. package/dist/core/agents/enterprise/frontend.js.map +1 -0
  107. package/dist/core/agents/enterprise/hr.d.ts +3 -0
  108. package/dist/core/agents/enterprise/hr.d.ts.map +1 -0
  109. package/dist/core/agents/enterprise/hr.js +35 -0
  110. package/dist/core/agents/enterprise/hr.js.map +1 -0
  111. package/dist/core/agents/enterprise/index.d.ts +4 -0
  112. package/dist/core/agents/enterprise/index.d.ts.map +1 -0
  113. package/dist/core/agents/enterprise/index.js +44 -0
  114. package/dist/core/agents/enterprise/index.js.map +1 -0
  115. package/dist/core/agents/enterprise/legal.d.ts +3 -0
  116. package/dist/core/agents/enterprise/legal.d.ts.map +1 -0
  117. package/dist/core/agents/enterprise/legal.js +35 -0
  118. package/dist/core/agents/enterprise/legal.js.map +1 -0
  119. package/dist/core/agents/enterprise/marketing.d.ts +3 -0
  120. package/dist/core/agents/enterprise/marketing.d.ts.map +1 -0
  121. package/dist/core/agents/enterprise/marketing.js +35 -0
  122. package/dist/core/agents/enterprise/marketing.js.map +1 -0
  123. package/dist/core/agents/enterprise/pm.d.ts +3 -0
  124. package/dist/core/agents/enterprise/pm.d.ts.map +1 -0
  125. package/dist/core/agents/enterprise/pm.js +35 -0
  126. package/dist/core/agents/enterprise/pm.js.map +1 -0
  127. package/dist/core/agents/enterprise/product.d.ts +3 -0
  128. package/dist/core/agents/enterprise/product.d.ts.map +1 -0
  129. package/dist/core/agents/enterprise/product.js +35 -0
  130. package/dist/core/agents/enterprise/product.js.map +1 -0
  131. package/dist/core/agents/enterprise/qa.d.ts +3 -0
  132. package/dist/core/agents/enterprise/qa.d.ts.map +1 -0
  133. package/dist/core/agents/enterprise/qa.js +35 -0
  134. package/dist/core/agents/enterprise/qa.js.map +1 -0
  135. package/dist/core/agents/enterprise/sales.d.ts +3 -0
  136. package/dist/core/agents/enterprise/sales.d.ts.map +1 -0
  137. package/dist/core/agents/enterprise/sales.js +35 -0
  138. package/dist/core/agents/enterprise/sales.js.map +1 -0
  139. package/dist/core/agents/enterprise/security.d.ts +3 -0
  140. package/dist/core/agents/enterprise/security.d.ts.map +1 -0
  141. package/dist/core/agents/enterprise/security.js +36 -0
  142. package/dist/core/agents/enterprise/security.js.map +1 -0
  143. package/dist/core/agents/enterprise/support.d.ts +3 -0
  144. package/dist/core/agents/enterprise/support.d.ts.map +1 -0
  145. package/dist/core/agents/enterprise/support.js +35 -0
  146. package/dist/core/agents/enterprise/support.js.map +1 -0
  147. package/dist/core/agents.d.ts +84 -0
  148. package/dist/core/agents.d.ts.map +1 -0
  149. package/dist/core/agents.js +266 -0
  150. package/dist/core/agents.js.map +1 -0
  151. package/dist/core/analytics.d.ts +21 -0
  152. package/dist/core/analytics.d.ts.map +1 -0
  153. package/dist/core/analytics.js +57 -0
  154. package/dist/core/analytics.js.map +1 -0
  155. package/dist/core/auth.d.ts +43 -0
  156. package/dist/core/auth.d.ts.map +1 -0
  157. package/dist/core/auth.js +110 -0
  158. package/dist/core/auth.js.map +1 -0
  159. package/dist/core/code_indexer.d.ts +14 -0
  160. package/dist/core/code_indexer.d.ts.map +1 -0
  161. package/dist/core/code_indexer.js +52 -0
  162. package/dist/core/code_indexer.js.map +1 -0
  163. package/dist/core/commands.d.ts +16 -0
  164. package/dist/core/commands.d.ts.map +1 -0
  165. package/dist/core/commands.js +285 -0
  166. package/dist/core/commands.js.map +1 -0
  167. package/dist/core/consensus.d.ts +25 -0
  168. package/dist/core/consensus.d.ts.map +1 -0
  169. package/dist/core/consensus.js +49 -0
  170. package/dist/core/consensus.js.map +1 -0
  171. package/dist/core/context.d.ts +23 -0
  172. package/dist/core/context.d.ts.map +1 -0
  173. package/dist/core/context.js +82 -0
  174. package/dist/core/context.js.map +1 -0
  175. package/dist/core/eden-ai-sdk.d.ts +11 -0
  176. package/dist/core/eden-ai-sdk.d.ts.map +1 -0
  177. package/dist/core/eden-ai-sdk.js +158 -0
  178. package/dist/core/eden-ai-sdk.js.map +1 -0
  179. package/dist/core/events.d.ts +64 -0
  180. package/dist/core/events.d.ts.map +1 -0
  181. package/dist/core/events.js +18 -0
  182. package/dist/core/events.js.map +1 -0
  183. package/dist/core/groq-client.d.ts +7 -0
  184. package/dist/core/groq-client.d.ts.map +1 -0
  185. package/dist/core/groq-client.js +112 -0
  186. package/dist/core/groq-client.js.map +1 -0
  187. package/dist/core/mcp.d.ts +51 -0
  188. package/dist/core/mcp.d.ts.map +1 -0
  189. package/dist/core/mcp.js +201 -0
  190. package/dist/core/mcp.js.map +1 -0
  191. package/dist/core/memory.d.ts +20 -0
  192. package/dist/core/memory.d.ts.map +1 -0
  193. package/dist/core/memory.js +61 -0
  194. package/dist/core/memory.js.map +1 -0
  195. package/dist/core/model-profiles.d.ts +62 -0
  196. package/dist/core/model-profiles.d.ts.map +1 -0
  197. package/dist/core/model-profiles.js +841 -0
  198. package/dist/core/model-profiles.js.map +1 -0
  199. package/dist/core/moonshot-client.d.ts +7 -0
  200. package/dist/core/moonshot-client.d.ts.map +1 -0
  201. package/dist/core/moonshot-client.js +102 -0
  202. package/dist/core/moonshot-client.js.map +1 -0
  203. package/dist/core/nexus.d.ts +16 -0
  204. package/dist/core/nexus.d.ts.map +1 -0
  205. package/dist/core/nexus.js +31 -0
  206. package/dist/core/nexus.js.map +1 -0
  207. package/dist/core/notifications.d.ts +16 -0
  208. package/dist/core/notifications.d.ts.map +1 -0
  209. package/dist/core/notifications.js +26 -0
  210. package/dist/core/notifications.js.map +1 -0
  211. package/dist/core/ollama-client.d.ts +16 -0
  212. package/dist/core/ollama-client.d.ts.map +1 -0
  213. package/dist/core/ollama-client.js +138 -0
  214. package/dist/core/ollama-client.js.map +1 -0
  215. package/dist/core/orchestrator.d.ts +96 -0
  216. package/dist/core/orchestrator.d.ts.map +1 -0
  217. package/dist/core/orchestrator.js +801 -0
  218. package/dist/core/orchestrator.js.map +1 -0
  219. package/dist/core/permissions.d.ts +34 -0
  220. package/dist/core/permissions.d.ts.map +1 -0
  221. package/dist/core/permissions.js +224 -0
  222. package/dist/core/permissions.js.map +1 -0
  223. package/dist/core/providers.d.ts +22 -0
  224. package/dist/core/providers.d.ts.map +1 -0
  225. package/dist/core/providers.js +81 -0
  226. package/dist/core/providers.js.map +1 -0
  227. package/dist/core/researcher.d.ts +24 -0
  228. package/dist/core/researcher.d.ts.map +1 -0
  229. package/dist/core/researcher.js +97 -0
  230. package/dist/core/researcher.js.map +1 -0
  231. package/dist/core/sandbox.d.ts +22 -0
  232. package/dist/core/sandbox.d.ts.map +1 -0
  233. package/dist/core/sandbox.js +79 -0
  234. package/dist/core/sandbox.js.map +1 -0
  235. package/dist/core/scavenger.d.ts +5 -0
  236. package/dist/core/scavenger.d.ts.map +1 -0
  237. package/dist/core/scavenger.js +51 -0
  238. package/dist/core/scavenger.js.map +1 -0
  239. package/dist/core/server.d.ts +21 -0
  240. package/dist/core/server.d.ts.map +1 -0
  241. package/dist/core/server.js +776 -0
  242. package/dist/core/server.js.map +1 -0
  243. package/dist/core/sessions.d.ts +54 -0
  244. package/dist/core/sessions.d.ts.map +1 -0
  245. package/dist/core/sessions.js +182 -0
  246. package/dist/core/sessions.js.map +1 -0
  247. package/dist/core/setup.d.ts +12 -0
  248. package/dist/core/setup.d.ts.map +1 -0
  249. package/dist/core/setup.js +70 -0
  250. package/dist/core/setup.js.map +1 -0
  251. package/dist/core/skills.d.ts +17 -0
  252. package/dist/core/skills.d.ts.map +1 -0
  253. package/dist/core/skills.js +123 -0
  254. package/dist/core/skills.js.map +1 -0
  255. package/dist/core/stats.d.ts +54 -0
  256. package/dist/core/stats.d.ts.map +1 -0
  257. package/dist/core/stats.js +221 -0
  258. package/dist/core/stats.js.map +1 -0
  259. package/dist/core/swarm_manager.d.ts +20 -0
  260. package/dist/core/swarm_manager.d.ts.map +1 -0
  261. package/dist/core/swarm_manager.js +48 -0
  262. package/dist/core/swarm_manager.js.map +1 -0
  263. package/dist/core/system.d.ts +39 -0
  264. package/dist/core/system.d.ts.map +1 -0
  265. package/dist/core/system.js +129 -0
  266. package/dist/core/system.js.map +1 -0
  267. package/dist/core/tasks.d.ts +24 -0
  268. package/dist/core/tasks.d.ts.map +1 -0
  269. package/dist/core/tasks.js +66 -0
  270. package/dist/core/tasks.js.map +1 -0
  271. package/dist/core/telegram.d.ts +9 -0
  272. package/dist/core/telegram.d.ts.map +1 -0
  273. package/dist/core/telegram.js +49 -0
  274. package/dist/core/telegram.js.map +1 -0
  275. package/dist/core/tools/acquire_skill.d.ts +3 -0
  276. package/dist/core/tools/acquire_skill.d.ts.map +1 -0
  277. package/dist/core/tools/acquire_skill.js +30 -0
  278. package/dist/core/tools/acquire_skill.js.map +1 -0
  279. package/dist/core/tools/agent_tools.d.ts +4 -0
  280. package/dist/core/tools/agent_tools.d.ts.map +1 -0
  281. package/dist/core/tools/agent_tools.js +117 -0
  282. package/dist/core/tools/agent_tools.js.map +1 -0
  283. package/dist/core/tools/code_search.d.ts +3 -0
  284. package/dist/core/tools/code_search.d.ts.map +1 -0
  285. package/dist/core/tools/code_search.js +43 -0
  286. package/dist/core/tools/code_search.js.map +1 -0
  287. package/dist/core/tools/craft_tool.d.ts +3 -0
  288. package/dist/core/tools/craft_tool.d.ts.map +1 -0
  289. package/dist/core/tools/craft_tool.js +32 -0
  290. package/dist/core/tools/craft_tool.js.map +1 -0
  291. package/dist/core/tools/discord.d.ts +3 -0
  292. package/dist/core/tools/discord.d.ts.map +1 -0
  293. package/dist/core/tools/discord.js +206 -0
  294. package/dist/core/tools/discord.js.map +1 -0
  295. package/dist/core/tools/dynamic/registry.d.ts +15 -0
  296. package/dist/core/tools/dynamic/registry.d.ts.map +1 -0
  297. package/dist/core/tools/dynamic/registry.js +59 -0
  298. package/dist/core/tools/dynamic/registry.js.map +1 -0
  299. package/dist/core/tools/github.d.ts +3 -0
  300. package/dist/core/tools/github.d.ts.map +1 -0
  301. package/dist/core/tools/github.js +357 -0
  302. package/dist/core/tools/github.js.map +1 -0
  303. package/dist/core/tools/google.d.ts +3 -0
  304. package/dist/core/tools/google.d.ts.map +1 -0
  305. package/dist/core/tools/google.js +409 -0
  306. package/dist/core/tools/google.js.map +1 -0
  307. package/dist/core/tools/index.d.ts +4 -0
  308. package/dist/core/tools/index.d.ts.map +1 -0
  309. package/dist/core/tools/index.js +2338 -0
  310. package/dist/core/tools/index.js.map +1 -0
  311. package/dist/core/tools/optimize_prompt.d.ts +3 -0
  312. package/dist/core/tools/optimize_prompt.d.ts.map +1 -0
  313. package/dist/core/tools/optimize_prompt.js +43 -0
  314. package/dist/core/tools/optimize_prompt.js.map +1 -0
  315. package/dist/core/tools/predict_healing.d.ts +3 -0
  316. package/dist/core/tools/predict_healing.d.ts.map +1 -0
  317. package/dist/core/tools/predict_healing.js +34 -0
  318. package/dist/core/tools/predict_healing.js.map +1 -0
  319. package/dist/core/tools/sage_memory.d.ts +3 -0
  320. package/dist/core/tools/sage_memory.d.ts.map +1 -0
  321. package/dist/core/tools/sage_memory.js +29 -0
  322. package/dist/core/tools/sage_memory.js.map +1 -0
  323. package/dist/core/tools/self_heal.d.ts +3 -0
  324. package/dist/core/tools/self_heal.d.ts.map +1 -0
  325. package/dist/core/tools/self_heal.js +46 -0
  326. package/dist/core/tools/self_heal.js.map +1 -0
  327. package/dist/core/tools/send_briefing.d.ts +3 -0
  328. package/dist/core/tools/send_briefing.d.ts.map +1 -0
  329. package/dist/core/tools/send_briefing.js +31 -0
  330. package/dist/core/tools/send_briefing.js.map +1 -0
  331. package/dist/core/tools/slack.d.ts +3 -0
  332. package/dist/core/tools/slack.d.ts.map +1 -0
  333. package/dist/core/tools/slack.js +256 -0
  334. package/dist/core/tools/slack.js.map +1 -0
  335. package/dist/core/tools/telegram.d.ts +3 -0
  336. package/dist/core/tools/telegram.d.ts.map +1 -0
  337. package/dist/core/tools/telegram.js +211 -0
  338. package/dist/core/tools/telegram.js.map +1 -0
  339. package/dist/core/tools/vox.d.ts +3 -0
  340. package/dist/core/tools/vox.d.ts.map +1 -0
  341. package/dist/core/tools/vox.js +29 -0
  342. package/dist/core/tools/vox.js.map +1 -0
  343. package/dist/core/types/index.d.ts +164 -0
  344. package/dist/core/types/index.d.ts.map +1 -0
  345. package/dist/core/types/index.js +3 -0
  346. package/dist/core/types/index.js.map +1 -0
  347. package/dist/core/vault.d.ts +20 -0
  348. package/dist/core/vault.d.ts.map +1 -0
  349. package/dist/core/vault.js +91 -0
  350. package/dist/core/vault.js.map +1 -0
  351. package/dist/core/verify_v3.d.ts +2 -0
  352. package/dist/core/verify_v3.d.ts.map +1 -0
  353. package/dist/core/verify_v3.js +38 -0
  354. package/dist/core/verify_v3.js.map +1 -0
  355. package/dist/core/verify_v3_5.d.ts +2 -0
  356. package/dist/core/verify_v3_5.d.ts.map +1 -0
  357. package/dist/core/verify_v3_5.js +56 -0
  358. package/dist/core/verify_v3_5.js.map +1 -0
  359. package/dist/core/verify_v4.d.ts +2 -0
  360. package/dist/core/verify_v4.d.ts.map +1 -0
  361. package/dist/core/verify_v4.js +42 -0
  362. package/dist/core/verify_v4.js.map +1 -0
  363. package/dist/core/verify_v5.d.ts +2 -0
  364. package/dist/core/verify_v5.d.ts.map +1 -0
  365. package/dist/core/verify_v5.js +53 -0
  366. package/dist/core/verify_v5.js.map +1 -0
  367. package/dist/core/verify_v6.d.ts +2 -0
  368. package/dist/core/verify_v6.d.ts.map +1 -0
  369. package/dist/core/verify_v6.js +42 -0
  370. package/dist/core/verify_v6.js.map +1 -0
  371. package/dist/core/verify_v7.d.ts +2 -0
  372. package/dist/core/verify_v7.d.ts.map +1 -0
  373. package/dist/core/verify_v7.js +29 -0
  374. package/dist/core/verify_v7.js.map +1 -0
  375. package/dist/core/verify_v8.d.ts +2 -0
  376. package/dist/core/verify_v8.d.ts.map +1 -0
  377. package/dist/core/verify_v8.js +32 -0
  378. package/dist/core/verify_v8.js.map +1 -0
  379. package/dist/core/workflows.d.ts +24 -0
  380. package/dist/core/workflows.d.ts.map +1 -0
  381. package/dist/core/workflows.js +47 -0
  382. package/dist/core/workflows.js.map +1 -0
  383. package/dist/core/workspaces.d.ts +13 -0
  384. package/dist/core/workspaces.d.ts.map +1 -0
  385. package/dist/core/workspaces.js +45 -0
  386. package/dist/core/workspaces.js.map +1 -0
  387. package/dist/enquirer-input.d.ts +3 -0
  388. package/dist/enquirer-input.d.ts.map +1 -0
  389. package/dist/enquirer-input.js +112 -0
  390. package/dist/enquirer-input.js.map +1 -0
  391. package/dist/index.d.ts +3 -0
  392. package/dist/index.d.ts.map +1 -0
  393. package/dist/index.js +241 -0
  394. package/dist/index.js.map +1 -0
  395. package/dist/mcp.d.ts +51 -0
  396. package/dist/mcp.d.ts.map +1 -0
  397. package/dist/mcp.js +201 -0
  398. package/dist/mcp.js.map +1 -0
  399. package/dist/ollama-client.d.ts +15 -0
  400. package/dist/ollama-client.d.ts.map +1 -0
  401. package/dist/ollama-client.js +95 -0
  402. package/dist/ollama-client.js.map +1 -0
  403. package/dist/permissions.d.ts +34 -0
  404. package/dist/permissions.d.ts.map +1 -0
  405. package/dist/permissions.js +224 -0
  406. package/dist/permissions.js.map +1 -0
  407. package/dist/realtime-input.d.ts +2 -0
  408. package/dist/realtime-input.d.ts.map +1 -0
  409. package/dist/realtime-input.js +308 -0
  410. package/dist/realtime-input.js.map +1 -0
  411. package/dist/server.d.ts +20 -0
  412. package/dist/server.d.ts.map +1 -0
  413. package/dist/server.js +203 -0
  414. package/dist/server.js.map +1 -0
  415. package/dist/sessions.d.ts +50 -0
  416. package/dist/sessions.d.ts.map +1 -0
  417. package/dist/sessions.js +181 -0
  418. package/dist/sessions.js.map +1 -0
  419. package/dist/simple-input.d.ts +2 -0
  420. package/dist/simple-input.d.ts.map +1 -0
  421. package/dist/simple-input.js +83 -0
  422. package/dist/simple-input.js.map +1 -0
  423. package/dist/skills.d.ts +17 -0
  424. package/dist/skills.d.ts.map +1 -0
  425. package/dist/skills.js +194 -0
  426. package/dist/skills.js.map +1 -0
  427. package/dist/stats.d.ts +54 -0
  428. package/dist/stats.d.ts.map +1 -0
  429. package/dist/stats.js +220 -0
  430. package/dist/stats.js.map +1 -0
  431. package/dist/tools/discord.d.ts +3 -0
  432. package/dist/tools/discord.d.ts.map +1 -0
  433. package/dist/tools/discord.js +206 -0
  434. package/dist/tools/discord.js.map +1 -0
  435. package/dist/tools/github.d.ts +3 -0
  436. package/dist/tools/github.d.ts.map +1 -0
  437. package/dist/tools/github.js +357 -0
  438. package/dist/tools/github.js.map +1 -0
  439. package/dist/tools/google.d.ts +3 -0
  440. package/dist/tools/google.d.ts.map +1 -0
  441. package/dist/tools/google.js +409 -0
  442. package/dist/tools/google.js.map +1 -0
  443. package/dist/tools/index.d.ts +4 -0
  444. package/dist/tools/index.d.ts.map +1 -0
  445. package/dist/tools/index.js +2139 -0
  446. package/dist/tools/index.js.map +1 -0
  447. package/dist/tools/slack.d.ts +3 -0
  448. package/dist/tools/slack.d.ts.map +1 -0
  449. package/dist/tools/slack.js +256 -0
  450. package/dist/tools/slack.js.map +1 -0
  451. package/dist/tools/telegram.d.ts +3 -0
  452. package/dist/tools/telegram.d.ts.map +1 -0
  453. package/dist/tools/telegram.js +211 -0
  454. package/dist/tools/telegram.js.map +1 -0
  455. package/dist/types/index.d.ts +152 -0
  456. package/dist/types/index.d.ts.map +1 -0
  457. package/dist/types/index.js +3 -0
  458. package/dist/types/index.js.map +1 -0
  459. package/dist/ui.d.ts +101 -0
  460. package/dist/ui.d.ts.map +1 -0
  461. package/dist/ui.js +317 -0
  462. package/dist/ui.js.map +1 -0
  463. package/dist/web/src/lib/utils.d.ts +3 -0
  464. package/dist/web/src/lib/utils.d.ts.map +1 -0
  465. package/dist/web/src/lib/utils.js +6 -0
  466. package/dist/web/src/lib/utils.js.map +1 -0
  467. package/dist/web/src/main.d.ts +2 -0
  468. package/dist/web/src/main.d.ts.map +1 -0
  469. package/dist/web/src/main.js +5 -0
  470. package/dist/web/src/main.js.map +1 -0
  471. package/dist/web/vite.config.d.ts +3 -0
  472. package/dist/web/vite.config.d.ts.map +1 -0
  473. package/dist/web/vite.config.js +12 -0
  474. package/dist/web/vite.config.js.map +1 -0
  475. package/package.json +83 -0
@@ -0,0 +1,801 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import path from 'node:path';
3
+ export class TaskOrchestrator {
4
+ agent;
5
+ tasksDir;
6
+ currentTask = null;
7
+ constructor(agent, cwd) {
8
+ this.agent = agent;
9
+ this.tasksDir = path.join(cwd, '.eden', 'tasks');
10
+ }
11
+ async initialize() {
12
+ await fs.mkdir(this.tasksDir, { recursive: true });
13
+ }
14
+ async planTask(prompt) {
15
+ const planningPrompt = `Analiza este prompt y divídelo en subtareas atómicas ejecutables:
16
+
17
+ PROMPT ORIGINAL:
18
+ ${prompt}
19
+
20
+ INSTRUCCIONES:
21
+ 1. Divide el trabajo en subtareas pequeñas y específicas (máximo 5-7 subtareas)
22
+ 2. Cada subtarea debe ser ejecutable en UN SOLO turno de agente
23
+ 3. Define dependencias claras (qué subtareas deben ir antes)
24
+ 4. Prioriza el orden lógico de ejecución
25
+
26
+ FORMATO DE RESPUESTA (JSON):
27
+ {
28
+ "subtasks": [
29
+ {
30
+ "id": "subtask-1",
31
+ "description": "Descripción breve",
32
+ "prompt": "Prompt específico para el agente",
33
+ "dependencies": []
34
+ },
35
+ {
36
+ "id": "subtask-2",
37
+ "description": "Descripción breve",
38
+ "prompt": "Prompt específico para el agente",
39
+ "dependencies": ["subtask-1"]
40
+ }
41
+ ]
42
+ }
43
+
44
+ Responde SOLO con el JSON, sin explicaciones adicionales.`;
45
+ // Simular llamada al agente para planificación
46
+ const taskId = `task-${Date.now()}`;
47
+ // Por ahora, usar planificación basada en reglas simples
48
+ const subtasks = this.generateSubtasks(prompt);
49
+ const task = {
50
+ id: taskId,
51
+ originalPrompt: prompt,
52
+ subtasks,
53
+ status: 'planning',
54
+ currentSubtaskIndex: 0,
55
+ createdAt: new Date().toISOString(),
56
+ updatedAt: new Date().toISOString(),
57
+ };
58
+ this.currentTask = task;
59
+ await this.saveTask(task);
60
+ return task;
61
+ }
62
+ generateSubtasks(prompt) {
63
+ // Detectar tipo de proyecto y generar subtareas apropiadas
64
+ const lowerPrompt = prompt.toLowerCase();
65
+ if (lowerPrompt.includes('portfolio') || lowerPrompt.includes('landing')) {
66
+ return this.generatePortfolioSubtasks(prompt);
67
+ }
68
+ if (lowerPrompt.includes('saas') || lowerPrompt.includes('dashboard')) {
69
+ return this.generateSaaSSubtasks(prompt);
70
+ }
71
+ if (lowerPrompt.includes('api') || lowerPrompt.includes('backend') || lowerPrompt.includes('rest')) {
72
+ return this.generateBackendSubtasks(prompt);
73
+ }
74
+ if (lowerPrompt.includes('mobile') || lowerPrompt.includes('app') || lowerPrompt.includes('react native')) {
75
+ return this.generateMobileSubtasks(prompt);
76
+ }
77
+ if (lowerPrompt.includes('ecommerce') || lowerPrompt.includes('e-commerce') || lowerPrompt.includes('shop') || lowerPrompt.includes('store')) {
78
+ return this.generateEcommerceSubtasks(prompt);
79
+ }
80
+ if (lowerPrompt.includes('documentation') || lowerPrompt.includes('docs')) {
81
+ return this.generateDocsSubtasks(prompt);
82
+ }
83
+ // Subtareas genéricas
84
+ return [
85
+ {
86
+ id: 'subtask-1',
87
+ description: 'Analizar requerimientos',
88
+ prompt: `Analiza este prompt y crea un plan detallado: ${prompt}`,
89
+ status: 'pending',
90
+ dependencies: [],
91
+ retryCount: 0,
92
+ maxRetries: 3,
93
+ },
94
+ {
95
+ id: 'subtask-2',
96
+ description: 'Implementar solución',
97
+ prompt: prompt,
98
+ status: 'pending',
99
+ dependencies: ['subtask-1'],
100
+ retryCount: 0,
101
+ maxRetries: 3,
102
+ },
103
+ {
104
+ id: 'subtask-3',
105
+ description: 'Verificar resultado',
106
+ prompt: 'Verifica que todos los requerimientos se cumplieron',
107
+ status: 'pending',
108
+ dependencies: ['subtask-2'],
109
+ retryCount: 0,
110
+ maxRetries: 2,
111
+ },
112
+ ];
113
+ }
114
+ generatePortfolioSubtasks(prompt) {
115
+ return [
116
+ {
117
+ id: 'setup',
118
+ description: 'Inicializar proyecto Next.js + shadcn/ui',
119
+ prompt: 'Inicializa un proyecto Next.js con shadcn/ui. Ejecuta: echo "my-app" | npx shadcn@latest init --yes --template next --base-color neutral',
120
+ status: 'pending',
121
+ dependencies: [],
122
+ retryCount: 0,
123
+ maxRetries: 2,
124
+ },
125
+ {
126
+ id: 'styles',
127
+ description: 'Configurar estilos globales minimalistas',
128
+ prompt: `Edita app/globals.css para aplicar estética minimalista Apple/Linear:
129
+ - bg: #fafafa
130
+ - texto: #171717
131
+ - border-radius: 0.75rem
132
+ - Sin gradientes complejos
133
+ - Scrollbar minimal`,
134
+ status: 'pending',
135
+ dependencies: ['setup'],
136
+ retryCount: 0,
137
+ maxRetries: 2,
138
+ },
139
+ {
140
+ id: 'layout',
141
+ description: 'Crear layout.tsx con tema claro',
142
+ prompt: 'Edita app/layout.tsx para forzar tema claro y usar Inter como font',
143
+ status: 'pending',
144
+ dependencies: ['setup'],
145
+ retryCount: 0,
146
+ maxRetries: 2,
147
+ },
148
+ {
149
+ id: 'navbar',
150
+ description: 'Crear componente Navbar',
151
+ prompt: 'Crea components/navbar.tsx: Navbar fijo, fondo translúcido, links de navegación, sin theme toggle. Estilo minimalista.',
152
+ status: 'pending',
153
+ dependencies: ['styles'],
154
+ retryCount: 0,
155
+ maxRetries: 3,
156
+ },
157
+ {
158
+ id: 'hero',
159
+ description: 'Crear HeroSection',
160
+ prompt: 'Crea components/hero-section.tsx: Headline grande, subtítulo, 2 CTAs redondeados, datos de contacto. Estilo minimalista Apple.',
161
+ status: 'pending',
162
+ dependencies: ['navbar'],
163
+ retryCount: 0,
164
+ maxRetries: 3,
165
+ },
166
+ {
167
+ id: 'features',
168
+ description: 'Crear FeaturesSection',
169
+ prompt: 'Crea components/features-section.tsx: 3 cards con iconos (Code, Palette, Rocket), título, descripción. Cards con bg-white, border, shadow-sm.',
170
+ status: 'pending',
171
+ dependencies: ['hero'],
172
+ retryCount: 0,
173
+ maxRetries: 3,
174
+ },
175
+ {
176
+ id: 'about',
177
+ description: 'Crear AboutPreview',
178
+ prompt: 'Crea components/about-preview.tsx: Sección "Sobre mí" con espacio para foto, bio breve, skills. Diseño limpio en 2 columnas.',
179
+ status: 'pending',
180
+ dependencies: ['features'],
181
+ retryCount: 0,
182
+ maxRetries: 3,
183
+ },
184
+ {
185
+ id: 'projects',
186
+ description: 'Crear ProjectsSection',
187
+ prompt: 'Crea components/projects-section.tsx: Grid de 3 proyectos con imagen, título, descripción corta, tags, link. Hover suave.',
188
+ status: 'pending',
189
+ dependencies: ['about'],
190
+ retryCount: 0,
191
+ maxRetries: 3,
192
+ },
193
+ {
194
+ id: 'contact',
195
+ description: 'Crear ContactSection',
196
+ prompt: 'Crea components/contact-section.tsx: Formulario simple (nombre, email, mensaje), botón rounded-full bg-primary. Sin funcionalidad real aún.',
197
+ status: 'pending',
198
+ dependencies: ['projects'],
199
+ retryCount: 0,
200
+ maxRetries: 3,
201
+ },
202
+ {
203
+ id: 'footer',
204
+ description: 'Crear Footer',
205
+ prompt: 'Crea components/footer.tsx: Copyright, links sociales (GitHub, LinkedIn, Twitter), email. Diseño minimal.',
206
+ status: 'pending',
207
+ dependencies: ['contact'],
208
+ retryCount: 0,
209
+ maxRetries: 3,
210
+ },
211
+ {
212
+ id: 'page',
213
+ description: 'Actualizar page.tsx con todas las secciones',
214
+ prompt: 'Edita app/page.tsx para importar y renderizar todos los componentes: Navbar, HeroSection, FeaturesSection, AboutPreview, ProjectsSection, ContactSection, Footer.',
215
+ status: 'pending',
216
+ dependencies: ['footer'],
217
+ retryCount: 0,
218
+ maxRetries: 2,
219
+ },
220
+ {
221
+ id: 'verify',
222
+ description: 'Verificar todos los componentes creados',
223
+ prompt: 'Lista los archivos en components/ y verifica que existan: navbar.tsx, hero-section.tsx, features-section.tsx, about-preview.tsx, projects-section.tsx, contact-section.tsx, footer.tsx. Reporta cuáles faltan.',
224
+ status: 'pending',
225
+ dependencies: ['page'],
226
+ retryCount: 0,
227
+ maxRetries: 2,
228
+ },
229
+ ];
230
+ }
231
+ generateBackendSubtasks(prompt) {
232
+ return [
233
+ {
234
+ id: 'setup',
235
+ description: 'Inicializar proyecto backend',
236
+ prompt: 'Inicializa proyecto Node.js/TypeScript con package.json, tsconfig.json',
237
+ status: 'pending',
238
+ dependencies: [],
239
+ retryCount: 0,
240
+ maxRetries: 2,
241
+ },
242
+ {
243
+ id: 'structure',
244
+ description: 'Crear estructura de carpetas',
245
+ prompt: 'Crea estructura: src/{routes,controllers,models,middleware,utils}',
246
+ status: 'pending',
247
+ dependencies: ['setup'],
248
+ retryCount: 0,
249
+ maxRetries: 2,
250
+ },
251
+ {
252
+ id: 'server',
253
+ description: 'Crear servidor Express/Fastify',
254
+ prompt: 'Crea servidor principal con rutas básicas y middleware',
255
+ status: 'pending',
256
+ dependencies: ['structure'],
257
+ retryCount: 0,
258
+ maxRetries: 3,
259
+ },
260
+ {
261
+ id: 'verify',
262
+ description: 'Verificar servidor funciona',
263
+ prompt: 'Verifica que el servidor inicia sin errores',
264
+ status: 'pending',
265
+ dependencies: ['server'],
266
+ retryCount: 0,
267
+ maxRetries: 2,
268
+ },
269
+ ];
270
+ }
271
+ generateSaaSSubtasks(prompt) {
272
+ return [
273
+ {
274
+ id: 'setup',
275
+ description: 'Inicializar proyecto Next.js con autenticación',
276
+ prompt: 'Inicializa proyecto Next.js con shadcn/ui, configura NextAuth.js con credentials provider',
277
+ status: 'pending',
278
+ dependencies: [],
279
+ retryCount: 0,
280
+ maxRetries: 2,
281
+ },
282
+ {
283
+ id: 'database',
284
+ description: 'Configurar base de datos Prisma',
285
+ prompt: 'Configura Prisma ORM con SQLite/PostgreSQL, crea schema básico User, Account, Session',
286
+ status: 'pending',
287
+ dependencies: ['setup'],
288
+ retryCount: 0,
289
+ maxRetries: 2,
290
+ },
291
+ {
292
+ id: 'auth',
293
+ description: 'Implementar sistema de autenticación',
294
+ prompt: 'Crea: login page, register page, auth middleware, protección de rutas. Usa NextAuth.',
295
+ status: 'pending',
296
+ dependencies: ['database'],
297
+ retryCount: 0,
298
+ maxRetries: 3,
299
+ },
300
+ {
301
+ id: 'dashboard',
302
+ description: 'Crear Dashboard principal',
303
+ prompt: 'Crea app/dashboard/page.tsx: Layout con sidebar, header con user menu, stats cards, gráficos simples.',
304
+ status: 'pending',
305
+ dependencies: ['auth'],
306
+ retryCount: 0,
307
+ maxRetries: 3,
308
+ },
309
+ {
310
+ id: 'settings',
311
+ description: 'Crear página de configuración',
312
+ prompt: 'Crea app/settings/page.tsx: Formulario para editar perfil, cambiar contraseña, notificaciones.',
313
+ status: 'pending',
314
+ dependencies: ['dashboard'],
315
+ retryCount: 0,
316
+ maxRetries: 2,
317
+ },
318
+ {
319
+ id: 'api',
320
+ description: 'Crear API routes básicas',
321
+ prompt: 'Crea app/api/user/route.ts, app/api/dashboard/route.ts: CRUD operations con autenticación.',
322
+ status: 'pending',
323
+ dependencies: ['database'],
324
+ retryCount: 0,
325
+ maxRetries: 3,
326
+ },
327
+ {
328
+ id: 'verify',
329
+ description: 'Verificar funcionalidad completa',
330
+ prompt: 'Verifica que login, dashboard, settings y API funcionan. Lista los archivos creados.',
331
+ status: 'pending',
332
+ dependencies: ['settings', 'api'],
333
+ retryCount: 0,
334
+ maxRetries: 2,
335
+ },
336
+ ];
337
+ }
338
+ generateMobileSubtasks(prompt) {
339
+ return [
340
+ {
341
+ id: 'setup',
342
+ description: 'Inicializar proyecto React Native / Expo',
343
+ prompt: 'Inicializa proyecto Expo con TypeScript: npx create-expo-app -t expo-template-blank-typescript',
344
+ status: 'pending',
345
+ dependencies: [],
346
+ retryCount: 0,
347
+ maxRetries: 2,
348
+ },
349
+ {
350
+ id: 'navigation',
351
+ description: 'Configurar navegación',
352
+ prompt: 'Instala y configura React Navigation: npm install @react-navigation/native @react-navigation/stack. Crea stack navigator.',
353
+ status: 'pending',
354
+ dependencies: ['setup'],
355
+ retryCount: 0,
356
+ maxRetries: 2,
357
+ },
358
+ {
359
+ id: 'screens',
360
+ description: 'Crear pantallas principales',
361
+ prompt: 'Crea screens/: HomeScreen, ProfileScreen, SettingsScreen. Cada una con componente básico y estilos.',
362
+ status: 'pending',
363
+ dependencies: ['navigation'],
364
+ retryCount: 0,
365
+ maxRetries: 3,
366
+ },
367
+ {
368
+ id: 'components',
369
+ description: 'Crear componentes reutilizables',
370
+ prompt: 'Crea components/: Button, Card, Input, Header. Estilo consistente con tema de la app.',
371
+ status: 'pending',
372
+ dependencies: ['setup'],
373
+ retryCount: 0,
374
+ maxRetries: 3,
375
+ },
376
+ {
377
+ id: 'verify',
378
+ description: 'Verificar estructura del proyecto',
379
+ prompt: 'Lista todos los archivos creados en screens/ y components/. Verifica App.tsx configura navegación.',
380
+ status: 'pending',
381
+ dependencies: ['screens', 'components'],
382
+ retryCount: 0,
383
+ maxRetries: 2,
384
+ },
385
+ ];
386
+ }
387
+ generateEcommerceSubtasks(prompt) {
388
+ return [
389
+ {
390
+ id: 'setup',
391
+ description: 'Inicializar proyecto con Shopify/Snipcart o custom',
392
+ prompt: 'Inicializa Next.js proyecto e-commerce. Instala: shadcn/ui, stripe (payments), opcional: shopify-buy SDK.',
393
+ status: 'pending',
394
+ dependencies: [],
395
+ retryCount: 0,
396
+ maxRetries: 2,
397
+ },
398
+ {
399
+ id: 'products',
400
+ description: 'Crear catálogo de productos',
401
+ prompt: 'Crea: app/products/page.tsx (grid), app/products/[id]/page.tsx (detalle). Componente ProductCard reutilizable.',
402
+ status: 'pending',
403
+ dependencies: ['setup'],
404
+ retryCount: 0,
405
+ maxRetries: 3,
406
+ },
407
+ {
408
+ id: 'cart',
409
+ description: 'Implementar carrito de compras',
410
+ prompt: 'Crea context CartContext.tsx, hook useCart(), componente CartSheet (slide-out). Funcionalidad: add, remove, update qty.',
411
+ status: 'pending',
412
+ dependencies: ['products'],
413
+ retryCount: 0,
414
+ maxRetries: 3,
415
+ },
416
+ {
417
+ id: 'checkout',
418
+ description: 'Crear flujo de checkout',
419
+ prompt: 'Crea app/checkout/page.tsx: Formulario dirección, resumen orden, integración botón Stripe/Snipcart.',
420
+ status: 'pending',
421
+ dependencies: ['cart'],
422
+ retryCount: 0,
423
+ maxRetries: 3,
424
+ },
425
+ {
426
+ id: 'verify',
427
+ description: 'Verificar flujo e-commerce completo',
428
+ prompt: 'Verifica: catálogo carga, productos navegables, carrito funciona, checkout tiene UI. Lista componentes creados.',
429
+ status: 'pending',
430
+ dependencies: ['checkout'],
431
+ retryCount: 0,
432
+ maxRetries: 2,
433
+ },
434
+ ];
435
+ }
436
+ generateDocsSubtasks(prompt) {
437
+ return [
438
+ {
439
+ id: 'setup',
440
+ description: 'Inicializar proyecto documentación',
441
+ prompt: 'Inicializa: npx create-nextra-docs-site@latest o configura Next.js con MDX. Tema: Docs/mintlify style.',
442
+ status: 'pending',
443
+ dependencies: [],
444
+ retryCount: 0,
445
+ maxRetries: 2,
446
+ },
447
+ {
448
+ id: 'structure',
449
+ description: 'Crear estructura de documentación',
450
+ prompt: 'Crea: pages/index.mdx (home), pages/getting-started.mdx, pages/api/*.mdx, pages/guides/*.mdx. Configura _meta.json.',
451
+ status: 'pending',
452
+ dependencies: ['setup'],
453
+ retryCount: 0,
454
+ maxRetries: 2,
455
+ },
456
+ {
457
+ id: 'content',
458
+ description: 'Generar contenido inicial',
459
+ prompt: 'Escribe contenido introductorio: qué es el proyecto, instalación, primeros pasos. Usa MDX con componentes.',
460
+ status: 'pending',
461
+ dependencies: ['structure'],
462
+ retryCount: 0,
463
+ maxRetries: 3,
464
+ },
465
+ {
466
+ id: 'verify',
467
+ description: 'Verificar documentación navegable',
468
+ prompt: 'Verifica que todas las páginas están en _meta.json, navegación funciona, no hay links rotos.',
469
+ status: 'pending',
470
+ dependencies: ['content'],
471
+ retryCount: 0,
472
+ maxRetries: 2,
473
+ },
474
+ ];
475
+ }
476
+ async executeNextSubtask() {
477
+ if (!this.currentTask) {
478
+ throw new Error('No task loaded');
479
+ }
480
+ const pendingSubtasks = this.currentTask.subtasks.filter(st => st.status === 'pending' &&
481
+ st.dependencies.every(dep => this.currentTask.subtasks.find(s => s.id === dep)?.status === 'completed'));
482
+ if (pendingSubtasks.length === 0) {
483
+ // Verificar si todas están completas
484
+ const allCompleted = this.currentTask.subtasks.every(st => st.status === 'completed');
485
+ if (allCompleted) {
486
+ this.currentTask.status = 'completed';
487
+ await this.saveTask(this.currentTask);
488
+ }
489
+ return false;
490
+ }
491
+ const subtask = pendingSubtasks[0];
492
+ subtask.status = 'in_progress';
493
+ this.currentTask.status = 'executing';
494
+ await this.saveTask(this.currentTask);
495
+ console.log(`\n🎯 Ejecutando: ${subtask.description}`);
496
+ try {
497
+ // Aquí se ejecutaría el agente con el prompt de la subtarea
498
+ // Por ahora, simulamos que lo procesamos
499
+ const success = await this.executeSubtaskWithAgent(subtask);
500
+ if (success) {
501
+ subtask.status = 'completed';
502
+ console.log(`✅ Completado: ${subtask.description}`);
503
+ }
504
+ else {
505
+ subtask.status = 'failed';
506
+ subtask.retryCount++;
507
+ if (subtask.retryCount < subtask.maxRetries) {
508
+ console.log(`⚠️ Falló, reintentando (${subtask.retryCount}/${subtask.maxRetries})...`);
509
+ subtask.status = 'pending';
510
+ }
511
+ else {
512
+ console.log(`❌ Falló después de ${subtask.maxRetries} intentos`);
513
+ }
514
+ }
515
+ }
516
+ catch (error) {
517
+ subtask.status = 'failed';
518
+ subtask.error = String(error);
519
+ console.log(`❌ Error: ${error}`);
520
+ }
521
+ this.currentTask.updatedAt = new Date().toISOString();
522
+ await this.saveTask(this.currentTask);
523
+ return true;
524
+ }
525
+ async executeSubtaskWithAgent(subtask) {
526
+ try {
527
+ // Ejecutar la subtarea usando el agente
528
+ // Llamamos a runSingleTurn con el prompt de la subtarea
529
+ await this.agent.runSingleTurn(subtask.prompt);
530
+ return true;
531
+ }
532
+ catch (error) {
533
+ console.error(`Error executing subtask ${subtask.id}:`, error);
534
+ return false;
535
+ }
536
+ }
537
+ async executeAll() {
538
+ if (!this.currentTask) {
539
+ throw new Error('No task loaded');
540
+ }
541
+ console.log(`\n🚀 Orquestador iniciado: ${this.currentTask.subtasks.length} subtareas`);
542
+ console.log(`📁 Task ID: ${this.currentTask.id}\n`);
543
+ let hasMore = true;
544
+ while (hasMore) {
545
+ hasMore = await this.executeNextSubtask();
546
+ // Pequeña pausa entre subtareas
547
+ if (hasMore) {
548
+ await new Promise(resolve => setTimeout(resolve, 1000));
549
+ }
550
+ }
551
+ const completed = this.currentTask.subtasks.filter(s => s.status === 'completed').length;
552
+ const failed = this.currentTask.subtasks.filter(s => s.status === 'failed').length;
553
+ console.log(`\n📊 Resumen:`);
554
+ console.log(` ✅ Completadas: ${completed}/${this.currentTask.subtasks.length}`);
555
+ console.log(` ❌ Fallidas: ${failed}/${this.currentTask.subtasks.length}`);
556
+ if (failed === 0) {
557
+ console.log(`\n🎉 ¡Tarea completada exitosamente!`);
558
+ }
559
+ else {
560
+ console.log(`\n⚠️ Tarea completada con ${failed} subtareas fallidas`);
561
+ }
562
+ }
563
+ /**
564
+ * Execute multiple subtasks in parallel when they have no dependencies
565
+ */
566
+ async executeParallel() {
567
+ if (!this.currentTask) {
568
+ throw new Error('No task loaded');
569
+ }
570
+ console.log(`\n🚀 Orquestador paralelo iniciado: ${this.currentTask.subtasks.length} subtareas`);
571
+ const pendingSubtasks = () => this.currentTask.subtasks.filter(st => st.status === 'pending' &&
572
+ st.dependencies.every(dep => this.currentTask.subtasks.find(s => s.id === dep)?.status === 'completed'));
573
+ let batch = pendingSubtasks();
574
+ while (batch.length > 0) {
575
+ console.log(`\n📦 Ejecutando batch de ${batch.length} subtareas en paralelo...`);
576
+ // Execute all pending subtasks in parallel
577
+ const promises = batch.map(async (subtask) => {
578
+ subtask.status = 'in_progress';
579
+ await this.saveTask(this.currentTask);
580
+ console.log(` 🎯 ${subtask.description}`);
581
+ try {
582
+ const success = await this.executeSubtaskWithAgent(subtask);
583
+ if (success) {
584
+ subtask.status = 'completed';
585
+ console.log(` ✅ ${subtask.description}`);
586
+ }
587
+ else {
588
+ subtask.status = 'failed';
589
+ subtask.retryCount++;
590
+ console.log(` ❌ ${subtask.description}`);
591
+ }
592
+ }
593
+ catch (error) {
594
+ subtask.status = 'failed';
595
+ subtask.error = String(error);
596
+ console.log(` ❌ ${subtask.description}: ${error}`);
597
+ }
598
+ this.currentTask.updatedAt = new Date().toISOString();
599
+ await this.saveTask(this.currentTask);
600
+ });
601
+ await Promise.all(promises);
602
+ // Get next batch
603
+ batch = pendingSubtasks();
604
+ }
605
+ // Final status
606
+ const completed = this.currentTask.subtasks.filter(s => s.status === 'completed').length;
607
+ const failed = this.currentTask.subtasks.filter(s => s.status === 'failed').length;
608
+ console.log(`\n📊 Resumen paralelo:`);
609
+ console.log(` ✅ Completadas: ${completed}/${this.currentTask.subtasks.length}`);
610
+ console.log(` ❌ Fallidas: ${failed}/${this.currentTask.subtasks.length}`);
611
+ }
612
+ /**
613
+ * Verify that a subtask was completed successfully by checking output
614
+ */
615
+ async verifySubtask(subtask) {
616
+ // Verification logic based on subtask type
617
+ const verifyPrompt = subtask.prompt.toLowerCase();
618
+ try {
619
+ // Check for file creation tasks
620
+ if (verifyPrompt.includes('crea') || verifyPrompt.includes('create') || verifyPrompt.includes('file')) {
621
+ // List files to verify they exist
622
+ const { exec } = await import('child_process');
623
+ const { promisify } = await import('util');
624
+ const execAsync = promisify(exec);
625
+ const { stdout } = await execAsync('ls -la app/ components/ 2>/dev/null || echo "dirs not found"');
626
+ return stdout.length > 0 && !stdout.includes('not found');
627
+ }
628
+ // For now, assume verification passes
629
+ return true;
630
+ }
631
+ catch {
632
+ return false;
633
+ }
634
+ }
635
+ async saveTask(task) {
636
+ await fs.mkdir(this.tasksDir, { recursive: true });
637
+ const filePath = path.join(this.tasksDir, `${task.id}.json`);
638
+ await fs.writeFile(filePath, JSON.stringify(task, null, 2));
639
+ }
640
+ async loadTask(taskId) {
641
+ try {
642
+ const filePath = path.join(this.tasksDir, `${taskId}.json`);
643
+ const content = await fs.readFile(filePath, 'utf-8');
644
+ this.currentTask = JSON.parse(content);
645
+ return this.currentTask;
646
+ }
647
+ catch {
648
+ return null;
649
+ }
650
+ }
651
+ getCurrentTask() {
652
+ return this.currentTask;
653
+ }
654
+ getProgress() {
655
+ if (!this.currentTask) {
656
+ return { completed: 0, total: 0, percentage: 0 };
657
+ }
658
+ const completed = this.currentTask.subtasks.filter(s => s.status === 'completed').length;
659
+ const total = this.currentTask.subtasks.length;
660
+ return {
661
+ completed,
662
+ total,
663
+ percentage: Math.round((completed / total) * 100),
664
+ };
665
+ }
666
+ /**
667
+ * Verify a project was created successfully by checking files exist
668
+ */
669
+ async verifyProject(projectType) {
670
+ const requiredFiles = {
671
+ portfolio: ['app/page.tsx', 'components/navbar.tsx', 'components/hero-section.tsx', 'package.json'],
672
+ saas: ['app/dashboard/page.tsx', 'app/api/user/route.ts', 'package.json'],
673
+ api: ['src/server.ts', 'package.json', 'tsconfig.json'],
674
+ mobile: ['App.tsx', 'package.json'],
675
+ ecommerce: ['app/products/page.tsx', 'components/cart.tsx', 'package.json'],
676
+ docs: ['pages/index.mdx', 'package.json'],
677
+ };
678
+ const files = requiredFiles[projectType] || [];
679
+ const missing = [];
680
+ for (const file of files) {
681
+ try {
682
+ await fs.access(path.join(process.cwd(), file));
683
+ }
684
+ catch {
685
+ missing.push(file);
686
+ }
687
+ }
688
+ return { success: missing.length === 0, missing };
689
+ }
690
+ /**
691
+ * Build the project and return success status
692
+ */
693
+ async buildProject() {
694
+ const { exec } = await import('child_process');
695
+ const { promisify } = await import('util');
696
+ const execAsync = promisify(exec);
697
+ try {
698
+ // First install dependencies
699
+ console.log('📦 Installing dependencies...');
700
+ await execAsync('npm install', { timeout: 300000 });
701
+ // Then build
702
+ console.log('🔨 Building project...');
703
+ const { stdout, stderr } = await execAsync('npm run build', { timeout: 300000 });
704
+ return { success: true, output: stdout + stderr };
705
+ }
706
+ catch (error) {
707
+ return {
708
+ success: false,
709
+ output: error.stdout || '',
710
+ error: error.message
711
+ };
712
+ }
713
+ }
714
+ /**
715
+ * Start preview server and return URL
716
+ */
717
+ async startPreview(port) {
718
+ const { spawn } = await import('child_process');
719
+ const previewPort = port || 3000;
720
+ // Check if Next.js or other framework
721
+ const isNextJs = await this.checkFileExists('next.config.ts') || await this.checkFileExists('next.config.js');
722
+ const isVite = await this.checkFileExists('vite.config.ts') || await this.checkFileExists('vite.config.js');
723
+ let command;
724
+ let args;
725
+ if (isNextJs) {
726
+ command = 'npx';
727
+ args = ['next', 'start', '-p', previewPort.toString()];
728
+ }
729
+ else if (isVite) {
730
+ command = 'npx';
731
+ args = ['vite', 'preview', '--port', previewPort.toString()];
732
+ }
733
+ else {
734
+ command = 'npx';
735
+ args = ['serve', '-l', previewPort.toString(), 'dist'];
736
+ }
737
+ const previewProcess = spawn(command, args, {
738
+ stdio: 'pipe',
739
+ detached: false,
740
+ });
741
+ const url = `http://localhost:${previewPort}`;
742
+ // Wait a bit for server to start
743
+ await new Promise(resolve => setTimeout(resolve, 3000));
744
+ return { url, process: previewProcess };
745
+ }
746
+ /**
747
+ * Deploy to Vercel (requires vercel CLI to be installed and logged in)
748
+ */
749
+ async deployToVercel() {
750
+ const { exec } = await import('child_process');
751
+ const { promisify } = await import('util');
752
+ const execAsync = promisify(exec);
753
+ try {
754
+ console.log('🚀 Deploying to Vercel...');
755
+ const { stdout } = await execAsync('npx vercel --yes --prod', { timeout: 300000 });
756
+ // Extract URL from output
757
+ const urlMatch = stdout.match(/https?:\/\/[^\s]+\.vercel\.app/);
758
+ const url = urlMatch ? urlMatch[0] : undefined;
759
+ return { success: true, url };
760
+ }
761
+ catch (error) {
762
+ return {
763
+ success: false,
764
+ error: error.message || 'Deploy failed'
765
+ };
766
+ }
767
+ }
768
+ /**
769
+ * Deploy to Netlify (requires netlify CLI to be installed and logged in)
770
+ */
771
+ async deployToNetlify() {
772
+ const { exec } = await import('child_process');
773
+ const { promisify } = await import('util');
774
+ const execAsync = promisify(exec);
775
+ try {
776
+ console.log('🚀 Deploying to Netlify...');
777
+ const { stdout } = await execAsync('npx netlify deploy --prod --dir=dist', { timeout: 300000 });
778
+ // Extract URL from output
779
+ const urlMatch = stdout.match(/https?:\/\/[^\s]+\.netlify\.app/);
780
+ const url = urlMatch ? urlMatch[0] : undefined;
781
+ return { success: true, url };
782
+ }
783
+ catch (error) {
784
+ return {
785
+ success: false,
786
+ error: error.message || 'Deploy failed'
787
+ };
788
+ }
789
+ }
790
+ async checkFileExists(filePath) {
791
+ try {
792
+ await fs.access(path.join(process.cwd(), filePath));
793
+ return true;
794
+ }
795
+ catch {
796
+ return false;
797
+ }
798
+ }
799
+ }
800
+ export default TaskOrchestrator;
801
+ //# sourceMappingURL=orchestrator.js.map