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.
- package/LICENSE +21 -0
- package/README.md +210 -0
- package/dist/agent.d.ts +44 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +731 -0
- package/dist/agent.js.map +1 -0
- package/dist/agents.d.ts +33 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +162 -0
- package/dist/agents.js.map +1 -0
- package/dist/autocomplete.d.ts +4 -0
- package/dist/autocomplete.d.ts.map +1 -0
- package/dist/autocomplete.js +96 -0
- package/dist/autocomplete.js.map +1 -0
- package/dist/cli/commands/connect.d.ts +3 -0
- package/dist/cli/commands/connect.d.ts.map +1 -0
- package/dist/cli/commands/connect.js +31 -0
- package/dist/cli/commands/connect.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +3 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +26 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/login.d.ts +3 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +46 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/vault.d.ts +3 -0
- package/dist/cli/commands/vault.d.ts.map +1 -0
- package/dist/cli/commands/vault.js +73 -0
- package/dist/cli/commands/vault.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +309 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init/setup.d.ts +3 -0
- package/dist/cli/init/setup.d.ts.map +1 -0
- package/dist/cli/init/setup.js +74 -0
- package/dist/cli/init/setup.js.map +1 -0
- package/dist/cli/menus.d.ts +2 -0
- package/dist/cli/menus.d.ts.map +1 -0
- package/dist/cli/menus.js +111 -0
- package/dist/cli/menus.js.map +1 -0
- package/dist/cli/postinstall.d.ts +9 -0
- package/dist/cli/postinstall.d.ts.map +1 -0
- package/dist/cli/postinstall.js +81 -0
- package/dist/cli/postinstall.js.map +1 -0
- package/dist/cli/realtime-input.d.ts +4 -0
- package/dist/cli/realtime-input.d.ts.map +1 -0
- package/dist/cli/realtime-input.js +268 -0
- package/dist/cli/realtime-input.js.map +1 -0
- package/dist/cli/setup.d.ts +26 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +202 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/themes.d.ts +30 -0
- package/dist/cli/themes.d.ts.map +1 -0
- package/dist/cli/themes.js +225 -0
- package/dist/cli/themes.js.map +1 -0
- package/dist/cli/ui.d.ts +70 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +455 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/commands.d.ts +16 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +230 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +42 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +140 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +23 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +80 -0
- package/dist/context.js.map +1 -0
- package/dist/core/agent.d.ts +94 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +1280 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/agents/enterprise/backend.d.ts +3 -0
- package/dist/core/agents/enterprise/backend.d.ts.map +1 -0
- package/dist/core/agents/enterprise/backend.js +35 -0
- package/dist/core/agents/enterprise/backend.js.map +1 -0
- package/dist/core/agents/enterprise/cloud.d.ts +3 -0
- package/dist/core/agents/enterprise/cloud.d.ts.map +1 -0
- package/dist/core/agents/enterprise/cloud.js +35 -0
- package/dist/core/agents/enterprise/cloud.js.map +1 -0
- package/dist/core/agents/enterprise/datascience.d.ts +3 -0
- package/dist/core/agents/enterprise/datascience.d.ts.map +1 -0
- package/dist/core/agents/enterprise/datascience.js +35 -0
- package/dist/core/agents/enterprise/datascience.js.map +1 -0
- package/dist/core/agents/enterprise/design.d.ts +3 -0
- package/dist/core/agents/enterprise/design.d.ts.map +1 -0
- package/dist/core/agents/enterprise/design.js +35 -0
- package/dist/core/agents/enterprise/design.js.map +1 -0
- package/dist/core/agents/enterprise/devops.d.ts +3 -0
- package/dist/core/agents/enterprise/devops.d.ts.map +1 -0
- package/dist/core/agents/enterprise/devops.js +35 -0
- package/dist/core/agents/enterprise/devops.js.map +1 -0
- package/dist/core/agents/enterprise/finance.d.ts +3 -0
- package/dist/core/agents/enterprise/finance.d.ts.map +1 -0
- package/dist/core/agents/enterprise/finance.js +35 -0
- package/dist/core/agents/enterprise/finance.js.map +1 -0
- package/dist/core/agents/enterprise/frontend.d.ts +3 -0
- package/dist/core/agents/enterprise/frontend.d.ts.map +1 -0
- package/dist/core/agents/enterprise/frontend.js +35 -0
- package/dist/core/agents/enterprise/frontend.js.map +1 -0
- package/dist/core/agents/enterprise/hr.d.ts +3 -0
- package/dist/core/agents/enterprise/hr.d.ts.map +1 -0
- package/dist/core/agents/enterprise/hr.js +35 -0
- package/dist/core/agents/enterprise/hr.js.map +1 -0
- package/dist/core/agents/enterprise/index.d.ts +4 -0
- package/dist/core/agents/enterprise/index.d.ts.map +1 -0
- package/dist/core/agents/enterprise/index.js +44 -0
- package/dist/core/agents/enterprise/index.js.map +1 -0
- package/dist/core/agents/enterprise/legal.d.ts +3 -0
- package/dist/core/agents/enterprise/legal.d.ts.map +1 -0
- package/dist/core/agents/enterprise/legal.js +35 -0
- package/dist/core/agents/enterprise/legal.js.map +1 -0
- package/dist/core/agents/enterprise/marketing.d.ts +3 -0
- package/dist/core/agents/enterprise/marketing.d.ts.map +1 -0
- package/dist/core/agents/enterprise/marketing.js +35 -0
- package/dist/core/agents/enterprise/marketing.js.map +1 -0
- package/dist/core/agents/enterprise/pm.d.ts +3 -0
- package/dist/core/agents/enterprise/pm.d.ts.map +1 -0
- package/dist/core/agents/enterprise/pm.js +35 -0
- package/dist/core/agents/enterprise/pm.js.map +1 -0
- package/dist/core/agents/enterprise/product.d.ts +3 -0
- package/dist/core/agents/enterprise/product.d.ts.map +1 -0
- package/dist/core/agents/enterprise/product.js +35 -0
- package/dist/core/agents/enterprise/product.js.map +1 -0
- package/dist/core/agents/enterprise/qa.d.ts +3 -0
- package/dist/core/agents/enterprise/qa.d.ts.map +1 -0
- package/dist/core/agents/enterprise/qa.js +35 -0
- package/dist/core/agents/enterprise/qa.js.map +1 -0
- package/dist/core/agents/enterprise/sales.d.ts +3 -0
- package/dist/core/agents/enterprise/sales.d.ts.map +1 -0
- package/dist/core/agents/enterprise/sales.js +35 -0
- package/dist/core/agents/enterprise/sales.js.map +1 -0
- package/dist/core/agents/enterprise/security.d.ts +3 -0
- package/dist/core/agents/enterprise/security.d.ts.map +1 -0
- package/dist/core/agents/enterprise/security.js +36 -0
- package/dist/core/agents/enterprise/security.js.map +1 -0
- package/dist/core/agents/enterprise/support.d.ts +3 -0
- package/dist/core/agents/enterprise/support.d.ts.map +1 -0
- package/dist/core/agents/enterprise/support.js +35 -0
- package/dist/core/agents/enterprise/support.js.map +1 -0
- package/dist/core/agents.d.ts +84 -0
- package/dist/core/agents.d.ts.map +1 -0
- package/dist/core/agents.js +266 -0
- package/dist/core/agents.js.map +1 -0
- package/dist/core/analytics.d.ts +21 -0
- package/dist/core/analytics.d.ts.map +1 -0
- package/dist/core/analytics.js +57 -0
- package/dist/core/analytics.js.map +1 -0
- package/dist/core/auth.d.ts +43 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +110 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/code_indexer.d.ts +14 -0
- package/dist/core/code_indexer.d.ts.map +1 -0
- package/dist/core/code_indexer.js +52 -0
- package/dist/core/code_indexer.js.map +1 -0
- package/dist/core/commands.d.ts +16 -0
- package/dist/core/commands.d.ts.map +1 -0
- package/dist/core/commands.js +285 -0
- package/dist/core/commands.js.map +1 -0
- package/dist/core/consensus.d.ts +25 -0
- package/dist/core/consensus.d.ts.map +1 -0
- package/dist/core/consensus.js +49 -0
- package/dist/core/consensus.js.map +1 -0
- package/dist/core/context.d.ts +23 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +82 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/eden-ai-sdk.d.ts +11 -0
- package/dist/core/eden-ai-sdk.d.ts.map +1 -0
- package/dist/core/eden-ai-sdk.js +158 -0
- package/dist/core/eden-ai-sdk.js.map +1 -0
- package/dist/core/events.d.ts +64 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +18 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/groq-client.d.ts +7 -0
- package/dist/core/groq-client.d.ts.map +1 -0
- package/dist/core/groq-client.js +112 -0
- package/dist/core/groq-client.js.map +1 -0
- package/dist/core/mcp.d.ts +51 -0
- package/dist/core/mcp.d.ts.map +1 -0
- package/dist/core/mcp.js +201 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/memory.d.ts +20 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +61 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/model-profiles.d.ts +62 -0
- package/dist/core/model-profiles.d.ts.map +1 -0
- package/dist/core/model-profiles.js +841 -0
- package/dist/core/model-profiles.js.map +1 -0
- package/dist/core/moonshot-client.d.ts +7 -0
- package/dist/core/moonshot-client.d.ts.map +1 -0
- package/dist/core/moonshot-client.js +102 -0
- package/dist/core/moonshot-client.js.map +1 -0
- package/dist/core/nexus.d.ts +16 -0
- package/dist/core/nexus.d.ts.map +1 -0
- package/dist/core/nexus.js +31 -0
- package/dist/core/nexus.js.map +1 -0
- package/dist/core/notifications.d.ts +16 -0
- package/dist/core/notifications.d.ts.map +1 -0
- package/dist/core/notifications.js +26 -0
- package/dist/core/notifications.js.map +1 -0
- package/dist/core/ollama-client.d.ts +16 -0
- package/dist/core/ollama-client.d.ts.map +1 -0
- package/dist/core/ollama-client.js +138 -0
- package/dist/core/ollama-client.js.map +1 -0
- package/dist/core/orchestrator.d.ts +96 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +801 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/permissions.d.ts +34 -0
- package/dist/core/permissions.d.ts.map +1 -0
- package/dist/core/permissions.js +224 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/providers.d.ts +22 -0
- package/dist/core/providers.d.ts.map +1 -0
- package/dist/core/providers.js +81 -0
- package/dist/core/providers.js.map +1 -0
- package/dist/core/researcher.d.ts +24 -0
- package/dist/core/researcher.d.ts.map +1 -0
- package/dist/core/researcher.js +97 -0
- package/dist/core/researcher.js.map +1 -0
- package/dist/core/sandbox.d.ts +22 -0
- package/dist/core/sandbox.d.ts.map +1 -0
- package/dist/core/sandbox.js +79 -0
- package/dist/core/sandbox.js.map +1 -0
- package/dist/core/scavenger.d.ts +5 -0
- package/dist/core/scavenger.d.ts.map +1 -0
- package/dist/core/scavenger.js +51 -0
- package/dist/core/scavenger.js.map +1 -0
- package/dist/core/server.d.ts +21 -0
- package/dist/core/server.d.ts.map +1 -0
- package/dist/core/server.js +776 -0
- package/dist/core/server.js.map +1 -0
- package/dist/core/sessions.d.ts +54 -0
- package/dist/core/sessions.d.ts.map +1 -0
- package/dist/core/sessions.js +182 -0
- package/dist/core/sessions.js.map +1 -0
- package/dist/core/setup.d.ts +12 -0
- package/dist/core/setup.d.ts.map +1 -0
- package/dist/core/setup.js +70 -0
- package/dist/core/setup.js.map +1 -0
- package/dist/core/skills.d.ts +17 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +123 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/stats.d.ts +54 -0
- package/dist/core/stats.d.ts.map +1 -0
- package/dist/core/stats.js +221 -0
- package/dist/core/stats.js.map +1 -0
- package/dist/core/swarm_manager.d.ts +20 -0
- package/dist/core/swarm_manager.d.ts.map +1 -0
- package/dist/core/swarm_manager.js +48 -0
- package/dist/core/swarm_manager.js.map +1 -0
- package/dist/core/system.d.ts +39 -0
- package/dist/core/system.d.ts.map +1 -0
- package/dist/core/system.js +129 -0
- package/dist/core/system.js.map +1 -0
- package/dist/core/tasks.d.ts +24 -0
- package/dist/core/tasks.d.ts.map +1 -0
- package/dist/core/tasks.js +66 -0
- package/dist/core/tasks.js.map +1 -0
- package/dist/core/telegram.d.ts +9 -0
- package/dist/core/telegram.d.ts.map +1 -0
- package/dist/core/telegram.js +49 -0
- package/dist/core/telegram.js.map +1 -0
- package/dist/core/tools/acquire_skill.d.ts +3 -0
- package/dist/core/tools/acquire_skill.d.ts.map +1 -0
- package/dist/core/tools/acquire_skill.js +30 -0
- package/dist/core/tools/acquire_skill.js.map +1 -0
- package/dist/core/tools/agent_tools.d.ts +4 -0
- package/dist/core/tools/agent_tools.d.ts.map +1 -0
- package/dist/core/tools/agent_tools.js +117 -0
- package/dist/core/tools/agent_tools.js.map +1 -0
- package/dist/core/tools/code_search.d.ts +3 -0
- package/dist/core/tools/code_search.d.ts.map +1 -0
- package/dist/core/tools/code_search.js +43 -0
- package/dist/core/tools/code_search.js.map +1 -0
- package/dist/core/tools/craft_tool.d.ts +3 -0
- package/dist/core/tools/craft_tool.d.ts.map +1 -0
- package/dist/core/tools/craft_tool.js +32 -0
- package/dist/core/tools/craft_tool.js.map +1 -0
- package/dist/core/tools/discord.d.ts +3 -0
- package/dist/core/tools/discord.d.ts.map +1 -0
- package/dist/core/tools/discord.js +206 -0
- package/dist/core/tools/discord.js.map +1 -0
- package/dist/core/tools/dynamic/registry.d.ts +15 -0
- package/dist/core/tools/dynamic/registry.d.ts.map +1 -0
- package/dist/core/tools/dynamic/registry.js +59 -0
- package/dist/core/tools/dynamic/registry.js.map +1 -0
- package/dist/core/tools/github.d.ts +3 -0
- package/dist/core/tools/github.d.ts.map +1 -0
- package/dist/core/tools/github.js +357 -0
- package/dist/core/tools/github.js.map +1 -0
- package/dist/core/tools/google.d.ts +3 -0
- package/dist/core/tools/google.d.ts.map +1 -0
- package/dist/core/tools/google.js +409 -0
- package/dist/core/tools/google.js.map +1 -0
- package/dist/core/tools/index.d.ts +4 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +2338 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/optimize_prompt.d.ts +3 -0
- package/dist/core/tools/optimize_prompt.d.ts.map +1 -0
- package/dist/core/tools/optimize_prompt.js +43 -0
- package/dist/core/tools/optimize_prompt.js.map +1 -0
- package/dist/core/tools/predict_healing.d.ts +3 -0
- package/dist/core/tools/predict_healing.d.ts.map +1 -0
- package/dist/core/tools/predict_healing.js +34 -0
- package/dist/core/tools/predict_healing.js.map +1 -0
- package/dist/core/tools/sage_memory.d.ts +3 -0
- package/dist/core/tools/sage_memory.d.ts.map +1 -0
- package/dist/core/tools/sage_memory.js +29 -0
- package/dist/core/tools/sage_memory.js.map +1 -0
- package/dist/core/tools/self_heal.d.ts +3 -0
- package/dist/core/tools/self_heal.d.ts.map +1 -0
- package/dist/core/tools/self_heal.js +46 -0
- package/dist/core/tools/self_heal.js.map +1 -0
- package/dist/core/tools/send_briefing.d.ts +3 -0
- package/dist/core/tools/send_briefing.d.ts.map +1 -0
- package/dist/core/tools/send_briefing.js +31 -0
- package/dist/core/tools/send_briefing.js.map +1 -0
- package/dist/core/tools/slack.d.ts +3 -0
- package/dist/core/tools/slack.d.ts.map +1 -0
- package/dist/core/tools/slack.js +256 -0
- package/dist/core/tools/slack.js.map +1 -0
- package/dist/core/tools/telegram.d.ts +3 -0
- package/dist/core/tools/telegram.d.ts.map +1 -0
- package/dist/core/tools/telegram.js +211 -0
- package/dist/core/tools/telegram.js.map +1 -0
- package/dist/core/tools/vox.d.ts +3 -0
- package/dist/core/tools/vox.d.ts.map +1 -0
- package/dist/core/tools/vox.js +29 -0
- package/dist/core/tools/vox.js.map +1 -0
- package/dist/core/types/index.d.ts +164 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/types/index.js +3 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/vault.d.ts +20 -0
- package/dist/core/vault.d.ts.map +1 -0
- package/dist/core/vault.js +91 -0
- package/dist/core/vault.js.map +1 -0
- package/dist/core/verify_v3.d.ts +2 -0
- package/dist/core/verify_v3.d.ts.map +1 -0
- package/dist/core/verify_v3.js +38 -0
- package/dist/core/verify_v3.js.map +1 -0
- package/dist/core/verify_v3_5.d.ts +2 -0
- package/dist/core/verify_v3_5.d.ts.map +1 -0
- package/dist/core/verify_v3_5.js +56 -0
- package/dist/core/verify_v3_5.js.map +1 -0
- package/dist/core/verify_v4.d.ts +2 -0
- package/dist/core/verify_v4.d.ts.map +1 -0
- package/dist/core/verify_v4.js +42 -0
- package/dist/core/verify_v4.js.map +1 -0
- package/dist/core/verify_v5.d.ts +2 -0
- package/dist/core/verify_v5.d.ts.map +1 -0
- package/dist/core/verify_v5.js +53 -0
- package/dist/core/verify_v5.js.map +1 -0
- package/dist/core/verify_v6.d.ts +2 -0
- package/dist/core/verify_v6.d.ts.map +1 -0
- package/dist/core/verify_v6.js +42 -0
- package/dist/core/verify_v6.js.map +1 -0
- package/dist/core/verify_v7.d.ts +2 -0
- package/dist/core/verify_v7.d.ts.map +1 -0
- package/dist/core/verify_v7.js +29 -0
- package/dist/core/verify_v7.js.map +1 -0
- package/dist/core/verify_v8.d.ts +2 -0
- package/dist/core/verify_v8.d.ts.map +1 -0
- package/dist/core/verify_v8.js +32 -0
- package/dist/core/verify_v8.js.map +1 -0
- package/dist/core/workflows.d.ts +24 -0
- package/dist/core/workflows.d.ts.map +1 -0
- package/dist/core/workflows.js +47 -0
- package/dist/core/workflows.js.map +1 -0
- package/dist/core/workspaces.d.ts +13 -0
- package/dist/core/workspaces.d.ts.map +1 -0
- package/dist/core/workspaces.js +45 -0
- package/dist/core/workspaces.js.map +1 -0
- package/dist/enquirer-input.d.ts +3 -0
- package/dist/enquirer-input.d.ts.map +1 -0
- package/dist/enquirer-input.js +112 -0
- package/dist/enquirer-input.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +241 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +51 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +201 -0
- package/dist/mcp.js.map +1 -0
- package/dist/ollama-client.d.ts +15 -0
- package/dist/ollama-client.d.ts.map +1 -0
- package/dist/ollama-client.js +95 -0
- package/dist/ollama-client.js.map +1 -0
- package/dist/permissions.d.ts +34 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +224 -0
- package/dist/permissions.js.map +1 -0
- package/dist/realtime-input.d.ts +2 -0
- package/dist/realtime-input.d.ts.map +1 -0
- package/dist/realtime-input.js +308 -0
- package/dist/realtime-input.js.map +1 -0
- package/dist/server.d.ts +20 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +203 -0
- package/dist/server.js.map +1 -0
- package/dist/sessions.d.ts +50 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +181 -0
- package/dist/sessions.js.map +1 -0
- package/dist/simple-input.d.ts +2 -0
- package/dist/simple-input.d.ts.map +1 -0
- package/dist/simple-input.js +83 -0
- package/dist/simple-input.js.map +1 -0
- package/dist/skills.d.ts +17 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +194 -0
- package/dist/skills.js.map +1 -0
- package/dist/stats.d.ts +54 -0
- package/dist/stats.d.ts.map +1 -0
- package/dist/stats.js +220 -0
- package/dist/stats.js.map +1 -0
- package/dist/tools/discord.d.ts +3 -0
- package/dist/tools/discord.d.ts.map +1 -0
- package/dist/tools/discord.js +206 -0
- package/dist/tools/discord.js.map +1 -0
- package/dist/tools/github.d.ts +3 -0
- package/dist/tools/github.d.ts.map +1 -0
- package/dist/tools/github.js +357 -0
- package/dist/tools/github.js.map +1 -0
- package/dist/tools/google.d.ts +3 -0
- package/dist/tools/google.d.ts.map +1 -0
- package/dist/tools/google.js +409 -0
- package/dist/tools/google.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +2139 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/slack.d.ts +3 -0
- package/dist/tools/slack.d.ts.map +1 -0
- package/dist/tools/slack.js +256 -0
- package/dist/tools/slack.js.map +1 -0
- package/dist/tools/telegram.d.ts +3 -0
- package/dist/tools/telegram.d.ts.map +1 -0
- package/dist/tools/telegram.js +211 -0
- package/dist/tools/telegram.js.map +1 -0
- package/dist/types/index.d.ts +152 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui.d.ts +101 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +317 -0
- package/dist/ui.js.map +1 -0
- package/dist/web/src/lib/utils.d.ts +3 -0
- package/dist/web/src/lib/utils.d.ts.map +1 -0
- package/dist/web/src/lib/utils.js +6 -0
- package/dist/web/src/lib/utils.js.map +1 -0
- package/dist/web/src/main.d.ts +2 -0
- package/dist/web/src/main.d.ts.map +1 -0
- package/dist/web/src/main.js +5 -0
- package/dist/web/src/main.js.map +1 -0
- package/dist/web/vite.config.d.ts +3 -0
- package/dist/web/vite.config.d.ts.map +1 -0
- package/dist/web/vite.config.js +12 -0
- package/dist/web/vite.config.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,gBAAgB,CAA+B;;YAMzC,eAAe;IAQ7B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAUf,aAAa,CACjB,QAAQ,EAAE,aAAa,EAAE,EACzB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC;IA6Bb,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAUhD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa3C,YAAY,CAAC,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAuC9D,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAStE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAiBxD,oBAAoB,CACxB,QAAQ,EAAE,aAAa,EAAE,EACzB,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IAehB,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIrC,aAAa,CACX,WAAW,EAAE,MAAM,aAAa,EAAE,EAClC,UAAU,GAAE,MAAc,GACzB,IAAI;IAOP,YAAY,IAAI,IAAI;IAOd,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAGxC;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
package/dist/sessions.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// Session Persistence System for Atena CLI
|
|
2
|
+
// Inspired by Opencode's session management
|
|
3
|
+
import { promises as fs } from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
const SESSIONS_DIR = path.join(homedir(), '.atena', 'sessions');
|
|
7
|
+
export class SessionManager {
|
|
8
|
+
currentSessionId = null;
|
|
9
|
+
autoSaveInterval = null;
|
|
10
|
+
constructor() {
|
|
11
|
+
this.ensureDirectory();
|
|
12
|
+
}
|
|
13
|
+
async ensureDirectory() {
|
|
14
|
+
try {
|
|
15
|
+
await fs.mkdir(SESSIONS_DIR, { recursive: true });
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Directory may already exist
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
generateId() {
|
|
22
|
+
return `sess_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
23
|
+
}
|
|
24
|
+
generateTitle(messages) {
|
|
25
|
+
// Find first user message to use as title
|
|
26
|
+
const firstUserMsg = messages.find(m => m.role === 'user');
|
|
27
|
+
if (firstUserMsg) {
|
|
28
|
+
const text = firstUserMsg.content.slice(0, 50);
|
|
29
|
+
return text.length > 47 ? text + '...' : text;
|
|
30
|
+
}
|
|
31
|
+
return 'Nueva sesión';
|
|
32
|
+
}
|
|
33
|
+
async createSession(messages, model, agent, cwd) {
|
|
34
|
+
const id = this.generateId();
|
|
35
|
+
const title = this.generateTitle(messages);
|
|
36
|
+
const now = new Date().toISOString();
|
|
37
|
+
const session = {
|
|
38
|
+
id,
|
|
39
|
+
title,
|
|
40
|
+
messages: [...messages],
|
|
41
|
+
model,
|
|
42
|
+
createdAt: now,
|
|
43
|
+
updatedAt: now,
|
|
44
|
+
stats: {
|
|
45
|
+
messageCount: messages.length,
|
|
46
|
+
inputTokens: 0,
|
|
47
|
+
outputTokens: 0,
|
|
48
|
+
cost: 0,
|
|
49
|
+
},
|
|
50
|
+
metadata: {
|
|
51
|
+
agent,
|
|
52
|
+
cwd,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
await this.saveSession(session);
|
|
56
|
+
this.currentSessionId = id;
|
|
57
|
+
return session;
|
|
58
|
+
}
|
|
59
|
+
async saveSession(session) {
|
|
60
|
+
const filePath = path.join(SESSIONS_DIR, `${session.id}.json`);
|
|
61
|
+
session.updatedAt = new Date().toISOString();
|
|
62
|
+
await fs.writeFile(filePath, JSON.stringify(session, null, 2), 'utf8');
|
|
63
|
+
}
|
|
64
|
+
async loadSession(id) {
|
|
65
|
+
try {
|
|
66
|
+
const filePath = path.join(SESSIONS_DIR, `${id}.json`);
|
|
67
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
68
|
+
return JSON.parse(content);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async deleteSession(id) {
|
|
75
|
+
try {
|
|
76
|
+
const filePath = path.join(SESSIONS_DIR, `${id}.json`);
|
|
77
|
+
await fs.unlink(filePath);
|
|
78
|
+
if (this.currentSessionId === id) {
|
|
79
|
+
this.currentSessionId = null;
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async listSessions(maxCount = 20) {
|
|
88
|
+
try {
|
|
89
|
+
const files = await fs.readdir(SESSIONS_DIR);
|
|
90
|
+
const sessionFiles = files.filter(f => f.endsWith('.json'));
|
|
91
|
+
const sessions = [];
|
|
92
|
+
for (const file of sessionFiles.slice(0, maxCount)) {
|
|
93
|
+
try {
|
|
94
|
+
const content = await fs.readFile(path.join(SESSIONS_DIR, file), 'utf8');
|
|
95
|
+
const session = JSON.parse(content);
|
|
96
|
+
// Get preview from last message
|
|
97
|
+
const lastMessage = session.messages[session.messages.length - 1];
|
|
98
|
+
const preview = lastMessage
|
|
99
|
+
? lastMessage.content.slice(0, 60) + (lastMessage.content.length > 60 ? '...' : '')
|
|
100
|
+
: '';
|
|
101
|
+
sessions.push({
|
|
102
|
+
id: session.id,
|
|
103
|
+
title: session.title,
|
|
104
|
+
model: session.model,
|
|
105
|
+
messageCount: session.stats.messageCount,
|
|
106
|
+
updatedAt: session.updatedAt,
|
|
107
|
+
preview,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Skip corrupted sessions
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Sort by updatedAt desc
|
|
115
|
+
return sessions.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async exportSession(id, exportPath) {
|
|
122
|
+
const session = await this.loadSession(id);
|
|
123
|
+
if (!session)
|
|
124
|
+
return null;
|
|
125
|
+
const targetPath = exportPath || path.join(process.cwd(), `atena-session-${id}.json`);
|
|
126
|
+
await fs.writeFile(targetPath, JSON.stringify(session, null, 2), 'utf8');
|
|
127
|
+
return targetPath;
|
|
128
|
+
}
|
|
129
|
+
async importSession(filePath) {
|
|
130
|
+
try {
|
|
131
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
132
|
+
const session = JSON.parse(content);
|
|
133
|
+
// Generate new ID to avoid conflicts
|
|
134
|
+
session.id = this.generateId();
|
|
135
|
+
session.createdAt = new Date().toISOString();
|
|
136
|
+
session.updatedAt = new Date().toISOString();
|
|
137
|
+
await this.saveSession(session);
|
|
138
|
+
return session;
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async updateCurrentSession(messages, stats) {
|
|
145
|
+
if (!this.currentSessionId)
|
|
146
|
+
return;
|
|
147
|
+
const session = await this.loadSession(this.currentSessionId);
|
|
148
|
+
if (!session)
|
|
149
|
+
return;
|
|
150
|
+
session.messages = [...messages];
|
|
151
|
+
if (stats) {
|
|
152
|
+
session.stats = { ...session.stats, ...stats };
|
|
153
|
+
}
|
|
154
|
+
session.stats.messageCount = messages.length;
|
|
155
|
+
await this.saveSession(session);
|
|
156
|
+
}
|
|
157
|
+
getCurrentSessionId() {
|
|
158
|
+
return this.currentSessionId;
|
|
159
|
+
}
|
|
160
|
+
setCurrentSessionId(id) {
|
|
161
|
+
this.currentSessionId = id;
|
|
162
|
+
}
|
|
163
|
+
startAutoSave(getMessages, intervalMs = 30000) {
|
|
164
|
+
this.stopAutoSave();
|
|
165
|
+
this.autoSaveInterval = setInterval(async () => {
|
|
166
|
+
await this.updateCurrentSession(getMessages());
|
|
167
|
+
}, intervalMs);
|
|
168
|
+
}
|
|
169
|
+
stopAutoSave() {
|
|
170
|
+
if (this.autoSaveInterval) {
|
|
171
|
+
clearInterval(this.autoSaveInterval);
|
|
172
|
+
this.autoSaveInterval = null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async getSessionsDir() {
|
|
176
|
+
return SESSIONS_DIR;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Singleton instance
|
|
180
|
+
export const sessionManager = new SessionManager();
|
|
181
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-input.d.ts","sourceRoot":"","sources":["../src/simple-input.ts"],"names":[],"mappings":"AAuBA,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqE1E"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import readline from 'node:readline';
|
|
2
|
+
import { promises as fs } from 'node:fs';
|
|
3
|
+
import { slashCommands } from './core/commands.js';
|
|
4
|
+
import { colors, icons } from './cli/ui.js';
|
|
5
|
+
async function getFiles() {
|
|
6
|
+
try {
|
|
7
|
+
const files = await fs.readdir(process.cwd(), { withFileTypes: true });
|
|
8
|
+
return files
|
|
9
|
+
.filter(f => !f.name.startsWith('.'))
|
|
10
|
+
.map(f => f.isDirectory() ? f.name + '/' : f.name);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function askQuestion(rl, message) {
|
|
17
|
+
return new Promise((resolve) => {
|
|
18
|
+
rl.question(message, (answer) => resolve(answer));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export async function interactiveInput(promptText) {
|
|
22
|
+
const rl = readline.createInterface({
|
|
23
|
+
input: process.stdin,
|
|
24
|
+
output: process.stdout,
|
|
25
|
+
});
|
|
26
|
+
try {
|
|
27
|
+
// Get initial input
|
|
28
|
+
const input = await askQuestion(rl, promptText);
|
|
29
|
+
// If just @, show file menu
|
|
30
|
+
if (input === '@') {
|
|
31
|
+
const files = await getFiles();
|
|
32
|
+
if (files.length === 0) {
|
|
33
|
+
console.log(colors.error(`${icons.error} No hay archivos disponibles`));
|
|
34
|
+
rl.close();
|
|
35
|
+
return '';
|
|
36
|
+
}
|
|
37
|
+
console.log(colors.yellow(`\n${icons.file} Archivos disponibles:`));
|
|
38
|
+
files.forEach((f, i) => {
|
|
39
|
+
console.log(` ${colors.muted(String(i + 1))}. ${f}`);
|
|
40
|
+
});
|
|
41
|
+
console.log(` ${colors.muted('0')}. Cancelar`);
|
|
42
|
+
const choice = await askQuestion(rl, colors.yellow('\nSelecciona número: '));
|
|
43
|
+
const num = parseInt(choice, 10);
|
|
44
|
+
if (num > 0 && num <= files.length) {
|
|
45
|
+
const file = files[num - 1];
|
|
46
|
+
const text = await askQuestion(rl, colors.user(`${icons.user} Mensaje con @${file}: `));
|
|
47
|
+
rl.close();
|
|
48
|
+
return text || `@${file} `;
|
|
49
|
+
}
|
|
50
|
+
rl.close();
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
// If just /, show command menu
|
|
54
|
+
if (input === '/') {
|
|
55
|
+
console.log(colors.tool(`\n${icons.tool} Comandos disponibles:`));
|
|
56
|
+
slashCommands.forEach((cmd, i) => {
|
|
57
|
+
console.log(` ${colors.muted(String(i + 1))}. ${colors.tool('/' + cmd.name)} ${colors.muted('- ' + cmd.description)}`);
|
|
58
|
+
});
|
|
59
|
+
console.log(` ${colors.muted('0')}. Cancelar`);
|
|
60
|
+
const choice = await askQuestion(rl, colors.tool('\nSelecciona número: '));
|
|
61
|
+
const num = parseInt(choice, 10);
|
|
62
|
+
if (num > 0 && num <= slashCommands.length) {
|
|
63
|
+
const cmd = slashCommands[num - 1];
|
|
64
|
+
if (cmd.name === 'model') {
|
|
65
|
+
const modelName = await askQuestion(rl, colors.info('Nombre del modelo: '));
|
|
66
|
+
rl.close();
|
|
67
|
+
return `/${cmd.name} ${modelName}`;
|
|
68
|
+
}
|
|
69
|
+
rl.close();
|
|
70
|
+
return `/${cmd.name}`;
|
|
71
|
+
}
|
|
72
|
+
rl.close();
|
|
73
|
+
return '';
|
|
74
|
+
}
|
|
75
|
+
rl.close();
|
|
76
|
+
return input;
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
rl.close();
|
|
80
|
+
return '';
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=simple-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-input.js","sourceRoot":"","sources":["../src/simple-input.ts"],"names":[],"mappings":"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"}
|
package/dist/skills.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface Skill {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
triggers: string[];
|
|
6
|
+
priority: number;
|
|
7
|
+
context: string;
|
|
8
|
+
exclusive: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const skills: Skill[];
|
|
11
|
+
export declare function detectSkills(prompt: string): Skill[];
|
|
12
|
+
export declare function buildEnhancedPrompt(baseSystemPrompt: string, userPrompt: string): string;
|
|
13
|
+
export declare function getActiveSkillsInfo(prompt: string): {
|
|
14
|
+
names: string[];
|
|
15
|
+
count: number;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAEpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAEhB,SAAS,EAAE,OAAO,CAAC;CACpB;AAGD,eAAO,MAAM,MAAM,EAAE,KAAK,EA6JzB,CAAC;AAGF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAmBpD;AAGD,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYxF;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMtF"}
|
package/dist/skills.js
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
// Skills System for Atena CLI
|
|
2
|
+
// Skills enhance the AI's performance by injecting specialized context based on prompt detection
|
|
3
|
+
// Core skills registry
|
|
4
|
+
export const skills = [
|
|
5
|
+
{
|
|
6
|
+
id: 'code-review',
|
|
7
|
+
name: 'Code Review',
|
|
8
|
+
description: 'Analiza código para bugs, mejoras y mejores prácticas',
|
|
9
|
+
triggers: ['revisa', 'review', 'código', 'code', 'bug', 'fix', 'mejora', 'refactor'],
|
|
10
|
+
priority: 90,
|
|
11
|
+
exclusive: false,
|
|
12
|
+
context: `Eres un experto code reviewer. Analiza el código considerando:
|
|
13
|
+
- Seguridad (inyección SQL, XSS, etc.)
|
|
14
|
+
- Performance (complejidad algorítmica, queries N+1)
|
|
15
|
+
- Mantenibilidad (SOLID, DRY, KISS)
|
|
16
|
+
- Legibilidad (nombres descriptivos, comentarios útiles)
|
|
17
|
+
- Edge cases y manejo de errores
|
|
18
|
+
Proporciona sugerencias específicas con ejemplos de código.`,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'architecture',
|
|
22
|
+
name: 'Architecture Design',
|
|
23
|
+
description: 'Diseña arquitecturas y patrones de diseño',
|
|
24
|
+
triggers: ['arquitectura', 'architecture', 'diseño', 'design', 'pattern', 'patrón', 'estructura', 'modular'],
|
|
25
|
+
priority: 85,
|
|
26
|
+
exclusive: false,
|
|
27
|
+
context: `Eres un arquitecto de software senior. Cuando diseñes soluciones:
|
|
28
|
+
- Prioriza simplicidad sobre complejidad innecesaria
|
|
29
|
+
- Considera escalabilidad horizontal/vertical
|
|
30
|
+
- Evalúa trade-offs (consistencia vs disponibilidad, etc.)
|
|
31
|
+
- Sugiere tecnologías apropiadas con justificación
|
|
32
|
+
- Proporciona diagramas conceptuales en texto si es útil
|
|
33
|
+
- Menciona anti-patterns a evitar`,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: 'debug',
|
|
37
|
+
name: 'Debugging',
|
|
38
|
+
description: 'Ayuda a debuguear errores y problemas',
|
|
39
|
+
triggers: ['debug', 'debuguear', 'error', 'excepción', 'exception', 'falla', 'crashea', 'no funciona', 'broken'],
|
|
40
|
+
priority: 95,
|
|
41
|
+
exclusive: false,
|
|
42
|
+
context: `Eres un experto en debugging sistemático:
|
|
43
|
+
1. Identifica síntomas vs causas raíz
|
|
44
|
+
2. Propón hipótesis ordenadas por probabilidad
|
|
45
|
+
3. Sugiere logs/puntos de interrupción estratégicos
|
|
46
|
+
4. Revisa stack traces completos
|
|
47
|
+
5. Considera race conditions, state corruption, edge cases
|
|
48
|
+
6. Si el error es intermitente, enfócate en timing/concurrency
|
|
49
|
+
7. Valida supuestos sobre input data y configuración`,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'testing',
|
|
53
|
+
name: 'Testing Strategy',
|
|
54
|
+
description: 'Genera tests unitarios, de integración y E2E',
|
|
55
|
+
triggers: ['test', 'testing', 'prueba', 'unit test', 'jest', 'vitest', 'cypress', 'playwright', 'coverage', 'mock'],
|
|
56
|
+
priority: 80,
|
|
57
|
+
exclusive: false,
|
|
58
|
+
context: `Eres un experto en testing. Cuando generes tests:
|
|
59
|
+
- Usa Given-When-Then para claridad
|
|
60
|
+
- Crea casos happy path, edge cases, y error cases
|
|
61
|
+
- Mockea dependencias externas apropiadamente
|
|
62
|
+
- Prioriza tests de comportamiento sobre implementación
|
|
63
|
+
- Sugiere métricas de coverage objetivo (>80%)
|
|
64
|
+
- Distingue entre unit, integration, y E2E tests
|
|
65
|
+
- Considera property-based testing cuando aplique`,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 'performance',
|
|
69
|
+
name: 'Performance Optimization',
|
|
70
|
+
description: 'Optimiza código para velocidad y recursos',
|
|
71
|
+
triggers: ['performance', 'optimiza', 'lento', 'slow', 'memory', 'cpu', 'caching', 'lazy loading', 'bundle size'],
|
|
72
|
+
priority: 85,
|
|
73
|
+
exclusive: false,
|
|
74
|
+
context: `Eres un experto en optimización de performance:
|
|
75
|
+
- Identifica bottlenecks con métricas, no suposiciones
|
|
76
|
+
- Usa Big O para analizar complejidad algorítmica
|
|
77
|
+
- Considera: lazy loading, code splitting, caching strategies
|
|
78
|
+
- Evalúa trade-offs (memoria vs CPU, complejidad vs velocidad)
|
|
79
|
+
- Sugiere herramientas de profiling específicas
|
|
80
|
+
- Optimiza primero lo que impacta al usuario (perceived performance)`,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: 'security',
|
|
84
|
+
name: 'Security Hardening',
|
|
85
|
+
description: 'Identifica vulnerabilidades y mejora seguridad',
|
|
86
|
+
triggers: ['seguridad', 'security', 'vulnerabilidad', 'vulnerability', 'auth', 'login', 'password', 'sql injection', 'xss', 'csrf'],
|
|
87
|
+
priority: 95,
|
|
88
|
+
exclusive: false,
|
|
89
|
+
context: `Eres un experto en seguridad aplicada (OWASP Top 10):
|
|
90
|
+
- Escanea para: injection flaws, broken auth, sensitive data exposure
|
|
91
|
+
- Verifica manejo seguro de secrets y credenciales
|
|
92
|
+
- Considera principle of least privilege
|
|
93
|
+
- Sugiere sanitización y validación de inputs
|
|
94
|
+
- Evalúa CORS, CSP, y headers de seguridad
|
|
95
|
+
- Menciona rate limiting para endpoints sensibles`,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: 'api-design',
|
|
99
|
+
name: 'API Design',
|
|
100
|
+
description: 'Diseña APIs RESTful/GraphQL con buenas prácticas',
|
|
101
|
+
triggers: ['api', 'endpoint', 'rest', 'graphql', 'endpoint', 'swagger', 'openapi', 'json', 'http'],
|
|
102
|
+
priority: 80,
|
|
103
|
+
exclusive: false,
|
|
104
|
+
context: `Eres un experto en diseño de APIs:
|
|
105
|
+
- Usa nombres de recursos, no verbos (/users no /getUsers)
|
|
106
|
+
- Versiona APIs apropiadamente (v1, v2)
|
|
107
|
+
- Estructura errores consistentemente (RFC 7807 Problem Details)
|
|
108
|
+
- Considera idempotencia para métodos no seguros
|
|
109
|
+
- Documenta con OpenAPI/Swagger
|
|
110
|
+
- Evalúa rate limiting, pagination, filtering
|
|
111
|
+
- Para GraphQL: evita N+1, considera query complexity`,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: 'database',
|
|
115
|
+
name: 'Database Optimization',
|
|
116
|
+
description: 'Optimiza queries, schemas y migraciones',
|
|
117
|
+
triggers: ['database', 'db', 'sql', 'query', 'index', 'migration', 'schema', 'postgresql', 'mysql', 'mongodb'],
|
|
118
|
+
priority: 85,
|
|
119
|
+
exclusive: false,
|
|
120
|
+
context: `Eres un experto en bases de datos:
|
|
121
|
+
- Analiza query plans (EXPLAIN ANALYZE)
|
|
122
|
+
- Sugiere índices estratégicos (covering indexes)
|
|
123
|
+
- Considera normalización vs denormalización
|
|
124
|
+
- Estrategias de sharding/partitioning cuando escale
|
|
125
|
+
- Manejo de migraciones sin downtime
|
|
126
|
+
- Connection pooling y query optimization
|
|
127
|
+
- Caching strategies (Redis) para queries frecuentes`,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
id: 'refactor',
|
|
131
|
+
name: 'Refactoring',
|
|
132
|
+
description: 'Mejora código legacy sin cambiar comportamiento',
|
|
133
|
+
triggers: ['refactor', 'refactoring', 'legacy', 'limpiar', 'clean up', 'deuda técnica', 'technical debt'],
|
|
134
|
+
priority: 75,
|
|
135
|
+
exclusive: false,
|
|
136
|
+
context: `Eres un experto en refactoring seguro:
|
|
137
|
+
- Prioriza: tests primero, luego refactor
|
|
138
|
+
- Aplica refactoring catalog (Martin Fowler)
|
|
139
|
+
- Usa baby steps: pequeños cambios verificables
|
|
140
|
+
- Mantiene behavior compatibility
|
|
141
|
+
- Extrae abstracciones gradualmente
|
|
142
|
+
- Elimina code smells sistemáticamente
|
|
143
|
+
- Documenta decisiones de diseño importantes`,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
id: 'typescript',
|
|
147
|
+
name: 'TypeScript Expert',
|
|
148
|
+
description: 'Mejora tipado, generics y patterns TypeScript',
|
|
149
|
+
triggers: ['typescript', 'type', 'interface', 'generic', 'infer', 'type guard', 'narrowing'],
|
|
150
|
+
priority: 80,
|
|
151
|
+
exclusive: false,
|
|
152
|
+
context: `Eres un experto en TypeScript avanzado:
|
|
153
|
+
- Usa strict mode siempre
|
|
154
|
+
- Prefiere types over interfaces para unions
|
|
155
|
+
- Aplica utility types (Partial, Required, ReturnType)
|
|
156
|
+
- Usa generics con constraints apropiadas
|
|
157
|
+
- Implementa type guards para narrowing
|
|
158
|
+
- Considera branded types para primitives semánticas
|
|
159
|
+
- Estructura discriminated unions para state machines`,
|
|
160
|
+
},
|
|
161
|
+
];
|
|
162
|
+
// Detect which skills apply to a given prompt
|
|
163
|
+
export function detectSkills(prompt) {
|
|
164
|
+
const promptLower = prompt.toLowerCase();
|
|
165
|
+
const matched = skills.filter(skill => {
|
|
166
|
+
return skill.triggers.some(trigger => promptLower.includes(trigger.toLowerCase()));
|
|
167
|
+
});
|
|
168
|
+
// Sort by priority (highest first)
|
|
169
|
+
matched.sort((a, b) => b.priority - a.priority);
|
|
170
|
+
// If any exclusive skill matches, return only that one
|
|
171
|
+
const exclusive = matched.find(s => s.exclusive);
|
|
172
|
+
if (exclusive) {
|
|
173
|
+
return [exclusive];
|
|
174
|
+
}
|
|
175
|
+
return matched;
|
|
176
|
+
}
|
|
177
|
+
// Build enhanced system prompt with detected skills
|
|
178
|
+
export function buildEnhancedPrompt(baseSystemPrompt, userPrompt) {
|
|
179
|
+
const detected = detectSkills(userPrompt);
|
|
180
|
+
if (detected.length === 0) {
|
|
181
|
+
return baseSystemPrompt;
|
|
182
|
+
}
|
|
183
|
+
const skillContexts = detected.map(s => `\n=== ${s.name} ===\n${s.context}`).join('\n');
|
|
184
|
+
return `${baseSystemPrompt}\n\n=== CONTEXTOS ESPECIALIZADOS ACTIVADOS ===${skillContexts}`;
|
|
185
|
+
}
|
|
186
|
+
// Get skill info for display
|
|
187
|
+
export function getActiveSkillsInfo(prompt) {
|
|
188
|
+
const detected = detectSkills(prompt);
|
|
189
|
+
return {
|
|
190
|
+
names: detected.map(s => s.name),
|
|
191
|
+
count: detected.length,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/stats.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export interface TokenUsage {
|
|
2
|
+
inputTokens: number;
|
|
3
|
+
outputTokens: number;
|
|
4
|
+
totalTokens: number;
|
|
5
|
+
cost: number;
|
|
6
|
+
}
|
|
7
|
+
export interface ToolUsage {
|
|
8
|
+
name: string;
|
|
9
|
+
count: number;
|
|
10
|
+
}
|
|
11
|
+
export interface SessionStats {
|
|
12
|
+
sessionId: string;
|
|
13
|
+
startTime: string;
|
|
14
|
+
endTime?: string;
|
|
15
|
+
model: string;
|
|
16
|
+
messages: number;
|
|
17
|
+
tokenUsage: TokenUsage;
|
|
18
|
+
toolsUsed: ToolUsage[];
|
|
19
|
+
}
|
|
20
|
+
export interface DailyStats {
|
|
21
|
+
date: string;
|
|
22
|
+
sessions: number;
|
|
23
|
+
totalTokens: number;
|
|
24
|
+
totalCost: number;
|
|
25
|
+
modelsUsed: Record<string, number>;
|
|
26
|
+
}
|
|
27
|
+
export declare class StatsTracker {
|
|
28
|
+
private currentSession;
|
|
29
|
+
private toolCounts;
|
|
30
|
+
constructor();
|
|
31
|
+
private ensureDirectory;
|
|
32
|
+
startSession(sessionId: string, model: string): void;
|
|
33
|
+
endSession(): SessionStats | null;
|
|
34
|
+
recordMessage(inputTokens: number, outputTokens: number, model: string): void;
|
|
35
|
+
recordToolUsage(toolName: string): void;
|
|
36
|
+
private calculateCost;
|
|
37
|
+
private saveSessionStats;
|
|
38
|
+
getStats(days?: number): Promise<{
|
|
39
|
+
totalSessions: number;
|
|
40
|
+
totalTokens: number;
|
|
41
|
+
totalCost: number;
|
|
42
|
+
modelBreakdown: Record<string, {
|
|
43
|
+
tokens: number;
|
|
44
|
+
cost: number;
|
|
45
|
+
}>;
|
|
46
|
+
toolBreakdown: Record<string, number>;
|
|
47
|
+
dailyStats: DailyStats[];
|
|
48
|
+
}>;
|
|
49
|
+
getCurrentSessionStats(): SessionStats | null;
|
|
50
|
+
formatCurrency(amount: number): string;
|
|
51
|
+
formatTokens(tokens: number): string;
|
|
52
|
+
}
|
|
53
|
+
export declare const statsTracker: StatsTracker;
|
|
54
|
+
//# sourceMappingURL=stats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAKD,qBAAa,YAAY;IACvB,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,UAAU,CAAkC;;YAMtC,eAAe;IAQ7B,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAiBpD,UAAU,IAAI,YAAY,GAAG,IAAI;IAoBjC,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAc7E,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKvC,OAAO,CAAC,aAAa;YAiBP,gBAAgB;IA0BxB,QAAQ,CAAC,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC;QACxC,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,UAAU,EAAE,UAAU,EAAE,CAAC;KAC1B,CAAC;IA+EF,sBAAsB,IAAI,YAAY,GAAG,IAAI;IAc7C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAMtC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CASrC;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|