agent-ctx 1.0.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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +133 -0
  3. package/dist/bin/agent-ctx.d.ts +7 -0
  4. package/dist/bin/agent-ctx.d.ts.map +1 -0
  5. package/dist/bin/agent-ctx.js +8 -0
  6. package/dist/bin/agent-ctx.js.map +1 -0
  7. package/dist/bin/agentrc.d.ts +7 -0
  8. package/dist/bin/agentrc.d.ts.map +1 -0
  9. package/dist/bin/agentrc.js +8 -0
  10. package/dist/bin/agentrc.js.map +1 -0
  11. package/dist/commands/add.d.ts +12 -0
  12. package/dist/commands/add.d.ts.map +1 -0
  13. package/dist/commands/add.js +17 -0
  14. package/dist/commands/add.js.map +1 -0
  15. package/dist/commands/centralize.d.ts +12 -0
  16. package/dist/commands/centralize.d.ts.map +1 -0
  17. package/dist/commands/centralize.js +111 -0
  18. package/dist/commands/centralize.js.map +1 -0
  19. package/dist/commands/clean.d.ts +13 -0
  20. package/dist/commands/clean.d.ts.map +1 -0
  21. package/dist/commands/clean.js +109 -0
  22. package/dist/commands/clean.js.map +1 -0
  23. package/dist/commands/doctor.d.ts +12 -0
  24. package/dist/commands/doctor.d.ts.map +1 -0
  25. package/dist/commands/doctor.js +168 -0
  26. package/dist/commands/doctor.js.map +1 -0
  27. package/dist/commands/init.d.ts +14 -0
  28. package/dist/commands/init.d.ts.map +1 -0
  29. package/dist/commands/init.js +189 -0
  30. package/dist/commands/init.js.map +1 -0
  31. package/dist/commands/update.d.ts +13 -0
  32. package/dist/commands/update.d.ts.map +1 -0
  33. package/dist/commands/update.js +97 -0
  34. package/dist/commands/update.js.map +1 -0
  35. package/dist/index.d.ts +6 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +76 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/lib/bridges.d.ts +35 -0
  40. package/dist/lib/bridges.d.ts.map +1 -0
  41. package/dist/lib/bridges.js +171 -0
  42. package/dist/lib/bridges.js.map +1 -0
  43. package/dist/lib/config.d.ts +31 -0
  44. package/dist/lib/config.d.ts.map +1 -0
  45. package/dist/lib/config.js +75 -0
  46. package/dist/lib/config.js.map +1 -0
  47. package/dist/lib/i18n.d.ts +22 -0
  48. package/dist/lib/i18n.d.ts.map +1 -0
  49. package/dist/lib/i18n.js +170 -0
  50. package/dist/lib/i18n.js.map +1 -0
  51. package/dist/lib/logger.d.ts +55 -0
  52. package/dist/lib/logger.d.ts.map +1 -0
  53. package/dist/lib/logger.js +168 -0
  54. package/dist/lib/logger.js.map +1 -0
  55. package/dist/lib/templates.d.ts +46 -0
  56. package/dist/lib/templates.d.ts.map +1 -0
  57. package/dist/lib/templates.js +88 -0
  58. package/dist/lib/templates.js.map +1 -0
  59. package/dist/lib/utils.d.ts +39 -0
  60. package/dist/lib/utils.d.ts.map +1 -0
  61. package/dist/lib/utils.js +127 -0
  62. package/dist/lib/utils.js.map +1 -0
  63. package/dist/lib/wizard.d.ts +22 -0
  64. package/dist/lib/wizard.d.ts.map +1 -0
  65. package/dist/lib/wizard.js +197 -0
  66. package/dist/lib/wizard.js.map +1 -0
  67. package/package.json +63 -0
  68. package/src/templates/en/base/_agents.md +62 -0
  69. package/src/templates/en/base/_architecture.md +90 -0
  70. package/src/templates/en/base/_bootstrap.md +89 -0
  71. package/src/templates/en/base/_doc.md +65 -0
  72. package/src/templates/en/base/_mcp.md +81 -0
  73. package/src/templates/en/base/_project_state.md +48 -0
  74. package/src/templates/en/base/_rule.md +56 -0
  75. package/src/templates/en/base/_skill.md +60 -0
  76. package/src/templates/en/docs/doc-readme.md +43 -0
  77. package/src/templates/en/docs/mcp-readme.md +21 -0
  78. package/src/templates/en/memory/active_context.md +38 -0
  79. package/src/templates/en/memory/progress.md +35 -0
  80. package/src/templates/en/memory/project_brief.md +34 -0
  81. package/src/templates/en/memory/tech_context.md +44 -0
  82. package/src/templates/en/rules/rule-coding-standards.md +22 -0
  83. package/src/templates/en/skills/skill-agents.md +74 -0
  84. package/src/templates/en/skills/skill-api.md +117 -0
  85. package/src/templates/en/skills/skill-architecture.md +87 -0
  86. package/src/templates/en/skills/skill-generating.md +116 -0
  87. package/src/templates/en/skills/skill-git.md +109 -0
  88. package/src/templates/en/skills/skill-project-state.md +99 -0
  89. package/src/templates/en/skills/skill-react.md +94 -0
  90. package/src/templates/en/skills/skill-rules.md +100 -0
  91. package/src/templates/en/skills/skill-testing.md +139 -0
  92. package/src/templates/es/base/_agents.md +62 -0
  93. package/src/templates/es/base/_architecture.md +90 -0
  94. package/src/templates/es/base/_bootstrap.md +89 -0
  95. package/src/templates/es/base/_doc.md +65 -0
  96. package/src/templates/es/base/_mcp.md +81 -0
  97. package/src/templates/es/base/_project_state.md +48 -0
  98. package/src/templates/es/base/_rule.md +56 -0
  99. package/src/templates/es/base/_skill.md +60 -0
  100. package/src/templates/es/docs/doc-readme.md +43 -0
  101. package/src/templates/es/docs/mcp-readme.md +21 -0
  102. package/src/templates/es/memory/active_context.md +38 -0
  103. package/src/templates/es/memory/progress.md +35 -0
  104. package/src/templates/es/memory/project_brief.md +34 -0
  105. package/src/templates/es/memory/tech_context.md +44 -0
  106. package/src/templates/es/rules/rule-coding-standards.md +22 -0
  107. package/src/templates/es/skills/skill-agents.md +74 -0
  108. package/src/templates/es/skills/skill-api.md +117 -0
  109. package/src/templates/es/skills/skill-architecture.md +87 -0
  110. package/src/templates/es/skills/skill-generating.md +116 -0
  111. package/src/templates/es/skills/skill-git.md +108 -0
  112. package/src/templates/es/skills/skill-project-state.md +99 -0
  113. package/src/templates/es/skills/skill-react.md +94 -0
  114. package/src/templates/es/skills/skill-rules.md +100 -0
  115. package/src/templates/es/skills/skill-testing.md +139 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 avicdro
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,133 @@
1
+ # agent-ctx 🤖
2
+
3
+ > CLI para inicializar y gestionar contexto de agentes AI en tus proyectos
4
+
5
+ [![npm version](https://badge.fury.io/js/agent-ctx.svg)](https://www.npmjs.com/package/agent-ctx)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ ## ¿Qué es agent-ctx?
9
+
10
+ **agent-ctx** es una herramienta CLI que configura una estructura de contexto estandarizada (`.context/`) para que cualquier agente AI (Cursor, Windsurf, Claude, Copilot, Cline, etc.) entienda tu proyecto de forma consistente.
11
+
12
+ ### ¿Por qué lo necesitas?
13
+
14
+ - 🪟 **Compatible con Windows, Mac y Linux** - Sin dependencia de bash
15
+ - 📦 **Fácil de distribuir** - `npx agent-ctx init` y listo
16
+ - 🔄 **Centralización** - Una sola fuente de verdad para todos los agentes
17
+ - 🏥 **Auto-reparación** - Detecta y arregla archivos rotos
18
+ - 📚 **Skills reutilizables** - Estructura modular para compartir conocimiento
19
+
20
+ ## Instalación
21
+
22
+ ```bash
23
+ # Uso directo con npx (recomendado)
24
+ npx agent-ctx init
25
+
26
+ # O instalación global
27
+ npm install -g agent-ctx
28
+ ```
29
+
30
+ ## Comandos
31
+
32
+ ### `agent-ctx init`
33
+
34
+ Inicializa la estructura `.context/` y genera archivos puente para diferentes editores.
35
+
36
+ ```bash
37
+ npx agent-ctx init # Directorio actual
38
+ npx agent-ctx init ./mi-proyecto # Directorio específico
39
+ npx agent-ctx init --yes # Modo no interactivo
40
+ npx agent-ctx init --force # Sobrescribe existentes
41
+ npx agent-ctx init --dry-run # Solo muestra qué haría
42
+ ```
43
+
44
+
45
+ ### `agent-ctx update`
46
+
47
+ Regenera los archivos puente con las últimas plantillas sin tocar `.context/`.
48
+
49
+ ```bash
50
+ npx agent-ctx update # Interactivo
51
+ npx agent-ctx update --yes # Actualiza todos
52
+ ```
53
+
54
+ ### `agent-ctx centralize`
55
+
56
+ Busca skills dispersas en carpetas de editores (`.cursor/skills`, `.windsurf/skills`, etc.) y las mueve a `.context/skills/`.
57
+
58
+ ```bash
59
+ npx agent-ctx centralize
60
+ npx agent-ctx centralize --dry-run
61
+ ```
62
+
63
+ ### `agent-ctx clean`
64
+
65
+ Elimina carpetas redundantes de editores que duplican skills/rules.
66
+
67
+ ```bash
68
+ npx agent-ctx clean
69
+ npx agent-ctx clean --yes # Sin confirmación
70
+ npx agent-ctx clean --dry-run
71
+ ```
72
+
73
+ ### `agent-ctx doctor`
74
+
75
+ Verifica la integridad de `.context/` y archivos puente, ofrece reparaciones.
76
+
77
+ ```bash
78
+ npx agent-ctx doctor # Solo diagnóstico
79
+ npx agent-ctx doctor --fix # Repara automáticamente
80
+ ```
81
+
82
+ ## Flags globales
83
+
84
+ | Flag | Descripción |
85
+ |------|-------------|
86
+ | `-q, --quiet` | Suprime output no esencial |
87
+ | `-v, --version` | Muestra versión |
88
+ | `-h, --help` | Muestra ayuda |
89
+
90
+ ## Configuración por proyecto
91
+
92
+ Crea un archivo `.agent-ctx.json` en la raíz del proyecto:
93
+
94
+ ```json
95
+ {
96
+ "editors": ["cursor", "claude", "copilot"],
97
+ "language": "es",
98
+ "backups": true
99
+ }
100
+ ```
101
+
102
+ ## Estructura generada
103
+
104
+ ```
105
+ tu-proyecto/
106
+ ├── .context/
107
+ │ ├── architecture.md # Stack y estructura del proyecto
108
+ │ ├── project_state.md # Estado actual, TODOs, bugs
109
+ │ ├── rules/
110
+ │ │ └── coding-standards.md
111
+ │ ├── skills/
112
+ │ │ └── _template_skill.md
113
+ │ ├── docs/
114
+ │ │ └── README.md
115
+ │ └── mcp/
116
+ │ └── README.md
117
+ ├── AGENTS.md # Índice maestro para agentes
118
+ ├── CLAUDE.md # Instrucciones para Claude
119
+ ├── .cursorrules # Puente para Cursor
120
+ ├── .windsurfrules # Puente para Windsurf
121
+ ├── .clinerules # Puente para Cline
122
+ ├── .roomodes # Puente para Roo
123
+ └── .github/
124
+ └── copilot-instructions.md # Puente para GitHub Copilot
125
+ ```
126
+
127
+ ## Contribuir
128
+
129
+ ¿Encontraste un bug o tienes una idea? ¡Abre un issue o PR!
130
+
131
+ ## License
132
+
133
+ MIT © avicdro
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * agent-ctx - CLI for AI Agent Context Management
4
+ * Entry point
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=agent-ctx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-ctx.d.ts","sourceRoot":"","sources":["../../src/bin/agent-ctx.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * agent-ctx - CLI for AI Agent Context Management
4
+ * Entry point
5
+ */
6
+ import { run } from '../index.js';
7
+ run();
8
+ //# sourceMappingURL=agent-ctx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-ctx.js","sourceRoot":"","sources":["../../src/bin/agent-ctx.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,GAAG,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * agentrc - CLI for AI Agent Context Management
4
+ * Entry point
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=agentrc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentrc.d.ts","sourceRoot":"","sources":["../../src/bin/agentrc.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * agentrc - CLI for AI Agent Context Management
4
+ * Entry point
5
+ */
6
+ import { run } from '../index.js';
7
+ run();
8
+ //# sourceMappingURL=agentrc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentrc.js","sourceRoot":"","sources":["../../src/bin/agentrc.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,GAAG,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Comando: add
3
+ * Descarga e instala skills desde npm
4
+ */
5
+ export interface AddOptions {
6
+ directory?: string;
7
+ }
8
+ /**
9
+ * Ejecuta el comando add
10
+ */
11
+ export declare function addCommand(skillName: string | undefined, options: AddOptions): Promise<void>;
12
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlG"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Comando: add
3
+ * Descarga e instala skills desde npm
4
+ */
5
+ import { logger } from '../lib/logger.js';
6
+ /**
7
+ * Ejecuta el comando add
8
+ */
9
+ export async function addCommand(skillName, options) {
10
+ logger.warning('🚧 Comando en desarrollo / Command under development');
11
+ logger.log('\nEl comando "add" está siendo refactorizado para soportar repositorios git y URLs directas.');
12
+ logger.log('The "add" command is being refactored to support git repositories and direct URLs.');
13
+ logger.log('\nPor ahora, por favor instala los skills manualmente o usa "init" para skills base.');
14
+ logger.log('For now, please install skills manually or use "init" for base skills.');
15
+ process.exit(0);
16
+ }
17
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,MAAM,EAA0D,MAAM,kBAAkB,CAAC;AAOlG;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAA6B,EAAE,OAAmB;IACjF,MAAM,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC;IAC3G,MAAM,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;IACjG,MAAM,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;IACnG,MAAM,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;IAErF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Comando: centralize
3
+ * Busca skills dispersas y las mueve a .context/skills/
4
+ */
5
+ export interface CentralizeOptions {
6
+ dryRun?: boolean;
7
+ }
8
+ /**
9
+ * Ejecuta el comando centralize
10
+ */
11
+ export declare function centralizeCommand(directory: string, options: CentralizeOptions): Promise<void>;
12
+ //# sourceMappingURL=centralize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centralize.d.ts","sourceRoot":"","sources":["../../src/commands/centralize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GpG"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Comando: centralize
3
+ * Busca skills dispersas y las mueve a .context/skills/
4
+ */
5
+ import { join } from 'path';
6
+ import { existsSync, readdirSync, rmSync, renameSync, statSync } from 'fs';
7
+ import { logger, startSpinner, succeedSpinner } from '../lib/logger.js';
8
+ import { resolveDirectory, validateNotRoot, ensureDir, EDITOR_FOLDERS } from '../lib/utils.js';
9
+ /**
10
+ * Ejecuta el comando centralize
11
+ */
12
+ export async function centralizeCommand(directory, options) {
13
+ try {
14
+ const targetDir = resolveDirectory(directory);
15
+ validateNotRoot(targetDir);
16
+ const { dryRun = false } = options;
17
+ // Header
18
+ logger.header('🔄 Iniciando centralización de Skills');
19
+ logger.log(`\n📁 Directorio de trabajo: ${targetDir}`);
20
+ if (dryRun) {
21
+ logger.log('🔍 Modo DRY-RUN (solo simulación)');
22
+ }
23
+ const contextDir = join(targetDir, '.context');
24
+ const skillsDir = join(contextDir, 'skills');
25
+ const rulesDir = join(contextDir, 'rules');
26
+ // Crear directorios si no existen
27
+ if (!dryRun) {
28
+ ensureDir(skillsDir, { dryRun });
29
+ ensureDir(rulesDir, { dryRun });
30
+ }
31
+ // Buscar skills dispersas
32
+ const spinner = startSpinner('Buscando skills dispersas...');
33
+ let foundSkills = 0;
34
+ const processedFolders = [];
35
+ for (const folder of EDITOR_FOLDERS) {
36
+ const folderPath = join(targetDir, folder);
37
+ const sourceSkills = join(folderPath, 'skills');
38
+ if (!existsSync(sourceSkills))
39
+ continue;
40
+ processedFolders.push(folder);
41
+ // Listar skills en la carpeta
42
+ const items = readdirSync(sourceSkills);
43
+ for (const item of items) {
44
+ const itemPath = join(sourceSkills, item);
45
+ const stat = statSync(itemPath);
46
+ if (!stat.isDirectory())
47
+ continue;
48
+ const targetPath = join(skillsDir, item);
49
+ foundSkills++;
50
+ if (existsSync(targetPath)) {
51
+ if (dryRun) {
52
+ logger.dryRun(`Eliminaría copia redundante: ${item}`);
53
+ }
54
+ else {
55
+ rmSync(itemPath, { recursive: true });
56
+ }
57
+ }
58
+ else {
59
+ if (dryRun) {
60
+ logger.dryRun(`Movería: ${item} → .context/skills/`);
61
+ }
62
+ else {
63
+ renameSync(itemPath, targetPath);
64
+ }
65
+ }
66
+ }
67
+ if (!dryRun) {
68
+ // Limpiar carpeta skills vacía
69
+ try {
70
+ rmSync(sourceSkills, { recursive: true });
71
+ }
72
+ catch { }
73
+ // Intentar borrar carpeta del editor si quedó vacía
74
+ try {
75
+ const remaining = readdirSync(folderPath);
76
+ if (remaining.length === 0) {
77
+ rmSync(folderPath, { recursive: true });
78
+ }
79
+ }
80
+ catch { }
81
+ }
82
+ }
83
+ if (foundSkills === 0) {
84
+ succeedSpinner('No se encontraron skills dispersas');
85
+ }
86
+ else {
87
+ succeedSpinner(`Procesadas ${foundSkills} skills de ${processedFolders.length} carpeta(s)`);
88
+ if (!dryRun) {
89
+ logger.newline();
90
+ for (const folder of processedFolders) {
91
+ logger.item(`📦 ${folder}/ → .context/skills/`);
92
+ }
93
+ }
94
+ }
95
+ // Resumen final
96
+ if (dryRun) {
97
+ logger.summary('🔍 SIMULACIÓN COMPLETADA', false);
98
+ logger.log('\nEjecuta sin --dry-run para aplicar los cambios.');
99
+ }
100
+ else {
101
+ logger.summary('🎉 ¡Centralización completada!');
102
+ logger.log('\n📁 Tu proyecto ahora usa una arquitectura limpia en .context/');
103
+ }
104
+ }
105
+ catch (error) {
106
+ const message = error instanceof Error ? error.message : String(error);
107
+ logger.error(message);
108
+ process.exit(1);
109
+ }
110
+ }
111
+ //# sourceMappingURL=centralize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centralize.js","sourceRoot":"","sources":["../../src/commands/centralize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAY,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAe,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAM/F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,OAA0B;IACnF,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,eAAe,CAAC,SAAS,CAAC,CAAC;QAE3B,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAEnC,SAAS;QACT,MAAM,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;QAEvD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE3C,kCAAkC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACjC,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;QAE7D,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAE5B,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEhD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,SAAS;YAExC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE9B,8BAA8B;YAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;YAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEhC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBAAE,SAAS;gBAElC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACzC,WAAW,EAAE,CAAC;gBAEd,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3B,IAAI,MAAM,EAAE,CAAC;wBACX,MAAM,CAAC,MAAM,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;oBACxD,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,MAAM,EAAE,CAAC;wBACX,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC;oBACvD,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,+BAA+B;gBAC/B,IAAI,CAAC;oBACH,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAEV,oDAAoD;gBACpD,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;oBAC1C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC3B,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,cAAc,CAAC,oCAAoC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,cAAc,WAAW,cAAc,gBAAgB,CAAC,MAAM,aAAa,CAAC,CAAC;YAE5F,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,sBAAsB,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAChF,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Comando: clean
3
+ * Elimina carpetas redundantes de editores
4
+ */
5
+ export interface CleanOptions {
6
+ yes?: boolean;
7
+ dryRun?: boolean;
8
+ }
9
+ /**
10
+ * Ejecuta el comando clean
11
+ */
12
+ export declare function cleanCommand(directory: string, options: CleanOptions): Promise<void>;
13
+ //# sourceMappingURL=clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmH1F"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Comando: clean
3
+ * Elimina carpetas redundantes de editores
4
+ */
5
+ import { join } from 'path';
6
+ import { existsSync, readdirSync, rmSync, statSync } from 'fs';
7
+ import inquirer from 'inquirer';
8
+ import { logger, startSpinner, succeedSpinner } from '../lib/logger.js';
9
+ import { resolveDirectory, validateNotRoot, WHITELIST } from '../lib/utils.js';
10
+ /**
11
+ * Ejecuta el comando clean
12
+ */
13
+ export async function cleanCommand(directory, options) {
14
+ try {
15
+ const targetDir = resolveDirectory(directory);
16
+ validateNotRoot(targetDir);
17
+ const { yes, dryRun } = options;
18
+ // Header
19
+ logger.header('🧹 Escaneo de carpetas de agentes redundantes');
20
+ logger.log(`\n📁 Directorio de trabajo: ${targetDir}`);
21
+ if (dryRun) {
22
+ logger.log('🔍 Modo DRY-RUN (solo simulación)');
23
+ }
24
+ if (yes) {
25
+ logger.log('🤖 Modo AUTO-CONFIRM');
26
+ }
27
+ // Buscar carpetas candidatas a borrar
28
+ const spinner = startSpinner('Buscando carpetas redundantes...');
29
+ const items = readdirSync(targetDir);
30
+ const candidates = [];
31
+ for (const item of items) {
32
+ // Solo carpetas ocultas
33
+ if (!item.startsWith('.'))
34
+ continue;
35
+ // Verificar lista blanca
36
+ if (WHITELIST.includes(item))
37
+ continue;
38
+ const itemPath = join(targetDir, item);
39
+ try {
40
+ const stat = statSync(itemPath);
41
+ if (!stat.isDirectory())
42
+ continue;
43
+ }
44
+ catch {
45
+ continue;
46
+ }
47
+ // Verificar si tiene skills o rules adentro
48
+ const hasSkills = existsSync(join(itemPath, 'skills'));
49
+ const hasRules = existsSync(join(itemPath, 'rules'));
50
+ if (hasSkills || hasRules) {
51
+ candidates.push({
52
+ path: itemPath,
53
+ name: item,
54
+ contents: [hasSkills && 'skills', hasRules && 'rules'].filter(Boolean).join(', ')
55
+ });
56
+ }
57
+ }
58
+ // Verificar si encontramos algo
59
+ if (candidates.length === 0) {
60
+ succeedSpinner('¡Todo limpio! No se encontraron carpetas redundantes');
61
+ return;
62
+ }
63
+ succeedSpinner(`Encontradas ${candidates.length} carpeta(s) redundantes`);
64
+ // Listar candidatos
65
+ logger.newline();
66
+ logger.divider();
67
+ for (const candidate of candidates) {
68
+ logger.log(` ❌ ${candidate.name} (contiene: ${candidate.contents})`);
69
+ }
70
+ logger.divider();
71
+ // Modo dry-run
72
+ if (dryRun) {
73
+ logger.dryRun('Se eliminarían las carpetas listadas arriba.');
74
+ logger.log('Ejecuta sin --dry-run para aplicar los cambios.');
75
+ return;
76
+ }
77
+ // Confirmación
78
+ if (!yes) {
79
+ logger.log('\n⚠️ Estas carpetas NO son \'.context\' y parecen ser generadas por herramientas externas.');
80
+ const { confirm } = await inquirer.prompt([
81
+ {
82
+ type: 'confirm',
83
+ name: 'confirm',
84
+ message: '¿Estás seguro de que deseas ELIMINAR estas carpetas permanentemente?',
85
+ default: false
86
+ }
87
+ ]);
88
+ if (!confirm) {
89
+ logger.success('🛑 Operación cancelada. No se ha borrado nada.');
90
+ return;
91
+ }
92
+ }
93
+ // Eliminar
94
+ const deleteSpinner = startSpinner('Eliminando carpetas...');
95
+ for (const candidate of candidates) {
96
+ rmSync(candidate.path, { recursive: true });
97
+ }
98
+ succeedSpinner(`Eliminadas ${candidates.length} carpeta(s)`);
99
+ // Resumen final
100
+ logger.summary('✨ Limpieza completada exitosamente');
101
+ logger.log(`\nAhora solo usa '.context/'.`);
102
+ }
103
+ catch (error) {
104
+ const message = error instanceof Error ? error.message : String(error);
105
+ logger.error(message);
106
+ process.exit(1);
107
+ }
108
+ }
109
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAiB,EAAE,OAAqB;IACzE,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,eAAe,CAAC,SAAS,CAAC,CAAC;QAE3B,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAEhC,SAAS;QACT,MAAM,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;QAEvD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACrC,CAAC;QAED,sCAAsC;QACtC,MAAM,OAAO,GAAG,YAAY,CAAC,kCAAkC,CAAC,CAAC;QAEjE,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,wBAAwB;YACxB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEpC,yBAAyB;YACzB,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAS;YAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAEvC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBAAE,SAAS;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,4CAA4C;YAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAErD,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,CAAC,SAAS,IAAI,QAAQ,EAAE,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBAClF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,cAAc,CAAC,sDAAsD,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,cAAc,CAAC,eAAe,UAAU,CAAC,MAAM,yBAAyB,CAAC,CAAC;QAE1E,oBAAoB;QACpB,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,QAAQ,SAAS,CAAC,IAAI,gBAAgB,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,eAAe;QACf,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC;YAC9D,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,eAAe;QACf,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,CAAC,6FAA6F,CAAC,CAAC;YAE1G,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACxC;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,sEAAsE;oBAC/E,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;gBACjE,OAAO;YACT,CAAC;QACH,CAAC;QAED,WAAW;QACX,MAAM,aAAa,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;QAE7D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,cAAc,CAAC,cAAc,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC;QAE7D,gBAAgB;QAChB,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAE9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Comando: doctor
3
+ * Verifica integridad de .context y archivos puente, ofrece reparaciones
4
+ */
5
+ export interface DoctorOptions {
6
+ fix?: boolean;
7
+ }
8
+ /**
9
+ * Ejecuta el comando doctor
10
+ */
11
+ export declare function doctorCommand(directory: string, options: DoctorOptions): Promise<void>;
12
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAUD;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6K5F"}