fivocell 6.1.0 → 6.3.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 +197 -202
- package/dist/__tests__/cell-mirror.test.js +2 -2
- package/dist/__tests__/cell-mirror.test.js.map +1 -1
- package/dist/__tests__/cli-regression.test.js +1 -1
- package/dist/__tests__/cli-regression.test.js.map +1 -1
- package/dist/core/search-engine.d.ts.map +1 -1
- package/dist/core/search-engine.js +8 -11
- package/dist/core/search-engine.js.map +1 -1
- package/dist/walls/02-scanner/blindspots/code-scanner.d.ts +11 -0
- package/dist/walls/02-scanner/blindspots/code-scanner.d.ts.map +1 -1
- package/dist/walls/02-scanner/blindspots/code-scanner.js +63 -0
- package/dist/walls/02-scanner/blindspots/code-scanner.js.map +1 -1
- package/dist/walls/03-knowledge/decisions/branch-snapshot.d.ts +14 -0
- package/dist/walls/03-knowledge/decisions/branch-snapshot.d.ts.map +1 -1
- package/dist/walls/03-knowledge/decisions/branch-snapshot.js +88 -21
- package/dist/walls/03-knowledge/decisions/branch-snapshot.js.map +1 -1
- package/dist/walls/03-knowledge/decisions/failure-memory.d.ts +15 -0
- package/dist/walls/03-knowledge/decisions/failure-memory.d.ts.map +1 -1
- package/dist/walls/03-knowledge/decisions/failure-memory.js +141 -54
- package/dist/walls/03-knowledge/decisions/failure-memory.js.map +1 -1
- package/dist/walls/03-knowledge/decisions/predictive-engine.d.ts +8 -0
- package/dist/walls/03-knowledge/decisions/predictive-engine.d.ts.map +1 -1
- package/dist/walls/03-knowledge/decisions/predictive-engine.js +41 -0
- package/dist/walls/03-knowledge/decisions/predictive-engine.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 +20 -4
- 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 +19 -29
- package/dist/walls/06-memory/archive/memory-archive.js.map +1 -1
- package/dist/walls/06-memory/mirror/cell-mirror.d.ts +4 -0
- package/dist/walls/06-memory/mirror/cell-mirror.d.ts.map +1 -1
- package/dist/walls/06-memory/mirror/cell-mirror.js +156 -32
- package/dist/walls/06-memory/mirror/cell-mirror.js.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider-os.d.ts +6 -0
- package/dist/walls/06-memory/privacy/key-provider-os.d.ts.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider-os.js +33 -9
- package/dist/walls/06-memory/privacy/key-provider-os.js.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider.d.ts +27 -0
- package/dist/walls/06-memory/privacy/key-provider.d.ts.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider.js +39 -0
- package/dist/walls/06-memory/privacy/key-provider.js.map +1 -1
- package/dist/walls/06-memory/retrieval/context-pipeline.d.ts +2 -0
- package/dist/walls/06-memory/retrieval/context-pipeline.d.ts.map +1 -1
- package/dist/walls/06-memory/retrieval/context-pipeline.js +130 -16
- package/dist/walls/06-memory/retrieval/context-pipeline.js.map +1 -1
- package/dist/walls/06-memory/stores/memory-search.d.ts +21 -0
- package/dist/walls/06-memory/stores/memory-search.d.ts.map +1 -1
- package/dist/walls/06-memory/stores/memory-search.js +97 -13
- package/dist/walls/06-memory/stores/memory-search.js.map +1 -1
- package/dist/walls/06-memory/stores/weekly-report.d.ts +5 -0
- package/dist/walls/06-memory/stores/weekly-report.d.ts.map +1 -1
- package/dist/walls/06-memory/stores/weekly-report.js +24 -2
- package/dist/walls/06-memory/stores/weekly-report.js.map +1 -1
- package/dist/walls/07-runtime/cli/cli.js +100 -4545
- package/dist/walls/07-runtime/cli/cli.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/branch.d.ts +7 -0
- package/dist/walls/07-runtime/cli/commands/branch.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/branch.js +169 -0
- package/dist/walls/07-runtime/cli/commands/branch.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/ci.d.ts +2 -0
- package/dist/walls/07-runtime/cli/commands/ci.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/ci.js +57 -0
- package/dist/walls/07-runtime/cli/commands/ci.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/community.d.ts +2 -0
- package/dist/walls/07-runtime/cli/commands/community.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/community.js +64 -0
- package/dist/walls/07-runtime/cli/commands/community.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/dashboard.d.ts +3 -0
- package/dist/walls/07-runtime/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/dashboard.js +45 -0
- package/dist/walls/07-runtime/cli/commands/dashboard.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/help.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/help.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/help.js +91 -0
- package/dist/walls/07-runtime/cli/commands/help.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/memory.d.ts +5 -0
- package/dist/walls/07-runtime/cli/commands/memory.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/memory.js +252 -0
- package/dist/walls/07-runtime/cli/commands/memory.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/repl.d.ts +2 -0
- package/dist/walls/07-runtime/cli/commands/repl.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/repl.js +63 -0
- package/dist/walls/07-runtime/cli/commands/repl.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/scan.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/scan.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/scan.js +244 -0
- package/dist/walls/07-runtime/cli/commands/scan.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/session.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/session.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/session.js +79 -0
- package/dist/walls/07-runtime/cli/commands/session.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/setup.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/setup.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/setup.js +216 -0
- package/dist/walls/07-runtime/cli/commands/setup.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/status.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/status.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/status.js +352 -0
- package/dist/walls/07-runtime/cli/commands/status.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/sync.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/sync.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/sync.js +116 -0
- package/dist/walls/07-runtime/cli/commands/sync.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/team.d.ts +2 -0
- package/dist/walls/07-runtime/cli/commands/team.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/team.js +58 -0
- package/dist/walls/07-runtime/cli/commands/team.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/watch.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/watch.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/watch.js +129 -0
- package/dist/walls/07-runtime/cli/commands/watch.js.map +1 -0
- package/dist/walls/07-runtime/cli/utils.d.ts +26 -0
- package/dist/walls/07-runtime/cli/utils.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/utils.js +217 -0
- package/dist/walls/07-runtime/cli/utils.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/community.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/community.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/community.js +191 -0
- package/dist/walls/07-runtime/daemon/routes/community.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/cost.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/cost.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/cost.js +73 -0
- package/dist/walls/07-runtime/daemon/routes/cost.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/health.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/health.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/health.js +40 -0
- package/dist/walls/07-runtime/daemon/routes/health.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/memory.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/memory.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/memory.js +75 -0
- package/dist/walls/07-runtime/daemon/routes/memory.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/privacy.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/privacy.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/privacy.js +160 -0
- package/dist/walls/07-runtime/daemon/routes/privacy.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/project.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/project.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/project.js +59 -0
- package/dist/walls/07-runtime/daemon/routes/project.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/session.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/session.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/session.js +100 -0
- package/dist/walls/07-runtime/daemon/routes/session.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/signal.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/signal.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/signal.js +60 -0
- package/dist/walls/07-runtime/daemon/routes/signal.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/workflow.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/workflow.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/workflow.js +105 -0
- package/dist/walls/07-runtime/daemon/routes/workflow.js.map +1 -0
- package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/server.js +19 -0
- package/dist/walls/07-runtime/daemon/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/walls/03-knowledge/decisions/cross-model-engine.d.ts +0 -38
- package/dist/walls/03-knowledge/decisions/cross-model-engine.d.ts.map +0 -1
- package/dist/walls/03-knowledge/decisions/cross-model-engine.js +0 -98
- package/dist/walls/03-knowledge/decisions/cross-model-engine.js.map +0 -1
- package/dist/walls/03-knowledge/decisions/insight-generator.d.ts +0 -58
- package/dist/walls/03-knowledge/decisions/insight-generator.d.ts.map +0 -1
- package/dist/walls/03-knowledge/decisions/insight-generator.js +0 -314
- package/dist/walls/03-knowledge/decisions/insight-generator.js.map +0 -1
- package/dist/walls/05-community/stats/community-advanced-engine.d.ts +0 -30
- package/dist/walls/05-community/stats/community-advanced-engine.d.ts.map +0 -1
- package/dist/walls/05-community/stats/community-advanced-engine.js +0 -103
- package/dist/walls/05-community/stats/community-advanced-engine.js.map +0 -1
- package/dist/walls/05-community/stats/community-engine.d.ts +0 -62
- package/dist/walls/05-community/stats/community-engine.d.ts.map +0 -1
- package/dist/walls/05-community/stats/community-engine.js +0 -194
- package/dist/walls/05-community/stats/community-engine.js.map +0 -1
- package/dist/walls/05-community/stats/community-v2.d.ts +0 -106
- package/dist/walls/05-community/stats/community-v2.d.ts.map +0 -1
- package/dist/walls/05-community/stats/community-v2.js +0 -378
- package/dist/walls/05-community/stats/community-v2.js.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/ai-bridge.d.ts +0 -20
- package/dist/walls/08-cloud-bridge/sync/ai-bridge.d.ts.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/ai-bridge.js +0 -250
- package/dist/walls/08-cloud-bridge/sync/ai-bridge.js.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/cloud-client.d.ts +0 -40
- package/dist/walls/08-cloud-bridge/sync/cloud-client.d.ts.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/cloud-client.js +0 -126
- package/dist/walls/08-cloud-bridge/sync/cloud-client.js.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/cloud-sync.d.ts +0 -66
- package/dist/walls/08-cloud-bridge/sync/cloud-sync.d.ts.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/cloud-sync.js +0 -328
- package/dist/walls/08-cloud-bridge/sync/cloud-sync.js.map +0 -1
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.generateAnalysisPrompts = generateAnalysisPrompts;
|
|
37
|
-
exports.saveAIInsight = saveAIInsight;
|
|
38
|
-
exports.getAIInsights = getAIInsights;
|
|
39
|
-
exports.getAnalysisCommand = getAnalysisCommand;
|
|
40
|
-
const fs = __importStar(require("fs"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
|
-
const os = __importStar(require("os"));
|
|
43
|
-
const database_1 = require("../../06-memory/database/database");
|
|
44
|
-
const CELL_DIR = path.join(os.homedir(), '.fivo', 'cell');
|
|
45
|
-
// ─── Prompt Generator ──────────────────────────────────────────────────────
|
|
46
|
-
function generateAnalysisPrompts(projectDir) {
|
|
47
|
-
const db = (0, database_1.getDb)();
|
|
48
|
-
const prompts = [];
|
|
49
|
-
const dir = projectDir || process.cwd();
|
|
50
|
-
const projectName = path.basename(dir);
|
|
51
|
-
// ── Project Identity Prompt ─────────────────────────────────────────
|
|
52
|
-
const stackData = readStackFromDB(db, projectName);
|
|
53
|
-
const filesList = readTopFiles(dir, 20);
|
|
54
|
-
if (stackData || filesList.length > 0) {
|
|
55
|
-
const stackInfo = stackData
|
|
56
|
-
? `Stack: ${stackData.frontend || 'none'} + ${stackData.backend || 'none'}\nDatabase: ${(stackData.database || ['unknown']).join(', ')}\nORM: ${stackData.orm || 'none'}\nTesting: ${(stackData.testing || ['none']).join(', ')}`
|
|
57
|
-
: 'Stack: auto-detected from codebase';
|
|
58
|
-
prompts.push({
|
|
59
|
-
title: 'Project Identity & Purpose',
|
|
60
|
-
category: 'project_identity',
|
|
61
|
-
prompt: `Analyze this codebase and tell me exactly what's being built.
|
|
62
|
-
|
|
63
|
-
CONTEXT:
|
|
64
|
-
Project: ${projectName}
|
|
65
|
-
${stackInfo}
|
|
66
|
-
Key files:
|
|
67
|
-
${filesList.map(f => ` - ${f}`).join('\n')}
|
|
68
|
-
|
|
69
|
-
TASK:
|
|
70
|
-
1. What is this project? What problem does it solve?
|
|
71
|
-
2. What's the main business logic? Where is it?
|
|
72
|
-
3. What are the most important files/modules?
|
|
73
|
-
4. Is this production code, a side project, or an experiment?
|
|
74
|
-
5. What seems incomplete or in progress?
|
|
75
|
-
|
|
76
|
-
Answer in short, clear bullet points. No fluff. NO code snippets.`,
|
|
77
|
-
tokensEstimate: 300,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
// ── Architecture Analysis Prompt ────────────────────────────────────
|
|
81
|
-
const archData = readArchitectureFromDB(db, projectName);
|
|
82
|
-
if (archData) {
|
|
83
|
-
prompts.push({
|
|
84
|
-
title: 'Architecture Deep Analysis',
|
|
85
|
-
category: 'architecture',
|
|
86
|
-
prompt: `Analyze the architecture of this project.
|
|
87
|
-
|
|
88
|
-
CONTEXT:
|
|
89
|
-
Project: ${projectName}
|
|
90
|
-
Architecture type: ${archData.type || 'unknown'}
|
|
91
|
-
Entry points: ${(archData.entryPoints || []).join(', ')}
|
|
92
|
-
Top-level structure: ${(archData.topLevelDirs || []).join(', ')}
|
|
93
|
-
|
|
94
|
-
TASK:
|
|
95
|
-
1. What architecture pattern is being used? (feature-based, layer-based, etc.)
|
|
96
|
-
2. Is this architecture appropriate for the project's size and purpose?
|
|
97
|
-
3. What are the architectural strengths?
|
|
98
|
-
4. What are the architectural weaknesses or risks?
|
|
99
|
-
5. If you could change ONE thing about the architecture, what would it be?
|
|
100
|
-
|
|
101
|
-
Answer in short bullet points. No fluff.`,
|
|
102
|
-
tokensEstimate: 250,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
// ── Blind Spots Analysis Prompt ─────────────────────────────────────
|
|
106
|
-
const blindSpots = readBlindSpotsFromDB(db, projectName);
|
|
107
|
-
if (blindSpots.length > 0) {
|
|
108
|
-
const spotSummary = blindSpots.slice(0, 10).map(b => `- ${b.value || b.description} (severity: ${b.severity || 'medium'})`).join('\n');
|
|
109
|
-
prompts.push({
|
|
110
|
-
title: 'Blind Spots & Issues Analysis',
|
|
111
|
-
category: 'blind_spots',
|
|
112
|
-
prompt: `Analyze these detected blind spots and code issues.
|
|
113
|
-
|
|
114
|
-
PROJECT: ${projectName}
|
|
115
|
-
|
|
116
|
-
DETECTED ISSUES:
|
|
117
|
-
${spotSummary}
|
|
118
|
-
|
|
119
|
-
TASK:
|
|
120
|
-
1. Which 3 issues are MOST critical and should be fixed FIRST?
|
|
121
|
-
2. For each of those 3: what's the root cause?
|
|
122
|
-
3. What's the SIMPLEST fix for each?
|
|
123
|
-
4. Are any of these interconnected (fixing one helps another)?
|
|
124
|
-
5. What's the estimated effort to fix the top 3?
|
|
125
|
-
|
|
126
|
-
Answer in short bullet points. Be specific about fixes.`,
|
|
127
|
-
tokensEstimate: 300,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
// ── Recommendations Prompt ──────────────────────────────────────────
|
|
131
|
-
const patterns = readPatternsFromDB(db, projectName);
|
|
132
|
-
if (patterns.length > 0) {
|
|
133
|
-
const patternSummary = patterns.slice(0, 10).map(p => `${p.category}: ${p.value} (${p.count}x)`).join('\n');
|
|
134
|
-
prompts.push({
|
|
135
|
-
title: 'Improvement Recommendations',
|
|
136
|
-
category: 'recommendations',
|
|
137
|
-
prompt: `Based on this codebase analysis, suggest improvements.
|
|
138
|
-
|
|
139
|
-
PROJECT: ${projectName}
|
|
140
|
-
Top patterns:
|
|
141
|
-
${patternSummary}
|
|
142
|
-
${blindSpots.length > 0 ? `\nKnown issues: ${blindSpots.length} detected` : ''}
|
|
143
|
-
|
|
144
|
-
TASK:
|
|
145
|
-
1. What 5 specific improvements would most benefit this project?
|
|
146
|
-
2. Which improvements are "quick wins" (under 1 hour)?
|
|
147
|
-
3. Which improvements are "strategic" (need planning)?
|
|
148
|
-
4. Is there any technology or library you'd recommend adding?
|
|
149
|
-
5. Is there anything you'd recommend REMOVING or REPLACING?
|
|
150
|
-
|
|
151
|
-
Answer in bullet points. Be actionable and specific.`,
|
|
152
|
-
tokensEstimate: 250,
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
return prompts;
|
|
156
|
-
}
|
|
157
|
-
// ─── Insight Saver ─────────────────────────────────────────────────────────
|
|
158
|
-
function saveAIInsight(project, category, content) {
|
|
159
|
-
const db = (0, database_1.getDb)();
|
|
160
|
-
db.exec(`
|
|
161
|
-
CREATE TABLE IF NOT EXISTS ai_insights (
|
|
162
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
163
|
-
project TEXT NOT NULL,
|
|
164
|
-
category TEXT NOT NULL,
|
|
165
|
-
content TEXT NOT NULL,
|
|
166
|
-
source TEXT DEFAULT 'ai',
|
|
167
|
-
created_at TEXT DEFAULT (datetime('now'))
|
|
168
|
-
);
|
|
169
|
-
`);
|
|
170
|
-
db.prepare('INSERT INTO ai_insights (project, category, content) VALUES (?, ?, ?)').run(project, category, content);
|
|
171
|
-
// Also save to JSON for human reading
|
|
172
|
-
const insightDir = path.join(CELL_DIR, 'personal', 'insights');
|
|
173
|
-
if (!fs.existsSync(insightDir))
|
|
174
|
-
fs.mkdirSync(insightDir, { recursive: true });
|
|
175
|
-
const insightFile = path.join(insightDir, `${category}.md`);
|
|
176
|
-
fs.writeFileSync(insightFile, `# ${category}\nGenerated: ${new Date().toISOString()}\n\n${content}`, 'utf-8');
|
|
177
|
-
}
|
|
178
|
-
function getAIInsights(project) {
|
|
179
|
-
const db = (0, database_1.getDb)();
|
|
180
|
-
const query = project
|
|
181
|
-
? 'SELECT category, content, created_at, source FROM ai_insights WHERE project = ? ORDER BY created_at DESC'
|
|
182
|
-
: 'SELECT category, content, created_at, source FROM ai_insights ORDER BY created_at DESC';
|
|
183
|
-
const params = project ? [project] : [];
|
|
184
|
-
try {
|
|
185
|
-
const rows = db.prepare(query).all(...(params));
|
|
186
|
-
return rows.map(r => ({
|
|
187
|
-
category: r.category,
|
|
188
|
-
content: r.content,
|
|
189
|
-
timestamp: r.created_at,
|
|
190
|
-
source: r.source,
|
|
191
|
-
}));
|
|
192
|
-
}
|
|
193
|
-
catch {
|
|
194
|
-
return [];
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
// ─── Display ───────────────────────────────────────────────────────────────
|
|
198
|
-
function getAnalysisCommand(projectDir) {
|
|
199
|
-
const prompts = generateAnalysisPrompts(projectDir);
|
|
200
|
-
const intro = '═══ CELL AI ANALYSIS PROMPTS ═══\n\nCopy any prompt below to your AI tool (Cursor, Claude Code, etc.).\nAfter getting results, run: cell analyze --save <category>\n';
|
|
201
|
-
return { intro, prompts };
|
|
202
|
-
}
|
|
203
|
-
// ─── DB Helpers ────────────────────────────────────────────────────────────
|
|
204
|
-
function readStackFromDB(db, project) {
|
|
205
|
-
try {
|
|
206
|
-
const row = db.prepare("SELECT pattern_value FROM code_patterns WHERE pattern_type = 'project_dna' AND project = ? LIMIT 1").get(project);
|
|
207
|
-
if (row?.pattern_value)
|
|
208
|
-
return JSON.parse(row.pattern_value);
|
|
209
|
-
}
|
|
210
|
-
catch { }
|
|
211
|
-
return null;
|
|
212
|
-
}
|
|
213
|
-
function readArchitectureFromDB(db, project) {
|
|
214
|
-
try {
|
|
215
|
-
const row = db.prepare("SELECT pattern_value FROM code_patterns WHERE pattern_type = 'architecture' AND project = ? LIMIT 1").get(project);
|
|
216
|
-
if (row?.pattern_value)
|
|
217
|
-
return JSON.parse(row.pattern_value);
|
|
218
|
-
}
|
|
219
|
-
catch { }
|
|
220
|
-
return null;
|
|
221
|
-
}
|
|
222
|
-
function readBlindSpotsFromDB(db, project) {
|
|
223
|
-
try {
|
|
224
|
-
return db.prepare("SELECT pattern_value as value, count FROM code_patterns WHERE category = 'blind_spots' AND project = ? ORDER BY count DESC LIMIT 20").all(project);
|
|
225
|
-
}
|
|
226
|
-
catch {
|
|
227
|
-
return [];
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
function readPatternsFromDB(db, project) {
|
|
231
|
-
try {
|
|
232
|
-
return db.prepare("SELECT category, pattern_value as value, count FROM code_patterns WHERE project = ? AND category IN ('style','naming','functions','architecture','testing') ORDER BY count DESC LIMIT 20").all(project);
|
|
233
|
-
}
|
|
234
|
-
catch {
|
|
235
|
-
return [];
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
function readTopFiles(dir, limit) {
|
|
239
|
-
try {
|
|
240
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
241
|
-
return entries
|
|
242
|
-
.filter(e => e.isFile() && !e.name.startsWith('.'))
|
|
243
|
-
.slice(0, limit)
|
|
244
|
-
.map(e => e.name);
|
|
245
|
-
}
|
|
246
|
-
catch {
|
|
247
|
-
return [];
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
//# sourceMappingURL=ai-bridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ai-bridge.js","sourceRoot":"","sources":["../../../../src/walls/08-cloud-bridge/sync/ai-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
interface PushPayload {
|
|
2
|
-
deviceId: string;
|
|
3
|
-
patterns: Array<{
|
|
4
|
-
patternId: string;
|
|
5
|
-
category: string;
|
|
6
|
-
description: string;
|
|
7
|
-
from: string;
|
|
8
|
-
to: string;
|
|
9
|
-
signals: {
|
|
10
|
-
positive: number;
|
|
11
|
-
negative: number;
|
|
12
|
-
};
|
|
13
|
-
}>;
|
|
14
|
-
signalCount: number;
|
|
15
|
-
language: string;
|
|
16
|
-
framework: string;
|
|
17
|
-
}
|
|
18
|
-
interface PullResponse {
|
|
19
|
-
deviceId: string;
|
|
20
|
-
snapshots: unknown[];
|
|
21
|
-
communityPrior: Array<{
|
|
22
|
-
patternId: string;
|
|
23
|
-
category: string;
|
|
24
|
-
description: string;
|
|
25
|
-
from: string;
|
|
26
|
-
to: string;
|
|
27
|
-
alpha: number;
|
|
28
|
-
beta: number;
|
|
29
|
-
observations: number;
|
|
30
|
-
}>;
|
|
31
|
-
}
|
|
32
|
-
export declare function pushPatterns(patterns: PushPayload['patterns'], signalCount: number, language: string, framework: string): Promise<boolean>;
|
|
33
|
-
export declare function pullCommunityPrior(): Promise<PullResponse['communityPrior'] | null>;
|
|
34
|
-
export declare function checkSyncStatus(): Promise<{
|
|
35
|
-
synced: boolean;
|
|
36
|
-
lastSync?: string;
|
|
37
|
-
} | null>;
|
|
38
|
-
export declare function getCloudUrl(): string;
|
|
39
|
-
export {};
|
|
40
|
-
//# sourceMappingURL=cloud-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-client.d.ts","sourceRoot":"","sources":["../../../../src/walls/08-cloud-bridge/sync/cloud-client.ts"],"names":[],"mappings":"AAYA,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IACzJ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,cAAc,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClK;AAiCD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUhJ;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,CASzF;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAO9F;AAED,wBAAgB,WAAW,IAAI,MAAM,CAAsB"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Cloud Client — connects open source daemon to cell.fivo.live cloud
|
|
3
|
-
// Cloud sync is ON by default (anonymous pattern stats only). Turn off: cell cloud off
|
|
4
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
-
if (k2 === undefined) k2 = k;
|
|
6
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
-
}
|
|
10
|
-
Object.defineProperty(o, k2, desc);
|
|
11
|
-
}) : (function(o, m, k, k2) {
|
|
12
|
-
if (k2 === undefined) k2 = k;
|
|
13
|
-
o[k2] = m[k];
|
|
14
|
-
}));
|
|
15
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
-
}) : function(o, v) {
|
|
18
|
-
o["default"] = v;
|
|
19
|
-
});
|
|
20
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
-
var ownKeys = function(o) {
|
|
22
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
-
var ar = [];
|
|
24
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
-
return ar;
|
|
26
|
-
};
|
|
27
|
-
return ownKeys(o);
|
|
28
|
-
};
|
|
29
|
-
return function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
})();
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.pushPatterns = pushPatterns;
|
|
39
|
-
exports.pullCommunityPrior = pullCommunityPrior;
|
|
40
|
-
exports.checkSyncStatus = checkSyncStatus;
|
|
41
|
-
exports.getCloudUrl = getCloudUrl;
|
|
42
|
-
const http = __importStar(require("http"));
|
|
43
|
-
const https = __importStar(require("https"));
|
|
44
|
-
const identity_resolver_1 = require("../../05-community/share/identity-resolver");
|
|
45
|
-
const CLOUD_URL = process.env.CELL_CLOUD_URL || 'https://cell.fivo.live';
|
|
46
|
-
const TIMEOUT_MS = 10000;
|
|
47
|
-
const MAX_RETRIES = 3;
|
|
48
|
-
const RETRY_DELAY_MS = 1000;
|
|
49
|
-
function request(method, path, body) {
|
|
50
|
-
return new Promise((resolve, reject) => {
|
|
51
|
-
const url = new URL(path, CLOUD_URL);
|
|
52
|
-
const mod = url.protocol === 'https:' ? https : http;
|
|
53
|
-
const payload = body ? JSON.stringify(body) : undefined;
|
|
54
|
-
const opts = {
|
|
55
|
-
method,
|
|
56
|
-
hostname: url.hostname,
|
|
57
|
-
port: url.port || (url.protocol === 'https:' ? 443 : 80),
|
|
58
|
-
path: url.pathname + url.search,
|
|
59
|
-
headers: {
|
|
60
|
-
'Content-Type': 'application/json',
|
|
61
|
-
...(payload ? { 'Content-Length': Buffer.byteLength(payload) } : {}),
|
|
62
|
-
},
|
|
63
|
-
timeout: TIMEOUT_MS,
|
|
64
|
-
};
|
|
65
|
-
const req = mod.request(opts, (res) => {
|
|
66
|
-
let d = '';
|
|
67
|
-
res.on('data', (c) => d += c.toString());
|
|
68
|
-
res.on('end', () => {
|
|
69
|
-
try {
|
|
70
|
-
resolve({ status: res.statusCode || 0, data: JSON.parse(d) });
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
resolve({ status: res.statusCode || 0, data: d });
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
req.on('error', reject);
|
|
78
|
-
req.on('timeout', () => { req.destroy(); reject(new Error('timeout')); });
|
|
79
|
-
if (payload)
|
|
80
|
-
req.write(payload);
|
|
81
|
-
req.end();
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
async function pushPatterns(patterns, signalCount, language, framework) {
|
|
85
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
86
|
-
try {
|
|
87
|
-
const identity = (0, identity_resolver_1.createIdentityPayload)('daemon');
|
|
88
|
-
const r = await request('POST', '/sync/push', { deviceId: identity.fingerprint, patterns, signalCount, language, framework });
|
|
89
|
-
if (r.status === 200)
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
catch { }
|
|
93
|
-
if (attempt < MAX_RETRIES - 1)
|
|
94
|
-
await new Promise(r => setTimeout(r, RETRY_DELAY_MS * Math.pow(2, attempt)));
|
|
95
|
-
}
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
async function pullCommunityPrior() {
|
|
99
|
-
try {
|
|
100
|
-
const identity = (0, identity_resolver_1.createIdentityPayload)('daemon');
|
|
101
|
-
const r = await request('GET', `/sync/pull?deviceId=${identity.fingerprint}`);
|
|
102
|
-
if (r.status !== 200)
|
|
103
|
-
return null;
|
|
104
|
-
const data = r.data;
|
|
105
|
-
if (!data.communityPrior || !Array.isArray(data.communityPrior))
|
|
106
|
-
return null;
|
|
107
|
-
return data.communityPrior;
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
async function checkSyncStatus() {
|
|
114
|
-
try {
|
|
115
|
-
const identity = (0, identity_resolver_1.createIdentityPayload)('daemon');
|
|
116
|
-
const r = await request('GET', `/sync/status?deviceId=${identity.fingerprint}`);
|
|
117
|
-
if (r.status !== 200)
|
|
118
|
-
return null;
|
|
119
|
-
return r.data;
|
|
120
|
-
}
|
|
121
|
-
catch {
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
function getCloudUrl() { return CLOUD_URL; }
|
|
126
|
-
//# sourceMappingURL=cloud-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-client.js","sourceRoot":"","sources":["../../../../src/walls/08-cloud-bridge/sync/cloud-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
export interface CloudConfig {
|
|
2
|
-
apiUrl: string;
|
|
3
|
-
wsUrl: string;
|
|
4
|
-
timeout: number;
|
|
5
|
-
maxRetries: number;
|
|
6
|
-
retryBackoff: number[];
|
|
7
|
-
deviceId: string;
|
|
8
|
-
anonymousId: string;
|
|
9
|
-
}
|
|
10
|
-
export interface SyncPayload {
|
|
11
|
-
type: 'pattern' | 'signal' | 'event' | 'community';
|
|
12
|
-
data: Record<string, unknown>;
|
|
13
|
-
timestamp: string;
|
|
14
|
-
deviceId: string;
|
|
15
|
-
anonymousId: string;
|
|
16
|
-
}
|
|
17
|
-
export interface QueueEntry {
|
|
18
|
-
id: number;
|
|
19
|
-
timestamp: string;
|
|
20
|
-
payload: string;
|
|
21
|
-
priority: 'high' | 'medium' | 'low';
|
|
22
|
-
retries: number;
|
|
23
|
-
status: 'pending' | 'sent' | 'failed';
|
|
24
|
-
}
|
|
25
|
-
export interface DeviceInfo {
|
|
26
|
-
deviceId: string;
|
|
27
|
-
anonymousId: string;
|
|
28
|
-
hostname: string;
|
|
29
|
-
platform: string;
|
|
30
|
-
lastSeen: string;
|
|
31
|
-
pairedAt: string;
|
|
32
|
-
}
|
|
33
|
-
export interface ValidationResult {
|
|
34
|
-
valid: boolean;
|
|
35
|
-
blockedFields: string[];
|
|
36
|
-
payloadSize: number;
|
|
37
|
-
maxPayloadSize: number;
|
|
38
|
-
errors: string[];
|
|
39
|
-
}
|
|
40
|
-
export declare function getDeviceId(): string;
|
|
41
|
-
export declare function getAnonymousId(): string;
|
|
42
|
-
export declare function getDeviceInfo(): DeviceInfo;
|
|
43
|
-
export declare function loadCloudConfig(): CloudConfig;
|
|
44
|
-
export declare function saveCloudConfig(config: CloudConfig): void;
|
|
45
|
-
export declare function validatePayload(data: Record<string, unknown>): ValidationResult;
|
|
46
|
-
export declare function queuePayload(payload: SyncPayload, priority?: 'high' | 'medium' | 'low'): number;
|
|
47
|
-
export declare function getPendingQueue(): QueueEntry[];
|
|
48
|
-
export declare function markQueueEntry(id: number, status: 'sent' | 'failed'): void;
|
|
49
|
-
export declare function retryFailedEntries(): QueueEntry[];
|
|
50
|
-
export declare function pushToCloud(data: Record<string, unknown>, type?: SyncPayload['type']): Promise<{
|
|
51
|
-
success: boolean;
|
|
52
|
-
message: string;
|
|
53
|
-
}>;
|
|
54
|
-
export declare function pullFromCloud(): Promise<{
|
|
55
|
-
success: boolean;
|
|
56
|
-
data: unknown[];
|
|
57
|
-
}>;
|
|
58
|
-
export declare function getSyncStatus(): {
|
|
59
|
-
pending: number;
|
|
60
|
-
sent: number;
|
|
61
|
-
failed: number;
|
|
62
|
-
lastSync: string | null;
|
|
63
|
-
deviceId: string;
|
|
64
|
-
anonymousId: string;
|
|
65
|
-
};
|
|
66
|
-
//# sourceMappingURL=cloud-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-sync.d.ts","sourceRoot":"","sources":["../../../../src/walls/08-cloud-bridge/sync/cloud-sync.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;IACnD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;CACvC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA+DD,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,aAAa,IAAI,UAAU,CAS1C;AAID,wBAAgB,eAAe,IAAI,WAAW,CAQ7C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAGzD;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAgD/E;AAID,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAE,MAAM,GAAG,QAAQ,GAAG,KAAgB,GAAG,MAAM,CAuBzG;AAED,wBAAgB,eAAe,IAAI,UAAU,EAAE,CAS9C;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAK1E;AAED,wBAAgB,kBAAkB,IAAI,UAAU,EAAE,CASjD;AAID,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,GAAE,WAAW,CAAC,MAAM,CAAa,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAkEhD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAqBpF;AAID,wBAAgB,aAAa,IAAI;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAmBA"}
|