skannr 0.1.1 → 0.1.2

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 (103) hide show
  1. package/README.md +45 -3
  2. package/dist/agent-cli.js +28 -14
  3. package/dist/agent-cli.js.map +1 -1
  4. package/dist/cache.js +1 -1
  5. package/dist/cache.js.map +1 -1
  6. package/dist/cli.js +264 -157
  7. package/dist/cli.js.map +1 -1
  8. package/dist/formatter.d.ts +10 -0
  9. package/dist/formatter.d.ts.map +1 -0
  10. package/dist/formatter.js +83 -0
  11. package/dist/formatter.js.map +1 -0
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +7 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/languages/GenericAdapter.d.ts +2 -2
  17. package/dist/languages/GenericAdapter.d.ts.map +1 -1
  18. package/dist/languages/GenericAdapter.js +2 -2
  19. package/dist/languages/GenericAdapter.js.map +1 -1
  20. package/dist/languages/LanguageAdapter.d.ts +6 -1
  21. package/dist/languages/LanguageAdapter.d.ts.map +1 -1
  22. package/dist/languages/PythonAdapter.d.ts +2 -2
  23. package/dist/languages/PythonAdapter.d.ts.map +1 -1
  24. package/dist/languages/PythonAdapter.js +245 -45
  25. package/dist/languages/PythonAdapter.js.map +1 -1
  26. package/dist/languages/TypeScriptAdapter.d.ts +5 -2
  27. package/dist/languages/TypeScriptAdapter.d.ts.map +1 -1
  28. package/dist/languages/TypeScriptAdapter.js +79 -23
  29. package/dist/languages/TypeScriptAdapter.js.map +1 -1
  30. package/dist/mapper.d.ts +2 -0
  31. package/dist/mapper.d.ts.map +1 -1
  32. package/dist/mapper.js +7 -1
  33. package/dist/mapper.js.map +1 -1
  34. package/dist/mcp-cli.d.ts +3 -0
  35. package/dist/mcp-cli.d.ts.map +1 -0
  36. package/dist/mcp-cli.js +9 -0
  37. package/dist/mcp-cli.js.map +1 -0
  38. package/dist/mcp-server.d.ts +5 -0
  39. package/dist/mcp-server.d.ts.map +1 -0
  40. package/dist/mcp-server.js +90 -0
  41. package/dist/mcp-server.js.map +1 -0
  42. package/dist/ranker-enhanced.d.ts.map +1 -1
  43. package/dist/ranker-enhanced.js +38 -1
  44. package/dist/ranker-enhanced.js.map +1 -1
  45. package/dist/ranker.d.ts.map +1 -1
  46. package/dist/ranker.js +12 -0
  47. package/dist/ranker.js.map +1 -1
  48. package/dist/scanner.d.ts.map +1 -1
  49. package/dist/scanner.js +41 -18
  50. package/dist/scanner.js.map +1 -1
  51. package/dist/skeletonizer.d.ts +2 -1
  52. package/dist/skeletonizer.d.ts.map +1 -1
  53. package/dist/skeletonizer.js +5 -3
  54. package/dist/skeletonizer.js.map +1 -1
  55. package/dist/telemetry.d.ts +17 -0
  56. package/dist/telemetry.d.ts.map +1 -0
  57. package/dist/telemetry.js +162 -0
  58. package/dist/telemetry.js.map +1 -0
  59. package/dist/types.d.ts +20 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/watcher.d.ts +9 -0
  62. package/dist/watcher.d.ts.map +1 -0
  63. package/dist/watcher.js +140 -0
  64. package/dist/watcher.js.map +1 -0
  65. package/dist/why.d.ts +16 -0
  66. package/dist/why.d.ts.map +1 -0
  67. package/dist/why.js +65 -0
  68. package/dist/why.js.map +1 -0
  69. package/gemini-extension/src/server.ts +7 -1
  70. package/package.json +9 -2
  71. package/src/agent-cli.ts +28 -14
  72. package/src/cache.ts +1 -1
  73. package/src/cli.ts +361 -169
  74. package/src/formatter.ts +105 -0
  75. package/src/index.ts +9 -1
  76. package/src/languages/GenericAdapter.ts +3 -3
  77. package/src/languages/LanguageAdapter.ts +8 -1
  78. package/src/languages/PythonAdapter.ts +261 -50
  79. package/src/languages/TypeScriptAdapter.ts +140 -25
  80. package/src/mapper.ts +9 -2
  81. package/src/mcp-cli.ts +8 -0
  82. package/src/mcp-server.ts +103 -0
  83. package/src/ranker-enhanced.ts +55 -1
  84. package/src/ranker.ts +18 -0
  85. package/src/scanner.ts +44 -19
  86. package/src/skeletonizer.ts +9 -3
  87. package/src/telemetry.ts +146 -0
  88. package/src/types.ts +21 -0
  89. package/src/watcher.ts +119 -0
  90. package/src/why.ts +88 -0
  91. package/tests/python-adapter.test.ts +31 -0
  92. package/tests/ranker-enhanced.test.ts +2 -0
  93. package/tests/ranker.test.ts +4 -0
  94. package/tests/scanner.scope.test.ts +26 -0
  95. package/tests/skeletonizer.test.ts +16 -9
  96. package/uca-landing/src/components/AgentMode.jsx +1 -1
  97. package/uca-landing/src/components/CliReference.jsx +19 -10
  98. package/uca-landing/src/components/Features.jsx +20 -1
  99. package/uca-landing/src/components/Hero.jsx +5 -4
  100. package/uca-landing/src/components/HowItWorks.jsx +1 -1
  101. package/uca-landing/src/components/Install.jsx +15 -2
  102. package/uca-landing/src/components/Navbar.jsx +1 -1
  103. package/uca-landing/vercel.json +4 -0
