faf-cli 3.4.7 → 4.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 (53) hide show
  1. package/README.md +59 -41
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +60 -3
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/antigravity.d.ts +16 -0
  6. package/dist/commands/antigravity.d.ts.map +1 -0
  7. package/dist/commands/antigravity.js +398 -0
  8. package/dist/commands/antigravity.js.map +1 -0
  9. package/dist/commands/conductor.js +1 -1
  10. package/dist/commands/conductor.js.map +1 -1
  11. package/dist/commands/demo.js +2 -2
  12. package/dist/commands/demo.js.map +1 -1
  13. package/dist/commands/gemini.js +1 -1
  14. package/dist/commands/gemini.js.map +1 -1
  15. package/dist/commands/go.d.ts +23 -0
  16. package/dist/commands/go.d.ts.map +1 -0
  17. package/dist/commands/go.js +277 -0
  18. package/dist/commands/go.js.map +1 -0
  19. package/dist/commands/init.d.ts +1 -0
  20. package/dist/commands/init.d.ts.map +1 -1
  21. package/dist/commands/init.js +24 -1
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/status.d.ts +2 -1
  24. package/dist/commands/status.d.ts.map +1 -1
  25. package/dist/commands/status.js +35 -1
  26. package/dist/commands/status.js.map +1 -1
  27. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  28. package/dist/compiler/faf-compiler.js +8 -2
  29. package/dist/compiler/faf-compiler.js.map +1 -1
  30. package/dist/engines/c-mirror/core/mirror-engine.d.ts +1 -0
  31. package/dist/engines/c-mirror/core/mirror-engine.d.ts.map +1 -1
  32. package/dist/engines/c-mirror/core/mirror-engine.js +45 -3
  33. package/dist/engines/c-mirror/core/mirror-engine.js.map +1 -1
  34. package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts +2 -0
  35. package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts.map +1 -1
  36. package/dist/engines/c-mirror/faf-extensions/faf-mirror.js +19 -5
  37. package/dist/engines/c-mirror/faf-extensions/faf-mirror.js.map +1 -1
  38. package/dist/engines/execution-context.d.ts +75 -0
  39. package/dist/engines/execution-context.d.ts.map +1 -0
  40. package/dist/engines/execution-context.js +308 -0
  41. package/dist/engines/execution-context.js.map +1 -0
  42. package/dist/smart-faf.d.ts +16 -5
  43. package/dist/smart-faf.d.ts.map +1 -1
  44. package/dist/smart-faf.js +124 -52
  45. package/dist/smart-faf.js.map +1 -1
  46. package/dist/systems/question-system.d.ts +122 -0
  47. package/dist/systems/question-system.d.ts.map +1 -0
  48. package/dist/systems/question-system.js +411 -0
  49. package/dist/systems/question-system.js.map +1 -0
  50. package/dist/utils/conductor-parser.js +2 -1
  51. package/dist/utils/conductor-parser.js.map +1 -1
  52. package/package.json +2 -2
  53. package/project.faf +1 -1
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ /**
3
+ * FAF Execution Context Engine
4
+ *
5
+ * Detects the runtime context to enable context-aware behavior:
6
+ * - Terminal interactive (human typing, TTY)
7
+ * - Terminal script (CI/CD, piped input)
8
+ * - Claude Code (running via Claude Code bash/MCP)
9
+ * - MCP Server (direct MCP tool call)
10
+ * - API (programmatic usage)
11
+ *
12
+ * This enables the "faf go" guided experience to work seamlessly
13
+ * across all contexts, using inquirer in terminal and returning
14
+ * structured questions for Claude Code's AskUserQuestion.
15
+ *
16
+ * @since v3.5.0
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.detectExecutionContext = detectExecutionContext;
20
+ exports.canPromptInteractively = canPromptInteractively;
21
+ exports.shouldReturnStructuredQuestions = shouldReturnStructuredQuestions;
22
+ exports.isCI = isCI;
23
+ exports.getContextDescription = getContextDescription;
24
+ exports.logContextDetection = logContextDetection;
25
+ exports.setExecutionContext = setExecutionContext;
26
+ exports.clearForcedContext = clearForcedContext;
27
+ /**
28
+ * Environment variable markers for different contexts
29
+ */
30
+ const CONTEXT_MARKERS = {
31
+ // Claude Code markers
32
+ claudeCode: [
33
+ 'CLAUDE_CODE',
34
+ 'CLAUDE_CODE_VERSION',
35
+ 'ANTHROPIC_API_KEY', // Often present in Claude Code
36
+ ],
37
+ // MCP markers
38
+ mcp: [
39
+ 'MCP_SERVER',
40
+ 'FAF_MCP_MODE',
41
+ 'CLAUDE_MCP_SERVER',
42
+ ],
43
+ // Cursor markers
44
+ cursor: [
45
+ 'CURSOR_EDITOR',
46
+ 'CURSOR_SESSION_ID',
47
+ 'CURSOR_TRACE_ID',
48
+ ],
49
+ // Gemini markers
50
+ gemini: [
51
+ 'GEMINI_CLI',
52
+ 'GOOGLE_GENAI_API_KEY',
53
+ 'GEMINI_API_KEY',
54
+ ],
55
+ // CI/CD markers
56
+ ci: [
57
+ 'CI',
58
+ 'CONTINUOUS_INTEGRATION',
59
+ 'GITHUB_ACTIONS',
60
+ 'GITLAB_CI',
61
+ 'CIRCLECI',
62
+ 'TRAVIS',
63
+ 'JENKINS_URL',
64
+ 'BUILDKITE',
65
+ 'CODEBUILD_BUILD_ID',
66
+ 'BITBUCKET_BUILD_NUMBER',
67
+ ],
68
+ // API/programmatic markers
69
+ api: [
70
+ 'FAF_API_MODE',
71
+ 'FAF_PROGRAMMATIC',
72
+ ],
73
+ };
74
+ /**
75
+ * Check if any environment variables from a list are set
76
+ */
77
+ function hasEnvMarker(markers) {
78
+ for (const marker of markers) {
79
+ if (process.env[marker]) {
80
+ return marker;
81
+ }
82
+ }
83
+ return null;
84
+ }
85
+ /**
86
+ * Detect the current execution context
87
+ *
88
+ * Priority order (first match wins):
89
+ * 1. Explicit MCP mode
90
+ * 2. Explicit API mode
91
+ * 3. Claude Code context
92
+ * 4. Cursor context
93
+ * 5. Gemini context
94
+ * 6. CI/CD environment
95
+ * 7. TTY check (interactive vs script)
96
+ */
97
+ function detectExecutionContext() {
98
+ const detectedVia = [];
99
+ // 1. Check for explicit MCP mode
100
+ const mcpMarker = hasEnvMarker(CONTEXT_MARKERS.mcp);
101
+ if (mcpMarker) {
102
+ detectedVia.push(`env:${mcpMarker}`);
103
+ return {
104
+ context: 'mcp-server',
105
+ interactive: false,
106
+ supportsAskUserQuestion: true, // MCP can relay to Claude Code
107
+ supportsColors: false,
108
+ supportsEmoji: true,
109
+ ci: false,
110
+ detectedVia,
111
+ rawMode: false,
112
+ };
113
+ }
114
+ // 2. Check for explicit API mode
115
+ const apiMarker = hasEnvMarker(CONTEXT_MARKERS.api);
116
+ if (apiMarker) {
117
+ detectedVia.push(`env:${apiMarker}`);
118
+ return {
119
+ context: 'api',
120
+ interactive: false,
121
+ supportsAskUserQuestion: false,
122
+ supportsColors: false,
123
+ supportsEmoji: false,
124
+ ci: false,
125
+ detectedVia,
126
+ rawMode: false,
127
+ };
128
+ }
129
+ // 3. Check for Claude Code context
130
+ const claudeMarker = hasEnvMarker(CONTEXT_MARKERS.claudeCode);
131
+ if (claudeMarker) {
132
+ detectedVia.push(`env:${claudeMarker}`);
133
+ return {
134
+ context: 'claude-code',
135
+ interactive: false, // Can't prompt directly
136
+ supportsAskUserQuestion: true, // Can return structured questions
137
+ supportsColors: true, // Claude Code terminal supports colors
138
+ supportsEmoji: true,
139
+ ci: false,
140
+ detectedVia,
141
+ rawMode: false,
142
+ };
143
+ }
144
+ // 4. Check for Cursor context
145
+ const cursorMarker = hasEnvMarker(CONTEXT_MARKERS.cursor);
146
+ if (cursorMarker) {
147
+ detectedVia.push(`env:${cursorMarker}`);
148
+ return {
149
+ context: 'cursor',
150
+ interactive: false,
151
+ supportsAskUserQuestion: true, // Cursor may support similar
152
+ supportsColors: true,
153
+ supportsEmoji: true,
154
+ ci: false,
155
+ detectedVia,
156
+ rawMode: false,
157
+ };
158
+ }
159
+ // 5. Check for Gemini context
160
+ const geminiMarker = hasEnvMarker(CONTEXT_MARKERS.gemini);
161
+ if (geminiMarker) {
162
+ detectedVia.push(`env:${geminiMarker}`);
163
+ return {
164
+ context: 'gemini',
165
+ interactive: false,
166
+ supportsAskUserQuestion: false, // Gemini has different patterns
167
+ supportsColors: true,
168
+ supportsEmoji: true,
169
+ ci: false,
170
+ detectedVia,
171
+ rawMode: false,
172
+ };
173
+ }
174
+ // 6. Check for CI/CD environment
175
+ const ciMarker = hasEnvMarker(CONTEXT_MARKERS.ci);
176
+ if (ciMarker) {
177
+ detectedVia.push(`env:${ciMarker}`);
178
+ return {
179
+ context: 'terminal-script',
180
+ interactive: false,
181
+ supportsAskUserQuestion: false,
182
+ supportsColors: true, // Most CI supports colors
183
+ supportsEmoji: true,
184
+ ci: true,
185
+ detectedVia,
186
+ rawMode: false,
187
+ };
188
+ }
189
+ // 7. Check TTY for interactive vs script
190
+ const isTTY = process.stdin.isTTY && process.stdout.isTTY;
191
+ detectedVia.push(isTTY ? 'tty:true' : 'tty:false');
192
+ if (isTTY) {
193
+ return {
194
+ context: 'terminal-interactive',
195
+ interactive: true,
196
+ supportsAskUserQuestion: false, // Use inquirer instead
197
+ supportsColors: true,
198
+ supportsEmoji: true,
199
+ ci: false,
200
+ detectedVia,
201
+ rawMode: true,
202
+ };
203
+ }
204
+ // Default: non-interactive terminal script
205
+ return {
206
+ context: 'terminal-script',
207
+ interactive: false,
208
+ supportsAskUserQuestion: false,
209
+ supportsColors: process.env.FORCE_COLOR !== '0',
210
+ supportsEmoji: true,
211
+ ci: false,
212
+ detectedVia,
213
+ rawMode: false,
214
+ };
215
+ }
216
+ /**
217
+ * Quick check: can we prompt the user interactively?
218
+ */
219
+ function canPromptInteractively(ctx) {
220
+ const context = ctx || detectExecutionContext();
221
+ return context.interactive;
222
+ }
223
+ /**
224
+ * Quick check: should we return structured questions for AI?
225
+ */
226
+ function shouldReturnStructuredQuestions(ctx) {
227
+ const context = ctx || detectExecutionContext();
228
+ return context.supportsAskUserQuestion && !context.interactive;
229
+ }
230
+ /**
231
+ * Quick check: is this a CI/CD environment?
232
+ */
233
+ function isCI(ctx) {
234
+ const context = ctx || detectExecutionContext();
235
+ return context.ci;
236
+ }
237
+ /**
238
+ * Get a human-readable description of the context
239
+ */
240
+ function getContextDescription(ctx) {
241
+ const context = ctx || detectExecutionContext();
242
+ switch (context.context) {
243
+ case 'terminal-interactive':
244
+ return 'Interactive terminal (human)';
245
+ case 'terminal-script':
246
+ return context.ci ? 'CI/CD pipeline' : 'Non-interactive terminal';
247
+ case 'claude-code':
248
+ return 'Claude Code';
249
+ case 'mcp-server':
250
+ return 'MCP Server';
251
+ case 'cursor':
252
+ return 'Cursor IDE';
253
+ case 'gemini':
254
+ return 'Gemini CLI';
255
+ case 'api':
256
+ return 'Programmatic API';
257
+ default:
258
+ return 'Unknown context';
259
+ }
260
+ }
261
+ /**
262
+ * Log context detection for debugging
263
+ */
264
+ function logContextDetection(ctx) {
265
+ const context = ctx || detectExecutionContext();
266
+ if (process.env.FAF_DEBUG) {
267
+ console.error('[FAF Context Detection]');
268
+ console.error(` Context: ${context.context}`);
269
+ console.error(` Interactive: ${context.interactive}`);
270
+ console.error(` AskUserQuestion: ${context.supportsAskUserQuestion}`);
271
+ console.error(` Detected via: ${context.detectedVia.join(', ')}`);
272
+ }
273
+ }
274
+ /**
275
+ * Set execution context explicitly (for testing or forcing behavior)
276
+ */
277
+ function setExecutionContext(context) {
278
+ switch (context) {
279
+ case 'claude-code':
280
+ process.env.CLAUDE_CODE = '1';
281
+ break;
282
+ case 'mcp-server':
283
+ process.env.MCP_SERVER = '1';
284
+ break;
285
+ case 'cursor':
286
+ process.env.CURSOR_EDITOR = '1';
287
+ break;
288
+ case 'gemini':
289
+ process.env.GEMINI_CLI = '1';
290
+ break;
291
+ case 'api':
292
+ process.env.FAF_API_MODE = '1';
293
+ break;
294
+ // terminal-interactive and terminal-script depend on TTY, can't be forced via env
295
+ }
296
+ }
297
+ /**
298
+ * Clear forced execution context (for testing)
299
+ */
300
+ function clearForcedContext() {
301
+ delete process.env.CLAUDE_CODE;
302
+ delete process.env.MCP_SERVER;
303
+ delete process.env.CURSOR_EDITOR;
304
+ delete process.env.GEMINI_CLI;
305
+ delete process.env.FAF_API_MODE;
306
+ delete process.env.FAF_MCP_MODE;
307
+ }
308
+ //# sourceMappingURL=execution-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../../src/engines/execution-context.ts"],"names":[],"mappings":"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"}
@@ -2,20 +2,31 @@
2
2
  * Smart FAF Command Logic
