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.
Files changed (178) hide show
  1. package/CHANGELOG.md +42 -3
  2. package/CLAUDE.md +7 -7
  3. package/README.md +73 -74
  4. package/dist/src/faf-core/commands/bi-sync.d.ts +1 -3
  5. package/dist/src/faf-core/commands/bi-sync.js +21 -64
  6. package/dist/src/faf-core/commands/bi-sync.js.map +1 -1
  7. package/dist/src/faf-core/commands/sync.js.map +1 -1
  8. package/dist/src/faf-core/engines/dependency-tsa.js.map +1 -1
  9. package/dist/src/faf-core/fix-once/colors.js +1 -1
  10. package/dist/src/faf-core/fix-once/colors.js.map +1 -1
  11. package/dist/src/faf-core/parsers/agents-parser.d.ts +15 -0
  12. package/dist/src/faf-core/parsers/agents-parser.js +29 -123
  13. package/dist/src/faf-core/parsers/agents-parser.js.map +1 -1
  14. package/dist/src/faf-core/parsers/conductor-parser.js +1 -1
  15. package/dist/src/faf-core/parsers/conductor-parser.js.map +1 -1
  16. package/dist/src/faf-core/parsers/cursorrules-parser.d.ts +15 -0
  17. package/dist/src/faf-core/parsers/cursorrules-parser.js +54 -111
  18. package/dist/src/faf-core/parsers/cursorrules-parser.js.map +1 -1
  19. package/dist/src/faf-core/parsers/faf-git-generator.js +0 -1
  20. package/dist/src/faf-core/parsers/faf-git-generator.js.map +1 -1
  21. package/dist/src/faf-core/parsers/gemini-parser.d.ts +10 -0
  22. package/dist/src/faf-core/parsers/gemini-parser.js +19 -77
  23. package/dist/src/faf-core/parsers/gemini-parser.js.map +1 -1
  24. package/dist/src/handlers/engine-adapter.d.ts +13 -12
  25. package/dist/src/handlers/engine-adapter.js +124 -688
  26. package/dist/src/handlers/engine-adapter.js.map +1 -1
  27. package/dist/src/handlers/resources.d.ts +19 -1
  28. package/dist/src/handlers/resources.js +108 -23
  29. package/dist/src/handlers/resources.js.map +1 -1
  30. package/dist/src/handlers/skills.d.ts +70 -0
  31. package/dist/src/handlers/skills.js +174 -0
  32. package/dist/src/handlers/skills.js.map +1 -0
  33. package/dist/src/handlers/tools.d.ts +41 -5
  34. package/dist/src/handlers/tools.js +213 -258
  35. package/dist/src/handlers/tools.js.map +1 -1
  36. package/dist/src/server.d.ts +4 -0
  37. package/dist/src/server.js +51 -6
  38. package/dist/src/server.js.map +1 -1
  39. package/dist/src/utils/faf-cli-bridge.d.ts +2 -0
  40. package/dist/src/utils/faf-cli-bridge.js +16 -0
  41. package/dist/src/utils/faf-cli-bridge.js.map +1 -1
  42. package/package.json +17 -14
  43. package/project.faf +23 -5
  44. package/scripts/check-engines.mjs +53 -0
  45. package/scripts/run-tests.sh +54 -0
  46. package/scripts/sync-version.js +33 -19
  47. package/skills/faf-ide/SKILL.md +40 -0
  48. package/dist/src/config/visibility.d.ts +0 -41
  49. package/dist/src/config/visibility.js +0 -158
  50. package/dist/src/config/visibility.js.map +0 -1
  51. package/dist/src/faf-core/commands/audit.d.ts +0 -21
  52. package/dist/src/faf-core/commands/audit.js +0 -83
  53. package/dist/src/faf-core/commands/audit.js.map +0 -1
  54. package/dist/src/faf-core/commands/auto.d.ts +0 -25
  55. package/dist/src/faf-core/commands/auto.js +0 -74
  56. package/dist/src/faf-core/commands/auto.js.map +0 -1
  57. package/dist/src/faf-core/commands/doctor.d.ts +0 -17
  58. package/dist/src/faf-core/commands/doctor.js +0 -198
  59. package/dist/src/faf-core/commands/doctor.js.map +0 -1
  60. package/dist/src/faf-core/commands/enhance.d.ts +0 -46
  61. package/dist/src/faf-core/commands/enhance.js +0 -360
  62. package/dist/src/faf-core/commands/enhance.js.map +0 -1
  63. package/dist/src/faf-core/commands/formats.d.ts +0 -22
  64. package/dist/src/faf-core/commands/formats.js +0 -117
  65. package/dist/src/faf-core/commands/formats.js.map +0 -1
  66. package/dist/src/faf-core/commands/human.d.ts +0 -27
  67. package/dist/src/faf-core/commands/human.js +0 -183
  68. package/dist/src/faf-core/commands/human.js.map +0 -1
  69. package/dist/src/faf-core/commands/init.d.ts +0 -26
  70. package/dist/src/faf-core/commands/init.js +0 -114
  71. package/dist/src/faf-core/commands/init.js.map +0 -1
  72. package/dist/src/faf-core/commands/innit.d.ts +0 -7
  73. package/dist/src/faf-core/commands/innit.js +0 -13
  74. package/dist/src/faf-core/commands/innit.js.map +0 -1
  75. package/dist/src/faf-core/commands/migrate.d.ts +0 -15
  76. package/dist/src/faf-core/commands/migrate.js +0 -86
  77. package/dist/src/faf-core/commands/migrate.js.map +0 -1
  78. package/dist/src/faf-core/commands/quick.d.ts +0 -16
  79. package/dist/src/faf-core/commands/quick.js +0 -184
  80. package/dist/src/faf-core/commands/quick.js.map +0 -1
  81. package/dist/src/faf-core/commands/readme.d.ts +0 -47
  82. package/dist/src/faf-core/commands/readme.js +0 -361
  83. package/dist/src/faf-core/commands/readme.js.map +0 -1
  84. package/dist/src/faf-core/commands/score.d.ts +0 -47
  85. package/dist/src/faf-core/commands/score.js +0 -49
  86. package/dist/src/faf-core/commands/score.js.map +0 -1
  87. package/dist/src/faf-core/commands/update.d.ts +0 -12
  88. package/dist/src/faf-core/commands/update.js +0 -46
  89. package/dist/src/faf-core/commands/update.js.map +0 -1
  90. package/dist/src/faf-core/commands/validate.d.ts +0 -21
  91. package/dist/src/faf-core/commands/validate.js +0 -81
  92. package/dist/src/faf-core/commands/validate.js.map +0 -1
  93. package/dist/src/faf-core/compiler/faf-compiler.d.ts +0 -138
  94. package/dist/src/faf-core/compiler/faf-compiler.js +0 -1362
  95. package/dist/src/faf-core/compiler/faf-compiler.js.map +0 -1
  96. package/dist/src/faf-core/engines/fab-formats-processor.d.ts +0 -166
  97. package/dist/src/faf-core/engines/fab-formats-processor.js +0 -1274
  98. package/dist/src/faf-core/engines/fab-formats-processor.js.map +0 -1
  99. package/dist/src/faf-core/engines/faf-dna.d.ts +0 -159
  100. package/dist/src/faf-core/engines/faf-dna.js +0 -555
  101. package/dist/src/faf-core/engines/faf-dna.js.map +0 -1
  102. package/dist/src/faf-core/engines/relentless-context-extractor.d.ts +0 -100
  103. package/dist/src/faf-core/engines/relentless-context-extractor.js +0 -625
  104. package/dist/src/faf-core/engines/relentless-context-extractor.js.map +0 -1
  105. package/dist/src/faf-core/fix-once/types.d.ts +0 -257
  106. package/dist/src/faf-core/fix-once/types.js +0 -26
  107. package/dist/src/faf-core/fix-once/types.js.map +0 -1
  108. package/dist/src/faf-core/generators/faf-generator-championship.d.ts +0 -16
  109. package/dist/src/faf-core/generators/faf-generator-championship.js +0 -463
  110. package/dist/src/faf-core/generators/faf-generator-championship.js.map +0 -1
  111. package/dist/src/faf-core/inject.d.ts +0 -19
  112. package/dist/src/faf-core/inject.js +0 -57
  113. package/dist/src/faf-core/inject.js.map +0 -1
  114. package/dist/src/faf-core/parsers/index.d.ts +0 -12
  115. package/dist/src/faf-core/parsers/index.js +0 -29
  116. package/dist/src/faf-core/parsers/index.js.map +0 -1
  117. package/dist/src/faf-core/utils/balance-visualizer.d.ts +0 -37
  118. package/dist/src/faf-core/utils/balance-visualizer.js +0 -197
  119. package/dist/src/faf-core/utils/balance-visualizer.js.map +0 -1
  120. package/dist/src/faf-core/utils/championship-style.d.ts +0 -109
  121. package/dist/src/faf-core/utils/championship-style.js +0 -219
  122. package/dist/src/faf-core/utils/championship-style.js.map +0 -1
  123. package/dist/src/faf-core/utils/chrome-extension-detector.d.ts +0 -73
  124. package/dist/src/faf-core/utils/chrome-extension-detector.js +0 -268
  125. package/dist/src/faf-core/utils/chrome-extension-detector.js.map +0 -1
  126. package/dist/src/faf-core/utils/platform-detector.d.ts +0 -30
  127. package/dist/src/faf-core/utils/platform-detector.js +0 -218
  128. package/dist/src/faf-core/utils/platform-detector.js.map +0 -1
  129. package/dist/src/faf-core/utils/technical-credit.d.ts +0 -35
  130. package/dist/src/faf-core/utils/technical-credit.js +0 -286
  131. package/dist/src/faf-core/utils/technical-credit.js.map +0 -1
  132. package/dist/src/faf-core/utils/yaml-generator.d.ts +0 -41
  133. package/dist/src/faf-core/utils/yaml-generator.js +0 -360
  134. package/dist/src/faf-core/utils/yaml-generator.js.map +0 -1
  135. package/dist/src/handlers/behavioral-instruction.d.ts +0 -16
  136. package/dist/src/handlers/behavioral-instruction.js +0 -43
  137. package/dist/src/handlers/behavioral-instruction.js.map +0 -1
  138. package/dist/src/handlers/championship-tools.d.ts +0 -116
  139. package/dist/src/handlers/championship-tools.js +0 -2320
  140. package/dist/src/handlers/championship-tools.js.map +0 -1
  141. package/dist/src/handlers/cloud-handler.d.ts +0 -59
  142. package/dist/src/handlers/cloud-handler.js +0 -348
  143. package/dist/src/handlers/cloud-handler.js.map +0 -1
  144. package/dist/src/handlers/tool-registry.d.ts +0 -23
  145. package/dist/src/handlers/tool-registry.js +0 -68
  146. package/dist/src/handlers/tool-registry.js.map +0 -1
  147. package/dist/src/handlers/tool-types.d.ts +0 -167
  148. package/dist/src/handlers/tool-types.js +0 -7
  149. package/dist/src/handlers/tool-types.js.map +0 -1
  150. package/dist/src/test-all-functions.d.ts +0 -15
  151. package/dist/src/test-all-functions.js +0 -163
  152. package/dist/src/test-all-functions.js.map +0 -1
  153. package/dist/src/types/mcp-tools.d.ts +0 -53
  154. package/dist/src/types/mcp-tools.js +0 -77
  155. package/dist/src/types/mcp-tools.js.map +0 -1
  156. package/dist/src/types/tool-visibility.d.ts +0 -36
  157. package/dist/src/types/tool-visibility.js +0 -551
  158. package/dist/src/types/tool-visibility.js.map +0 -1
  159. package/dist/src/utils/auto-path-detection.d.ts +0 -26
  160. package/dist/src/utils/auto-path-detection.js +0 -198
  161. package/dist/src/utils/auto-path-detection.js.map +0 -1
  162. package/dist/src/utils/championship-format.d.ts +0 -30
  163. package/dist/src/utils/championship-format.js +0 -81
  164. package/dist/src/utils/championship-format.js.map +0 -1
  165. package/dist/src/utils/cli-detector.d.ts +0 -17
  166. package/dist/src/utils/cli-detector.js +0 -247
  167. package/dist/src/utils/cli-detector.js.map +0 -1
  168. package/dist/src/utils/display-protocol.d.ts +0 -57
  169. package/dist/src/utils/display-protocol.js +0 -131
  170. package/dist/src/utils/display-protocol.js.map +0 -1
  171. package/dist/src/utils/username-detector.d.ts +0 -27
  172. package/dist/src/utils/username-detector.js +0 -90
  173. package/dist/src/utils/username-detector.js.map +0 -1
  174. package/dist/src/utils/visual-style.d.ts +0 -62
  175. package/dist/src/utils/visual-style.js +0 -166
  176. package/dist/src/utils/visual-style.js.map +0 -1
  177. package/scripts/postinstall.js +0 -50
  178. package/skill/SKILL.md +0 -385