package/dist/cli.js CHANGED
@@ -37,150 +37,196 @@ var __importStar = (this && this.__importStar) || (function () {
37
37
  };
38
38
  })();
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
- const index_1 = require("./index");
40
+ const commander_1 = require("commander");
41
+ const fs = __importStar(require("fs"));
41
42
  const path = __importStar(require("path"));
43
+ const index_1 = require("./index");
44
+ const formatter_1 = require("./formatter");
42
45
  const config_1 = require("./config");
43
46
  const scanner_1 = require("./scanner");
44
- /**
45
- * Parse command line arguments
46
- */
47
- function parseArgs() {
48
- const args = process.argv.slice(2);
49
- let root = process.cwd();
50
- let question = '';
51
- let limit = 10;
52
- let limitProvided = false;
53
- let generateMapping = false;
54
- let mappingOutputPath;
55
- let moduleKeys;
56
- let lang = 'auto';
57
- let skipCache = false;
58
- let cacheCommand;
59
- for (let i = 0; i < args.length; i++) {
60
- const arg = args[i];
61
- if (arg === '--root' && i + 1 < args.length) {
62
- root = args[i + 1];
63
- i++;
64
- }
65
- else if (arg === '--question' && i + 1 < args.length) {
66
- question = args[i + 1];
67
- i++;
68
- }
69
- else if (arg === '--limit' && i + 1 < args.length) {
70
- limit = parseInt(args[i + 1], 10);
71
- if (isNaN(limit) || limit < 1) {
72
- console.error('Error: --limit must be a positive number');
73
- return null;
74
- }
75
- limitProvided = true;
76
- i++;
77
- }
78
- else if (arg === '--with-mapping') {
79
- generateMapping = true;
80
- }
81
- else if (arg === '--mapping-output' && i + 1 < args.length) {
82
- mappingOutputPath = args[i + 1];
83
- generateMapping = true; // Implies mapping generation
84
- i++;
85
- }
86
- else if (arg === '--modules' && i + 1 < args.length) {
87
- moduleKeys = args[i + 1].split(',').map(k => k.trim());
88
- i++;
89
- }
90
- else if (arg === '--lang' && i + 1 < args.length) {
91
- const langArg = args[i + 1].toLowerCase();
92
- if (langArg !== 'typescript' && langArg !== 'javascript' && langArg !== 'python' && langArg !== 'auto') {
93
- console.error('Error: --lang must be one of: typescript, javascript, python, auto');
94
- return null;
95
- }
96
- lang = langArg;
97
- i++;
98
- }
99
- else if (arg === '--skip-cache') {
100
- skipCache = true;
101
- }
102
- else if (arg === '--cache-clear') {
103
- cacheCommand = 'clear';
104
- }
105
- else if (arg === '--cache-stats') {
106
- cacheCommand = 'stats';
107
- }
108
- else if (arg === '--help' || arg === '-h') {
109
- printHelp();
110
- return null;
111
- }
112
- else {
113
- console.error(`Unknown argument: ${arg}`);
114
- printHelp();
115
- return null;
116
- }
47
+ const registry_1 = require("./languages/registry");
48
+ const telemetry_1 = require("./telemetry");
49
+ const VERSION = '0.1.1';
50
+ const VALID_LANGS = ['typescript', 'javascript', 'python', 'auto'];
51
+ function resolveExtensionsForLanguage(lang) {
52
+ switch (lang) {
53
+ case 'typescript':
54
+ case 'javascript':
55
+ return ['.ts', '.tsx', '.js', '.jsx'];
56
+ case 'python':
57
+ return ['.py', '.pyi'];
58
+ case 'auto':
59
+ default:
60
+ return undefined;
117
61
  }
118
- // Handle cache commands
119
- if (cacheCommand) {
120
- return { root, question: '', limit, limitProvided, generateMapping, moduleKeys, lang, cacheCommand };
62
+ }
63
+ function printNoFilesError() {
64
+ console.error([
65
+ '',
66
+ ' ✗ No files found to analyze.',
67
+ '',
68
+ ' Possible causes:',
69
+ ' · --root points to an empty or non-existent directory',
70
+ ' · All files are excluded by .gitignore or default excludes',
71
+ ' · --lang filter is too restrictive for this repo',
72
+ '',
73
+ ' Try: skannr --question "..." --root /path/to/repo',
74
+ ' skannr --question "..." --root . --lang auto',
75
+ '',
76
+ ].join('\n'));
77
+ }
78
+ function assertRootExists(absoluteRoot) {
79
+ if (!fs.existsSync(absoluteRoot)) {
80
+ console.error('');
81
+ console.error(` ✗ Directory does not exist: ${absoluteRoot}`);
82
+ console.error('');
83
+ console.error(' Check --root points to a valid project path.');
84
+ console.error('');
85
+ process.exit(1);
121
86
  }
122
- if (!question) {
123
- console.error('Error: --question is required (or use --cache-* for cache management)\n');
124
- printHelp();
125
- return null;
87
+ if (!fs.statSync(absoluteRoot).isDirectory()) {
88
+ console.error('');
89
+ console.error(` ✗ Not a directory: ${absoluteRoot}`);
90
+ console.error('');
91
+ process.exit(1);
126
92
  }
127
- return { root, question, limit, limitProvided, generateMapping, mappingOutputPath, moduleKeys, lang, skipCache };
128
93
  }
129
- /**
130
- * Print help message
131
- */
132
- function printHelp() {
133
- console.log(`
134
- uca - Universal Code Analyzer
135
-
136
- Usage:
137
- uca --question "<text>" [options]
138
- uca --cache-clear # Clear all caches
139
- uca --cache-stats # Show cache statistics
140
-
141
- Options:
142
- --root <path> Project root directory (default: current directory)
143
- --question "<text>" Natural language question about the codebase (required)
144
- --limit <number> Number of top files to analyze (default: 10)
145
- --with-mapping Generate symbol mapping for on-demand retrieval
146
- --modules <keys> Comma-separated module keys (auto-discovered when omitted)
147
- --lang <mode> typescript | javascript | python | auto (default: auto)
148
- --mapping-output <path> Custom path for mapping file (implies --with-mapping)
149
- --skip-cache Skip cache and force full analysis
150
- --cache-clear Clear all cached analysis results
151
- --cache-stats Show cache statistics (hits, misses, size)
152
- --help, -h Show this help message
94
+ function runReport(root, lang) {
95
+ const absoluteRoot = path.resolve(root);
96
+ assertRootExists(absoluteRoot);
97
+ const config = (0, config_1.loadConfig)(absoluteRoot);
98
+ const moduleKeys = config.modules ? Object.keys(config.modules) : (0, scanner_1.discoverModules)(absoluteRoot);
99
+ const extensions = resolveExtensionsForLanguage(lang) ?? config.extensions;
100
+ const files = (0, scanner_1.scanFiles)(absoluteRoot, {
101
+ extensions,
102
+ exclude: config.exclude,
103
+ moduleKeys,
104
+ moduleDefinitions: config.modules,
105
+ });
106
+ const languages = (0, registry_1.detectRepoLanguages)(absoluteRoot);
107
+ const report = {
108
+ type: 'report',
109
+ version: VERSION,
110
+ root: absoluteRoot,
111
+ scannedFileCount: files.length,
112
+ moduleKeys,
113
+ languages,
114
+ extensions: extensions ?? 'auto (from repo)',
115
+ };
116
+ console.log(JSON.stringify(report, null, 2));
117
+ }
118
+ const program = new commander_1.Command();
119
+ program
120
+ .name('skannr')
121
+ .description([
122
+ 'Analyze any codebase. Ask questions. Get ranked, compressed file skeletons.',
123
+ 'Powered by hybrid retrieval: lexical + structural + dependency-graph.',
124
+ '',
125
+ 'Docs: https://skannr-ten.vercel.app',
126
+ ].join('\n'))
127
+ .version(VERSION)
128
+ .option('--root <path>', 'project root directory', process.cwd())
129
+ .option('--question <text>', 'natural language question about the codebase')
130
+ .option('--limit <number>', 'number of top files to analyze', (value) => {
131
+ const n = parseInt(value, 10);
132
+ if (Number.isNaN(n) || n < 1) {
133
+ throw new commander_1.InvalidArgumentError('must be a positive number');
134
+ }
135
+ return n;
136
+ })
137
+ .option('--with-mapping', 'generate symbol mapping for on-demand retrieval')
138
+ .option('--mapping-output <path>', 'custom path for mapping file (implies --with-mapping)')
139
+ .option('--modules <keys>', 'comma-separated module keys (auto-discovered when omitted)')
140
+ .option('--lang <mode>', 'language filter: typescript | javascript | python | auto (default: auto)')
141
+ .option('--skip-cache', 'skip cache and force full analysis')
142
+ .option('--cache-clear', 'clear all cached analysis results')
143
+ .option('--cache-stats', 'show cache statistics')
144
+ .option('--report', 'print repository health report (JSON) instead of running a question')
145
+ .option('--diff <ref>', 'limit analysis to files changed vs git ref (not available yet)')
146
+ .option('--format <format>', 'output format: human, markdown, or json', 'human')
147
+ .option('--watch', 'watch for file changes and re-analyze automatically')
148
+ .option('--telemetry-on', 'enable anonymous usage telemetry (flags only)')
149
+ .option('--telemetry-off', 'disable anonymous usage telemetry')
150
+ .option('--mcp', 'run as Model Context Protocol stdio server (same as skannr-mcp)');
151
+ program.addHelpText('after', `
152
+ Examples:
153
+ skannr --question "how does auth work?" --root .
154
+ skannr --question "database setup" --root /path/to/repo --limit 5
155
+ skannr --question "class structure" --root . --lang python
156
+ skannr --question "changed files" --root . --diff HEAD~1
157
+ skannr --report --root . # health report
158
+ skannr --question "..." --root . --format markdown
159
+ skannr --question "..." --root . --format json
160
+ skannr --question "..." --root . --watch # re-run on file changes
161
+ skannr-agent --root . # interactive mode
153
162
 
154
- Example:
155
- uca --question "authentication logic" --limit 5
156
- uca --root ./my-project --question "database models"
157
- uca --question "API endpoints" --with-mapping
158
- uca --question "permissions" --modules auth,middleware --skip-cache
159
- uca --question "class structure" --lang python
160
- uca --cache-stats
161
- uca --cache-clear
163
+ Monorepo tip:
164
+ skannr --question "..." --root packages/my-package
162
165
 
163
- Output:
164
- JSON object with ranked files and their code skeletons
165
- `);
166
+ MCP (stdio): npx -y skannr --mcp (or: skannr-mcp)
167
+ Cursor: { "mcpServers": { "skannr": { "command": "npx", "args": ["-y", "skannr", "--mcp"] } } }
168
+ `);
169
+ program.parse(process.argv);
170
+ const opts = program.opts();
171
+ function buildAnalyzeTelemetryFlags(o, outputFormat, lang, limit) {
172
+ return {
173
+ hasModules: Boolean(o.modules),
174
+ hasDiff: o.diff !== undefined,
175
+ hasWatch: Boolean(o.watch),
176
+ hasReport: Boolean(o.report),
177
+ hasMapping: Boolean(o.withMapping || o.mappingOutput),
178
+ skipCache: Boolean(o.skipCache),
179
+ format: outputFormat,
180
+ lang,
181
+ limit,
182
+ };
166
183
  }
167
- /**
168
- * Main CLI function
169
- */
170
- async function main() {
171
- const args = parseArgs();
172
- if (!args) {
184
+ function resolveLangFlag(raw) {
185
+ const value = (raw ?? 'auto').toLowerCase();
186
+ if (!VALID_LANGS.includes(value)) {
187
+ const display = raw === undefined || raw === '' ? '(empty)' : raw;
188
+ console.error('');
189
+ console.error(` ✗ Invalid --lang "${display}". Valid values: ${VALID_LANGS.join(', ')}`);
190
+ console.error('');
173
191
  process.exit(1);
174
192
  }
193
+ return value;
194
+ }
195
+ function resolveFormatFlag(raw) {
196
+ const fmt = (raw ?? 'human').toLowerCase();
197
+ if (fmt === 'json' || fmt === 'markdown' || fmt === 'human') {
198
+ return fmt;
199
+ }
200
+ const display = raw === undefined || raw === '' ? '(empty)' : raw;
201
+ console.error('');
202
+ console.error(` ✗ Invalid --format "${display}". Use human, markdown, or json.`);
203
+ console.error('');
204
+ process.exit(1);
205
+ }
206
+ void (async () => {
175
207
  try {
176
- // Handle cache commands
177
- if (args.cacheCommand === 'clear') {
208
+ if (opts.mcp || process.argv.includes('--mcp')) {
209
+ const { startMcpServer } = await Promise.resolve().then(() => __importStar(require('./mcp-server')));
210
+ await startMcpServer();
211
+ return;
212
+ }
213
+ if (opts.telemetryOn) {
214
+ (0, telemetry_1.setTelemetryExplicit)(true);
215
+ console.log('Telemetry enabled. Thank you!');
216
+ process.exit(0);
217
+ }
218
+ if (opts.telemetryOff) {
219
+ (0, telemetry_1.setTelemetryExplicit)(false);
220
+ console.log('Telemetry disabled.');
221
+ process.exit(0);
222
+ }
223
+ if (opts.cacheClear) {
178
224
  const cacheManager = (0, index_1.getCacheManager)();
179
225
  cacheManager.clear();
180
226
  console.log('✅ Cache cleared successfully');
181
227
  process.exit(0);
182
228
  }
183
- if (args.cacheCommand === 'stats') {
229
+ if (opts.cacheStats) {
184
230
  const cacheManager = (0, index_1.getCacheManager)();
185
231
  const stats = cacheManager.getStats();
186
232
  console.log('\n📊 Cache Statistics:');
@@ -191,48 +237,109 @@ async function main() {
191
237
  console.log(` Cache Dir: ${cacheManager.getCacheDir()}\n`);
192
238
  process.exit(0);
193
239
  }
194
- const absoluteRoot = path.resolve(args.root);
240
+ const lang = resolveLangFlag(opts.lang);
241
+ if (opts.report) {
242
+ runReport(opts.root, lang);
243
+ process.exit(0);
244
+ }
245
+ if (opts.diff !== undefined) {
246
+ console.error('');
247
+ console.error(' ✗ --diff is not available in this release.');
248
+ console.error(' Remove --diff or watch the changelog for git-scoped analysis.');
249
+ console.error('');
250
+ process.exit(1);
251
+ }
252
+ const question = opts.question?.trim() ?? '';
253
+ if (!question) {
254
+ console.error('');
255
+ console.error(' ✗ Missing --question.');
256
+ console.error('');
257
+ console.error(' Example: skannr --question "how does auth work?" --root .');
258
+ console.error(' Cache only: skannr --cache-stats | skannr --cache-clear');
259
+ console.error(' Report: skannr --report --root .');
260
+ console.error('');
261
+ program.outputHelp();
262
+ process.exit(1);
263
+ }
264
+ const absoluteRoot = path.resolve(opts.root);
265
+ assertRootExists(absoluteRoot);
266
+ await (0, telemetry_1.askTelemetryConsent)();
195
267
  const config = (0, config_1.loadConfig)(absoluteRoot);
196
- const moduleKeys = args.moduleKeys
197
- ?? (config.modules ? Object.keys(config.modules) : (0, scanner_1.discoverModules)(absoluteRoot));
198
- const resolvedLimit = args.limitProvided ? args.limit : (config.defaultLimit ?? args.limit);
199
- const langExtensions = resolveExtensionsForLanguage(args.lang);
268
+ const moduleKeysFromCli = opts.modules
269
+ ? opts.modules.split(',').map((k) => k.trim()).filter(Boolean)
270
+ : undefined;
271
+ const moduleKeys = moduleKeysFromCli && moduleKeysFromCli.length > 0
272
+ ? moduleKeysFromCli
273
+ : config.modules
274
+ ? Object.keys(config.modules)
275
+ : (0, scanner_1.discoverModules)(absoluteRoot);
276
+ const limitProvided = opts.limit !== undefined;
277
+ const limit = limitProvided ? opts.limit : (config.defaultLimit ?? 10);
278
+ const generateMapping = Boolean(opts.withMapping || opts.mappingOutput);
279
+ const mappingOutputPath = opts.mappingOutput;
280
+ const langExtensions = resolveExtensionsForLanguage(lang);
200
281
  const extensions = langExtensions ?? config.extensions;
201
- const result = await (0, index_1.analyzeProject)({
282
+ const outputFormat = resolveFormatFlag(opts.format);
283
+ const analyzeOptions = {
202
284
  root: absoluteRoot,
203
- question: args.question,
204
- limit: resolvedLimit,
205
- generateMapping: args.generateMapping,
206
- mappingOutputPath: args.mappingOutputPath,
285
+ question,
286
+ limit,
287
+ generateMapping,
288
+ mappingOutputPath,
207
289
  moduleKeys,
208
290
  moduleDefinitions: config.modules,
209
- lang: args.lang,
210
- skipCache: args.skipCache,
291
+ lang,
211
292
  exclude: config.exclude,
212
293
  extensions,
294
+ };
295
+ if (opts.watch) {
296
+ const { watchAndAnalyze } = await Promise.resolve().then(() => __importStar(require('./watcher')));
297
+ let watchTelemetrySent = false;
298
+ try {
299
+ await watchAndAnalyze(analyzeOptions, (raw, elapsedMs) => {
300
+ const result = (0, formatter_1.withCliMetrics)(raw, elapsedMs);
301
+ const formatted = outputFormat === 'json'
302
+ ? (0, formatter_1.formatJson)(result)
303
+ : outputFormat === 'markdown'
304
+ ? (0, formatter_1.formatMarkdown)(result)
305
+ : (0, formatter_1.formatHuman)(result);
306
+ process.stdout.write(formatted + (formatted.endsWith('\n') ? '' : '\n'));
307
+ if (!watchTelemetrySent) {
308
+ watchTelemetrySent = true;
309
+ (0, telemetry_1.track)('analyze', buildAnalyzeTelemetryFlags(opts, outputFormat, lang, limit));
310
+ }
311
+ });
312
+ }
313
+ catch (error) {
314
+ if (error instanceof Error && error.message === 'NO_FILES') {
315
+ printNoFilesError();
316
+ process.exit(1);
317
+ }
318
+ throw error;
319
+ }
320
+ return;
321
+ }
322
+ const started = Date.now();
323
+ const rawResult = await (0, index_1.analyzeProject)({
324
+ ...analyzeOptions,
325
+ skipCache: opts.skipCache,
213
326
  });
214
- console.log(JSON.stringify(result, null, 2));
327
+ if (rawResult.files.length === 0) {
328
+ printNoFilesError();
329
+ process.exit(1);
330
+ }
331
+ const result = (0, formatter_1.withCliMetrics)(rawResult, Date.now() - started);
332
+ const formatted = outputFormat === 'json'
333
+ ? (0, formatter_1.formatJson)(result)
334
+ : outputFormat === 'markdown'
335
+ ? (0, formatter_1.formatMarkdown)(result)
336
+ : (0, formatter_1.formatHuman)(result);
337
+ process.stdout.write(formatted + (formatted.endsWith('\n') ? '' : '\n'));
338
+ (0, telemetry_1.track)('analyze', buildAnalyzeTelemetryFlags(opts, outputFormat, lang, limit));
215
339
  }
216
340
  catch (error) {
217
341
  console.error('Error analyzing project:', error instanceof Error ? error.message : error);
218
342
  process.exit(1);
219
343
  }
220
- }
221
- // Run CLI
222
- main().catch((error) => {
223
- console.error('Unexpected error:', error);
224
- process.exit(1);
225
- });
226
- function resolveExtensionsForLanguage(lang) {
227
- switch (lang) {
228
- case 'typescript':
229
- case 'javascript':
230
- return ['.ts', '.tsx', '.js', '.jsx'];
231
- case 'python':
232
- return ['.py', '.pyi'];
233
- case 'auto':
234
- default:
235
- return undefined;
236
- }
237
- }
344
+ })();
238
345
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI output formatters for analysis results.
3
+ */
4
+ import type { AnalysisResult } from './types';
5
+ export declare function formatHuman(result: AnalysisResult): string;
6
+ export declare function formatMarkdown(result: AnalysisResult): string;
7
+ export declare function formatJson(result: AnalysisResult): string;
8
+ /** Attach timing and aggregate token reduction for terminal/markdown output. */
9
+ export declare function withCliMetrics(result: AnalysisResult, executionMs: number): AnalysisResult;
10
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9C,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAuC1D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA6B7D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEzD;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,GAClB,cAAc,CAchB"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * CLI output formatters for analysis results.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatHuman = formatHuman;
7
+ exports.formatMarkdown = formatMarkdown;
8
+ exports.formatJson = formatJson;
9
+ exports.withCliMetrics = withCliMetrics;
10
+ function fileBody(file) {
11
+ return file.skeleton;
12
+ }
13
+ function formatHuman(result) {
14
+ const lines = [];
15
+ const cyan = (s) => `\x1b[36m${s}\x1b[0m`;
16
+ const gray = (s) => `\x1b[90m${s}\x1b[0m`;
17
+ const bold = (s) => `\x1b[1m${s}\x1b[0m`;
18
+ lines.push('');
19
+ lines.push(bold(` Ranked ${result.files.length} files`) +
20
+ gray(` · ~${result.tokenReduction ?? 96.5}% token reduction · ${result.executionMs ?? 0}ms`));
21
+ lines.push('');
22
+ for (const file of result.files) {
23
+ lines.push(cyan(` ${file.path}`) + gray(` [${file.score?.toFixed(3) ?? '–'}]`));
24
+ if (file.why) {
25
+ lines.push(gray(` ↳ ${file.why}`));
26
+ }
27
+ lines.push('');
28
+ const skeletonLines = fileBody(file).split('\n').slice(0, 20);
29
+ for (const l of skeletonLines) {
30
+ lines.push(gray(' ') + l);
31
+ }
32
+ if (file.skeleton.split('\n').length > 20) {
33
+ lines.push(gray(' ... (truncated)'));
34
+ }
35
+ lines.push('');
36
+ }
37
+ if (result.evidence) {
38
+ lines.push(gray(` Evidence: ${result.evidence}`));
39
+ lines.push('');
40
+ }
41
+ return lines.join('\n');
42
+ }
43
+ function formatMarkdown(result) {
44
+ const lines = [];
45
+ lines.push('## Skannr Analysis');
46
+ lines.push('');
47
+ lines.push(`**${result.files.length} files ranked** · ~${result.tokenReduction ?? 96.5}% token reduction · ${result.executionMs ?? 0}ms`);
48
+ lines.push('');
49
+ for (const file of result.files) {
50
+ lines.push(`### \`${file.path}\` *(score: ${file.score?.toFixed(3) ?? '–'})*`);
51
+ if (file.why) {
52
+ lines.push(`> ${file.why}`);
53
+ }
54
+ lines.push('');
55
+ lines.push('```typescript');
56
+ lines.push(fileBody(file).split('\n').slice(0, 30).join('\n'));
57
+ lines.push('```');
58
+ lines.push('');
59
+ }
60
+ if (result.evidence) {
61
+ lines.push(`**Evidence:** ${result.evidence}`);
62
+ }
63
+ return lines.join('\n');
64
+ }
65
+ function formatJson(result) {
66
+ return JSON.stringify(result, null, 2);
67
+ }
68
+ /** Attach timing and aggregate token reduction for terminal/markdown output. */
69
+ function withCliMetrics(result, executionMs) {
70
+ let orig = 0;
71
+ let skel = 0;
72
+ for (const f of result.files) {
73
+ orig += f.originalTokenCount;
74
+ skel += f.skeletonTokenCount;
75
+ }
76
+ const tokenReduction = orig > 0 ? Math.round((1000 * (1 - skel / orig)) / 10) / 100 : 96.5;
77
+ return {
78
+ ...result,
79
+ executionMs,
80
+ tokenReduction,
81
+ };
82
+ }
83
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,6 +13,6 @@ export { buildSkeletonForFile } from './skeletonizer';
13
13
  export { scanTypeScriptFiles, scanRocketChatFiles, scanFiles, discoverModules } from './scanner';
14
14
  export { countTokens } from './tokenizer';
15
15
  export { buildSkeletonWithMapping, getSymbolDetails, saveMappingToFile, loadMappingFromFile, type SymbolMapping, type SymbolLocation, } from './mapper';
16
- export type { AnalyzeOptions, AnalysisResult, FileAnalysis, RankedFile, } from './types';
16
+ export type { AnalyzeOptions, AnalysisResult, FileAnalysis, RankedFile, SymbolLineRange, } from './types';
17
17
  export { CacheManager, getCacheManager, initializeCacheManager, DEFAULT_CACHE_CONFIG, type CacheConfig, type CacheEntry, } from './cache';
18
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,OAAO,EACL,cAAc,EACd,cAAc,EAEf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAG5D,wBAAsB,cAAc,CAClC,OAAO,CAAC,EAAE,cAAc,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACpC,GACA,OAAO,CAAC,cAAc,CAAC,CAmIzB;AA2BD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,OAAO,EACL,cAAc,EACd,cAAc,EAGf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAG5D,wBAAsB,cAAc,CAClC,OAAO,CAAC,EAAE,cAAc,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACpC,GACA,OAAO,CAAC,cAAc,CAAC,CAyIzB;AA2BD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,SAAS,CAAC"}