faf-mcp 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -2
- package/CLAUDE.md +6 -2
- package/README.md +48 -28
- package/dist/src/cli.js +2 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/faf-core/commands/agents.d.ts +2 -2
- package/dist/src/faf-core/commands/agents.js +21 -7
- package/dist/src/faf-core/commands/agents.js.map +1 -1
- package/dist/src/faf-core/commands/claude.d.ts +30 -0
- package/dist/src/faf-core/commands/{bi-sync.js → claude.js} +19 -15
- package/dist/src/faf-core/commands/claude.js.map +1 -0
- package/dist/src/faf-core/commands/conductor.d.ts +1 -1
- package/dist/src/faf-core/commands/conductor.js +36 -11
- package/dist/src/faf-core/commands/conductor.js.map +1 -1
- package/dist/src/faf-core/commands/cursor.d.ts +2 -2
- package/dist/src/faf-core/commands/cursor.js +21 -7
- package/dist/src/faf-core/commands/cursor.js.map +1 -1
- package/dist/src/faf-core/commands/gemini.d.ts +2 -2
- package/dist/src/faf-core/commands/gemini.js +21 -7
- package/dist/src/faf-core/commands/gemini.js.map +1 -1
- package/dist/src/faf-core/commands/git-context.d.ts +13 -4
- package/dist/src/faf-core/commands/git-context.js +30 -8
- package/dist/src/faf-core/commands/git-context.js.map +1 -1
- package/dist/src/faf-core/commands/sync.d.ts +8 -0
- package/dist/src/faf-core/commands/sync.js +20 -23
- package/dist/src/faf-core/commands/sync.js.map +1 -1
- package/dist/src/faf-core/fix-once/yaml.js +12 -13
- package/dist/src/faf-core/fix-once/yaml.js.map +1 -1
- package/dist/src/faf-core/parsers/agents-parser.d.ts +4 -3
- package/dist/src/faf-core/parsers/agents-parser.js +4 -3
- package/dist/src/faf-core/parsers/agents-parser.js.map +1 -1
- package/dist/src/faf-core/parsers/conductor-parser.d.ts +1 -1
- package/dist/src/faf-core/parsers/conductor-parser.js +1 -1
- package/dist/src/faf-core/parsers/cursorrules-parser.d.ts +4 -3
- package/dist/src/faf-core/parsers/cursorrules-parser.js +4 -3
- package/dist/src/faf-core/parsers/cursorrules-parser.js.map +1 -1
- package/dist/src/faf-core/parsers/faf-git-generator.d.ts +1 -2
- package/dist/src/faf-core/parsers/faf-git-generator.js +19 -39
- package/dist/src/faf-core/parsers/faf-git-generator.js.map +1 -1
- package/dist/src/faf-core/parsers/gemini-parser.d.ts +4 -3
- package/dist/src/faf-core/parsers/gemini-parser.js +4 -3
- package/dist/src/faf-core/parsers/gemini-parser.js.map +1 -1
- package/dist/src/faf-core/parsers/github-extractor.d.ts +1 -1
- package/dist/src/faf-core/parsers/github-extractor.js +1 -1
- package/dist/src/faf-core/parsers/slot-counter.d.ts +1 -1
- package/dist/src/faf-core/parsers/slot-counter.js +1 -1
- package/dist/src/handlers/engine-adapter.js +10 -7
- package/dist/src/handlers/engine-adapter.js.map +1 -1
- package/dist/src/handlers/tools.d.ts +2 -2
- package/dist/src/handlers/tools.js +191 -206
- package/dist/src/handlers/tools.js.map +1 -1
- package/dist/src/server.js +1 -1
- package/dist/src/server.js.map +1 -1
- package/dist/src/utils/faf-cli-bridge.d.ts +12 -8
- package/dist/src/utils/faf-cli-bridge.js +12 -8
- package/dist/src/utils/faf-cli-bridge.js.map +1 -1
- package/package.json +5 -5
- package/project.faf +5 -5
- package/scripts/sync-version.js +2 -1
- package/skills/faf-ide/SKILL.md +5 -5
- package/dist/src/faf-core/commands/bi-sync.d.ts +0 -29
- package/dist/src/faf-core/commands/bi-sync.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Cursor Command -
|
|
3
|
+
* Cursor Command — Interop (faf-mcp 2.0.0; ported from faf-cli 4.5.0 via claude-faf-mcp 4.5.0)
|
|
4
4
|
*
|
|
5
5
|
* Import/Export/Sync between .cursorrules and project.faf
|
|
6
|
-
* Bundled command — no
|
|
6
|
+
* Bundled command — no shell-out; export composes faf-cli in-process.
|
|
7
7
|
*/
|
|
8
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -73,15 +73,29 @@ async function cursorImportCommand(projectPath, options = {}) {
|
|
|
73
73
|
warnings: result.warnings,
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
|
-
catch {
|
|
77
|
-
|
|
76
|
+
catch (error) {
|
|
77
|
+
return {
|
|
78
|
+
success: false,
|
|
79
|
+
action: 'import',
|
|
80
|
+
message: `Could not merge .cursorrules into project.faf: ${error instanceof Error ? error.message : String(error)}`,
|
|
81
|
+
warnings: result.warnings,
|
|
82
|
+
};
|
|
78
83
|
}
|
|
79
84
|
}
|
|
85
|
+
// merge was asked for and there is nothing to merge into: say so rather
|
|
86
|
+
// than report a no-op as an import.
|
|
87
|
+
return {
|
|
88
|
+
success: false,
|
|
89
|
+
action: 'import',
|
|
90
|
+
message: 'No project.faf to merge into — run faf_init first',
|
|
91
|
+
warnings: result.warnings,
|
|
92
|
+
};
|
|
80
93
|
}
|
|
94
|
+
// Without merge nothing is written: say exactly that.
|
|
81
95
|
return {
|
|
82
96
|
success: true,
|
|
83
97
|
action: 'import',
|
|
84
|
-
message: `
|
|
98
|
+
message: `Parsed .cursorrules (${result.sectionsFound.length} sections) — nothing written; pass merge: true to write it into project.faf`,
|
|
85
99
|
data: { faf: result.faf, sectionsFound: result.sectionsFound },
|
|
86
100
|
warnings: result.warnings,
|
|
87
101
|
};
|
|
@@ -95,7 +109,7 @@ async function cursorExportCommand(projectPath, options = {}) {
|
|
|
95
109
|
return {
|
|
96
110
|
success: false,
|
|
97
111
|
action: 'export',
|
|
98
|
-
message: 'No .faf file found. Run
|
|
112
|
+
message: 'No .faf file found. Run faf_init first.',
|
|
99
113
|
};
|
|
100
114
|
}
|
|
101
115
|
const outputPath = path_1.default.join(projectPath, '.cursorrules');
|
|
@@ -105,7 +119,7 @@ async function cursorExportCommand(projectPath, options = {}) {
|
|
|
105
119
|
return {
|
|
106
120
|
success: false,
|
|
107
121
|
action: 'export',
|
|
108
|
-
message: '.cursorrules already exists.
|
|
122
|
+
message: '.cursorrules already exists. Pass force: true to update its faf-managed block (content outside it is kept).',
|
|
109
123
|
};
|
|
110
124
|
}
|
|
111
125
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/cursor.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAuBH,
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Gemini Command -
|
|
2
|
+
* Gemini Command — Interop (faf-mcp 2.0.0; ported from faf-cli 4.5.0 via claude-faf-mcp 4.5.0)
|
|
3
3
|
*
|
|
4
4
|
* Import/Export/Sync between GEMINI.md and project.faf
|
|
5
|
-
* Bundled command — no
|
|
5
|
+
* Bundled command — no shell-out; export composes faf-cli in-process.
|
|
6
6
|
*/
|
|
7
7
|
export interface GeminiCommandResult {
|
|
8
8
|
success: boolean;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Gemini Command -
|
|
3
|
+
* Gemini Command — Interop (faf-mcp 2.0.0; ported from faf-cli 4.5.0 via claude-faf-mcp 4.5.0)
|
|
4
4
|
*
|
|
5
5
|
* Import/Export/Sync between GEMINI.md and project.faf
|
|
6
|
-
* Bundled command — no
|
|
6
|
+
* Bundled command — no shell-out; export composes faf-cli in-process.
|
|
7
7
|
*/
|
|
8
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -72,15 +72,29 @@ async function geminiImportCommand(projectPath, options = {}) {
|
|
|
72
72
|
warnings: result.warnings,
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
|
-
catch {
|
|
76
|
-
|
|
75
|
+
catch (error) {
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
action: 'import',
|
|
79
|
+
message: `Could not merge GEMINI.md into project.faf: ${error instanceof Error ? error.message : String(error)}`,
|
|
80
|
+
warnings: result.warnings,
|
|
81
|
+
};
|
|
77
82
|
}
|
|
78
83
|
}
|
|
84
|
+
// merge was asked for and there is nothing to merge into: say so rather
|
|
85
|
+
// than report a no-op as an import.
|
|
86
|
+
return {
|
|
87
|
+
success: false,
|
|
88
|
+
action: 'import',
|
|
89
|
+
message: 'No project.faf to merge into — run faf_init first',
|
|
90
|
+
warnings: result.warnings,
|
|
91
|
+
};
|
|
79
92
|
}
|
|
93
|
+
// Without merge nothing is written: say exactly that.
|
|
80
94
|
return {
|
|
81
95
|
success: true,
|
|
82
96
|
action: 'import',
|
|
83
|
-
message: `
|
|
97
|
+
message: `Parsed GEMINI.md (${result.sectionsFound.length} sections) — nothing written; pass merge: true to write it into project.faf`,
|
|
84
98
|
data: { faf: result.faf, sectionsFound: result.sectionsFound },
|
|
85
99
|
warnings: result.warnings,
|
|
86
100
|
};
|
|
@@ -94,7 +108,7 @@ async function geminiExportCommand(projectPath, options = {}) {
|
|
|
94
108
|
return {
|
|
95
109
|
success: false,
|
|
96
110
|
action: 'export',
|
|
97
|
-
message: 'No .faf file found. Run
|
|
111
|
+
message: 'No .faf file found. Run faf_init first.',
|
|
98
112
|
};
|
|
99
113
|
}
|
|
100
114
|
const outputPath = path_1.default.join(projectPath, 'GEMINI.md');
|
|
@@ -104,7 +118,7 @@ async function geminiExportCommand(projectPath, options = {}) {
|
|
|
104
118
|
return {
|
|
105
119
|
success: false,
|
|
106
120
|
action: 'export',
|
|
107
|
-
message: 'GEMINI.md already exists.
|
|
121
|
+
message: 'GEMINI.md already exists. Pass force: true to update its faf-managed block (content outside it is kept).',
|
|
108
122
|
};
|
|
109
123
|
}
|
|
110
124
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/gemini.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAuBH,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/gemini.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAuBH,kDAwFC;AAKD,kDAyCC;AAKD,8CAIC;AApKD,gDAAwB;AACxB,2BAAoC;AACpC,0DAAqD;AACrD,iDAAqF;AACrF,kEAIqC;AAUrC;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,UAA+B,EAAE;IAEjC,MAAM,UAAU,GAAG,MAAM,IAAA,iCAAc,EAAC,WAAW,CAAC,CAAC;IAErD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,yCAAyC;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAY,EAAC,UAAU,CAAC,CAAC;IAE9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAW,EAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC5D,MAAM,WAAW,GAAG,IAAA,eAAS,EAAC,eAAe,CAAC,CAAC;gBAE/C,MAAM,MAAM,GAAG;oBACb,GAAG,WAAW;oBACd,OAAO,EAAE;wBACP,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;wBAC9B,KAAK,EAAE;4BACL,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;4BACrC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK;yBAC5B;wBACD,UAAU,EAAE;4BACV,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC;4BAC1C,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU;yBACjC;wBACD,WAAW,EAAE;4BACX,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;4BAC3C,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW;yBAClC;qBACF;iBACF,CAAC;gBAEF,MAAM,WAAW,GAAG,IAAA,mBAAa,EAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,aAAE,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAEzC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,wCAAwC,MAAM,CAAC,aAAa,CAAC,MAAM,YAAY;oBACxF,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE;oBAC3D,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,+CAA+C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAChH,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC;YACJ,CAAC;QACH,CAAC;QACD,wEAAwE;QACxE,oCAAoC;QACpC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,mDAAmD;YAC5D,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,qBAAqB,MAAM,CAAC,aAAa,CAAC,MAAM,6EAA6E;QACtI,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE;QAC9D,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,UAA+B,EAAE;IAEjC,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAW,EAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,yCAAyC;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,aAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,0GAA0G;aACpH,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAA,eAAS,EAAC,UAAU,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAY,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEvD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,MAAM,CAAC,OAAO;YACrB,CAAC,CAAC,mCAAmC;YACrC,CAAC,CAAC,eAAe;QACnB,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,WAAmB;IAEnB,OAAO,MAAM,mBAAmB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Git Context Command -
|
|
2
|
+
* Git Context Command — Interop (faf-mcp 2.0.0; ported from faf-cli 4.5.0 via claude-faf-mcp 4.5.0)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Author project.faf from a GitHub repository URL.
|
|
5
5
|
* Fetches metadata, README, package.json — no cloning needed.
|
|
6
6
|
* Bundled command — no CLI dependency required.
|
|
7
|
+
*
|
|
8
|
+
* The score it reports is faf-cli's scorer on the exact bytes authored —
|
|
9
|
+
* the same number faf_score gives that file. The ported slot counter that
|
|
10
|
+
* used to supply it credited defaults and 'slotignored' slots that were
|
|
11
|
+
* never written, so a 10% file was announced as 100% (Trophy).
|
|
7
12
|
*/
|
|
13
|
+
export interface GitContextOptions {
|
|
14
|
+
/** Replace an existing <outputPath>/project.faf. Without it the command refuses. */
|
|
15
|
+
force?: boolean;
|
|
16
|
+
}
|
|
8
17
|
export interface GitContextResult {
|
|
9
18
|
success: boolean;
|
|
10
19
|
message: string;
|
|
@@ -18,6 +27,6 @@ export interface GitContextResult {
|
|
|
18
27
|
};
|
|
19
28
|
}
|
|
20
29
|
/**
|
|
21
|
-
*
|
|
30
|
+
* Author project.faf from a GitHub URL
|
|
22
31
|
*/
|
|
23
|
-
export declare function gitContextCommand(url: string, outputPath?: string): Promise<GitContextResult>;
|
|
32
|
+
export declare function gitContextCommand(url: string, outputPath?: string, options?: GitContextOptions): Promise<GitContextResult>;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Git Context Command -
|
|
3
|
+
* Git Context Command — Interop (faf-mcp 2.0.0; ported from faf-cli 4.5.0 via claude-faf-mcp 4.5.0)
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Author project.faf from a GitHub repository URL.
|
|
6
6
|
* Fetches metadata, README, package.json — no cloning needed.
|
|
7
7
|
* Bundled command — no CLI dependency required.
|
|
8
|
+
*
|
|
9
|
+
* The score it reports is faf-cli's scorer on the exact bytes authored —
|
|
10
|
+
* the same number faf_score gives that file. The ported slot counter that
|
|
11
|
+
* used to supply it credited defaults and 'slotignored' slots that were
|
|
12
|
+
* never written, so a 10% file was announced as 100% (Trophy).
|
|
8
13
|
*/
|
|
9
14
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
15
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -15,10 +20,11 @@ const path_1 = __importDefault(require("path"));
|
|
|
15
20
|
const fs_1 = require("fs");
|
|
16
21
|
const github_extractor_js_1 = require("../parsers/github-extractor.js");
|
|
17
22
|
const faf_git_generator_js_1 = require("../parsers/faf-git-generator.js");
|
|
23
|
+
const faf_cli_bridge_js_1 = require("../../utils/faf-cli-bridge.js");
|
|
18
24
|
/**
|
|
19
|
-
*
|
|
25
|
+
* Author project.faf from a GitHub URL
|
|
20
26
|
*/
|
|
21
|
-
async function gitContextCommand(url, outputPath) {
|
|
27
|
+
async function gitContextCommand(url, outputPath, options = {}) {
|
|
22
28
|
// Parse the URL
|
|
23
29
|
const parsed = (0, github_extractor_js_1.parseGitHubUrl)(url);
|
|
24
30
|
if (!parsed) {
|
|
@@ -28,14 +34,30 @@ async function gitContextCommand(url, outputPath) {
|
|
|
28
34
|
};
|
|
29
35
|
}
|
|
30
36
|
const { owner, repo } = parsed;
|
|
37
|
+
// Never replace an existing project.faf unless asked — checked before any
|
|
38
|
+
// network call, so a refusal costs nothing and writes nothing.
|
|
39
|
+
if (outputPath && !options.force) {
|
|
40
|
+
const existing = path_1.default.join(outputPath, 'project.faf');
|
|
41
|
+
const exists = await fs_1.promises.access(existing).then(() => true, () => false);
|
|
42
|
+
if (exists) {
|
|
43
|
+
return {
|
|
44
|
+
success: false,
|
|
45
|
+
message: `project.faf already exists at ${outputPath}. Pass force: true to overwrite.`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
31
49
|
try {
|
|
32
50
|
// Fetch metadata with file checks
|
|
33
51
|
const metadata = await (0, github_extractor_js_1.fetchGitHubMetadata)(owner, repo, true);
|
|
34
52
|
// Fetch file tree
|
|
35
53
|
const files = await (0, github_extractor_js_1.fetchGitHubFileTree)(owner, repo, metadata.defaultBranch);
|
|
36
|
-
//
|
|
37
|
-
const { content
|
|
38
|
-
|
|
54
|
+
// Author the .faf content
|
|
55
|
+
const { content } = await (0, faf_git_generator_js_1.generateEnhancedFaf)(metadata, files);
|
|
56
|
+
// One scorer: faf-cli's, on the bytes authored.
|
|
57
|
+
const { scoreFafYaml } = await faf_cli_bridge_js_1.fafCli;
|
|
58
|
+
const scored = scoreFafYaml(content);
|
|
59
|
+
const score = scored.score;
|
|
60
|
+
const tier = scored.tier.name;
|
|
39
61
|
// Write to file if output path provided
|
|
40
62
|
let filePath;
|
|
41
63
|
if (outputPath) {
|
|
@@ -44,7 +66,7 @@ async function gitContextCommand(url, outputPath) {
|
|
|
44
66
|
}
|
|
45
67
|
return {
|
|
46
68
|
success: true,
|
|
47
|
-
message: `
|
|
69
|
+
message: `Authored project.faf for ${owner}/${repo} — Score: ${score}% (${tier})`,
|
|
48
70
|
data: {
|
|
49
71
|
owner,
|
|
50
72
|
repo,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-context.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/git-context.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"git-context.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/git-context.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;AAiCH,8CAuEC;AAtGD,gDAAwB;AACxB,2BAAoC;AACpC,wEAIwC;AACxC,0EAAsE;AACtE,qEAAuD;AAoBvD;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,UAAmB,EACnB,UAA6B,EAAE;IAE/B,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAA,oCAAc,EAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,uBAAuB,GAAG,gEAAgE;SACpG,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAE/B,0EAA0E;IAC1E,+DAA+D;IAC/D,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,aAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,iCAAiC,UAAU,kCAAkC;aACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,QAAQ,GAAG,MAAM,IAAA,yCAAmB,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE9D,kBAAkB;QAClB,MAAM,KAAK,GAAG,MAAM,IAAA,yCAAmB,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;QAE7E,0BAA0B;QAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,0CAAmB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE/D,gDAAgD;QAChD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,0BAAM,CAAC;QACtC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAE9B,wCAAwC;QACxC,IAAI,QAA4B,CAAC;QACjC,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAChD,MAAM,aAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,4BAA4B,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,IAAI,GAAG;YACjF,IAAI,EAAE;gBACJ,KAAK;gBACL,IAAI;gBACJ,KAAK;gBACL,IAAI;gBACJ,UAAU,EAAE,OAAO;gBACnB,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,oCAAoC,YAAY,EAAE;SAC5D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -7,10 +7,18 @@ export interface SyncOptions {
|
|
|
7
7
|
dryRun?: boolean;
|
|
8
8
|
json?: boolean;
|
|
9
9
|
}
|
|
10
|
+
/** One field a dry run would change. */
|
|
11
|
+
export interface SyncChange {
|
|
12
|
+
path: string;
|
|
13
|
+
oldValue: unknown;
|
|
14
|
+
newValue: unknown;
|
|
15
|
+
}
|
|
10
16
|
export interface SyncResult {
|
|
11
17
|
success: boolean;
|
|
12
18
|
changesDetected: number;
|
|
13
19
|
changesApplied: number;
|
|
14
20
|
message: string;
|
|
21
|
+
/** Dry run only: the fields that would change, so the caller can list them. */
|
|
22
|
+
changes?: SyncChange[];
|
|
15
23
|
}
|
|
16
24
|
export declare function syncFafFile(projectPath?: string, options?: SyncOptions): Promise<SyncResult>;
|
|
@@ -50,7 +50,7 @@ async function syncFafFile(projectPath, options = {}) {
|
|
|
50
50
|
success: false,
|
|
51
51
|
changesDetected: 0,
|
|
52
52
|
changesApplied: 0,
|
|
53
|
-
message: 'No project.faf file found. Run
|
|
53
|
+
message: 'No project.faf file found. Run faf_init first.'
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
// Read current .faf file
|
|
@@ -66,36 +66,33 @@ async function syncFafFile(projectPath, options = {}) {
|
|
|
66
66
|
message: 'project.faf file is up to date'
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
|
-
|
|
69
|
+
// Dry run (the default): report the fields that would change and write
|
|
70
|
+
// nothing. `apply` is the MCP parameter that maps to `auto`.
|
|
71
|
+
if (options.dryRun || !options.auto) {
|
|
72
|
+
// One line per field, last detected value wins — exactly what apply writes.
|
|
73
|
+
const unique = [...new Map(changes.map((c) => [c.path, c])).values()];
|
|
70
74
|
return {
|
|
71
75
|
success: true,
|
|
72
|
-
changesDetected:
|
|
76
|
+
changesDetected: unique.length,
|
|
73
77
|
changesApplied: 0,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
// Apply changes if auto mode
|
|
78
|
-
if (options.auto) {
|
|
79
|
-
applyChanges(fafData, changes);
|
|
80
|
-
// Update generated timestamp
|
|
81
|
-
if (!fafData.meta)
|
|
82
|
-
fafData.meta = {};
|
|
83
|
-
fafData.meta.last_sync = new Date().toISOString();
|
|
84
|
-
// Write updated .faf file
|
|
85
|
-
const updatedContent = (0, yaml_1.stringify)(fafData);
|
|
86
|
-
await fs_1.promises.writeFile(fafPath, updatedContent, 'utf-8');
|
|
87
|
-
return {
|
|
88
|
-
success: true,
|
|
89
|
-
changesDetected: changes.length,
|
|
90
|
-
changesApplied: changes.length,
|
|
91
|
-
message: `Applied ${changes.length} changes to project.faf`
|
|
78
|
+
changes: unique.map(({ path: fieldPath, oldValue, newValue }) => ({ path: fieldPath, oldValue, newValue })),
|
|
79
|
+
message: `Would update ${unique.length} field(s). Pass apply: true to write them.`
|
|
92
80
|
};
|
|
93
81
|
}
|
|
82
|
+
// Apply changes (auto mode)
|
|
83
|
+
applyChanges(fafData, changes);
|
|
84
|
+
// Record when the sync ran
|
|
85
|
+
if (!fafData.meta)
|
|
86
|
+
fafData.meta = {};
|
|
87
|
+
fafData.meta.last_sync = new Date().toISOString();
|
|
88
|
+
// Write updated .faf file
|
|
89
|
+
const updatedContent = (0, yaml_1.stringify)(fafData);
|
|
90
|
+
await fs_1.promises.writeFile(fafPath, updatedContent, 'utf-8');
|
|
94
91
|
return {
|
|
95
92
|
success: true,
|
|
96
93
|
changesDetected: changes.length,
|
|
97
|
-
changesApplied:
|
|
98
|
-
message: `
|
|
94
|
+
changesApplied: changes.length,
|
|
95
|
+
message: `Applied ${changes.length} changes to project.faf`
|
|
99
96
|
};
|
|
100
97
|
}
|
|
101
98
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/sync.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,6 @@ exports.YAML = exports.Document = exports.parseDocument = void 0;
|
|
|
53
53
|
exports.parse = parse;
|
|
54
54
|
exports.stringify = stringify;
|
|
55
55
|
const yaml = __importStar(require("yaml"));
|
|
56
|
-
const colors_1 = require("./colors");
|
|
57
56
|
/**
|
|
58
57
|
* Safe YAML parse - handles ALL edge cases
|
|
59
58
|
* ROCK SOLID - FIX ONCE, DONE FOREVER
|
|
@@ -62,22 +61,22 @@ function parse(content, options) {
|
|
|
62
61
|
const filepath = options?.filepath || 'unknown file';
|
|
63
62
|
// Edge case 1: Null/undefined (CHECK FIRST before any operations)
|
|
64
63
|
if (content === null || content === undefined) {
|
|
65
|
-
throw new Error(
|
|
64
|
+
throw new Error('Empty content passed to YAML parser\n' +
|
|
66
65
|
`File: ${filepath}\n` +
|
|
67
66
|
`Fix: Ensure file exists and has content before parsing`);
|
|
68
67
|
}
|
|
69
68
|
// Edge case 2: Not a string (CHECK BEFORE calling string methods)
|
|
70
69
|
if (typeof content !== 'string') {
|
|
71
|
-
throw new Error(
|
|
70
|
+
throw new Error('Invalid content type passed to YAML parser\n' +
|
|
72
71
|
`Expected: string\n` +
|
|
73
72
|
`Got: ${typeof content}\n` +
|
|
74
73
|
`File: ${filepath}`);
|
|
75
74
|
}
|
|
76
75
|
// Edge case 3: Empty string or whitespace only
|
|
77
76
|
if (content.trim() === '') {
|
|
78
|
-
throw new Error(
|
|
77
|
+
throw new Error('Empty .faf file detected\n' +
|
|
79
78
|
`File: ${filepath}\n` +
|
|
80
|
-
|
|
79
|
+
'Fix: run faf_init with force: true to recreate the file');
|
|
81
80
|
}
|
|
82
81
|
// Edge case 4: Parse YAML and handle syntax errors
|
|
83
82
|
let result;
|
|
@@ -86,22 +85,22 @@ function parse(content, options) {
|
|
|
86
85
|
}
|
|
87
86
|
catch (error) {
|
|
88
87
|
// Wrap yaml parsing errors with helpful context
|
|
89
|
-
throw new Error(
|
|
88
|
+
throw new Error('Invalid YAML syntax\n' +
|
|
90
89
|
`File: ${filepath}\n` +
|
|
91
90
|
`Error: ${error.message}\n` +
|
|
92
|
-
|
|
91
|
+
'Fix: correct the YAML syntax, or recreate the file with faf_init (force: true)');
|
|
93
92
|
}
|
|
94
93
|
// Edge case 5: Parsed successfully but result is null/undefined
|
|
95
94
|
// (valid YAML like "null" or "~" or empty documents)
|
|
96
95
|
if (result === null || result === undefined) {
|
|
97
|
-
throw new Error(
|
|
96
|
+
throw new Error('YAML file parsed but contains no data\n' +
|
|
98
97
|
`File: ${filepath}\n` +
|
|
99
|
-
|
|
98
|
+
'Fix: ensure the file has valid YAML content, or recreate it with faf_init (force: true)');
|
|
100
99
|
}
|
|
101
100
|
// Edge case 6: Parsed to primitive (not an object)
|
|
102
101
|
// .faf files must be YAML objects, not scalars
|
|
103
102
|
if (typeof result !== 'object' || Array.isArray(result)) {
|
|
104
|
-
throw new Error(
|
|
103
|
+
throw new Error('Invalid .faf structure - must be a YAML object\n' +
|
|
105
104
|
`File: ${filepath}\n` +
|
|
106
105
|
`Got: ${Array.isArray(result) ? 'array' : typeof result}\n` +
|
|
107
106
|
`Fix: .faf files must contain key-value pairs, not ${Array.isArray(result) ? 'lists' : 'simple values'}`);
|
|
@@ -115,12 +114,12 @@ function parse(content, options) {
|
|
|
115
114
|
function stringify(data, options) {
|
|
116
115
|
// Edge case 1: Null/undefined data
|
|
117
116
|
if (data === null || data === undefined) {
|
|
118
|
-
throw new Error(
|
|
117
|
+
throw new Error('Cannot stringify null/undefined data to YAML\n' +
|
|
119
118
|
`Fix: Provide valid data object`);
|
|
120
119
|
}
|
|
121
120
|
// Edge case 2: Not an object (primitives should not be stringified for .faf)
|
|
122
121
|
if (typeof data !== 'object' || Array.isArray(data)) {
|
|
123
|
-
throw new Error(
|
|
122
|
+
throw new Error('Invalid data for .faf stringify\n' +
|
|
124
123
|
`Expected: object\n` +
|
|
125
124
|
`Got: ${Array.isArray(data) ? 'array' : typeof data}\n` +
|
|
126
125
|
`Fix: .faf files must be objects with key-value pairs`);
|
|
@@ -135,7 +134,7 @@ function stringify(data, options) {
|
|
|
135
134
|
return result;
|
|
136
135
|
}
|
|
137
136
|
catch (error) {
|
|
138
|
-
throw new Error(
|
|
137
|
+
throw new Error('Failed to convert data to YAML\n' +
|
|
139
138
|
`Error: ${error.message}`);
|
|
140
139
|
}
|
|
141
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../../../src/faf-core/fix-once/yaml.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../../../src/faf-core/fix-once/yaml.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* - H2: Section headers (Project Overview, Tech Stack, etc.)
|
|
10
10
|
* - Bullets: Specific guidelines
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* Import parser ported from faf-cli 4.5.0 (The AGENTS.md Edition) via claude-faf-mcp 4.5.0;
|
|
13
|
+
* landed in faf-mcp 2.0.0 (The Interop MCP for Context). Export composes faf-cli >=7.12.0 in-process.
|
|
13
14
|
*/
|
|
14
15
|
export interface AgentsMdSection {
|
|
15
16
|
title: string;
|
|
@@ -54,8 +55,8 @@ export declare function agentsImport(agentsPath: string): Promise<AgentsImportRe
|
|
|
54
55
|
/**
|
|
55
56
|
* Author an AGENTS.md from .faf data (+ repo enrichment at export).
|
|
56
57
|
*
|
|
57
|
-
* v3.0:
|
|
58
|
-
*
|
|
58
|
+
* v3.0: composes faf-cli's `renderAgentsMd` in-process (faf-cli >=7.12.0,
|
|
59
|
+
* The Open Renderers Edition) — replaces
|
|
59
60
|
* the v4.5.0-vintage section set (Project Overview / Tech Stack / Code
|
|
60
61
|
* Style Guidelines / Build and Test Commands / Architecture / General
|
|
61
62
|
* Instructions) with faf-cli's current shape: orientation · setup · verify
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* - H2: Section headers (Project Overview, Tech Stack, etc.)
|
|
11
11
|
* - Bullets: Specific guidelines
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* Import parser ported from faf-cli 4.5.0 (The AGENTS.md Edition) via claude-faf-mcp 4.5.0;
|
|
14
|
+
* landed in faf-mcp 2.0.0 (The Interop MCP for Context). Export composes faf-cli >=7.12.0 in-process.
|
|
14
15
|
*/
|
|
15
16
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -170,8 +171,8 @@ function createEmptyFaf() {
|
|
|
170
171
|
/**
|
|
171
172
|
* Author an AGENTS.md from .faf data (+ repo enrichment at export).
|
|
172
173
|
*
|
|
173
|
-
* v3.0:
|
|
174
|
-
*
|
|
174
|
+
* v3.0: composes faf-cli's `renderAgentsMd` in-process (faf-cli >=7.12.0,
|
|
175
|
+
* The Open Renderers Edition) — replaces
|
|
175
176
|
* the v4.5.0-vintage section set (Project Overview / Tech Stack / Code
|
|
176
177
|
* Style Guidelines / Build and Test Commands / Architecture / General
|
|
177
178
|
* Instructions) with faf-cli's current shape: orientation · setup · verify
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-parser.js","sourceRoot":"","sources":["../../../../src/faf-core/parsers/agents-parser.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"agents-parser.js","sourceRoot":"","sources":["../../../../src/faf-core/parsers/agents-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Parses Google's Conductor extension format (conductor/ directory)
|
|
5
5
|
* for bidirectional interoperability with FAF.
|
|
6
6
|
*
|
|
7
|
-
* Ported from faf-cli
|
|
7
|
+
* Ported from faf-cli 4.5.0 via claude-faf-mcp 4.5.0; landed in faf-mcp 2.0.0 (The Interop MCP for Context)
|
|
8
8
|
*/
|
|
9
9
|
export interface ConductorProduct {
|
|
10
10
|
title: string;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Parses Google's Conductor extension format (conductor/ directory)
|
|
6
6
|
* for bidirectional interoperability with FAF.
|
|
7
7
|
*
|
|
8
|
-
* Ported from faf-cli
|
|
8
|
+
* Ported from faf-cli 4.5.0 via claude-faf-mcp 4.5.0; landed in faf-mcp 2.0.0 (The Interop MCP for Context)
|
|
9
9
|
*/
|
|
10
10
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
11
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|