k0ntext 3.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 (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +623 -0
  3. package/bin/k0ntext.js +12 -0
  4. package/dist/agents/cleanup-agent.d.ts +39 -0
  5. package/dist/agents/cleanup-agent.d.ts.map +1 -0
  6. package/dist/agents/cleanup-agent.js +56 -0
  7. package/dist/agents/cleanup-agent.js.map +1 -0
  8. package/dist/agents/performance-agent.d.ts +37 -0
  9. package/dist/agents/performance-agent.d.ts.map +1 -0
  10. package/dist/agents/performance-agent.js +91 -0
  11. package/dist/agents/performance-agent.js.map +1 -0
  12. package/dist/analyzer/index.d.ts +5 -0
  13. package/dist/analyzer/index.d.ts.map +1 -0
  14. package/dist/analyzer/index.js +5 -0
  15. package/dist/analyzer/index.js.map +1 -0
  16. package/dist/analyzer/intelligent-analyzer.d.ts +111 -0
  17. package/dist/analyzer/intelligent-analyzer.d.ts.map +1 -0
  18. package/dist/analyzer/intelligent-analyzer.js +537 -0
  19. package/dist/analyzer/intelligent-analyzer.js.map +1 -0
  20. package/dist/cli/commands/cleanup.d.ts +3 -0
  21. package/dist/cli/commands/cleanup.d.ts.map +1 -0
  22. package/dist/cli/commands/cleanup.js +24 -0
  23. package/dist/cli/commands/cleanup.js.map +1 -0
  24. package/dist/cli/commands/export.d.ts +9 -0
  25. package/dist/cli/commands/export.d.ts.map +1 -0
  26. package/dist/cli/commands/export.js +72 -0
  27. package/dist/cli/commands/export.js.map +1 -0
  28. package/dist/cli/commands/import.d.ts +9 -0
  29. package/dist/cli/commands/import.d.ts.map +1 -0
  30. package/dist/cli/commands/import.js +62 -0
  31. package/dist/cli/commands/import.js.map +1 -0
  32. package/dist/cli/commands/performance.d.ts +9 -0
  33. package/dist/cli/commands/performance.d.ts.map +1 -0
  34. package/dist/cli/commands/performance.js +36 -0
  35. package/dist/cli/commands/performance.js.map +1 -0
  36. package/dist/cli/commands/validate.d.ts +9 -0
  37. package/dist/cli/commands/validate.d.ts.map +1 -0
  38. package/dist/cli/commands/validate.js +82 -0
  39. package/dist/cli/commands/validate.js.map +1 -0
  40. package/dist/cli/commands/watch.d.ts +9 -0
  41. package/dist/cli/commands/watch.d.ts.map +1 -0
  42. package/dist/cli/commands/watch.js +72 -0
  43. package/dist/cli/commands/watch.js.map +1 -0
  44. package/dist/cli/generate.d.ts +3 -0
  45. package/dist/cli/generate.d.ts.map +1 -0
  46. package/dist/cli/generate.js +194 -0
  47. package/dist/cli/generate.js.map +1 -0
  48. package/dist/cli/index.d.ts +9 -0
  49. package/dist/cli/index.d.ts.map +1 -0
  50. package/dist/cli/index.js +448 -0
  51. package/dist/cli/index.js.map +1 -0
  52. package/dist/cli/sync.d.ts +26 -0
  53. package/dist/cli/sync.d.ts.map +1 -0
  54. package/dist/cli/sync.js +163 -0
  55. package/dist/cli/sync.js.map +1 -0
  56. package/dist/config/cleanup-config.d.ts +26 -0
  57. package/dist/config/cleanup-config.d.ts.map +1 -0
  58. package/dist/config/cleanup-config.js +21 -0
  59. package/dist/config/cleanup-config.js.map +1 -0
  60. package/dist/db/client.d.ts +284 -0
  61. package/dist/db/client.d.ts.map +1 -0
  62. package/dist/db/client.js +688 -0
  63. package/dist/db/client.js.map +1 -0
  64. package/dist/db/index.d.ts +6 -0
  65. package/dist/db/index.d.ts.map +1 -0
  66. package/dist/db/index.js +6 -0
  67. package/dist/db/index.js.map +1 -0
  68. package/dist/db/schema.d.ts +41 -0
  69. package/dist/db/schema.d.ts.map +1 -0
  70. package/dist/db/schema.js +226 -0
  71. package/dist/db/schema.js.map +1 -0
  72. package/dist/embeddings/index.d.ts +5 -0
  73. package/dist/embeddings/index.d.ts.map +1 -0
  74. package/dist/embeddings/index.js +5 -0
  75. package/dist/embeddings/index.js.map +1 -0
  76. package/dist/embeddings/openrouter.d.ts +133 -0
  77. package/dist/embeddings/openrouter.d.ts.map +1 -0
  78. package/dist/embeddings/openrouter.js +455 -0
  79. package/dist/embeddings/openrouter.js.map +1 -0
  80. package/dist/index.d.ts +14 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +18 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/mcp.d.ts +29 -0
  85. package/dist/mcp.d.ts.map +1 -0
  86. package/dist/mcp.js +257 -0
  87. package/dist/mcp.js.map +1 -0
  88. package/docs/ARCHIVE/MIGRATE_TO_NEW_REPO.md +222 -0
  89. package/docs/ARCHIVE/MIGRATE_TO_UNIFIED.md +220 -0
  90. package/docs/CLEANUP.md +76 -0
  91. package/docs/MCP_QUICKSTART.md +219 -0
  92. package/docs/QUICKSTART.md +119 -0
  93. package/docs/TROUBLESHOOTING.md +611 -0
  94. package/package.json +100 -0
  95. package/skills/context-optimize/SKILL.md +86 -0
  96. package/skills/implement/SKILL.md +150 -0
  97. package/skills/plan/SKILL.md +143 -0
  98. package/skills/research/SKILL.md +103 -0
  99. package/skills/validate/SKILL.md +62 -0
  100. package/skills/verify-docs/SKILL.md +77 -0
  101. package/src/agents/cleanup-agent.ts +96 -0
  102. package/src/agents/performance-agent.ts +117 -0
  103. package/src/analyzer/index.ts +10 -0
  104. package/src/analyzer/intelligent-analyzer.ts +640 -0
  105. package/src/cli/commands/cleanup.ts +26 -0
  106. package/src/cli/commands/export.ts +82 -0
  107. package/src/cli/commands/import.ts +73 -0
  108. package/src/cli/commands/performance.ts +40 -0
  109. package/src/cli/commands/validate.ts +98 -0
  110. package/src/cli/commands/watch.ts +83 -0
  111. package/src/cli/generate.ts +219 -0
  112. package/src/cli/index.ts +510 -0
  113. package/src/cli/sync.ts +194 -0
  114. package/src/config/cleanup-config.ts +42 -0
  115. package/src/db/client.ts +949 -0
  116. package/src/db/index.ts +19 -0
  117. package/src/db/schema.ts +241 -0
  118. package/src/embeddings/index.ts +11 -0
  119. package/src/embeddings/openrouter.ts +592 -0
  120. package/src/index.ts +57 -0
  121. package/src/mcp.ts +354 -0
  122. package/templates/AI_CONTEXT.md.template +245 -0
  123. package/templates/base/README.md +260 -0
  124. package/templates/base/RPI_WORKFLOW_PLAN.md +325 -0
  125. package/templates/base/agents/api-developer.md +76 -0
  126. package/templates/base/agents/context-engineer.md +525 -0
  127. package/templates/base/agents/core-architect.md +76 -0
  128. package/templates/base/agents/database-ops.md +76 -0
  129. package/templates/base/agents/deployment-ops.md +76 -0
  130. package/templates/base/agents/integration-hub.md +76 -0
  131. package/templates/base/analytics/README.md +114 -0
  132. package/templates/base/automation/config.json +58 -0
  133. package/templates/base/automation/generators/code-mapper.js +308 -0
  134. package/templates/base/automation/generators/index-builder.js +321 -0
  135. package/templates/base/automation/hooks/post-commit.sh +83 -0
  136. package/templates/base/automation/hooks/pre-commit.sh +103 -0
  137. package/templates/base/ci-templates/README.md +108 -0
  138. package/templates/base/ci-templates/github-actions/context-check.yml +144 -0
  139. package/templates/base/ci-templates/github-actions/validate-docs.yml +105 -0
  140. package/templates/base/commands/analytics.md +238 -0
  141. package/templates/base/commands/auto-sync.md +172 -0
  142. package/templates/base/commands/collab.md +194 -0
  143. package/templates/base/commands/context-optimize.md +226 -0
  144. package/templates/base/commands/help.md +485 -0
  145. package/templates/base/commands/rpi-implement.md +164 -0
  146. package/templates/base/commands/rpi-plan.md +147 -0
  147. package/templates/base/commands/rpi-research.md +145 -0
  148. package/templates/base/commands/session-resume.md +144 -0
  149. package/templates/base/commands/session-save.md +112 -0
  150. package/templates/base/commands/validate-all.md +77 -0
  151. package/templates/base/commands/verify-docs-current.md +86 -0
  152. package/templates/base/config/base.json +57 -0
  153. package/templates/base/config/environments/development.json +13 -0
  154. package/templates/base/config/environments/production.json +17 -0
  155. package/templates/base/config/environments/staging.json +13 -0
  156. package/templates/base/config/local.json.example +21 -0
  157. package/templates/base/context/.meta/generated-at.json +18 -0
  158. package/templates/base/context/ARCHITECTURE_SNAPSHOT.md +156 -0
  159. package/templates/base/context/CODE_TO_WORKFLOW_MAP.md +94 -0
  160. package/templates/base/context/FILE_OWNERSHIP.md +57 -0
  161. package/templates/base/context/INTEGRATION_POINTS.md +92 -0
  162. package/templates/base/context/KNOWN_GOTCHAS.md +195 -0
  163. package/templates/base/context/TESTING_MAP.md +95 -0
  164. package/templates/base/context/WORKFLOW_INDEX.md +129 -0
  165. package/templates/base/context/workflows/WORKFLOW_TEMPLATE.md +294 -0
  166. package/templates/base/indexes/agents/CAPABILITY_MATRIX.md +255 -0
  167. package/templates/base/indexes/agents/CATEGORY_INDEX.md +44 -0
  168. package/templates/base/indexes/code/CATEGORY_INDEX.md +38 -0
  169. package/templates/base/indexes/routing/CATEGORY_INDEX.md +39 -0
  170. package/templates/base/indexes/search/CATEGORY_INDEX.md +39 -0
  171. package/templates/base/indexes/workflows/CATEGORY_INDEX.md +38 -0
  172. package/templates/base/knowledge/README.md +98 -0
  173. package/templates/base/knowledge/sessions/README.md +88 -0
  174. package/templates/base/knowledge/sessions/TEMPLATE.md +150 -0
  175. package/templates/base/knowledge/shared/decisions/0001-adopt-context-engineering.md +144 -0
  176. package/templates/base/knowledge/shared/decisions/README.md +49 -0
  177. package/templates/base/knowledge/shared/decisions/TEMPLATE.md +123 -0
  178. package/templates/base/knowledge/shared/patterns/README.md +62 -0
  179. package/templates/base/knowledge/shared/patterns/TEMPLATE.md +120 -0
  180. package/templates/base/plans/PLAN_TEMPLATE.md +316 -0
  181. package/templates/base/plans/active/.gitkeep +0 -0
  182. package/templates/base/plans/completed/.gitkeep +0 -0
  183. package/templates/base/research/RESEARCH_TEMPLATE.md +245 -0
  184. package/templates/base/research/active/.gitkeep +0 -0
  185. package/templates/base/research/completed/.gitkeep +0 -0
  186. package/templates/base/schemas/agent.schema.json +141 -0
  187. package/templates/base/schemas/anchors.schema.json +54 -0
  188. package/templates/base/schemas/automation.schema.json +93 -0
  189. package/templates/base/schemas/command.schema.json +134 -0
  190. package/templates/base/schemas/hashes.schema.json +40 -0
  191. package/templates/base/schemas/manifest.schema.json +117 -0
  192. package/templates/base/schemas/plan.schema.json +136 -0
  193. package/templates/base/schemas/research.schema.json +115 -0
  194. package/templates/base/schemas/roles.schema.json +34 -0
  195. package/templates/base/schemas/session.schema.json +77 -0
  196. package/templates/base/schemas/settings.schema.json +244 -0
  197. package/templates/base/schemas/staleness.schema.json +53 -0
  198. package/templates/base/schemas/team-config.schema.json +42 -0
  199. package/templates/base/schemas/workflow.schema.json +126 -0
  200. package/templates/base/session/checkpoints/.gitkeep +2 -0
  201. package/templates/base/session/current/state.json +20 -0
  202. package/templates/base/session/history/.gitkeep +2 -0
  203. package/templates/base/settings.json +3 -0
  204. package/templates/base/standards/COMPATIBILITY.md +219 -0
  205. package/templates/base/standards/EXTENSION_GUIDELINES.md +280 -0
  206. package/templates/base/standards/QUALITY_CHECKLIST.md +211 -0
  207. package/templates/base/standards/README.md +66 -0
  208. package/templates/base/sync/anchors.json +6 -0
  209. package/templates/base/sync/hashes.json +6 -0
  210. package/templates/base/sync/staleness.json +10 -0
  211. package/templates/base/team/README.md +168 -0
  212. package/templates/base/team/config.json +79 -0
  213. package/templates/base/team/roles.json +145 -0
  214. package/templates/base/tools/bin/claude-context.js +151 -0
  215. package/templates/base/tools/lib/anchor-resolver.js +276 -0
  216. package/templates/base/tools/lib/config-loader.js +363 -0
  217. package/templates/base/tools/lib/detector.js +350 -0
  218. package/templates/base/tools/lib/diagnose.js +206 -0
  219. package/templates/base/tools/lib/drift-detector.js +373 -0
  220. package/templates/base/tools/lib/errors.js +199 -0
  221. package/templates/base/tools/lib/index.js +36 -0
  222. package/templates/base/tools/lib/init.js +192 -0
  223. package/templates/base/tools/lib/logger.js +230 -0
  224. package/templates/base/tools/lib/placeholder.js +201 -0
  225. package/templates/base/tools/lib/session-manager.js +354 -0
  226. package/templates/base/tools/lib/validate.js +521 -0
  227. package/templates/base/tools/package.json +49 -0
  228. package/templates/handlebars/aider-config.hbs +146 -0
  229. package/templates/handlebars/antigravity.hbs +377 -0
  230. package/templates/handlebars/claude.hbs +183 -0
  231. package/templates/handlebars/cline.hbs +62 -0
  232. package/templates/handlebars/continue-config.hbs +116 -0
  233. package/templates/handlebars/copilot.hbs +130 -0
  234. package/templates/handlebars/partials/gotcha-list.hbs +11 -0
  235. package/templates/handlebars/partials/header.hbs +3 -0
  236. package/templates/handlebars/partials/workflow-summary.hbs +16 -0
  237. package/templates/handlebars/windsurf-rules.hbs +69 -0
  238. package/templates/hooks/post-commit.hbs +28 -0
  239. package/templates/hooks/pre-commit.hbs +46 -0
@@ -0,0 +1,537 @@
1
+ /**
2
+ * Intelligent Analyzer
3
+ *
4
+ * Uses OpenRouter API to intelligently analyze codebases, docs, and tool configurations.
5
+ * This is the core of the "forcefully intelligent" initialization.
6
+ */
7
+ import fs from 'fs';
8
+ import path from 'path';
9
+ import { glob } from 'glob';
10
+ import { createOpenRouterClient, hasOpenRouterKey } from '../embeddings/openrouter.js';
11
+ import { AI_TOOLS, AI_TOOL_FOLDERS } from '../db/schema.js';
12
+ /**
13
+ * Default ignore patterns
14
+ */
15
+ const DEFAULT_IGNORE = [
16
+ '**/node_modules/**',
17
+ '**/dist/**',
18
+ '**/build/**',
19
+ '**/.git/**',
20
+ '**/vendor/**',
21
+ '**/__pycache__/**',
22
+ '**/target/**',
23
+ '**/bin/**',
24
+ '**/obj/**',
25
+ '**/.next/**',
26
+ '**/.nuxt/**',
27
+ '**/*.min.js',
28
+ '**/*.map',
29
+ '**/package-lock.json',
30
+ '**/yarn.lock',
31
+ '**/pnpm-lock.yaml'
32
+ ];
33
+ /**
34
+ * Intelligent analyzer using OpenRouter
35
+ */
36
+ export class IntelligentAnalyzer {
37
+ client = null;
38
+ projectRoot;
39
+ constructor(projectRoot) {
40
+ this.projectRoot = projectRoot;
41
+ // Try to create client if API key available
42
+ if (hasOpenRouterKey()) {
43
+ try {
44
+ this.client = createOpenRouterClient();
45
+ }
46
+ catch (error) {
47
+ console.warn('OpenRouter client initialization failed:', error);
48
+ }
49
+ }
50
+ }
51
+ /**
52
+ * Check if intelligent analysis is available
53
+ */
54
+ isIntelligentModeAvailable() {
55
+ return this.client !== null;
56
+ }
57
+ /**
58
+ * Discover all documentation files (.md files)
59
+ */
60
+ async discoverDocs() {
61
+ const files = [];
62
+ const mdFiles = await glob('**/*.md', {
63
+ cwd: this.projectRoot,
64
+ ignore: DEFAULT_IGNORE,
65
+ absolute: true
66
+ });
67
+ for (const filePath of mdFiles) {
68
+ const stats = fs.statSync(filePath);
69
+ files.push({
70
+ path: filePath,
71
+ relativePath: path.relative(this.projectRoot, filePath),
72
+ type: 'doc',
73
+ size: stats.size
74
+ });
75
+ }
76
+ return files;
77
+ }
78
+ /**
79
+ * Discover AI tool configurations
80
+ */
81
+ async discoverToolConfigs() {
82
+ const files = [];
83
+ for (const tool of AI_TOOLS) {
84
+ const patterns = AI_TOOL_FOLDERS[tool];
85
+ for (const pattern of patterns) {
86
+ const fullPath = path.join(this.projectRoot, pattern);
87
+ if (fs.existsSync(fullPath)) {
88
+ const stats = fs.statSync(fullPath);
89
+ if (stats.isDirectory()) {
90
+ // Scan directory contents
91
+ const dirFiles = await glob('**/*', {
92
+ cwd: fullPath,
93
+ nodir: true,
94
+ absolute: true
95
+ });
96
+ for (const filePath of dirFiles) {
97
+ const fileStats = fs.statSync(filePath);
98
+ files.push({
99
+ path: filePath,
100
+ relativePath: path.relative(this.projectRoot, filePath),
101
+ type: 'tool_config',
102
+ tool,
103
+ size: fileStats.size
104
+ });
105
+ }
106
+ }
107
+ else {
108
+ files.push({
109
+ path: fullPath,
110
+ relativePath: pattern,
111
+ type: 'tool_config',
112
+ tool,
113
+ size: stats.size
114
+ });
115
+ }
116
+ }
117
+ }
118
+ }
119
+ return files;
120
+ }
121
+ /**
122
+ * Discover source code files
123
+ */
124
+ async discoverCode() {
125
+ const files = [];
126
+ const codePatterns = [
127
+ '**/*.js', '**/*.ts', '**/*.tsx', '**/*.jsx',
128
+ '**/*.py', '**/*.go', '**/*.rs', '**/*.java',
129
+ '**/*.cs', '**/*.rb', '**/*.php'
130
+ ];
131
+ for (const pattern of codePatterns) {
132
+ const codeFiles = await glob(pattern, {
133
+ cwd: this.projectRoot,
134
+ ignore: DEFAULT_IGNORE,
135
+ absolute: true
136
+ });
137
+ for (const filePath of codeFiles) {
138
+ const stats = fs.statSync(filePath);
139
+ files.push({
140
+ path: filePath,
141
+ relativePath: path.relative(this.projectRoot, filePath),
142
+ type: 'code',
143
+ size: stats.size
144
+ });
145
+ }
146
+ }
147
+ return files;
148
+ }
149
+ /**
150
+ * Read file content safely
151
+ */
152
+ readFileContent(filePath, maxBytes = 50000) {
153
+ let fd = null;
154
+ try {
155
+ const stats = fs.statSync(filePath);
156
+ if (stats.size > maxBytes) {
157
+ // Read only first part of large files
158
+ fd = fs.openSync(filePath, 'r');
159
+ const buffer = Buffer.alloc(maxBytes);
160
+ fs.readSync(fd, buffer, 0, maxBytes, 0);
161
+ return buffer.toString('utf-8') + '\n\n... [truncated]';
162
+ }
163
+ return fs.readFileSync(filePath, 'utf-8');
164
+ }
165
+ catch {
166
+ return null;
167
+ }
168
+ finally {
169
+ if (fd !== null) {
170
+ try {
171
+ fs.closeSync(fd);
172
+ }
173
+ catch {
174
+ // Ignore errors when closing the file descriptor
175
+ }
176
+ }
177
+ }
178
+ }
179
+ /**
180
+ * Perform full intelligent analysis
181
+ */
182
+ async analyze() {
183
+ // Discover all files
184
+ const [docs, toolConfigs, codeFiles] = await Promise.all([
185
+ this.discoverDocs(),
186
+ this.discoverToolConfigs(),
187
+ this.discoverCode()
188
+ ]);
189
+ // Determine which AI tools are already configured
190
+ const configuredTools = new Set();
191
+ for (const config of toolConfigs) {
192
+ if (config.tool) {
193
+ configuredTools.add(config.tool);
194
+ }
195
+ }
196
+ // Basic analysis (without AI)
197
+ const basicResult = {
198
+ summary: '',
199
+ techStack: this.detectTechStackBasic(codeFiles),
200
+ workflows: [],
201
+ architecture: {
202
+ pattern: 'unknown',
203
+ components: [],
204
+ integrations: []
205
+ },
206
+ existingContext: {
207
+ tools: Array.from(configuredTools),
208
+ files: [...docs, ...toolConfigs]
209
+ },
210
+ suggestions: {
211
+ contextFiles: [],
212
+ workflows: [],
213
+ agents: [],
214
+ commands: []
215
+ }
216
+ };
217
+ // If OpenRouter is available, perform intelligent analysis
218
+ if (this.client) {
219
+ try {
220
+ const intelligentResult = await this.performIntelligentAnalysis(docs, toolConfigs, codeFiles);
221
+ return {
222
+ ...basicResult,
223
+ ...intelligentResult,
224
+ existingContext: basicResult.existingContext
225
+ };
226
+ }
227
+ catch (error) {
228
+ console.warn('Intelligent analysis failed, falling back to basic:', error);
229
+ }
230
+ }
231
+ // Generate basic summary
232
+ basicResult.summary = this.generateBasicSummary(docs, toolConfigs, codeFiles, basicResult.techStack);
233
+ return basicResult;
234
+ }
235
+ /**
236
+ * Detect tech stack without AI
237
+ */
238
+ detectTechStackBasic(codeFiles) {
239
+ const languages = new Set();
240
+ const frameworks = new Set();
241
+ const tools = new Set();
242
+ // Detect languages from file extensions
243
+ for (const file of codeFiles) {
244
+ const ext = path.extname(file.relativePath).toLowerCase();
245
+ switch (ext) {
246
+ case '.js':
247
+ case '.mjs':
248
+ case '.cjs':
249
+ languages.add('JavaScript');
250
+ break;
251
+ case '.ts':
252
+ case '.tsx':
253
+ languages.add('TypeScript');
254
+ break;
255
+ case '.py':
256
+ languages.add('Python');
257
+ break;
258
+ case '.go':
259
+ languages.add('Go');
260
+ break;
261
+ case '.rs':
262
+ languages.add('Rust');
263
+ break;
264
+ case '.java':
265
+ languages.add('Java');
266
+ break;
267
+ case '.cs':
268
+ languages.add('C#');
269
+ break;
270
+ case '.rb':
271
+ languages.add('Ruby');
272
+ break;
273
+ case '.php':
274
+ languages.add('PHP');
275
+ break;
276
+ }
277
+ }
278
+ // Check for common framework indicators
279
+ const packageJsonPath = path.join(this.projectRoot, 'package.json');
280
+ if (fs.existsSync(packageJsonPath)) {
281
+ try {
282
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
283
+ const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
284
+ if (deps.react)
285
+ frameworks.add('React');
286
+ if (deps.vue)
287
+ frameworks.add('Vue');
288
+ if (deps.angular || deps['@angular/core'])
289
+ frameworks.add('Angular');
290
+ if (deps.express)
291
+ frameworks.add('Express');
292
+ if (deps.fastify)
293
+ frameworks.add('Fastify');
294
+ if (deps.next)
295
+ frameworks.add('Next.js');
296
+ if (deps.nest || deps['@nestjs/core'])
297
+ frameworks.add('NestJS');
298
+ tools.add('npm');
299
+ }
300
+ catch {
301
+ // Ignore parse errors
302
+ }
303
+ }
304
+ // Check for Python indicators
305
+ const requirementsTxtPath = path.join(this.projectRoot, 'requirements.txt');
306
+ const pyprojectPath = path.join(this.projectRoot, 'pyproject.toml');
307
+ if (fs.existsSync(requirementsTxtPath) || fs.existsSync(pyprojectPath)) {
308
+ tools.add('pip');
309
+ if (fs.existsSync(pyprojectPath)) {
310
+ tools.add('poetry');
311
+ }
312
+ }
313
+ return {
314
+ languages: Array.from(languages),
315
+ frameworks: Array.from(frameworks),
316
+ tools: Array.from(tools)
317
+ };
318
+ }
319
+ /**
320
+ * Perform intelligent analysis using OpenRouter
321
+ */
322
+ async performIntelligentAnalysis(docs, toolConfigs, codeFiles) {
323
+ if (!this.client) {
324
+ throw new Error('OpenRouter client not available');
325
+ }
326
+ // Gather sample content for analysis
327
+ const sampleContent = [];
328
+ // Add README and main docs
329
+ const importantDocs = docs.filter(d => d.relativePath.toLowerCase().includes('readme') ||
330
+ d.relativePath.toLowerCase().includes('claude') ||
331
+ d.relativePath.toLowerCase().includes('context')).slice(0, 5);
332
+ for (const doc of importantDocs) {
333
+ const content = this.readFileContent(doc.path, 10000);
334
+ if (content) {
335
+ sampleContent.push(`## File: ${doc.relativePath}\n\n${content}`);
336
+ }
337
+ }
338
+ // Add tool configs
339
+ for (const config of toolConfigs.slice(0, 5)) {
340
+ const content = this.readFileContent(config.path, 5000);
341
+ if (content) {
342
+ sampleContent.push(`## Tool Config (${config.tool}): ${config.relativePath}\n\n${content}`);
343
+ }
344
+ }
345
+ // Add sample code files (entry points)
346
+ const entryPoints = codeFiles.filter(f => f.relativePath.includes('index.') ||
347
+ f.relativePath.includes('main.') ||
348
+ f.relativePath.includes('app.') ||
349
+ f.relativePath.includes('server.')).slice(0, 5);
350
+ for (const code of entryPoints) {
351
+ const content = this.readFileContent(code.path, 8000);
352
+ if (content) {
353
+ sampleContent.push(`## Code: ${code.relativePath}\n\n${content}`);
354
+ }
355
+ }
356
+ // Create analysis prompt
357
+ const analysisPrompt = `
358
+ Analyze this codebase content and provide a structured analysis:
359
+
360
+ ${sampleContent.join('\n\n---\n\n')}
361
+
362
+ Provide your analysis in the following JSON format:
363
+ {
364
+ "summary": "Brief description of what this project does",
365
+ "techStack": {
366
+ "languages": ["list of programming languages"],
367
+ "frameworks": ["list of frameworks"],
368
+ "tools": ["list of tools and libraries"]
369
+ },
370
+ "workflows": [
371
+ {
372
+ "name": "workflow name",
373
+ "description": "what it does",
374
+ "entryPoint": "file:line",
375
+ "steps": ["step 1", "step 2"]
376
+ }
377
+ ],
378
+ "architecture": {
379
+ "pattern": "architectural pattern (e.g., MVC, microservices)",
380
+ "components": ["main components"],
381
+ "integrations": ["external integrations"]
382
+ },
383
+ "suggestions": {
384
+ "contextFiles": ["suggested context files to create"],
385
+ "workflows": ["workflows to document"],
386
+ "agents": ["agents that would be useful"],
387
+ "commands": ["commands to implement"]
388
+ }
389
+ }
390
+
391
+ Return ONLY valid JSON, no markdown formatting.
392
+ `;
393
+ let response = '';
394
+ try {
395
+ response = await this.client.chat([
396
+ {
397
+ role: 'system',
398
+ content: 'You are an expert code analyzer and AI context engineer. Analyze codebases to understand their structure, workflows, and suggest optimal AI context configurations. Always return valid JSON.'
399
+ },
400
+ { role: 'user', content: analysisPrompt }
401
+ ], { temperature: 0.2, maxTokens: 4096 });
402
+ // First, try to parse the whole response as JSON.
403
+ try {
404
+ return JSON.parse(response);
405
+ }
406
+ catch {
407
+ // If that fails, attempt to extract the JSON substring between the
408
+ // first '{' and the last '}' and parse that.
409
+ if (typeof response === 'string') {
410
+ const start = response.indexOf('{');
411
+ const end = response.lastIndexOf('}');
412
+ if (start !== -1 && end !== -1 && end > start) {
413
+ const jsonSubstring = response.slice(start, end + 1);
414
+ return JSON.parse(jsonSubstring);
415
+ }
416
+ }
417
+ }
418
+ }
419
+ catch (error) {
420
+ console.warn('Failed to parse intelligent analysis response.');
421
+ // Log a preview of the raw response to aid debugging of malformed JSON.
422
+ try {
423
+ const preview = typeof response === 'string'
424
+ ? response.slice(0, 1000)
425
+ : JSON.stringify(response).slice(0, 1000);
426
+ console.warn('Raw response preview (truncated to 1000 chars):', preview);
427
+ }
428
+ catch {
429
+ // If preview logging fails for any reason, ignore and just log the error.
430
+ }
431
+ console.warn('Error details:', error);
432
+ }
433
+ return {};
434
+ }
435
+ /**
436
+ * Generate basic summary without AI
437
+ */
438
+ generateBasicSummary(docs, toolConfigs, codeFiles, techStack) {
439
+ const parts = [];
440
+ parts.push(`Project Analysis Summary`);
441
+ parts.push(`========================`);
442
+ parts.push(``);
443
+ parts.push(`**Files Discovered:**`);
444
+ parts.push(`- Documentation: ${docs.length} files`);
445
+ parts.push(`- Source Code: ${codeFiles.length} files`);
446
+ parts.push(`- AI Tool Configs: ${toolConfigs.length} files`);
447
+ parts.push(``);
448
+ parts.push(`**Tech Stack:**`);
449
+ if (techStack.languages.length > 0) {
450
+ parts.push(`- Languages: ${techStack.languages.join(', ')}`);
451
+ }
452
+ if (techStack.frameworks.length > 0) {
453
+ parts.push(`- Frameworks: ${techStack.frameworks.join(', ')}`);
454
+ }
455
+ if (techStack.tools.length > 0) {
456
+ parts.push(`- Tools: ${techStack.tools.join(', ')}`);
457
+ }
458
+ return parts.join('\n');
459
+ }
460
+ /**
461
+ * Generate embeddings for discovered content
462
+ */
463
+ async generateEmbeddings(files) {
464
+ if (!this.client) {
465
+ throw new Error('OpenRouter client not available for embeddings');
466
+ }
467
+ const embeddings = new Map();
468
+ // Process in batches
469
+ const batchSize = 10;
470
+ for (let i = 0; i < files.length; i += batchSize) {
471
+ const batch = files.slice(i, i + batchSize);
472
+ const texts = [];
473
+ const paths = [];
474
+ for (const file of batch) {
475
+ const content = this.readFileContent(file.path, 8000);
476
+ if (content) {
477
+ texts.push(`File: ${file.relativePath}\n\n${content}`);
478
+ paths.push(file.relativePath);
479
+ }
480
+ }
481
+ if (texts.length > 0) {
482
+ const batchEmbeddings = await this.client.embedBatch(texts);
483
+ for (let j = 0; j < paths.length; j++) {
484
+ embeddings.set(paths[j], batchEmbeddings[j]);
485
+ }
486
+ }
487
+ }
488
+ return embeddings;
489
+ }
490
+ /**
491
+ * Generate embedding for a single text string (e.g., search query)
492
+ */
493
+ async embedText(text) {
494
+ if (!this.client) {
495
+ throw new Error('OpenRouter client not available for embeddings');
496
+ }
497
+ return this.client.embed(text);
498
+ }
499
+ /**
500
+ * Set up file watcher for automatic re-indexing
501
+ */
502
+ setupFileWatcher(onChange) {
503
+ // Check if chokidar is available
504
+ let chokidar;
505
+ try {
506
+ chokidar = require('chokidar');
507
+ }
508
+ catch {
509
+ console.warn('chokidar not available. File watching disabled. Install with: npm install chokidar');
510
+ return () => { };
511
+ }
512
+ const watchPaths = [
513
+ path.join(this.projectRoot, 'src'),
514
+ path.join(this.projectRoot, 'lib'),
515
+ path.join(this.projectRoot, '.claude'),
516
+ path.join(this.projectRoot, 'CLAUDE.md'),
517
+ path.join(this.projectRoot, 'README.md'),
518
+ path.join(this.projectRoot, 'docs')
519
+ ];
520
+ const watcher = chokidar.watch(watchPaths, {
521
+ ignored: /node_modules|\.git|dist/,
522
+ persistent: true,
523
+ ignoreInitial: true
524
+ });
525
+ watcher.on('change', async (filePath) => {
526
+ await onChange(filePath);
527
+ });
528
+ return () => watcher.close();
529
+ }
530
+ }
531
+ /**
532
+ * Create an intelligent analyzer
533
+ */
534
+ export function createIntelligentAnalyzer(projectRoot) {
535
+ return new IntelligentAnalyzer(projectRoot);
536
+ }
537
+ //# sourceMappingURL=intelligent-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intelligent-analyzer.js","sourceRoot":"","sources":["../../src/analyzer/intelligent-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAoB,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACzG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAe,MAAM,iBAAiB,CAAC;AA+CzE;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,oBAAoB;IACpB,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,WAAW;IACX,WAAW;IACX,aAAa;IACb,aAAa;IACb,aAAa;IACb,UAAU;IACV,sBAAsB;IACtB,cAAc;IACd,mBAAmB;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,MAAM,GAA4B,IAAI,CAAC;IACvC,WAAW,CAAS;IAE5B,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,4CAA4C;QAC5C,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,0BAA0B;QACxB,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,GAAqB,EAAE,CAAC;QAEnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;YACpC,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,MAAM,EAAE,cAAc;YACtB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;gBACvD,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,KAAK,GAAqB,EAAE,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YAEvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAEtD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAEpC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,0BAA0B;wBAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;4BAClC,GAAG,EAAE,QAAQ;4BACb,KAAK,EAAE,IAAI;4BACX,QAAQ,EAAE,IAAI;yBACf,CAAC,CAAC;wBAEH,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;4BAChC,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;4BACxC,KAAK,CAAC,IAAI,CAAC;gCACT,IAAI,EAAE,QAAQ;gCACd,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;gCACvD,IAAI,EAAE,aAAa;gCACnB,IAAI;gCACJ,IAAI,EAAE,SAAS,CAAC,IAAI;6BACrB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,QAAQ;4BACd,YAAY,EAAE,OAAO;4BACrB,IAAI,EAAE,aAAa;4BACnB,IAAI;4BACJ,IAAI,EAAE,KAAK,CAAC,IAAI;yBACjB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,GAAqB,EAAE,CAAC;QAEnC,MAAM,YAAY,GAAG;YACnB,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;YAC5C,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW;YAC5C,SAAS,EAAE,SAAS,EAAE,UAAU;SACjC,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;gBACpC,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;oBACvD,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAgB,EAAE,WAAmB,KAAK;QAChE,IAAI,EAAE,GAAkB,IAAI,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC;gBAC1B,sCAAsC;gBACtC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACtC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC;YAC1D,CAAC;YACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;gBAAC,MAAM,CAAC;oBACP,iDAAiD;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,qBAAqB;QACrB,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvD,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,YAAY,EAAE;SACpB,CAAC,CAAC;QAEH,kDAAkD;QAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,WAAW,GAAmB;YAClC,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;YAC/C,SAAS,EAAE,EAAE;YACb,YAAY,EAAE;gBACZ,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,EAAE;gBACd,YAAY,EAAE,EAAE;aACjB;YACD,eAAe,EAAE;gBACf,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;gBAClC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC;aACjC;YACD,WAAW,EAAE;gBACX,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,EAAE;aACb;SACF,CAAC;QAEF,2DAA2D;QAC3D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;gBAC9F,OAAO;oBACL,GAAG,WAAW;oBACd,GAAG,iBAAiB;oBACpB,eAAe,EAAE,WAAW,CAAC,eAAe;iBAC7C,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAErG,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,SAA2B;QACtD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhC,wCAAwC;QACxC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1D,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,KAAK,CAAC;gBACX,KAAK,MAAM,CAAC;gBACZ,KAAK,MAAM;oBACT,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,KAAK,CAAC;gBACX,KAAK,MAAM;oBACT,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,KAAK;oBACR,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACxB,MAAM;gBACR,KAAK,KAAK;oBACR,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpB,MAAM;gBACR,KAAK,KAAK;oBACR,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACtB,MAAM;gBACR,KAAK,OAAO;oBACV,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACtB,MAAM;gBACR,KAAK,KAAK;oBACR,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpB,MAAM;gBACR,KAAK,KAAK;oBACR,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACtB,MAAM;gBACR,KAAK,MAAM;oBACT,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACrB,MAAM;YACV,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACpE,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1E,MAAM,IAAI,GAAG,EAAE,GAAG,WAAW,CAAC,YAAY,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;gBAE7E,IAAI,IAAI,CAAC,KAAK;oBAAE,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,GAAG;oBAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC;oBAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACrE,IAAI,IAAI,CAAC,OAAO;oBAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5C,IAAI,IAAI,CAAC,OAAO;oBAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5C,IAAI,IAAI,CAAC,IAAI;oBAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACzC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC;oBAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAEhE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QACpE,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACvE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAChC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YAClC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,0BAA0B,CACtC,IAAsB,EACtB,WAA6B,EAC7B,SAA2B;QAE3B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,qCAAqC;QACrC,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,2BAA2B;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACpC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/C,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/C,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CACjD,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEd,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE,CAAC;gBACZ,aAAa,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,OAAO,OAAO,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxD,IAAI,OAAO,EAAE,CAAC;gBACZ,aAAa,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,YAAY,OAAO,OAAO,EAAE,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACvC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACjC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;YAChC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/B,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CACnC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEd,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE,CAAC;gBACZ,aAAa,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,OAAO,OAAO,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,MAAM,cAAc,GAAG;;;EAGzB,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgClC,CAAC;QAEE,IAAI,QAAQ,GAAW,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAChC;oBACE,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,+LAA+L;iBACzM;gBACD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE;aAC1C,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE1C,kDAAkD;YAClD,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,mEAAmE;gBACnE,6CAA6C;gBAC7C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBAEtC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;wBAC9C,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;wBACrD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAC/D,wEAAwE;YACxE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ;oBAC1C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;oBACzB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;YAC3E,CAAC;YAAC,MAAM,CAAC;gBACP,0EAA0E;YAC5E,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,IAAsB,EACtB,WAA6B,EAC7B,SAA2B,EAC3B,SAAsC;QAEtC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,kBAAkB,SAAS,CAAC,MAAM,QAAQ,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,sBAAsB,WAAW,CAAC,MAAM,QAAQ,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAuB;QAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;QAE/C,qBAAqB;QACrB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;YAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtD,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,OAAO,OAAO,EAAE,CAAC,CAAC;oBACvD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAA6C;QAC5D,iCAAiC;QACjC,IAAI,QAAiB,CAAC;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;YACnG,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG;YACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;SACpC,CAAC;QAEF,MAAM,OAAO,GAAI,QAAgB,CAAC,KAAK,CAAC,UAAU,EAAE;YAClD,OAAO,EAAE,yBAAyB;YAClC,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;YAC9C,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,OAAO,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const cleanupCommand: Command;
3
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,cAAc,SAsBvB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Command } from 'commander';
2
+ import { CleanupAgent } from '../../agents/cleanup-agent.js';
3
+ export const cleanupCommand = new Command('cleanup')
4
+ .description('Clean up context folders from other AI tools')
5
+ .option('--dry-run', 'Show what would be removed')
6
+ .option('--keep <folders>', 'Folders to keep (comma-separated)')
7
+ .option('-v, --verbose', 'Show detailed output')
8
+ .action(async (options) => {
9
+ const agent = new CleanupAgent();
10
+ // Pass only the options that have values
11
+ const result = await agent.cleanup({
12
+ dryRun: !!options.dryRun,
13
+ keep: options.keep ? options.keep.split(',') : undefined,
14
+ verbose: !!options.verbose,
15
+ });
16
+ console.log(`\nCleanup complete:`);
17
+ console.log(` Scanned: ${result.scanned} tool folders`);
18
+ console.log(` Removed: ${result.removed.length}`);
19
+ console.log(` Kept: ${result.kept.length}`);
20
+ if (result.errors.length > 0) {
21
+ console.log(` Errors: ${result.errors.length}`);
22
+ }
23
+ });
24
+ //# sourceMappingURL=cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/cli/commands/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,WAAW,EAAE,4BAA4B,CAAC;KACjD,MAAM,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;KAC/D,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IACjC,yCAAyC;IACzC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QACxD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;KAC3B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Export Command
4
+ *
5
+ * Exports context database to various formats (JSON, markdown).
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare const exportCommand: Command;
9
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,aAAa,SAmEtB,CAAC"}