fivocell 1.0.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +697 -505
  2. package/bin/cell.js +2 -2
  3. package/dist/behavior-intelligence.d.ts +90 -0
  4. package/dist/behavior-intelligence.d.ts.map +1 -0
  5. package/dist/behavior-intelligence.js +595 -0
  6. package/dist/behavior-intelligence.js.map +1 -0
  7. package/dist/cli.d.ts +6 -1
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +2191 -1
  10. package/dist/cli.js.map +1 -1
  11. package/dist/cloud-sync.d.ts +66 -0
  12. package/dist/cloud-sync.d.ts.map +1 -0
  13. package/dist/cloud-sync.js +328 -0
  14. package/dist/cloud-sync.js.map +1 -0
  15. package/dist/community-intelligence.d.ts +42 -0
  16. package/dist/community-intelligence.d.ts.map +1 -0
  17. package/dist/community-intelligence.js +160 -0
  18. package/dist/community-intelligence.js.map +1 -0
  19. package/dist/community-v2.d.ts +106 -0
  20. package/dist/community-v2.d.ts.map +1 -0
  21. package/dist/community-v2.js +378 -0
  22. package/dist/community-v2.js.map +1 -0
  23. package/dist/core/__tests__/chapter8-hostile.test.js +1 -1
  24. package/dist/core/__tests__/chapter8-hostile.test.js.map +1 -1
  25. package/dist/core/__tests__/chapter9-hostile.test.js +1 -1
  26. package/dist/core/__tests__/chapter9-hostile.test.js.map +1 -1
  27. package/dist/core/__tests__/complexity-analyzer.test.js +15 -15
  28. package/dist/core/__tests__/team-composer.test.js +2 -1
  29. package/dist/core/__tests__/team-composer.test.js.map +1 -1
  30. package/dist/core/convention-detector.d.ts.map +1 -1
  31. package/dist/core/convention-detector.js +11 -23
  32. package/dist/core/convention-detector.js.map +1 -1
  33. package/dist/core/cost-optimizer.d.ts.map +1 -1
  34. package/dist/core/cost-optimizer.js +13 -25
  35. package/dist/core/cost-optimizer.js.map +1 -1
  36. package/dist/core/database.d.ts +28 -0
  37. package/dist/core/database.d.ts.map +1 -0
  38. package/dist/core/database.js +587 -0
  39. package/dist/core/database.js.map +1 -0
  40. package/dist/core/knowledge-graph.d.ts.map +1 -1
  41. package/dist/core/knowledge-graph.js +9 -24
  42. package/dist/core/knowledge-graph.js.map +1 -1
  43. package/dist/core/logger.d.ts +9 -0
  44. package/dist/core/logger.d.ts.map +1 -0
  45. package/dist/core/logger.js +26 -0
  46. package/dist/core/logger.js.map +1 -0
  47. package/dist/core/playbook-generator.js +48 -48
  48. package/dist/core/privacy-manager.d.ts.map +1 -1
  49. package/dist/core/privacy-manager.js +5 -0
  50. package/dist/core/privacy-manager.js.map +1 -1
  51. package/dist/core/project-dna.d.ts.map +1 -1
  52. package/dist/core/project-dna.js +6 -19
  53. package/dist/core/project-dna.js.map +1 -1
  54. package/dist/core/prompt-builder.d.ts +18 -0
  55. package/dist/core/prompt-builder.d.ts.map +1 -0
  56. package/dist/core/prompt-builder.js +325 -0
  57. package/dist/core/prompt-builder.js.map +1 -0
  58. package/dist/core/session-memory.d.ts +90 -0
  59. package/dist/core/session-memory.d.ts.map +1 -0
  60. package/dist/core/session-memory.js +229 -0
  61. package/dist/core/session-memory.js.map +1 -0
  62. package/dist/core/signal-capture.d.ts +5 -0
  63. package/dist/core/signal-capture.d.ts.map +1 -1
  64. package/dist/core/signal-capture.js +67 -0
  65. package/dist/core/signal-capture.js.map +1 -1
  66. package/dist/core/team-composer.d.ts.map +1 -1
  67. package/dist/core/team-composer.js +16 -6
  68. package/dist/core/team-composer.js.map +1 -1
  69. package/dist/cross-model-memory.d.ts +95 -0
  70. package/dist/cross-model-memory.d.ts.map +1 -0
  71. package/dist/cross-model-memory.js +229 -0
  72. package/dist/cross-model-memory.js.map +1 -0
  73. package/dist/daemon/lifecycle.d.ts +18 -0
  74. package/dist/daemon/lifecycle.d.ts.map +1 -1
  75. package/dist/daemon/lifecycle.js +182 -5
  76. package/dist/daemon/lifecycle.js.map +1 -1
  77. package/dist/daemon/server.d.ts.map +1 -1
  78. package/dist/daemon/server.js +269 -6
  79. package/dist/daemon/server.js.map +1 -1
  80. package/dist/first-run.d.ts +8 -0
  81. package/dist/first-run.d.ts.map +1 -0
  82. package/dist/first-run.js +182 -0
  83. package/dist/first-run.js.map +1 -0
  84. package/dist/focus-report.d.ts +32 -0
  85. package/dist/focus-report.d.ts.map +1 -0
  86. package/dist/focus-report.js +293 -0
  87. package/dist/focus-report.js.map +1 -0
  88. package/dist/ide-intelligence.d.ts +118 -0
  89. package/dist/ide-intelligence.d.ts.map +1 -0
  90. package/dist/ide-intelligence.js +284 -0
  91. package/dist/ide-intelligence.js.map +1 -0
  92. package/dist/index.d.ts +22 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +119 -2
  95. package/dist/index.js.map +1 -1
  96. package/dist/insight-generator.d.ts +58 -0
  97. package/dist/insight-generator.d.ts.map +1 -0
  98. package/dist/insight-generator.js +314 -0
  99. package/dist/insight-generator.js.map +1 -0
  100. package/dist/journey-memory.d.ts +75 -0
  101. package/dist/journey-memory.d.ts.map +1 -0
  102. package/dist/journey-memory.js +360 -0
  103. package/dist/journey-memory.js.map +1 -0
  104. package/dist/mcp-server.d.ts +2054 -0
  105. package/dist/mcp-server.d.ts.map +1 -0
  106. package/dist/mcp-server.js +1120 -0
  107. package/dist/mcp-server.js.map +1 -0
  108. package/dist/onboarding-scan.d.ts +174 -0
  109. package/dist/onboarding-scan.d.ts.map +1 -0
  110. package/dist/onboarding-scan.js +1039 -0
  111. package/dist/onboarding-scan.js.map +1 -0
  112. package/dist/personal-intelligence.d.ts +97 -0
  113. package/dist/personal-intelligence.d.ts.map +1 -0
  114. package/dist/personal-intelligence.js +408 -0
  115. package/dist/personal-intelligence.js.map +1 -0
  116. package/dist/predictive-intelligence.d.ts +95 -0
  117. package/dist/predictive-intelligence.d.ts.map +1 -0
  118. package/dist/predictive-intelligence.js +544 -0
  119. package/dist/predictive-intelligence.js.map +1 -0
  120. package/dist/production.d.ts +67 -0
  121. package/dist/production.d.ts.map +1 -0
  122. package/dist/production.js +333 -0
  123. package/dist/production.js.map +1 -0
  124. package/dist/senior-features.d.ts +63 -0
  125. package/dist/senior-features.d.ts.map +1 -0
  126. package/dist/senior-features.js +325 -0
  127. package/dist/senior-features.js.map +1 -0
  128. package/dist/style-pull.d.ts +40 -0
  129. package/dist/style-pull.d.ts.map +1 -0
  130. package/dist/style-pull.js +385 -0
  131. package/dist/style-pull.js.map +1 -0
  132. package/dist/team-collaboration.d.ts +116 -0
  133. package/dist/team-collaboration.d.ts.map +1 -0
  134. package/dist/team-collaboration.js +375 -0
  135. package/dist/team-collaboration.js.map +1 -0
  136. package/dist/team-intelligence.d.ts +64 -0
  137. package/dist/team-intelligence.d.ts.map +1 -0
  138. package/dist/team-intelligence.js +289 -0
  139. package/dist/team-intelligence.js.map +1 -0
  140. package/dist/test-watch.d.ts +2 -0
  141. package/dist/test-watch.d.ts.map +1 -0
  142. package/dist/test-watch.js +8 -0
  143. package/dist/test-watch.js.map +1 -0
  144. package/dist/user-intelligence.d.ts +69 -0
  145. package/dist/user-intelligence.d.ts.map +1 -0
  146. package/dist/user-intelligence.js +553 -0
  147. package/dist/user-intelligence.js.map +1 -0
  148. package/dist/work-style.d.ts +49 -0
  149. package/dist/work-style.d.ts.map +1 -0
  150. package/dist/work-style.js +247 -0
  151. package/dist/work-style.js.map +1 -0
  152. package/package.json +3 -2