@@ -1 +1 @@
1
- {"version":3,"file":"engine-adapter.js","sourceRoot":"","sources":["../../../src/handlers/engine-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine-adapter.js","sourceRoot":"","sources":["../../../src/handlers/engine-adapter.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,13 @@ import { FafEngineAdapter } from './engine-adapter';
3
3
  export declare class FafResourceHandler {
4
4
  private engineAdapter;
5
5
  constructor(engineAdapter: FafEngineAdapter);
6
+ /**
7
+ * v3.0: renamed from `claude-faf://` to `faf://` — an identity leftover
8
+ * from before this became the generic Cursor/IDE edition (no Claude-
9
+ * specific behavior lives behind these URIs). `faf://` is primary and
10
+ * listed first; `claude-faf://` stays registered as an alias for one
11
+ * release so an existing client pointed at the old URI doesn't break.
12
+ */
6
13
  listResources(): Promise<{
7
14
  resources: Resource[];
8
15
  }>;
@@ -10,9 +17,20 @@ export declare class FafResourceHandler {
10
17
  contents: {
11
18
  uri: string;
12
19
  mimeType: string;
13
- text: any;
20
+ text: string;
14
21
  }[];
15
22
  }>;
23
+ /**
24
+ * v3.0: both resources were `this.engineAdapter.callEngine('status', ...)`
25
+ * — no bundled 'status' branch exists in engine-adapter.ts, so this fell
26
+ * straight through to the ambient-PATH shell-out fallback (`which faf`,
27
+ * then execAsync). Reproduced live on this machine: PATH resolves to an
28
+ * unrelated Rust tool also named `faf`, and this resource "succeeded"
29
+ * with THAT tool's own banner/score/slot-count as if it were faf-mcp's
30
+ * real output — wrong data, no error signal, the worse of the two
31
+ * PATH-resolution bugs this release fixes. Rewired onto the bundled
32
+ * faf-cli bridge — bundled faf-cli only, never ambient PATH.
33
+ */
16
34
  private getFafContext;
17
35
  private getFafStatus;
18
36
  }
@@ -1,28 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FafResourceHandler = void 0;
4
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
5
+ /** MCP's resource-not-found code — not in the SDK's ErrorCode enum, so spelled out. */
6
+ const RESOURCE_NOT_FOUND = -32002;
7
+ const faf_cli_bridge_js_1 = require("../utils/faf-cli-bridge.js");
4
8
  class FafResourceHandler {
5
9
  engineAdapter;
6
10
  constructor(engineAdapter) {
7
11
  this.engineAdapter = engineAdapter;
8
12
  }
13
+ /**
14
+ * v3.0: renamed from `claude-faf://` to `faf://` — an identity leftover
15
+ * from before this became the generic Cursor/IDE edition (no Claude-
16
+ * specific behavior lives behind these URIs). `faf://` is primary and
17
+ * listed first; `claude-faf://` stays registered as an alias for one
18
+ * release so an existing client pointed at the old URI doesn't break.
19
+ */
9
20
  async listResources() {
10
21
  // Get the working directory for file system resources
11
22
  const workingDir = process.env.FAF_WORKING_DIR ?? process.cwd();
12
23
  return {
13
24
  resources: [
14
25
  {
15
- uri: 'claude-faf://context',
26
+ uri: 'faf://context',
16
27
  name: 'Current FAF Context',
17
28
  description: 'Current project FAF context and metadata',
18
29
  mimeType: 'application/json'
19
30
  },
20
31
  {
21
- uri: 'claude-faf://status',
32
+ uri: 'faf://status',
22
33
  name: 'FAF Status Summary',
23
34
  description: 'Project health and AI readiness status',
24
35
  mimeType: 'text/plain'
25
36
  },
37
+ {
38
+ uri: 'claude-faf://context',
39
+ name: 'Current FAF Context (legacy alias)',
40
+ description: 'Alias for faf://context — kept for one release, prefer faf://context.',
41
+ mimeType: 'application/json'
42
+ },
43
+ {
44
+ uri: 'claude-faf://status',
45
+ name: 'FAF Status Summary (legacy alias)',
46
+ description: 'Alias for faf://status — kept for one release, prefer faf://status.',
47
+ mimeType: 'text/plain'
48
+ },
26
49
  // Declare file system access for the working directory
27
50
  {
28
51
  uri: `file://${workingDir}`,
@@ -45,33 +68,95 @@ class FafResourceHandler {
45
68
  };
46
69
  }
47
70
  switch (uri) {
71
+ case 'faf://context':
48
72
  case 'claude-faf://context':
49
- return await this.getFafContext();
73
+ return await this.getFafContext(uri);
74
+ case 'faf://status':
50
75
  case 'claude-faf://status':
51
- return await this.getFafStatus();
76
+ return await this.getFafStatus(uri);
52
77
  default:
53
- throw new Error(`Unknown resource: ${uri}`);
78
+ throw new types_js_1.McpError(RESOURCE_NOT_FOUND, `Resource not found: ${uri}`);
54
79
  }
55
80
  }
56
- async getFafContext() {
57
- const result = await this.engineAdapter.callEngine('status', ['--json']);
58
- return {
59
- contents: [{
60
- uri: 'claude-faf://context',
61
- mimeType: 'application/json',
62
- text: JSON.stringify(result.success ? result.data : { error: result.error }, null, 2)
63
- }]
64
- };
81
+ /**
82
+ * v3.0: both resources were `this.engineAdapter.callEngine('status', ...)`
83
+ * — no bundled 'status' branch exists in engine-adapter.ts, so this fell
84
+ * straight through to the ambient-PATH shell-out fallback (`which faf`,
85
+ * then execAsync). Reproduced live on this machine: PATH resolves to an
86
+ * unrelated Rust tool also named `faf`, and this resource "succeeded"
87
+ * with THAT tool's own banner/score/slot-count as if it were faf-mcp's
88
+ * real output — wrong data, no error signal, the worse of the two
89
+ * PATH-resolution bugs this release fixes. Rewired onto the bundled
90
+ * faf-cli bridge — bundled faf-cli only, never ambient PATH.
91
+ */
92
+ async getFafContext(uri) {
93
+ const cwd = this.engineAdapter.getWorkingDirectory();
94
+ const { findFafFile: findFaf, readFaf, readFafRaw, scoreFafYaml } = await faf_cli_bridge_js_1.fafCli;
95
+ const fafPath = findFaf(cwd);
96
+ if (!fafPath) {
97
+ return {
98
+ contents: [{
99
+ uri,
100
+ mimeType: 'application/json',
101
+ text: JSON.stringify({ error: `No .faf found in ${cwd}` }, null, 2)
102
+ }]
103
+ };
104
+ }
105
+ try {
106
+ const data = readFaf(fafPath);
107
+ const score = scoreFafYaml(readFafRaw(fafPath));
108
+ return {
109
+ contents: [{
110
+ uri,
111
+ mimeType: 'application/json',
112
+ text: JSON.stringify({ path: fafPath, score: score.score, tier: score.tier.name, populated: score.populated, total: score.total, data }, null, 2)
113
+ }]
114
+ };
115
+ }
116
+ catch (error) {
117
+ return {
118
+ contents: [{
119
+ uri,
120
+ mimeType: 'application/json',
121
+ text: JSON.stringify({ error: error?.message ?? String(error) }, null, 2)
122
+ }]
123
+ };
124
+ }
65
125
  }
66
- async getFafStatus() {
67
- const result = await this.engineAdapter.callEngine('status');
68
- return {
69
- contents: [{
70
- uri: 'claude-faf://status',
71
- mimeType: 'text/plain',
72
- text: result.success ? (result.data?.output ?? String(result.data)) : `Error: ${result.error ?? 'Unknown error'}`
73
- }]
74
- };
126
+ async getFafStatus(uri) {
127
+ const cwd = this.engineAdapter.getWorkingDirectory();
128
+ const { findFafFile: findFaf, readFafRaw, scoreFafYaml } = await faf_cli_bridge_js_1.fafCli;
129
+ const fafPath = findFaf(cwd);
130
+ if (!fafPath) {
131
+ return {
132
+ contents: [{
133
+ uri,
134
+ mimeType: 'text/plain',
135
+ text: `No .faf found in ${cwd}\nRun faf_init to create one.`
136
+ }]
137
+ };
138
+ }
139
+ try {
140
+ const score = scoreFafYaml(readFafRaw(fafPath));
141
+ const text = `${fafPath}\n` +
142
+ `FAF SCORE: ${score.score}/100 (${score.populated}/${score.active} slots populated) — ${score.tier.name}`;
143
+ return {
144
+ contents: [{
145
+ uri,
146
+ mimeType: 'text/plain',
147
+ text
148
+ }]
149
+ };
150
+ }
151
+ catch (error) {
152
+ return {
153
+ contents: [{
154
+ uri,
155
+ mimeType: 'text/plain',
156
+ text: `Error: ${error?.message ?? String(error)}`
157
+ }]
158
+ };
159
+ }
75
160
  }
76
161
  }
77
162
  exports.FafResourceHandler = FafResourceHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/handlers/resources.ts"],"names":[],"mappings":";;;AAGA,MAAa,kBAAkB;IACT;IAApB,YAAoB,aAA+B;QAA/B,kBAAa,GAAb,aAAa,CAAkB;IAAG,CAAC;IAEvD,KAAK,CAAC,aAAa;QACjB,sDAAsD;QACtD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAEhE,OAAO;YACL,SAAS,EAAE;gBACT;oBACE,GAAG,EAAE,sBAAsB;oBAC3B,IAAI,EAAE,qBAAqB;oBAC3B,WAAW,EAAE,0CAA0C;oBACvD,QAAQ,EAAE,kBAAkB;iBAC7B;gBACD;oBACE,GAAG,EAAE,qBAAqB;oBAC1B,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,wCAAwC;oBACrD,QAAQ,EAAE,YAAY;iBACvB;gBACD,uDAAuD;gBACvD;oBACE,GAAG,EAAE,UAAU,UAAU,EAAE;oBAC3B,IAAI,EAAE,uBAAuB;oBAC7B,WAAW,EAAE,uCAAuC;oBACpD,QAAQ,EAAE,gBAAgB;iBAC3B;aACY;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,6CAA6C;QAC7C,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,QAAQ,EAAE,CAAC;wBACT,GAAG,EAAE,GAAG;wBACR,QAAQ,EAAE,gBAAgB;wBAC1B,IAAI,EAAE,yBAAyB,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;qBAC5D,CAAC;aACH,CAAC;QACJ,CAAC;QAED,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,sBAAsB;gBACzB,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YACpC,KAAK,qBAAqB;gBACxB,OAAO,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEzE,OAAO;YACL,QAAQ,EAAE,CAAC;oBACT,GAAG,EAAE,sBAAsB;oBAC3B,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtF,CAAC;SACH,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE7D,OAAO;YACL,QAAQ,EAAE,CAAC;oBACT,GAAG,EAAE,qBAAqB;oBAC1B,QAAQ,EAAE,YAAY;oBACtB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE;iBAClH,CAAC;SACH,CAAC;IACJ,CAAC;CACF;AA7ED,gDA6EC"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/handlers/resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * J1 Agent Skills over MCP (product — faf-mcp stdio).
3
+ *
4
+ * Extension id: io.modelcontextprotocol/skills
5
+ * Wire: skills/list · skills/get · resources/read(skill://…) with sha256 digests.
6
+ * Pattern aligned with mcp-better / rust-faf-mcp J1; TS SDK handlers (not rmcp).
7
+ */
8
+ import type { Resource } from '@modelcontextprotocol/sdk/types.js';
9
+ import { z } from 'zod';
10
+ export declare const SKILLS_EXTENSION_ID = "io.modelcontextprotocol/skills";
11
+ export declare const FAF_IDE_SKILL_NAME = "faf-ide";
12
+ export declare const FAF_IDE_SKILL_URI = "skill://faf-ide/SKILL.md";
13
+ export interface SkillResource {
14
+ uri: string;
15
+ digest: string;
16
+ text: string;
17
+ bytes: Buffer;
18
+ }
19
+ export interface SkillEntry {
20
+ uri: string;
21
+ frontmatter: Record<string, string>;
22
+ resources: SkillResource[];
23
+ }
24
+ export declare const SkillsListRequestSchema: z.ZodObject<{
25
+ params: z.ZodOptional<z.ZodObject<{
26
+ _meta: z.ZodOptional<z.ZodObject<{
27
+ progressToken: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
28
+ "io.modelcontextprotocol/related-task": z.ZodOptional<z.ZodObject<{
29
+ taskId: z.ZodString;
30
+ }, z.core.$strip>>;
31
+ }, z.core.$loose>>;
32
+ }, z.core.$loose>>;
33
+ method: z.ZodLiteral<"skills/list">;
34
+ }, z.core.$strip>;
35
+ export declare const SkillsGetRequestSchema: z.ZodObject<{
36
+ method: z.ZodLiteral<"skills/get">;
37
+ params: z.ZodObject<{
38
+ uri: z.ZodString;
39
+ }, z.core.$strip>;
40
+ }, z.core.$strip>;
41
+ export declare const SkillsListResultSchema: z.ZodObject<{
42
+ skills: z.ZodArray<z.ZodUnknown>;
43
+ }, z.core.$strip>;
44
+ export declare const SkillsGetResultSchema: z.ZodObject<{
45
+ uri: z.ZodString;
46
+ frontmatter: z.ZodRecord<z.ZodString, z.ZodString>;
47
+ resources: z.ZodArray<z.ZodObject<{
48
+ uri: z.ZodString;
49
+ digest: z.ZodString;
50
+ }, z.core.$strip>>;
51
+ }, z.core.$strip>;
52
+ declare function skillEntryJson(entry: SkillEntry): {
53
+ uri: string;
54
+ frontmatter: Record<string, string>;
55
+ resources: {
56
+ uri: string;
57
+ digest: string;
58
+ }[];
59
+ };
60
+ export declare class SkillCatalog {
61
+ private skills;
62
+ static loadFafIde(): SkillCatalog;
63
+ listEntries(): ReturnType<typeof skillEntryJson>[];
64
+ getByUri(uri: string): ReturnType<typeof skillEntryJson> | undefined;
65
+ findResource(uri: string): SkillResource | undefined;
66
+ listResourcesMeta(): Resource[];
67
+ }
68
+ /** package root helper used by path resolution tests */
69
+ export declare function skillPackageRootCandidates(): string[];
70
+ export {};
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ /**
3
+ * J1 Agent Skills over MCP (product — faf-mcp stdio).
4
+ *
5
+ * Extension id: io.modelcontextprotocol/skills
6
+ * Wire: skills/list · skills/get · resources/read(skill://…) with sha256 digests.
7
+ * Pattern aligned with mcp-better / rust-faf-mcp J1; TS SDK handlers (not rmcp).
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SkillCatalog = exports.SkillsGetResultSchema = exports.SkillsListResultSchema = exports.SkillsGetRequestSchema = exports.SkillsListRequestSchema = exports.FAF_IDE_SKILL_URI = exports.FAF_IDE_SKILL_NAME = exports.SKILLS_EXTENSION_ID = void 0;
11
+ exports.skillPackageRootCandidates = skillPackageRootCandidates;
12
+ const crypto_1 = require("crypto");
13
+ const fs_1 = require("fs");
14
+ const path_1 = require("path");
15
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
16
+ const zod_1 = require("zod");
17
+ exports.SKILLS_EXTENSION_ID = 'io.modelcontextprotocol/skills';
18
+ exports.FAF_IDE_SKILL_NAME = 'faf-ide';
19
+ exports.FAF_IDE_SKILL_URI = 'skill://faf-ide/SKILL.md';
20
+ exports.SkillsListRequestSchema = types_js_1.RequestSchema.extend({
21
+ method: zod_1.z.literal('skills/list'),
22
+ });
23
+ exports.SkillsGetRequestSchema = types_js_1.RequestSchema.extend({
24
+ method: zod_1.z.literal('skills/get'),
25
+ params: zod_1.z.object({
26
+ uri: zod_1.z.string(),
27
+ }),
28
+ });
29
+ exports.SkillsListResultSchema = zod_1.z.object({
30
+ skills: zod_1.z.array(zod_1.z.unknown()),
31
+ });
32
+ exports.SkillsGetResultSchema = zod_1.z.object({
33
+ uri: zod_1.z.string(),
34
+ frontmatter: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
35
+ resources: zod_1.z.array(zod_1.z.object({
36
+ uri: zod_1.z.string(),
37
+ digest: zod_1.z.string(),
38
+ })),
39
+ });
40
+ function hexSha256(bytes) {
41
+ return (0, crypto_1.createHash)('sha256').update(bytes).digest('hex');
42
+ }
43
+ function parseFrontmatter(md) {
44
+ const cleaned = md.replace(/^\uFEFF/, '');
45
+ if (!cleaned.startsWith('---')) {
46
+ throw new Error('missing opening frontmatter ---');
47
+ }
48
+ const rest = cleaned.slice(3).replace(/^\n/, '');
49
+ const end = rest.indexOf('\n---');
50
+ if (end < 0) {
51
+ throw new Error('missing closing frontmatter ---');
52
+ }
53
+ const yaml = rest.slice(0, end);
54
+ const body = rest.slice(end + 4).replace(/^\n/, '');
55
+ const frontmatter = {};
56
+ for (const line of yaml.split('\n')) {
57
+ const trimmed = line.trim();
58
+ if (!trimmed || trimmed.startsWith('#'))
59
+ continue;
60
+ const colon = trimmed.indexOf(':');
61
+ if (colon < 0) {
62
+ throw new Error(`bad frontmatter line: ${trimmed}`);
63
+ }
64
+ const key = trimmed.slice(0, colon).trim();
65
+ const value = trimmed.slice(colon + 1).trim();
66
+ frontmatter[key] = value;
67
+ }
68
+ if (!frontmatter.name || !frontmatter.description) {
69
+ throw new Error('frontmatter requires name and description');
70
+ }
71
+ return { frontmatter, body };
72
+ }
73
+ function resolveSkillMarkdownPath() {
74
+ // dist/src/handlers → ../../../skills/…
75
+ // src/handlers (ts-node/tests) → ../../skills/…
76
+ // cwd fallback for odd layouts
77
+ const candidates = [
78
+ (0, path_1.join)(__dirname, '..', '..', '..', 'skills', 'faf-ide', 'SKILL.md'),
79
+ (0, path_1.join)(__dirname, '..', '..', 'skills', 'faf-ide', 'SKILL.md'),
80
+ (0, path_1.join)(process.cwd(), 'skills', 'faf-ide', 'SKILL.md'),
81
+ ];
82
+ for (const p of candidates) {
83
+ if ((0, fs_1.existsSync)(p))
84
+ return p;
85
+ }
86
+ throw new Error(`faf-ide SKILL.md not found (tried ${candidates.join(', ')}). ` +
87
+ 'Ensure skills/faf-ide/SKILL.md ships in the npm package files list.');
88
+ }
89
+ function loadSkillFromMarkdown(md) {
90
+ const { frontmatter } = parseFrontmatter(md);
91
+ const name = frontmatter.name;
92
+ const uri = `skill://${name}/SKILL.md`;
93
+ const bytes = Buffer.from(md, 'utf8');
94
+ const digest = `sha256:${hexSha256(bytes)}`;
95
+ return {
96
+ uri,
97
+ frontmatter,
98
+ resources: [
99
+ {
100
+ uri,
101
+ digest,
102
+ text: md,
103
+ bytes,
104
+ },
105
+ ],
106
+ };
107
+ }
108
+ function skillEntryJson(entry) {
109
+ return {
110
+ uri: entry.uri,
111
+ frontmatter: entry.frontmatter,
112
+ resources: entry.resources.map((r) => ({
113
+ uri: r.uri,
114
+ digest: r.digest,
115
+ })),
116
+ };
117
+ }
118
+ class SkillCatalog {
119
+ skills = new Map();
120
+ static loadFafIde() {
121
+ const path = resolveSkillMarkdownPath();
122
+ const md = (0, fs_1.readFileSync)(path, 'utf8');
123
+ const entry = loadSkillFromMarkdown(md);
124
+ if (entry.frontmatter.name !== exports.FAF_IDE_SKILL_NAME) {
125
+ throw new Error(`frontmatter name must be ${exports.FAF_IDE_SKILL_NAME}`);
126
+ }
127
+ if (entry.uri !== exports.FAF_IDE_SKILL_URI) {
128
+ throw new Error(`skill URI must be ${exports.FAF_IDE_SKILL_URI}, got ${entry.uri}`);
129
+ }
130
+ const cat = new SkillCatalog();
131
+ cat.skills.set(entry.uri, entry);
132
+ return cat;
133
+ }
134
+ listEntries() {
135
+ return [...this.skills.values()].map(skillEntryJson);
136
+ }
137
+ getByUri(uri) {
138
+ const entry = this.skills.get(uri);
139
+ return entry ? skillEntryJson(entry) : undefined;
140
+ }
141
+ findResource(uri) {
142
+ for (const skill of this.skills.values()) {
143
+ const hit = skill.resources.find((r) => r.uri === uri);
144
+ if (hit)
145
+ return hit;
146
+ }
147
+ return undefined;
148
+ }
149
+ listResourcesMeta() {
150
+ const out = [];
151
+ for (const skill of this.skills.values()) {
152
+ for (const r of skill.resources) {
153
+ const name = r.uri.split('/').pop() ?? 'SKILL.md';
154
+ out.push({
155
+ uri: r.uri,
156
+ name,
157
+ description: 'Agent Skill document (FAF IDE product context)',
158
+ mimeType: 'text/markdown',
159
+ });
160
+ }
161
+ }
162
+ return out;
163
+ }
164
+ }
165
+ exports.SkillCatalog = SkillCatalog;
166
+ /** package root helper used by path resolution tests */
167
+ function skillPackageRootCandidates() {
168
+ return [
169
+ (0, path_1.dirname)((0, path_1.join)(__dirname, '..', '..', '..', 'package.json')),
170
+ (0, path_1.dirname)((0, path_1.join)(__dirname, '..', '..', 'package.json')),
171
+ process.cwd(),
172
+ ];
173
+ }
174
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/handlers/skills.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@ export declare class FafToolHandler {
36
36
  openWorldHint?: boolean | undefined;
37
37
  } | undefined;
38
38
  execution?: {
39
- taskSupport?: "required" | "optional" | "forbidden" | undefined;
39
+ taskSupport?: "optional" | "required" | "forbidden" | undefined;
40
40
  } | undefined;
41
41
  _meta?: {
42
42
  [x: string]: unknown;
@@ -54,9 +54,40 @@ export declare class FafToolHandler {
54
54
  private handleFafStatus;
55
55
  private handleFafScore;
56
56
  private handleFafInit;
57
+ /**
58
+ * v3.0: was `this.engineAdapter.callEngine('trust')` — no bundled 'trust'
59
+ * branch exists in engine-adapter.ts, so this fell straight through to
60
+ * the ambient-PATH shell-out fallback (`which faf`, then execAsync).
61
+ * faf-cli itself has no `trust` subcommand at all — on any host where an
62
+ * unrelated `faf`-named binary sits first on PATH (verified live on this
63
+ * machine: Rust "FAFb"), this either hard-errors on an "unrecognized
64
+ * subcommand" or, worse, silently "succeeds" with that tool's own output.
65
+ * Rewired onto the bundled faf-cli bridge — bundled faf-cli only, never
66
+ * ambient PATH — composing `validateFaf` (structural integrity) +
67
+ * `scoreFafYaml` (trust metrics) directly, matching the tool's own
68
+ * description ("structural integrity and field consistency... trust
69
+ * metrics"). No CLI subcommand to shell out to even exists for this.
70
+ */
57
71
  private handleFafTrust;
58
72
  private handleFafSync;
59
73
  private handleFafBiSync;
74
+ /**
75
+ * v3.0: was `this.engineAdapter.callEngine('clear', clearArgs)` — no
76
+ * bundled 'clear' branch exists in engine-adapter.ts, so this fell
77
+ * straight through to the ambient-PATH shell-out fallback. Worse: even
78
+ * when a real faf-cli WAS first on PATH, its actual `clear` subcommand
79
+ * only clears `faf-git-*` temp directories from the OS tmpdir (see
80
+ * ~/FAF/cli/src/commands/clear.ts) — entirely unrelated to this tool's
81
+ * own cache/todos/backups semantics. There was never a correct backing
82
+ * implementation for this tool's contract, on any PATH.
83
+ *
84
+ * Rewired as a genuinely local operation — no CLI dependency, bundled or
85
+ * ambient, at all. `cache` clears the one real cache path this codebase
86
+ * writes (~/.faf-cli-cache, faf-core/utils/technical-credit.ts). The
87
+ * schema used to advertise `todos` and `backups` as well; no persisted todo
88
+ * list or backup-file store exists anywhere in faf-mcp, so those flags are
89
+ * gone rather than answered with a made-up "cleared".
90
+ */
60
91
  private handleFafClear;
61
92
  private handleFafAbout;
62
93
  private handleFafWhat;
@@ -80,7 +111,15 @@ export declare class FafToolHandler {
80
111
  /**
81
112
  * faf_auto - ONE COMMAND TO RULE THEM ALL
82
113
  * Zero to Championship in one command
83
- * Runs: init + formats + sync + bi-sync + score
114
+ *
115
+ * v3.0: composes faf-cli's own `faf auto` chain — `updateExistingFaf` on an
116
+ * existing file, `assembleFreshFaf` on a new one, `writeFaf` for the bytes,
117
+ * `renderClaudeMd`/`writeClaudeMd` for CLAUDE.md — plus the same
118
+ * `scoreFafYaml` faf_score reads. Previously this handler ran a bespoke
119
+ * bootstrap template plus a local `calculateSimpleScore` pseudo-scorer,
120
+ * which could (and did) report a different score than faf_score for the
121
+ * identical file in the same server run. NEVER reimplement detection or
122
+ * scoring here — compose faf-cli, exactly like faf_score/faf_formats do.
84
123
  */
85
124
  private handleFafAuto;
86
125
  /**
@@ -94,9 +133,6 @@ export declare class FafToolHandler {
94
133
  */
95
134
  private handleFafFormats;
96
135
  /**
97
- * Internal helper: Calculate simple score from .faf data
98
- */
99
- private calculateSimpleScore;
100
136
  /**
101
137
  * faf_quick - Lightning-fast .faf creation
102
138
  * One-liner format: "name, description, language, framework, hosting"