@kernel.chat/kbot 3.35.1 → 3.37.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 (40) hide show
  1. package/dist/codebase-guardian.d.ts +64 -0
  2. package/dist/codebase-guardian.d.ts.map +1 -0
  3. package/dist/codebase-guardian.js +486 -0
  4. package/dist/codebase-guardian.js.map +1 -0
  5. package/dist/collective-learning.d.ts +47 -0
  6. package/dist/collective-learning.d.ts.map +1 -0
  7. package/dist/collective-learning.js +315 -0
  8. package/dist/collective-learning.js.map +1 -0
  9. package/dist/community-manager.d.ts +60 -0
  10. package/dist/community-manager.d.ts.map +1 -0
  11. package/dist/community-manager.js +400 -0
  12. package/dist/community-manager.js.map +1 -0
  13. package/dist/dream-mode.d.ts +23 -0
  14. package/dist/dream-mode.d.ts.map +1 -0
  15. package/dist/dream-mode.js +352 -0
  16. package/dist/dream-mode.js.map +1 -0
  17. package/dist/forge-marketplace.d.ts +40 -0
  18. package/dist/forge-marketplace.d.ts.map +1 -0
  19. package/dist/forge-marketplace.js +222 -0
  20. package/dist/forge-marketplace.js.map +1 -0
  21. package/dist/kbot-service.d.ts +2 -0
  22. package/dist/kbot-service.d.ts.map +1 -0
  23. package/dist/kbot-service.js +197 -0
  24. package/dist/kbot-service.js.map +1 -0
  25. package/dist/meta-agent.d.ts +62 -0
  26. package/dist/meta-agent.d.ts.map +1 -0
  27. package/dist/meta-agent.js +288 -0
  28. package/dist/meta-agent.js.map +1 -0
  29. package/dist/tools/bootstrapper.d.ts +2 -0
  30. package/dist/tools/bootstrapper.d.ts.map +1 -0
  31. package/dist/tools/bootstrapper.js +559 -0
  32. package/dist/tools/bootstrapper.js.map +1 -0
  33. package/dist/tools/content-engine.d.ts +2 -0
  34. package/dist/tools/content-engine.d.ts.map +1 -0
  35. package/dist/tools/content-engine.js +362 -0
  36. package/dist/tools/content-engine.js.map +1 -0
  37. package/dist/tools/index.d.ts.map +1 -1
  38. package/dist/tools/index.js +2 -0
  39. package/dist/tools/index.js.map +1 -1
  40. package/package.json +1 -1