@@ -0,0 +1,360 @@
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.buildJourneyTimeline = buildJourneyTimeline;
37
+ exports.buildSkillProgression = buildSkillProgression;
38
+ exports.buildContextChains = buildContextChains;
39
+ exports.buildGoalTracker = buildGoalTracker;
40
+ exports.buildJourneyReport = buildJourneyReport;
41
+ exports.saveJourneyReport = saveJourneyReport;
42
+ const child_process_1 = require("child_process");
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const os = __importStar(require("os"));
46
+ function safeExec(cmd, cwd) {
47
+ try {
48
+ return (0, child_process_1.execSync)(cmd, { encoding: 'utf-8', cwd: cwd || os.homedir(), maxBuffer: 10 * 1024 * 1024, timeout: 30000, stdio: ['pipe', 'pipe', 'ignore'] }).trim();
49
+ }
50
+ catch {
51
+ return '';
52
+ }
53
+ }
54
+ function projectDirs(root) {
55
+ const dirs = [];
56
+ try {
57
+ for (const e of fs.readdirSync(root, { withFileTypes: true })) {
58
+ if (e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules') {
59
+ const full = path.join(root, e.name);
60
+ if (fs.existsSync(path.join(full, 'package.json')) || fs.existsSync(path.join(full, '.git'))) {
61
+ dirs.push(full);
62
+ }
63
+ }
64
+ }
65
+ }
66
+ catch { }
67
+ return dirs;
68
+ }
69
+ function buildJourneyTimeline(rootDir) {
70
+ const events = [];
71
+ const projects = projectDirs(rootDir);
72
+ for (const prog of projects) {
73
+ const name = path.basename(prog);
74
+ const pkgPath = path.join(prog, 'package.json');
75
+ if (fs.existsSync(pkgPath)) {
76
+ try {
77
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
78
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
79
+ const stat = fs.statSync(pkgPath);
80
+ const created = stat.birthtime.toISOString().split('T')[0];
81
+ events.push({ date: created, type: 'milestone', detail: `Project "${name}" created`, project: name, impact: 'high', evidence: 'package.json creation' });
82
+ for (const [dep, version] of Object.entries(deps)) {
83
+ const majorLibs = ['react', 'vue', 'express', 'next', 'typescript', 'prisma', 'vite', 'jest', 'python', 'django', 'flask', 'postgresql', 'redis', 'docker', 'graphql', 'socket.io', 'tailwind', 'electron'];
84
+ if (majorLibs.includes(dep.toLowerCase()) || dep === 'typescript') {
85
+ events.push({ date: created, type: 'first-use', detail: `First used ${dep} ${version}`, project: name, impact: 'high', evidence: `package.json: ${dep}@${version}` });
86
+ }
87
+ }
88
+ }
89
+ catch { }
90
+ }
91
+ if (fs.existsSync(path.join(prog, '.git'))) {
92
+ const log = safeExec(`git -C "${prog}" log --format="%ai|%s" --diff-filter=A -50`);
93
+ for (const line of log.split('\n').filter(Boolean)) {
94
+ const parts = line.split('|');
95
+ if (parts.length < 2)
96
+ continue;
97
+ const date = parts[0].trim().slice(0, 10);
98
+ const msg = parts.slice(1).join('|').trim();
99
+ if (msg.match(/\b(add|init|start|begin|create|setup)\b/i) && msg.length < 80) {
100
+ const exists = events.some(e => e.date === date && e.detail === msg);
101
+ if (!exists)
102
+ events.push({ date, type: 'added', detail: msg, project: name, impact: 'medium', evidence: 'git log' });
103
+ }
104
+ }
105
+ let totalCommits = 0;
106
+ const countOutput = safeExec(`git -C "${prog}" rev-list --count HEAD`);
107
+ totalCommits = parseInt(countOutput) || 0;
108
+ if (totalCommits > 100) {
109
+ events.push({ date: new Date().toISOString().split('T')[0], type: 'milestone', detail: `Reached ${totalCommits} commits in ${name}`, project: name, impact: 'medium', evidence: `git: ${totalCommits} commits` });
110
+ }
111
+ }
112
+ }
113
+ events.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime());
114
+ const seen = new Set();
115
+ const unique = [];
116
+ for (const e of events) {
117
+ const key = `${e.date}|${e.detail}`;
118
+ if (!seen.has(key)) {
119
+ seen.add(key);
120
+ unique.push(e);
121
+ }
122
+ }
123
+ return unique;
124
+ }
125
+ function buildSkillProgression(rootDir) {
126
+ const skills = [];
127
+ const langMap = { '.ts': 'TypeScript', '.tsx': 'TypeScript', '.js': 'JavaScript', '.jsx': 'JavaScript', '.mjs': 'JavaScript', '.py': 'Python', '.go': 'Go', '.html': 'HTML', '.htm': 'HTML' };
128
+ const langData = new Map();
129
+ const langExts = new Set(Object.keys(langMap));
130
+ function walk(dir, depth = 0) {
131
+ if (depth > 6)
132
+ return;
133
+ let entries;
134
+ try {
135
+ entries = fs.readdirSync(dir, { withFileTypes: true });
136
+ }
137
+ catch {
138
+ return;
139
+ }
140
+ for (const e of entries) {
141
+ if (e.name === 'node_modules' || e.name.startsWith('.') || e.name === 'dist' || e.name === 'build')
142
+ continue;
143
+ const full = path.join(dir, e.name);
144
+ if (e.isDirectory())
145
+ walk(full, depth + 1);
146
+ else if (e.isFile()) {
147
+ const ext = path.extname(e.name).toLowerCase();
148
+ if (!langExts.has(ext))
149
+ continue;
150
+ const lang = langMap[ext];
151
+ if (!langData.has(lang))
152
+ langData.set(lang, { files: 0, lines: 0, bugs: 0, clean: 0, firstDate: '', lastDate: '', projects: new Set() });
153
+ const d = langData.get(lang);
154
+ d.files++;
155
+ try {
156
+ const content = fs.readFileSync(full, 'utf-8');
157
+ d.lines += content.split('\n').length;
158
+ const hasBug = /\b(todo|fixme|hack|bug|workaround)\b/i.test(content);
159
+ if (hasBug)
160
+ d.bugs++;
161
+ else
162
+ d.clean++;
163
+ const st = fs.statSync(full);
164
+ const date = st.birthtime.toISOString().split('T')[0];
165
+ if (!d.firstDate || date < d.firstDate)
166
+ d.firstDate = date;
167
+ if (!d.lastDate || date > d.lastDate)
168
+ d.lastDate = date;
169
+ const projectMatch = dir.replace(rootDir, '').split(/[\\/]/).filter(Boolean)[0] || 'unknown';
170
+ d.projects.add(projectMatch);
171
+ }
172
+ catch { }
173
+ }
174
+ }
175
+ }
176
+ walk(rootDir);
177
+ for (const [lang, data] of langData) {
178
+ const cleanRatio = data.files > 0 ? data.clean / data.files : 0;
179
+ let level = 'beginner';
180
+ if (data.files > 500 && cleanRatio > 0.8)
181
+ level = 'mastered';
182
+ else if (data.files > 100 && cleanRatio > 0.6)
183
+ level = 'proficient';
184
+ else if (data.files > 20)
185
+ level = 'intermediate';
186
+ let growth = { direction: 'stable', monthlyRate: '0 new files/month', comment: 'Maintained at current level' };
187
+ if (data.files > 100)
188
+ growth = { direction: 'improving', monthlyRate: 'Active growth', comment: `Strong — ${data.projects.size} projects using ${lang}` };
189
+ skills.push({ area: lang, startDate: data.firstDate, currentLevel: level, metrics: { projectsUsed: data.projects.size, totalFiles: data.files, totalLines: data.lines, bugsFound: data.bugs, bugsFixed: data.clean, cleanFileRatio: Math.round(cleanRatio * 100) }, growth });
190
+ }
191
+ skills.sort((a, b) => b.metrics.totalFiles - a.metrics.totalFiles);
192
+ return skills;
193
+ }
194
+ function buildContextChains(rootDir) {
195
+ const chains = [];
196
+ const patterns = new Map();
197
+ const projects = projectDirs(rootDir);
198
+ const featurePatterns = [
199
+ { name: 'Rate Limiting / Auth', deps: ['express-rate-limit', 'rate-limiter-flexible', 'passport', 'jsonwebtoken', 'bcrypt', 'express-session'] },
200
+ { name: 'Database / ORM', deps: ['prisma', 'drizzle', 'sequelize', 'typeorm', 'knex', 'better-sqlite3', 'pg', 'mysql2', 'mongoose'] },
201
+ { name: 'Validation', deps: ['zod', 'yup', 'joi', 'valibot'] },
202
+ { name: 'Testing', deps: ['jest', 'vitest', 'mocha', 'playwright', 'pytest'] },
203
+ { name: 'Real-time / WS', deps: ['socket.io', 'ws', 'centrifugo', '@hocuspocus/provider'] },
204
+ { name: 'AI Integration', deps: ['openai', 'anthropic', '@anthropic-ai/sdk', 'ai', '@ai-sdk/openai'] },
205
+ { name: 'Build / Dev', deps: ['vite', 'webpack', 'esbuild', 'rollup', 'turbo'] },
206
+ { name: 'Logging / Monitoring', deps: ['winston', 'pino', 'sentry', '@sentry/node'] },
207
+ ];
208
+ for (const proj of projects) {
209
+ const pkgPath = path.join(proj, 'package.json');
210
+ if (!fs.existsSync(pkgPath))
211
+ continue;
212
+ try {
213
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
214
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
215
+ for (const fp of featurePatterns) {
216
+ const found = fp.deps.filter(d => d in deps);
217
+ if (found.length > 0) {
218
+ const existing = patterns.get(fp.name);
219
+ if (existing) {
220
+ existing.totalCount++;
221
+ existing.successCount++;
222
+ existing.reused.push(path.basename(proj));
223
+ }
224
+ else {
225
+ const stat = fs.statSync(pkgPath);
226
+ patterns.set(fp.name, { date: stat.birthtime.toISOString().split('T')[0], project: path.basename(proj), successCount: 1, totalCount: 1, reused: [] });
227
+ }
228
+ }
229
+ }
230
+ }
231
+ catch { }
232
+ }
233
+ for (const [name, data] of patterns) {
234
+ if (data.totalCount < 2)
235
+ continue;
236
+ const successRate = data.totalCount > 0 ? data.successCount / data.totalCount : 0;
237
+ let recommendation = '';
238
+ if (successRate >= 0.8)
239
+ recommendation = `You consistently use ${name} well. This is a proven strength.`;
240
+ else
241
+ recommendation = `Consider standardizing your ${name} approach across all projects.`;
242
+ chains.push({ pattern: name, description: `Consistently uses ${name} pattern across ${data.totalCount} projects`, firstUsed: { date: data.date, project: data.project }, reusedIn: data.reused.map(r => ({ date: '', project: r, success: true })), successRate, recommendation });
243
+ }
244
+ chains.sort((a, b) => b.reusedIn.length - a.reusedIn.length);
245
+ return chains;
246
+ }
247
+ function buildGoalTracker(skills) {
248
+ const goalPath = path.join(os.homedir(), '.fivo', 'cell', 'goals.json');
249
+ let existingGoals = [];
250
+ if (fs.existsSync(goalPath)) {
251
+ try {
252
+ existingGoals = JSON.parse(fs.readFileSync(goalPath, 'utf-8')).goals || [];
253
+ }
254
+ catch { }
255
+ }
256
+ const recommendations = [];
257
+ for (const s of skills) {
258
+ if (s.currentLevel === 'intermediate' || s.currentLevel === 'beginner') {
259
+ recommendations.push(`Level up ${s.area} from ${s.currentLevel} → proficient (${s.metrics.totalFiles} files, ${s.metrics.cleanFileRatio}% clean)`);
260
+ }
261
+ }
262
+ if (skills.length === 0) {
263
+ recommendations.push('Run `cell intelligence` first to build skill data');
264
+ }
265
+ recommendations.push('Track your goals: `cell goal add "learn X"`');
266
+ return { goals: existingGoals, learningPath: [], recommendations };
267
+ }
268
+ function buildJourneyReport(rootDir) {
269
+ const timeline = buildJourneyTimeline(rootDir);
270
+ const skills = buildSkillProgression(rootDir);
271
+ const chains = buildContextChains(rootDir);
272
+ const goals = buildGoalTracker(skills);
273
+ const projects = projectDirs(rootDir);
274
+ const languages = skills.map(s => s.area);
275
+ let totalCommits = 0;
276
+ for (const p of projects) {
277
+ if (fs.existsSync(path.join(p, '.git'))) {
278
+ const count = safeExec(`git -C "${p}" rev-list --count HEAD`);
279
+ totalCommits += parseInt(count) || 0;
280
+ }
281
+ }
282
+ return { timeline, skills, chains, goals, summary: { totalProjects: projects.length, activeSince: timeline.length > 0 ? timeline[0].date : 'unknown', languagesLearned: languages.length, totalCommits, mostUsedLanguage: skills.length > 0 ? skills[0].area : 'unknown', topSkill: skills.find(s => s.currentLevel === 'mastered' || s.currentLevel === 'proficient')?.area || skills[0]?.area || 'unknown', growthRate: skills.filter(s => s.currentLevel === 'proficient' || s.currentLevel === 'mastered').length > 2 ? 'Strong growth' : 'Growing steadily' }, generatedAt: new Date().toISOString() };
283
+ }
284
+ function saveJourneyReport(report) {
285
+ const dir = path.join(os.homedir(), '.fivo', 'cell');
286
+ if (!fs.existsSync(dir))
287
+ fs.mkdirSync(dir, { recursive: true });
288
+ const fp = path.join(dir, 'journey.json');
289
+ const prev = fs.existsSync(fp) ? JSON.parse(fs.readFileSync(fp, 'utf-8')) : null;
290
+ const historyDir = path.join(dir, 'memory');
291
+ if (!fs.existsSync(historyDir))
292
+ fs.mkdirSync(historyDir, { recursive: true });
293
+ if (prev) {
294
+ const snapshot = path.join(historyDir, `journey-${prev.generatedAt.slice(0, 10)}.json`);
295
+ try {
296
+ fs.writeFileSync(snapshot, JSON.stringify(prev, null, 2), 'utf-8');
297
+ }
298
+ catch { }
299
+ }
300
+ fs.writeFileSync(fp, JSON.stringify(report, null, 2), 'utf-8');
301
+ const mdPath = path.join(dir, 'journey.md');
302
+ fs.writeFileSync(mdPath, renderJourneyMd(report), 'utf-8');
303
+ return fp;
304
+ }
305
+ function renderJourneyMd(r) {
306
+ const l = [];
307
+ l.push('# 📅 FIVO Cell — Your Developer Journey');
308
+ l.push('');
309
+ l.push(`> Generated: ${r.generatedAt}`);
310
+ l.push(`> Projects: ${r.summary.totalProjects} | Commits: ${r.summary.totalCommits} | Languages: ${r.summary.languagesLearned}`);
311
+ l.push('');
312
+ l.push('## 🎯 Summary');
313
+ l.push('');
314
+ l.push(`- **Active since:** ${r.summary.activeSince}`);
315
+ l.push(`- **Languages learned:** ${r.summary.languagesLearned}`);
316
+ l.push(`- **Top language:** ${r.summary.mostUsedLanguage}`);
317
+ l.push(`- **Top skill:** ${r.summary.topSkill}`);
318
+ l.push(`- **Growth rate:** ${r.summary.growthRate}`);
319
+ l.push('');
320
+ if (r.timeline.length > 0) {
321
+ l.push('## 📅 Journey Timeline');
322
+ l.push('');
323
+ for (const e of r.timeline.slice(0, 25)) {
324
+ const icon = e.impact === 'high' ? '🔴' : e.impact === 'medium' ? '🟡' : '🟢';
325
+ l.push(`- ${icon} **${e.date}** — ${e.detail} (${e.project})`);
326
+ }
327
+ l.push('');
328
+ }
329
+ if (r.skills.length > 0) {
330
+ l.push('## 📈 Skill Progression');
331
+ l.push('');
332
+ l.push('| Skill | Level | Files | Lines | Clean % | Growth |');
333
+ l.push('|-------|-------|-------|-------|---------|--------|');
334
+ for (const s of r.skills) {
335
+ l.push(`| ${s.area} | ${s.currentLevel} | ${s.metrics.totalFiles} | ${s.metrics.totalLines.toLocaleString()} | ${s.metrics.cleanFileRatio}% | ${s.growth.direction} |`);
336
+ }
337
+ l.push('');
338
+ }
339
+ if (r.chains.length > 0) {
340
+ l.push('## 🔗 Context Chains');
341
+ l.push('');
342
+ for (const c of r.chains.slice(0, 6)) {
343
+ l.push(`### ${c.pattern} (${Math.round(c.successRate * 100)}% success)`);
344
+ l.push(`- **First used:** ${c.firstUsed.project} (${c.firstUsed.date})`);
345
+ l.push(`- **Reused in:** ${c.reusedIn.map(r => r.project).join(', ')}`);
346
+ l.push(`- **Recommendation:** ${c.recommendation}`);
347
+ l.push('');
348
+ }
349
+ }
350
+ if (r.goals.recommendations.length > 0) {
351
+ l.push('## 💡 Recommendations');
352
+ l.push('');
353
+ for (const rec of r.goals.recommendations) {
354
+ l.push(`- ${rec}`);
355
+ }
356
+ l.push('');
357
+ }
358
+ return l.join('\n');
359
+ }
360
+ //# sourceMappingURL=journey-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-memory.js","sourceRoot":"","sources":["../src/journey-memory.ts"],"names":[],"mappings":"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"}