faf-mcp 2.1.0 → 2.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <!-- faf: faf-mcp | TypeScript | mcp-server | FAF MCP IDE Edition — persistent project context for Cursor, Windsurf, Cline, VS Code -->
2
- <!-- faf: doc=changelog | latest=v2.1.0 | canonical=project.faf | family=FAF -->
2
+ <!-- faf: doc=changelog | latest=v2.1.1 | canonical=project.faf | family=FAF -->
3
3
 
4
4
  # Changelog
5
5
 
@@ -8,6 +8,29 @@ All notable changes to faf-mcp will be documented in this file.
8
8
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
9
9
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
10
10
 
11
+ ## [2.1.1] - 2026-05-26
12
+
13
+ Loop closed on truthful, single-sourced scoring. The active MCP handler
14
+ now reads faf-cli's real scorer directly — same path the championship
15
+ layer was already using, same number `faf score` (CLI) emits.
16
+
17
+ ### Fixed
18
+
19
+ - **`faf_score`** — now calls faf-cli's `scoreFafYaml` (the IANA-spec
20
+ scorer) directly, replacing the legacy file-presence pseudo-score
21
+ (40 + 30 + 15 + 14, max 100). Output reformatted to the canonical
22
+ tier card with `FAF SCORE: <n>/100`, progress bar, populated/total
23
+ slot count, and the next-tier hint. The banned medal / colored-circle
24
+ tier ladder is gone from this surface too.
25
+
26
+ ### Tests
27
+
28
+ - **WJTTC AERO Phase 2** — score-parity assertion tightened to TRUE
29
+ parity: MCP `faf_score` numeric == faf-cli `scoreFafYaml(...).score`
30
+ on the same YAML. Determinism + repeatability tests retained as
31
+ high-signal companions; comment updated to mark the divergence
32
+ observed in v2.1.0 as resolved here.
33
+
11
34
  ## [2.1.0] - 2026-05-18
12
35
 
13
36
  Truthful, single-sourced scoring. faf-mcp no longer computes its own
package/CLAUDE.md CHANGED
@@ -29,4 +29,4 @@ The Interop MCP for Context. Universal .faf MCP server for Cursor, Windsurf, Cli
29
29
 
30
30
  ---
31
31
 
32
- *STATUS: BI-SYNC ACTIVE — 2026-05-18T05:28:45.953Z*
32
+ *STATUS: BI-SYNC ACTIVE — 2026-05-26T06:37:16.305Z*
package/README.md CHANGED
@@ -9,17 +9,17 @@
9
9
  </div>
10
10
  </div>
11
11
 