@@ -0,0 +1,559 @@
1
+ // kbot Project Bootstrapper Tools — Analyze and bootstrap any codebase.
2
+ // Clone repos, detect frameworks, identify key files, suggest agents and tools.
3
+ import { registerTool } from './index.js';
4
+ import { execSync } from 'node:child_process';
5
+ import { readFile, readdir, stat, mkdtemp, rm } from 'node:fs/promises';
6
+ import { tmpdir } from 'node:os';
7
+ import { join, extname, basename } from 'node:path';
8
+ const FRAMEWORK_SIGNATURES = [
9
+ {
10
+ name: 'Next.js',
11
+ files: ['next.config.js', 'next.config.mjs', 'next.config.ts'],
12
+ language: 'TypeScript/JavaScript',
13
+ agents: ['coder', 'infrastructure', 'aesthete'],
14
+ tools: ['nextjs_build', 'lighthouse_audit', 'route_analyzer'],
15
+ },
16
+ {
17
+ name: 'React (Vite)',
18
+ files: ['vite.config.ts', 'vite.config.js'],
19
+ devFiles: ['src/App.tsx', 'src/App.jsx', 'src/main.tsx'],
20
+ language: 'TypeScript/JavaScript',
21
+ agents: ['coder', 'aesthete', 'guardian'],
22
+ tools: ['vite_build', 'component_tree', 'bundle_analyzer'],
23
+ },
24
+ {
25
+ name: 'Express/Node.js',
26
+ files: ['app.js', 'server.js', 'src/server.ts', 'src/app.ts'],
27
+ language: 'TypeScript/JavaScript',
28
+ agents: ['coder', 'infrastructure', 'guardian'],
29
+ tools: ['api_tester', 'route_mapper', 'load_tester'],
30
+ },
31
+ {
32
+ name: 'Django',
33
+ files: ['manage.py', 'settings.py'],
34
+ devFiles: ['urls.py', 'wsgi.py'],
35
+ language: 'Python',
36
+ agents: ['coder', 'infrastructure', 'guardian'],
37
+ tools: ['django_manage', 'migration_checker', 'model_analyzer'],
38
+ },
39
+ {
40
+ name: 'Flask',
41
+ files: ['app.py', 'wsgi.py'],
42
+ devFiles: ['requirements.txt'],
43
+ language: 'Python',
44
+ agents: ['coder', 'infrastructure'],
45
+ tools: ['flask_routes', 'api_tester'],
46
+ },
47
+ {
48
+ name: 'FastAPI',
49
+ files: ['main.py'],
50
+ language: 'Python',
51
+ agents: ['coder', 'infrastructure', 'guardian'],
52
+ tools: ['openapi_validator', 'api_tester', 'async_profiler'],
53
+ },
54
+ {
55
+ name: 'Rust (Cargo)',
56
+ files: ['Cargo.toml'],
57
+ language: 'Rust',
58
+ agents: ['coder', 'guardian', 'analyst'],
59
+ tools: ['cargo_build', 'clippy_lint', 'unsafe_scanner'],
60
+ },
61
+ {
62
+ name: 'Go',
63
+ files: ['go.mod'],
64
+ language: 'Go',
65
+ agents: ['coder', 'infrastructure', 'guardian'],
66
+ tools: ['go_build', 'go_vet', 'goroutine_analyzer'],
67
+ },
68
+ {
69
+ name: 'Ruby on Rails',
70
+ files: ['Gemfile', 'config/routes.rb'],
71
+ language: 'Ruby',
72
+ agents: ['coder', 'infrastructure'],
73
+ tools: ['rails_console', 'migration_runner', 'route_mapper'],
74
+ },
75
+ {
76
+ name: 'Docker Compose',
77
+ files: ['docker-compose.yml', 'docker-compose.yaml', 'compose.yml'],
78
+ language: 'Multi',
79
+ agents: ['infrastructure', 'guardian'],
80
+ tools: ['docker_compose_up', 'container_health', 'network_mapper'],
81
+ },
82
+ {
83
+ name: 'Terraform',
84
+ files: ['main.tf', 'terraform.tf'],
85
+ language: 'HCL',
86
+ agents: ['infrastructure', 'guardian', 'analyst'],
87
+ tools: ['terraform_plan', 'drift_detector', 'cost_estimator'],
88
+ },
89
+ ];
90
+ /** File extensions and what they indicate */
91
+ const EXTENSION_CATEGORIES = {
92
+ '.ts': 'TypeScript',
93
+ '.tsx': 'React/TypeScript',
94
+ '.js': 'JavaScript',
95
+ '.jsx': 'React/JavaScript',
96
+ '.py': 'Python',
97
+ '.rs': 'Rust',
98
+ '.go': 'Go',
99
+ '.rb': 'Ruby',
100
+ '.java': 'Java',
101
+ '.kt': 'Kotlin',
102
+ '.swift': 'Swift',
103
+ '.c': 'C',
104
+ '.cpp': 'C++',
105
+ '.h': 'C/C++ Header',
106
+ '.cs': 'C#',
107
+ '.php': 'PHP',
108
+ '.vue': 'Vue.js',
109
+ '.svelte': 'Svelte',
110
+ '.sql': 'SQL',
111
+ '.tf': 'Terraform',
112
+ '.yaml': 'YAML',
113
+ '.yml': 'YAML',
114
+ '.toml': 'TOML',
115
+ '.json': 'JSON',
116
+ '.md': 'Markdown',
117
+ '.sh': 'Shell',
118
+ '.dockerfile': 'Docker',
119
+ };
120
+ /** Key files that are always worth noting */
121
+ const KEY_FILES = [
122
+ 'package.json',
123
+ 'tsconfig.json',
124
+ 'Cargo.toml',
125
+ 'go.mod',
126
+ 'requirements.txt',
127
+ 'pyproject.toml',
128
+ 'Gemfile',
129
+ 'Makefile',
130
+ 'Dockerfile',
131
+ 'docker-compose.yml',
132
+ 'docker-compose.yaml',
133
+ 'compose.yml',
134
+ '.github/workflows',
135
+ '.gitlab-ci.yml',
136
+ 'jest.config.ts',
137
+ 'jest.config.js',
138
+ 'vitest.config.ts',
139
+ 'vitest.config.js',
140
+ '.eslintrc.json',
141
+ '.eslintrc.js',
142
+ 'eslint.config.js',
143
+ '.prettierrc',
144
+ 'README.md',
145
+ 'CONTRIBUTING.md',
146
+ 'LICENSE',
147
+ '.env.example',
148
+ ];
149
+ /**
150
+ * Recursively walk a directory, collecting file info.
151
+ * Skips node_modules, .git, dist, build, __pycache__, .venv, target.
152
+ */
153
+ async function walkDir(dir, depth = 0, maxDepth = 6) {
154
+ const SKIP_DIRS = new Set([
155
+ 'node_modules', '.git', 'dist', 'build', '__pycache__',
156
+ '.venv', 'venv', 'target', '.next', '.nuxt', '.output',
157
+ 'vendor', 'coverage', '.cache', '.parcel-cache',
158
+ ]);
159
+ const result = { files: [], dirs: [] };
160
+ if (depth > maxDepth)
161
+ return result;
162
+ let entries;
163
+ try {
164
+ entries = await readdir(dir);
165
+ }
166
+ catch {
167
+ return result;
168
+ }
169
+ for (const entry of entries) {
170
+ if (entry.startsWith('.') && depth > 0)
171
+ continue;
172
+ const fullPath = join(dir, entry);
173
+ let info;
174
+ try {
175
+ info = await stat(fullPath);
176
+ }
177
+ catch {
178
+ continue;
179
+ }
180
+ if (info.isDirectory()) {
181
+ if (SKIP_DIRS.has(entry))
182
+ continue;
183
+ result.dirs.push(fullPath);
184
+ const sub = await walkDir(fullPath, depth + 1, maxDepth);
185
+ result.files.push(...sub.files);
186
+ result.dirs.push(...sub.dirs);
187
+ }
188
+ else if (info.isFile()) {
189
+ result.files.push(fullPath);
190
+ }
191
+ }
192
+ return result;
193
+ }
194
+ /** Detect frameworks from files present in the directory */
195
+ function detectFrameworks(fileNames) {
196
+ const detected = [];
197
+ for (const sig of FRAMEWORK_SIGNATURES) {
198
+ const hasMain = sig.files.some((f) => fileNames.has(f));
199
+ if (hasMain) {
200
+ detected.push(sig);
201
+ }
202
+ }
203
+ return detected;
204
+ }
205
+ /** Count files by language/extension */
206
+ function countLanguages(files) {
207
+ const counts = {};
208
+ for (const file of files) {
209
+ const ext = extname(file).toLowerCase();
210
+ const lang = EXTENSION_CATEGORIES[ext];
211
+ if (lang) {
212
+ counts[lang] = (counts[lang] || 0) + 1;
213
+ }
214
+ }
215
+ return counts;
216
+ }
217
+ /** Get top-level structure for display */
218
+ async function getTopLevelStructure(dir) {
219
+ const structure = [];
220
+ try {
221
+ const entries = await readdir(dir);
222
+ for (const entry of entries.sort()) {
223
+ if (entry.startsWith('.') && entry !== '.github')
224
+ continue;
225
+ const fullPath = join(dir, entry);
226
+ try {
227
+ const info = await stat(fullPath);
228
+ structure.push(info.isDirectory() ? ` ${entry}/` : ` ${entry}`);
229
+ }
230
+ catch {
231
+ structure.push(` ${entry}`);
232
+ }
233
+ }
234
+ }
235
+ catch {
236
+ structure.push(' (could not read directory)');
237
+ }
238
+ return structure;
239
+ }
240
+ /** Analyze a local directory */
241
+ async function analyzeDirectory(dir) {
242
+ const { files, dirs } = await walkDir(dir);
243
+ // Collect relative file names for framework detection
244
+ const relativeNames = new Set(files.map((f) => f.slice(dir.length + 1)));
245
+ // Also check basenames for simpler detection
246
+ for (const f of files) {
247
+ relativeNames.add(basename(f));
248
+ }
249
+ const frameworks = detectFrameworks(relativeNames);
250
+ const languages = countLanguages(files);
251
+ const structure = await getTopLevelStructure(dir);
252
+ // Find key files present
253
+ const keyFilesFound = [];
254
+ for (const kf of KEY_FILES) {
255
+ if (relativeNames.has(kf)) {
256
+ keyFilesFound.push(kf);
257
+ }
258
+ }
259
+ // Aggregate suggested agents and tools from detected frameworks
260
+ const agentSet = new Set();
261
+ const toolSet = new Set();
262
+ for (const fw of frameworks) {
263
+ for (const a of fw.agents)
264
+ agentSet.add(a);
265
+ for (const t of fw.tools)
266
+ toolSet.add(t);
267
+ }
268
+ // Add agents based on language mix
269
+ if (Object.keys(languages).length > 3)
270
+ agentSet.add('analyst');
271
+ if (relativeNames.has('Dockerfile') || relativeNames.has('docker-compose.yml')) {
272
+ agentSet.add('infrastructure');
273
+ }
274
+ if (relativeNames.has('.github/workflows') || relativeNames.has('.gitlab-ci.yml')) {
275
+ agentSet.add('infrastructure');
276
+ toolSet.add('ci_monitor');
277
+ }
278
+ if (files.length > 500) {
279
+ agentSet.add('curator');
280
+ toolSet.add('codebase_navigator');
281
+ }
282
+ // Generate recommendations
283
+ const recommendations = [];
284
+ if (!relativeNames.has('README.md') && !relativeNames.has('readme.md')) {
285
+ recommendations.push('Missing README.md — consider adding project documentation');
286
+ }
287
+ if (!relativeNames.has('LICENSE') && !relativeNames.has('license')) {
288
+ recommendations.push('No LICENSE file — add one if this is open source');
289
+ }
290
+ if (!relativeNames.has('.gitignore')) {
291
+ recommendations.push('No .gitignore — risk of committing build artifacts or secrets');
292
+ }
293
+ const hasTests = files.some((f) => f.includes('.test.') || f.includes('.spec.') || f.includes('__tests__'));
294
+ if (!hasTests) {
295
+ recommendations.push('No test files detected — consider adding a test suite');
296
+ toolSet.add('test_scaffolder');
297
+ }
298
+ const hasCI = relativeNames.has('.github/workflows') || relativeNames.has('.gitlab-ci.yml');
299
+ if (!hasCI) {
300
+ recommendations.push('No CI/CD configuration detected — consider adding automated pipelines');
301
+ toolSet.add('ci_generator');
302
+ }
303
+ if (relativeNames.has('.env') || relativeNames.has('.env.local')) {
304
+ recommendations.push('Found .env file — ensure it is in .gitignore and not committed');
305
+ agentSet.add('guardian');
306
+ }
307
+ const sortedLanguages = {};
308
+ const sorted = Object.entries(languages).sort((a, b) => b[1] - a[1]);
309
+ for (const [lang, count] of sorted) {
310
+ sortedLanguages[lang] = count;
311
+ }
312
+ return {
313
+ directory: dir,
314
+ totalFiles: files.length,
315
+ totalDirs: dirs.length,
316
+ languages: sortedLanguages,
317
+ frameworks: frameworks.map((f) => f.name),
318
+ keyFiles: keyFilesFound,
319
+ suggestedAgents: Array.from(agentSet),
320
+ suggestedTools: Array.from(toolSet),
321
+ structure,
322
+ recommendations,
323
+ };
324
+ }
325
+ /** Format analysis result as a readable report */
326
+ function formatAnalysisReport(result) {
327
+ const parts = [
328
+ `# Project Analysis Report`,
329
+ `**Directory:** ${result.directory}`,
330
+ '',
331
+ `## Overview`,
332
+ `- **Files:** ${result.totalFiles}`,
333
+ `- **Directories:** ${result.totalDirs}`,
334
+ `- **Frameworks:** ${result.frameworks.length > 0 ? result.frameworks.join(', ') : 'None detected'}`,
335
+ '',
336
+ ];
337
+ // Languages
338
+ if (Object.keys(result.languages).length > 0) {
339
+ parts.push(`## Languages`);
340
+ for (const [lang, count] of Object.entries(result.languages)) {
341
+ const bar = '#'.repeat(Math.min(Math.ceil(count / 5), 30));
342
+ parts.push(`- **${lang}**: ${count} files ${bar}`);
343
+ }
344
+ parts.push('');
345
+ }
346
+ // Structure
347
+ if (result.structure.length > 0) {
348
+ parts.push(`## Project Structure`);
349
+ parts.push('```');
350
+ parts.push(...result.structure);
351
+ parts.push('```');
352
+ parts.push('');
353
+ }
354
+ // Key files
355
+ if (result.keyFiles.length > 0) {
356
+ parts.push(`## Key Files Found`);
357
+ for (const kf of result.keyFiles) {
358
+ parts.push(`- \`${kf}\``);
359
+ }
360
+ parts.push('');
361
+ }
362
+ // Suggested agents
363
+ if (result.suggestedAgents.length > 0) {
364
+ parts.push(`## Suggested Agents`);
365
+ parts.push('These kbot specialist agents are recommended for this project:');
366
+ parts.push('');
367
+ for (const agent of result.suggestedAgents) {
368
+ parts.push(`- **${agent}**`);
369
+ }
370
+ parts.push('');
371
+ }
372
+ // Suggested tools
373
+ if (result.suggestedTools.length > 0) {
374
+ parts.push(`## Suggested Tools to Forge`);
375
+ parts.push('Consider creating these tools with `forge_tool`:');
376
+ parts.push('');
377
+ for (const tool of result.suggestedTools) {
378
+ parts.push(`- \`${tool}\``);
379
+ }
380
+ parts.push('');
381
+ }
382
+ // Recommendations
383
+ if (result.recommendations.length > 0) {
384
+ parts.push(`## Recommendations`);
385
+ for (const rec of result.recommendations) {
386
+ parts.push(`- ${rec}`);
387
+ }
388
+ parts.push('');
389
+ }
390
+ return parts.join('\n');
391
+ }
392
+ /** Extract owner/repo from a GitHub URL */
393
+ function parseGitHubUrl(url) {
394
+ // Handle: https://github.com/owner/repo, git@github.com:owner/repo.git, etc.
395
+ const httpsMatch = url.match(/github\.com\/([^/]+)\/([^/.]+)/);
396
+ if (httpsMatch)
397
+ return { owner: httpsMatch[1], repo: httpsMatch[2] };
398
+ const sshMatch = url.match(/github\.com:([^/]+)\/([^/.]+)/);
399
+ if (sshMatch)
400
+ return { owner: sshMatch[1], repo: sshMatch[2] };
401
+ return null;
402
+ }
403
+ export function registerBootstrapperTools() {
404
+ registerTool({
405
+ name: 'bootstrap_repo',
406
+ description: 'Clone a GitHub repository to a temp directory, analyze its structure, detect frameworks, ' +
407
+ 'identify key files, suggest specialist agents and tools. Returns a full project bootstrapping report.',
408
+ parameters: {
409
+ repo: {
410
+ type: 'string',
411
+ description: 'GitHub repo URL (e.g. "https://github.com/owner/repo") or "owner/repo" shorthand',
412
+ required: true,
413
+ },
414
+ },
415
+ tier: 'free',
416
+ timeout: 120_000, // 2 min for clone + analysis
417
+ async execute(args) {
418
+ const repoArg = String(args.repo);
419
+ // Normalize to full URL
420
+ let cloneUrl;
421
+ let repoSlug;
422
+ if (repoArg.startsWith('http') || repoArg.startsWith('git@')) {
423
+ cloneUrl = repoArg.endsWith('.git') ? repoArg : `${repoArg}.git`;
424
+ const parsed = parseGitHubUrl(repoArg);
425
+ repoSlug = parsed ? `${parsed.owner}/${parsed.repo}` : repoArg;
426
+ }
427
+ else if (repoArg.includes('/')) {
428
+ cloneUrl = `https://github.com/${repoArg}.git`;
429
+ repoSlug = repoArg;
430
+ }
431
+ else {
432
+ return `Invalid repo format. Use "owner/repo" or a full GitHub URL.`;
433
+ }
434
+ // Create temp directory
435
+ let tmpDir;
436
+ try {
437
+ tmpDir = await mkdtemp(join(tmpdir(), 'kbot-bootstrap-'));
438
+ }
439
+ catch (err) {
440
+ return `Failed to create temp directory: ${err instanceof Error ? err.message : String(err)}`;
441
+ }
442
+ const parts = [];
443
+ // Clone the repo (shallow for speed)
444
+ try {
445
+ execSync(`git clone --depth 1 "${cloneUrl}" "${tmpDir}/repo"`, {
446
+ timeout: 60_000,
447
+ stdio: 'pipe',
448
+ });
449
+ }
450
+ catch (err) {
451
+ // Cleanup on failure
452
+ try {
453
+ await rm(tmpDir, { recursive: true, force: true });
454
+ }
455
+ catch { /* ignore */ }
456
+ const msg = err instanceof Error ? err.message : String(err);
457
+ return `Failed to clone ${repoSlug}:\n${msg}\n\nCheck the URL and ensure the repo is public.`;
458
+ }
459
+ const repoDir = join(tmpDir, 'repo');
460
+ // Fetch repo metadata from GitHub API
461
+ const parsed = parseGitHubUrl(cloneUrl) || { owner: repoSlug.split('/')[0], repo: repoSlug.split('/')[1] };
462
+ try {
463
+ const res = await fetch(`https://api.github.com/repos/${parsed.owner}/${parsed.repo}`, {
464
+ headers: { 'User-Agent': 'KBot/3.0 (Bootstrapper)', Accept: 'application/vnd.github.v3+json' },
465
+ });
466
+ if (res.ok) {
467
+ const data = await res.json();
468
+ parts.push(`# Bootstrap Report: ${repoSlug}`);
469
+ parts.push('');
470
+ parts.push(`**Description:** ${data.description || 'No description'}`);
471
+ parts.push(`**Stars:** ${data.stargazers_count} | **Forks:** ${data.forks_count} | **Issues:** ${data.open_issues_count}`);
472
+ parts.push(`**Language:** ${data.language || 'Unknown'} | **License:** ${(data.license?.spdx_id) || 'None'}`);
473
+ parts.push('');
474
+ }
475
+ }
476
+ catch {
477
+ parts.push(`# Bootstrap Report: ${repoSlug}`);
478
+ parts.push('');
479
+ }
480
+ // Read package.json if present for additional info
481
+ try {
482
+ const pkgRaw = await readFile(join(repoDir, 'package.json'), 'utf-8');
483
+ const pkg = JSON.parse(pkgRaw);
484
+ const deps = Object.keys(pkg.dependencies || {});
485
+ const devDeps = Object.keys(pkg.devDependencies || {});
486
+ parts.push(`## package.json`);
487
+ parts.push(`- **Name:** ${pkg.name || 'unnamed'}`);
488
+ parts.push(`- **Version:** ${pkg.version || 'unknown'}`);
489
+ parts.push(`- **Dependencies:** ${deps.length} (${deps.slice(0, 10).join(', ')}${deps.length > 10 ? '...' : ''})`);
490
+ parts.push(`- **Dev Dependencies:** ${devDeps.length} (${devDeps.slice(0, 10).join(', ')}${devDeps.length > 10 ? '...' : ''})`);
491
+ parts.push('');
492
+ }
493
+ catch {
494
+ // No package.json — not a Node project
495
+ }
496
+ // Full analysis
497
+ const analysis = await analyzeDirectory(repoDir);
498
+ // Override directory display with the repo slug
499
+ analysis.directory = repoSlug;
500
+ parts.push(formatAnalysisReport(analysis));
501
+ // Custom agent suggestions
502
+ parts.push(`## Custom Agent Configuration`);
503
+ parts.push('Recommended `.kbot/agents.json` for this project:');
504
+ parts.push('');
505
+ parts.push('```json');
506
+ const agentConfig = analysis.suggestedAgents.map((a) => ({
507
+ id: a,
508
+ active: true,
509
+ priority: a === 'coder' ? 'high' : 'normal',
510
+ }));
511
+ parts.push(JSON.stringify({ agents: agentConfig }, null, 2));
512
+ parts.push('```');
513
+ parts.push('');
514
+ // Cleanup temp dir
515
+ try {
516
+ await rm(tmpDir, { recursive: true, force: true });
517
+ }
518
+ catch {
519
+ parts.push(`(Note: temp dir ${tmpDir} may need manual cleanup)`);
520
+ }
521
+ return parts.join('\n');
522
+ },
523
+ });
524
+ registerTool({
525
+ name: 'bootstrap_analyze',
526
+ description: 'Analyze a local directory structure. Detects frameworks, counts files by language, ' +
527
+ 'finds key configuration files, suggests specialist agents and tools to forge. ' +
528
+ 'Returns actionable recommendations for the project.',
529
+ parameters: {
530
+ directory: {
531
+ type: 'string',
532
+ description: 'Absolute path to the local directory to analyze',
533
+ required: true,
534
+ },
535
+ },
536
+ tier: 'free',
537
+ async execute(args) {
538
+ const dir = String(args.directory);
539
+ // Verify directory exists
540
+ try {
541
+ const info = await stat(dir);
542
+ if (!info.isDirectory()) {
543
+ return `"${dir}" is not a directory.`;
544
+ }
545
+ }
546
+ catch {
547
+ return `Directory not found: ${dir}`;
548
+ }
549
+ try {
550
+ const analysis = await analyzeDirectory(dir);
551
+ return formatAnalysisReport(analysis);
552
+ }
553
+ catch (err) {
554
+ return `Analysis failed: ${err instanceof Error ? err.message : String(err)}`;
555
+ }
556
+ },
557
+ });
558
+ }
559
+ //# sourceMappingURL=bootstrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapper.js","sourceRoot":"","sources":["../../src/tools/bootstrapper.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAYnD,MAAM,oBAAoB,GAAyB;IACjD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;QAC9D,QAAQ,EAAE,uBAAuB;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC;QAC/C,KAAK,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;KAC9D;IACD;QACE,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;QAC3C,QAAQ,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC;QACxD,QAAQ,EAAE,uBAAuB;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;QACzC,KAAK,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;KAC3D;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,CAAC;QAC7D,QAAQ,EAAE,uBAAuB;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC;QAC/C,KAAK,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC;KACrD;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;QACnC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAChC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC;QAC/C,KAAK,EAAE,CAAC,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;KAChE;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;QAC5B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;QAC9B,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACnC,KAAK,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC;KACtC;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,SAAS,CAAC;QAClB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC;QAC/C,KAAK,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,CAAC;KAC7D;IACD;QACE,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,CAAC,YAAY,CAAC;QACrB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;QACxC,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC;QAC/C,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,oBAAoB,CAAC;KACpD;IACD;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC;QACtC,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACnC,KAAK,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,cAAc,CAAC;KAC7D;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,CAAC;QACnE,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC;QACtC,KAAK,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;KACnE;IACD;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;QAClC,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,SAAS,CAAC;QACjD,KAAK,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;KAC9D;CACF,CAAA;AAED,6CAA6C;AAC7C,MAAM,oBAAoB,GAA2B;IACnD,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,QAAQ;CACxB,CAAA;AAED,6CAA6C;AAC7C,MAAM,SAAS,GAAG;IAChB,cAAc;IACd,eAAe;IACf,YAAY;IACZ,QAAQ;IACR,kBAAkB;IAClB,gBAAgB;IAChB,SAAS;IACT,UAAU;IACV,YAAY;IACZ,oBAAoB;IACpB,qBAAqB;IACrB,aAAa;IACb,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,SAAS;IACT,cAAc;CACf,CAAA;AAeD;;;GAGG;AACH,KAAK,UAAU,OAAO,CACpB,GAAW,EACX,QAAgB,CAAC,EACjB,WAAmB,CAAC;IAEpB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;QACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS;QACtD,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe;KAChD,CAAC,CAAA;IAEF,MAAM,MAAM,GAAwC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IAE3E,IAAI,KAAK,GAAG,QAAQ;QAAE,OAAO,MAAM,CAAA;IAEnC,IAAI,OAAiB,CAAA;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,SAAQ;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAEjC,IAAI,IAAI,CAAA;QACR,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAQ;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC1B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAA;YACxD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;YAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/B,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,4DAA4D;AAC5D,SAAS,gBAAgB,CAAC,SAAsB;IAC9C,MAAM,QAAQ,GAAyB,EAAE,CAAA;IACzC,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACvD,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,wCAAwC;AACxC,SAAS,cAAc,CAAC,KAAe;IACrC,MAAM,MAAM,GAA2B,EAAE,CAAA;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QACvC,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,0CAA0C;AAC1C,KAAK,UAAU,oBAAoB,CAAC,GAAW;IAC7C,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;QAClC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAQ;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACjC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACjC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,gCAAgC;AAChC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IACzC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IAE1C,sDAAsD;IACtD,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAC1C,CAAA;IAED,6CAA6C;IAC7C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAClD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAA;IAEjD,yBAAyB;IACzB,MAAM,aAAa,GAAa,EAAE,CAAA;IAClC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,mCAAmC;IACnC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC9D,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC/E,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAChC,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClF,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC3B,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACvB,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACvB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;IAED,2BAA2B;IAC3B,MAAM,eAAe,GAAa,EAAE,CAAA;IAEpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,eAAe,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;IACnF,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACnE,eAAe,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;IAC1E,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACrC,eAAe,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;IACvF,CAAC;IAED,MAAM,QAAQ,GACZ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;IAC5F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,eAAe,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;QAC7E,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,KAAK,GACT,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC/E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,eAAe,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAA;QAC7F,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACjE,eAAe,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;QACtF,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,eAAe,GAA2B,EAAE,CAAA;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACpE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;IAC/B,CAAC;IAED,OAAO;QACL,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,SAAS,EAAE,IAAI,CAAC,MAAM;QACtB,SAAS,EAAE,eAAe;QAC1B,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,QAAQ,EAAE,aAAa;QACvB,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,SAAS;QACT,eAAe;KAChB,CAAA;AACH,CAAC;AAED,kDAAkD;AAClD,SAAS,oBAAoB,CAAC,MAAsB;IAClD,MAAM,KAAK,GAAa;QACtB,2BAA2B;QAC3B,kBAAkB,MAAM,CAAC,SAAS,EAAE;QACpC,EAAE;QACF,aAAa;QACb,gBAAgB,MAAM,CAAC,UAAU,EAAE;QACnC,sBAAsB,MAAM,CAAC,SAAS,EAAE;QACxC,qBAAqB,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE;QACpG,EAAE;KACH,CAAA;IAED,YAAY;IACZ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YAC1D,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,UAAU,GAAG,EAAE,CAAC,CAAA;QACpD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,YAAY;IACZ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,YAAY;IACZ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAChC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QACjC,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;QAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAA;QAC9B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;QAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAA;QAC7B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAA;QACxB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,2CAA2C;AAC3C,SAAS,cAAc,CAAC,GAAW;IACjC,6EAA6E;IAC7E,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;IAC9D,IAAI,UAAU;QAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;IAEpE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAC3D,IAAI,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAE9D,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,YAAY,CAAC;QACX,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,2FAA2F;YAC3F,uGAAuG;QACzG,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,kFAAkF;gBACpF,QAAQ,EAAE,IAAI;aACf;SACF;QACD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO,EAAE,6BAA6B;QAC/C,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEjC,wBAAwB;YACxB,IAAI,QAAgB,CAAA;YACpB,IAAI,QAAgB,CAAA;YAEpB,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7D,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,CAAA;gBAChE,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;gBACtC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;YAChE,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,QAAQ,GAAG,sBAAsB,OAAO,MAAM,CAAA;gBAC9C,QAAQ,GAAG,OAAO,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,OAAO,6DAA6D,CAAA;YACtE,CAAC;YAED,wBAAwB;YACxB,IAAI,MAAc,CAAA;YAClB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAA;YAC3D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;YAC/F,CAAC;YAED,MAAM,KAAK,GAAa,EAAE,CAAA;YAE1B,qCAAqC;YACrC,IAAI,CAAC;gBACH,QAAQ,CAAC,wBAAwB,QAAQ,MAAM,MAAM,QAAQ,EAAE;oBAC7D,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,MAAM;iBACd,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,qBAAqB;gBACrB,IAAI,CAAC;oBAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBACjF,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC5D,OAAO,mBAAmB,QAAQ,MAAM,GAAG,kDAAkD,CAAA;YAC/F,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAEpC,sCAAsC;YACtC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAC1G,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gCAAgC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE;oBACrF,OAAO,EAAE,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,EAAE,gCAAgC,EAAE;iBAC/F,CAAC,CAAA;gBACF,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACX,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAA;oBACxD,KAAK,CAAC,IAAI,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAA;oBAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBACd,KAAK,CAAC,IAAI,CAAC,oBAAqB,IAAI,CAAC,WAAsB,IAAI,gBAAgB,EAAE,CAAC,CAAA;oBAClF,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,iBAAiB,IAAI,CAAC,WAAW,kBAAkB,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;oBAC1H,KAAK,CAAC,IAAI,CAAC,iBAAkB,IAAI,CAAC,QAAmB,IAAI,SAAS,mBAAmB,CAAE,IAAI,CAAC,OAAkC,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC,CAAA;oBACrJ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,IAAI,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAA;gBAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAChB,CAAC;YAED,mDAAmD;YACnD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAA;gBACrE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAA;gBACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAE,GAAG,CAAC,YAAuC,IAAI,EAAE,CAAC,CAAA;gBAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAE,GAAG,CAAC,eAA0C,IAAI,EAAE,CAAC,CAAA;gBAClF,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBAC7B,KAAK,CAAC,IAAI,CAAC,eAAgB,GAAG,CAAC,IAAe,IAAI,SAAS,EAAE,CAAC,CAAA;gBAC9D,KAAK,CAAC,IAAI,CAAC,kBAAmB,GAAG,CAAC,OAAkB,IAAI,SAAS,EAAE,CAAC,CAAA;gBACpE,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBAClH,KAAK,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBAC/H,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,uCAAuC;YACzC,CAAC;YAED,gBAAgB;YAChB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAChD,gDAAgD;YAChD,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAA;YAC7B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAA;YAE1C,2BAA2B;YAC3B,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;YAC3C,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;YAC/D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACd,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrB,MAAM,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvD,EAAE,EAAE,CAAC;gBACL,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;aAC5C,CAAC,CAAC,CAAA;YACH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAEd,mBAAmB;YACnB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,2BAA2B,CAAC,CAAA;YAClE,CAAC;YAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;KACF,CAAC,CAAA;IAEF,YAAY,CAAC;QACX,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,qFAAqF;YACrF,gFAAgF;YAChF,qDAAqD;QACvD,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iDAAiD;gBAC9D,QAAQ,EAAE,IAAI;aACf;SACF;QACD,IAAI,EAAE,MAAM;QACZ,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAElC,0BAA0B;YAC1B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,OAAO,IAAI,GAAG,uBAAuB,CAAA;gBACvC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,wBAAwB,GAAG,EAAE,CAAA;YACtC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAA;gBAC5C,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YACvC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;YAC/E,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function registerContentEngineTools(): void;
2
+ //# sourceMappingURL=content-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-engine.d.ts","sourceRoot":"","sources":["../../src/tools/content-engine.ts"],"names":[],"mappings":"AAiIA,wBAAgB,0BAA0B,IAAI,IAAI,CAySjD"}