faf-cli 4.5.0 → 5.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 (41) hide show
  1. package/README.md +25 -24
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +90 -4
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/bi-sync.d.ts +1 -0
  6. package/dist/commands/bi-sync.d.ts.map +1 -1
  7. package/dist/commands/bi-sync.js +14 -1
  8. package/dist/commands/bi-sync.js.map +1 -1
  9. package/dist/commands/memory.d.ts +14 -0
  10. package/dist/commands/memory.d.ts.map +1 -0
  11. package/dist/commands/memory.js +293 -0
  12. package/dist/commands/memory.js.map +1 -0
  13. package/dist/commands/pro.d.ts +10 -0
  14. package/dist/commands/pro.d.ts.map +1 -0
  15. package/dist/commands/pro.js +113 -0
  16. package/dist/commands/pro.js.map +1 -0
  17. package/dist/commands/ram.d.ts +17 -0
  18. package/dist/commands/ram.d.ts.map +1 -0
  19. package/dist/commands/ram.js +303 -0
  20. package/dist/commands/ram.js.map +1 -0
  21. package/dist/commands/readme.js +8 -8
  22. package/dist/commands/readme.js.map +1 -1
  23. package/dist/commands/sixws.js +1 -1
  24. package/dist/engines/v252-hybrid-engine.d.ts +1 -1
  25. package/dist/engines/v252-hybrid-engine.d.ts.map +1 -1
  26. package/dist/engines/v252-hybrid-engine.js +1 -1
  27. package/dist/engines/v252-hybrid-engine.js.map +1 -1
  28. package/dist/licensing/license-messages.d.ts +20 -0
  29. package/dist/licensing/license-messages.d.ts.map +1 -0
  30. package/dist/licensing/license-messages.js +77 -0
  31. package/dist/licensing/license-messages.js.map +1 -0
  32. package/dist/licensing/pro-gate.d.ts +54 -0
  33. package/dist/licensing/pro-gate.d.ts.map +1 -0
  34. package/dist/licensing/pro-gate.js +243 -0
  35. package/dist/licensing/pro-gate.js.map +1 -0
  36. package/dist/utils/memory-parser.d.ts +95 -0
  37. package/dist/utils/memory-parser.d.ts.map +1 -0
  38. package/dist/utils/memory-parser.js +408 -0
  39. package/dist/utils/memory-parser.js.map +1 -0
  40. package/package.json +1 -1
  41. package/project.faf +9 -17
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ /**
3
+ * faf memory — Claude Code Memory Interop (tri-sync)
4
+ *
5
+ * Bidirectional interoperability between FAF and Claude Code's
6
+ * auto-memory system. ROM (project.faf) ↔ RAM (MEMORY.md).
7
+ *
8
+ * Commands:
9
+ * - faf memory export .faf → MEMORY.md (seed Claude's memory)
10
+ * - faf memory import MEMORY.md → harvest into .faf
11
+ * - faf memory sync Bidirectional sync (FAF is source of truth)
12
+ * - faf memory status Show memory path, line count, breakdown
13
+ */
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.memoryCommand = memoryCommand;
19
+ const colors_1 = require("../fix-once/colors");
20
+ const fs_1 = require("fs");
21
+ const path_1 = __importDefault(require("path"));
22
+ const championship_style_1 = require("../utils/championship-style");
23
+ const file_utils_1 = require("../utils/file-utils");
24
+ const yaml_1 = require("../fix-once/yaml");
25
+ const memory_parser_1 = require("../utils/memory-parser");
26
+ // ============================================================================
27
+ // Main Command Router
28
+ // ============================================================================
29
+ async function memoryCommand(args) {
30
+ const subcommand = args[0];
31
+ const subcommandArgs = args.slice(1);
32
+ switch (subcommand) {
33
+ case 'export':
34
+ await runMemoryExport(subcommandArgs);
35
+ break;
36
+ case 'import':
37
+ await runMemoryImport(subcommandArgs);
38
+ break;
39
+ case 'sync':
40
+ await runMemorySync(subcommandArgs);
41
+ break;
42
+ case 'status':
43
+ await runMemoryStatus(subcommandArgs);
44
+ break;
45
+ case undefined:
46
+ case 'help':
47
+ case '--help':
48
+ case '-h':
49
+ showMemoryHelp();
50
+ break;
51
+ default:
52
+ console.error(colors_1.chalk.red(`\n❌ Unknown memory command: ${subcommand}`));
53
+ console.log('\nAvailable commands:');
54
+ showMemoryHelp();
55
+ process.exit(1);
56
+ }
57
+ }
58
+ function parseMemoryArgs(args) {
59
+ const options = {};
60
+ for (let i = 0; i < args.length; i++) {
61
+ const arg = args[i];
62
+ if (arg === '--path' && args[i + 1]) {
63
+ options.path = args[++i];
64
+ }
65
+ else if (arg === '--force' || arg === '-f') {
66
+ options.force = true;
67
+ }
68
+ else if (arg === '--project-path' && args[i + 1]) {
69
+ options.projectPath = args[++i];
70
+ }
71
+ }
72
+ return options;
73
+ }
74
+ /**
75
+ * Resolve the project root — git root or cwd.
76
+ */
77
+ function resolveProjectRoot(override) {
78
+ if (override)
79
+ return path_1.default.resolve(override);
80
+ return (0, memory_parser_1.getGitRoot)() || process.cwd();
81
+ }
82
+ // ============================================================================
83
+ // Export Command: .faf → MEMORY.md
84
+ // ============================================================================
85
+ async function runMemoryExport(args) {
86
+ const options = parseMemoryArgs(args);
87
+ console.log();
88
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Exporting to MEMORY.md (tri-sync)...`));
89
+ console.log();
90
+ // Find FAF file
91
+ const fafPath = await (0, file_utils_1.findFafFile)(process.cwd());
92
+ if (!fafPath) {
93
+ console.log(colors_1.chalk.red(`❌ No .faf file found in current directory`));
94
+ console.log(colors_1.chalk.gray(' Run "faf init" first to create one.'));
95
+ console.log();
96
+ return;
97
+ }
98
+ // Resolve project root and memory path
99
+ const projectRoot = resolveProjectRoot(options.projectPath);
100
+ const outputPath = options.path || (0, memory_parser_1.resolveMemoryPath)(projectRoot);
101
+ console.log(colors_1.chalk.gray(` Source: ${fafPath}`));
102
+ console.log(colors_1.chalk.gray(` Output: ${outputPath}`));
103
+ console.log();
104
+ // Read FAF file
105
+ let fafContent;
106
+ try {
107
+ const content = await fs_1.promises.readFile(fafPath, 'utf-8');
108
+ fafContent = (0, yaml_1.parse)(content);
109
+ }
110
+ catch (err) {
111
+ console.log(colors_1.chalk.red(`❌ Failed to read FAF file: ${err}`));
112
+ return;
113
+ }
114
+ // Export
115
+ const result = await (0, memory_parser_1.memoryExport)(fafContent, outputPath, {
116
+ merge: !options.force,
117
+ });
118
+ if (!result.success) {
119
+ console.log(colors_1.chalk.red(`❌ Export failed`));
120
+ result.warnings.forEach(w => console.log(colors_1.chalk.yellow(` - ${w}`)));
121
+ return;
122
+ }
123
+ // Show warnings
124
+ if (result.warnings.length > 0) {
125
+ for (const w of result.warnings) {
126
+ console.log(colors_1.chalk.yellow(` ⚠️ ${w}`));
127
+ }
128
+ console.log();
129
+ }
130
+ console.log(colors_1.chalk.green(`☑️ Created: ${result.filePath}`));
131
+ console.log(colors_1.chalk.gray(` Lines: ${result.linesWritten} / 200 ceiling`));
132
+ if (result.merged) {
133
+ console.log(colors_1.chalk.gray(` Mode: Merged (Claude's existing notes preserved)`));
134
+ }
135
+ console.log();
136
+ console.log(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.trophy} tri-sync export complete! ROM → RAM`));
137
+ console.log(colors_1.chalk.gray(' Claude Code will auto-load this context in your next session.'));
138
+ console.log();
139
+ }
140
+ // ============================================================================
141
+ // Import Command: MEMORY.md → .faf (harvest)
142
+ // ============================================================================
143
+ async function runMemoryImport(args) {
144
+ const options = parseMemoryArgs(args);
145
+ console.log();
146
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Importing from MEMORY.md (harvest)...`));
147
+ console.log();
148
+ // Resolve memory path
149
+ const projectRoot = resolveProjectRoot(options.projectPath);
150
+ const memoryPath = options.path || (0, memory_parser_1.resolveMemoryPath)(projectRoot);
151
+ console.log(colors_1.chalk.gray(` Source: ${memoryPath}`));
152
+ console.log();
153
+ // Import
154
+ const result = await (0, memory_parser_1.memoryImport)(memoryPath);
155
+ if (!result.success) {
156
+ console.log(colors_1.chalk.red(`❌ Import failed`));
157
+ result.warnings.forEach(w => console.log(colors_1.chalk.yellow(` - ${w}`)));
158
+ return;
159
+ }
160
+ // Show warnings
161
+ if (result.warnings.length > 0) {
162
+ for (const w of result.warnings) {
163
+ console.log(colors_1.chalk.yellow(` ⚠️ ${w}`));
164
+ }
165
+ console.log();
166
+ }
167
+ // Show harvested data
168
+ const h = result.harvested;
169
+ const total = h.patterns.length + h.conventions.length + h.keyFiles.length + h.notes.length;
170
+ if (total === 0) {
171
+ console.log(colors_1.chalk.gray(' No structured entries to harvest.'));
172
+ console.log();
173
+ return;
174
+ }
175
+ console.log(colors_1.chalk.green(`☑️ Harvested ${total} entries from Claude's notes:`));
176
+ if (h.patterns.length > 0) {
177
+ console.log(colors_1.chalk.gray(` Patterns: ${h.patterns.length}`));
178
+ h.patterns.forEach(p => console.log(colors_1.chalk.gray(` - ${p}`)));
179
+ }
180
+ if (h.conventions.length > 0) {
181
+ console.log(colors_1.chalk.gray(` Conventions: ${h.conventions.length}`));
182
+ h.conventions.forEach(c => console.log(colors_1.chalk.gray(` - ${c}`)));
183
+ }
184
+ if (h.keyFiles.length > 0) {
185
+ console.log(colors_1.chalk.gray(` Key Files: ${h.keyFiles.length}`));
186
+ h.keyFiles.forEach(f => console.log(colors_1.chalk.gray(` - ${f}`)));
187
+ }
188
+ if (h.notes.length > 0) {
189
+ console.log(colors_1.chalk.gray(` Notes: ${h.notes.length}`));
190
+ h.notes.forEach(n => console.log(colors_1.chalk.gray(` - ${n}`)));
191
+ }
192
+ console.log();
193
+ // Merge into .faf if found
194
+ const fafPath = await (0, file_utils_1.findFafFile)(process.cwd());
195
+ if (fafPath) {
196
+ try {
197
+ const fafRaw = await fs_1.promises.readFile(fafPath, 'utf-8');
198
+ const fafData = (0, yaml_1.parse)(fafRaw);
199
+ // Add harvested data under memory_harvest
200
+ fafData.memory_harvest = {
201
+ last_import: new Date().toISOString(),
202
+ patterns: h.patterns.length > 0 ? h.patterns : undefined,
203
+ conventions: h.conventions.length > 0 ? h.conventions : undefined,
204
+ key_files: h.keyFiles.length > 0 ? h.keyFiles : undefined,
205
+ notes: h.notes.length > 0 ? h.notes : undefined,
206
+ };
207
+ await fs_1.promises.writeFile(fafPath, (0, yaml_1.stringify)(fafData));
208
+ console.log(colors_1.chalk.green(`☑️ Merged into: ${fafPath}`));
209
+ }
210
+ catch (err) {
211
+ console.log(colors_1.chalk.yellow(` ⚠️ Could not merge into .faf: ${err}`));
212
+ }
213
+ }
214
+ console.log();
215
+ console.log(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.trophy} tri-sync import complete! RAM → ROM`));
216
+ console.log();
217
+ }
218
+ // ============================================================================
219
+ // Sync Command
220
+ // ============================================================================
221
+ async function runMemorySync(args) {
222
+ const options = parseMemoryArgs(args);
223
+ console.log();
224
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Syncing FAF ↔ MEMORY.md (tri-sync)...`));
225
+ console.log(colors_1.chalk.gray(' Source of truth: FAF (ROM)'));
226
+ console.log();
227
+ // Export first (FAF → MEMORY.md)
228
+ await runMemoryExport(args);
229
+ }
230
+ // ============================================================================
231
+ // Status Command
232
+ // ============================================================================
233
+ async function runMemoryStatus(args) {
234
+ const options = parseMemoryArgs(args);
235
+ console.log();
236
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.lightning} Memory Status (tri-sync)`));
237
+ console.log();
238
+ const projectRoot = resolveProjectRoot(options.projectPath);
239
+ const status = await (0, memory_parser_1.getMemoryStatus)(projectRoot);
240
+ console.log(colors_1.chalk.gray(` Project Root: ${projectRoot}`));
241
+ console.log(colors_1.chalk.gray(` Memory Path: ${status.path}`));
242
+ console.log();
243
+ if (status.exists) {
244
+ console.log(colors_1.chalk.green(` ☑️ MEMORY.md exists`));
245
+ console.log(colors_1.chalk.gray(` Total Lines: ${status.totalLines} / 200 ceiling`));
246
+ if (status.totalLines > 200) {
247
+ console.log(colors_1.chalk.yellow(` ⚠️ Over 200-line ceiling! Lines 201+ silently truncated by Claude Code.`));
248
+ }
249
+ console.log(colors_1.chalk.gray(` FAF Section: ${status.hasFafSection ? `${status.fafSectionLines} lines` : 'Not present'}`));
250
+ console.log(colors_1.chalk.gray(` Claude Notes: ${status.claudeNotesLines} lines`));
251
+ }
252
+ else {
253
+ console.log(colors_1.chalk.yellow(` ⚠️ MEMORY.md not found`));
254
+ console.log(colors_1.chalk.gray(` Run "faf memory export" to seed Claude's memory from .faf`));
255
+ }
256
+ console.log();
257
+ }
258
+ // ============================================================================
259
+ // Help
260
+ // ============================================================================
261
+ function showMemoryHelp() {
262
+ console.log();
263
+ console.log(`${championship_style_1.FAF_COLORS.fafOrange('faf memory')} — Claude Code Memory Interop (tri-sync)`);
264
+ console.log();
265
+ console.log(colors_1.chalk.cyan('Commands:'));
266
+ console.log(' faf memory export Export .faf → MEMORY.md (seed Claude\'s memory)');
267
+ console.log(' faf memory import Import MEMORY.md → .faf (harvest Claude\'s notes)');
268
+ console.log(' faf memory sync Bidirectional sync (FAF is source of truth)');
269
+ console.log(' faf memory status Show memory path, line count, breakdown');
270
+ console.log();
271
+ console.log(colors_1.chalk.cyan('Options:'));
272
+ console.log(' --path <file> Custom MEMORY.md path');
273
+ console.log(' --force, -f Overwrite entirely (don\'t merge)');
274
+ console.log(' --project-path <dir> Override project root for path resolution');
275
+ console.log();
276
+ console.log(colors_1.chalk.cyan('Examples:'));
277
+ console.log(' faf memory export # Seed Claude\'s memory from .faf');
278
+ console.log(' faf memory export --force # Overwrite (don\'t preserve Claude\'s notes)');
279
+ console.log(' faf memory import # Harvest Claude\'s notes into .faf');
280
+ console.log(' faf memory status # Check memory path and line count');
281
+ console.log();
282
+ console.log(colors_1.chalk.cyan('Bi-sync integration:'));
283
+ console.log(' faf bi-sync --memory # tri-sync: also seed Claude\'s memory');
284
+ console.log(' faf bi-sync --all # Sync ALL targets including memory');
285
+ console.log();
286
+ console.log(colors_1.chalk.gray('About:'));
287
+ console.log(colors_1.chalk.gray(' tri-sync bridges .faf (ROM) with Claude Code\'s auto-memory (RAM).'));
288
+ console.log(colors_1.chalk.gray(' MEMORY.md lives at ~/.claude/projects/<id>/memory/MEMORY.md'));
289
+ console.log(colors_1.chalk.gray(' First 200 lines are auto-loaded into every Claude Code session.'));
290
+ console.log(colors_1.chalk.gray(' Merge mode preserves Claude\'s own notes — we only touch our section.'));
291
+ console.log();
292
+ }
293
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * faf pro — Manage FAF Pro license (tri-sync)
3
+ *
4
+ * Subcommands:
5
+ * faf pro Show Pro status
6
+ * faf pro status Show Pro status (alias)
7
+ * faf pro activate <key> Activate a license key
8
+ */
9
+ export declare function proCommand(args: string[]): Promise<void>;
10
+ //# sourceMappingURL=pro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pro.d.ts","sourceRoot":"","sources":["../../src/commands/pro.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B9D"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /**
3
+ * faf pro — Manage FAF Pro license (tri-sync)
4
+ *
5
+ * Subcommands:
6
+ * faf pro Show Pro status
7
+ * faf pro status Show Pro status (alias)
8
+ * faf pro activate <key> Activate a license key
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.proCommand = proCommand;
12
+ const colors_1 = require("../fix-once/colors");
13
+ const championship_style_1 = require("../utils/championship-style");
14
+ const pro_gate_1 = require("../licensing/pro-gate");
15
+ // ============================================================================
16
+ // Main Command Router
17
+ // ============================================================================
18
+ async function proCommand(args) {
19
+ const subcommand = args[0];
20
+ switch (subcommand) {
21
+ case 'activate': {
22
+ const key = args[1];
23
+ if (!key) {
24
+ console.log();
25
+ console.log(colors_1.chalk.red('Usage: faf pro activate <key>'));
26
+ console.log(colors_1.chalk.gray(' Format: FAF-PRO-XXXX-XXXX-XXXX'));
27
+ console.log();
28
+ return;
29
+ }
30
+ runActivate(key);
31
+ break;
32
+ }
33
+ case 'status':
34
+ case undefined:
35
+ case 'help':
36
+ case '--help':
37
+ case '-h':
38
+ showProStatus();
39
+ break;
40
+ default:
41
+ console.error(colors_1.chalk.red(`\n Unknown pro command: ${subcommand}`));
42
+ console.log(' Available: faf pro, faf pro status, faf pro activate <key>\n');
43
+ process.exit(1);
44
+ }
45
+ }
46
+ // ============================================================================
47
+ // Status
48
+ // ============================================================================
49
+ function showProStatus() {
50
+ const status = (0, pro_gate_1.getProStatus)();
51
+ console.log();
52
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.trophy} FAF Pro Status`));
53
+ console.log();
54
+ switch (status.state) {
55
+ case 'licensed':
56
+ console.log(colors_1.chalk.green(` ${championship_style_1.FAF_ICONS.gem} Pro Licensed`));
57
+ if (status.key) {
58
+ console.log(colors_1.chalk.gray(` Key: ${status.key}`));
59
+ }
60
+ if (status.tier) {
61
+ console.log(colors_1.chalk.gray(` Tier: ${status.tier}`));
62
+ }
63
+ if (status.activatedAt) {
64
+ console.log(colors_1.chalk.gray(` Activated: ${new Date(status.activatedAt).toLocaleDateString()}`));
65
+ }
66
+ break;
67
+ case 'trial':
68
+ console.log(colors_1.chalk.green(` ${championship_style_1.FAF_ICONS.rocket} Trial Active`));
69
+ console.log(colors_1.chalk.gray(` Days left: ${status.daysLeft}`));
70
+ if (status.trialExpires) {
71
+ console.log(colors_1.chalk.gray(` Expires: ${new Date(status.trialExpires).toLocaleDateString()}`));
72
+ }
73
+ console.log();
74
+ console.log(colors_1.chalk.gray(' Activate: faf pro activate <key>'));
75
+ console.log(colors_1.chalk.gray(' Purchase: faf.one/pro'));
76
+ break;
77
+ case 'trial_expired':
78
+ console.log(colors_1.chalk.yellow(` ${championship_style_1.FAF_ICONS.precision} Trial Expired`));
79
+ if (status.trialExpires) {
80
+ console.log(colors_1.chalk.gray(` Expired: ${new Date(status.trialExpires).toLocaleDateString()}`));
81
+ }
82
+ console.log();
83
+ console.log(colors_1.chalk.white(' bi-sync is free — and always will be. tri-sync Pro adds RAM.'));
84
+ console.log(colors_1.chalk.gray(' Early-bird: $3/mo · $19/yr (normally $10/mo — 70% off)'));
85
+ console.log(championship_style_1.FAF_COLORS.fafOrange(` ${championship_style_1.FAF_ICONS.trophy} faf.one/pro`));
86
+ console.log(colors_1.chalk.gray(' Activate: faf pro activate <key>'));
87
+ break;
88
+ case 'legacy_dev':
89
+ console.log(colors_1.chalk.green(` ${championship_style_1.FAF_ICONS.trophy} Legacy Developer Access`));
90
+ console.log(colors_1.chalk.gray(' All Pro features unlocked via turbo-license.'));
91
+ break;
92
+ case 'none':
93
+ console.log(colors_1.chalk.gray(` No trial started yet.`));
94
+ console.log(colors_1.chalk.gray(' Run a Pro command (faf ram, faf tri-sync) to start your 14-day trial.'));
95
+ break;
96
+ }
97
+ console.log();
98
+ }
99
+ // ============================================================================
100
+ // Activate
101
+ // ============================================================================
102
+ function runActivate(key) {
103
+ console.log();
104
+ const result = (0, pro_gate_1.activateLicense)(key);
105
+ if (result.success) {
106
+ console.log(colors_1.chalk.green(` ${championship_style_1.FAF_ICONS.trophy} ${result.message}`));
107
+ }
108
+ else {
109
+ console.log(colors_1.chalk.yellow(` ${result.message}`));
110
+ }
111
+ console.log();
112
+ }
113
+ //# sourceMappingURL=pro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pro.js","sourceRoot":"","sources":["../../src/commands/pro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * faf ram — Claude Code RAM Interop (tri-sync)
3
+ *
4
+ * Bidirectional interoperability between FAF (ROM) and Claude Code's
5
+ * auto-memory MEMORY.md (RAM).
6
+ *
7
+ * .faf = ROM (persistent, structured, portable)
8
+ * MEMORY.md = RAM (session-loaded, personal, Claude's workspace)
9
+ *
10
+ * Commands:
11
+ * - faf ram export ROM → RAM (.faf → MEMORY.md)
12
+ * - faf ram import RAM → ROM (MEMORY.md → harvest into .faf)
13
+ * - faf ram sync Bidirectional sync (ROM is source of truth)
14
+ * - faf ram status Show RAM path, line count, breakdown
15
+ */
16
+ export declare function ramCommand(args: string[]): Promise<void>;
17
+ //# sourceMappingURL=ram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ram.d.ts","sourceRoot":"","sources":["../../src/commands/ram.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAqBH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC9D"}