fivocell 6.3.0 → 7.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.
- package/README.md +311 -197
- package/dist/__tests__/cli-regression.test.js +1 -1
- package/dist/__tests__/cli-regression.test.js.map +1 -1
- package/dist/__tests__/teach-context.test.d.ts +2 -0
- package/dist/__tests__/teach-context.test.d.ts.map +1 -0
- package/dist/__tests__/teach-context.test.js +44 -0
- package/dist/__tests__/teach-context.test.js.map +1 -0
- package/dist/__tests__/teach-parser.test.d.ts +2 -0
- package/dist/__tests__/teach-parser.test.d.ts.map +1 -0
- package/dist/__tests__/teach-parser.test.js +56 -0
- package/dist/__tests__/teach-parser.test.js.map +1 -0
- package/dist/__tests__/teach-store.test.d.ts +2 -0
- package/dist/__tests__/teach-store.test.d.ts.map +1 -0
- package/dist/__tests__/teach-store.test.js +68 -0
- package/dist/__tests__/teach-store.test.js.map +1 -0
- package/dist/__tests__/vibe-engine.test.d.ts +2 -0
- package/dist/__tests__/vibe-engine.test.d.ts.map +1 -0
- package/dist/__tests__/vibe-engine.test.js +132 -0
- package/dist/__tests__/vibe-engine.test.js.map +1 -0
- package/dist/walls/01-context/context/prompt-builder.d.ts +1 -0
- package/dist/walls/01-context/context/prompt-builder.d.ts.map +1 -1
- package/dist/walls/01-context/context/prompt-builder.js +15 -1
- package/dist/walls/01-context/context/prompt-builder.js.map +1 -1
- package/dist/walls/06-memory/archive/blob-vault.d.ts.map +1 -1
- package/dist/walls/06-memory/archive/blob-vault.js +8 -9
- package/dist/walls/06-memory/archive/blob-vault.js.map +1 -1
- package/dist/walls/06-memory/archive/memory-archive.d.ts.map +1 -1
- package/dist/walls/06-memory/archive/memory-archive.js +32 -22
- package/dist/walls/06-memory/archive/memory-archive.js.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider.d.ts +19 -0
- package/dist/walls/06-memory/privacy/key-provider.d.ts.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider.js +52 -0
- package/dist/walls/06-memory/privacy/key-provider.js.map +1 -1
- package/dist/walls/06-memory/retrieval/context-pipeline.d.ts.map +1 -1
- package/dist/walls/06-memory/retrieval/context-pipeline.js +9 -0
- package/dist/walls/06-memory/retrieval/context-pipeline.js.map +1 -1
- package/dist/walls/06-memory/stores/sync-engine.d.ts.map +1 -1
- package/dist/walls/06-memory/stores/sync-engine.js +56 -49
- package/dist/walls/06-memory/stores/sync-engine.js.map +1 -1
- package/dist/walls/06-memory/teach/teach-context.d.ts +8 -0
- package/dist/walls/06-memory/teach/teach-context.d.ts.map +1 -0
- package/dist/walls/06-memory/teach/teach-context.js +25 -0
- package/dist/walls/06-memory/teach/teach-context.js.map +1 -0
- package/dist/walls/06-memory/teach/teach-parser.d.ts +6 -0
- package/dist/walls/06-memory/teach/teach-parser.d.ts.map +1 -0
- package/dist/walls/06-memory/teach/teach-parser.js +42 -0
- package/dist/walls/06-memory/teach/teach-parser.js.map +1 -0
- package/dist/walls/06-memory/teach/teach-sections.d.ts +10 -0
- package/dist/walls/06-memory/teach/teach-sections.d.ts.map +1 -0
- package/dist/walls/06-memory/teach/teach-sections.js +67 -0
- package/dist/walls/06-memory/teach/teach-sections.js.map +1 -0
- package/dist/walls/06-memory/teach/teach-store.d.ts +25 -0
- package/dist/walls/06-memory/teach/teach-store.d.ts.map +1 -0
- package/dist/walls/06-memory/teach/teach-store.js +95 -0
- package/dist/walls/06-memory/teach/teach-store.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-cli.d.ts +2 -0
- package/dist/walls/06-memory/vibe/vibe-cli.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-cli.js +217 -0
- package/dist/walls/06-memory/vibe/vibe-cli.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-confidence.d.ts +24 -0
- package/dist/walls/06-memory/vibe/vibe-confidence.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-confidence.js +91 -0
- package/dist/walls/06-memory/vibe/vibe-confidence.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-context.d.ts +8 -0
- package/dist/walls/06-memory/vibe/vibe-context.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-context.js +88 -0
- package/dist/walls/06-memory/vibe/vibe-context.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-engine.d.ts +38 -0
- package/dist/walls/06-memory/vibe/vibe-engine.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-engine.js +587 -0
- package/dist/walls/06-memory/vibe/vibe-engine.js.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-signals.d.ts +24 -0
- package/dist/walls/06-memory/vibe/vibe-signals.d.ts.map +1 -0
- package/dist/walls/06-memory/vibe/vibe-signals.js +138 -0
- package/dist/walls/06-memory/vibe/vibe-signals.js.map +1 -0
- package/dist/walls/07-runtime/cli/cli.js +17 -0
- package/dist/walls/07-runtime/cli/cli.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/branch.js +6 -6
- package/dist/walls/07-runtime/cli/commands/branch.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/help.d.ts.map +1 -1
- package/dist/walls/07-runtime/cli/commands/help.js +14 -14
- package/dist/walls/07-runtime/cli/commands/help.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/memory.js +5 -5
- package/dist/walls/07-runtime/cli/commands/memory.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/scan.d.ts.map +1 -1
- package/dist/walls/07-runtime/cli/commands/scan.js +39 -20
- package/dist/walls/07-runtime/cli/commands/scan.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/session.d.ts.map +1 -1
- package/dist/walls/07-runtime/cli/commands/session.js +2 -1
- package/dist/walls/07-runtime/cli/commands/session.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/setup.js +2 -2
- package/dist/walls/07-runtime/cli/commands/setup.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/status.js +7 -7
- package/dist/walls/07-runtime/cli/commands/status.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/sync.js +1 -1
- package/dist/walls/07-runtime/cli/commands/sync.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/teach.d.ts +3 -0
- package/dist/walls/07-runtime/cli/commands/teach.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/teach.js +203 -0
- package/dist/walls/07-runtime/cli/commands/teach.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/session.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/routes/session.js +4 -3
- package/dist/walls/07-runtime/daemon/routes/session.js.map +1 -1
- package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/server.js +3 -0
- package/dist/walls/07-runtime/daemon/server.js.map +1 -1
- package/package.json +1 -1
- package/scripts/deep-audit.js +103 -0
|
@@ -0,0 +1,587 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// vibe-engine.ts — Core Vibe Learning Engine
|
|
3
|
+
// Analyzes sessions, detects signals, generates natural language rules,
|
|
4
|
+
// writes to .cell/vibe/ folder
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.analyzeSession = analyzeSession;
|
|
40
|
+
exports.buildVibeSummary = buildVibeSummary;
|
|
41
|
+
exports.getVibeData = getVibeData;
|
|
42
|
+
exports.getVibeSummary = getVibeSummary;
|
|
43
|
+
exports.getVibeMarkdown = getVibeMarkdown;
|
|
44
|
+
exports.resetVibe = resetVibe;
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const database_1 = require("../database/database");
|
|
48
|
+
const vibe_signals_1 = require("./vibe-signals");
|
|
49
|
+
const vibe_confidence_1 = require("./vibe-confidence");
|
|
50
|
+
// ─── Path Helpers ────────────────────────────────────────────────
|
|
51
|
+
function getVibeDir(projectDir) {
|
|
52
|
+
return path.join(projectDir, '.cell', 'vibe');
|
|
53
|
+
}
|
|
54
|
+
function ensureVibeDir(projectDir) {
|
|
55
|
+
const dir = getVibeDir(projectDir);
|
|
56
|
+
if (!fs.existsSync(dir))
|
|
57
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
58
|
+
return dir;
|
|
59
|
+
}
|
|
60
|
+
// ─── Signal Detection from Sessions ──────────────────────────────
|
|
61
|
+
function analyzeSession(project, projectDir, totalSessions) {
|
|
62
|
+
const existing = loadSignals(projectDir);
|
|
63
|
+
const db = (0, database_1.getDb)();
|
|
64
|
+
// Phase 1: Read session data
|
|
65
|
+
const sessions = db.prepare('SELECT id, tool_name, files_touched, key_decisions, start_time FROM sessions WHERE project = ? ORDER BY id DESC LIMIT 20').all(project);
|
|
66
|
+
// Phase 2: Read memory events
|
|
67
|
+
const events = db.prepare('SELECT type, topic, summary, details_json, importance FROM memory_events WHERE project = ? ORDER BY id DESC LIMIT 500').all(project);
|
|
68
|
+
// Phase 3: Read decisions
|
|
69
|
+
const decisions = db.prepare('SELECT decision, approach, worked FROM decision_log WHERE project = ? ORDER BY id DESC LIMIT 100').all(project);
|
|
70
|
+
// Phase 4: Read teach profile for explicit preferences
|
|
71
|
+
let teachData = {};
|
|
72
|
+
try {
|
|
73
|
+
const teach = db.prepare("SELECT section, raw_text FROM developer_profile ORDER BY updated_at DESC").all();
|
|
74
|
+
teach.forEach((t) => { teachData[t.section] = t.raw_text; });
|
|
75
|
+
}
|
|
76
|
+
catch { /* teach may not be populated */ }
|
|
77
|
+
// Phase 5: Read style profile
|
|
78
|
+
let styleData = {};
|
|
79
|
+
try {
|
|
80
|
+
const style = db.prepare('SELECT pattern_key, pattern_value FROM style_profiles ORDER BY detection_count DESC').all();
|
|
81
|
+
style.forEach((s) => { styleData[s.pattern_key] = s.pattern_value; });
|
|
82
|
+
}
|
|
83
|
+
catch { /* style may not be populated */ }
|
|
84
|
+
// Phase 6: Detect signals from all data
|
|
85
|
+
const signals = detectAllSignals(existing, sessions, events, decisions, teachData, styleData, totalSessions);
|
|
86
|
+
// Phase 7: Generate natural language rules
|
|
87
|
+
const rules = generateVibeRules(signals);
|
|
88
|
+
// Phase 8: Write to disk
|
|
89
|
+
const vibeData = {
|
|
90
|
+
sessionsAnalyzed: totalSessions,
|
|
91
|
+
lastUpdated: new Date().toISOString(),
|
|
92
|
+
signals,
|
|
93
|
+
rules,
|
|
94
|
+
};
|
|
95
|
+
writeSignalsJson(projectDir, vibeData);
|
|
96
|
+
writeVibeMarkdown(projectDir, vibeData);
|
|
97
|
+
writeVibeSummary(projectDir, vibeData);
|
|
98
|
+
return vibeData;
|
|
99
|
+
}
|
|
100
|
+
// ─── Signal Detection ────────────────────────────────────────────
|
|
101
|
+
function detectAllSignals(existingSignals, sessions, events, decisions, teachData, styleData, totalSessions) {
|
|
102
|
+
const signalMap = new Map();
|
|
103
|
+
existingSignals.forEach(s => signalMap.set(s.id, s));
|
|
104
|
+
const now = new Date().toISOString();
|
|
105
|
+
const allText = [
|
|
106
|
+
...sessions.map((s) => (s.files_touched || '') + (s.key_decisions || '')),
|
|
107
|
+
...events.map((e) => (e.summary || '') + (e.topic || '') + (e.details_json || '')),
|
|
108
|
+
...decisions.map((d) => (d.decision || '') + (d.approach || '')),
|
|
109
|
+
...Object.values(teachData),
|
|
110
|
+
...Object.values(styleData),
|
|
111
|
+
].join(' ').toLowerCase();
|
|
112
|
+
for (const sig of vibe_signals_1.VIBE_SIGNALS) {
|
|
113
|
+
let detected = false;
|
|
114
|
+
// Check based on signal type
|
|
115
|
+
switch (sig.id) {
|
|
116
|
+
// ── Communication ──
|
|
117
|
+
case 'language_hindi':
|
|
118
|
+
detected = /[अ-ह]|hinglish|hindi|kar\b|de\b|bata\b|hai\b/.test(allText);
|
|
119
|
+
break;
|
|
120
|
+
case 'language_english':
|
|
121
|
+
detected = !/[अ-ह]/.test(allText) && allText.length > 500;
|
|
122
|
+
break;
|
|
123
|
+
case 'structure_bullets':
|
|
124
|
+
detected = (allText.match(/^[-•*]\s|\d+[.)]\s/gm) || []).length > sessions.length * 2;
|
|
125
|
+
break;
|
|
126
|
+
case 'structure_paragraphs':
|
|
127
|
+
detected = allText.length / Math.max(sessions.length, 1) > 500;
|
|
128
|
+
break;
|
|
129
|
+
case 'tone_direct':
|
|
130
|
+
detected = /\b(kar|de|bata|fix|add|remove|create|delete|ship|launch)\b/.test(allText);
|
|
131
|
+
break;
|
|
132
|
+
case 'tone_formal':
|
|
133
|
+
detected = (allText.match(/\b(please|could you|would you|may i|kindly)\b/g) || []).length > 5;
|
|
134
|
+
break;
|
|
135
|
+
case 'verbosity_low':
|
|
136
|
+
detected = allText.length / Math.max(sessions.length, 1) < 300;
|
|
137
|
+
break;
|
|
138
|
+
case 'verbosity_high':
|
|
139
|
+
detected = allText.length / Math.max(sessions.length, 1) > 1500;
|
|
140
|
+
break;
|
|
141
|
+
// ── Code Philosophy ──
|
|
142
|
+
case 'changes_minimal':
|
|
143
|
+
detected = /minimal|small change|patch|fix only|don't refactor|no rewrite/.test(allText);
|
|
144
|
+
break;
|
|
145
|
+
case 'changes_thorough':
|
|
146
|
+
detected = /rewrite|refactor entirely|full change|restructure/.test(allText);
|
|
147
|
+
break;
|
|
148
|
+
case 'abstraction_low':
|
|
149
|
+
detected = /keep flat|no abstraction|simple code|don't abstract|no util/.test(allText);
|
|
150
|
+
break;
|
|
151
|
+
case 'abstraction_high':
|
|
152
|
+
detected = /base class|abstract|interface|generic|util|helper/.test(allText);
|
|
153
|
+
break;
|
|
154
|
+
case 'testing_after':
|
|
155
|
+
detected = /code first|test later|write tests? after/.test(allText);
|
|
156
|
+
break;
|
|
157
|
+
case 'testing_first':
|
|
158
|
+
detected = /tdd|test first|write test|test-driven/.test(allText);
|
|
159
|
+
break;
|
|
160
|
+
case 'typescript_strict':
|
|
161
|
+
detected = /strict.*true|no any|explicit type|type safety/.test(allText);
|
|
162
|
+
break;
|
|
163
|
+
case 'typescript_loose':
|
|
164
|
+
detected = /any type|as cast|ts-ignore|skip check/.test(allText);
|
|
165
|
+
break;
|
|
166
|
+
case 'functional_style':
|
|
167
|
+
detected = /map|filter|reduce|immutable|pure function|const|arrow/.test(allText);
|
|
168
|
+
break;
|
|
169
|
+
case 'oop_style':
|
|
170
|
+
detected = /class |extends|implements|private|public|protected/.test(allText);
|
|
171
|
+
break;
|
|
172
|
+
// ── Workflow ──
|
|
173
|
+
case 'audit_first':
|
|
174
|
+
detected = /audit|analyze|scan|review|understand first|check first/.test(allText);
|
|
175
|
+
break;
|
|
176
|
+
case 'code_first':
|
|
177
|
+
detected = /just build|start coding|implement now|bana de|seedha code/.test(allText);
|
|
178
|
+
break;
|
|
179
|
+
case 'plan_phased':
|
|
180
|
+
detected = /phase|step by step|roadmap|plan first|milestone|iteration/.test(allText);
|
|
181
|
+
break;
|
|
182
|
+
case 'plan_single_shot':
|
|
183
|
+
detected = /everything at once|all together|ek sath|pura ek bar/.test(allText);
|
|
184
|
+
break;
|
|
185
|
+
case 'task_list_mode':
|
|
186
|
+
detected = /list banao|list bana|sab khatam|get them all done|task list|checklist/.test(allText);
|
|
187
|
+
break;
|
|
188
|
+
case 'focus_mode':
|
|
189
|
+
detected = /sirf ye|just that one|ek hi kaam|single focus|only this/.test(allText);
|
|
190
|
+
break;
|
|
191
|
+
case 'overnight_mode':
|
|
192
|
+
detected = /raat bhar|subah tak|overnight|subah report|crack on|going to bed|sleep/.test(allText);
|
|
193
|
+
break;
|
|
194
|
+
case 'ship_fast':
|
|
195
|
+
detected = /good enough|launch kar|ship it|mvp|80%|working hai|release now/.test(allText);
|
|
196
|
+
break;
|
|
197
|
+
// ── Decisions ──
|
|
198
|
+
case 'roi_first':
|
|
199
|
+
detected = /revenue|paisa|monetize|customer pays|profit|business value|making money/.test(allText);
|
|
200
|
+
break;
|
|
201
|
+
case 'ux_first':
|
|
202
|
+
detected = /user experience|ux|design|flow|usability|user friendly|ui/.test(allText);
|
|
203
|
+
break;
|
|
204
|
+
case 'tech_first':
|
|
205
|
+
detected = /architecture|performance|scale|clean code|best practice|properly/.test(allText);
|
|
206
|
+
break;
|
|
207
|
+
case 'speed_over_quality':
|
|
208
|
+
detected = /deadline|urgent|asap|quick fix|fast|time pressure/.test(allText);
|
|
209
|
+
break;
|
|
210
|
+
case 'quality_over_speed':
|
|
211
|
+
detected = /properly|production ready|thoroughly|well tested|solid|resilient/.test(allText);
|
|
212
|
+
break;
|
|
213
|
+
case 'stick_to_known':
|
|
214
|
+
detected = /same setup|known stack|familiar|tried and tested|proven/.test(allText);
|
|
215
|
+
break;
|
|
216
|
+
case 'explore_new':
|
|
217
|
+
detected = /new framework|try new|experiment|latest|bleeding edge|cutting edge/.test(allText);
|
|
218
|
+
break;
|
|
219
|
+
// ── AI Interaction ──
|
|
220
|
+
case 'trust_high':
|
|
221
|
+
detected = /accepted|good output|works perfectly|no changes needed/.test(allText);
|
|
222
|
+
break;
|
|
223
|
+
case 'trust_low':
|
|
224
|
+
detected = /verify|test karo|check|make sure|confirm|validate|double check/.test(allText);
|
|
225
|
+
break;
|
|
226
|
+
case 'iterative_prompter':
|
|
227
|
+
detected = /edit|refine|modify|improve|tweak|update the|change that|redo/.test(allText);
|
|
228
|
+
break;
|
|
229
|
+
case 'one_shot_user':
|
|
230
|
+
detected = sessions.length > 0 && allText.length / sessions.length < 200;
|
|
231
|
+
break;
|
|
232
|
+
case 'verify_always':
|
|
233
|
+
detected = (allText.match(/\b(verify|test karo|check|make sure|confirm|validate)\b/g) || []).length > 5;
|
|
234
|
+
break;
|
|
235
|
+
case 'edit_accepted_code':
|
|
236
|
+
detected = /modify output|tweak|adjust the code|change .* implementation/.test(allText);
|
|
237
|
+
break;
|
|
238
|
+
case 'model_switcher':
|
|
239
|
+
detected = /claude|gpt|gemini|sonar|copilot|codex|windsurf|cursor/.test(allText);
|
|
240
|
+
break;
|
|
241
|
+
// ── Project Behavior ──
|
|
242
|
+
case 'exploration_bias': {
|
|
243
|
+
try {
|
|
244
|
+
const db2 = (0, database_1.getDb)();
|
|
245
|
+
const projectCount = db2.prepare('SELECT COUNT(*) as c FROM projects').get()?.c || 1;
|
|
246
|
+
const completedCount = events.filter((e) => e.type === 'verification' && /complete|done|finished|launched/.test(e.summary || '')).length;
|
|
247
|
+
detected = projectCount > completedCount * 2;
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
detected = false;
|
|
251
|
+
}
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
case 'completion_focused': {
|
|
255
|
+
try {
|
|
256
|
+
const db2 = (0, database_1.getDb)();
|
|
257
|
+
const pCount = db2.prepare('SELECT COUNT(*) as c FROM projects').get()?.c || 1;
|
|
258
|
+
const doneCount = events.filter((e) => e.type === 'verification' && /complete|done|finished|launched/.test(e.summary || '')).length;
|
|
259
|
+
detected = doneCount > 0 && pCount <= doneCount + 2;
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
detected = false;
|
|
263
|
+
}
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
case 'scope_creep':
|
|
267
|
+
detected = /also add|and also|while we're at|might as well|ek aur|1 more thing/.test(allText);
|
|
268
|
+
break;
|
|
269
|
+
case 'scope_disciplined':
|
|
270
|
+
detected = /sticking to|on task|focused|only this|nothing else|bas itna/.test(allText);
|
|
271
|
+
break;
|
|
272
|
+
case 'solo_developer':
|
|
273
|
+
detected = sessions.length > 0 && allText.length > 0 && !/team|pair|collaborate|review my pr/.test(allText);
|
|
274
|
+
break;
|
|
275
|
+
case 'team_player':
|
|
276
|
+
detected = /team|pair programming|collaborate|review|standup|sprint|pr review/.test(allText);
|
|
277
|
+
break;
|
|
278
|
+
// ── Git & Output ──
|
|
279
|
+
case 'commit_small':
|
|
280
|
+
detected = /small commit|atomic|single change|one thing|single file/.test(allText);
|
|
281
|
+
break;
|
|
282
|
+
case 'commit_large':
|
|
283
|
+
detected = /big commit|squash|merge everything|all changes/.test(allText);
|
|
284
|
+
break;
|
|
285
|
+
case 'docs_writer':
|
|
286
|
+
detected = /readme|documentation|docs|comment|wiki|guide|explanation/.test(allText);
|
|
287
|
+
break;
|
|
288
|
+
case 'docs_skipper':
|
|
289
|
+
detected = !/readme|documentation|docs|comment|wiki/.test(allText) && allText.length > 1000;
|
|
290
|
+
break;
|
|
291
|
+
default:
|
|
292
|
+
detected = false;
|
|
293
|
+
}
|
|
294
|
+
// Update or create signal
|
|
295
|
+
const existing = signalMap.get(sig.id);
|
|
296
|
+
const count = detected ? (existing?.count || 0) + 1 : (existing?.count || 0);
|
|
297
|
+
const vibe = (0, vibe_confidence_1.evolveVibe)(existing?.vibe || 0, detected, count, totalSessions, sig.multiplier);
|
|
298
|
+
signalMap.set(sig.id, {
|
|
299
|
+
id: sig.id,
|
|
300
|
+
group: sig.group,
|
|
301
|
+
category: sig.category,
|
|
302
|
+
count,
|
|
303
|
+
vibe,
|
|
304
|
+
firstSeen: existing?.firstSeen || (detected ? now : ''),
|
|
305
|
+
lastSeen: detected ? now : existing?.lastSeen || '',
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
return [...signalMap.values()].sort((a, b) => b.vibe - a.vibe);
|
|
309
|
+
}
|
|
310
|
+
// ─── Rule Generation ─────────────────────────────────────────────
|
|
311
|
+
function generateVibeRules(signals) {
|
|
312
|
+
const rules = [];
|
|
313
|
+
// Rule templates for high-vibe signals
|
|
314
|
+
const ruleTemplates = {
|
|
315
|
+
language_hindi: (s) => `Hinglish preferred — Hindi explanations, English code, mixed casually. Vibe: ${s.vibe}`,
|
|
316
|
+
language_english: (s) => `English only communication. Code and explanations both in English. Vibe: ${s.vibe}`,
|
|
317
|
+
structure_bullets: (s) => `Bullet points over paragraphs. Max 3 lines per bullet. Short, scannable output. Vibe: ${s.vibe}`,
|
|
318
|
+
structure_paragraphs: (s) => `Detailed paragraphs preferred. Thorough explanations expected. Vibe: ${s.vibe}`,
|
|
319
|
+
tone_direct: (s) => `Seedha bolo, no sugar-coating. Direct imperatives over polite requests. Vibe: ${s.vibe}`,
|
|
320
|
+
tone_formal: (s) => `Formal, polite communication preferred. Please/thank you expected. Vibe: ${s.vibe}`,
|
|
321
|
+
verbosity_low: (s) => `Short answers only. Explain only when explicitly asked. Vibe: ${s.vibe}`,
|
|
322
|
+
verbosity_high: (s) => `Detailed, thorough explanations expected with every answer. Vibe: ${s.vibe}`,
|
|
323
|
+
changes_minimal: (s) => `Changes must be minimal — diff under 50 lines. Never propose full rewrites. Vibe: ${s.vibe}`,
|
|
324
|
+
changes_thorough: (s) => `Full rewrites accepted. Large-scope changes preferred over patches. Vibe: ${s.vibe}`,
|
|
325
|
+
abstraction_low: (s) => `Keep code flat. No abstraction until 3rd duplication. Vibe: ${s.vibe}`,
|
|
326
|
+
abstraction_high: (s) => `Well-abstracted code. Use interfaces, base classes, utils. Vibe: ${s.vibe}`,
|
|
327
|
+
testing_after: (s) => `Code first, tests after. Integration tests over unit tests. Vibe: ${s.vibe}`,
|
|
328
|
+
testing_first: (s) => `TDD approach. Write tests before implementation. Vibe: ${s.vibe}`,
|
|
329
|
+
typescript_strict: (s) => `TypeScript strict mode always. any only with documented reason. Vibe: ${s.vibe}`,
|
|
330
|
+
ship_fast: (s) => `Ship at 80%. Polish is infinite, shipping is finite. Good enough beats perfect. Vibe: ${s.vibe}`,
|
|
331
|
+
audit_first: (s) => `Always audit before code: scan → understand → plan → implement. Vibe: ${s.vibe}`,
|
|
332
|
+
roi_first: (s) => `Revenue-first decision making. Ask "kya paisa dega?" before any feature. Vibe: ${s.vibe}`,
|
|
333
|
+
trust_low: (s) => `Verify everything. Never accept first AI output without testing. Vibe: ${s.vibe}`,
|
|
334
|
+
trust_high: (s) => `High trust in AI output. Accepts suggestions readily. Vibe: ${s.vibe}`,
|
|
335
|
+
iterative_prompter: (s) => `Iterative refiner. Edits prompts 3-5 times until exact result. Vibe: ${s.vibe}`,
|
|
336
|
+
exploration_bias: (s) => `Starts many projects. Exploration over completion. Vibe: ${s.vibe}`,
|
|
337
|
+
completion_focused: (s) => `Finishes projects before starting new ones. Completion-driven. Vibe: ${s.vibe}`,
|
|
338
|
+
commit_small: (s) => `Small atomic commits. Present tense. Each commit does exactly one thing. Vibe: ${s.vibe}`,
|
|
339
|
+
solo_developer: (s) => `Solo developer. Works independently. Full ownership. Vibe: ${s.vibe}`,
|
|
340
|
+
team_player: (s) => `Team player. Collaborates, reviews PRs, pairs frequently. Vibe: ${s.vibe}`,
|
|
341
|
+
overnight_mode: (s) => `Autonomous overnight mode active. "Crack on going to bed" — work independently. Vibe: ${s.vibe}`,
|
|
342
|
+
focus_mode: (s) => `Single focus mode — one task at a time, strict scope. Vibe: ${s.vibe}`,
|
|
343
|
+
task_list_mode: (s) => `Task list mode — create checklist, work through systematically. Vibe: ${s.vibe}`,
|
|
344
|
+
scope_creep: (s) => `Scope creep tendency — expands features during implementation. Vibe: ${s.vibe}`,
|
|
345
|
+
docs_writer: (s) => `Documentation writer. READMEs, comments, wikis well-maintained. Vibe: ${s.vibe}`,
|
|
346
|
+
verify_always: (s) => `Always verifies. Runs tests after every change. Quality gate mandatory. Vibe: ${s.vibe}`,
|
|
347
|
+
};
|
|
348
|
+
for (const s of signals) {
|
|
349
|
+
if (!(0, vibe_confidence_1.shouldWriteToFile)(s.vibe))
|
|
350
|
+
continue;
|
|
351
|
+
const template = ruleTemplates[s.id];
|
|
352
|
+
if (template) {
|
|
353
|
+
rules.push({
|
|
354
|
+
text: template(s),
|
|
355
|
+
category: s.category,
|
|
356
|
+
vibe: s.vibe,
|
|
357
|
+
count: s.count,
|
|
358
|
+
level: (0, vibe_confidence_1.getVibeLevel)(s.vibe),
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
// Sort by vibe descending within each category
|
|
363
|
+
return rules.sort((a, b) => b.vibe - a.vibe);
|
|
364
|
+
}
|
|
365
|
+
// ─── Build Vibe Summary ──────────────────────────────────────────
|
|
366
|
+
function buildVibeSummary(signals, rules) {
|
|
367
|
+
const sigMap = new Map(signals.map(s => [s.id, s]));
|
|
368
|
+
const g = (id) => sigMap.get(id)?.vibe ?? 0;
|
|
369
|
+
// Communication
|
|
370
|
+
const comm = {};
|
|
371
|
+
if (g('language_hindi') >= 65)
|
|
372
|
+
comm.language = 'hinglish';
|
|
373
|
+
else if (g('language_english') >= 65)
|
|
374
|
+
comm.language = 'english';
|
|
375
|
+
if (g('structure_bullets') >= 65)
|
|
376
|
+
comm.structure = 'bullets';
|
|
377
|
+
if (g('tone_direct') >= 65)
|
|
378
|
+
comm.tone = 'direct';
|
|
379
|
+
if (g('verbosity_low') >= 65)
|
|
380
|
+
comm.verbosity = 'low';
|
|
381
|
+
// Coding
|
|
382
|
+
const coding = {};
|
|
383
|
+
if (g('changes_minimal') >= 65)
|
|
384
|
+
coding.changeSize = 'minimal';
|
|
385
|
+
if (g('abstraction_low') >= 65)
|
|
386
|
+
coding.abstraction = 'low';
|
|
387
|
+
if (g('testing_after') >= 65)
|
|
388
|
+
coding.testing = 'after-code';
|
|
389
|
+
if (g('typescript_strict') >= 65)
|
|
390
|
+
coding.typescript = 'strict';
|
|
391
|
+
// Decision driver
|
|
392
|
+
let decisionDriver = 'balanced';
|
|
393
|
+
if (g('roi_first') >= 65)
|
|
394
|
+
decisionDriver = 'roi';
|
|
395
|
+
else if (g('ux_first') >= 65)
|
|
396
|
+
decisionDriver = 'ux';
|
|
397
|
+
else if (g('tech_first') >= 65)
|
|
398
|
+
decisionDriver = 'tech';
|
|
399
|
+
// UI preference
|
|
400
|
+
let uiPreference = 'unknown';
|
|
401
|
+
// Will be enhanced when we add dark_mode signal in future
|
|
402
|
+
// Ship style
|
|
403
|
+
let shipStyle = 'balanced';
|
|
404
|
+
if (g('ship_fast') >= 65)
|
|
405
|
+
shipStyle = 'fast';
|
|
406
|
+
// AI trust
|
|
407
|
+
let aiTrust = 'balanced';
|
|
408
|
+
if (g('trust_low') >= 65 || g('verify_always') >= 65)
|
|
409
|
+
aiTrust = 'verify_always';
|
|
410
|
+
else if (g('trust_high') >= 65)
|
|
411
|
+
aiTrust = 'high';
|
|
412
|
+
// Strengths
|
|
413
|
+
const strengths = [];
|
|
414
|
+
if (g('audit_first') >= 65)
|
|
415
|
+
strengths.push('Systematic auditor');
|
|
416
|
+
if (g('ship_fast') >= 65)
|
|
417
|
+
strengths.push('Fast shipper');
|
|
418
|
+
if (g('tone_direct') >= 65)
|
|
419
|
+
strengths.push('Direct communicator');
|
|
420
|
+
if (g('commit_small') >= 65)
|
|
421
|
+
strengths.push('Clean git hygiene');
|
|
422
|
+
if (g('completion_focused') >= 65)
|
|
423
|
+
strengths.push('Completion driven');
|
|
424
|
+
// Risks
|
|
425
|
+
const risks = (0, vibe_confidence_1.detectRisks)(signals);
|
|
426
|
+
if (g('exploration_bias') >= 65)
|
|
427
|
+
risks.push('Exploration bias — starts more than finishes');
|
|
428
|
+
if (g('scope_creep') >= 65)
|
|
429
|
+
risks.push('Scope creep — features expand during work');
|
|
430
|
+
// Avoid list
|
|
431
|
+
const avoid = [];
|
|
432
|
+
if (g('changes_minimal') >= 65)
|
|
433
|
+
avoid.push('Large rewrites');
|
|
434
|
+
if (g('abstraction_low') >= 65)
|
|
435
|
+
avoid.push('Over-abstraction');
|
|
436
|
+
if (g('tone_direct') >= 65)
|
|
437
|
+
avoid.push('Corporate/formal language');
|
|
438
|
+
if (g('language_hindi') >= 65)
|
|
439
|
+
avoid.push('Pure English responses');
|
|
440
|
+
// Best workflow
|
|
441
|
+
let bestWorkflow = 'Standard workflow';
|
|
442
|
+
if (g('audit_first') >= 65 && g('ship_fast') >= 65) {
|
|
443
|
+
bestWorkflow = 'Audit → phased plan → incremental delivery → ship at 80%';
|
|
444
|
+
}
|
|
445
|
+
else if (g('audit_first') >= 65) {
|
|
446
|
+
bestWorkflow = 'Audit → plan → thorough implementation';
|
|
447
|
+
}
|
|
448
|
+
else if (g('ship_fast') >= 65) {
|
|
449
|
+
bestWorkflow = 'Build fast → test → ship';
|
|
450
|
+
}
|
|
451
|
+
// Risk profile
|
|
452
|
+
let riskProfile = 'medium';
|
|
453
|
+
if (g('ship_fast') >= 65 && g('speed_over_quality') >= 60)
|
|
454
|
+
riskProfile = 'high';
|
|
455
|
+
else if (g('quality_over_speed') >= 65)
|
|
456
|
+
riskProfile = 'low';
|
|
457
|
+
// Category averages
|
|
458
|
+
const categoryAverages = [];
|
|
459
|
+
for (const cat of (0, vibe_signals_1.getAllCategories)()) {
|
|
460
|
+
const catSignals = signals.filter(s => s.category === cat);
|
|
461
|
+
const avg = (0, vibe_confidence_1.categoryVibeAverage)(catSignals);
|
|
462
|
+
if (avg > 0)
|
|
463
|
+
categoryAverages.push({ cat, avg });
|
|
464
|
+
}
|
|
465
|
+
const topCategories = categoryAverages
|
|
466
|
+
.sort((a, b) => b.avg - a.avg)
|
|
467
|
+
.slice(0, 5)
|
|
468
|
+
.map(c => c.cat);
|
|
469
|
+
// One-line summary
|
|
470
|
+
const summaryParts = [];
|
|
471
|
+
if (decisionDriver === 'roi')
|
|
472
|
+
summaryParts.push('ROI-driven');
|
|
473
|
+
if (decisionDriver === 'ux')
|
|
474
|
+
summaryParts.push('UX-focused');
|
|
475
|
+
if (shipStyle === 'fast')
|
|
476
|
+
summaryParts.push('ships fast');
|
|
477
|
+
if (comm.language === 'hinglish')
|
|
478
|
+
summaryParts.push('Hinglish communicator');
|
|
479
|
+
if (aiTrust === 'verify_always')
|
|
480
|
+
summaryParts.push('verification-obsessed');
|
|
481
|
+
const summary = summaryParts.length > 0
|
|
482
|
+
? summaryParts.join(', ') + '.'
|
|
483
|
+
: 'Style still learning.';
|
|
484
|
+
return {
|
|
485
|
+
summary,
|
|
486
|
+
strengths: strengths.length > 0 ? strengths : ['Still discovering strengths'],
|
|
487
|
+
risks: risks.length > 0 ? risks : ['No risks detected yet'],
|
|
488
|
+
bestWorkflow,
|
|
489
|
+
avoid: avoid.length > 0 ? avoid : ['Nothing specific yet'],
|
|
490
|
+
communication: comm,
|
|
491
|
+
coding,
|
|
492
|
+
decisionDriver,
|
|
493
|
+
riskProfile,
|
|
494
|
+
uiPreference,
|
|
495
|
+
shipStyle,
|
|
496
|
+
aiTrust,
|
|
497
|
+
totalRules: rules.length,
|
|
498
|
+
averageVibe: Math.round(signals.reduce((acc, s) => acc + s.vibe, 0) / Math.max(signals.length, 1)),
|
|
499
|
+
topCategories,
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
// ─── File I/O ─────────────────────────────────────────────────────
|
|
503
|
+
function loadSignals(projectDir) {
|
|
504
|
+
try {
|
|
505
|
+
const p = path.join(getVibeDir(projectDir), 'signals.json');
|
|
506
|
+
if (!fs.existsSync(p))
|
|
507
|
+
return [];
|
|
508
|
+
const data = JSON.parse(fs.readFileSync(p, 'utf-8'));
|
|
509
|
+
return data.signals || [];
|
|
510
|
+
}
|
|
511
|
+
catch {
|
|
512
|
+
return [];
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
function writeSignalsJson(projectDir, data) {
|
|
516
|
+
ensureVibeDir(projectDir);
|
|
517
|
+
fs.writeFileSync(path.join(getVibeDir(projectDir), 'signals.json'), JSON.stringify(data, null, 2), 'utf-8');
|
|
518
|
+
}
|
|
519
|
+
function writeVibeMarkdown(projectDir, data) {
|
|
520
|
+
ensureVibeDir(projectDir);
|
|
521
|
+
const lines = [];
|
|
522
|
+
lines.push('# Cell Vibe — Your Developer Personality\n');
|
|
523
|
+
lines.push(`*Learned from ${data.sessionsAnalyzed} sessions. Last updated: ${data.lastUpdated}*\n`);
|
|
524
|
+
// Group by category
|
|
525
|
+
const byCategory = new Map();
|
|
526
|
+
for (const r of data.rules) {
|
|
527
|
+
const existing = byCategory.get(r.category) || [];
|
|
528
|
+
existing.push(r);
|
|
529
|
+
byCategory.set(r.category, existing);
|
|
530
|
+
}
|
|
531
|
+
for (const [cat, rules] of byCategory) {
|
|
532
|
+
lines.push(`## ${cat}\n`);
|
|
533
|
+
for (const r of rules.sort((a, b) => b.vibe - a.vibe)) {
|
|
534
|
+
lines.push(`- ${r.text}`);
|
|
535
|
+
}
|
|
536
|
+
lines.push('');
|
|
537
|
+
}
|
|
538
|
+
fs.writeFileSync(path.join(getVibeDir(projectDir), 'vibe.md'), lines.join('\n'), 'utf-8');
|
|
539
|
+
}
|
|
540
|
+
function writeVibeSummary(projectDir, data) {
|
|
541
|
+
ensureVibeDir(projectDir);
|
|
542
|
+
const summary = buildVibeSummary(data.signals, data.rules);
|
|
543
|
+
fs.writeFileSync(path.join(getVibeDir(projectDir), 'vibe-summary.json'), JSON.stringify(summary, null, 2), 'utf-8');
|
|
544
|
+
}
|
|
545
|
+
// ─── Public API ──────────────────────────────────────────────────
|
|
546
|
+
function getVibeData(projectDir) {
|
|
547
|
+
try {
|
|
548
|
+
const p = path.join(getVibeDir(projectDir), 'signals.json');
|
|
549
|
+
if (!fs.existsSync(p))
|
|
550
|
+
return null;
|
|
551
|
+
return JSON.parse(fs.readFileSync(p, 'utf-8'));
|
|
552
|
+
}
|
|
553
|
+
catch {
|
|
554
|
+
return null;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
function getVibeSummary(projectDir) {
|
|
558
|
+
try {
|
|
559
|
+
const p = path.join(getVibeDir(projectDir), 'vibe-summary.json');
|
|
560
|
+
if (!fs.existsSync(p))
|
|
561
|
+
return null;
|
|
562
|
+
return JSON.parse(fs.readFileSync(p, 'utf-8'));
|
|
563
|
+
}
|
|
564
|
+
catch {
|
|
565
|
+
return null;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
function getVibeMarkdown(projectDir) {
|
|
569
|
+
try {
|
|
570
|
+
const p = path.join(getVibeDir(projectDir), 'vibe.md');
|
|
571
|
+
if (!fs.existsSync(p))
|
|
572
|
+
return '# Vibe\n\nNo vibe data yet. Vibe learns automatically from your sessions. Just keep working and Cell will learn your style.';
|
|
573
|
+
return fs.readFileSync(p, 'utf-8');
|
|
574
|
+
}
|
|
575
|
+
catch {
|
|
576
|
+
return '# Vibe\n\nCould not read vibe data.';
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
function resetVibe(projectDir) {
|
|
580
|
+
const dir = getVibeDir(projectDir);
|
|
581
|
+
if (fs.existsSync(dir)) {
|
|
582
|
+
for (const f of fs.readdirSync(dir)) {
|
|
583
|
+
fs.unlinkSync(path.join(dir, f));
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
//# sourceMappingURL=vibe-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibe-engine.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/vibe/vibe-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface VibeSignal {
|
|
2
|
+
id: string;
|
|
3
|
+
group: string;
|
|
4
|
+
label: string;
|
|
5
|
+
category: string;
|
|
6
|
+
detect: string;
|
|
7
|
+
multiplier: number;
|
|
8
|
+
}
|
|
9
|
+
export interface DetectedSignal {
|
|
10
|
+
id: string;
|
|
11
|
+
group: string;
|
|
12
|
+
category: string;
|
|
13
|
+
count: number;
|
|
14
|
+
vibe: number;
|
|
15
|
+
firstSeen: string;
|
|
16
|
+
lastSeen: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const VIBE_SIGNALS: VibeSignal[];
|
|
19
|
+
export declare function getSignal(id: string): VibeSignal | undefined;
|
|
20
|
+
export declare function getSignalsByGroup(group: string): VibeSignal[];
|
|
21
|
+
export declare function getSignalsByCategory(category: string): VibeSignal[];
|
|
22
|
+
export declare function getAllGroups(): string[];
|
|
23
|
+
export declare function getAllCategories(): string[];
|
|
24
|
+
//# sourceMappingURL=vibe-signals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibe-signals.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/vibe/vibe-signals.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,YAAY,EAAE,UAAU,EAkHpC,CAAC;AAMF,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAE7D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAEnE;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C"}
|