faf-cli 3.0.6 → 3.1.1

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 (105) hide show
  1. package/README.md +275 -25
  2. package/dist/big-orange/compare.d.ts.map +1 -1
  3. package/dist/big-orange/compare.js +14 -16
  4. package/dist/big-orange/compare.js.map +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +137 -1
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/auto.d.ts.map +1 -1
  9. package/dist/commands/auto.js +69 -12
  10. package/dist/commands/auto.js.map +1 -1
  11. package/dist/commands/bi-sync.d.ts.map +1 -1
  12. package/dist/commands/bi-sync.js +10 -3
  13. package/dist/commands/bi-sync.js.map +1 -1
  14. package/dist/commands/drift.d.ts +16 -0
  15. package/dist/commands/drift.d.ts.map +1 -0
  16. package/dist/commands/drift.js +517 -0
  17. package/dist/commands/drift.js.map +1 -0
  18. package/dist/commands/git.d.ts +25 -0
  19. package/dist/commands/git.d.ts.map +1 -0
  20. package/dist/commands/git.js +355 -0
  21. package/dist/commands/git.js.map +1 -0
  22. package/dist/commands/init.d.ts.map +1 -1
  23. package/dist/commands/init.js +5 -4
  24. package/dist/commands/init.js.map +1 -1
  25. package/dist/commands/migrate.d.ts +11 -0
  26. package/dist/commands/migrate.d.ts.map +1 -0
  27. package/dist/commands/migrate.js +85 -0
  28. package/dist/commands/migrate.js.map +1 -0
  29. package/dist/commands/rename.d.ts +18 -0
  30. package/dist/commands/rename.d.ts.map +1 -0
  31. package/dist/commands/rename.js +211 -0
  32. package/dist/commands/rename.js.map +1 -0
  33. package/dist/commands/taf-init.d.ts +14 -0
  34. package/dist/commands/taf-init.d.ts.map +1 -0
  35. package/dist/commands/taf-init.js +138 -0
  36. package/dist/commands/taf-init.js.map +1 -0
  37. package/dist/commands/taf-log.d.ts +30 -0
  38. package/dist/commands/taf-log.d.ts.map +1 -0
  39. package/dist/commands/taf-log.js +303 -0
  40. package/dist/commands/taf-log.js.map +1 -0
  41. package/dist/commands/taf-stats.d.ts +8 -0
  42. package/dist/commands/taf-stats.d.ts.map +1 -0
  43. package/dist/commands/taf-stats.js +133 -0
  44. package/dist/commands/taf-stats.js.map +1 -0
  45. package/dist/commands/taf-validate.d.ts +8 -0
  46. package/dist/commands/taf-validate.d.ts.map +1 -0
  47. package/dist/commands/taf-validate.js +108 -0
  48. package/dist/commands/taf-validate.js.map +1 -0
  49. package/dist/commands/taf.d.ts +13 -0
  50. package/dist/commands/taf.d.ts.map +1 -0
  51. package/dist/commands/taf.js +97 -0
  52. package/dist/commands/taf.js.map +1 -0
  53. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  54. package/dist/compiler/faf-compiler.js +18 -0
  55. package/dist/compiler/faf-compiler.js.map +1 -1
  56. package/dist/generators/faf-generator-championship.d.ts.map +1 -1
  57. package/dist/generators/faf-generator-championship.js +1 -0
  58. package/dist/generators/faf-generator-championship.js.map +1 -1
  59. package/dist/github/github-extractor.d.ts +56 -0
  60. package/dist/github/github-extractor.d.ts.map +1 -0
  61. package/dist/github/github-extractor.js +328 -0
  62. package/dist/github/github-extractor.js.map +1 -0
  63. package/dist/github/popular-repos.d.ts +43 -0
  64. package/dist/github/popular-repos.d.ts.map +1 -0
  65. package/dist/github/popular-repos.js +205 -0
  66. package/dist/github/popular-repos.js.map +1 -0
  67. package/dist/github/repo-selector.d.ts +48 -0
  68. package/dist/github/repo-selector.d.ts.map +1 -0
  69. package/dist/github/repo-selector.js +277 -0
  70. package/dist/github/repo-selector.js.map +1 -0
  71. package/dist/taf/index.d.ts +17 -0
  72. package/dist/taf/index.d.ts.map +1 -0
  73. package/dist/taf/index.js +57 -0
  74. package/dist/taf/index.js.map +1 -0
  75. package/dist/taf/logger.d.ts +88 -0
  76. package/dist/taf/logger.d.ts.map +1 -0
  77. package/dist/taf/logger.js +137 -0
  78. package/dist/taf/logger.js.map +1 -0
  79. package/dist/taf/parser.d.ts +32 -0
  80. package/dist/taf/parser.d.ts.map +1 -0
  81. package/dist/taf/parser.js +161 -0
  82. package/dist/taf/parser.js.map +1 -0
  83. package/dist/taf/stats.d.ts +31 -0
  84. package/dist/taf/stats.d.ts.map +1 -0
  85. package/dist/taf/stats.js +182 -0
  86. package/dist/taf/stats.js.map +1 -0
  87. package/dist/taf/types.d.ts +77 -0
  88. package/dist/taf/types.d.ts.map +1 -0
  89. package/dist/taf/types.js +9 -0
  90. package/dist/taf/types.js.map +1 -0
  91. package/dist/taf/validator.d.ts +18 -0
  92. package/dist/taf/validator.d.ts.map +1 -0
  93. package/dist/taf/validator.js +148 -0
  94. package/dist/taf/validator.js.map +1 -0
  95. package/dist/utils/file-utils.d.ts +10 -0
  96. package/dist/utils/file-utils.d.ts.map +1 -1
  97. package/dist/utils/file-utils.js +196 -33
  98. package/dist/utils/file-utils.js.map +1 -1
  99. package/dist/utils/native-file-finder.js +1 -1
  100. package/dist/utils/native-file-finder.js.map +1 -1
  101. package/dist/utils/yaml-generator.d.ts +1 -0
  102. package/dist/utils/yaml-generator.d.ts.map +1 -1
  103. package/dist/utils/yaml-generator.js +1 -0
  104. package/dist/utils/yaml-generator.js.map +1 -1
  105. package/package.json +9 -4
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * 🔄 faf rename - Bulk Migration Command
4
+ * Find and migrate all .faf files to project.faf (v1.2.0 standard)
5
+ *
6
+ * Use case: "faf rename ~/Projects" migrates entire system in one command
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.renameCommand = renameCommand;
13
+ const colors_1 = require("../fix-once/colors");
14
+ const fs_1 = require("fs");
15
+ const path_1 = __importDefault(require("path"));
16
+ const championship_style_1 = require("../utils/championship-style");
17
+ const file_utils_1 = require("../utils/file-utils");
18
+ /**
19
+ * Recursively find all .faf files
20
+ */
21
+ async function findAllFafFiles(searchPath, currentDepth = 0, maxDepth = 10) {
22
+ const fafFiles = [];
23
+ if (currentDepth > maxDepth) {
24
+ return fafFiles;
25
+ }
26
+ try {
27
+ const entries = await fs_1.promises.readdir(searchPath, { withFileTypes: true });
28
+ for (const entry of entries) {
29
+ const fullPath = path_1.default.join(searchPath, entry.name);
30
+ // Skip node_modules, .git, etc.
31
+ if (entry.isDirectory()) {
32
+ const skipDirs = ['node_modules', '.git', 'dist', 'build', '.next', '.nuxt', '.svelte-kit', 'target', 'venv', '__pycache__'];
33
+ if (skipDirs.includes(entry.name)) {
34
+ continue;
35
+ }
36
+ // Recurse into subdirectories
37
+ const subFiles = await findAllFafFiles(fullPath, currentDepth + 1, maxDepth);
38
+ fafFiles.push(...subFiles);
39
+ }
40
+ else if (entry.isFile() && entry.name === '.faf') {
41
+ // Found a .faf file!
42
+ fafFiles.push(fullPath);
43
+ }
44
+ }
45
+ }
46
+ catch (error) {
47
+ // Skip directories we can't read (permission errors, etc.)
48
+ if (error.code !== 'EACCES' && error.code !== 'EPERM') {
49
+ // Log other errors but continue
50
+ console.error(colors_1.chalk.gray(` Warning: Could not read ${searchPath}`));
51
+ }
52
+ }
53
+ return fafFiles;
54
+ }
55
+ /**
56
+ * Migrate a single .faf file to project.faf
57
+ */
58
+ async function migrateSingleFile(fafPath, force) {
59
+ const dir = path_1.default.dirname(fafPath);
60
+ const projectFafPath = path_1.default.join(dir, 'project.faf');
61
+ try {
62
+ // Check if project.faf already exists
63
+ const projectFafExists = await (0, file_utils_1.fileExists)(projectFafPath);
64
+ if (projectFafExists && !force) {
65
+ return {
66
+ path: fafPath,
67
+ success: false,
68
+ reason: 'project.faf already exists'
69
+ };
70
+ }
71
+ // Perform the rename
72
+ await fs_1.promises.rename(fafPath, projectFafPath);
73
+ return {
74
+ path: fafPath,
75
+ success: true
76
+ };
77
+ }
78
+ catch (error) {
79
+ return {
80
+ path: fafPath,
81
+ success: false,
82
+ reason: error.message
83
+ };
84
+ }
85
+ }
86
+ /**
87
+ * Main rename command
88
+ */
89
+ async function renameCommand(searchPath, options = {}) {
90
+ const startTime = Date.now();
91
+ const rootPath = searchPath ? path_1.default.resolve(searchPath) : process.cwd();
92
+ console.log();
93
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Searching for .faf files to migrate...`));
94
+ console.log(colors_1.chalk.gray(` Searching in: ${rootPath}`));
95
+ console.log();
96
+ // Check if search path exists
97
+ try {
98
+ const stats = await fs_1.promises.stat(rootPath);
99
+ if (!stats.isDirectory()) {
100
+ console.log(colors_1.chalk.red('❌ Search path must be a directory'));
101
+ console.log();
102
+ return;
103
+ }
104
+ }
105
+ catch (error) {
106
+ console.log(colors_1.chalk.red(`❌ Path not found: ${rootPath}`));
107
+ console.log();
108
+ return;
109
+ }
110
+ // Find all .faf files
111
+ const fafFiles = await findAllFafFiles(rootPath, 0, options.maxDepth || 10);
112
+ if (fafFiles.length === 0) {
113
+ console.log(colors_1.chalk.yellow('⚠️ No .faf files found'));
114
+ console.log();
115
+ console.log(colors_1.chalk.cyan('💡 Already using project.faf? Great! Nothing to migrate.'));
116
+ console.log();
117
+ return;
118
+ }
119
+ console.log(colors_1.chalk.green(`Found ${fafFiles.length} .faf file${fafFiles.length !== 1 ? 's' : ''}`));
120
+ console.log();
121
+ // Dry run mode
122
+ if (options.dryRun) {
123
+ console.log(colors_1.chalk.gray('🔍 Dry run mode - no files will be changed'));
124
+ console.log();
125
+ console.log(colors_1.chalk.green('Would migrate:'));
126
+ for (const fafPath of fafFiles) {
127
+ const dir = path_1.default.dirname(fafPath);
128
+ const relPath = path_1.default.relative(rootPath, dir);
129
+ console.log(colors_1.chalk.gray(` ${relPath || '.'}/`) + colors_1.chalk.red('.faf') + colors_1.chalk.gray(' → ') + colors_1.chalk.cyan('project.faf'));
130
+ }
131
+ console.log();
132
+ console.log(colors_1.chalk.cyan(`Run without --dry-run to perform migration`));
133
+ console.log();
134
+ return;
135
+ }
136
+ // Confirmation for large migrations
137
+ if (fafFiles.length > 10 && !options.noConfirm) {
138
+ console.log(colors_1.chalk.yellow(`⚠️ About to migrate ${fafFiles.length} files`));
139
+ console.log();
140
+ console.log(colors_1.chalk.gray('This will rename:'));
141
+ console.log(colors_1.chalk.gray(' .faf → project.faf'));
142
+ console.log();
143
+ console.log(colors_1.chalk.cyan('Continue? (Use --no-confirm to skip this)'));
144
+ console.log(colors_1.chalk.gray('Press Ctrl+C to cancel, or wait 5 seconds to continue...'));
145
+ console.log();
146
+ // Wait 5 seconds
147
+ await new Promise(resolve => setTimeout(resolve, 5000));
148
+ }
149
+ // Perform migrations
150
+ console.log(championship_style_1.FAF_COLORS.fafOrange('🚀 Migrating...'));
151
+ console.log();
152
+ const results = [];
153
+ let successCount = 0;
154
+ let skipCount = 0;
155
+ let errorCount = 0;
156
+ for (const fafPath of fafFiles) {
157
+ const result = await migrateSingleFile(fafPath, options.force || false);
158
+ results.push(result);
159
+ const dir = path_1.default.dirname(fafPath);
160
+ const relPath = path_1.default.relative(rootPath, dir);
161
+ if (result.success) {
162
+ successCount++;
163
+ console.log(colors_1.chalk.green('☑️ ') + colors_1.chalk.gray(`${relPath || '.'}/`) + colors_1.chalk.cyan('project.faf'));
164
+ }
165
+ else {
166
+ if (result.reason?.includes('already exists')) {
167
+ skipCount++;
168
+ console.log(colors_1.chalk.gray('⊘ ') + colors_1.chalk.gray(`${relPath || '.'}/ (project.faf exists)`));
169
+ }
170
+ else {
171
+ errorCount++;
172
+ console.log(colors_1.chalk.red('✖ ') + colors_1.chalk.gray(`${relPath || '.'}/ - ${result.reason}`));
173
+ }
174
+ }
175
+ }
176
+ const elapsedTime = Date.now() - startTime;
177
+ // Summary
178
+ console.log();
179
+ console.log(championship_style_1.FAF_COLORS.fafOrange('━'.repeat(50)));
180
+ console.log();
181
+ console.log(colors_1.chalk.green.bold(`✅ Migration complete!`));
182
+ console.log();
183
+ console.log(colors_1.chalk.gray('Results:'));
184
+ console.log(colors_1.chalk.green(` ☑️ Migrated: ${successCount}`));
185
+ if (skipCount > 0) {
186
+ console.log(colors_1.chalk.gray(` ⊘ Skipped: ${skipCount} (already using project.faf)`));
187
+ }
188
+ if (errorCount > 0) {
189
+ console.log(colors_1.chalk.red(` ✖ Errors: ${errorCount}`));
190
+ }
191
+ console.log(colors_1.chalk.gray(` ⚡ Time: ${elapsedTime}ms`));
192
+ console.log();
193
+ if (successCount > 0) {
194
+ console.log(championship_style_1.FAF_COLORS.fafOrange('🎉 Your projects are now using the v1.2.0 standard!'));
195
+ console.log();
196
+ console.log(colors_1.chalk.gray('Why project.faf?'));
197
+ console.log(colors_1.chalk.gray(' • Visible in file explorers (not hidden)'));
198
+ console.log(colors_1.chalk.gray(' • Easier to discover and share'));
199
+ console.log(colors_1.chalk.gray(' • Universal like package.json'));
200
+ console.log();
201
+ }
202
+ if (skipCount > 0 && successCount === 0) {
203
+ console.log(colors_1.chalk.cyan('💡 All projects already using project.faf - you\'re all set!'));
204
+ console.log();
205
+ }
206
+ if (errorCount > 0) {
207
+ console.log(colors_1.chalk.yellow('⚠️ Some migrations failed. Run with --force to overwrite existing files.'));
208
+ console.log();
209
+ }
210
+ }
211
+ //# sourceMappingURL=rename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename.js","sourceRoot":"","sources":["../../src/commands/rename.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * faf taf init - Initialize .taf file
3
+ *
4
+ * Creates a new .taf (Testing Activity Feed) file in the current directory
5
+ * Detects .faf file for native reference integration
6
+ */
7
+ interface TAFInitOptions {
8
+ project?: string;
9
+ force?: boolean;
10
+ }
11
+ export declare function tafInit(options?: TAFInitOptions): Promise<void>;
12
+ export declare function runTAFInit(args: string[]): Promise<void>;
13
+ export {};
14
+ //# sourceMappingURL=taf-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taf-init.d.ts","sourceRoot":"","sources":["../../src/commands/taf-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFzE;AAGD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAY9D"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ /**
3
+ * faf taf init - Initialize .taf file
4
+ *
5
+ * Creates a new .taf (Testing Activity Feed) file in the current directory
6
+ * Detects .faf file for native reference integration
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.tafInit = tafInit;
43
+ exports.runTAFInit = runTAFInit;
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ const taf_1 = require("../taf");
47
+ const yaml = __importStar(require("yaml"));
48
+ async function tafInit(options = {}) {
49
+ const tafPath = path.join(process.cwd(), '.taf');
50
+ // Check if .taf already exists
51
+ if (fs.existsSync(tafPath) && !options.force) {
52
+ console.error('❌ .taf file already exists');
53
+ console.log('\nUse --force to overwrite');
54
+ process.exit(1);
55
+ }
56
+ // Get project name
57
+ let projectName = options.project;
58
+ if (!projectName) {
59
+ // Try to get from package.json
60
+ const packageJsonPath = path.join(process.cwd(), 'package.json');
61
+ if (fs.existsSync(packageJsonPath)) {
62
+ try {
63
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
64
+ projectName = pkg.name;
65
+ }
66
+ catch {
67
+ // Ignore errors
68
+ }
69
+ }
70
+ }
71
+ if (!projectName) {
72
+ // Use directory name as fallback
73
+ projectName = path.basename(process.cwd());
74
+ }
75
+ // Check for .faf file (Native Reference)
76
+ const fafPath = path.join(process.cwd(), '.faf');
77
+ const hasFAF = fs.existsSync(fafPath);
78
+ let fafScore;
79
+ if (hasFAF) {
80
+ try {
81
+ const fafContent = fs.readFileSync(fafPath, 'utf-8');
82
+ const faf = yaml.parse(fafContent);
83
+ // Try to extract score from various possible fields
84
+ if (faf.ai_score) {
85
+ const scoreStr = String(faf.ai_score).replace('%', '');
86
+ fafScore = parseInt(scoreStr);
87
+ }
88
+ else if (faf.score) {
89
+ fafScore = parseInt(String(faf.score));
90
+ }
91
+ else if (faf.faf_dna?.current_score) {
92
+ fafScore = parseInt(String(faf.faf_dna.current_score));
93
+ }
94
+ }
95
+ catch {
96
+ // Ignore parsing errors
97
+ }
98
+ }
99
+ // Create .taf file
100
+ const taf = (0, taf_1.createTAF)(projectName, {
101
+ faf_associated: hasFAF,
102
+ faf_location: hasFAF ? '.faf' : undefined,
103
+ faf_score: fafScore,
104
+ });
105
+ // Serialize and format
106
+ const content = (0, taf_1.formatTAF)((0, taf_1.serializeTAF)(taf));
107
+ // Write file
108
+ fs.writeFileSync(tafPath, content, 'utf-8');
109
+ // Success message
110
+ console.log('✅ Created .taf file');
111
+ console.log(`\nProject: ${projectName}`);
112
+ if (hasFAF) {
113
+ console.log('🔗 Native Reference: .faf detected');
114
+ if (fafScore) {
115
+ console.log(` FAF Score: ${fafScore}/100`);
116
+ }
117
+ }
118
+ else {
119
+ console.log('ℹ️ No .faf file found (optional)');
120
+ }
121
+ console.log('\nNext steps:');
122
+ console.log(' faf taf log # Log a test run');
123
+ console.log(' faf taf stats # View statistics');
124
+ console.log(' faf taf validate # Validate format');
125
+ }
126
+ // CLI wrapper
127
+ async function runTAFInit(args) {
128
+ const options = {
129
+ force: args.includes('--force') || args.includes('-f'),
130
+ };
131
+ // Extract project name if provided
132
+ const projectIndex = args.findIndex(arg => arg === '--project' || arg === '-p');
133
+ if (projectIndex !== -1 && args[projectIndex + 1]) {
134
+ options.project = args[projectIndex + 1];
135
+ }
136
+ await tafInit(options);
137
+ }
138
+ //# sourceMappingURL=taf-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taf-init.js","sourceRoot":"","sources":["../../src/commands/taf-init.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,0BAqFC;AAGD,gCAYC;AA9GD,uCAAyB;AACzB,2CAA6B;AAC7B,gCAA4D;AAC5D,2CAA6B;AAOtB,KAAK,UAAU,OAAO,CAAC,UAA0B,EAAE;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjD,+BAA+B;IAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,IAAI,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAElC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,+BAA+B;QAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClE,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,iCAAiC;QACjC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,QAA4B,CAAC;IAEjC,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAEnC,oDAAoD;YACpD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACvD,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACrB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;gBACtC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,GAAG,GAAG,IAAA,eAAS,EAAC,WAAW,EAAE;QACjC,cAAc,EAAE,MAAM;QACtB,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACzC,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IAEH,uBAAuB;IACvB,MAAM,OAAO,GAAG,IAAA,eAAS,EAAC,IAAA,kBAAY,EAAC,GAAG,CAAC,CAAC,CAAC;IAE7C,aAAa;IACb,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5C,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC;IAEzC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,MAAM,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AACtD,CAAC;AAED,cAAc;AACP,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,MAAM,OAAO,GAAmB;QAC9B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;KACvD,CAAC;IAEF,mCAAmC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;IAChF,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * faf taf log - Log a test run
3
+ *
4
+ * Appends a test run entry to .taf file
5
+ * Supports both minimal and detailed modes
6
+ */
7
+ import { TestResult, EnvironmentInfo, VarianceType } from '../taf';
8
+ interface TAFLogOptions {
9
+ minimal?: boolean;
10
+ result?: TestResult;
11
+ passed?: number;
12
+ failed?: number;
13
+ total?: number;
14
+ skipped?: number;
15
+ command?: string;
16
+ trigger?: string;
17
+ issues?: string[];
18
+ root_cause?: string;
19
+ resolution?: string;
20
+ environment?: EnvironmentInfo;
21
+ env_variance?: VarianceType;
22
+ env_notes?: string;
23
+ }
24
+ export declare function tafLog(options?: TAFLogOptions): Promise<void>;
25
+ /**
26
+ * CLI wrapper - parse arguments
27
+ */
28
+ export declare function runTAFLog(args: string[]): Promise<void>;
29
+ export {};
30
+ //# sourceMappingURL=taf-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taf-log.d.ts","sourceRoot":"","sources":["../../src/commands/taf-log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAQL,UAAU,EACV,eAAe,EACf,YAAY,EACb,MAAM,QAAQ,CAAC;AAEhB,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4KvE;AAkCD;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF7D"}