12
- The MCP you didn't realise you needed, or wanted but didn't know who to ask, is here. Building on 36,000+ downloads across Claude and now Gemini, we bring you faf-mcp v2.0.0 to cure your syncing pain and fuel your chosen AI with optimized context, on-demand.
12
+ [![IANA: vnd.faf+yaml](https://img.shields.io/badge/IANA-vnd.faf%2Byaml-00D4D4)](https://www.iana.org/assignments/media-types/application/vnd.faf+yaml)
13
+ [![DOI: Context paper](https://img.shields.io/badge/DOI-Context%20paper-FF6B35)](https://doi.org/10.5281/zenodo.18251362)
13
14
 
14
- **The only IANA-Registered Format for AI Context** · `application/vnd.faf+yaml`
15
+ **Home:** [faf-mcp.vercel.app](https://faf-mcp.vercel.app)
16
+
17
+ The MCP you didn't realise you needed, or wanted but didn't know who to ask, is here. Building on 62,000+ downloads across the FAF ecosystem, we bring you faf-mcp to cure your syncing pain and fuel your chosen AI with optimized context, on-demand.
15
18
 
16
19
  [![CI](https://github.com/Wolfe-Jam/faf-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Wolfe-Jam/faf-mcp/actions/workflows/ci.yml)
17
- [![NPM Downloads](https://img.shields.io/npm/dt/faf-mcp?label=total%20downloads&color=00CCFF)](https://www.npmjs.com/package/faf-mcp)
18
20
  [![npm version](https://img.shields.io/npm/v/faf-mcp?color=00CCFF)](https://www.npmjs.com/package/faf-mcp)
19
- [![Website](https://img.shields.io/badge/Website-faf.one-orange)](https://faf.one)
20
21
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
21
22
  [![project.faf](https://img.shields.io/badge/project.faf-inside-00D4D4)](https://github.com/Wolfe-Jam/faf)
22
- [![Deploy](https://img.shields.io/badge/Deploy-Vercel-black)](https://vercel.com/new?repository-url=https://github.com/Wolfe-Jam/faf-mcp)
23
23
 
24
24
  ---
25
25
 
@@ -158,11 +158,11 @@ AI assistants forget. They drift. Every new session, AI starts guessing again. B
158
158
 
159
159
  | Tier | Score | Status |
160
160
  |------|-------|--------|
161
- | 🏆 **TROPHY** | 100% | **AI Optimized** Gold Code |
162
- | ★ **GOLD** | 99%+ | Near-perfect context |
163
- | ◆ **SILVER** | 95%+ | Excellent |
164
- | ◇ **BRONZE** | 85%+ | Production ready |
165
- | ● **GREEN** | 70%+ | Solid foundation |
161
+ | 🏆 **TROPHY** | 100% | AI never has to guess |
162
+ | ★ **GOLD** | 99%+ | 1 slot from Trophy |
163
+ | ◆ **SILVER** | 95%+ | Close — keep going |
164
+ | ◇ **BRONZE** | 85%+ | Interim keep going |
165
+ | ● **GREEN** | 70%+ | Interim keep going |
166
166
  | ● **YELLOW** | 55%+ | AI flipping coins |
167
167
  | ○ **RED** | <55% | AI working blind |
168
168
  | ♡ **WHITE** | 0% | No context at all |
@@ -3,8 +3,8 @@
3
3
  * Simplified version without interactive prompts
4
4
  * No console output, returns structured data
5
5
  */
6
- import { InitResult } from './init.js';
7
- import { ScoreResult } from './score.js';
6
+ import { type InitResult } from './init.js';
7
+ import { type ScoreResult } from './score.js';
8
8
  export interface AutoOptions {
9
9
  force?: boolean;
10
10
  skipAI?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/auto.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAyBH,kCAoEC;AA3FD,0DAAqD;AACrD,uCAAoD;AACpD,yCAAuD;AAgBvD;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAC/B,SAAkB,EAClB,UAAuB,EAAE;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAExC,sDAAsD;QACtD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,GAAG,CAAC,EAAE,CAAC;YAC/D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,iDAAiD;gBACxD,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACjC,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAW,EAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,UAAkC,CAAC;QACvC,IAAI,OAAe,CAAC;QAEpB,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClC,2BAA2B;YAC3B,UAAU,GAAG,MAAM,IAAA,qBAAW,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAEpE,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBAClD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,MAAM;oBACb,UAAU;oBACV,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,aAAa;oBACxC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACjC,CAAC;YACJ,CAAC;YAED,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,WAAW,CAAC;QACxB,CAAC;QAED,yBAAyB;QACzB,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAY,EAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,UAAU;YACjB,UAAU;YACV,WAAW;YACX,QAAQ;SACT,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAEpF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,YAAY;YACnB,QAAQ;SACT,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/auto.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAyBH,kCAoEC;AA3FD,0DAAqD;AACrD,uCAAyD;AACzD,yCAA4D;AAgB5D;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAC/B,SAAkB,EAClB,UAAuB,EAAE;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAExC,sDAAsD;QACtD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,GAAG,CAAC,EAAE,CAAC;YAC/D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,iDAAiD;gBACxD,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACjC,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAW,EAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,UAAkC,CAAC;QACvC,IAAI,OAAe,CAAC;QAEpB,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClC,2BAA2B;YAC3B,UAAU,GAAG,MAAM,IAAA,qBAAW,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAEpE,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBAClD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,MAAM;oBACb,UAAU;oBACV,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,aAAa;oBACxC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACjC,CAAC;YACJ,CAAC;YAED,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,WAAW,CAAC;QACxB,CAAC;QAED,yBAAyB;QACzB,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAY,EAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,UAAU;YACjB,UAAU;YACV,WAAW;YACX,QAAQ;SACT,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAEpF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,YAAY;YACnB,QAAQ;SACT,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -2,6 +2,6 @@
2
2
  * 🇬🇧 faf innit - British Init Command (Mk3 Bundled)
3
3
  * "Innit bruv" - Initialize with style
4
4
  */
5
- import { InitOptions, InitResult } from './init';
6
- export { InitOptions, InitResult };
5
+ import { type InitOptions, type InitResult } from './init';
6
+ export type { InitOptions, InitResult };
7
7
  export declare function innitFafFile(projectPath?: string, options?: InitOptions): Promise<InitResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"innit.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/innit.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAMH,oCAGC;AAPD,iCAA8D;AAIvD,KAAK,UAAU,YAAY,CAAC,WAAoB,EAAE,UAAuB,EAAE;IAChF,6DAA6D;IAC7D,OAAO,IAAA,kBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"innit.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/innit.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAMH,oCAGC;AAPD,iCAAwE;AAIjE,KAAK,UAAU,YAAY,CAAC,WAAoB,EAAE,UAAuB,EAAE;IAChF,6DAA6D;IAC7D,OAAO,IAAA,kBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * faf score - Programmatic API (MCP-ready)
3
3
  * No console output, returns structured data
4
4
  */
5
- import { CompilationResult } from '../compiler/faf-compiler.js';
5
+ import { type CompilationResult } from '../compiler/faf-compiler.js';
6
6
  export interface ScoreOptions {
7
7
  json?: boolean;
8
8
  trace?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"score.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/score.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAgDH,oCA2CC;AAzFD,iEAA6E;AAC7E,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
+ {"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 +1 @@
1
- {"version":3,"file":"faf-generator-championship.js","sourceRoot":"","sources":["../../../../src/faf-core/generators/faf-generator-championship.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"faf-generator-championship.js","sourceRoot":"","sources":["../../../../src/faf-core/generators/faf-generator-championship.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * The user wants to achieve the highest score possible (100%).
8
8
  * This score MUST always be shown in the footer - never hide it!
9
9
  */
10
- import { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
10
+ import type { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
11
11
  export declare class ChampionshipToolHandler {
12
12
  private startTime;
13
13
  private fafEngine;
@@ -1,4 +1,4 @@
1
- import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
1
+ import type { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
2
  /**
3
3
  * Security validator for file paths
4
4
  */
@@ -1,4 +1,4 @@
1
- import { Resource } from '@modelcontextprotocol/sdk/types.js';
1
+ import type { Resource } from '@modelcontextprotocol/sdk/types.js';
2
2
  import { FafEngineAdapter } from './engine-adapter';
3
3
  export declare class FafResourceHandler {
4
4
  private engineAdapter;
@@ -3,8 +3,8 @@
3
3
  * Central registry for all MCP tools with metadata
4
4
  * Championship-grade organization
5
5
  */
6
- import { Tool } from '@modelcontextprotocol/sdk/types.js';
7
- import { FafMcpTool } from '../types/mcp-tools.js';
6
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
7
+ import type { FafMcpTool } from '../types/mcp-tools.js';
8
8
  /**
9
9
  * Check if a tool should be visible based on configuration
10
10
  */
@@ -1,4 +1,4 @@
1
- import { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
1
+ import type { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
2
2
  import { FafEngineAdapter } from './engine-adapter';
3
3
  export declare class FafToolHandler {
4
4
  private engineAdapter;
@@ -42,6 +42,19 @@ const fuzzy_detector_1 = require("../utils/fuzzy-detector");
42
42
  const faf_file_finder_js_1 = require("../utils/faf-file-finder.js");
43
43
  const version_1 = require("../version");
44
44
  const path_resolver_1 = require("../utils/path-resolver");
45
+ // v2.1.1: single-source scoring — same path the championship handler uses.
46
+ // faf_score now reads faf-cli's real scorer (the IANA-spec one) instead of
47
+ // the legacy 40+30+15+14 file-presence pseudo-score. NEVER reimplement
48
+ // scoring or the tier ladder here — that's exactly the drift v2.1.0 set out
49
+ // to kill across the surface; v2.1.1 closes the loop on the active handler.
50
+ //
51
+ // Imported via ../utils/faf-cli-bridge.js — a temporary one-file re-export
52
+ // that pins the relative dist path (faf-cli 6.7.1's `bun` exports condition
53
+ // resolves to a non-shipped src/, breaking the test runner). Both Node and
54
+ // Bun load the same compiled module through the bridge. Bridge is removable
55
+ // once faf-cli drops the bad `bun` condition. See the bridge header for full
56
+ // rationale and the linked tracked issue.
57
+ const faf_cli_bridge_js_1 = require("../utils/faf-cli-bridge.js");
45
58
  class FafToolHandler {
46
59
  engineAdapter;
47
60
  constructor(engineAdapter) {
@@ -802,141 +815,109 @@ class FafToolHandler {
802
815
  }
803
816
  }
804
817
  async handleFafScore(args) {
818
+ // v2.1.1: single-sourced from faf-cli's real scorer — same number `faf
819
+ // score` (CLI) and the championship handler emit. The legacy file-
820
+ // presence pseudo-score (40 + 30 + 15 + 14, capped at 100) is dead.
821
+ // Headline format carries both `FAF SCORE: <n>/100` AND `(<n>%)` so the
822
+ // AERO parity regex AND any consumer scanning for the legacy `\d+%`
823
+ // form continue to match. Invalid/unreadable .faf paths return an
824
+ // honest `0/100 (0%)` with a diagnostic — no fake numbers, no crash.
825
+ const cwd = this.getProjectPath(args?.path);
826
+ const { findFafFile, readFafRaw, scoreFafYaml, getNextTier } = await faf_cli_bridge_js_1.fafCli;
827
+ const fafPath = findFafFile(cwd);
828
+ if (!fafPath) {
829
+ return {
830
+ content: [
831
+ {
832
+ type: 'text',
833
+ text: `FAF SCORE: 0/100 (0%) ♡ no .faf\n\n` +
834
+ `No \`.faf\` found in \`${cwd}\`.\n` +
835
+ `Run \`faf_init\` to create one — then \`faf_score\` reports the real score.`,
836
+ },
837
+ ],
838
+ };
839
+ }
840
+ // Strip ANSI from tier indicator (faf-cli emits colored glyphs).
841
+ // eslint-disable-next-line no-control-regex
842
+ const strip = (s) => s.replace(/\[[0-9;]*m/g, '').trim();
843
+ let raw;
805
844
  try {
806
- const fs = await import('fs').then(m => m.promises);
807
- const path = await import('path');
808
- // Get current working directory - uses path param or session context
809
- const cwd = this.getProjectPath(args?.path);
810
- // Score calculation components
811
- let score = 0;
812
- const details = [];
813
- // 1. Check for FAF file (40 points) - v1.2.0: project.faf, *.faf, or .faf
814
- const fafResult = await (0, faf_file_finder_js_1.findFafFile)(cwd);
815
- let hasFaf = false;
816
- if (fafResult) {
817
- hasFaf = true;
818
- score += 40;
819
- details.push(`✅ ${fafResult.filename} present (+40)`);
820
- }
821
- else {
822
- details.push('❌ FAF file missing (0/40)');
823
- }
824
- // 2. Check for CLAUDE.md (30 points)
825
- const claudePath = path.join(cwd, 'CLAUDE.md');
826
- let hasClaude = false;
827
- try {
828
- await fs.access(claudePath);
829
- hasClaude = true;
830
- score += 30;
831
- details.push('✅ CLAUDE.md present (+30)');
832
- }
833
- catch {
834
- details.push('❌ CLAUDE.md missing (0/30)');
835
- }
836
- // 3. Check for README.md (15 points)
837
- const readmePath = path.join(cwd, 'README.md');
838
- let hasReadme = false;
839
- try {
840
- await fs.access(readmePath);
841
- hasReadme = true;
842
- score += 15;
843
- details.push('✅ README.md present (+15)');
844
- }
845
- catch {
846
- details.push('⚠️ README.md missing (0/15)');
847
- }
848
- // 4. Check for package.json or other project files (14 points)
849
- const projectFiles = ['package.json', 'pyproject.toml', 'Cargo.toml', 'go.mod', 'pom.xml'];
850
- let hasProjectFile = false;
851
- for (const file of projectFiles) {
852
- try {
853
- await fs.access(path.join(cwd, file));
854
- hasProjectFile = true;
855
- score += 14;
856
- details.push(`✅ ${file} detected (+14)`);
857
- break;
858
- }
859
- catch {
860
- // Continue checking
861
- }
862
- }
863
- if (!hasProjectFile) {
864
- details.push('⚠️ No project file found (0/14)');
865
- }
866
- // Format the output
867
- let output = '';
868
- if (score >= 100) {
869
- // Perfect score - Trophy
870
- output = `🏎️ FAF SCORE: 100%\n🏆 Trophy\n🏁 Championship Complete!\n\n`;
871
- if (args?.details) {
872
- output += `${details.join('\n')}\n\n`;
873
- output += `🏆 PERFECT SCORE!\n`;
874
- output += `Both .faf and CLAUDE.md are championship-quality!\n`;
875
- output += `\n💡 Note: 🍊 Big Orange is a BADGE awarded separately for excellence beyond metrics.`;
876
- }
877
- }
878
- else {
879
- // Regular score - FAF standard tiers
880
- const percentage = Math.min(score, 100);
881
- let rating = '';
882
- let emoji = '';
883
- if (percentage >= 99) {
884
- rating = 'Gold';
885
- emoji = '🥇';
886
- }
887
- else if (percentage >= 95) {
888
- rating = 'Silver';
889
- emoji = '🥈';
890
- }
891
- else if (percentage >= 85) {
892
- rating = 'Bronze';
893
- emoji = '🥉';
894
- }
895
- else if (percentage >= 70) {
896
- rating = 'Green';
897
- emoji = '🟢';
898
- }
899
- else if (percentage >= 55) {
900
- rating = 'Yellow';
901
- emoji = '🟡';
902
- }
903
- else {
904
- rating = 'Red';
905
- emoji = '🔴';
906
- }
907
- // The 3-line killer display
908
- output = `📊 FAF SCORE: ${percentage}%\n${emoji} ${rating}\n🏁 AI-Ready: ${percentage >= 85 ? 'Yes' : 'Building'}\n`;
909
- if (args?.details) {
910
- output += `\n${details.join('\n')}`;
911
- if (percentage < 100) {
912
- output += `\n\n💡 Tips to improve:\n`;
913
- if (!hasFaf)
914
- output += `- Create .faf file with project context\n`;
915
- if (!hasClaude)
916
- output += `- Add CLAUDE.md for AI instructions\n`;
917
- if (!hasReadme)
918
- output += `- Include README.md for documentation\n`;
919
- if (!hasProjectFile)
920
- output += `- Add project configuration file\n`;
921
- }
922
- }
923
- }
845
+ raw = readFafRaw(fafPath);
846
+ }
847
+ catch (error) {
924
848
  return {
925
- content: [{
849
+ content: [
850
+ {
926
851
  type: 'text',
927
- text: output
928
- }]
852
+ text: `FAF SCORE: 0/100 (0%) ○ UNREADABLE\n\n` +
853
+ `Could not read \`${fafPath}\`: ${error?.message ?? String(error)}`,
854
+ },
855
+ ],
856
+ isError: true,
929
857
  };
930
858
  }
859
+ let result;
860
+ try {
861
+ result = scoreFafYaml(raw);
862
+ }
931
863
  catch (error) {
932
- // Fallback to displaying a motivational score
864
+ // Invalid .faf content (malformed YAML, etc.) — honest 0 score with a
865
+ // diagnostic, not a fake number. The output still carries `0%` so
866
+ // downstream regex matchers like `/\d+%/` find a percentage token.
933
867
  return {
934
- content: [{
868
+ content: [
869
+ {
935
870
  type: 'text',
936
- text: `📊 FAF SCORE: 92%\n⭐ Excellence Building\n🏁 Keep Going!\n\n${args?.details ? 'Unable to analyze project files, but your commitment to excellence is clear!' : ''}`
937
- }]
871
+ text: `FAF SCORE: 0/100 (0%) ○ INVALID\n\n` +
872
+ `\`${fafPath}\` couldn't be parsed as a valid .faf YAML:\n` +
873
+ ` ${error?.message ?? String(error)}\n\n` +
874
+ `Re-run \`faf_init\` to regenerate a valid file.`,
875
+ },
876
+ ],
877
+ isError: true,
938
878
  };
939
879
  }
880
+ const score = result.score;
881
+ const tierDisplay = strip(result.tier.indicator);
882
+ const next = getNextTier(score);
883
+ const nextTierDisplay = next ? `${strip(next.indicator)} (${next.threshold}%)` : null;
884
+ // Progress bar — same width/style as the championship handler.
885
+ const barWidth = 24;
886
+ const filled = Math.max(0, Math.min(barWidth, Math.round((score / 100) * barWidth)));
887
+ const progressBar = '█'.repeat(filled) + '░'.repeat(barWidth - filled);
888
+ // Headline carries both `/100` AND `(%)` so multiple matchers stay happy.
889
+ let output = `FAF SCORE: ${score}/100 (${score}%) ${tierDisplay}\n` +
890
+ `${progressBar} ${score}%\n` +
891
+ `${result.populated}/${result.total} slots populated` +
892
+ (nextTierDisplay ? ` · next: ${nextTierDisplay}` : ' · top tier') +
893
+ `\n\n` +
894
+ `Scored by faf-cli — the same context your AI reads.`;
895
+ if (args?.details) {
896
+ const populatedSlots = Object.entries(result.slots)
897
+ .filter(([, state]) => state === 'populated')
898
+ .map(([slot]) => slot);
899
+ const emptySlots = Object.entries(result.slots)
900
+ .filter(([, state]) => state === 'empty')
901
+ .map(([slot]) => slot);
902
+ const ignoredSlots = Object.entries(result.slots)
903
+ .filter(([, state]) => state === 'slotignored')
904
+ .map(([slot]) => slot);
905
+ output += `\n\n--- Slot breakdown ---\n`;
906
+ output += `Populated (${populatedSlots.length}): ${populatedSlots.join(', ') || '(none)'}\n`;
907
+ output += `Empty (${emptySlots.length}): ${emptySlots.join(', ') || '(none)'}\n`;
908
+ output += `Ignored (${ignoredSlots.length}): ${ignoredSlots.join(', ') || '(none)'}`;
909
+ if (score < 100 && emptySlots.length > 0) {
910
+ output += `\n\nTip: fill empty slots or mark them \`slotignored\` to climb tiers. Slot-by-slot detail: \`faf score\` (CLI).`;
911
+ }
912
+ }
913
+ return {
914
+ content: [
915
+ {
916
+ type: 'text',
917
+ text: output,
918
+ },
919
+ ],
920
+ };
940
921
  }
941
922
  async handleFafInit(args) {
942
923
  // Native implementation - creates project.faf with Pomelli-simple path resolution!