faf-cli 2.4.21 → 2.5.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.
- package/README.md +244 -129
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto.d.ts.map +1 -1
- package/dist/commands/auto.js +63 -2
- package/dist/commands/auto.js.map +1 -1
- package/dist/commands/bi-sync.d.ts +9 -6
- package/dist/commands/bi-sync.d.ts.map +1 -1
- package/dist/commands/bi-sync.js +31 -16
- package/dist/commands/bi-sync.js.map +1 -1
- package/dist/commands/index.js +1 -6
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +17 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/engines/c-mirror/broadcast/terminal-display.d.ts +23 -0
- package/dist/engines/c-mirror/broadcast/terminal-display.d.ts.map +1 -0
- package/dist/engines/c-mirror/broadcast/terminal-display.js +193 -0
- package/dist/engines/c-mirror/broadcast/terminal-display.js.map +1 -0
- package/dist/engines/c-mirror/core/claude-to-faf.d.ts +28 -0
- package/dist/engines/c-mirror/core/claude-to-faf.d.ts.map +1 -0
- package/dist/engines/c-mirror/core/claude-to-faf.js +222 -0
- package/dist/engines/c-mirror/core/claude-to-faf.js.map +1 -0
- package/dist/engines/c-mirror/core/events/event-emitter.d.ts +36 -0
- package/dist/engines/c-mirror/core/events/event-emitter.d.ts.map +1 -0
- package/dist/engines/c-mirror/core/events/event-emitter.js +71 -0
- package/dist/engines/c-mirror/core/events/event-emitter.js.map +1 -0
- package/dist/engines/c-mirror/core/events/mirror-events.d.ts +103 -0
- package/dist/engines/c-mirror/core/events/mirror-events.d.ts.map +1 -0
- package/dist/engines/c-mirror/core/events/mirror-events.js +65 -0
- package/dist/engines/c-mirror/core/events/mirror-events.js.map +1 -0
- package/dist/engines/c-mirror/core/faf-to-claude.d.ts +18 -0
- package/dist/engines/c-mirror/core/faf-to-claude.d.ts.map +1 -0
- package/dist/engines/c-mirror/core/faf-to-claude.js +193 -0
- package/dist/engines/c-mirror/core/faf-to-claude.js.map +1 -0
- package/dist/engines/c-mirror/core/interfaces.d.ts +153 -0
- package/dist/engines/c-mirror/core/interfaces.d.ts.map +1 -0
- package/dist/engines/c-mirror/core/interfaces.js +8 -0
- package/dist/engines/c-mirror/core/interfaces.js.map +1 -0
- package/dist/engines/c-mirror/core/mirror-engine.d.ts +48 -0
- package/dist/engines/c-mirror/core/mirror-engine.d.ts.map +1 -0
- package/dist/engines/c-mirror/core/mirror-engine.js +272 -0
- package/dist/engines/c-mirror/core/mirror-engine.js.map +1 -0
- package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts +31 -0
- package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts.map +1 -0
- package/dist/engines/c-mirror/faf-extensions/faf-mirror.js +101 -0
- package/dist/engines/c-mirror/faf-extensions/faf-mirror.js.map +1 -0
- package/dist/engines/c-mirror/strategies/atomic-write.d.ts +34 -0
- package/dist/engines/c-mirror/strategies/atomic-write.d.ts.map +1 -0
- package/dist/engines/c-mirror/strategies/atomic-write.js +132 -0
- package/dist/engines/c-mirror/strategies/atomic-write.js.map +1 -0
- package/dist/utils/championship-core.d.ts +127 -0
- package/dist/utils/championship-core.d.ts.map +1 -0
- package/dist/utils/championship-core.js +203 -0
- package/dist/utils/championship-core.js.map +1 -0
- package/dist/utils/championship-style.d.ts.map +1 -1
- package/dist/utils/championship-style.js +3 -1
- package/dist/utils/championship-style.js.map +1 -1
- package/dist/utils/color-utils.d.ts.map +1 -1
- package/dist/utils/color-utils.js +29 -11
- package/dist/utils/color-utils.js.map +1 -1
- package/dist/utils/yaml-generator.d.ts.map +1 -1
- package/dist/utils/yaml-generator.js +9 -4
- package/dist/utils/yaml-generator.js.map +1 -1
- package/package.json +18 -3
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🔊 Mirror Events - The Power Chords
|
|
3
|
+
* Lowest-level event system for C-Mirror
|
|
4
|
+
* All mirror operations emit events that broadcast broadly
|
|
5
|
+
*
|
|
6
|
+
* Events flow: Core → Event Emitter → Listeners (Terminal, Slack, Dashboard, etc.)
|
|
7
|
+
*
|
|
8
|
+
* This is the foundation - everything else listens to these power chords
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Event types - All possible mirror events
|
|
12
|
+
*/
|
|
13
|
+
export declare enum MirrorEventType {
|
|
14
|
+
SYNC_START = "mirror:sync:start",
|
|
15
|
+
SYNC_PROGRESS = "mirror:sync:progress",
|
|
16
|
+
SYNC_COMPLETE = "mirror:sync:complete",
|
|
17
|
+
SYNC_ERROR = "mirror:sync:error",
|
|
18
|
+
VALIDATION_START = "mirror:validation:start",
|
|
19
|
+
VALIDATION_PROGRESS = "mirror:validation:progress",
|
|
20
|
+
VALIDATION_COMPLETE = "mirror:validation:complete",
|
|
21
|
+
VALIDATION_ERROR = "mirror:validation:error",
|
|
22
|
+
INTEGRITY_CHECK = "mirror:integrity:check",
|
|
23
|
+
INTEGRITY_PERFECT = "mirror:integrity:perfect",
|
|
24
|
+
INTEGRITY_DEGRADED = "mirror:integrity:degraded",
|
|
25
|
+
INTEGRITY_FAILED = "mirror:integrity:failed",
|
|
26
|
+
SCORE_UPDATE = "mirror:score:update",
|
|
27
|
+
SCORE_MILESTONE = "mirror:score:milestone",
|
|
28
|
+
SCORE_DROP = "mirror:score:drop",
|
|
29
|
+
DNA_LOG = "mirror:dna:log",
|
|
30
|
+
DNA_CHECKPOINT = "mirror:dna:checkpoint",
|
|
31
|
+
DNA_RESTORE = "mirror:dna:restore",
|
|
32
|
+
FILE_READ = "mirror:file:read",
|
|
33
|
+
FILE_WRITE = "mirror:file:write",
|
|
34
|
+
FILE_BACKUP = "mirror:file:backup",
|
|
35
|
+
ERROR = "mirror:error",
|
|
36
|
+
WARNING = "mirror:warning"
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sync direction
|
|
40
|
+
*/
|
|
41
|
+
export type SyncDirection = 'faf-to-claude' | 'claude-to-faf' | 'bidirectional' | 'none';
|
|
42
|
+
/**
|
|
43
|
+
* Integrity status
|
|
44
|
+
*/
|
|
45
|
+
export type IntegrityStatus = 'perfect' | 'degraded' | 'failed';
|
|
46
|
+
/**
|
|
47
|
+
* Score data
|
|
48
|
+
*/
|
|
49
|
+
export interface ScoreData {
|
|
50
|
+
ai: number;
|
|
51
|
+
human: number;
|
|
52
|
+
total: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Event metadata - Always included
|
|
56
|
+
*/
|
|
57
|
+
export interface EventMetadata {
|
|
58
|
+
projectPath: string;
|
|
59
|
+
timestamp: Date;
|
|
60
|
+
score?: ScoreData;
|
|
61
|
+
duration?: number;
|
|
62
|
+
integrity?: IntegrityStatus;
|
|
63
|
+
direction?: SyncDirection;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Mirror Event - The universal event structure
|
|
67
|
+
*/
|
|
68
|
+
export interface MirrorEvent {
|
|
69
|
+
type: MirrorEventType;
|
|
70
|
+
timestamp: Date;
|
|
71
|
+
data: any;
|
|
72
|
+
metadata: EventMetadata;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Sync progress data
|
|
76
|
+
*/
|
|
77
|
+
export interface SyncProgressData {
|
|
78
|
+
step: string;
|
|
79
|
+
progress: number;
|
|
80
|
+
message?: string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validation result data
|
|
84
|
+
*/
|
|
85
|
+
export interface ValidationResultData {
|
|
86
|
+
valid: boolean;
|
|
87
|
+
errors?: string[];
|
|
88
|
+
warnings?: string[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Error data
|
|
92
|
+
*/
|
|
93
|
+
export interface ErrorData {
|
|
94
|
+
message: string;
|
|
95
|
+
code?: string;
|
|
96
|
+
stack?: string;
|
|
97
|
+
recoverable?: boolean;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create a mirror event (helper)
|
|
101
|
+
*/
|
|
102
|
+
export declare function createMirrorEvent(type: MirrorEventType, data: any, metadata?: Partial<EventMetadata>): MirrorEvent;
|
|
103
|
+
//# sourceMappingURL=mirror-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirror-events.d.ts","sourceRoot":"","sources":["../../../../../src/engines/c-mirror/core/events/mirror-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,oBAAY,eAAe;IAEzB,UAAU,sBAAsB;IAChC,aAAa,yBAAyB;IACtC,aAAa,yBAAyB;IACtC,UAAU,sBAAsB;IAGhC,gBAAgB,4BAA4B;IAC5C,mBAAmB,+BAA+B;IAClD,mBAAmB,+BAA+B;IAClD,gBAAgB,4BAA4B;IAG5C,eAAe,2BAA2B;IAC1C,iBAAiB,6BAA6B;IAC9C,kBAAkB,8BAA8B;IAChD,gBAAgB,4BAA4B;IAG5C,YAAY,wBAAwB;IACpC,eAAe,2BAA2B;IAC1C,UAAU,sBAAsB;IAGhC,OAAO,mBAAmB;IAC1B,cAAc,0BAA0B;IACxC,WAAW,uBAAuB;IAGlC,SAAS,qBAAqB;IAC9B,UAAU,sBAAsB;IAChC,WAAW,uBAAuB;IAGlC,KAAK,iBAAiB;IACtB,OAAO,mBAAmB;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,MAAM,CAAC;AAEzF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,GAAG,EACT,QAAQ,GAAE,OAAO,CAAC,aAAa,CAAM,GACpC,WAAW,CAWb"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🔊 Mirror Events - The Power Chords
|
|
4
|
+
* Lowest-level event system for C-Mirror
|
|
5
|
+
* All mirror operations emit events that broadcast broadly
|
|
6
|
+
*
|
|
7
|
+
* Events flow: Core → Event Emitter → Listeners (Terminal, Slack, Dashboard, etc.)
|
|
8
|
+
*
|
|
9
|
+
* This is the foundation - everything else listens to these power chords
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MirrorEventType = void 0;
|
|
13
|
+
exports.createMirrorEvent = createMirrorEvent;
|
|
14
|
+
/**
|
|
15
|
+
* Event types - All possible mirror events
|
|
16
|
+
*/
|
|
17
|
+
var MirrorEventType;
|
|
18
|
+
(function (MirrorEventType) {
|
|
19
|
+
// Sync lifecycle
|
|
20
|
+
MirrorEventType["SYNC_START"] = "mirror:sync:start";
|
|
21
|
+
MirrorEventType["SYNC_PROGRESS"] = "mirror:sync:progress";
|
|
22
|
+
MirrorEventType["SYNC_COMPLETE"] = "mirror:sync:complete";
|
|
23
|
+
MirrorEventType["SYNC_ERROR"] = "mirror:sync:error";
|
|
24
|
+
// Validation lifecycle
|
|
25
|
+
MirrorEventType["VALIDATION_START"] = "mirror:validation:start";
|
|
26
|
+
MirrorEventType["VALIDATION_PROGRESS"] = "mirror:validation:progress";
|
|
27
|
+
MirrorEventType["VALIDATION_COMPLETE"] = "mirror:validation:complete";
|
|
28
|
+
MirrorEventType["VALIDATION_ERROR"] = "mirror:validation:error";
|
|
29
|
+
// Integrity checks
|
|
30
|
+
MirrorEventType["INTEGRITY_CHECK"] = "mirror:integrity:check";
|
|
31
|
+
MirrorEventType["INTEGRITY_PERFECT"] = "mirror:integrity:perfect";
|
|
32
|
+
MirrorEventType["INTEGRITY_DEGRADED"] = "mirror:integrity:degraded";
|
|
33
|
+
MirrorEventType["INTEGRITY_FAILED"] = "mirror:integrity:failed";
|
|
34
|
+
// Score updates
|
|
35
|
+
MirrorEventType["SCORE_UPDATE"] = "mirror:score:update";
|
|
36
|
+
MirrorEventType["SCORE_MILESTONE"] = "mirror:score:milestone";
|
|
37
|
+
MirrorEventType["SCORE_DROP"] = "mirror:score:drop";
|
|
38
|
+
// DNA chain
|
|
39
|
+
MirrorEventType["DNA_LOG"] = "mirror:dna:log";
|
|
40
|
+
MirrorEventType["DNA_CHECKPOINT"] = "mirror:dna:checkpoint";
|
|
41
|
+
MirrorEventType["DNA_RESTORE"] = "mirror:dna:restore";
|
|
42
|
+
// File operations
|
|
43
|
+
MirrorEventType["FILE_READ"] = "mirror:file:read";
|
|
44
|
+
MirrorEventType["FILE_WRITE"] = "mirror:file:write";
|
|
45
|
+
MirrorEventType["FILE_BACKUP"] = "mirror:file:backup";
|
|
46
|
+
// Errors
|
|
47
|
+
MirrorEventType["ERROR"] = "mirror:error";
|
|
48
|
+
MirrorEventType["WARNING"] = "mirror:warning";
|
|
49
|
+
})(MirrorEventType || (exports.MirrorEventType = MirrorEventType = {}));
|
|
50
|
+
/**
|
|
51
|
+
* Create a mirror event (helper)
|
|
52
|
+
*/
|
|
53
|
+
function createMirrorEvent(type, data, metadata = {}) {
|
|
54
|
+
return {
|
|
55
|
+
type,
|
|
56
|
+
timestamp: new Date(),
|
|
57
|
+
data,
|
|
58
|
+
metadata: {
|
|
59
|
+
projectPath: metadata.projectPath || process.cwd(),
|
|
60
|
+
timestamp: new Date(),
|
|
61
|
+
...metadata
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=mirror-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirror-events.js","sourceRoot":"","sources":["../../../../../src/engines/c-mirror/core/events/mirror-events.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAoHH,8CAeC;AAjID;;GAEG;AACH,IAAY,eAqCX;AArCD,WAAY,eAAe;IACzB,iBAAiB;IACjB,mDAAgC,CAAA;IAChC,yDAAsC,CAAA;IACtC,yDAAsC,CAAA;IACtC,mDAAgC,CAAA;IAEhC,uBAAuB;IACvB,+DAA4C,CAAA;IAC5C,qEAAkD,CAAA;IAClD,qEAAkD,CAAA;IAClD,+DAA4C,CAAA;IAE5C,mBAAmB;IACnB,6DAA0C,CAAA;IAC1C,iEAA8C,CAAA;IAC9C,mEAAgD,CAAA;IAChD,+DAA4C,CAAA;IAE5C,gBAAgB;IAChB,uDAAoC,CAAA;IACpC,6DAA0C,CAAA;IAC1C,mDAAgC,CAAA;IAEhC,YAAY;IACZ,6CAA0B,CAAA;IAC1B,2DAAwC,CAAA;IACxC,qDAAkC,CAAA;IAElC,kBAAkB;IAClB,iDAA8B,CAAA;IAC9B,mDAAgC,CAAA;IAChC,qDAAkC,CAAA;IAElC,SAAS;IACT,yCAAsB,CAAA;IACtB,6CAA0B,CAAA;AAC5B,CAAC,EArCW,eAAe,+BAAf,eAAe,QAqC1B;AAuED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,IAAqB,EACrB,IAAS,EACT,WAAmC,EAAE;IAErC,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,IAAI;QACJ,QAAQ,EAAE;YACR,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE;YAClD,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,QAAQ;SACZ;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🔗 FAF to CLAUDE.md Transformation
|
|
3
|
+
* Core conversion: YAML (.faf) → Markdown (CLAUDE.md)
|
|
4
|
+
*
|
|
5
|
+
* This is THE transformation that makes Context-Mirroring work
|
|
6
|
+
* Preserves structure AND readability - zero slippage
|
|
7
|
+
*
|
|
8
|
+
* Emits events at each step for broad broadcasting
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Convert .faf YAML content to CLAUDE.md Markdown format
|
|
12
|
+
*
|
|
13
|
+
* @param fafContent - Raw .faf file content (YAML)
|
|
14
|
+
* @param projectPath - Project root path for event metadata
|
|
15
|
+
* @returns Beautiful CLAUDE.md markdown content
|
|
16
|
+
*/
|
|
17
|
+
export declare function fafToClaudeMd(fafContent: string, projectPath?: string): Promise<string>;
|
|
18
|
+
//# sourceMappingURL=faf-to-claude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faf-to-claude.d.ts","sourceRoot":"","sources":["../../../../src/engines/c-mirror/core/faf-to-claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0K5G"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🔗 FAF to CLAUDE.md Transformation
|
|
4
|
+
* Core conversion: YAML (.faf) → Markdown (CLAUDE.md)
|
|
5
|
+
*
|
|
6
|
+
* This is THE transformation that makes Context-Mirroring work
|
|
7
|
+
* Preserves structure AND readability - zero slippage
|
|
8
|
+
*
|
|
9
|
+
* Emits events at each step for broad broadcasting
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.fafToClaudeMd = fafToClaudeMd;
|
|
46
|
+
const YAML = __importStar(require("yaml"));
|
|
47
|
+
const event_emitter_1 = require("./events/event-emitter");
|
|
48
|
+
const mirror_events_1 = require("./events/mirror-events");
|
|
49
|
+
/**
|
|
50
|
+
* Convert .faf YAML content to CLAUDE.md Markdown format
|
|
51
|
+
*
|
|
52
|
+
* @param fafContent - Raw .faf file content (YAML)
|
|
53
|
+
* @param projectPath - Project root path for event metadata
|
|
54
|
+
* @returns Beautiful CLAUDE.md markdown content
|
|
55
|
+
*/
|
|
56
|
+
async function fafToClaudeMd(fafContent, projectPath = process.cwd()) {
|
|
57
|
+
const startTime = Date.now();
|
|
58
|
+
// EMIT: Starting conversion
|
|
59
|
+
event_emitter_1.mirrorEvents.emitMirrorEvent((0, mirror_events_1.createMirrorEvent)(mirror_events_1.MirrorEventType.SYNC_START, {
|
|
60
|
+
direction: 'faf-to-claude'
|
|
61
|
+
}, { projectPath }));
|
|
62
|
+
try {
|
|
63
|
+
// Step 1: Parse YAML
|
|
64
|
+
event_emitter_1.mirrorEvents.emitMirrorEvent((0, mirror_events_1.createMirrorEvent)(mirror_events_1.MirrorEventType.SYNC_PROGRESS, {
|
|
65
|
+
step: 'parsing-yaml',
|
|
66
|
+
progress: 10,
|
|
67
|
+
message: 'Parsing .faf YAML structure...'
|
|
68
|
+
}, { projectPath }));
|
|
69
|
+
const fafData = YAML.parse(fafContent);
|
|
70
|
+
// Step 2: Extract core data
|
|
71
|
+
event_emitter_1.mirrorEvents.emitMirrorEvent((0, mirror_events_1.createMirrorEvent)(mirror_events_1.MirrorEventType.SYNC_PROGRESS, {
|
|
72
|
+
step: 'extracting-data',
|
|
73
|
+
progress: 30,
|
|
74
|
+
message: 'Extracting project context...'
|
|
75
|
+
}, { projectPath }));
|
|
76
|
+
const projectName = fafData.project?.name || 'Project';
|
|
77
|
+
const projectGoal = fafData.project?.goal;
|
|
78
|
+
const stack = fafData.instant_context?.tech_stack || 'Unknown';
|
|
79
|
+
const mainLanguage = fafData.instant_context?.main_language;
|
|
80
|
+
const frameworks = fafData.instant_context?.frameworks;
|
|
81
|
+
const whatBuilding = fafData.instant_context?.what_building;
|
|
82
|
+
const contextQuality = fafData.context_quality?.overall_assessment || 'Good';
|
|
83
|
+
const fafScore = fafData.faf_score;
|
|
84
|
+
const aiScore = fafData.ai_score;
|
|
85
|
+
const humanScore = fafData.human_score;
|
|
86
|
+
// Step 3: Generate Markdown structure
|
|
87
|
+
event_emitter_1.mirrorEvents.emitMirrorEvent((0, mirror_events_1.createMirrorEvent)(mirror_events_1.MirrorEventType.SYNC_PROGRESS, {
|
|
88
|
+
step: 'generating-markdown',
|
|
89
|
+
progress: 60,
|
|
90
|
+
message: 'Generating human-readable markdown...'
|
|
91
|
+
}, { projectPath }));
|
|
92
|
+
let claudeMd = `# 🏎️ CLAUDE.md - ${projectName} Persistent Context & Intelligence\n\n`;
|
|
93
|
+
// Project State Section
|
|
94
|
+
claudeMd += `## PROJECT STATE: ${contextQuality.toUpperCase()} 🚀\n`;
|
|
95
|
+
if (projectGoal) {
|
|
96
|
+
claudeMd += `**Current Position:** ${projectGoal}\n`;
|
|
97
|
+
}
|
|
98
|
+
claudeMd += `**Tyre Compound:** ULTRASOFT C5 (Maximum Performance)\n\n`;
|
|
99
|
+
claudeMd += `---\n\n`;
|
|
100
|
+
// Core Context Section
|
|
101
|
+
claudeMd += `## 🎨 CORE CONTEXT\n\n`;
|
|
102
|
+
// Project Identity
|
|
103
|
+
claudeMd += `### Project Identity\n`;
|
|
104
|
+
claudeMd += `- **Name:** ${projectName}\n`;
|
|
105
|
+
if (fafData.project?.description) {
|
|
106
|
+
claudeMd += `- **Description:** ${fafData.project.description}\n`;
|
|
107
|
+
}
|
|
108
|
+
claudeMd += `- **Stack:** ${stack}\n`;
|
|
109
|
+
claudeMd += `- **Quality:** F1-INSPIRED (Championship Performance)\n\n`;
|
|
110
|
+
// Technical Architecture
|
|
111
|
+
if (whatBuilding || mainLanguage || frameworks) {
|
|
112
|
+
claudeMd += `### Technical Architecture\n`;
|
|
113
|
+
if (whatBuilding) {
|
|
114
|
+
claudeMd += `- **What Building:** ${whatBuilding}\n`;
|
|
115
|
+
}
|
|
116
|
+
if (mainLanguage) {
|
|
117
|
+
claudeMd += `- **Main Language:** ${mainLanguage}\n`;
|
|
118
|
+
}
|
|
119
|
+
if (frameworks) {
|
|
120
|
+
claudeMd += `- **Frameworks:** ${frameworks}\n`;
|
|
121
|
+
}
|
|
122
|
+
claudeMd += `\n`;
|
|
123
|
+
}
|
|
124
|
+
// Key Files (if present)
|
|
125
|
+
if (fafData.key_files && Array.isArray(fafData.key_files) && fafData.key_files.length > 0) {
|
|
126
|
+
claudeMd += `### 🔧 Key Files\n`;
|
|
127
|
+
fafData.key_files.forEach((file, index) => {
|
|
128
|
+
claudeMd += `${index + 1}. **${file.path}** - ${file.purpose || 'Core file'}\n`;
|
|
129
|
+
});
|
|
130
|
+
claudeMd += `\n`;
|
|
131
|
+
}
|
|
132
|
+
// AI Instructions (if present)
|
|
133
|
+
if (fafData.ai?.instructions || fafData.ai?.priority_order) {
|
|
134
|
+
claudeMd += `### 🤖 AI Instructions\n`;
|
|
135
|
+
if (fafData.ai.instructions) {
|
|
136
|
+
claudeMd += `${fafData.ai.instructions}\n\n`;
|
|
137
|
+
}
|
|
138
|
+
if (fafData.ai.priority_order && Array.isArray(fafData.ai.priority_order)) {
|
|
139
|
+
claudeMd += `**Priority Order:**\n`;
|
|
140
|
+
fafData.ai.priority_order.forEach((item) => {
|
|
141
|
+
claudeMd += `- ${item}\n`;
|
|
142
|
+
});
|
|
143
|
+
claudeMd += `\n`;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Context Quality Status
|
|
147
|
+
claudeMd += `### 📊 Context Quality Status\n`;
|
|
148
|
+
claudeMd += `- **Overall Assessment:** ${contextQuality}\n`;
|
|
149
|
+
if (fafScore) {
|
|
150
|
+
claudeMd += `- **FAF Score:** ${fafScore}\n`;
|
|
151
|
+
}
|
|
152
|
+
if (aiScore !== undefined && humanScore !== undefined) {
|
|
153
|
+
claudeMd += `- **AI|HUMAN Balance:** AI:${aiScore} | HUMAN:${humanScore}\n`;
|
|
154
|
+
}
|
|
155
|
+
claudeMd += `- **Last Updated:** ${new Date().toISOString().split('T')[0]}\n\n`;
|
|
156
|
+
// Step 4: Add Championship Footer
|
|
157
|
+
event_emitter_1.mirrorEvents.emitMirrorEvent((0, mirror_events_1.createMirrorEvent)(mirror_events_1.MirrorEventType.SYNC_PROGRESS, {
|
|
158
|
+
step: 'adding-footer',
|
|
159
|
+
progress: 90,
|
|
160
|
+
message: 'Adding championship footer...'
|
|
161
|
+
}, { projectPath }));
|
|
162
|
+
claudeMd += `---\n\n`;
|
|
163
|
+
claudeMd += `**STATUS: BI-SYNC ACTIVE 🔗 - Synchronized with .faf context!**\n\n`;
|
|
164
|
+
claudeMd += `*Last Sync: ${new Date().toISOString()}*\n`;
|
|
165
|
+
claudeMd += `*Sync Engine: F1-Inspired Software Engineering*\n`;
|
|
166
|
+
claudeMd += `*🏎️⚡️_championship_sync*\n`;
|
|
167
|
+
// Step 5: Complete
|
|
168
|
+
const duration = Date.now() - startTime;
|
|
169
|
+
event_emitter_1.mirrorEvents.emitMirrorEvent((0, mirror_events_1.createMirrorEvent)(mirror_events_1.MirrorEventType.SYNC_COMPLETE, {
|
|
170
|
+
direction: 'faf-to-claude',
|
|
171
|
+
success: true,
|
|
172
|
+
filesChanged: ['CLAUDE.md']
|
|
173
|
+
}, {
|
|
174
|
+
projectPath,
|
|
175
|
+
duration,
|
|
176
|
+
score: aiScore !== undefined && humanScore !== undefined ? {
|
|
177
|
+
ai: aiScore,
|
|
178
|
+
human: humanScore,
|
|
179
|
+
total: fafScore ? parseInt(fafScore) : aiScore + humanScore
|
|
180
|
+
} : undefined
|
|
181
|
+
}));
|
|
182
|
+
return claudeMd;
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
// EMIT: Error
|
|
186
|
+
event_emitter_1.mirrorEvents.emitMirrorEvent((0, mirror_events_1.createMirrorEvent)(mirror_events_1.MirrorEventType.SYNC_ERROR, {
|
|
187
|
+
direction: 'faf-to-claude',
|
|
188
|
+
error: error instanceof Error ? error.message : String(error)
|
|
189
|
+
}, { projectPath }));
|
|
190
|
+
throw error;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=faf-to-claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faf-to-claude.js","sourceRoot":"","sources":["../../../../src/engines/c-mirror/core/faf-to-claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🏗️ C-Mirror Core Interfaces
|
|
3
|
+
* TypeScript strict mode - All interfaces for the mirror system
|
|
4
|
+
* Extraction-ready: Generic, reusable, well-defined
|
|
5
|
+
*/
|
|
6
|
+
import { SyncDirection, IntegrityStatus, ScoreData } from './events/mirror-events';
|
|
7
|
+
/**
|
|
8
|
+
* Mirror Configuration
|
|
9
|
+
*/
|
|
10
|
+
export interface IMirrorConfig {
|
|
11
|
+
structuredFile: string;
|
|
12
|
+
readableFile: string;
|
|
13
|
+
projectPath?: string;
|
|
14
|
+
schema?: IYAMLSchema;
|
|
15
|
+
validators?: IValidator[];
|
|
16
|
+
dnaChain?: IDNAChainConfig;
|
|
17
|
+
conflictStrategy?: ConflictStrategy;
|
|
18
|
+
atomicWrites?: boolean;
|
|
19
|
+
selfHealing?: boolean;
|
|
20
|
+
silent?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Mirror Result
|
|
24
|
+
*/
|
|
25
|
+
export interface IMirrorResult {
|
|
26
|
+
success: boolean;
|
|
27
|
+
direction: SyncDirection;
|
|
28
|
+
filesChanged: string[];
|
|
29
|
+
conflicts: string[];
|
|
30
|
+
duration: number;
|
|
31
|
+
integrity: IntegrityStatus;
|
|
32
|
+
score?: ScoreData;
|
|
33
|
+
error?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* YAML Schema Interface
|
|
37
|
+
*/
|
|
38
|
+
export interface IYAMLSchema {
|
|
39
|
+
requiredFields: string[];
|
|
40
|
+
optionalFields: string[];
|
|
41
|
+
validate(data: any): SchemaValidationResult;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Schema Validation Result
|
|
45
|
+
*/
|
|
46
|
+
export interface SchemaValidationResult {
|
|
47
|
+
valid: boolean;
|
|
48
|
+
errors: string[];
|
|
49
|
+
warnings: string[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Validator Interface
|
|
53
|
+
*/
|
|
54
|
+
export interface IValidator {
|
|
55
|
+
name: string;
|
|
56
|
+
description?: string;
|
|
57
|
+
validate(data: any): ValidationResult;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Validation Result
|
|
61
|
+
*/
|
|
62
|
+
export interface ValidationResult {
|
|
63
|
+
valid: boolean;
|
|
64
|
+
errors?: string[];
|
|
65
|
+
warnings?: string[];
|
|
66
|
+
metadata?: Record<string, any>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* DNA Chain Configuration
|
|
70
|
+
*/
|
|
71
|
+
export interface IDNAChainConfig {
|
|
72
|
+
enabled: boolean;
|
|
73
|
+
path?: string;
|
|
74
|
+
logLevel?: 'minimal' | 'standard' | 'verbose';
|
|
75
|
+
maxEntries?: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* DNA Chain Entry
|
|
79
|
+
*/
|
|
80
|
+
export interface IDNAChainEntry {
|
|
81
|
+
timestamp: Date;
|
|
82
|
+
event: string;
|
|
83
|
+
score?: ScoreData;
|
|
84
|
+
integrity: IntegrityStatus;
|
|
85
|
+
filesChanged: string[];
|
|
86
|
+
duration: number;
|
|
87
|
+
metadata?: Record<string, any>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Conflict Resolution Strategy
|
|
91
|
+
*/
|
|
92
|
+
export type ConflictStrategy = 'faf-wins' | 'claude-wins' | 'merge' | 'prompt' | 'abort';
|
|
93
|
+
/**
|
|
94
|
+
* File State (for conflict detection)
|
|
95
|
+
*/
|
|
96
|
+
export interface FileState {
|
|
97
|
+
path: string;
|
|
98
|
+
exists: boolean;
|
|
99
|
+
modified?: Date;
|
|
100
|
+
size?: number;
|
|
101
|
+
hash?: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Conflict
|
|
105
|
+
*/
|
|
106
|
+
export interface Conflict {
|
|
107
|
+
type: 'both-modified' | 'missing-file' | 'schema-mismatch' | 'validation-failed';
|
|
108
|
+
file1: FileState;
|
|
109
|
+
file2: FileState;
|
|
110
|
+
message: string;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Merge Result
|
|
114
|
+
*/
|
|
115
|
+
export interface MergeResult {
|
|
116
|
+
success: boolean;
|
|
117
|
+
merged: any;
|
|
118
|
+
conflicts: string[];
|
|
119
|
+
warnings: string[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Integrity Status
|
|
123
|
+
*/
|
|
124
|
+
export interface IntegrityCheckResult {
|
|
125
|
+
status: IntegrityStatus;
|
|
126
|
+
checks: {
|
|
127
|
+
yamlValid: boolean;
|
|
128
|
+
markdownValid: boolean;
|
|
129
|
+
roundTripValid: boolean;
|
|
130
|
+
scoreAccurate: boolean;
|
|
131
|
+
};
|
|
132
|
+
errors: string[];
|
|
133
|
+
warnings: string[];
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Restore Options
|
|
137
|
+
*/
|
|
138
|
+
export interface RestoreOptions {
|
|
139
|
+
fromDNA?: boolean;
|
|
140
|
+
timestamp?: Date;
|
|
141
|
+
entryIndex?: number;
|
|
142
|
+
dryRun?: boolean;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Restore Result
|
|
146
|
+
*/
|
|
147
|
+
export interface RestoreResult {
|
|
148
|
+
success: boolean;
|
|
149
|
+
filesRestored: string[];
|
|
150
|
+
scoreRestored?: ScoreData;
|
|
151
|
+
error?: string;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/engines/c-mirror/core/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🏗️ C-Mirror Core Interfaces
|
|
4
|
+
* TypeScript strict mode - All interfaces for the mirror system
|
|
5
|
+
* Extraction-ready: Generic, reusable, well-defined
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
//# sourceMappingURL=interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/engines/c-mirror/core/interfaces.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🔗 Mirror Engine - The Orchestrator
|
|
3
|
+
* Coordinates all C-Mirror operations
|
|
4
|
+
*
|
|
5
|
+
* This is the main engine that:
|
|
6
|
+
* - Detects which files need syncing
|
|
7
|
+
* - Calls the transformation functions
|
|
8
|
+
* - Uses atomic writes for safety
|
|
9
|
+
* - Emits events for broadcasting
|
|
10
|
+
* - Ensures zero slippage
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* const engine = new MirrorEngine(config);
|
|
14
|
+
* const result = await engine.sync();
|
|
15
|
+
*/
|
|
16
|
+
import { IMirrorConfig, IMirrorResult } from './interfaces';
|
|
17
|
+
export declare class MirrorEngine {
|
|
18
|
+
private config;
|
|
19
|
+
private projectPath;
|
|
20
|
+
constructor(config: IMirrorConfig);
|
|
21
|
+
/**
|
|
22
|
+
* Main sync operation
|
|
23
|
+
* Intelligently syncs .faf ↔ CLAUDE.md
|
|
24
|
+
*/
|
|
25
|
+
sync(): Promise<IMirrorResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Analyze file states to determine what needs syncing
|
|
28
|
+
*/
|
|
29
|
+
private analyzeFiles;
|
|
30
|
+
/**
|
|
31
|
+
* Determine sync strategy based on file states
|
|
32
|
+
*/
|
|
33
|
+
private determineSyncStrategy;
|
|
34
|
+
/**
|
|
35
|
+
* Sync .faf → CLAUDE.md
|
|
36
|
+
*/
|
|
37
|
+
private syncFafToClaude;
|
|
38
|
+
/**
|
|
39
|
+
* Sync CLAUDE.md → .faf
|
|
40
|
+
*/
|
|
41
|
+
private syncClaudeToFaf;
|
|
42
|
+
/**
|
|
43
|
+
* Verify integrity after sync
|
|
44
|
+
* Ensures mirror is perfect
|
|
45
|
+
*/
|
|
46
|
+
private verifyIntegrity;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=mirror-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirror-engine.d.ts","sourceRoot":"","sources":["../../../../src/engines/c-mirror/core/mirror-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAa,MAAM,cAAc,CAAC;AAOvE,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,aAAa;IASjC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;IA2EpC;;OAEG;YACW,YAAY;IA4B1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4C7B;;OAEG;YACW,eAAe;IAgB7B;;OAEG;YACW,eAAe;IAwB7B;;;OAGG;YACW,eAAe;CAiD9B"}
|