faf-cli 3.0.6 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +200 -18
  2. package/assets/screenshots/package-json+project-faf.png +0 -0
  3. package/dist/big-orange/compare.d.ts.map +1 -1
  4. package/dist/big-orange/compare.js +14 -16
  5. package/dist/big-orange/compare.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +137 -1
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/auto.d.ts.map +1 -1
  10. package/dist/commands/auto.js +69 -12
  11. package/dist/commands/auto.js.map +1 -1
  12. package/dist/commands/bi-sync.d.ts.map +1 -1
  13. package/dist/commands/bi-sync.js +10 -3
  14. package/dist/commands/bi-sync.js.map +1 -1
  15. package/dist/commands/drift.d.ts +16 -0
  16. package/dist/commands/drift.d.ts.map +1 -0
  17. package/dist/commands/drift.js +517 -0
  18. package/dist/commands/drift.js.map +1 -0
  19. package/dist/commands/git.d.ts +25 -0
  20. package/dist/commands/git.d.ts.map +1 -0
  21. package/dist/commands/git.js +355 -0
  22. package/dist/commands/git.js.map +1 -0
  23. package/dist/commands/init.d.ts.map +1 -1
  24. package/dist/commands/init.js +5 -4
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/migrate.d.ts +11 -0
  27. package/dist/commands/migrate.d.ts.map +1 -0
  28. package/dist/commands/migrate.js +85 -0
  29. package/dist/commands/migrate.js.map +1 -0
  30. package/dist/commands/rename.d.ts +18 -0
  31. package/dist/commands/rename.d.ts.map +1 -0
  32. package/dist/commands/rename.js +211 -0
  33. package/dist/commands/rename.js.map +1 -0
  34. package/dist/commands/taf-init.d.ts +14 -0
  35. package/dist/commands/taf-init.d.ts.map +1 -0
  36. package/dist/commands/taf-init.js +138 -0
  37. package/dist/commands/taf-init.js.map +1 -0
  38. package/dist/commands/taf-log.d.ts +27 -0
  39. package/dist/commands/taf-log.d.ts.map +1 -0
  40. package/dist/commands/taf-log.js +241 -0
  41. package/dist/commands/taf-log.js.map +1 -0
  42. package/dist/commands/taf-stats.d.ts +8 -0
  43. package/dist/commands/taf-stats.d.ts.map +1 -0
  44. package/dist/commands/taf-stats.js +133 -0
  45. package/dist/commands/taf-stats.js.map +1 -0
  46. package/dist/commands/taf-validate.d.ts +8 -0
  47. package/dist/commands/taf-validate.d.ts.map +1 -0
  48. package/dist/commands/taf-validate.js +108 -0
  49. package/dist/commands/taf-validate.js.map +1 -0
  50. package/dist/commands/taf.d.ts +13 -0
  51. package/dist/commands/taf.d.ts.map +1 -0
  52. package/dist/commands/taf.js +85 -0
  53. package/dist/commands/taf.js.map +1 -0
  54. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  55. package/dist/compiler/faf-compiler.js +18 -0
  56. package/dist/compiler/faf-compiler.js.map +1 -1
  57. package/dist/generators/faf-generator-championship.d.ts.map +1 -1
  58. package/dist/generators/faf-generator-championship.js +1 -0
  59. package/dist/generators/faf-generator-championship.js.map +1 -1
  60. package/dist/github/github-extractor.d.ts +56 -0
  61. package/dist/github/github-extractor.d.ts.map +1 -0
  62. package/dist/github/github-extractor.js +328 -0
  63. package/dist/github/github-extractor.js.map +1 -0
  64. package/dist/github/popular-repos.d.ts +43 -0
  65. package/dist/github/popular-repos.d.ts.map +1 -0
  66. package/dist/github/popular-repos.js +205 -0
  67. package/dist/github/popular-repos.js.map +1 -0
  68. package/dist/github/repo-selector.d.ts +48 -0
  69. package/dist/github/repo-selector.d.ts.map +1 -0
  70. package/dist/github/repo-selector.js +277 -0
  71. package/dist/github/repo-selector.js.map +1 -0
  72. package/dist/taf/index.d.ts +17 -0
  73. package/dist/taf/index.d.ts.map +1 -0
  74. package/dist/taf/index.js +57 -0
  75. package/dist/taf/index.js.map +1 -0
  76. package/dist/taf/logger.d.ts +86 -0
  77. package/dist/taf/logger.d.ts.map +1 -0
  78. package/dist/taf/logger.js +135 -0
  79. package/dist/taf/logger.js.map +1 -0
  80. package/dist/taf/parser.d.ts +32 -0
  81. package/dist/taf/parser.d.ts.map +1 -0
  82. package/dist/taf/parser.js +161 -0
  83. package/dist/taf/parser.js.map +1 -0
  84. package/dist/taf/stats.d.ts +31 -0
  85. package/dist/taf/stats.d.ts.map +1 -0
  86. package/dist/taf/stats.js +182 -0
  87. package/dist/taf/stats.js.map +1 -0
  88. package/dist/taf/types.d.ts +66 -0
  89. package/dist/taf/types.d.ts.map +1 -0
  90. package/dist/taf/types.js +9 -0
  91. package/dist/taf/types.js.map +1 -0
  92. package/dist/taf/validator.d.ts +18 -0
  93. package/dist/taf/validator.d.ts.map +1 -0
  94. package/dist/taf/validator.js +148 -0
  95. package/dist/taf/validator.js.map +1 -0
  96. package/dist/utils/file-utils.d.ts +10 -0
  97. package/dist/utils/file-utils.d.ts.map +1 -1
  98. package/dist/utils/file-utils.js +196 -33
  99. package/dist/utils/file-utils.js.map +1 -1
  100. package/dist/utils/native-file-finder.js +1 -1
  101. package/dist/utils/native-file-finder.js.map +1 -1
  102. package/dist/utils/yaml-generator.d.ts +1 -0
  103. package/dist/utils/yaml-generator.d.ts.map +1 -1
  104. package/dist/utils/yaml-generator.js +1 -0
  105. package/dist/utils/yaml-generator.js.map +1 -1
  106. package/package.json +9 -4
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * 🏆 Popular GitHub Repositories Registry
4
+ *
5
+ * Top 100 most-used repositories for instant shorthand resolution
6
+ * Organized by category for maintainability
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.POPULAR_REPOS = void 0;
10
+ exports.resolveShorthand = resolveShorthand;
11
+ exports.searchRepos = searchRepos;
12
+ exports.getReposByCategory = getReposByCategory;
13
+ exports.getCategories = getCategories;
14
+ exports.levenshteinDistance = levenshteinDistance;
15
+ exports.findClosestMatch = findClosestMatch;
16
+ /**
17
+ * Popular repository mappings
18
+ * Format: shorthand → { owner, repo, category }
19
+ */
20
+ exports.POPULAR_REPOS = {
21
+ // ===== FRAMEWORKS (TROPHY TIER 🏆) =====
22
+ 'react': { shorthand: 'react', owner: 'facebook', repo: 'react', category: 'framework', weeklyDownloads: 20_000_000 },
23
+ 'next': { shorthand: 'next', owner: 'vercel', repo: 'next.js', category: 'framework', weeklyDownloads: 5_000_000 },
24
+ 'nextjs': { shorthand: 'nextjs', owner: 'vercel', repo: 'next.js', category: 'framework', weeklyDownloads: 5_000_000 },
25
+ 'vue': { shorthand: 'vue', owner: 'vuejs', repo: 'core', category: 'framework', weeklyDownloads: 4_500_000 },
26
+ 'svelte': { shorthand: 'svelte', owner: 'sveltejs', repo: 'svelte', category: 'framework', weeklyDownloads: 400_000 },
27
+ 'angular': { shorthand: 'angular', owner: 'angular', repo: 'angular', category: 'framework', weeklyDownloads: 2_500_000 },
28
+ // ===== LANGUAGES & RUNTIMES =====
29
+ 'typescript': { shorthand: 'typescript', owner: 'microsoft', repo: 'TypeScript', category: 'language', weeklyDownloads: 40_000_000 },
30
+ 'node': { shorthand: 'node', owner: 'nodejs', repo: 'node', category: 'runtime', weeklyDownloads: 50_000_000 },
31
+ 'deno': { shorthand: 'deno', owner: 'denoland', repo: 'deno', category: 'runtime', weeklyDownloads: 100_000 },
32
+ 'bun': { shorthand: 'bun', owner: 'oven-sh', repo: 'bun', category: 'runtime', weeklyDownloads: 500_000 },
33
+ // ===== BUILD TOOLS (GOLD TIER 🥇) =====
34
+ 'vite': { shorthand: 'vite', owner: 'vitejs', repo: 'vite', category: 'build-tool', weeklyDownloads: 9_000_000 },
35
+ 'webpack': { shorthand: 'webpack', owner: 'webpack', repo: 'webpack', category: 'build-tool', weeklyDownloads: 20_000_000 },
36
+ 'rollup': { shorthand: 'rollup', owner: 'rollup', repo: 'rollup', category: 'build-tool', weeklyDownloads: 8_000_000 },
37
+ 'esbuild': { shorthand: 'esbuild', owner: 'evanw', repo: 'esbuild', category: 'build-tool', weeklyDownloads: 15_000_000 },
38
+ 'turbo': { shorthand: 'turbo', owner: 'vercel', repo: 'turbo', category: 'build-tool', weeklyDownloads: 1_000_000 },
39
+ 'turborepo': { shorthand: 'turborepo', owner: 'vercel', repo: 'turbo', category: 'build-tool', weeklyDownloads: 1_000_000 },
40
+ // ===== STYLING =====
41
+ 'tailwind': { shorthand: 'tailwind', owner: 'tailwindlabs', repo: 'tailwindcss', category: 'styling', weeklyDownloads: 7_000_000 },
42
+ 'tailwindcss': { shorthand: 'tailwindcss', owner: 'tailwindlabs', repo: 'tailwindcss', category: 'styling', weeklyDownloads: 7_000_000 },
43
+ 'sass': { shorthand: 'sass', owner: 'sass', repo: 'sass', category: 'styling', weeklyDownloads: 10_000_000 },
44
+ 'postcss': { shorthand: 'postcss', owner: 'postcss', repo: 'postcss', category: 'styling', weeklyDownloads: 20_000_000 },
45
+ // ===== STATE MANAGEMENT =====
46
+ 'redux': { shorthand: 'redux', owner: 'reduxjs', repo: 'redux', category: 'state', weeklyDownloads: 6_000_000 },
47
+ 'zustand': { shorthand: 'zustand', owner: 'pmndrs', repo: 'zustand', category: 'state', weeklyDownloads: 1_500_000 },
48
+ 'mobx': { shorthand: 'mobx', owner: 'mobxjs', repo: 'mobx', category: 'state', weeklyDownloads: 1_000_000 },
49
+ 'jotai': { shorthand: 'jotai', owner: 'pmndrs', repo: 'jotai', category: 'state', weeklyDownloads: 500_000 },
50
+ // ===== VALIDATION =====
51
+ 'zod': { shorthand: 'zod', owner: 'colinhacks', repo: 'zod', category: 'validation', weeklyDownloads: 5_000_000 },
52
+ 'yup': { shorthand: 'yup', owner: 'jquense', repo: 'yup', category: 'validation', weeklyDownloads: 3_000_000 },
53
+ // ===== TESTING =====
54
+ 'jest': { shorthand: 'jest', owner: 'jestjs', repo: 'jest', category: 'testing', weeklyDownloads: 20_000_000 },
55
+ 'vitest': { shorthand: 'vitest', owner: 'vitest-dev', repo: 'vitest', category: 'testing', weeklyDownloads: 3_000_000 },
56
+ 'playwright': { shorthand: 'playwright', owner: 'microsoft', repo: 'playwright', category: 'testing', weeklyDownloads: 3_000_000 },
57
+ 'cypress': { shorthand: 'cypress', owner: 'cypress-io', repo: 'cypress', category: 'testing', weeklyDownloads: 4_000_000 },
58
+ // ===== DATABASES & ORM =====
59
+ 'prisma': { shorthand: 'prisma', owner: 'prisma', repo: 'prisma', category: 'database', weeklyDownloads: 2_000_000 },
60
+ 'drizzle': { shorthand: 'drizzle', owner: 'drizzle-team', repo: 'drizzle-orm', category: 'database', weeklyDownloads: 500_000 },
61
+ 'mongoose': { shorthand: 'mongoose', owner: 'Automattic', repo: 'mongoose', category: 'database', weeklyDownloads: 3_000_000 },
62
+ 'typeorm': { shorthand: 'typeorm', owner: 'typeorm', repo: 'typeorm', category: 'database', weeklyDownloads: 2_000_000 },
63
+ // ===== AUTHENTICATION =====
64
+ 'nextauth': { shorthand: 'nextauth', owner: 'nextauthjs', repo: 'next-auth', category: 'auth', weeklyDownloads: 1_000_000 },
65
+ 'lucia': { shorthand: 'lucia', owner: 'lucia-auth', repo: 'lucia', category: 'auth', weeklyDownloads: 100_000 },
66
+ 'passport': { shorthand: 'passport', owner: 'jaredhanson', repo: 'passport', category: 'auth', weeklyDownloads: 2_000_000 },
67
+ // ===== API & HTTP =====
68
+ 'axios': { shorthand: 'axios', owner: 'axios', repo: 'axios', category: 'http', weeklyDownloads: 30_000_000 },
69
+ 'fetch': { shorthand: 'fetch', owner: 'node-fetch', repo: 'node-fetch', category: 'http', weeklyDownloads: 25_000_000 },
70
+ 'graphql': { shorthand: 'graphql', owner: 'graphql', repo: 'graphql-js', category: 'api', weeklyDownloads: 8_000_000 },
71
+ 'apollo': { shorthand: 'apollo', owner: 'apollographql', repo: 'apollo-client', category: 'api', weeklyDownloads: 1_500_000 },
72
+ 'trpc': { shorthand: 'trpc', owner: 'trpc', repo: 'trpc', category: 'api', weeklyDownloads: 800_000 },
73
+ // ===== UI LIBRARIES =====
74
+ 'shadcn': { shorthand: 'shadcn', owner: 'shadcn-ui', repo: 'ui', category: 'ui', weeklyDownloads: 500_000 },
75
+ 'radix': { shorthand: 'radix', owner: 'radix-ui', repo: 'primitives', category: 'ui', weeklyDownloads: 2_000_000 },
76
+ 'mui': { shorthand: 'mui', owner: 'mui', repo: 'material-ui', category: 'ui', weeklyDownloads: 3_000_000 },
77
+ 'chakra': { shorthand: 'chakra', owner: 'chakra-ui', repo: 'chakra-ui', category: 'ui', weeklyDownloads: 1_000_000 },
78
+ // ===== UTILITIES =====
79
+ 'lodash': { shorthand: 'lodash', owner: 'lodash', repo: 'lodash', category: 'utility', weeklyDownloads: 40_000_000 },
80
+ 'dayjs': { shorthand: 'dayjs', owner: 'iamkun', repo: 'dayjs', category: 'utility', weeklyDownloads: 10_000_000 },
81
+ 'date-fns': { shorthand: 'date-fns', owner: 'date-fns', repo: 'date-fns', category: 'utility', weeklyDownloads: 12_000_000 },
82
+ // ===== LINTING & FORMATTING =====
83
+ 'eslint': { shorthand: 'eslint', owner: 'eslint', repo: 'eslint', category: 'linting', weeklyDownloads: 25_000_000 },
84
+ 'prettier': { shorthand: 'prettier', owner: 'prettier', repo: 'prettier', category: 'formatting', weeklyDownloads: 20_000_000 },
85
+ 'biome': { shorthand: 'biome', owner: 'biomejs', repo: 'biome', category: 'linting', weeklyDownloads: 200_000 },
86
+ // ===== DEPLOYMENT & INFRASTRUCTURE =====
87
+ 'docker': { shorthand: 'docker', owner: 'docker', repo: 'docker', category: 'infrastructure', weeklyDownloads: 10_000_000 },
88
+ 'kubernetes': { shorthand: 'kubernetes', owner: 'kubernetes', repo: 'kubernetes', category: 'infrastructure', weeklyDownloads: 5_000_000 },
89
+ 'k8s': { shorthand: 'k8s', owner: 'kubernetes', repo: 'kubernetes', category: 'infrastructure', weeklyDownloads: 5_000_000 },
90
+ // ===== FAF ECOSYSTEM =====
91
+ 'faf': { shorthand: 'faf', owner: 'Wolfe-Jam', repo: 'faf-cli', category: 'faf', weeklyDownloads: 5_000 },
92
+ 'faf-cli': { shorthand: 'faf-cli', owner: 'Wolfe-Jam', repo: 'faf-cli', category: 'faf', weeklyDownloads: 5_000 },
93
+ 'faf-mcp': { shorthand: 'faf-mcp', owner: 'Wolfe-Jam', repo: 'claude-faf-mcp', category: 'faf', weeklyDownloads: 3_600 },
94
+ 'claude-faf-mcp': { shorthand: 'claude-faf-mcp', owner: 'Wolfe-Jam', repo: 'claude-faf-mcp', category: 'faf', weeklyDownloads: 3_600 },
95
+ // ===== WORKFLOW AUTOMATION (TURBO) =====
96
+ 'n8n': { shorthand: 'n8n', owner: 'n8n-io', repo: 'n8n', category: 'automation', weeklyDownloads: 401_000 },
97
+ };
98
+ /**
99
+ * Get repo info from shorthand
100
+ */
101
+ function resolveShorthand(query) {
102
+ const normalized = query.toLowerCase().trim();
103
+ return exports.POPULAR_REPOS[normalized] || null;
104
+ }
105
+ /**
106
+ * Search for repos matching query (fuzzy)
107
+ */
108
+ function searchRepos(query, limit = 10) {
109
+ const normalized = query.toLowerCase().trim();
110
+ const results = [];
111
+ for (const [key, repo] of Object.entries(exports.POPULAR_REPOS)) {
112
+ let score = 0;
113
+ // Exact match (highest priority)
114
+ if (key === normalized) {
115
+ score = 1000;
116
+ }
117
+ // Starts with query
118
+ else if (key.startsWith(normalized)) {
119
+ score = 500;
120
+ }
121
+ // Contains query
122
+ else if (key.includes(normalized)) {
123
+ score = 250;
124
+ }
125
+ // Repo name matches
126
+ else if (repo.repo.toLowerCase().includes(normalized)) {
127
+ score = 100;
128
+ }
129
+ // Owner matches
130
+ else if (repo.owner.toLowerCase().includes(normalized)) {
131
+ score = 50;
132
+ }
133
+ if (score > 0) {
134
+ // Boost by popularity (weekly downloads)
135
+ if (repo.weeklyDownloads) {
136
+ score += Math.log10(repo.weeklyDownloads);
137
+ }
138
+ results.push({ repo, score });
139
+ }
140
+ }
141
+ // Sort by score descending
142
+ results.sort((a, b) => b.score - a.score);
143
+ return results.slice(0, limit).map(r => r.repo);
144
+ }
145
+ /**
146
+ * Get all repos in a category
147
+ */
148
+ function getReposByCategory(category) {
149
+ return Object.values(exports.POPULAR_REPOS)
150
+ .filter(repo => repo.category === category)
151
+ .sort((a, b) => (b.weeklyDownloads || 0) - (a.weeklyDownloads || 0));
152
+ }
153
+ /**
154
+ * Get all unique categories
155
+ */
156
+ function getCategories() {
157
+ const categories = new Set();
158
+ for (const repo of Object.values(exports.POPULAR_REPOS)) {
159
+ categories.add(repo.category);
160
+ }
161
+ return Array.from(categories).sort();
162
+ }
163
+ /**
164
+ * Calculate Levenshtein distance for fuzzy matching
165
+ */
166
+ function levenshteinDistance(a, b) {
167
+ const matrix = [];
168
+ for (let i = 0; i <= b.length; i++) {
169
+ matrix[i] = [i];
170
+ }
171
+ for (let j = 0; j <= a.length; j++) {
172
+ matrix[0][j] = j;
173
+ }
174
+ for (let i = 1; i <= b.length; i++) {
175
+ for (let j = 1; j <= a.length; j++) {
176
+ if (b.charAt(i - 1) === a.charAt(j - 1)) {
177
+ matrix[i][j] = matrix[i - 1][j - 1];
178
+ }
179
+ else {
180
+ matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
181
+ matrix[i][j - 1] + 1, // insertion
182
+ matrix[i - 1][j] + 1 // deletion
183
+ );
184
+ }
185
+ }
186
+ }
187
+ return matrix[b.length][a.length];
188
+ }
189
+ /**
190
+ * Find closest match for typo correction
191
+ */
192
+ function findClosestMatch(query, maxDistance = 2) {
193
+ const normalized = query.toLowerCase().trim();
194
+ let closestRepo = null;
195
+ let closestDistance = Infinity;
196
+ for (const [key, repo] of Object.entries(exports.POPULAR_REPOS)) {
197
+ const distance = levenshteinDistance(normalized, key);
198
+ if (distance <= maxDistance && distance < closestDistance) {
199
+ closestDistance = distance;
200
+ closestRepo = repo;
201
+ }
202
+ }
203
+ return closestRepo;
204
+ }
205
+ //# sourceMappingURL=popular-repos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popular-repos.js","sourceRoot":"","sources":["../../src/github/popular-repos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * 🏆 Interactive Repository Selector
3
+ *
4
+ * Handles ambiguous queries with smart selection UI
5
+ */
6
+ import type { RepoMapping } from './popular-repos';
7
+ import type { GitHubMetadata } from './github-extractor';
8
+ export interface SelectionResult {
9
+ selected: RepoMapping[];
10
+ cancelled: boolean;
11
+ }
12
+ /**
13
+ * Show interactive list when multiple repos match
14
+ */
15
+ export declare function selectFromMultiple(query: string, repos: RepoMapping[], metadata?: Map<string, GitHubMetadata>): Promise<SelectionResult>;
16
+ /**
17
+ * Show confirmation for typo correction
18
+ */
19
+ export declare function confirmTypoCorrection(query: string, suggestedRepo: RepoMapping): Promise<boolean>;
20
+ /**
21
+ * Show error when no repos found
22
+ */
23
+ export declare function showNoReposFound(query: string): void;
24
+ /**
25
+ * Show rate limit warning
26
+ */
27
+ export declare function showRateLimitWarning(): void;
28
+ /**
29
+ * Show list of popular repositories
30
+ */
31
+ export declare function showPopularRepos(repos: RepoMapping[], category?: string): void;
32
+ /**
33
+ * Show extraction progress
34
+ */
35
+ export declare function showExtractionProgress(owner: string, repo: string): void;
36
+ /**
37
+ * Show extraction success
38
+ */
39
+ export declare function showExtractionSuccess(owner: string, repo: string, outputPath: string, score: number): void;
40
+ /**
41
+ * Show batch extraction summary
42
+ */
43
+ export declare function showBatchSummary(results: Array<{
44
+ repo: string;
45
+ success: boolean;
46
+ outputPath?: string;
47
+ }>): void;
48
+ //# sourceMappingURL=repo-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-selector.d.ts","sourceRoot":"","sources":["../../src/github/repo-selector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,WAAW,EAAE,EACpB,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GACrC,OAAO,CAAC,eAAe,CAAC,CAyF1B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,WAAW,GACzB,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAUpD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAU3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CA2C9E;AAeD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGxE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAoBN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CA8B9G"}
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ /**
3
+ * 🏆 Interactive Repository Selector
4
+ *
5
+ * Handles ambiguous queries with smart selection UI
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.selectFromMultiple = selectFromMultiple;
12
+ exports.confirmTypoCorrection = confirmTypoCorrection;
13
+ exports.showNoReposFound = showNoReposFound;
14
+ exports.showRateLimitWarning = showRateLimitWarning;
15
+ exports.showPopularRepos = showPopularRepos;
16
+ exports.showExtractionProgress = showExtractionProgress;
17
+ exports.showExtractionSuccess = showExtractionSuccess;
18
+ exports.showBatchSummary = showBatchSummary;
19
+ const inquirer_1 = __importDefault(require("inquirer"));
20
+ const colors_1 = require("../fix-once/colors");
21
+ const championship_style_1 = require("../utils/championship-style");
22
+ /**
23
+ * Show interactive list when multiple repos match
24
+ */
25
+ async function selectFromMultiple(query, repos, metadata) {
26
+ console.log();
27
+ console.log(championship_style_1.FAF_COLORS.fafOrange(`Multiple repositories found for '${query}':`));
28
+ console.log();
29
+ // Build choices with rich information
30
+ const choices = repos.map((repo, index) => {
31
+ const meta = metadata?.get(`${repo.owner}/${repo.repo}`);
32
+ let displayName = `[${index + 1}] ${repo.owner}/${repo.repo}`;
33
+ let description = '';
34
+ if (meta) {
35
+ // Add description
36
+ if (meta.description) {
37
+ description += colors_1.chalk.gray(meta.description.substring(0, 60));
38
+ if (meta.description.length > 60)
39
+ description += colors_1.chalk.gray('...');
40
+ }
41
+ // Add stats
42
+ const stats = [];
43
+ if (meta.stars)
44
+ stats.push(`⭐ ${meta.stars}`);
45
+ if (meta.license)
46
+ stats.push(`📄 ${meta.license}`);
47
+ if (meta.languages && meta.languages.length > 0) {
48
+ const mainLang = meta.languages[0].split(' ')[0];
49
+ stats.push(`🔧 ${mainLang}`);
50
+ }
51
+ if (stats.length > 0) {
52
+ description += '\n ' + colors_1.chalk.gray(stats.join(' '));
53
+ }
54
+ }
55
+ else {
56
+ // Fallback to registry data
57
+ if (repo.category) {
58
+ description += colors_1.chalk.gray(`${repo.category}`);
59
+ }
60
+ if (repo.weeklyDownloads) {
61
+ const downloads = formatDownloads(repo.weeklyDownloads);
62
+ description += colors_1.chalk.gray(` • ${downloads}`);
63
+ }
64
+ }
65
+ return {
66
+ name: description ? `${displayName}\n ${description}` : displayName,
67
+ value: repo,
68
+ short: `${repo.owner}/${repo.repo}`
69
+ };
70
+ });
71
+ // Add "All" option for comparison
72
+ choices.push({
73
+ name: colors_1.chalk.cyan('[all] Generate .faf for all repositories (comparison mode)'),
74
+ value: 'all',
75
+ short: 'all'
76
+ });
77
+ // Add separator
78
+ choices.push(new inquirer_1.default.Separator());
79
+ try {
80
+ const answer = await inquirer_1.default.prompt([
81
+ {
82
+ type: 'list',
83
+ name: 'selection',
84
+ message: 'Select repository:',
85
+ choices,
86
+ pageSize: 15,
87
+ loop: false,
88
+ }
89
+ ]);
90
+ if (answer.selection === 'all') {
91
+ return {
92
+ selected: repos,
93
+ cancelled: false
94
+ };
95
+ }
96
+ return {
97
+ selected: [answer.selection],
98
+ cancelled: false
99
+ };
100
+ }
101
+ catch (error) {
102
+ // User cancelled (Ctrl+C)
103
+ return {
104
+ selected: [],
105
+ cancelled: true
106
+ };
107
+ }
108
+ }
109
+ /**
110
+ * Show confirmation for typo correction
111
+ */
112
+ async function confirmTypoCorrection(query, suggestedRepo) {
113
+ console.log();
114
+ console.log(colors_1.chalk.yellow(`⚠️ Did you mean '${suggestedRepo.shorthand}' (${suggestedRepo.owner}/${suggestedRepo.repo})?`));
115
+ try {
116
+ const answer = await inquirer_1.default.prompt([
117
+ {
118
+ type: 'confirm',
119
+ name: 'confirmed',
120
+ message: 'Use this repository?',
121
+ default: true
122
+ }
123
+ ]);
124
+ return answer.confirmed;
125
+ }
126
+ catch (error) {
127
+ // User cancelled
128
+ return false;
129
+ }
130
+ }
131
+ /**
132
+ * Show error when no repos found
133
+ */
134
+ function showNoReposFound(query) {
135
+ console.log();
136
+ console.log(colors_1.chalk.red(`❌ No repositories found for '${query}'`));
137
+ console.log();
138
+ console.log(colors_1.chalk.gray('Suggestions:'));
139
+ console.log(colors_1.chalk.gray(' • Check spelling'));
140
+ console.log(colors_1.chalk.gray(` • Use full URL: faf git https://github.com/owner/repo`));
141
+ console.log(colors_1.chalk.gray(` • Use owner/repo: faf git owner/repo`));
142
+ console.log(colors_1.chalk.gray(` • Browse popular repos: faf git --list`));
143
+ console.log();
144
+ }
145
+ /**
146
+ * Show rate limit warning
147
+ */
148
+ function showRateLimitWarning() {
149
+ console.log();
150
+ console.log(colors_1.chalk.yellow('⚠️ GitHub API rate limit exceeded'));
151
+ console.log();
152
+ console.log(colors_1.chalk.gray('Options:'));
153
+ console.log(colors_1.chalk.gray(' 1. Wait ~1 hour for rate limit reset'));
154
+ console.log(colors_1.chalk.gray(' 2. Set GITHUB_TOKEN environment variable:'));
155
+ console.log(colors_1.chalk.gray(' export GITHUB_TOKEN=your_github_token'));
156
+ console.log(colors_1.chalk.gray(' (Increases limit from 60 to 5000 requests/hour)'));
157
+ console.log();
158
+ }
159
+ /**
160
+ * Show list of popular repositories
161
+ */
162
+ function showPopularRepos(repos, category) {
163
+ console.log();
164
+ if (category) {
165
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`🏆 Popular ${category} Repositories`));
166
+ }
167
+ else {
168
+ console.log(championship_style_1.FAF_COLORS.fafCyan('🏆 Popular Repositories'));
169
+ }
170
+ console.log(championship_style_1.FAF_COLORS.fafCyan('═'.repeat(50)));
171
+ console.log();
172
+ // Group by category
173
+ const grouped = new Map();
174
+ for (const repo of repos) {
175
+ if (!grouped.has(repo.category)) {
176
+ grouped.set(repo.category, []);
177
+ }
178
+ grouped.get(repo.category).push(repo);
179
+ }
180
+ // Sort categories
181
+ const sortedCategories = Array.from(grouped.keys()).sort();
182
+ for (const cat of sortedCategories) {
183
+ const catRepos = grouped.get(cat);
184
+ console.log(championship_style_1.FAF_COLORS.fafOrange(`${cat.toUpperCase()}:`));
185
+ for (const repo of catRepos.slice(0, 10)) { // Limit to top 10 per category
186
+ const shorthand = colors_1.chalk.cyan(repo.shorthand.padEnd(15));
187
+ const fullName = colors_1.chalk.gray(`${repo.owner}/${repo.repo}`);
188
+ const downloads = repo.weeklyDownloads
189
+ ? colors_1.chalk.gray(`(${formatDownloads(repo.weeklyDownloads)})`)
190
+ : '';
191
+ console.log(` ${shorthand} ${fullName} ${downloads}`);
192
+ }
193
+ console.log();
194
+ }
195
+ console.log(colors_1.chalk.gray('Usage: faf git <shorthand>'));
196
+ console.log(colors_1.chalk.gray('Example: faf git react'));
197
+ console.log();
198
+ }
199
+ /**
200
+ * Format downloads for display
201
+ */
202
+ function formatDownloads(downloads) {
203
+ if (downloads >= 1_000_000) {
204
+ return `${(downloads / 1_000_000).toFixed(1)}M/week`;
205
+ }
206
+ if (downloads >= 1_000) {
207
+ return `${(downloads / 1_000).toFixed(0)}K/week`;
208
+ }
209
+ return `${downloads}/week`;
210
+ }
211
+ /**
212
+ * Show extraction progress
213
+ */
214
+ function showExtractionProgress(owner, repo) {
215
+ console.log();
216
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`⚡ Extracting context for ${owner}/${repo}...`));
217
+ }
218
+ /**
219
+ * Show extraction success
220
+ */
221
+ function showExtractionSuccess(owner, repo, outputPath, score) {
222
+ console.log();
223
+ console.log(championship_style_1.FAF_COLORS.fafGreen(`☑️ Generated ${outputPath}`));
224
+ // Show score with podium emoji
225
+ let emoji = '🤍';
226
+ if (score >= 85)
227
+ emoji = '🏆';
228
+ else if (score >= 70)
229
+ emoji = '🥇';
230
+ else if (score >= 55)
231
+ emoji = '🥈';
232
+ else if (score >= 40)
233
+ emoji = '🥉';
234
+ else if (score >= 35)
235
+ emoji = '🟢';
236
+ else if (score >= 20)
237
+ emoji = '🟡';
238
+ else if (score >= 10)
239
+ emoji = '🔴';
240
+ console.log(championship_style_1.FAF_COLORS.fafOrange(`${emoji} Quality Score: ${score}%`));
241
+ console.log();
242
+ console.log(colors_1.chalk.gray('Next steps:'));
243
+ console.log(colors_1.chalk.gray(` • Attach to AI: Share ${outputPath} with Claude/Gemini/Codex`));
244
+ console.log(colors_1.chalk.gray(` • View details: faf show ${outputPath}`));
245
+ console.log();
246
+ }
247
+ /**
248
+ * Show batch extraction summary
249
+ */
250
+ function showBatchSummary(results) {
251
+ console.log();
252
+ console.log(championship_style_1.FAF_COLORS.fafCyan('🏁 Batch Extraction Complete'));
253
+ console.log(championship_style_1.FAF_COLORS.fafCyan('═'.repeat(50)));
254
+ console.log();
255
+ const successful = results.filter(r => r.success);
256
+ const failed = results.filter(r => !r.success);
257
+ console.log(championship_style_1.FAF_COLORS.fafGreen(`☑️ Successful: ${successful.length}`));
258
+ if (failed.length > 0) {
259
+ console.log(colors_1.chalk.red(`❌ Failed: ${failed.length}`));
260
+ }
261
+ console.log();
262
+ if (successful.length > 0) {
263
+ console.log(colors_1.chalk.gray('Generated files:'));
264
+ for (const result of successful) {
265
+ console.log(colors_1.chalk.gray(` • ${result.outputPath}`));
266
+ }
267
+ console.log();
268
+ }
269
+ if (failed.length > 0) {
270
+ console.log(colors_1.chalk.red('Failed repositories:'));
271
+ for (const result of failed) {
272
+ console.log(colors_1.chalk.red(` • ${result.repo}`));
273
+ }
274
+ console.log();
275
+ }
276
+ }
277
+ //# sourceMappingURL=repo-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-selector.js","sourceRoot":"","sources":["../../src/github/repo-selector.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAgBH,gDA6FC;AAKD,sDAwBC;AAKD,4CAUC;AAKD,oDAUC;AAKD,4CA2CC;AAkBD,wDAGC;AAKD,sDAyBC;AAKD,4CA8BC;AA5SD,wDAAgC;AAChC,+CAA2C;AAC3C,oEAAyD;AASzD;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,KAAoB,EACpB,QAAsC;IAEtC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,oCAAoC,KAAK,IAAI,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,sCAAsC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,IAAI,WAAW,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,IAAI,EAAE,CAAC;YACT,kBAAkB;YAClB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,WAAW,IAAI,cAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7D,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE;oBAAE,WAAW,IAAI,cAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrE,CAAC;YAED,YAAY;YACZ,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;YAC/B,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,WAAW,IAAI,WAAW,GAAG,cAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,WAAW,IAAI,cAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACxD,WAAW,IAAI,cAAK,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,YAAY,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW;YACzE,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;SACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,cAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC;QAC9E,KAAK,EAAE,KAAY;QACnB,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,gBAAgB;IAChB,OAAO,CAAC,IAAI,CAAC,IAAI,kBAAQ,CAAC,SAAS,EAAS,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACnC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,oBAAoB;gBAC7B,OAAO;gBACP,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,KAAK;aACZ;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;YAC5B,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0BAA0B;QAC1B,OAAO;YACL,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CACzC,KAAa,EACb,aAA0B;IAE1B,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CACT,cAAK,CAAC,MAAM,CAAC,qBAAqB,aAAa,CAAC,SAAS,MAAM,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,IAAI,CAAC,CAC9G,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACnC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iBAAiB;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,gCAAgC,KAAK,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAClC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAoB,EAAE,QAAiB;IACtE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,cAAc,QAAQ,eAAe,CAAC,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,oBAAoB;IACpB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB;IAClB,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3D,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAEnC,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QAE3D,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,+BAA+B;YACzE,MAAM,SAAS,GAAG,cAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,cAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe;gBACpC,CAAC,CAAC,cAAK,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;gBAC1D,CAAC,CAAC,EAAE,CAAC;YAEP,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,SAAiB;IACxC,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvD,CAAC;IACD,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,SAAS,OAAO,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,KAAa,EAAE,IAAY;IAChE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,4BAA4B,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,KAAa,EACb,IAAY,EACZ,UAAkB,EAClB,KAAa;IAEb,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC,CAAC;IAEhE,+BAA+B;IAC/B,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,IAAI,CAAC;SACzB,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,IAAI,CAAC;SAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,IAAI,CAAC;SAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,IAAI,CAAC;SAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,IAAI,CAAC;SAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,IAAI,CAAC;SAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,IAAI,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,GAAG,KAAK,mBAAmB,KAAK,GAAG,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,2BAA2B,UAAU,2BAA2B,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,OAAuE;IACtG,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAE/C,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,mBAAmB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * TAF Core Library - MCP-Portable Functions
3
+ *
4
+ * This module contains ALL pure, MCP-portable functions for .taf
5
+ * Can be extracted directly to claude-faf-mcp or claude-taf-mcp
6
+ *
7
+ * Zero CLI dependencies - only uses:
8
+ * - yaml (for parsing)
9
+ * - TypeScript types
10
+ * - Pure functions
11
+ */
12
+ export * from './types';
13
+ export { parseTAF, serializeTAF, createTAF, formatTAF, } from './parser';
14
+ export { validateTAF, isTAFValid, } from './validator';
15
+ export { calculateStats, calculateScoreContribution, getPassRateTrend, getFailurePatterns, } from './stats';
16
+ export { appendTestRun, createMinimalRun, createDetailedRun, detectResult, calculateRecovery, getRecentRuns, getRunsInRange, updateFAFIntegration, } from './logger';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/taf/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,SAAS,GACV,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,oBAAoB,GACrB,MAAM,UAAU,CAAC"}