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.
- package/README.md +200 -18
- package/assets/screenshots/package-json+project-faf.png +0 -0
- package/dist/big-orange/compare.d.ts.map +1 -1
- package/dist/big-orange/compare.js +14 -16
- package/dist/big-orange/compare.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +137 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto.d.ts.map +1 -1
- package/dist/commands/auto.js +69 -12
- package/dist/commands/auto.js.map +1 -1
- package/dist/commands/bi-sync.d.ts.map +1 -1
- package/dist/commands/bi-sync.js +10 -3
- package/dist/commands/bi-sync.js.map +1 -1
- package/dist/commands/drift.d.ts +16 -0
- package/dist/commands/drift.d.ts.map +1 -0
- package/dist/commands/drift.js +517 -0
- package/dist/commands/drift.js.map +1 -0
- package/dist/commands/git.d.ts +25 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +355 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +11 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +85 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/rename.d.ts +18 -0
- package/dist/commands/rename.d.ts.map +1 -0
- package/dist/commands/rename.js +211 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/taf-init.d.ts +14 -0
- package/dist/commands/taf-init.d.ts.map +1 -0
- package/dist/commands/taf-init.js +138 -0
- package/dist/commands/taf-init.js.map +1 -0
- package/dist/commands/taf-log.d.ts +27 -0
- package/dist/commands/taf-log.d.ts.map +1 -0
- package/dist/commands/taf-log.js +241 -0
- package/dist/commands/taf-log.js.map +1 -0
- package/dist/commands/taf-stats.d.ts +8 -0
- package/dist/commands/taf-stats.d.ts.map +1 -0
- package/dist/commands/taf-stats.js +133 -0
- package/dist/commands/taf-stats.js.map +1 -0
- package/dist/commands/taf-validate.d.ts +8 -0
- package/dist/commands/taf-validate.d.ts.map +1 -0
- package/dist/commands/taf-validate.js +108 -0
- package/dist/commands/taf-validate.js.map +1 -0
- package/dist/commands/taf.d.ts +13 -0
- package/dist/commands/taf.d.ts.map +1 -0
- package/dist/commands/taf.js +85 -0
- package/dist/commands/taf.js.map +1 -0
- package/dist/compiler/faf-compiler.d.ts.map +1 -1
- package/dist/compiler/faf-compiler.js +18 -0
- package/dist/compiler/faf-compiler.js.map +1 -1
- package/dist/generators/faf-generator-championship.d.ts.map +1 -1
- package/dist/generators/faf-generator-championship.js +1 -0
- package/dist/generators/faf-generator-championship.js.map +1 -1
- package/dist/github/github-extractor.d.ts +56 -0
- package/dist/github/github-extractor.d.ts.map +1 -0
- package/dist/github/github-extractor.js +328 -0
- package/dist/github/github-extractor.js.map +1 -0
- package/dist/github/popular-repos.d.ts +43 -0
- package/dist/github/popular-repos.d.ts.map +1 -0
- package/dist/github/popular-repos.js +205 -0
- package/dist/github/popular-repos.js.map +1 -0
- package/dist/github/repo-selector.d.ts +48 -0
- package/dist/github/repo-selector.d.ts.map +1 -0
- package/dist/github/repo-selector.js +277 -0
- package/dist/github/repo-selector.js.map +1 -0
- package/dist/taf/index.d.ts +17 -0
- package/dist/taf/index.d.ts.map +1 -0
- package/dist/taf/index.js +57 -0
- package/dist/taf/index.js.map +1 -0
- package/dist/taf/logger.d.ts +86 -0
- package/dist/taf/logger.d.ts.map +1 -0
- package/dist/taf/logger.js +135 -0
- package/dist/taf/logger.js.map +1 -0
- package/dist/taf/parser.d.ts +32 -0
- package/dist/taf/parser.d.ts.map +1 -0
- package/dist/taf/parser.js +161 -0
- package/dist/taf/parser.js.map +1 -0
- package/dist/taf/stats.d.ts +31 -0
- package/dist/taf/stats.d.ts.map +1 -0
- package/dist/taf/stats.js +182 -0
- package/dist/taf/stats.js.map +1 -0
- package/dist/taf/types.d.ts +66 -0
- package/dist/taf/types.d.ts.map +1 -0
- package/dist/taf/types.js +9 -0
- package/dist/taf/types.js.map +1 -0
- package/dist/taf/validator.d.ts +18 -0
- package/dist/taf/validator.d.ts.map +1 -0
- package/dist/taf/validator.js +148 -0
- package/dist/taf/validator.js.map +1 -0
- package/dist/utils/file-utils.d.ts +10 -0
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +196 -33
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/native-file-finder.js +1 -1
- package/dist/utils/native-file-finder.js.map +1 -1
- package/dist/utils/yaml-generator.d.ts +1 -0
- package/dist/utils/yaml-generator.d.ts.map +1 -1
- package/dist/utils/yaml-generator.js +1 -0
- package/dist/utils/yaml-generator.js.map +1 -1
- 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"}
|