3
3
  * Contextually aware command that adapts based on project state
4
4
  *
5
+ * Updated for 2026 Claude Code alignment:
6
+ * - Detects execution context (terminal, Claude Code, MCP)
7
+ * - In Claude Code: returns structured JSON for AskUserQuestion
8
+ * - In terminal: interactive prompts
9
+ * - Recommends `faf go` as guided path to Gold Code (100%)
10
+ *
5
11
  * Flow:
6
- * 1. No .faf → auto (create)
7
- * 2. Score < 99 → enhance (boost)
8
- * 3. Still < 99 → chat (interactive)
9
- * 4. Score 99-100 → bi-sync (maintain)
10
- * 5. Already perfect → status/commit
12
+ * 1. No .faf → suggest init or auto
13
+ * 2. Score < 100 → suggest faf go (guided interview)
14
+ * 3. Score 100 → celebrate and suggest maintenance
15
+ *
16
+ * @since v3.5.0 - Added execution context awareness
11
17
  */
12
18
  declare class SmartFaf {
13
19
  private stateFile;
14
20
  private fafFile;
15
21
  /**
16
22
  * Main entry point - smart contextual command
23
+ * Updated for 2026 Claude Code alignment
17
24
  */
18
25
  execute(): Promise<void>;
26
+ /**
27
+ * Output structured JSON for Claude Code / MCP contexts
28
+ */
29
+ private outputStructuredStatus;
19
30
  /**
20
31
  * Get current FAF state from file and system
21
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"smart-faf.d.ts","sourceRoot":"","sources":["../src/smart-faf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH,cAAM,QAAQ;IACZ,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAU;IAEzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqF9B;;OAEG;IACH,OAAO,CAAC,QAAQ;IA2ChB;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAwBhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,UAAU,IAAI,IAAI;CAMnB;AAGD,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"smart-faf.d.ts","sourceRoot":"","sources":["../src/smart-faf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAqBH,cAAM,QAAQ;IACZ,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAU;IAEzB;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkG9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqD9B;;OAEG;IACH,OAAO,CAAC,QAAQ;IA2ChB;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAwBhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,UAAU,IAAI,IAAI;CAMnB;AAGD,eAAe,QAAQ,CAAC"}
package/dist/smart-faf.js CHANGED
@@ -3,12 +3,18 @@
3
3
  * Smart FAF Command Logic
4
4
  * Contextually aware command that adapts based on project state
5
5
  *
6
+ * Updated for 2026 Claude Code alignment:
7
+ * - Detects execution context (terminal, Claude Code, MCP)
8
+ * - In Claude Code: returns structured JSON for AskUserQuestion
9
+ * - In terminal: interactive prompts
10
+ * - Recommends `faf go` as guided path to Gold Code (100%)
11
+ *
6
12
  * Flow:
7
- * 1. No .faf → auto (create)
8
- * 2. Score < 99 → enhance (boost)
9
- * 3. Still < 99 → chat (interactive)
10
- * 4. Score 99-100 → bi-sync (maintain)
11
- * 5. Already perfect → status/commit
13
+ * 1. No .faf → suggest init or auto
14
+ * 2. Score < 100 → suggest faf go (guided interview)
15
+ * 3. Score 100 → celebrate and suggest maintenance
16
+ *
17
+ * @since v3.5.0 - Added execution context awareness
12
18
  */
13
19
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
20
  if (k2 === undefined) k2 = k;
@@ -47,24 +53,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
47
53
  const fs = __importStar(require("fs"));
48
54
  const path = __importStar(require("path"));
49
55
  const child_process_1 = require("child_process");
56
+ const execution_context_1 = require("./engines/execution-context");
50
57
  class SmartFaf {
51
58
  stateFile = '.faf-state.json';
52
59
  fafFile = '.faf';
53
60
  /**
54
61
  * Main entry point - smart contextual command
62
+ * Updated for 2026 Claude Code alignment
55
63
  */
56
64
  async execute() {
57
- // CRITICAL: Check if we're in home or root directory
65
+ const ctx = (0, execution_context_1.detectExecutionContext)();
58
66
  const currentDir = process.cwd();
59
67
  const homeDir = require('os').homedir();
68
+ // CRITICAL: Check if we're in home or root directory
60
69
  if (currentDir === homeDir || currentDir === '/') {
70
+ if ((0, execution_context_1.shouldReturnStructuredQuestions)(ctx)) {
71
+ // Claude Code / MCP: return JSON guidance
72
+ console.log(JSON.stringify({
73
+ status: 'no_project',
74
+ message: 'FAF requires a project directory. Navigate to a project folder first.',
75
+ suggestions: [
76
+ 'cd /path/to/your/project && faf',
77
+ 'faf init /path/to/project',
78
+ ],
79
+ context: (0, execution_context_1.getContextDescription)(ctx),
80
+ }, null, 2));
81
+ return;
82
+ }
83
+ // Terminal: show welcome message
61
84
  console.log('\nšŸ§”āš”ļø FAF - AI Context, On-Demand\n');
62
85
  console.log('DROP | PASTE | CREATE - Click & Go!\n');
63
86
  console.log('šŸŽÆ What is FAF?');
64
87
  console.log('Persistent Project Context - makes your project AI-readable in <50ms\n');
65
88
  console.log('šŸ“‚ How to start:');
66
89
  console.log('• DROP: Navigate to your project: cd my-project && faf');
67
- console.log('• PASTE: Provide path: faf --dir /path/to/project');
90
+ console.log('• PASTE: Provide path: faf init /path/to/project');
68
91
  console.log('• CREATE: New project: faf quick "ProjectName, description, language"\n');
69
92
  console.log('šŸ’” Examples:');
70
93
  console.log(' cd ~/my-app && faf');
@@ -73,61 +96,110 @@ class SmartFaf {
73
96
  return;
74
97
  }
75
98
  const state = this.getState();
99
+ // === CLAUDE CODE / MCP CONTEXT ===
100
+ // Return structured JSON for AI to parse and use with AskUserQuestion
101
+ if ((0, execution_context_1.shouldReturnStructuredQuestions)(ctx)) {
102
+ this.outputStructuredStatus(state);
103
+ return;
104
+ }
105
+ // === TERMINAL CONTEXT ===
76
106
  console.log('šŸŽļø FAF Smart Mode Engaged...\n');
77
- // Decision tree based on current state
107
+ // No .faf file - suggest creation
78
108
  if (!state.exists) {
79
- this.runCommand('auto', 'Creating your .faf file...');
109
+ console.log('šŸ“ No .faf file found.\n');
110
+ console.log('šŸŽÆ Quick Start:');
111
+ console.log(' faf auto → Full setup in one command (recommended)');
112
+ console.log(' faf init → Create minimal .faf file');
113
+ console.log(' faf go → Guided interview to Gold Code\n');
80
114
  return;
81
115
  }
82
- // Check current score
83
- if (state.score >= 99) {
84
- if (!state.synced) {
85
- this.runCommand('bi-sync', 'šŸ† Perfect score! Syncing with CLAUDE.md...');
86
- this.updateState({ synced: true });
87
- // After bi-sync, suggest commit
88
- this.displayChampionshipScore(99);
89
- console.log('→ Run: faf commit');
90
- console.log(' Lock in this excellence forever\n');
91
- return;
92
- }
93
- else if (!state.locked) {
94
- // They've synced but haven't committed - remind them
95
- this.suggestCommit(state);
96
- return;
97
- }
98
- else {
99
- this.showStatus(state);
100
- }
116
+ // Show current status + next action
117
+ console.log(`šŸ“Š Current Score: ${state.score}%`);
118
+ // Perfect score - celebrate
119
+ if (state.score >= 100) {
120
+ this.displayChampionshipScore(state.score);
121
+ console.log('šŸ† GOLD CODE ACHIEVED! Your AI has complete context.\n');
122
+ console.log('Maintenance:');
123
+ console.log(' faf bi-sync → Keep CLAUDE.md synchronized');
124
+ console.log(' faf trust → Verify integrity');
125
+ console.log(' faf status → Check current state');
101
126
  return;
102
127
  }
103
- // Score < 99 - Progressive enhancement
104
- if (!state.lastEnhanced) {
105
- this.runCommand('enhance', `šŸ“ˆ Boosting from ${state.score}%...`);
106
- this.updateState({ lastEnhanced: true });
107
- // Re-check score after enhance
108
- const newScore = this.getCurrentScore();
109
- if (newScore >= 99) {
110
- console.log(`\nšŸŽÆ Achieved ${newScore}%! You're done!`);
111
- this.updateState({ score: newScore });
112
- }
113
- else {
114
- console.log(`\nšŸ“Š Now at ${newScore}%. Run 'faf' again or 'faf chat' for help.`);
115
- this.updateState({ score: newScore });
116
- }
128
+ // Score < 100 - suggest faf go
129
+ const toGold = 100 - state.score;
130
+ console.log(`šŸŽÆ Target: 100% Gold Code (+${toGold}% to go)\n`);
131
+ // Primary recommendation: faf go
132
+ console.log('šŸš€ Next Step:');
133
+ console.log(' faf go → Guided interview to 100% (recommended)');
134
+ console.log(' Claude asks questions till you\'re done!\n');
135
+ // Alternative options
136
+ console.log('Other Options:');
137
+ console.log(' faf auto → Auto-fill what we can detect');
138
+ console.log(' faf score --breakdown → See what\'s missing');
139
+ console.log(' faf edit → Manual edit .faf file\n');
140
+ // Growth hint
141
+ if (state.score < 70) {
142
+ console.log('šŸ’” Tip: Run "faf auto" first to boost to ~80%, then "faf go" to finish.');
143
+ }
144
+ else if (state.score < 85) {
145
+ console.log('šŸ’” Tip: You\'re close! Run "faf go" to answer a few questions and hit Gold.');
146
+ }
147
+ else {
148
+ console.log('šŸ’” Tip: Almost there! "faf go" will ask just a few more questions.');
149
+ }
150
+ }
151
+ /**
152
+ * Output structured JSON for Claude Code / MCP contexts
153
+ */
154
+ outputStructuredStatus(state) {
155
+ if (!state.exists) {
156
+ console.log(JSON.stringify({
157
+ status: 'no_faf_file',
158
+ score: 0,
159
+ message: 'No .faf file found in this directory.',
160
+ nextAction: {
161
+ command: 'faf auto',
162
+ description: 'Create .faf file and auto-fill what we can detect',
163
+ },
164
+ alternativeActions: [
165
+ { command: 'faf init', description: 'Create minimal .faf file' },
166
+ { command: 'faf go', description: 'Guided interview to Gold Code' },
167
+ ],
168
+ }, null, 2));
117
169
  return;
118
170
  }
119
- if (!state.lastChatted) {
120
- console.log(`šŸ“Š Current score: ${state.score}%`);
121
- console.log('\nšŸŽÆ Getting to 99% requires some human context.');
122
- console.log('\nOptions:');
123
- console.log(' 1. faf chat → Let me ask you questions (recommended)');
124
- console.log(' 2. faf index → See all commands and drive yourself');
125
- console.log(' 3. faf score --details → See what\'s missing\n');
126
- this.updateState({ lastChatted: true });
171
+ if (state.score >= 100) {
172
+ console.log(JSON.stringify({
173
+ status: 'gold_code',
174
+ score: state.score,
175
+ message: 'Gold Code achieved! AI has complete context.',
176
+ nextAction: {
177
+ command: 'faf bi-sync',
178
+ description: 'Keep CLAUDE.md synchronized',
179
+ },
180
+ maintenanceActions: [
181
+ { command: 'faf trust', description: 'Verify integrity' },
182
+ { command: 'faf status', description: 'Check current state' },
183
+ ],
184
+ }, null, 2));
127
185
  return;
128
186
  }
129
- // User has tried everything, show escape routes
130
- this.showEscapeRoutes(state);
187
+ // Score < 100 - recommend faf go
188
+ console.log(JSON.stringify({
189
+ status: 'needs_improvement',
190
+ score: state.score,
191
+ target: 100,
192
+ toGold: 100 - state.score,
193
+ message: `Score is ${state.score}%. Use 'faf go' for guided interview to Gold Code.`,
194
+ nextAction: {
195
+ command: 'faf go',
196
+ description: 'Guided interview to 100% - Claude asks questions till done',
197
+ },
198
+ alternativeActions: [
199
+ { command: 'faf auto', description: 'Auto-fill detectable fields' },
200
+ { command: 'faf score --breakdown', description: 'See what\'s missing' },
201
+ ],
202
+ }, null, 2));
131
203
  }
132
204
  /**
133
205
  * Get current FAF state from file and system
@@ -1 +1 @@
1
- {"version":3,"file":"smart-faf.js","sourceRoot":"","sources":["../src/smart-faf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart-faf.js","sourceRoot":"","sources":["../src/smart-faf.ts"],"names":[],"mappings":"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"}