faf-mcp 2.3.0 → 3.0.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/CHANGELOG.md +42 -3
- package/CLAUDE.md +7 -7
- package/README.md +73 -74
- package/dist/src/faf-core/commands/bi-sync.d.ts +1 -3
- package/dist/src/faf-core/commands/bi-sync.js +21 -64
- package/dist/src/faf-core/commands/bi-sync.js.map +1 -1
- package/dist/src/faf-core/commands/sync.js.map +1 -1
- package/dist/src/faf-core/engines/dependency-tsa.js.map +1 -1
- package/dist/src/faf-core/fix-once/colors.js +1 -1
- package/dist/src/faf-core/fix-once/colors.js.map +1 -1
- package/dist/src/faf-core/parsers/agents-parser.d.ts +15 -0
- package/dist/src/faf-core/parsers/agents-parser.js +29 -123
- package/dist/src/faf-core/parsers/agents-parser.js.map +1 -1
- package/dist/src/faf-core/parsers/conductor-parser.js +1 -1
- package/dist/src/faf-core/parsers/conductor-parser.js.map +1 -1
- package/dist/src/faf-core/parsers/cursorrules-parser.d.ts +15 -0
- package/dist/src/faf-core/parsers/cursorrules-parser.js +54 -111
- package/dist/src/faf-core/parsers/cursorrules-parser.js.map +1 -1
- package/dist/src/faf-core/parsers/faf-git-generator.js +0 -1
- package/dist/src/faf-core/parsers/faf-git-generator.js.map +1 -1
- package/dist/src/faf-core/parsers/gemini-parser.d.ts +10 -0
- package/dist/src/faf-core/parsers/gemini-parser.js +19 -77
- package/dist/src/faf-core/parsers/gemini-parser.js.map +1 -1
- package/dist/src/handlers/engine-adapter.d.ts +13 -12
- package/dist/src/handlers/engine-adapter.js +124 -688
- package/dist/src/handlers/engine-adapter.js.map +1 -1
- package/dist/src/handlers/resources.d.ts +19 -1
- package/dist/src/handlers/resources.js +108 -23
- package/dist/src/handlers/resources.js.map +1 -1
- package/dist/src/handlers/skills.d.ts +70 -0
- package/dist/src/handlers/skills.js +174 -0
- package/dist/src/handlers/skills.js.map +1 -0
- package/dist/src/handlers/tools.d.ts +41 -5
- package/dist/src/handlers/tools.js +213 -258
- package/dist/src/handlers/tools.js.map +1 -1
- package/dist/src/server.d.ts +4 -0
- package/dist/src/server.js +51 -6
- package/dist/src/server.js.map +1 -1
- package/dist/src/utils/faf-cli-bridge.d.ts +2 -0
- package/dist/src/utils/faf-cli-bridge.js +16 -0
- package/dist/src/utils/faf-cli-bridge.js.map +1 -1
- package/package.json +17 -14
- package/project.faf +23 -5
- package/scripts/check-engines.mjs +53 -0
- package/scripts/run-tests.sh +54 -0
- package/scripts/sync-version.js +33 -19
- package/skills/faf-ide/SKILL.md +40 -0
- package/dist/src/config/visibility.d.ts +0 -41
- package/dist/src/config/visibility.js +0 -158
- package/dist/src/config/visibility.js.map +0 -1
- package/dist/src/faf-core/commands/audit.d.ts +0 -21
- package/dist/src/faf-core/commands/audit.js +0 -83
- package/dist/src/faf-core/commands/audit.js.map +0 -1
- package/dist/src/faf-core/commands/auto.d.ts +0 -25
- package/dist/src/faf-core/commands/auto.js +0 -74
- package/dist/src/faf-core/commands/auto.js.map +0 -1
- package/dist/src/faf-core/commands/doctor.d.ts +0 -17
- package/dist/src/faf-core/commands/doctor.js +0 -198
- package/dist/src/faf-core/commands/doctor.js.map +0 -1
- package/dist/src/faf-core/commands/enhance.d.ts +0 -46
- package/dist/src/faf-core/commands/enhance.js +0 -360
- package/dist/src/faf-core/commands/enhance.js.map +0 -1
- package/dist/src/faf-core/commands/formats.d.ts +0 -22
- package/dist/src/faf-core/commands/formats.js +0 -117
- package/dist/src/faf-core/commands/formats.js.map +0 -1
- package/dist/src/faf-core/commands/human.d.ts +0 -27
- package/dist/src/faf-core/commands/human.js +0 -183
- package/dist/src/faf-core/commands/human.js.map +0 -1
- package/dist/src/faf-core/commands/init.d.ts +0 -26
- package/dist/src/faf-core/commands/init.js +0 -114
- package/dist/src/faf-core/commands/init.js.map +0 -1
- package/dist/src/faf-core/commands/innit.d.ts +0 -7
- package/dist/src/faf-core/commands/innit.js +0 -13
- package/dist/src/faf-core/commands/innit.js.map +0 -1
- package/dist/src/faf-core/commands/migrate.d.ts +0 -15
- package/dist/src/faf-core/commands/migrate.js +0 -86
- package/dist/src/faf-core/commands/migrate.js.map +0 -1
- package/dist/src/faf-core/commands/quick.d.ts +0 -16
- package/dist/src/faf-core/commands/quick.js +0 -184
- package/dist/src/faf-core/commands/quick.js.map +0 -1
- package/dist/src/faf-core/commands/readme.d.ts +0 -47
- package/dist/src/faf-core/commands/readme.js +0 -361
- package/dist/src/faf-core/commands/readme.js.map +0 -1
- package/dist/src/faf-core/commands/score.d.ts +0 -47
- package/dist/src/faf-core/commands/score.js +0 -49
- package/dist/src/faf-core/commands/score.js.map +0 -1
- package/dist/src/faf-core/commands/update.d.ts +0 -12
- package/dist/src/faf-core/commands/update.js +0 -46
- package/dist/src/faf-core/commands/update.js.map +0 -1
- package/dist/src/faf-core/commands/validate.d.ts +0 -21
- package/dist/src/faf-core/commands/validate.js +0 -81
- package/dist/src/faf-core/commands/validate.js.map +0 -1
- package/dist/src/faf-core/compiler/faf-compiler.d.ts +0 -138
- package/dist/src/faf-core/compiler/faf-compiler.js +0 -1362
- package/dist/src/faf-core/compiler/faf-compiler.js.map +0 -1
- package/dist/src/faf-core/engines/fab-formats-processor.d.ts +0 -166
- package/dist/src/faf-core/engines/fab-formats-processor.js +0 -1274
- package/dist/src/faf-core/engines/fab-formats-processor.js.map +0 -1
- package/dist/src/faf-core/engines/faf-dna.d.ts +0 -159
- package/dist/src/faf-core/engines/faf-dna.js +0 -555
- package/dist/src/faf-core/engines/faf-dna.js.map +0 -1
- package/dist/src/faf-core/engines/relentless-context-extractor.d.ts +0 -100
- package/dist/src/faf-core/engines/relentless-context-extractor.js +0 -625
- package/dist/src/faf-core/engines/relentless-context-extractor.js.map +0 -1
- package/dist/src/faf-core/fix-once/types.d.ts +0 -257
- package/dist/src/faf-core/fix-once/types.js +0 -26
- package/dist/src/faf-core/fix-once/types.js.map +0 -1
- package/dist/src/faf-core/generators/faf-generator-championship.d.ts +0 -16
- package/dist/src/faf-core/generators/faf-generator-championship.js +0 -463
- package/dist/src/faf-core/generators/faf-generator-championship.js.map +0 -1
- package/dist/src/faf-core/inject.d.ts +0 -19
- package/dist/src/faf-core/inject.js +0 -57
- package/dist/src/faf-core/inject.js.map +0 -1
- package/dist/src/faf-core/parsers/index.d.ts +0 -12
- package/dist/src/faf-core/parsers/index.js +0 -29
- package/dist/src/faf-core/parsers/index.js.map +0 -1
- package/dist/src/faf-core/utils/balance-visualizer.d.ts +0 -37
- package/dist/src/faf-core/utils/balance-visualizer.js +0 -197
- package/dist/src/faf-core/utils/balance-visualizer.js.map +0 -1
- package/dist/src/faf-core/utils/championship-style.d.ts +0 -109
- package/dist/src/faf-core/utils/championship-style.js +0 -219
- package/dist/src/faf-core/utils/championship-style.js.map +0 -1
- package/dist/src/faf-core/utils/chrome-extension-detector.d.ts +0 -73
- package/dist/src/faf-core/utils/chrome-extension-detector.js +0 -268
- package/dist/src/faf-core/utils/chrome-extension-detector.js.map +0 -1
- package/dist/src/faf-core/utils/platform-detector.d.ts +0 -30
- package/dist/src/faf-core/utils/platform-detector.js +0 -218
- package/dist/src/faf-core/utils/platform-detector.js.map +0 -1
- package/dist/src/faf-core/utils/technical-credit.d.ts +0 -35
- package/dist/src/faf-core/utils/technical-credit.js +0 -286
- package/dist/src/faf-core/utils/technical-credit.js.map +0 -1
- package/dist/src/faf-core/utils/yaml-generator.d.ts +0 -41
- package/dist/src/faf-core/utils/yaml-generator.js +0 -360
- package/dist/src/faf-core/utils/yaml-generator.js.map +0 -1
- package/dist/src/handlers/behavioral-instruction.d.ts +0 -16
- package/dist/src/handlers/behavioral-instruction.js +0 -43
- package/dist/src/handlers/behavioral-instruction.js.map +0 -1
- package/dist/src/handlers/championship-tools.d.ts +0 -116
- package/dist/src/handlers/championship-tools.js +0 -2320
- package/dist/src/handlers/championship-tools.js.map +0 -1
- package/dist/src/handlers/cloud-handler.d.ts +0 -59
- package/dist/src/handlers/cloud-handler.js +0 -348
- package/dist/src/handlers/cloud-handler.js.map +0 -1
- package/dist/src/handlers/tool-registry.d.ts +0 -23
- package/dist/src/handlers/tool-registry.js +0 -68
- package/dist/src/handlers/tool-registry.js.map +0 -1
- package/dist/src/handlers/tool-types.d.ts +0 -167
- package/dist/src/handlers/tool-types.js +0 -7
- package/dist/src/handlers/tool-types.js.map +0 -1
- package/dist/src/test-all-functions.d.ts +0 -15
- package/dist/src/test-all-functions.js +0 -163
- package/dist/src/test-all-functions.js.map +0 -1
- package/dist/src/types/mcp-tools.d.ts +0 -53
- package/dist/src/types/mcp-tools.js +0 -77
- package/dist/src/types/mcp-tools.js.map +0 -1
- package/dist/src/types/tool-visibility.d.ts +0 -36
- package/dist/src/types/tool-visibility.js +0 -551
- package/dist/src/types/tool-visibility.js.map +0 -1
- package/dist/src/utils/auto-path-detection.d.ts +0 -26
- package/dist/src/utils/auto-path-detection.js +0 -198
- package/dist/src/utils/auto-path-detection.js.map +0 -1
- package/dist/src/utils/championship-format.d.ts +0 -30
- package/dist/src/utils/championship-format.js +0 -81
- package/dist/src/utils/championship-format.js.map +0 -1
- package/dist/src/utils/cli-detector.d.ts +0 -17
- package/dist/src/utils/cli-detector.js +0 -247
- package/dist/src/utils/cli-detector.js.map +0 -1
- package/dist/src/utils/display-protocol.d.ts +0 -57
- package/dist/src/utils/display-protocol.js +0 -131
- package/dist/src/utils/display-protocol.js.map +0 -1
- package/dist/src/utils/username-detector.d.ts +0 -27
- package/dist/src/utils/username-detector.js +0 -90
- package/dist/src/utils/username-detector.js.map +0 -1
- package/dist/src/utils/visual-style.d.ts +0 -62
- package/dist/src/utils/visual-style.js +0 -166
- package/dist/src/utils/visual-style.js.map +0 -1
- package/scripts/postinstall.js +0 -50
- package/skill/SKILL.md +0 -385
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quick.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/quick.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* README Context Extraction - MCP Bundled Version
|
|
3
|
-
* Non-interactive extraction of 6 Ws from README files
|
|
4
|
-
*/
|
|
5
|
-
export interface ExtractedContext {
|
|
6
|
-
who?: string;
|
|
7
|
-
what?: string;
|
|
8
|
-
where?: string;
|
|
9
|
-
why?: string;
|
|
10
|
-
when?: string;
|
|
11
|
-
how?: string;
|
|
12
|
-
confidence: {
|
|
13
|
-
who: number;
|
|
14
|
-
what: number;
|
|
15
|
-
where: number;
|
|
16
|
-
why: number;
|
|
17
|
-
when: number;
|
|
18
|
-
how: number;
|
|
19
|
-
overall: number;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
export interface ReadmeExtractResult {
|
|
23
|
-
success: boolean;
|
|
24
|
-
message: string;
|
|
25
|
-
extracted?: ExtractedContext;
|
|
26
|
-
readmePath?: string;
|
|
27
|
-
error?: string;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Extract 6 Ws from README content
|
|
31
|
-
* Ported from faf-cli v4.3.0
|
|
32
|
-
*/
|
|
33
|
-
export declare function extractSixWs(content: string): ExtractedContext;
|
|
34
|
-
/**
|
|
35
|
-
* Extract context from README file
|
|
36
|
-
* Non-interactive MCP version
|
|
37
|
-
*/
|
|
38
|
-
export declare function readmeExtractCommand(projectPath: string): Promise<ReadmeExtractResult>;
|
|
39
|
-
/**
|
|
40
|
-
* Extract and merge README context into project.faf
|
|
41
|
-
* Combines extraction + merging in one step
|
|
42
|
-
*/
|
|
43
|
-
export declare function readmeMergeCommand(projectPath: string, options?: {
|
|
44
|
-
overwrite?: boolean;
|
|
45
|
-
}): Promise<ReadmeExtractResult & {
|
|
46
|
-
fieldsUpdated?: string[];
|
|
47
|
-
}>;
|
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* README Context Extraction - MCP Bundled Version
|
|
4
|
-
* Non-interactive extraction of 6 Ws from README files
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
-
var ownKeys = function(o) {
|
|
24
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
-
var ar = [];
|
|
26
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
|
-
return ownKeys(o);
|
|
30
|
-
};
|
|
31
|
-
return function (mod) {
|
|
32
|
-
if (mod && mod.__esModule) return mod;
|
|
33
|
-
var result = {};
|
|
34
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
-
__setModuleDefault(result, mod);
|
|
36
|
-
return result;
|
|
37
|
-
};
|
|
38
|
-
})();
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.extractSixWs = extractSixWs;
|
|
41
|
-
exports.readmeExtractCommand = readmeExtractCommand;
|
|
42
|
-
exports.readmeMergeCommand = readmeMergeCommand;
|
|
43
|
-
const fs_1 = require("fs");
|
|
44
|
-
const yaml_1 = require("yaml");
|
|
45
|
-
const path = __importStar(require("path"));
|
|
46
|
-
/**
|
|
47
|
-
* Find README file in project directory
|
|
48
|
-
*/
|
|
49
|
-
async function findReadmeFile(projectPath) {
|
|
50
|
-
const possibleNames = [
|
|
51
|
-
'README.md',
|
|
52
|
-
'readme.md',
|
|
53
|
-
'Readme.md',
|
|
54
|
-
'README.markdown',
|
|
55
|
-
'README',
|
|
56
|
-
];
|
|
57
|
-
for (const name of possibleNames) {
|
|
58
|
-
const readmePath = path.join(projectPath, name);
|
|
59
|
-
try {
|
|
60
|
-
await fs_1.promises.access(readmePath);
|
|
61
|
-
return readmePath;
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// File doesn't exist, continue
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Extract 6 Ws from README content
|
|
71
|
-
* Ported from faf-cli v4.3.0
|
|
72
|
-
*/
|
|
73
|
-
function extractSixWs(content) {
|
|
74
|
-
const context = {
|
|
75
|
-
confidence: {
|
|
76
|
-
who: 0,
|
|
77
|
-
what: 0,
|
|
78
|
-
where: 0,
|
|
79
|
-
why: 0,
|
|
80
|
-
when: 0,
|
|
81
|
-
how: 0,
|
|
82
|
-
overall: 0,
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
// WHAT extraction
|
|
86
|
-
const whatPatterns = [
|
|
87
|
-
// Bold subtitle pattern
|
|
88
|
-
/^[#\s]*(.+?)\n\*\*(.+?)\*\*/m,
|
|
89
|
-
// Blockquote tagline
|
|
90
|
-
/^>\s*\*\*(.+?)\*\*/m,
|
|
91
|
-
// First paragraph after title
|
|
92
|
-
/^#\s+.+\n\n(.+?)(?:\n\n|\n#)/s,
|
|
93
|
-
// TL;DR
|
|
94
|
-
/\*\*TL;DR:?\*\*\s*(.+?)(?:\n\n|\n#)/is,
|
|
95
|
-
// Description section
|
|
96
|
-
/##\s+(?:Description|About)\n+(.+?)(?:\n\n|\n#)/is,
|
|
97
|
-
];
|
|
98
|
-
for (const pattern of whatPatterns) {
|
|
99
|
-
const match = content.match(pattern);
|
|
100
|
-
if (match) {
|
|
101
|
-
const captured = match[2] || match[1];
|
|
102
|
-
if (captured && captured.length > 10 && captured.length < 200) {
|
|
103
|
-
context.what = captured.trim();
|
|
104
|
-
context.confidence.what = 0.8;
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// WHY extraction
|
|
110
|
-
const whyPatterns = [
|
|
111
|
-
// Explicit Why section
|
|
112
|
-
/##\s+Why\s*\n+(.+?)(?:\n\n|\n#)/is,
|
|
113
|
-
// Problem/Solution pattern
|
|
114
|
-
/##\s+(?:The )?Problem\s*\n+(.+?)(?:\n\n|\n#)/is,
|
|
115
|
-
// Motivation section
|
|
116
|
-
/##\s+Motivation\s*\n+(.+?)(?:\n\n|\n#)/is,
|
|
117
|
-
// Benefits/Features with "saves" or "reduces"
|
|
118
|
-
/(?:saves?|reduces?|eliminates?)\s+(.+?)(?:\n|\.)/i,
|
|
119
|
-
];
|
|
120
|
-
for (const pattern of whyPatterns) {
|
|
121
|
-
const match = content.match(pattern);
|
|
122
|
-
if (match && match[1]) {
|
|
123
|
-
const captured = match[1].trim();
|
|
124
|
-
if (captured.length > 10 && captured.length < 300) {
|
|
125
|
-
context.why = captured;
|
|
126
|
-
context.confidence.why = 0.7;
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
// WHO extraction
|
|
132
|
-
const whoPatterns = [
|
|
133
|
-
// "for developers/teams/etc"
|
|
134
|
-
/\bfor\s+((?:(?:web|mobile|backend|frontend|full-?stack|data|ML|AI|DevOps)\s+)?(?:developers?|engineers?|teams?|designers?|architects?|programmers?))/i,
|
|
135
|
-
// "built for X"
|
|
136
|
-
/\bbuilt\s+for\s+(.+?)(?:\.|,|\n)/i,
|
|
137
|
-
// "designed for X"
|
|
138
|
-
/\bdesigned\s+for\s+(.+?)(?:\.|,|\n)/i,
|
|
139
|
-
];
|
|
140
|
-
for (const pattern of whoPatterns) {
|
|
141
|
-
const match = content.match(pattern);
|
|
142
|
-
if (match && match[1]) {
|
|
143
|
-
const captured = match[1].trim();
|
|
144
|
-
if (captured.length > 3 && captured.length < 100) {
|
|
145
|
-
context.who = captured;
|
|
146
|
-
context.confidence.who = 0.6;
|
|
147
|
-
break;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
// WHERE extraction (platform/environment)
|
|
152
|
-
const platformIndicators = {
|
|
153
|
-
'Terminal/CLI': /\b(?:npm|pip|cargo|brew|cli|command[\s-]?line)\b/i,
|
|
154
|
-
'Browser': /\b(?:browser|chrome|firefox|safari|web|frontend|client-side)\b/i,
|
|
155
|
-
'Node.js': /\b(?:node\.?js|npm|express|fastify)\b/i,
|
|
156
|
-
'Cloud': /\b(?:AWS|Azure|GCP|cloud|serverless|lambda|vercel|netlify)\b/i,
|
|
157
|
-
'Docker': /\b(?:docker|container|kubernetes|k8s)\b/i,
|
|
158
|
-
'Desktop': /\b(?:electron|tauri|desktop|native)\b/i,
|
|
159
|
-
};
|
|
160
|
-
const whereMatches = [];
|
|
161
|
-
for (const [platform, pattern] of Object.entries(platformIndicators)) {
|
|
162
|
-
if (pattern.test(content)) {
|
|
163
|
-
whereMatches.push(platform);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
if (whereMatches.length > 0) {
|
|
167
|
-
context.where = whereMatches.join(', ');
|
|
168
|
-
context.confidence.where = Math.min(0.7, whereMatches.length * 0.2);
|
|
169
|
-
}
|
|
170
|
-
// WHEN extraction (status, timeline)
|
|
171
|
-
const whenPatterns = [
|
|
172
|
-
// Status badges
|
|
173
|
-
/!\[.*?\]\(https:\/\/(?:github\.com|shields\.io|badge\.fury\.io|circleci\.com|travis-ci\.org|github\.com\/.*?\/workflows|img\.shields\.io).*?\)/,
|
|
174
|
-
// Version indicators
|
|
175
|
-
/\bv?\d+\.\d+\.\d+\b/,
|
|
176
|
-
// Test status
|
|
177
|
-
/\b\d+\/\d+\s+tests?\s+passing\b/i,
|
|
178
|
-
// Production ready indicators
|
|
179
|
-
/\b(?:production[\s-]?ready|stable|beta|alpha|experimental)\b/i,
|
|
180
|
-
];
|
|
181
|
-
const whenIndicators = [];
|
|
182
|
-
for (const pattern of whenPatterns) {
|
|
183
|
-
const matches = content.match(new RegExp(pattern, 'g'));
|
|
184
|
-
if (matches) {
|
|
185
|
-
whenIndicators.push(...matches);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
if (whenIndicators.length > 0) {
|
|
189
|
-
// Extract status
|
|
190
|
-
const statusMatch = content.match(/\b(production[\s-]?ready|stable|beta|alpha|experimental)\b/i);
|
|
191
|
-
const testsMatch = content.match(/\b(\d+\/\d+)\s+tests?\s+passing\b/i);
|
|
192
|
-
const versionMatch = content.match(/\bv?(\d+\.\d+\.\d+)\b/);
|
|
193
|
-
const whenParts = [];
|
|
194
|
-
if (statusMatch)
|
|
195
|
-
whenParts.push(statusMatch[1]);
|
|
196
|
-
if (testsMatch)
|
|
197
|
-
whenParts.push(`${testsMatch[1]} tests passing`);
|
|
198
|
-
if (versionMatch && !whenParts.length)
|
|
199
|
-
whenParts.push(`v${versionMatch[1]}`);
|
|
200
|
-
context.when = whenParts.join(', ') || 'Active development';
|
|
201
|
-
context.confidence.when = 0.5;
|
|
202
|
-
}
|
|
203
|
-
// HOW extraction (getting started)
|
|
204
|
-
const howPatterns = [
|
|
205
|
-
// Quick Start section
|
|
206
|
-
/##\s+(?:Quick\s+Start|Getting\s+Started|Installation)\s*\n+```(?:bash|sh|shell)?\s*\n(.+?)\n```/is,
|
|
207
|
-
// npm install
|
|
208
|
-
/```(?:bash|sh|shell)?\s*\n(npm\s+install.+?)\n```/is,
|
|
209
|
-
// pip install
|
|
210
|
-
/```(?:bash|sh|shell)?\s*\n(pip\s+install.+?)\n```/is,
|
|
211
|
-
// cargo install
|
|
212
|
-
/```(?:bash|sh|shell)?\s*\n(cargo\s+install.+?)\n```/is,
|
|
213
|
-
// brew install
|
|
214
|
-
/```(?:bash|sh|shell)?\s*\n(brew\s+install.+?)\n```/is,
|
|
215
|
-
];
|
|
216
|
-
for (const pattern of howPatterns) {
|
|
217
|
-
const match = content.match(pattern);
|
|
218
|
-
if (match && match[1]) {
|
|
219
|
-
const captured = match[1].trim();
|
|
220
|
-
if (captured.length > 5 && captured.length < 200) {
|
|
221
|
-
context.how = captured;
|
|
222
|
-
context.confidence.how = 0.8;
|
|
223
|
-
break;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
// Calculate overall confidence
|
|
228
|
-
const confidenceValues = Object.values(context.confidence).filter((v) => typeof v === 'number' && v > 0);
|
|
229
|
-
context.confidence.overall =
|
|
230
|
-
confidenceValues.length > 0
|
|
231
|
-
? confidenceValues.reduce((a, b) => a + b, 0) / 6 // Average across all 6 Ws
|
|
232
|
-
: 0;
|
|
233
|
-
return context;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Extract context from README file
|
|
237
|
-
* Non-interactive MCP version
|
|
238
|
-
*/
|
|
239
|
-
async function readmeExtractCommand(projectPath) {
|
|
240
|
-
try {
|
|
241
|
-
// Find README file
|
|
242
|
-
const readmePath = await findReadmeFile(projectPath);
|
|
243
|
-
if (!readmePath) {
|
|
244
|
-
return {
|
|
245
|
-
success: false,
|
|
246
|
-
message: 'No README file found',
|
|
247
|
-
error: 'Create a README.md to enable context extraction',
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
// Read README content
|
|
251
|
-
const content = await fs_1.promises.readFile(readmePath, 'utf-8');
|
|
252
|
-
// Extract 6 Ws
|
|
253
|
-
const extracted = extractSixWs(content);
|
|
254
|
-
// Check if we got anything useful
|
|
255
|
-
const fieldsExtracted = [
|
|
256
|
-
extracted.who,
|
|
257
|
-
extracted.what,
|
|
258
|
-
extracted.where,
|
|
259
|
-
extracted.why,
|
|
260
|
-
extracted.when,
|
|
261
|
-
extracted.how,
|
|
262
|
-
].filter((f) => f !== undefined).length;
|
|
263
|
-
if (fieldsExtracted === 0) {
|
|
264
|
-
return {
|
|
265
|
-
success: false,
|
|
266
|
-
message: 'Could not extract context from README',
|
|
267
|
-
error: 'README may not contain recognizable patterns for WHO/WHAT/WHY/WHERE/WHEN/HOW',
|
|
268
|
-
readmePath,
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
return {
|
|
272
|
-
success: true,
|
|
273
|
-
message: `Extracted ${fieldsExtracted}/6 fields from README (${Math.round(extracted.confidence.overall * 100)}% confidence)`,
|
|
274
|
-
extracted,
|
|
275
|
-
readmePath,
|
|
276
|
-
};
|
|
277
|
-
}
|
|
278
|
-
catch (error) {
|
|
279
|
-
return {
|
|
280
|
-
success: false,
|
|
281
|
-
message: 'Failed to extract context from README',
|
|
282
|
-
error: error instanceof Error ? error.message : String(error),
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Extract and merge README context into project.faf
|
|
288
|
-
* Combines extraction + merging in one step
|
|
289
|
-
*/
|
|
290
|
-
async function readmeMergeCommand(projectPath, options = {}) {
|
|
291
|
-
try {
|
|
292
|
-
// First extract
|
|
293
|
-
const extractResult = await readmeExtractCommand(projectPath);
|
|
294
|
-
if (!extractResult.success || !extractResult.extracted) {
|
|
295
|
-
return extractResult;
|
|
296
|
-
}
|
|
297
|
-
// Find or create .faf file
|
|
298
|
-
const possiblePaths = [
|
|
299
|
-
path.join(projectPath, 'project.faf'),
|
|
300
|
-
path.join(projectPath, '.faf'),
|
|
301
|
-
];
|
|
302
|
-
let fafPath = null;
|
|
303
|
-
for (const p of possiblePaths) {
|
|
304
|
-
try {
|
|
305
|
-
await fs_1.promises.access(p);
|
|
306
|
-
fafPath = p;
|
|
307
|
-
break;
|
|
308
|
-
}
|
|
309
|
-
catch {
|
|
310
|
-
// Continue
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
if (!fafPath) {
|
|
314
|
-
fafPath = path.join(projectPath, 'project.faf');
|
|
315
|
-
}
|
|
316
|
-
// Read or create .faf data
|
|
317
|
-
let fafData = {};
|
|
318
|
-
try {
|
|
319
|
-
const fafContent = await fs_1.promises.readFile(fafPath, 'utf-8');
|
|
320
|
-
fafData = (0, yaml_1.parse)(fafContent) || {};
|
|
321
|
-
}
|
|
322
|
-
catch {
|
|
323
|
-
// New file
|
|
324
|
-
}
|
|
325
|
-
if (!fafData.human_context) {
|
|
326
|
-
fafData.human_context = {};
|
|
327
|
-
}
|
|
328
|
-
// Merge extracted context
|
|
329
|
-
const fieldsUpdated = [];
|
|
330
|
-
const extracted = extractResult.extracted;
|
|
331
|
-
for (const field of ['who', 'what', 'where', 'why', 'when', 'how']) {
|
|
332
|
-
const value = extracted[field];
|
|
333
|
-
if (value) {
|
|
334
|
-
// Only update if overwrite is true OR field is empty
|
|
335
|
-
if (options.overwrite || !fafData.human_context[field]) {
|
|
336
|
-
fafData.human_context[field] = value;
|
|
337
|
-
fieldsUpdated.push(field);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
// Save updated .faf
|
|
342
|
-
if (fieldsUpdated.length > 0) {
|
|
343
|
-
await fs_1.promises.writeFile(fafPath, (0, yaml_1.stringify)(fafData), 'utf-8');
|
|
344
|
-
}
|
|
345
|
-
return {
|
|
346
|
-
...extractResult,
|
|
347
|
-
fieldsUpdated,
|
|
348
|
-
message: fieldsUpdated.length > 0
|
|
349
|
-
? `Extracted and merged ${fieldsUpdated.length} field(s) into ${path.basename(fafPath)}`
|
|
350
|
-
: 'No new fields to merge (use overwrite option to replace existing)',
|
|
351
|
-
};
|
|
352
|
-
}
|
|
353
|
-
catch (error) {
|
|
354
|
-
return {
|
|
355
|
-
success: false,
|
|
356
|
-
message: 'Failed to merge README context',
|
|
357
|
-
error: error instanceof Error ? error.message : String(error),
|
|
358
|
-
};
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
//# sourceMappingURL=readme.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"readme.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/readme.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* faf score - Programmatic API (MCP-ready)
|
|
3
|
-
* No console output, returns structured data
|
|
4
|
-
*/
|
|
5
|
-
import { type CompilationResult } from '../compiler/faf-compiler.js';
|
|
6
|
-
export interface ScoreOptions {
|
|
7
|
-
json?: boolean;
|
|
8
|
-
trace?: boolean;
|
|
9
|
-
verify?: boolean;
|
|
10
|
-
breakdown?: boolean;
|
|
11
|
-
checksum?: string;
|
|
12
|
-
}
|
|
13
|
-
export interface ScoreResult {
|
|
14
|
-
score: number;
|
|
15
|
-
filled: number;
|
|
16
|
-
total: number;
|
|
17
|
-
breakdown: {
|
|
18
|
-
project: {
|
|
19
|
-
filled: number;
|
|
20
|
-
total: number;
|
|
21
|
-
percentage: number;
|
|
22
|
-
};
|
|
23
|
-
stack: {
|
|
24
|
-
filled: number;
|
|
25
|
-
total: number;
|
|
26
|
-
percentage: number;
|
|
27
|
-
};
|
|
28
|
-
human: {
|
|
29
|
-
filled: number;
|
|
30
|
-
total: number;
|
|
31
|
-
percentage: number;
|
|
32
|
-
};
|
|
33
|
-
discovery: {
|
|
34
|
-
filled: number;
|
|
35
|
-
total: number;
|
|
36
|
-
percentage: number;
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
trace?: CompilationResult['trace'];
|
|
40
|
-
diagnostics?: CompilationResult['diagnostics'];
|
|
41
|
-
checksum?: string;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Score a .faf file - programmatic API
|
|
45
|
-
* Returns structured data, no console output
|
|
46
|
-
*/
|
|
47
|
-
export declare function scoreFafFile(file?: string, options?: ScoreOptions): Promise<ScoreResult>;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* faf score - Programmatic API (MCP-ready)
|
|
4
|
-
* No console output, returns structured data
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.scoreFafFile = scoreFafFile;
|
|
8
|
-
const faf_compiler_js_1 = require("../compiler/faf-compiler.js");
|
|
9
|
-
const file_utils_js_1 = require("../utils/file-utils.js");
|
|
10
|
-
/**
|
|
11
|
-
* Score a .faf file - programmatic API
|
|
12
|
-
* Returns structured data, no console output
|
|
13
|
-
*/
|
|
14
|
-
async function scoreFafFile(file, options = {}) {
|
|
15
|
-
// Find .faf file
|
|
16
|
-
const fafPath = file || await (0, file_utils_js_1.findFafFile)(process.cwd());
|
|
17
|
-
if (!fafPath) {
|
|
18
|
-
throw new Error('No .faf file found');
|
|
19
|
-
}
|
|
20
|
-
// Create compiler
|
|
21
|
-
const compiler = new faf_compiler_js_1.FafCompiler();
|
|
22
|
-
// Compile with or without trace
|
|
23
|
-
const result = options.trace
|
|
24
|
-
? await compiler.compileWithTrace(fafPath)
|
|
25
|
-
: await compiler.compile(fafPath);
|
|
26
|
-
// Verify checksum if provided
|
|
27
|
-
if (options.checksum && result.checksum !== options.checksum) {
|
|
28
|
-
throw new Error(`Checksum mismatch: expected ${options.checksum}, got ${result.checksum}`);
|
|
29
|
-
}
|
|
30
|
-
// Return structured data
|
|
31
|
-
const scoreResult = {
|
|
32
|
-
score: result.score,
|
|
33
|
-
filled: result.filled,
|
|
34
|
-
total: result.total,
|
|
35
|
-
breakdown: result.breakdown,
|
|
36
|
-
};
|
|
37
|
-
// Add optional fields
|
|
38
|
-
if (options.trace) {
|
|
39
|
-
scoreResult.trace = result.trace;
|
|
40
|
-
}
|
|
41
|
-
if (options.breakdown && result.diagnostics.length > 0) {
|
|
42
|
-
scoreResult.diagnostics = result.diagnostics;
|
|
43
|
-
}
|
|
44
|
-
if (options.checksum || options.verify) {
|
|
45
|
-
scoreResult.checksum = result.checksum;
|
|
46
|
-
}
|
|
47
|
-
return scoreResult;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=score.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/score.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAgDH,oCA2CC;AAzFD,iEAAkF;AAClF,0DAAqD;AAyCrD;;;GAGG;AACI,KAAK,UAAU,YAAY,CAAC,IAAa,EAAE,UAAwB,EAAE;IAC1E,iBAAiB;IACjB,MAAM,OAAO,GAAG,IAAI,IAAI,MAAM,IAAA,2BAAW,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,kBAAkB;IAClB,MAAM,QAAQ,GAAG,IAAI,6BAAW,EAAE,CAAC;IAEnC,gCAAgC;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK;QAC1B,CAAC,CAAC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAC1C,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC,8BAA8B;IAC9B,IAAI,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,QAAQ,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,yBAAyB;IACzB,MAAM,WAAW,GAAgB;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;IAEF,sBAAsB;IACtB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 📦 faf update - Update project.faf metadata (Mk3 Bundled)
|
|
3
|
-
*/
|
|
4
|
-
export interface UpdateOptions {
|
|
5
|
-
json?: boolean;
|
|
6
|
-
}
|
|
7
|
-
export interface UpdateResult {
|
|
8
|
-
success: boolean;
|
|
9
|
-
updated: boolean;
|
|
10
|
-
message: string;
|
|
11
|
-
}
|
|
12
|
-
export declare function updateFafFile(projectPath?: string, options?: UpdateOptions): Promise<UpdateResult>;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* 📦 faf update - Update project.faf metadata (Mk3 Bundled)
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.updateFafFile = updateFafFile;
|
|
7
|
-
const fs_1 = require("fs");
|
|
8
|
-
const yaml_1 = require("../fix-once/yaml");
|
|
9
|
-
const file_utils_1 = require("../utils/file-utils");
|
|
10
|
-
async function updateFafFile(projectPath, options = {}) {
|
|
11
|
-
try {
|
|
12
|
-
const fafPath = projectPath ? `${projectPath}/project.faf` : await (0, file_utils_1.findFafFile)();
|
|
13
|
-
if (!fafPath || !await (0, file_utils_1.fileExists)(fafPath)) {
|
|
14
|
-
return {
|
|
15
|
-
success: false,
|
|
16
|
-
updated: false,
|
|
17
|
-
message: 'No project.faf file found'
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
// Read current file
|
|
21
|
-
const content = await fs_1.promises.readFile(fafPath, 'utf-8');
|
|
22
|
-
const fafData = (0, yaml_1.parse)(content);
|
|
23
|
-
// Update metadata
|
|
24
|
-
if (!fafData.meta) {
|
|
25
|
-
fafData.meta = {};
|
|
26
|
-
}
|
|
27
|
-
fafData.meta.last_updated = new Date().toISOString();
|
|
28
|
-
fafData.meta.updated_by = 'faf-update-command';
|
|
29
|
-
// Write updated file
|
|
30
|
-
const updatedContent = (0, yaml_1.stringify)(fafData);
|
|
31
|
-
await fs_1.promises.writeFile(fafPath, updatedContent, 'utf-8');
|
|
32
|
-
return {
|
|
33
|
-
success: true,
|
|
34
|
-
updated: true,
|
|
35
|
-
message: 'project.faf metadata updated successfully'
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
return {
|
|
40
|
-
success: false,
|
|
41
|
-
updated: false,
|
|
42
|
-
message: error instanceof Error ? error.message : 'Update failed'
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/update.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgBH,sCAyCC;AAvDD,2BAAoC;AACpC,2CAAkF;AAClF,oDAA8D;AAYvD,KAAK,UAAU,aAAa,CAAC,WAAoB,EAAE,UAAyB,EAAE;IACnF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,cAAc,CAAC,CAAC,CAAC,MAAM,IAAA,wBAAW,GAAE,CAAC;QAEjF,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAA,uBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,2BAA2B;aACrC,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAA,YAAS,EAAC,OAAO,CAAC,CAAC;QAEnC,kBAAkB;QAClB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC;QAE/C,qBAAqB;QACrB,MAAM,cAAc,GAAG,IAAA,gBAAa,EAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,aAAE,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAErD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,2CAA2C;SACrD,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAClE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 🔍 faf validate - Validation Command (Mk3 Bundled)
|
|
3
|
-
* Validates project.faf files with detailed feedback
|
|
4
|
-
*/
|
|
5
|
-
export interface ValidateOptions {
|
|
6
|
-
verbose?: boolean;
|
|
7
|
-
json?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export interface ValidationError {
|
|
10
|
-
message: string;
|
|
11
|
-
path?: string;
|
|
12
|
-
severity: 'error' | 'warning';
|
|
13
|
-
}
|
|
14
|
-
export interface ValidateResult {
|
|
15
|
-
success: boolean;
|
|
16
|
-
valid: boolean;
|
|
17
|
-
errors: ValidationError[];
|
|
18
|
-
warnings: ValidationError[];
|
|
19
|
-
message: string;
|
|
20
|
-
}
|
|
21
|
-
export declare function validateFafFile(projectPath?: string, options?: ValidateOptions): Promise<ValidateResult>;
|